diff --git a/BD/BASEDATOS para el manual.FDB b/BD/BASEDATOS para el manual.FDB new file mode 100644 index 0000000..32d9df3 Binary files /dev/null and b/BD/BASEDATOS para el manual.FDB differ diff --git a/BD/BASEDATOS.FDB b/BD/BASEDATOS.FDB new file mode 100644 index 0000000..9c0aee4 Binary files /dev/null and b/BD/BASEDATOS.FDB differ diff --git a/BD/BaseDatos (Borrar tablas).sql b/BD/BaseDatos (Borrar tablas).sql new file mode 100644 index 0000000..642b4c3 --- /dev/null +++ b/BD/BaseDatos (Borrar tablas).sql @@ -0,0 +1,46 @@ +DROP TABLE FORMASPAGO; + +DROP TABLE CONTADORES; + +DROP TABLE PROVINCIAS; + +DROP TABLE DETALLECONTADORES; + +DROP TABLE POBLACIONES; + +DROP TABLE TIPOSLIBROS; + +DROP TABLE CONTACTOS; + +DROP TABLE CATEGORIAS; + +DROP TABLE ALMACENES; + +DROP TABLE ARTICULOS; + +DROP TABLE PRESUPUESTOS; + +DROP TABLE DETALLESPRESUPUESTOS; + +DROP TABLE OBRAS; + +DROP TABLE PEDIDOS; + +DROP TABLE DETALLESPEDIDOS; + +DROP TABLE FICHABENEFICIOS; + +DROP TABLE ALBARANPAGO; + +DROP TABLE DETALLESALBARANPAGO; + +DROP TABLE FACTURASCLIENTE; + +DROP TABLE DETALLESFACTURASCLIENTE; + +DROP TABLE SUCURSALESCONTACTO; + +DROP TABLE CONTACTOSCATEGORIAS; + +DROP TABLE EMPRESAS; + diff --git a/BD/BaseDatos.sql b/BD/BaseDatos.sql new file mode 100644 index 0000000..ce8f6ef --- /dev/null +++ b/BD/BaseDatos.sql @@ -0,0 +1,360 @@ +/* +CREATED 27/07/2004 +MODIFIED 03/10/2005 +PROJECT FACTUGES ARRIBAS +MODEL +COMPANY RODAX SOFTWARE +AUTHOR +VERSION 1.1 +DATABASE INTERBASE 6 SQL 3 +*/ + + +CREATE DOMAIN "BANCOS" AS VARCHAR(100); +CREATE DOMAIN "CALLES" AS VARCHAR(150); +CREATE DOMAIN "CANTIDADES" AS NUMERIC(9,2); +CREATE DOMAIN "CODIGOS" AS SMALLINT; +CREATE DOMAIN "CODIGOSESPECIALES" AS VARCHAR(10); +CREATE DOMAIN "CODIGOSPOSTALES" AS VARCHAR(5); +CREATE DOMAIN "CODIGOSCORTOS" AS NUMERIC(3,0); +CREATE DOMAIN "CORREOS" AS VARCHAR(60); +CREATE DOMAIN "DESCRIPCIONES" AS VARCHAR(2000); +CREATE DOMAIN "FAMILIAS" AS VARCHAR(50); +CREATE DOMAIN "FECHAS" AS DATE; +CREATE DOMAIN "FORMASPAGO" AS VARCHAR(50); +CREATE DOMAIN "IMPORTES2" AS NUMERIC(11,2) DEFAULT 0; +CREATE DOMAIN "IMPORTES4" AS NUMERIC(13,4) DEFAULT 0; +CREATE DOMAIN "IMPORTES6" AS NUMERIC(15,6) DEFAULT 0; +CREATE DOMAIN "NIFCIFS" AS VARCHAR(10); +CREATE DOMAIN "NOMBRES" AS VARCHAR(100); +CREATE DOMAIN "OBSERVACIONES" AS BLOB SUB_TYPE 1 SEGMENT SIZE 100; +CREATE DOMAIN "POBLACIONES" AS VARCHAR(40); +CREATE DOMAIN "PORCENTAJES" AS FLOAT; +CREATE DOMAIN "PROVINCIAS" AS VARCHAR(30); +CREATE DOMAIN "REFERENCIAS" AS VARCHAR(20); +CREATE DOMAIN "SITUACIONES" AS VARCHAR(30); +CREATE DOMAIN "TELEFONOS" AS VARCHAR(30); +CREATE DOMAIN "TIPOENTRADALIBRO" AS CHAR(1); +CREATE DOMAIN "NOMBRESTABLAS" AS VARCHAR(20); +CREATE DOMAIN "SERIADOS" AS VARCHAR(3); +CREATE DOMAIN "TIPOSLIBROS" AS CHAR(1); +CREATE DOMAIN "CODIGOSLARGOS" AS INTEGER; + + + +CREATE TABLE "FORMASPAGO" ( + "DESCRIPCION" "FORMASPAGO" NOT NULL, +CONSTRAINT "PK_FORMASPAGO" PRIMARY KEY ("DESCRIPCION") +); + +CREATE TABLE "CONTADORES" ( + "CODIGOTABLA" SMALLINT NOT NULL, + "TABLA" VARCHAR(20) NOT NULL COLLATE ES_ES, + "COMUN" SMALLINT DEFAULT 0 NOT NULL, + "LONGITUD" SMALLINT DEFAULT 0, +CONSTRAINT "PK_CONTADORES" PRIMARY KEY ("CODIGOTABLA") +); + +CREATE TABLE "PROVINCIAS" ( + "CODIGO" VARCHAR(2) NOT NULL COLLATE ES_ES, + "DESCRIPCION" "PROVINCIAS", +CONSTRAINT "PK_PROVINCIAS" PRIMARY KEY ("CODIGO") +); + +CREATE TABLE "DETALLECONTADORES" ( + "CODIGOTABLA" SMALLINT NOT NULL, + "SERIADO" "SERIADOS", + "DIA" SMALLINT, + "MES" SMALLINT, + "ANO" SMALLINT, + "CONTADOR" INTEGER DEFAULT 0 NOT NULL, + "CONTDIA" VARCHAR(2) COLLATE ES_ES, + "CONTMES" VARCHAR(2) COLLATE ES_ES, + "CONTANO" VARCHAR(2) COLLATE ES_ES +); + +CREATE TABLE "POBLACIONES" ( + "CODIGOPROVINCIA" VARCHAR(2) NOT NULL COLLATE ES_ES, + "CODIGOPOBLACION" VARCHAR(5) NOT NULL COLLATE ES_ES, + "DESCRIPCION" "POBLACIONES", +CONSTRAINT "PK_POBLACIONES" PRIMARY KEY ("CODIGOPROVINCIA","CODIGOPOBLACION") +); + +CREATE TABLE "TIPOSLIBROS" ( + "DESCRIPCION" "TIPOSLIBROS" NOT NULL, +CONSTRAINT "PK_TIPOSLIBROS" PRIMARY KEY ("DESCRIPCION") +); + +CREATE TABLE "CONTACTOS" ( + "CODIGOEMPRESA" "CODIGOSCORTOS" NOT NULL, + "CODIGO" "CODIGOS" NOT NULL, + "FECHAALTA" "FECHAS" NOT NULL, + "USUARIO" "NOMBRES" NOT NULL, + "NIFCIF" "NIFCIFS", + "NOMBRE" "NOMBRES" NOT NULL, + "OBSERVACIONES" "OBSERVACIONES", +CONSTRAINT "PK_CONTACTOS" PRIMARY KEY ("CODIGOEMPRESA","CODIGO") +); + +CREATE TABLE "CATEGORIAS" ( + "CODIGO" "CODIGOSCORTOS" NOT NULL, + "DESCRIPCION" "NOMBRES" NOT NULL, +CONSTRAINT "PK_CATEGORIAS" PRIMARY KEY ("CODIGO") +); + +CREATE TABLE "ALMACENES" ( + "CODIGOEMPRESA" "CODIGOSCORTOS" NOT NULL, + "CODIGO" "CODIGOSCORTOS" NOT NULL UNIQUE, + "FECHAALTA" "FECHAS" NOT NULL, + "USUARIO" "NOMBRES" NOT NULL, + "NOMBRE" "NOMBRES" NOT NULL, + "CALLE" "CALLES", + "PROVINCIA" "PROVINCIAS", + "POBLACION" "POBLACIONES", + "CODIGOPOSTAL" "CODIGOSPOSTALES", + "TELEFONO" "TELEFONOS", + "MOVIL" "TELEFONOS", + "FAX" "TELEFONOS", + "PERSONACONTACTO" "NOMBRES", + "OBSERVACIONES" "OBSERVACIONES", +CONSTRAINT "PK_ALMACENES" PRIMARY KEY ("CODIGOEMPRESA","CODIGO") +); + +CREATE TABLE "ARTICULOS" ( + "CODIGOEMPRESA" "CODIGOSCORTOS" NOT NULL, + "CODIGO" "CODIGOSLARGOS" NOT NULL UNIQUE, + "CODIGOALMACEN" "CODIGOSCORTOS" NOT NULL, + "CODIGOPEDIDO" "CODIGOS" NOT NULL, + "CODIGOOBRA" "CODIGOS" NOT NULL, + "DESCRIPCION" "NOMBRES", +CONSTRAINT "PK_ARTICULOS" PRIMARY KEY ("CODIGOEMPRESA","CODIGO") +); + +CREATE TABLE "PRESUPUESTOS" ( + "CODIGOEMPRESA" "CODIGOSCORTOS" NOT NULL, + "CODIGO" "CODIGOS" NOT NULL UNIQUE, + "FECHAALTA" "FECHAS" NOT NULL, + "USUARIO" "NOMBRES" NOT NULL, + "CODIGOCONTACTO" "CODIGOS" NOT NULL, + "REFERENCIA" "NOMBRES", + "TIPO" "CODIGOSCORTOS" NOT NULL, + "FECHAPRESUPUESTO" "FECHAS" NOT NULL, + "VIGENCIAPRESUPUESTO" "FECHAS", + "SITUACION" "SITUACIONES" NOT NULL, + "FECHADECISION" "FECHAS", + "BASEIMPONIBLE" "IMPORTES4", + "DESCUENTO" "PORCENTAJES", + "IMPORTEDESCUENTO" "IMPORTES4", + "IVA" "PORCENTAJES", + "IMPORTEIVA" "IMPORTES4", + "IMPORTETOTAL" "IMPORTES2", + "OBSERVACIONES" "OBSERVACIONES", + "PLAZOENTREGA" "OBSERVACIONES", + "FORMAPAGO" "OBSERVACIONES", +CONSTRAINT "PK_PRESUPUESTOS" PRIMARY KEY ("CODIGOEMPRESA","CODIGO") +); + +CREATE TABLE "DETALLESPRESUPUESTOS" ( + "CODIGOEMPRESA" "CODIGOSCORTOS" NOT NULL, + "CODIGOPRESUPUESTO" "CODIGOS" NOT NULL, + "NUMCONCEPTO" "CODIGOSCORTOS" NOT NULL, + "DESCRIPCION" "DESCRIPCIONES", + "CANTIDAD" "CANTIDADES", + "IMPORTEUNIDAD" "IMPORTES6", + "IMPORTETOTAL" "IMPORTES6", + "TIPO" CHAR(1), +CONSTRAINT "PK_DETALLESPRESUPUESTOS" PRIMARY KEY ("CODIGOEMPRESA","CODIGOPRESUPUESTO","NUMCONCEPTO") +); + +CREATE TABLE "OBRAS" ( + "CODIGOEMPRESA" "CODIGOSCORTOS" NOT NULL, + "CODIGO" "CODIGOS" NOT NULL UNIQUE, + "FECHAALTA" "FECHAS" NOT NULL, + "USUARIO" "NOMBRES" NOT NULL, + "CODIGOPRESUPUESTO" "CODIGOS" NOT NULL, + "CODIGOCONTACTO" "CODIGOS" NOT NULL, + "REFERENCIA" "NOMBRES", + "FECHAINICIO" "FECHAS" NOT NULL, + "FECHAFIN" "FECHAS", + "SITUACION" "SITUACIONES" NOT NULL, + "OBSERVACIONES" "OBSERVACIONES", +CONSTRAINT "PK_OBRAS" PRIMARY KEY ("CODIGOEMPRESA","CODIGO") +); + +CREATE TABLE "PEDIDOS" ( + "CODIGOEMPRESA" "CODIGOSCORTOS" NOT NULL, + "CODIGO" "CODIGOS" NOT NULL UNIQUE, + "FECHAALTA" "FECHAS" NOT NULL, + "USUARIO" "NOMBRES" NOT NULL, + "CODIGOCONTACTO" "CODIGOS" NOT NULL, + "CODIGOALMACEN" "CODIGOSCORTOS" NOT NULL, + "CODIGOOBRA" "CODIGOS" NOT NULL, + "REFERENCIA" "NOMBRES", + "FECHAPEDIDO" "FECHAS" NOT NULL, + "FECHACONFIRMACION" "FECHAS", + "SITUACION" "SITUACIONES" NOT NULL, + "FECHAENTREGA" "FECHAS", + "OBSERVACIONES" "OBSERVACIONES", + "IMPORTETOTAL" "IMPORTES2", + "DIRECCIONCOMPLETA" "OBSERVACIONES", + "INCIDENCIAS" "OBSERVACIONES", +CONSTRAINT "PK_PEDIDOS" PRIMARY KEY ("CODIGOEMPRESA","CODIGO") +); + +CREATE TABLE "DETALLESPEDIDOS" ( + "CODIGOEMPRESA" "CODIGOSCORTOS" NOT NULL, + "CODIGOPEDIDO" "CODIGOS" NOT NULL, + "NUMCONCEPTO" "CODIGOSCORTOS" NOT NULL, + "DESCRIPCION" "DESCRIPCIONES", + "CANTIDAD" "CANTIDADES", + "IMPORTEUNIDAD" "IMPORTES6", + "IMPORTETOTAL" "IMPORTES6", +CONSTRAINT "PK_DETALLESPEDIDOS" PRIMARY KEY ("CODIGOEMPRESA","CODIGOPEDIDO","NUMCONCEPTO") +); + +CREATE TABLE "FICHABENEFICIOS" ( + "CODIGOEMPRESA" "CODIGOSCORTOS" NOT NULL, + "CODIGOOBRA" "CODIGOS" NOT NULL, + "NUMCONCEPTO" "CODIGOSCORTOS" NOT NULL, + "DESCRIPCION" "NOMBRES" NOT NULL, + "MODELO" "NOMBRES", + "PROVEEDOR" "NOMBRES", + "COMPRA" "IMPORTES2", + "VENTA" "IMPORTES2", +CONSTRAINT "PK_FICHABENEFICIOS" PRIMARY KEY ("CODIGOEMPRESA","CODIGOOBRA","NUMCONCEPTO") +); + +CREATE TABLE "ALBARANPAGO" ( + "CODIGOEMPRESA" "CODIGOSCORTOS" NOT NULL, + "CODIGO" "CODIGOSESPECIALES" NOT NULL UNIQUE, + "FECHAALTA" "FECHAS" NOT NULL, + "USUARIO" "NOMBRES" NOT NULL, + "CODIGOCONTACTO" "CODIGOS" NOT NULL, + "FECHAALBARAN" "FECHAS" NOT NULL, + "SITUACION" "SITUACIONES" NOT NULL, + "FECHAPAGO" "FECHAS", + "BASEIMPONIBLE" "IMPORTES4", + "DESCUENTO" "PORCENTAJES", + "IMPORTEDESCUENTO" "IMPORTES4", + "IVA" "PORCENTAJES", + "IMPORTEIVA" "IMPORTES4", + "IMPORTETOTAL" "IMPORTES2", + "OBSERVACIONES" "OBSERVACIONES", + "FORMAPAGO" "OBSERVACIONES", +CONSTRAINT "PK_ALBARANPAGO" PRIMARY KEY ("CODIGOEMPRESA","CODIGO") +); + +CREATE TABLE "DETALLESALBARANPAGO" ( + "CODIGOEMPRESA" "CODIGOSCORTOS" NOT NULL, + "CODIGOALBARAN" "CODIGOSESPECIALES" NOT NULL, + "NUMCONCEPTO" "CODIGOSCORTOS" NOT NULL, + "DESCRIPCION" "DESCRIPCIONES", + "CANTIDAD" "CANTIDADES", + "IMPORTEUNIDAD" "IMPORTES6", + "IMPORTETOTAL" "IMPORTES6", +CONSTRAINT "PK_DETALLESALBARANPAGO" PRIMARY KEY ("CODIGOEMPRESA","CODIGOALBARAN","NUMCONCEPTO") +); + +CREATE TABLE "FACTURASCLIENTE" ( + "CODIGOEMPRESA" "CODIGOSCORTOS" NOT NULL, + "CODIGO" "CODIGOSESPECIALES" NOT NULL UNIQUE, + "FECHAALTA" "FECHAS" NOT NULL, + "USUARIO" "NOMBRES" NOT NULL, + "FECHAFACTURA" "FECHAS" NOT NULL, + "BASEIMPONIBLE" "IMPORTES4", + "DESCUENTO" "PORCENTAJES", + "IMPORTEDESCUENTO" "IMPORTES4", + "IVA" "PORCENTAJES", + "IMPORTEIVA" "IMPORTES4", + "IMPORTETOTAL" "IMPORTES2", + "OBSERVACIONES" "OBSERVACIONES", + "FORMAPAGO" "OBSERVACIONES", + "CODIGOCONTACTO" "CODIGOS" NOT NULL, + "NIFCIF" "NIFCIFS", + "NOMBRE" "NOMBRES", + "CALLE" "CALLES", + "PROVINCIA" "PROVINCIAS", + "CODIGOPOSTAL" "CODIGOSPOSTALES", + "POBLACION" "POBLACIONES", +CONSTRAINT "PK_FACTURASCLIENTE" PRIMARY KEY ("CODIGOEMPRESA","CODIGO") +); + +CREATE TABLE "DETALLESFACTURASCLIENTE" ( + "CODIGOEMPRESA" "CODIGOSCORTOS" NOT NULL, + "CODIGOFACTURA" "CODIGOSESPECIALES" NOT NULL, + "NUMCONCEPTO" "CODIGOSCORTOS" NOT NULL, + "DESCRIPCION" "DESCRIPCIONES", + "CANTIDAD" "CANTIDADES", + "IMPORTEUNIDAD" "IMPORTES6", + "IMPORTETOTAL" "IMPORTES6", +CONSTRAINT "PK_DETALLESFACTURASCLIENTE" PRIMARY KEY ("CODIGOEMPRESA","CODIGOFACTURA","NUMCONCEPTO") +); + +CREATE TABLE "SUCURSALESCONTACTO" ( + "CODIGOEMPRESA" "CODIGOSCORTOS" NOT NULL, + "CODIGOCONTACTO" "CODIGOS" NOT NULL, + "CALLE" "CALLES", + "PROVINCIA" "PROVINCIAS", + "CODIGOPOSTAL" "CODIGOSPOSTALES", + "POBLACION" "POBLACIONES", + "TELEFONO1" "TELEFONOS", + "TELEFONO2" "TELEFONOS", + "MOVIL" "TELEFONOS", + "FAX" "TELEFONOS", + "CORREO" "CORREOS", + "PAGINAWEB" "NOMBRES", + "PERSONACONTACTO" "NOMBRES", +CONSTRAINT "PK_SUCURSALESCONTACTO" PRIMARY KEY ("CODIGOEMPRESA","CODIGOCONTACTO") +); + +CREATE TABLE "CONTACTOSCATEGORIAS" ( + "CODIGOEMPRESA" "CODIGOSCORTOS" NOT NULL, + "CODIGOCONTACTO" "CODIGOS" NOT NULL, + "CODIGOCATEGORIA" "CODIGOSCORTOS" NOT NULL, +CONSTRAINT "PK_CONTACTOSCATEGORIAS" PRIMARY KEY ("CODIGOEMPRESA","CODIGOCONTACTO","CODIGOCATEGORIA") +); + +CREATE TABLE "EMPRESAS" ( + "CODIGO" "CODIGOSCORTOS" NOT NULL, + "NOMBRE" "NOMBRES", +CONSTRAINT "PK_EMPRESAS" PRIMARY KEY ("CODIGO") +); + + + +ALTER TABLE "DETALLECONTADORES" ADD CONSTRAINT "FK_DETALLECONTADORES" FOREIGN KEY ("CODIGOTABLA") REFERENCES "CONTADORES" ("CODIGOTABLA") ON UPDATE NO ACTION ON DELETE CASCADE; +ALTER TABLE "POBLACIONES" ADD CONSTRAINT "FK__CHILDENTITYNAME___PARENTENT" FOREIGN KEY ("CODIGOPROVINCIA") REFERENCES "PROVINCIAS" ("CODIGO") ON UPDATE CASCADE ON DELETE CASCADE; +ALTER TABLE "PRESUPUESTOS" ADD CONSTRAINT "FK_PRESUPUESTOS_CONTACTOS" FOREIGN KEY ("CODIGOEMPRESA","CODIGOCONTACTO") REFERENCES "CONTACTOS" ("CODIGOEMPRESA","CODIGO") ON UPDATE NO ACTION ON DELETE NO ACTION; +ALTER TABLE "PEDIDOS" ADD CONSTRAINT "FK_PEDIDOS_CONTACTOS" FOREIGN KEY ("CODIGOEMPRESA","CODIGOCONTACTO") REFERENCES "CONTACTOS" ("CODIGOEMPRESA","CODIGO") ON UPDATE NO ACTION ON DELETE NO ACTION; +ALTER TABLE "ALBARANPAGO" ADD CONSTRAINT "FK_ALBARANPAGO_CONTACTOS" FOREIGN KEY ("CODIGOEMPRESA","CODIGOCONTACTO") REFERENCES "CONTACTOS" ("CODIGOEMPRESA","CODIGO") ON UPDATE NO ACTION ON DELETE NO ACTION; +ALTER TABLE "OBRAS" ADD CONSTRAINT "FK_OBRAS_CONTACTOS" FOREIGN KEY ("CODIGOEMPRESA","CODIGOCONTACTO") REFERENCES "CONTACTOS" ("CODIGOEMPRESA","CODIGO") ON UPDATE NO ACTION ON DELETE NO ACTION; +ALTER TABLE "FACTURASCLIENTE" ADD CONSTRAINT "FK_FACTURASCLIENTE_CONTACTOS" FOREIGN KEY ("CODIGOEMPRESA","CODIGOCONTACTO") REFERENCES "CONTACTOS" ("CODIGOEMPRESA","CODIGO") ON UPDATE NO ACTION ON DELETE NO ACTION; +ALTER TABLE "SUCURSALESCONTACTO" ADD CONSTRAINT "FK_SUCURSALESCONTACTO_CONTACTOS" FOREIGN KEY ("CODIGOEMPRESA","CODIGOCONTACTO") REFERENCES "CONTACTOS" ("CODIGOEMPRESA","CODIGO") ON UPDATE NO ACTION ON DELETE NO ACTION; +ALTER TABLE "CONTACTOSCATEGORIAS" ADD CONSTRAINT "FK_CONTACTOSCATEGORIAS_CONTACTO" FOREIGN KEY ("CODIGOEMPRESA","CODIGOCONTACTO") REFERENCES "CONTACTOS" ("CODIGOEMPRESA","CODIGO") ON UPDATE NO ACTION ON DELETE NO ACTION; +ALTER TABLE "CONTACTOSCATEGORIAS" ADD CONSTRAINT "FK_CONTACTOSCATEGORIAS_CATEGORI" FOREIGN KEY ("CODIGOCATEGORIA") REFERENCES "CATEGORIAS" ("CODIGO") ON UPDATE NO ACTION ON DELETE NO ACTION; +ALTER TABLE "ARTICULOS" ADD CONSTRAINT "FK_ARTICULOS_ALMACENES" FOREIGN KEY ("CODIGOEMPRESA","CODIGOALMACEN") REFERENCES "ALMACENES" ("CODIGOEMPRESA","CODIGO") ON UPDATE NO ACTION ON DELETE NO ACTION; +ALTER TABLE "PEDIDOS" ADD CONSTRAINT "FK_PEDIDOS_ALMACENES" FOREIGN KEY ("CODIGOEMPRESA","CODIGOALMACEN") REFERENCES "ALMACENES" ("CODIGOEMPRESA","CODIGO") ON UPDATE NO ACTION ON DELETE NO ACTION; +ALTER TABLE "DETALLESPRESUPUESTOS" ADD CONSTRAINT "FK_DETALLESPRESUPUESTOS_PRESUPU" FOREIGN KEY ("CODIGOEMPRESA","CODIGOPRESUPUESTO") REFERENCES "PRESUPUESTOS" ("CODIGOEMPRESA","CODIGO") ON UPDATE NO ACTION ON DELETE NO ACTION; +ALTER TABLE "OBRAS" ADD CONSTRAINT "FK_OBRAS_PRESUPUESTOS" FOREIGN KEY ("CODIGOEMPRESA","CODIGOPRESUPUESTO") REFERENCES "PRESUPUESTOS" ("CODIGOEMPRESA","CODIGO") ON UPDATE NO ACTION ON DELETE NO ACTION; +ALTER TABLE "ARTICULOS" ADD CONSTRAINT "FK_ARTICULOS_OBRAS" FOREIGN KEY ("CODIGOEMPRESA","CODIGOOBRA") REFERENCES "OBRAS" ("CODIGOEMPRESA","CODIGO") ON UPDATE NO ACTION ON DELETE NO ACTION; +ALTER TABLE "FICHABENEFICIOS" ADD CONSTRAINT "FK_FICHABENEFICIOS_OBRAS" FOREIGN KEY ("CODIGOEMPRESA","CODIGOOBRA") REFERENCES "OBRAS" ("CODIGOEMPRESA","CODIGO") ON UPDATE NO ACTION ON DELETE NO ACTION; +ALTER TABLE "PEDIDOS" ADD CONSTRAINT "FK_PEDIDOS_OBRAS" FOREIGN KEY ("CODIGOEMPRESA","CODIGOOBRA") REFERENCES "OBRAS" ("CODIGOEMPRESA","CODIGO") ON UPDATE NO ACTION ON DELETE NO ACTION; +ALTER TABLE "DETALLESPEDIDOS" ADD CONSTRAINT "FK_DETALLESPEDIDOS_PEDIDOS" FOREIGN KEY ("CODIGOEMPRESA","CODIGOPEDIDO") REFERENCES "PEDIDOS" ("CODIGOEMPRESA","CODIGO") ON UPDATE NO ACTION ON DELETE NO ACTION; +ALTER TABLE "ARTICULOS" ADD CONSTRAINT "FK_ARTICULOS_PEDIDOS" FOREIGN KEY ("CODIGOEMPRESA","CODIGOPEDIDO") REFERENCES "PEDIDOS" ("CODIGOEMPRESA","CODIGO") ON UPDATE NO ACTION ON DELETE NO ACTION; +ALTER TABLE "DETALLESALBARANPAGO" ADD CONSTRAINT "FK_DETALLESPRESUPUESTOS2_ALBARA" FOREIGN KEY ("CODIGOEMPRESA","CODIGOALBARAN") REFERENCES "ALBARANPAGO" ("CODIGOEMPRESA","CODIGO") ON UPDATE NO ACTION ON DELETE NO ACTION; +ALTER TABLE "DETALLESFACTURASCLIENTE" ADD CONSTRAINT "FK_DETALLESFACTURASCLIENTE_FACT" FOREIGN KEY ("CODIGOEMPRESA","CODIGOFACTURA") REFERENCES "FACTURASCLIENTE" ("CODIGOEMPRESA","CODIGO") ON UPDATE NO ACTION ON DELETE NO ACTION; +ALTER TABLE "CONTACTOS" ADD CONSTRAINT "FK_CONTACTOS_EMPRESAS" FOREIGN KEY ("CODIGOEMPRESA") REFERENCES "EMPRESAS" ("CODIGO") ON UPDATE NO ACTION ON DELETE NO ACTION; +ALTER TABLE "FACTURASCLIENTE" ADD CONSTRAINT "FK_FACTURASCLIENTE_EMPRESAS" FOREIGN KEY ("CODIGOEMPRESA") REFERENCES "EMPRESAS" ("CODIGO") ON UPDATE NO ACTION ON DELETE NO ACTION; +ALTER TABLE "ALBARANPAGO" ADD CONSTRAINT "FK_ALBARANPAGO_EMPRESAS" FOREIGN KEY ("CODIGOEMPRESA") REFERENCES "EMPRESAS" ("CODIGO") ON UPDATE NO ACTION ON DELETE NO ACTION; +ALTER TABLE "ALMACENES" ADD CONSTRAINT "FK_ALMACENES_EMPRESAS" FOREIGN KEY ("CODIGOEMPRESA") REFERENCES "EMPRESAS" ("CODIGO") ON UPDATE NO ACTION ON DELETE NO ACTION; +ALTER TABLE "ARTICULOS" ADD CONSTRAINT "FK_ARTICULOS_EMPRESAS" FOREIGN KEY ("CODIGOEMPRESA") REFERENCES "EMPRESAS" ("CODIGO") ON UPDATE NO ACTION ON DELETE NO ACTION; +ALTER TABLE "PEDIDOS" ADD CONSTRAINT "FK_PEDIDOS_EMPRESAS" FOREIGN KEY ("CODIGOEMPRESA") REFERENCES "EMPRESAS" ("CODIGO") ON UPDATE NO ACTION ON DELETE NO ACTION; +ALTER TABLE "OBRAS" ADD CONSTRAINT "FK_OBRAS_EMPRESAS" FOREIGN KEY ("CODIGOEMPRESA") REFERENCES "EMPRESAS" ("CODIGO") ON UPDATE NO ACTION ON DELETE NO ACTION; +ALTER TABLE "PRESUPUESTOS" ADD CONSTRAINT "FK_PRESUPUESTOS_EMPRESAS" FOREIGN KEY ("CODIGOEMPRESA") REFERENCES "EMPRESAS" ("CODIGO") ON UPDATE NO ACTION ON DELETE NO ACTION; + + +CREATE ROLE "USUARIOS"; + + + + diff --git a/BD/serverlog.txt b/BD/serverlog.txt new file mode 100644 index 0000000..1a5c8c9 --- /dev/null +++ b/BD/serverlog.txt @@ -0,0 +1,93 @@ +[07/04/2007 15:26:32] +[Application: ] +: [Connect] + + > +[07/04/2007 15:26:32] +[Application: ] +: [Prepare] SELECT + ID + FROM + USUARIOS + WHERE USUARIO = :USUARIO AND + PASS = :PASS AND + ACTIVO = 1 + + Plan: PLAN (USUARIOS NATURAL) + + > +[07/04/2007 15:26:32] +[Application: ] +: [Start transaction] + + > +[07/04/2007 15:26:32] +[Application: ] +: [Prepare] Select F.RDB$COMPUTED_BLR, F.RDB$DEFAULT_VALUE, R.RDB$DEFAULT_VALUE, R.RDB$FIELD_NAME from RDB$RELATION_FIELDS R, RDB$FIELDS F where R.RDB$RELATION_NAME = :RELATION and R.RDB$FIELD_SOURCE = F.RDB$FIELD_NAME and ((not F.RDB$COMPUTED_BLR is NULL) or (not (F.RDB$DEFAULT_VALUE is NULL and R.RDB$DEFAULT_VALUE is NULL))) + + Plan: PLAN JOIN (R INDEX (RDB$INDEX_4), F INDEX (RDB$INDEX_2)) + + > +[07/04/2007 15:26:32] +[Application: ] +: [Execute] Select F.RDB$COMPUTED_BLR, F.RDB$DEFAULT_VALUE, R.RDB$DEFAULT_VALUE, R.RDB$FIELD_NAME from RDB$RELATION_FIELDS R, RDB$FIELDS F where R.RDB$RELATION_NAME = :RELATION and R.RDB$FIELD_SOURCE = F.RDB$FIELD_NAME and ((not F.RDB$COMPUTED_BLR is NULL) or (not (F.RDB$DEFAULT_VALUE is NULL and R.RDB$DEFAULT_VALUE is NULL))) + + RELATION = USUARIOS + + > +[07/04/2007 15:26:32] +[Application: ] +: [Prepare] SELECT RDB$FIELD_NAME, RDB$FIELD_POSITION FROM RDB$RELATION_CONSTRAINTS RR JOIN RDB$INDEX_SEGMENTS RI ON RR.RDB$INDEX_NAME = RI.RDB$INDEX_NAME WHERE RDB$RELATION_NAME = :relation_name AND RDB$CONSTRAINT_TYPE = 'PRIMARY KEY ' ORDER BY RDB$FIELD_POSITION + + Plan: PLAN SORT (JOIN (RR INDEX (RDB$INDEX_42), RI INDEX (RDB$INDEX_6))) + + > +[07/04/2007 15:26:32] +[Application: ] +: [Execute] SELECT RDB$FIELD_NAME, RDB$FIELD_POSITION FROM RDB$RELATION_CONSTRAINTS RR JOIN RDB$INDEX_SEGMENTS RI ON RR.RDB$INDEX_NAME = RI.RDB$INDEX_NAME WHERE RDB$RELATION_NAME = :relation_name AND RDB$CONSTRAINT_TYPE = 'PRIMARY KEY ' ORDER BY RDB$FIELD_POSITION + + RELATION_NAME = USUARIOS + + > +[07/04/2007 15:26:32] +[Application: ] +: [Commit (Hard commit)] + + > +[07/04/2007 15:26:32] +[Application: ] +: [Execute] SELECT + ID + FROM + USUARIOS + WHERE USUARIO = :USUARIO AND + PASS = :PASS AND + ACTIVO = 1 + + USUARIO = admin + PASS = 1 + + > +[07/04/2007 15:26:57] +[Application: ] +: [Connect] + + > +[07/04/2007 15:26:57] +[Application: ] +[Error] -206 335544569 Dynamic SQL Error +SQL error code = -206 +Column unknown +USUARIO +At line 5, column 9 + + > +[07/04/2007 15:27:04] +[Application: ] +[Error] -206 335544569 Dynamic SQL Error +SQL error code = -206 +Column unknown +USUARIO +At line 5, column 9 + + > diff --git a/Base/BaseD7.bdsproj b/Base/BaseD7.bdsproj new file mode 100644 index 0000000..28f42ba --- /dev/null +++ b/Base/BaseD7.bdsproj @@ -0,0 +1,492 @@ + + + + + + + + + + + + BaseD7.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 3 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + .\ + ..\Output\Cliente + .\ + $(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\Servidor + vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;CEToolsPkgd7;FR7;FRIBX7;Hydra_Core_D7;Hydra_RO_D7;fqb70;frx7;frxADO7;frxBDE7;frxDB7;frxDBX7;frxe7;frxIBX7;fs7;fsADO7;fsBDE7;fsDB7;fsIBX7;DataAbstract_Core_D7;DataAbstract_IDE_D7 + + + False + + + + + + False + + + True + False + + + + $00000000 + C:\Archivos de programa\Borland\Delphi7\Bin\ + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + diff --git a/Base/BaseD7.cfg b/Base/BaseD7.cfg new file mode 100644 index 0000000..9305f66 --- /dev/null +++ b/Base/BaseD7.cfg @@ -0,0 +1,45 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O- +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W+ +-$X+ +-$YD +-$Z1 +-GD +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N".\" +-LE"..\Output\Cliente" +-LN".\" +-U"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\Servidor" +-O"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\Servidor" +-I"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\Servidor" +-R"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\Servidor" +-Z +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/Base/BaseD7.dcp b/Base/BaseD7.dcp new file mode 100644 index 0000000..59541ba Binary files /dev/null and b/Base/BaseD7.dcp differ diff --git a/Base/BaseD7.dof b/Base/BaseD7.dof new file mode 100644 index 0000000..d43d051 --- /dev/null +++ b/Base/BaseD7.dof @@ -0,0 +1,518 @@ +[FileVersion] +Version=7.0 +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=0 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=1 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=1 +SymbolLibrary=1 +SymbolPlatform=1 +UnitLibrary=1 +UnitPlatform=1 +UnitDeprecated=1 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 +[Linker] +MapFile=3 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription= +[Directories] +OutputDir= +UnitOutputDir=.\ +PackageDLLOutputDir=..\Output\Cliente +PackageDCPOutputDir=.\ +SearchPath=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\Servidor +Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;CEToolsPkgd7;FR7;FRIBX7;Hydra_Core_D7;Hydra_RO_D7;fqb70;frx7;frxADO7;frxBDE7;frxDB7;frxDBX7;frxe7;frxIBX7;fs7;fsADO7;fsBDE7;fsDB7;fsIBX7;DataAbstract_Core_D7;DataAbstract_IDE_D7 +Conditionals= +DebugSourceDirs= +UsePackages=0 +[Parameters] +RunParams= +HostApplication= +Launcher= +UseLauncher=0 +DebugCWD= +[Language] +ActiveLang= +ProjectLang= +RootDir=C:\Archivos de programa\Borland\Delphi7\Bin\ +[Version Info] +IncludeVerInfo=1 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=3082 +CodePage=1252 +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= +[Excluded Packages] +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\cxTreeListVCLD7.bpl=ExpressQuantumTreeList 4 (VCL Edition) by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxThemeD7.bpl=Express XP Theme Manager by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\cxLibraryVCLD7.bpl=Express Cross Platform Library (VCL Edition) by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\cxExportVCLD7.bpl=Express Cross Platform Export Library (VCL Edition) by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\cxEditorsVCLD7.bpl=ExpressEditors Library 5 (VCL Edition) by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\cxDataD7.bpl=ExpressDataController by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\cxExtEditorsVCLD7.bpl=ExpressExtendedEditors Library 5 (VCL Edition) by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\cxGridVCLD7.bpl=ExpressQuantumGrid 5 (VCL Edition) by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\cxPageControlVCLD7.bpl=Express Cross Platform PageControl (VCL Edition) by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\cxSchedulerVCLD7.bpl=ExpressScheduler 2 (VCL Edition) by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxsbD7.bpl=ExpressSideBar by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxComnD7.bpl=ExpressCommonLibrary by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxBarD7.bpl=ExpressBars by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxBarDBNavD7.bpl=ExpressBars DBNavigator by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxBarExtDBItemsD7.bpl=ExpressBars extended DB items by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxBarExtItemsD7.bpl=ExpressBars extended items by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxDockingD7.bpl=ExpressDocking Library by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxLayoutControlD7.bpl=ExpressLayout Control by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxNavBarD7.bpl=ExpressNavBar by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxGDIPlusD7.bpl=ExpressGDI+ Library by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxPSCoreD7.bpl=ExpressPrinting System by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\cxVerticalGridVCLD7.bpl=ExpressVerticalGrid (VCL Edition) by Developer Express Inc. +c:\archivos de programa\borland\delphi7\Projects\Bpl\RodaxFrameD7.bpl=Frames Acana (D7) +C:\WINDOWS\system32\dclShX_Namespace_V3D7.bpl=(untitled) +C:\WINDOWS\system32\vclShX_Namespace_v3D7.bpl=(untitled) +[HistoryLists\hlDebugSourcePath] +Count=1 +Item0=D:\Proyectos\Componentes\GUISDK\Sources\;D:\Proyectos\Componentes\PluginSDK\Source\;D:\Proyectos\FactuGES (Estudio)\Codigo\Modulos\Contactos\Cliente;D:\Proyectos\FactuGES (Estudio)\Codigo\Modulos\Contactos\Reglas +[HistoryLists\hlUnitAliases] +Count=1 +Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +[HistoryLists\hlSearchPath] +Count=16 +Item0=..\Modulos\Presupuestos\Reglas;..\Modulos\Contactos\Reglas;..\Base;..\Configuracion;..\Usuarios;..\Modulos\Albaranes de cliente\Reglas +Item1=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\Base;..\Configuracion;..\Usuarios;..\Modulos\Intervalos;..\Modulos\Documentos asociados;..\Modulos\Contactos\Cliente;..\Modulos\Contactos\Reglas;..\Modulos\Presupuestos\Cliente;..\Modulos\Presupuestos\Reglas;..\Modulos\Albaranes de cliente\Cliente;..\Modulos\Albaranes de cliente\Reglas;..\Modulos\Facturas de cliente\Cliente;..\Modulos\Facturas de cliente\Reglas;..\Modulos\Pedidos a proveedor\Cliente;..\Modulos\Pedidos a proveedor\Reglas;..\Modulos\Facturas de proveedor\Cliente;..\Modulos\Facturas de proveedor\Reglas;..\Modulos\Montajes\Reglas;..\Modulos\Montajes\Cliente;..\Modulos\Articulos\Cliente;..\Modulos\Articulos\Reglas;..\Modulos\Almacenes\Reglas;..\Modulos\Almacenes\Cliente;..\Modulos\Pagos\Reglas;..\Modulos\Pagos\Cliente;..\Modulos\Cuentas\Reglas;..\Modulos\Cuentas\Cliente;..\Modulos\Asientos\Reglas;..\Modulos\Asientos\Cliente;..\Modulos\Calendarios\Cliente;..\Modulos\Calendarios\Reglas +Item2=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente;..\..\Asientos\Cliente;..\..\Cuentas\Cliente +Item3=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente;..\..\Asientos\Cliente +Item4=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente +Item5=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente +Item6=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente;..\..\Documentos asociados;..\..\Contactos\Cliente;..\..\Almacenes\Cliente +Item7=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados +Item8=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente;..\..\Documentos asociados;..\..\Contactos\Cliente +Item9=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente;..\..\Documentos asociados +Item10=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente +Item11=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados;..\..\Montajes\Cliente;..\..\Almacenes\Cliente +Item12=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados;..\..\Montajes\Cliente +Item13=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\Servidor +Item14=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\base;..\Modulos\Calendarios\Cliente;..\Modulos\Calendarios\Reglas +Item15=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\Base;..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios +[HistoryLists\hlUnitOutputDirectory] +Count=1 +Item0=.\ +[HistoryLists\hlOutputDirectorry] +Count=2 +Item0=..\Output\Servidor +Item1=..\Output\Cliente +[HistoryLists\hlBPLOutput] +Count=3 +Item0=..\..\..\Output\Cliente +Item1=..\Output\Cliente +Item2=..\..\Output\Cliente +[HistoryLists\hlDCPOutput] +Count=1 +Item0=.\ +[Exception Log] +EurekaLog Version=519 +Activate=1 +Activate Handle=1 +Save Log File=1 +Foreground Tab=0 +Freeze Activate=0 +Freeze Timeout=0 +Freeze Message=The application seems to be frozen. +SMTP From=eurekalog@email.com +SMTP Host= +SMTP Port=25 +SMTP UserID= +SMTP Password= +Append to Log=0 +Show TerminateBtn=1 +TerminateBtn Operation=1 +Errors Number=32 +Errors Terminate=3 +Email Address= +Email Object= +Email Send Options=0 +Output Path= +Encrypt Password= +AutoCloseDialogSecs=0 +WebSendMode=0 +SupportULR= +HTMLLayout Count=15 +HTMLLine0="%3Chtml%3E" +HTMLLine1=" %3Chead%3E" +HTMLLine2=" %3C/head%3E" +HTMLLine3=" %3Cbody TopMargin=10 LeftMargin=10%3E" +HTMLLine4=" %3Ctable width="100%%" border="0"%3E" +HTMLLine5=" %3Ctr%3E" +HTMLLine6=" %3Ctd nowrap%3E" +HTMLLine7=" %3Cfont face="Lucida Console, Courier" size="2"%3E" +HTMLLine8=" %3C%%HTML_TAG%%%3E" +HTMLLine9=" %3C/font%3E" +HTMLLine10=" %3C/td%3E" +HTMLLine11=" %3C/tr%3E" +HTMLLine12=" %3C/table%3E" +HTMLLine13=" %3C/body%3E" +HTMLLine14="%3C/html%3E" +AutoCrashOperation=1 +AutoCrashNumber=10 +AutoCrashMinutes=1 +WebURL= +WebUserID= +WebPassword= +WebPort=0 +AttachedFiles= +Count=0 +EMail Message Line Count=0 +loNoDuplicateErrors=0 +loAppendReproduceText=0 +loDeleteLogAtVersionChange=0 +loAddComputerNameInLogFileName=0 +loSaveModulesSection=1 +loSaveCPUSection=1 +soAppStartDate=1 +soAppName=1 +soAppVersionNumber=1 +soAppParameters=1 +soAppCompilationDate=1 +soExcDate=1 +soExcAddress=1 +soExcModule=1 +soExcType=1 +soExcMessage=1 +soActCtlsFormClass=1 +soActCtlsFormText=1 +soActCtlsControlClass=1 +soActCtlsControlText=1 +soCmpName=1 +soCmpUser=1 +soCmpTotalMemory=1 +soCmpFreeMemory=1 +soCmpTotalDisk=1 +soCmpFreeDisk=1 +soCmpSysUpTime=1 +soCmpProcessor=1 +soCmpDisplayMode=1 +soOSType=1 +soOSBuildN=1 +soOSUpdate=1 +soOSLanguage=1 +soNetIP=1 +soNetSubmask=1 +soNetGateway=1 +soNetDNS1=1 +soNetDNS2=1 +soNetDHCP=1 +sndShowSendDialog=1 +sndShowSuccessFailureMsg=0 +sndSendEntireLog=0 +sndSendXMLLogCopy=0 +sndSendScreenshot=0 +sndUseOnlyActiveWindow=0 +sndSendLastHTMLPage=1 +sndSendInSeparatedThread=0 +sndAddDateInFileName=0 +sndCompressAllFiles=0 +edoShowExceptionDialog=1 +edoSendEmailChecked=1 +edoAttachScreenshotChecked=1 +edoShowCopyToClipOption=1 +edoShowDetailsButton=1 +edoShowInDetailedMode=0 +edoShowInTopMostMode=0 +edoUseEurekaLogLookAndFeel=1 +csoShowDLLs=1 +csoShowBPLs=1 +csoShowBorlandThreads=1 +csoShowWindowsThreads=1 +csoShowProcedureOffset=0 +boActivateCrashDetection=0 +boPauseBorlandThreads=0 +boDoNotPauseMainThread=0 +boPauseWindowsThreads=0 +boUseMainModuleOptions=1 +boCopyLogInCaseOfError=1 +boSaveCompressedCopyInCaseOfError=0 +Count mtInformationMsgCaption=1 +mtInformationMsgCaption0="Information." +Count mtQuestionMsgCaption=1 +mtQuestionMsgCaption0="Question." +Count mtDialog_Caption=1 +mtDialog_Caption0="Error." +Count mtDialog_ErrorMsgCaption=2 +mtDialog_ErrorMsgCaption0="An error has occurred during program execution." +mtDialog_ErrorMsgCaption1="Please read the following information for further details." +Count mtDialog_GeneralCaption=1 +mtDialog_GeneralCaption0="General" +Count mtDialog_GeneralHeader=1 +mtDialog_GeneralHeader0="General Information" +Count mtDialog_CallStackCaption=1 +mtDialog_CallStackCaption0="Call Stack" +Count mtDialog_CallStackHeader=1 +mtDialog_CallStackHeader0="Call Stack Information" +Count mtDialog_ModulesCaption=1 +mtDialog_ModulesCaption0="Modules" +Count mtDialog_ModulesHeader=1 +mtDialog_ModulesHeader0="Modules Information" +Count mtDialog_CPUCaption=1 +mtDialog_CPUCaption0="CPU" +Count mtDialog_CPUHeader=1 +mtDialog_CPUHeader0="CPU Information" +Count mtDialog_CustomDataCaption=1 +mtDialog_CustomDataCaption0="Other" +Count mtDialog_CustomDataHeader=1 +mtDialog_CustomDataHeader0="Other Information" +Count mtDialog_OKButtonCaption=1 +mtDialog_OKButtonCaption0="%26OK" +Count mtDialog_TerminateButtonCaption=1 +mtDialog_TerminateButtonCaption0="%26Terminate" +Count mtDialog_RestartButtonCaption=1 +mtDialog_RestartButtonCaption0="%26Restart" +Count mtDialog_DetailsButtonCaption=1 +mtDialog_DetailsButtonCaption0="%26Details" +Count mtDialog_SendMessage=1 +mtDialog_SendMessage0="%26Send this error via Internet" +Count mtDialog_ScreenshotMessage=1 +mtDialog_ScreenshotMessage0="%26Attach a Screenshot image" +Count mtDialog_CopyMessage=1 +mtDialog_CopyMessage0="%26Copy to Clipboard" +Count mtDialog_SupportMessage=1 +mtDialog_SupportMessage0="Go to the Support Page" +Count mtLog_AppHeader=1 +mtLog_AppHeader0="Application" +Count mtLog_AppStartDate=1 +mtLog_AppStartDate0="Start Date" +Count mtLog_AppName=1 +mtLog_AppName0="Name/Description" +Count mtLog_AppVersionNumber=1 +mtLog_AppVersionNumber0="Version Number" +Count mtLog_AppParameters=1 +mtLog_AppParameters0="Parameters" +Count mtLog_AppCompilationDate=1 +mtLog_AppCompilationDate0="Compilation Date" +Count mtLog_ExcHeader=1 +mtLog_ExcHeader0="Exception" +Count mtLog_ExcDate=1 +mtLog_ExcDate0="Date" +Count mtLog_ExcAddress=1 +mtLog_ExcAddress0="Address" +Count mtLog_ExcModule=1 +mtLog_ExcModule0="Module" +Count mtLog_ExcType=1 +mtLog_ExcType0="Type" +Count mtLog_ExcMessage=1 +mtLog_ExcMessage0="Message" +Count mtLog_ActCtrlsHeader=1 +mtLog_ActCtrlsHeader0="Active Controls" +Count mtLog_ActCtrlsFormClass=1 +mtLog_ActCtrlsFormClass0="Form Class" +Count mtLog_ActCtrlsFormText=1 +mtLog_ActCtrlsFormText0="Form Text" +Count mtLog_ActCtrlsControlClass=1 +mtLog_ActCtrlsControlClass0="Control Class" +Count mtLog_ActCtrlsControlText=1 +mtLog_ActCtrlsControlText0="Control Text" +Count mtLog_CmpHeader=1 +mtLog_CmpHeader0="Computer" +Count mtLog_CmpName=1 +mtLog_CmpName0="Name" +Count mtLog_CmpUser=1 +mtLog_CmpUser0="User" +Count mtLog_CmpTotalMemory=1 +mtLog_CmpTotalMemory0="Total Memory" +Count mtLog_CmpFreeMemory=1 +mtLog_CmpFreeMemory0="Free Memory" +Count mtLog_CmpTotalDisk=1 +mtLog_CmpTotalDisk0="Total Disk" +Count mtLog_CmpFreeDisk=1 +mtLog_CmpFreeDisk0="Free Disk" +Count mtLog_CmpSystemUpTime=1 +mtLog_CmpSystemUpTime0="System Up Time" +Count mtLog_CmpProcessor=1 +mtLog_CmpProcessor0="Processor" +Count mtLog_CmpDisplayMode=1 +mtLog_CmpDisplayMode0="Display Mode" +Count mtLog_OSHeader=1 +mtLog_OSHeader0="Operating System" +Count mtLog_OSType=1 +mtLog_OSType0="Type" +Count mtLog_OSBuildN=1 +mtLog_OSBuildN0="Build #" +Count mtLog_OSUpdate=1 +mtLog_OSUpdate0="Update" +Count mtLog_OSLanguage=1 +mtLog_OSLanguage0="Language" +Count mtLog_NetHeader=1 +mtLog_NetHeader0="Network" +Count mtLog_NetIP=1 +mtLog_NetIP0="IP Address" +Count mtLog_NetSubmask=1 +mtLog_NetSubmask0="Submask" +Count mtLog_NetGateway=1 +mtLog_NetGateway0="Gateway" +Count mtLog_NetDNS1=1 +mtLog_NetDNS10="DNS 1" +Count mtLog_NetDNS2=1 +mtLog_NetDNS20="DNS 2" +Count mtLog_NetDHCP=1 +mtLog_NetDHCP0="DHCP" +Count mtLog_CustInfoHeader=1 +mtLog_CustInfoHeader0="Custom Information" +Count mtCallStack_Address=1 +mtCallStack_Address0="Address" +Count mtCallStack_Name=1 +mtCallStack_Name0="Module" +Count mtCallStack_Unit=1 +mtCallStack_Unit0="Unit" +Count mtCallStack_Class=1 +mtCallStack_Class0="Class" +Count mtCallStack_Procedure=1 +mtCallStack_Procedure0="Procedure/Method" +Count mtCallStack_Line=1 +mtCallStack_Line0="Line" +Count mtCallStack_MainThread=1 +mtCallStack_MainThread0="Main" +Count mtCallStack_ExceptionThread=1 +mtCallStack_ExceptionThread0="Exception Thread" +Count mtCallStack_RunningThread=1 +mtCallStack_RunningThread0="Running Thread" +Count mtCallStack_CallingThread=1 +mtCallStack_CallingThread0="Calling Thread" +Count mtCallStack_ThreadID=1 +mtCallStack_ThreadID0="ID" +Count mtCallStack_ThreadPriority=1 +mtCallStack_ThreadPriority0="Priority" +Count mtCallStack_ThreadClass=1 +mtCallStack_ThreadClass0="Class" +Count mtSendDialog_Caption=1 +mtSendDialog_Caption0="Send." +Count mtSendDialog_Message=1 +mtSendDialog_Message0="Message" +Count mtSendDialog_Resolving=1 +mtSendDialog_Resolving0="Resolving DNS..." +Count mtSendDialog_Connecting=1 +mtSendDialog_Connecting0="Connecting with server..." +Count mtSendDialog_Connected=1 +mtSendDialog_Connected0="Connected with server." +Count mtSendDialog_Sending=1 +mtSendDialog_Sending0="Sending message..." +Count mtReproduceDialog_Caption=1 +mtReproduceDialog_Caption0="Request" +Count mtReproduceDialog_Request=1 +mtReproduceDialog_Request0="Please describe the steps to reproduce the error:" +Count mtReproduceDialog_OKButtonCaption=1 +mtReproduceDialog_OKButtonCaption0="%26OK" +Count mtModules_Handle=1 +mtModules_Handle0="Handle" +Count mtModules_Name=1 +mtModules_Name0="Name" +Count mtModules_Description=1 +mtModules_Description0="Description" +Count mtModules_Version=1 +mtModules_Version0="Version" +Count mtModules_Size=1 +mtModules_Size0="Size" +Count mtModules_LastModified=1 +mtModules_LastModified0="Modified" +Count mtModules_Path=1 +mtModules_Path0="Path" +Count mtCPU_Registers=1 +mtCPU_Registers0="Registers" +Count mtCPU_Stack=1 +mtCPU_Stack0="Stack" +Count mtCPU_MemoryDump=1 +mtCPU_MemoryDump0="Memory Dump" +Count mtSend_SuccessMsg=1 +mtSend_SuccessMsg0="The message was sent successfully." +Count mtSend_FailureMsg=1 +mtSend_FailureMsg0="Sorry, sending the message didn't work." + + diff --git a/Base/BaseD7.dpk b/Base/BaseD7.dpk new file mode 100644 index 0000000..67a48c2 --- /dev/null +++ b/Base/BaseD7.dpk @@ -0,0 +1,115 @@ +package BaseD7; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION OFF} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$RUNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + vcldb, + GUISDK_D7, + vcljpg, + dbrtl, + dsnap, + vcldb, + PNG_D7, + PngComponentsD7, + JvCoreD7R, + JvStdCtrlsD7R, + JvPageCompsD7R, + cxLibraryVCLD7, + dxThemeD7, + cxEditorsVCLD7, + cxDataD7, + cxExtEditorsVCLD7, + cxGridVCLD7, + cxPageControlVCLD7, + tb2k_d7, + tbx_d7, + vclx, + vclactnband, + designide, + cxExportVCLD7, + adortl, + JvSystemD7R, + dxPSCoreD7, + dxPScxCommonD7, + dxPScxGridLnkD7, + cxIntlPrintSys3D7, + dxBarD7, + dxBarExtItemsD7, + cxIntl5D7, + DataAbstract_D7, + dxPsPrVwAdvD7, + ccpack70, + JvMMD7R, + JvCtrlsD7R, + dxLayoutControlD7, + teeui, + tee, + fsTee7, + fs7, + frxTee7, + frx7, + frxe7; + +contains + uDataModuleBase in 'uDataModuleBase.pas' {dmBase: TDAClientDataModule}, + uEditorBase in 'uEditorBase.pas' {fEditorBase}, + uEditorGrid in 'uEditorGrid.pas' {fEditorGrid}, + uEditorItem in 'uEditorItem.pas' {fEditorItem}, + uDataTableUtils in 'uDataTableUtils.pas', + uEditorUtils in 'uEditorUtils.pas', + uEditorPreview in 'uEditorPreview.pas' {fEditorPreview}, + uViewPreview in 'uViewPreview.pas' {frViewPreview: TFrame}, + uViewBase in 'uViewBase.pas' {frViewBase: TCustomView}, + uViewCategorias in 'uViewCategorias.pas' {frViewCategorias: TCustomView}, + uViewDireccion in 'uViewDireccion.pas' {frViewDireccion: TCustomView}, + uViewGrid in 'uViewGrid.pas' {frViewGrid: TCustomView}, + uViewInternet in 'uViewInternet.pas' {frViewInternet: TCustomView}, + uViewTelefonos in 'uViewTelefonos.pas' {frViewTelefonos: TCustomView}, + uEditorDBBase in 'uEditorDBBase.pas' {fEditorDBBase: TCustomEditor}, + uEditorDBItem in 'uEditorDBItem.pas' {fEditorDBItem: TCustomEditor}, + uViewMensaje in 'uViewMensaje.pas' {frViewMensaje: TFrame}, + uExceptions in 'uExceptions.pas', + uViewContenido in 'uViewContenido.pas' {frViewContenido: TFrame}, + uViewBarraSeleccion in 'uViewBarraSeleccion.pas' {frViewBarraSeleccion: TFrame}, + uBizImportesDetalleBase in 'uBizImportesDetalleBase.pas', + uBizImportesCabeceraBase in 'uBizImportesCabeceraBase.pas', + uViewFormaPago in 'uViewFormaPago.pas' {frViewFormaPago: TFrame}, + uViewObservaciones in 'uViewObservaciones.pas' {frViewObservaciones: TFrame}, + uViewPlazoEntrega in 'uViewPlazoEntrega.pas' {frViewPlazoEntrega: TFrame}, + uViewTotales in 'uViewTotales.pas' {frViewTotales: TFrame}, + uDBSelectionList in 'uDBSelectionList.pas', + uConfigurarConexion in 'uConfigurarConexion.pas' {fConfigurarConexion}, + uViewDetallesFamilias in 'uViewDetallesFamilias.pas' {frViewDetallesFamilias: TFrame}, + uBizInformesBase in 'uBizInformesBase.pas', + uViewDetallesNormales in 'uViewDetallesNormales.pas' {frViewDetallesNormales: TFrame}, + uVentanaEspera in 'uVentanaEspera.pas' {Form1}, + uSysFunc in 'uSysFunc.pas', + InfoProject in 'InfoProject.pas', + uViewFiltroBase in 'uViewFiltroBase.pas' {frViewFiltroBase: TFrame}; + +end. diff --git a/Base/BaseD7.drc b/Base/BaseD7.drc new file mode 100644 index 0000000..82e626f --- /dev/null +++ b/Base/BaseD7.drc @@ -0,0 +1,16 @@ +/* VER150 + Generated by the Borland Delphi Pascal Compiler + because -GD or --drc was supplied to the compiler. + + This file contains compiler-generated resources that + were bound to the executable. + If this file is empty, then no compiler-generated + resources were bound to the produced executable. +*/ + +#define uROWinInetHttpChannel_sxInvalidURLformat 65520 +STRINGTABLE +BEGIN + uROWinInetHttpChannel_sxInvalidURLformat, "Invalid URL format" +END + diff --git a/Base/BaseD7.res b/Base/BaseD7.res new file mode 100644 index 0000000..ec5f233 Binary files /dev/null and b/Base/BaseD7.res differ diff --git a/Base/Copia de uViewFiltroBase.dfm b/Base/Copia de uViewFiltroBase.dfm new file mode 100644 index 0000000..79f392c --- /dev/null +++ b/Base/Copia de uViewFiltroBase.dfm @@ -0,0 +1,179 @@ +object frViewFiltroBase: TfrViewFiltroBase + Left = 0 + Top = 0 + Width = 565 + Height = 107 + TabOrder = 0 + Visible = False + object TBXDock1: TTBXDock + Left = 0 + Top = 0 + Width = 565 + Height = 104 + object TBXDockablePanel1: TTBXDockablePanel + Left = 0 + Top = 0 + Caption = 'TBXDockablePanel1' + CloseButton = False + CloseButtonWhenDocked = False + DockedHeight = 100 + DockMode = dmCannotFloatOrChangeDocks + ShowCaption = False + ShowCaptionWhenDocked = False + SupportedDocks = [dkStandardDock, dkMultiDock] + TabOrder = 0 + object dxLayoutControl1: TdxLayoutControl + Left = 0 + Top = 0 + Width = 561 + Height = 99 + Align = alTop + ParentBackground = True + TabOrder = 0 + AutoContentSizes = [acsWidth, acsHeight] + object txtFiltroTodo: TcxTextEdit + Left = 86 + Top = 10 + Properties.OnChange = OnCamposFiltroChange + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.HotTrack = False + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.Kind = lfStandard + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.Kind = lfStandard + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.Kind = lfStandard + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 0 + Width = 273 + end + object edtFechaIniFiltro: TcxDateEdit + Left = 86 + Top = 37 + Properties.OnChange = OnCamposFiltroChange + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.HotTrack = False + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + Style.ButtonStyle = bts3D + Style.PopupBorderStyle = epbsFrame3D + StyleDisabled.LookAndFeel.Kind = lfStandard + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.Kind = lfStandard + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.Kind = lfStandard + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 1 + Width = 121 + end + object edtFechaFinFiltro: TcxDateEdit + Left = 347 + Top = 37 + Properties.OnChange = OnCamposFiltroChange + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.HotTrack = False + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + Style.ButtonStyle = bts3D + Style.PopupBorderStyle = epbsFrame3D + StyleDisabled.LookAndFeel.Kind = lfStandard + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.Kind = lfStandard + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.Kind = lfStandard + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 2 + Width = 121 + end + object bQuitarFiltro: TBitBtn + Left = 10 + Top = 64 + Width = 163 + Height = 25 + Caption = 'Quitar filtros y ver todo' + TabOrder = 3 + OnClick = bQuitarFiltroClick + Glyph.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000000000000000000000000000000000000FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00A505 + E1007204CA00FE00FF00FF00FF00FF00FF00E800F5003E09C100FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00AB17 + F900161DC600C400E700FF00FF00FF00FF00520DC9000F30D600D71BCF00942A + 8A004D493C004D493C00942A8A00D71BCF00FF00FF00FF00FF00D71BCF008B2C + 92002843B900141B980070208D004615BA000F30D600C20BF80069605800F8D5 + AD00F8C89000F8C89000E7AB63004D493C00FF00FF00FF00FF0069605800F8D5 + AD00C8ACA6001036E4002125A6000F30D600B20EF600FF00FF0069605800FFD8 + C000F8D5AD00F8C89000F8C890004D493C004D493C004D493C0069605800FFD8 + C000EFCDAD005F65C6000A38ED002637A300927C6C00FF00FF0069605800F0F0 + F000FFD8C000F8D5AD00F8C8900069605800696058006960580069605800FFF8 + FF008372B1000F30D6002750F7000F30D60025256F00FF00FF00942A8A006960 + 58006960580069605800942A8A00D71BCF00FF00FF00FF00FF00D71BCF004F24 + 9E000F30D600434D8A00605D6C004D69E3000F30D6006D05CC00FF00FF006648 + 54004D493C00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF000F30 + D6008F1FF300FF00FF00FF00FF00C811FD003154EB000024D300FF00FF00FF00 + FF00664854004D493C00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF004D493C004D493C00FF00FF00FF00FF00FF00 + FF00FF00FF0066485400696058004D493C00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00696058004D493C00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF0066485400D419D000FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00A8658D0069605800FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00} + end + object dxLayoutControl1Group_Root: TdxLayoutGroup + ShowCaption = False + Hidden = True + ShowBorder = False + object dxLayoutControl1Item1: TdxLayoutItem + Caption = 'Que contenga:' + Control = txtFiltroTodo + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Group1: TdxLayoutGroup + ShowCaption = False + Hidden = True + LayoutDirection = ldHorizontal + ShowBorder = False + object dxLayoutControl1Item2: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = 'Entre la fecha:' + Control = edtFechaIniFiltro + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item3: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = 'y' + Control = edtFechaFinFiltro + ControlOptions.ShowBorder = False + end + end + object dxLayoutControl1Item4: TdxLayoutItem + AutoAligns = [aaVertical] + ShowCaption = False + Control = bQuitarFiltro + ControlOptions.ShowBorder = False + end + end + end + end + end + object dxLayoutLookAndFeelList1: TdxLayoutLookAndFeelList + Left = 136 + Top = 16 + end +end diff --git a/Base/Copia de uViewFiltroBase.pas b/Base/Copia de uViewFiltroBase.pas new file mode 100644 index 0000000..ddca738 --- /dev/null +++ b/Base/Copia de uViewFiltroBase.pas @@ -0,0 +1,123 @@ +unit uViewFiltroBase; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, cxMaskEdit, cxDropDownEdit, cxCalendar, dxLayoutControl, + cxContainer, cxEdit, cxTextEdit, dxLayoutLookAndFeels, cxControls, + StdCtrls, Buttons, cxRadioGroup, TBXDkPanels, TB2ExtItems, TBXExtItems, + TBX, TB2Item, TB2Dock, TB2Toolbar; + +type + IViewFiltroBase = interface + ['{0D0EA630-BF93-4BA1-93C2-FD5A5B0CBEED}'] + function GetFiltrosChange: TNotifyEvent; + procedure SetFiltrosChange(const Value: TNotifyEvent); + property OnFiltrosChange: TNotifyEvent read GetFiltrosChange write SetFiltrosChange; + + function GetVerFiltros: Boolean; + procedure SetVerFiltros(const Value: Boolean); + property VerFiltros: Boolean read GetVerFiltros write SetVerFiltros; + end; + + TfrViewFiltroBase = class(TFrame, IViewFiltroBase) + dxLayoutControl1Group_Root: TdxLayoutGroup; + dxLayoutControl1: TdxLayoutControl; + dxLayoutLookAndFeelList1: TdxLayoutLookAndFeelList; + dxLayoutControl1Item1: TdxLayoutItem; + txtFiltroTodo: TcxTextEdit; + dxLayoutControl1Item2: TdxLayoutItem; + edtFechaIniFiltro: TcxDateEdit; + dxLayoutControl1Item3: TdxLayoutItem; + edtFechaFinFiltro: TcxDateEdit; + dxLayoutControl1Group1: TdxLayoutGroup; + dxLayoutControl1Item4: TdxLayoutItem; + bQuitarFiltro: TBitBtn; + TBXDock1: TTBXDock; + TBXDockablePanel1: TTBXDockablePanel; + procedure bQuitarFiltroClick(Sender: TObject); + procedure OnCamposFiltroChange(Sender: TObject); + + private + FOnFiltrosChange: TNotifyEvent; + + function GetFiltrosChange: TNotifyEvent; + procedure SetFiltrosChange(const Value: TNotifyEvent); + function GetVerFiltros: Boolean; + procedure SetVerFiltros(const Value: Boolean); + + protected + procedure LimpiarCampos; virtual; + function ValidarCampos: Boolean; virtual; + + public + property OnFiltrosChange: TNotifyEvent read GetFiltrosChange write SetFiltrosChange; + property VerFiltros: Boolean read GetVerFiltros write SetVerFiltros; + end; + +implementation + +{$R *.dfm} + +{ TfrViewFiltroBase } + +function TfrViewFiltroBase.GetFiltrosChange: TNotifyEvent; +begin + Result := FOnFiltrosChange; +end; + +procedure TfrViewFiltroBase.SetFiltrosChange(const Value: TNotifyEvent); +begin + FOnFiltrosChange := Value; +end; + +procedure TfrViewFiltroBase.bQuitarFiltroClick(Sender: TObject); +begin + LimpiarCampos; + if Assigned(FOnFiltrosChange) then + FOnFiltrosChange(Sender); +end; + +function TfrViewFiltroBase.GetVerFiltros: Boolean; +begin + Result := Self.Visible; +end; + +procedure TfrViewFiltroBase.SetVerFiltros(const Value: Boolean); +begin + Self.Visible := Value; + if not Self.Visible then + bQuitarFiltro.Click; +end; + +procedure TfrViewFiltroBase.LimpiarCampos; +begin + txtFiltroTodo.Clear; + edtFechaIniFiltro.Clear; + edtFechaFinFiltro.Clear; +end; + +procedure TfrViewFiltroBase.OnCamposFiltroChange(Sender: TObject); +begin + if ValidarCampos then + if Assigned(FOnFiltrosChange) then + FOnFiltrosChange(Sender); +end; + +function TfrViewFiltroBase.ValidarCampos: Boolean; +begin + Result := True; + + if not VarIsNull(edtFechaIniFiltro.EditValue) and not VarIsNull(edtFechaFinFiltro.EditValue) then + begin + if (edtFechaIniFiltro.EditValue > edtFechaFinFiltro.EditValue) then + begin + ShowMessage('La fecha de inicio debe ser anterior a la fecha final'); + edtFechaIniFiltro.SetFocus; + Result := False; + end + end; +end; + +end. diff --git a/Base/InfoProject.pas b/Base/InfoProject.pas new file mode 100644 index 0000000..f9d8ced --- /dev/null +++ b/Base/InfoProject.pas @@ -0,0 +1,187 @@ +{ +=============================================================================== + Copyright (©) 2005. 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: 17-05-2005 + Versión actual: 1.0.0 + Fecha versión actual: 17-05-2005 +=============================================================================== + Modificaciones: + + Fecha Comentarios + --------------------------------------------------------------------------- +=============================================================================== +} +unit InfoProject; + +interface + +uses + Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs; + +type + TInfoProject = class(TComponent) + private + { Private declarations } + FFVIBuff: Pointer; + FFVISize: DWord; + FHandle: DWord; + FFileName: String; + FLanguage: Word; + FCodePage: Word; + FLanguageCodePage: String; + FCompanyName: String; + FFileDescription: String; + FFileVersion: String; + FInternalName: String; + FLegalCopyright: String; + FLegalTradeMarks: String; + FOriginalFileName: String; + FProductName: String; + FProductVersion: String; + FComments: String; + procedure ReadFixedFileInfo; + function GetLangCPage: String; + function GetStringFileInfo(S: String): String; + procedure SetFileName(const Value: String); + protected + { Protected declarations } + public + { Public declarations } + constructor Create(AOwner: TComponent); override; + function LanguageStr(Language: Word): String; + property FileName: String read FFileName write SetFileName; + property Language: Word read FLanguage; + property CodePage: Word read FCodePage; + property LanguageCodePage: String read FLanguageCodePage; + property CompanyName: String read FCompanyName; + property FileDescription: String read FFileDescription; + property FileVersion: String read FFileVersion; + property InternalName: String read FInternalName; + property LegalCopyright: String read FLegalCopyright; + property LegalTradeMarks: String read FLegalTradeMarks; + property OriginalFileName: String read FOriginalFileName; + property ProductName: String read FProductName; + property ProductVersion: String read FProductVersion; + property Comments: String read FComments; + published + { Published declarations } + end; + +implementation + +{ TInfoProject } + +constructor TInfoProject.Create(AOwner: TComponent); +begin { of TInfoProject.Create } + inherited Create(AOwner); + + { build current EXE filename } + FileName := ParamStr(0); +end; { of TInfoProject.Create } + +procedure TInfoProject.ReadFixedFileInfo; +begin { of TInfoProject.ReadFixedFileInfo } + { determine size of buffer required } + FFVISize := GetFileVersionInfoSize(PChar(FileName), FHandle); + + { create buffer } + GetMem(FFVIBuff, FFVISize); + try + + { load buffer } + GetFileVersionInfo(PChar(FileName), FHandle, FFVISize, FFVIBuff); + + { extract the language/codepage info } + FLanguageCodePage := GetLangCPage; + + { extract the other info } + FCompanyName := GetStringFileInfo('CompanyName'); + FFileDescription := GetStringFileInfo('FileDescription'); + FFileVersion := GetStringFileInfo('FileVersion'); + FInternalName := GetStringFileInfo('InternalName'); + FLegalCopyright := GetStringFileInfo('LegalCopyright'); + FLegalTradeMarks := GetStringFileInfo('LegalTradeMarks'); + FOriginalFileName := GetStringFileInfo('OriginalFileName'); + FProductName := GetStringFileInfo('ProductName'); + FProductVersion := GetStringFileInfo('ProductVersion'); + FComments := GetStringFileInfo('Comments'); + + finally + { dispose buffer } + FreeMem(FFVIBuff, FFVISize); + end; +end; { of TInfoProject.ReadFixedFileInfo } + +function TInfoProject.LanguageStr(Language: Word): String; +var + P: array[0..255] of Char; + Len: Word; +begin { of TInfoProject.LanguageStr } + Len := VerLanguageName(Language, P, SizeOf(P)); + if (Len > SizeOf(P)) then + begin + { if this occurs then the P buffer is too small } + { so we will truncate the returned string } + Len := SizeOf(P); + end; + SetString(Result, P, Len); +end; { of TInfoProject.LanguageStr } + +function TInfoProject.GetLangCPage: String; +var + SearchString: String; + FVILang: array of Byte; + Len: DWORD; +begin { of TInfoProject.GetLangCPage } + Result := '00000000'; + if (FFVIBuff <> NIL) then + begin + SearchString := '\VarFileInfo\Translation'; + if VerQueryValue(FFVIBuff, PChar(SearchString), + Pointer(FVILang), Len) then + begin + FLanguage := FVILang[0] + FVILang[1]*$100; + FCodePage := FVILang[2] + FVILang[3]*$100; + Result := IntToHex(FLanguage, 4) + IntToHex(FCodePage, 4); + end; + end; +end; { of TInfoProject.GetLangCPage } + +function TInfoProject.GetStringFileInfo(S: String): String; +var + SearchString: String; + P: PChar; + Len: DWORD; +begin { of TInfoProject.GetStringFileInfo } + Result := ''; + if (FFVIBuff <> NIL) then + begin + SearchString := '\StringFileInfo\'+FLanguageCodePage+'\'+S; + if VerQueryValue(FFVIBuff, PChar(SearchString), Pointer(P), Len) then + begin + { coded with StrLen to ditch the trailing #0 character } + SetString(Result, P, StrLen(P)); + end; + end; +end; { of TInfoProject.GetStringFileInfo } + +procedure TInfoProject.SetFileName(const Value: String); +begin { of TInfoProject.SetFileName } + FFileName := ExpandUNCFileName(Value); + + { read fileinfo from this new file } + ReadFixedFileInfo; + +end; { of TInfoProject.SetFileName } + +end. + diff --git a/Base/serverlog.txt b/Base/serverlog.txt new file mode 100644 index 0000000..e69de29 diff --git a/Base/uBizImportesCabeceraBase.pas b/Base/uBizImportesCabeceraBase.pas new file mode 100644 index 0000000..8122119 --- /dev/null +++ b/Base/uBizImportesCabeceraBase.pas @@ -0,0 +1,166 @@ +unit uBizImportesCabeceraBase; + +interface + +uses + uDAInterfaces, uDADataTable; + +type + IBizImportesCabecera = interface(IDAStronglyTypedDataTable) + ['{566EE7D3-EE6D-4B01-B327-92E288A0C5A0}'] + procedure RecalcularImporte; + end; + + TBizIVAFieldRules = class(TDAFieldRules) + protected + procedure OnChange(Sender: TDACustomField); override; + end; + + TBizDescuentoFieldRules = class(TDAFieldRules) + protected + procedure OnChange(Sender: TDACustomField); override; + end; + + TBizBaseImponibleFieldRules = class(TDAFieldRules) + protected + procedure OnChange(Sender: TDACustomField); override; + end; + + +procedure RecalcularImportesCabecera(aDataTable : TDADataTable); overload; +procedure RecalcularImportesCabecera(aMasterTable, aDetailTable : TDADataTable); overload; + +implementation + +uses + SysUtils, DB, uBizImportesDetalleBase; + +const + fld_BASEIMPONIBLE = 'BASEIMPONIBLE'; + fld_IVA = 'IVA'; + fld_IMPORTEIVA = 'IMPORTEIVA'; + fld_DESCUENTO = 'DESCUENTO'; + fld_IMPORTEDESCUENTO = 'IMPORTEDESCUENTO'; + fld_IMPORTETOTAL = 'IMPORTETOTAL'; + +procedure RecalcularImportesCabecera(aDataTable : TDADataTable); +{ Recalcula todos los importes de la cabecera a partir de la base imponible } +var + BIField : TDAField; + IDField : TDAField; + DTOField : TDAField; + IVAField : TDAField; + IIField : TDAField; + ITField : TDAField; + EnEdicion : Boolean; +begin + BIField := aDataTable.FindField(fld_BASEIMPONIBLE); + if not Assigned(BIField) then + raise Exception.Create('Campo BASEIMPONIBLE no encontrado (CalcularImportes)'); + + IDField := aDataTable.FindField(fld_IMPORTEDESCUENTO); + if not Assigned(IDField) then + raise Exception.Create('Campo IMPORTEDESCUENTO no encontrado (CalcularImportes)'); + + DTOField := aDataTable.FindField(fld_DESCUENTO); + if not Assigned(DTOField) then + raise Exception.Create('Campo DESCUENTO no encontrado (CalcularImportes)'); + + IVAField := aDataTable.FindField(fld_IVA); + if not Assigned(IVAField) then + raise Exception.Create('Campo IVA no encontrado (CalcularImportes)'); + + IIField := aDataTable.FindField(fld_IMPORTEIVA); + if not Assigned(IIField) then + raise Exception.Create('Campo IMPORTEIVA no encontrado (CalcularImportes)'); + + ITField := aDataTable.FindField(fld_IMPORTETOTAL); + if not Assigned(ITField) then + raise Exception.Create('Campo IMPORTETOTAL no encontrado (CalcularImportes)'); + + // ¿Viene en modo edición? + EnEdicion := (aDataTable.State in dsEditModes); + + if not EnEdicion then + aDataTable.Edit; + + IDField.Value := BIField.AsCurrency * (DTOField.AsInteger/100); + ITField.Value := BIField.AsCurrency - IDField.AsCurrency; + IIField.Value := ITField.AsCurrency * (IVAField.AsInteger/100); + ITField.Value := ITField.AsCurrency + IIField.AsCurrency; + + if EnEdicion then + aDataTable.Edit; // Para dejar la tabla como estaba otra vez +end; + +procedure RecalcularImportesCabecera(aMasterTable, aDetailTable : TDADataTable); +{ Recalcula todos los importes de la cabecera a partir de los detalles } +var + aDetalle : IBizImportesDetalle; + BIField : TDAField; + EnEdicion : Boolean; +begin + BIField := aMasterTable.FindField(fld_BASEIMPONIBLE); + if not Assigned(BIField) then + raise Exception.Create('Campo BASEIMPONIBLE no encontrado (CalcularImportes)'); + + // ¿Viene en modo edición? + EnEdicion := (aMasterTable.State in dsEditModes); + + if not EnEdicion then + aMasterTable.Edit; + + BIField.Value := 0; + if aDetailTable.RecordCount > 0 then + if Supports(aDetailTable, IBizImportesDetalle, aDetalle) then + BIField.Value := aDetalle.DarSumaTotalImportes; + + RecalcularImportesCabecera(aMasterTable); + + if EnEdicion then + aMasterTable.Edit; // Para dejar la tabla como estaba otra vez +end; + + + +{ TBizIVAFieldRules } + +procedure TBizIVAFieldRules.OnChange(Sender: TDACustomField); +var + aCabecera : IBizImportesCabecera; +begin + inherited; + if Supports(DataTable, IBizImportesCabecera, aCabecera) then + aCabecera.RecalcularImporte; +end; + +{ TBizDescuentoFieldRules } + +procedure TBizDescuentoFieldRules.OnChange(Sender: TDACustomField); +var + aCabecera : IBizImportesCabecera; +begin + inherited; + if Supports(DataTable, IBizImportesCabecera, aCabecera) then + aCabecera.RecalcularImporte; +end; + +{ TBizBaseImponibleFieldRules } + +procedure TBizBaseImponibleFieldRules.OnChange(Sender: TDACustomField); +var + aCabecera : IBizImportesCabecera; +begin + inherited; + if Supports(DataTable, IBizImportesCabecera, aCabecera) then + aCabecera.RecalcularImporte; +end; + +initialization + RegisterFieldRules('Client.Field.Descuento', TBizDescuentoFieldRules); + RegisterFieldRules('Client.Field.IVA', TBizIVAFieldRules); + RegisterFieldRules('Client.Field.BaseImponible', TBizBaseImponibleFieldRules); + +finalization + +end. diff --git a/Base/uBizImportesDetalleBase.pas b/Base/uBizImportesDetalleBase.pas new file mode 100644 index 0000000..56cb6ce --- /dev/null +++ b/Base/uBizImportesDetalleBase.pas @@ -0,0 +1,1034 @@ +unit uBizImportesDetalleBase; + +interface + +uses + uDAInterfaces, uDADataTable; + +const + TIPODETALLE_CONCEPTO = 'C'; + TIPODETALLE_TITULO = 'T'; + TIPODETALLE_SUBTOTAL = 'S'; + + VISIBLE_TRUE = 'S'; + VISIBLE_FALSE = 'N'; + + fld_NUMCONCEPTO = 'NUMCONCEPTO'; + fld_POSICION = 'POSICION'; + fld_TIPODETALLE = 'TIPO'; + fld_IMPORTETOTAL = 'IMPORTETOTAL'; + fld_CANTIDAD = 'CANTIDAD'; + fld_IMPORTEUNIDAD = 'IMPORTEUNIDAD'; + fld_VISIBLE = 'VISIBLE'; + fld_DESCRIPCION = 'DESCRIPCION'; + fld_PUNTOS = 'PUNTOS'; + fld_IMPORTEPUNTOS = 'IMPORTEPUNTOS'; + +type + { IMPORTANTE ********************************************************** + PARCHE TEMPORAL -> Para evitar que se disparen los eventos de la clase + de negocio cuando se hace el CancelUpdates de los detalles (se restaura + la tabla a partir de los deltas y esto provoca que se disparen los eventos y + se producen muchos fallos } + IParche = interface + ['{275F080F-054E-4E5A-BDF2-FE3494790388}'] + procedure ActivarEventos; + procedure DesactivarEventos; + procedure Refrescar; + function PuedoLanzarEvento : Boolean; + end; + + + IBizImportesDetalle = interface(IDAStronglyTypedDataTable) + ['{16A36AC3-FABD-4809-A238-A806F1D02B95}'] + procedure RecalcularImporte; + function DarSumaTotalImportes : Currency; + end; + + IBizPuntosDetalle = interface(IBizImportesDetalle) + ['{72002878-BD11-4BB8-AB85-73E321A6D595}'] + end; + + IBizVisibleDetalle = interface(IDAStronglyTypedDataTable) + ['{6BA5B3BF-2E92-4465-A328-60F90F7EA3D2}'] + end; + + TBizCantidadFieldRules = class(TDAFieldRules) + protected + procedure OnChange(Sender: TDACustomField); override; + end; + + TBizImporteUnidadFieldRules = class(TDAFieldRules) + protected + procedure OnChange(Sender: TDACustomField); override; + end; + + TBizTipoDetalleFieldRules = class(TDAFieldRules) + protected + procedure OnChange(Sender: TDACustomField); override; + end; + + TBizPuntosFieldRules = class(TDAFieldRules) + protected + procedure OnChange(Sender: TDACustomField); override; + end; + + TBizImportePuntosFieldRules = class(TDAFieldRules) + protected + procedure OnChange(Sender: TDACustomField); override; + end; + + TBizVisibleFieldRules = class(TDAFieldRules) + protected + procedure OnChange(Sender: TDACustomField); override; + end; + +function DarMaximoNumConcepto(aDataTable : TDADataTable): integer; +function DarMaximaPosicion(aDataTable : TDADataTable): integer; +procedure IntercambiarPosiciones(aDataTable : TDADataTable; Pos1, Pos2 : Integer); +procedure ReasignarPosiciones(aDataTable : TDADataTable); +procedure AsignarPosicion(aDataTable : TDADataTable; IsAppend : Boolean); + +procedure AsignarNumConcepto(aDataTable : TDADataTable); + +procedure RecalcularImporteDetalle(aDataTable : TDADataTable; TieneSubtotales : Boolean; TienePuntos : Boolean); +procedure RecalcularSubtotales(aDataTable : TDADataTable); +function DarTotalDetalles(aDataTable : TDADataTable; TieneSubtotales : Boolean; TienePuntos : Boolean) : Currency; + +procedure RellenarImportePuntosEnCapitulo(aDataTable : TDADataTable); + +procedure RellenarVisibleEnCapitulo(aDataTable : TDADataTable); + +procedure RecalcularTodo(aDataTable : TDADataTable); + +implementation + +uses + SysUtils, DB, uBizImportesCabeceraBase, Controls, Forms, Dialogs, variants; + +procedure RecalcularTodo(aDataTable : TDADataTable); +var + aDetalle : IBizImportesDetalle; + aCabecera : IBizImportesCabecera; + aParche : IParche; +begin + + { PARCHE ********************************** } + if Supports(aDataTable, IParche, aParche) and + not (aParche.PuedoLanzarEvento) then + Exit; + + if Supports(aDataTable, IBizImportesDetalle, aDetalle) then + begin + if aDetalle.DataTable.Editing then + aDetalle.DataTable.post; + + aDetalle.RecalcularImporte; + RecalcularSubtotales(aDetalle.DataTable); + if Assigned(aDetalle.DataTable.MasterSource) and + Supports(aDetalle.DataTable.MasterSource.DataTable, IBizImportesCabecera, ACabecera) then + begin + if ACabecera.DataTable.Editing then + ACabecera.Post; + ACabecera.RecalcularImporte; + end; + end; +end; + + +procedure IntercambiarPosiciones(aDataTable : TDADataTable; Pos1, Pos2 : Integer); +{ Intercambia los valores del campo 'POSICION' de dos filas } +var + ABookmark : Pointer; + AField : TDAField; + AFieldTipo : TDAField; + ACursor: TCursor; + bRecalcularSubtotales : Boolean; +begin + if not Assigned(aDataTable) then + raise Exception.Create('Tabla no asignada (IntercambiarPosicion)'); + + AField := aDataTable.FindField(fld_POSICION); + if not Assigned(AField) then + raise Exception.Create('Campo POSICION no encontrado (IntercambiarPosicion)'); + + // No importa si el TIPO no está en la lista de columnas + AFieldTipo := aDataTable.FindField(fld_TIPODETALLE); + + if (aDataTable.State in dsEditModes) then + aDataTable.Post; + + bRecalcularSubtotales := False; + ACursor := Screen.Cursor; + Screen.Cursor := crHourGlass; + //aDataTable.DisableEventHandlers; <- No descomentar + aDataTable.DisableControls; + ABookmark := aDataTable.GetBookMark; + try + aDataTable.First; + if aDataTable.Locate(fld_POSICION, Pos1, []) then + begin + // Si alguna de las dos filas es un subtotal, hay que recalcular todo + if Assigned(AFieldTipo) and ((AFieldTipo.AsString = TIPODETALLE_SUBTOTAL) or + (AFieldTipo.AsString = TIPODETALLE_TITULO)) then + bRecalcularSubtotales := True; + + aDataTable.Edit; + AField.AsInteger := 0; // Ponemos el 0 temporalmente + aDataTable.Post; + + aDataTable.First; + if aDataTable.Locate(fld_POSICION, Pos2, []) then + begin + // Si alguna de las dos filas es un subtotal, hay que recalcular todo + if Assigned(AFieldTipo) and ((AFieldTipo.AsString = TIPODETALLE_SUBTOTAL) or + (AFieldTipo.AsString = TIPODETALLE_TITULO)) then + bRecalcularSubtotales := True; + + aDataTable.Edit; + AField.AsInteger := Pos1; + aDataTable.Post; + + aDataTable.First; + aDataTable.Locate(fld_POSICION, 0, []); + aDataTable.Edit; + AField.AsInteger := Pos2; + aDataTable.Post; + end + else + raise Exception.Create('No se ha encontrado posición 2 (IntercambiarPosicion)'); + end + else + raise Exception.Create('No se ha encontrado posición 1 (IntercambiarPosicion)'); + finally + aDataTable.GotoBookmark(ABookmark); + aDataTable.EnableControls; + //aDataTable.EnableEventHandlers; <- No descomentar + if bRecalcularSubtotales then + RecalcularSubtotales(aDataTable); + Screen.Cursor := ACursor; + end; +end; + + +function DarMaximoNumConcepto(aDataTable : TDADataTable): integer; +{ Devuelve el valor máximo del campo 'NUMCONCEPTO' } +var + ABookmark : Pointer; + AField : TDAField; + ACursor: TCursor; +begin + Result := 0; + + if not Assigned(aDataTable) then + raise Exception.Create('Tabla no asignada (DarMaximoNumConcepto)'); + + if aDataTable.RecordCount < 1 then + Exit; + + AField := aDataTable.FindField(fld_NUMCONCEPTO); + if not Assigned(AField) then + raise Exception.Create('Campo NUMCONCEPTO no encontrado (DarMaximoNumConcepto)'); + + ACursor := Screen.Cursor; + Screen.Cursor := crHourGlass; + ABookmark := aDataTable.GetBookMark; + try + aDataTable.DisableControls; + aDataTable.DisableEventHandlers; + aDataTable.First; + while not aDataTable.Eof do + begin + if AField.AsInteger > Result then + Result := AField.AsInteger; + aDataTable.Next; + end; + finally + aDataTable.GotoBookmark(ABookmark); + aDataTable.EnableControls; + aDataTable.EnableEventHandlers; + Screen.Cursor := ACursor; + end; +end; + +function DarMaximaPosicion(aDataTable : TDADataTable): integer; +{ Devuelve el valor máximo del campo 'POSICION' } +var + ABookmark : Pointer; + AField : TDAField; + ACursor: TCursor; +begin + //Sort(['ForeignKeyFieldofMasterDetailRelation','YourSortField'],[sdAscending, NeededOrder ]); + Result := 0; + + if not Assigned(aDataTable) then + raise Exception.Create('Tabla no asignada (DarMaximaPosicion)'); + + if aDataTable.RecordCount < 1 then + Exit; + + AField := aDataTable.FindField(fld_POSICION); + if not Assigned(AField) then + raise Exception.Create('Campo POSICION no encontrado (DarMaximaPosicion)'); + + ACursor := Screen.Cursor; + Screen.Cursor := crHourGlass; + ABookmark := aDataTable.GetBookMark; + try + aDataTable.DisableControls; + aDataTable.DisableEventHandlers; + aDataTable.First; + while not aDataTable.Eof do + begin + if AField.AsInteger > Result then + Result := AField.AsInteger; + aDataTable.Next; + end; + finally + aDataTable.GotoBookmark(ABookmark); + aDataTable.EnableControls; + aDataTable.EnableEventHandlers; + Screen.Cursor := ACursor; + end; +end; + +procedure ReasignarPosiciones(aDataTable : TDADataTable); +{ Recalcula el valor del campo 'POSICION' de todas las filas + para eliminar huecos } +var + AField : TDAField; + ABookmark : Pointer; + Contador : Integer; + NumCon : Integer; + TotalConceptos : Integer; + DetallesEditados : Integer; + ACursor: TCursor; +begin + if not Assigned(aDataTable) then + raise Exception.Create('Tabla no asignada (ReasignarNumConceptos)'); + + if aDataTable.RecordCount < 1 then + Exit; + + AField := aDataTable.FindField(fld_POSICION); + if not Assigned(AField) then + raise Exception.Create('Campo POSICION no encontrado (ReasignarNumConceptos)'); + + Contador := 1; + NumCon := 1; + TotalConceptos := aDataTable.RecordCount; + DetallesEditados := 0; + + ACursor := Screen.Cursor; + Screen.Cursor := crHourGlass; + ABookmark := aDataTable.GetBookMark; + aDataTable.DisableControls; + //aDataTable.DisableEventHandlers; <-- No descomentar + try + aDataTable.First; + while DetallesEditados < TotalConceptos do + begin + if aDataTable.Locate(fld_POSICION, Contador, []) then + begin + aDataTable.Edit; + AField.Value := NumCon; + Inc(NumCon); + aDataTable.Post; + Inc(DetallesEditados); + aDataTable.First; + end; + Inc(Contador); + end; + finally + aDataTable.GotoBookmark(ABookmark); + //aDataTable.EnableEventHandlers; <-- No descomentar + aDataTable.EnableControls; + Screen.Cursor := ACursor; + end; +end; + +procedure AsignarPosicion(aDataTable : TDADataTable; IsAppend : Boolean); +{ Calcula el valor del campo 'POSICION' para una fila nueva. Incrementa en 1 + a las filas que estén por debajo de esa fila nueva } +var + AField : TDAField; + ABookmark : Pointer; + NumPosicion : Integer; + MaxPosicion : Integer; + ACursor: TCursor; +begin + if not Assigned(aDataTable) then + raise Exception.Create('Tabla no asignada (AsignarPosicion)'); + + if aDataTable.RecordCount < 1 then + Exit; + + AField := aDataTable.FindField(fld_POSICION); + if not Assigned(AField) then + raise Exception.Create('Campo POSICION no encontrado (AsignarPosicion)'); + + if not IsAppend then + begin + if not aDataTable.IsEmpty then + begin + ACursor := Screen.Cursor; + Screen.Cursor := crHourGlass; + aDataTable.DisableControls; + // Mover las filas que están por debajo de la actual + MaxPosicion := DarMaximaPosicion(aDataTable); + NumPosicion := (AField.AsInteger * (-1)); + ABookmark := aDataTable.GetBookMark; + try + aDataTable.First; + while aDataTable.Locate(fld_POSICION, MaxPosicion, []) do + begin + aDataTable.Edit; + AField.Value := MaxPosicion + 1; + aDataTable.Post; + aDataTable.First; + if MaxPosicion = NumPosicion then + Break + else + Dec(MaxPosicion); + end + finally + aDataTable.GotoBookmark(ABookmark); + aDataTable.EnableControls; + Screen.Cursor := ACursor; + end; + end; + NumPosicion := (AField.AsInteger * (-1)); + end + else begin + if aDataTable.RecordCount > 1 then + NumPosicion := DarMaximaPosicion(aDataTable) + 1 + else + // Sólo hay una fila en toda la tabla + NumPosicion := (AField.AsInteger * (-1)); + end; + + // Asignar posición a la nueva fila + aDataTable.Edit; + AField.Value := NumPosicion; + aDataTable.Post; +end; + +procedure AsignarNumConcepto(aDataTable : TDADataTable); +{ Asigna el valor del campo 'NUMCONCEPTO' para una fila nueva } +var + AField : TDAField; + MaxConcepto : Integer; + ACursor: TCursor; + EnEdicion : Boolean; +begin + if not Assigned(aDataTable) then + raise Exception.Create('Tabla no asignada (AsignarNumConcepto)'); + + if aDataTable.RecordCount < 1 then + Exit; + + AField := aDataTable.FindField(fld_NUMCONCEPTO); + if not Assigned(AField) then + raise Exception.Create('Campo NUMCONCEPTO no encontrado (AsignarNumConcepto)'); + + // ¿Viene en modo edición? + EnEdicion := (aDataTable.State in dsEditModes); + + MaxConcepto := DarMaximoNumConcepto(aDataTable); + + if not aDataTable.IsEmpty then + begin + ACursor := Screen.Cursor; + Screen.Cursor := crHourGlass; + aDataTable.DisableControls; + try + if not EnEdicion then + aDataTable.Edit; + AField.AsInteger := MaxConcepto + 1; + aDataTable.Post; + + if EnEdicion then + aDataTable.Edit; + finally + Screen.Cursor := ACursor; + aDataTable.EnableControls; + end; + end; +end; + + +procedure RecalcularImporteDetalle(aDataTable : TDADataTable; TieneSubtotales : Boolean; TienePuntos : Boolean); +var + TipoField : TDAField; + TotalField : TDAField; + CantidadField : TDAField; + ImporteUnidadField : TDAField; + PuntosField : TDAField; + ImportePuntosField : TDAField; + EnEdicion : Boolean; +begin + if not Assigned(aDataTable) then + raise Exception.Create('Tabla no asignada (RecalcularImporteDetalle)'); + + if aDataTable.RecordCount < 1 then + Exit; + + // ¿Viene en modo edición? + EnEdicion := (aDataTable.State in dsEditModes); + + TotalField := aDataTable.FindField(fld_IMPORTETOTAL); + if not Assigned(TotalField) then + raise Exception.Create('Campo IMPORTETOTAL no encontrado (RecalcularImporteDetalle)'); + + CantidadField := aDataTable.FindField(fld_CANTIDAD); + if not Assigned(CantidadField) then + raise Exception.Create('Campo CANTIDAD no encontrado (RecalcularImporteDetalle)'); + + ImporteUnidadField := aDataTable.FindField(fld_IMPORTEUNIDAD); + if not Assigned(ImporteUnidadField) then + raise Exception.Create('Campo IMPORTEUNIDAD no encontrado (RecalcularImporteDetalle)'); + + if TienePuntos then + begin + PuntosField := aDataTable.FindField(fld_PUNTOS); + if not Assigned(PuntosField) then + raise Exception.Create('Campo PUNTOS no encontrado (RecalcularImporteDetalle)'); + + ImportePuntosField := aDataTable.FindField(fld_IMPORTEPUNTOS); + if not Assigned(ImportePuntosField) then + raise Exception.Create('Campo IMPORTEPUNTOS no encontrado (RecalcularImporteDetalle)'); + end; + + if TieneSubtotales then + begin + TipoField := aDataTable.FindField(fld_TIPODETALLE); + if not Assigned(TipoField) then + raise Exception.Create('Campo TIPO no encontrado (RecalcularImporteDetalle)'); + end; + + // + if not EnEdicion then + aDataTable.Edit; + + aDataTable.DisableEventHandlers; + // Calcular el importe de la línea + try + if (TieneSubtotales) and ((TipoField.AsString = TIPODETALLE_SUBTOTAL) or + (TipoField.AsString = TIPODETALLE_TITULO)) then + begin + CantidadField.Value := NULL; + ImporteUnidadField.Value := NULL; + TotalField.Value := NULL; + + if (TienePuntos) then + begin + PuntosField.Value := NULL; + if (TipoField.AsString = TIPODETALLE_SUBTOTAL) then + ImportePuntosField.Value := NULL; + end; + end + else begin + if TienePuntos and + ((PuntosField.Value <> NULL) and (ImportePuntosField.Value <> NULL)) then + ImporteUnidadField.Value := PuntosField.AsInteger * ImportePuntosField.AsCurrency; + + TotalField.Value := CantidadField.AsCurrency * ImporteUnidadField.AsCurrency; + end; + finally + aDataTable.EnableEventHandlers; + if not EnEdicion then + aDataTable.Post; + end; +end; + +procedure RecalcularSubtotales(aDataTable : TDADataTable); +{ Recalcula el valor de todos los subtotales de la tabla } +var + ABookmark : Pointer; + APosicion : Integer; + MaxPos : Integer; + Total : Currency; + Subtotal : Currency; + TipoField : TDAField; + TotalField : TDAField; + ACursor: TCursor; +begin + if not Assigned(aDataTable) then + raise Exception.Create('Tabla no asignada (RecalcularTodosSubtotales)'); + + if aDataTable.RecordCount < 1 then + Exit; + + TipoField := aDataTable.FindField(fld_TIPODETALLE); + if not Assigned(TipoField) then + raise Exception.Create('Campo TIPO no encontrado (RecalcularTodosSubtotales)'); + + TotalField := aDataTable.FindField(fld_IMPORTETOTAL); + if not Assigned(TotalField) then + raise Exception.Create('Campo IMPORTETOTAL no encontrado (RecalcularTodosSubtotales)'); + + ABookmark := aDataTable.GetBookMark; + ACursor := Screen.Cursor; + Screen.Cursor := crHourGlass; + aDataTable.DisableControls; +// aDataTable.DisableEventHandlers; <- No descomentar + + if (aDataTable.State in dsEditModes) then + aDataTable.Post; + + APosicion := 1; + Total := 0; + Subtotal := 0; + try + MaxPos := DarMaximaPosicion(aDataTable); + while (APosicion <= MaxPos) do + begin + aDataTable.First; + if aDataTable.Locate(fld_POSICION, APosicion, []) then + begin + if (TipoField.AsString = TIPODETALLE_TITULO) then + Subtotal := 0 + else if (TipoField.AsString = TIPODETALLE_SUBTOTAL) then + begin + try + aDataTable.Edit; + TotalField.Value := SubTotal; + aDataTable.Post; + Total := Total + SubTotal; + Subtotal := 0; + except + on E : Exception do + ShowMessage(E.Message); + end; + end + else begin + Subtotal := Subtotal + TotalField.AsCurrency; + if (APosicion = MaxPos) then + Total := Total + SubTotal; + end; + Inc(APosicion); + end + else + Break; + end; + finally + aDataTable.GotoBookmark(ABookmark); + aDataTable.EnableControls; +// aDataTable.EnableEventHandlers; <- No descomentar + Screen.Cursor := ACursor; + end; +end; + +function DarTotalDetalles(aDataTable : TDADataTable; TieneSubtotales : Boolean; TienePuntos : Boolean) : Currency; +{ Calcula el total de todos los detalles a partir del importe total de cada uno } +var + EnEdicion : Boolean; + ABookmark : Pointer; + APosicion : Integer; + MaxPos : Integer; + Total : Currency; + Subtotal : Currency; + TipoField : TDAField; + TotalField : TDAField; + ACursor: TCursor; +begin + Result := 0; + + if not Assigned(aDataTable) then + raise Exception.Create('Tabla no asignada (DarTotalDetalles)'); + + if aDataTable.RecordCount < 1 then + Exit; + + if TieneSubtotales then + begin + TipoField := aDataTable.FindField(fld_TIPODETALLE); + if not Assigned(TipoField) then + raise Exception.Create('Campo TIPO no encontrado (DarTotalDetalles)'); + end; + + TotalField := aDataTable.FindField(fld_IMPORTETOTAL); + if not Assigned(TotalField) then + raise Exception.Create('Campo IMPORTETOTAL no encontrado (DarTotalDetalles)'); + + ABookmark := aDataTable.GetBookMark; + ACursor := Screen.Cursor; + Screen.Cursor := crHourGlass; + aDataTable.DisableControls; +// aDataTable.DisableEventHandlers; <- No descomentar + + // ¿Viene en modo edición? + EnEdicion := (aDataTable.State in dsEditModes); + + if EnEdicion then + aDataTable.Post; + + APosicion := 1; + Total := 0; + Subtotal := 0; + try + MaxPos := DarMaximaPosicion(aDataTable); + while (APosicion <= MaxPos) do + begin + aDataTable.First; + if aDataTable.Locate(fld_POSICION, APosicion, []) then + begin + if TieneSubtotales and (TipoField.AsString = TIPODETALLE_SUBTOTAL) then + begin + Total := Total + SubTotal; + Subtotal := 0; + end + else begin + Subtotal := Subtotal + TotalField.AsCurrency; + if (APosicion = MaxPos) then + Total := Total + SubTotal; + end; + Inc(APosicion); + end + else + Break; + end; + finally + Result := Total; + aDataTable.GotoBookmark(ABookmark); + aDataTable.EnableControls; +// aDataTable.EnableEventHandlers; <- No descomentar + if EnEdicion then + aDataTable.Edit; + Screen.Cursor := ACursor; + end; +end; + + +procedure RellenarImportePuntosEnCapitulo(aDataTable : TDADataTable); +{ Rellena el importe de puntos a todos los conceptos de un capítulo. El cursor + está puesto en la fila que es el título. } +var + ABookmark : Pointer; + APosicion : Integer; + MaxPos : Integer; + ImportePuntos : Currency; + TipoField : TDAField; + PosicionField : TDAField; + ImportePuntosField : TDAField; + ACursor: TCursor; + EnEdicion : Boolean; + ADetalle : IBizImportesDetalle; +begin + if not Assigned(aDataTable) then + raise Exception.Create('Tabla no asignada (RellenarImportePuntosEnCapitulo)'); + + if aDataTable.RecordCount < 1 then + Exit; + + if not Supports(aDataTable, IBizImportesDetalle, ADetalle) then + raise Exception.Create('La tabla no soporta la interfaz requerida (RellenarImportePuntosEnCapitulo)'); + + PosicionField := aDataTable.FindField(fld_POSICION); + if not Assigned(PosicionField) then + raise Exception.Create('Campo POSICION no encontrado (RellenarImportePuntosEnCapitulo)'); + + TipoField := aDataTable.FindField(fld_TIPODETALLE); + if not Assigned(TipoField) then + raise Exception.Create('Campo TIPO no encontrado (RellenarImportePuntosEnCapitulo)'); + + ImportePuntosField := aDataTable.FindField(fld_IMPORTEPUNTOS); + if not Assigned(ImportePuntosField) then + raise Exception.Create('Campo IMPORTEPUNTOS no encontrado (RellenarImportePuntosEnCapitulo)'); + + ABookmark := aDataTable.GetBookMark; + ACursor := Screen.Cursor; + Screen.Cursor := crHourGlass; + aDataTable.DisableControls; + + EnEdicion := (aDataTable.State in dsEditModes); + + if EnEdicion then + aDataTable.Post; + + APosicion := PosicionField.Value + 1; // La posición siguiente a la fila de TITULO + ImportePuntos := aDataTable.FindField(fld_IMPORTEPUNTOS).AsCurrency; // Importe de puntos de la fila de TITULO + + try + MaxPos := DarMaximaPosicion(aDataTable); + while (APosicion <= MaxPos) do + begin + if aDataTable.Locate(fld_POSICION, APosicion, []) then + begin + if (TipoField.AsString = TIPODETALLE_CONCEPTO) then + begin + aDataTable.Edit; + aDataTable.DisableEventHandlers; // Para que no salten otros eventos + try + ImportePuntosField.AsCurrency := ImportePuntos; + ADetalle.RecalcularImporte; + finally + aDataTable.EnableEventHandlers; + end; + aDataTable.Post; + Inc(APosicion); + end + else + break; // Es una fila de SUBTOTAL o de TITULO + end + else + raise Exception.Create('Hay un hueco en la numeración de posiciones'); + end; + finally + aDataTable.GotoBookmark(ABookmark); + aDataTable.EnableControls; + Screen.Cursor := ACursor; + if EnEdicion then + aDataTable.Edit; + end; +end; + + +procedure RellenarVisibleEnCapitulo(aDataTable : TDADataTable); +{ Rellena VISIBLE de todos los conceptos de un capítulo. El cursor + está puesto en la fila que es el título. } +var + ABookmark : Pointer; + APosicion : Integer; + MaxPos : Integer; + TipoField : TDAField; + PosicionField : TDAField; + VisibleField : TDAField; + ACursor: TCursor; + EnEdicion : Boolean; + EsVisible : String; +begin + if not Assigned(aDataTable) then + raise Exception.Create('Tabla no asignada (RellenarVisibleEnCapitulo)'); + + if aDataTable.RecordCount < 1 then + Exit; + + PosicionField := aDataTable.FindField(fld_POSICION); + if not Assigned(PosicionField) then + raise Exception.Create('Campo POSICION no encontrado (RellenarVisibleEnCapitulo)'); + + TipoField := aDataTable.FindField(fld_TIPODETALLE); + if not Assigned(TipoField) then + raise Exception.Create('Campo TIPO no encontrado (RellenarVisibleEnCapitulo)'); + + VisibleField := aDataTable.FindField(fld_VISIBLE); + if not Assigned(VisibleField) then + raise Exception.Create('Campo VISIBLE no encontrado (RellenarVisibleEnCapitulo)'); + + ABookmark := aDataTable.GetBookMark; + ACursor := Screen.Cursor; + Screen.Cursor := crHourGlass; + aDataTable.DisableControls; + + EnEdicion := (aDataTable.State in dsEditModes); + + if EnEdicion then + aDataTable.Post; + + APosicion := PosicionField.Value + 1; // La posición siguiente a la fila de TITULO + EsVisible := VisibleField.AsString; // Valor de VISIBLE de la fila de TITULO + + try + MaxPos := DarMaximaPosicion(aDataTable); + while (APosicion <= MaxPos) do + begin + if aDataTable.Locate(fld_POSICION, APosicion, []) then + begin + if (TipoField.AsString = TIPODETALLE_CONCEPTO) then + begin + aDataTable.Edit; + aDataTable.DisableEventHandlers; // Para que no salten otros eventos + try + VisibleField.AsString := EsVisible; + finally + aDataTable.EnableEventHandlers; + end; + aDataTable.Post; + Inc(APosicion); + end + else + break; // Es una fila de SUBTOTAL o de TITULO + end + else + raise Exception.Create('Hay un hueco en la numeración de posiciones'); + end; + finally + aDataTable.GotoBookmark(ABookmark); + aDataTable.EnableControls; + Screen.Cursor := ACursor; + if EnEdicion then + aDataTable.Edit; + end; +end; + +{ TBizCantidadFieldRules } + +procedure TBizCantidadFieldRules.OnChange(Sender: TDACustomField); +var + aDetalle : IBizImportesDetalle; + aCabecera : IBizImportesCabecera; + aParche : IParche; +begin + inherited; + + { PARCHE ********************************** } + if Supports(DataTable, IParche, aParche) and + not (aParche.PuedoLanzarEvento) then + Exit; + + if Supports(DataTable, IBizImportesDetalle, aDetalle) then + begin + if Sender.Value = 0 then + Sender.Value := Null; + + aDetalle.RecalcularImporte; + RecalcularSubtotales(aDetalle.DataTable); + if Assigned(aDetalle.DataTable.MasterSource) and + Supports(aDetalle.DataTable.MasterSource.DataTable, IBizImportesCabecera, ACabecera) then + ACabecera.RecalcularImporte; + end; +end; + +procedure TBizImporteUnidadFieldRules.OnChange(Sender: TDACustomField); +var + aDetalle : IBizImportesDetalle; + aCabecera : IBizImportesCabecera; + aParche : IParche; +begin + inherited; + + { PARCHE ********************************** } + if Supports(DataTable, IParche, aParche) and + not (aParche.PuedoLanzarEvento) then + Exit; + + if Supports(DataTable, IBizImportesDetalle, aDetalle) then + begin + if Sender.Value = 0 then + Sender.Value := Null; + + aDetalle.RecalcularImporte; + RecalcularSubtotales(aDetalle.DataTable); + if Assigned(aDetalle.DataTable.MasterSource) and + Supports(aDetalle.DataTable.MasterSource.DataTable, IBizImportesCabecera, ACabecera) then + ACabecera.RecalcularImporte; + end; +end; + +procedure TBizTipoDetalleFieldRules.OnChange(Sender: TDACustomField); +var + aDetalle : IBizImportesDetalle; + aCabecera : IBizImportesCabecera; + aParche : IParche; +begin + inherited; + + { PARCHE ********************************** } + if Supports(DataTable, IParche, aParche) and + not (aParche.PuedoLanzarEvento) then + Exit; + + if (Sender.AsString = TIPODETALLE_SUBTOTAL) or + (Sender.AsString = TIPODETALLE_TITULO) then + if Supports(DataTable, IBizImportesDetalle, aDetalle) then + begin + aDetalle.RecalcularImporte; + RecalcularSubtotales(aDetalle.DataTable); + if Assigned(aDetalle.DataTable.MasterSource) and + Supports(aDetalle.DataTable.MasterSource.DataTable, IBizImportesCabecera, ACabecera) then + ACabecera.RecalcularImporte; + end; +end; + +procedure TBizPuntosFieldRules.OnChange(Sender: TDACustomField); +var + aDetalle : IBizPuntosDetalle; + aCabecera : IBizImportesCabecera; + aParche : IParche; +begin + inherited; + + { PARCHE ********************************** } + if Supports(DataTable, IParche, aParche) and + not (aParche.PuedoLanzarEvento) then + Exit; + + if Supports(DataTable, IBizPuntosDetalle, aDetalle) then + begin + if Sender.Value = 0 then + Sender.Value := Null; + + aDetalle.RecalcularImporte; + RecalcularSubtotales(aDetalle.DataTable); + if Assigned(aDetalle.DataTable.MasterSource) and + Supports(aDetalle.DataTable.MasterSource.DataTable, IBizImportesCabecera, ACabecera) then + ACabecera.RecalcularImporte; + end; +end; + +procedure TBizImportePuntosFieldRules.OnChange( + Sender: TDACustomField); +var + aDetalle : IBizPuntosDetalle; + aCabecera : IBizImportesCabecera; + aParche : IParche; +begin + inherited; + + { PARCHE ********************************** } + if Supports(DataTable, IParche, aParche) and + not (aParche.PuedoLanzarEvento) then + Exit; + + if Supports(DataTable, IBizPuntosDetalle, aDetalle) then + begin + if Sender.Value = 0 then + Sender.Value := Null; + + aDetalle.RecalcularImporte; + if Assigned(aDetalle.DataTable.FindField(fld_TIPODETALLE)) then + if (aDetalle.DataTable.FindField(fld_TIPODETALLE).AsString = TIPODETALLE_TITULO) then + RellenarImportePuntosEnCapitulo(aDetalle.DataTable); + RecalcularSubtotales(aDetalle.DataTable); + if Assigned(aDetalle.DataTable.MasterSource) and + Supports(aDetalle.DataTable.MasterSource.DataTable, IBizImportesCabecera, ACabecera) then + ACabecera.RecalcularImporte; + end; +end; + +{ TBizVisibleFieldRules } + +procedure TBizVisibleFieldRules.OnChange(Sender: TDACustomField); +var + aDetalle : IBizVisibleDetalle; + aParche : IParche; +begin + inherited; + + { PARCHE ********************************** } + if Supports(DataTable, IParche, aParche) and + not (aParche.PuedoLanzarEvento) then + Exit; + + if Supports(DataTable, IBizVisibleDetalle, aDetalle) then + begin + if Assigned(aDetalle.DataTable.FindField(fld_TIPODETALLE)) then + if (aDetalle.DataTable.FindField(fld_TIPODETALLE).AsString = TIPODETALLE_TITULO) then + RellenarVisibleEnCapitulo(aDetalle.DataTable); + end; +end; + +initialization + RegisterFieldRules('Client.Field.Cantidad', TBizCantidadFieldRules); + RegisterFieldRules('Client.Field.ImporteUnidad', TBizImporteUnidadFieldRules); + RegisterFieldRules('Client.Field.TipoDetalle', TBizTipoDetalleFieldRules); + + RegisterFieldRules('Client.Field.ImportePuntos', TBizImportePuntosFieldRules); + RegisterFieldRules('Client.Field.Puntos', TBizPuntosFieldRules); + + RegisterFieldRules('Client.Field.Visible', TBizVisibleFieldRules); + +finalization + +end. diff --git a/Base/uBizInformesBase.pas b/Base/uBizInformesBase.pas new file mode 100644 index 0000000..3a96c41 --- /dev/null +++ b/Base/uBizInformesBase.pas @@ -0,0 +1,14 @@ +unit uBizInformesBase; + +interface + +type + IBizInformesAware = interface + ['{98AD6541-199F-4155-B394-ED0316298759}'] + procedure Preview; + procedure Print; + end; + +implementation + +end. diff --git a/Base/uConfigurarConexion.dfm b/Base/uConfigurarConexion.dfm new file mode 100644 index 0000000..9ccb99c --- /dev/null +++ b/Base/uConfigurarConexion.dfm @@ -0,0 +1,111 @@ +object fConfigurarConexion: TfConfigurarConexion + Left = 425 + Top = 509 + Width = 399 + Height = 179 + ActiveControl = edtServer + Caption = 'Configuraci'#243'n de la conexi'#243'n' + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + Position = poScreenCenter + OnCreate = FormCreate + PixelsPerInch = 96 + TextHeight = 13 + object bProbar: TButton + Left = 8 + Top = 113 + Width = 105 + Height = 25 + Caption = '&Probar la conexi'#243'n' + TabOrder = 1 + OnClick = bProbarClick + end + object GroupBox1: TGroupBox + Left = 8 + Top = 8 + Width = 375 + Height = 97 + Caption = 'Servidor de FactuGES' + TabOrder = 0 + DesignSize = ( + 375 + 97) + object Label1: TLabel + Left = 18 + Top = 30 + Width = 97 + Height = 13 + Caption = 'Nombre del servidor:' + end + object Label2: TLabel + Left = 18 + Top = 60 + Width = 93 + Height = 13 + Caption = 'Puerto de escucha:' + end + object edtServer: TEdit + Left = 128 + Top = 24 + Width = 231 + Height = 21 + Anchors = [akLeft, akTop, akRight] + TabOrder = 0 + end + object edtPort: TEdit + Left = 128 + Top = 56 + Width = 116 + Height = 21 + Anchors = [akLeft, akTop, akRight] + TabOrder = 1 + Text = '8099' + end + end + object bAceptar: TButton + Left = 219 + Top = 113 + Width = 75 + Height = 25 + Caption = '&Aceptar' + Default = True + ModalResult = 1 + TabOrder = 2 + end + object bCancelar: TButton + Left = 307 + Top = 113 + Width = 75 + Height = 25 + Cancel = True + Caption = '&Cancelar' + ModalResult = 2 + TabOrder = 3 + end + object HTTPChannel: TROWinInetHTTPChannel + ServerLocators = <> + DispatchOptions = [] + ProbeServers = False + ProbeFrequency = 60000 + UserAgent = 'FactuGES' + TargetURL = 'http://localhost:8099/BIN' + Left = 120 + Top = 112 + end + object ROBinMessage: TROBinMessage + Left = 152 + Top = 112 + end + object CoService: TRORemoteService + ServiceName = 'srvLogin' + Message = ROBinMessage + Channel = HTTPChannel + Left = 184 + Top = 112 + end +end diff --git a/Base/uConfigurarConexion.pas b/Base/uConfigurarConexion.pas new file mode 100644 index 0000000..d23547a --- /dev/null +++ b/Base/uConfigurarConexion.pas @@ -0,0 +1,78 @@ +unit uConfigurarConexion; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, StdCtrls, uROClient, uROWinInetHttpChannel, uRODynamicRequest, + uROServiceComponent, uRORemoteService, uROBinMessage; + +type + TfConfigurarConexion = class(TForm) + bProbar: TButton; + GroupBox1: TGroupBox; + Label1: TLabel; + Label2: TLabel; + edtServer: TEdit; + edtPort: TEdit; + bAceptar: TButton; + bCancelar: TButton; + HTTPChannel: TROWinInetHTTPChannel; + ROBinMessage: TROBinMessage; + CoService: TRORemoteService; + procedure bProbarClick(Sender: TObject); + procedure FormCreate(Sender: TObject); + private + function GetTargetURL: String; + procedure SetTargetURL(const Value: String); + { Private declarations } + public + property TargetURL : String read GetTargetURL write SetTargetURL; + end; + +var + fConfigurarConexion: TfConfigurarConexion; + +implementation + +uses + StrUtils, JclStrings, FactuGES_Intf, uDataModuleBase; + +{$R *.dfm} + +{ TfConfigurarConexion } + +function TfConfigurarConexion.GetTargetURL: String; +begin + Result := 'http://' + edtServer.Text + ':' + edtPort.Text + '/bin'; +end; + +procedure TfConfigurarConexion.SetTargetURL(const Value: String); +var + s : String; +begin + s := StrAfter('http://', Value); + s := StrBefore(':', s); + edtServer.Text := s; + + s := StrAfter(edtServer.Text + ':', Value); + s := StrBefore('/bin', s); + edtPort.Text := s; +end; + +procedure TfConfigurarConexion.bProbarClick(Sender: TObject); +begin + try + HTTPChannel.TargetURL := TargetURL; + (CoService as IsrvLogin).Ping; + Application.MessageBox('Conexión válida con el servidor.', 'FactuGES', MB_OK); + finally + end; +end; + +procedure TfConfigurarConexion.FormCreate(Sender: TObject); +begin + HTTPChannel.OnFailure := dmBase.ROChannelFailure; +end; + +end. diff --git a/Base/uDBSelectionList.pas b/Base/uDBSelectionList.pas new file mode 100644 index 0000000..6bb38db --- /dev/null +++ b/Base/uDBSelectionList.pas @@ -0,0 +1,125 @@ +unit uDBSelectionList; + +interface + +uses + uDADataTable, Classes, DB; + +type + TSelectedRowList = class; + + ISelectedRowList = interface + ['{1886B04A-DB0D-40AE-BCAE-DA57CD4CD582}'] + function GetSelectedRows : TSelectedRowList; + property SelectedRows : TSelectedRowList read GetSelectedRows; + end; + + TSelectedRowList = class + private + FDataTable: TDADataTable; + FList: TList; + function GetCount: Integer; + function GetCurrentRowSelected: Boolean; + function GetItem(Index: Integer): TBookmark; + procedure SetCurrentRowSelected(Value: Boolean); + protected + function CurrentRow: TBookmark; + function Compare(const Item1, Item2: TBookmark): Boolean; + public + constructor Create(ADataTable : TDADataTable); + destructor Destroy; override; + procedure Clear; // free all bookmarks + function Find(const Item: TBookmark; var Index: Integer): Boolean; + function IndexOf(const Item: TBookmark): Integer; + property Count: Integer read GetCount; + property CurrentRowSelected: Boolean read GetCurrentRowSelected + write SetCurrentRowSelected; + property Items[Index: Integer]: TBookmark read GetItem; default; + end; + + +implementation + +uses + DBConsts; + +{ TSelectedRowList } + +constructor TSelectedRowList.Create(ADataTable : TDADataTable); +begin + inherited Create; + FList := TList.Create; + FDataTable := ADataTable; +end; + +destructor TSelectedRowList.Destroy; +begin + Clear; + FList.Free; + FDataTable := NIL; + inherited Destroy; +end; + +procedure TSelectedRowList.Clear; +begin + if FList.Count = 0 then + Exit; + FList.Clear; +end; + +function TSelectedRowList.Compare(const Item1, Item2: TBookmark): Boolean; +begin + Result := (Item1 = Item2); +end; + +function TSelectedRowList.CurrentRow: TBookmark; +begin + if not FDataTable.Active then + raise EDatabaseError.Create(sDataSetClosed); + Result := FDataTable.GetBookMark +end; + +function TSelectedRowList.GetCurrentRowSelected: Boolean; +var + Index: Integer; +begin + Result := Find(CurrentRow, Index); +end; + +function TSelectedRowList.Find(const Item: TBookmark; var Index: Integer): Boolean; +begin + Index := FList.IndexOf(Item); + Result := (Index > -1) +end; + +function TSelectedRowList.GetCount: Integer; +begin + Result := FList.Count; +end; + +function TSelectedRowList.GetItem(Index: Integer): TBookmark; +begin + Result := FList[Index]; +end; + +function TSelectedRowList.IndexOf(const Item: TBookmark): Integer; +begin + Result := FList.IndexOf(Item); +end; + +procedure TSelectedRowList.SetCurrentRowSelected(Value: Boolean); +var + Index: Integer; + Current: TBookmark; +begin + Current := CurrentRow; + if (Find(Current, Index) = Value) then + Exit; + if Value then + FList.Add(Current) + else + FList.Delete(Index); +end; + + +end. diff --git a/Base/uDataModuleBase.ddp b/Base/uDataModuleBase.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Base/uDataModuleBase.ddp differ diff --git a/Base/uDataModuleBase.dfm b/Base/uDataModuleBase.dfm new file mode 100644 index 0000000..9b17daa --- /dev/null +++ b/Base/uDataModuleBase.dfm @@ -0,0 +1,1660 @@ +object dmBase: TdmBase + OldCreateOrder = True + OnCreate = DAClientDataModuleCreate + Left = 616 + Top = 230 + Height = 368 + Width = 494 + object SmallImages: 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 + 610000000774494D45000000000000000973942E000000097048597300001712 + 0000171201679FD252000001724944415478DA6364A0103062135CB1E2C26E20 + E5824F63448401235603809AA381D412374F5506413E2EB0D89FBFFF187EFFF9 + 0BC62F3EFD6728A999C0B0795E15A60150CD1540CD3A7B4FDCC5B0D5D94299E1 + CAD3BF0CDD3D53F280064CC666C06EA066176C36FF05B25F7F6544B11DC50098 + D3C3C3F519D6ECBA8C61BBBDA922C38D17FF41B6C384B6020DF261846AFE0FA4 + AE809C0EB21DDD6610FFCF9F7F0CE91553194CF49518A4558D1836AE59037609 + 23C8E6AB4F2E2C2136DAE4B5AC186E9CD9C570F3C1278801B53D0BFE3715C7E3 + D4F0E5C75F86CFDF8118487FF9F18F61C3BA350C12CA260C3B366F4218408CCD + 17AE3D03D3065A520CEC42AA0C278F1CC4EF02749BBF82F0CFBF0CC7F66E64F8 + C92AC970FDE259DC06A06BAE3DEFC390ABB49EE1FEB5530CCF9F3F6778FA919D + E1F5D3FBD80DC066F3AC743D8680EEB30CAFEE9E61D8BEF72C4CA90CD080A770 + 03A62FDB45542C400D006B062724DFA4366920FD84D86844D68C9212C905001F + 16FA1194E3DBC30000000049454E44AE426082} + Name = 'PngImage1' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD2520000016A4944415478DA + 63FCFFFF3F03082CDD7212C22000627C2D18616C905E466403A27DCCF16A06AA + 61E89DB290E1FCCEE98C241BF0EFDF3F86E5DB4E33488B093314D5F5810D21DA + 0090E6DF7FFE31ACD97596C1C9429BE1E6BD176043CEED98C688D3804D0F0E30 + F45E6A02B37779EC62E05CC0C6B058EA38D80B3080D30090E6805D4E182E7911 + FC91E1C4E5C70C8F1E3F6298B774137603609AFFA4FC013B1B64738BB13743CD + D9AD0C8FFDDF81C5B6EC3B85DB00A6594C289A91C13DEF3740F1BF0C3B0F9DC5 + 6D0048C1EFDF7F21F49F7F50FA2FC31F181F2877E0E445EC068479988015F02C + E640B1F98EE72BB066CDDD120C676D1E311C3D7B05BB0181CE8660DB049773C3 + FD8DAC3957BB80219A379FE1D4C5EBD80DF0B1D7032B165BCD8B110330CD200B + CE5FBD85DD00776B1DB002E9F502609B13CF8781E50C840DE09A41165CB97907 + BB014EE69A1801060B44986610C06980ADB11AC3A63D2789C994D80D404EA6C4 + 0090010087546EF0ACB0C7920000000049454E44AE426082} + Name = 'PngImage2' + 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 = 'PngImage3' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD2520000011F4944415478DA + 63FCFFFF3F03258091620390394975ABC1A6BD79FB8561D3D4444642E220CB31 + 0C985113C8A0E6D6C4F0E040132321711403408A40367CFCF28DE1E1C3970C7A + DA8A60DB708963350064CBF6938F18966C3EC770FAD425B06DB8C409BA000440 + B68908F330A08B631800D23CB73184E1D9CB4F0C775EFD6598B2641FD8A68208 + 2F864BCF1E33A0CB71BF7AC2B0604101380619571EBDFB7FE7CE730CD9518E60 + D3F79CB8C770E6DA23B0013017609373501062983F3F9F111E4820F0F8C52730 + FDFEED5B30CDC2FC91C1CEDA860197FCFDFD8D8CF040DA77EE39C395DBAF182E + DF7DC370F0C051ACD188AE66901A70F2F27D94B8C666004C0DDC801F3F7F323C + 7DF191E1D78F9F0CCF5F7E40896B9801D8D4800DA0343702001BEF6EF0E3CC7C + BD0000000049454E44AE426082} + Name = 'PngImage4' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000002234944415478DA + A5934F4814511CC7BF6BBAB0AD97225B2A2B4B88ECB014861241ED2190FE9017 + 2D15843A74E8E0A14D3282608935920E092D7A10A44C25A843497FEDA0EB422D + 2DE6A2F647ADA5C542A6DD76DB6CC79979F3DE34F3CA99C4BAB40F1EEF0DEF7D + 3FDFEFFC783F9BA669C865D8EE0FBDCE89C001473D3BF8473631861FB36FF9BE + 7063199C45BBCC8B4C4FAAAA0C44A5E6ACAA3F67010CF19748000BDF0984440A + C2FC1CF61F0F605DE91EA894E17CAFB2C4B9246F18DD7D03BF0087F76E46FCB9 + 1FDF3EC640A97EAA5164321924A5146A5A22A6A391C0E971724097F7B1053858 + B90633835E40B461A5C38115A010B322C6E2D3A83E1BE6E24B7781D676070A1A + 9A40FAAFA3270A74569D5E04B8F039E4835D96757740210A24710173EA6A941F + BBC69D676E3BF169EB3892E37DC86B6EE3294C805103E1553FB21F9EE800BD58 + 84605E54C04AAA515A51CBC5EE230108D38F7073A402EB7D3EC83D7FFC820108 + C506111BEEC07666D713C81895800DBB1BB0E94D9D2936668DBF180F9E85118A + 4C5880E23205CD431791FA1AC749D70130C2702B1944A73DBA4CECA96BE5F12B + DD6B2D4098DEC1C3A91148ABD228CC1640AF223A94977F7526BFDFC2E8C43B0B + 7043F023369B002D92A0E48BF0CA67B09334C2B5EDD032E7C5B1244153B016E9 + B4601E5E75B7E344633DA2DDF95C3CF0F40577A54CE32BD3D7C9A9F716605FF9 + 16F4DE0B9A80B60BA7CC7DCBE5AE7FF68109F05D09FC7F33E5DACE3F0109DB53 + BED36F80890000000049454E44AE426082} + Name = 'PngImage5' + Background = clWindow + end> + PngOptions = [pngBlendOnDisabled, pngGrayscaleOnDisabled] + Left = 24 + Top = 16 + Bitmap = {} + end + object TBXSwitcher: TTBXSwitcher + Theme = 'Default' + Left = 24 + Top = 80 + end + object StyleManager: TJvNavPaneStyleManager + Colors.ButtonColorFrom = clWhite + Colors.ButtonColorTo = 12435133 + Colors.ButtonHotColorFrom = 13009540 + Colors.ButtonHotColorTo = 13009540 + Colors.ButtonSelectedColorFrom = 14602190 + Colors.ButtonSelectedColorTo = 14602190 + Colors.SplitterColorFrom = 13026246 + Colors.SplitterColorTo = 9211532 + Colors.DividerColorFrom = 15725551 + Colors.DividerColorTo = 13026246 + Colors.HeaderColorFrom = 8684164 + Colors.HeaderColorTo = 8684164 + Colors.FrameColor = 8684676 + Colors.ToolPanelHeaderColorFrom = clWhite + Colors.ToolPanelHeaderColorTo = 12435133 + Fonts.NavPanelFont.Charset = DEFAULT_CHARSET + Fonts.NavPanelFont.Color = clWindowText + Fonts.NavPanelFont.Height = -13 + Fonts.NavPanelFont.Name = 'Tahoma' + Fonts.NavPanelFont.Style = [] + Fonts.NavPanelHotTrackFont.Charset = DEFAULT_CHARSET + Fonts.NavPanelHotTrackFont.Color = clWindow + Fonts.NavPanelHotTrackFont.Height = -13 + Fonts.NavPanelHotTrackFont.Name = 'Tahoma' + Fonts.NavPanelHotTrackFont.Style = [] + Fonts.DividerFont.Charset = DEFAULT_CHARSET + Fonts.DividerFont.Color = clWindowText + Fonts.DividerFont.Height = -11 + Fonts.DividerFont.Name = 'Tahoma' + Fonts.DividerFont.Style = [] + Fonts.HeaderFont.Charset = DEFAULT_CHARSET + Fonts.HeaderFont.Color = clWindow + Fonts.HeaderFont.Height = -16 + Fonts.HeaderFont.Name = 'Arial' + Fonts.HeaderFont.Style = [fsBold] + Theme = nptCustom + Left = 104 + Top = 80 + end + object ROChannel: TROWinInetHTTPChannel + OnFailure = ROChannelFailure + ServerLocators = <> + DispatchOptions = [] + ProbeServers = False + ProbeFrequency = 60000 + UserAgent = 'RemObjects SDK' + TargetURL = 'http://localhost:8099/bin' + KeepConnection = True + OnProgress = ROChannelProgress + Left = 330 + Top = 24 + end + object cxIntl: TcxIntl + Connected = True + cxLibrary.CantCreateRegistryKey = 'No se puede crear la llave de registro : \%s' + PageControl2.ImageListIndexError = 'El '#237'ndice (%d) deber'#225' estar entre 0 y %d' + PageControl2.NoBaseImages = 'BaseImages no est'#225' asignado' + PageControl2.NoRegisteredStyles = 'No hay estilos registrados' + PageControl2.PageIndexError = '%d es un valor inv'#225'lido para PageIndex, debe estar entre 0 y %d' + PageControl2.PainterClassError = 'La clase PCPainter es nula' + PageControl2.StandardStyleError = '%s es un estilo est'#225'ndar no soportado' + PageControl2.StyleNameError = '%s es un nombre de estilo no registrado' + PageControl2.TabCountEqualsZero = 'Tabs.Count = 0' + PageControl2.TabIndexError = 'El '#237'ndice de la pesta'#241'a (%d) est'#225' fuera de l'#237'mites' + PageControl2.TabVisibleIndexOutsOfBounds = 'Propiedad TabVisibleIndex (%d) deber'#225' estar entre 0 y %d' + PageControl2.VisibleTabListEmpty = 'No hay pesta'#241'as visibles' + QuantumGrid5.GridRecursiveLevels = 'No se pueden crear niveles recursivos' + QuantumGrid5.GridDeletingConfirmationCaption = 'Confirmar' + QuantumGrid5.GridDeletingFocusedConfirmationText = #191'Borrar registro?' + QuantumGrid5.GridDeletingSelectedConfirmationText = #191'Borrar todos los registros seleccionados?' + QuantumGrid5.GridNoDataInfoText = '' + QuantumGrid5.GridNewItemRowInfoText = 'Haga click aqu'#237' para agregar una nueva l'#237'nea' + QuantumGrid5.GridFilterIsEmpty = '' + QuantumGrid5.GridCustomizationFormCaption = 'Personalizaci'#243'n' + QuantumGrid5.GridCustomizationFormColumnsPageCaption = 'Columnas' + QuantumGrid5.GridGroupByBoxCaption = 'Arrastre una columna aqu'#237' para agrupar por dicha columna' + QuantumGrid5.GridFilterCustomizeButtonCaption = 'Personalizar...' + QuantumGrid5.GridColumnsQuickCustomizationHint = 'Haga click aqu'#237' para seleccionar las columas visibles' + QuantumGrid5.GridCustomizationFormBandsPageCaption = 'Bandas' + QuantumGrid5.GridBandsQuickCustomizationHint = 'Haga click aqu'#237' para seleccionar las bandas visibles' + QuantumGrid5.GridCustomizationFormRowsPageCaption = 'Rows' + QuantumGrid5.GridConverterIntermediaryMissing = 'Omiti'#243' un componente intermediario!' + QuantumGrid5.GridConverterNotExistGrid = 'cxGrid no existe' + QuantumGrid5.GridConverterNotExistComponent = 'El componente no existe' + QuantumGrid5.ImportErrorCaption = 'Error al importar' + QuantumGrid5.NotExistGridView = 'No existe la vista del grid' + QuantumGrid5.NotExistGridLevel = 'No existe un nivel de grid activo' + QuantumGrid5.CantCreateExportOutputFile = 'No se puede crear el archivo de exportaci'#243'n' + QuantumGrid5.EditRepositoryExtLookupComboBoxItem = + 'ExtLookupComboBox|Representa un ultra avanzado control de busque' + + 'da (lookup) usando el QuantumGrid como su control de despliegue' + Navigator.NavigatorHint_First = 'Primer registro' + Navigator.NavigatorHint_Prior = 'Registro anterior' + Navigator.NavigatorHint_PriorPage = 'P'#225'gina anterior' + Navigator.NavigatorHint_Next = 'Siguiente registro' + Navigator.NavigatorHint_NextPage = 'Siguiente p'#225'gina' + Navigator.NavigatorHint_Last = #218'ltimo registro' + Navigator.NavigatorHint_Insert = 'Insertar registro' + Navigator.NavigatorHint_Delete = 'Borrar registro' + Navigator.NavigatorHint_Edit = 'Editar registro' + Navigator.NavigatorHint_Post = 'Grabar edici'#243'n' + Navigator.NavigatorHint_Cancel = 'Cancelar edici'#243'n' + Navigator.NavigatorHint_Refresh = 'Actualizar datos' + Navigator.NavigatorHint_SaveBookmark = 'Guardar Marca' + Navigator.NavigatorHint_GotoBookmark = 'Volver a Marca' + Navigator.NavigatorHint_Filter = 'Filtrar datos' + Navigator.Navigator_DeleteRecordQuestion = #191'Desea borrar este el registro?' + Editors5.EditDateConvertError = 'El valor no se puede convertir a fecha' + Editors5.EditInvalidRepositoryItem = 'Elemento de repositorio no v'#225'lido' + Editors5.EditNumericValueConvertError = 'No se puede convertir a valor num'#233'rico' + Editors5.EditPopupCircularReferencingError = 'Referencia circular no permitida' + Editors5.EditPostError = 'Ocurri'#243' un error durante el grabado del valor de edici'#243'n' + Editors5.EditTimeConvertError = 'No se puede convertir a valor de tiempo' + Editors5.EditValidateErrorText = 'Valor inv'#225'lido. Use la tecla de escape para cancelar cambios' + Editors5.EditValueOutOfBounds = 'Valor fuera de l'#237'mites' + Editors5.EditCheckBoxChecked = 'True' + Editors5.EditCheckBoxUnchecked = 'False' + Editors5.TextTrue = 'True' + Editors5.TextFalse = 'False' + Editors5.BlobButtonOK = '&Aceptar' + Editors5.BlobButtonCancel = '&Cancelar' + Editors5.BlobButtonClose = '&Cerrar' + Editors5.BlobMemo = '(MEMO)' + Editors5.BlobMemoEmpty = '(memo)' + Editors5.BlobPicture = '(IM'#193'GEN)' + Editors5.BlobPictureEmpty = '(im'#225'gen)' + Editors5.MenuItemCaptionCut = 'Cor&tar' + Editors5.MenuItemCaptionCopy = '&Copiar' + Editors5.MenuItemCaptionPaste = '&Pegar' + Editors5.MenuItemCaptionDelete = '&Borrar' + Editors5.MenuItemCaptionLoad = '&Leer...' + Editors5.MenuItemCaptionSave = 'Guardar &Como...' + Editors5.DatePopupClear = 'Limpiar' + Editors5.DatePopupNow = 'Ahora' + Editors5.DatePopupOK = 'Aceptar' + Editors5.DatePopupToday = 'Hoy' + Editors5.DateError = 'Fecha inv'#225'lida' + Editors5.DateToday = 'hoy' + Editors5.DateYesterday = 'ayer' + Editors5.DateTomorrow = 'ma'#241'ana' + Editors5.DateSunday = 'Domingo' + Editors5.DateMonday = 'Lunes' + Editors5.DateTuesday = 'Martes' + Editors5.DateWednesday = 'Mi'#233'rcoles' + Editors5.DateThursday = 'Jueves' + Editors5.DateFriday = 'Viernes' + Editors5.DateSaturday = 'S'#225'bado' + Editors5.DateFirst = 'Primero' + Editors5.DateSecond = 'segundo' + Editors5.DateThird = 'tercero' + Editors5.DateFourth = 'Cuarto' + Editors5.DateFifth = 'Quinto' + Editors5.DateSixth = 'sexto' + Editors5.DateSeventh = 's'#233'ptimo' + Editors5.DateBOM = 'bom' + Editors5.DateEOM = 'eom' + Editors5.DateNow = 'ahora' + Editors5.CalcError = 'Error' + Editors5.HyperLinkPrefix = 'http://' + Editors5.HyperLinkDoubleSlash = '//' + Editors5.EditRepositoryBlobItem = 'BlobEdit|Representa el editor de BLOB' + Editors5.EditRepositoryButtonItem = + 'ButtonEdit|Representa un control de edici'#243'n con controles incrus' + + 'tados' + Editors5.EditRepositoryCalcItem = + 'CalcEdit|Representa un control de edici'#243'n con una ventana de cal' + + 'culadora desplegable' + Editors5.EditRepositoryCheckBoxItem = + 'CheckBox|Representa un control de caja de marca que permite sele' + + 'ccionar una opci'#243'n' + Editors5.EditRepositoryComboBoxItem = 'ComboBox|Representa el editor de la caja combo' + Editors5.EditRepositoryCurrencyItem = + 'CurrencyEdit|Representa un editor que habilita la edici'#243'n de val' + + 'ores monetarios' + Editors5.EditRepositoryDateItem = + 'DateEdit|Representa un control de edici'#243'n con un calendario desp' + + 'legable' + Editors5.EditRepositoryHyperLinkItem = 'HyperLink|Representa un editor de texto de hiperv'#237'nculos' + Editors5.EditRepositoryImageComboBoxItem = + 'ImageComboBox|Representa un editor que muestra una lista de im'#225'g' + + 'enes y texto en la ventana desplegable' + Editors5.EditRepositoryImageItem = 'Image|Representa un editor de im'#225'genes' + Editors5.EditRepositoryLookupComboBoxItem = 'LookupComboBox|Representa una caja de b'#250'squeda' + Editors5.EditRepositoryMaskItem = 'MaskEdit|Representa un control de edici'#243'n gen'#233'rico con m'#225'scara' + Editors5.EditRepositoryMemoItem = + 'Memo|Representa un control de edici'#243'n que permite editar datos m' + + 'emo' + Editors5.EditRepositoryMRUItem = + 'MRUEdit|Representa un editor de texto mostrando la lista de los ' + + 'elementos m'#225's recientemente usados (MRU) en una ventana desplega' + + 'ble' + Editors5.EditRepositoryPopupItem = + 'PopupEdit|Representa un control de edici'#243'n con una lista despleg' + + 'able' + Editors5.EditRepositorySpinItem = 'SpinEdit|Representa un editor de incrementos/decrementos (spin)' + Editors5.EditRepositoryRadioGroupItem = 'RadioGroup|Represents a group of radio buttons' + Editors5.EditRepositoryTextItem = 'TextEdit|Representa un editor de texto de l'#237'nea sencilla' + Editors5.EditRepositoryTimeItem = 'TimeEdit|Representa un editor mostrando valores de tiempo' + Editors5.RegExprLine = 'L'#237'nea' + Editors5.RegExprChar = 'Char' + Editors5.RegExprNotAssignedSourceStream = 'No se ha asignado el stream fuente' + Editors5.RegExprEmptySourceStream = 'El stream or'#237'gen est'#225' vac'#237'o' + Editors5.RegExprCantUsePlusQuantifier = 'El cuantificador '#39'+'#39' no puede aplicarse aqu'#237 + Editors5.RegExprCantUseStarQuantifier = 'El cuantificador '#39'*'#39' no puede aplicarse aqu'#237 + Editors5.RegExprCantCreateEmptyAlt = 'La alternativa no debe estar vac'#237'a' + Editors5.RegExprCantCreateEmptyBlock = 'El bloque no debe estar vac'#237'o' + Editors5.RegExprIllegalSymbol = 'S'#237'mbolo no permitido '#39'%s'#39 + Editors5.RegExprIllegalQuantifier = 'Cuantificador no permitido '#39'%s'#39 + Editors5.RegExprNotSupportQuantifier = 'El par'#225'metro cuantificador no es soportado' + Editors5.RegExprIllegalIntegerValue = 'Valor entero no permitido' + Editors5.RegExprTooBigReferenceNumber = 'N'#250'mero de referencia demasiado grande' + Editors5.RegExprCantCreateEmptyEnum = 'No puedo crear enumeraci'#243'n vac'#237'a' + Editors5.RegExprSubrangeOrder = 'El caracter de inicio del subrango debe ser menor al de fin' + Editors5.RegExprHexNumberExpected0 = 'Se esperaba n'#250'mero Hexadecimal' + Editors5.RegExprHexNumberExpected = 'N'#250'mero Hexadecimal esperado pero encontr'#243' '#39'%s'#39 + Editors5.RegExprMissing = 'Falta '#39'%s'#39 + Editors5.RegExprUnnecessary = 'Innecesario '#39'%s'#39 + Editors5.RegExprIncorrectSpace = 'Espacio incorrecto despu'#233's de '#39'\'#39 + Editors5.RegExprNotCompiled = 'Expresi'#243'n regular no compila' + Editors5.RegExprIncorrectParameterQuantifier = 'Cuantificador de par'#225'metros incorrecto' + Editors5.RegExprCantUseParameterQuantifier = 'The parameter quantifier cannot be applied here' + Editors5.MaskEditRegExprError = 'Errores en expresiones regulares:' + Editors5.MaskEditInvalidEditValue = 'El valor de edici'#243'n es inv'#225'lido' + Editors5.MaskEditNoMask = 'Ninguno' + Editors5.MaskEditIllegalFileFormat = 'Formato de archivo ilegal' + Editors5.MaskEditEmptyMaskCollectionFile = 'El archivo de colecci'#243'n de m'#225'scaras est'#225' vac'#237'o' + Editors5.MaskEditMaskCollectionFiles = 'Archivos de colecci'#243'n de m'#225'scaras' + Editors5.SpinEditInvalidNumericValue = 'Valor num'#233'rico no v'#225'lido' + Datacontroller.DataReadError = 'Error de lectura en or'#237'gen de datos' + Datacontroller.DataWriteError = 'Error de escritura en or'#237'gen de datos (stream)' + Datacontroller.DataItemExistError = 'El elemento ya existe' + Datacontroller.DataRecordIndexError = #205'ndice de registro fuera de rango' + Datacontroller.DataItemIndexError = #205'ndice de elemento fuera de rango' + Datacontroller.DataProviderModeError = 'La operaci'#243'n no es soportada en modo de proveedor (provider)' + Datacontroller.DataInvalidStreamFormat = 'Origen de datos (Stream) inv'#225'lido' + Datacontroller.DataRowIndexError = #205'ndice del elemento de fila fuera de rango' + Datacontroller.DataCustomDataSourceInvalidCompare = 'Instrucci'#243'n GetInfoForCompare no implementada' + Datacontroller.DBDetailFilterControllerNotFound = 'DetailFilterController no encontrado' + Datacontroller.DBNotInGridMode = 'La controladora de datos no est'#225' en modo de Grid' + Datacontroller.DBKeyFieldNotFound = 'Campo llave no encontrado' + Filter.FilterOperatorEqual = 'igual' + Filter.FilterOperatorNotEqual = 'no es igual' + Filter.FilterOperatorLess = 'es menor que' + Filter.FilterOperatorLessEqual = 'es menor o igual que' + Filter.FilterOperatorGreater = 'es mayor que' + Filter.FilterOperatorGreaterEqual = 'es mayor o igual que' + Filter.FilterOperatorLike = 'como' + Filter.FilterOperatorNotLike = 'no es como' + Filter.FilterOperatorBetween = 'entre' + Filter.FilterOperatorNotBetween = 'no entre' + Filter.FilterOperatorInList = 'en' + Filter.FilterOperatorNotInList = 'no en' + Filter.FilterOperatorYesterday = 'es ayer' + Filter.FilterOperatorToday = 'es hoy' + Filter.FilterOperatorTomorrow = 'es ma'#241'ana' + Filter.FilterOperatorLastWeek = 'es '#250'ltima semana' + Filter.FilterOperatorLastMonth = 'es '#250'ltimo mes' + Filter.FilterOperatorLastYear = 'es a'#241'o pasado' + Filter.FilterOperatorThisWeek = 'es esta semana' + Filter.FilterOperatorThisMonth = 'es este mes' + Filter.FilterOperatorThisYear = 'es este a'#241'o' + Filter.FilterOperatorNextWeek = 'es semana siguiente' + Filter.FilterOperatorNextMonth = 'es mes siguiente' + Filter.FilterOperatorNextYear = 'es a'#241'o pr'#243'ximo' + Filter.FilterAndCaption = 'y' + Filter.FilterOrCaption = 'o' + Filter.FilterNotCaption = 'no' + Filter.FilterBlankCaption = 'vac'#237'o' + Filter.FilterOperatorIsNull = 'es vac'#237'o' + Filter.FilterOperatorIsNotNull = 'no es vac'#237'o' + Filter.FilterOperatorBeginsWith = 'comienza con' + Filter.FilterOperatorDoesNotBeginWith = 'no comienza con' + Filter.FilterOperatorEndsWith = 'termina con' + Filter.FilterOperatorDoesNotEndWith = 'no termina con' + Filter.FilterOperatorContains = 'contiene' + Filter.FilterOperatorDoesNotContain = 'no contiene' + Filter.FilterBoxAllCaption = '(Todos)' + Filter.FilterBoxCustomCaption = '(Personalizado...)' + Filter.FilterBoxBlanksCaption = '(Vac'#237'os)' + Filter.FilterBoxNonBlanksCaption = '(NoVac'#237'os)' + Filter.FilterBoolOperatorAnd = 'AND' + Filter.FilterBoolOperatorOr = 'OR' + Filter.FilterBoolOperatorNotAnd = 'NOT AND' + Filter.FilterBoolOperatorNotOr = 'NOT OR' + Filter.FilterRootButtonCaption = 'Filtro' + Filter.FilterAddCondition = 'Agregar &Condici'#243'n' + Filter.FilterAddGroup = 'Agregar &Grupo' + Filter.FilterRemoveRow = '&Remover Fila' + Filter.FilterClearAll = 'Limpiar &Todo' + Filter.FilterFooterAddCondition = 'presione el bot'#243'n para agregar una nueva condici'#243'n' + Filter.FilterGroupCaption = 'aplica a las siguientes condiciones' + Filter.FilterRootGroupCaption = '' + Filter.FilterControlNullString = '' + Filter.FilterErrorBuilding = 'No se puede construir filtro desde el or'#237'gen' + Filter.FilterDialogCaption = 'Filtro Personalizado' + Filter.FilterDialogInvalidValue = 'Valor inv'#225'lido' + Filter.FilterDialogUse = 'Usar' + Filter.FilterDialogSingleCharacter = 'para representar un caracter sencillo' + Filter.FilterDialogCharactersSeries = 'para representar cualquier serie de caracteres' + Filter.FilterDialogOperationAnd = 'Y' + Filter.FilterDialogOperationOr = 'O' + Filter.FilterDialogRows = 'Mostrar filas donde:' + Filter.FilterControlDialogCaption = 'Constructor de Filtro' + Filter.FilterControlDialogNewFile = 'sinnombre.flt' + Filter.FilterControlDialogOpenDialogCaption = 'Abrir un filtro existente' + Filter.FilterControlDialogSaveDialogCaption = 'Grabar el filtro activo a archivo' + Filter.FilterControlDialogActionSaveCaption = '&Guardar...' + Filter.FilterControlDialogActionOpenCaption = '&Abrir...' + Filter.FilterControlDialogActionApplyCaption = '&Aplicar' + Filter.FilterControlDialogActionOkCaption = 'Aceptar' + Filter.FilterControlDialogActionCancelCaption = 'Cancelar' + Filter.FilterControlDialogFileExt = 'flt' + Filter.FilterControlDialogFileFilter = 'Filtros (*.flt)|*.flt' + GridPopupMenu.GridNone = 'Ninguno' + GridPopupMenu.GridSortColumnAsc = 'Ordenar Ascendente' + GridPopupMenu.GridSortColumnDesc = 'Ordenar Descendente' + GridPopupMenu.GridClearSorting = 'Clear Sorting' + GridPopupMenu.GridGroupByThisField = 'Agrupar por este campo' + GridPopupMenu.GridRemoveThisGroupItem = 'Remover del grupo' + GridPopupMenu.GridGroupByBox = 'Panel "Agrupar por"' + GridPopupMenu.GridAlignmentSubMenu = 'Alineaci'#243'n' + GridPopupMenu.GridAlignLeft = 'Alineaci'#243'n Izquierda' + GridPopupMenu.GridAlignRight = 'Alineaci'#243'n Derecha' + GridPopupMenu.GridAlignCenter = 'Alineaci'#243'n Centrada' + GridPopupMenu.GridRemoveColumn = 'Remover esta columna' + GridPopupMenu.GridFieldChooser = 'Selector de campos' + GridPopupMenu.GridBestFit = 'Mejor distribuci'#243'n' + GridPopupMenu.GridBestFitAllColumns = 'Mejor distribuci'#243'n (Todas las columnas)' + GridPopupMenu.GridShowFooter = 'Pie' + GridPopupMenu.GridShowGroupFooter = 'Pies de grupo' + GridPopupMenu.GridSumMenuItem = 'Sumar' + GridPopupMenu.GridMinMenuItem = 'M'#237'nimo' + GridPopupMenu.GridMaxMenuItem = 'M'#225'ximo' + GridPopupMenu.GridCountMenuItem = 'Contar' + GridPopupMenu.GridAvgMenuItem = 'Promedio' + GridPopupMenu.GridNoneMenuItem = 'Ninguno' + GridExport.UnsupportedExport = 'Tipo de exportaci'#243'n no soportado: %1' + GridExport.StyleManagerKill = + 'El administrador de estilo esta siendo utilizado y no puede ser ' + + 'liberado en este momento' + GridExport.StyleManagerCreate = 'No se puede crear administrador de estilo' + GridExport.ExportToHtml = 'Exportar a p'#225'gina Web (*.html)' + GridExport.ExportToXml = 'Exportar a documento XML (*.xml)' + GridExport.ExportToText = 'Exportar a formato de texto (*.txt)' + GridExport.EmptyExportCache = 'Cache de exportaci'#243'n vac'#237'o' + GridExport.IncorrectUnion = 'Uni'#243'n de celdas incorrecta' + GridExport.IllegalWidth = 'Ancho de columna ilegal' + GridExport.InvalidColumnRowCount = 'Conteo de columna o fila inv'#225'lido' + GridExport.IllegalHeight = 'Alto de fila ilegal' + GridExport.InvalidColumnIndex = 'El '#237'ndice de columna %d fuera de l'#237'mites' + GridExport.InvalidRowIndex = 'El '#237'ndice de fila %d est'#225' fuera de l'#237'mites' + GridExport.InvalidStyleIndex = #205'ndice de estilo %d inv'#225'lido' + GridExport.ExportToExcel = 'Exportar a MS Excel (*.xls)' + GridExport.WorkbookWrite = 'Error al escribir el archivo XLS' + GridExport.InvalidCellDimension = 'Dimensi'#243'n de celda inv'#225'lida' + GridExport.BoolTrue = 'True' + GridExport.BoolFalse = 'False' + Translate.cxLibrary = True + Translate.PageControl2 = False + Translate.QuantumGrid5 = True + Translate.Editors5 = True + Translate.Datacontroller = True + Translate.Filter = True + Translate.GridPopupMenu = True + Translate.GridExport = True + Translate.Navigator = True + Version = '5.0' + Left = 104 + Top = 16 + end + object cxIntlPrintSys3: TcxIntlPrintSys3 + Connected = True + Version = '3.0' + BtnOK = 'Aceptar' + BtnOKAccelerated = '&Aceptar' + BtnCancel = 'Cancelar' + BtnClose = 'Cerrar' + BtnApply = '&Aplicar' + BtnHelp = 'A&yuda' + BtnFix = '&Arreglar' + BtnNew = '&Nuevo...' + BtnIgnore = '&Ignorar' + BtnYes = '&S'#237 + BtnNo = '&No' + BtnEdit = '&Editar...' + BtnReset = '&Restaurar' + BtnAdd = '&A'#241'adir' + BtnAddComposition = 'A'#241'adir &Comparativa' + BtnDefault = '&Defecto...' + BtnDelete = '&Borrar...' + BtnDescription = '&Descripci'#243'n...' + BtnCopy = '&Copiar...' + BtnYesToAll = 'S'#237' a &Todos' + BtnRestoreDefaults = '&Rest.Defecto' + BtnRestoreOriginal = 'Restaurar &Original' + BtnTitleProperties = 'Prop. del T'#237'tulo...' + BtnProperties = 'P&ropiedades...' + BtnNetwork = 'R&ed...' + BtnBrowse = '&Hojear...' + BtnPageSetup = 'Config. P'#225'&gina...' + BtnPrintPreview = 'Vista Pre&via...' + BtnPreview = '&Ver...' + BtnPrint = 'Imprimir...' + BtnOptions = '&Opciones...' + BtnStyleOptions = 'Opciones de estilo...' + BtnDefinePrintStyles = '&Definir Estilos...' + BtnPrintStyles = 'Estilos de Imp.' + BtnBackground = 'Fondo' + BtnShowToolBar = 'Mostrar &Herramientas' + BtnDesign = 'D&ise'#241'o...' + BtnMoveUp = 'Mover &Arriba' + BtnMoveDown = 'Mover Aba&jo' + BtnMoreColors = '&M'#225's Colores...' + BtnFillEffects = 'Efectos de &Relleno...' + BtnNoFill = '&Sin Relleno' + BtnAutomatic = '&Autom'#225'tico' + BtnNone = '&Ninguno' + BtnOtherTexture = 'Otras Te&xturas...' + BtnInvertColors = 'I&nvertir Colores' + BtnSelectPicture = 'Se&leccionar Imagen...' + EditReports = 'Editar Informes' + Composition = 'Composici'#243'n' + ReportTitleDlgCaption = 'T'#237'tulo del Informe' + Mode = '&Modo:' + Text = '&Texto' + Properties = '&Propiedades' + AdjustOnScale = '&Ajustar Escala' + TitleModeNone = 'Ninguno' + TitleModeOnEveryTopPage = 'En Cada P'#225'gina' + TitleModeOnFirstPage = 'En Primera P'#225'gina' + EditDescription = 'Editar Descripci'#243'n' + Rename = 'Reno&mbrar' + SelectAll = 'Seleccionar Todo' + AddReport = 'A'#241'adir Informe' + AddAndDesignReport = 'A'#241'adir y D&ise'#241'ar Informe...' + NewCompositionCaption = 'Nueva Composici'#243'n' + Name0 = '&Nombre:' + Caption = '&T'#237'tulo:' + AvailableSources = '&Fuente(s) Disponible(s)' + OnlyComponentsInActiveForm = 'S'#243'lamente Componentes en Formulario &Activo' + OnlyComponentsWithoutLinks = 'S'#243'lamente Componentes &sin Enlaces Existentes' + ItemName = 'Nombre' + ItemDescription = 'Descripci'#243'n' + ConfirmDeleteItem = 'Quiere borrar los siguientes elementos: %s ?' + AddItemsToComposition = 'A'#241'adir Elementos a la Composici'#243'n' + HideAlreadyIncludedItems = 'Ocultar Elementos Ya &Incluidas' + AvailableItems = 'Elementos D&isponibles' + Items = '&Elementos' + Enable = '&Habilitar' + Options = 'Opciones' + Show = 'Mostrar' + PaintItemsGraphics = '&Pintar Elementos Gr'#225'ficos' + Description = 'Descripci'#243'n:' + NewReport = 'Nuevo Informe' + OnlySelected = 'S'#243'lo &Seleccionados' + ExtendedSelect = 'Selecci'#243'n &Extendida' + IncludeFixed = '&Incluir Fijos' + Fonts = 'Fuentes' + BtnFont = 'Fue&nte...' + BtnEvenFont = 'Fuente &Par...' + BtnOddFont = 'Fuente &Impar...' + BtnFixedFont = 'Fuente F&ijo...' + BtnGroupFont = 'Fuente de Gru&po...' + BtnChangeFont = 'Cambiar Fue&nte...' + Font = 'Fuente' + OddFont = 'Fuente Impar' + EvenFont = 'Fuente Par' + PreviewFont = 'Fuente Vista Prev.' + CaptionNodeFont = 'Fuente T'#237'tulo del Nivel' + GroupNodeFont = 'Fuente T'#237'tulos de Grupo' + GroupFooterFont = 'Fuente Pies de Grupo' + HeaderFont = 'Fuente Cabecera' + FooterFont = 'Fuente Pie' + BandFont = 'Fuente Groups' + Transparent = '&Transparente' + FixedTransparent = 'Transparente Fijo' + CaptionTransparent = 'T'#237'tulo Transparente' + GroupTransparent = 'Grupo Transparente' + GraphicAsTextValue = '(GRAPHIC)' + Colors = 'Colores' + Color = 'Co&lor:' + OddColor = 'Co&lor Impar:' + EvenColor = 'Color Par:' + PreviewColor = 'Color V.&Previa:' + BandColor = 'Color &Grupos:' + LevelCaptionColor = 'Color T'#237'tulo Ni&vel:' + HeaderColor = 'Color Cab&ecera:' + GroupNodeColor = 'Color &Nodo Grupo:' + GroupFooterColor = 'Color Pie &Grupo:' + FooterColor = 'Color P&ie:' + FixedColor = 'Color F&ijo:' + GroupColor = 'Color Gru&po:' + CaptionColor = 'Color T'#237'tulo:' + GridLinesColor = 'Color L'#237'nea &Rejilla:' + Bands = '&Grupos' + LevelCaptions = 'T'#237'tulo Niveles' + Headers = 'Cab&eceras' + Footers = 'P&ies&' + GroupFooters = 'Pies de &Grupos' + Preview = 'Vista Pre&via' + PreviewLineCount = 'N'#250'm.L'#237'neas V.Previa:' + AutoCalcPreviewLineCount = 'A&uto-Calcular L'#237'neas V.Previa' + Grid = 'Re&jilla&' + NodesGrid = '&Nodos de Rejilla' + GroupFooterGrid = 'Rejilla de Gru&pos Pie' + StateImages = 'Imagenes de E&stado' + Images = '&Imagenes' + TextAlign = '&Alineaci'#243'n Texto' + TextAlignHorz = 'Hori&zontal' + TextAlignVert = '&Vertical' + TextAlignLeft = 'Izquierda' + TextAlignCenter = 'Centrado' + TextAlignRight = 'Derecha' + TextAlignTop = 'Superior' + TextAlignVCenter = 'Centrado' + TextAlignBottom = 'Inferior' + BorderLines = 'L'#237'neas de &Borde' + HorzLines = 'L'#237'neas Hori&zontales' + VertLines = 'L'#237'neas &Verticales' + FixedHorzLines = 'L'#237'neas Horizontales Fi&jas' + FixedVertLines = 'L'#237'neas Verticales Fij&as' + FlatCheckMarks = 'Cajas de Verificaci'#243'n P&lanas' + CheckMarksAsText = '&Mostrar Cajas Verificaci'#243'n como Text' + RowAutoHeight = 'Altura &Fila Auto.' + EndEllipsis = '&Puntos Suspens.' + DrawBorder = '&Dibujar Borde' + FullExpand = '&Expandir Todo' + BorderColor = 'Color &Borde:' + AutoNodesExpand = 'Expandir N&odos' + ExpandLevel = 'Expandir &Niveles:' + FixedRowOnEveryPage = 'Filas Fijas en &Cada P'#225'gina' + DrawMode = '&Modo Dibujo:' + DrawModeStrict = 'Estricto' + DrawModeOddEven = 'Modo Filas Par/Impar' + DrawModeChess = 'Modo '#39'Ajedrez'#39 + DrawModeBorrow = 'Prestar de Fuente' + ThreeDEffects = 'Efectos 3D' + Use3DEffects = 'Usar Efectos &3D' + Soft3D = '3D "Suave"' + Behaviors = 'Comportamiento' + Miscellaneous = 'Miscelaneo' + OnEveryPage = 'En Cada P'#225'gina' + NodeExpanding = 'Expansi'#243'n de Nodos' + Selection = 'Selecci'#243'n' + NodeAutoHeight = 'Altura &Nodo Auto.' + TransparentGraphics = 'Gr'#225'ficos &Transparentes' + AutoWidth = 'An&chura Auto.' + DisplayGraphicsAsText = 'Mostrar Gr'#225'fico Como &Texto' + TransparentColumnGraphics = '&Gr'#225'ficos Transparentes' + BandsOnEveryPage = 'Grupos En C&ada P'#225'gina' + HeadersOnEveryPage = 'Cabeceras en Cada &P'#225'gina' + FootersOnEveryPage = 'Pies en Ca&da P'#225'gina' + Graphics = 'Gr'#225'ficos' + OutOfResources = 'Out of Resources' + FileAlreadyExists = 'Fichero "%s" Ya Existe.' + ConfirmOverWrite = 'Fichero "%s" ya existe. '#191'Sobreescribir?' + InvalidFileName = 'Nombre No V'#225'lido "%s"' + RequiredFileName = 'Entrar nombre de fichero.' + OutsideMarginsMessage = + 'Uno o m'#225's margenes est'#225'n fuera del area de impresi'#243'n de la p'#225'gin' + + 'a.' + OutsideMarginsMessage2 = + 'Uno o m'#225's margenes est'#225'n fuera del area de impresi'#243'n de la p'#225'gin' + + 'a.' + InvalidMarginsMessage = 'Uno o m'#225's margenes tiene valores no v'#225'lidos.' + InvalidMargins = 'Uno o m'#225's valores de los margenes no es v'#225'lido' + OutsideMargins = + 'Uno o m'#225's margenes se ha establecido fuera del area de impresi'#243'n' + + ' de la p'#225'gina' + ThereAreNowItemsForShow = 'No existen elementos en '#233'sta vista' + PageBackground = 'Fondo de P'#225'gina' + PenColor = 'Color del L'#225'piz' + FontColor = 'Color del Fuente' + BrushColor = 'Color de la Brocha' + HighLight = 'HighLight' + ColorBlack = 'Negro' + ColorDarkRed = 'Rojo Oscuro' + ColorRed = 'Rojo' + ColorPink = 'Rosa' + ColorRose = 'Rosado' + ColorBrown = 'Marr'#243'n' + ColorOrange = 'Naranja' + ColorLightOrange = 'Naranja Claro' + ColorGold = 'Oro' + ColorTan = 'Dorado' + ColorOliveGreen = 'Verde Oliva' + ColorDrakYellow = 'Amarillo Oscuro' + ColorLime = 'Lima' + ColorYellow = 'Amarillo' + ColorLightYellow = 'Amarillo Claro' + ColorDarkGreen = 'Verde Oscuro' + ColorGreen = 'Verde' + ColorSeaGreen = 'Verde Mar' + ColorBrighthGreen = 'Verde Florecente' + ColorLightGreen = 'Verde Claro' + ColorDarkTeal = 'VerdeAzul Oscuro' + ColorTeal = 'VerdeAzul' + ColorAqua = 'Aqua' + ColorTurquoise = 'Turquesa' + ColorLightTurquoise = 'Turquesa Claro' + ColorDarkBlue = 'Azul Oscuro' + ColorBlue = 'Azul' + ColorLightBlue = 'Azul Claro' + ColorSkyBlue = 'Azul Cielo' + ColorPaleBlue = 'Azul P'#225'lido' + ColorIndigo = 'Indigo' + ColorBlueGray = 'Azul Gris' + ColorViolet = 'Violeta' + ColorPlum = 'Granate' + ColorLavender = 'Lav'#225'nder' + ColorGray80 = 'Gris-80%' + ColorGray50 = 'Gris-50%' + ColorGray40 = 'Gris-40%' + ColorGray25 = 'Gris-25%' + ColorWhite = 'Blanco' + Texture = '&Textura' + Pattern = '&Dibujo' + Picture = '&Im'#225'gen' + Foreground = '&Primer Plano' + Background = '&Fondo' + Sample = 'Ejemplo:' + FEFCaption = 'Efectos de Relleno' + PaintMode = '&Modo Pintar' + PaintModeCenter = 'Centrar' + PaintModeStretch = 'Estirar' + PaintModeTile = 'Mosaico' + PaintModeProportional = 'Proporcional' + PatternGray5 = '5%' + PatternGray10 = '10%' + PatternGray20 = '20%' + PatternGray25 = '25%' + PatternGray30 = '30%' + PatternGray40 = '40%' + PatternGray50 = '50%' + PatternGray60 = '60%' + PatternGray70 = '70%' + PatternGray75 = '75%' + PatternGray80 = '80%' + PatternGray90 = '90%' + PatternLightDownwardDiagonal = 'Light downward diagonal' + PatternLightUpwardDiagonal = 'Light upward diagonal' + PatternDarkDownwardDiagonal = 'Dark downward diagonal' + PatternDarkUpwardDiagonal = 'Dark upward diagonal' + PatternWideDownwardDiagonal = 'Wide downward diagonal' + PatternWideUpwardDiagonal = 'Wide upward diagonal' + PatternLightVertical = 'Light vertical' + PatternLightHorizontal = 'Light horizontal' + PatternNarrowVertical = 'Narrow vertical' + PatternNarrowHorizontal = 'Narrow horizontal' + PatternDarkVertical = 'Dark vertical' + PatternDarkHorizontal = 'Dark horizontal' + PatternDashedDownward = 'Dashed downward' + PatternDashedUpward = 'Dashed upward' + PatternDashedVertical = 'Dashed vertical' + PatternDashedHorizontal = 'Dashed horizontal' + PatternSmallConfetti = 'Small confetti' + PatternLargeConfetti = 'Large confetti' + PatternZigZag = 'Zig zag' + PatternWave = 'Wave' + PatternDiagonalBrick = 'Diagonal brick' + PatternHorizantalBrick = 'Horizontal brick' + PatternWeave = 'Weave' + PatternPlaid = 'Plaid' + PatternDivot = 'Divot' + PatternDottedGrid = 'Dottedgrid' + PatternDottedDiamond = 'Dotted diamond' + PatternShingle = 'Shingle' + PatternTrellis = 'Trellis' + PatternSphere = 'Sphere' + PatternSmallGrid = 'Small grid' + PatternLargeGrid = 'Large grid' + PatternSmallCheckedBoard = 'Small checked board' + PatternLargeCheckedBoard = 'Large checked board' + PatternOutlinedDiamond = 'Outlined diamond' + PatternSolidDiamond = 'Solid diamond' + TextureNewSprint = 'Newsprint' + TextureGreenMarble = 'Green marble' + TextureBlueTissuePaper = 'Blue tissue paper' + TexturePapyrus = 'Papyrus' + TextureWaterDroplets = 'Water droplets' + TextureCork = 'Cork' + TextureRecycledPaper = 'Recycled paper' + TextureWhiteMarble = 'White marble' + TexturePinkMarble = 'Pink marble' + TextureCanvas = 'Canvas' + TexturePaperBag = 'Paper bag' + TextureWalnut = 'Walnut' + TextureParchment = 'Parchment' + TextureBrownMarble = 'Brown marble' + TexturePurpleMesh = 'Purple mesh' + TextureDenim = 'Denim' + TextureFishFossil = 'Fish fossil' + TextureOak = 'Oak' + TextureStationary = 'Stationary' + TextureGranite = 'Granite' + TextureBouquet = 'Bouquet' + TextureWonenMat = 'Woven mat' + TextureSand = 'Sand' + TextureMediumWood = 'Medium wood' + FSPCaption = 'Vista de Im'#225'gen' + Width = 'Altura' + Height = 'Altura' + BrushDlgCaption = 'Propiedades de la Brocha' + Style = 'E&stilo:' + ENFNCaption = 'Escoge Nombre de Fichero' + EnterNewFileName = 'Introduzca Nuevo Nombre de Fichero' + DefinePrintStylesCaption = 'Definir Estilos de Impresi'#243'n' + DefinePrintStylesTitle = 'E&stilos de Impresi'#243'n' + DefinePrintStylesWarningDelete = #191' Desea borrar "%s" ?' + DefinePrintStylesWarningClear = #191'Desea borrar todos los estilos existentes?' + Clear = 'E&liminar...' + CustomSize = 'Tama'#241'o Personalizado' + DefaultTray = 'Bandeja de Entrada' + InvalidPrintDevice = 'La impresora seleccionada no es v'#225'lida' + NotPrinting = 'La impresora no est'#225' imprimiendo' + Printing = 'Imprimiendo' + DeviceOnPort = '%s en %s' + PrinterIndexError = #205'ndice de Impresora fueera de rango' + NoDefaultPrintDevice = 'No hay ninguna impresora seleccionada' + AutoTextDialogCaption = 'Editar Entidades AutoTexto' + EnterAutoTextEntriesHere = 'Entrar Entidades A&utoTexto Aqu'#237':' + PrintDialogCaption = 'Imprimir' + PrintDialogPrinter = 'Impresora' + PrintDialogName = '&Nombre:' + PrintDialogStatus = 'Estado:' + PrintDialogType = 'Tipo:' + PrintDialogWhere = 'D'#243'nde:' + PrintDialogComment = 'Comentario:' + PrintDialogPrintToFile = 'A &Fichero' + PrintDialogPageRange = 'Rango de P'#225'g.' + PrintDialogAll = '&Todas' + PrintDialogCurrentPage = 'P'#225'g. A&ctual' + PrintDialogSelection = '&Selecci'#243'n' + PrintDialogPages = '&P'#225'ginas:' + PrintDialogRangeLegend = 'Entre el n'#250'mero de p'#225'gina o un rango de p'#225'ginas' + PrintDialogCopies = 'Copias' + PrintDialogNumberOfPages = 'N&'#250'mero de P'#225'g.:' + PrintDialogNumberOfCopies = 'N'#250'mero de &Copias:' + PrintDialogCollateCopies = 'In&tercalar Copias' + PrintDialogAllPages = 'Todas' + PrintDialogEvenPages = 'Pares' + PrintDialogOddPages = 'Impares' + PrintDialogPrintStyles = 'Est&ilos Impresi'#243'n' + PrintDialogOpenDlgTitle = 'Elije un Fichero' + PrintDialogOpenDlgAllFiles = 'Todos los Ficheros' + PrintDialogOpenDlgPrinterFiles = 'Ficheros de Impresora' + PrintDialogPageNumbersOutOfRange = 'N'#250'mero de p'#225'gina fuera de rango (%d - %d)' + PrintDialogInvalidPageRanges = 'Rango de p'#225'ginas no v'#225'lido' + PrintDialogRequiredPageNumbers = 'Introduzca n'#250'meros de p'#225'ginas' + PrintDialogNoPrinters = 'No printers are installed.' + PrintDialogInPrintingState = 'La impresora est'#225' ocupado.' + PrintDialogPSPaused = 'Pausado' + PrintDialogPSPendingDeletion = 'Pendiente Borrar' + PrintDialogPSBusy = 'Ocupado' + PrintDialogPSDoorOpen = 'Puerta Abierta' + PrintDialogPSError = 'Error' + PrintDialogPSInitializing = 'Inicializando' + PrintDialogPSIOActive = 'E/S Activo' + PrintDialogPSManualFeed = 'Alimentaci'#243'n Manual' + PrintDialogPSNoToner = 'Toner Terminado' + PrintDialogPSNotAvailable = 'No Disponible' + PrintDialogPSOFFLine = 'Fuera de L'#237'nea' + PrintDialogPSOutOfMemory = 'Memoria Agotada' + PrintDialogPSOutBinFull = 'Bandeja de Salida Llena' + PrintDialogPSPagePunt = 'Page Punt' + PrintDialogPSPaperJam = 'Papel Enganchado' + PrintDialogPSPaperOut = 'Sin Papel' + PrintDialogPSPaperProblem = 'Problema de Papel' + PrintDialogPSPrinting = 'Imprimiendo' + PrintDialogPSProcessing = 'Procesando' + PrintDialogPSTonerLow = 'Toner Bajo' + PrintDialogPSUserIntervention = 'Intervenci'#243'n del Usuario' + PrintDialogPSWaiting = 'Esperando' + PrintDialogPSWarningUp = 'Precalientamiento' + PrintDialogPSReady = 'Lista' + PrintDialogPSPrintingAndWaiting = 'Imprimiendo: %d documento(s) esperando' + LeftMargin = 'Margen Izquierdo' + TopMargin = 'Margin Superior' + RightMargin = 'Margin Derecho' + BottomMargin = 'Margin Inferior' + GutterMargin = 'Gutter' + HeaderMargin = 'Cabecera' + FooterMargin = 'Pie' + UnitsInches = '"' + UnitsCentimeters = 'cm' + UnitsMillimeters = 'mm' + UnitsPoints = 'pt' + UnitsPicas = 'pi' + UnitsDefaultName = 'Predeterminada' + UnitsInchesName = 'Pulgadas' + UnitsCentimetersName = 'Centimetros' + UnitsMillimetersName = 'Milimetros' + UnitsPointsName = 'Puntos' + UnitsPicasName = 'Picas' + PrintPreview = 'Vista Previa' + ReportDesignerCaption = 'Dise'#241'ador de Informes' + CompositionDesignerCaption = 'Dise'#241'ador de Composici'#243'n' + ComponentNotSupportedByLink = 'Component "%s" not supported by TdxComponentPrinter' + ComponentNotSupported = 'Component "%s" not supported by TdxComponentPrinter' + PrintDeviceNotReady = 'La impresora no est'#225' instalada o no est'#225' preparada' + UnableToGenerateReport = 'No se ha podido generar el informe' + PreviewNotRegistered = 'There is no registered preview form' + ComponentNotAssigned = '%s' + PrintDeviceIsBusy = 'Impresora ocupada' + PrintDeviceError = #161'La impresora ha encontrado un error!' + MissingComponent = 'Missing "Component" property' + DataProviderDontPresent = 'There are no Links with Assigned Component in Composition' + BuildingReport = 'Generando informe: Completado %d%%' + PrintingReport = + 'Imprimiendo Informe: Completado %d p'#225'gina(s). Pulse ESC to abort' + + 'ar...' + DefinePrintStylesMenuItem = 'Definir E&stilos de Impresi'#243'n...' + AbortPrinting = #191'Abortar impresi'#243'n?' + StandardStyle = 'Estilo Estandar' + FontStyleBold = 'Negrita' + FontStyleItalic = 'It'#225'lica' + FontStyleUnderline = 'Subrayado' + FontStyleStrikeOut = 'Tachado' + Pt = 'pt.' + NoPages = '[No p'#225'ginas]' + PageWidth = 'Anchura P'#225'g' + WholePage = 'Pag. Completa' + TwoPages = 'Dos P'#225'ginas' + FourPages = 'Cuatro P'#225'ginas' + WidenToSourceWidth = 'Ajustar a Anchura' + MenuBar = 'MenuBar' + StandardBar = 'Standard' + HeaderFooterBar = 'Header and Footer' + ShortcutMenusBar = 'Shortcut Menus' + AutoTextBar = 'AutoTexto' + MenuFile = '&Ficheros' + MenuFileDesign = '&Dise'#241'o...' + MenuFilePrint = '&Imprimir...' + MenuFilePageSetup = 'Con&fig. P'#225'gina...' + MenuPrintStyles = 'Estilos Impresi'#243'n' + MenuFileExit = '&Cerrar' + MenuEdit = '&Editar' + MenuEditCut = 'Cor&tar' + MenuEditCopy = '&Copiar' + MenuEditPaste = '&Pegar' + MenuEditDelete = '&Borrar' + MenuEditFind = '&Buscar...' + MenuEditFindNext = 'Buscar Si&guiente' + MenuEditReplace = '&Reemplazar...' + MenuLoad = '&Cargar...' + MenuPreview = 'V. Pre&via...' + MenuInsert = '&Insertar' + MenuInsertAutoText = '&AutoTexto' + MenuInsertEditAutoTextEntries = 'AutoTe&xto...' + MenuInsertAutoTextEntries = '&(Lista de Entradas AutoTexto)' + MenuInsertAutoTextEntriesSubItem = 'In&sertar AutoTexto' + MenuInsertPageNumber = 'N'#250'm &P'#225'g.' + MenuInsertTotalPages = '&N'#250'm. de P'#225'g.' + MenuInsertPageOfPages = 'N'#250'm de P'#225'&g. de P'#225'ginas' + MenuInsertDateTime = 'Fechay Hora' + MenuInsertDate = '&Fecha' + MenuInsertTime = '&Hora' + MenuInsertUserName = 'Nombre &Usuario' + MenuInsertMachineName = 'Nombre &Maquina' + MenuView = '&Vista' + MenuViewMargins = '&Margenes' + MenuViewFlatToolBarButtons = 'Botones &Planos' + MenuViewLargeToolBarButtons = 'Botones &Grandes' + MenuViewMarginsStatusBar = 'Barra de M&argenes' + MenuViewPagesStatusBar = 'Barra de E&stado' + MenuViewToolBars = '&Herramientas' + MenuViewPagesHeaders = '&Cabeceras de P'#225'gina' + MenuViewPagesFooters = '&Pies de P'#225'ginas' + MenuViewSwitchToLeftPart = 'Switch to Left Part' + MenuViewSwitchToRightPart = 'Switch to Right Part' + MenuViewSwitchToCenterPart = 'Switch to Center Part' + MenuViewHFSwitchHeaderFooter = 'Mo&strar Cabecera/Pie' + MenuViewHFClose = '&Cerrar' + MenuZoom = '&Aumentar' + MenuZoomPercent100 = 'Porcien &100' + MenuZoomPageWidth = '&Anchura P'#225'gina' + MenuZoomWholePage = 'P'#225'gina C&ompleta' + MenuZoomTwoPages = '&Dos P'#225'ginas' + MenuZoomFourPages = '&Cuatro P'#225'ginas' + MenuZoomMultiplyPages = 'P'#225'ginas &M'#250'ltiples' + MenuZoomWidenToSourceWidth = 'Aju&star a Anchura' + MenuZoomSetup = '&Config...' + MenuPages = '&P'#225'ginas' + MenuGotoPage = '&Saltar' + MenuGotoPageFirst = '&Primera P'#225'g.' + MenuGotoPagePrev = 'P'#225'g. &Anteror' + MenuGotoPageNext = 'Pr'#243'&xima P'#225'g.' + MenuGotoPageLast = #218'l&tima P'#225'g.' + MenuActivePage = 'P'#225'g. Acti&va:' + MenuFormat = 'F&ormato' + MenuFormatHeaderAndFooter = '&Cabeceras y Pies' + MenuFormatAutoTextEntries = 'Entradas &AutoTexto...' + MenuFormatDateTime = 'Fecha y &Hora...' + MenuFormatPageNumbering = '&Numeraci'#243'n P'#225'ginas...' + MenuFormatPageBackground = 'Fon&do...' + MenuFormatShrinkToPage = '&Reducir a P'#225'g.' + MenuShowEmptyPages = 'Mostrar P'#225'g. &Vacias' + MenuFormatHFBackground = 'Fondo de Cabecera/Pie...' + MenuFormatHFClear = 'Vaciar Texto' + MenuTools = '&Herramientas' + MenuToolsCustomize = '&Personalizar...' + MenuToolsOptions = '&Opciones...' + MenuHelp = 'A&yuda' + MenuHelpTopics = '&Temas de Ayuda...' + MenuHelpAbout = '&Acerca de...' + MenuShortcutPreview = 'V.Previa' + MenuShortcutAutoText = 'AutoTexto' + MenuBuiltInMenus = 'Men'#250's Incorporados' + MenuShortCutMenus = 'Men'#250's de Atajos' + MenuNewMenu = 'Men'#250' Nuevo' + HintFileDesign = 'Dise'#241'ar Informe' + HintFilePrint = 'Imprimir' + HintFilePrintDialog = 'Configuarar la Impresora' + HintFilePageSetup = 'Configurar la P'#225'gina' + HintFileExit = 'Cerrar Vista Previa' + HintEditFind = 'Buscar' + HintEditFindNext = 'Buscar Siguiente' + HintEditReplace = 'Reemplazar' + HintInsertEditAutoTextEntries = 'Editar Entradas AutoTexto' + HintInsertPageNumber = 'Insertar N'#250'mero P'#225'gina' + HintInsertTotalPages = 'Insertar N'#250'mero de P'#225'ginas' + HintInsertPageOfPages = 'Insertar P'#225'gina N'#250'mero de P'#225'ginas' + HintInsertDateTime = 'Insertar Fecha y Hora' + HintInsertDate = 'Insertar Fecha' + HintInsertTime = 'Insert Hora' + HintInsertUserName = 'Insertar Nombre Usuario' + HintInsertMachineName = 'Insertar Nombre Maquina' + HintViewMargins = 'Ver Margenes' + HintViewLargeButtons = 'Ver Botones Grandes' + HintViewMarginsStatusBar = 'Ver Barra de Esatdo de Margenes' + HintViewPagesStatusBar = 'Ver Barra de Estado de P'#225'gina' + HintViewPagesHeaders = 'Vee Cabecera de P'#225'gina' + HintViewPagesFooters = 'Ver Pie de P'#225'gina' + HintViewSwitchToLeftPart = 'Cambiar a Cabecera/Pie Izquierda' + HintViewSwitchToRightPart = 'Cambiar a Cabecera/Pie Derecha' + HintViewSwitchToCenterPart = 'Cambiar a Cabecera/Pie Centrada' + HintViewHFSwitchHeaderFooter = 'Cambiar a Cabecera y Pie' + HintViewHFClose = 'Cerrar' + HintViewZoom = 'Aumentar' + HintZoomPercent100 = 'Aumentar al 100%' + HintZoomPageWidth = 'Aumentar a Anchura de P'#225'gina' + HintZoomWholePage = 'P'#225'gina Completa' + HintZoomTwoPages = 'Dos P'#225'ginas' + HintZoomFourPages = 'Cuatro P'#225'ginas' + HintZoomMultiplyPages = 'P'#225'ginas M'#250'ltiples' + HintZoomWidenToSourceWidth = 'Ajustar a la Anchura' + HintZoomSetup = 'Introducir Factor de Aumento' + HintFormatDateTime = 'Formato de Fecha y Hora' + HintFormatPageNumbering = 'Formato de N'#250'mero de P'#225'gina' + HintFormatPageBackground = 'Fondo' + HintFormatShrinkToPage = 'Reducir a P'#225'gina' + HintFormatHFBackground = 'Fondo de Cabecera/Pie' + HintFormatHFClear = 'Vaciar Texto Cabecera/Pie' + HintGotoPageFirst = 'Primera P'#225'gina' + HintGotoPagePrev = 'P'#225'gina Anterior' + HintGotoPageNext = 'Pr'#243'xima P'#225'gina' + HintGotoPageLast = #218'ltima P'#225'gina' + HintActivePage = 'P'#225'gina Activa' + HintToolsCustomize = 'Personalizar Herramientas' + HintToolsOptions = 'Opciones' + HintHelpTopics = 'Temas de Ayuda' + HintHelpAbout = 'Acerca de' + PopupMenuLargeButtons = 'Botones &Grandes' + PopupMenuFlatButtons = 'Botones &Planos' + PaperSize = 'Tama'#241'o Papel' + Status = 'Estado' + StatusReady = 'Lista' + StatusPrinting = 'Imprimiendo. %d p'#225'gina(s) terminada(s)' + StatusGenerateReport = 'Generando Informe. %d%% completado.' + HintDoubleClickForChangePaperSize = 'Doble Clic para Cambiar el Tama'#241'o de P'#225'gina' + HintDoubleClickForChangeMargins = 'Doble Clic para Cambiar Margenes' + DTFormatsCaption = 'Fecha y Hora' + DTFormatsAvailableDateFormats = 'Formatos de &Fecha Disponibes:' + DTFormatsAvailableTimeFormats = 'Formatos de &Hora Disponibles:' + DTFormatsAutoUpdate = 'Act. &Autom'#225'tica' + DTFormatsChangeDefaultFormat = + 'Confirme que desea cambiar el formato de fecha y hora al "%s" -' + + ' "%s" ?' + PNFormatsCaption = 'Formato de N'#250'mero de P'#225'gina' + PageNumbering = 'Numeraci'#243'n de P'#225'ginas' + PNFormatsNumberFormat = '&Format N'#250'mero:' + PNFormatsContinueFromPrevious = '&Continuar desde '#218'ltima Secci'#243'n' + PNFormatsStartAt = 'Empezar &En:' + PNFormatsChangeDefaultFormat = + 'Confirme que desea cambiar el formato de numeraci'#243'n de p'#225'ginas a' + + 'l "%s" ?' + ZoomDlgCaption = 'Aumentar' + ZoomDlgZoomTo = 'Aumentar a' + ZoomDlgPageWidth = '&Ancho P'#225'g.' + ZoomDlgWholePage = 'P'#225'g.C&ompleta' + ZoomDlgTwoPages = '&Dos P'#225'ginas' + ZoomDlgFourPages = '&Cuatro P'#225'g.' + ZoomDlgManyPages = '&Varias P'#225'g.:' + ZoomDlgPercent = 'P&orcien:' + ZoomDlgPreview = 'Vista' + ZoomDlgFontPreview = '10pt Times New Romam' + ZoomDlgFontPreviewString = 'AaBbCcDdEeXxYyZz' + Pages = 'P'#225'ginas' + Cancel = 'Cancelar' + PreferenceDlgCaption = 'Opciones' + PreferenceDlgTab1 = '&General' + PreferenceDlgShow = '&Mostrar' + PreferenceDlgMargins = '&Margenes' + PreferenceDlgMarginsHints = 'A&yudas Margenes' + PreferenceDlgMargingWhileDragging = 'Ayudas Margins con A&rrastre' + PreferenceDlgLargeBtns = 'Botones &Grandes para Barras' + PreferenceDlgFlatBtns = 'Botones &Planos para Barras' + PreferenceDlgMarginsColor = '&Color Margenes:' + PreferenceDlgMeasurementUnits = '&Unidades de Medida:' + PreferenceDlgSaveForRunTimeToo = 'Gua&rdar en Ejecucci'#243'n tambien' + PreferenceDlgZoomScroll = 'Despla&zamiento con IntelliMouse' + PreferenceDlgZoomStep = 'Au&mento:' + CloneStyleCaptionPrefix = 'Copia (%d) de' + InvalideStyleCaption = 'Nombre de estilo "%s" existente. Por favor, introduzca otro.' + PageSetupCaption = 'Configuraci'#243'n de la P'#225'gina' + StyleName = '&Nombre Estilo:' + Page = '&P'#225'gina' + Margins = '&Margenes' + HeaderFooter = '&Cabecera\Pie' + Scaling = '&Escala' + Paper = 'Papel' + PaperType = 'T&ipo' + PaperDimension = 'Dimensi'#243'nes' + PaperWidth = '&Anchura:' + PaperHeight = 'A<ura:' + PaperSource = 'Bande&ja' + Orientation = 'Orientaci'#243'n' + Portrait = 'N&ormal' + Landscape = '&Apaisado' + PrintOrder = 'Orden de Impresi'#243'n' + DownThenOver = '&Abajo, derecha' + OverThenDown = '&Derecha, abajo' + Shading = 'Sombreado' + PrintUsingGrayShading = 'Imprimir usando sombreado &gris' + CenterOnPage = 'Centrar' + Horizontally = 'Hori&zontal' + Vertically = '&Vertical' + Header = 'Cabecera' + BtnHeaderFont = '&Fuente...' + BtnHeaderBackground = '&Fondo' + Footer = 'Pie' + BtnFooterFont = 'Fue&nte...' + BtnFooterBackground = 'F&ondo' + CaptionTop = '&Sup.:' + CaptionLeft = '&Izqu.:' + CaptionRight = '&Derecha:' + CaptionBottom = '&Inferior:' + Header2 = '&Cabec.:' + Footer2 = '&Pie:' + Alignment = 'Alineamiento' + VertAlignment = 'Alineamiento Vertical' + ReverseOnEvenPages = 'Al &rev'#233's en p'#225'ginas pares' + AdjustTo = '&Ajustar a:' + FitTo = 'P'#225'&ginas:' + PercentOfNormalSize = '% tama'#241'o normal' + PagesWideBy = 'p'#225'g(s) de &ancho' + Tall = 'de a<o' + XOfY = 'De' + LastPrinted = #218'ltima Impresi'#243'n' + FileName = 'Fichero' + FileNameAndPath = 'Fichero y camino' + PrintedBy = 'Impreso por' + PrintedOn = 'Impreso el' + CreatedBy = 'Creado por' + CreatedOn = 'Creado el' + Confidential = 'Confidencial' + HFFunctionNameUnknown = 'Desconocido' + HFFunctionNamePageNumber = 'N'#250'm. P'#225'gina' + HFFunctionNameTotalPages = 'P'#225'g. Totales' + HFFunctionNamePageOfPages = 'P'#225'g. # de P'#225'gs. #' + HFFunctionNameDateTime = 'Fecha y Hora' + HFFunctionNameDate = 'Fecha' + HFFunctionNameTime = 'Hora' + HFFunctionNameUserName = 'Nombre Usuario' + HFFunctionNameMachineName = 'Nombre Maquina' + HFFunctionHintPageNumber = 'Page Number' + HFFunctionHintTotalPages = 'Total Pages' + HFFunctionHintPageOfPages = 'Page # of Pages #' + HFFunctionHintDateTime = 'Date and Time Printed' + HFFunctionHintDate = 'Date Printed' + HFFunctionHintTime = 'Time Printed' + HFFunctionHintUserName = 'User Name' + HFFunctionHintMachineName = 'Machine Name' + HFFunctionTemplatePageNumber = 'Page #' + HFFunctionTemplateTotalPages = 'Total Pages' + HFFunctionTemplatePageOfPages = 'Page # of Pages #' + HFFunctionTemplateDateTime = 'Date & Time Printed' + HFFunctionTemplateDate = 'Date Printed' + HFFunctionTemplateTime = 'Time Printed' + HFFunctionTemplateUserName = 'User Name' + HFFunctionTemplateMachineName = 'Machine Name' + January = 'Enero' + February = 'Febrero' + March = 'Marzo' + April = 'Abril' + May = 'Mayo' + June = 'Junio' + July = 'Julio' + August = 'Agosto' + September = 'Septiembre' + October = 'Octubre' + November = 'Noviembre' + December = 'Diciembre' + East = 'Este' + West = 'Oeste' + South = 'Sur' + North = 'Norte' + Total = 'Total' + Plan = 'Plan' + SwimmingPool = 'Swimming-pool' + Administration = 'Administration' + Park = 'Park' + CarParking = 'Car-Parking' + CorporateHeadquarters = 'Corporate' + SalesAndMarketing = 'Sales and' + Engineering = 'Engineering' + FieldOfficeCanada = 'Field Office:' + OrderNoCaption = 'OrderNo' + NameCaption = 'Name' + CountCaption = 'Count' + CompanyCaption = 'Company' + AddressCaption = 'Address' + PriceCaption = 'Price' + CashCaption = 'Cash' + Name1 = 'Jennie Valentine' + Name2 = 'Sam Hill' + Company1 = 'Jennie Inc.' + Company2 = 'Daimler-Chrysler AG' + Address1 = '123 Home Lane' + Address2 = '9333 Holmes Dr.' + CountIs = 'Count is: %d' + Regular = 'Regular' + Irregular = 'Irregular' + TLBand = 'Item Data' + TLColumnName = 'Name' + TLColumnAxisymmetric = 'Axisymmetric' + TLColumnItemShape = 'Shape' + ItemShapeAsText = '(Graphic)' + Item1Name = 'Cone' + Item2Name = 'Cylinder' + Item3Name = 'Pyramid' + Item4Name = 'Box' + Item5Name = 'Free Surface' + Item2Description = 'Axisymmetric geometry figure' + Item3Description = 'Axisymmetric geometry figure' + Item4Description = 'Acute-angled geometry figure' + Item7Description = 'Simple extrusion surface' + PatternIsNotRegistered = 'Pattern "%s" is not registered' + SolidEdgePattern = 'Solid' + ThinSolidEdgePattern = 'Medium Solid' + MediumSolidEdgePattern = 'Medium Solid' + ThickSolidEdgePattern = 'Thick Solid' + DottedEdgePattern = 'Dotted' + DashedEdgePattern = 'Dashed' + DashDotDotEdgePattern = 'Dash Dot Dot' + DashDotEdgePattern = 'Dash Dot' + SlantedDashDotEdgePattern = 'Slanted Dash Dot' + MediumDashDotDotEdgePattern = 'Medium Dash Dot Dot' + HairEdgePattern = 'Hair' + MediumDashDotEdgePattern = 'Medium Dash Dot' + MediumDashedEdgePattern = 'Medium Dashed' + DoubleLineEdgePattern = 'Double Line' + SolidFillPattern = 'Solid' + Gray75FillPattern = '75% Gray' + Gray50FillPattern = '50% Gray' + Gray25FillPattern = '25% Gray' + Gray125FillPattern = '12.5% Gray' + Gray625FillPattern = '6.25% Gray' + HorizontalStripeFillPattern = 'Horizontal Stripe' + VerticalStripeFillPattern = 'Vertical Stripe' + ReverseDiagonalStripeFillPattern = 'Reverse Diagonal Stripe' + DiagonalStripeFillPattern = 'Diagonal Stripe' + DiagonalCrossHatchFillPattern = 'Diagonal Cross Hatch' + ThickCrossHatchFillPattern = 'Thick Cross Hatch' + ThinHorizontalStripeFillPattern = 'Thin Horizontal Stripe' + ThinVerticalStripeFillPattern = 'Thin Vertical Stripe' + ThinReverseDiagonalStripeFillPattern = 'Thin Reverse Diagonal Stripe' + ThinDiagonalStripeFillPattern = 'Thin Diagonal Stripe' + ThinHorizontalCrossHatchFillPattern = 'Thin Horizontal Cross Hatch' + ThinDiagonalCrossHatchFillPattern = 'Thin Diagonal Cross Hatch' + ShowRowAndColumnHeadings = '&Row and column headings' + ShowGridLines = 'GridLines' + SuppressSourceFormats = '&Suppress Source Formats' + RepeatHeaderRowAtTop = 'Repeat header row at top' + DataToPrintDoesnotExist = + 'Can not activate ReportLink because PrintingSystem did not find ' + + 'anything to print.' + JanuaryShort = 'Ene' + FebruaryShort = 'Feb' + MarchShort = 'Mar' + AprilShort = 'Abril' + MayShort = 'Mayo' + JuneShort = 'Jun' + JulyShort = 'Jul' + AugustShort = 'Ago' + SeptemberShort = 'Sept' + OctoberShort = 'Oct' + NovemberShort = 'Nov' + DecemberShort = 'Dic' + TechnicalDepartment = 'Technical Department' + SoftwareDepartment = 'Software Department' + SystemProgrammers = 'System Programmers' + EndUserProgrammers = 'EndUser Programmers' + BetaTesters = 'Beta Testers' + HumanResourceDepartment = 'Human Resource Department' + TreeLines = '&L'#237'neas'#193'rbol' + TreeLinesColor = 'Colore L'#237'neas '#193'rbol:' + ExpandButtons = 'Botones E&xpansi'#243'n' + CheckMarks = 'Cajas Verificaci'#243'n' + TreeEffects = 'Efectos '#193'rbol' + Appearance = 'Apariencia' + CarLevelCaption = 'Coches' + ManufacturerBandCaption = 'Manufacturer Data' + ModelBandCaption = 'Car Data' + ManufacturerNameColumnCaption = 'Name' + ManufacturerLogoColumnCaption = 'Logo' + ManufacturerCountryColumnCaption = 'Country' + CarModelColumnCaption = 'Model' + CarIsSUVColumnCaption = 'SUV' + CarPhotoColumnCaption = 'Photo' + CarManufacturerName1 = 'BMW' + CarManufacturerName2 = 'Ford' + CarManufacturerName3 = 'Audi' + CarManufacturerName4 = 'Land Rover' + CarManufacturerCountry1 = 'Germany' + CarManufacturerCountry2 = 'United States' + CarManufacturerCountry3 = 'Germany' + CarManufacturerCountry4 = 'United Kingdom' + CarModel1 = 'X5 4WD' + CarModel2 = 'Excursion' + CarModel3 = 'S8 Quattro' + CarModel4 = 'G4 Challenge' + True = 'True' + False = 'False' + Auto = 'Auto' + Custom = 'Personal.' + Env = 'Env' + LookAndFeelFlat = 'Plano' + LookAndFeelStandard = 'Estandar' + LookAndFeelUltraFlat = 'UltraPlano' + ViewTab = 'Vista' + BehaviorsTab = 'Comportamiento' + PreviewTab = 'Vista Previa' + CardsTab = 'Fichas' + Formatting = 'Formato' + LookAndFeel = 'Aspecto' + LevelCaption = '&T'#237'tulo' + FilterBar = 'Barra de &Filtro' + Refinements = 'Perfeccionamiento' + ProcessSelection = 'Procesar &Selecci'#243'n' + ProcessExactSelection = 'Procesar Selecci'#243'n E&xacta' + Expanding = 'Despliege' + Groups = '&Grupos' + Details = '&Detalles' + StartFromActiveDetails = 'Empieza desde Detalles Activas' + OnlyActiveDetails = 'S'#243'lo Detalles Activos' + Visible = '&Visible' + PreviewAutoHeight = 'Altura A&utom'#225'tica' + PreviewMaxLineCount = 'L'#237'neas &M'#225'ximas:' + Sizes = 'Tama'#241'os' + KeepSameWidth = 'Manten.Misma Anchura' + KeepSameHeight = 'Manten.Misma Altura' + Framing = 'Marco' + Spacing = 'Espacios' + Shadow = 'Sombra' + Depth = '&Profundidad:' + Position = '&Posici'#243'n' + Positioning = 'Posicionando' + Horizontal = 'H&orizontal:' + Vertical = 'V&ertical:' + SummaryFormat = 'Recuento = 0' + CannotUseOnEveryPageMode = 'Cannot Use OnEveryPage Mode' + IncorrectBandHeadersState = 'Cannot Use BandHeaders OnEveryPage Mode' + IncorrectHeadersState = 'Cannot Use Headers OnEveryPage Mode' + IncorrectFootersState = 'Cannot Use Footers OnEveryPage Mode' + TPicture = 'TPicture' + Copy = '&Copiar' + Save = '&Salvar...' + BaseStyle = 'Estilo Base' + Rectangle = 'Rectangle' + Square = 'Square' + Ellipse = 'Ellipse' + Circle = 'Circle' + RoundRect = 'RoundRect' + RoundSquare = 'RoundSquare' + HorizontalFillPattern = 'Horizontal' + VerticalFillPattern = 'Vertical' + FDiagonalFillPattern = 'FDiagonal' + BDiagonalFillPattern = 'BDiagonal' + CrossFillPattern = 'Cross' + DiagCrossFillPattern = 'DiagCros' + CyclicIDReferences = 'Cyclic ID references %s and %s' + LoadReportDataToFileTitle = 'Cargar Informe' + SaveReportDataToFileTitle = 'Salvar Informe Como' + InvalidExternalStorage = 'Almacenamiento Externo No V'#225'lido' + LinkIsNotIncludedInUsesClause = 'ReportFile contains ReportLink "%0:s"' + InvalidStorageVersion = 'Versi'#243'n de Almacenamiento no V'#225'lido: %d' + PSReportFiles = 'Ficheros de Informes' + ReportFileLoadError = 'No se pudo cargar el informe "%s".' + None = '(Ninguno)' + ReportDocumentIsCorrupted = '(El fichero no es un informe o esta corrupto)' + CloseExplorerHint = 'Cerrar Explorador' + ExplorerCaption = 'Explorador' + ExplorerRootFolderCaption = 'Ra'#237'z' + NewExplorerFolderItem = 'Nueva Carpeta' + CopyOfItem = 'Copia de' + ReportExplorer = 'Explorer de Informes' + DataLoadErrorText = 'No se pudo cargar los datos del informe' + DBBasedExplorerItemDataLoadError = 'No se pudo cargar los datos.' + FileBasedExplorerItemDataLoadError = 'No se pudo cargar los datos.' + DeleteNonEmptyFolderMessageText = 'La carpeta "%s" no est'#225' vacia. A'#250'n as'#237' '#191'desea eliminarlo?' + DeleteFolderMessageText = 'Borrar Carpeta "%s" ?' + DeleteItemMessageText = 'Borrar elemento "%s" ?' + CannotRenameFolderText = + 'Cannot rename folder "%s". A folder with name "%s" already exist' + + 's. Specify a different name.' + CannotRenameItemText = + 'Cannot rename item "%s". An item with name "%s" already exists. ' + + 'Specify a different name.' + OverwriteFolderMessageText = 'This folder "%s" already contains folder named "%s".' + OverwriteItemMessageText = 'This Folder "%s" already contains item named "%s".' + SelectNewRoot = 'Select new Root Directory where the Reports will be stored' + InvalidFolderName = 'Nombre de Carpeta no V'#225'lida "%s"' + InvalidReportName = 'Nombre de Informe no V'#225'lido "%s"' + ExplorerBar = 'Explorador' + MenuFileSave = '&Salvar' + MenuFileSaveAs = 'S&alvar Como...' + MenuFileLoad = '&Cargar' + MenuFileClose = '&Descargar' + HintFileSave = 'Salvar Informe' + HintFileSaveAs = 'Salvar Informe Como' + HintFileLoad = 'Cargar Informe' + HintFileClose = 'Descargar Informe' + MenuExplorer = 'E&xplorador' + MenuExplorerCreateFolder = 'Crear &Carpeta' + MenuExplorerDelete = '&Borrar...' + MenuExplorerRename = 'Reno&mbrar' + MenuExplorerProperties = '&Propiedades...' + MenuExplorerRefresh = 'Refrescar' + MenuExplorerChangeRootPath = 'Cambiar Ra'#237'z...' + MenuExplorerSetAsRoot = 'Establecer Como Ra'#237'z' + MenuExplorerGoToUpOneLevel = 'Subir Un Nivel' + HintExplorerCreateFolder = 'Crear Nueva Carpeta' + HintExplorerDelete = 'Borrar' + HintExplorerRename = 'Renombrar' + HintExplorerProperties = 'Propiedades' + HintExplorerRefresh = 'Refrescar' + HintExplorerChangeRootPath = 'Cambiar Ra'#237'z' + HintExplorerSetAsRoot = 'Establecder Carpeta Actual Como Ra'#237'z' + HintExplorerGoToUpOneLevel = 'Subir Un Nivel' + MenuViewExplorer = 'E&xplorador' + HintViewExplorer = 'Mostar Explorador' + Summary = 'Resumen' + Creator = 'Creado&r:' + CreationDate = 'Crea&do:' + MenuViewThumbnails = 'Miniat&uras' + HintViewThumbnails = 'Mostar Miniaturas' + MenuFormatTitle = 'T&'#237'tulo...' + HintFormatTitle = 'Formatear T'#237'tulo del Informe' + Half = 'Medio' + PredefinedFunctions = 'Funciones Predefinidos' + ZoomParameters = '&Par'#225'metros de Aumento' + WrapData = 'Doblar Datos' + MenuShortcutExplorer = 'Explorador' + ExplorerToolBar = 'Explorador' + MenuThumbnailsSmall = 'Miniaturas &Peque'#241'as' + MenuThumbnailsLarge = 'Miniaturas &Grandes' + MenuShortcutThumbnails = 'Miniaturas' + Buttons = 'Botones' + BtnHeadersFont = 'Fuente &Cabeceras...' + HeadersTransparent = 'Cabeceras Transparentes' + HintListViewDesignerMessage = 'Most Options Are Being Taken Into Account Only In Detailed View' + ColumnHeaders = 'Cabeceras de &Columnas' + ReportGroupNullLookAndFeel = 'Null' + ReportGroupStandardLookAndFeel = 'Standard' + ReportGroupOfficeLookAndFeel = 'Office' + ReportGroupWebLookAndFeel = 'Web' + LayoutGroupDefaultCaption = 'Layout Group' + LayoutItemDefaultCaption = 'Layout Item' + CarManufacturerName5 = 'Volkswagen' + CarManufacturerCountry5 = 'Germany' + CarModel5 = 'Golf GTI' + LuxurySedans = 'Luxury Sedans' + CarManufacturer = 'Manufacturer' + CarModel = 'Model' + CarEngine = 'Engine' + CarTransmission = 'Transmission' + CarTires = 'Tires' + Volvo760V12Manufacturer = 'BMW' + Volvo760V12Model = '760Li V12' + Volvo760V12Engine = + '6.0L DOHC V12 438 HP 48V DI Valvetronic 12-cylinder engine with ' + + '6.0-liter displacement, dual overhead cam valvetrain' + Volvo760V12Transmission = 'Elec 6-Speed Automatic w/Steptronic' + Volvo760V12Tires = + 'P245/45R19 Fr - P275/40R19 Rr Performance. Low Profile tires wit' + + 'h 245mm width, 19.0" rim' + BandHeaderStyle = 'CabeceraGrupo' + CaptionStyle = 'T'#237'tulo' + CardCaptionRowStyle = 'T'#237'tulo Fila Fichas' + CardRowCaptionStyle = 'T'#237'tulo Fila Fichas' + CategoryStyle = 'Categor'#237'a' + ContentStyle = 'Contenido' + ContentEvenStyle = 'Contenido Filas Pares' + ContentOddStyle = 'Contenido Filas Impares' + FilterBarStyle = 'Barra de Filto' + FooterStyle = 'Pie' + FooterRowStyle = 'Pie de Fila' + GroupStyle = 'Grupo' + HeaderStyle = 'Cabecera' + IndentStyle = 'Indentaci'#243'n' + PreviewStyle = 'Vista Previa' + SelectionStyle = 'Selecci'#243'n' + Styles = 'Estilos' + StyleSheets = 'Hojas de Estilos' + BtnTexture = '&Textura...' + BtnTextureClear = 'Elimin&ar' + BtnColor = 'Co&lor...' + BtnSaveAs = 'Salvar &Como...' + BtnRename = '&Renombrar...' + LoadBitmapDlgTitle = 'Cargar Imagen' + DeleteStyleSheet = 'Borrar Hoja de Estilos con Nombre "%s"?' + UnnamedStyleSheet = 'SinNombre' + CreateNewStyleQueryNamePrompt = 'Entre un Nombre de Hoja de Estilo:' + StyleSheetNameAlreadyExists = 'Hoja de Estilo "%s" Ya Existe' + CannotLoadImage = 'No se pudo cargar el imagen "%s"' + UseNativeStyles = '&Usar Estilo Nativo' + SuppressBackgroundBitmaps = '&Suprimir Texturas de Fondo' + ConsumeSelectionStyle = 'Consumir Estilos de Selecci'#243'n' + Size = 'Tama'#241'o' + Levels = 'Niveles' + Unwrap = '&Desdoblar' + UnwrapTopLevel = 'Desdoblar Nivel Superior' + RiseActiveToTop = 'Subir Nivel Activo al Princ'#237'pio' + CannotUseOnEveryPageModeInAggregatedState = 'No se puede usar modo "EnCadaP'#225'gina"' + Pagination = 'Paginaci'#243'n' + ByBands = 'Por Grupos' + ByColumns = 'Por Columnas' + ByRows = 'Por Filas' + ByTopLevelGroups = 'Por Grupos de Primer Nivel' + OneGroupPerPage = 'Un Grupo por P'#225'gina' + Borders = 'Margenes' + ExplicitlyExpandNodes = 'Expandir Expl'#237'citamente los Nodos' + Nodes = '&Nodos' + Separators = 'Separadores' + Thickness = 'Grueso' + TLIncorrectHeadersState = 'No se puede usar el modo EnCadaP'#225'gina' + Rows = '&Filas' + BestFit = 'Ajuste &'#211'ptimo' + KeepSameRecordWidths = '&Mantaner Anchuras Iguales' + WrapRecords = '&Doblar Registros' + ByWrapping = 'Doblando' + OneWrappingPerPage = 'Doblando Uno por P'#225'gina' + PaginateByControlDetails = 'Detalles de Controles' + PaginateByControls = 'Controles' + PaginateByGroups = 'Grupos' + PaginateByItems = 'Elementos' + ControlsPlace = 'Enplazamiento de Controles' + ExpandHeight = 'Expandir Altura' + ExpandWidth = 'Expandir Anchura' + ShrinkHeight = 'Contraer Altura' + ShrinkWidth = 'Contraer Anchura' + CheckAll = 'Check &All' + CheckAllChildren = 'Check All &Children' + ControlsTab = 'Controls' + ExpandAll = 'E&xpand All' + HiddenControlsTab = 'Hidden Controls' + ReportLinksTab = 'Aggregated Designers' + Transparents = 'Transparents' + UncheckAllChildren = 'Uncheck &All Children' + Root = '&Ra'#237'z' + RootBorders = 'Root &Borders' + Controls = '&Controls' + Containers = 'C&ontainers' + HideCustomContainers = '&Hide Custom Containers' + Bytes = 'Bytes' + KiloBytes = 'KB' + MegaBytes = 'MB' + GigaBytes = 'GB' + Left = 184 + Top = 16 + end + object ROMessage: TROBinMessage + Left = 329 + Top = 88 + end + object DABINAdapter: TDABINAdapter + Left = 424 + Top = 24 + end + object JvAppRegistryStorage: TJvAppRegistryStorage + StorageOptions.BooleanStringTrueValues = 'TRUE, YES, Y' + StorageOptions.BooleanStringFalseValues = 'FALSE, NO, N' + Root = 'Software\%APPL_NAME%' + SubStorages = <> + Left = 184 + Top = 80 + end + object RORemoteService: TRORemoteService + ServiceName = 'srvConfiguracion' + Message = ROMessage + Channel = ROChannel + Left = 424 + Top = 92 + end +end diff --git a/Base/uDataModuleBase.pas b/Base/uDataModuleBase.pas new file mode 100644 index 0000000..0e707cf --- /dev/null +++ b/Base/uDataModuleBase.pas @@ -0,0 +1,216 @@ +unit uDataModuleBase; + +interface + +uses + Controls, PngImageList, JvComponent, JvNavigationPane, TBXSwitcher, + TBXOffice2003Theme, Classes, ImgList, uROClient, uROBinMessage, + uROServiceComponent, uRORemoteService, uROWinInetHttpChannel, + DataAbstract_Intf, uDADataTable, uDABINAdapter, cxintl, cxIntlPrintSys3, + FactuGES_Intf, JvAppStorage, JvAppRegistryStorage, SysUtils, + JvComponentBase; + +type + TdmBase = class(TDataModule) + ROChannel: TROWinInetHTTPChannel; + SmallImages: TPngImageList; + StyleManager: TJvNavPaneStyleManager; + TBXSwitcher: TTBXSwitcher; + cxIntl: TcxIntl; + cxIntlPrintSys3: TcxIntlPrintSys3; + ROMessage: TROBinMessage; + DABINAdapter: TDABINAdapter; + JvAppRegistryStorage: TJvAppRegistryStorage; + RORemoteService: TRORemoteService; + procedure DAClientDataModuleCreate(Sender: TObject); + procedure ROChannelFailure(Sender: TROTransportChannel; + anException: Exception; var Retry: Boolean); + procedure ROChannelProgress(iSender: TObject; iType: TProgressType; + iDirection: TProgressDirection; iTransferred, iTotal: Integer); + private + FOnThemeChange: TNotifyEvent; + function GetAdapter: TDABINAdapter; + function GetChannel: TROWinInetHTTPChannel; + function GetCodigoEmpresa: Integer; + function GetMessage: TROBinMessage; + procedure InitStyleManager; + procedure OnTBXThemeChange(Sender: TObject); + procedure LeerConfiguracion; + procedure SalvarConfiguracion; + public + procedure ConfigurarConexion; + property Adapter: TDABINAdapter read GetAdapter; + property Channel: TROWinInetHTTPChannel read GetChannel; + property CodigoEmpresa: Integer read GetCodigoEmpresa; + property Message: TROBinMessage read GetMessage; + property OnThemeChange: TNotifyEvent read FOnThemeChange write + FOnThemeChange; + function darRutaDocumentos: Variant; + function darVersion: String; + end; + +var + dmBase: TdmBase; + +implementation + +{$R *.DFM} + +uses + Dialogs, Variants, TBX, TBXThemes, uConfigurarConexion, WinInet, Forms, Windows, + uVentanaEspera, InfoProject; + +const + SERVER_URL = 'http://localhost:8099/bin'; + IE_OFFLINE_ERROR = 'Unexpected error in WinInet HTTP Channel (2)'; + +{ +*********************************** TdmBase ************************************ +} +procedure TdmBase.ConfigurarConexion; +begin + with TfConfigurarConexion.Create(NIL) do + try + TargetURL := ROChannel.TargetURL; + if ShowModal = mrOk then + begin + ROChannel.TargetURL := TargetURL; + ROChannel.Connected := False; + ROChannel.Connected := True; + SalvarConfiguracion; + end; + finally + Free; + end; +end; + +procedure TdmBase.DAClientDataModuleCreate(Sender: TObject); +begin + TBXSwitcher.OnThemeChange := OnTBXThemeChange; + TBXSetTheme('Office2003'); + + LeerConfiguracion; +end; + +function TdmBase.GetAdapter: TDABINAdapter; +begin + Result := DABinAdapter; +end; + +function TdmBase.GetChannel: TROWinInetHTTPChannel; +begin + Result := ROChannel; +end; + +function TdmBase.GetCodigoEmpresa: Integer; +begin + Result := 1; +end; + +function TdmBase.GetMessage: TROBinMessage; +begin + Result := ROMessage; +end; + +procedure TdmBase.InitStyleManager; +begin + if not USE_THEMES then + begin + TBXSwitcher.EnableXPStyles := False; + StyleManager.Theme := nptStandard; + end + else begin + TBXSwitcher.EnableXPStyles := True; + with StyleManager do + begin + if CurrentTheme is TTBXOffice2003Theme then + begin + case GetOffice2003Scheme of + osBlue : Theme := nptXPBlue; + osMetallic : Theme := nptXPSilver; + osGreen : Theme := nptXPOlive; + else + Theme := nptStandard; + end; + end; + end; + end; +end; + + +procedure TdmBase.LeerConfiguracion; +begin + ROChannel.TargetURL := JvAppRegistryStorage.ReadString('ServerURL', SERVER_URL); +end; + +procedure TdmBase.OnTBXThemeChange(Sender: TObject); +begin + InitStyleManager; + + if Assigned(FOnThemeChange) then + FOnThemeChange(Sender); +end; + +procedure TdmBase.SalvarConfiguracion; +begin + JvAppRegistryStorage.BeginUpdate; + try + JvAppRegistryStorage.WriteString('ServerURL', ROChannel.TargetURL); + finally + JvAppRegistryStorage.EndUpdate; + end; +end; + +procedure TdmBase.ROChannelFailure(Sender: TROTransportChannel; + anException: Exception; var Retry: Boolean); +begin + if (Pos(anException.Message, IE_OFFLINE_ERROR) > 0) then + begin + // Preguntar al usuario si se quiere conectar + if InternetGoOnline(PAnsiChar(ROChannel.TargetURL), GetDesktopWindow(), 0) then + Retry := True // Si el usuario pulsa en 'Conectar' reintentar la operación + else + Abort; // Si el usuario pulsa en 'Seguir desconectado' parar todo + end + else + raise Exception.Create(anException.Message); +end; + +procedure TdmBase.ROChannelProgress(iSender: TObject; iType: TProgressType; + iDirection: TProgressDirection; iTransferred, iTotal: Integer); +begin +{ if iType = ptInProgress then + begin + if not Form1.Visible then + Form1.Show; + end + else + Form1.Hide;} +end; + +function TdmBase.darRutaDocumentos: Variant; +var + Ruta: String; +begin + Ruta := (RORemoteService as IsrvConfiguracion).darRutaDocumentos; + if DirectoryExists(Ruta) + then Result := Ruta + else Result := Null; +end; + +function TdmBase.darVersion: String; +var + InfoProject : TInfoProject; +begin + InfoProject := TInfoProject.Create(Self); + Result := 'v' + InfoProject.FileVersion; + FreeAndNil(InfoProject); +end; + +initialization + dmBase := TdmBase.Create(NIL); + +finalization + dmBase.Free; + +end. diff --git a/Base/uDataTableUtils.pas b/Base/uDataTableUtils.pas new file mode 100644 index 0000000..d4ce4a7 --- /dev/null +++ b/Base/uDataTableUtils.pas @@ -0,0 +1,167 @@ +unit uDataTableUtils; + +interface + +uses + uDACDSDataTable, uDADataTable, uDAInterfaces; + +procedure CloneDataTable(const ASource : TDACDSDataTable; + var ATarget : TDACDSDataTable); overload; + +procedure DeleteAllTable(const ADataTable : TDADataTable); + +function DeltaValuesAreDifferent(const aDelta : IDADelta): boolean; + +implementation + +uses + uDAClasses, SysUtils; + +procedure DeleteAllTable(const ADataTable : TDADataTable); +var + i : Integer; +begin + ADataTable.ClearRows; + { if ADataTable.RecordCount > 0 then + begin + ADataTable.DisableControls; + //ADataTable.DisableEventHandlers; <- No descomentar + try + repeat begin + ADataTable.Last; + ADataTable.Delete; + end + until ADataTable.BOF; + finally + ADataTable.EnableControls; + //ADataTable.EnableEventHandlers; <- No descomentar + end; + end;} +end; + +procedure CloneDataTable(const ASource : TDACDSDataTable; + var ATarget : TDACDSDataTable); +var + i : Integer; +begin + with ATarget do + begin + RemoteService := ASource.GetRemoteService; + Adapter := ASource.GetAdapter; + + BusinessRulesID := ASource.BusinessRulesID; + Randomize; + Name := ASource.Name + '_' + IntToStr(Random(MAXINT)); + LogicalName := ASource.LogicalName; + + Params.AssignParamCollection(ASource.Params); + + with SchemaCall do + begin + MethodName := ASource.SchemaCall.MethodName; + for i := 0 to ASource.SchemaCall.Params.Count - 1 do + begin + with Params.Add do begin + Name := ASource.SchemaCall.Params[i].Name; + ParamType := ASource.SchemaCall.Params[i].ParamType; + DataType := ASource.SchemaCall.Params[i].DataType; + Value := ASource.SchemaCall.Params[i].Value; + UserClassName := ASource.SchemaCall.Params[i].UserClassName; + end; + end; + end; + ATarget.LoadSchema; // o también ATarget.Fields.AssignFieldCollection(ASource.Fields); + + with DataUpdateCall do + begin + MethodName := ASource.DataUpdateCall.MethodName; + for i := 0 to ASource.DataUpdateCall.Params.Count - 1 do + begin + with Params.Add do begin + Name := ASource.DataUpdateCall.Params[i].Name; + ParamType := ASource.DataUpdateCall.Params[i].ParamType; + DataType := ASource.DataUpdateCall.Params[i].DataType; + Value := ASource.DataUpdateCall.Params[i].Value; + UserClassName := ASource.DataUpdateCall.Params[i].UserClassName; + end; + end; + end; + + with ScriptCall do + begin + MethodName := ASource.ScriptCall.MethodName; + for i := 0 to ASource.ScriptCall.Params.Count - 1 do + begin + with Params.Add do begin + Name := ASource.ScriptCall.Params[i].Name; + ParamType := ASource.ScriptCall.Params[i].ParamType; + DataType := ASource.ScriptCall.Params[i].DataType; + Value := ASource.ScriptCall.Params[i].Value; + UserClassName := ASource.ScriptCall.Params[i].UserClassName; + end; + end; + end; + + with DataRequestCall do + begin + MethodName := ASource.DataRequestCall.MethodName; + for i := 0 to ASource.DataRequestCall.Params.Count - 1 do + begin + with Params.Add do begin + begin + Name := ASource.DataRequestCall.Params[i].Name; + ParamType := ASource.DataRequestCall.Params[i].ParamType; + DataType := ASource.DataRequestCall.Params[i].DataType; + Value := ASource.DataRequestCall.Params[i].Value; + UserClassName := ASource.DataRequestCall.Params[i].UserClassName; + end; + end; + end; + end; + + with MasterParamsMappings do + for i := 0 to ASource.MasterParamsMappings.Count - 1 do + Add(ASource.MasterParamsMappings.Strings[i]); + + with MasterRequestMappings do + for i := 0 to ASource.MasterRequestMappings.Count - 1 do + Add(ASource.MasterRequestMappings.Strings[i]); + + MasterMappingMode := ASource.MasterMappingMode; + + MasterFields := ASource.MasterFields; + MasterOptions := ASource.MasterOptions; + + DetailFields := ASource.DetailFields; + DetailOptions := ASource.DetailOptions; + + RemoteUpdatesOptions := ASource.RemoteUpdatesOptions; + StreamingOptions := ASource.StreamingOptions; + RemoteFetchEnabled := ASource.RemoteFetchEnabled; + end; +end; + +function DeltaValuesAreDifferent(const aDelta : IDADelta): boolean; +var + i, x : integer; + OldNewAreDifferent: boolean; +begin + OldNewAreDifferent := FALSE; + for i := 0 to (aDelta.Count-1) do + begin + for x := 0 to (aDelta.LoggedFieldCount-1) do + begin + OldNewAreDifferent := (aDelta.Changes[i].OldValues[x] <> aDelta.Changes[i].NewValues[x]); + + if OldNewAreDifferent then + Break; // Abandon iteration at the first difference between old and new. + end; + + if OldNewAreDifferent then + Break; // Abandon iteration at the first difference between old and new. + end; + result := OldNewAreDifferent; +end; + + +end. diff --git a/Base/uEditorBase.ddp b/Base/uEditorBase.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Base/uEditorBase.ddp differ diff --git a/Base/uEditorBase.dfm b/Base/uEditorBase.dfm new file mode 100644 index 0000000..f958905 --- /dev/null +++ b/Base/uEditorBase.dfm @@ -0,0 +1,1621 @@ +object fEditorBase: TfEditorBase + Left = 482 + Top = 318 + Width = 670 + Height = 512 + Caption = 'EditorBase' + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + KeyPreview = True + OldCreateOrder = False + Position = poDefault + OnCloseQuery = FormCloseQuery + OnShow = FormShow + InstanceID = 0 + ReadOnly = False + PixelsPerInch = 96 + TextHeight = 13 + object JvNavPanelHeader: TJvNavPanelHeader + Left = 0 + Top = 0 + Width = 662 + Align = alTop + Caption = 'Editor' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindow + Font.Height = -16 + Font.Name = 'Arial' + Font.Style = [fsBold] + ParentFont = False + ColorFrom = 8684164 + ColorTo = 8684164 + ImageIndex = 0 + StyleManager = dmBase.StyleManager + ParentStyleManager = False + object Image1: TImage + Left = 635 + Top = 0 + Width = 27 + Height = 27 + Align = alRight + Center = True + Picture.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001800 + 0000180806000000E0773DF80000000970485973000017120000171201679FD2 + 520000000467414D410000AA11B57D14DC000001CC4944415478DA63FCFFFF3F + 032D0123B2058B361EA79A6D71FE968C582D004A906CD8DFBFFF80F83F980601 + 0BDF6C868B7B66E1B6C0752FAA25BB9D8FE3341C59ED5A8B030CF356EF6198BF + 64237E0B4871B9C7016B0659651686F9DB8E30BC8BFEC6B070FD3EC21660F301 + BA18086CB53DC2E07DD88661CFCD1360FEEB882F0C4B361DA0CC07FFFF01C31A + 88FF005D0F62FFFE070CFF3FFFC0BEF9F3EF2FC38A2D8749F7013100E48B4741 + EF18D6EE38469C05306F9302EEFBBF61D8B0FB047116E04B39D80048CF4CD5CD + 0C9BF69D24DE025C4105B31C260F533B4D7913C3D603A768E783890A1B18761D + 3E433B1FF4C9AC63D87BFC1CED7CD02DB986E1C0A90BF82D88F63107E74E727C + D02EBE8AE1C8994BF82D88F03403E74E727CD024BC9CE1E485ABF82D08753361 + F03B66479605F5024B19CE5CBE8EDF8200172386E0130E780D0359BEE4CF5C38 + 3F8625196C410DEF6286F3D76EE2B7C0D7C1005EAE40CAF97FE0B2072C062CF3 + 73EFFB63C40F8C5FC9BD88E1D28D5BF82DF0B2D5C36938882E78148835F888B6 + C0CD5A1BA7E1A012B4E46930CEA023CA0247730DB061FFFE428AE5DF7F11C5F1 + BFFF508BFEFD437104322068819D891AB844A404E0B5A077F27C8A0C87019805 + 00F0E629EF34B079A30000000049454E44AE426082} + Transparent = True + end + end + object TBXDock: TTBXDock + Left = 0 + Top = 27 + Width = 662 + Height = 49 + AllowDrag = False + object tbxMain: TTBXToolbar + Left = 0 + Top = 23 + Caption = 'tbxMain' + ChevronHint = 'M'#225's botones|' + DockMode = dmCannotFloatOrChangeDocks + DockPos = -23 + DockRow = 1 + DragHandleStyle = dhNone + Images = SmallImages + ParentShowHint = False + ShowHint = True + TabOrder = 0 + object TBXItem2: TTBXItem + Action = actNuevo + DisplayMode = nbdmImageAndText + end + object TBXSeparatorItem1: TTBXSeparatorItem + end + object TBXItem29: TTBXItem + Action = actGuardarCerrar + DisplayMode = nbdmImageAndText + end + object TBXItem27: TTBXItem + Action = actGuardar + end + object TBXItem5: TTBXItem + Action = actModificar + DisplayMode = nbdmImageAndText + end + object TBXItem4: TTBXItem + Action = actEliminar + DisplayMode = nbdmImageAndText + end + object TBXSeparatorItem3: TTBXSeparatorItem + end + object TBXItem23: TTBXItem + Action = actPrevisualizar + DisplayMode = nbdmImageAndText + end + object TBXSeparatorItem2: TTBXSeparatorItem + Visible = False + end + object TBXItem24: TTBXItem + Action = actConfPagina + Visible = False + end + object TBXItem3: TTBXItem + Action = actImprimir + DisplayMode = nbdmImageAndText + end + object TBXSeparatorItem10: TTBXSeparatorItem + end + object TBXItem26: TTBXItem + Action = actAnterior + end + object TBXItem25: TTBXItem + Action = actSiguiente + end + object TBXItem6: TTBXItem + Action = actRefrescar + end + object TBXSeparatorItem11: TTBXSeparatorItem + end + object TBXItem28: TTBXItem + Action = actCerrar + end + end + object tbxMenu: TTBXToolbar + Left = 0 + Top = 0 + Caption = 'Menu' + CloseButton = False + DragHandleStyle = dhNone + FullSize = True + Images = SmallImages + MenuBar = True + ProcessShortCuts = True + ShrinkMode = tbsmWrap + TabOrder = 1 + object TBXSubmenuItem4: TTBXSubmenuItem + Caption = '&Archivo' + object TBXItem8: TTBXItem + Action = actNuevo + end + object TBXSeparatorItem5: TTBXSeparatorItem + end + object TBXItem30: TTBXItem + Action = actGuardar + end + object TBXItem10: TTBXItem + Action = actModificar + end + object TBXSeparatorItem12: TTBXSeparatorItem + end + object TBXItem11: TTBXItem + Action = actEliminar + end + object TBXSeparatorItem6: TTBXSeparatorItem + end + object TBXItem21: TTBXItem + Action = actConfPagina + end + object TBXItem22: TTBXItem + Action = actPrevisualizar + end + object TBXItem9: TTBXItem + Action = actImprimir + end + object TBXSeparatorItem4: TTBXSeparatorItem + end + object TBXItem1: TTBXItem + Action = actCerrar + end + end + object TBXSubmenuItem5: TTBXSubmenuItem + Caption = '&Edici'#243'n' + object TBXItem16: TTBXItem + Action = actDeshacer + end + object TBXSeparatorItem8: TTBXSeparatorItem + end + object TBXItem15: TTBXItem + Action = actCortar + end + object TBXItem14: TTBXItem + Action = actCopiar + end + object TBXItem13: TTBXItem + Action = actPegar + end + object TBXSeparatorItem7: TTBXSeparatorItem + end + object TBXItem12: TTBXItem + Action = actLimpiar + end + object TBXSeparatorItem9: TTBXSeparatorItem + end + object TBXItem17: TTBXItem + Action = actSeleccionarTodo + end + end + object TBXSubmenuItem1: TTBXSubmenuItem + Caption = '&Buscar' + object TBXItem32: TTBXItem + Action = actAnterior + end + object TBXItem31: TTBXItem + Action = actSiguiente + end + object TBXSeparatorItem13: TTBXSeparatorItem + end + object TBXItem20: TTBXItem + Action = actBuscar + end + end + object TBXSubmenuItem6: TTBXSubmenuItem + Caption = '&Ver' + object TBXItem18: TTBXItem + Action = actRefrescar + end + end + object TBXSubmenuItem7: TTBXSubmenuItem + Caption = '&Ayuda' + object TBXItem19: TTBXItem + Action = actAcercaDe + end + end + end + end + object StatusBar: TStatusBar + Left = 0 + Top = 459 + Width = 662 + Height = 19 + Panels = < + item + Width = 50 + end> + end + object EditorActionList: TActionList + Images = SmallImages + Left = 16 + Top = 144 + object actNuevo: TAction + Category = 'Archivo' + Caption = 'Nuevo' + ShortCut = 45 + end + object actModificar: TAction + Category = 'Archivo' + Caption = 'Modificar' + ImageIndex = 18 + end + object actGuardarCerrar: TAction + Category = 'Archivo' + Caption = 'G&uardar y cerrar' + ImageIndex = 17 + OnExecute = actGuardarCerrarExecute + end + object actGuardar: TAction + Category = 'Archivo' + Caption = '&Guardar' + ImageIndex = 17 + end + object actEliminar: TAction + Category = 'Archivo' + Caption = 'Eliminar' + ImageIndex = 4 + ShortCut = 16430 + end + object actConfPagina: TAction + Category = 'Archivo' + Caption = '&Configurar p'#225'gina' + ImageIndex = 8 + end + object actPrevisualizar: TAction + Category = 'Archivo' + Caption = '&Previsualizar' + ImageIndex = 6 + end + object actImprimir: TAction + Category = 'Archivo' + Caption = 'Imprimir' + ImageIndex = 7 + ShortCut = 16464 + end + object actDeshacer: TEditUndo + Category = 'Edici'#243'n' + Caption = 'Deshacer' + Hint = 'Undo|Reverts the last action' + ImageIndex = 12 + ShortCut = 16474 + end + object actCortar: TEditCut + Category = 'Edici'#243'n' + Caption = 'Cortar' + Hint = 'Cortar|Corta la selecci'#243'n y la coloca en el portapapeles' + ImageIndex = 3 + ShortCut = 16472 + end + object actCerrar: TAction + Category = 'Archivo' + Caption = 'Cerrar' + OnExecute = actCerrarExecute + end + object actCopiar: TEditCopy + Category = 'Edici'#243'n' + Caption = 'Copiar' + Hint = 'Copiar|Copia la selecci'#243'n y la coloca en el portapapeles' + ImageIndex = 2 + ShortCut = 16451 + end + object actPegar: TEditPaste + Category = 'Edici'#243'n' + Caption = 'Pegar' + Hint = 'Pegar|Inserta el contenido del portapapeles' + ImageIndex = 5 + ShortCut = 16470 + end + object actSeleccionarTodo: TEditSelectAll + Category = 'Edici'#243'n' + Caption = 'Seleccionar todo' + Hint = 'Seleccionar todo' + ImageIndex = 11 + ShortCut = 16449 + end + object actLimpiar: TEditDelete + Category = 'Edici'#243'n' + Caption = '&Limpiar' + Hint = 'Limpiar|Borra el texto seleccionado' + ImageIndex = 1 + ShortCut = 46 + end + object actRefrescar: TAction + Category = 'Ver' + Caption = 'Refrescar' + ImageIndex = 9 + ShortCut = 116 + end + object actAcercaDe: TAction + Category = 'Ayuda' + Caption = 'Acerca de...' + ImageIndex = 0 + end + object actBuscar: TAction + Category = 'Buscar' + Caption = 'Buscar' + ImageIndex = 10 + ShortCut = 114 + end + object actAnterior: TAction + Category = 'Ver' + Caption = 'Anterior' + ImageIndex = 15 + end + object actSiguiente: TAction + Category = 'Ver' + Caption = 'Siguiente' + ImageIndex = 16 + end + object actCancelarCambios: TAction + Category = 'Archivo' + Caption = 'Cancelar cambios' + end + end + object 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> + PngOptions = [pngBlendOnDisabled, pngGrayscaleOnDisabled] + Left = 395 + Top = 80 + Bitmap = {} + end + object LargeImages: TPngImageList + Height = 24 + Width = 24 + 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> + PngOptions = [pngBlendOnDisabled, pngGrayscaleOnDisabled] + Left = 427 + Top = 80 + Bitmap = {} + end + object JvFormStorage: TJvFormStorage + AppStorage = JvAppRegistryStorage + AppStoragePath = 'fEditorBase\' + VersionCheck = fpvcNocheck + StoredValues = <> + Left = 392 + Top = 120 + end + object JvAppRegistryStorage: TJvAppRegistryStorage + StorageOptions.BooleanStringTrueValues = 'TRUE, YES, Y' + StorageOptions.BooleanStringFalseValues = 'FALSE, NO, N' + Root = 'Software\%APPL_NAME%' + SubStorages = <> + Left = 424 + Top = 120 + end +end diff --git a/Base/uEditorBase.pas b/Base/uEditorBase.pas new file mode 100644 index 0000000..7b15686 --- /dev/null +++ b/Base/uEditorBase.pas @@ -0,0 +1,198 @@ +unit uEditorBase; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uGUIBase, uCustomEditor, ToolWin, ComCtrls, JvExControls, + JvComponent, JvNavigationPane, ActnList, TB2Dock, TB2Toolbar, TBX, + TB2Item, ImgList, PngImageList, StdActns, JvFormAutoSize, AppEvnts, + uCustomView, uViewBase, uViewMensaje, JvAppStorage, JvAppRegistryStorage, + JvFormPlacement, pngimage, ExtCtrls, JvComponentBase; + +type + IEditorBase = interface(ICustomEditor) + ['{CB8CDE00-B225-4A1D-9A5C-EC6FBE2C854B}'] + function ShowModal : Integer; + end; + + TfEditorBase = class(TCustomEditor, IEditorBase) + actAcercaDe: TAction; + actAnterior: TAction; + actBuscar: TAction; + actCancelarCambios: TAction; + actCerrar: TAction; + actConfPagina: TAction; + actCopiar: TEditCopy; + actCortar: TEditCut; + actDeshacer: TEditUndo; + actEliminar: TAction; + actGuardar: TAction; + actGuardarCerrar: TAction; + actImprimir: TAction; + actLimpiar: TEditDelete; + actModificar: TAction; + actNuevo: TAction; + actPegar: TEditPaste; + actPrevisualizar: TAction; + actRefrescar: TAction; + actSeleccionarTodo: TEditSelectAll; + actSiguiente: TAction; + EditorActionList: TActionList; + JvNavPanelHeader: TJvNavPanelHeader; + LargeImages: TPngImageList; + SmallImages: TPngImageList; + TBXDock: TTBXDock; + TBXItem1: TTBXItem; + TBXItem10: TTBXItem; + TBXItem11: TTBXItem; + TBXItem12: TTBXItem; + TBXItem13: TTBXItem; + TBXItem14: TTBXItem; + TBXItem15: TTBXItem; + TBXItem16: TTBXItem; + TBXItem17: TTBXItem; + TBXItem18: TTBXItem; + TBXItem19: TTBXItem; + TBXItem2: TTBXItem; + TBXItem20: TTBXItem; + TBXItem21: TTBXItem; + TBXItem22: TTBXItem; + TBXItem23: TTBXItem; + TBXItem24: TTBXItem; + TBXItem25: TTBXItem; + TBXItem26: TTBXItem; + TBXItem27: TTBXItem; + TBXItem28: TTBXItem; + TBXItem29: TTBXItem; + TBXItem3: TTBXItem; + TBXItem30: TTBXItem; + TBXItem31: TTBXItem; + TBXItem32: TTBXItem; + TBXItem4: TTBXItem; + TBXItem5: TTBXItem; + TBXItem6: TTBXItem; + TBXItem8: TTBXItem; + TBXItem9: TTBXItem; + tbxMain: TTBXToolbar; + tbxMenu: TTBXToolbar; + TBXSeparatorItem1: TTBXSeparatorItem; + TBXSeparatorItem10: TTBXSeparatorItem; + TBXSeparatorItem11: TTBXSeparatorItem; + TBXSeparatorItem12: TTBXSeparatorItem; + TBXSeparatorItem13: TTBXSeparatorItem; + TBXSeparatorItem2: TTBXSeparatorItem; + TBXSeparatorItem3: TTBXSeparatorItem; + TBXSeparatorItem4: TTBXSeparatorItem; + TBXSeparatorItem5: TTBXSeparatorItem; + TBXSeparatorItem6: TTBXSeparatorItem; + TBXSeparatorItem7: TTBXSeparatorItem; + TBXSeparatorItem8: TTBXSeparatorItem; + TBXSeparatorItem9: TTBXSeparatorItem; + TBXSubmenuItem1: TTBXSubmenuItem; + TBXSubmenuItem4: TTBXSubmenuItem; + TBXSubmenuItem5: TTBXSubmenuItem; + TBXSubmenuItem6: TTBXSubmenuItem; + TBXSubmenuItem7: TTBXSubmenuItem; + StatusBar: TStatusBar; + JvFormStorage: TJvFormStorage; + JvAppRegistryStorage: TJvAppRegistryStorage; + Image1: TImage; + procedure actCerrarExecute(Sender: TObject); + procedure actGuardarCerrarExecute(Sender: TObject); + procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); + protected + function ModifiedQuery : Boolean; + public + constructor Create(AOwner: TComponent); override; + published + procedure FormShow(Sender: TObject); virtual; + end; + + TfEditorBaseClass = class of TfEditorBase; + +implementation + +{$R *.dfm} + +uses + Menus, uDataModuleBase; + +{ +********************************* TfEditorBase ********************************* +} +procedure TfEditorBase.actCerrarExecute(Sender: TObject); +begin + Close; +end; + +procedure TfEditorBase.actGuardarCerrarExecute(Sender: TObject); +var + ACursor: TCursor; +begin + ACursor := Screen.Cursor; + Screen.Cursor := crHourGlass; + Application.ProcessMessages; + try + if actGuardar.Execute then + actCerrar.Execute; + finally + Screen.Cursor := ACursor; + end; +end; + +constructor TfEditorBase.Create(AOwner: TComponent); +begin + inherited; + JvFormStorage.AppStoragePath := Name; + JvNavPanelHeader.StyleManager := dmBase.StyleManager; +end; + +procedure TfEditorBase.FormCloseQuery(Sender: TObject; var CanClose: Boolean); +begin + if Valid then + CanClose := ModifiedQuery + else + CanClose := False; +end; + +procedure TfEditorBase.FormShow(Sender: TObject); +begin + if Assigned(Parent) then + begin + StatusBar.Visible := False; + actCerrar.ShortCut := 0 + end + else begin + StatusBar.Visible := True; + actCerrar.ShortCut := ShortCut(VK_ESCAPE, []); + end; +end; + +function TfEditorBase.ModifiedQuery: Boolean; +var + Respuesta: Integer; +begin + Result := True; + if Modified then + begin + Respuesta := Application.MessageBox('Se han producido cambios.' + #10#13 + + '¿Desea guardarlos antes de salir?', 'Atención', MB_YESNOCANCEL); + case Respuesta of + IDYES : actGuardar.Execute; + IDNO : actCancelarCambios.Execute; + else + Result := False; + end; + end +{ else + actCancelarCambios.Execute;} +end; + +initialization + RegisterClass(TfEditorBase); + +finalization + UnRegisterClass(TfEditorBase); + +end. diff --git a/Base/uEditorDBBase.ddp b/Base/uEditorDBBase.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Base/uEditorDBBase.ddp differ diff --git a/Base/uEditorDBBase.dfm b/Base/uEditorDBBase.dfm new file mode 100644 index 0000000..7422010 --- /dev/null +++ b/Base/uEditorDBBase.dfm @@ -0,0 +1,48 @@ +inherited fEditorDBBase: TfEditorDBBase + Left = 310 + Caption = 'fEditorDBBase' + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + inherited Image1: TImage + Picture.Data = {00} + end + end + inherited EditorActionList: TActionList + inherited actModificar: TAction + OnUpdate = actModificarUpdate + end + inherited actGuardar: TAction + OnExecute = actGuardarExecute + end + inherited actEliminar: TAction + OnExecute = actEliminarExecute + OnUpdate = actEliminarUpdate + end + inherited actPrevisualizar: TAction + OnUpdate = actPrevisualizarUpdate + end + inherited actImprimir: TAction + OnUpdate = actImprimirUpdate + end + inherited actRefrescar: TAction + OnExecute = actRefrescarExecute + OnUpdate = actRefrescarUpdate + end + inherited actAnterior: TAction + OnExecute = actAnteriorExecute + OnUpdate = actAnteriorUpdate + end + inherited actSiguiente: TAction + OnExecute = actSiguienteExecute + OnUpdate = actSiguienteUpdate + end + inherited actCancelarCambios: TAction + OnExecute = actCancelarCambiosExecute + end + end + object dsDataTable: TDADataSource + Left = 40 + Top = 88 + end +end diff --git a/Base/uEditorDBBase.pas b/Base/uEditorDBBase.pas new file mode 100644 index 0000000..15890e9 --- /dev/null +++ b/Base/uEditorDBBase.pas @@ -0,0 +1,334 @@ +unit uEditorDBBase; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uEditorItem, ImgList, PngImageList, StdActns, ActnList, TBX, + TB2Item, TB2Dock, TB2Toolbar, ComCtrls, JvExControls, JvComponent, + JvNavigationPane, DB, uDADataTable, uEditorBase, JvFormAutoSize, + uDAScriptingProvider, uDACDSDataTable, AppEvnts, uCustomView, uViewBase, + uViewMensaje, JvAppStorage, JvAppRegistryStorage, JvFormPlacement, + pngimage, ExtCtrls, JvComponentBase, dxLayoutLookAndFeels; + +type + IEditorDBBase = interface(IEditorBase) + ['{497AE4CE-D061-4F75-A29A-320F8565FF54}'] + end; + + TfEditorDBBase = class(TfEditorBase, IEditorDBBase) + dsDataTable: TDADataSource; + procedure actRefrescarExecute(Sender: TObject); + procedure actAnteriorExecute(Sender: TObject); + procedure actSiguienteExecute(Sender: TObject); + procedure actAnteriorUpdate(Sender: TObject); + procedure actSiguienteUpdate(Sender: TObject); + procedure actRefrescarUpdate(Sender: TObject); + procedure actCancelarCambiosExecute(Sender: TObject); + procedure actGuardarExecute(Sender: TObject); + procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); virtual; + procedure actEliminarExecute(Sender: TObject); + procedure actEliminarUpdate(Sender: TObject); + procedure actModificarUpdate(Sender: TObject); + procedure actPrevisualizarUpdate(Sender: TObject); + procedure actImprimirUpdate(Sender: TObject); + private + { Private declarations } + protected + function GetModified: Boolean; override; + published + end; + +var + fEditorDBBase: TfEditorDBBase; + +implementation + +uses uExceptions, uDataTableUtils, uBizInformesBase, + uDAInterfaces, uBizImportesDetalleBase; + +{$R *.dfm} + +procedure TfEditorDBBase.actRefrescarExecute(Sender: TObject); +var + ACursor: TCursor; + ABookmark : TBookmark; +begin + inherited; + if Assigned(dsDataTable.DataTable) then + begin + if (dsDataTable.DataTable.IsEmpty) or (not ModifiedQuery) then + Exit; // No continuar con el refresco + + ABookmark := dsDataTable.DataTable.GetBookMark; +// dsDataTable.DataTable.DisableControls; <- No descomentar + + ACursor := Screen.Cursor; + Screen.Cursor := crHourGlass; + try + dsDataTable.DataTable.Refresh; + + if dsDataTable.DataTable.Dataset.BookmarkValid(ABookmark) then + dsDataTable.DataTable.GotoBookmark(ABookmark); + finally + dsDataTable.DataTable.FreeBookmark(ABookmark); +// dsDataTable.DataTable.EnableControls; <- No descomentar + Screen.Cursor := ACursor; + end; + end; +end; + +procedure TfEditorDBBase.actAnteriorExecute(Sender: TObject); +begin + inherited; + if Assigned(dsDataTable.DataTable) then + begin + if (not ModifiedQuery) then + Exit; + + dsDataTable.DataTable.Prior; + end; +end; + +procedure TfEditorDBBase.actSiguienteExecute(Sender: TObject); +begin + inherited; + if Assigned(dsDataTable.DataTable) then + begin + if (not ModifiedQuery) then + Exit; + + dsDataTable.DataTable.Next; + end; +end; + +procedure TfEditorDBBase.actAnteriorUpdate(Sender: TObject); +begin + inherited; + if Assigned(dsDataTable.DataTable) then + (Sender as TAction).Enabled := not dsDataTable.DataTable.BOF + else + (Sender as TAction).Enabled := False; +end; + +procedure TfEditorDBBase.actSiguienteUpdate(Sender: TObject); +begin + inherited; + if Assigned(dsDataTable.DataTable) then + (Sender as TAction).Enabled := not dsDataTable.DataTable.EOF + else + (Sender as TAction).Enabled := False; +end; + +procedure TfEditorDBBase.actRefrescarUpdate(Sender: TObject); +begin + inherited; + if Assigned(dsDataTable.DataTable) and + (not (dsDataTable.DataTable.State = dsInsert)) then + (Sender as TAction).Enabled := not (dsDataTable.DataTable.Fetching or + dsDataTable.DataTable.Opening or + dsDataTable.DataTable.Closing) + else + (Sender as TAction).Enabled := False; +end; + +procedure TfEditorDBBase.actCancelarCambiosExecute(Sender: TObject); +var + dtDetails : TList; + i : integer; + ABookmark : TBookmark; + ACursor : TCursor; + AParche : IParche; +begin + inherited; + + AParche := NIL; + + if Assigned(dsDataTable.DataTable) then + begin + ABookmark := dsDataTable.DataTable.GetBookMark; + dsDataTable.DataTable.DisableControls; +// dsDataTable.DataTable.DisableEventHandlers; <- No descomentar + + ACursor := Screen.Cursor; + Screen.Cursor := crHourGlass; + + { No lo pongo en try..finally para ver posibles errores } + //try + dsDataTable.DataTable.Cancel; + + dtDetails := dsDataTable.DataTable.GetDetailDataTables; + for i := 0 to dtDetails.Count - 1 do + begin + (TDADataTable(dtDetails.Items[i])).Cancel; + + { PARCHE ********************************** + OJO: Está pensado para que sólo una de las tablas detalle + soporte el interfaz de IParche } + if not Assigned(AParche) and + Supports((TDADataTable(dtDetails.Items[i])), IParche, AParche) then + AParche.DesactivarEventos; + end; + + dsDataTable.DataTable.CancelUpdates; + + { Comprobar si el bookmark no es válido cuando estamos cancelando la + inserción de una fila nueva. + CUIDADO!! Si no es válido salta una excepción. NO devuelve false!!!} + try + if (Assigned(ABookmark)) and + (dsDataTable.DataTable.Dataset.BookmarkValid(ABookmark)) then + dsDataTable.DataTable.GotoBookmark(ABookmark); + except + end; + + { PARCHE ********************************** } + if Assigned(AParche) then + begin + AParche.ActivarEventos; + AParche.Refrescar; + AParche := NIL; + end; + + //finally + dsDataTable.DataTable.EnableControls; + dsDataTable.DataTable.FreeBookmark(ABookmark); +// dsDataTable.DataTable.EnableEventHandlers; <- No descomentar + Screen.Cursor := ACursor; + //end; + end; +end; + +procedure TfEditorDBBase.actGuardarExecute(Sender: TObject); +var + dtDetails : TList; + i : integer; +begin + inherited; + if Assigned(dsDataTable.DataTable) then + begin + if dsDataTable.DataTable.Editing then + dsDataTable.DataTable.Post; + + dtDetails := dsDataTable.DataTable.GetDetailDataTables; + for i := 0 to dtDetails.Count - 1 do + if (TDADataTable(dtDetails.Items[i])).Editing then + (TDADataTable(dtDetails.Items[i])).Post; + + dsDataTable.DataTable.ApplyUpdates; + Modified := False; + end; +end; + +function TfEditorDBBase.GetModified: Boolean; +var + dtDetails : TList; + i : integer; + bCambiado : Boolean; +begin + bCambiado := False; + if Assigned(dsDataTable.DataTable) then + begin + bCambiado := (dsDataTable.DataTable.State = dsEdit) or + DeltaValuesAreDifferent(dsDataTable.DataTable.Delta); + + if (not bCambiado) then + begin + dtDetails := dsDataTable.DataTable.GetDetailDataTables; + for i := 0 to dtDetails.Count - 1 do + begin + bCambiado := bCambiado or + ((TDADataTable(dtDetails.Items[i])).State = dsEdit) or + DeltaValuesAreDifferent((TDADataTable(dtDetails.Items[i])).Delta); + if bCambiado then + Break; + end; + end; + end; + + if (not bCambiado) then + bCambiado := inherited GetModified; + + Result := bCambiado; +end; + +procedure TfEditorDBBase.FormCloseQuery(Sender: TObject; var CanClose: Boolean); +begin + { Para resetear el estado de la tabla en el caso de hacer un insert + sin meter ningún dato. } + if Assigned(dsDataTable.DataTable) and (not Modified) then + dsDataTable.DataTable.Cancel; + inherited; +end; + +procedure TfEditorDBBase.actEliminarExecute(Sender: TObject); +var + aObj : IApplyUpdateFailedException; + ACursor: TCursor; +begin + inherited; + ACursor := Screen.Cursor; + Screen.Cursor := crHourGlass; + try + if dsDataTable.DataTable.State in dsEditModes then + dsDataTable.DataTable.Cancel; + dsDataTable.DataTable.Delete; + try + dsDataTable.DataTable.ApplyUpdates; + Modified := False; + except + on E: EDAApplyUpdateFailed do + begin + dsDataTable.DataTable.CancelUpdates; + actRefrescar.Execute; + if Supports(dsDataTable.DataTable, IApplyUpdateFailedException, aObj) then + aObj.ShowApplyUpdateFailed(E); + end + else + raise; // Generic exception + end; + finally + Screen.Cursor := ACursor; + end; +end; + +procedure TfEditorDBBase.actEliminarUpdate(Sender: TObject); +begin + inherited; + if Assigned(dsDataTable.DataTable) then + (Sender as TAction).Enabled := (not dsDataTable.DataTable.IsEmpty) + and not (dsDataTable.DataTable.State = dsInsert) + else + (Sender as TAction).Enabled := False; +end; + +procedure TfEditorDBBase.actModificarUpdate(Sender: TObject); +begin + inherited; + if Assigned(dsDataTable.DataTable) then + (Sender as TAction).Enabled := (not dsDataTable.DataTable.IsEmpty) + else + (Sender as TAction).Enabled := False; +end; + +procedure TfEditorDBBase.actPrevisualizarUpdate(Sender: TObject); +begin + inherited; + if Assigned(dsDataTable.DataTable) then + (Sender as TAction).Enabled := (not dsDataTable.DataTable.IsEmpty) + and not (dsDataTable.DataTable.State = dsInsert) + else + (Sender as TAction).Enabled := False; +end; + +procedure TfEditorDBBase.actImprimirUpdate(Sender: TObject); +begin + inherited; + if Assigned(dsDataTable.DataTable) then + (Sender as TAction).Enabled := (not dsDataTable.DataTable.IsEmpty) + and not (dsDataTable.DataTable.State = dsInsert) + else + (Sender as TAction).Enabled := False; +end; + +end. diff --git a/Base/uEditorDBItem.ddp b/Base/uEditorDBItem.ddp new file mode 100644 index 0000000..44d54ac Binary files /dev/null and b/Base/uEditorDBItem.ddp differ diff --git a/Base/uEditorDBItem.dfm b/Base/uEditorDBItem.dfm new file mode 100644 index 0000000..9d34b8f --- /dev/null +++ b/Base/uEditorDBItem.dfm @@ -0,0 +1,50 @@ +inherited fEditorDBItem: TfEditorDBItem + Left = 482 + Top = 315 + Caption = 'fEditorDBItem' + PixelsPerInch = 96 + TextHeight = 13 + inherited TBXDock: TTBXDock + inherited tbxMain: TTBXToolbar + inherited TBXItem26: TTBXItem + Visible = False + end + inherited TBXItem25: TTBXItem + Visible = False + end + end + inherited tbxMenu: TTBXToolbar + inherited TBXSubmenuItem1: TTBXSubmenuItem + Visible = False + end + end + end + object pgPaginas: TPageControl [2] + Left = 0 + Top = 76 + Width = 662 + Height = 383 + ActivePage = pagGeneral + Align = alClient + TabOrder = 2 + object pagGeneral: TTabSheet + Caption = 'General' + end + end + inherited EditorActionList: TActionList + Top = 112 + inherited actEliminar: TAction + ShortCut = 0 + end + inherited actPrevisualizar: TAction + OnExecute = actPrevisualizarExecute + end + inherited actImprimir: TAction + OnExecute = actImprimirExecute + end + end + inherited dsDataTable: TDADataSource + Left = 48 + Top = 112 + end +end diff --git a/Base/uEditorDBItem.pas b/Base/uEditorDBItem.pas new file mode 100644 index 0000000..750ab85 --- /dev/null +++ b/Base/uEditorDBItem.pas @@ -0,0 +1,90 @@ +unit uEditorDBItem; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uEditorItem, ImgList, PngImageList, StdActns, ActnList, TBX, + TB2Item, TB2Dock, TB2Toolbar, ComCtrls, JvExControls, JvComponent, + JvNavigationPane, DB, uDADataTable, uEditorDBBase, JvFormAutoSize, + StdCtrls, uDAScriptingProvider, uDACDSDataTable, AppEvnts, uCustomView, + uViewBase, uViewMensaje, JvAppStorage, JvAppRegistryStorage, + JvFormPlacement, pngimage, ExtCtrls, JvComponentBase; + +type + IEditorDBItem = interface(IEditorDBBase) + ['{497AE4CE-D061-4F75-A29A-320F8565FF54}'] + end; + + TfEditorDBItem = class(TfEditorDBBase, IEditorDBItem) + pgPaginas: TPageControl; + pagGeneral: TTabSheet; + procedure actEliminarExecute(Sender: TObject); + procedure actPrevisualizarExecute(Sender: TObject); + procedure actImprimirExecute(Sender: TObject); + private + { Private declarations } + public + { Public declarations } + end; + +var + fEditorDBItem: TfEditorDBItem; + +implementation + +uses uBizInformesBase; + +{$R *.dfm} + +procedure TfEditorDBItem.actEliminarExecute(Sender: TObject); +begin + inherited; + actCerrar.Execute; +end; + +procedure TfEditorDBItem.actPrevisualizarExecute(Sender: TObject); +var + Respuesta: Integer; + aInf : IBizInformesAware; +begin + inherited; + if Modified then + begin + if (Application.MessageBox('Se han producido cambios y no se puede previsualizar hasta que no se guarden.' + #10#13 + + '¿Desea guardarlos ahora?', 'Atención', MB_YESNO) = IDYES) then + actGuardar.Execute + else begin + Application.MessageBox('Recuerde guardar los cambios si quiere previsualizar o imprimir.', 'FactuGES', MB_OK); + Exit; + end; + end; + + if Assigned(dsDataTable.DataTable) and + Supports(dsDataTable.DataTable, IBizInformesAware, aInf) then + aInf.Preview; +end; + +procedure TfEditorDBItem.actImprimirExecute(Sender: TObject); +var + Respuesta: Integer; + aInf : IBizInformesAware; +begin + inherited; + if Modified then + begin + if (Application.MessageBox('Se han producido cambios y no se puede imprimir hasta que no se guarden.' + #10#13 + + '¿Desea guardarlos ahora?', 'Atención', MB_YESNO) = IDYES) then + actGuardar.Execute + else begin + Application.MessageBox('Recuerde guardar los cambios si quiere previsualizar o imprimir.', 'FactuGES', MB_OK); + Exit; + end; + end; + + if Assigned(dsDataTable.DataTable) and + Supports(dsDataTable.DataTable, IBizInformesAware, aInf) then + aInf.Print; +end; + +end. diff --git a/Base/uEditorGrid.ddp b/Base/uEditorGrid.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Base/uEditorGrid.ddp differ diff --git a/Base/uEditorGrid.dfm b/Base/uEditorGrid.dfm new file mode 100644 index 0000000..af9861f --- /dev/null +++ b/Base/uEditorGrid.dfm @@ -0,0 +1,1460 @@ +inherited fEditorGrid: TfEditorGrid + Left = 208 + Top = 182 + Width = 893 + Height = 485 + Caption = 'fEditorGrid' + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + Width = 885 + inherited Image1: TImage + Left = 858 + end + end + inherited TBXDock: TTBXDock + Width = 885 + inherited tbxMain: TTBXToolbar + DefaultDock = TBXDock + inherited TBXItem29: TTBXItem + Visible = False + end + inherited TBXItem27: TTBXItem + Visible = False + end + object TBXSeparatorItem14: TTBXSeparatorItem [6] + end + object TBXItem33: TTBXItem [7] + Action = actDuplicar + DisplayMode = nbdmImageAndText + end + inherited TBXItem26: TTBXItem + Visible = False + end + inherited TBXItem25: TTBXItem + Visible = False + end + object TBXItem35: TTBXItem [17] + Action = actAnchoAuto + end + inherited TBXItem28: TTBXItem + Visible = False + end + end + inherited tbxMenu: TTBXToolbar + Visible = False + inherited TBXSubmenuItem4: TTBXSubmenuItem + object TBXItem34: TTBXItem [7] + Action = actDuplicar + end + object TBXSeparatorItem15: TTBXSeparatorItem [8] + end + end + end + object tbxFiltro: TTBXToolbar + Left = 465 + Top = 23 + Align = alRight + CloseButton = False + DefaultDock = TBXDock + DockMode = dmCannotFloatOrChangeDocks + DockPos = 392 + DockRow = 1 + DragHandleStyle = dhNone + Images = SmallImages + ParentShowHint = False + Resizable = False + ShowHint = True + ShrinkMode = tbsmNone + TabOrder = 2 + object TBXLabelItem1: TTBXLabelItem + Caption = 'Filtrar:' + end + object tbxEditFiltro: TTBXEditItem + EditWidth = 150 + ImageIndex = 10 + EditorFontSettings.Italic = tsTrue + ExtendedAccept = True + Images = SmallImages + ShowImage = True + OnChange = tbxEditFiltroChange + end + object TBXItem7: TTBXItem + Action = actQuitarFiltro + Images = SmallImages + end + object TBXItem37: TTBXItem + Action = actFiltrar + DisplayMode = nbdmImageAndText + end + end + end + inherited StatusBar: TStatusBar + Top = 432 + Width = 885 + end + inherited EditorActionList: TActionList + Left = 72 + Top = 120 + inherited actModificar: TAction + OnExecute = actModificarExecute + end + inherited actGuardarCerrar: TAction + Enabled = False + end + inherited actGuardar: TAction + Enabled = False + end + inherited actConfPagina: TAction + OnExecute = actConfPaginaExecute + end + inherited actPrevisualizar: TAction + OnExecute = actPrevisualizarExecute + end + inherited actImprimir: TAction + OnExecute = actImprimirExecute + end + inherited actCerrar: TAction + Enabled = False + end + inherited actAnterior: TAction + Enabled = False + end + inherited actSiguiente: TAction + Enabled = False + end + inherited actCancelarCambios: TAction + Enabled = False + end + object actQuitarFiltro: TAction + Category = 'Buscar' + Caption = 'Quitar filtro y ver todo' + ImageIndex = 19 + OnExecute = actQuitarFiltroExecute + end + object actDuplicar: TAction + Category = 'Archivo' + Caption = 'Duplicar' + ImageIndex = 20 + OnExecute = actDuplicarExecute + OnUpdate = actDuplicarUpdate + end + object actAnchoAuto: TAction + Category = 'Ver' + Caption = 'actAnchoAuto' + ImageIndex = 21 + OnExecute = actAnchoAutoExecute + end + object actFiltrar: TAction + Category = 'Buscar' + Caption = 'Filtrar m'#225's ...' + ImageIndex = 10 + OnExecute = actFiltrarExecute + OnUpdate = actFiltrarUpdate + 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> + 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> + Bitmap = {} + end + inherited JvFormStorage: TJvFormStorage + OnSavePlacement = JvFormStorageSavePlacement + OnRestorePlacement = JvFormStorageRestorePlacement + end + object GridPopupMenu: TPopupMenu + Images = SmallImages + Left = 72 + Top = 88 + object Modificar1: TMenuItem + Action = actModificar + end + object Duplicar1: TMenuItem + Action = actDuplicar + end + object Eliminar1: TMenuItem + Action = actEliminar + end + object N1: TMenuItem + Caption = '-' + end + object Nuevo1: TMenuItem + Action = actNuevo + end + object N2: TMenuItem + Caption = '-' + end + object Previsualizar1: TMenuItem + Action = actPrevisualizar + end + object Imprimir1: TMenuItem + Action = actImprimir + end + end +end diff --git a/Base/uEditorGrid.pas b/Base/uEditorGrid.pas new file mode 100644 index 0000000..560fa21 --- /dev/null +++ b/Base/uEditorGrid.pas @@ -0,0 +1,249 @@ +unit uEditorGrid; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uEditorBase, ToolWin, ComCtrls, JvExControls, JvComponent, + JvNavigationPane, ActnList, TB2Dock, TB2Toolbar, TBX, TB2Item, + ImgList, PngImageList, StdActns, TB2ExtItems, TBXExtItems, uViewGrid, + uEditorDBBase, DB, uDADataTable, Menus, JvFormAutoSize, + uDAScriptingProvider, uDACDSDataTable, AppEvnts, JvAppStorage, + JvAppRegistryStorage, JvFormPlacement, pngimage, ExtCtrls, + JvComponentBase; + +type + IEditorGrid = interface(IEditorDBBase) + ['{CB8CDE00-B225-4A1D-9A5C-EC6FBE2C854B}'] + end; + + TfEditorGrid = class(TfEditorDBBase, IEditorGrid) + tbxEditFiltro: TTBXEditItem; + tbxFiltro: TTBXToolbar; + TBXItem7: TTBXItem; + GridPopupMenu: TPopupMenu; + Modificar1: TMenuItem; + Eliminar1: TMenuItem; + N1: TMenuItem; + Nuevo1: TMenuItem; + TBXLabelItem1: TTBXLabelItem; + actQuitarFiltro: TAction; + N2: TMenuItem; + Previsualizar1: TMenuItem; + Imprimir1: TMenuItem; + TBXSeparatorItem14: TTBXSeparatorItem; + TBXItem33: TTBXItem; + actDuplicar: TAction; + TBXSeparatorItem15: TTBXSeparatorItem; + TBXItem34: TTBXItem; + Duplicar1: TMenuItem; + actAnchoAuto: TAction; + TBXItem35: TTBXItem; + actFiltrar: TAction; + TBXItem37: TTBXItem; + procedure tbxEditFiltroChange(Sender: TObject; const Text: String); + procedure FormShow(Sender: TObject); + procedure actPrevisualizarExecute(Sender: TObject); + procedure actConfPaginaExecute(Sender: TObject); + procedure actImprimirExecute(Sender: TObject); + procedure actQuitarFiltroExecute(Sender: TObject); + procedure actModificarExecute(Sender: TObject); + procedure actEliminarExecute(Sender: TObject); + procedure actDuplicarUpdate(Sender: TObject); + procedure actDuplicarExecute(Sender: TObject); + procedure JvFormStorageSavePlacement(Sender: TObject); + procedure JvFormStorageRestorePlacement(Sender: TObject); + procedure actRefrescarExecute(Sender: TObject); + procedure actAnchoAutoExecute(Sender: TObject); + procedure actFiltrarExecute(Sender: TObject); + procedure actFiltrarUpdate(Sender: TObject); + private + FViewGrid : IViewGrid; + protected + procedure SetViewGrid(const Value : IViewGrid); virtual; + function GetViewGrid: IViewGrid; + public + property ViewGrid: IViewGrid read GetViewGrid write SetViewGrid; + constructor Create(AOwner : TComponent); override; + + destructor Destroy; override; + end; + +implementation + +uses + uDataModuleBase, uCustomEditor, cxGridTableView; + +{$R *.dfm} + +{ +********************************* TfEditorGrid ********************************* +} +destructor TfEditorGrid.Destroy; +begin + FViewGrid := NIL; + inherited; +end; + +function TfEditorGrid.GetViewGrid: IViewGrid; +begin + Result := FViewGrid; +end; + +procedure TfEditorGrid.SetViewGrid(const Value: IViewGrid); +begin + FViewGrid := Value; + if Assigned(FViewGrid) then + begin + FViewGrid.PopupMenu := GridPopupMenu; + FViewGrid.OnDblClick := actModificar.OnExecute; + end; +end; + +procedure TfEditorGrid.tbxEditFiltroChange(Sender: TObject; const Text: String); +begin + if Assigned(ViewGrid) then + ViewGrid.Filter := Text; +end; + +procedure TfEditorGrid.FormShow(Sender: TObject); +begin + inherited; + if Assigned(ViewGrid) then + ViewGrid.ShowEmbedded(Self); +end; + +procedure TfEditorGrid.actPrevisualizarExecute(Sender: TObject); +begin + inherited; + ViewGrid.Preview; +end; + +procedure TfEditorGrid.actConfPaginaExecute(Sender: TObject); +begin + inherited; + ViewGrid.PrintSetup; +end; + +procedure TfEditorGrid.actImprimirExecute(Sender: TObject); +begin + inherited; + ViewGrid.Print; +end; + +procedure TfEditorGrid.actQuitarFiltroExecute(Sender: TObject); +begin + if Assigned(ViewGrid) then + begin + tbxEditFiltro.Text := ''; + ViewGrid.Filter := ''; + end; +end; + +procedure TfEditorGrid.actModificarExecute(Sender: TObject); +begin + inherited; + ViewGrid.SyncFocusedRecordsFromGrid; +end; + +procedure TfEditorGrid.actEliminarExecute(Sender: TObject); +begin + ViewGrid.SyncFocusedRecordsFromGrid; // Esto va ANTES del inherited. No cambiar. + inherited; +end; + +constructor TfEditorGrid.Create(AOwner: TComponent); +begin + inherited; + actModificar.ShortCut := ShortCut(VK_RETURN, []); +end; + +procedure TfEditorGrid.actDuplicarUpdate(Sender: TObject); +begin + if Assigned(dsDataTable.DataTable) then + (Sender as TAction).Enabled := (not dsDataTable.DataTable.IsEmpty) + and not (dsDataTable.DataTable.State = dsInsert) + else + (Sender as TAction).Enabled := False; +end; + +procedure TfEditorGrid.actDuplicarExecute(Sender: TObject); +begin + ViewGrid.SyncFocusedRecordsFromGrid; // Esto va ANTES del inherited. No cambiar. + inherited; +end; + +procedure TfEditorGrid.JvFormStorageSavePlacement(Sender: TObject); +begin + inherited; + if Assigned(ViewGrid) then + ViewGrid.StoreToRegistry; +end; + +procedure TfEditorGrid.JvFormStorageRestorePlacement(Sender: TObject); +begin + inherited; + if Assigned(ViewGrid) then + ViewGrid.RestoreFromRegistry; +end; + +procedure TfEditorGrid.actRefrescarExecute(Sender: TObject); +var + FocusedRow, TopRow : Integer; +begin + ViewGrid.SyncFocusedRecordsFromGrid; + + TopRow := (ViewGrid.Grid.ActiveView.Controller as TcxGridTableController).TopRowIndex; + FocusedRow := ViewGrid.Grid.ActiveView.DataController.FocusedRowIndex; + + inherited; + + ViewGrid.Grid.ActiveView.DataController.FocusedRowIndex := FocusedRow; + (ViewGrid.Grid.ActiveView.Controller as TcxGridTableController).TopRowIndex := TopRow; + // ViewGrid.Grid.ActiveView.Controller.TopRowIndex := TopRow; + +// ViewGrid.SyncFocusedRecordsFromDataSet; +end; + +procedure TfEditorGrid.actAnchoAutoExecute(Sender: TObject); +begin + inherited; + if Assigned(ViewGrid) then + ViewGrid.AjustarAncho; +end; + +procedure TfEditorGrid.actFiltrarExecute(Sender: TObject); +begin + inherited; + if Assigned(ViewGrid) then + ViewGrid.ActivarDesactivarFiltros; + + if Assigned(ViewGrid) then + if ViewGrid.EstanFiltrosVisible then + begin + tbxEditFiltro.Visible := False; + TBXItem7.Visible := False; + end + else + begin + tbxEditFiltro.Text := ''; + tbxEditFiltro.Visible := True; + TBXItem7.Visible := True; + end; +end; + +procedure TfEditorGrid.actFiltrarUpdate(Sender: TObject); +begin + inherited; + if Assigned(ViewGrid) then + (Sender as TAction).Checked := ViewGrid.EstanFiltrosVisible +end; + +initialization + RegisterClass(TfEditorGrid); + +finalization + UnRegisterClass(TfEditorGrid); + +end. + diff --git a/Base/uEditorItem.ddp b/Base/uEditorItem.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Base/uEditorItem.ddp differ diff --git a/Base/uEditorItem.dfm b/Base/uEditorItem.dfm new file mode 100644 index 0000000..147c342 --- /dev/null +++ b/Base/uEditorItem.dfm @@ -0,0 +1,53 @@ +inherited fEditorItem: TfEditorItem + Left = 457 + Top = 278 + Width = 686 + Height = 535 + Caption = 'fEditorItem' + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + Width = 678 + Visible = False + inherited Image1: TImage + Left = 651 + end + end + object pgPaginas: TPageControl [1] + Left = 0 + Top = 76 + Width = 678 + Height = 406 + ActivePage = pagGeneral + Align = alClient + TabOrder = 1 + object pagGeneral: TTabSheet + Caption = 'General' + end + end + inherited TBXDock: TTBXDock + Width = 678 + inherited tbxMain: TTBXToolbar + inherited TBXItem5: TTBXItem + Visible = False + end + end + inherited tbxMenu: TTBXToolbar + inherited TBXSubmenuItem4: TTBXSubmenuItem + inherited TBXItem10: TTBXItem + Visible = False + end + end + end + end + inherited StatusBar: TStatusBar + Top = 482 + Width = 678 + end + inherited EditorActionList: TActionList + Top = 104 + inherited actEliminar: TAction + ShortCut = 0 + end + end +end diff --git a/Base/uEditorItem.pas b/Base/uEditorItem.pas new file mode 100644 index 0000000..ecfbff1 --- /dev/null +++ b/Base/uEditorItem.pas @@ -0,0 +1,40 @@ + +unit uEditorItem; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uEditorBase, ActnList, JvExControls, JvComponent, + JvNavigationPane, ComCtrls, StdActns, TB2Dock, TB2Toolbar, TBX, TB2Item, + ImgList, PngImageList, JvFormAutoSize, JvAppStorage, + JvAppRegistryStorage, JvFormPlacement, pngimage, ExtCtrls; + +type + IEditorItem = interface(IEditorBase) + ['{F6A412D1-59AA-41D2-ADD5-C92687CD5387}'] + end; + + TfEditorItem = class(TfEditorBase, IEditorItem) + pagGeneral: TTabSheet; + pgPaginas: TPageControl; + end; + +var + fEditorItem: TfEditorItem; + +implementation + +uses uDataModuleBase; + +{$R *.dfm} + +initialization + RegisterClass(TfEditorItem); + +finalization + + UnRegisterClass(TfEditorItem); + + +end. diff --git a/Base/uEditorPSPreview.dfm b/Base/uEditorPSPreview.dfm new file mode 100644 index 0000000..a3f98e6 --- /dev/null +++ b/Base/uEditorPSPreview.dfm @@ -0,0 +1,15 @@ +object Form1: TForm1 + Left = 580 + Top = 506 + Width = 320 + Height = 240 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = True + PixelsPerInch = 96 + TextHeight = 13 +end diff --git a/Base/uEditorPSPreview.pas b/Base/uEditorPSPreview.pas new file mode 100644 index 0000000..683b402 --- /dev/null +++ b/Base/uEditorPSPreview.pas @@ -0,0 +1,24 @@ +unit uEditorPSPreview; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, dxPSPrVw; + +type + TForm1 = class(TCustomdxPSPreviewWindow) + private + { Private declarations } + public + { Public declarations } + end; + +var + Form1: TForm1; + +implementation + +{$R *.dfm} + +end. diff --git a/Base/uEditorPreview.ddp b/Base/uEditorPreview.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Base/uEditorPreview.ddp differ diff --git a/Base/uEditorPreview.dfm b/Base/uEditorPreview.dfm new file mode 100644 index 0000000..f1186f3 --- /dev/null +++ b/Base/uEditorPreview.dfm @@ -0,0 +1,797 @@ +inherited fEditorPreview: TfEditorPreview + Left = 248 + Top = 277 + Caption = 'Previsualizar' + WindowState = wsMaximized + OnDestroy = FormDestroy + OnResize = FormResize + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + Visible = False + end + inherited TBXDock: TTBXDock + Height = 75 + inherited tbxMain: TTBXToolbar + Top = 49 + DefaultDock = TBXDock + Visible = False + end + object TBXToolbar1: TTBXToolbar + Left = 0 + Top = 23 + Caption = 'TBXToolbar1' + DefaultDock = TBXDock + DragHandleStyle = dhNone + ParentShowHint = False + ShowHint = True + TabOrder = 2 + object TBXItem39: TTBXItem + Action = actImprimir + DisplayMode = nbdmImageAndText + Images = SmallImages + end + object TBXSeparatorItem18: TTBXSeparatorItem + end + object tbxMano: TTBXItem + Action = actToolHand + AutoCheck = True + Checked = True + DisplayMode = nbdmImageAndText + GroupIndex = 1 + Images = PreviewSmallImageList + end + object TBXSeparatorItem14: TTBXSeparatorItem + end + object tbxZoom: TTBXItem + Action = actToolZoom + AutoCheck = True + DisplayMode = nbdmImageAndText + GroupIndex = 1 + Images = PreviewSmallImageList + end + object TBXItem42: TTBXItem + Action = actTodaPagina + Images = PreviewSmallImageList + end + object TBXItem41: TTBXItem + Action = actAnchoPagina + Images = PreviewSmallImageList + end + object TBXItem40: TTBXItem + Action = actZoomOut + Images = PreviewSmallImageList + end + object cbZoom: TTBXComboBoxItem + Caption = 'Zoom' + ReadOnly = True + OnItemClick = cbZoomItemClick + end + object TBXItem37: TTBXItem + Action = actZoomIn + Images = PreviewSmallImageList + end + object TBXSeparatorItem17: TTBXSeparatorItem + end + object TBXSeparatorItem16: TTBXSeparatorItem + end + object TBXItem35: TTBXItem + Action = actPrimeraPagina + Images = PreviewSmallImageList + end + object TBXItem34: TTBXItem + Action = actPaginaAnterior + Images = PreviewSmallImageList + end + object TBXItem33: TTBXItem + Action = actPaginaSiguiente + Images = PreviewSmallImageList + end + object TBXItem36: TTBXItem + Action = actUltimaPagina + Images = PreviewSmallImageList + end + object TBXSeparatorItem15: TTBXSeparatorItem + end + object TBXItem7: TTBXItem + Action = actCerrar + Images = SmallImages + end + end + end + inherited EditorActionList: TActionList + Top = 104 + inherited actImprimir: TAction + OnExecute = actImprimirExecute + end + end + inherited SmallImages: TPngImageList + Left = 43 + Top = 104 + end + inherited LargeImages: TPngImageList + Left = 75 + Top = 104 + end + inherited JvFormStorage: TJvFormStorage + Left = 376 + Top = 136 + end + inherited JvAppRegistryStorage: TJvAppRegistryStorage + Left = 408 + Top = 136 + end + object PreviewActionList: TActionList + Images = PreviewSmallImageList + Left = 344 + Top = 104 + object actPrimeraPagina: TAction + Category = 'Preview' + Caption = 'Primera p'#225'gina' + ImageIndex = 0 + OnExecute = actPrimeraPaginaExecute + end + object actUltimaPagina: TAction + Category = 'Preview' + Caption = #218'ltima p'#225'gina' + ImageIndex = 3 + OnExecute = actUltimaPaginaExecute + end + object actPaginaAnterior: TAction + Category = 'Preview' + Caption = 'P'#225'gina anterior' + ImageIndex = 1 + OnExecute = actPaginaAnteriorExecute + end + object actPaginaSiguiente: TAction + Category = 'Preview' + Caption = 'P'#225'gina siguiente' + ImageIndex = 2 + OnExecute = actPaginaSiguienteExecute + end + object actZoomIn: TAction + Category = 'Zoom' + Caption = 'M'#225's zoom' + ImageIndex = 8 + OnExecute = actZoomInExecute + end + object actZoomOut: TAction + Category = 'Zoom' + Caption = 'Menos zoom' + ImageIndex = 9 + OnExecute = actZoomOutExecute + end + object actTodaPagina: TAction + Category = 'Zoom' + Caption = 'Toda la p'#225'gina' + ImageIndex = 4 + OnExecute = actTodaPaginaExecute + end + object actAnchoPagina: TAction + Category = 'Zoom' + Caption = 'Ancho de p'#225'gina' + ImageIndex = 5 + OnExecute = actAnchoPaginaExecute + end + object actToolHand: TAction + Category = 'Tools' + Caption = 'Mano' + ImageIndex = 10 + OnExecute = actToolHandExecute + end + object actToolZoom: TAction + Category = 'Tools' + Caption = 'Zoom' + ImageIndex = 6 + OnExecute = actToolZoomExecute + end + end + object PreviewSmallImageList: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000000F14944415478DA + C5D2A10EC2301006E01B4F30893C39C59619EC70937B843D014C829B0339DEA0 + 1289638EC9C9E1160C9553A43882A0B45DC80223A30112CE346DFA7F697A6770 + CEE19B327E0A8C663BB5A14506348D8CE7CBDEB4E0DBB96D7402518010C5A405 + C8B0840F9B493710FA08F1E21190E1D0B7C5F9F23D10780849D200F7705102AC + D73A8023005203F73065A08022D3003C0B81AC08A0E3810C33115600156BAE01 + 3888E2A9F50BDC71CE07EE105875025A01B09268007D01A4CD1F48E4DAB3809D + 657F35001440963E764122C78BA50798268ACF6ACF8142F6F97B400E8B9AC617 + 93887EC23B814FEAFFC00D0E3CD3E1153EE1F30000000049454E44AE426082} + Name = 'PngImage1' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000000A34944415478DA + 63FCFFFF3F032580912606303232628839545CF8BFBF5D9F912C03409A1F5C38 + C0707F7B3EE90680342778E83334744C24DD0098E60B371818366C20D10098E6 + 071F18C0065C384082018E9517C19A3F0035830D7800A44F90E802A3BC13FFF5 + 8CCC193EBCF8C8F0E00503C3871B0B480F039021FF9834183EFC00721E906100 + CC9077BF34C837006EC8AD13E41B00020A1E13FE136D002960E00D000045F48A + E13771044B0000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000000A44944415478DA + 63FCFFFF3F03258091260638565EFC7FA0C380115D1C9B5A9C067CFAF683E1DC + 240B46B20D48F0D06798B4EE248A21241BF0E10703C3A26D0843483220C0419F + E1C10706860F407CE91AC410920C70B0506078F0829FE1C2838F0C1F1E3C009A + 7480E1FEF67C46A20D30D0506038708301AEF9C18E02D25C202020C070E1C207 + B86692C3800118800F6E2034936CC0830BA89A493680A294480A18780300CF22 + A8E18A4EF6A30000000049454E44AE426082} + Name = 'PngImage3' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000000EC4944415478DA + C5D2A10EC2301405D0DB2FA012F9246E95C8E290FB04FE8049703890842F5850 + 2882021CB5185210044725B220086E74908D40C252020937A97BF7A479792C49 + 127C13F673A0D65E27AA27D8EBA06CE97C70D10D5821703A5FB01A54D92B1085 + 84A813633F6B16038D7A80C178F984A440A34EE8F43C017B0186D3079202A124 + F4FB1E402803180B58F736DB3B72038403620F405609E65082364758639CA440 + 42425608F1C803106E50ED9097CD3CBAFD40106132F10038E7D0DAE6E56C07A2 + EC80B90700B740B37B9433801CA07C00A39FCB19C039412B0FE0DD25A6709A42 + E0D3FC1FB8020318D0E1923D9C4B0000000049454E44AE426082} + Name = 'PngImage2' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD2520000017E4944415478DA + 630C9B1C9ACFC0C03081813C50C00834E07F7E400E51AAFFFEFBC3F0EBDF7786 + 9F7F2138C9268F01C58073FBBF113444C9EA0B58F38469B3192E2DBB8C69404E + AC07568DBFFE303058F86431D44EB264F8053460DACC25B80DA89FBC1FC38092 + 144706FBC02C86F27E03B00BE6CE594B9C0B4036FFFC0DA15D43B31872BB95C0 + 062C5FB09B341764C4383278476631A4754882BDB076F111FC2E40B619860363 + B318125A05187E026362CBD2B3A4B92036D491212C218B21B2999DE1C7DF6F0C + 7B565CC76E4072B807D8E6BFFF1036FFFE0BA16352B218021BFE82C3E0F0EA07 + 080372FC3218FEFEFFCD70E5D07F8698200F86FE79982E08F4756448CAC862F0 + AA05A5836F0CA7D6BD421890E6130F36F5DE311E86303F0F145B616C1048C9CC + 6270AE7A05567B71E3678401F19E6160C1A7274519E62DDD843725DA943F04BB + E0C696BF080322DC7CC151034BE390F4FE0DCA47D07FFEFF01D37F81F4EDAD8C + 0803829C5DC04993540033207F57D36EB2B2B35B9D6B0100103839527F8C36D7 + 0000000049454E44AE426082} + Name = 'PngImage5' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001714944415478DA + 630C9B1C9ACFC0C03081813C50C00834E07F7E400E51AAFFFEFBC3F0EBDF7786 + 9F7F2138C9268F016EC099973B18F253E4198E6ED6C4A9D9CEFF36C3C4390F19 + 64793519264C9BCD7069D9658801D6962A60CDC40290216B171F411880CF05BF + A0CE05D17E619FC09A05D8C519E6CE598B6AC0B9FDDF8876018BEE6986E50B76 + 631A9013EB8153D3AF3F0C0C3F7F3330D807663124B40A607A016640FDE4FD58 + 0D2849716458B86607C3BCA59B18229BD919B62C3D4B9C0B603683E8E51B2006 + 0436FC65D8B3E23A692EC888716458BB05628057ED1786C3AB1F200CC8F1CB60 + B878F0178A0B906D86E1CD3B20063857BD6238B5EE15C280349F7886EB8799F1 + BA2036D49161C76E880136E50F192E6EFC8C3020DE338CE1DE311EB001D86CFE + FD1742EFDB0F31C0B4E43AC38D2D7F110644B8F9323C3D29CA901CEE81A219A6 + 11C63E7604628051F16586DB5B1911060439BB304C9BB984E88404033003F277 + 35ED262B3BBBD5B9160000C8E01B524AB937870000000049454E44AE426082} + Name = 'PngImage4' + 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 = 'PngImage6' + 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 = 'PngImage7' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000000E14944415478DA + 63FCFFFF3F032580717019C0C8C8086787B4DDF8FFEBD76F869F3F7F33EC6C37 + 824BA05B88D300BF86CBFFA3A35419A6CFB8C870A0CF9C7403DC2BCFFD8F88D4 + 66983DEB34C3B12936C41910DA7E13EE6C100E0D37609837E7180358EC0708FF + 6278B0218011A701FE8D57C0CEFEF68391E1DB770630FD1D88BF7C07E26F8C0C + 6B17AE6178B1230CB7011E55E7FF836C86B9C23FC48661C9BC5D609B7F40F187 + 0331B80D400E03DDF85DFF3D039D1856CEDFCCF0706320E981A816BEF5BF8BBF + 07D8D92F7786936E80BCFFFAFF30677F3C184B9C01E480616000007F3BB6E1E0 + 0AF3B40000000049454E44AE426082} + Name = 'PngImage8' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000000714944415478DA + 63FCFFFF3F03258071D4002A1B10DA7E13CC01897DFDFA83E1DBB71F60FAFBB7 + 9F0C9F3F7F03E3F7FBA219F11A1013A500E77FFCCCC8F0EA1D23C38BB74C0CCF + 5E3131AC9E3397E1F7E914DC0684B4DDF88FCBE62F9FBF33FCF9F397E1FFF974 + DC060C7C208E1A401E0000EFE473E127272ED00000000049454E44AE426082} + Name = 'PngImage9' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001C74944415478DA + A5934D4B5B411885CF5D9982288874EB0F306E5CBA9A646514E33536264AE456 + 5184528AE0424A043751FCC08228E24788894631D5D6D12C5C08EA2A74512AD8 + E4070822EE44A3E255CC386F24264AAE5978609881B9E739EFCCBC571142E03D + 5208A0284ADECDA08FB9E4342087EFF3C04124772F139C1790319614C3DCE456 + B116E2D0EF11CF051502FCD7BA54F37A98C3E951110E70783A5584FC3C2E0155 + 0501DB534C34389F92DD9A342E7068DD2A96FC1CD296AE44F3EE470C019B934C + A8AE6CF2E29C9C3B6C5809EEC0EEA84194C7E212506508D8F8C144735B36D93F + 232B69B72212DE43BDBD1A5BBFFFA1C7B7AF3C03424396C6B252F08714709184 + F94311E22DEDD9E4C0FC0E9CEE1AFC8AC4505B5789E876025F867300D1694BFA + CCA49FCB1C046AD5B2C94B813D383E3D25334B0576778FF17524074047C8944D + A2B3BB3C36E8BA8E3BFD363DEEEF74DC5C5F2179718ED89F4B7C1B7B0520AD8E + 3241C9F4B191F93A798943F90EBDE37900A4908F0987CB6A6826FD3D02FA260C + 0024FF201374DBF9CCA767B7F28E4CF07C7F03409AF532411796319391747266 + C2C77298651F240AFE4C53FD4CA4E48BA464FBD1CBD09ACCB29D132F5AF93D7A + 04D7A238F0C903C3480000000049454E44AE426082} + Name = 'PngImage10' + Background = clWindow + end> + PngOptions = [pngBlendOnDisabled, pngGrayscaleOnDisabled] + Left = 371 + Top = 104 + Bitmap = {} + end + object PreviewLargeImageList: TPngImageList + Height = 24 + Width = 24 + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD252000001894944415478DA + 63FCFFFF3F032D01E3F0B4C0B1F2228AE0810E03467C8638545CF8BFBF5D1FAB + 1A9C1604D9E980D97D93A6303CD851C088CFF007170E30DCDF9E4F7D0B408683 + D481D450DD0298E1DF7EFE679831732A752D4036FCDBAF7F0C8BE64F27CF82AF + 3FFE33CC9C3515C50274C3BF03E9D5CB66906E81BB9936C3E7EFFF18962D9E0E + B7009BE1DF7FFD67D8B26626E91658E96A022DF8CFB079CD0CB005B80CFFF693 + 8161DF66322CD055D160F80C0CA2035B663228183830E032FC0B50CDA9DDB348 + B74041469DE1D3B77F0CE7F6CD06FBC028EFC47F1F6B430CC3BFFEF8C770F5F0 + 1CD22D10125265F8F0F53FC3BD9373E07100B2C44A4F1FC5F0AF400B1F9C9A4B + BA054CEC2A0C1F813E787B791E4A2A0259A222AF07371C64D19B4BF348B7E0F3 + 5F25A00FFE31FCBDB700231F802CE113D0061B0EC23F6ECD27DD82C79F1418FE + FE03721E2CC09A9341967C63D064F8018C0F901A922D78F04101C2C16101CC92 + 77BF34686701DC925B27C8B0005804C3003E0B4040C163C27F922CA02618B580 + 200000A0D9B0E00198A13A0000000049454E44AE426082} + Name = 'PngImage1' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD252000000FA4944415478DA + 63FCFFFF3F032D01E3F0B680919111AF66878A0BFFF7B7EBE35544B60520C31F + 5C38C0707F7B3EF52D00191E64A7C3D037690AF52D8019FEEDE77F861933A752 + D70264C3BFFDFAC7B068FE74EA59806EF87720BD7AD90CEA5880CDF0EFBFFE33 + 6C593393720B7019FEED2703C3BECD145AE0587911A7E15F7EFC6738B57B16E5 + 3E30CA3BF1DFC7DA10C3F0AF3FFE315C3D3C873A7100B2C44A4F1FC5F0AF400B + 1F9C9A4BBD5404B244455E0F6E38C8A23797E651371F802CE113D0061B0EC23F + 6ECDA77E4E0659F28D4193E107303E181E2CA04D5904B2E4DD2F0DDA5900B7E4 + D609DA5900020A1E13FE53640135C0A805040100D3AF21E00AC8E9BE00000000 + 49454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD2520000012E4944415478DA + 63FCFFFF3F032D01E3F0B6C0B1F2E2FF031D068CF80C20E440BC16D8955FF9FF + F5C7578673932C705A429105B6400BF2037518DA979FC469094516D8945DFD5F + 10A40D66E3B284220BACCBAEFD2F0CD202B37FFDF9CFD0BBFA148625145A701D + 688126D8F0EFBFFE337CFBF99F61C18E33289650648155E98DFF39FEEA70C3C1 + F8D73F862D47CFC32DA1C802CBD29BFF533C55510CFFFE13E29B63972E822DA1 + C8028B929BFFA39D55300CFFF69381E1CB8FFF0CA776CF62B8BF3D9F916C0BCC + 4B6EFD0FB251C269F8831D0594F9C0ACF8F67F4F73799C86531C07A6C577FE3B + 1AC8E2349C620B4C8AEEFEB7D496C66938152CB8F75F5F450AA7E1145B605C74 + FFBF8A8C044EC329B6C0A8F0C1FFF73736E2349C620B0C0B1FFEBF30418176F5 + 0135C0A80504010058FB49E08BBA20470000000049454E44AE426082} + Name = 'PngImage3' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD252000001C24944415478DA + 63FCFFFF3F032D01E3F0B4C0B1F2E2FF031D068CF834DA965D46D178A85307AB + 7AAC16D8955FF9FFF5C7578673932C705A02B220D44113CCEE9B3485E1FEF67C + E22DB0055A901FA8C3D0BEFC244E4B28B2C0A6ECEAFF82206D301B9725145960 + 5D76ED7F61901698FDEBCF7F86DED5A7302CA1D082EB400B34C1867FFFF59FE1 + DBCFFF0C0B769C41B10466C1D71FFF1966CE9A4A9A0556A537FEE7F8ABC30D07 + E35FFF18B61C3D0FB7046481978506C3E7EFFF18962D9E4E9A0596A537FFA778 + AAA218FEFD27C437C72E5D045B02B2C0565F0D68C17F86CD6B6690668145C9CD + FFD1CE2A18867FFBC9C0F0051824A776CF6290D5736630505365F80CE41FD832 + 93340BCC4B6EFD0FB251C269F8831D05601F28CBA9307CFAF68FE1DCBED9A459 + 60567CFBBFA7B93C4EC36171202AA2C4F0E1EB7F867B27E790668169F19DFF8E + 06B2380D8759C0CAA9C8F011E883B797E791668149D1DDFF96DAD2380D8759F0 + EDBF3CD007FF18FEDE5B40AA05F7FEEBAB48E1341C66C1B32FB20C7FFF01390F + 48B4C0B8E8FE7F1519099C86C32C78FC4916C221D502A3C207FFDFDFD888D370 + 8A2D302C7CF8FFC2040582F5C1E34B7BE17C922CA02618B5802000000BFCA8E0 + E6ADB53E0000000049454E44AE426082} + Name = 'PngImage2' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD252000002344944415478DA + 63FCFFFF3F032D0123C882F02961F940F6042A9B5DB03267D5449805FFF30372 + C832E51FC35F863FFF7E31FCFEF713887F41D9BF18526C0A19DEBF7ACF489105 + 7FFE430C86190AA3A74C5FC87069D965FC169CDBFF8D24CB642C5EC32D993173 + 397116E4C47AE035F4EFBFFF0CBFFFFC65B0F2CB63A89C680CF7C1DCD96B29B7 + 0066F89C957B18E62DDDC450DAAF0BF7C1C2B99B89B7A07EF27E9C9614275932 + 2C5A77006C4141AF3ADC07CBE6EF24DF073097FFFAFD87E1F7EFBF0CCB371F06 + 5B90D3AD08F7C1AA85FBA9E383CC48638635DB8F812D48ED9060F8FD1F62C1C6 + C52748F701BACB21ECBF0C9BF69C045B90D02E04CF0FDB969EA78E0FA2FD7418 + 761D3A0BB620A695079ED9762FBF8ADF0250EEBCB0FF27D8825F409722BB18CE + 868AEF3F7E016C4178332B3C0EF6AFBC8DDB0258D6BF72F03F435AA42B43EBF4 + 43387D10E8AAC670E4F465B005418DFFE1417464F523EC1620972B370FB33124 + 8638E174394CFCD4856B600BFCEA7FC283E8E4DA179816E40664A2145AF78EF2 + 30C404D8E3351CC43E7FF526D802F79AF7607D20FD17367CC2B420D32F19A544 + 7C745C8821CCDB06AFE120F6959B77C0163855BD84177C5736FDC0B420C93B12 + A5447C794A9A21D0CD9261FDAEE30C8400C802DB8A4770BD37B7FCC3B420D633 + 18A5D87D7B4611AC915860597607ACF7DFFFBF0CB7B732625A10E9EE8BE20314 + 1AADDCC7C506190E02582D087175A78AE1382D087076045714D402E816E4EF6A + DA4DD54ADFADCE1551E9D31200008EE53CFED5D704CB0000000049454E44AE42 + 6082} + Name = 'PngImage5' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD252000003154944415478DA + B5956D48536114C7CFC89022883E288415547E48F243651451425A6A929361A2 + 0E13D14553985AA411944A5A4804622AE9AC25CBDCD0125F4B526CD87C2F75E8 + 544C83B23EE45829E6667AEFEEEDDE3377756D6B1BD98167CFB37BEEF9FFCE39 + CF81CBA3691A783C1ED8B300F1043D28F5B3EF64ED50390D9A14877ED4667F62 + 4B633298FF45EB9D1FB579B8EFF7CF71A8CFBE33D8DF0931A20E7BEE2B3592DA + 0716009D2190709EF43BDE902EF48562E5B45544F12D1DFAD65B5CC401C8CA96 + 425BFD4E20A8152099C5EE974E5D8539DD1CCF066011D7FDF400EF1D24279428 + 914177B39FD99FE08BCFBECC52603018F15C505803F5B55B51BCB44C0E238A51 + 5BC049FE04C88B4428CE9A716909F4FA1F60342E81EC5987154037E7012B0401 + 8B8B065CEC595AF91A140A0ACAA54AFB00D658C8FD7C3127AEFF6E0634B60E73 + 80E4A85D306FF0E4C4170D06A8AC56A1385B81EC519D7DC090CA5C6E5AE16748 + BB1C0125152D56FD7E98B91764EA3D78B1164B8A0F42F1A7B907711A57F6F580 + 5CD6EC182049388781BCC352F3A80D8BED4E1045D1B029A002CFF36F13813499 + 20242E0BC4F77C40C1B4CA29C002B10760C54913059EC71E73E2CA66353CA96E + 02518117D4CA55AE011C65CE8A13A4094892427182D95FB47623E0E2DD6DD058 + D5E71C905BA202572C5578940199A0A1BD0F01B1F99BE155F5B0FB15B0D912A6 + D5AC194182A902AB612B61CE2D6F061010759B8676E5987B007BE224D722F36A + 530F22203277195435531BD7A278BE3FDE87AA578380F0EC05E87A3EE35A05AE + 646EB96CF5BB11049CBDA987FEBA6FB68034412A6854CB1CC01D7176927A87C6 + 1010786306340D0BB680D44811683B6904B041F9659D2EB52832D817C7F4FDC8 + 04024E5C9F066DD32F5B40F279214C756D811461A85B9913ABEF69C63F20E068 + E6384CB650B68084F00BF0A9673B2445075B055314E5549C7DAE9D9C46C0916B + A330F592670B1086F1E16B9F1724084E637071D5804B2D0A3ABE1B77A780E890 + 30981DF001213FD02AB3BF5D36C5C45ACC29407026083F141B657F0232DAF2DA + 8BFE5D76CD427342D63EFAFFD37E031AD161FE86E3B8C60000000049454E44AE + 426082} + Name = 'PngImage4' + 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 = 'PngImage7' + 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 = 'PngImage6' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD252000001324944415478DA + 63FCFFFF3F032D0123DD2C606464C4A9C8A5EF22862BF614E9E3D480EC68A22D + C8F05765F8FDE72F10FF63888B5ECEC0702183BA16247B2B810DFF03B424297E + 15F52D887357001B0EB2243D790DF52D887296051B0E0AA69CF4F5D4B720D45E + 1A6CF89FBF7F190AB23651DF82006B09B0E1205F94E66D21DD02D7FE4B783384 + 8F85283C88AA8AB633B8C459E254BBBB508F11AB05C8491116A1B06081B1C172 + 28FCBF0CBF7E0331880DA4174F3ECBF0FF7C3A760B909322398683D82B675CC0 + 6D01725224C770107BFD9CCBB82DD8B3E838F6480686B7A52637DCF0DEC683F8 + A20BBB05845291892A27DCE5935A8F503F99EA2BB2C1836546D771EA5BA025CB + 0C0FE7797DA7A86F818A04034A52A4BA057222A84991EA1648F2FF42498A54B7 + 002309936A01ADC0D0B700000ADFCFE01EDA3C000000000049454E44AE426082} + Name = 'PngImage8' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD2520000007C4944415478DA + 63FCFFFF3F032D01E3A805A3168C5A80B0C0B5FF12D56CDA5DA8C788D5829C20 + 751485BFFFFC65F8F1F30FC38F5FBF19BE83E89F501ACAFFF6E317C3B7EFBF21 + F40F087D68CD3D86FFE7D3095B408EE13F7EFD6138B5E911610BC8351C04F05A + B067D171AAC401560B6805462D18B560D4023A5800007B57E2D1072B1BE80000 + 000049454E44AE426082} + Name = 'PngImage9' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD252000002E84944415478DA + A5957D48144118C69F2B29B3FA23222C02598AA48F3B4A304A839C120C925022 + 4AA2F2B3B313FB80A0C20E333F52FC2348C24AC49490D4C414394D4D4F33112B + C1F0233090C9D0142BA920AFDA73DAD975E5923BDDB5178679776EEFF9CD3CF3 + CEAC8131061E0683010B457126392175D699C7CC186B6BB9BBF7544D595727A0 + 373A21D238D8DF83CE4EDA27014CFF0D5067BD7C198CD3D3C0C9984870404707 + 057FF6F242DFDCD5E805CCCEFA5517C5A93805D0DE4E117F4EC9E7AE4617E071 + 2E615167668520C1E4BCAD8DE26C929237355124E7B41A160528CD21CCD59658 + B392DBED1489C94ADED048B1CA0758B254B12BFABABD5C33E0D12DC2DCD9D2DC + 4C61B9A0E4F5CF284E4707E3F3F8A86C9704306906487BC03CD992743102EF07 + DEC2564761B61CC4C8872154D7505CB96337680614A513E6C9164B72388606FB + 516B93C0E6FD181B19465535C5B53C1D80C234C23CD992981486E1A141D4D44A + D6252816555651A4DCD5012848254C8B2DB171BB31F96502159514D67C378092 + AC03EA356094DA6C5DDFB712A6DAF2E923C5BED07088E21F74B5352260AF620B + 1FF73706E0C7B749943DA148BDE71E201F289EAB1B6A4E6F35E4A710C66DE1EF + BD68A8C19E9030389D22DEBC6C812930184E0936D0F31A9BB79AE4F1E29277B8 + F1C03D40AE163554CFF975C06D718AA23C732EA2E4A22CAEF4A23CFECB3185D2 + 328A9B051E5610142418FD77ECFA07A2568B1671DE2AAAC69151E86193F98686 + 84085021FC37AD3397DBD4149EDABE23AB689E2AE29E87860AD8B27DA76E7187 + E3276CCF45643F5CA04CF3AE1276284C80DF267F5DE27CBCBE05C829D1700E6E + 5F262CFCB080F51BFD348B8F8E39F05BF4764877D10A4D072DF71261114704AC + 59BB6E41711E9DDDC0065F44E9BA4DB3CF1376345280CFCAD5F38AABB397D240 + 09D0AF19C023C342D8F163829C7B12EFEEF586691BA2F8A773511FFD34B3B492 + 085F7C9D1897055DC3555C2D6FDD001ED678C2F8C99E96FEC2783F93BB8ACF05 + FC0592430CFE3F77C7A70000000049454E44AE426082} + Name = 'PngImage10' + Background = clWindow + end> + PngOptions = [pngBlendOnDisabled, pngGrayscaleOnDisabled] + Left = 403 + Top = 104 + Bitmap = {} + end + object frxReport1: TfrxReport + Version = '3.23.7' + DotMatrixReport = False + EngineOptions.DoublePass = True + IniFile = '\Software\Fast Reports' + PreviewOptions.Buttons = [pbPrint, pbLoad, pbSave, pbExport, pbZoom, pbFind, pbOutline, pbPageSetup, pbTools, pbEdit, pbNavigator] + PreviewOptions.Zoom = 1.000000000000000000 + PrintOptions.Printer = 'Default' + ReportOptions.CreateDate = 38658.858023541660000000 + ReportOptions.LastChange = 38658.858023541660000000 + ScriptLanguage = 'PascalScript' + ScriptText.Strings = ( + 'begin' + '' + 'end.') + StoreInDFM = False + Left = 16 + Top = 200 + Datasets = <> + Variables = <> + Style = <> + end + object frxBarCodeObject1: TfrxBarCodeObject + Left = 16 + Top = 240 + end + object frxOLEObject1: TfrxOLEObject + Left = 48 + Top = 240 + end + object frxChartObject1: TfrxChartObject + Left = 16 + Top = 272 + end + object frxRichObject1: TfrxRichObject + Left = 48 + Top = 272 + end + object frxCrossObject1: TfrxCrossObject + Left = 80 + Top = 240 + end + object frxCheckBoxObject1: TfrxCheckBoxObject + Left = 80 + Top = 272 + end + object frxGradientObject1: TfrxGradientObject + Left = 16 + Top = 304 + end + object frxDotMatrixExport1: TfrxDotMatrixExport + UseFileCache = True + ShowProgress = True + EscModel = 0 + GraphicFrames = False + SaveToFile = False + UseIniSettings = True + Left = 48 + Top = 304 + end + object frxDialogControls1: TfrxDialogControls + Left = 80 + Top = 304 + end + object frxTIFFExport1: TfrxTIFFExport + ShowDialog = False + UseFileCache = True + ShowProgress = True + Monochrome = True + Left = 144 + Top = 240 + end + object frxPDFExport1: TfrxPDFExport + ShowDialog = False + UseFileCache = True + ShowProgress = True + PrintOptimized = False + Outline = False + Author = 'FastReport'#174 + Subject = 'FastReport'#174' PDF export' + Background = False + Creator = 'FastReport'#174' (http://www.fast-report.com)' + HTMLTags = False + Left = 144 + Top = 280 + end + object frxBMPExport1: TfrxBMPExport + ShowDialog = False + UseFileCache = True + ShowProgress = True + Monochrome = True + Left = 144 + Top = 320 + end +end diff --git a/Base/uEditorPreview.pas b/Base/uEditorPreview.pas new file mode 100644 index 0000000..1c809ec --- /dev/null +++ b/Base/uEditorPreview.pas @@ -0,0 +1,308 @@ +unit uEditorPreview; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uEditorBase, ImgList, PngImageList, StdActns, ActnList, TBX, + TB2Item, TB2Dock, TB2Toolbar, JvExControls, JvComponent, JvNavigationPane, + TB2ExtItems, TBXExtItems, uViewPreview, frxClass, ComCtrls, frxPreview, + JvFormAutoSize, JvAppStorage, JvAppRegistryStorage, JvFormPlacement, + pngimage, frxExportImage, frxExportPDF, frxDCtrl, frxDMPExport, + frxGradient, frxChBox, frxCross, frxRich, frxChart, frxOLE, frxBarcode, + ExtCtrls, JvComponentBase; + +type + IEditorPreview = interface(IEditorBase) + ['{7E79BEFC-C817-43D9-A60F-9573D1777068}'] + function GetReport: TfrxReport; + property Report: TfrxReport read GetReport; + procedure LoadFromStream(AStream : TStream); + function ExportToFile : String; + end; + + TfEditorPreview = class(TfEditorBase, IEditorPreview) + TBXToolbar1: TTBXToolbar; + TBXItem7: TTBXItem; + TBXItem33: TTBXItem; + TBXItem34: TTBXItem; + TBXItem39: TTBXItem; + TBXSeparatorItem14: TTBXSeparatorItem; + TBXSeparatorItem15: TTBXSeparatorItem; + TBXSeparatorItem16: TTBXSeparatorItem; + cbZoom: TTBXComboBoxItem; + PreviewActionList: TActionList; + PreviewSmallImageList: TPngImageList; + PreviewLargeImageList: TPngImageList; + actPrimeraPagina: TAction; + actUltimaPagina: TAction; + actPaginaAnterior: TAction; + actPaginaSiguiente: TAction; + TBXItem35: TTBXItem; + TBXItem36: TTBXItem; + actZoomIn: TAction; + actZoomOut: TAction; + actTodaPagina: TAction; + actAnchoPagina: TAction; + TBXSeparatorItem17: TTBXSeparatorItem; + TBXItem37: TTBXItem; + TBXItem40: TTBXItem; + TBXItem41: TTBXItem; + TBXItem42: TTBXItem; + frxReport1: TfrxReport; + actToolHand: TAction; + actToolZoom: TAction; + tbxZoom: TTBXItem; + tbxMano: TTBXItem; + TBXSeparatorItem18: TTBXSeparatorItem; + frxBarCodeObject1: TfrxBarCodeObject; + frxOLEObject1: TfrxOLEObject; + frxChartObject1: TfrxChartObject; + frxRichObject1: TfrxRichObject; + frxCrossObject1: TfrxCrossObject; + frxCheckBoxObject1: TfrxCheckBoxObject; + frxGradientObject1: TfrxGradientObject; + frxDotMatrixExport1: TfrxDotMatrixExport; + frxDialogControls1: TfrxDialogControls; + frxTIFFExport1: TfrxTIFFExport; + frxPDFExport1: TfrxPDFExport; + frxBMPExport1: TfrxBMPExport; + procedure FormShow(Sender: TObject); + procedure actPrimeraPaginaExecute(Sender: TObject); + procedure actUltimaPaginaExecute(Sender: TObject); + procedure actPaginaAnteriorExecute(Sender: TObject); + procedure actPaginaSiguienteExecute(Sender: TObject); + procedure actZoomInExecute(Sender: TObject); + procedure actTodaPaginaExecute(Sender: TObject); + procedure FormDestroy(Sender: TObject); + procedure FormResize(Sender: TObject); + procedure actImprimirExecute(Sender: TObject); + procedure actAnchoPaginaExecute(Sender: TObject); + procedure actZoomOutExecute(Sender: TObject); + procedure cbZoomItemClick(Sender: TObject); + procedure actToolHandExecute(Sender: TObject); + procedure actToolZoomExecute(Sender: TObject); + private + FPreview : TfrViewPreview; + function GetReport: TfrxReport; + procedure OnPageChanged(Sender: TfrxPreview; PageNo: Integer); + procedure UpdateZoom; + public + constructor Create(AOwner: TComponent); override; + property Report: TfrxReport read GetReport; + procedure Print; + procedure LoadFromStream(AStream : TStream); + function ExportToFile : String; + end; + +var + fEditorPreview: TfEditorPreview; + +implementation + +uses + frxRes, frxUtils, frxPrinter, uCustomEditor, uSysFunc, + frxFormUtils; + +{$R *.dfm} + +{ TfEditorBase1 } + +function TfEditorPreview.GetReport: TfrxReport; +begin + Result := frxReport1; +end; + + +procedure TfEditorPreview.FormShow(Sender: TObject); +begin + inherited; + UpdateZoom; + actPrimeraPagina.Execute; + FPreview.ShowEmbedded(Self); + Report.ShowPreparedReport; +end; + +procedure TfEditorPreview.actPrimeraPaginaExecute(Sender: TObject); +begin + inherited; + FPreview.Preview.First; +end; + +procedure TfEditorPreview.actUltimaPaginaExecute(Sender: TObject); +begin + inherited; + FPreview.Preview.Last; +end; + +procedure TfEditorPreview.actPaginaAnteriorExecute(Sender: TObject); +begin + inherited; + FPreview.Preview.Prior; +end; + +procedure TfEditorPreview.actPaginaSiguienteExecute(Sender: TObject); +begin + inherited; + FPreview.Preview.Next; +end; + +procedure TfEditorPreview.actZoomInExecute(Sender: TObject); +begin + inherited; + FPreview.Preview.Zoom := FPreview.Preview.Zoom + 0.25; +end; + +procedure TfEditorPreview.UpdateZoom; +begin + cbZoom.Text := IntToStr(Round(FPreview.Preview.Zoom * 100)) + '%'; +end; + +procedure TfEditorPreview.actTodaPaginaExecute(Sender: TObject); +begin + inherited; + FPreview.Preview.ZoomMode := zmWholePage; + UpdateZoom; +end; + +procedure TfEditorPreview.FormDestroy(Sender: TObject); +begin + inherited; + FPreview.Free; +end; + +procedure TfEditorPreview.FormResize(Sender: TObject); +begin + inherited; + UpdateZoom; +end; + +procedure TfEditorPreview.actImprimirExecute(Sender: TObject); +begin + inherited; + if not frxPrinters.HasPhysicalPrinters then + frxErrorMsg(frxResources.Get('clNoPrinters')) + else + FPreview.Preview.Print; + Enabled := True; +end; + +procedure TfEditorPreview.actAnchoPaginaExecute(Sender: TObject); +begin + inherited; + FPreview.Preview.ZoomMode := zmPageWidth; + UpdateZoom; +end; + +procedure TfEditorPreview.actZoomOutExecute(Sender: TObject); +begin + inherited; + FPreview.Preview.Zoom := FPreview.Preview.Zoom - 0.25; +end; + +procedure TfEditorPreview.cbZoomItemClick(Sender: TObject); +var + s: String; +begin + FPreview.Preview.SetFocus; + + if cbZoom.ItemIndex = 6 then + actAnchoPagina.Execute + else if cbZoom.ItemIndex = 7 then + actTodaPagina.Execute + else + begin + s := cbZoom.Text; + + if Pos('%', s) <> 0 then + s[Pos('%', s)] := ' '; + while Pos(' ', s) <> 0 do + Delete(s, Pos(' ', s), 1); + + if s <> '' then + FPreview.Preview.Zoom := frxStrToFloat(s) / 100; + end; + + UpdateZoom; +end; + +procedure TfEditorPreview.actToolHandExecute(Sender: TObject); +begin + if tbxMano.Checked then + FPreview.Preview.Tool := ptHand +end; + +procedure TfEditorPreview.actToolZoomExecute(Sender: TObject); +begin + if tbxZoom.Checked then + FPreview.Preview.Tool := ptZoom; +end; + +procedure TfEditorPreview.OnPageChanged(Sender: TfrxPreview; + PageNo: Integer); +var + FirstPass: Boolean; +begin + FirstPass := False; + if Sender.PreviewPages <> nil then + FirstPass := not Sender.PreviewPages.Engine.FinalPass; + + if FirstPass then + StatusBar.Panels[0].Text := frxResources.Get('clFirstPass') + + IntToStr(Sender.PageCount) + else + StatusBar.Panels[0].Text := Format(frxResources.Get('clPageOf'), + [PageNo, Sender.PageCount]); +end; + +constructor TfEditorPreview.Create(AOwner: TComponent); +begin + inherited; + + with cbZoom.Strings do + begin + Clear; + Add('25%'); + Add('50%'); + Add('75%'); + Add('100%'); + Add('150%'); + Add('200%'); + Add(frxResources.Get('zmPageWidth')); + Add(frxResources.Get('zmWholePage')); + end; + + FPreview := TfrViewPreview.Create(Self); + Report.Preview := FPreview.Preview; + FPreview.Preview.OnPageChanged := OnPageChanged; +end; + +procedure TfEditorPreview.Print; +begin + actImprimir.Execute; +end; + +function TfEditorPreview.ExportToFile: String; +var + AFile : String; +begin + Result := ''; + AFile := DarFicheroTIFFTemporal; + frxTIFFExport1.SeparateFiles := False; + frxTIFFExport1.DefaultPath := ExtractFilePath(AFile); + frxTIFFExport1.FileName := ExtractFileName(AFile); + try + if Report.Export(frxTIFFExport1) then + Result := AFile; + finally + frxTIFFExport1.DefaultPath := ''; + frxTIFFExport1.FileName := ''; + end; +end; + +procedure TfEditorPreview.LoadFromStream(AStream: TStream); +begin + Report.PreviewPages.LoadFromStream(AStream); +end; + +end. diff --git a/Base/uEditorUtils.pas b/Base/uEditorUtils.pas new file mode 100644 index 0000000..68b4b86 --- /dev/null +++ b/Base/uEditorUtils.pas @@ -0,0 +1,108 @@ +unit uEditorUtils; + +interface + +uses + uEditorItem, uDADataTable, Controls; + +type + TFuncItemEditor = function(ABizObject : TDADataTableRules) : TModalResult; + TProcItemEditor = procedure(ABizObject : TDADataTableRules); + TFuncGetEditor = function : IEditorItem; + + TEditorType = (etItem, etItems, etSelectItems); + +procedure RegisterEditor(const IID : TGUID; const AFuncItemEditor : TFuncItemEditor; + const AType : TEditorType); + +function ShowEditor(const IID : TGUID; ABizObject : TDADataTableRules; + const AType : TEditorType) : TModalResult; + + +implementation + +uses + Dialogs, Classes, ComObj, SysUtils; + +var + FBizEditorsList : TList; + +type + PBizEditorsRec = ^TBizEditorsRec; + TBizEditorsRec = record + IID : String; + ItemEditor : TFuncItemEditor; + ItemsEditor : TFuncItemEditor; + SelectItemsEditor : TFuncItemEditor; + end; + + +function FindBizEditors(const IID : TGUID) : PBizEditorsRec; +var + P: PBizEditorsRec; + I: Integer; + AIID : String; +begin + Result := NIL; + AIID := GUIDToString(IID); + if FBizEditorsList <> nil then + for I := 0 to FBizEditorsList.Count-1 do + begin + P := FBizEditorsList[I]; + if (AIID = P^.IID) then + begin + Result := P; + Break; + end; + end; +end; + +procedure RegisterEditor(const IID : TGUID; const AFuncItemEditor : TFuncItemEditor; + const AType : TEditorType); +var + P: PBizEditorsRec; +begin + P := NIL; + if FBizEditorsList = nil then + FBizEditorsList := TList.Create; + + P := FindBizEditors(IID); + if not Assigned(P) then + New(P); + try + P^.IID := GUIDToString(IID); + case AType of + etItem : P^.ItemEditor := AFuncItemEditor; + etItems : P^.ItemsEditor := AFuncItemEditor; + etSelectItems : P^.SelectItemsEditor := AFuncItemEditor; + end; + FBizEditorsList.Insert(0, P); + except + on E: EConvertError do + ShowMessage(E.Message); + end; +end; + +function ShowEditor(const IID : TGUID; ABizObject : TDADataTableRules; + const AType : TEditorType) : TModalResult; +var + P: PBizEditorsRec; +begin + P := FindBizEditors(IID); + + if Assigned(P) then + case AType of + etItem : Result := P.ItemEditor(ABizObject); + etItems : Result := P.ItemsEditor(ABizObject); + etSelectItems : Result := P.SelectItemsEditor(ABizObject); + end; +end; + + +initialization + FBizEditorsList := TList.Create; + +finalization + FBizEditorsList.Free; + +end. diff --git a/Base/uExceptions.pas b/Base/uExceptions.pas new file mode 100644 index 0000000..d3e6e85 --- /dev/null +++ b/Base/uExceptions.pas @@ -0,0 +1,20 @@ +unit uExceptions; + +interface + +uses + uDADataTable; + +const + AUF_FKVIOLATION = 'violation of FOREIGN KEY'; + AUF_HAVEVALUE = 'must have a value'; + +type + IApplyUpdateFailedException = interface + ['{B090A762-3D65-405E-A810-14DB4F6E8F82}'] + procedure ShowApplyUpdateFailed (const Error: EDAApplyUpdateFailed); + end; + +implementation + +end. diff --git a/Base/uSysFunc.pas b/Base/uSysFunc.pas new file mode 100644 index 0000000..f4c26f4 --- /dev/null +++ b/Base/uSysFunc.pas @@ -0,0 +1,249 @@ +{ +=============================================================================== + Copyright (©) 2002. Rodax Software. +=============================================================================== + Los contenidos de este fichero son propiedad de Rodax Software titular del + copyright. Este fichero sólo podrá ser copiado, distribuido y utilizado, + en su totalidad o en parte, con el permiso escrito de Rodax Software, o de + acuerdo con los términos y condiciones establecidas en el acuerdo/contrato + bajo el que se suministra. + ----------------------------------------------------------------------------- + Web: www.rodax-software.com +=============================================================================== + Fecha primera versión: 01-11-2002 + Versión actual: 1.0.0 + Fecha versión actual: 01-11-2002 +=============================================================================== + Modificaciones: + + Fecha Comentarios + --------------------------------------------------------------------------- +=============================================================================== +} + +unit uSysFunc; + +interface + +{ Funciones del sistema } +function Ejecutar (const LineaComando: String; Oculto, Esperar: Boolean) : Boolean; +function DarRutaTemporal : String; +function DarFicheroTemporal : String; +function DarFicheroBMPTemporal : String; +function DarFicheroTIFFTemporal : String; +function DarFicheroExportar (var Fichero : String) : Boolean; +function DarVersionFichero (Executable : String) : String; +function DarFechaFichero (Executable : String) : String; +procedure CopiarFichero(const Origen, Destino: string); +procedure DoDelTree( TheDir : String); +procedure Deltree(DirToKill : String; KillChoosenDir : Boolean); + + +implementation + +uses + SysUtils, Windows, Dialogs, + + Messages, Classes, Graphics, Controls, Forms, + StdCtrls; + +function Ejecutar (const LineaComando: String; Oculto, Esperar: Boolean): Boolean; +var + StartupInfo : TStartupInfo; + ProcessInfo : TProcessInformation; +begin + {setup the startup information for the application } + FillChar(StartupInfo, SizeOf(TStartupInfo), 0); + with StartupInfo do + begin + cb := SizeOf(TStartupInfo); + dwFlags:= STARTF_USESHOWWINDOW or STARTF_FORCEONFEEDBACK; + if Oculto then + wShowWindow:= SW_HIDE + else + wShowWindow:= SW_SHOWNORMAL; + end; + + Result := CreateProcess(nil,PChar(LineaComando), nil, nil, False, + NORMAL_PRIORITY_CLASS, nil, nil, StartupInfo, ProcessInfo); + if Esperar then + if Result then + begin + WaitForInputIdle(ProcessInfo.hProcess, INFINITE); + WaitForSingleObject(ProcessInfo.hProcess, INFINITE); + end; +end; + +function DarRutaTemporal: String; +var + nBufferLength : DWORD; // size, in characters, of the buffer + lpBuffer : PChar; // address of buffer for temp. path +begin + nBufferLength := MAX_PATH + 1; // initialize + GetMem( lpBuffer, nBufferLength ); + try + if GetTempPath( nBufferLength, lpBuffer ) <> 0 then + Result := StrPas( lpBuffer ) + else + Result := ''; + finally + FreeMem( lpBuffer ); + end; +end; + +function DarFicheroTemporal : String; +var + Buf: array [0..MAX_PATH] of Char; + RutaTmp : string; +begin + RutaTmp := DarRutaTemporal; + if GetTempFileName(PChar(RutaTmp), 'tmp', 0, Buf) <> 0 then + SetString(Result, Buf, StrLen(Buf)) + else + Result := ''; +end; + +function DarFicheroTIFFTemporal : String; +var + Cadena : String; +begin + Cadena := DarFicheroTemporal; + Result := Copy(Cadena, 0, (Length(Cadena)-3)) + 'tif'; +end; + +function DarFicheroBMPTemporal : String; +var + Cadena : String; +begin + Cadena := DarFicheroTemporal; + Result := Copy(Cadena, 0, (Length(Cadena)-3)) + 'bmp'; +end; + +function DarFicheroExportar (var Fichero : String) : Boolean; +var + DialogoSalvar : TSaveDialog; +begin + Result := False; + DialogoSalvar := TSaveDialog.Create(NIL); + try + with DialogoSalvar do + begin + DefaultExt := 'doc'; + Filter := 'Documento de Word (*.doc)|*.doc'; + FilterIndex := 0; + Options := [ofOverwritePrompt, ofHideReadOnly, ofPathMustExist, ofEnableSizing]; + end; + Result := DialogoSalvar.Execute; + if Result then + Fichero := DialogoSalvar.FileName; + finally + DialogoSalvar.Free; + end; +end; + +function DarVersionFichero (Executable : String) : String; +var + Size, Size2: DWord; + Pt, Pt2: Pointer; +begin + Size := GetFileVersionInfoSize(PChar (Executable), Size2); + if Size > 0 then + begin + GetMem (Pt, Size); + try + GetFileVersionInfo (PChar (Executable), 0, Size, Pt); + VerQueryValue (Pt, '\', Pt2, Size2); + with TVSFixedFileInfo (Pt2^) do + begin + Result:= IntToStr (HiWord (dwFileVersionMS)) + '.' + + IntToStr (LoWord (dwFileVersionMS)) + '.' + + IntToStr (HiWord (dwFileVersionLS)) + '.' + + IntToStr (LoWord (dwFileVersionLS)); + end; + finally + FreeMem (Pt); + end; + end; +end; + +function DarFechaFichero (Executable : String) : String; +var + FileTime, LocalFileTime : TFileTime; + SystemTime : TSystemTime; + hFile : Integer; +begin + hFile := FileOpen(Executable, fmShareDenyNone); + try + if hFile <> -1 then + begin + Windows.GetFileTime( hFile, nil, nil, @FileTime ); // ftLasWriteTime + // Change the file time to local time + FileTimeToLocalFileTime( FileTime, LocalFileTime ); + if FileTimeToSystemTime(LocalFileTime, SystemTime) then + Result := DateTimeToStr(SystemTimeToDateTime(SystemTime)); + end; // if hFile <> 0 + finally + FileClose( hFile ); + end; // try +end; + + +procedure CopiarFichero(const Origen, Destino: string); +var + lpMsgBuf : pchar; +begin + CopyFile(PChar(Origen), PChar(Destino), FALSE); +end; + +procedure DoDelTree(TheDir : String); + Var + Search : TSearchRec; + rec : word; +Begin + If TheDir[Length(TheDir)] <> '\' Then TheDir := TheDir + '\'; + rec := SysUtils.FindFirst(TheDir + '*.*', faAnyFile, Search); + While rec = 0 Do + Begin + If Search.Name[1] <> '.' Then + Begin +// Is this a directory? + If (Search.Attr And faDirectory) = faDirectory Then + Begin +// If so, lets call DelTree again using this new +// directory as the TheDir parameter. + DoDelTree(TheDir + Search.Name); +// Not that all of the files are gone from this directoy, +// we can remove the directory. + RmDir(TheDir + Search.Name); + End + Else + Begin +// We found a file. +// Now lets reset its attributes so we don't have any problems +// deleting them. + SysUtils.FileSetAttr(TheDir + Search.Name, 0); + SysUtils.DeleteFile(TheDir + Search.Name); + Application.ProcessMessages; + End; + End; + rec := SysUtils.FindNext(Search); + End; + SysUtils.FindClose(Search); +End; + +procedure Deltree(DirToKill : String; KillChoosenDir : Boolean); +begin +{$I-} + DoDelTree(DirToKill); +// If we want to delete the choosen directory. + If KillChoosenDir Then + RmDir(DirToKill); + //modified + if IOResult <> 0 then + ShowMessage('Could not delete ' + DirToKill); +//{$I} +end; + + +end. + \ No newline at end of file diff --git a/Base/uVentanaEspera.dfm b/Base/uVentanaEspera.dfm new file mode 100644 index 0000000..99ef5e0 --- /dev/null +++ b/Base/uVentanaEspera.dfm @@ -0,0 +1,28 @@ +object Form1: TForm1 + Left = 825 + Top = 391 + Width = 299 + Height = 129 + Caption = 'Form1' + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + Position = poOwnerFormCenter + OnClose = FormClose + OnHide = FormHide + OnShow = FormShow + PixelsPerInch = 96 + TextHeight = 13 + object JvAnimate1: TJvAnimate + Left = 8 + Top = 16 + Width = 272 + Height = 60 + CommonAVI = aviCopyFiles + StopFrame = 81 + end +end diff --git a/Base/uVentanaEspera.pas b/Base/uVentanaEspera.pas new file mode 100644 index 0000000..6aa5947 --- /dev/null +++ b/Base/uVentanaEspera.pas @@ -0,0 +1,52 @@ +unit uVentanaEspera; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, StdCtrls, ComCtrls, JvExComCtrls, JvAnimate; + +type + TForm1 = class(TForm) + JvAnimate1: TJvAnimate; + procedure FormClose(Sender: TObject; var Action: TCloseAction); + procedure FormShow(Sender: TObject); + procedure FormHide(Sender: TObject); + private + { Private declarations } + public + { Public declarations } + end; + +var + Form1: TForm1; + +implementation + +{$R *.dfm} + +procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); +begin + Action := caFree; +end; + +procedure TForm1.FormShow(Sender: TObject); +begin + if not JvAnimate1.Active then + JvAnimate1.Active := True; +end; + +procedure TForm1.FormHide(Sender: TObject); +begin + JvAnimate1.Active := False +end; + +initialization +// Application.CreateForm(TForm1, Form1); + +finalization +{ if Assigned(Form1) then + Form1.Close;} + +end. + \ No newline at end of file diff --git a/Base/uViewBarraSeleccion.ddp b/Base/uViewBarraSeleccion.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Base/uViewBarraSeleccion.ddp differ diff --git a/Base/uViewBarraSeleccion.dfm b/Base/uViewBarraSeleccion.dfm new file mode 100644 index 0000000..cf83624 --- /dev/null +++ b/Base/uViewBarraSeleccion.dfm @@ -0,0 +1,53 @@ +inherited frViewBarraSeleccion: TfrViewBarraSeleccion + Width = 439 + Height = 19 + Align = alBottom + AutoScroll = False + Visible = False + object pnlSeleccion: TPanel + Left = 0 + Top = -18 + Width = 439 + Height = 37 + Align = alBottom + BevelOuter = bvNone + ParentBackground = True + TabOrder = 0 + DesignSize = ( + 439 + 37) + object bSeleccionar: TButton + Left = 264 + Top = 7 + Width = 74 + Height = 23 + Action = actSeleccionar + Anchors = [akRight] + Default = True + ModalResult = 1 + TabOrder = 0 + end + object bCancelar: TButton + Left = 343 + Top = 7 + Width = 74 + Height = 23 + Action = actCancelar + Anchors = [akRight] + Cancel = True + ModalResult = 2 + TabOrder = 1 + end + end + object ActionListSeleccion: TActionList + Left = 8 + Top = 5 + object actSeleccionar: TAction + Caption = '&Seleccionar' + end + object actCancelar: TAction + Caption = '&Cancelar' + OnExecute = actCancelarExecute + end + end +end diff --git a/Base/uViewBarraSeleccion.pas b/Base/uViewBarraSeleccion.pas new file mode 100644 index 0000000..b09d87f --- /dev/null +++ b/Base/uViewBarraSeleccion.pas @@ -0,0 +1,37 @@ +unit uViewBarraSeleccion; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, StdCtrls, ActnList, ExtCtrls; + +type + TfrViewBarraSeleccion = class(TfrViewBase) + pnlSeleccion: TPanel; + bSeleccionar: TButton; + bCancelar: TButton; + ActionListSeleccion: TActionList; + actSeleccionar: TAction; + actCancelar: TAction; + procedure actCancelarExecute(Sender: TObject); + private + { Private declarations } + public + { Public declarations } + end; + +var + frViewBarraSeleccion: TfrViewBarraSeleccion; + +implementation + +{$R *.dfm} + +procedure TfrViewBarraSeleccion.actCancelarExecute(Sender: TObject); +begin + inherited; + // +end; + +end. diff --git a/Base/uViewBase.ddp b/Base/uViewBase.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Base/uViewBase.ddp differ diff --git a/Base/uViewBase.dfm b/Base/uViewBase.dfm new file mode 100644 index 0000000..a3d96f0 --- /dev/null +++ b/Base/uViewBase.dfm @@ -0,0 +1,14 @@ +object frViewBase: TfrViewBase + Left = 0 + Top = 0 + Width = 302 + Height = 222 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 0 + ReadOnly = False +end diff --git a/Base/uViewBase.pas b/Base/uViewBase.pas new file mode 100644 index 0000000..f553ac3 --- /dev/null +++ b/Base/uViewBase.pas @@ -0,0 +1,33 @@ +unit uViewBase; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uGUIBase, uCustomView, JvComponent, JvFormAutoSize; + +type + IViewInicio = interface(ICustomView) + ['{B567620D-8FE7-4ADC-B9BD-AFC639ED1923}'] + function Control : TControl; + end; + + IViewBase = interface(ICustomView) + ['{E1E559AC-31E8-4E5F-8655-428D12467518}'] + end; + + TfrViewBase = class(TCustomView, IViewBase) + published + property Modified; + property OnGetModified; + property ReadOnly; + property Valid; + end; + +implementation + +{$R *.dfm} + +{ TfrViewBase } + +end. diff --git a/Base/uViewCategorias.dfm b/Base/uViewCategorias.dfm new file mode 100644 index 0000000..623a8d8 --- /dev/null +++ b/Base/uViewCategorias.dfm @@ -0,0 +1,20 @@ +inherited frViewCategorias: TfrViewCategorias + Width = 256 + object DBGrid1: TDBGrid [0] + Left = 8 + Top = 8 + Width = 241 + Height = 121 + DataSource = DADataSource + TabOrder = 0 + TitleFont.Charset = DEFAULT_CHARSET + TitleFont.Color = clWindowText + TitleFont.Height = -11 + TitleFont.Name = 'MS Sans Serif' + TitleFont.Style = [] + end + object DADataSource: TDADataSource + Left = 8 + Top = 136 + end +end diff --git a/Base/uViewCategorias.pas b/Base/uViewCategorias.pas new file mode 100644 index 0000000..d71838a --- /dev/null +++ b/Base/uViewCategorias.pas @@ -0,0 +1,30 @@ +unit uViewCategorias; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, StdCtrls, DBCtrls, DB, uDADataTable, Grids, DBGrids, + JvComponent, JvFormAutoSize; + +type + TfrViewCategorias = class(TfrViewBase) + DADataSource: TDADataSource; + DBGrid1: TDBGrid; + end; + +var + frViewCategorias: TfrViewCategorias; + +implementation + +{$R *.dfm} + +initialization + RegisterClass(TfrViewCategorias); + +finalization + + UnRegisterClass(TfrViewCategorias); + +end. diff --git a/Base/uViewContenido.dfm b/Base/uViewContenido.dfm new file mode 100644 index 0000000..dc488e6 --- /dev/null +++ b/Base/uViewContenido.dfm @@ -0,0 +1,182 @@ +inherited frViewContenido: TfrViewContenido + Width = 443 + Height = 270 + Align = alClient + object cxGrid: TcxGrid + Left = 0 + Top = 25 + Width = 443 + Height = 245 + Align = alClient + TabOrder = 0 + LookAndFeel.Kind = lfOffice11 + LookAndFeel.NativeStyle = True + object cxGridView: TcxGridDBTableView + NavigatorButtons.ConfirmDelete = False + FilterBox.Visible = fvNever + DataController.DataSource = DADataSource + DataController.Filter.Options = [fcoCaseInsensitive] + DataController.Options = [dcoAnsiSort, dcoAssignGroupingValues, dcoAssignMasterDetailKeys, dcoSaveExpanding, dcoSortByDisplayText, dcoFocusTopRowAfterSorting] + DataController.Summary.DefaultGroupSummaryItems = <> + DataController.Summary.FooterSummaryItems = < + item + Format = ',0.00 '#8364';-,0.00 '#8364 + Kind = skSum + end> + DataController.Summary.SummaryGroups = <> + OptionsBehavior.AlwaysShowEditor = True + OptionsBehavior.CellHints = True + OptionsBehavior.FocusCellOnTab = True + OptionsBehavior.GoToNextCellOnEnter = True + OptionsBehavior.BestFitMaxRecordCount = 20 + OptionsBehavior.FocusCellOnCycle = True + OptionsCustomize.ColumnFiltering = False + OptionsCustomize.ColumnGrouping = False + OptionsCustomize.ColumnMoving = False + OptionsCustomize.ColumnSorting = False + OptionsCustomize.DataRowSizing = True + OptionsData.Appending = True + OptionsSelection.MultiSelect = True + OptionsSelection.UnselectFocusedRecordOnExit = False + OptionsView.CellEndEllipsis = True + OptionsView.CellAutoHeight = True + OptionsView.ColumnAutoWidth = True + OptionsView.Footer = True + OptionsView.GridLineColor = cl3DLight + OptionsView.GroupByBox = False + OptionsView.HeaderEndEllipsis = True + OptionsView.Indicator = True + OptionsView.NewItemRowInfoText = 'Click here to add a new row' + Styles.ContentEven = cxStyleEven + Styles.ContentOdd = cxStyleOdd + Styles.Inactive = cxStyleSelection + Styles.Selection = cxStyleSelection + end + object cxGridLevel: TcxGridLevel + GridView = cxGridView + end + end + object ToolBar1: TToolBar + Left = 0 + Top = 0 + Width = 443 + Height = 25 + Caption = 'ToolBar1' + EdgeBorders = [] + EdgeInner = esNone + EdgeOuter = esNone + Flat = True + Images = ContenidoImageList + List = True + ShowCaptions = True + TabOrder = 1 + end + object ActionListContenido: TActionList + Left = 8 + Top = 104 + object actAnadir: TAction + Caption = 'A'#241'adir' + ImageIndex = 0 + OnExecute = actAnadirExecute + end + object actEliminar: TAction + Caption = 'Eliminar' + ImageIndex = 1 + OnExecute = actEliminarExecute + OnUpdate = actEliminarUpdate + end + object actSubir: TAction + Caption = 'Subir' + ImageIndex = 2 + OnExecute = actSubirExecute + OnUpdate = actSubirUpdate + end + object actBajar: TAction + Caption = 'Bajar' + ImageIndex = 3 + OnExecute = actBajarExecute + OnUpdate = actBajarUpdate + end + end + object DADataSource: TDADataSource + DataTable = dmPresupuestos.tbl_DetallesPresupuestos + Left = 8 + Top = 136 + end + object ContenidoImageList: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000000D04944415478DA + 6364C0062630FCC72A5EC0C0882EC488CB80191909706EDDBA750CAF767D6260 + 5830240DF8F9FB3743EBE6CD780CC011602003409A7F0071EF8E1D10030C30D5 + 31A23B1706609AB1E23F7FC0F4FA2967B01B408CE6A3B76E815D856100319ABF + FFFAC570EEC103540340218D0C92EDECE01AD79E398335ACE106305CC0942CAC + 77871BB0F5E2454820620138A331D3CB09EEECBD57AF929E0E629DADC106FCF9 + F70F1E602419106A67C6F01DE40260805D7AFC9874037C2C0D194EDDBD8B1260 + 241900A6D103178B01000648ED7B1FCA93F30000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD2520000006E4944415478DA + 63FCFFFF3F03258071D40006C6397A1214990036203925952CCD73E7CCC66100 + C85BBF7F32307CFDC4C0F0FD2B03C33710FD05487F46E0374F19E6FE964032E0 + CF6F840120CD200D5F3F43357E42F0416C90013FBFA119B0B099742FC00CA028 + 10073E1D0C7D030077CE5E397DD56C480000000049454E44AE426082} + Name = 'PngImage1' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000000E14944415478DA + 63FCFFFF3F032580717019C0C8C88822E9D770F9FFA6065D1441740B711A00D2 + 1C1DA5CA307DC64586037DE68C241900D3FCF10B23C39123CF19AE5EBECF7076 + B623235106206BFEF899114C3FBAFB94E1C4D1AB0CB7567A33E235C0BFF1CAFF + 9F3F7F3380B0B7BF2158F3BB8F4C0C7B36EE60F8F9E317C30F207EB1238C91A0 + 17AC728EFC77F234076BFEF2E631C3C1BDE7191E6E0C24CE0B20609CBAFFBFB9 + A31DD0004606B6DF8F18766E3DC9F0726738F106E8C6EFFA6F68AC0617DFB8F6 + 30C3C783B1C41BA016BEF53FCCCF30FCF364326103C801C3C00000BEA5B3E15D + 7F64240000000049454E44AE426082} + Name = 'PngImage2' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000000DF4944415478DA + 63FCFFFF3F032580717019C0C8C808A643DA6E80057FFDFACDF0F327041FE833 + 074BA25B88D380982805869FBF18183E7E61645830EF34C3B12936C41BE0D770 + F97F74942A58F39123CF19AE5EBECF7076B623F106B8579EFB1F1CAACDF0F133 + 23C3E58BCF18CE9FBDC57079A11B6103FC1BAFFC87F9D9DBDF10EC8247779F32 + 9C387A95E1E78F5F0C3F80F8C58E3046BC2E70283AF91FA6F9DD472620666460 + FBFD8861E7D6930C2F77863312E505E3D4FDFFCD1DED3034131D0620A016BEF5 + BF85B5368A66920C000171F795FF91351334801C300C0C00007FBCB4E1E577C7 + 9A0000000049454E44AE426082} + Name = 'PngImage3' + Background = clWindow + end> + Left = 8 + Top = 64 + Bitmap = {} + end + object cxStyleRepository: TcxStyleRepository + Left = 8 + Top = 168 + object cxStyleEven: TcxStyle + end + object cxStyleOdd: TcxStyle + AssignedValues = [svColor] + Color = 16119285 + end + object cxStyleSelection: TcxStyle + AssignedValues = [svColor, svTextColor] + Color = clHighlight + TextColor = clHighlightText + end + end +end diff --git a/Base/uViewContenido.pas b/Base/uViewContenido.pas new file mode 100644 index 0000000..cc3175e --- /dev/null +++ b/Base/uViewContenido.pas @@ -0,0 +1,134 @@ +unit uViewContenido; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, cxStyles, ComCtrls, ToolWin, ActnList, cxCustomData, + cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, DB, cxDBData, + uDADataTable, cxGridLevel, cxClasses, cxControls, cxGridCustomView, + cxGridCustomTableView, cxGridTableView, cxGridDBTableView, ImgList, + PngImageList, cxGrid; + +type + IViewContenido = interface(IViewBase) + ['{AF7F3CD1-3CD1-4F87-A4B4-FCB1320104F7}'] + end; + + TfrViewContenido = class(TfrViewBase, IViewContenido) + ActionListContenido: TActionList; + cxGrid: TcxGrid; + cxGridView: TcxGridDBTableView; + cxGridLevel: TcxGridLevel; + DADataSource: TDADataSource; + actAnadir: TAction; + actEliminar: TAction; + actSubir: TAction; + actBajar: TAction; + ContenidoImageList: TPngImageList; + ToolBar1: TToolBar; + cxStyleRepository: TcxStyleRepository; + cxStyleEven: TcxStyle; + cxStyleOdd: TcxStyle; + cxStyleSelection: TcxStyle; + procedure actAnadirExecute(Sender: TObject); + procedure actEliminarExecute(Sender: TObject); + procedure actEliminarUpdate(Sender: TObject); + procedure actSubirUpdate(Sender: TObject); + procedure actBajarExecute(Sender: TObject); + procedure actBajarUpdate(Sender: TObject); + procedure actSubirExecute(Sender: TObject); + private + protected + public + end; + +implementation + +uses uBizImportesDetalleBase, uDAInterfaces; + +{$R *.dfm} + +procedure TfrViewContenido.actAnadirExecute(Sender: TObject); +begin + inherited; + if Assigned(DADataSource.DataTable) then + DADataSource.DataTable.Insert +end; + +procedure TfrViewContenido.actEliminarExecute(Sender: TObject); +begin + inherited; + { Este cambio nos permite poder eliminar varios conceptos de una sola vez + y no de uno en uno como antes. } + with cxGrid.ActiveView.DataController do + begin + DeleteSelection; + SelectRows(FocusedRowIndex, FocusedRowIndex); + end; + +{ if Assigned(DADataSource.DataTable) then + DADataSource.DataTable.Delete;} +end; + +procedure TfrViewContenido.actEliminarUpdate(Sender: TObject); +begin + if Assigned(DADataSource.DataTable) then + (Sender as TAction).Enabled := (not DADataSource.DataTable.IsEmpty) + else + (Sender as TAction).Enabled := False; +end; + +procedure TfrViewContenido.actSubirUpdate(Sender: TObject); +begin + inherited; + if Assigned(cxGridView.Controller.FocusedRow) then + (Sender as TAction).Enabled := not (cxGridView.Controller.FocusedRow.IsFirst) + else + (Sender as TAction).Enabled := False; +end; + +procedure TfrViewContenido.actBajarExecute(Sender: TObject); +var + AField : TDAField; +begin + inherited; + if Assigned(DADataSource.DataTable) then + begin + AField := DADataSource.DataTable.FindField(fld_POSICION); + // Por si el registro está recién insertado y la posición todavía + // no ha sido asignada. + if (AField.AsInteger < 0) then + DADataSource.DataTable.Post; + + IntercambiarPosiciones(DADataSource.DataTable, AField.AsInteger, AField.AsInteger + 1); + end; +end; + +procedure TfrViewContenido.actBajarUpdate(Sender: TObject); +begin + inherited; + if Assigned(cxGridView.Controller.FocusedRow) then + (Sender as TAction).Enabled := not (cxGridView.Controller.FocusedRow.IsLast) + else + (Sender as TAction).Enabled := False; +end; + +procedure TfrViewContenido.actSubirExecute(Sender: TObject); +var + AField : TDAField; +begin + inherited; + if Assigned(DADataSource.DataTable) then + begin + AField := DADataSource.DataTable.FindField(fld_POSICION); + // Por si el registro está recién insertado y la posición todavía + // no ha sido asignada. + if (AField.AsInteger < 0) then + DADataSource.DataTable.Post; + + IntercambiarPosiciones(DADataSource.DataTable, AField.AsInteger, AField.AsInteger - 1); + end; +end; + +end. diff --git a/Base/uViewDetallesFamilias.ddp b/Base/uViewDetallesFamilias.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Base/uViewDetallesFamilias.ddp differ diff --git a/Base/uViewDetallesFamilias.dfm b/Base/uViewDetallesFamilias.dfm new file mode 100644 index 0000000..a267c07 --- /dev/null +++ b/Base/uViewDetallesFamilias.dfm @@ -0,0 +1,430 @@ +inherited frViewDetallesFamilias: TfrViewDetallesFamilias + Width = 638 + inherited cxGrid: TcxGrid + Top = 22 + Width = 638 + Height = 248 + inherited cxGridView: TcxGridDBTableView + OnEditing = cxGridViewEditing + OptionsView.Footer = False + object cxGridViewPOSICION: TcxGridDBColumn + DataBinding.FieldName = 'POSICION' + Visible = False + SortIndex = 0 + SortOrder = soAscending + end + object cxGridViewTIPO: TcxGridDBColumn + DataBinding.FieldName = 'TIPO' + PropertiesClassName = 'TcxImageComboBoxProperties' + Properties.Images = TipoPngImageList + Properties.Items = < + item + Description = 'Concepto' + ImageIndex = 0 + Value = 'C' + end + item + Description = 'T'#237'tulo de cap'#237'tulo' + ImageIndex = 1 + Tag = 1 + Value = 'T' + end + item + Description = 'Total de cap'#237'tulo' + ImageIndex = 2 + Tag = 2 + Value = 'S' + end> + Properties.LargeImages = TipoPngImageList + BestFitMaxWidth = 64 + Styles.OnGetContentStyle = cxGridViewTIPOStylesGetContentStyle + Width = 56 + end + object cxGridViewDESCRIPCION: TcxGridDBColumn + DataBinding.FieldName = 'DESCRIPCION' + PropertiesClassName = 'TcxTextEditProperties' + Styles.OnGetContentStyle = cxGridViewTIPOStylesGetContentStyle + Width = 224 + end + object cxGridViewCANTIDAD: TcxGridDBColumn + DataBinding.FieldName = 'CANTIDAD' + PropertiesClassName = 'TcxMaskEditProperties' + BestFitMaxWidth = 64 + HeaderAlignmentHorz = taRightJustify + Styles.OnGetContentStyle = cxGridViewTIPOStylesGetContentStyle + Width = 130 + end + object cxGridViewIMPORTEUNIDAD: TcxGridDBColumn + DataBinding.FieldName = 'IMPORTEUNIDAD' + PropertiesClassName = 'TcxTextEditProperties' + Properties.Alignment.Horz = taRightJustify + BestFitMaxWidth = 120 + HeaderAlignmentHorz = taRightJustify + Styles.OnGetContentStyle = cxGridViewTIPOStylesGetContentStyle + Width = 130 + end + object cxGridViewIMPORTETOTAL: TcxGridDBColumn + DataBinding.FieldName = 'IMPORTETOTAL' + PropertiesClassName = 'TcxTextEditProperties' + Properties.Alignment.Horz = taRightJustify + Properties.ReadOnly = True + BestFitMaxWidth = 120 + HeaderAlignmentHorz = taRightJustify + Options.Editing = False + Styles.Content = cxStyle_IMPORTETOTAL + Styles.OnGetContentStyle = cxGridViewTIPOStylesGetContentStyle + Width = 130 + end + object cxGridViewVISIBLE: TcxGridDBColumn + Caption = 'Visible' + DataBinding.FieldName = 'VISIBLE' + PropertiesClassName = 'TcxCheckBoxProperties' + Properties.DisplayChecked = 'S' + Properties.DisplayUnchecked = 'N' + Properties.Glyph.Data = { + 92030000424D9203000000000000920100002800000020000000100000000100 + 08000000000000020000120B0000120B0000570000005700000000000000FFFF + FF0040384000703840008048500090586000C0606000A0505000804040006030 + 30009050500070404000A060600090606000A0707000B0808000C09090004030 + 3000E0B0B000B0909000FFF0F000FF787000E0787000C0686000FF9890009048 + 4000A0585000D0888000E0989000E0706000FF80700080484000A0686000FFA0 + 9000FF887000B060500070484000FFB0A000C0989000D0A8A000E0B8B000FF98 + 8000A0605000FFC0B000F0C0B00080686000F0D8D000B0908000E0C8B000E0D8 + D000FFE0C000FFF8F000F0E0C000FFF0D000FFF8E00020283000FEFEFE00FAFA + FA00F7F7F700F3F3F300F1F1F100F0F0F000EDEDED00EAEAEA00E7E7E700E6E6 + E600E3E3E300E0E0E000DADADA00D7D7D700D3D3D300D0D0D000CDCDCD00C9C9 + C900C6C6C600C4C4C400C3C3C300C0C0C000BEBEBE00BCBCBC00B9B9B900B7B7 + B700B3B3B300AEAEAE00ACACAC00A6A6A600FFFFFF0056565656565656565656 + 5656565656565656565656565656565656565656565656565656565656565656 + 5656565656565656565656565656565656565656565656565656565656565656 + 5656565656565656565656565656565656565656565656565656565656565656 + 5656565656565656565656565656565656565656565656565656404040444C4C + 463D5656565656565656122830262D2D2F325656565644444444433E4145474A + 50463B404456101010102734181D061A242F35122656564646443A3F434A544C + 49493A3C4646560F0F10362C1507110A2320362E0F0F56564845394341535554 + 44473944484856560E13331C21023711161714260E0E5656564A3E403E38544A + 4344464B4B565656560D31122B01111A1E1B0F050556565656564E49423F4343 + 434A4E4E565656565656040C2925221E1E2A04045656565656565650504F4D4F + 50505056565656565656560B0B1F19080B0B0B56565656565656565652505151 + 505656565656565656565656090B03030B565656565656565656565656565656 + 5656565656565656565656565656565656565656565656565656565656565656 + 5656565656565656565656565656565656565656565656565656565656565656 + 5656565656565656565656565656565656565656565656565656565656565656 + 56565656565656565656565656565656565656565656} + Properties.GlyphCount = 2 + Properties.ImmediatePost = True + Properties.NullStyle = nssUnchecked + Properties.ValueChecked = 'S' + Properties.ValueUnchecked = 'N' + end + end + end + inherited ToolBar1: TToolBar + Width = 638 + Height = 22 + ButtonWidth = 105 + object ToolButton1: TToolButton + Left = 0 + Top = 0 + Action = actAnadirCap + AutoSize = True + end + object ToolButton2: TToolButton + Left = 102 + Top = 0 + Action = actAnadir + AutoSize = True + end + object ToolButton7: TToolButton + Left = 211 + Top = 0 + Width = 8 + Caption = 'ToolButton7' + ImageIndex = 5 + Style = tbsSeparator + end + object ToolButton3: TToolButton + Left = 219 + Top = 0 + Action = actEliminar + AutoSize = True + end + object ToolButton4: TToolButton + Left = 286 + Top = 0 + Width = 8 + Caption = 'ToolButton4' + ImageIndex = 3 + Style = tbsSeparator + end + object ToolButton5: TToolButton + Left = 294 + Top = 0 + Action = actSubir + AutoSize = True + end + object ToolButton6: TToolButton + Left = 349 + Top = 0 + Action = actBajar + AutoSize = True + end + object ToolButton8: TToolButton + Left = 405 + Top = 0 + Width = 8 + Caption = 'ToolButton8' + ImageIndex = 4 + Style = tbsSeparator + end + object ToolButton9: TToolButton + Left = 413 + Top = 0 + Action = actRecalcular + AutoSize = True + end + end + inherited ActionListContenido: TActionList + Images = ContenidoImageList + object actAnadirCap: TAction [0] + Caption = 'A'#241'adir cap'#237'tulo' + ImageIndex = 5 + OnExecute = actAnadirCapExecute + end + inherited actAnadir: TAction + Caption = 'A'#241'adir concepto' + ImageIndex = 4 + end + object actRecalcular: TAction + Caption = 'Recalcular' + ImageIndex = 6 + OnExecute = actRecalcularExecute + end + end + inherited ContenidoImageList: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000000E14944415478DA + 63FCFFFF3F032580717019C0C8C8086787B4DDF8FFEBD76F869F3F7F33EC6C37 + 824BA05B88D300BF86CBFFA3A35419A6CFB8C870A0CF9C7403DC2BCFFD8F88D4 + 66983DEB34C3B12936C41910DA7E13EE6C100E0D37609837E7180358EC0708FF + 6278B0218011A701FE8D57C0CEFEF68391E1DB770630FD1D88BF7C07E26F8C0C + 6B17AE6178B1230CB7011E55E7FF836C86B9C23FC48661C9BC5D609B7F40F187 + 0331B80D400E03DDF85DFF3D039D1856CEDFCCF0706320E981A816BEF5BF8BBF + 07D8D92F7786936E80BCFFFAFF30677F3C184B9C01E480616000007F3BB6E1E0 + 0AF3B40000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000000714944415478DA + 63FCFFFF3F03258071D4002A1B10DA7E13CC01897DFDFA83E1DBB71F60FAFBB7 + 9F0C9F3F7F03E3F7FBA219F11A1013A500E77FFCCCC8F0EA1D23C38BB74C0CCF + 5E3131AC9E3397E1F7E914DC0684B4DDF88FCBE62F9FBF33FCF9F397E1FFF974 + DC060C7C208E1A401E0000EFE473E127272ED00000000049454E44AE426082} + Name = 'PngImage1' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000000E14944415478DA + 63FCFFFF3F032580717019C0C8C88822E9D770F9FFA6065D1441740B711A00D2 + 1C1DA5CA307DC64586037DE68C241900D3FCF10B23C39123CF19AE5EBECF7076 + B623235106206BFEF899114C3FBAFB94E1C4D1AB0CB7567A33E235C0BFF1CAFF + 9F3F7F3380B0B7BF2158F3BB8F4C0C7B36EE60F8F9E317C30F207EB1238C91A0 + 17AC728EFC77F234076BFEF2E631C3C1BDE7191E6E0C24CE0B20609CBAFFBFB9 + A31DD0004606B6DF8F18766E3DC9F0726738F106E8C6EFFA6F68AC0617DFB8F6 + 30C3C783B1C41BA016BEF53FCCCF30FCF364326103C801C3C00000BEA5B3E15D + 7F64240000000049454E44AE426082} + Name = 'PngImage2' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000000DF4944415478DA + 63FCFFFF3F032580717019C0C8C808A643DA6E80057FFDFACDF0F327041FE833 + 074BA25B88D380982805869FBF18183E7E61645830EF34C3B12936C41BE0D770 + F97F74942A58F39123CF19AE5EBECF7076B623F106B8579EFB1F1CAACDF0F133 + 23C3E58BCF18CE9FBDC57079A11B6103FC1BAFFC87F9D9DBDF10EC8247779F32 + 9C387A95E1E78F5F0C3F80F8C58E3046BC2E70283AF91FA6F9DD472620666460 + FBFD8861E7D6930C2F77863312E505E3D4FDFFCD1DED3034131D0620A016BEF5 + BF85B5368A66920C000171F795FF91351334801C300C0C00007FBCB4E1E577C7 + 9A0000000049454E44AE426082} + Name = 'PngImage3' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000002354944415478DA + 9D93DF4B936114C73FEF9CDB9C947A23A546E185062E4308122AB5488942A18B + A2A228229088EEBA0B83EECCCBCAEA1FA8ABD29B0CACB0FC1176538ACA963FA6 + A2AEF9966E6E367CF7EEDDF3F4CEB5B4B640FAC281E7E19CF339E73987479152 + 92D2A34BCAC6650B9A8FD4A0A40089E42BCDE941D128E85AD212E7A896B48F83 + 9B00FF939CB703C6BC26A0FD22D25AB0F5B68DE0467242EB804CD535B352DF32 + DC5C75B2737B1E617D8D79DF0ACD53605FAEA1B6AA8FDEA15F1D24DE9249B3B9 + 2B6837B2B853DD4457749496960ECE8D5772F9C0C8BAFF3720530709B97F404B + EE3E6E1D69E04DC0C3BDD6573CC986DD0EFE0DE80F43DC489E8716E175693977 + 8F37D1A90E71FFF65BAE9AF32ACB379D0246A7F7A7034A3C4E6A5DE568868112 + 55282B2DA4B278179EC0570606A6D0A5412CC7C062B130F9594D071CF617F2F0 + CC35A2C4889B65E644800955C52A159CDBEC84D734739506934195DEC75FD201 + F5C162AE379EE4933A8B61221CD2865D5AF9160AE38F8430AC122104B3A12526 + 9E2F86FE00E83AB8A60BC8D31CB8BD7E8840757D298D27AA189CF4F2B27B98AC + A0056C906DCB425F886F74D0FEC0BE0E99710884397DCC389F90F8CE17D15053 + C188DF47F7B331EADC7BE8B14DD791F80139C495B6B3F68E40ECE0E94C6B5C72 + 4418BCB0485D4539E30195F79D1E0C8FA8902FA43B15A36CFE8D7F4B69558EBA + F616F714951430B3FA9D85FE006BC3B163B243BEDB1AA04D39E4CCB775E95E03 + 2324B0080B22224EC9A7F2432AE627BA3D288D657888700000000049454E44AE + 426082} + Name = 'PngImage4' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000B3A00000B3A01647F570D000002604944415478DA + 8DD25B48D35100C7F1EF7FEA9C96A60F4A362DF141C399E59BD05D4ABA5A60D9 + 5BF8522F4119F4926610425A4F121145CFF5605E085C299A5D347AE8E2D0E5C8 + B55AA5CD69CD369DEEF2DFFFF4DFC4E122B3DFDBE19CF3F9712E5273C3C54AA0 + 95D81CABA96F6C638508219054409C3AAE8D99B8FB20F05FC8B2C012E4AF5161 + 694560B984E16501CFAC60D01262D4AE44C69FA46FB46418C94A4DC3139C637C + 7C9AD3C12AF2A49CC8FCB94B57A518E0F96B1969D645D906071AB5A3F797933B + B93E2E975660F40F535FDFCEC3555964DA1DF45931D70E884D5120DC6EECD772 + 247788345D00110A31ECF9495DF60C17B697D3E3B270ADE9112F9232E97F3269 + 56FB8EAA802D0A2CB627660C1394154420C0E0948BC7C5095CD953418773901B + 75BD9C55774ECCD2D5524813A98422C089FD09D1F6FCA94E761615E09355D02F + 919F9749B13E078BEB3B03031F09089960928C46A3C1FACEB97089F9B99A85B3 + 677FA174CEC4CDAA6AFC0409A1F0557131EA74122F24925312F1CCFBF0FB64AC + D34E7A6E9BDD1160F35A1729B66E821376CE1FD273A6F2006F9D766495D0092D + 89229E49B70787D78D1C2F501405BBFB07A3AD130B80B7AB31FACEB7AAD359E3 + D331627380174AF7E671785F09AFAC363ABB4DC44D6B407DB4046D1C81B11052 + F8332C8D542B6DE30D71E822C32D2527D73797EF3030E418A7FBBE19C5A4D4B0 + 1A13E16D49EA25FE09C4600D52A1A144FF7E97A1800F2E27CF3A2CC816C520DA + C44874CD3F81266977D1467DDFBAEC743ECF4C31D6EF62DE142C13EDE2E9FF01 + D7A5ADC9695A63C02623BB15348A06C5AB1C14F7C4CBC535BF015419481881D7 + D75A0000000049454E44AE426082} + Name = 'PngImage5' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001974944415478DA + 63FCFFFF3F43E6CC1FFD37181E163090003418E4274C4FE728640419E038F3E6 + 7F85130788D6CC671BCF70785511C3B91DD318510C489DAA8BA1F8C7D71F0CDF + BE7E63F8FEFD3BC3F7AFDF198E6F956738FADA8481E54E297E03FEFEFE0BD608 + D6FC0DA2F9CFEF3F0C170E68E03680434183282F6035205E5B99E1FB4F6465FF + 187EFCFAC9C0C2CC0914FF8F82F79FFB8BDB002995BF0C010B1E30F499493128 + 69B181D90DDA8A0C75C637197ECD2A63C8935FCF70FC0A1E03B28EDC6560D8B0 + 83A1BF3D92A1F0E47B30BBBC2483A1F14A00C3828E1D0C47277C67B8701BA701 + BF197EFEFEC9F0EF1F37D8A93F7E3120399D01CEBFFBF41F76033E7CF9C2A0A8 + C90976768D86228389C57F303B51589EC1DF9711CC76FF2FCBF0ECCD7FEC06BC + FBF49FA1F8F43DB0B38B0B33187AEF3F00B32363D319967F7E0866DB79A432BC + FF8CC380A7AFFFE174368C0FF31A5603407EC3E5ECC0CA6C860B172E301C5D7C + 041CC9580DB872EF2F4E676B055833CC9871814197FB0B6E03FA56FC242A2562 + 1800CACE27D71791949D81200068C04600978A82F0182DA2F50000000049454E + 44AE426082} + Name = 'PngImage6' + Background = clWindow + end> + Bitmap = {} + end + object cxStyleRepository1: TcxStyleRepository + Left = 264 + Top = 80 + object cxStyle_IMPORTETOTAL: TcxStyle + AssignedValues = [svColor, svTextColor] + Color = clInactiveCaptionText + TextColor = clHotLight + end + object cxStyle_SUBTOTAL: TcxStyle + AssignedValues = [svColor, svFont, svTextColor] + Color = clInactiveCaptionText + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + TextColor = clHotLight + end + object cxStyle_TITULO: TcxStyle + AssignedValues = [svColor, svFont, svTextColor] + Color = clInactiveCaption + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + TextColor = clHighlightText + end + end + object TipoPngImageList: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001094944415478DA + 63FCFFFF3F03258011993323818124D39E7C75421800D21C9B8AA9E8D74F28FE + C1C0F0134603F1C913480690A3995F8281E1EA5DA00120CD2C82C43BFBCF7B84 + 667018E0B21D64D3CFEF501A8A412E387306E2743BC37D0C87CE435D00122005 + 80348300DC006C2E8081BF7F81CEFECDC0F0FB17C445376E20E4081A00D2F41B + A8F9CF2F087BCD1A0E06358D1F0C6C2C441880AE19E48A0D1B391814948106B0 + 32800DC1690036CD20BC651B0783943CC40520434E5CC662002ECD20F6CE3D1C + 0C22D21003AEDC71626859BD8F11C5007C9A41E2FB0E7230F089FF6078F004A2 + 19251DCC9CCA415414BEFB6D05D70C36A02F8A631D503090D83480AC196C00A5 + D919005F65CFBFE56F19230000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000B3A00000B3A01647F570D000001A24944415478DA + 9D923B2C43511CC6BFEB158B129341A283342241448C44D46222418C2261A0F1 + 58BD26A193C482A18B8DC463D284A5212D121D3CDB26A452214A5295287A1FBD + F738E75EBDE90DD5C6B7DC9C73CFF7FBFEFFFF39DCE2EC4417804D18D53D3E63 + DF42061142C0510019EC2930FC706C885941D2025220BF8A82B98C807462E0B4 + 80B77782D3808CEB9092156C6C7A9E33000EBC0970EF51B4568491C3B104058A + 2000220F598883C822129F3104BC41B86E7035E921353A80A53BDD05E8305FA0 + A450A4876528A20042CD8A48CD920459E221BCBEC1B1F37845F33A2920A80392 + E96DE6B096CCF3DF66FA9544D55CBC3482E3061B4B5F9D3A44BF3E83DEF67C3D + DD94F70992A01508C664066B3977E2EC641F73265B2505047580C59CA3F55E7E + A7F54C01321F87427B6E3E5A330CCE6A2DC5827D1BB8B4713AA0AE2C8AA2E01E + A4A7D08F490FE5FA30DA6731ECADAC7BE075FB412E86B55BF8D8B5A7BDAA8D2A + 0DE07B88E039164724A63DB097DBB00A51CBF84BF5037EC200AEC0FD0FB35A41 + 360036B8A41A9BAA75335B6704A48AAB5D560F27CDFF02A49A99BE008A302DB4 + AC93694C0000000049454E44AE426082} + Name = 'PngImage1' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000B3A00000B3A01647F570D000001784944415478DA + 8DD1BF4BC3401407F0EFF9B38BC5D141B10E1637FF02A988205550C15FB3829B + A06EFE9C0A767170712A82B33FA0A08576A92D220EA2C5522D562B75B175A918 + AA4DDA26E725DAC38049F38684E4EE7DDEBD7764C7B33A01E008FA985CDAF41E + A346504A411840E7A79A740BBEC39225C410F883FC1B0C263501A35061434028 + 50C492325219C512B6B8B1457440F4AA0252C863A0338BE661BF2584036AF5C0 + 7913C61C71B4DA4A08C7DE30B476A96D0AACF4C0D56D835C1621BD0BF09DBE26 + D8EFF1F50B3C71A05A7DD09165BD29504411670C717B6E35E464B9037D5DF548 + DE64107EC43E4B9EE533987137F2EAF6862FD04A095412A1948A88C4F318D94E + 6B887FCE8EBB07A15A3DCD01A7A3EEA7F7F6172892043040168B506406B19344 + EF058CEEE63464DA89E0410A6EDD2DF4B6E5D1920EA19CCB180EEB3A0B2C84F8 + 67BF3A730E7C06BDA6937EFE00F612FA647E02F5617A4D84B8D82B524D66FBA3 + BA7533A056B229602999106A0698F7F61BDF228CEAE9FA9FA3C1000000004945 + 4E44AE426082} + Name = 'PngImage2' + Background = clWindow + end> + Left = 72 + Top = 64 + Bitmap = {} + end +end diff --git a/Base/uViewDetallesFamilias.pas b/Base/uViewDetallesFamilias.pas new file mode 100644 index 0000000..21f4b95 --- /dev/null +++ b/Base/uViewDetallesFamilias.pas @@ -0,0 +1,143 @@ +unit uViewDetallesFamilias; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewContenido, cxStyles, cxCustomData, cxGraphics, cxFilter, + cxData, cxDataStorage, cxEdit, DB, cxDBData, cxDropDownEdit, cxTextEdit, + cxSpinEdit, cxCurrencyEdit, ImgList, PngImageList, uDADataTable, + ExtActns, StdActns, ActnList, ComCtrls, ToolWin, cxGridLevel, + cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxClasses, + cxControls, cxGridCustomView, cxGrid, cxImageComboBox, + uBizImportesCabeceraBase, cxCheckBox, TB2Item, TBX, TB2Dock, TB2Toolbar, + JvExComCtrls, JvToolBar, cxMaskEdit; + +type + IViewDetallesFamilias = interface(IViewContenido) + ['{FFE0D3C1-F05C-4F28-9393-03F344CA6EBA}'] + end; + + TfrViewDetallesFamilias = class(TfrViewContenido, IViewDetallesFamilias) + cxStyleRepository1: TcxStyleRepository; + cxStyle_IMPORTETOTAL: TcxStyle; + cxStyle_SUBTOTAL: TcxStyle; + TipoPngImageList: TPngImageList; + cxGridViewDESCRIPCION: TcxGridDBColumn; + cxGridViewCANTIDAD: TcxGridDBColumn; + cxGridViewIMPORTEUNIDAD: TcxGridDBColumn; + cxGridViewIMPORTETOTAL: TcxGridDBColumn; + cxGridViewTIPO: TcxGridDBColumn; + cxGridViewPOSICION: TcxGridDBColumn; + cxGridViewVISIBLE: TcxGridDBColumn; + actAnadirCap: TAction; + ToolButton1: TToolButton; + ToolButton2: TToolButton; + ToolButton3: TToolButton; + ToolButton4: TToolButton; + ToolButton5: TToolButton; + ToolButton6: TToolButton; + ToolButton7: TToolButton; + cxStyle_TITULO: TcxStyle; + ToolButton8: TToolButton; + ToolButton9: TToolButton; + actRecalcular: TAction; + procedure cxGridViewEditing(Sender: TcxCustomGridTableView; + AItem: TcxCustomGridTableItem; var AAllow: Boolean); + procedure cxGridViewTIPOStylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); + procedure actAnadirCapExecute(Sender: TObject); + procedure actRecalcularExecute(Sender: TObject); + private + protected + public + end; + +implementation + +uses uBizImportesDetalleBase, uDAInterfaces; + +{$R *.dfm} + +procedure TfrViewDetallesFamilias.cxGridViewEditing( + Sender: TcxCustomGridTableView; AItem: TcxCustomGridTableItem; + var AAllow: Boolean); +var + IndiceCol : Integer; +begin + IndiceCol := (Sender as TcxGridDBTableView).GetColumnByFieldName(fld_DESCRIPCION).Index; + if AItem.Index <= IndiceCol then + AAllow := True + else begin + IndiceCol := (Sender as TcxGridDBTableView).GetColumnByFieldName(fld_TIPODETALLE).Index; + if (UpperCase(AItem.GridView.Items[IndiceCol].EditValue) = TIPODETALLE_SUBTOTAL) then + AAllow := False + else begin + if (UpperCase(AItem.GridView.Items[IndiceCol].EditValue) = TIPODETALLE_TITULO) then + begin + IndiceCol := (Sender as TcxGridDBTableView).GetColumnByFieldName(fld_VISIBLE).Index; + if AItem.Index = IndiceCol then + AAllow := True + else + AAllow := False + end; + end; + end; +end; + +procedure TfrViewDetallesFamilias.cxGridViewTIPOStylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); +var + IndiceCol : Integer; + ATipo : String; +begin + if Assigned(ARecord) then + begin + IndiceCol := (Sender as TcxGridDBTableView).GetColumnByFieldName(fld_TIPODETALLE).Index; + ATipo := VarToStr(ARecord.Values[IndiceCol]); + if ATipo = TIPODETALLE_SUBTOTAL then + AStyle := cxStyle_SUBTOTAL; + if ATipo = TIPODETALLE_TITULO then + AStyle := cxStyle_TITULO; + end; +end; + +procedure TfrViewDetallesFamilias.actAnadirCapExecute(Sender: TObject); +var + AFieldTIPO : TDAField; + AFieldDES : TDAField; +begin + if Assigned(DADataSource.DataTable) then + begin + AFieldTIPO := DADataSource.DataTable.FindField(fld_TIPODETALLE); + AFieldDES := DADataSource.DataTable.FindField(fld_DESCRIPCION); + + DADataSource.DataTable.Append; + AFieldDES.AsString := 'Capítulo de...'; + AFieldTIPO.Value := TIPODETALLE_TITULO; + if DADataSource.DataTable.State in dsEditModes then + DADataSource.DataTable.Post; + DADataSource.DataTable.Next; + + DADataSource.DataTable.Insert; + AFieldTIPO.Value := TIPODETALLE_CONCEPTO; + if DADataSource.DataTable.State in dsEditModes then + DADataSource.DataTable.Post; + DADataSource.DataTable.Next; + + DADataSource.DataTable.Insert; + AFieldDES.AsString := 'Total del capítulo'; + AFieldTIPO.Value := TIPODETALLE_SUBTOTAL; + if DADataSource.DataTable.State in dsEditModes then + DADataSource.DataTable.Post; + end; +end; + +procedure TfrViewDetallesFamilias.actRecalcularExecute(Sender: TObject); +begin + RecalcularTodo(DADataSource.DataTable); +end; + +end. diff --git a/Base/uViewDetallesNormales.ddp b/Base/uViewDetallesNormales.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Base/uViewDetallesNormales.ddp differ diff --git a/Base/uViewDetallesNormales.dfm b/Base/uViewDetallesNormales.dfm new file mode 100644 index 0000000..45a5412 --- /dev/null +++ b/Base/uViewDetallesNormales.dfm @@ -0,0 +1,92 @@ +inherited frViewDetallesNormales: TfrViewDetallesNormales + inherited ToolBar1: TToolBar + ButtonWidth = 63 + object ToolButton1: TToolButton + Left = 0 + Top = 0 + Action = actAnadir + end + object ToolButton2: TToolButton + Left = 63 + Top = 0 + Action = actEliminar + end + object ToolButton3: TToolButton + Left = 126 + Top = 0 + Width = 8 + Caption = 'ToolButton3' + ImageIndex = 2 + Style = tbsSeparator + end + object ToolButton4: TToolButton + Left = 134 + Top = 0 + Action = actSubir + end + object ToolButton5: TToolButton + Left = 197 + Top = 0 + Action = actBajar + end + end + inherited ContenidoImageList: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000000E14944415478DA + 63FCFFFF3F032580717019C0C8C8086787B4DDF8FFEBD76F869F3F7F33EC6C37 + 824BA05B88D300BF86CBFFA3A35419A6CFB8C870A0CF9C7403DC2BCFFD8F88D4 + 66983DEB34C3B12936C41910DA7E13EE6C100E0D37609837E7180358EC0708FF + 6278B0218011A701FE8D57C0CEFEF68391E1DB770630FD1D88BF7C07E26F8C0C + 6B17AE6178B1230CB7011E55E7FF836C86B9C23FC48661C9BC5D609B7F40F187 + 0331B80D400E03DDF85DFF3D039D1856CEDFCCF0706320E981A816BEF5BF8BBF + 07D8D92F7786936E80BCFFFAFF30677F3C184B9C01E480616000007F3BB6E1E0 + 0AF3B40000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000000714944415478DA + 63FCFFFF3F03258071D4002A1B10DA7E13CC01897DFDFA83E1DBB71F60FAFBB7 + 9F0C9F3F7F03E3F7FBA219F11A1013A500E77FFCCCC8F0EA1D23C38BB74C0CCF + 5E3131AC9E3397E1F7E914DC0684B4DDF88FCBE62F9FBF33FCF9F397E1FFF974 + DC060C7C208E1A401E0000EFE473E127272ED00000000049454E44AE426082} + Name = 'PngImage1' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000000E14944415478DA + 63FCFFFF3F032580717019C0C8C88822E9D770F9FFA6065D1441740B711A00D2 + 1C1DA5CA307DC64586037DE68C241900D3FCF10B23C39123CF19AE5EBECF7076 + B623235106206BFEF899114C3FBAFB94E1C4D1AB0CB7567A33E235C0BFF1CAFF + 9F3F7F3380B0B7BF2158F3BB8F4C0C7B36EE60F8F9E317C30F207EB1238C91A0 + 17AC728EFC77F234076BFEF2E631C3C1BDE7191E6E0C24CE0B20609CBAFFBFB9 + A31DD0004606B6DF8F18766E3DC9F0726738F106E8C6EFFA6F68AC0617DFB8F6 + 30C3C783B1C41BA016BEF53FCCCF30FCF364326103C801C3C00000BEA5B3E15D + 7F64240000000049454E44AE426082} + Name = 'PngImage2' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000000DF4944415478DA + 63FCFFFF3F032580717019C0C8C808A643DA6E80057FFDFACDF0F327041FE833 + 074BA25B88D380982805869FBF18183E7E61645830EF34C3B12936C41BE0D770 + F97F74942A58F39123CF19AE5EBECF7076B623F106B8579EFB1F1CAACDF0F133 + 23C3E58BCF18CE9FBDC57079A11B6103FC1BAFFC87F9D9DBDF10EC8247779F32 + 9C387A95E1E78F5F0C3F80F8C58E3046BC2E70283AF91FA6F9DD472620666460 + FBFD8861E7D6930C2F77863312E505E3D4FDFFCD1DED3034131D0620A016BEF5 + BF85B5368A66920C000171F795FF91351334801C300C0C00007FBCB4E1E577C7 + 9A0000000049454E44AE426082} + Name = 'PngImage3' + Background = clWindow + end> + end +end diff --git a/Base/uViewDetallesNormales.pas b/Base/uViewDetallesNormales.pas new file mode 100644 index 0000000..8ba0f06 --- /dev/null +++ b/Base/uViewDetallesNormales.pas @@ -0,0 +1,34 @@ +unit uViewDetallesNormales; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewContenido, cxStyles, cxCustomData, cxGraphics, cxFilter, + cxData, cxDataStorage, cxEdit, DB, cxDBData, ImgList, PngImageList, + uDADataTable, ActnList, ToolWin, ComCtrls, cxGridLevel, cxClasses, + cxControls, cxGridCustomView, cxGridCustomTableView, cxGridTableView, + cxGridDBTableView, cxGrid; + +type + IViewDetallesNormales = interface(IViewContenido) + ['{7E9FEF3B-2A2E-404C-BF1E-7C103E671AFE}'] + end; + + TfrViewDetallesNormales = class(TfrViewContenido, IViewDetallesNormales) + ToolButton1: TToolButton; + ToolButton2: TToolButton; + ToolButton3: TToolButton; + ToolButton4: TToolButton; + ToolButton5: TToolButton; + private + { Private declarations } + public + { Public declarations } + end; + +implementation + +{$R *.dfm} + +end. diff --git a/Base/uViewDireccion.dfm b/Base/uViewDireccion.dfm new file mode 100644 index 0000000..800152d --- /dev/null +++ b/Base/uViewDireccion.dfm @@ -0,0 +1,114 @@ +inherited frViewDireccion: TfrViewDireccion + Width = 300 + Height = 140 + Constraints.MinHeight = 140 + Constraints.MinWidth = 300 + DesignSize = ( + 300 + 140) + object lblCalle: TLabel + Left = 16 + Top = 34 + Width = 27 + Height = 13 + Caption = 'Calle:' + end + object lblProvincia: TLabel + Left = 16 + Top = 106 + Width = 47 + Height = 13 + Caption = 'Provincia:' + end + object lblPoblacion: TLabel + Left = 16 + Top = 58 + Width = 49 + Height = 13 + Caption = 'Poblaci'#243'n:' + end + object lblCodigoPostal: TLabel + Left = 16 + Top = 82 + Width = 69 + Height = 13 + Caption = 'C'#243'digo postal:' + end + object Label5: TLabel + Left = 8 + Top = 8 + Width = 55 + Height = 13 + Caption = 'Direcci'#243'n' + Font.Charset = DEFAULT_CHARSET + Font.Color = clActiveCaption + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + ParentFont = False + end + object Bevel1: TBevel + Left = 72 + Top = 8 + Width = 216 + Height = 9 + Anchors = [akLeft, akTop, akRight] + Shape = bsBottomLine + end + object eCalle: TcxDBTextEdit + Left = 100 + Top = 30 + Anchors = [akLeft, akTop, akRight] + DataBinding.DataField = 'CALLE' + DataBinding.DataSource = DADataSource + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 0 + Width = 185 + end + object ePoblacion: TcxDBTextEdit + Left = 100 + Top = 54 + Anchors = [akLeft, akTop, akRight] + DataBinding.DataField = 'POBLACION' + DataBinding.DataSource = DADataSource + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 1 + Width = 185 + end + object eProvincia: TcxDBTextEdit + Left = 100 + Top = 102 + Anchors = [akLeft, akTop, akRight] + DataBinding.DataField = 'PROVINCIA' + DataBinding.DataSource = DADataSource + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 3 + Width = 185 + end + object eCodigoPostal: TcxDBTextEdit + Left = 100 + Top = 78 + Anchors = [akLeft, akTop, akRight] + DataBinding.DataField = 'CODIGOPOSTAL' + DataBinding.DataSource = DADataSource + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 2 + Width = 185 + end + object DADataSource: TDADataSource + Left = 24 + Top = 32 + end +end diff --git a/Base/uViewDireccion.pas b/Base/uViewDireccion.pas new file mode 100644 index 0000000..d4f1de1 --- /dev/null +++ b/Base/uViewDireccion.pas @@ -0,0 +1,40 @@ +unit uViewDireccion; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, StdCtrls, Mask, DBCtrls, DB, uDADataTable, ExtCtrls, + JvComponent, JvFormAutoSize, cxControls, cxContainer, cxEdit, cxTextEdit, + cxDBEdit; + +type + TfrViewDireccion = class(TfrViewBase) + Bevel1: TBevel; + DADataSource: TDADataSource; + Label5: TLabel; + lblCalle: TLabel; + lblCodigoPostal: TLabel; + lblPoblacion: TLabel; + lblProvincia: TLabel; + eCalle: TcxDBTextEdit; + ePoblacion: TcxDBTextEdit; + eProvincia: TcxDBTextEdit; + eCodigoPostal: TcxDBTextEdit; + protected + end; + +var + frViewDireccion: TfrViewDireccion; + +implementation + +{$R *.dfm} + +initialization + RegisterClass(TfrViewDireccion); + +finalization + UnRegisterClass(TfrViewDireccion); + +end. diff --git a/Base/uViewFiltroBase.ddp b/Base/uViewFiltroBase.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Base/uViewFiltroBase.ddp differ diff --git a/Base/uViewFiltroBase.dfm b/Base/uViewFiltroBase.dfm new file mode 100644 index 0000000..5248d1c --- /dev/null +++ b/Base/uViewFiltroBase.dfm @@ -0,0 +1,198 @@ +object frViewFiltroBase: TfrViewFiltroBase + Left = 0 + Top = 0 + Width = 565 + Height = 102 + TabOrder = 0 + Visible = False + object TBXDock1: TTBXDock + Left = 0 + Top = 0 + Width = 565 + Height = 102 + object TBXDockablePanel1: TTBXDockablePanel + Left = 0 + Top = 0 + Caption = 'TBXDockablePanel1' + CloseButton = False + CloseButtonWhenDocked = False + DockedHeight = 98 + DockMode = dmCannotFloatOrChangeDocks + ShowCaption = False + ShowCaptionWhenDocked = False + SupportedDocks = [dkStandardDock, dkMultiDock] + TabOrder = 0 + object dxLayoutControl1: TdxLayoutControl + Left = 0 + Top = 0 + Width = 561 + Height = 68 + Align = alTop + ParentBackground = True + TabOrder = 0 + AutoContentSizes = [acsWidth, acsHeight] + object txtFiltroTodo: TcxTextEdit + Left = 86 + Top = 10 + Properties.OnChange = OnCamposFiltroChange + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.HotTrack = False + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.Kind = lfStandard + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.Kind = lfStandard + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.Kind = lfStandard + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 0 + Width = 273 + end + object edtFechaIniFiltro: TcxDateEdit + Left = 86 + Top = 37 + Properties.OnChange = OnCamposFiltroChange + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.HotTrack = False + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + Style.ButtonStyle = bts3D + Style.PopupBorderStyle = epbsFrame3D + StyleDisabled.LookAndFeel.Kind = lfStandard + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.Kind = lfStandard + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.Kind = lfStandard + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 1 + Width = 121 + end + object edtFechaFinFiltro: TcxDateEdit + Left = 347 + Top = 37 + Properties.OnChange = OnCamposFiltroChange + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.HotTrack = False + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + Style.ButtonStyle = bts3D + Style.PopupBorderStyle = epbsFrame3D + StyleDisabled.LookAndFeel.Kind = lfStandard + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.Kind = lfStandard + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.Kind = lfStandard + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 2 + Width = 121 + end + object dxLayoutControl1Group_Root: TdxLayoutGroup + ShowCaption = False + Hidden = True + ShowBorder = False + object dxLayoutControl1Item1: TdxLayoutItem + Caption = 'Que contenga:' + Control = txtFiltroTodo + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Group1: TdxLayoutGroup + ShowCaption = False + Hidden = True + LayoutDirection = ldHorizontal + ShowBorder = False + object dxLayoutControl1Item2: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = 'Entre la fecha:' + Control = edtFechaIniFiltro + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item3: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = 'y' + Control = edtFechaFinFiltro + ControlOptions.ShowBorder = False + end + end + end + end + object TBXAlignmentPanel1: TTBXAlignmentPanel + Left = 0 + Top = 68 + Width = 561 + Height = 30 + Align = alTop + Margins.Left = 10 + TabOrder = 1 + object tbxBotones: TTBXToolbar + Left = 10 + Top = 0 + Width = 551 + Height = 30 + Align = alTop + AutoResize = False + BorderStyle = bsNone + Caption = 'tbxBotones' + ChevronHint = 'M'#225's botones|' + DockMode = dmCannotFloatOrChangeDocks + DockPos = -23 + DockRow = 1 + DragHandleStyle = dhNone + ParentShowHint = False + ShowHint = True + TabOrder = 0 + object TBXItem2: TTBXItem + Action = actQuitarFiltro + DisplayMode = nbdmImageAndText + Images = PngImageList + end + end + end + end + end + object dxLayoutLookAndFeelList1: TdxLayoutLookAndFeelList + Left = 136 + Top = 16 + end + object ActionList1: TActionList + Images = PngImageList + Left = 384 + Top = 72 + object actQuitarFiltro: TAction + Caption = 'Quitar filtros y ver todo' + ImageIndex = 0 + OnExecute = actQuitarFiltroExecute + end + end + object PngImageList: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001B04944415478DA + 63FCFFFF3F03258071D400064674018780D0A7823C7C09EB97CCDD8D4B535EC3 + C493AF1EDC305BB1603A2323BA66090111A9272F9F301CD9BE99119701110999 + FF616A189135FFF9F9430A9F4618B0F1F405FB1B6E0021CDD70CF8FF0B09B0D7 + 481C78D50AE2FF7295B1FBC82F7AF0C585F30C8C96EE5ED3E425E533618A1F3E + 7F385D4A5A79C3DA79937781F8C149B96E6627F7F4F8B23ED3DD226BC2F04840 + 96A19CE72DC3E7E387182EDEF8389911E49F1913DA192EBCE06778FBF727C3E3 + CF0C0C276614A2B860F98C690C9BAA5A1854F7F530282A4830DC7FF08261E657 + 318689B76F33820DC8A89806D70C026B1A43E19A65C46518C0F25F3F3048CE28 + 6050BFBC9A61DB7F198693AE390C535AF220068496F6C3355F7EFC9EE1E6BC34 + 782CC0E47F5EBFC060D7E5C170E8BD208301F73B06BE7F1FFD642E316C6604F9 + F1D9D3BB01CC4CCCE070F8FBEF2F4618FC7D723D22F3EF93C4FB37DE301C1296 + D9E8FBE68198BED87F4BFEBF1FED084619087CB4178BB974FFD3D42B8F7E7801 + 6D390A12DB28C4BA51558ECB8F2803D6F1B2C67CFEF5C728EEE7FF62A006701A + 98C0C0202ECBCDB00A00547CD715F016991D0000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end> + Left = 424 + Top = 72 + Bitmap = {} + end +end diff --git a/Base/uViewFiltroBase.pas b/Base/uViewFiltroBase.pas new file mode 100644 index 0000000..b22ab8f --- /dev/null +++ b/Base/uViewFiltroBase.pas @@ -0,0 +1,144 @@ +unit uViewFiltroBase; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, cxMaskEdit, cxDropDownEdit, cxCalendar, dxLayoutControl, + cxContainer, cxEdit, cxTextEdit, dxLayoutLookAndFeels, cxControls, + StdCtrls, Buttons, cxRadioGroup, TBXDkPanels, TB2ExtItems, TBXExtItems, + TBX, TB2Item, TB2Dock, TB2Toolbar, ActnList, ImgList, PngImageList; + +type + IViewFiltroBase = interface + ['{0D0EA630-BF93-4BA1-93C2-FD5A5B0CBEED}'] + function GetFiltrosChange: TNotifyEvent; + procedure SetFiltrosChange(const Value: TNotifyEvent); + property OnFiltrosChange: TNotifyEvent read GetFiltrosChange write SetFiltrosChange; + + function GetVerFiltros: Boolean; + procedure SetVerFiltros(const Value: Boolean); + property VerFiltros: Boolean read GetVerFiltros write SetVerFiltros; + + function GetTexto: String; + procedure SetTexto(const Value: String); + property Texto: String read GetTexto write SetTexto; + end; + + TfrViewFiltroBase = class(TFrame, IViewFiltroBase) + dxLayoutControl1Group_Root: TdxLayoutGroup; + dxLayoutControl1: TdxLayoutControl; + dxLayoutLookAndFeelList1: TdxLayoutLookAndFeelList; + dxLayoutControl1Item1: TdxLayoutItem; + txtFiltroTodo: TcxTextEdit; + dxLayoutControl1Item2: TdxLayoutItem; + edtFechaIniFiltro: TcxDateEdit; + dxLayoutControl1Item3: TdxLayoutItem; + edtFechaFinFiltro: TcxDateEdit; + dxLayoutControl1Group1: TdxLayoutGroup; + TBXDock1: TTBXDock; + TBXDockablePanel1: TTBXDockablePanel; + ActionList1: TActionList; + actQuitarFiltro: TAction; + PngImageList: TPngImageList; + tbxBotones: TTBXToolbar; + TBXItem2: TTBXItem; + TBXAlignmentPanel1: TTBXAlignmentPanel; + procedure OnCamposFiltroChange(Sender: TObject); + procedure actQuitarFiltroExecute(Sender: TObject); + + private + FOnFiltrosChange: TNotifyEvent; + + function GetFiltrosChange: TNotifyEvent; + procedure SetFiltrosChange(const Value: TNotifyEvent); + function GetVerFiltros: Boolean; + procedure SetVerFiltros(const Value: Boolean); + function GetTexto: String; + procedure SetTexto(const Value: String); + + protected + procedure LimpiarCampos; virtual; + function ValidarCampos: Boolean; virtual; + + public + property OnFiltrosChange: TNotifyEvent read GetFiltrosChange write SetFiltrosChange; + property VerFiltros: Boolean read GetVerFiltros write SetVerFiltros; + property Texto: String read GetTexto write SetTexto; + end; + +implementation + +{$R *.dfm} + +{ TfrViewFiltroBase } + +function TfrViewFiltroBase.GetFiltrosChange: TNotifyEvent; +begin + Result := FOnFiltrosChange; +end; + +procedure TfrViewFiltroBase.SetFiltrosChange(const Value: TNotifyEvent); +begin + FOnFiltrosChange := Value; +end; + +function TfrViewFiltroBase.GetVerFiltros: Boolean; +begin + Result := Self.Visible; +end; + +procedure TfrViewFiltroBase.SetVerFiltros(const Value: Boolean); +begin + Self.Visible := Value; + if not Self.Visible then + actQuitarFiltro.Execute; +end; + +procedure TfrViewFiltroBase.LimpiarCampos; +begin + txtFiltroTodo.Clear; + edtFechaIniFiltro.Clear; + edtFechaFinFiltro.Clear; +end; + +procedure TfrViewFiltroBase.OnCamposFiltroChange(Sender: TObject); +begin + if ValidarCampos then + if Assigned(FOnFiltrosChange) then + FOnFiltrosChange(Sender); +end; + +function TfrViewFiltroBase.ValidarCampos: Boolean; +begin + Result := True; + + if not VarIsNull(edtFechaIniFiltro.EditValue) and not VarIsNull(edtFechaFinFiltro.EditValue) then + begin + if (edtFechaIniFiltro.EditValue > edtFechaFinFiltro.EditValue) then + begin + ShowMessage('La fecha de inicio debe ser anterior a la fecha final'); + edtFechaIniFiltro.SetFocus; + Result := False; + end + end; +end; + +procedure TfrViewFiltroBase.actQuitarFiltroExecute(Sender: TObject); +begin + LimpiarCampos; + if Assigned(FOnFiltrosChange) then + FOnFiltrosChange(Sender); +end; + +function TfrViewFiltroBase.GetTexto: String; +begin + Result := txtFiltroTodo.Text; +end; + +procedure TfrViewFiltroBase.SetTexto(const Value: String); +begin + txtFiltroTodo.Text := Value; +end; + +end. diff --git a/Base/uViewFormaPago.ddp b/Base/uViewFormaPago.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Base/uViewFormaPago.ddp differ diff --git a/Base/uViewFormaPago.dfm b/Base/uViewFormaPago.dfm new file mode 100644 index 0000000..253f8e4 --- /dev/null +++ b/Base/uViewFormaPago.dfm @@ -0,0 +1,47 @@ +inherited frViewFormaPago: TfrViewFormaPago + Width = 300 + Constraints.MinWidth = 300 + DesignSize = ( + 300 + 222) + object Label5: TLabel + Left = 8 + Top = 8 + Width = 85 + Height = 13 + Caption = 'Forma de pago' + Font.Charset = DEFAULT_CHARSET + Font.Color = clActiveCaption + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + ParentFont = False + end + object Bevel1: TBevel + Left = 96 + Top = 8 + Width = 192 + Height = 9 + Anchors = [akLeft, akTop, akRight] + Shape = bsBottomLine + end + object memFormaPago: TcxDBMemo + Left = 16 + Top = 32 + Anchors = [akLeft, akTop, akRight, akBottom] + DataBinding.DataField = 'FORMAPAGO' + DataBinding.DataSource = DADataSource + Properties.ScrollBars = ssVertical + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 0 + Height = 175 + Width = 269 + end + object DADataSource: TDADataSource + Left = 16 + Top = 48 + end +end diff --git a/Base/uViewFormaPago.pas b/Base/uViewFormaPago.pas new file mode 100644 index 0000000..fe3d269 --- /dev/null +++ b/Base/uViewFormaPago.pas @@ -0,0 +1,26 @@ +unit uViewFormaPago; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, DB, uDADataTable, cxMemo, cxDBEdit, cxControls, + cxContainer, cxEdit, cxTextEdit, ExtCtrls, StdCtrls; + +type + TfrViewFormaPago = class(TfrViewBase) + DADataSource: TDADataSource; + memFormaPago: TcxDBMemo; + Label5: TLabel; + Bevel1: TBevel; + private + { Private declarations } + public + { Public declarations } + end; + +implementation + +{$R *.dfm} + +end. diff --git a/Base/uViewGrid.ddp b/Base/uViewGrid.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Base/uViewGrid.ddp differ diff --git a/Base/uViewGrid.dfm b/Base/uViewGrid.dfm new file mode 100644 index 0000000..83ff94e --- /dev/null +++ b/Base/uViewGrid.dfm @@ -0,0 +1,151 @@ +inherited frViewGrid: TfrViewGrid + Width = 443 + Height = 270 + Align = alClient + object cxGrid: TcxGrid + Left = 0 + Top = 102 + Width = 443 + Height = 168 + Align = alClient + TabOrder = 0 + LookAndFeel.Kind = lfOffice11 + LookAndFeel.NativeStyle = True + object cxGridView: TcxGridDBTableView + OnDblClick = cxGridViewDblClick + NavigatorButtons.ConfirmDelete = False + FilterBox.Visible = fvNever + DataController.DataModeController.SmartRefresh = True + DataController.DataModeController.SyncMode = False + DataController.DataSource = DADataSource + DataController.Filter.Options = [fcoCaseInsensitive] + DataController.Options = [dcoAnsiSort, dcoAssignGroupingValues, dcoAssignMasterDetailKeys, dcoSaveExpanding, dcoSortByDisplayText, dcoFocusTopRowAfterSorting] + DataController.Summary.DefaultGroupSummaryItems = <> + DataController.Summary.FooterSummaryItems = <> + DataController.Summary.SummaryGroups = <> + DataController.OnSortingChanged = cxGridViewDataControllerSortingChanged + OptionsBehavior.CellHints = True + OptionsBehavior.BestFitMaxRecordCount = 20 + OptionsCustomize.ColumnFiltering = False + OptionsCustomize.ColumnGrouping = False + OptionsData.Deleting = False + OptionsData.DeletingConfirmation = False + OptionsData.Editing = False + OptionsData.Inserting = False + OptionsSelection.CellSelect = False + OptionsSelection.UnselectFocusedRecordOnExit = False + OptionsView.CellEndEllipsis = True + OptionsView.CellAutoHeight = True + OptionsView.ColumnAutoWidth = True + OptionsView.Footer = True + OptionsView.FooterAutoHeight = True + OptionsView.GridLineColor = cl3DLight + OptionsView.GroupByBox = False + OptionsView.HeaderEndEllipsis = True + OptionsView.NewItemRowInfoText = 'Click here to add a new row' + Styles.ContentEven = cxStyleEven + Styles.ContentOdd = cxStyleOdd + Styles.Inactive = cxStyleSelection + Styles.Selection = cxStyleSelection + end + object cxGridLevel: TcxGridLevel + GridView = cxGridView + end + end + inline frViewFiltroBase1: TfrViewFiltroBase + Left = 0 + Top = 0 + Width = 443 + Height = 102 + Align = alTop + TabOrder = 1 + Visible = False + inherited TBXDock1: TTBXDock + Width = 443 + inherited TBXDockablePanel1: TTBXDockablePanel + inherited dxLayoutControl1: TdxLayoutControl + Width = 439 + inherited txtFiltroTodo: TcxTextEdit + Left = 87 + end + inherited edtFechaIniFiltro: TcxDateEdit + Left = 87 + end + inherited edtFechaFinFiltro: TcxDateEdit + Left = 275 + end + end + inherited TBXAlignmentPanel1: TTBXAlignmentPanel + Width = 439 + inherited tbxBotones: TTBXToolbar + Width = 429 + end + end + end + end + end + object DADataSource: TDADataSource + Left = 368 + Top = 96 + end + object ActionList1: TActionList + Left = 336 + Top = 96 + end + object dxComponentPrinter: TdxComponentPrinter + CurrentLink = dxComponentPrinterLink + PreviewOptions.EnableOptions = [peoCanChangeMargins, peoPageBackground, peoPageSetup, peoPreferences, peoPrint] + PreviewOptions.VisibleOptions = [pvoPageBackground, pvoPageSetup, pvoPreferences, pvoPrint, pvoPrintStyles, pvoReportFileOperations, pvoPageMargins] + PreviewOptions.WindowState = wsMaximized + Version = 0 + Left = 368 + Top = 128 + object dxComponentPrinterLink: TdxGridReportLink + Active = True + Component = cxGrid + PrinterPage.DMPaper = 9 + PrinterPage.Footer = 6350 + PrinterPage.Header = 6350 + PrinterPage.Margins.Bottom = 12700 + PrinterPage.Margins.Left = 12700 + PrinterPage.Margins.Right = 12700 + PrinterPage.Margins.Top = 12700 + PrinterPage.PageSize.X = 210000 + PrinterPage.PageSize.Y = 297000 + PrinterPage._dxMeasurementUnits_ = 0 + PrinterPage._dxLastMU_ = 2 + ReportDocument.CreationDate = 39213.688278530090000000 + OptionsCharts.Transparent = True + OptionsFormatting.SuppressBackgroundBitmaps = True + OptionsOnEveryPage.Caption = False + OptionsOnEveryPage.FilterBar = False + OptionsSize.AutoWidth = True + OptionsView.Caption = False + OptionsView.ExpandButtons = False + OptionsView.FilterBar = False + OptionsView.GroupFooters = False + BuiltInReportLink = True + end + end + object dxPSEngineController1: TdxPSEngineController + LookAndFeel = pslfOffice11 + UseNativeLookAndFeel = False + Left = 336 + Top = 128 + end + object cxStyleRepository1: TcxStyleRepository + Left = 296 + Top = 128 + object cxStyleEven: TcxStyle + end + object cxStyleOdd: TcxStyle + AssignedValues = [svColor] + Color = clInactiveCaptionText + end + object cxStyleSelection: TcxStyle + AssignedValues = [svColor, svTextColor] + Color = clHighlight + TextColor = clHighlightText + end + end +end diff --git a/Base/uViewGrid.pas b/Base/uViewGrid.pas new file mode 100644 index 0000000..cdadd28 --- /dev/null +++ b/Base/uViewGrid.pas @@ -0,0 +1,499 @@ +unit uViewGrid; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, + cxDataStorage, cxEdit, DB, cxDBData, uDADataTable, cxGridLevel, + cxClasses, cxControls, cxGridCustomView, cxGridCustomTableView, + cxGridTableView, cxGridDBTableView, cxGrid, Menus, ActnList, Grids, + DBGrids, JvComponent, JvFormAutoSize, dxPSGlbl, dxPSUtl, dxPSEngn, + dxPrnPg, dxBkgnd, dxWrap, dxPrnDev, dxPSCompsProvider, dxPSFillPatterns, + dxPSEdgePatterns, dxPSCore, dxPScxCommon, dxPScxGridLnk, dxPrnDlg, + cxIntlPrintSys3, dxPSPrvwAdv, uViewFiltroBase; + +type + IViewGrid = interface(IViewBase) + ['{07468FAD-4891-42E6-B646-51F17F0033F5}'] + function GetDblClick: TNotifyEvent; + function GetFilter: string; + function GetPopupMenu: TPopupMenu; + function GetGrid : TcxGrid; + procedure Preview; + procedure Print; + procedure PrintSetup; + procedure GotoFirst; + procedure GotoLast; + procedure SetDblClick(const Value: TNotifyEvent); + procedure SetFilter(const Value: string); + procedure SetPopupMenu(const Value: TPopupMenu); + procedure RefreshGrid; + function GetMultiSelection: Boolean; + procedure SetMultiSelection(const Value: Boolean); + property Filter: string read GetFilter write SetFilter; + property OnDblClick: TNotifyEvent read GetDblClick write SetDblClick; + property PopupMenu: TPopupMenu read GetPopupMenu write SetPopupMenu; + property MultiSelection : Boolean read GetMultiSelection write SetMultiSelection; + property Grid : TcxGrid read GetGrid; + procedure SyncFocusedRecordsFromGrid; + procedure SyncFocusedRecordsFromDataSet; + procedure StoreToRegistry; + procedure RestoreFromRegistry; + procedure AjustarAncho; + procedure ActivarDesactivarFiltros; + function EstanFiltrosVisible: Boolean; + end; + + TfrViewGrid = class(TfrViewBase, IViewGrid) + ActionList1: TActionList; + cxGrid: TcxGrid; + cxGridLevel: TcxGridLevel; + cxGridView: TcxGridDBTableView; + DADataSource: TDADataSource; + dxComponentPrinter: TdxComponentPrinter; + dxComponentPrinterLink: TdxGridReportLink; + dxPSEngineController1: TdxPSEngineController; + cxStyleRepository1: TcxStyleRepository; + cxStyleEven: TcxStyle; + cxStyleOdd: TcxStyle; + cxStyleSelection: TcxStyle; + frViewFiltroBase1: TfrViewFiltroBase; + procedure cxGridViewDblClick(Sender: TObject); + procedure cxGridViewDataControllerSortingChanged(Sender: TObject); + procedure SelectionChanged(Sender: TcxCustomGridTableView); virtual; abstract; + private + FViewFiltros: IViewFiltroBase; + FFilter: string; +// FOnFilterChanged : TNotifyEvent; + FOnDblClick: TNotifyEvent; + FPopupMenu: TPopupMenu; + procedure FiltrarGrid(TextoFiltro : String); + function GetViewFiltros: IViewFiltroBase; + procedure SetViewFiltros(const Value: IViewFiltroBase); + procedure OnChangeFiltros(Sender: TObject); + + protected + function GetGrid : TcxGrid; + function GetDblClick: TNotifyEvent; virtual; + function GetFilter: string; virtual; + function GetPopupMenu: TPopupMenu; virtual; + function GetMultiSelection: Boolean; virtual; + procedure SetDblClick(const Value: TNotifyEvent); virtual; + procedure SetPopupMenu(const Value: TPopupMenu); virtual; + procedure SetMultiSelection(const Value: Boolean); virtual; + + procedure SetFilter(const Value: string); virtual; + procedure RefrescarFiltro; + procedure AnadirOtrosFiltros; virtual; + function AddFilterGrid(const Operator: tcxFilterBoolOperatorKind): TcxFilterCriteriaItemList; + + public + procedure ShowEmbedded(const AParent : TWinControl); override; + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + procedure Preview; + procedure Print; + procedure PrintSetup; + procedure GotoFirst; + procedure GotoLast; + procedure StoreToRegistry; virtual; + procedure RestoreFromRegistry; virtual; + property OnDblClick: TNotifyEvent read GetDblClick write SetDblClick; + property PopupMenu: TPopupMenu read GetPopupMenu write SetPopupMenu; + property Grid : TcxGrid read GetGrid; + procedure SyncFocusedRecordsFromGrid; + procedure SyncFocusedRecordsFromDataSet; + property MultiSelection : Boolean read GetMultiSelection write SetMultiSelection; + property ViewFiltros: IViewFiltroBase read GetViewFiltros write SetViewFiltros; + property Filter: string read GetFilter write SetFilter; + procedure ActivarDesactivarFiltros; + function EstanFiltrosVisible: Boolean; + procedure RefreshGrid; + procedure AjustarAncho; + end; + +procedure Register; + +var + frViewGrid: TfrViewGrid; + +implementation + +uses + CCReg, uDataModuleBase, uDBSelectionList; + +{$R *.dfm} + +{ TfrViewGrid } + +procedure Register; +begin + RegisterCustomContainer(TfrViewGrid); +end; + + +{ +********************************* TfrViewGrid ********************************** +} +constructor TfrViewGrid.Create(AOwner: TComponent); +begin + inherited; + ViewFiltros := frViewFiltroBase1; + FFilter := ''; +// FOnFilterChanged := FilterChanged; + GotoFirst; +end; + +procedure TfrViewGrid.cxGridViewDblClick(Sender: TObject); +begin + if Assigned(FOnDblClick) then + FOnDblClick(Sender); +end; + +procedure TfrViewGrid.FiltrarGrid(TextoFiltro : String); +var + Columna: TcxGridDBColumn; + i: Integer; + AItemList: TcxFilterCriteriaItemList; + AItemList2: TcxFilterCriteriaItemList; + EsPrimera: Boolean; +begin + with cxGridView.DataController.Filter do + begin + BeginUpdate; + try + Options := [fcoCaseInsensitive, fcoSoftCompare]; + Root.Clear; + if Length(TextoFiltro) > 0 then + begin + EsPrimera := True; + for i:=0 to (cxGridView as TcxGridDBTableView).ColumnCount - 1 do + begin + Columna := (cxGridView as TcxGridDBTableView).Columns[i]; + if Columna.Visible then + begin + if EsPrimera then + begin + AItemList := Root; + AItemList.BoolOperatorKind := fboAnd; + AItemList2 := AItemList.AddItemList(fboAnd); + AItemList := AItemList2; + AItemList2 := AItemList.AddItemList(fboOr); + AItemList := AItemList2; + AItemList.AddItem(Columna, foLike, '%'+TextoFiltro+'%', IntToStr(i)); + EsPrimera := False; + end + else begin + AItemList2 := AItemList.AddItemList(fboOr); + AItemList2.AddItem(Columna, foLike, '%'+TextoFiltro+'%', IntToStr(i)); + AItemList := AItemList2; + end; + end; + end; + Active := True; + end + else + Active := False; + finally + EndUpdate; + end; + end; +end; + +function TfrViewGrid.GetDblClick: TNotifyEvent; +begin + Result := FOnDblClick; +end; + +function TfrViewGrid.GetFilter: string; +begin + Result := FFilter; +end; + +function TfrViewGrid.GetPopupMenu: TPopupMenu; +begin + Result := FPopupMenu; +end; + +procedure TfrViewGrid.GotoFirst; +begin + cxGridView.DataController.GotoFirst; +end; + +procedure TfrViewGrid.GotoLast; +begin + cxGridView.DataController.GotoLast; +end; + +procedure TfrViewGrid.SetDblClick(const Value: TNotifyEvent); +begin + FOnDblClick := Value; +end; + +procedure TfrViewGrid.SetFilter(const Value: string); +begin + FFilter := Value; + + //Así tendremos el mismo valor en el filtro simple que en el filtro en detalle + if Assigned(ViewFiltros) then + ViewFiltros.Texto := FFilter; + + FiltrarGrid(FFilter); + + //Obliga a generar todos los filtros de las vista hija + AnadirOtrosFiltros; +end; + +procedure TfrViewGrid.SetPopupMenu(const Value: TPopupMenu); +begin + FPopupMenu := Value; + cxGridView.PopupMenu := FPopupMenu; +end; + +procedure TfrViewGrid.cxGridViewDataControllerSortingChanged( + Sender: TObject); +var + i: Integer; + AFields: array of String; + ADirections: array of TDASortDirection; + ABookmark : Pointer; +begin + inherited; + + with cxGridView do + begin + for i := 0 to SortedItemCount - 1 do + begin + SetLength(AFields, i+1); + AFields[i] := (SortedItems[i] as TcxGridDBColumn).DataBinding.FieldName; + SetLength(ADirections, i+1); + case (SortedItems[i] as TcxGridDBColumn).SortOrder of + soAscending : ADirections[i] := sdAscending; + soDescending : ADirections[i] := sdDescending; + end; + end; + end; + + if Assigned(DADataSource.DataTable) then + with DADataSource.DataTable do + begin + DisableControls; + ABookmark := GetBookMark; + try + Sort(AFields, ADirections); + GotoBookmark(ABookmark); + finally + FreeBookmark(ABookmark); + EnableControls; + end; + end; +end; + +function TfrViewGrid.GetGrid: TcxGrid; +begin + Result := cxGrid; +end; + +procedure TfrViewGrid.ShowEmbedded(const AParent : TWinControl); +begin + inherited; + + if not DADataSource.DataTable.Active then + DADataSource.DataTable.Active := True; + + with Grid do + begin + ActiveView.DataController.GotoFirst; + ActiveView.Focused := True; + if (ActiveView.ViewData as TcxCustomGridTableViewData).RecordCount > 0 then + begin + (ActiveView.ViewData as TcxCustomGridTableViewData).Records[0].Selected := True; + (ActiveView.ViewData as TcxCustomGridTableViewData).Records[0].Focused := True; + end; +{ if (ActiveView is TcxCustomGridTableView) then + (ActiveView as TcxCustomGridTableView).ApplyBestFit;} + end; +end; + +procedure TfrViewGrid.Preview; +begin + dxComponentPrinter.Preview; +end; + +procedure TfrViewGrid.Print; +begin + dxComponentPrinter.Print(True, nil, nil); +end; + +procedure TfrViewGrid.PrintSetup; +begin + dxComponentPrinter.PageSetup(nil); +end; + +procedure TfrViewGrid.RefreshGrid; +var + FocusedRow, TopRow : Integer; +begin + { Refrescar las filas del grid a partir del dataset y colocar la fila + seleccionada donde estaba } + + if DADataSource.DataTable.State = dsBrowse then + begin + TopRow := cxGridView.Controller.TopRowIndex; + FocusedRow := cxGridView.DataController.FocusedRowIndex; + + cxGridView.DataController.UpdateItems(False); // <- Refresco + + cxGridView.DataController.FocusedRowIndex := FocusedRow; + cxGridView.Controller.TopRowIndex := TopRow; + end; +end; + +procedure TfrViewGrid.SyncFocusedRecordsFromDataSet; +var + AIndex : Integer; +begin +{ for AIndex := 0 to cxGridView.DataController.RecordCount - 1 do + begin + if (MessageBox(0, PChar(cxGridView.DataController.GetDisplayText(AIndex, 1)), '', + MB_ICONQUESTION or MB_YESNO or MB_DEFBUTTON1) = idYes) then + begin + cxGridView.DataController.SelectAll; + + + cxGridView.DataController.SelectRows(AIndex, AIndex); + cxGridView.DataController.FocusSelectedRow(0); + Break; + end; + end;} +end; + +procedure TfrViewGrid.SyncFocusedRecordsFromGrid; +var + AValue : Variant; + i: Integer; + aObj : ISelectedRowList; + Clave : String; +begin + if not Supports(DADataSource.DataTable, ISelectedRowList, aObj) then + raise Exception.Create('La tabla no soporta el interfaz ISelectedRowList (SyncFocusedRecords)'); + + Clave := cxGridView.DataController.KeyFieldNames; + if Length(Clave) = 0 then + raise Exception.Create('Falta indicar los campos clave de la tabla en la vista del grid (SyncFocusedRecords)'); + + DADataSource.DataTable.DisableControls; +// DADataSource.DataTable.DisableEventHandlers; <- No descomentar + try + for i := 0 to cxGridView.Controller.SelectedRecordCount - 1 do + begin + AValue := cxGridView.Controller.SelectedRows[i].Values[cxGridView.GetColumnByFieldName(Clave).Index]; + DADataSource.DataTable.First; + if DADataSource.DataTable.Locate(Clave, AValue, []) then + aObj.SelectedRows.CurrentRowSelected := True; + end; + finally +// DADataSource.DataTable.EnableEventHandlers; <- No descomentar + DADataSource.DataTable.EnableControls; + end; +end; + +function TfrViewGrid.GetMultiSelection: Boolean; +begin + Result := (cxGrid.ActiveView as TcxGridDBTableView).OptionsSelection.MultiSelect; +end; + +procedure TfrViewGrid.SetMultiSelection(const Value: Boolean); +begin + (cxGrid.ActiveView as TcxGridDBTableView).OptionsSelection.MultiSelect := True; + (cxGrid.ActiveView as TcxGridDBTableView).OnSelectionChanged := SelectionChanged; +end; + +procedure TfrViewGrid.RestoreFromRegistry; +begin + cxGridView.RestoreFromRegistry('Software\\FactuGES\\GridSettings\\' + Self.Name, False, False, []); +end; + +procedure TfrViewGrid.StoreToRegistry; +begin + cxGridView.StoreToRegistry('Software\\FactuGES\\GridSettings\\' + Self.Name, True, []); +end; + +{ +procedure TfrViewGrid.FilterChanged(Sender: TObject); +begin +// +end; +} + +destructor TfrViewGrid.Destroy; +begin +// FOnFilterChanged := Nil; + ViewFiltros := NIL; + inherited; +end; + +procedure TfrViewGrid.AjustarAncho; +begin + cxGridView.ApplyBestFit; +end; + +function TfrViewGrid.AddFilterGrid(const Operator: tcxFilterBoolOperatorKind): TcxFilterCriteriaItemList; +var + AItemList: TcxFilterCriteriaItemList; +begin + AItemList := cxGridView.DataController.Filter.Root; + Result := AItemList.AddItemList(Operator); +end; + +procedure TfrViewGrid.RefrescarFiltro; +begin + //De esta forma obligaremos a que se creen nuevamente todos los filtros, cuando llamemos a este metodo + if Assigned(ViewFiltros) then + Filter := ViewFiltros.Texto; +end; + +function TfrViewGrid.GetViewFiltros: IViewFiltroBase; +begin + Result := FViewFiltros; +end; + +procedure TfrViewGrid.SetViewFiltros(const Value: IViewFiltroBase); +begin + if Assigned(Value) then + begin + FViewFiltros := Value; + FViewFiltros.OnFiltrosChange := OnChangeFiltros; + end + else + begin + FViewFiltros.OnFiltrosChange := Nil; + FViewFiltros := Value; + end; +end; + +procedure TfrViewGrid.OnChangeFiltros(Sender: TObject); +begin + cxGridView.DataController.Filter.BeginUpdate; + RefrescarFiltro; + cxGridView.DataController.Filter.EndUpdate; +end; + +procedure TfrViewGrid.ActivarDesactivarFiltros; +begin + if Assigned(ViewFiltros) then + ViewFiltros.VerFiltros := not ViewFiltros.VerFiltros; +end; + +function TfrViewGrid.EstanFiltrosVisible: Boolean; +begin + Result := ViewFiltros.VerFiltros; +end; + +procedure TfrViewGrid.AnadirOtrosFiltros; +begin +// +end; + +end. diff --git a/Base/uViewInternet.dfm b/Base/uViewInternet.dfm new file mode 100644 index 0000000..4ad138a --- /dev/null +++ b/Base/uViewInternet.dfm @@ -0,0 +1,94 @@ +inherited frViewInternet: TfrViewInternet + Width = 300 + Height = 115 + Constraints.MinHeight = 115 + Constraints.MinWidth = 300 + DesignSize = ( + 300 + 115) + object Label5: TLabel + Left = 8 + Top = 8 + Width = 45 + Height = 13 + Caption = 'Internet' + Font.Charset = DEFAULT_CHARSET + Font.Color = clActiveCaption + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + ParentFont = False + end + object Bevel1: TBevel + Left = 56 + Top = 8 + Width = 233 + Height = 9 + Anchors = [akLeft, akTop, akRight] + Shape = bsBottomLine + end + object lblParticular: TLabel + Left = 16 + Top = 34 + Width = 76 + Height = 13 + Caption = 'E-mail personal:' + end + object lblTrabajo: TLabel + Left = 16 + Top = 58 + Width = 70 + Height = 13 + Caption = 'E-mail trabajo:' + end + object lblMovil: TLabel + Left = 16 + Top = 82 + Width = 59 + Height = 13 + Caption = 'P'#225'gina web:' + end + object ePaginaWeb: TcxDBTextEdit + Left = 100 + Top = 78 + Anchors = [akLeft, akTop, akRight] + DataBinding.DataField = 'PAGINAWEB' + DataBinding.DataSource = DADataSource + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 2 + Width = 185 + end + object eMailTrabajo: TcxDBTextEdit + Left = 100 + Top = 54 + Anchors = [akLeft, akTop, akRight] + DataBinding.DataField = 'CORREO2' + DataBinding.DataSource = DADataSource + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 1 + Width = 185 + end + object eMailParticular: TcxDBTextEdit + Left = 100 + Top = 30 + Anchors = [akLeft, akTop, akRight] + DataBinding.DataField = 'CORREO1' + DataBinding.DataSource = DADataSource + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 0 + Width = 185 + end + object DADataSource: TDADataSource + Left = 16 + Top = 32 + end +end diff --git a/Base/uViewInternet.pas b/Base/uViewInternet.pas new file mode 100644 index 0000000..1be2231 --- /dev/null +++ b/Base/uViewInternet.pas @@ -0,0 +1,39 @@ +unit uViewInternet; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, DB, uDADataTable, StdCtrls, Mask, DBCtrls, ExtCtrls, + JvComponent, JvFormAutoSize, cxControls, cxContainer, cxEdit, cxTextEdit, + cxDBEdit; + +type + TfrViewInternet = class(TfrViewBase) + Bevel1: TBevel; + DADataSource: TDADataSource; + Label5: TLabel; + lblMovil: TLabel; + lblParticular: TLabel; + lblTrabajo: TLabel; + ePaginaWeb: TcxDBTextEdit; + eMailTrabajo: TcxDBTextEdit; + eMailParticular: TcxDBTextEdit; + end; + +var + frViewInternet: TfrViewInternet; + +implementation + +{$R *.dfm} + +initialization + RegisterClass(TfrViewInternet); + +finalization + + UnRegisterClass(TfrViewInternet); + +end. + diff --git a/Base/uViewMensaje.dfm b/Base/uViewMensaje.dfm new file mode 100644 index 0000000..1f63dfb --- /dev/null +++ b/Base/uViewMensaje.dfm @@ -0,0 +1,104 @@ +inherited frViewMensaje: TfrViewMensaje + Width = 443 + Height = 22 + Align = alTop + Visible = False + object TBXAlignmentPanel1: TTBXAlignmentPanel + Left = 0 + Top = 0 + Width = 443 + Height = 22 + Align = alClient + AutoSize = True + Color = clInfoBk + Margins.Left = 2 + Margins.Top = 2 + Margins.Right = 2 + Margins.Bottom = 2 + TabOrder = 0 + object Image1: TImage + Left = 2 + Top = 2 + Width = 19 + Height = 18 + Align = alLeft + Picture.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001000 + 00001008060000001FF3FF61000000097048597300000AEB00000AEB01828B0D + 5A0000000467414D410000B18E7CFB51930000027F4944415478DA95926D4853 + 5118C79FDB268AA54485D62C4C50962CDC87F5416D9AB966CEA440A4E84D828C + 304C89B217DB87D00F65252B69422F9A4161D6A0507C6D595A645083CC557871 + 29CE19949B6DD3DDEDDE9D73BABB561835D3030FCF39E739FFDFF3C2A1608EF5 + A1467A415632783A589C100254B0A0EB5A623A9392DCD365B89DBEFF3CBC5830 + C0DD9DD726922B34EFDAEB5B53F75972170470D4C8E461DB724D78091139AC66 + F4FC5E9BA24007FDF3064C75E6DE7DE94BD8DBDC4A834615014B5DBD8D6985E3 + 7BE6056074D2B544934357DCFA1CD2FBEA1B6C908742E96EAFBFFB7E5FE2A15A + 18FA2FC0F978B35E9CBAE94895EE2DB474D82053B918CA4BA2A1BFD37823B3D8 + 79784E80BB36298ADA98368C97937043F3185CACA1E164F12AD89E1509132316 + E659BB39A14807B6A000E74365A5282D43EB67BFC020FD1D76159AC0502785D8 + 984580B8691830BEA9561F634EFC1340AAA4111E55C60817859611E4038EF342 + 56FE6BE86C5A0F807D4010035F2DA3EE1EA32DEEA81EEC7F0126EF288E87A8D5 + 97389F8DC28280858ACB9FE06C690CBFF702E60DB153E463EF70C5D632EEDC1F + 00FA6A7CA824397D888B46AB671EF300CC826DDC092B5710411CB0406C62D86E + EFEA72C69DAA07F76FC0645DD241B15A7D93E3C6A85FE2471D5E686872C1CE1C + 2FE46BF0AC2A1842F7B9CBB2CFF8AB05007900A26949819995E075184D43A0FF + 400B95575CD0FED4010A9907AAB5E1BC9801EC9FA9C261656D03467FFC8106E2 + A55C7A591EA551197CC84A1121BB4FC8346AF540CB1307A895046225E8670B8C + D01E6611B198C445D9E5DC75EABD7E4DA32B322C05630F3F15BE5482788F788F + F9E9FB679D9110C781FBC077B753433BB478CB0F7C3B8CF0987D51CF00000000 + 49454E44AE426082} + end + object lblMensaje: TLabel + Left = 21 + Top = 2 + Width = 398 + Height = 18 + Align = alClient + Caption = 'Mensaje' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [fsBold] + ParentFont = False + Transparent = True + Layout = tlCenter + end + object bClose: TJvNavIconButton + Left = 419 + Top = 2 + Height = 18 + Align = alRight + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [fsBold] + ParentFont = False + ButtonType = nibClose + Colors.ButtonColorFrom = clWhite + Colors.ButtonColorTo = 12435133 + Colors.ButtonHotColorFrom = 13009540 + Colors.ButtonHotColorTo = 13009540 + Colors.ButtonSelectedColorFrom = 14602190 + Colors.ButtonSelectedColorTo = 14602190 + Colors.SplitterColorFrom = 13026246 + Colors.SplitterColorTo = 9211532 + Colors.DividerColorFrom = 15725551 + Colors.DividerColorTo = 13026246 + Colors.HeaderColorFrom = 8684164 + Colors.HeaderColorTo = 8684164 + Colors.FrameColor = 8684676 + Colors.ToolPanelHeaderColorFrom = clWhite + Colors.ToolPanelHeaderColorTo = 12435133 + ImageIndex = 0 + StyleManager = dmBase.StyleManager + ParentStyleManager = False + OnClick = bCloseClick + end + end + object ApplicationEvents: TApplicationEvents + OnException = ApplicationEventsException + Left = 104 + end +end diff --git a/Base/uViewMensaje.pas b/Base/uViewMensaje.pas new file mode 100644 index 0000000..551785a --- /dev/null +++ b/Base/uViewMensaje.pas @@ -0,0 +1,49 @@ +unit uViewMensaje; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, StdCtrls, pngimage, ExtCtrls, TBXDkPanels, AppEvnts, + JvExControls, JvComponent, JvButton, JvNavigationPane; + +type + TfrViewMensaje = class(TfrViewBase) + TBXAlignmentPanel1: TTBXAlignmentPanel; + Image1: TImage; + lblMensaje: TLabel; + ApplicationEvents: TApplicationEvents; + bClose: TJvNavIconButton; + procedure ApplicationEventsException(Sender: TObject; E: Exception); + procedure bCloseClick(Sender: TObject); + private + { Private declarations } + public + { Public declarations } + end; + +var + frViewMensaje: TfrViewMensaje; + +implementation + +uses uDataModuleBase; + +{$R *.dfm} + +procedure TfrViewMensaje.ApplicationEventsException(Sender: TObject; + E: Exception); +begin + inherited; + lblMensaje.Caption := E.Message; + if not Visible then + Visible := True; +end; + +procedure TfrViewMensaje.bCloseClick(Sender: TObject); +begin + inherited; + Visible := False; +end; + +end. diff --git a/Base/uViewObservaciones.dfm b/Base/uViewObservaciones.dfm new file mode 100644 index 0000000..86381d8 --- /dev/null +++ b/Base/uViewObservaciones.dfm @@ -0,0 +1,47 @@ +inherited frViewObservaciones: TfrViewObservaciones + Width = 300 + Constraints.MinWidth = 300 + DesignSize = ( + 300 + 226) + object Label5: TLabel + Left = 8 + Top = 8 + Width = 85 + Height = 13 + Caption = 'Observaciones' + Font.Charset = DEFAULT_CHARSET + Font.Color = clActiveCaption + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + ParentFont = False + end + object Bevel1: TBevel + Left = 96 + Top = 8 + Width = 192 + Height = 9 + Anchors = [akLeft, akTop, akRight] + Shape = bsBottomLine + end + object memObservaciones: TcxDBMemo + Left = 16 + Top = 32 + Anchors = [akLeft, akTop, akRight, akBottom] + DataBinding.DataField = 'OBSERVACIONES' + DataBinding.DataSource = DADataSource + Properties.ScrollBars = ssVertical + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 0 + Height = 179 + Width = 269 + end + object DADataSource: TDADataSource + Left = 16 + Top = 48 + end +end diff --git a/Base/uViewObservaciones.pas b/Base/uViewObservaciones.pas new file mode 100644 index 0000000..2430eba --- /dev/null +++ b/Base/uViewObservaciones.pas @@ -0,0 +1,26 @@ +unit uViewObservaciones; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, DB, uDADataTable, cxMemo, cxDBEdit, cxControls, + cxContainer, cxEdit, cxTextEdit, ExtCtrls, StdCtrls; + +type + TfrViewObservaciones = class(TfrViewBase) + Label5: TLabel; + Bevel1: TBevel; + memObservaciones: TcxDBMemo; + DADataSource: TDADataSource; + private + { Private declarations } + public + { Public declarations } + end; + +implementation + +{$R *.dfm} + +end. diff --git a/Base/uViewPlazoEntrega.dfm b/Base/uViewPlazoEntrega.dfm new file mode 100644 index 0000000..a639fd0 --- /dev/null +++ b/Base/uViewPlazoEntrega.dfm @@ -0,0 +1,47 @@ +inherited frViewPlazoEntrega: TfrViewPlazoEntrega + Width = 300 + Constraints.MinWidth = 300 + DesignSize = ( + 300 + 240) + object Label5: TLabel + Left = 8 + Top = 8 + Width = 97 + Height = 13 + Caption = 'Plazo de entrega' + Font.Charset = DEFAULT_CHARSET + Font.Color = clActiveCaption + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + ParentFont = False + end + object Bevel1: TBevel + Left = 112 + Top = 8 + Width = 176 + Height = 9 + Anchors = [akLeft, akTop, akRight] + Shape = bsBottomLine + end + object memPlazoEntrega: TcxDBMemo + Left = 16 + Top = 32 + Anchors = [akLeft, akTop, akRight, akBottom] + DataBinding.DataField = 'PLAZOENTREGA' + DataBinding.DataSource = DADataSource + Properties.ScrollBars = ssVertical + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 0 + Height = 193 + Width = 269 + end + object DADataSource: TDADataSource + Left = 16 + Top = 48 + end +end diff --git a/Base/uViewPlazoEntrega.pas b/Base/uViewPlazoEntrega.pas new file mode 100644 index 0000000..c5cb33c --- /dev/null +++ b/Base/uViewPlazoEntrega.pas @@ -0,0 +1,26 @@ +unit uViewPlazoEntrega; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, DB, uDADataTable, cxMemo, cxDBEdit, cxControls, + cxContainer, cxEdit, cxTextEdit, ExtCtrls, StdCtrls; + +type + TfrViewPlazoEntrega = class(TfrViewBase) + Label5: TLabel; + Bevel1: TBevel; + memPlazoEntrega: TcxDBMemo; + DADataSource: TDADataSource; + private + { Private declarations } + public + { Public declarations } + end; + +implementation + +{$R *.dfm} + +end. diff --git a/Base/uViewPreview.dfm b/Base/uViewPreview.dfm new file mode 100644 index 0000000..54a0015 --- /dev/null +++ b/Base/uViewPreview.dfm @@ -0,0 +1,10 @@ +inherited frViewPreview: TfrViewPreview + object frxPreview: TfrxPreview + Left = 0 + Top = 0 + Width = 320 + Height = 240 + Align = alClient + OutlineVisible = False + end +end diff --git a/Base/uViewPreview.pas b/Base/uViewPreview.pas new file mode 100644 index 0000000..c076735 --- /dev/null +++ b/Base/uViewPreview.pas @@ -0,0 +1,43 @@ +unit uViewPreview; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, frxClass, frxPreview, JvComponent, JvFormAutoSize; + +type + IViewPreview = interface(IViewBase) + ['{F9A96948-4005-4E9B-8045-7B4874A05D19}'] + function GetPreview: TfrxPreview; + property Preview : TfrxPreview read GetPreview; + end; + + TfrViewPreview = class(TfrViewBase, IViewPreview) + frxPreview: TfrxPreview; + private + function GetPreview: TfrxPreview; + public + property Preview : TfrxPreview read GetPreview; + end; + +implementation + +{$R *.dfm} + +{ TfrViewPreview } + +function TfrViewPreview.GetPreview: TfrxPreview; +begin + Result := frxPreview; +end; + +initialization + RegisterClass(TfrViewPreview); + +finalization + UnRegisterClass(TfrViewPreview); + +end. + +end. diff --git a/Base/uViewTelefonos.dfm b/Base/uViewTelefonos.dfm new file mode 100644 index 0000000..e1f7768 --- /dev/null +++ b/Base/uViewTelefonos.dfm @@ -0,0 +1,114 @@ +inherited frViewTelefonos: TfrViewTelefonos + Width = 300 + Height = 140 + Constraints.MinHeight = 140 + Constraints.MinWidth = 300 + DesignSize = ( + 300 + 140) + object Label5: TLabel + Left = 8 + Top = 8 + Width = 57 + Height = 13 + Caption = 'Tel'#233'fonos' + Font.Charset = DEFAULT_CHARSET + Font.Color = clActiveCaption + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + ParentFont = False + end + object Bevel1: TBevel + Left = 72 + Top = 8 + Width = 217 + Height = 9 + Anchors = [akLeft, akTop, akRight] + Shape = bsBottomLine + end + object lblParticular: TLabel + Left = 16 + Top = 34 + Width = 49 + Height = 13 + Caption = 'Particular:' + end + object lblTrabajo: TLabel + Left = 16 + Top = 58 + Width = 41 + Height = 13 + Caption = 'Trabajo:' + end + object lblMovil: TLabel + Left = 16 + Top = 82 + Width = 73 + Height = 13 + Caption = 'Tel'#233'fono m'#243'vil:' + end + object lblFax: TLabel + Left = 16 + Top = 106 + Width = 75 + Height = 13 + Caption = 'N'#250'mero de fax:' + end + object eTlfParticular: TcxDBTextEdit + Left = 100 + Top = 30 + Anchors = [akLeft, akTop, akRight] + DataBinding.DataField = 'TELEFONO1' + DataBinding.DataSource = DADataSource + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 0 + Width = 185 + end + object eTlfTrabajo: TcxDBTextEdit + Left = 100 + Top = 54 + Anchors = [akLeft, akTop, akRight] + DataBinding.DataField = 'TELEFONO2' + DataBinding.DataSource = DADataSource + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 1 + Width = 185 + end + object eTlfMovil: TcxDBTextEdit + Left = 100 + Top = 78 + Anchors = [akLeft, akTop, akRight] + DataBinding.DataField = 'MOVIL' + DataBinding.DataSource = DADataSource + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 2 + Width = 185 + end + object eFax: TcxDBTextEdit + Left = 100 + Top = 102 + Anchors = [akLeft, akTop, akRight] + DataBinding.DataField = 'FAX' + DataBinding.DataSource = DADataSource + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 3 + Width = 185 + end + object DADataSource: TDADataSource + Left = 16 + Top = 32 + end +end diff --git a/Base/uViewTelefonos.pas b/Base/uViewTelefonos.pas new file mode 100644 index 0000000..a1f4f9b --- /dev/null +++ b/Base/uViewTelefonos.pas @@ -0,0 +1,41 @@ +unit uViewTelefonos; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, DB, uDADataTable, StdCtrls, Mask, DBCtrls, ExtCtrls, + JvComponent, JvFormAutoSize, cxControls, cxContainer, cxEdit, cxTextEdit, + cxDBEdit; + +type + TfrViewTelefonos = class(TfrViewBase) + Bevel1: TBevel; + DADataSource: TDADataSource; + Label5: TLabel; + lblFax: TLabel; + lblMovil: TLabel; + lblParticular: TLabel; + lblTrabajo: TLabel; + eTlfParticular: TcxDBTextEdit; + eTlfTrabajo: TcxDBTextEdit; + eTlfMovil: TcxDBTextEdit; + eFax: TcxDBTextEdit; + end; + +var + frViewTelefonos: TfrViewTelefonos; + +implementation + +{$R *.dfm} + +initialization + RegisterClass(TfrViewTelefonos); + +finalization + + UnRegisterClass(TfrViewTelefonos); + +end. + diff --git a/Base/uViewTotales.dfm b/Base/uViewTotales.dfm new file mode 100644 index 0000000..aa87857 --- /dev/null +++ b/Base/uViewTotales.dfm @@ -0,0 +1,271 @@ +inherited frViewTotales: TfrViewTotales + Width = 730 + Height = 122 + Align = alBottom + Constraints.MaxHeight = 122 + Constraints.MinHeight = 122 + Constraints.MinWidth = 730 + object TabControl1: TTabControl + Left = 0 + Top = 0 + Width = 730 + Height = 122 + Align = alClient + TabOrder = 0 + object GroupBox1: TGroupBox + Left = 8 + Top = 8 + Width = 713 + Height = 105 + Caption = 'Importes totales' + Font.Charset = DEFAULT_CHARSET + Font.Color = clActiveCaption + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [fsBold] + ParentFont = False + TabOrder = 0 + object Label1: TLabel + Left = 16 + Top = 25 + Width = 74 + Height = 13 + Caption = 'Base imponible:' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + end + object Label2: TLabel + Left = 248 + Top = 25 + Width = 77 + Height = 13 + Caption = 'Descuento (%):' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + end + object Label3: TLabel + Left = 282 + Top = 49 + Width = 43 + Height = 13 + Caption = 'IVA (%):' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + end + object Label4: TLabel + Left = 483 + Top = 25 + Width = 76 + Height = 13 + Caption = 'Importe de dto:' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + end + object Label5: TLabel + Left = 482 + Top = 49 + Width = 77 + Height = 13 + Caption = 'Importe de IVA:' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + end + object Label7: TLabel + Left = 479 + Top = 73 + Width = 80 + Height = 13 + Caption = 'Importe total:' + Font.Charset = DEFAULT_CHARSET + Font.Color = clActiveCaption + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [fsBold] + ParentFont = False + end + object lblBase: TcxDBCurrencyEdit + Left = 96 + Top = 21 + AutoSize = False + DataBinding.DataField = 'BASEIMPONIBLE' + DataBinding.DataSource = DADataSource + Enabled = False + ParentFont = False + Properties.Alignment.Horz = taRightJustify + Properties.ReadOnly = True + Properties.UseLeftAlignmentOnEditing = False + Properties.UseThousandSeparator = True + Style.Font.Charset = DEFAULT_CHARSET + Style.Font.Color = clWindowText + Style.Font.Height = -11 + Style.Font.Name = 'Tahoma' + Style.Font.Style = [] + Style.LookAndFeel.NativeStyle = True + Style.TextColor = clWindowText + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clWindowText + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 0 + Height = 21 + Width = 137 + end + object cxCurrencyEdit3: TcxDBCurrencyEdit + Left = 562 + Top = 21 + AutoSize = False + DataBinding.DataField = 'IMPORTEDESCUENTO' + DataBinding.DataSource = DADataSource + Enabled = False + ParentFont = False + Properties.Alignment.Horz = taRightJustify + Properties.ReadOnly = True + Properties.UseLeftAlignmentOnEditing = False + Properties.UseThousandSeparator = True + Style.Font.Charset = DEFAULT_CHARSET + Style.Font.Color = clWindowText + Style.Font.Height = -11 + Style.Font.Name = 'Tahoma' + Style.Font.Style = [] + Style.LookAndFeel.NativeStyle = True + Style.TextColor = clWindowText + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clWindowText + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 3 + Height = 21 + Width = 137 + end + object cxCurrencyEdit4: TcxDBCurrencyEdit + Left = 562 + Top = 45 + AutoSize = False + DataBinding.DataField = 'IMPORTEIVA' + DataBinding.DataSource = DADataSource + Enabled = False + ParentFont = False + Properties.Alignment.Horz = taRightJustify + Properties.ReadOnly = True + Properties.UseLeftAlignmentOnEditing = False + Properties.UseThousandSeparator = True + Style.Font.Charset = DEFAULT_CHARSET + Style.Font.Color = clWindowText + Style.Font.Height = -11 + Style.Font.Name = 'Tahoma' + Style.Font.Style = [] + Style.LookAndFeel.NativeStyle = True + Style.TextColor = clWindowText + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clWindowText + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 4 + Height = 21 + Width = 137 + end + object cxCurrencyEdit5: TcxDBCurrencyEdit + Left = 562 + Top = 69 + AutoSize = False + DataBinding.DataField = 'IMPORTETOTAL' + DataBinding.DataSource = DADataSource + Enabled = False + ParentFont = False + Properties.Alignment.Horz = taRightJustify + Properties.ReadOnly = True + Properties.UseLeftAlignmentOnEditing = False + Properties.UseThousandSeparator = True + Style.Font.Charset = DEFAULT_CHARSET + Style.Font.Color = clWindowText + Style.Font.Height = -11 + Style.Font.Name = 'Tahoma' + Style.Font.Style = [] + Style.LookAndFeel.NativeStyle = True + Style.TextColor = clActiveCaption + Style.TextStyle = [fsBold] + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clWindowText + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 5 + Height = 21 + Width = 137 + end + object cxCurrencyEdit1: TcxDBSpinEdit + Left = 328 + Top = 21 + AutoSize = False + DataBinding.DataField = 'DESCUENTO' + DataBinding.DataSource = DADataSource + ParentFont = False + Properties.Alignment.Horz = taRightJustify + Properties.DisplayFormat = ',0.00 %;-,0.00 %' + Properties.ImmediatePost = True + Properties.MaxValue = 100.000000000000000000 + Style.Font.Charset = DEFAULT_CHARSET + Style.Font.Color = clWindowText + Style.Font.Height = -11 + Style.Font.Name = 'Tahoma' + Style.Font.Style = [] + Style.LookAndFeel.NativeStyle = True + Style.TextColor = clWindowText + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 1 + Height = 21 + Width = 137 + end + object cxCurrencyEdit2: TcxDBSpinEdit + Left = 328 + Top = 45 + AutoSize = False + DataBinding.DataField = 'IVA' + DataBinding.DataSource = DADataSource + ParentFont = False + Properties.Alignment.Horz = taRightJustify + Properties.AssignedValues.MinValue = True + Properties.DisplayFormat = ',0.00 %;-,0.00 %' + Properties.ImmediatePost = True + Properties.MaxValue = 100.000000000000000000 + Style.Font.Charset = DEFAULT_CHARSET + Style.Font.Color = clWindowText + Style.Font.Height = -11 + Style.Font.Name = 'Tahoma' + Style.Font.Style = [] + Style.LookAndFeel.NativeStyle = True + Style.TextColor = clWindowText + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 2 + Height = 21 + Width = 137 + end + end + end + object DADataSource: TDADataSource + Left = 80 + end +end diff --git a/Base/uViewTotales.pas b/Base/uViewTotales.pas new file mode 100644 index 0000000..3d0908e --- /dev/null +++ b/Base/uViewTotales.pas @@ -0,0 +1,40 @@ +unit uViewTotales; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, ExtCtrls, StdCtrls, DB, uDADataTable, cxGraphics, + cxTextEdit, cxMaskEdit, cxDropDownEdit, cxDBEdit, cxControls, + cxContainer, cxEdit, cxLabel, cxDBLabel, cxCurrencyEdit, cxSpinEdit, + ComCtrls; + +type + TfrViewTotales = class(TfrViewBase) + DADataSource: TDADataSource; + GroupBox1: TGroupBox; + Label1: TLabel; + Label2: TLabel; + Label3: TLabel; + Label4: TLabel; + Label5: TLabel; + Label7: TLabel; + lblBase: TcxDBCurrencyEdit; + cxCurrencyEdit3: TcxDBCurrencyEdit; + cxCurrencyEdit4: TcxDBCurrencyEdit; + cxCurrencyEdit5: TcxDBCurrencyEdit; + cxCurrencyEdit1: TcxDBSpinEdit; + cxCurrencyEdit2: TcxDBSpinEdit; + TabControl1: TTabControl; + private + { Private declarations } + public + { Public declarations } + end; + + +implementation + +{$R *.dfm} + +end. diff --git a/Cliente/FactuGES.bdsproj b/Cliente/FactuGES.bdsproj new file mode 100644 index 0000000..4a81d78 --- /dev/null +++ b/Cliente/FactuGES.bdsproj @@ -0,0 +1,492 @@ + + + + + + + + + + + + FactuGES.dpr + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 3 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + ..\Output\Cliente + .\ + + + $(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\Base;..\Configuracion;..\Usuarios;..\Modulos\Intervalos;..\Modulos\Documentos asociados;..\Modulos\Contactos\Cliente;..\Modulos\Contactos\Reglas;..\Modulos\Presupuestos\Cliente;..\Modulos\Presupuestos\Reglas;..\Modulos\Albaranes de cliente\Cliente;..\Modulos\Albaranes de cliente\Reglas;..\Modulos\Facturas de cliente\Cliente;..\Modulos\Facturas de cliente\Reglas;..\Modulos\Pedidos a proveedor\Cliente;..\Modulos\Pedidos a proveedor\Reglas;..\Modulos\Facturas de proveedor\Cliente;..\Modulos\Facturas de proveedor\Reglas;..\Modulos\Montajes\Reglas;..\Modulos\Montajes\Cliente;..\Modulos\Articulos\Cliente;..\Modulos\Articulos\Reglas;..\Modulos\Almacenes\Reglas;..\Modulos\Almacenes\Cliente;..\Modulos\Pagos\Reglas;..\Modulos\Pagos\Cliente;..\Modulos\Cuentas\Reglas;..\Modulos\Cuentas\Cliente;..\Modulos\Asientos\Reglas;..\Modulos\Asientos\Cliente;..\Modulos\Calendarios\Cliente;..\Modulos\Calendarios\Reglas + PluginSDK_D7R;GUISDK_D7;BaseD7;Configuracion;Usuarios + + + True + + + + + + False + + + True + False + + + + $00000000 + C:\Archivos de programa\Borland\Delphi7\Bin\ + + + True + False + 1 + 2 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + Rodax Software S.L. + + 1.2.0.0 + FactuGES + + + + FactuGES + 1.0.0.0 + + + + + diff --git a/Cliente/FactuGES.cfg b/Cliente/FactuGES.cfg new file mode 100644 index 0000000..52439a1 --- /dev/null +++ b/Cliente/FactuGES.cfg @@ -0,0 +1,46 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-GD +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-E"..\Output\Cliente" +-N".\" +-LE"c:\archivos de programa\borland\delphi7\Projects\Bpl" +-LN"c:\archivos de programa\borland\delphi7\Projects\Bpl" +-U"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\Base;..\Configuracion;..\Usuarios;..\Modulos\Intervalos;..\Modulos\Documentos asociados;..\Modulos\Contactos\Cliente;..\Modulos\Contactos\Reglas;..\Modulos\Presupuestos\Cliente;..\Modulos\Presupuestos\Reglas;..\Modulos\Albaranes de cliente\Cliente;..\Modulos\Albaranes de cliente\Reglas;..\Modulos\Facturas de cliente\Cliente;..\Modulos\Facturas de cliente\Reglas;..\Modulos\Pedidos a proveedor\Cliente;..\Modulos\Pedidos a proveedor\Reglas;..\Modulos\Facturas de proveedor\Cliente;..\Modulos\Facturas de proveedor\Reglas;..\Modulos\Montajes\Reglas;..\Modulos\Montajes\Cliente;..\Modulos\Articulos\Cliente;..\Modulos\Articulos\Reglas;..\Modulos\Almacenes\Reglas;..\Modulos\Almacenes\Cliente;..\Modulos\Pagos\Reglas;..\Modulos\Pagos\Cliente;..\Modulos\Cuentas\Reglas;..\Modulos\Cuentas\Cliente;..\Modulos\Asientos\Reglas;..\Modulos\Asientos\Cliente;..\Modulos\Calendarios\Cliente;..\Modulos\Calendarios\Reglas" +-O"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\Base;..\Configuracion;..\Usuarios;..\Modulos\Intervalos;..\Modulos\Documentos asociados;..\Modulos\Contactos\Cliente;..\Modulos\Contactos\Reglas;..\Modulos\Presupuestos\Cliente;..\Modulos\Presupuestos\Reglas;..\Modulos\Albaranes de cliente\Cliente;..\Modulos\Albaranes de cliente\Reglas;..\Modulos\Facturas de cliente\Cliente;..\Modulos\Facturas de cliente\Reglas;..\Modulos\Pedidos a proveedor\Cliente;..\Modulos\Pedidos a proveedor\Reglas;..\Modulos\Facturas de proveedor\Cliente;..\Modulos\Facturas de proveedor\Reglas;..\Modulos\Montajes\Reglas;..\Modulos\Montajes\Cliente;..\Modulos\Articulos\Cliente;..\Modulos\Articulos\Reglas;..\Modulos\Almacenes\Reglas;..\Modulos\Almacenes\Cliente;..\Modulos\Pagos\Reglas;..\Modulos\Pagos\Cliente;..\Modulos\Cuentas\Reglas;..\Modulos\Cuentas\Cliente;..\Modulos\Asientos\Reglas;..\Modulos\Asientos\Cliente;..\Modulos\Calendarios\Cliente;..\Modulos\Calendarios\Reglas" +-I"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\Base;..\Configuracion;..\Usuarios;..\Modulos\Intervalos;..\Modulos\Documentos asociados;..\Modulos\Contactos\Cliente;..\Modulos\Contactos\Reglas;..\Modulos\Presupuestos\Cliente;..\Modulos\Presupuestos\Reglas;..\Modulos\Albaranes de cliente\Cliente;..\Modulos\Albaranes de cliente\Reglas;..\Modulos\Facturas de cliente\Cliente;..\Modulos\Facturas de cliente\Reglas;..\Modulos\Pedidos a proveedor\Cliente;..\Modulos\Pedidos a proveedor\Reglas;..\Modulos\Facturas de proveedor\Cliente;..\Modulos\Facturas de proveedor\Reglas;..\Modulos\Montajes\Reglas;..\Modulos\Montajes\Cliente;..\Modulos\Articulos\Cliente;..\Modulos\Articulos\Reglas;..\Modulos\Almacenes\Reglas;..\Modulos\Almacenes\Cliente;..\Modulos\Pagos\Reglas;..\Modulos\Pagos\Cliente;..\Modulos\Cuentas\Reglas;..\Modulos\Cuentas\Cliente;..\Modulos\Asientos\Reglas;..\Modulos\Asientos\Cliente;..\Modulos\Calendarios\Cliente;..\Modulos\Calendarios\Reglas" +-R"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\Base;..\Configuracion;..\Usuarios;..\Modulos\Intervalos;..\Modulos\Documentos asociados;..\Modulos\Contactos\Cliente;..\Modulos\Contactos\Reglas;..\Modulos\Presupuestos\Cliente;..\Modulos\Presupuestos\Reglas;..\Modulos\Albaranes de cliente\Cliente;..\Modulos\Albaranes de cliente\Reglas;..\Modulos\Facturas de cliente\Cliente;..\Modulos\Facturas de cliente\Reglas;..\Modulos\Pedidos a proveedor\Cliente;..\Modulos\Pedidos a proveedor\Reglas;..\Modulos\Facturas de proveedor\Cliente;..\Modulos\Facturas de proveedor\Reglas;..\Modulos\Montajes\Reglas;..\Modulos\Montajes\Cliente;..\Modulos\Articulos\Cliente;..\Modulos\Articulos\Reglas;..\Modulos\Almacenes\Reglas;..\Modulos\Almacenes\Cliente;..\Modulos\Pagos\Reglas;..\Modulos\Pagos\Cliente;..\Modulos\Cuentas\Reglas;..\Modulos\Cuentas\Cliente;..\Modulos\Asientos\Reglas;..\Modulos\Asientos\Cliente;..\Modulos\Calendarios\Cliente;..\Modulos\Calendarios\Reglas" +-LUPluginSDK_D7R;GUISDK_D7;BaseD7;Configuracion;Usuarios +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/Cliente/FactuGES.dof b/Cliente/FactuGES.dof new file mode 100644 index 0000000..bcd0d40 --- /dev/null +++ b/Cliente/FactuGES.dof @@ -0,0 +1,522 @@ +[FileVersion] +Version=7.0 +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=1 +SymbolLibrary=1 +SymbolPlatform=1 +UnitLibrary=1 +UnitPlatform=1 +UnitDeprecated=1 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 +[Linker] +MapFile=3 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription= +[Directories] +OutputDir=..\Output\Cliente +UnitOutputDir=.\ +PackageDLLOutputDir= +PackageDCPOutputDir= +SearchPath=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\Base;..\Configuracion;..\Usuarios;..\Modulos\Intervalos;..\Modulos\Documentos asociados;..\Modulos\Contactos\Cliente;..\Modulos\Contactos\Reglas;..\Modulos\Presupuestos\Cliente;..\Modulos\Presupuestos\Reglas;..\Modulos\Albaranes de cliente\Cliente;..\Modulos\Albaranes de cliente\Reglas;..\Modulos\Facturas de cliente\Cliente;..\Modulos\Facturas de cliente\Reglas;..\Modulos\Pedidos a proveedor\Cliente;..\Modulos\Pedidos a proveedor\Reglas;..\Modulos\Facturas de proveedor\Cliente;..\Modulos\Facturas de proveedor\Reglas;..\Modulos\Montajes\Reglas;..\Modulos\Montajes\Cliente;..\Modulos\Articulos\Cliente;..\Modulos\Articulos\Reglas;..\Modulos\Almacenes\Reglas;..\Modulos\Almacenes\Cliente;..\Modulos\Pagos\Reglas;..\Modulos\Pagos\Cliente;..\Modulos\Cuentas\Reglas;..\Modulos\Cuentas\Cliente;..\Modulos\Asientos\Reglas;..\Modulos\Asientos\Cliente;..\Modulos\Calendarios\Cliente;..\Modulos\Calendarios\Reglas +Packages=PluginSDK_D7R;GUISDK_D7;BaseD7;Configuracion;Usuarios +Conditionals= +DebugSourceDirs= +UsePackages=1 +[Parameters] +RunParams= +HostApplication= +Launcher= +UseLauncher=0 +DebugCWD= +[Language] +ActiveLang= +ProjectLang= +RootDir=C:\Archivos de programa\Borland\Delphi7\Bin\ +[Version Info] +IncludeVerInfo=1 +AutoIncBuild=0 +MajorVer=1 +MinorVer=4 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=3082 +CodePage=1252 +[Version Info Keys] +CompanyName=Rodax Software S.L. +FileDescription= +FileVersion=1.4.0.0 +InternalName=FactuGES +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName=FactuGES +ProductVersion=1.0.0.0 +Comments= +[Excluded Packages] +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\cxTreeListVCLD7.bpl=ExpressQuantumTreeList 4 (VCL Edition) by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxThemeD7.bpl=Express XP Theme Manager by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\cxLibraryVCLD7.bpl=Express Cross Platform Library (VCL Edition) by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\cxExportVCLD7.bpl=Express Cross Platform Export Library (VCL Edition) by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\cxEditorsVCLD7.bpl=ExpressEditors Library 5 (VCL Edition) by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\cxDataD7.bpl=ExpressDataController by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\cxExtEditorsVCLD7.bpl=ExpressExtendedEditors Library 5 (VCL Edition) by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\cxGridVCLD7.bpl=ExpressQuantumGrid 5 (VCL Edition) by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\cxPageControlVCLD7.bpl=Express Cross Platform PageControl (VCL Edition) by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\cxSchedulerVCLD7.bpl=ExpressScheduler 2 (VCL Edition) by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxsbD7.bpl=ExpressSideBar by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxComnD7.bpl=ExpressCommonLibrary by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxBarD7.bpl=ExpressBars by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxBarDBNavD7.bpl=ExpressBars DBNavigator by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxBarExtDBItemsD7.bpl=ExpressBars extended DB items by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxBarExtItemsD7.bpl=ExpressBars extended items by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxDockingD7.bpl=ExpressDocking Library by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxLayoutControlD7.bpl=ExpressLayout Control by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxNavBarD7.bpl=ExpressNavBar by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxGDIPlusD7.bpl=ExpressGDI+ Library by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxPSCoreD7.bpl=ExpressPrinting System by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\cxVerticalGridVCLD7.bpl=ExpressVerticalGrid (VCL Edition) by Developer Express Inc. +C:\Archivos de programa\Clever Components\Database Comparer\Delphi 7\Lib\ComparerD7.bpl=Database Comparer VCL +C:\Archivos de programa\Clever Components\Database Comparer\Delphi 7\Lib\ComparerBdeD7.bpl=Database Comparer VCL BDE +C:\Archivos de programa\Clever Components\Database Comparer\Delphi 7\Lib\ComparerDBXD7.bpl=Database Comparer VCL DBX +C:\Archivos de programa\Clever Components\Database Comparer\Delphi 7\Lib\ComparerIbxD7.bpl=Database Comparer VCL IBX +C:\Archivos de programa\Clever Components\Database Comparer\Delphi 7\Lib\ComparerAdoD7.bpl=Database Comparer VCL ADO +C:\WINDOWS\system32\dclShX_Namespace_V3D7.bpl=(untitled) +C:\WINDOWS\system32\vclShX_Namespace_v3D7.bpl=(untitled) +[HistoryLists\hlDebugSourcePath] +Count=1 +Item0=D:\Proyectos\Componentes\GUISDK\Sources\;D:\Proyectos\Componentes\PluginSDK\Source\;D:\Proyectos\FactuGES (Estudio)\Codigo\Modulos\Contactos\Cliente;D:\Proyectos\FactuGES (Estudio)\Codigo\Modulos\Contactos\Reglas +[HistoryLists\hlUnitAliases] +Count=1 +Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +[HistoryLists\hlSearchPath] +Count=16 +Item0=..\Modulos\Presupuestos\Reglas;..\Modulos\Contactos\Reglas;..\Base;..\Configuracion;..\Usuarios;..\Modulos\Albaranes de cliente\Reglas +Item1=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\Base;..\Configuracion;..\Usuarios;..\Modulos\Intervalos;..\Modulos\Documentos asociados;..\Modulos\Contactos\Cliente;..\Modulos\Contactos\Reglas;..\Modulos\Presupuestos\Cliente;..\Modulos\Presupuestos\Reglas;..\Modulos\Albaranes de cliente\Cliente;..\Modulos\Albaranes de cliente\Reglas;..\Modulos\Facturas de cliente\Cliente;..\Modulos\Facturas de cliente\Reglas;..\Modulos\Pedidos a proveedor\Cliente;..\Modulos\Pedidos a proveedor\Reglas;..\Modulos\Facturas de proveedor\Cliente;..\Modulos\Facturas de proveedor\Reglas;..\Modulos\Montajes\Reglas;..\Modulos\Montajes\Cliente;..\Modulos\Articulos\Cliente;..\Modulos\Articulos\Reglas;..\Modulos\Almacenes\Reglas;..\Modulos\Almacenes\Cliente;..\Modulos\Pagos\Reglas;..\Modulos\Pagos\Cliente;..\Modulos\Cuentas\Reglas;..\Modulos\Cuentas\Cliente;..\Modulos\Asientos\Reglas;..\Modulos\Asientos\Cliente;..\Modulos\Calendarios\Cliente;..\Modulos\Calendarios\Reglas +Item2=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente;..\..\Asientos\Cliente;..\..\Cuentas\Cliente +Item3=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente;..\..\Asientos\Cliente +Item4=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente +Item5=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente +Item6=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente;..\..\Documentos asociados;..\..\Contactos\Cliente;..\..\Almacenes\Cliente +Item7=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados +Item8=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente;..\..\Documentos asociados;..\..\Contactos\Cliente +Item9=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente;..\..\Documentos asociados +Item10=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente +Item11=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados;..\..\Montajes\Cliente;..\..\Almacenes\Cliente +Item12=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados;..\..\Montajes\Cliente +Item13=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\Servidor +Item14=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\base;..\Modulos\Calendarios\Cliente;..\Modulos\Calendarios\Reglas +Item15=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\Base;..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios +[HistoryLists\hlUnitOutputDirectory] +Count=1 +Item0=.\ +[HistoryLists\hlOutputDirectorry] +Count=2 +Item0=..\Output\Servidor +Item1=..\Output\Cliente +[HistoryLists\hlBPLOutput] +Count=3 +Item0=..\..\..\Output\Cliente +Item1=..\Output\Cliente +Item2=..\..\Output\Cliente +[HistoryLists\hlDCPOutput] +Count=1 +Item0=.\ +[Exception Log] +EurekaLog Version=519 +Activate=0 +Activate Handle=1 +Save Log File=1 +Foreground Tab=0 +Freeze Activate=0 +Freeze Timeout=0 +Freeze Message=The application seems to be frozen. +SMTP From=eurekalog@email.com +SMTP Host= +SMTP Port=25 +SMTP UserID= +SMTP Password= +Append to Log=0 +Show TerminateBtn=1 +TerminateBtn Operation=1 +Errors Number=32 +Errors Terminate=3 +Email Address= +Email Object= +Email Send Options=0 +Output Path= +Encrypt Password= +AutoCloseDialogSecs=0 +WebSendMode=0 +SupportULR= +HTMLLayout Count=15 +HTMLLine0="%3Chtml%3E" +HTMLLine1=" %3Chead%3E" +HTMLLine2=" %3C/head%3E" +HTMLLine3=" %3Cbody TopMargin=10 LeftMargin=10%3E" +HTMLLine4=" %3Ctable width="100%%" border="0"%3E" +HTMLLine5=" %3Ctr%3E" +HTMLLine6=" %3Ctd nowrap%3E" +HTMLLine7=" %3Cfont face="Lucida Console, Courier" size="2"%3E" +HTMLLine8=" %3C%%HTML_TAG%%%3E" +HTMLLine9=" %3C/font%3E" +HTMLLine10=" %3C/td%3E" +HTMLLine11=" %3C/tr%3E" +HTMLLine12=" %3C/table%3E" +HTMLLine13=" %3C/body%3E" +HTMLLine14="%3C/html%3E" +AutoCrashOperation=1 +AutoCrashNumber=10 +AutoCrashMinutes=1 +WebURL= +WebUserID= +WebPassword= +WebPort=0 +AttachedFiles= +Count=0 +EMail Message Line Count=0 +loNoDuplicateErrors=0 +loAppendReproduceText=0 +loDeleteLogAtVersionChange=0 +loAddComputerNameInLogFileName=0 +loSaveModulesSection=1 +loSaveCPUSection=1 +soAppStartDate=1 +soAppName=1 +soAppVersionNumber=1 +soAppParameters=1 +soAppCompilationDate=1 +soExcDate=1 +soExcAddress=1 +soExcModule=1 +soExcType=1 +soExcMessage=1 +soActCtlsFormClass=1 +soActCtlsFormText=1 +soActCtlsControlClass=1 +soActCtlsControlText=1 +soCmpName=1 +soCmpUser=1 +soCmpTotalMemory=1 +soCmpFreeMemory=1 +soCmpTotalDisk=1 +soCmpFreeDisk=1 +soCmpSysUpTime=1 +soCmpProcessor=1 +soCmpDisplayMode=1 +soOSType=1 +soOSBuildN=1 +soOSUpdate=1 +soOSLanguage=1 +soNetIP=1 +soNetSubmask=1 +soNetGateway=1 +soNetDNS1=1 +soNetDNS2=1 +soNetDHCP=1 +sndShowSendDialog=1 +sndShowSuccessFailureMsg=0 +sndSendEntireLog=0 +sndSendXMLLogCopy=0 +sndSendScreenshot=0 +sndUseOnlyActiveWindow=0 +sndSendLastHTMLPage=1 +sndSendInSeparatedThread=0 +sndAddDateInFileName=0 +sndCompressAllFiles=0 +edoShowExceptionDialog=1 +edoSendEmailChecked=1 +edoAttachScreenshotChecked=1 +edoShowCopyToClipOption=1 +edoShowDetailsButton=1 +edoShowInDetailedMode=0 +edoShowInTopMostMode=0 +edoUseEurekaLogLookAndFeel=1 +csoShowDLLs=1 +csoShowBPLs=1 +csoShowBorlandThreads=1 +csoShowWindowsThreads=1 +csoShowProcedureOffset=0 +boActivateCrashDetection=0 +boPauseBorlandThreads=0 +boDoNotPauseMainThread=0 +boPauseWindowsThreads=0 +boUseMainModuleOptions=1 +boCopyLogInCaseOfError=1 +boSaveCompressedCopyInCaseOfError=0 +Count mtInformationMsgCaption=1 +mtInformationMsgCaption0="Information." +Count mtQuestionMsgCaption=1 +mtQuestionMsgCaption0="Question." +Count mtDialog_Caption=1 +mtDialog_Caption0="Error." +Count mtDialog_ErrorMsgCaption=2 +mtDialog_ErrorMsgCaption0="An error has occurred during program execution." +mtDialog_ErrorMsgCaption1="Please read the following information for further details." +Count mtDialog_GeneralCaption=1 +mtDialog_GeneralCaption0="General" +Count mtDialog_GeneralHeader=1 +mtDialog_GeneralHeader0="General Information" +Count mtDialog_CallStackCaption=1 +mtDialog_CallStackCaption0="Call Stack" +Count mtDialog_CallStackHeader=1 +mtDialog_CallStackHeader0="Call Stack Information" +Count mtDialog_ModulesCaption=1 +mtDialog_ModulesCaption0="Modules" +Count mtDialog_ModulesHeader=1 +mtDialog_ModulesHeader0="Modules Information" +Count mtDialog_CPUCaption=1 +mtDialog_CPUCaption0="CPU" +Count mtDialog_CPUHeader=1 +mtDialog_CPUHeader0="CPU Information" +Count mtDialog_CustomDataCaption=1 +mtDialog_CustomDataCaption0="Other" +Count mtDialog_CustomDataHeader=1 +mtDialog_CustomDataHeader0="Other Information" +Count mtDialog_OKButtonCaption=1 +mtDialog_OKButtonCaption0="%26OK" +Count mtDialog_TerminateButtonCaption=1 +mtDialog_TerminateButtonCaption0="%26Terminate" +Count mtDialog_RestartButtonCaption=1 +mtDialog_RestartButtonCaption0="%26Restart" +Count mtDialog_DetailsButtonCaption=1 +mtDialog_DetailsButtonCaption0="%26Details" +Count mtDialog_SendMessage=1 +mtDialog_SendMessage0="%26Send this error via Internet" +Count mtDialog_ScreenshotMessage=1 +mtDialog_ScreenshotMessage0="%26Attach a Screenshot image" +Count mtDialog_CopyMessage=1 +mtDialog_CopyMessage0="%26Copy to Clipboard" +Count mtDialog_SupportMessage=1 +mtDialog_SupportMessage0="Go to the Support Page" +Count mtLog_AppHeader=1 +mtLog_AppHeader0="Application" +Count mtLog_AppStartDate=1 +mtLog_AppStartDate0="Start Date" +Count mtLog_AppName=1 +mtLog_AppName0="Name/Description" +Count mtLog_AppVersionNumber=1 +mtLog_AppVersionNumber0="Version Number" +Count mtLog_AppParameters=1 +mtLog_AppParameters0="Parameters" +Count mtLog_AppCompilationDate=1 +mtLog_AppCompilationDate0="Compilation Date" +Count mtLog_ExcHeader=1 +mtLog_ExcHeader0="Exception" +Count mtLog_ExcDate=1 +mtLog_ExcDate0="Date" +Count mtLog_ExcAddress=1 +mtLog_ExcAddress0="Address" +Count mtLog_ExcModule=1 +mtLog_ExcModule0="Module" +Count mtLog_ExcType=1 +mtLog_ExcType0="Type" +Count mtLog_ExcMessage=1 +mtLog_ExcMessage0="Message" +Count mtLog_ActCtrlsHeader=1 +mtLog_ActCtrlsHeader0="Active Controls" +Count mtLog_ActCtrlsFormClass=1 +mtLog_ActCtrlsFormClass0="Form Class" +Count mtLog_ActCtrlsFormText=1 +mtLog_ActCtrlsFormText0="Form Text" +Count mtLog_ActCtrlsControlClass=1 +mtLog_ActCtrlsControlClass0="Control Class" +Count mtLog_ActCtrlsControlText=1 +mtLog_ActCtrlsControlText0="Control Text" +Count mtLog_CmpHeader=1 +mtLog_CmpHeader0="Computer" +Count mtLog_CmpName=1 +mtLog_CmpName0="Name" +Count mtLog_CmpUser=1 +mtLog_CmpUser0="User" +Count mtLog_CmpTotalMemory=1 +mtLog_CmpTotalMemory0="Total Memory" +Count mtLog_CmpFreeMemory=1 +mtLog_CmpFreeMemory0="Free Memory" +Count mtLog_CmpTotalDisk=1 +mtLog_CmpTotalDisk0="Total Disk" +Count mtLog_CmpFreeDisk=1 +mtLog_CmpFreeDisk0="Free Disk" +Count mtLog_CmpSystemUpTime=1 +mtLog_CmpSystemUpTime0="System Up Time" +Count mtLog_CmpProcessor=1 +mtLog_CmpProcessor0="Processor" +Count mtLog_CmpDisplayMode=1 +mtLog_CmpDisplayMode0="Display Mode" +Count mtLog_OSHeader=1 +mtLog_OSHeader0="Operating System" +Count mtLog_OSType=1 +mtLog_OSType0="Type" +Count mtLog_OSBuildN=1 +mtLog_OSBuildN0="Build #" +Count mtLog_OSUpdate=1 +mtLog_OSUpdate0="Update" +Count mtLog_OSLanguage=1 +mtLog_OSLanguage0="Language" +Count mtLog_NetHeader=1 +mtLog_NetHeader0="Network" +Count mtLog_NetIP=1 +mtLog_NetIP0="IP Address" +Count mtLog_NetSubmask=1 +mtLog_NetSubmask0="Submask" +Count mtLog_NetGateway=1 +mtLog_NetGateway0="Gateway" +Count mtLog_NetDNS1=1 +mtLog_NetDNS10="DNS 1" +Count mtLog_NetDNS2=1 +mtLog_NetDNS20="DNS 2" +Count mtLog_NetDHCP=1 +mtLog_NetDHCP0="DHCP" +Count mtLog_CustInfoHeader=1 +mtLog_CustInfoHeader0="Custom Information" +Count mtCallStack_Address=1 +mtCallStack_Address0="Address" +Count mtCallStack_Name=1 +mtCallStack_Name0="Module" +Count mtCallStack_Unit=1 +mtCallStack_Unit0="Unit" +Count mtCallStack_Class=1 +mtCallStack_Class0="Class" +Count mtCallStack_Procedure=1 +mtCallStack_Procedure0="Procedure/Method" +Count mtCallStack_Line=1 +mtCallStack_Line0="Line" +Count mtCallStack_MainThread=1 +mtCallStack_MainThread0="Main" +Count mtCallStack_ExceptionThread=1 +mtCallStack_ExceptionThread0="Exception Thread" +Count mtCallStack_RunningThread=1 +mtCallStack_RunningThread0="Running Thread" +Count mtCallStack_CallingThread=1 +mtCallStack_CallingThread0="Calling Thread" +Count mtCallStack_ThreadID=1 +mtCallStack_ThreadID0="ID" +Count mtCallStack_ThreadPriority=1 +mtCallStack_ThreadPriority0="Priority" +Count mtCallStack_ThreadClass=1 +mtCallStack_ThreadClass0="Class" +Count mtSendDialog_Caption=1 +mtSendDialog_Caption0="Send." +Count mtSendDialog_Message=1 +mtSendDialog_Message0="Message" +Count mtSendDialog_Resolving=1 +mtSendDialog_Resolving0="Resolving DNS..." +Count mtSendDialog_Connecting=1 +mtSendDialog_Connecting0="Connecting with server..." +Count mtSendDialog_Connected=1 +mtSendDialog_Connected0="Connected with server." +Count mtSendDialog_Sending=1 +mtSendDialog_Sending0="Sending message..." +Count mtReproduceDialog_Caption=1 +mtReproduceDialog_Caption0="Request" +Count mtReproduceDialog_Request=1 +mtReproduceDialog_Request0="Please describe the steps to reproduce the error:" +Count mtReproduceDialog_OKButtonCaption=1 +mtReproduceDialog_OKButtonCaption0="%26OK" +Count mtModules_Handle=1 +mtModules_Handle0="Handle" +Count mtModules_Name=1 +mtModules_Name0="Name" +Count mtModules_Description=1 +mtModules_Description0="Description" +Count mtModules_Version=1 +mtModules_Version0="Version" +Count mtModules_Size=1 +mtModules_Size0="Size" +Count mtModules_LastModified=1 +mtModules_LastModified0="Modified" +Count mtModules_Path=1 +mtModules_Path0="Path" +Count mtCPU_Registers=1 +mtCPU_Registers0="Registers" +Count mtCPU_Stack=1 +mtCPU_Stack0="Stack" +Count mtCPU_MemoryDump=1 +mtCPU_MemoryDump0="Memory Dump" +Count mtSend_SuccessMsg=1 +mtSend_SuccessMsg0="The message was sent successfully." +Count mtSend_FailureMsg=1 +mtSend_FailureMsg0="Sorry, sending the message didn't work." + + diff --git a/Cliente/FactuGES.dpr b/Cliente/FactuGES.dpr new file mode 100644 index 0000000..406a828 --- /dev/null +++ b/Cliente/FactuGES.dpr @@ -0,0 +1,24 @@ +program FactuGES; + +uses + Forms, + uLoginForm, + uPantallaPrincipal in 'uPantallaPrincipal.pas' {fPantallaPrincipal}, + uMenuUtils in 'uMenuUtils.pas', + uSplash in 'uSplash.pas' {SplashScreen}, + uAcercaDe in 'uAcercaDe.pas' {fAcercaDe}, + schPresupuestosClient_Intf in '..\Modulos\Presupuestos\Reglas\schPresupuestosClient_Intf.pas', + schPresupuestosServer_Intf in '..\Modulos\Presupuestos\Reglas\schPresupuestosServer_Intf.pas'; + +{$R *.res} + +begin + Application.Initialize; + + Application.Title := 'FactuGES'; + Application.CreateForm(TfPantallaPrincipal, fPantallaPrincipal); + Application.CreateForm(TfAcercaDe, fAcercaDe); + Application.Run; + Application.Terminate; +end. + diff --git a/Cliente/FactuGES.drc b/Cliente/FactuGES.drc new file mode 100644 index 0000000..a5d5271 --- /dev/null +++ b/Cliente/FactuGES.drc @@ -0,0 +1,14 @@ +/* VER150 + Generated by the Borland Delphi Pascal Compiler + because -GD or --drc was supplied to the compiler. + + This file contains compiler-generated resources that + were bound to the executable. + If this file is empty, then no compiler-generated + resources were bound to the produced executable. +*/ + +STRINGTABLE +BEGIN +END + diff --git a/Cliente/FactuGES.res b/Cliente/FactuGES.res new file mode 100644 index 0000000..4ed9eb9 Binary files /dev/null and b/Cliente/FactuGES.res differ diff --git a/Cliente/PluginSDK_D7R.drc b/Cliente/PluginSDK_D7R.drc new file mode 100644 index 0000000..a81d7c4 --- /dev/null +++ b/Cliente/PluginSDK_D7R.drc @@ -0,0 +1,10 @@ +/* VER150 + Generated by the Borland Delphi Pascal Compiler + because -GD or --drc was supplied to the compiler. + + This file contains compiler-generated resources that + were bound to the executable. + If this file is empty, then no compiler-generated + resources were bound to the produced executable. +*/ + diff --git a/Cliente/uAcercaDe.dfm b/Cliente/uAcercaDe.dfm new file mode 100644 index 0000000..297ca72 --- /dev/null +++ b/Cliente/uAcercaDe.dfm @@ -0,0 +1,1090 @@ +object fAcercaDe: TfAcercaDe + Left = 531 + Top = 365 + Width = 435 + Height = 435 + ActiveControl = bAceptar + Caption = 'Acerca de...' + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + OldCreateOrder = False + OnShow = FormShow + PixelsPerInch = 96 + TextHeight = 13 + object JvGradient1: TJvGradient + Left = 0 + Top = 97 + Width = 427 + Height = 4 + Align = alTop + StartColor = 2971346 + EndColor = 4828405 + end + object Bevel1: TBevel + Left = 128 + Top = 359 + Width = 290 + Height = 9 + Shape = bsTopLine + end + object Panel1: TPanel + Left = 0 + Top = 0 + Width = 427 + Height = 97 + Align = alTop + BevelOuter = bvNone + TabOrder = 0 + object Image1: TImage + Left = -19 + Top = 0 + Width = 450 + Height = 97 + Picture.Data = { + 0B544A76474946496D6167651A7F0000474946383961C201FA00E60000625E5C + FFFFFFE66738AB8259F6D2A8B72624886A4DC538298F8F8FAC2724000000FBFB + FBB2B2B2E4E4E4F2F2F2EDEDED30302FEC733CF48544D5AC83DFDFDFF07B40CD + 432CF7F7F7F9A8A6FCEDC2DD5933D1482EF6D7CEE9E9E9D5D4D4EABB95DA5532 + D1B1ACFA9630C4746ECD9992C7C6C6D75130FBCC30D44D2FF39367594E44BD96 + 6FC0574EFBE8DFB04D41CC665AFDF3E6B0AC8FD7C5C1D8D8E6BA3532B08981CE + A87DE15F35BF2E26C2433AE59D90FDD75DF8A57DFDF5F1D26F2F423D37D9D5D4 + FA812EF1E1DDEAEAF9FEF8F5AD3A35AB302CA22824DACFCCFEFBFA878686E3E4 + E9CECEDEDD6142BDBCBCA48C33A6A6A6BBBCC8F6792FD2513AE1E1E1F5F6F1E3 + 7D62D6D6D8EBEBEBE0D8D7999999F6F0EFFDFDFDF1EDEAFCAA4CDADBDBEDE9E4 + E7E8E9CE827DD45A44EAEBECEFEFEF767473FBF1F0D85538F9F9F9CCCCCCEBED + EDC94E40F5F5F5DA4E2FD9D9D9FAFAEFEFEFF5F3F5F3ECECE9444343CACA9DE1 + 7630E96D3AF4C2BAD1D1D1DD8542D3AF34D7D7D7D75E32E7E7E7EAE6E62C0000 + 0000C201FA000007FF801282838485868788898A831F04305C01919293949596 + 9798999A9B9C9D9E9FA0A1A2A3935C0B17650F580F0E176990A4B1B2B3B4B5A4 + 12221229B8BABCB982BBB9C1BDC283C3C7BEBCBBC0CABA3C041949B6D3D4D5D6 + D7D8A50B6D657EDE58656D170B0B01B0D9E8B3905CECEDEEEFECE6E9968BF5F6 + F7885E3C1C30F3FEFF00038AE292A6CD033F541A34E800AE559A05E7044AAC64 + EAD4853618336A14E70AA2C45ECC42821CB98CA4B193224BAA342682079E7E13 + 63CA9C69CD94C10614285049E86795B85734279A2AE820D5AAA3AA92B26AE531 + 20BEA75017A5F89021A8D5AB5837D9C4D2E00B05AF5EA9F42CE31062BCACD6C8 + 5D4CD5C18FC2B770FF15FAE9F020DCB888E906FDE26568AF5F7C7B09FD3534B5 + 05DAC38883DA7C8033A7E39D0D7AB26A930668E25A04DB3850E576A7CECF5474 + EEE4B9CA01E572FEA2AA5E3D68DFD9CBB063635BEC272758C7A2E74EBEF05A36 + A805698AB66D101AB771E33C3B901D979AB5737C29F611C1EBBBBAF550B44343 + 56E85967642C584CDFA57EBD54E63258DC1E7FFCF93864C9E27A5B4B54E1797D + 45F725E43FE4120691F20006A8096D3925D74107C43D469A5D4D091889291738 + 804518097E65A168A365681B6E3BF5C4143ACF85584F0A53F1439E8328566753 + 37A1454616375C35A6A0870E3C84A24D0E20581C870945E68D379171B7236E0B + 7D888D6AFB2D92A4FF214B12F64C34294609E0296574305A789545889E5B0986 + F5DD8B0FC917DB8A086E285A6407829714780702495C715E5150641B62D622E2 + 9D8AF040D57F52F6291B3B11EAD800166D40A4168C9D15D7E35CCB59A6628458 + 20C8259A0FD4E5C0A59A657A69A5E001A9E8770E9D388B7EA4D6676AA9A89EAA + 2AA982ACDAEA20ABC6CAEA333DF8692B6C5CA0820564E1C5C3CE2945455AE163 + 0BB172973CA25A056C5165344B9678955506DCB4695CA459B39CC9459769D226 + 1BCBABE0B22A6E7EE41E522E93B0A61B6E0A041876EBBB59019A23710B158A6C + 00C05DB4D9703B26B75C470D8252861208D0A1C0C108230C01024A3831CA50D5 + 46FC103966C1F30EFF5197A692CA4F2528A1040409274C87C7B2A46AB2AC289F + AC72CAAA16C627BC30D34490846F2A07D43AED54A6992A0A291859A56455EBAD + 251F876CF4D14A6CA2C5D14C376D3400B96A8629656928E1F4D100382CCAB9E3 + AADB75B85C87ED759253393274CC685FC34E705CF154A3AFF7021AE103FC12EB + CDB374B6B30903205FED3403992CEDF7E0099B911946AE70E144DF84270C4019 + A1AC2C39CB9357DEF2332D4893F6E600CDBC6B42E135B80EB2C01195ADA29085 + 01CE4FDE02D0B8D3495F22F8EB7E435DED4F0B584D7BC81040FE891E964B003C + E5C4077FAA045E50552BE7FF98B1BBD197C9ABA31F65004572DCC81214A184EA + CDA81CB7273E60F0FFF34723203BF94E1B6ED12BB3A3AF0004A05420FFFCFACD + 6FFFFDF2D76F6AFEF4F7CFFFFFFB0BA0FE04E192CC31CF1FAE739F02709506F4 + 2CA40CE370C2C19236BA0ACAE3503C7B9363BE139E1A996512E35360C2D46089 + F689F06000C05765B8F085134EF013C58BA1F166589F12F5E06C079485F31418 + BD5C6D86156978430215603EEC5970285A12D68EE43216713445772E3C18FC2A + 61C213AA2F4C211421041EE009FC79F18B600CA318C7581FCCD52987B61822FA + 70B53D57EC10611434A2114FC18D8374E92B1D5A1D44A010C59069818A7D4421 + BE20D2C23EC68E13FE0BA0FDF4B7C8440ED08B8F046024EFA32703A2111B6F5C + 6362D6E68A2A2A20FF76479423272F252C0D7AC70FADE002E30249074006D270 + A6E002145D38454492F196B8CCE5FDF450A2E95CF21A6A241FAE8033CB84C531 + 94C8AC484152E18D9DC4A9010F4803020219320A50C2930A4C613BB2E8422EDA + 528C8C14A31EC4E9C571DE323AEDD2DC2FA9914961C20622C54458119129CA0B + 9A2E46DE81E02A9D0600C005C009ED6CDA2123814DF7C11212FB341A04B45099 + 1204F4685ADB842E23A04BF951147F17AD680A30C08116E0709D9E08E6F3C624 + 4BA61D931C70A367052D122CB78487018383000929A186C10D940B0545D81740 + F12B762434645FD0D9052E5002BFFDF19B154DAA52F1278102BE0CA4B478E8C1 + 8E9A2276C4F3850FFF32947CE8F9207340486369906AC220B0534BD4946966F0 + 98372591D38359931338FB55007EAA307210C58D47FB81C7943053895234A37F + AD0060E717D8C21256B088B5E86115AB58C31A969204581E5469215284515514 + 6A508254D37AD94D5040B30ABD1E264A8A3449C4551E14B9D72532330EBA26EC + 8FA3A3C40E47C6D74CE0D46F651D90572BE2D3ABD1E10D11EBC81961B8D4E21A + 5717ED9A6C2DC4DA594F40C1B5466B6E25D4C04D93AE5512D5759A166E5BBEAE + 42A2B20A704245B0E037081064851FA508779DF6D64EF4B41CD05598C7A4558E + F45A02B18EC5AF7EF31BD8C6EEF7BFFC05B0609B5A15E5CE02BC0A90EE2610DC + B45662E2AA4E8B68FF24B2DBB4ED62F39891002FE020C1C7AB292138A1B26F29 + DABA3BF1F256AC4D4BAB882BC158010FD6BFFD5DAC8B671CE00A3C8308EA34B0 + 28981B0A14C3EE120C6E9A8429CCB43F5EF81D01006F44219CB012B4013C10FC + 2076D6EB4287518C0B1D7EDEC2AE1BBFBF4620C0FCFD328DC70CE6FFDA50C7A4 + 40B082312141F4B557124CC62D765F67619312841C19665A447DAC8006BAB40D + 24365A6E1710E8D789775AE510211DFAFA89323B9ACC907E7405D0E95134EF18 + 7DB59CB04169EA3E070780C84733B2494BE711254BC2C710682071FC708169D2 + EEADEC2874E30E3D2D2EC054846608C59777CDEB5EFB5AB062F6B5B0833DEC5F + EF1AD85EFE6B5339FFF0544B7722C8579B04051498E9B92A506BA08E6E002E6C + 91BB6878CE4EA3C302BA512F59EB5412840EE4A1A305CF1392B5D1918EF7A3E7 + 0D605A391B147C6E5AA6990C80BE16B4BD6D36295BE99AC24FD379DB762E487C + 4CADE9706F836E58B880B9DDFA202A9F70DDECE642BECB9BDB4D10BBD8200FB9 + C8471E722BE0A1D2F77EB6FB2601DE5C5382E106679A3F25F1809F6ED1B4101E + 2841055E2DA6C03CDBAD5C668D26AE80DC5A5C841877C55DB2DC694F241BD950 + 3FB6D43F1E75AA4FFDE957AFBAB2F77186947762E347AB7600A0C0300424D077 + 93803055E9AAF348E8AEEC3AB72AD38AE85584978F93AF8079907F608EDBA5FB + D5A625FAD5C49BA5FF8B0C354C7126DC9A2941F2C63BFEF1C59EB474BCBEE095 + 83E2B3158EC4B499F6664FC8BDB46B7BC885BD8AD26FE739DABF8208D18D2EF8 + 0843C8F019019812B2ED34B15F02F2B8CF3DC9059B8297505E136057A827B450 + 34ED4622E0BC7B18698D064AA18DFE5E4A6E079FB9383AA2530067AD17B2F6C4 + C17DC44DCC141E8BEFD1188D895DDF210276D875FACFCFEBF5A3BFD7EC87FFFB + E39F7E5F9FDFFDF8973FAFADF00166AF78B2D0E6349AE03107677746E3693CB5 + 7C21134714337AB1157DED763533050BAB670AE640623BA552D99325C17578E3 + 60281453190800768B2709BA778228286C12A003EDF27F50C563A1F059E2176A + 3B77342E37651036FF4FF1804D0860414A362DB7F663D5B73B41152624767DB1 + 040F5A655712134B4B5811E48011ADE00A8987559A1001E7978558B8855AD885 + 5CF8855E18866038866258865F161D1C7043BF67096A160A55687C0618320587 + 83025741A34731A767340C700A0B405E573345B145095C70357C102185426259 + 503A0FB188D4122D43E50A69F0057BE531DC04000B2021614017855254573387 + 99F0655E088A64687E5F288A62688A5B888A66A88A5B38691FD002CDB6860100 + 839E407B4AA005D87454D8748382A80911C87CDE1587C6942F364261B4368846 + 158C9570356F6010D583818A182DD2185CD532540B807C4CD3014F2617D5C305 + 2AD0899C308A66D8FF8577308EE2788EE6E88536860767E082BFD4869EC06F03 + 958B91C07463650981888F0A684CBB75814C033586071174E530D23738B0865A + 9270564DC3070ED01312875B50885220483121480E85043B6CC32810916DBC88 + 09E9888E20F99122398ABD248B93408B9C206495A07691A09046C36591E08769 + E53112F67946633E49288C080335A7F0101769345AC30EF6A892955006D0C690 + 07D26A1069314CF95E830305B7731A24D67696508E5679955899955AB9955CD9 + 95598985E508965C6905BDD775269987DAD6092EE93896405754255014917338 + 5787EE50505FE00E62B561F1D0380040554A10800AC090730168D45474E43083 + 74A005AEC0000108FF059CE0955B69075629995949997760999139999A099995 + 19011B058BEE984328A909D8A4022B99790D377E9CC634137874076338FD3894 + 0AA306ECC060E2855AAE569807F30639D2010F494D59600AC1F73A305995E528 + 005E899CC8C999CCC999CB7907CF7995D1790715A003AF28596B088F9C505037 + A805D0055BAE094770A66F7A139E0A707D92F8005CB096CF6362F2F000BA8930 + 82A98DD9E7345F00119CC84A9DC09962D99CFEF99F90690556D01F67399A8173 + 42DB552D0B3083DAD59310818DACC9057EE83E4E808790509F7EC307DDE09BB9 + D9476F001C5C407B25B69FCA79073E009D5859A2275AA2C8B9A228CAA22F1AA3 + 2EAAA2310AA3365AFFA37760051C956394A79D9BC09ECF8300970841B2D938A9 + C62C94F193DAA74A0AB487DD020922AA657EC018BE89A14C1354AE00A10A8480 + 9A9095D3799CC96995370AA3D289A2607AA6669AA6656A9564D982B268A099C0 + A0EFF3531F562510349C09C3074F3617849206E2075B6FA8005255A1D6721735 + 474D007011DF9006567A34595010E380A7FAD6715D3AA6386AA9987AA99A9AA9 + 997A072BC801ED989DA8D909457A3414905D6690068C814A6910A521E30417C0 + 187954357EA304908005E2D74A7AC605D7621A10B1795104058172378C5A9841 + A51969D001723A7808A909CFF9AC9B9AA6D08AA6D05AA2D42AA6D86AAD388AA6 + 9EC903964479709AFF095528535CD0A10A131CBA4119C3E904C1A123A1413D7E + 105FB906095A3A56EAA967C07129E20111E2734200C06A12C2100F40278D6A34 + C0551435F206CB2A73DD8652A2029D0210B13E10B1264AB1112BB1173BB1CA69 + B1177BB110DBA21CBBB11D2BB202A0B11F5BB221FBB1D0D97BD899723EDA0971 + 4607EAC9056FA067CC822969E004220A001DD0737483103AA18DF9F98F5DC537 + FFB89747C300E73554DC7717E64A3B74500273B30A93C13EC66A100C01417E00 + 984743077CD04040132A98C0A2294BB622BBA9656BB135DAB16B6BA36A7BA3FC + F7AD67290B0393450BB3537404894A272DFA921138CB07E1C77C1FD66DA68320 + 0A31B055134C1040FF9371537C13449B28853D15F72B0A271E36D9386620B506 + 01654CB18385C99BC3D113E2E0045C7B307420AC7B4A1A037B2C9510B223FBBA + B01BBBAE0BBB27EBB1B27BBBB51BB19E79723C3AB7B4B00EC01229748137A621 + 8587172CA5E128A6052C2F6216CB941E0752171E485F152965D9A31617415F39 + 59414321854EC40E92E8B8BCE331521B1C07C128A7818F82188D7B0B89D3388D + 7BFA193F532369000504C834B4E50ADCD03DB9D110007316676BBB691BC003AC + B2024CB2076CC005ECB19ECA2E72EBBBB2D0BD5B422FBAF122A651BCD6423772 + 512395B00DD08BB8E8B63D461129ABD02CCCE22C97321EF76257D652BC18A1BD + 71A54CD578780EABFFBE2B921E7231B001635A0889445278C2CE421642ACAF6C + 312CDEA1891FE8844E483117A1C143722692C12DF51500B70BBB4D50C5589CC5 + 5ABCC54D60053A00AA101CC143B119FC9B472FE2BD2E4CC6383128BC4109B14A + 2F1DF036E64047178C1E860B1709B120B85331CAA42F433C85DACBC7731C95FB + 8A17EBC03609D22165801AEAA5847E4C37771C1792DC1D71724A0DC111333CC3 + 52A3C1326221B7C113CB811A5B3CCAA45CCAA6FC99B118C6EEB50DDCA02305F2 + 1D4BB1112EBC3308B11384821717C0157212C7E3A0339B61C14571BE466CC967 + 1C2638031C689C2998FC7D2BA533DE9752EDB0BFFDC2AAA3953D3EBC19E98110 + A6B41E3CC2449C8BFF2917AC2944AC0AD92C24EB31BF4071B137A0CE02B0CEEB + 1CB1EFDCCEEC0CCFF21CCFF6CCCE137BCFEE8CCFF24CCFF4BCCFFB4CCF77F099 + AA8C1DCBD416DD2116C3ABAF0CCDD018C14C384105B7ECC60F0019CA91110EF4 + 0D76714F3DE3C939A110591B62A4573A3F8C377BFC0E209871FDB83637B12162 + 0141DE72CCF99231AAD0165CA221DA311A6F311774511728FCD3260CD4D892CD + A1711BCFC4CBE560CAB21BCF1DCBD4B07BCFA5ECD4B17B073A80073DD0BB058D + 8FC062471B042AADF0C30D3D35DCF326133D09B9BCC653DA2CE9F12940C4C2C2 + D119EEF13360F20AEE80BD0D8D38902891BE020FD7FB709D2C163AAC37ABB581 + 2DFC436DE21693C2FF44DE90263EDDD043FCD8083BCBD782C39DEC18536A2FF5 + 9CD900ADD99CBDD99E9DD97DD0D99C1DDA9F5DDAA02D0015C051A19AD599F0BC + 1592100BCD1152F3D30ECD4CDA51D69210AB3A3D17DCE1C909D1D676752D3F5B + 2171921C96225C381395608DD7E865CD7B9DDC2D7D2183E241829C5AC95DD86A + 0D1EC23B173C4DC2541BC4E01DDE288C298FA82FD80CD7B7014DF612D0A2BDD9 + FEDCCFED9DD9FF0CDFEE1DDFECFDD902409678C06CAC8D090F07D779042D5992 + 31269C31E0CC3D574227949006BB222779FCC4AF8C2520C8B42D35CC72B2101D + 943832ED880F3D352BA4554826D39BF1D7D37D78CC5CCDA167DE045E1795D2E2 + 1AE3D3418DB0421CFFE37FCCDC4AD7C255322C808DD9A6DDE3ED7D03EE0CE4ED + 2CE4004DE4F56CE49E4DE448AED942DEC5558D72FD6D5A057110C501D20C32E1 + 7504E3350ED13A81DBEC9023EC51203CD1195F003A1E74412C65C7C46D210B22 + C50EDB0EC82C35189CD720EE0E5E35E58DF14CE1B1CCC6DCACBDE8C3E26CE090 + 3DE8272CE3913D35263E8DFA22AB60F1DBEB6DDF90EEE3921EE9948EDF9FBADA + 518E2F0601B47232A553A8D73DA7317F7CE06BBD13035B0AA8501BC601D2ACE0 + 40117EE6A917956C01D74482262F92C45980013A2004444047C9CC117ACDC715 + 11DDAF5EDE265EC36DE0049A0500508005A6B5B4D602D6613DEDD41ECEB1F788 + 8ABEE89CAE13979DFFD4401EE4DF1EEEE22EEE430EEEE37EEEE87EEEE55EEEE9 + DEEE40FE025E0CC6999E2B07B141D443DD13B90DC1ACE587BE25B7ADE010322F + B7D1E9D2DB730D5EE625BE8421F8C8B42EDDC5120EAFE0042CD0041F7043F952 + D229FC811479319BCE1ED3DDB44D8BDC25000000A00200600679F0072590070E + 10EBD528EDD51EF388C311E59DC9144EC654D0E8EA5D0E459EE4E0BEEE3F7F03 + 4DF0EDEC4EEE3E1FEE40CFE4EA4EF49BDD048581D5104C105552E5178D67EF35 + D3A21EE3445CEA125D2343251C8DD1230C91C2F5C5366CED41497831220CC9FC + CBED7B6E6B286002567DE716E1BD74AED7A9D7CA88FD16E131BD4C6B8D5CD000 + 4A60004A10020C10FF026AC00066300040F0EC1073E37F1FF28F08F2D3FBBE8B + 1831DDB729DB0ED8CCE1EE9EFFF9A01FFAA2DFEE2FF0F4AC6D0A34F3D1171D26 + 0A8FCC3FC4EFCF122C3DF3D2151EF60FFF1374AD3DE851D42F5D281FC4BD4C98 + 2530F2260F44BF32E00226100237F4DCE7F57D751EEBDB43D3BA41DD32DC1101 + 9007245F029100071DF097FDA65E294D9188B6C4ECA6F0E50FE7173FDB54AEF3 + E1C0F340AFE442BFF4403EF4F05FF4E3FEFEE96EFFE6CEF4F70F083782023702 + 7729783D5C018C8D8E8F909192939495969798975C6D0F0D54140D1D0E6D690B + 5C0BA8A8A70B69170E65580F0F65B4650EB7AF587E549F7E1DBA9F1414540D7E + 58A3A55CCAA6CC69FF0E580DC2C565A45C5B2D5B175D426749015C497F421C42 + 2D441765BE586D5B60E324161B78175C69DB1C781C1C678B6D5D2DFC025C6B91 + 6415AB3614D494B8320796037A581222A1B0255599062154007022A4CC852C03 + 00986120A4439A301D9571F1D3A04D80050E1A60B910008B90120C182001A3F2 + 4287966DDE5068636A53423542885E68738B163061C3FC3CB8B020C08D3E82AE + 66DDAA212B56415F6F74E5AA5550D7B35BBD661D5B562BDAB46EDBA20D8B5543 + 93173A38F4C8C4B7AFDFBF802F39DB15F5015166A9121F7420AB712D5A4DA17D + E2D5C0D39761C53AD83AFCEDDB2A65ADCA740816EA6100286248C8A83126C599 + 001756BB60D37A5EFF1AA6DA640C78C1BB8885103D16FCA9C1C285050B2FC4B4 + E092A586151D491690C0BBC5A0032766546864E08A5416040000A83003A58C32 + 064AC48F0700C5497AF1060C20A0029E4199000D949829B18981991A145C0045 + 78DA01800005A67CA184124E302052092F95014576E13951C66DAFD0F2C02E97 + 7D418C61558105D788249668E28964A1A86289117CC0011181C528E38C343292 + 4627D26071612A06A9824A68B0C852C62CB61409CB2E930D230C15BED8724129 + CC9C62D02A4B6D48DA03697051036D2CE4604113599CC60672237439860E8751 + 50837153BC30660E785484040B6E5821C60839B021C61969D490039873BA31C1 + 32A638A8C2826698FFF1E4022550A85F7808146A8678E101A005769402608012 + 73287128050138119E165C94E1A9167F7430A9125AE8A7C2005804A0C6A4145A + BAD2A400D4909E0A2400E14C864F2D29155156D515175A73891597B1C622ABAC + B35D35AB2CB3D33E5B6DB4D662EB6C1F0258F1811035862BEEB88F28D34644BC + F8410D628AA59206860F60110B918F31064D34147418D53154152565BB3FB2F2 + 8C1F5075D006174A5890030B62842046173218801C122D84C082052C70700A09 + 5E8AC1011250F816423642848044165B34300272430480C4CA620C70C0C3CB94 + 8A804679F85142090EDCE8A9194E44A3051D1BA581C51B5068C700105279E029 + 000C64D1401A499BFF91C7025A88A74403658807C5026538A10615B624ADC217 + 5CE441E04839A5011E0031EC72B3A50BB4518B951D12B36E007D34116D136669 + C5ACDF8257DB37B4D66245ADE2842B5EB85D8163BBB8E1C7021E410A2F92ABF9 + E681D5E300C11418F310C03CFEE84ABC42D26BCB2B1D20099534A2F4AB12BBEE + B2623B533F49E3C0027E5A40B310499050C414217406850507E0C1C51F74B221 + 042A4E208FC116ADBC9B06120C5CCC82108B38D125C6CA1B24A078314CBD541A + 258CAA121FD9D5E08032256804844A6D68315E1E9D79105E0917E00A800C0D10 + 8F1A1641403E406100F24B1B85F8730179656700256800D23462864D008B30C2 + 02915534D007C49DFFA583620121B234F0C11286D0841C3C0B094FB8420F9EF0 + 85C8EA600B618895E770837338CC61256E83232651832A3D6AD7BB9812AF790D + A95EF1F284302E839907ECEE3342B45D29A6E88A7450E10B0D78C002CC700079 + 1030004A38001B3850152EC8A0080720411A64609C3DA12204681C992B644002 + 33B0E08E46D89E32B6508303CCEC0FDFB0DD02DE800003D061241E4983FD54C0 + 809EBCA703E7D18E1A8A8285A7C9A02706B0140554A0854921A00487A44200D2 + E0815689443D7C485B7894F0BE6FBC413B4A789B7634B2802A0E8943F9FA10B1 + 5CC8CB6CF9B297BC14E12F8589C26122AB094D48C107CCA1C3663AB31EA28906 + 158EF12ED229E636FF439297638894A1D6F1E275D3A08A67A23845EBBDEB02A7 + F3C434FB64842670C0335A3AC01834B688881D4007B129C20680A38C101C8006 + 1F7888F7BA388210F4D179A668430870708011706F15505A807F3402052C250D + 6A52EA93461AA00C27686492A6A8A40A0CC09FA2D88F3C2AC88383CC603F2D74 + 21006AD308831840B4F9E5213B0C789F29628A0004D02A514AB0A05330581871 + 925086293C2A0997CA54A53AB5A948452A53A3BA54AA3ED5AA506DEA559B7A83 + 26E8000FCB71A65839B7898BF4622A11B5262BE0A5CD6D422689F862E2340E46 + A8C494D39CE644A76888611225D0600C485049006A400338C1C88C68240117E0 + 788010D0840B4E30FF42636F34023186A01550C0011BB2F02E24B8E09F39800E + 68DC454A04108D0154D3CED794612A8D6021922A504396B8205200F0E7140130 + 547628F086EC98810E390DC0CD54E084AA785405A9541B7B76F7AE2F6807010D + C8D02B7667370DE1D2435CDBE52FB7BB54EE7AD783C42466B6C20BAD1996D72E + 56E0011E6030D6F68EAB6ED0888A47AE694DB6B63575AF7880375F275F62D955 + 8A787D92805B3130995CA0064678011EE0490223E4400CCA18EC0170A0BC33CE + 8C08D6101E0D30C01C0334947A5918010D9C7701215476043528C20BDE998A0B + 78A004EF72C0CD06E0002AAC92AEE9E3245D3D0A80492A030B35D08E1358CB05 + 2A4C6AA47E58C0AEFF5400A107FCEC3E7E80424D619A9DF2D472010D30C07806 + 680A3EA8010875BB60300AB34BAD6A1504664E339AD34CC235B3190D4B85339B + 35E06635CF59AB4D88000632E7DE3ECB0826A3E18566A03445415ED3BEA8738C + 867E120C26FA9028842A7480058CCE4A33451726318311D81058CFCC09070F0E + C1088A8083EDB9CCC30FAEC108468D0335368005A026C10894308204E480B329 + 3E0007B2E0021C8CE00C824C9A12A030A0433D44CAE38142D688960555D0940E + B2458503CCC6D21A20E0424AA0C3781EC00564AB409417F0141D3AD9533AD021 + 0F5C5083786A7021743AC07E87D40214C0A304D456F79657CC6516CBCC66A9B6 + F9CE000FB8C09F0AFF70AC32B509DEE2B39F17DE179810A634590A58A18568B7 + 22C6625E421AD27E5FF7E8324234C0D5ABB4C897E2805FB46104090E9F4AA280 + 721C14C108BEC64341B6A0851C140007051003030C80031D0C210DC233821168 + 400206148106BBE6F90B9E44D8E4598F0B0ED2B6B6CDE001AA34A0D8DA396423 + 53C16390B2C2C800D0F6A1B86D362838200025D0B212EE8376F1685B0B397602 + 955500852EDC86146058F62CC70DE3A61C69CC4C9A4A559A8A6637175E037086 + F3E1154F783A3BFEDF875F3CE2279F78CA3795F168AE7CE41BBFF9C8237CCF30 + 62B8E82F0136827DA8671297E2A189A8CD8B671C168C5EA2B0D615E9B59E33E4 + 236FC3524EA79910FF904007CF93D2229020EB55EB0009F0FC0309EE64853885 + 400723E30218963F02E0B7E0F754203EF45B9185DF3BF64969F003035AC5AA3C + 2C8528D7D1020258C53F5650E50BC46E40C0D2366FF6670969506836171EC000 + 28C8761161A37E5A40056D307E6F405BC4A6066DC0140F910601B820081035A3 + 9021F89637D955152020439AD7417D90798E77789087781D48677D907832E481 + 2838796EA6799477822388822F18673128791E8806DDB24CDE307A3A28090E28 + 4DC31271AA9756EEC27AAD976843A25F44357BC41269D6436922A77B50884E9C + 80059AB180BA374511F64575257CF0343B2A4140B3B35655320B56380ABA077E + ADE00AF2B22EFE02FF1A69283BA85069C9F0853CD2235EF8459050338BB13ABA + E723A770777E172C4585812050887456888898888A98888758788BD8888B1889 + 88088993288996688897A88874D60462E02239B883A06823174166B523698636 + 44F6E27A18270B54A844F9A284458118E7347252B87B56B81447E20761D00164 + B8286D288B86463A42F823E7C414B0E707BEC08BD4B0804ED13A2C213AE02786 + 6978864DB87BD1584E689886E6244859D808A0717E7E570BB7B080E04881D695 + 6FD8A5419558881D8889EE9881EBE888F0F88EED288F8D788F88588FF5C888F1 + D888F5E88FF1588F08F72D8B108AA0E8809F100AD40084A61851535471F2A28A + A9B32149D85F1E27FF8B6F688BB66885CC281ACF680C3F545F00D390DB2884C5 + C8182C110A4EB480B7000CBC707AD5737B23877B338986037693319918DDF80D + 04365DB8E0934CC18013385D43057852214E2060028AA89499D89491C8944E99 + 8850A99454199549699553D907CD471006B98337120DA5711841A87AC44884A8 + E37AACC868FA62917A683A96B6911CC99219320B45840C71584D519297F5E087 + 519497A46537BFF043D57369F8123A89647B00E69025B98DC4387188B956AAF0 + 4571E80AB75069B8B07B97E96E148837FAB63726800688089A49299A50A988A4 + 9988A7199A85F899AB299AA6A99A57B99AA8299BB00902A95988AE799BB68988 + 5680082DD0953AD8FF837CB59010359601437216779689468515D971E3F471B5 + 088571C9916678017E400641B9006B4005CC657B19958635730104B80CBEB800 + 724001E6B10A6D2007A4707E651006900613D1953B4CD2334BF1230FF1190E48 + 06C9609E5F200789E100FCB99717100716C42397A10A72F000612007DF784EF2 + B906D6488EA4D00661D000945994501178C4D204B25995207A95213AA2225AA2 + 247AA2269AA228BAA22A9AA220C089605590C0E9675F090AA220960D798A8826 + 918D8184DF944190F62FEE02977139810C480A6AC0001E503D0D8013251006A8 + 100679207FA6400179A0066A400F01D0012510055A1400543036CA100625E004 + 5140065581054E0AFFA527C10041A30C1DC00025B0066645010653066A806E5C + 10A70CE0076B50A572FA3E5C100651E0044E30A05810050C90070E5A645AB004 + 6EBA06A07129CB50066E1A06637A0568BA00841A0561D00A0B70054E4001D5D4 + 204C804DE768811AA4071E2AA2684095AFDAA22C0AA2B1FA99B0BAA2B55AABAE + 3AA2B9CAABBE5AA21AF01CFB20A333DA5E08490C3AB228396A8AB8989CAAF818 + B05719407A91422A85455A8641D9800CF04915DA7FFD1705CAE0010CC06590D5 + 7F5020A95C100507D2A86AA00503945B50A0A84E703014E0534A7005EF7205AC + B204CAF005080005F01968334105C4D6AF89E204509AAEC30669E3D7AE25E0A0 + F53A6C64A00CB3E2FF1F5BA30C14C02A82AA485A405779100568D30651E0AEFD + B20050A004E0CA0A08702961A6A119244EB2D604AF6A02349B94347BB3389BB3 + 3A8BB3364B95350BA23B9BB32A1AB4445BB4466B02C19A177B51ACEE55A36149 + 6863A998662991AB830B70450CEA12A47AE97EE098ADD93A8EA4E000FD47054B + 71292A0505CA7005E39A0A38A16CE6711AA4D2194C000510D26D50D0006E7A76 + 14507F57C00A6F506F90540F6FA005E627B06D70758DC4055730215A80AE2550 + 6F74D57F65A00551601E14D02A0F5B0F79C02AC34601A7E01E0890B201A0055B + 17AAA30A13C44605ABB006989B0A61A07E757337D7A537C412021360051130B3 + A379ABAFDAABBBFBFFBBB6BABBBD7BABBB4BB3BD3ABCC03BBCBE6BABC81BBCCE + ABABCCAB94686005182004A1C7B462259C0A490A513B96C8199146C8871CA971 + 1DC08BA3F32F423A44D73A94B8A07BE2C7005F701B6A0B05F0AB0C54E0A63B42 + 01E31705B3A5B64C80A65CF0050C7005E1AAA85180205CB0040DA204018210ED + D101A820078B7B057B45050643A843B6005F5002C4F6A7E91605AABB5339C100 + 080CA93931B1A14AB78ACAAFE51AAF5C3764A590101C95067B1B0558C00A8B1B + AF3D9306F70B0518E2B283E832CF27064D80B35370B3474CB3496C022880C446 + BBC44DACC43BBBC44B1CB4516C0250ECC4347BC554ACC539BBC46340BD42A0A5 + D8DB4C4E5B85509BFFA365998AE1FB93454A817D08453EE27E72F993760CB624 + C72F593825DA485A91694D61F8C7E8A02357584B95060B4AA42EFD5268B5D798 + 7FAC9353428791599C6E398DE844C7BED80AE4888AB28B8E3EA4A540800421E0 + 307740675B6CB4577CB4557CB36E70B3A91CB43DEBCA3BFBCAA72CC5B5CCC4B3 + 6CBC2FA04C5C59C63A849036BA90DDCBAC10D9569061A4B77886D6D89FE88B18 + EEE6B5776CC7E9500C8631876168AD1C599EA51884781966AD23131EA1992ED9 + 443B1C724D4893E80472798557B7B7CE79558E46DABE2C09CD44F9771B6A0CA4 + 10006FC0074820030E630520E006ADDCC4048DCB597CCA059DD0B8ACD047DCC4 + 078DC55EACD052ACFFD014BDD0169DC505FD99ADF12DD7EBCB9BD383F2857AC3 + 0C6066C94DED5B9DD4D8CE7CD9CC8018CD4D618EF4798160B80CD328949B9C98 + 20178DA783245CF31084297BA1730CCA3CD41A19854E488B22979172B8D4D368 + 8E465224F50CD54FCD991EC2A169C0075FF00640E0CF2B90BB6850D1130DD108 + 6DD115EDD0106DD6192DD6674DD64E5CD66B5DD10D7DD137EB5531EAD19C03D2 + 568D98CBAAC9F69271779CCDD4188DECD2CCF500CF2E3D5D499490A290068C10 + C862787E56584DECECCEEE87920969182C195F1B2A130FF18445AD91481DDAA2 + 5D93E508AD4479DA525DCF82380C1CEA017CA0D56FE0CF448C06538002B67DDB + B75DDBB6ADDBB8DDFFDBBEEDDBBCCDDBB81DDCBF3DDCC59DDBC7BDDBBFCDDB26 + 801778D00D76AD39A547CE693CCC3F7C44E258B5F24C8E824D3A3D4272B890DA + 4F8DC89371948B503A733C44D688D3EF6C3DB5F40CEA94453E5D72719523A3F0 + 965198DFA3BDDFFBDDD4D0FADF000EE054FD8A4C82051E70E058FD05B26D0563 + C0C4CAEDDB0E4ED0B61DE1CC7DDB11BED0B87DE116BEE10F2EE11E9EE1093DE1 + 1CEEE11A8E062FB067D511DDE3321809C92FB627D9514B724FED93E388CCCB0C + 2553A297EAFBD23C8EDA1B224D9C1D515F18863209E3935D92E974565688C81C + C7D9B9F7D946CDDF52BED4A55D2FE28DDAAA5D91C272E057E0016FB0CF25E07B + 5680066E90DC668EFF026C70E66ABEE6C59DE66CBEE663F0022190082A2E2E80 + F692C92A69461E84E04D8134BEDD29EDDD7EC9D7E20D198F112C8F86975E088C + 7B7DE4A5A086A627DF24973BAF18D4F71D9D503EE59A7E93326EE586FEE933DE + C9FAB296075EEA6FF0055FA00674C4E0650EDC232EDCC8FDE61D5EDBB51DE167 + 0EEB6B4EDCC51DC62EA208754E23F0E509C5303A77B5E77A6ED86E6C86149ACE + 38AE18CD5C4B0C78E5D9FDE350312C819E56429A7AC58E577108DF4ACE8C9ABD + 244EEED9FA1DE59BDEDFD61A8E868EE5D26ECFFC05151E9007F17EE01D82044E + 40020CBE011B8002FB6EDBFBFEEFB70DF0FDCEEFBF2DF0BD6DF0087FF0046FF0 + FEBEF001EFF0093FFFF00DBF01711E02C3FAEB32B2099DD00B8739D9D69DEE2E + 1D9446DDCDCE5E3AD71DE0879E3B97B16F5D7B863A494EDCCC98AE10D386818B + 942E57428DDF997EEE53EEDF28FFF3D03AE0A37EE0F25EEA1E70055FE00132A0 + 035630056E20F110FFF0C91DF10F0FF0B8CDF00A6FF5510FF554AFF50D8F02BC + AE17C48AF17DC105176025A0B0908E3ED2B338CF279DCDDD5DF2E8DB93521DE0 + D42E0C8ADCE795B928D94E5F7A3E71E810688F868BE18E19FC42EE3BCFF3A35D + D3EA2EEDEC2E66EF0E15499F07451FEFAF6DA5ABFE024FFFF45BDFF908AFEFFC + 0EFA022FFA5B4FFAFF2EFAA87FFA9FAFFAA1CFFAA3BF019C087A641F18330F96 + FC22D9ECDCBD12C7FFF85E7B8B71DF2ED56A374E7D37B5D08AF9E6070D58C7D9 + DCEC2319F3AA800E84519F5048DF402D3A445DEED6A8F8A28D7BC6E8E9A10EEA + 9B795D4BB2440D90F4468FE0599D07FE9C022F40DB9EBFF053D0F5F1FFFE083F + FF1B60FF5B8FFFF5DFF5F40F0828284D561F1C3D5C018A8B8C8D8E8F90919293 + 94915C690E580D1454580E171769A2A3A40B69A6A8A7AAA669A0A06DB0B16D17 + 6DA20BB7B8B9B75C0BBC696D0E65C2C3C20F65C60F0F1D7E5414147E65B6A2AF + C00E9FA7BAB8ABAAD2BC170F7ECE541D65AF659ACEE20D9EAEAFB4EFB3B3EDF3 + F4F5F6A1AED5C465C1FDFCFFFEFC9D63968E139566141E50F902C4431E871E3C + F07943514D08122FFF9A4C41B1A1239B8E1B3E821C49D26349922243824C79B2 + A5CA922C57BA9C39460C063C3D2AE9DCC9B367A505DFC25181768D15A951A992 + 6E63858F962C50B6B2E9E2650AD8B064C8921D7B80A5438385141A94E392886C + 2BABD6B0F5CAB674D5AD0B653685EDE0205E19AFCEBE385B57371FBCBFF2EE09 + 1EDC8A56B07D8813230607562F95065F29B429138E0FC4881EAEF06168518718 + 1F1C51820CED92F4CCD3A853AB563DA6909024897CCA9E4DFBD1250704FD786A + 63F428D2B6A872716B272FAAD4A9550F233BB6156B5782CFA2C50E60F617AC50 + BB8E034F43F69BDC06E4CCE14DF7981D71C0EF06ABB757D8F0E1610101CA1788 + 05FA5EDD1D3A04C0FF54F932C42B6F008144082188F1C246AB25E892050A36E8 + E048638C80010767D466E1853D91D506160691534B6FBE6DA7542AA3B8D28A71 + C7AD65CA05D614C31C56CE79D5805E0D38C0DD7464DDE2162F54B135622F707D + 47D72CC18CA7D733BBF9150F7AEB350955535611F3DE94F055590C337A7D511E + 3F0E50C72233963D8499666F7880840C055A81C6141B98F6A0836ECE14E79B34 + 15C2011118E6A96724693CB0C9630FD818A26F238AB84D2929E6429561CDC1C8 + 1557CF2104CD05BD94451D5998E6C8A3764A75E7E75E7439A58C5CEA98A7247A + 8139A95E61B0B428E57CB0D2671F92B32CA0082F0E7440051F793C2466667C00 + 01049A628C30069BFF1B30A86CB2CC2ECB6047CE829443B320456B2DB5D14E7B + EDB6D8763B2DB41D4538219E7B96BB671A7189132A88841AFA23896E254A9528 + 56399A0C168FE61759580FF0662B8ED45D8A4B8F522D05E4A7737DC22238721D + C957604B469C9EAA4DB2FA9E6218EFC3589680DAB8404E8A0085C5AEBC6216D1 + 665F7C71260956348142B4232D3BD3B3CCC65CF38227D13C73B725E95C6D4963 + BC6008B9E6165DDB02B91E345439A10C1A62A1501B9C6876405985EFBD8FE28B + 457DD0AD536BA50167AAE95A040B179C3708F365587DFB72A2F6791253AC6A7B + FABC1ADFDDFF0C849033BA7DB2400B442FD04607147C51B2C9115194870C24E8 + 318605DB428EADE4FF902B4B79B3975BCE6DE5C9663EB9E69F770BFAB353BC80 + C16BD3196D6EEA95701154336FB3EB74D4504F5DF02FC1640DE9D65BEBFB9D79 + 51917569A664ABE8E3C06D28B49727D68CDAF65049BA2371AA720B76E22B17E7 + AD3D95C2BCB771E1E55D43000C492C22B8575FF887D91B5F64B1720A2F24EB46 + E4A3636EADE7F487BEB9E8FCEF6F414D7810421A54A73AD64DE23678014F196A + C10DA795C25DC0B19D8A5A110CADED8E775BF343D776F3941B896D6C9B9297E0 + D0013D7E380F324A838CA9A4F797EA552C1FAEAA12DEF0A6B782F48D373CF840 + 06C817B22095C95726A3C81B9030A0158CA1739AAB9C129788C42572EE894E54 + 6213A328C5282271FF8A94732216FF27A1431890801642C54E7891BCAF40CF6F + 0E7C1A046B37357A39006B18C4E032BE42A340D5CD6FC313DBC02488B4917142 + 37C9F04A3394F698F0410C552E7C21A332C6C8AB60097C6A4B430A7298013070 + 873AE85A82E17E859989E8A5882F38E215A138BA2CD6AF94A81CA529F5673FFD + AD92731B00E021C088A1EE4CA62FD83920D20877100F35308DBFA15D042548C1 + 73C4B1035DE9CA1C25D52F6AF445781F04A1F114A5A3C1C10E3F82244F2155B8 + 40B8B53091848161F666182B61B0CD86BB59800444C0031E10A005B1B90465BE + D02BC449643340B008098C45C57EFAB38AFF0CA840FDB9452A22B126A7830D2D + 2D8409AEE5C71894FF3AE0E0D41128603A50986C4C142D2E984C6422538307D1 + 8B1F3CA6235B582A9A9B0AE1713231C86530A3318513C7633C348FB881D37A50 + 1AA795B6B7538635434B9194400A24E0051E70A005705804171C1086F4D93322 + 00E2431688A591825A919403CDAA56B1BA5525025008205BA84F1048AA3F8E45 + 124B25DC7D1678228B3E10A3C3D40E8B8CD9BB8E2A1332E9E8401B5277D2B045 + B378659B9735C302D28218D66D1DB0A33CA677D3703A2586DD2B270D9F43AA1B + 2E400412C86C0ABC30B4B22C200E61A000AFEAC9493EF06140696283050EB0DA + CAB11672AFB5400E2A375BD8BAF6B6B6CD6D6B751BDBDEE276B7B2FDAD6F797B + DB58DAE44E62E509FF1973D5B0980EC58EA7688429DEB80987ED461A6E95065C + 9362BB8529D3A3F909AF1F22A3A50E5C00127D45E91EA74295A4B9EDA732551A + 79C0638CBA2CA9B14EB25823F7EB5348B2230DEB14AA505340000EC00064AE23 + 83682302C4CC00284032609C158ED8D50A5BF8C215AE8921C29ADC49088E6187 + 55876ECA61AB5B4D46577BFB633365E7D6ED4A8D2D73056F78673C5E8474A20D + 96085B1E8997D2E24D575721868C06C7BBAF9962811FD7C1AF22DDB30F724E76 + 3C7C63873A334B65A17E20801552C405C8D08C1FDA937D4394F081663BDCE012 + 97CCAD65AD9A83CB5A34A31972B5056E9BE59C6636D7D9B66F6E6D9EDB1CB410 + CCB2C396E0421961FF9AA5983AC60F0FA014DAC26168F08DA31CBFCCAE8BDF65 + 36607065C6F9F1C332B2B997443322BD3A566F8F73D48ABBC0D76188BE57A444 + 8C682E5D877A4A36514E9BBC53EE69EF7B403D7228048CD9A18A60921F684158 + E1A2AB303DD503610E01FC1E87E128C6B9D9027D76856BCB06A109F08B1D2623 + 65521C62F2F4CD1AF5E1B6B72B9ADD764D3A5EC259188D37ADE9C29A7580B7D2 + 71BC4FFA571E11EF178C21CF5C906C8D0AD638859A0E947D637D0F56D54D86E5 + 8C6CBFF39D0E05D6A2CA1097400E390006720125B40D69304428B2328C4C61CD + 20AF73C8472EF29293FCE4264F39CA57BEDA298CC0CF1C06B489FD849042DBBC + D18F810C0A1B5DE8FF12CEA2DC4739F7BBDCF81C768761C835768C274A3CEF80 + 35BD2C7FDD05A94F4CAA83348028F3685E18766E90301C79E004AF476120BB5F + C4E4EE9187B62395310B71767E80004280436CD240861995C99EA66508129CE0 + 71E2FA9DCE7F2FF39C052FDCDBBA19F0881F6EE97440A1F2C99C8C34EFB6E427 + 7FD8C7689A1F4D03BA76D7F8E2AA0D84DD2ED5205ECD1AD1A7DBC6AFEA5D5191 + F675F5AD617E3814880234D866E3A124D6D5B056B2C1C94E4E85E72DDC05294F + A0221EF1491698870158C03C0F87993C0048EF1719010B6CCBF2EAABFCFAD6CF + 3EF6EB3CAD17E8000F5B707C725D778E7DDDFC483C4FFFF9E56B75296B3EE89C + E72E2B2AC86EA413FFF9A7E0F9443C43DD087AA79E16C75063A0C2257DD11E17 + E00466A0056F200CCB701022E67AB81476D7B348B5568191750C9A005396874C + 02A65954365499555405D6038EA77C7EC0109C743213212C6832026CB066D4B7 + 7D21475C2C1783DA378332785B07506DDF7706E2B75026E88092F71894D76D39 + D73688F673EFF756F157521BC535F6277A42D800FDD20B4AC57F9F867A1F5435 + 5CD136F97748B2D0064E00013F00005A90076F744E7B7175E400764DD2067C00 + 0566308773C8007ED00E74C37B920510CDA386F3355E7E407CC4970229F07680 + 13324C350325F32B62720559305521104AC9027239307295B85A977800997800 + 96A86699988969F6FF896AC68998E889A6B85AA4A889A7A88AA8688A1BE07D78 + D0023FA83AA65006A1A57E6EA31B5D617EB8D8739AC669541006DDB4849B3769 + 3AA26E80687FCF238C97046A96627AFE07146F1406A77675FC300DCE140B4E40 + 0710D08D00A004255043CE7575F5E586F75006500000DCD88DDD480766500278 + 883D65A7185C218085E636572788835888B148346DA060A3C54957E001595026 + C4620553908337A8900CB990D5C783E0876D7B0217B3725888665FC1305E4528 + 0E23D68583D409DDC46216257425050CCF118502B83CBCC17FA0068D7E856F28 + E66D98072561D8065140070010034FF003104007E00862F3B50E02976406E80A + 6F60063C89936600FF00EA98945AF073F87070BED77BBB5856DAA442FA28886E + 9701B21832654001FE515A13B132D2B7019C388A68D98A95988A6779966B9996 + 6E7996AD38977259979CF8966FD9967479976D19979C089187488BE9828BFC12 + 51DDC15C79818BE1D322E84023BA9679EF4792D2588FC93864CF335217B07FCE + C892A8C78540566854A830F050936D50024C09031950074AA0023D69064E307A + 9C1016E0716448660F7E0000DD98800CB09B50A00566C09A3F8000D7208FD973 + 813C750E9C7673B2995859A98F1327405EB910C686387CC009C342021EE7900D + B99DDAE990B1F47D5D59342CA2564698844CE7256FB44C95D77AD6100BE0305F + 49B284247909C818FF85B0B934BCB1999BE908B7606950E636A6429AB290074C + B94330000375B00274F003EEF89A3A37486C882FED992A1D809B74A0051E9032 + BC52024EC000BE498608F0242CA25354C969EB091EE400711540652B9A592D5A + 65C6179848B3090399829D742617F1022FD8973C6A973DFAA33CDA8A403AA444 + 5AA441DA966CA00332D00299692EC0777E7C03697C459FE046103DE775046815 + 8FE436C6A084C4184C22D29F778192A3A7741EC399FAD97F82A33735171647F6 + 6A4E21A06A00002A900176BA4319C00708009C00C000E0516490814C48561C5A + D08D0AA88B60A2061DAA0516EA01FA358F189892F7B886C8940CCD9995C66760 + B7920684B349F5D4FF4952652621A003C642666C09976976AA7B89AA23A7AA3E + BAAAB05A979B4872DE8701E1B927E26658D0D08CF2B6A9C9934D333594F63519 + E8306E82F2A54C3874BF7A75A2777FE44117BC9AA6FA2938B9F25206B1254A22 + A0B040A0005007A869A7078AA031809B10600650101629667B837A015FC08D4A + F00558500B96768279D0A108809B4A100DA0A08753694E296958560748DD73A9 + 985A88E3432E17B0061DF00557F0A9A0FA06A715021360206669A4167BB1189B + B11A6B016C6005212004E7B527507A6824D67F8E700956916989D59E758191C5 + 6A5DC389AC605A2870010E96694689F9688689A69CA954620A659637628B15A7 + DAFA05BFF905779AFFB4DFCAA8DE08051EA081AD27700C00012AE0044B971CBA + E20125C00072C8A07C409C89C13DBB48687FE87A5C42B0CD69B02D000365F18F + 14502696613257700529E30168B202233089AEBAB770998AA9DAB7801BAB7C2B + 72836B971D7B3A6720913E31799362853D2B30C9D10FFD060CB190096DE3A6D7 + 5022323B74BF3010A2C775EA22A5D28A850183B5552794DD1331DA1A0B7EB094 + DE9AB4778A9AA839AEDC68866A107C6C980C48690679E0071F823BC5C6A15080 + 007440074E3076242A1FC6A491956779F8720C7501602B3ABD1240BDD4EBA2D5 + 9BBD2BEA7614722BA055380C26B72B88A36230061A7BBEE89BBE199B031DCB78 + 598621505A98A3CBFF3ADEF058D5D0B299C06859927FF8808D5F1A35B85395A0 + 1BBA3B3BBFA146A5945156EBB04003170FAB1B0B546006745007765A07311003 + B09BB4316006ED88002510536ED354F89A0762E10AD4450179B0B5C38B9B5020 + 8F8D742FD934A9CE1B285C720AD81B712F9AC32C5A659C95013E980817100733 + 726CF7A4324E60202C50B1EABBC44CBCC439E0B1DD8B2121F65C2BE9927DF569 + DAF058ED298EE2F05F9ADBBFC43822B0A00C356695E1130A078C293C7B2BF439 + 10A7FBA62CF4C0B2D000AEFBAD767AC1141CBB785A074849B5E0A84D1EB0A008 + 900709D1B2A69605F5EA04BD09003FA005C84B6BCA8181BE1364023B70366CBD + DA9BC9988CC94465FF08609508333A03BDA27112C1827C2706D3D7C4AABCCA18 + DBBE14A2B83A717E5E73493CEB8CF7661DF8FBB2CB13B3FD0B99F2B90A00E853 + 6DCAA51E034D2855CB285B7E7BC34D11E8C0720C0B743CC1195C07169CC77A9C + 9A4A90944AC000E29007ACA9044EC0076211800D5026C2BBC210A0052EBC535B + 812F99F652F7287CA92B0D3A7CC3D96BCFF51C82EE64606D7B820CF62B032911 + 6F6B11E5BBA3AC7CD008AD97AEFCBEB411640B2475D054CBBD5A1DEE60B929C6 + 175F7C3DFF3B1C234A7B7FE821560875D154CB9E09A8B79764A3F9CCB0D0BA2A + F0BAD40CAE151C03792CBB788A04ABD99A4E205AB8E99A6AF00657F7531EA006 + 2AAC05C4FB030CF0FFC8AFD2CEBC9369664C5F936B1C9A1CD59B2CD5D50B6CB1 + F82F6DD0540E918279B01954F006FA642C9C88030740D6643DD6659DD666ADD6 + 67B9D667CDD66F1DD76D3DD768BDD6685DD770CDD6786DD72F40024705CB9320 + CBFFB50B12AD9FF342419A708F91D4148CDD562DB614FB7A76A7DB861FA28523 + 7DC5D4E17978E1180AB44060A8D2B110CDD65C075AF0D2775ACDD61CBB7540BC + B9C90008A0002A00054ED0D314E1102530D4BE59BC5F4B811A73411F05CFCE55 + C90C940B537DBD545DDC84F87607D61DFE7C6C01DD10C4320695F8D66D29D777 + DD97D4BDCAD9CDA3D69DD6DCDDA34FECBE801D0941E6213F2775858DA6543119 + B382D1D3A0D160ACFF794C31A28C2917677C0A2875D92C39999CD67A33990FA0 + DD0692010B11AC02189CB4167CE0A77DC14A8BA71970AF64C88EDBEC0425A006 + 161E051DEAA15AA004F8DA1464A7D4C8D43B32127C238664D8A01615B0C9297E + DC2CBEA285680859B6006B4005FF6CA36F9005765B203A9A036E9DD73DFEE36C + 4D033E3EE4405EE4447EE4424ED6429E03DEC7015B401BB2DC86B8143C06EC8C + 984073FB1B2AF0BDE59AE74C928B98515AC0F92D36FB6D92C0FD5CD650530FFC + 057238E000E09AB040BC329DC11980C7B06BE77A4C00ACCD8E748000B2ED0480 + AEC8BD49D41C5CAE58402FB7E422AA16E290D280603153F3AC16D850DC2D5EE9 + 12A7433E481D6D00FF069E8A386412206A20618F53DDE7BBDDDE7D0042CE89A9 + 9ED0AA4ED7409A034DA00348004FB251DEB89764E85DE57E551508C3099E90D1 + BDECD86EE5E50468D17FA47F639EDF07CC22C0C791D193D2A4890525C0E13DF9 + 06B0C08D3EE904AB79E0041003488BE0738EE07A1C03EBD8934FC09A7D0E05BB + C9B5838E0048C99365E8A78B04237194356A68795D3ADCD950BD2B9EE2D3DBEF + 00FFEF02CFEFFFAE0799CAB6FBC16577074462122C614602A85CB1463EF1474E + F1165FF1180FE407F00262800743308B9510E5C53EB9D851296AEC7FC70C751B + E2808BDD1E2E6F22C044EC52026E91F168CD98EC63FE16969BB33794ADA4F900 + 4E809B0C5ABC5F70FFED2AB08E0BAAE0099EDAA9C9E0D34CAE7E4C00A9D98E66 + E0E75A40D4EE4EAE3FC093DE88007C70155A83418E82055B6775B75714C741E9 + 6A5FE92B6A05C98D5C0100175F1DBE63724F61360118B1013D9EE418BFD7A88E + E479CDF768CDF76BCDF7849FF17FCFE41DDF028B7B580AC4B22C0B0B549EC663 + 1E3648032976148F5BEECBBEE1E5BCD72291777536B26338BFEB016C1FECF9D9 + 35E9005120F4E66A9A749005B0F0E679908EEDF804A38DDA49EB01329DDA7580 + ED5E0F0777BA025CCF9474A88EDDA80276E00306C0F53DA9046A700E1CF528C8 + C035CCAA5828A20B01EFEFDCDFFD044FF0DD1FFE2B6E8855C00549305199C1F0 + 502511388A113B7AFFF1F08FF8F13FFF184F035F05F29220F293BBFFB2000869 + 0B5C5C01858488898A890B0B178F176D9090691795979699699B9C9C6D6D650E + 0F65A3A365A70EA9587E5414541D65698BB38B865C0B69A01D7E14145FAE1D0F + 0E928F929FC79F0E516610744A4E0CD166745F9F74667E69D1003F103F003175 + 19E331E51904E31975E6E3752A100017B730E31F7AEF10F9FA10472E41412282 + D87181AF991935581E245CF8A094C25D7E3A6029236953A38B18175490B0B123 + C78F1E43821C29D2638A0F1F849C09106041075F7CF27898E9E14A4D3E319184 + 2031E2458E0338800A0D4A74A8D1A2488F2A0D4A63A9D3A4509F1A3DF0620406 + 2149586ADDCA3540FFAFAFBD1AC04AD56698D9B264DB6CBA45AB2D2243706F6D + D2441793DD4E73CB92C292B0A129B2A258B9F2E34096DB59B62A3928E3A7C157 + 2A6285118B840C190525747E9861E0044A342700E8BCF904000083694A2894C0 + DC0D000274EDC2894B473BC33B0019E020A2B7C38B0F032A54FC08EEC34EC07F + FF4EEC79223C1F02857EFD9EDA2B7122C50B19B337AAC0BDBBF7EFE0C38BF72E + 41C2490E2DB2A629B3E48B0799F0697A78E37EA798172E80E2D84F743F0DFEFA + E1F0DF7E011608A080FD11F55F800326682081074228A18300D290C30B5715D2 + D586BF74E88B58A1A422E288227EF2884587D87218215A1D820B2E954C722225 + 27E25549590DF1D5FFD774213AB04A2B54F8110B2183ACE86225A434D6CB2F54 + 84211924C654D6461EDC00E004057920A085675084568D0374D0E14D664A8411 + 06135A0090CF0F4AC490CE3AB2D5E60E042AECB10301BA7101070C3BF0208204 + 76048ADC3F52FC23820827246A80737D45C7A3427C9D529120DA35724B781C71 + 9769479A76B7E9A79876C7C3070408D1C3200EF811937CF2BDD18B0725384182 + 186C18285554B8DEAA6BAEBCDE6A81551C64B52157607D05226065257BD6596A + 0962A49183E042A35D757512C9623936440A2A663D205890853DAB482E6560D1 + 8063BD4016CC3091B42B651B0DA840070241FA9187165B7A165A167E20D01A03 + 5F7053661843CCB0FF8C983F1810CE38049433DB383B88A942A227EC90010C88 + 407C82085E1C2AC21E1C234A71A27A38A76D293C92A2502893BEA81D5BE3C52C + F3CC155891020F7870704612EB5181930740B0CA6A1E32CCCA460EFC2D886083 + 4C27EDF48406FED7B47F4F2348B5D254676DF5D6521375E155C20ECB92871D1E + 0BD8D9668D6822A56C89DBD65C9CD4556D5EA240BAE374227A0BA49086157958 + 23E49A4B8587413E590C65529AF10302E7FA61AF96F9AAA9C4BF11A9CA8D164B + 643EC412512020263C4FD4814E1DA4ABA3CE3B759EE045A277E6C9056F23C74E + 71403E74F3DCB6294F678A249562C496467AC81C3C77C37F573CCD9ADE4C0007 + 30A8F780CFF1B18AFFD31748147D1F1B07EEAA7DAF5029BDFDF738FC8A87101A + 8A5D6C58632DABACB2C8AECDF6216E2312ED8B73CD486DDC7AE97832B7382A19 + 6419F230922170010AC1152B22EC3ADCBBDAF0063A00800FE76A801FD48000C8 + 75291F008002053AB00BC794204C6A58021534370334A9C91B4F70136D085007 + 89C9AE6217DB4D0676B083179E003976704EEE74A72D7659A477BFD34804BA33 + 44EE14B102474C2211C3630724C6CC3C1FC0430B88D0120734E00D79C8A2D070 + F20620A861272FD84083F843C6329AF18C684CA31AD7C84636B2E10521E0802C + C446B60FA58F4478CC23591E61A9F8CD225A989891202DA198BAE9CF14DC0ACC + DE00182DF9FDD111FFBA68C0E07C81BE50B86B8165D10204A00019C834400D4A + A820BE4E680688B4E20B6FF08026CD308325F46206B05C02134EF339703C2C06 + 12DB83EA36363B1AC2A0487CAA21C54026856206C107F9D0C20E55360A1F02AE + 52B7B8C8059047CD6A22D13CA3CAC019B840843684810257E0C34C6442139C50 + 200BD5E3C9180214210A41AD9D0F4A1019D9D9CE79D6139EF8DC0F1B80B5CD61 + 9D8F02665B9FFA060A981AF5D18F8A005CDCEE47B7BDECE82F66618C63FE270F + BFF98D11B9F05107A8D08A7449100BA98012E2A48485D0E481A392FCA4124239 + CA7C286117BD788338F35002663020731C9DC1176009CBCE7D4E054A20C00E5A + 48271B52CC6230B0FF05EC0E55A84209C4398B41C52950C6AEDE5DE477B968C3 + 1287C8552776F5AB4E34E256C34A56B062536749E0C205BEF91E72B2EA0DA9AC + 5E08C4C08236DAF5AE78CD2B5EF789812CA4615875FC82D9D24658B414B644C3 + 20C641111A44854E8B90D772E8DD1693B70E4812A00FC04EDBDAA6A20594E547 + 94FC02642692C04B2E900A0E74154AA900CA95569094309D891AD450821230E0 + 1B8275E5126079059E96304DF9A0433950A7CBD519D59744CA400A8250CCA61E + B31BCA8CEA547BC83B4A4113907AB1A676AB79330E302F0D4948D517C4F91EA1 + 010D9D4EB8CF4FCA38C633C6736A5B43637BD5085F32C277BE38D8671CA9D895 + 7F0674A0020D30B3FF4ED448C612299A70D3444321B5BF10E9C5B2287D401B0E + 7AD1689605C26091A0306A14A328BD8B0210484DBA204341D70237C41CF48307 + 665B5B2738611A08F0004E774B01583281A74CB82002883A31A3C60EA95CE081 + 319DFB54082080B2D36D261FAD7AD54DE8E5015E8D3258A7ECC426527988562E + 6B942B908293E06167017000196670852CBA95264048B30CE64A57A49DB100FC + 81B35ED128E734D679CE7626E31B758004FE6E25B083D5A3A0054D0C41BCEF6F + 8B8DA642EB07D9271F9247222A03861B20E1465AF416919034BA9814910D1B3A + 460A1CE927BE00013350325DAD5DA912601B912FC42A56D0D02438C2E18A1A93 + B9844CB8F10CA000FF8172480C51AB33AE8F692802E73A17991050260F9BC93B + 262B3AA37B018F12A52DB32356B388E521550B321187067C217AAD92693A57F0 + 02ECE1F9DCE84EF77E2EC4E77E6AC5BFE913B0BC019C581311B22D96FE9DBE2D + 0D23BAA085C18874F062200C994A5F9A109B48C52E3AAA2E0957847EA07697A8 + 41AC845F3C6635AEF50C669410915DA8210A2E8E4697E8A08637ACA30E6FA082 + 6F739D6BCF85C3853EB6E1A008F58F1C1A39AA7E092976ACFB32EC622B21520E + FA95854EF4A19B75541C00832CE0E59EF2BE953E40D0094F58805F755BFDEA66 + 3C000BAC2083956805D07734ACD8118BB6B1ABAD59962AF0BED7AE76C72E5847 + B8A3EC3034DD0A4AFF4F78B38350CC032CBBA4D10290E73062B4C491416A337C + C143AA716D34A250828F3B8E83148886C8A1A0382DCCE1254E880103F2C05B5C + 33410910D8430C88BBCB9853CC0BCC4DFDB16D97644B02BEE75C70F2CF15A244 + 2A8BF5F6451F2B58716FED1460003DB1B72238CD4B932B443D042118C118D68B + F5E63B9F4039E0730FDE7DBEFFCEFBFACB6A9F412B9CEFEE3BF2996FBF1BFF06 + 2EC9824FD8A2D20ACC655DD100905A427E104FB0488F815A33F0E1F05FA160BE + 38D3F82F38AE7251C0255000059E63060DD101614005255007BB856333A0382F + 575431274C15932833977A4566647CD0103AC76496066D7603655C1501243882 + 2468072578652488FF442588822988652D287429E87BA5727E65400536016E33 + 71055DA41331701F4001674680037076676F1667449884FB51674C8884459884 + 4DB88450E8844A58854628856CA00321E07560D72383F6855F982C0F877EF353 + 868A76861871233FC717DA8237A9407798A5597EA3778241495430119A7560E0 + 17373212251D605287970587E76A50902F2E56027CD0188E13066A508885A805 + 9EF3030C500773E0380D40633656428AB30EBF767AA6A71CAA178AC8165C5060 + 49D8E16C1701820C810546977BADF88AB9C76538C33C49B000EC814AAC621357 + C083E1B466E47600F4F47CC2786E16C2753D4004F02670D8B78C04955896E03B + DE178DFB262D7AC1FF4C9016510B677E14462E7CF7187E506971A168F4D36F11 + 670C0E300D51F00682483679000D0CC078572041FFD70003882FF81226A41303 + 2540016180532AB7533300002A50077B00739F383217E85436B70F005002AF97 + 1D08762DD9C2102B58822C688217999116B99115D9912F78912FF8825044002D + 7006555006644005A9E474AD7278BE380248F38452389353D8844F2893359993 + 3749853B49933B89934C588CE30304A165473D6276875576649794CE8876DCC7 + 7650E9584FB632A1E060E57259EDA7167D44407B774AE8E30001640B65388EF2 + A740BCA6057C005783687114C0076AE0042590078D238F0C802F1584006AA206 + 5D00069947018DB1FF5B2A074B743090A34727C57590A0686CA9573BF0B00FF0 + A0065615916F081D8DC28AAE7899B098995B064552B4059E150714407CBB0857 + 5EB46662E066C3989AE7A6753A800148C09695842CF4C68CB4A95897268DB899 + 7E2AE38568015AED571816950B7A632CDF0896D198119F267892D0000EE40169 + 491FB0F915CE1941FFE704908800A1C40D25000755500573D00508E88FAD3498 + 04699088794333A7902E4500A0E70D18D400B0A7182AB38AD01192F6799FF899 + 9FFAB99F56807460A016C2D7564303347C804E3C91036EF6933AB9A00ADAA00C + FAA00E1AA14448032C2006242003AE52367704861CDAA1224209D09876226A86 + 57053817F0869116FF69C3F90AC0592490349CBF702C4E39A2E2989C837401A1 + C1005C441FEB08161C855211540215B45266A026E1D0055DE09D73602697D84A + 0D349066803A22537A31877A8A5928C836000440001FC00CFBA004192199F309 + 1D13B99FFA0992661A92689A9F56804DA5D203DC840558A245D273055F000432 + C00053E7930B2A8540C99348E8A75618A865D49383CAA7FC9103FB4402AF692C + F1369B904A9BEA730C04867751C976FD461928BA18A07587C0293FE452870035 + 16F6B616DD978A30E29099F0084E1062CE9996EB887F8FE1498D53624A600698 + 215C7560795BE09D7BD78F99C304A596AB02799E14939035B79EE8C04206D00D + 6B02050755481349FF99F599A6D67AADD8BA82E6913367400417F03C027A66A3 + 797C2130002C1084109AAE12BAAEEADAAE3769212370A144295861B7944879AF + F69AAFC8F28C6977A9B9D908D7A2A2FED3015AE9A2C2B951BE305A10352998FA + 4C9A1462ABFA06DEC000F3311FD0897F16F7A39E9407446A06D30001600007DC + 79924ADA41615002DFE0AC74B202C61A108AF90F3EF00E5ABAA5343B0105E10D + 90197B273AA6F4B910F8B9A61FC99141EB91409BAD50C4015D200F6DE0073968 + 5E57D00B59F0456230024723A87CFAA7826AA85178A85C6B935D3B854B08AF24 + 800744697D917AB6929A162DC336B8E9AF37920CE5C20BC05018CE2217A0A024 + 83010B6EF87051B9FF0093A30F740005DAE0AC00F0AACF89B13E4AAB1CEBB11E + FB0D22FBB823DB0592C64151A00F23E0B1A063AC178843DDA004E7C001CB7A0E + 2BE0ACDDA09BD3DAB30F100177A0BAAC1B92ABFBBA2FB8BA2408BBB3DBBAB65B + BBB04BBBB69BBBACDB9F52841D373853C417342B5634547B000590BC44A8BC0D + CABC50C8BCD01BA1CECBAEC95B84D3BBBC0A4A032F20AF81E6A1DEEBBDA5CA73 + 6848A3258A9C37729509DB01C669B0172069A7D470295355E53B3F5EEA982A4B + 275A30133BFA053D0A9B1C555345FAB14AC09D905B05493A07959807CCA00223 + 800778800123405CBA647A7B108A4E250276D00D063001344BB3E74000270401 + F279BAD4EAB3B16BFF9FABEB82FA29BBF6A9C2B5FBC227ECBA1180821280121C + B0053CF33C5844A7F28113E8643D2C9003D4EBAE443CC4463C8517220632B041 + CA88B64E9CB6CCF243FDDAB6C719095D395A74EBA28EE000DD0850DF18707B64 + 116CCB05DCA00F21ACB20610263A1A4E870B9D894B052F0600459A196A500504 + 0CB93050057EC000B7F1C01880010E1C028A9330131C739B1B108B321C1BBCA5 + E790011C300E2BA00F3B4BC2A83BC3AC0BBB28C8BB98CCBA997CC996CCBB9DAC + C99FECC99D1CCA35D35D2D9051EDD1B4B908577245023E91B5D85B93D75BBD0C + 5ACBCFFB93B8ACCB124AA14A9C055DA0AF4C89AF4A59CC847576DBD7B0E2188D + E7BB0AC1D06C4482FF24082B5AAF301128E36093718A5CF039DE200344E004DC + 0C0106600303000F4EA0BFCF79B1A7D60B6952A4EFA00473D09D772CB255D000 + 0C202674F0C7FAACCF78F0B72AF004856C43C536737650102A30B38C8C0E1C30 + 018B920FD852C2106DC230CCC2148DC22558D1136DA6BACBC22948D1BEE75D60 + 40110FD0007C60135B449A5237027555C42C7DC42EFDA0BE8C0759C0324F5CD3 + 92BA3E943AC663E98169B8B32CB31644B2C55DAC6188045169C14799B1264040 + 0470C0D40CA02666300152FD0E0781135C747F75E40B1E5B1AF0C0077260C776 + 0CB973E03999B1CF660DC8355003B9E4633387C1EFF0033F500403B002A19B0E + 133000E5DC0D3C1BFFD1D4EAC977F0D77E0DD8A29CBB822DD87EADBA86FDBA89 + 1DD8841D013713454AC7050F004EC41B3D7C0004970D046094A0D5DBD99EFDD9 + A01DDAA23DDAA45DDAA18D032C60150DF0BDACDDDAC84C4821CAD3D09855B629 + 3F278A055E1924D6C143F1CB2EFAF0031E708C3DB0273D00037520D553DD0C25 + 504E6979B883480194172674A206A9D09DF26CC71E8000DE5003AD79D618D09A + 3AF0C024D00D09F30402ED544120002EB026074DD7092DBA78DDD01080BAF44D + 7BBBEBC9198DBB87BDD1F87DDFFACDBBFFADBA34EC65DB76B75F506648706633 + 91A12510033D91033460CB2F2DE1BB8CBD15CECBEA1ABD056004153A3E376DD3 + 208ED38536C5CB1CFF998004A28E940BE6429C6D8873DBB2B0FA1002C33DE37B + B2273080041F60B3F0B0DCCEF9AA32A596BF004A496D6A8071DD555053745203 + 7EECDD671D0265FCCF2F34280270032ED00D076D03A1FBC81CB002788DD7FAC0 + D7F56D07AF2BE688ADC9644ED88A9DE602AEE67770E66EAEC9827DE6852DBB1B + 312A4290CA174006EEA1060A1E4EE385044E30573069E1A65DE8867EE888EED9 + 34300662E0E1C24CCCC3FCE8927ED4A728DB4CC60914B600A2E0189C661DD2C5 + 4CD2B118FA30002951DCA60E03A80E032D4000EF400771D9C3CDAD968DA8053F + 400751B0047110072362DDA701012E30B64CBECFDDFDC73AA00327F4CF013DD0 + 37D007549E0FE3BCFF3CA14B005CDEE5F25DDFF43DD8FB9DEDD8BEEDDADEED83 + DDA6D9D4023DE00073400158C49235114EF4E101C6EB02421CBDB34CE1D6EBD9 + F10EEFF25EEFF38EEFF8DED9D84B03DADBE87FB0054E2C9B1FFEE1942EC6961E + A6CF54BEB78D2E83911052F5E28E320AFAB00252FD011753DCA99EEA1CF00D3C + AEBF3EBE620CE0880E84EBBA5E2272F000A0010F21B0E4C1EEDD7850ECDC40C8 + B323050270F352D0ACCFDEC80C33EDD4FEE5D60ED17F3DF4445FF4465FE6469F + F44ABFF44CDFF4442F8BE37306ED4BD27C0E6E79A05AE94402419CE85CDFF55E + FFD9319D051EDAC4AECDDA62B87D09DF3B79E1BE76E807BBCDDBD2E117A38EDC + 1380F1A97E312D40FF0F30900566066E7CC000A1840003282F4B3004B91E0721 + 420550F00E06D0F24C3EEC90AFCFDD8D07A141272AE003017103382F05BFC1C1 + EF2DED5DFEF3F910F43D3BF4655EE6623EE7A83FF4A99FE66F6EF4AD8FF4AC3F + FB73DEFAB11F0112C003357892A1497CF29107800ECB3129DAFA2EEFFC7EEFC8 + 6FEFCA3FEFC70FEFDA3BB67FC08C7257F0213EA92D93F6DA513F9C5A870ABB4C + BAA332154FF7525D0779AFEAE69FF72DD00296ED9C50C0525A70CF003003871F + 075B009A98516A8EFFF2FABFCF2100082C3F103F3E025252411512031304198F + 19902B0395960306109A0F589C9E9DA09F9E77A4A5A6A7A8A9AAABACADAEA612 + 291F045D170B650DFF5779BB791EBE79577C7C6F482124232C3405CBCCCDCECF + D00509D1D4D5D6D7CC342F62485D6D0EE0DFE10EE2650F0F6565E3DFE2E4E0EE + E3F1F0F3EDEDEFE46D171769690BFEFF00030AF4C74F1FB8077E2850F8D2A0C3 + 3907E9224A34674E1384463626649CC051460B1819607CCCD0A224855D1E7A79 + 80A2048116285000D09931E4C190380F3C28A1030100093C18820A1D1A548750 + A3458F0AC5536350A14441820C98C5E1D1A30F942E59CAA4299457515E4F4528 + 359654D9556755A57DC56A6DAB085624F0C0D3629F033F6F52FAF275C583B037 + 403CC8303682068E02879F25460C6D71B3C59099455E36993165C998ABE1D046 + 0289902DEED8E1FBFF56068BE987A3DB885E1DBA35EBD7AE53E7E337B0B6C07E + B8D3E87BD04021950E58D2419C28119DC5151B392A9F30ABA4C8E71F5B64E8D5 + 8BA54B280C00006032E4E603260006D5900194A8F9F3E883720891A99088208C + EA58959401ABD64B5C2180DDFFB5958053FFB1A54A80000A68CA7F0422586005 + 3C7CC081105D3880C50C7CFCB2974A6F0026830C35BC908332CC4C538D88CE90 + 88CD89282E43A289056823860C54DC730F699CF8110670E8A823E38E3CF6E8E3 + 8FAAD1869B6D44FEC3C5026D744005157E74922371C4598491465426E70807D2 + 6549124904A4C4404B2F6547077743CC905D4F4E70C0011EE50D8514066FC6A9 + D45278A450C40F85FF443515017C4252DF7D5AE5F7D5A06019C8168103A682A8 + 808BA255410A3AE02104175C944141857AEDC5C7156F0823D8316CE490E2A8A4 + 966ACD66DB2001C66BAA99D341077EBC7ADA0310AD131B6CB8DE4A0F3EFA0859 + 64915C5C20E143E9A0F32494651CC75172562A4740495A6AC90103085C979D0A + 6446C1930A329CD1829A6C62D0667AE48A8B81151F1EF1830152C9E7A7241F00 + 1AA845FCD5DB49290AE67B87BE09E2EBAF82A4E81BF0BE040F6C70C104039C30 + C2F94690021E1C9C014E427D51B79707C150F0A9182CB0E198A920877C220E2C + 8821693DF070F26AACAFE228DCAEF2A01CF33B32EFCACE6C450E39A440FAE443 + A3B1C8A623659544FF2FBBDC23DF66C9017D75586BC60F512C3104143C0D80C7 + 10420801EEB849750DE79C41E1A1C31846D050840A10F830009F55F96983BCF3 + 76652F7FFD1E2C30C3FEDA9D37DE07F25DA0C2752F7C470AB23CABCF1A4B58B8 + 575FC3BC91C760C7B080C3C78A6566D9E5D754168DE69657866A6743ACA69A03 + 0FAC0CAB1FA837199C8EB9B6AEABEBE1E4B3CFCE01E9BC80ED0B1C79641AA4BD + 532C94C731AB5CB3CAD581E5965A6650157666D01145770CD0A1C2083A7C9081 + 102D68CD66B8E59A87070156B051360D39A8A0C2DAF349624356705792DFDC84 + EE2B00BF043731FFC2F3D38FE0FDFA27CC3FFFF80BE0FEF8F53F04C1E5037800 + 03391E4085BC58ECFF626FF802108A11B92224661A180C913436A8A20DAE4883 + 190C21073D48C20F76B083193CE10639E399191D040B1D0843AC6CC4321CE5C8 + 563FCAA10E65A41AD5F4AA1F00B19D10FD71A4DBF1AE87103987122532B48C38 + 91684F5C4E08D4A4BC2A2E4D4D75300304A23684E8FD60042310C3141F94B570 + 95C728724A0A523E200651D1E08D343000FADAF688B7B50F3F1621941E3901B8 + 7F09106FFDBB5BFF0616C8BD05727E0EC3800CB0D4065C38F06229E1C3172890 + 05C184400C23C801E544C6C94E2E838542B859234B07AB52CEB094C0595DEC5C + C7CAD7DD4A76B421C8ED6639C45AEAA691143956B234B102A3F9924ACB09E62C + AC484C0EC4A00471FF1882B6BE280631E88004E2CA9AD6D60414AE1125526C7A + 011CE1C802F4BD2B03ECBBA3FBE8B54742019080F94BE71FF375CE75B67380F2 + D3DF39DF994EB81885917FA040A72009492038EE922F2802084B48D00F8AD084 + 051D21420DAA501276B00823E8CCAA520643539A1275B03A8D3A5847B38ECEEC + A3309BC73D7EE82B59D6929601B940398693A32642F1A5C4630E151FB1349A72 + 406A6A000004C2884930EA608A43F81635DDA4146CEA409BE3334C37FB445370 + 8A336E102827DDD6E9BF42A293AAF0646756055840770AC00A8FC20096B6D086 + 2D34800FBCE0E71B16A20619800A449E54615C47788D04908F7A1C180DE94C77 + CABEB62C952FEBE1FFE85A49D857FA7076B543E94909A21B958E6E89C11B1E47 + 9023D9605A9600572C660690909D1F984107CD6C661875A0A6AC51937B6E6293 + 0E3EB44D1A0C60056D5B9A245610CEA7BE4FAA5F49A7000CA1DBDEE68FB7BE0D + AE70874BDCE21AF70E119040A438D0852D38F2811004021F9020831888C10520 + 3A6842B5CBDDED7AB7BBE09586117240BD2CFCE11D2A9321ACD44BC3F59ED249 + 3B8CAF7C77349B93DA57B1B71396398CA389293DD100728429308559153AD291 + 0010285968C3C8D3E56ECD5C5F438A9D9401C702B060056CB30A019E0A2841C1 + 0F2CF98BA73A434CE2AE9678802336716FE3C9E2138BF8C4294690156421A932 + 6C414979519C2F84FF41C962708C0D3430423416AAC167107944283AB2347040 + 5E1D202174AEB2A85F67983A967522B08375656159094B7EDC77884154E97094 + 35E0B701D800BD2CB3658FD6D4F93C4206A18D3318A9B7DC69A2964D5668ED1B + 7DB0023F4562C31CBECF6D3F1C0AE31ABAB83738B4A2839BE84557E0517421C2 + 05CA4005E82E4E92405003615820E4F07AFABBA0FEB4A7C71B51E692AEA25396 + B24553890E1C86B466B0F6A8CD7AB80FFC7E99965EFEC6035CFADF33CBB1974F + 8CE9721C649502F389007860302617DC4C36D9797B18E0410E8A90546D60783E + 55097487F348E84F2CFADBE00EB7B8757B87B908010CCE4D08A654B2B84E0161 + 3035C8245C1BAA42FF25DBBBC8F4CEB7BD994C3D214439D5003F1DCB5063AB2D + 6B59CB5DB6B5C271C73B0744D69798F0B51C6D20EC353BC2CD07AE439C996D32 + 2C4D53087840979E0740023FC976C3B5D5F6A071EB090124DA7E7D1080FD5EEE + 7299D73CD134A779CCE767BF99DFDCE631C739D06DDEE89AFBFCE8461740CC61 + FE73A4EB5CE6C8859467F6518619E8022517130610F2E08410C41BBBA20EB5D8 + C34E761C4034044248EF0CD9CBF6B553D9CAAB0BAC48E74BF7D891F4D6B8CB6F + 1B784D250003E0CC7FFFB5802D3E8B631B1ED9CBE6694F9D89F62D70E0A84610 + 321C8BF0041BD0517975D0B6BCF2C3803CB01C14E30EBDE847EF5B52C845525B + E8028E75EC170FB8FF7B4324E098A8F02D42147AB7DE634FA8ED6BBF8CF18A51 + 08370AB8F05129AB568BF2E0066F5DC2F1AED8349099591197F89907B0918A07 + F3F0D8DF78E2C5C801316C40CFAEB581C9259179CD6F5B13D5D242E7FDF0E1FC + 093DE7EE8FBFD37F2EF4F9C1BFFEF4277AFCF15FF4F7373DE9F7477F8F824010 + 820B1450316AF505C4C059B2D769B947760F188118446A21F01BAA5643C3973A + C5271C1C0552B1E681B2763377B7700BC77719217D28487D2FB51C4E44711F50 + 78D88778CAC65323805D65B3196F54048DE067CA132FE6777E10502D2EF1124E + 90070D602F8C7668FD177FC35574E9E484A1B784F6E75B52383F566005E2D202 + 5DC01BFAC44F5947FF0CC6F002E2437B0E4550BB37500C456429D4506BB8229B + F1227F906AC0C157172870B2E22458967CC8E71AB4B67C24683B84000169164C + D1B715D2570914575983178386B771B1E731233701C4940113F05A3F28681621 + 845A10260CE00425C007EC975B41A774F9378AFE778AF9878AAA588AACB88AAE + 988AF4770756D0200F02111DF00579C00499A22912A4060C002A28940018248C + D2408CC2388CC8588CC9788CCAD88CCCF88CC6188DCB688C05E0022410020DE0 + 7677886AEED58DEDD55EB2227775378E3CE4877837342C38017E274786187806 + 1078354002304571F4488F2FC88804C04671F6212D92833B886D76748998887E + E9F712D8D18925A0FF067CD0109FF08A5338853E3785A8F890B0E87F12597317 + 097F19599118599160651404F0190E708B39A6297E310CD3351835681910D892 + 12387638608D321087A6741AA6318775D85755E6322EA4873E496B88756B6446 + 88D3276887580392156C2F05838C185AC90047393015E3478902B97999288430 + C1009DE88979B05638D2091CF98A6219966439966659963F37387391055DD005 + F9E43858C78B11A4922C500434005ED25842D4B88C1E949721B497CEE8971E64 + 042CD0194C824A36691A154587538651567643AD018292F96A1D7558BE625FE8 + 184CBEB6792888662D588FA0598F4C997D620064FE683D6D967255394E043984 + 59C90051500279C0FF07BFD19068799616C9911B7996BB799B1C298B0F13315B + 00065FA00BFC140CC3F06E4E700C9A74862EF99C2F1942E415024850934EF209 + 8B999317A85105B7873E191A3E74990A178883B81C85D83E29086C02A694A379 + 6C9030066F1495D6235BB36589AB095505F99A4EE0046AD0955460930F7003EF + 27A0048A7302EA72075AA0048AA00A5AA02ED70406AAA00C3AA10DBAA0114AA1 + 0CDAA0196AA115DA0702EA3004F8070FB0045F9012EC967514F06EC7E0020215 + 98D3F8A22E1AA3D008A3332AA3D389043469434AC4098AF957DFD8767688873A + 220FE4587796E965B69699CBB19977B48E4E8A1CA119A589D89EF93800E42395 + 6EA69AF7890957E9FF9A075902B2F906B5090AEF07A1F467A6B8E99B69BAA618 + 7AA1AA68A65F358BA877015870127189317E91056FD05684E102D0F9A7D14950 + 84F922E6A53A3B0A1630C48D197887A8717CDF49587D289E433294E65994B675 + 88EAA9949A7A8F9855A5563A0075404C04A0A55B9A1F9AA89FFCD9950D00A015 + DAAAAEFAAAB01AABB23AABB44AABC8553D1CF0075DA06E1792759E520C215083 + 9D768C334AACCA48ACC68AACCABAACC898ACD2C8AC0930A8329005C5A744D779 + 0EA0A0A8DA794A2E33A49439991F386B23881B4AAA1C4CCA619D6906521A9AC0 + C42701394C4D85045B8A9E5DBA89AF09A679C0100E41A66D4A7F097A7309FAAF + 656AA1A918B03700FFA106CBA0087BB01C7A8A02BBA100EBA601AB9678C096A5 + A131AC270C5FF00559006F998403801AB2813AA8784001B3E209878A9D3EBAAD + 1805581C85448FEA4AAB243B3F344BE4B966E749AA1D76889A5A342C689F7D46 + 9FA36A9FF38A9F5EAA95FBD99F0C210AB52AAB1EDAA04FDBB4AD1AB5512BB550 + 6BB57D3038159B0E7881295E5821D4E575016504D05AB6667BB6689BB6C74898 + 240023D75A4E3D0AA43FBA7673780E436A0F456AA4CB57AE1C71AE9AE7A406A0 + 021317A50336595AD1543E58B4F28236AD69AF5F5A021EC0105E61B5945BB996 + 7BB9B33A6304480E1D708077BA6340A09CCC49B632EA97A68BACA54BA3A7EB8C + 0500512490056987FFADFBB1A3D9BAB28BDAAD3DE99DBACB2A2445A9CA719E97 + D89935A0946B169095603D7FA2B88B6B114178B408A906911B8A9E80B90A5AB5 + 04EAA11A50BD3710B5D97BB50DDABD3700BEE08BB9E2EBAA4F1B0115F0534220 + 2C6180B15F2B0C8FB3A220ABB6F45BBFF64BAC46E0BA386AADB3CBBF37A9ADC3 + C76A90291AE01A82061C3340C9B7EA68A902E96BEE487D51144CB5D56789ABBC + 5AC11316D112F9891D9E08BD5FD0240D49BDAF6ABD054AC2226CB9086BC2AF1A + 01E6766E7EB00456F7B56BA5A235900CD12AB2CF49BA2DE97B6827BB9FC7A38C + A99D2D631A79B8BB462C3A1770B39695B396C03E3A8B1F9D599E124CB4BD5409 + 4FBC9A8390C19A68FF90482B9B1E4001D2DB09E13BC6D95BC6647CC6669CC6E1 + DB076ADCC66BECC670FCC6683CC7715CC76C2CC7753CC683130292B285B9B08B + 2A81927980043150036077BF889CC865EB7B3200A07B94B237D932DA38B755A6 + 51DE9AB7E3A81A0AECB7E6C78ED1F78E8067003175C5163C0059AC094AA0C11B + FCBCD13BB9732CA0E50BCBDBFBCA744CCB6A2CCBB26CC6B28CBD045ABEBC8CCB + 639CCB63CCCBBA1CCC73CCCB144B015B984FBB08496BE5010CB0022F50977AD9 + AC356AB62EEAAC894CB634C0024EF6072C47BB3C1AC98B5A4342BA0E5916B3AD + E3BB1C01BCF32A7136F082C55BCA7774CA10A0CAABCC0060AA9060CCB465AC01 + 791CD0771CD0E10BFFD0B54CD06D3CD007BDD01AA0D0696CD06ADC049A6BB158 + B0A796160CBDB869C3AAC81CADC8DDDC19DDA647D959CE432C8EDF7AD2E1FA0D + 9BCCC08AAB04F9988F6B46CA459B1FAD29841BBC9F09C90714F0959CA0014D80 + D00CCDD03F1DD4693CD4706CD4748CD46DACD4449DD4121D9C5AF8070AC87A57 + C02979016F7509B27D79C3C248B6D2E8D55CADBA629DBACE485E784005219DB2 + 403CD239B993E70C9EEAFC3AEC5C8945E9C44D7CD756FC54D706D3964509764D + CF03C0BC3F60D336EDB85A199BB3B9D3FECCC600DDD80DFDCF900DD0033DD010 + CDD88EFDD86F7CD998DDD899BDD9951DD99EADD9974DD997DDD9967DDA0D8D06 + 002D8BE616210DF0FF064CF0B957B0B16FE0B13900D61D9DDBF5EB02E3B1AA3F + 2CCEB50B43722BB78CEAAD788BC93CE2524BCAD27FBB155A8161B3F001310DD8 + 50857EAA8CCF86DDC15EE915A16DD96FCCC6935DC6E1FDDD8D0DDEE27DDE050D + D9784CDAE6BDDEE7EDDD8FDDDEF1BDD9E6FDD9F20DD14D506E74D1065DD085C7 + 7931F1FBB1BA3DE06AEBBAB99AD6A140BB3DBAADAAE610B4F2B247AC6573EDCE + 8A7B6DF26C59C64BDDCC4B07844DD886ADCFB2499BFBEA09A25DE2E56DE228EE + D8969DE22C3EDA27DEE22DBEE2A22DE39ADD0411704F6090060EB0045777A71A + CB752B7A97043EE4D09ABF2350813F9CE087AA986C0D703B89BBB151C0209899 + C971663540CFD0CDFFD7534CDD5C6A111CDEE1856DAF5B19A6FFC9DDE98DDA92 + 7DE2E6BDE6F38DE66DFEE26FCEE6721EE76F9EE6765EE78F7DE7A85DDF6FDE04 + 4DA05C1CB00549B0E36FD017FC24498E33182BC0022EA022678BDB6B1BE9CA0A + E9936EB6607DE92E0087490E3F0B4ED273D809331BD7ECA0C44419027C425B78 + 4DC581E6D7C726DD184EB4164CD32A00E61ECEC59E18A60C190A1AA0DA000D02 + 8DEDEBC0FEEBC2DEEBC3AE01BE0ED0BC6EEC8D9DECC7AEECC48EECC5DEECD21E + EDD4FEECCEBEEBC5CEECD92EECBC6E054E46056D99103976A29BC2075B670C06 + 406D097004C7C8EE65EBEED00AEFC40AEFF2DEEE6A7B046C2B034B30E29B7EAD + 9F20C9C3ED76A873FF235776C9C8FD0E265889F718DD32CD6159EEEA5B4ECF34 + CDE1D72D84D89D9549AB0662EAC8D63EED1D5FEDD7EEF1210FF2225FF2247FF2 + 1F9FF223AFF237306327433A0798B1C88904CBC9E8447EF3CAEA02479E058E8C + E04BBED641DC9870472CA24E0E73BDF0AD3EB45B6AE110FFB312CFBC0040EB1D + FEE1601AB9AB2A0ACA1EEC5A9FF55CBFF55EDFF560FFF5621FF6643FF6665FF6 + 687FF620D0F215DB05E9D000258A1227CAB11E80EE2E1079388FF34690E9D3EA + F39F07C00C0EE5297DC0EE40E59215DD2F3D0B13D0F070F3F0D35DCA8CAB0951 + 2FF51E0E05EAB795FDA9D85E01027D00EC7DA0DA9CEFF9A26FEC9D4FFAA31FFA + A69FFAA8BFFA595FFFFAABEFFAAE8FEDAF7FFA9FAFFAB04FFBB8AFECA0CFF5A0 + 5FFA1AA0B974A10F7E808BC7992113E40431800CEACEAC972EE9614DE9CFEFFC + CC2FFDD1AABF22DAEFFDABE0B6DBD670F732DDB96581680616A71C9CFAD2F988 + EA0E7FD77BDDF4CAC1F88116F9106006943FF50689D30AC9EF240E026800ECFB + 0F081A206820822085878984828B898C888D8D89938E83948F869088878F9399 + 87919A999D96A4928AA81A1A77563C78606D5D0D5F571E79B61EB91E57596F25 + 0C032F45464709C5C7C6C9C8CBCACDCCCFCED1D045233A59580FD8DAD9DCDBDE + DDDC0FE2DD58581DE77E617E1DE9EBEDEC7EEBE7D8E2650E0E6DF8F7FBFCFDFD + 100021A81830C146FFC183060D7E20B0B021810903224A9C48B1E20A860C2768 + DC386145C58F2043AA0808010002250852A25499F2644B2D5AA03060E0C4499E + 0EE0B42112C473A74F417D2A0115FAB368504E4447F96CD413694FA6457B362D + EA34AAD547372AE8902104CC960E146ADDD2958B02852F324290A8E1C24882B7 + 70E3BE2D26B7AEDDBB74EFEA856B2487981042FEE41CFCAD30E16CE6CEB15BEC + 8EB1633FE51ED8D397AF32E5CB96DBFC20297005C7CF1AEB10C038FA03C49021 + 2F32340DDA06EAD72047065CD9B2B6EDDA30A1C8B489D330A5DFC0830B1F4EBC + B8F1E3C8931FD7D04407060E2D6451E0C387ACAE2BD4D5C82031A22DB4BCDFA5 + C10D3F77BC796809FF8CB020C1D5B0FBC3DBC68D2BD72131BAC78CE3C5AB2FCE + C1E4CCFBE4738F80FA38A0051D9CA9E099411A317890430EB906DB441735B491 + 831E4D38A1019B0564C66D20DA969B4C0CA8F11E16961012948AA81C729425BF + 11024A8A89BCB8228C34BE38E38B32D2D8238F3506E9A2253A06C9E26F361A09 + C28D3736718773D0A5D1861F5F78A0062EBABCA12510DB89C1820B72B9559798 + E9D945E6997CA5F9169A6BAA59660E238490057C74BE279F37F6E1D7D89EF360 + 51C67F6D0028E8654A40D0A1A10038089A46A461F481841F65388047AA65C491 + 69906A88DAA13FD016E2A7BAC964229D209850EAA9A6A68AEAA98798DA6A22AE + AE1AABAAB4CACAAAFFADAFD63A2BACB6EA7AABAFBB02DBEBAA6E3067450A7808 + 7141191D5499C7B3BA00C107106F58A9D697058817DEB6DA764B9E0B715210D9 + 89751E268E3679BEA3AE3AECB0BB0E3693F923EFBC66700681010B22A42F840C + D521296A156694D046FF6A5A118701FDC0D2C22E31BCD28825908B62A9329A50 + 311AA9563CC9C5AD724CC9AC1A77FC9BC5AFB60863AC93A0CCABC81467CC32C9 + 1497DC72CC34EF0A82153AE0C141170E74719675B95C71C5176F2011420C23B0 + 304C794C27D33478E63D1DB5D354435D9E7A62E0D1C0B8E54A1C8E7C88D1A718 + 9F64EF47CF9F0362A636800070F683018A2EEAA8A399465A5A1D0D6A84A9C120 + 210C101D9F06FE12FF4CA3926B42AA87CB9A38B08BA3DAB8B08747BEF8E3C346 + AE38E2985F5EEAE4BA72BE39E6927FAEF9E168DCD1C4736DA4510615573C3B56 + D07C546B34034993C9EDEDDEE63E0D0B62202198D7C0D7694E6264EBD9677F01 + 269FF6F2FA7CD1366706907050DE097DC0AFF505538851DE1B7D903DDF069004 + B8E082130EBCC519A73F33FAEB63DCBEFAECC7EFBEFCF0CF6F7FFDF8BFAF3FFD + FB63EC7FFEF43341043EB033FFF8212C40BB8E07D252031618215BC610D31124 + 383566CC8582177C9A0437A84123C44908C10B2138EE8418C5186F4FFBE14FBC + 06C5427C38CF500953C2A2F2E690D230A460941A0D431465BDBA81EF50E3235F + E0B450B87249CE04FF5338A21297C8C4264A2E894E84A213232745264AF18A4B + ACE2149FB8C52E9AA00911D0C10784E0806551C075409B16107E513BDDB91177 + 704C860B488084AED9D13060238709D7E50E77A530327FFA4F81E6D58F122088 + 243F18C0C0165910EBCDCD7A16D9DEF4F4F63D0D852F202669982669C3C996AC + 246277B49C283917BA5166CE942DC318E7FE273A54BAD273AF3C252C6729CB23 + B61296F36B427392E5801E600181B7789D07F840B41284A0814B8B4679E2B8CC + 6E49AD9947A0869CF823C26A12867827748C62B091B616B2B004CF0B081D0842 + BD7D3DF28612518DF5BA37811EF24D22970448268518B83788D08B48C4E716B5 + 18457CF2339FFA0CFF6813FF69452A9A00056E68420A42C0813F6CE19762C152 + 2EBEF00520A8E198C220C61B371AC7EF804B4E5CB366F04828B6FB14CF1DFA51 + 61BC0649A096264F0B8702880A6AC0C881B5F37AA7198024D9E9BD770E4036F2 + A4A7E0EC79C76C0854A0FF24E85197CAD4A6EAB30F2FC01974B6D080E9243068 + 670C81184690CC093E43A3DF012B589521D66D8DB518EA2141438B2AD2AF9D2B + 6CD83C293CE41119C900CA9B9839100C658A80493AC8068E5C880E1F02D8D2B4 + F3B07578D43BE35912A1D6D39A078D2C0A242BD9294CF6B294C5AC660F6A5914 + 5CD6B2990DED662FEB59D19A76B4A74D2D6A57AB5AD14E610A68D0805485B005 + 07746006AD93681EFF88F90563D680ABE339C231846B0CE20A77B8C82D6E728F + ABDCE632F7B9C43542D6FED0D6EAE624AEEECA6E1FE5511FB40D9290F24280BD + 1454D3E905F69C9F314D4F0D0654087C68939E8CAFC310A005A256F3709BC52F + 6593C85AFDF2B7B598F56F64FF8B59028756BF018E2C82153CE0D0FE57BF1066 + F064239CDF039B40B639E3406DC940816AA5B11779D80E5729788CB346B0A3DA + 32F157590052EB5A338FF489EB09F5F3AE7A0812AF9931434CEF95AF9A3AD286 + 0D51EF4DDDA9A9F6BED7B1B7D10264D8CA0DC99656B34F8E32693DFB592A1F54 + CA95B5B2662DCBE5295F79CA9DA53296572B66274F59CC613EAD67413BDA27BB + 76B26888400A3E80FF872E3C940A55C2453079CB25EE0C63B9C60D34A0077DDC + 413B57D02EA8819C98EC62B0E1C9A4D96C8C6224C30F9732CFA5F5829E0DCACB + A0F32E84A7D82B32498E8C64DC2C59A455E66CAAB7BC6A36B339CB997575AB67 + ADEA5AA380CD4F7E35AD6FED655EDB5AD6BFDE35B07D7DEBD259E13944581615 + F8104CB250A75ADB61CB7854AC626954DBAC5F2D02EF90508E46B7F54EE98AB4 + 63FCB4B6725BC63F6F08A7876CEAD7C492C63489B55E627D181B9278AAD42951 + B275C32CE67E5399DFFE0EF89A030E70811BFCE0084773C217CEF082335CCC1B + 40C3B1EB7C8136CC0208BADD8596D4B0963F2BB7D01F2FB4C8053DF2911F1AD0 + D26C406F18CDF2F8FF38BADB7BD46EBBEA73B6CB80775E7F7A8007D46D2803E8 + 8B9113709490ADB7DED7C474259D9CEF7CA1B0B5966703CAFDFE729A1F9ED931 + 5B3DEA0897BA96C76CE687F7FAE05D3FF3C39B80333C542100178028B4AE43CC + 0532A081605286714F2C77E496F5C48226C6DCBDBAF7B4FACEDB4E7F2BBAEA03 + 694973131F814A3C8E6D9EF36C18D26D8AFCB9793F8037A2535EB146B737BE6D + 0305A76FC3EBA00FBDE8474FFAD29B5ECC68D8E516D290062C2C1B5AAFD3521E + 9000851A18A02D212779C9410E5D91E71EB92307970CAE0178EB82BBA48BA139 + A5CB7881345CA0E2E766A9F2F491F36D38E19009F379790FAB5EA213A0921239 + FAE66BD3796FF3DAFFDF6176F8D4738DF52E7779E00A57FFBFB77E7E5ECB3AFD + C4863FD607EE7E30CF1FD7FD867FE8377F9E955039D302AC27074B501DC2F46C + 5FE00424C01D4A0356C275776155625F95817B17411E4447BFE3792008632564 + 1FE5600F81F27CAC077D81626E6AE31F652078D9C0003BA620DCA33788E57D98 + 07129C327EE407829FB70128008440E85942D86F453884548684441884067784 + 4C88844E18854CB8844EE86F55988453988554888510F78459288545B8845D28 + 85CD21032D70010BE00054502DC2940B7CC00021000524600606A077BB778778 + 98877A68042EF01720E48380E81E89416ECF5788CDF77C2B7873F2527D83A157 + 24311093046A8E44FF6F03C05810205FF0A5742EE10481980D57288646A8855C + E8854A188AA56885A4E88563288AABB88AA7388AA81886A1B885AF088AB46880 + 3200066980767ED03A6DE80135E1040C400203E04075A787C8988C25A76D1E58 + 7C80485291514669B000AC97822AB878E7D678EEA105E3253D4387833B041288 + C4832D11059D880DA90886E9B88EEAD88EECF88EEE188FF0388FF2588FECF845 + 0B2504BBE8000DC086D6118CC2488C13A88C045990C7F551C4778E21381FE180 + 0FD5788885B88296267D69C388EF916924812F3668798EF43DE2438E29C189CE + 880557A88EB48885B25892AA988AA0088528F9852FA992EED89231F9849DE592 + 347992ED38050A85FF01CA920655D02CB5401600F90B6BD11D142872766887CA + B594C7E59415F8942567047EF78123D98994868287E87CD7C88200E28230E81E + 85023D21008E8255378C354FE347440A890D1BF09670199772399770C9067479 + 977849977639977BB9017D79977F59977939986FD9978629987CA9978A999885 + 2997096505807106BCF805CCA60B340190C35803C260909C898C4650047F415D + 6D899594D606CDC7958698888AD80F1659273B672F6630641132118C15444997 + 89F0C507A3F90070198473E99B42F896C0F98471498F79498FC42997C3D99B47 + 289CCD199CD0498ACE998ED3A99CCFB99CCE599DC0C90663706C1CD0065CD006 + 1C5699C008904E50FF024E704C23D699ECB97BD24401A3E98C59B99510A9785E + C9782F5854AF894866E06990C2582A00925AA09B57290E8479A0089AA00ABAA0 + 0CDAA00EFAA0BDD99D3AC00167C0050BF000146025794013970990EA5904ED19 + A252B91E7F779580570F0E9982A8097D14D9A2F9D09AC07305D807103F50030E + 91216909920840A00A792ED009A1404A97D8699DC7C99C0C0A9C415A9C423A98 + 484A975320A11AC60566940BE6198C2570A57E96949D6987BBC7A5C1F71759F0 + 075D60A2CF680F5AE97C5C699FD8780FDAC8644EC07380331AAEC158A4B67950 + F0053D0A3672690170C9A76FE9A71BC0A782DAA7709903854AA87F8AA881AAA8 + 7769A87309A8807AFF9790AAA8914AA98AEAA88B9AA86F89A97139A99A9AA97B + 6AA96C507608A83A1DC6A1C298AA25A01D2500054829A2215A047D1802A249A6 + C6579AA76988884820ABB90F30CA564E602F74100336D05EF3749BC8EA495AD0 + 00BB391F49FAACD01AADD23AAD4E2A55A5FA005490AAE679A56A5002225604BF + 07ABCAE8022C460521159F2C379F685A9F89779FD9989FD6E588E2346A02CAAC + F2391F89B1A883BAAFFA4A9793CAAF00DBAF01CBAF893AB0A0FAAF072BB00A5B + B00A6BB00EDBB010FBB0FC3A05C7922C5CC0050E50025180AA97D9AD6AD0AD5A + F0AAE2DA997364AEE87AAB26F8902B2A91D337912FFA82DEC68DF6E25E20C974 + CD5A0EF14005C059FFA995FAA8A1EAB383DAA9102BB40C2BB43CEBAFA11AB046 + BBB096AAB44D4BA8040BB549BB013C6905C9920469C007DDBAADABAA0679A01D + 6BE102205A685E3A7265CB9E9F2906590006B61A82664A9F69DAAE6B0A969DA8 + 633104920C40A6E7620E7E400514F00253D0B016C0A786CAAF85BB01872BB111 + 2BB883ABB88EBBB88A9BB8900BB9833BB9913B066240405BF0065A8B9EDACAAD + 5E1B62AE2AB6236B901E2403F0D9B6DF86ABD6989ABCDAAB603992997664C9AA + 894A90B779BAB77ED0007EFB0562D00441F8B8C26BB9C43BBCC64BBC0C7BBCCA + BBB81B40763A03041DB6B53501BA1F6B254E507BA45BBA04192759B072AACB64 + EA4A9F5D39B76DFAFFBDE65B2EBADBB77E4B015AD504812BA895DBB8811ABFF1 + ABAFF50BBF007BBF114BBFF98BBFF3DBBFFF1BC0F23BC0FA3BC08CBBBFFE4BC0 + 8DBBC0FC2BB0F78BB91810024090055FF0B556BAAA5D9B07DE1AB663ABBD7A28 + AB7E78BE2284A2A9A3A2AEEBA22D1BBB27BBC2235C42BC7B1667A1064EB00256 + 30065360C000BCAF05DCC0C2CBC3072CB13C1CC4C65BC03F2CC402BCC3044B76 + 3A10021E4051D64BBD5EAB0648D0AD5020062EE0C11F7C0408C9C2E9FAB6EB1A + B72CBB78742BC25C8C47F89AB36691C614705124600580CBC0701CC7723CC771 + 9C03747CC7784CC7769CC70CBCC773ECC77CACC781BCC080CCA763F0024B8C04 + 5940011685C11E9B7FC154CC551D8CC5779868DC56C64545C2B9AAABAA09BB2A + 4CC6A0EC5658B0BB54B0BE5F00C36B9C16DC3106717CC4096CC40AFCBF0BECCA + B37CC7B28CC3B70CC7B4ACC0B52CC478BCCBFC5BCBF68BBF83CB93897CCA9CFB + B58EFCB1571262617BB6947C5CD42003983CC25E2CBE6AEAAE6C0AAFD5DCCDF4 + 50427DABC6691C08003B} + end + end + object bAceptar: TButton + Left = 344 + Top = 367 + Width = 75 + Height = 25 + Cancel = True + Caption = '&Aceptar' + Default = True + ModalResult = 1 + TabOrder = 1 + end + object memModulos: TMemo + Left = 128 + Top = 112 + Width = 289 + Height = 233 + BevelInner = bvNone + BevelOuter = bvNone + BorderStyle = bsNone + ParentColor = True + TabOrder = 2 + end +end diff --git a/Cliente/uAcercaDe.pas b/Cliente/uAcercaDe.pas new file mode 100644 index 0000000..720ee32 --- /dev/null +++ b/Cliente/uAcercaDe.pas @@ -0,0 +1,60 @@ +unit uAcercaDe; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, JvGIF, ExtCtrls, JvExControls, JvComponent, JvGradient, StdCtrls, + uHostManager; + +type + TfAcercaDe = class(TForm) + JvGradient1: TJvGradient; + Panel1: TPanel; + Image1: TImage; + Bevel1: TBevel; + bAceptar: TButton; + memModulos: TMemo; + procedure FormShow(Sender: TObject); + private + FHostManager: THostManager; + public + property HostManager : THostManager read FHostManager write FHostManager; + end; + +var + fAcercaDe: TfAcercaDe; + +implementation + +{$R *.dfm} + +uses JclFileUtils; + +procedure TfAcercaDe.FormShow(Sender: TObject); +var + i : integer; +begin + memModulos.Lines.Clear; + + with TJclFileVersionInfo.Create(Application.ExeName) do + begin + memModulos.Lines.Add(ProductName + ' - Versión ' + ProductVersion); + memModulos.Lines.Add(CompanyName); + memModulos.Lines.Add(''); + memModulos.Lines.Add('Se autoriza el uso de este programa a:'); + memModulos.Lines.Add(''); + end; + + if Assigned(FHostManager) then + begin + memModulos.Lines.Add(''); + memModulos.Lines.Add(''); + memModulos.Lines.Add('Módulos disponibles:'); + for i := 0 to (HostManager.ModulesCount - 1) do + memModulos.Lines.Add(' - ' + FHostManager.Modules[i].Module.ModuleName + + ' - v. ' + FHostManager.Modules[i].Module.Version); + end; +end; + +end. diff --git a/Cliente/uMenuUtils.pas b/Cliente/uMenuUtils.pas new file mode 100644 index 0000000..942c08f --- /dev/null +++ b/Cliente/uMenuUtils.pas @@ -0,0 +1,179 @@ +unit uMenuUtils; + +interface + +uses + Forms, ImgList, ActnList, JvPageList, JvNavigationPane, Menus; + + +procedure MergeMenus(Source, Dest: TMainMenu; ImageIndex : Integer = -1); +procedure SortMenuByTag(Menu : TMainMenu); + +function CreatePageNavPane(const APageList : TJvCustomPageList; + ACaption : String; AAction : TAction; AImageIndex : Integer): Integer; + +procedure PopulateNavPagePane(APanePage : TJvNavPanelPage; + AMenuItem: TMenuItem; AImageList : TCustomImageList; + AStyleManager : TJvNavPaneStyleManager); + + +implementation + +uses + Controls, ComCtrls, Classes, Math, TBXDkPanels, StrUtils, SysUtils, + ExtCtrls; + +type + TAssignCallback = procedure(Source, Dest: TMenuItem); + + +procedure AssignMenus(Source, Dest: TMenuItem; AImageIndex : Integer; + AssignProc: TAssignCallback); +var + I: Integer; + Item: TMenuItem; +begin + for I := 0 to Source.Count - 1 do + begin + Item := Dest.Find(Source.Items[I].Caption); + if Item = NIL then + begin + Item := TMenuItem.Create(Dest); + Dest.Add(Item); + if Assigned(AssignProc) then + begin + AssignProc(Source.Items[I], Item); + if (Source.Items[I].ImageIndex >= 0) then + Item.ImageIndex := Source.Items[I].ImageIndex + AImageIndex; + end; + end; + AssignMenus(Source.Items[I], Item, AImageIndex, AssignProc); + end; +end; + +procedure AssignMenuItem(Source, Dest: TMenuItem); +begin + Dest.Caption := Source.Caption; + Dest.Hint := Source.Hint; + Dest.Checked := Source.Checked; + Dest.GroupIndex := Source.GroupIndex; + Dest.Tag := Source.Tag; + Dest.Action := Source.Action; + Dest.ImageIndex := Source.ImageIndex; + Dest.ShortCut := Source.ShortCut; + Dest.RadioItem := Source.RadioItem; + Dest.AutoCheck := Source.AutoCheck; + Dest.AutoHotkeys := Source.AutoHotkeys; + Dest.AutoLineReduction := Source.AutoLineReduction; + Dest.Break := Source.Break; + Dest.Default := Source.Default; + Dest.Enabled := Source.Enabled; + Dest.HelpContext := Source.HelpContext; + Dest.Visible := Source.Visible; +end; + +procedure SortMenuItems(MenuItems : TMenuItem); + + function CompareTags(Item1, Item2: Pointer): Integer; + begin + Result := CompareValue(TMenuItem(Item1).Tag, TMenuItem(Item2).Tag); + end; + +var + I: Integer; + AList : TList; +begin + AList := TList.Create; + + try + for I := 0 to MenuItems.Count - 1 do + begin + SortMenuItems(MenuItems.Items[i]); + AList.Add(Pointer(MenuItems.Items[i])); + end; + + AList.Sort(@CompareTags); + + for i := 0 to AList.Count - 1 do + TMenuItem(AList.Items[i]).MenuIndex := i; + + finally + AList.Free; + end; +end; + +procedure MergeMenus(Source, Dest: TMainMenu; ImageIndex : Integer = -1); +begin + AssignMenus(Source.Items, Dest.Items, ImageIndex, AssignMenuItem); +end; + +procedure SortMenuByTag(Menu : TMainMenu); +begin + SortMenuItems(Menu.Items); +end; + +function CreatePageNavPane(const APageList : TJvCustomPageList; + ACaption : String; AAction : TAction; AImageIndex : Integer): Integer; +var + APanePage: TJvNavPanelPage; +begin + Result := 0; + APanePage := TJvNavPanelPage.Create(Application); + with APanePage do + begin + Caption := StringReplace(ACaption, '&', '', []); + Action := AAction; + PageList := APageList; + Iconic := False; + ImageIndex := AImageIndex; + Result := PageIndex; + end; +end; + +procedure PopulateNavPagePane(APanePage : TJvNavPanelPage; + AMenuItem: TMenuItem; AImageList : TCustomImageList; + AStyleManager : TJvNavPaneStyleManager); +var + APanel : TScrollBox; + ItemIndex : Integer; +begin + with TJvNavPanelDivider.Create(Application) do + begin + Parent := APanePage; + Caption := 'Accesos directos'; + ParentStyleManager := True; + Align := alTop; + end; + + APanel := TScrollBox.Create(Application); + with APanel do + begin + BevelEdges := []; + BorderStyle := bsNone; + Parent := APanePage; + ParentColor := True; + ParentFont := True; + Align := alClient; + end; + + for ItemIndex := 0 to (AMenuItem.Count - 1) do + begin + if AMenuItem[ItemIndex].Caption <> '-' then + with TJvNavPanelButton.Create(Application) do + begin + Parent := APanel; + Align := alTop; + Tag := AMenuItem[ItemIndex].Tag; + Caption := AMenuItem[ItemIndex].Caption; + Action := AMenuItem[ItemIndex].Action; + Images := AImageList; + ImageIndex := AMenuItem[ItemIndex].ImageIndex; + Height := 32; + StyleManager := AStyleManager; + Invalidate; + end; + end; +end; + +end. + diff --git a/Cliente/uPantallaPrincipal.ddp b/Cliente/uPantallaPrincipal.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Cliente/uPantallaPrincipal.ddp differ diff --git a/Cliente/uPantallaPrincipal.dfm b/Cliente/uPantallaPrincipal.dfm new file mode 100644 index 0000000..aed8d03 --- /dev/null +++ b/Cliente/uPantallaPrincipal.dfm @@ -0,0 +1,394 @@ +object fPantallaPrincipal: TfPantallaPrincipal + Left = 355 + Top = 173 + Width = 577 + Height = 366 + Caption = 'Pantalla principal' + Color = clWindow + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + Menu = HostMenu + OldCreateOrder = False + Position = poScreenCenter + WindowState = wsMaximized + OnCreate = FormCreate + OnDestroy = FormDestroy + OnShow = FormShow + PixelsPerInch = 96 + TextHeight = 13 + object pnlContenido: TTBXAlignmentPanel + Left = 0 + Top = 0 + Width = 569 + Height = 293 + ParentColor = True + Align = alClient + Margins.Left = 5 + Margins.Top = 5 + Margins.Right = 5 + Margins.Bottom = 5 + TabOrder = 0 + object JvSyncSplitter1: TJvSyncSplitter + Left = 210 + Top = 5 + Width = 5 + Height = 283 + ResizeStyle = rsPattern + end + object JvNavigationPane: TJvNavigationPane + Left = 5 + Top = 5 + Width = 205 + Height = 283 + Align = alLeft + AutoHeaders = True + Background.Stretch = False + Background.Proportional = False + Background.Center = False + Background.Tile = False + Background.Transparent = False + ButtonHeight = 32 + Colors.ButtonColorFrom = clWhite + Colors.ButtonColorTo = 12435133 + Colors.ButtonHotColorFrom = 13009540 + Colors.ButtonHotColorTo = 13009540 + Colors.ButtonSelectedColorFrom = 14602190 + Colors.ButtonSelectedColorTo = 14602190 + Colors.SplitterColorFrom = 13026246 + Colors.SplitterColorTo = 9211532 + Colors.DividerColorFrom = 15725551 + Colors.DividerColorTo = 13026246 + Colors.HeaderColorFrom = 8684164 + Colors.HeaderColorTo = 8684164 + Colors.FrameColor = 8684676 + Colors.ToolPanelHeaderColorFrom = clWhite + Colors.ToolPanelHeaderColorTo = 12435133 + StyleManager = dmBase.StyleManager + ParentStyleManager = False + LargeImages = ModulesLargeImageList + MaximizedCount = 0 + NavPanelFont.Charset = DEFAULT_CHARSET + NavPanelFont.Color = clWindowText + NavPanelFont.Height = -13 + NavPanelFont.Name = 'Tahoma' + NavPanelFont.Style = [] + NavPanelHotTrackFont.Charset = DEFAULT_CHARSET + NavPanelHotTrackFont.Color = clWindow + NavPanelHotTrackFont.Height = -13 + NavPanelHotTrackFont.Name = 'Tahoma' + NavPanelHotTrackFont.Style = [] + SmallImages = ModulesSmallImageList + end + object pnlBorde: TTBXAlignmentPanel + Left = 215 + Top = 5 + Width = 349 + Height = 283 + Align = alClient + Color = clActiveCaption + Margins.Left = 1 + Margins.Top = 1 + TabOrder = 1 + object pnlMain: TTBXAlignmentPanel + Left = 1 + Top = 1 + Width = 348 + Height = 282 + Align = alClient + Color = clWindow + TabOrder = 0 + object JvGradient1: TJvGradient + Left = 0 + Top = 0 + Width = 348 + Height = 282 + Style = grVertical + StartColor = clGradientInactiveCaption + EndColor = clInactiveCaption + end + end + end + end + object StatusBar: TStatusBar + Left = 0 + Top = 293 + Width = 569 + Height = 19 + Panels = <> + end + object XPManifest1: TXPManifest + Left = 248 + Top = 48 + end + object GeneralActionList: TActionList + Left = 248 + Top = 149 + object actSalir: TAction + Category = 'Archivo' + Caption = '&Salir' + OnExecute = actSalirExecute + end + object actLogin: TAction + Category = 'Archivo' + Caption = 'Login' + OnExecute = actLoginExecute + end + object actAdministracion: TAction + Category = 'Archivo' + Caption = 'Panel de administraci'#243'n' + OnExecute = actAdministracionExecute + end + object actCambiarPass: TAction + Category = 'Archivo' + Caption = 'Cambiar mi contrase'#241'a' + OnExecute = actCambiarPassExecute + end + object actConexion: TAction + Category = 'Archivo' + Caption = 'Configurar conexi'#243'n' + end + object actAcerca: TAction + Caption = 'Acerca de...' + OnExecute = actAcercaExecute + end + end + object ModulesSmallImageList: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300004E2000004E2001167D99DE000001504944415478DA + 63FCFFFF3F0325801197C4840C067D207501CA352898C17071060303D8B60C24 + 7D8CF8343B381880F9070E80CD31E098C170E11990D184CF0064CD0776401CE0 + E0610036E42AD009CF81FC2DB80C40D7AC9F70082C7E71851D03580C6808D02B + 28FA18F16976B0B78578E1E061144360610237009F6610F8F9EB0FC3F1E3C7B1 + 1AC2488C6618BE7AF93C862120032009E107035ECD3F80F817106F3F7886E1EF + 314FCC74E01391F57FF3F2A970898999A811E453F91A6CD0BEE31718A6F75533 + 5CBB708E11A701208533F25919321212C0FC190B1630B8163F07BBE2D8D92BF8 + 0D8039797E2927D880EFDF3F322C5CB99EC136F73158FCECE51BB80D58B37022 + DC8065D5BC0C617ECE0C2B0FBC6660FC7489C12CFD3E58FCCACD3BB80D5838A3 + 9B61D92648E20105949F9B29C3B3E7D718CE5CFECAC06CB51D1E1E380DB877E3 + 0403B1006E00A5D919001742F4296979DC590000000049454E44AE426082} + Name = 'PngImage1' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001DD4944415478DA + 63FCFFFF3F032580916203C064C305B24CF95FAFCF0837A0C35205220834EAD7 + EFFF0C9FBEFD67F8FAFD3FC3C7AF0C0C9F81ECF79F80625FFF33FCFC0DD17C4B + F811AA01E8A63771DC6278F9EC21982D2E25CF50F7430DB70B262FDAFE3F27D6 + 032E9193DFC3905C94C0F0879F9FE1E73F26863F9F3F33ACE99BC3505797CEF0 + E7EF3F300E48AC6638B7631AAA018585850C4212560C5C867A0CF9AE6A0C1377 + DF821B6A66A4C87060EE4686772F8E3138F9A730D4774CC53400667B5C431EC3 + CF1F6C0C1F7F32300873323030333130BCFCC5C0B0B3AB87A100E8B2EBF75F62 + 3700E482DFFFA41914BD7D19A494D4199EDDBB097781B7853AC394DA1E0656A6 + A7D85D901EE90AF65B69D94486D0A21486F78C020CB2DC0C0C826C0C0C124057 + FC03C2FEDEB50CBE7E560C8F5F7EC0342029D489E1FD4267864B12C50C5BF7DD + 6188ACCE663871E111D8F6201B1586DECA7EB0ED2080D50581DF5A19441C6218 + 2EED39CD7081C182E1E2AD0F70E783A2D1DBD792E1F79FBF0CBF7FFF6578FFF9 + 3BAA014F66D8FC07697EBA6D1DC39633EC0CE71F9F66086ADA833715C20D8069 + 7EB97723C386A32C60CD17B902894ACA60038A3352FEAB72BE65F8F9F20F58F3 + 82C32F1889CE0BC0740F560C32E4EDD52D2469861900008660FEE14240093000 + 00000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end> + Left = 43 + Top = 493 + Bitmap = {} + end + object ModulesActionList: TActionList + Left = 11 + Top = 492 + end + object ModulesLargeImageList: TPngImageList + Height = 24 + Width = 24 + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F8000000097048597300004E2000004E2001167D99DE000002D14944415478DA + B5965F4853511CC7BF238A120DD9437F1E621B0D7D547AE8C18712F1DF42D1C0 + 87081F7C08121FFA4744B190A0B70211A2B208315965A0CDE58386A5CBD61FC5 + 6C2B373633B76BC66C19AD6DEA74BBF776EECDDDEEDDBDFBF390077E9CB373EF + F97CCEF9FDCE85A95896C56636D5A60BB279A9BD1945A4B3274D179FE980831B + 3C849E0D61969FFC49C228E2661424E0A5A5C59279ABD52E481202864C2C9168 + CD5620867BBD7E84C32BFC7C5E5E0E74BABD82645787DE1E248265F2E307896B + D908C4709F6F910F71D36AF7F0C1497698B6221C896171E3045D990462F89CEF + 17E67D140AEA86A056ABF9E7C160086E7339343A2D749A7C5EE2370154040890 + E723E90492B4CC8741CD7DE1E186EA2AC97BC3CF47E1EA2B8376BF1EDA7DB9BC + C4DA0738498E3EA71248764E919D7B2914127875129C21579BA619BC181985C7 + 5C213949A705F8E8571028E5BCB0EE1981572AC2E3711A71D2DB6C36CCF45748 + 6A02D1155629DD168AFAAE989664381F710693136F3163A98446B35B72BB3889 + 4A69E79AAA27A8AF3F9A153C31FE303106EF609DEC249C8015E7BC80A4C59021 + 2DC9707AA3F738A730FBB44A52135E9000A52B6826384DFF7DEE763AB0306410 + D60B45AE39D6C20E3CBA29812716769CDEA6F831D61A9764F2D793D3B8DD6684 + CB3EA54A2B10EFEADEB9ED686E6AFA772A86C1DDEE6E1CB918909D6CDCEECA2C + 10C3B9455D17720401CB32585B5B46574F1F2ACFFB65697BFFC99D5E900CE77A + D3A55C41108D86B1BA1AC263CB30CACE7E93D5C4E19A492D309B6EC8E05CF45C + DE89138DC7118B45115909612918C5CB57361C3AF55556F069CF6C6A41EFFD76 + 199C1BF75EC94763432DD97D0881DF71B40E14A13CFF164A5A28099C6B69053D + 9D6D3238D7F75F55A3A1E6309F1E2ED663AB181B5FC0C1935E093CA3A0FBCE75 + 3CB08CC9AE23FDC6809AF203041EE14FB11E5BC18423842D25838AD737A560CE + FD0EFFAB0982CDFE57F107B61AA443A57B28CB0000000049454E44AE426082} + Name = 'PngImage1' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD252000003E74944415478DA + D59559685C5518C77FB364EECCDCE9EC596996491BC618432A28246E041B4DEB + 065553445AA122218D55093E0982425F7C9354903EA9141F24421FB4D4D6B6D4 + A549C198496C163B314D4D3219C634D3244C3B6B26D773679AB4433241213E78 + E0DCE570EEFFF76DE7BB1A4551F82F87E6FF0F587BFA70684B49CA070D9A7580 + 8F9A76AEDBB89C8678522196C8DEA37145DC212ADEA3B1EC7B340EB7E377ED1B + 774DFF33407A458826EE8AC7EE80D4793B96155601AAF8BDEE8F3BF300D699BF + 220869616E4A282D8BFB4A5A751EB47A2890C43482AE202BA3D1E47CBA0EF0C9 + 89EF942307F7AC6D48A552CC06E7189F986572FA16716539B39E5C4AD3505726 + F422B88BEC58AD0E24A3118D56875A2F2BC2A87DAFBF8FEFCCA7F901AAF8E464 + 80A1DF4348F6424AAADD388A2C1408CB171723F80726882F452971E8902D5A01 + 2AC66CB608A886ABD76FF0DED1EEFC80AEAE2EE2F138EED28778F2B956763D50 + CA673F4CE4B8BFFB112F17FAFC38E7FE62D8779648640E93C9844EA763CFCB1D + 9B0392C924BF0E8C31BD20B3BBC543A141CF9248EA4F419813A9D06A411261AF + 7289244F0519EBBD4C5585134FF50E0C46137F06173607747676A22DA8C6F3EC + F399F5B6262F5F5FF6E778B0C3EBE59A3FBBA64C8ED27FF1240E8705A3C8C5DE + B6C39B0382C1203D674678F1600B7F2C6A9909835EEC728AA2A9B18BA2128914 + 91E05A040CB2C29593E7D0256E50DF5087C3E922148EE607BC79A095F6F676EA + 9ADA486FAFCCACBB2ABC84A7733DD8FFA8979EDEEC9A2E30C5A5D327B0DB8DC8 + B2CC33FB3BF3033A5E7D9A5028C4573DBD3CDCFA047265315745EC4B65281753 + 2D5497887F914978229E87C31166468204FCFD548BB0399D6E1622C9FC80432F + 35F3CEDB47588A2478EA85B78814DAA8ABF7323A9CEB41578B978FCFFBA991D2 + 4C8D8E3034F03D7ABD2E53497973D0FDF92965EFE3F7633EFF1AC77C0F5254DF + 4C794D35B58DB5CCA7A54CDB2832804358AF881CCC4ECED17BFA9238E0612A3C + 15949555A03748A26DA436061CEDFE5239241DC7DD7C80D8E059CE056AF02D96 + 73DFAE46E6ADDB723CF0C806C67FF1914ECD3332F823369B15499244096BF39F + 83C0F1C714553CFDDBB78C5D49D1775D62D65285697B1546931BC9EC125563E0 + 6620245AC22D2C36232565A5B80B4B44AB9045ABD08A36A19048A5D70356C593 + 03DFE01F5BCE880FCEF4636D3C4CA567A70098C5E98E914A264489EA31CB16AC + 363B168B95021116F50467C4EE34BC1CC04696ABE2176E7A916DC5184CDB328D + 0C6585B59E2C84548B351B74D1D5B106E83BB64FA975A598184BAE897FF17368 + E3AFFEC558FD156BDEED78437945FC81B6523C07A05E544878F4D49689DF0BF8 + 1B2694FBE012B66F2C0000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end> + Left = 75 + Top = 493 + Bitmap = {} + end + object HostMenu: TMainMenu + Images = ModulesSmallImageList + Left = 243 + Top = 76 + object Archivo1: TMenuItem + Tag = -9000 + Caption = 'Archivo' + object Cambiarmicontrasea1: TMenuItem + Tag = 1 + Action = actCambiarPass + end + object N2: TMenuItem + Tag = 2 + Caption = '-' + end + object Configurarconexin1: TMenuItem + Tag = 3 + Action = actConexion + end + object Paneldeadministracin1: TMenuItem + Tag = 4 + Action = actAdministracion + end + object N1: TMenuItem + Tag = 5 + Caption = '-' + end + object Salir1: TMenuItem + Tag = 6 + Action = actSalir + end + end + object Ayuda1: TMenuItem + Tag = 9001 + Caption = 'Ayuda' + object Acercade1: TMenuItem + Action = actAcerca + end + end + end + object HostManager: THostManager + MainMenu = HostMenu + OnAfterLoad = HostManagerAfterLoad + Left = 276 + Top = 47 + end + object StyleManagerButtons: TJvNavPaneStyleManager + Colors.ButtonColorFrom = clWindow + Colors.ButtonColorTo = clWindow + Colors.ButtonHotColorFrom = 13009540 + Colors.ButtonHotColorTo = 13009540 + Colors.ButtonSelectedColorFrom = 14602190 + Colors.ButtonSelectedColorTo = 14602190 + Colors.ButtonSeparatorColor = clWindow + Colors.SplitterColorFrom = clWindow + Colors.SplitterColorTo = clWindow + Colors.DividerColorFrom = clWindow + Colors.DividerColorTo = clWindow + Colors.HeaderColorFrom = clWindow + Colors.HeaderColorTo = clWindow + Colors.FrameColor = clWindow + Colors.ToolPanelHeaderColorFrom = clWindow + Colors.ToolPanelHeaderColorTo = clWindow + Fonts.NavPanelFont.Charset = DEFAULT_CHARSET + Fonts.NavPanelFont.Color = clWindowText + Fonts.NavPanelFont.Height = -11 + Fonts.NavPanelFont.Name = 'Tahoma' + Fonts.NavPanelFont.Style = [] + Fonts.NavPanelHotTrackFont.Charset = DEFAULT_CHARSET + Fonts.NavPanelHotTrackFont.Color = clWindow + Fonts.NavPanelHotTrackFont.Height = -11 + Fonts.NavPanelHotTrackFont.Name = 'Tahoma' + Fonts.NavPanelHotTrackFont.Style = [] + Fonts.DividerFont.Charset = DEFAULT_CHARSET + Fonts.DividerFont.Color = clWindowText + Fonts.DividerFont.Height = -11 + Fonts.DividerFont.Name = 'Tahoma' + Fonts.DividerFont.Style = [] + Fonts.HeaderFont.Charset = DEFAULT_CHARSET + Fonts.HeaderFont.Color = clWindow + Fonts.HeaderFont.Height = -16 + Fonts.HeaderFont.Name = 'Arial' + Fonts.HeaderFont.Style = [] + Theme = nptCustom + Left = 176 + Top = 504 + end + object JvFormStorage: TJvFormStorage + AppStorage = JvAppRegistryStorage + AppStoragePath = 'fPantallaPrincipal\' + VersionCheck = fpvcNocheck + StoredValues = <> + Left = 472 + Top = 120 + end + object JvAppRegistryStorage: TJvAppRegistryStorage + StorageOptions.BooleanStringTrueValues = 'TRUE, YES, Y' + StorageOptions.BooleanStringFalseValues = 'FALSE, NO, N' + Root = 'Software\%APPL_NAME%' + SubStorages = <> + Left = 504 + Top = 128 + end + object ApplicationEvents: TApplicationEvents + OnActionExecute = ApplicationEventsActionExecute + Left = 248 + Top = 190 + end +end diff --git a/Cliente/uPantallaPrincipal.pas b/Cliente/uPantallaPrincipal.pas new file mode 100644 index 0000000..629c819 --- /dev/null +++ b/Cliente/uPantallaPrincipal.pas @@ -0,0 +1,516 @@ + +unit uPantallaPrincipal; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, StdCtrls, ExtCtrls, XPMan, uGUIBase, uCustomEditor, + JvNavigationPane, JvExExtCtrls, JvComponent, Menus, ImgList, + PngImageList, ActnList, uHostManager, JvExControls, JvPageList, JvPanel, + TBX, TB2Item, TB2Dock, TB2Toolbar, ComCtrls, TBXToolPals, TBXLists, + TBXExtItems, TB2ExtItems, TBXMDI, TBXDkPanels, JvSplitter, JvSyncSplitter, + JvXPBar, JvXPCore, JvXPContainer, JvLookOut, JvOutlookBar, Buttons, + JvExButtons, JvBitBtn, JvSpeedButton, JvExStdCtrls, JvButton, JvCtrls, + JvStartMenuButton, JvTransparentButton, JvExComCtrls, JvListView, + JvAppStorage, JvAppRegistryStorage, JvFormPlacement, JvBaseDlg, + JvJVCLAboutForm, AppEvnts, JvWaitingGradient, JvGradient, + cxControls, JvComponentBase; + +type + TfPantallaPrincipal = class(TForm, IHostForm) + GeneralActionList: TActionList; + ModulesSmallImageList: TPngImageList; + XPManifest1: TXPManifest; + actSalir: TAction; + ModulesActionList: TActionList; + ModulesLargeImageList: TPngImageList; + HostMenu: TMainMenu; + Archivo1: TMenuItem; + Ayuda1: TMenuItem; + pnlContenido: TTBXAlignmentPanel; + JvNavigationPane: TJvNavigationPane; + pnlBorde: TTBXAlignmentPanel; + pnlMain: TTBXAlignmentPanel; + JvSyncSplitter1: TJvSyncSplitter; + StatusBar: TStatusBar; + HostManager: THostManager; + Salir1: TMenuItem; + actLogin: TAction; + StyleManagerButtons: TJvNavPaneStyleManager; + JvFormStorage: TJvFormStorage; + JvAppRegistryStorage: TJvAppRegistryStorage; + actAdministracion: TAction; + ApplicationEvents: TApplicationEvents; + actCambiarPass: TAction; + Cambiarmicontrasea1: TMenuItem; + Paneldeadministracin1: TMenuItem; + N1: TMenuItem; + actConexion: TAction; + Configurarconexin1: TMenuItem; + N2: TMenuItem; + actAcerca: TAction; + Acercade1: TMenuItem; + JvGradient1: TJvGradient; + procedure FormCreate(Sender: TObject); + procedure FormDestroy(Sender: TObject); + procedure HostManagerAfterLoad(Sender: TObject; AModuleInfo: TModuleInfo); + procedure Salir1Click(Sender: TObject); + procedure actSalirExecute(Sender: TObject); + procedure actLoginExecute(Sender: TObject); + procedure ApplicationEventsActionExecute(Action: TBasicAction; + var Handled: Boolean); + procedure actCambiarPassExecute(Sender: TObject); + procedure actAcercaExecute(Sender: TObject); + procedure actAdministracionExecute(Sender: TObject); + procedure Button1Click(Sender: TObject); + procedure FormShow(Sender: TObject); + private + FContenido : TCustomEditor; + FStartDefaultAction : TBasicAction; + + procedure ShowEmbedded(AEditor : ICustomEditor); + procedure AplicarPerfil; + function FindNavPanePage(ACaption : String) : Integer; + procedure InitializeUI; + procedure OnThemeChange(Sender: TObject); + procedure CopyImages(const SrcList: TPngImageList; var DstList: TPngImageList; + out Index, Count: Integer); + procedure RegisterModule(AModuleInfo : TModuleInfo); + procedure ExecuteActionMenu(Sender : TObject); + + protected + function GetWorkPanel : TWinControl; + public + function IsShortcut(var Message: TWMKey): Boolean; override; + procedure OnWorkPanelChanged(AEditor : ICustomEditor); + property WorkPanel : TWinControl read GetWorkPanel; + constructor Create(AOwner: TComponent); override; + end; + +var + fPantallaPrincipal: TfPantallaPrincipal; + +implementation + +uses + PNGImage, uModuleController, uDataModuleBase, Math, uMenuUtils, + uPanelControl, uDataModuleUsuarios, uSplash, uAcercaDe, + uViewBase,UxTheme, Themes; + + +{$R *.dfm} + +function OpenThemeData(hwnd: HWND; pszClassList: LPCWSTR): THandle; stdcall; + external 'uxtheme.dll'; + +function CloseThemeData(hTheme: THandle): HRESULT; stdcall; + external 'uxtheme.dll'; + +function DrawThemeBackground(hTheme: THandle; hdc: HDC; iPartId, iStateId: +Integer; const pRect: TRect; + pClipRect: PRECT): HRESULT; stdcall; + external 'uxtheme.dll'; + +{ +***************************** TfPantallaPrincipal ****************************** +} + +procedure TfPantallaPrincipal.CopyImages(const SrcList: TPngImageList; var DstList: + TPngImageList; out Index, Count: Integer); +begin + Index := -1; + Count := 0; + + if not Assigned(SrcList) or not Assigned(DstList) then + Exit; + + DstList.BeginUpdate; + try + Index := DstList.Count; + DstList.AddImages(SrcList); + Count := SrcList.Count; + finally + DstList.EndUpdate; + end; +end; + +procedure TfPantallaPrincipal.FormCreate(Sender: TObject); +begin + Caption := Application.Title + ' ' + dmBase.darVersion; + SplashScreen := TSplashScreen.Create(Application) ; + SplashScreen.Show; + + JvNavigationPane.StyleManager := dmBase.StyleManager; + dmBase.OnThemeChange := Self.OnThemeChange; + Self.OnThemeChange(Self); // Forzar el refresco de los colores del tema activo + + with HostManager do + begin + BPLPath := ExtractFilePath(Application.ExeName) + '\'; + MainForm := Self; + end; + + actLogin.Execute; +end; + +procedure TfPantallaPrincipal.FormDestroy(Sender: TObject); +begin + HostManager.UnloadModules; +end; + +procedure TfPantallaPrincipal.HostManagerAfterLoad(Sender: TObject; + AModuleInfo: TModuleInfo); +begin + RegisterModule(AModuleInfo); +end; + +procedure TfPantallaPrincipal.RegisterModule(AModuleInfo : TModuleInfo); +var + AModule: TModuleController; + AModuleMenu : TMainMenu; + AIndex: Integer; + ACount: Integer; +begin + AModule := AModuleInfo.Module; + SplashScreen.Texto := 'Cargando ''' + AModule.ModuleName + '''...'; + SplashScreen.Update; + Application.ProcessMessages; + + CopyImages(TPngImageList(AModule.SmallImages), TPngImageList(ModulesSmallImageList), AIndex, ACount); + CopyImages(TPngImageList(AModule.LargeImages), TPngImageList(ModulesLargeImageList), AIndex, ACount); + + if Assigned(AModule.ModuleMenu) then + begin + AModuleMenu := AModule.ModuleMenu; + MergeMenus(AModuleMenu, Self.Menu, AIndex); + end; +end; + +procedure TfPantallaPrincipal.Salir1Click(Sender: TObject); +begin + Close; +end; + +procedure TfPantallaPrincipal.actSalirExecute(Sender: TObject); +begin + Close; +end; + +procedure TfPantallaPrincipal.OnThemeChange(Sender: TObject); +begin + LockWindowUpdate(Handle); + try + Color := dmBase.StyleManager.Colors.DividerColorTo; + pnlBorde.Color := dmBase.StyleManager.Colors.FrameColor; + with StyleManagerButtons do + begin + Colors.ButtonColorFrom := clWindow; + Colors.ButtonColorTo := clWindow; + Colors.ButtonSeparatorColor := clWindow; + Colors.SplitterColorFrom := clWindow; + Colors.SplitterColorTo := clWindow; + Colors.DividerColorFrom := clWindow; + Colors.DividerColorTo := clWindow; + Colors.HeaderColorFrom := clWindow; + Colors.HeaderColorTo := clWindow; + Colors.FrameColor := clWindow; + Colors.ToolPanelHeaderColorFrom := clWindow; + Colors.ToolPanelHeaderColorTo := clWindow; + + Colors.ButtonHotColorFrom := dmBase.StyleManager.Colors.ButtonHotColorFrom; + Colors.ButtonHotColorTo := dmBase.StyleManager.Colors.ButtonHotColorTo; + + Colors.ButtonSelectedColorFrom := dmBase.StyleManager.Colors.ButtonSelectedColorFrom; + Colors.ButtonSelectedColorTo := dmBase.StyleManager.Colors.ButtonSelectedColorTo; + end; + JvGradient1.StartColor := JvNavigationPane.Colors.ButtonColorFrom; + JvGradient1.EndColor := JvNavigationPane.Colors.ButtonColorTo; + finally + LockWindowUpdate(0); + Refresh; + end; +end; + +function TfPantallaPrincipal.GetWorkPanel: TWinControl; +begin + Result := pnlMain; +end; + +procedure TfPantallaPrincipal.InitializeUI; + + function EsUnModulo(AMenuItem : TMenuItem) : Boolean; + begin + Result := (AMenuItem.Tag >= 0) and (AMenuItem.Tag < 9000) + end; + +var + i : Integer; + AMenuItem : TMenuItem; + APageIndex : Integer; +begin + SortMenuByTag(Menu); + + for i := 0 to Menu.Items.Count - 1 do + begin + AMenuItem := Menu.Items[i]; + if not EsUnModulo(AMenuItem) then + Continue; + + APageIndex := FindNavPanePage(AMenuItem.Caption); + if APageIndex < 0 then + begin + APageIndex := CreatePageNavPane(JvNavigationPane, AMenuItem.Caption, NIL, + AMenuItem.ImageIndex); + JvNavigationPane.NavPages[APageIndex].Tag := AMenuItem.Tag; + end; + + //Establezco la primera acción por defecto + if not Assigned(FStartDefaultAction) then + FStartDefaultAction := AMenuItem[0].Action; + + PopulateNavPagePane(JvNavigationPane.NavPages[APageIndex], AMenuItem, + ModulesSmallImageList, StyleManagerButtons); + + // Elimino la imagen que tiene el menú porque queda feo. + AMenuItem.ImageIndex := -1; + end; +// JvNavigationPane.ActivePage := pagInicio; + ApplicationEvents.OnActionExecute := ApplicationEventsActionExecute; +end; + + +procedure TfPantallaPrincipal.actLoginExecute(Sender: TObject); +var + ACursor : TCursor; +begin + HostManager.UnloadModules; + + if dmUsuarios.Login then + begin + ACursor := Screen.Cursor; + Screen.Cursor := crHourGlass; + SplashScreen.Update; + Application.ProcessMessages; + try + HostManager.LoadModule('Calendarios.bpl'); + HostManager.LoadModule('Contactos.bpl'); + HostManager.LoadModule('Almacenes.bpl'); + HostManager.LoadModule('Cuentas.bpl'); + HostManager.LoadModule('Presupuestos.bpl'); + HostManager.LoadModule('Montajes_Impl.bpl'); + HostManager.LoadModule('PedidosProveedor.bpl'); + HostManager.LoadModule('Articulos.bpl'); + HostManager.LoadModule('AlbaranesCliente.bpl'); + HostManager.LoadModule('FacturasCliente.bpl'); + HostManager.LoadModule('FacturasProveedor.bpl'); + HostManager.LoadModule('Asientos.bpl'); + HostManager.LoadModule('Pagos.bpl'); + + InitializeUI; + Application.ProcessMessages; + Visible := True; + AplicarPerfil; + finally + SplashScreen.Update; + SplashScreen.Hide; + SplashScreen.Free; + Screen.Cursor := ACursor; + end; + end + else + Application.Terminate; +end; + +function TfPantallaPrincipal.FindNavPanePage(ACaption: String): Integer; +var + i : integer; +begin + Result := -1; + for i := 0 to JvNavigationPane.PageCount - 1 do + if JvNavigationPane.NavPages[i].Caption = ACaption then + begin + Result := i; + break; + end; +end; + +procedure TfPantallaPrincipal.ExecuteActionMenu(Sender: TObject); +var + i : integer; +begin + for i := 0 to JvNavigationPane.PageCount - 1 do + begin + if JvNavigationPane.NavPages[i].Caption = (Sender as TAction).Caption then + begin + JvNavigationPane.ActivePageIndex := i; + Break; + end; + end; +end; + +procedure TfPantallaPrincipal.AplicarPerfil; +begin + actAdministracion.Visible := dmUsuarios.EsAdmin; +end; + +procedure TfPantallaPrincipal.ApplicationEventsActionExecute( + Action: TBasicAction; var Handled: Boolean); +var + APageIndex : Integer; +begin + if (Action is TAction) then + begin + APageIndex := FindNavPanePage((Action as TAction).Category); + JvNavigationPane.ActivePageIndex := APageIndex; + end; +end; + +procedure TfPantallaPrincipal.OnWorkPanelChanged(AEditor: ICustomEditor); +begin + // +end; + +procedure TfPantallaPrincipal.ShowEmbedded(AEditor: ICustomEditor); +var + ACursor : TCursor; +begin + ACursor := Screen.Cursor; + Screen.Cursor := crHourGlass; + LockWindowUpdate(Handle); + try + if Assigned(FContenido) then + FContenido.Release; + + FContenido := AEditor.GetInstance as TCustomEditor; + with (FContenido) do + begin + Visible := False; + BorderIcons := []; + BorderStyle := bsNone; + Parent := WorkPanel; + Align := alNone; + Application.ProcessMessages; + FContenido.Show; + Application.ProcessMessages; + Align := alClient; + Application.ProcessMessages; + FContenido.SetFocus; + end; + finally + Application.ProcessMessages; + LockWindowUpdate(0); + Screen.Cursor := ACursor; + end; + OnWorkPanelChanged(FContenido); +end; + +constructor TfPantallaPrincipal.Create(AOwner: TComponent); +begin + inherited; + FContenido := NIL; +end; + +procedure TfPantallaPrincipal.actCambiarPassExecute(Sender: TObject); +begin + dmUsuarios.CambiarPassword; +end; + +procedure TfPantallaPrincipal.actAcercaExecute(Sender: TObject); +begin + with TfAcercaDe.Create(NIL) do + try + HostManager := Self.HostManager; + ShowModal; + finally + Free; + end; +end; + +function TfPantallaPrincipal.IsShortcut(var Message: TWMKey): Boolean; +Var + ctrl: TWinControl; + comp: TComponent; + i: Integer; + Begin + ctrl := ActiveControl; + If ctrl <> Nil Then Begin + Repeat + ctrl := ctrl.Parent + Until (ctrl = nil) or (ctrl Is TCustomForm); + // Note: replace TCustomFrame with TForm, check if the found form is + // self, if not, execute the following block of code. + If ctrl <> nil Then Begin + For i:= 0 To ctrl.componentcount-1 Do Begin + comp:= ctrl.Components[i]; + If comp Is TCustomActionList Then Begin + result := TCustomActionList(comp).IsShortcut( message ); + If result Then + Exit; + End; + End; + End; + End; + //Result := inherited IsShortCut(Message); +end; + + +procedure TfPantallaPrincipal.actAdministracionExecute(Sender: TObject); +begin + // +end; + +procedure TfPantallaPrincipal.Button1Click(Sender: TObject); +var + i : integer; + AModule : TModuleInfo; + AVista : IViewInicio; +{ lCLG: TdxLayoutGroup; + lLI: TdxLayoutItem;} +begin + { + for i := 0 to HostManager.ModulesCount -1 do + begin + AModule := HostManager.Modules[i]; + if Supports(AModule.Module, IViewInicio, AVista) then + begin + Exit; + lLI := dxLayoutControl1.CreateItemForControl(Button2); + lLI.Caption := 'Hello World'; + lCLG := dxLayoutControl1.CreateGroup; + lCLG.Caption := 'Test this'; + lCLG.Parent := dxLayoutControl1.Items; + lLI.Parent := lCLG; + dxLayoutControl1.Customization := True; + end; + end; + } +end; + +{procedure TfPantallaPrincipal.JvPanel1Paint(Sender: TObject); +var + PS: PAINTSTRUCT; +begin + BeginPaint(JvPanel1.Canvas.Handle, PS); + ThemeServices.DrawElement(JvPanel1.Canvas.Handle, ThemeServices.GetElementDetails(tebExplorerBarDontCare), JvPanel1.BoundsRect); +// ThemeServices.DrawText(JvPanel1.Canvas.Handle, ThemeServices.GetElementDetails(tspUserPane), 'Hola', JvPanel1.Canvas.ClipRect, 0, 0); + EndPaint(JvPanel1.Canvas.Handle, PS); + +end; + +procedure TfPantallaPrincipal.JvPanel2Paint(Sender: TObject); +var + PS: PAINTSTRUCT; +begin + BeginPaint(JvPanel2.Canvas.Handle, PS); + ThemeServices.DrawElement(JvPanel2.Canvas.Handle, ThemeServices.GetElementDetails(tebExplorerBarDontCare), JvPanel2.BoundsRect); + EndPaint(JvPanel2.Canvas.Handle, PS); +end;} + +procedure TfPantallaPrincipal.FormShow(Sender: TObject); +begin + if Assigned(FStartDefaultAction) then + FStartDefaultAction.Execute; +end; + +end. diff --git a/Cliente/uSplash.ddp b/Cliente/uSplash.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Cliente/uSplash.ddp differ diff --git a/Cliente/uSplash.dfm b/Cliente/uSplash.dfm new file mode 100644 index 0000000..ee18be4 --- /dev/null +++ b/Cliente/uSplash.dfm @@ -0,0 +1,1067 @@ +object SplashScreen: TSplashScreen + Left = 131 + Top = 318 + BorderStyle = bsNone + Caption = 'SplashScreen' + ClientHeight = 275 + ClientWidth = 452 + Color = clBlack + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + Position = poScreenCenter + PixelsPerInch = 96 + TextHeight = 13 + object lblTexto: TLabel + Left = 11 + Top = 256 + Width = 3 + Height = 13 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWhite + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [fsBold] + ParentFont = False + end + object Panel1: TPanel + Left = 0 + Top = 0 + Width = 452 + Height = 252 + AutoSize = True + BevelOuter = bvNone + BorderWidth = 1 + Color = clBlack + TabOrder = 0 + object Image1: TImage + Left = 1 + Top = 1 + Width = 450 + Height = 250 + AutoSize = True + Picture.Data = { + 0B544A76474946496D6167651A7F0000474946383961C201FA00E60000625E5C + FFFFFFE66738AB8259F6D2A8B72624886A4DC538298F8F8FAC2724000000FBFB + FBB2B2B2E4E4E4F2F2F2EDEDED30302FEC733CF48544D5AC83DFDFDFF07B40CD + 432CF7F7F7F9A8A6FCEDC2DD5933D1482EF6D7CEE9E9E9D5D4D4EABB95DA5532 + D1B1ACFA9630C4746ECD9992C7C6C6D75130FBCC30D44D2FF39367594E44BD96 + 6FC0574EFBE8DFB04D41CC665AFDF3E6B0AC8FD7C5C1D8D8E6BA3532B08981CE + A87DE15F35BF2E26C2433AE59D90FDD75DF8A57DFDF5F1D26F2F423D37D9D5D4 + FA812EF1E1DDEAEAF9FEF8F5AD3A35AB302CA22824DACFCCFEFBFA878686E3E4 + E9CECEDEDD6142BDBCBCA48C33A6A6A6BBBCC8F6792FD2513AE1E1E1F5F6F1E3 + 7D62D6D6D8EBEBEBE0D8D7999999F6F0EFFDFDFDF1EDEAFCAA4CDADBDBEDE9E4 + E7E8E9CE827DD45A44EAEBECEFEFEF767473FBF1F0D85538F9F9F9CCCCCCEBED + EDC94E40F5F5F5DA4E2FD9D9D9FAFAEFEFEFF5F3F5F3ECECE9444343CACA9DE1 + 7630E96D3AF4C2BAD1D1D1DD8542D3AF34D7D7D7D75E32E7E7E7EAE6E62C0000 + 0000C201FA000007FF801282838485868788898A831F04305C01919293949596 + 9798999A9B9C9D9E9FA0A1A2A3935C0B17650F580F0E176990A4B1B2B3B4B5A4 + 12221229B8BABCB982BBB9C1BDC283C3C7BEBCBBC0CABA3C041949B6D3D4D5D6 + D7D8A50B6D657EDE58656D170B0B01B0D9E8B3905CECEDEEEFECE6E9968BF5F6 + F7885E3C1C30F3FEFF00038AE292A6CD033F541A34E800AE559A05E7044AAC64 + EAD4853618336A14E70AA2C45ECC42821CB98CA4B193224BAA342682079E7E13 + 63CA9C69CD94C10614285049E86795B85734279A2AE820D5AAA3AA92B26AE531 + 20BEA75017A5F89021A8D5AB5837D9C4D2E00B05AF5EA9F42CE31062BCACD6C8 + 5D4CD5C18FC2B770FF15FAE9F020DCB888E906FDE26568AF5F7C7B09FD3534B5 + 05DAC38883DA7C8033A7E39D0D7AB26A930668E25A04DB3850E576A7CECF5474 + EEE4B9CA01E572FEA2AA5E3D68DFD9CBB063635BEC272758C7A2E74EBEF05A36 + A805698AB66D101AB771E33C3B901D979AB5737C29F611C1EBBBBAF550B44343 + 56E85967642C584CDFA57EBD54E63258DC1E7FFCF93864C9E27A5B4B54E1797D + 45F725E43FE4120691F20006A8096D3925D74107C43D469A5D4D091889291738 + 804518097E65A168A365681B6E3BF5C4143ACF85584F0A53F1439E8328566753 + 37A1454616375C35A6A0870E3C84A24D0E20581C870945E68D379171B7236E0B + 7D888D6AFB2D92A4FF214B12F64C34294609E0296574305A789545889E5B0986 + F5DD8B0FC917DB8A086E285A6407829714780702495C715E5150641B62D622E2 + 9D8AF040D57F52F6291B3B11EAD800166D40A4168C9D15D7E35CCB59A6628458 + 20C8259A0FD4E5C0A59A657A69A5E001A9E8770E9D388B7EA4D6676AA9A89EAA + 2AA982ACDAEA20ABC6CAEA333DF8692B6C5CA0820564E1C5C3CE2945455AE163 + 0BB172973CA25A056C5165344B9678955506DCB4695CA459B39CC9459769D226 + 1BCBABE0B22A6E7EE41E522E93B0A61B6E0A041876EBBB59019A23710B158A6C + 00C05DB4D9703B26B75C470D8252861208D0A1C0C108230C01024A3831CA50D5 + 46FC103966C1F30EFF5197A692CA4F2528A1040409274C87C7B2A46AB2AC289F + AC72CAAA16C627BC30D34490846F2A07D43AED54A6992A0A291859A56455EBAD + 251F876CF4D14A6CA2C5D14C376D3400B96A8629656928E1F4D100382CCAB9E3 + AADB75B85C87ED759253393274CC685FC34E705CF154A3AFF7021AE103FC12EB + CDB374B6B30903205FED3403992CEDF7E0099B911946AE70E144DF84270C4019 + A1AC2C39CB9357DEF2332D4893F6E600CDBC6B42E135B80EB2C01195ADA29085 + 01CE4FDE02D0B8D3495F22F8EB7E435DED4F0B584D7BC81040FE891E964B003C + E5C4077FAA045E50552BE7FF98B1BBD197C9ABA31F65004572DCC81214A184EA + CDA81CB7273E60F0FFF34723203BF94E1B6ED12BB3A3AF0004A05420FFFCFACD + 6FFFFDF2D76F6AFEF4F7CFFFFFFB0BA0FE04E192CC31CF1FAE739F02709506F4 + 2CA40CE370C2C19236BA0ACAE3503C7B9363BE139E1A996512E35360C2D46089 + F689F06000C05765B8F085134EF013C58BA1F166589F12F5E06C079485F31418 + BD5C6D86156978430215603EEC5970285A12D68EE43216713445772E3C18FC2A + 61C213AA2F4C211421041EE009FC79F18B600CA318C7581FCCD52987B61822FA + 70B53D57EC10611434A2114FC18D8374E92B1D5A1D44A010C59069818A7D4421 + BE20D2C23EC68E13FE0BA0FDF4B7C8440ED08B8F046024EFA32703A2111B6F5C + 6362D6E68A2A2A20FF76479423272F252C0D7AC70FADE002E30249074006D270 + A6E002145D38454492F196B8CCE5FDF450A2E95CF21A6A241FAE8033CB84C531 + 94C8AC484152E18D9DC4A9010F4803020219320A50C2930A4C613BB2E8422EDA + 528C8C14A31EC4E9C571DE323AEDD2DC2FA9914961C20622C54458119129CA0B + 9A2E46DE81E02A9D0600C005C009ED6CDA2123814DF7C11212FB341A04B45099 + 1204F4685ADB842E23A04BF951147F17AD680A30C08116E0709D9E08E6F3C624 + 4BA61D931C70A367052D122CB78487018383000929A186C10D940B0545D81740 + F12B762434645FD0D9052E5002BFFDF19B154DAA52F1278102BE0CA4B478E8C1 + 8E9A2276C4F3850FFF32947CE8F9207340486369906AC220B0534BD4946966F0 + 98372591D38359931338FB55007EAA307210C58D47FB81C7943053895234A37F + AD0060E717D8C21256B088B5E86115AB58C31A969204581E5469215284515514 + 6A508254D37AD94D5040B30ABD1E264A8A3449C4551E14B9D72532330EBA26EC + 8FA3A3C40E47C6D74CE0D46F651D90572BE2D3ABD1E10D11EBC81961B8D4E21A + 5717ED9A6C2DC4DA594F40C1B5466B6E25D4C04D93AE5512D5759A166E5BBEAE + 42A2B20A704245B0E037081064851FA508779DF6D64EF4B41CD05598C7A4558E + F45A02B18EC5AF7EF31BD8C6EEF7BFFC05B0609B5A15E5CE02BC0A90EE2610DC + B45662E2AA4E8B68FF24B2DBB4ED62F39891002FE020C1C7AB292138A1B26F29 + DABA3BF1F256AC4D4BAB882BC158010FD6BFFD5DAC8B671CE00A3C8308EA34B0 + 28981B0A14C3EE120C6E9A8429CCB43F5EF81D01006F44219CB012B4013C10FC + 2076D6EB4287518C0B1D7EDEC2AE1BBFBF4620C0FCFD328DC70CE6FFDA50C7A4 + 40B082312141F4B557124CC62D765F67619312841C19665A447DAC8006BAB40D + 24365A6E1710E8D789775AE510211DFAFA89323B9ACC907E7405D0E95134EF18 + 7DB59CB04169EA3E070780C84733B2494BE711254BC2C710682071FC708169D2 + EEADEC2874E30E3D2D2EC054846608C59777CDEB5EFB5AB062F6B5B0833DEC5F + EF1AD85EFE6B5339FFF0544B7722C8579B04051498E9B92A506BA08E6E002E6C + 91BB6878CE4EA3C302BA512F59EB5412840EE4A1A305CF1392B5D1918EF7A3E7 + 0D605A391B147C6E5AA6990C80BE16B4BD6D36295BE99AC24FD379DB762E487C + 4CADE9706F836E58B880B9DDFA202A9F70DDECE642BECB9BDB4D10BBD8200FB9 + C8471E722BE0A1D2F77EB6FB2601DE5C5382E106679A3F25F1809F6ED1B4101E + 2841055E2DA6C03CDBAD5C668D26AE80DC5A5C841877C55DB2DC694F241BD950 + 3FB6D43F1E75AA4FFDE957AFBAB2F77186947762E347AB7600A0C0300424D077 + 93803055E9AAF348E8AEEC3AB72AD38AE85584978F93AF8079907F608EDBA5FB + D5A625FAD5C49BA5FF8B0C354C7126DC9A2941F2C63BFEF1C59EB474BCBEE095 + 83E2B3158EC4B499F6664FC8BDB46B7BC885BD8AD26FE739DABF8208D18D2EF8 + 0843C8F019019812B2ED34B15F02F2B8CF3DC9059B8297505E136057A827B450 + 34ED4622E0BC7B18698D064AA18DFE5E4A6E079FB9383AA2530067AD17B2F6C4 + C17DC44DCC141E8BEFD1188D895DDF210276D875FACFCFEBF5A3BFD7EC87FFFB + E39F7E5F9FDFFDF8973FAFADF00166AF78B2D0E6349AE03107677746E3693CB5 + 7C21134714337AB1157DED763533050BAB670AE640623BA552D99325C17578E3 + 60281453190800768B2709BA778228286C12A003EDF27F50C563A1F059E2176A + 3B77342E37651036FF4FF1804D0860414A362DB7F663D5B73B41152624767DB1 + 040F5A655712134B4B5811E48011ADE00A8987559A1001E7978558B8855AD885 + 5CF8855E18866038866258865F161D1C7043BF67096A160A55687C0618320587 + 83025741A34731A767340C700A0B405E573345B145095C70357C102185426259 + 503A0FB188D4122D43E50A69F0057BE531DC04000B2021614017855254573387 + 99F0655E088A64687E5F288A62688A5B888A66A88A5B38691FD002CDB6860100 + 839E407B4AA005D87454D8748382A80911C87CDE1587C6942F364261B4368846 + 158C9570356F6010D583818A182DD2185CD532540B807C4CD3014F2617D5C305 + 2AD0899C308A66D8FF8577308EE2788EE6E88536860767E082BFD4869EC06F03 + 958B91C07463650981888F0A684CBB75814C033586071174E530D23738B0865A + 9270564DC3070ED01312875B50885220483121480E85043B6CC32810916DBC88 + 09E9888E20F99122398ABD248B93408B9C206495A07691A09046C36591E08769 + E53112F67946633E49288C080335A7F0101769345AC30EF6A892955006D0C690 + 07D26A1069314CF95E830305B7731A24D67696508E5679955899955AB9955CD9 + 95598985E508965C6905BDD775269987DAD6092EE93896405754255014917338 + 5787EE50505FE00E62B561F1D0380040554A10800AC090730168D45474E43083 + 74A005AEC0000108FF059CE0955B69075629995949997760999139999A099995 + 19011B058BEE984328A909D8A4022B99790D377E9CC634137874076338FD3894 + 0AA306ECC060E2855AAE569807F30639D2010F494D59600AC1F73A305995E528 + 005E899CC8C999CCC999CB7907CF7995D1790715A003AF28596B088F9C505037 + A805D0055BAE094770A66F7A139E0A707D92F8005CB096CF6362F2F000BA8930 + 82A98DD9E7345F00119CC84A9DC09962D99CFEF99F90690556D01F67399A8173 + 42DB552D0B3083DAD59310818DACC9057EE83E4E808790509F7EC307DDE09BB9 + D9476F001C5C407B25B69FCA79073E009D5859A2275AA2C8B9A228CAA22F1AA3 + 2EAAA2310AA3365AFFA37760051C956394A79D9BC09ECF8300970841B2D938A9 + C62C94F193DAA74A0AB487DD020922AA657EC018BE89A14C1354AE00A10A8480 + 9A9095D3799CC96995370AA3D289A2607AA6669AA6656A9564D982B268A099C0 + A0EFF3531F562510349C09C3074F3617849206E2075B6FA8005255A1D6721735 + 474D007011DF9006567A34595010E380A7FAD6715D3AA6386AA9987AA99A9AA9 + 997A072BC801ED989DA8D909457A3414905D6690068C814A6910A521E30417C0 + 187954357EA304908005E2D74A7AC605D7621A10B1795104058172378C5A9841 + A51969D001723A7808A909CFF9AC9B9AA6D08AA6D05AA2D42AA6D86AAD388AA6 + 9EC903964479709AFF095528535CD0A10A131CBA4119C3E904C1A123A1413D7E + 105FB906095A3A56EAA967C07129E20111E2734200C06A12C2100F40278D6A34 + C0551435F206CB2A73DD8652A2029D0210B13E10B1264AB1112BB1173BB1CA69 + B1177BB110DBA21CBBB11D2BB202A0B11F5BB221FBB1D0D97BD899723EDA0971 + 4607EAC9056FA067CC822969E004220A001DD0737483103AA18DF9F98F5DC537 + FFB89747C300E73554DC7717E64A3B74500273B30A93C13EC66A100C01417E00 + 984743077CD04040132A98C0A2294BB622BBA9656BB135DAB16B6BA36A7BA3FC + F7AD67290B0393450BB3537404894A272DFA921138CB07E1C77C1FD66DA68320 + 0A31B055134C1040FF9371537C13449B28853D15F72B0A271E36D9386620B506 + 01654CB18385C99BC3D113E2E0045C7B307420AC7B4A1A037B2C9510B223FBBA + B01BBBAE0BBB27EBB1B27BBBB51BB19E79723C3AB7B4B00EC01229748137A621 + 8587172CA5E128A6052C2F6216CB941E0752171E485F152965D9A31617415F39 + 59414321854EC40E92E8B8BCE331521B1C07C128A7818F82188D7B0B89D3388D + 7BFA193F532369000504C834B4E50ADCD03DB9D110007316676BBB691BC003AC + B2024CB2076CC005ECB19ECA2E72EBBBB2D0BD5B422FBAF122A651BCD6423772 + 512395B00DD08BB8E8B63D461129ABD02CCCE22C97321EF76257D652BC18A1BD + 71A54CD578780EABFFBE2B921E7231B001635A0889445278C2CE421642ACAF6C + 312CDEA1891FE8844E483117A1C143722692C12DF51500B70BBB4D50C5589CC5 + 5ABCC54D60053A00AA101CC143B119FC9B472FE2BD2E4CC6383128BC4109B14A + 2F1DF036E64047178C1E860B1709B120B85331CAA42F433C85DACBC7731C95FB + 8A17EBC03609D22165801AEAA5847E4C37771C1792DC1D71724A0DC111333CC3 + 52A3C1326221B7C113CB811A5B3CCAA45CCAA6FC99B118C6EEB50DDCA02305F2 + 1D4BB1112EBC3308B11384821717C0157212C7E3A0339B61C14571BE466CC967 + 1C2638031C689C2998FC7D2BA533DE9752EDB0BFFDC2AAA3953D3EBC19E98110 + A6B41E3CC2449C8BFF2917AC2944AC0AD92C24EB31BF4071B137A0CE02B0CEEB + 1CB1EFDCCEEC0CCFF21CCFF6CCCE137BCFEE8CCFF24CCFF4BCCFFB4CCF77F099 + AA8C1DCBD416DD2116C3ABAF0CCDD018C14C384105B7ECC60F0019CA91110EF4 + 0D76714F3DE3C939A110591B62A4573A3F8C377BFC0E209871FDB83637B12162 + 0141DE72CCF99231AAD0165CA221DA311A6F311774511728FCD3260CD4D892CD + A1711BCFC4CBE560CAB21BCF1DCBD4B07BCFA5ECD4B17B073A80073DD0BB058D + 8FC062471B042AADF0C30D3D35DCF326133D09B9BCC653DA2CE9F12940C4C2C2 + D119EEF13360F20AEE80BD0D8D38902891BE020FD7FB709D2C163AAC37ABB581 + 2DFC436DE21693C2FF44DE90263EDDD043FCD8083BCBD782C39DEC18536A2FF5 + 9CD900ADD99CBDD99E9DD97DD0D99C1DDA9F5DDAA02D0015C051A19AD599F0BC + 1592100BCD1152F3D30ECD4CDA51D69210AB3A3D17DCE1C909D1D676752D3F5B + 2171921C96225C381395608DD7E865CD7B9DDC2D7D2183E241829C5AC95DD86A + 0D1EC23B173C4DC2541BC4E01DDE288C298FA82FD80CD7B7014DF612D0A2BDD9 + FEDCCFED9DD9FF0CDFEE1DDFECFDD902409678C06CAC8D090F07D779042D5992 + 31269C31E0CC3D574227949006BB222779FCC4AF8C2520C8B42D35CC72B2101D + 943832ED880F3D352BA4554826D39BF1D7D37D78CC5CCDA167DE045E1795D2E2 + 1AE3D3418DB0421CFFE37FCCDC4AD7C255322C808DD9A6DDE3ED7D03EE0CE4ED + 2CE4004DE4F56CE49E4DE448AED942DEC5558D72FD6D5A057110C501D20C32E1 + 7504E3350ED13A81DBEC9023EC51203CD1195F003A1E74412C65C7C46D210B22 + C50EDB0EC82C35189CD720EE0E5E35E58DF14CE1B1CCC6DCACBDE8C3E26CE090 + 3DE8272CE3913D35263E8DFA22AB60F1DBEB6DDF90EEE3921EE9948EDF9FBADA + 518E2F0601B47232A553A8D73DA7317F7CE06BBD13035B0AA8501BC601D2ACE0 + 40117EE6A917956C01D74482262F92C45980013A2004444047C9CC117ACDC715 + 11DDAF5EDE265EC36DE0049A0500508005A6B5B4D602D6613DEDD41ECEB1F788 + 8ABEE89CAE13979DFFD4401EE4DF1EEEE22EEE430EEEE37EEEE87EEEE55EEEE9 + DEEE40FE025E0CC6999E2B07B141D443DD13B90DC1ACE587BE25B7ADE010322F + B7D1E9D2DB730D5EE625BE8421F8C8B42EDDC5120EAFE0042CD0041F7043F952 + D229FC811479319BCE1ED3DDB44D8BDC25000000A00200600679F0072590070E + 10EBD528EDD51EF388C311E59DC9144EC654D0E8EA5D0E459EE4E0BEEE3F7F03 + 4DF0EDEC4EEE3E1FEE40CFE4EA4EF49BDD048581D5104C105552E5178D67EF35 + D3A21EE3445CEA125D2343251C8DD1230C91C2F5C5366CED41497831220CC9FC + CBED7B6E6B286002567DE716E1BD74AED7A9D7CA88FD16E131BD4C6B8D5CD000 + 4A60004A10020C10FF026AC00066300040F0EC1073E37F1FF28F08F2D3FBBE8B + 1831DDB729DB0ED8CCE1EE9EFFF9A01FFAA2DFEE2FF0F4AC6D0A34F3D1171D26 + 0A8FCC3FC4EFCF122C3DF3D2151EF60FFF1374AD3DE851D42F5D281FC4BD4C98 + 2530F2260F44BF32E00226100237F4DCE7F57D751EEBDB43D3BA41DD32DC1101 + 9007245F029100071DF097FDA65E294D9188B6C4ECA6F0E50FE7173FDB54AEF3 + E1C0F340AFE442BFF4403EF4F05FF4E3FEFEE96EFFE6CEF4F70F083782023702 + 7729783D5C018C8D8E8F909192939495969798975C6D0F0D54140D1D0E6D690B + 5C0BA8A8A70B69170E65580F0F65B4650EB7AF587E549F7E1DBA9F1414540D7E + 58A3A55CCAA6CC69FF0E580DC2C565A45C5B2D5B175D426749015C497F421C42 + 2D441765BE586D5B60E324161B78175C69DB1C781C1C678B6D5D2DFC025C6B91 + 6415AB3614D494B8320796037A581222A1B0255599062154007022A4CC852C03 + 00986120A4439A301D9571F1D3A04D80050E1A60B910008B90120C182001A3F2 + 4287966DDE5068636A53423542885E68738B163061C3FC3CB8B020C08D3E82AE + 66DDAA212B56415F6F74E5AA5550D7B35BBD661D5B562BDAB46EDBA20D8B5543 + 93173A38F4C8C4B7AFDFBF802F39DB15F5015166A9121F7420AB712D5A4DA17D + E2D5C0D39761C53AD83AFCEDDB2A65ADCA740816EA6100286248C8A83126C599 + 001756BB60D37A5EFF1AA6DA640C78C1BB8885103D16FCA9C1C285050B2FC4B4 + E092A586151D491690C0BBC5A0032766546864E08A5416040000A83003A58C32 + 064AC48F0700C5497AF1060C20A0029E4199000D949829B18981991A145C0045 + 78DA01800005A67CA184124E302052092F95014576E13951C66DAFD0F2C02E97 + 7D418C61558105D788249668E28964A1A86289117CC0011181C528E38C343292 + 4627D26071612A06A9824A68B0C852C62CB61409CB2E930D230C15BED8724129 + CC9C62D02A4B6D48DA03697051036D2CE4604113599CC60672237439860E8751 + 50837153BC30660E785484040B6E5821C60839B021C61969D490039873BA31C1 + 32A638A8C2826698FFF1E4022550A85F7808146A8678E101A005769402608012 + 73287128050138119E165C94E1A9167F7430A9125AE8A7C2005804A0C6A4145A + BAD2A400D4909E0A2400E14C864F2D29155156D515175A73891597B1C622ABAC + B35D35AB2CB3D33E5B6DB4D662EB6C1F0258F1811035862BEEB88F28D34644BC + F8410D628AA59206860F60110B918F31064D34147418D53154152565BB3FB2F2 + 8C1F5075D006174A5890030B62842046173218801C122D84C082052C70700A09 + 5E8AC1011250F816423642848044165B34300272430480C4CA620C70C0C3CB94 + 8A804679F85142090EDCE8A9194E44A3051D1BA581C51B5068C700105279E029 + 000C64D1401A499BFF91C7025A88A74403658807C5026538A10615B624ADC217 + 5CE441E04839A5011E0031EC72B3A50BB4518B951D12B36E007D34116D136669 + C5ACDF8257DB37B4D66245ADE2842B5EB85D8163BBB8E1C7021E410A2F92ABF9 + E681D5E300C11418F310C03CFEE84ABC42D26BCB2B1D20099534A2F4AB12BBEE + B2623B533F49E3C0027E5A40B310499050C414217406850507E0C1C51F74B221 + 042A4E208FC116ADBC9B06120C5CCC82108B38D125C6CA1B24A078314CBD541A + 258CAA121FD9D5E08032256804844A6D68315E1E9D79105E0917E00A800C0D10 + 8F1A1641403E406100F24B1B85F8730179656700256800D23462864D008B30C2 + 02915534D007C49DFFA583620121B234F0C11286D0841C3C0B094FB8420F9EF0 + 85C8EA600B618895E770837338CC61256E83232651832A3D6AD7BB9812AF790D + A95EF1F284302E839907ECEE3342B45D29A6E88A7450E10B0D78C002CC700079 + 1030004A38001B3850152EC8A0080720411A64609C3DA12204681C992B644002 + 33B0E08E46D89E32B6508303CCEC0FDFB0DD02DE800003D061241E4983FD54C0 + 809EBCA703E7D18E1A8A8285A7C9A02706B0140554A0854921A00487A44200D2 + E0815689443D7C485B7894F0BE6FBC413B4A789B7634B2802A0E8943F9FA10B1 + 5CC8CB6CF9B297BC14E12F8589C26122AB094D48C107CCA1C3663AB31EA28906 + 158EF12ED229E636FF439297638894A1D6F1E275D3A08A67A23845EBBDEB02A7 + F3C434FB64842670C0335A3AC01834B688881D4007B129C20680A38C101C8006 + 1F7888F7BA388210F4D179A668430870708011706F15505A807F3402052C250D + 6A52EA93461AA00C27686492A6A8A40A0CC09FA2D88F3C2AC88383CC603F2D74 + 21006AD308831840B4F9E5213B0C789F29628A0004D02A514AB0A05330581871 + 925086293C2A0997CA54A53AB5A948452A53A3BA54AA3ED5AA506DEA559B7A83 + 26E8000FCB71A65839B7898BF4622A11B5262BE0A5CD6D422689F862E2340E46 + A8C494D39CE644A76888611225D0600C485049006A400338C1C88C68240117E0 + 788010D0840B4E30FF42636F34023186A01550C0011BB2F02E24B8E09F39800E + 68DC454A04108D0154D3CED794612A8D6021922A504396B8205200F0E7140130 + 547628F086EC98810E390DC0CD54E084AA785405A9541B7B76F7AE2F6807010D + C8D02B7667370DE1D2435CDBE52FB7BB54EE7AD783C42466B6C20BAD1996D72E + 56E0011E6030D6F68EAB6ED0888A47AE694DB6B63575AF7880375F275F62D955 + 8A787D92805B3130995CA0064678011EE0490223E4400CCA18EC0170A0BC33CE + 8C08D6101E0D30C01C0334947A5918010D9C7701215476043528C20BDE998A0B + 78A004EF72C0CD06E0002AAC92AEE9E3245D3D0A80492A030B35D08E1358CB05 + 2A4C6AA47E58C0AEFF5400A107FCEC3E7E80424D619A9DF2D472010D30C07806 + 680A3EA8010875BB60300AB34BAD6A1504664E339AD34CC235B3190D4B85339B + 35E06635CF59AB4D88000632E7DE3ECB0826A3E18566A03445415ED3BEA8738C + 867E120C26FA9028842A7480058CCE4A33451726318311D81058CFCC09070F0E + C1088A8083EDB9CCC30FAEC108468D0335368005A026C10894308204E480B329 + 3E0007B2E0021C8CE00C824C9A12A030A0433D44CAE38142D688960555D0940E + B2458503CCC6D21A20E0424AA0C3781EC00564AB409417F0141D3AD9533AD021 + 0F5C5083786A7021743AC07E87D40214C0A304D456F79657CC6516CBCC66A9B6 + F9CE000FB8C09F0AFF70AC32B509DEE2B39F17DE179810A634590A58A18568B7 + 22C6625E421AD27E5FF7E8324234C0D5ABB4C897E2805FB46104090E9F4AA280 + 721C14C108BEC64341B6A0851C140007051003030C80031D0C210DC233821168 + 400206148106BBE6F90B9E44D8E4598F0B0ED2B6B6CDE001AA34A0D8DA396423 + 53C16390B2C2C800D0F6A1B86D362838200025D0B212EE8376F1685B0B397602 + 955500852EDC86146058F62CC70DE3A61C69CC4C9A4A559A8A6637175E037086 + F3E1154F783A3BFEDF875F3CE2279F78CA3795F168AE7CE41BBFF9C8237CCF30 + 62B8E82F0136827DA8671297E2A189A8CD8B671C168C5EA2B0D615E9B59E33E4 + 236FC3524EA79910FF904007CF93D2229020EB55EB0009F0FC0309EE64853885 + 400723E30218963F02E0B7E0F754203EF45B9185DF3BF64969F003035AC5AA3C + 2C8528D7D1020258C53F5650E50BC46E40C0D2366FF6670969506836171EC000 + 28C8761161A37E5A40056D307E6F405BC4A6066DC0140F910601B820081035A3 + 9021F89637D955152020439AD7417D90798E77789087781D48677D907832E481 + 2838796EA6799477822388822F18673128791E8806DDB24CDE307A3A28090E28 + 4DC31271AA9756EEC27AAD976843A25F44357BC41269D6436922A77B50884E9C + 80059AB180BA374511F64575257CF0343B2A4140B3B35655320B56380ABA077E + ADE00AF2B22EFE02FF1A69283BA85069C9F0853CD2235EF8459050338BB13ABA + E723A770777E172C4585812050887456888898888A98888758788BD8888B1889 + 88088993288996688897A88874D60462E02239B883A06823174166B523698636 + 44F6E27A18270B54A844F9A284458118E7347252B87B56B81447E20761D00164 + B8286D288B86463A42F823E7C414B0E707BEC08BD4B0804ED13A2C213AE02786 + 6978864DB87BD1584E689886E6244859D808A0717E7E570BB7B080E04881D695 + 6FD8A5419558881D8889EE9881EBE888F0F88EED288F8D788F88588FF5C888F1 + D888F5E88FF1588F08F72D8B108AA0E8809F100AD40084A61851535471F2A28A + A9B32149D85F1E27FF8B6F688BB66885CC281ACF680C3F545F00D390DB2884C5 + C8182C110A4EB480B7000CBC707AD5737B23877B338986037693319918DDF80D + 04365DB8E0934CC18013385D43057852214E2060028AA89499D89491C8944E99 + 8850A99454199549699553D907CD471006B98337120DA5711841A87AC44884A8 + E37AACC868FA62917A683A96B6911CC99219320B45840C71584D519297F5E087 + 519497A46537BFF043D57369F8123A89647B00E69025B98DC4387188B956AAF0 + 4571E80AB75069B8B07B97E96E148837FAB63726800688089A49299A50A988A4 + 9988A7199A85F899AB299AA6A99A57B99AA8299BB00902A95988AE799BB68988 + 5680082DD0953AD8FF837CB59010359601437216779689468515D971E3F471B5 + 088571C9916678017E400641B9006B4005CC657B19958635730104B80CBEB800 + 724001E6B10A6D2007A4707E651006900613D1953B4CD2334BF1230FF1190E48 + 06C9609E5F200789E100FCB99717100716C42397A10A72F000612007DF784EF2 + B906D6488EA4D00661D000945994501178C4D204B25995207A95213AA2225AA2 + 247AA2269AA228BAA22A9AA220C089605590C0E9675F090AA220960D798A8826 + 918D8184DF944190F62FEE02977139810C480A6AC0001E503D0D8013251006A8 + 100679207FA6400179A0066A400F01D0012510055A1400543036CA100625E004 + 5140065581054E0AFFA527C10041A30C1DC00025B0066645010653066A806E5C + 10A70CE0076B50A572FA3E5C100651E0044E30A05810050C90070E5A645AB004 + 6EBA06A07129CB50066E1A06637A0568BA00841A0561D00A0B70054E4001D5D4 + 204C804DE768811AA4071E2AA2684095AFDAA22C0AA2B1FA99B0BAA2B55AABAE + 3AA2B9CAABBE5AA21AF01CFB20A333DA5E08490C3AB228396A8AB8989CAAF818 + B05719407A91422A85455A8641D9800CF04915DA7FFD1705CAE0010CC06590D5 + 7F5020A95C100507D2A86AA00503945B50A0A84E703014E0534A7005EF7205AC + B204CAF005080005F01968334105C4D6AF89E204509AAEC30669E3D7AE25E0A0 + F53A6C64A00CB3E2FF1F5BA30C14C02A82AA485A405779100568D30651E0AEFD + B20050A004E0CA0A08702961A6A119244EB2D604AF6A02349B94347BB3389BB3 + 3A8BB3364B95350BA23B9BB32A1AB4445BB4466B02C19A177B51ACEE55A36149 + 6863A998662991AB830B70450CEA12A47AE97EE098ADD93A8EA4E000FD47054B + 71292A0505CA7005E39A0A38A16CE6711AA4D2194C000510D26D50D0006E7A76 + 14507F57C00A6F506F90540F6FA005E627B06D70758DC4055730215A80AE2550 + 6F74D57F65A00551601E14D02A0F5B0F79C02AC34601A7E01E0890B201A0055B + 17AAA30A13C44605ABB006989B0A61A07E757337D7A537C412021360051130B3 + A379ABAFDAABBBFBFFBBB6BABBBD7BABBB4BB3BD3ABCC03BBCBE6BABC81BBCCE + ABABCCAB94686005182004A1C7B462259C0A490A513B96C8199146C8871CA971 + 1DC08BA3F32F423A44D73A94B8A07BE2C7005F701B6A0B05F0AB0C54E0A63B42 + 01E31705B3A5B64C80A65CF0050C7005E1AAA85180205CB0040DA204018210ED + D101A820078B7B057B45050643A843B6005F5002C4F6A7E91605AABB5339C100 + 080CA93931B1A14AB78ACAAFE51AAF5C3764A590101C95067B1B0558C00A8B1B + AF3D9306F70B0518E2B283E832CF27064D80B35370B3474CB3496C022880C446 + BBC44DACC43BBBC44B1CB4516C0250ECC4347BC554ACC539BBC46340BD42A0A5 + D8DB4C4E5B85509BFFA365998AE1FB93454A817D08453EE27E72F993760CB624 + C72F593825DA485A91694D61F8C7E8A02357584B95060B4AA42EFD5268B5D798 + 7FAC9353428791599C6E398DE844C7BED80AE4888AB28B8E3EA4A540800421E0 + 307740675B6CB4577CB4557CB36E70B3A91CB43DEBCA3BFBCAA72CC5B5CCC4B3 + 6CBC2FA04C5C59C63A849036BA90DDCBAC10D9569061A4B77886D6D89FE88B18 + EEE6B5776CC7E9500C8631876168AD1C599EA51884781966AD23131EA1992ED9 + 443B1C724D4893E80472798557B7B7CE79558E46DABE2C09CD44F9771B6A0CA4 + 10006FC0074820030E630520E006ADDCC4048DCB597CCA059DD0B8ACD047DCC4 + 078DC55EACD052ACFFD014BDD0169DC505FD99ADF12DD7EBCB9BD383F2857AC3 + 0C6066C94DED5B9DD4D8CE7CD9CC8018CD4D618EF4798160B80CD328949B9C98 + 20178DA783245CF31084297BA1730CCA3CD41A19854E488B22979172B8D4D368 + 8E465224F50CD54FCD991EC2A169C0075FF00640E0CF2B90BB6850D1130DD108 + 6DD115EDD0106DD6192DD6674DD64E5CD66B5DD10D7DD137EB5531EAD19C03D2 + 568D98CBAAC9F69271779CCDD4188DECD2CCF500CF2E3D5D499490A290068C10 + C862787E56584DECECCEEE87920969182C195F1B2A130FF18445AD91481DDAA2 + 5D93E508AD4479DA525DCF82380C1CEA017CA0D56FE0CF448C06538002B67DDB + B75DDBB6ADDBB8DDFFDBBEEDDBBCCDDBB81DDCBF3DDCC59DDBC7BDDBBFCDDB26 + 801778D00D76AD39A547CE693CCC3F7C44E258B5F24C8E824D3A3D4272B890DA + 4F8DC89371948B503A733C44D688D3EF6C3DB5F40CEA94453E5D72719523A3F0 + 965198DFA3BDDFFBDDD4D0FADF000EE054FD8A4C82051E70E058FD05B26D0563 + C0C4CAEDDB0E4ED0B61DE1CC7DDB11BED0B87DE116BEE10F2EE11E9EE1093DE1 + 1CEEE11A8E062FB067D511DDE3321809C92FB627D9514B724FED93E388CCCB0C + 2553A297EAFBD23C8EDA1B224D9C1D515F18863209E3935D92E974565688C81C + C7D9B9F7D946CDDF52BED4A55D2FE28DDAAA5D91C272E057E0016FB0CF25E07B + 5680066E90DC668EFF026C70E66ABEE6C59DE66CBEE663F0022190082A2E2E80 + F692C92A69461E84E04D8134BEDD29EDDD7EC9D7E20D198F112C8F86975E088C + 7B7DE4A5A086A627DF24973BAF18D4F71D9D503EE59A7E93326EE586FEE933DE + C9FAB296075EEA6FF0055FA00674C4E0650EDC232EDCC8FDE61D5EDBB51DE167 + 0EEB6B4EDCC51DC62EA208754E23F0E509C5303A77B5E77A6ED86E6C86149ACE + 38AE18CD5C4B0C78E5D9FDE350312C819E56429A7AC58E577108DF4ACE8C9ABD + 244EEED9FA1DE59BDEDFD61A8E868EE5D26ECFFC05151E9007F17EE01D82044E + 40020CBE011B8002FB6EDBFBFEEFB70DF0FDCEEFBF2DF0BD6DF0087FF0046FF0 + FEBEF001EFF0093FFFF00DBF01711E02C3FAEB32B2099DD00B8739D9D69DEE2E + 1D9446DDCDCE5E3AD71DE0879E3B97B16F5D7B863A494EDCCC98AE10D386818B + 942E57428DDF997EEE53EEDF28FFF3D03AE0A37EE0F25EEA1E70055FE00132A0 + 035630056E20F110FFF0C91DF10F0FF0B8CDF00A6FF5510FF554AFF50D8F02BC + AE17C48AF17DC105176025A0B0908E3ED2B338CF279DCDDD5DF2E8DB93521DE0 + D42E0C8ADCE795B928D94E5F7A3E71E810688F868BE18E19FC42EE3BCFF3A35D + D3EA2EEDEC2E66EF0E15499F07451FEFAF6DA5ABFE024FFFF45BDFF908AFEFFC + 0EFA022FFA5B4FFAFF2EFAA87FFA9FAFFAA1CFFAA3BF019C087A641F18330F96 + FC22D9ECDCBD12C7FFF85E7B8B71DF2ED56A374E7D37B5D08AF9E6070D58C7D9 + DCEC2319F3AA800E84519F5048DF402D3A445DEED6A8F8A28D7BC6E8E9A10EEA + 9B795D4BB2440D90F4468FE0599D07FE9C022F40DB9EBFF053D0F5F1FFFE083F + FF1B60FF5B8FFFF5DFF5F40F0828284D561F1C3D5C018A8B8C8D8E8F90919293 + 94915C690E580D1454580E171769A2A3A40B69A6A8A7AAA669A0A06DB0B16D17 + 6DA20BB7B8B9B75C0BBC696D0E65C2C3C20F65C60F0F1D7E5414147E65B6A2AF + C00E9FA7BAB8ABAAD2BC170F7ECE541D65AF659ACEE20D9EAEAFB4EFB3B3EDF3 + F4F5F6A1AED5C465C1FDFCFFFEFC9D63968E139566141E50F902C4431E871E3C + F07943514D08122FFF9A4C41B1A1239B8E1B3E821C49D26349922243824C79B2 + A5CA922C57BA9C39460C063C3D2AE9DCC9B367A505DFC25181768D15A951A992 + 6E63858F962C50B6B2E9E2650AD8B064C8921D7B80A5438385141A94E392886C + 2BABD6B0F5CAB674D5AD0B653685EDE0205E19AFCEBE385B57371FBCBFF2EE09 + 1EDC8A56B07D8813230607562F95065F29B429138E0FC4881EAEF06168518718 + 1F1C51820CED92F4CCD3A853AB563DA6909024897CCA9E4DFBD1250704FD786A + 63F428D2B6A872716B272FAAD4A9550F233BB6156B5782CFA2C50E60F617AC50 + BB8E034F43F69BDC06E4CCE14DF7981D71C0EF06ABB757D8F0E1610101CA1788 + 05FA5EDD1D3A04C0FF54F932C42B6F008144082188F1C246AB25E892050A36E8 + E048638C80010767D466E1853D91D506160691534B6FBE6DA7542AA3B8D28A71 + C7AD65CA05D614C31C56CE79D5805E0D38C0DD7464DDE2162F54B135622F707D + 47D72CC18CA7D733BBF9150F7AEB350955535611F3DE94F055590C337A7D511E + 3F0E50C72233963D8499666F7880840C055A81C6141B98F6A0836ECE14E79B34 + 15C2011118E6A96724693CB0C9630FD818A26F238AB84D2929E6429561CDC1C8 + 1557CF2104CD05BD94451D5998E6C8A3764A75E7E75E7439A58C5CEA98A7247A + 8139A95E61B0B428E57CB0D2671F92B32CA0082F0E7440051F793C2466667C00 + 01049A628C30069BFF1B30A86CB2CC2ECB6047CE829443B320456B2DB5D14E7B + EDB6D8763B2DB41D4538219E7B96BB671A7189132A88841AFA23896E254A9528 + 56399A0C168FE61759580FF0662B8ED45D8A4B8F522D05E4A7737DC22238721D + C957604B469C9EAA4DB2FA9E6218EFC3589680DAB8404E8A0085C5AEBC6216D1 + 665F7C71260956348142B4232D3BD3B3CCC65CF38227D13C73B725E95C6D4963 + BC6008B9E6165DDB02B91E345439A10C1A62A1501B9C6876405985EFBD8FE28B + 457DD0AD536BA50167AAE95A040B179C3708F365587DFB72A2F6791253AC6A7B + FABC1ADFDDFF0C849033BA7DB2400B442FD04607147C51B2C9115194870C24E8 + 318605DB428EADE4FF902B4B79B3975BCE6DE5C9663EB9E69F770BFAB353BC80 + C16BD3196D6EEA95701154336FB3EB74D4504F5DF02FC1640DE9D65BEBFB9D79 + 51917569A664ABE8E3C06D28B49727D68CDAF65049BA2371AA720B76E22B17E7 + AD3D95C2BCB771E1E55D43000C492C22B8575FF887D91B5F64B1720A2F24EB46 + E4A3636EADE7F487BEB9E8FCEF6F414D7810421A54A73AD64DE23678014F196A + C10DA795C25DC0B19D8A5A110CADED8E775BF343D776F3941B896D6C9B9297E0 + D0013D7E380F324A838CA9A4F797EA552C1FAEAA12DEF0A6B782F48D373CF840 + 06C817B22095C95726A3C81B9030A0158CA1739AAB9C129788C42572EE894E54 + 6213A328C5282271FF8A94732216FF27A1431890801642C54E7891BCAF40CF6F + 0E7C1A046B37357A39006B18C4E032BE42A340D5CD6FC313DBC02488B4917142 + 37C9F04A3394F698F0410C552E7C21A332C6C8AB60097C6A4B430A7298013070 + 873AE85A82E17E859989E8A5882F38E215A138BA2CD6AF94A81CA529F5673FFD + AD92731B00E021C088A1EE4CA62FD83920D20877100F35308DBFA15D042548C1 + 73C4B1035DE9CA1C25D52F6AF445781F04A1F114A5A3C1C10E3F82244F2155B8 + 40B8B53091848161F666182B61B0CD86BB59800444C0031E10A005B1B90465BE + D02BC449643340B008098C45C57EFAB38AFF0CA840FDB9452A22B126A7830D2D + 2D8409AEE5C71894FF3AE0E0D41128603A50986C4C142D2E984C6422538307D1 + 8B1F3CA6235B582A9A9B0AE1713231C86530A3318513C7633C348FB881D37A50 + 1AA795B6B7538635434B9194400A24E0051E70A005705804171C1086F4D93322 + 00E2431688A591825A919403CDAA56B1BA5525025008205BA84F1048AA3F8E45 + 124B25DC7D1678228B3E10A3C3D40E8B8CD9BB8E2A1332E9E8401B5277D2B045 + B378659B9735C302D28218D66D1DB0A33CA677D3703A2586DD2B270D9F43AA1B + 2E400412C86C0ABC30B4B22C200E61A000AFEAC9493EF06140696283050EB0DA + CAB11672AFB5400E2A375BD8BAF6B6B6CD6D6B751BDBDEE276B7B2FDAD6F797B + DB58DAE44E62E509FF1973D5B0980EC58EA7688429DEB80987ED461A6E95065C + 9362BB8529D3A3F909AF1F22A3A50E5C00127D45E91EA74295A4B9EDA732551A + 79C0638CBA2CA9B14EB25823F7EB5348B2230DEB14AA505340000EC00064AE23 + 83682302C4CC00284032609C158ED8D50A5BF8C215AE8921C29ADC49088E6187 + 55876ECA61AB5B4D46577BFB633365E7D6ED4A8D2D73056F78673C5E8474A20D + 96085B1E8997D2E24D575721868C06C7BBAF9962811FD7C1AF22DDB30F724E76 + 3C7C63873A334B65A17E20801552C405C8D08C1FDA937D4394F081663BDCE012 + 97CCAD65AD9A83CB5A34A31972B5056E9BE59C6636D7D9B66F6E6D9EDB1CB410 + CCB2C396E0421961FF9AA5983AC60F0FA014DAC26168F08DA31CBFCCAE8BDF65 + 36607065C6F9F1C332B2B997443322BD3A566F8F73D48ABBC0D76188BE57A444 + 8C682E5D877A4A36514E9BBC53EE69EF7B403D7228048CD9A18A60921F684158 + E1A2AB303DD503610E01FC1E87E128C6B9D9027D76856BCB06A109F08B1D2623 + 65521C62F2F4CD1AF5E1B6B72B9ADD764D3A5EC259188D37ADE9C29A7580B7D2 + 71BC4FFA571E11EF178C21CF5C906C8D0AD638859A0E947D637D0F56D54D86E5 + 8C6CBFF39D0E05D6A2CA1097400E390006720125B40D69304428B2328C4C61CD + 20AF73C8472EF29293FCE4264F39CA57BEDA298CC0CF1C06B489FD849042DBBC + D18F810C0A1B5DE8FF12CEA2DC4739F7BBDCF81C768761C835768C274A3CEF80 + 35BD2C7FDD05A94F4CAA83348028F3685E18766E90301C79E004AF476120BB5F + C4E4EE9187B62395310B71767E80004280436CD240861995C99EA66508129CE0 + 71E2FA9DCE7F2FF39C052FDCDBBA19F0881F6EE97440A1F2C99C8C34EFB6E427 + 7FD8C7689A1F4D03BA76D7F8E2AA0D84DD2ED5205ECD1AD1A7DBC6AFEA5D5191 + F675F5AD617E3814880234D866E3A124D6D5B056B2C1C94E4E85E72DDC05294F + A0221EF1491698870158C03C0F87993C0048EF1719010B6CCBF2EAABFCFAD6CF + 3EF6EB3CAD17E8000F5B707C725D778E7DDDFC483C4FFFF9E56B75296B3EE89C + E72E2B2AC86EA413FFF9A7E0F9443C43DD087AA79E16C75063A0C2257DD11E17 + E00466A0056F200CCB701022E67AB81476D7B348B5568191750C9A005396874C + 02A65954365499555405D6038EA77C7EC0109C743213212C6832026CB066D4B7 + 7D21475C2C1783DA378332785B07506DDF7706E2B75026E88092F71894D76D39 + D73688F673EFF756F157521BC535F6277A42D800FDD20B4AC57F9F867A1F5435 + 5CD136F97748B2D0064E00013F00005A90076F744E7B7175E400764DD2067C00 + 0566308773C8007ED00E74C37B920510CDA386F3355E7E407CC4970229F07680 + 13324C350325F32B62720559305521104AC9027239307295B85A977800997800 + 96A86699988969F6FF896AC68998E889A6B85AA4A889A7A88AA8688A1BE07D78 + D0023FA83AA65006A1A57E6EA31B5D617EB8D8739AC669541006DDB4849B3769 + 3AA26E80687FCF238C97046A96627AFE07146F1406A77675FC300DCE140B4E40 + 0710D08D00A004255043CE7575F5E586F75006500000DCD88DDD480766500278 + 883D65A7185C218085E636572788835888B148346DA060A3C54957E001595026 + C4620553908337A8900CB990D5C783E0876D7B0217B3725888665FC1305E4528 + 0E23D68583D409DDC46216257425050CCF118502B83CBCC17FA0068D7E856F28 + E66D98072561D8065140070010034FF003104007E00862F3B50E02976406E80A + 6F60063C89936600FF00EA98945AF073F87070BED77BBB5856DAA442FA28886E + 9701B21832654001FE515A13B132D2B7019C388A68D98A95988A6779966B9996 + 6E7996AD38977259979CF8966FD9967479976D19979C089187488BE9828BFC12 + 51DDC15C79818BE1D322E84023BA9679EF4792D2588FC93864CF335217B07FCE + C892A8C78540566854A830F050936D50024C09031950074AA0023D69064E307A + 9C1016E0716448660F7E0000DD98800CB09B50A00566C09A3F8000D7208FD973 + 813C750E9C7673B2995859A98F1327405EB910C686387CC009C342021EE7900D + B99DDAE990B1F47D5D59342CA2564698844CE7256FB44C95D77AD6100BE0305F + 49B284247909C818FF85B0B934BCB1999BE908B7606950E636A6429AB290074C + B94330000375B00274F003EEF89A3A37486C882FED992A1D809B74A0051E9032 + BC52024EC000BE498608F0242CA25354C969EB091EE400711540652B9A592D5A + 65C6179848B3090399829D742617F1022FD8973C6A973DFAA33CDA8A403AA444 + 5AA441DA966CA00332D00299692EC0777E7C03697C459FE046103DE775046815 + 8FE436C6A084C4184C22D29F778192A3A7741EC399FAD97F82A33735171647F6 + 6A4E21A06A00002A900176BA4319C00708009C00C000E0516490814C48561C5A + D08D0AA88B60A2061DAA0516EA01FA358F189892F7B886C8940CCD9995C66760 + B7920684B349F5D4FF4952652621A003C642666C09976976AA7B89AA23A7AA3E + BAAAB05A979B4872DE8701E1B927E26658D0D08CF2B6A9C9934D333594F63519 + E8306E82F2A54C3874BF7A75A2777FE44117BC9AA6FA2938B9F25206B1254A22 + A0B040A0005007A869A7078AA031809B10600650101629667B837A015FC08D4A + F00558500B96768279D0A108809B4A100DA0A08753694E296958560748DD73A9 + 985A88E3432E17B0061DF00557F0A9A0FA06A715021360206669A4167BB1189B + B11A6B016C6005212004E7B527507A6824D67F8E700956916989D59E758191C5 + 6A5DC389AC605A2870010E96694689F9688689A69CA954620A659637628B15A7 + DAFA05BFF905779AFFB4DFCAA8DE08051EA081AD27700C00012AE0044B971CBA + E20125C00072C8A07C409C89C13DBB48687FE87A5C42B0CD69B02D000365F18F + 14502696613257700529E30168B202233089AEBAB770998AA9DAB7801BAB7C2B + 72836B971D7B3A6720913E31799362853D2B30C9D10FFD060CB190096DE3A6D7 + 5022323B74BF3010A2C775EA22A5D28A850183B5552794DD1331DA1A0B7EB094 + DE9AB4778A9AA839AEDC68866A107C6C980C48690679E0071F823BC5C6A15080 + 007440074E3076242A1FC6A491956779F8720C7501602B3ABD1240BDD4EBA2D5 + 9BBD2BEA7614722BA055380C26B72B88A36230061A7BBEE89BBE199B031DCB78 + 598621505A98A3CBFF3ADEF058D5D0B299C06859927FF8808D5F1A35B85395A0 + 1BBA3B3BBFA146A5945156EBB04003170FAB1B0B546006745007765A07311003 + B09BB4316006ED88002510536ED354F89A0762E10AD4450179B0B5C38B9B5020 + 8F8D742FD934A9CE1B285C720AD81B712F9AC32C5A659C95013E980817100733 + 726CF7A4324E60202C50B1EABBC44CBCC439E0B1DD8B2121F65C2BE9927DF569 + DAF058ED298EE2F05F9ADBBFC43822B0A00C356695E1130A078C293C7B2BF439 + 10A7FBA62CF4C0B2D000AEFBAD767AC1141CBB785A074849B5E0A84D1EB0A008 + 900709D1B2A69605F5EA04BD09003FA005C84B6BCA8181BE1364023B70366CBD + DA9BC9988CC94465FF08609508333A03BDA27112C1827C2706D3D7C4AABCCA18 + DBBE14A2B83A717E5E73493CEB8CF7661DF8FBB2CB13B3FD0B99F2B90A00E853 + 6DCAA51E034D2855CB285B7E7BC34D11E8C0720C0B743CC1195C07169CC77A9C + 9A4A90944AC000E29007ACA9044EC0076211800D5026C2BBC210A0052EBC535B + 812F99F652F7287CA92B0D3A7CC3D96BCFF51C82EE64606D7B820CF62B032911 + 6F6B11E5BBA3AC7CD008AD97AEFCBEB411640B2475D054CBBD5A1DEE60B929C6 + 175F7C3DFF3B1C234A7B7FE821560875D154CB9E09A8B79764A3F9CCB0D0BA2A + F0BAD40CAE151C03792CBB788A04ABD99A4E205AB8E99A6AF00657F7531EA006 + 2AAC05C4FB030CF0FFC8AFD2CEBC9369664C5F936B1C9A1CD59B2CD5D50B6CB1 + F82F6DD0540E918279B01954F006FA642C9C88030740D6643DD6659DD666ADD6 + 67B9D667CDD66F1DD76D3DD768BDD6685DD770CDD6786DD72F40024705CB9320 + CBFFB50B12AD9FF342419A708F91D4148CDD562DB614FB7A76A7DB861FA28523 + 7DC5D4E17978E1180AB44060A8D2B110CDD65C075AF0D2775ACDD61CBB7540BC + B9C90008A0002A00054ED0D314E1102530D4BE59BC5F4B811A73411F05CFCE55 + C90C940B537DBD545DDC84F87607D61DFE7C6C01DD10C4320695F8D66D29D777 + DD97D4BDCAD9CDA3D69DD6DCDDA34FECBE801D0941E6213F2775858DA6543119 + B382D1D3A0D160ACFF794C31A28C2917677C0A2875D92C39999CD67A33990FA0 + DD0692010B11AC02189CB4167CE0A77DC14A8BA71970AF64C88EDBEC0425A006 + 161E051DEAA15AA004F8DA1464A7D4C8D43B32127C238664D8A01615B0C9297E + DC2CBEA285680859B6006B4005FF6CA36F9005765B203A9A036E9DD73DFEE36C + 4D033E3EE4405EE4447EE4424ED6429E03DEC7015B401BB2DC86B8143C06EC8C + 984073FB1B2AF0BDE59AE74C928B98515AC0F92D36FB6D92C0FD5CD650530FFC + 057238E000E09AB040BC329DC11980C7B06BE77A4C00ACCD8E748000B2ED0480 + AEC8BD49D41C5CAE58402FB7E422AA16E290D280603153F3AC16D850DC2D5EE9 + 12A7433E481D6D00FF069E8A386412206A20618F53DDE7BBDDDE7D0042CE89A9 + 9ED0AA4ED7409A034DA00348004FB251DEB89764E85DE57E551508C3099E90D1 + BDECD86EE5E50468D17FA47F639EDF07CC22C0C791D193D2A4890525C0E13DF9 + 06B0C08D3EE904AB79E0041003488BE0738EE07A1C03EBD8934FC09A7D0E05BB + C9B5838E0048C99365E8A78B04237194356A68795D3ADCD950BD2B9EE2D3DBEF + 00FFEF02CFEFFFAE0799CAB6FBC16577074462122C614602A85CB1463EF1474E + F1165FF1180FE407F00262800743308B9510E5C53EB9D851296AEC7FC70C751B + E2808BDD1E2E6F22C044EC52026E91F168CD98EC63FE16969BB33794ADA4F900 + 4E809B0C5ABC5F70FFED2AB08E0BAAE0099EDAA9C9E0D34CAE7E4C00A9D98E66 + E0E75A40D4EE4EAE3FC093DE88007C70155A83418E82055B6775B75714C741E9 + 6A5FE92B6A05C98D5C0100175F1DBE63724F61360118B1013D9EE418BFD7A88E + E479CDF768CDF76BCDF7849FF17FCFE41DDF028B7B580AC4B22C0B0B549EC663 + 1E3648032976148F5BEECBBEE1E5BCD72291777536B26338BFEB016C1FECF9D9 + 35E9005120F4E66A9A749005B0F0E679908EEDF804A38DDA49EB01329DDA7580 + ED5E0F0777BA025CCF9474A88EDDA80276E00306C0F53DA9046A700E1CF528C8 + C035CCAA5828A20B01EFEFDCDFFD044FF0DD1FFE2B6E8855C00549305199C1F0 + 502511388A113B7AFFF1F08FF8F13FFF184F035F05F29220F293BBFFB2000869 + 0B5C5C01858488898A890B0B178F176D9090691795979699699B9C9C6D6D650E + 0F65A3A365A70EA9587E5414541D65698BB38B865C0B69A01D7E14145FAE1D0F + 0E928F929FC79F0E516610744A4E0CD166745F9F74667E69D1003F103F003175 + 19E331E51904E31975E6E3752A100017B730E31F7AEF10F9FA10472E41412282 + D87181AF991935581E245CF8A094C25D7E3A6029236953A38B18175490B0B123 + C78F1E43821C29D2638A0F1F849C09106041075F7CF27898E9E14A4D3E319184 + 2031E2458E0338800A0D4A74A8D1A2488F2A0D4A63A9D3A4509F1A3DF0620406 + 2149586ADDCA3540FFAFAFBD1AC04AD56698D9B264DB6CBA45AB2D2243706F6D + D2441793DD4E73CB92C292B0A129B2A258B9F2E34096DB59B62A3928E3A7C157 + 2A6285118B840C190525747E9861E0044A342700E8BCF904000083694A2894C0 + DC0D000274EDC2894B473BC33B0019E020A2B7C38B0F032A54FC08EEC34EC07F + FF4EEC79223C1F02857EFD9EDA2B7122C50B19B337AAC0BDBBF7EFE0C38BF72E + 41C2490E2DB2A629B3E48B0799F0697A78E37EA798172E80E2D84F743F0DFEFA + E1F0DF7E011608A080FD11F55F800326682081074228A18300D290C30B5715D2 + D586BF74E88B58A1A422E288227EF2884587D87218215A1D820B2E954C722225 + 27E25549590DF1D5FFD774213AB04A2B54F8110B2183ACE86225A434D6CB2F54 + 84211924C654D6461EDC00E004057920A085675084568D0374D0E14D664A8411 + 06135A0090CF0F4AC490CE3AB2D5E60E042AECB10301BA7101070C3BF0208204 + 76048ADC3F52FC23820827246A80737D45C7A3427C9D529120DA35724B781C71 + 9769479A76B7E9A79876C7C3070408D1C3200EF811937CF2BDD18B0725384182 + 186C18285554B8DEAA6BAEBCDE6A81551C64B52157607D05226065257BD6596A + 0962A49183E042A35D757512C9623936440A2A663D205890853DAB482E6560D1 + 8063BD4016CC3091B42B651B0DA840070241FA9187165B7A165A167E20D01A03 + 5F7053661843CCB0FF8C983F1810CE38049433DB383B88A942A227EC90010C88 + 407C82085E1C2AC21E1C234A71A27A38A76D293C92A2502893BEA81D5BE3C52C + F3CC155891020F7870704612EB5181930740B0CA6A1E32CCCA460EFC2D886083 + 4C27EDF48406FED7B47F4F2348B5D254676DF5D6521375E155C20ECB92871D1E + 0BD8D9668D6822A56C89DBD65C9CD4556D5EA240BAE374227A0BA49086157958 + 23E49A4B8587413E590C65529AF10302E7FA61AF96F9AAA9C4BF11A9CA8D164B + 643EC412512020263C4FD4814E1DA4ABA3CE3B759EE045A277E6C9056F23C74E + 71403E74F3DCB6294F678A249562C496467AC81C3C77C37F573CCD9ADE4C0007 + 30A8F780CFF1B18AFFD31748147D1F1B07EEAA7DAF5029BDFDF738FC8A87101A + 8A5D6C58632DABACB2C8AECDF6216E2312ED8B73CD486DDC7AE97832B7382A19 + 6419F230922170010AC1152B22EC3ADCBBDAF0063A00800FE76A801FD48000C8 + 75291F008002053AB00BC794204C6A58021534370334A9C91B4F70136D085007 + 89C9AE6217DB4D0676B083179E003976704EEE74A72D7659A477BFD34804BA33 + 44EE14B102474C2211C3630724C6CC3C1FC0430B88D0120734E00D79C8A2D070 + F20620A861272FD84083F843C6329AF18C684CA31AD7C84636B2E10521E0802C + C446B60FA58F4478CC23591E61A9F8CD225A989891202DA198BAE9CF14DC0ACC + DE00182DF9FDD111FFBA68C0E07C81BE50B86B8165D10204A00019C834400D4A + A820BE4E680688B4E20B6FF08026CD308325F46206B05C02134EF339703C2C06 + 12DB83EA36363B1AC2A0487CAA21C54026856206C107F9D0C20E55360A1F02AE + 52B7B8C8059047CD6A22D13CA3CAC019B840843684810257E0C34C6442139C50 + 200BD5E3C9180214210A41AD9D0F4A1019D9D9CE79D6139EF8DC0F1B80B5CD61 + 9D8F02665B9FFA060A981AF5D18F8A005CDCEE47B7BDECE82F66618C63FE270F + BFF98D11B9F05107A8D08A7449100BA98012E2A48485D0E481A392FCA4124239 + CA7C286117BD788338F35002663020731C9DC1176009CBCE7D4E054A20C00E5A + 48271B52CC6230B0FF05EC0E55A84209C4398B41C52950C6AEDE5DE477B968C3 + 1287C8552776F5AB4E34E256C34A56B062536749E0C205BEF91E72B2EA0DA9AC + 5E08C4C08236DAF5AE78CD2B5EF789812CA4615875FC82D9D24658B414B644C3 + 20C641111A44854E8B90D772E8DD1693B70E4812A00FC04EDBDAA6A20594E547 + 94FC02642692C04B2E900A0E74154AA900CA95569094309D891AD450821230E0 + 1B8275E5126079059E96304DF9A0433950A7CBD519D59744CA400A8250CCA61E + B31BCA8CEA547BC83B4A4113907AB1A676AB79330E302F0D4948D517C4F91EA1 + 010D9D4EB8CF4FCA38C633C6736A5B43637BD5085F32C277BE38D8671CA9D895 + 7F0674A0020D30B3FF4ED448C612299A70D3444321B5BF10E9C5B2287D401B0E + 7AD1689605C26091A0306A14A328BD8B0210484DBA204341D70237C41CF48307 + 665B5B2738611A08F0004E774B01583281A74CB82002883A31A3C60EA95CE081 + 319DFB54082080B2D36D261FAD7AD54DE8E5015E8D3258A7ECC426527988562E + 6B942B908293E06167017000196670852CBA95264048B30CE64A57A49DB100FC + 81B35ED128E734D679CE7626E31B758004FE6E25B083D5A3A0054D0C41BCEF6F + 8B8DA642EB07D9271F9247222A03861B20E1465AF416919034BA9814910D1B3A + 460A1CE927BE00013350325DAD5DA912601B912FC42A56D0D02438C2E18A1A93 + B9844CB8F10CA000FF8172480C51AB33AE8F692802E73A17991050260F9BC93B + 262B3AA37B018F12A52DB32356B388E521550B321187067C217AAD92693A57F0 + 02ECE1F9DCE84EF77E2EC4E77E6AC5BFE913B0BC019C581311B22D96FE9DBE2D + 0D23BAA085C18874F062200C994A5F9A109B48C52E3AAA2E0957847EA07697A8 + 41AC845F3C6635AEF50C669410915DA8210A2E8E4697E8A08637ACA30E6FA082 + 6F739D6BCF85C3853EB6E1A008F58F1C1A39AA7E092976ACFB32EC622B21520E + FA95854EF4A19B75541C00832CE0E59EF2BE953E40D0094F58805F755BFDEA66 + 3C000BAC2083956805D07734ACD8118BB6B1ABAD59962AF0BED7AE76C72E5847 + B8A3EC3034DD0A4AFF4F78B38350CC032CBBA4D10290E73062B4C491416A337C + C143AA716D34A250828F3B8E83148886C8A1A0382DCCE1254E880103F2C05B5C + 33410910D8430C88BBCB9853CC0BCC4DFDB16D97644B02BEE75C70F2CF15A244 + 2A8BF5F6451F2B58716FED1460003DB1B72238CD4B932B443D042118C118D68B + F5E63B9F4039E0730FDE7DBEFFCEFBFACB6A9F412B9CEFEE3BF2996FBF1BFF06 + 2EC9824FD8A2D20ACC655DD100905A427E104FB0488F815A33F0E1F05FA160BE + 38D3F82F38AE7251C0255000059E63060DD101614005255007BB856333A0382F + 575431274C15932833977A4566647CD0103AC76496066D7603655C1501243882 + 2468072578652488FF442588822988652D287429E87BA5727E65400536016E33 + 71055DA41331701F4001674680037076676F1667449884FB51674C8884459884 + 4DB88450E8844A58854628856CA00321E07560D72383F6855F982C0F877EF353 + 868A76861871233FC717DA8237A9407798A5597EA3778241495430119A7560E0 + 17373212251D605287970587E76A50902F2E56027CD0188E13066A508885A805 + 9EF3030C500773E0380D40633656428AB30EBF767AA6A71CAA178AC8165C5060 + 49D8E16C1701820C810546977BADF88AB9C76538C33C49B000EC814AAC621357 + C083E1B466E47600F4F47CC2786E16C2753D4004F02670D8B78C04955896E03B + DE178DFB262D7AC1FF4C9016510B677E14462E7CF7187E506971A168F4D36F11 + 670C0E300D51F00682483679000D0CC078572041FFD70003882FF81226A41303 + 2540016180532AB7533300002A50077B00739F383217E85436B70F005002AF97 + 1D08762DD9C2102B58822C688217999116B99115D9912F78912FF8825044002D + 7006555006644005A9E474AD7278BE380248F38452389353D8844F2893359993 + 3749853B49933B89934C588CE30304A165473D6276875576649794CE8876DCC7 + 7650E9584FB632A1E060E57259EDA7167D44407B774AE8E30001640B65388EF2 + A740BCA6057C005783687114C0076AE0042590078D238F0C802F1584006AA206 + 5D00069947018DB1FF5B2A074B743090A34727C57590A0686CA9573BF0B00FF0 + A0065615916F081D8DC28AAE7899B098995B064552B4059E150714407CBB0857 + 5EB46662E066C3989AE7A6753A800148C09695842CF4C68CB4A95897268DB899 + 7E2AE38568015AED571816950B7A632CDF0896D198119F267892D0000EE40169 + 491FB0F915CE1941FFE704908800A1C40D25000755500573D00508E88FAD3498 + 04699088794333A7902E4500A0E70D18D400B0A7182AB38AD01192F6799FF899 + 9FFAB99F56807460A016C2D7564303347C804E3C91036EF6933AB9A00ADAA00C + FAA00E1AA14448032C2006242003AE52367704861CDAA1224209D09876226A86 + 57053817F0869116FF69C3F90AC0592490349CBF702C4E39A2E2989C837401A1 + C1005C441FEB08161C855211540215B45266A026E1D0055DE09D73602697D84A + 0D349066803A22537A31877A8A5928C836000440001FC00CFBA004192199F309 + 1D13B99FFA0992661A92689A9F56804DA5D203DC840558A245D273055F000432 + C00053E7930B2A8540C99348E8A75618A865D49383CAA7FC9103FB4402AF692C + F1369B904A9BEA730C04867751C976FD461928BA18A07587C0293FE452870035 + 16F6B616DD978A30E29099F0084E1062CE9996EB887F8FE1498D53624A600698 + 215C7560795BE09D7BD78F99C304A596AB02799E14939035B79EE8C04206D00D + 6B02050755481349FF99F599A6D67AADD8BA82E6913367400417F03C027A66A3 + 797C2130002C1084109AAE12BAAEEADAAE3769212370A144295861B7944879AF + F69AAFC8F28C6977A9B9D908D7A2A2FED3015AE9A2C2B951BE305A10352998FA + 4C9A1462ABFA06DEC000F3311FD0897F16F7A39E9407446A06D30001600007DC + 79924ADA41615002DFE0AC74B202C61A108AF90F3EF00E5ABAA5343B0105E10D + 90197B273AA6F4B910F8B9A61FC99141EB91409BAD50C4015D200F6DE0073968 + 5E57D00B59F0456230024723A87CFAA7826AA85178A85C6B935D3B854B08AF24 + 800744697D917AB6929A162DC336B8E9AF37920CE5C20BC05018CE2217A0A024 + 83010B6EF87051B9FF0093A30F740005DAE0AC00F0AACF89B13E4AAB1CEBB11E + FB0D22FBB823DB0592C64151A00F23E0B1A063AC178843DDA004E7C001CB7A0E + 2BE0ACDDA09BD3DAB30F100177A0BAAC1B92ABFBBA2FB8BA2408BBB3DBBAB65B + BBB04BBBB69BBBACDB9F52841D373853C417342B5634547B000590BC44A8BC0D + CABC50C8BCD01BA1CECBAEC95B84D3BBBC0A4A032F20AF81E6A1DEEBBDA5CA73 + 6848A3258A9C37729509DB01C669B0172069A7D470295355E53B3F5EEA982A4B + 275A30133BFA053D0A9B1C555345FAB14AC09D905B05493A07959807CCA00223 + 800778800123405CBA647A7B108A4E250276D00D063001344BB3E74000270401 + F279BAD4EAB3B16BFF9FABEB82FA29BBF6A9C2B5FBC227ECBA1180821280121C + B0053CF33C5844A7F28113E8643D2C9003D4EBAE443CC4463C8517220632B041 + CA88B64E9CB6CCF243FDDAB6C719095D395A74EBA28EE000DD0850DF18707B64 + 116CCB05DCA00F21ACB20610263A1A4E870B9D894B052F0600459A196A500504 + 0CB93050057EC000B7F1C01880010E1C028A9330131C739B1B108B321C1BBCA5 + E790011C300E2BA00F3B4BC2A83BC3AC0BBB28C8BB98CCBA997CC996CCBB9DAC + C99FECC99D1CCA35D35D2D9051EDD1B4B908577245023E91B5D85B93D75BBD0C + 5ACBCFFB93B8ACCB124AA14A9C055DA0AF4C89AF4A59CC847576DBD7B0E2188D + E7BB0AC1D06C4482FF24082B5AAF301128E36093718A5CF039DE200344E004DC + 0C0106600303000F4EA0BFCF79B1A7D60B6952A4EFA00473D09D772CB255D000 + 0C202674F0C7FAACCF78F0B72AF004856C43C536737650102A30B38C8C0E1C30 + 018B920FD852C2106DC230CCC2148DC22558D1136DA6BACBC22948D1BEE75D60 + 40110FD0007C60135B449A5237027555C42C7DC42EFDA0BE8C0759C0324F5CD3 + 92BA3E943AC663E98169B8B32CB31644B2C55DAC6188045169C14799B1264040 + 0470C0D40CA02666300152FD0E0781135C747F75E40B1E5B1AF0C0077260C776 + 0CB973E03999B1CF660DC8355003B9E4633387C1EFF0033F500403B002A19B0E + 133000E5DC0D3C1BFFD1D4EAC977F0D77E0DD8A29CBB822DD87EADBA86FDBA89 + 1DD8841D013713454AC7050F004EC41B3D7C0004970D046094A0D5DBD99EFDD9 + A01DDAA23DDAA45DDAA18D032C60150DF0BDACDDDAC84C4821CAD3D09855B629 + 3F278A055E1924D6C143F1CB2EFAF0031E708C3DB0273D00037520D553DD0C25 + 504E6979B883480194172674A206A9D09DF26CC71E8000DE5003AD79D618D09A + 3AF0C024D00D09F30402ED544120002EB026074DD7092DBA78DDD01080BAF44D + 7BBBEBC9198DBB87BDD1F87DDFFACDBBFFADBA34EC65DB76B75F506648706633 + 91A12510033D91033460CB2F2DE1BB8CBD15CECBEA1ABD056004153A3E376DD3 + 208ED38536C5CB1CFF998004A28E940BE6429C6D8873DBB2B0FA1002C33DE37B + B2273080041F60B3F0B0DCCEF9AA32A596BF004A496D6A8071DD555053745203 + 7EECDD671D0265FCCF2F34280270032ED00D076D03A1FBC81CB002788DD7FAC0 + D7F56D07AF2BE688ADC9644ED88A9DE602AEE67770E66EAEC9827DE6852DBB1B + 312A4290CA174006EEA1060A1E4EE385044E30573069E1A65DE8867EE888EED9 + 34300662E0E1C24CCCC3FCE8927ED4A728DB4CC60914B600A2E0189C661DD2C5 + 4CD2B118FA30002951DCA60E03A80E032D4000EF400771D9C3CDAD968DA8053F + 400751B0047110072362DDA701012E30B64CBECFDDFDC73AA00327F4CF013DD0 + 37D007549E0FE3BCFF3CA14B005CDEE5F25DDFF43DD8FB9DEDD8BEEDDADEED83 + DDA6D9D4023DE00073400158C49235114EF4E101C6EB02421CBDB34CE1D6EBD9 + F10EEFF25EEFF38EEFF8DED9D84B03DADBE87FB0054E2C9B1FFEE1942EC6961E + A6CF54BEB78D2E83911052F5E28E320AFAB00252FD011753DCA99EEA1CF00D3C + AEBF3EBE620CE0880E84EBBA5E2272F000A0010F21B0E4C1EEDD7850ECDC40C8 + B323050270F352D0ACCFDEC80C33EDD4FEE5D60ED17F3DF4445FF4465FE6469F + F44ABFF44CDFF4442F8BE37306ED4BD27C0E6E79A05AE94402419CE85CDFF55E + FFD9319D051EDAC4AECDDA62B87D09DF3B79E1BE76E807BBCDDBD2E117A38EDC + 1380F1A97E312D40FF0F30900566066E7CC000A1840003282F4B3004B91E0721 + 420550F00E06D0F24C3EEC90AFCFDD8D07A141272AE003017103382F05BFC1C1 + EF2DED5DFEF3F910F43D3BF4655EE6623EE7A83FF4A99FE66F6EF4AD8FF4AC3F + FB73DEFAB11F0112C003357892A1497CF29107800ECB3129DAFA2EEFFC7EEFC8 + 6FEFCA3FEFC70FEFDA3BB67FC08C7257F0213EA92D93F6DA513F9C5A870ABB4C + BAA332154FF7525D0779AFEAE69FF72DD00296ED9C50C0525A70CF003003871F + 075B009A98516A8EFFF2FABFCF2100082C3F103F3E025252411512031304198F + 19902B0395960306109A0F589C9E9DA09F9E77A4A5A6A7A8A9AAABACADAEA612 + 291F045D170B650DFF5779BB791EBE79577C7C6F482124232C3405CBCCCDCECF + D00509D1D4D5D6D7CC342F62485D6D0EE0DFE10EE2650F0F6565E3DFE2E4E0EE + E3F1F0F3EDEDEFE46D171769690BFEFF00030AF4C74F1FB8077E2850F8D2A0C3 + 3907E9224A34674E1384463626649CC051460B1819607CCCD0A224855D1E7A79 + 80A2048116285000D09931E4C190380F3C28A1030100093C18820A1D1A548750 + A3458F0AC5536350A14441820C98C5E1D1A30F942E59CAA4299457515E4F4528 + 359654D9556755A57DC56A6DAB085624F0C0D3629F033F6F52FAF275C583B037 + 403CC8303682068E02879F25460C6D71B3C59099455E36993165C998ABE1D046 + 0289902DEED8E1FBFF56068BE987A3DB885E1DBA35EBD7AE53E7E337B0B6C07E + B8D3E87BD04021950E58D2419C28119DC5151B392A9F30ABA4C8E71F5B64E8D5 + 8BA54B280C00006032E4E603260006D5900194A8F9F3E883720891A99088208C + EA58959401ABD64B5C2180DDFFB5958053FFB1A54A80000A68CA7F0422586005 + 3C7CC081105D3880C50C7CFCB2974A6F0026830C35BC908332CC4C538D88CE90 + 88CD89282E43A289056823860C54DC730F699CF8110670E8A823E38E3CF6E8E3 + 8FAAD1869B6D44FEC3C5026D744005157E74922371C4598491465426E70807D2 + 6549124904A4C4404B2F6547077743CC905D4F4E70C0011EE50D8514066FC6A9 + D45278A450C40F85FF443515017C4252DF7D5AE5F7D5A06019C8168103A682A8 + 808BA255410A3AE02104175C944141857AEDC5C7156F0823D8316CE490E2A8A4 + 966ACD66DB2001C66BAA99D341077EBC7ADA0310AD131B6CB8DE4A0F3EFA0859 + 64915C5C20E143E9A0F32494651CC75172562A4740495A6AC90103085C979D0A + 6446C1930A329CD1829A6C62D0667AE48A8B81151F1EF1830152C9E7A7241F00 + 1AA845FCD5DB49290AE67B87BE09E2EBAF82A4E81BF0BE040F6C70C104039C30 + C2F94690021E1C9C014E427D51B79707C150F0A9182CB0E198A920877C220E2C + 8821693DF070F26AACAFE228DCAEF2A01CF33B32EFCACE6C450E39A440FAE443 + A3B1C8A623659544FF2FBBDC23DF66C9017D75586BC60F512C3104143C0D80C7 + 10420801EEB849750DE79C41E1A1C31846D050840A10F830009F55F96983BCF3 + 76652F7FFD1E2C30C3FEDA9D37DE07F25DA0C2752F7C470AB23CABCF1A4B58B8 + 575FC3BC91C760C7B080C3C78A6566D9E5D754168DE69657866A6743ACA69A03 + 0FAC0CAB1FA837199C8EB9B6AEABEBE1E4B3CFCE01E9BC80ED0B1C79641AA4BD + 532C94C731AB5CB3CAD581E5965A6650157666D01145770CD0A1C2083A7C9081 + 102D68CD66B8E59A87070156B051360D39A8A0C2DAF349624356705792DFDC84 + EE2B00BF043731FFC2F3D38FE0FDFA27CC3FFFF80BE0FEF8F53F04C1E5037800 + 03391E4085BC58ECFF626FF802108A11B92224661A180C913436A8A20DAE4883 + 190C21073D48C20F76B083193CE10639E399191D040B1D0843AC6CC4321CE5C8 + 563FCAA10E65A41AD5F4AA1F00B19D10FD71A4DBF1AE87103987122532B48C38 + 91684F5C4E08D4A4BC2A2E4D4D75300304A23684E8FD60042310C3141F94B570 + 95C728724A0A523E200651D1E08D343000FADAF688B7B50F3F1621941E3901B8 + 7F09106FFDBB5BFF0616C8BD05727E0EC3800CB0D4065C38F06229E1C3172890 + 05C184400C23C801E544C6C94E2E838542B859234B07AB52CEB094C0595DEC5C + C7CAD7DD4A76B421C8ED6639C45AEAA691143956B234B102A3F9924ACB09E62C + AC484C0EC4A00471FF1882B6BE280631E88004E2CA9AD6D60414AE1125526C7A + 011CE1C802F4BD2B03ECBBA3FBE8B54742019080F94BE71FF375CE75B67380F2 + D3DF39DF994EB81885917FA040A72009492038EE922F2802084B48D00F8AD084 + 051D21420DAA501276B00823E8CCAA520643539A1275B03A8D3A5847B38ECEEC + A3309BC73D7EE82B59D6929601B940398693A32642F1A5C4630E151FB1349A72 + 406A6A000004C2884930EA608A43F81635DDA4146CEA409BE3334C37FB445370 + 8A336E102827DDD6E9BF42A293AAF0646756055840770AC00A8FC20096B6D086 + 2D34800FBCE0E71B16A20619800A449E54615C47788D04908F7A1C180DE94C77 + CABEB62C952FEBE1FFE85A49D857FA7076B543E94909A21B958E6E89C11B1E47 + 9023D9605A9600572C660690909D1F984107CD6C661875A0A6AC51937B6E6293 + 0E3EB44D1A0C60056D5B9A245610CEA7BE4FAA5F49A7000CA1DBDEE68FB7BE0D + AE70874BDCE21AF70E119040A438D0852D38F2811004021F9020831888C10520 + 3A6842B5CBDDED7AB7BBE09586117240BD2CFCE11D2A9321ACD44BC3F59ED249 + 3B8CAF7C77349B93DA57B1B71396398CA389293DD100728429308559153AD291 + 0010285968C3C8D3E56ECD5C5F438A9D9401C702B060056CB30A019E0A2841C1 + 0F2CF98BA73A434CE2AE9678802336716FE3C9E2138BF8C4294690156421A932 + 6C414979519C2F84FF41C962708C0D3430423416AAC167107944283AB2347040 + 5E1D202174AEB2A85F67983A967522B08375656159094B7EDC77884154E97094 + 35E0B701D800BD2CB3658FD6D4F93C4206A18D3318A9B7DC69A2964D5668ED1B + 7DB0023F4562C31CBECF6D3F1C0AE31ABAB83738B4A2839BE84557E0517421C2 + 05CA4005E82E4E92405003615820E4F07AFABBA0FEB4A7C71B51E692AEA25396 + B24553890E1C86B466B0F6A8CD7AB80FFC7E99965EFEC6035CFADF33CBB1974F + 8CE9721C649502F389007860302617DC4C36D9797B18E0410E8A90546D60783E + 55097487F348E84F2CFADBE00EB7B8757B87B908010CCE4D08A654B2B84E0161 + 3035C8245C1BAA42FF25DBBBC8F4CEB7BD994C3D214439D5003F1DCB5063AB2D + 6B59CB5DB6B5C271C73B0744D69798F0B51C6D20EC353BC2CD07AE439C996D32 + 2C4D53087840979E0740023FC976C3B5D5F6A071EB090124DA7E7D1080FD5EEE + 7299D73CD134A779CCE767BF99DFDCE631C739D06DDEE89AFBFCE8461740CC61 + FE73A4EB5CE6C8859467F6518619E8022517130610F2E08410C41BBBA20EB5D8 + C34E761C4034044248EF0CD9CBF6B553D9CAAB0BAC48E74BF7D891F4D6B8CB6F + 1B784D250003E0CC7FFFB5802D3E8B631B1ED9CBE6694F9D89F62D70E0A84610 + 321C8BF0041BD0517975D0B6BCF2C3803CB01C14E30EBDE847EF5B52C845525B + E8028E75EC170FB8FF7B4324E098A8F02D42147AB7DE634FA8ED6BBF8CF18A51 + 08370AB8F05129AB568BF2E0066F5DC2F1AED8349099591197F89907B0918A07 + F3F0D8DF78E2C5C801316C40CFAEB581C9259179CD6F5B13D5D242E7FDF0E1FC + 093DE7EE8FBFD37F2EF4F9C1BFFEF4277AFCF15FF4F7373DE9F7477F8F824010 + 820B1450316AF505C4C059B2D769B947760F188118446A21F01BAA5643C3973A + C5271C1C0552B1E681B2763377B7700BC77719217D28487D2FB51C4E44711F50 + 78D88778CAC65323805D65B3196F54048DE067CA132FE6777E10502D2EF1124E + 90070D602F8C7668FD177FC35574E9E484A1B784F6E75B52383F566005E2D202 + 5DC01BFAC44F5947FF0CC6F002E2437B0E4550BB37500C456429D4506BB8229B + F1227F906AC0C157172870B2E22458967CC8E71AB4B67C24683B84000169164C + D1B715D2570914575983178386B771B1E731233701C4940113F05A3F28681621 + 845A10260CE00425C007EC975B41A774F9378AFE778AF9878AAA588AACB88AAE + 988AF4770756D0200F02111DF00579C00499A22912A4060C002A28940018248C + D2408CC2388CC8588CC9788CCAD88CCCF88CC6188DCB688C05E0022410020DE0 + 7677886AEED58DEDD55EB2227775378E3CE4877837342C38017E274786187806 + 1078354002304571F4488F2FC88804C04671F6212D92833B886D76748998887E + E9F712D8D18925A0FF067CD0109FF08A5338853E3785A8F890B0E87F12597317 + 097F19599118599160651404F0190E708B39A6297E310CD3351835681910D892 + 12387638608D321087A6741AA6318775D85755E6322EA4873E496B88756B6446 + 88D3276887580392156C2F05838C185AC90047393015E3478902B97999288430 + C1009DE88979B05638D2091CF98A6219966439966659963F37387391055DD005 + F9E43858C78B11A4922C500434005ED25842D4B88C1E949721B497CEE8971E64 + 042CD0194C824A36691A154587538651567643AD018292F96A1D7558BE625FE8 + 184CBEB6792888662D588FA0598F4C997D620064FE683D6D967255394E043984 + 59C90051500279C0FF07BFD19068799616C9911B7996BB799B1C298B0F13315B + 00065FA00BFC140CC3F06E4E700C9A74862EF99C2F1942E415024850934EF209 + 8B999317A85105B7873E191A3E74990A178883B81C85D83E29086C02A694A379 + 6C9030066F1495D6235BB36589AB095505F99A4EE0046AD0955460930F7003EF + 27A0048A7302EA72075AA0048AA00A5AA02ED70406AAA00C3AA10DBAA0114AA1 + 0CDAA0196AA115DA0702EA3004F8070FB0045F9012EC967514F06EC7E0020215 + 98D3F8A22E1AA3D008A3332AA3D389043469434AC4098AF957DFD8767688873A + 220FE4587796E965B69699CBB19977B48E4E8A1CA119A589D89EF93800E42395 + 6EA69AF7890957E9FF9A075902B2F906B5090AEF07A1F467A6B8E99B69BAA618 + 7AA1AA68A65F358BA877015870127189317E91056FD05684E102D0F9A7D14950 + 84F922E6A53A3B0A1630C48D197887A8717CDF49587D289E433294E65994B675 + 88EAA9949A7A8F9855A5563A0075404C04A0A55B9A1F9AA89FFCD9950D00A015 + DAAAAEFAAAB01AABB23AABB44AABC8553D1CF0075DA06E1792759E520C215083 + 9D768C334AACCA48ACC68AACCABAACC898ACD2C8AC0930A8329005C5A744D779 + 0EA0A0A8DA794A2E33A49439991F386B23881B4AAA1C4CCA619D6906521A9AC0 + C42701394C4D85045B8A9E5DBA89AF09A679C0100E41A66D4A7F097A7309FAAF + 656AA1A918B03700FFA106CBA0087BB01C7A8A02BBA100EBA601AB9678C096A5 + A131AC270C5FF00559006F998403801AB2813AA8784001B3E209878A9D3EBAAD + 1805581C85448FEA4AAB243B3F344BE4B966E749AA1D76889A5A342C689F7D46 + 9FA36A9FF38A9F5EAA95FBD99F0C210AB52AAB1EDAA04FDBB4AD1AB5512BB550 + 6BB57D3038159B0E7881295E5821D4E575016504D05AB6667BB6689BB6C74898 + 240023D75A4E3D0AA43FBA7673780E436A0F456AA4CB57AE1C71AE9AE7A406A0 + 021317A50336595AD1543E58B4F28236AD69AF5F5A021EC0105E61B5945BB996 + 7BB9B33A6304480E1D708077BA6340A09CCC49B632EA97A68BACA54BA3A7EB8C + 0500512490056987FFADFBB1A3D9BAB28BDAAD3DE99DBACB2A2445A9CA719E97 + D89935A0946B169095603D7FA2B88B6B114178B408A906911B8A9E80B90A5AB5 + 04EAA11A50BD3710B5D97BB50DDABD3700BEE08BB9E2EBAA4F1B0115F0534220 + 2C6180B15F2B0C8FB3A220ABB6F45BBFF64BAC46E0BA386AADB3CBBF37A9ADC3 + C76A90291AE01A82061C3340C9B7EA68A902E96BEE487D51144CB5D56789ABBC + 5AC11316D112F9891D9E08BD5FD0240D49BDAF6ABD054AC2226CB9086BC2AF1A + 01E6766E7EB00456F7B56BA5A235900CD12AB2CF49BA2DE97B6827BB9FC7A38C + A99D2D631A79B8BB462C3A1770B39695B396C03E3A8B1F9D599E124CB4BD5409 + 4FBC9A8390C19A68FF90482B9B1E4001D2DB09E13BC6D95BC6647CC6669CC6E1 + DB076ADCC66BECC670FCC6683CC7715CC76C2CC7753CC683130292B285B9B08B + 2A81927980043150036077BF889CC865EB7B3200A07B94B237D932DA38B755A6 + 51DE9AB7E3A81A0AECB7E6C78ED1F78E8067003175C5163C0059AC094AA0C11B + FCBCD13BB9732CA0E50BCBDBFBCA744CCB6A2CCBB26CC6B28CBD045ABEBC8CCB + 639CCB63CCCBBA1CCC73CCCB144B015B984FBB08496BE5010CB0022F50977AD9 + AC356AB62EEAAC894CB634C0024EF6072C47BB3C1AC98B5A4342BA0E5916B3AD + E3BB1C01BCF32A7136F082C55BCA7774CA10A0CAABCC0060AA9060CCB465AC01 + 791CD0771CD0E10BFFD0B54CD06D3CD007BDD01AA0D0696CD06ADC049A6BB158 + B0A796160CBDB869C3AAC81CADC8DDDC19DDA647D959CE432C8EDF7AD2E1FA0D + 9BCCC08AAB04F9988F6B46CA459B1FAD29841BBC9F09C90714F0959CA0014D80 + D00CCDD03F1DD4693CD4706CD4748CD46DACD4449DD4121D9C5AF8070AC87A57 + C02979016F7509B27D79C3C248B6D2E8D55CADBA629DBACE485E784005219DB2 + 403CD239B993E70C9EEAFC3AEC5C8945E9C44D7CD756FC54D706D3964509764D + CF03C0BC3F60D336EDB85A199BB3B9D3FECCC600DDD80DFDCF900DD0033DD010 + CDD88EFDD86F7CD998DDD899BDD9951DD99EADD9974DD997DDD9967DDA0D8D06 + 002D8BE616210DF0FF064CF0B957B0B16FE0B13900D61D9DDBF5EB02E3B1AA3F + 2CCEB50B43722BB78CEAAD788BC93CE2524BCAD27FBB155A8161B3F001310DD8 + 50857EAA8CCF86DDC15EE915A16DD96FCCC6935DC6E1FDDD8D0DDEE27DDE050D + D9784CDAE6BDDEE7EDDD8FDDDEF1BDD9E6FDD9F20DD14D506E74D1065DD085C7 + 7931F1FBB1BA3DE06AEBBAB99AD6A140BB3DBAADAAE610B4F2B247AC6573EDCE + 8A7B6DF26C59C64BDDCC4B07844DD886ADCFB2499BFBEA09A25DE2E56DE228EE + D8969DE22C3EDA27DEE22DBEE2A22DE39ADD0411704F6090060EB0045777A71A + CB752B7A97043EE4D09ABF2350813F9CE087AA986C0D703B89BBB151C0209899 + C971663540CFD0CDFFD7534CDD5C6A111CDEE1856DAF5B19A6FFC9DDE98DDA92 + 7DE2E6BDE6F38DE66DFEE26FCEE6721EE76F9EE6765EE78F7DE7A85DDF6FDE04 + 4DA05C1CB00549B0E36FD017FC24498E33182BC0022EA022678BDB6B1BE9CA0A + E9936EB6607DE92E0087490E3F0B4ED273D809331BD7ECA0C44419027C425B78 + 4DC581E6D7C726DD184EB4164CD32A00E61ECEC59E18A60C190A1AA0DA000D02 + 8DEDEBC0FEEBC2DEEBC3AE01BE0ED0BC6EEC8D9DECC7AEECC48EECC5DEECD21E + EDD4FEECCEBEEBC5CEECD92EECBC6E054E46056D99103976A29BC2075B670C06 + 406D097004C7C8EE65EBEED00AEFC40AEFF2DEEE6A7B046C2B034B30E29B7EAD + 9F20C9C3ED76A873FF235776C9C8FD0E265889F718DD32CD6159EEEA5B4ECF34 + CDE1D72D84D89D9549AB0662EAC8D63EED1D5FEDD7EEF1210FF2225FF2247FF2 + 1F9FF223AFF237306327433A0798B1C88904CBC9E8447EF3CAEA02479E058E8C + E04BBED641DC9870472CA24E0E73BDF0AD3EB45B6AE110FFB312CFBC0040EB1D + FEE1601AB9AB2A0ACA1EEC5A9FF55CBFF55EDFF560FFF5621FF6643FF6665FF6 + 687FF620D0F215DB05E9D000258A1227CAB11E80EE2E1079388FF34690E9D3EA + F39F07C00C0EE5297DC0EE40E59215DD2F3D0B13D0F070F3F0D35DCA8CAB0951 + 2FF51E0E05EAB795FDA9D85E01027D00EC7DA0DA9CEFF9A26FEC9D4FFAA31FFA + A69FFAA8BFFA595FFFFAABEFFAAE8FEDAF7FFA9FAFFAB04FFBB8AFECA0CFF5A0 + 5FFA1AA0B974A10F7E808BC7992113E40431800CEACEAC972EE9614DE9CFEFFC + CC2FFDD1AABF22DAEFFDABE0B6DBD670F732DDB96581680616A71C9CFAD2F988 + EA0E7FD77BDDF4CAC1F88116F9106006943FF50689D30AC9EF240E026800ECFB + 0F081A206820822085878984828B898C888D8D89938E83948F869088878F9399 + 87919A999D96A4928AA81A1A77563C78606D5D0D5F571E79B61EB91E57596F25 + 0C032F45464709C5C7C6C9C8CBCACDCCCFCED1D045233A59580FD8DAD9DCDBDE + DDDC0FE2DD58581DE77E617E1DE9EBEDEC7EEBE7D8E2650E0E6DF8F7FBFCFDFD + 100021A81830C146FFC183060D7E20B0B021810903224A9C48B1E20A860C2768 + DC386145C58F2043AA0808010002250852A25499F2644B2D5AA03060E0C4499E + 0EE0B42112C473A74F417D2A0115FAB368504E4447F96CD413694FA6457B362D + EA34AAD547372AE8902104CC960E146ADDD2958B02852F324290A8E1C24882B7 + 70E3BE2D26B7AEDDBB74EFEA856B2487981042FEE41CFCAD30E16CE6CEB15BEC + 8EB1633FE51ED8D397AF32E5CB96DBFC20297005C7CF1AEB10C038FA03C49021 + 2F32340DDA06EAD72047065CD9B2B6EDDA30A1C8B489D330A5DFC0830B1F4EBC + B8F1E3C8931FD7D04407060E2D6451E0C387ACAE2BD4D5C82031A22DB4BCDFA5 + C10D3F77BC796809FF8CB020C1D5B0FBC3DBC68D2BD72131BAC78CE3C5AB2FCE + C1E4CCFBE4738F80FA38A0051D9CA9E099411A317890430EB906DB441735B491 + 831E4D38A1019B0564C66D20DA969B4C0CA8F11E16961012948AA81C729425BF + 11024A8A89BCB8228C34BE38E38B32D2D8238F3506E9A2253A06C9E26F361A09 + C28D3736718773D0A5D1861F5F78A0062EBABCA12510DB89C1820B72B9559798 + E9D945E6997CA5F9169A6BAA59660E238490057C74BE279F37F6E1D7D89EF360 + 51C67F6D0028E8654A40D0A1A10038089A46A461F481841F65388047AA65C491 + 69906A88DAA13FD016E2A7BAC964229D209850EAA9A6A68AEAA98798DA6A22AE + AE1AABAAB4CACAAAFFADAFD63A2BACB6EA7AABAFBB02DBEBAA6E3067450A7808 + 7141191D5499C7B3BA00C107106F58A9D697058817DEB6DA764B9E0B715210D9 + 89751E268E3679BEA3AE3AECB0BB0E3693F923EFBC66700681010B22A42F840C + D521296A156694D046FF6A5A118701FDC0D2C22E31BCD28825908B62A9329A50 + 311AA9563CC9C5AD724CC9AC1A77FC9BC5AFB60863AC93A0CCABC81467CC32C9 + 1497DC72CC34EF0A82153AE0C141170E74719675B95C71C5176F2011420C23B0 + 304C794C27D33478E63D1DB5D354435D9E7A62E0D1C0B8E54A1C8E7C88D1A718 + 9F64EF47CF9F0362A636800070F683018A2EEAA8A399465A5A1D0D6A84A9C120 + 210C101D9F06FE12FF4CA3926B42AA87CB9A38B08BA3DAB8B08747BEF8E3C346 + AE38E2985F5EEAE4BA72BE39E6927FAEF9E168DCD1C4736DA4510615573C3B56 + D07C546B34034993C9EDEDDEE63E0D0B62202198D7C0D7694E6264EBD9677F01 + 269FF6F2FA7CD1366706907050DE097DC0AFF505538851DE1B7D903DDF069004 + B8E082130EBCC519A73F33FAEB63DCBEFAECC7EFBEFCF0CF6F7FFDF8BFAF3FFD + FB63EC7FFEF43341043EB033FFF8212C40BB8E07D252031618215BC610D31124 + 383566CC8582177C9A0437A84123C44908C10B2138EE8418C5186F4FFBE14FBC + 06C5427C38CF500953C2A2F2E690D230A460941A0D431465BDBA81EF50E3235F + E0B450B87249CE04FF5338A21297C8C4264A2E894E84A213232745264AF18A4B + ACE2149FB8C52E9AA00911D0C10784E0806551C075409B16107E513BDDB91177 + 704C860B488084AED9D13060238709D7E50E77A530327FFA4F81E6D58F122088 + 243F18C0C0165910EBCDCD7A16D9DEF4F4F63D0D852F202669982669C3C996AC + 246277B49C283917BA5166CE942DC318E7FE273A54BAD273AF3C252C6729CB23 + B61296F36B427392E5801E600181B7789D07F840B41284A0814B8B4679E2B8CC + 6E49AD9947A0869CF823C26A12867827748C62B091B616B2B004CF0B081D0842 + BD7D3DF28612518DF5BA37811EF24D22970448268518B83788D08B48C4E716B5 + 18457CF2339FFA0CFF6813FF69452A9A00056E68420A42C0813F6CE19762C152 + 2EBEF00520A8E198C220C61B371AC7EF804B4E5CB366F04828B6FB14CF1DFA51 + 61BC0649A096264F0B8702880A6AC0C881B5F37AA7198024D9E9BD770E4036F2 + A4A7E0EC79C76C0854A0FF24E85197CAD4A6EAB30F2FC01974B6D080E9243068 + 670C81184690CC093E43A3DF012B589521D66D8DB518EA2141438B2AD2AF9D2B + 6CD83C293CE41119C900CA9B9839100C658A80493AC8068E5C880E1F02D8D2B4 + F3B07578D43BE35912A1D6D39A078D2C0A242BD9294CF6B294C5AC660F6A5914 + 5CD6B2990DED662FEB59D19A76B4A74D2D6A57AB5AD14E610A68D0805485B005 + 07746006AD93681EFF88F90563D680ABE339C231846B0CE20A77B8C82D6E728F + ABDCE632F7B9C43542D6FED0D6EAE624AEEECA6E1FE5511FB40D9290F24280BD + 1454D3E905F69C9F314D4F0D0654087C68939E8CAFC310A005A256F3709BC52F + 6593C85AFDF2B7B598F56F64FF8B59028756BF018E2C82153CE0D0FE57BF1066 + F064239CDF039B40B639E3406DC940816AA5B11779D80E5729788CB346B0A3DA + 32F157590052EB5A338FF489EB09F5F3AE7A0812AF9931434CEF95AF9A3AD286 + 0D51EF4DDDA9A9F6BED7B1B7D10264D8CA0DC99656B34F8E32693DFB592A1F54 + CA95B5B2662DCBE5295F79CA9DA53296572B66274F59CC613EAD67413BDA27BB + 76B26888400A3E80FF872E3C940A55C2453079CB25EE0C63B9C60D34A0077DDC + 413B57D02EA8819C98EC62B0E1C9A4D96C8C6224C30F9732CFA5F5829E0DCACB + A0F32E84A7D82B32498E8C64DC2C59A455E66CAAB7BC6A36B339CB997575AB67 + ADEA5AA380CD4F7E35AD6FED655EDB5AD6BFDE35B07D7DEBD259E13944581615 + F8104CB250A75ADB61CB7854AC626954DBAC5F2D02EF90508E46B7F54EE98AB4 + 63FCB4B6725BC63F6F08A7876CEAD7C492C63489B55E627D181B9278AAD42951 + B275C32CE67E5399DFFE0EF89A030E70811BFCE0084773C217CEF082335CCC1B + 40C3B1EB7C8136CC0208BADD8596D4B0963F2BB7D01F2FB4C8053DF2911F1AD0 + D26C406F18CDF2F8FF38BADB7BD46EBBEA73B6CB80775E7F7A8007D46D2803E8 + 8B9113709490ADB7DED7C474259D9CEF7CA1B0B5966703CAFDFE729A1F9ED931 + 5B3DEA0897BA96C76CE687F7FAE05D3FF3C39B80333C542100178028B4AE43CC + 0532A081605286714F2C77E496F5C48226C6DCBDBAF7B4FACEDB4E7F2BBAEA03 + 694973131F814A3C8E6D9EF36C18D26D8AFCB9793F8037A2535EB146B737BE6D + 0305A76FC3EBA00FBDE8474FFAD29B5ECC68D8E516D290062C2C1B5AAFD3521E + 9000851A18A02D212779C9410E5D91E71EB92307970CAE0178EB82BBA48BA139 + A5CB7881345CA0E2E766A9F2F491F36D38E19009F379790FAB5EA213A0921239 + FAE66BD3796FF3DAFFDF6176F8D4738DF52E7779E00A57FFBFB77E7E5ECB3AFD + C4863FD607EE7E30CF1FD7FD867FE8377F9E955039D302AC27074B501DC2F46C + 5FE00424C01D4A0356C275776155625F95817B17411E4447BFE3792008632564 + 1FE5600F81F27CAC077D81626E6AE31F652078D9C0003BA620DCA33788E57D98 + 07129C327EE407829FB70128008440E85942D86F453884548684441884067784 + 4C88844E18854CB8844EE86F55988453988554888510F78459288545B8845D28 + 85CD21032D70010BE00054502DC2940B7CC00021000524600606A077BB778778 + 98877A68042EF01720E48380E81E89416ECF5788CDF77C2B7873F2527D83A157 + 24311093046A8E44FF6F03C05810205FF0A5742EE10481980D57288646A8855C + E8854A188AA56885A4E88563288AABB88AA7388AA81886A1B885AF088AB46880 + 3200066980767ED03A6DE80135E1040C400203E04075A787C8988C25A76D1E58 + 7C80485291514669B000AC97822AB878E7D678EEA105E3253D4387833B041288 + C4832D11059D880DA90886E9B88EEAD88EECF88EEE188FF0388FF2588FECF845 + 0B2504BBE8000DC086D6118CC2488C13A88C045990C7F551C4778E21381FE180 + 0FD5788885B88296267D69C388EF916924812F3668798EF43DE2438E29C189CE + 880557A88EB48885B25892AA988AA0088528F9852FA992EED89231F9849DE592 + 347992ED38050A85FF01CA920655D02CB5401600F90B6BD11D142872766887CA + B594C7E59415F8942567047EF78123D98994868287E87CD7C88200E28230E81E + 85023D21008E8255378C354FE347440A890D1BF09670199772399770C9067479 + 977849977639977BB9017D79977F59977939986FD9978629987CA9978A999885 + 2997096505807106BCF805CCA60B340190C35803C260909C898C4650047F415D + 6D899594D606CDC7958698888AD80F1659273B672F6630641132118C15444997 + 89F0C507A3F90070198473E99B42F896C0F98471498F79498FC42997C3D99B47 + 289CCD199CD0498ACE998ED3A99CCFB99CCE599DC0C90663706C1CD0065CD006 + 1C5699C008904E50FF024E704C23D699ECB97BD24401A3E98C59B99510A9785E + C9782F5854AF894866E06990C2582A00925AA09B57290E8479A0089AA00ABAA0 + 0CDAA00EFAA0BDD99D3AC00167C0050BF000146025794013970990EA5904ED19 + A252B91E7F779580570F0E9982A8097D14D9A2F9D09AC07305D807103F50030E + 91216909920840A00A792ED009A1404A97D8699DC7C99C0C0A9C415A9C423A98 + 484A975320A11AC60566940BE6198C2570A57E96949D6987BBC7A5C1F71759F0 + 075D60A2CF680F5AE97C5C699FD8780FDAC8644EC07380331AAEC158A4B67950 + F0053D0A3672690170C9A76FE9A71BC0A782DAA7709903854AA87F8AA881AAA8 + 7769A87309A8807AFF9790AAA8914AA98AEAA88B9AA86F89A97139A99A9AA97B + 6AA96C507608A83A1DC6A1C298AA25A01D2500054829A2215A047D1802A249A6 + C6579AA76988884820ABB90F30CA564E602F74100336D05EF3749BC8EA495AD0 + 00BB391F49FAACD01AADD23AAD4E2A55A5FA005490AAE679A56A5002225604BF + 07ABCAE8022C460521159F2C379F685A9F89779FD9989FD6E588E2346A02CAAC + F2391F89B1A883BAAFFA4A9793CAAF00DBAF01CBAF893AB0A0FAAF072BB00A5B + B00A6BB00EDBB010FBB0FC3A05C7922C5CC0050E50025180AA97D9AD6AD0AD5A + F0AAE2DA997364AEE87AAB26F8902B2A91D337912FFA82DEC68DF6E25E20C974 + CD5A0EF14005C059FFA995FAA8A1EAB383DAA9102BB40C2BB43CEBAFA11AB046 + BBB096AAB44D4BA8040BB549BB013C6905C9920469C007DDBAADABAA0679A01D + 6BE102205A685E3A7265CB9E9F2906590006B61A82664A9F69DAAE6B0A969DA8 + 633104920C40A6E7620E7E400514F00253D0B016C0A786CAAF85BB01872BB111 + 2BB883ABB88EBBB88A9BB8900BB9833BB9913B066240405BF0065A8B9EDACAAD + 5E1B62AE2AB6236B901E2403F0D9B6DF86ABD6989ABCDAAB603992997664C9AA + 894A90B779BAB77ED0007EFB0562D00441F8B8C26BB9C43BBCC64BBC0C7BBCCA + BBB81B40763A03041DB6B53501BA1F6B254E507BA45BBA04192759B072AACB64 + EA4A9F5D39B76DFAFFBDE65B2EBADBB77E4B015AD504812BA895DBB8811ABFF1 + ABAFF50BBF007BBF114BBFF98BBFF3DBBFFF1BC0F23BC0FA3BC08CBBBFFE4BC0 + 8DBBC0FC2BB0F78BB91810024090055FF0B556BAAA5D9B07DE1AB663ABBD7A28 + AB7E78BE2284A2A9A3A2AEEBA22D1BBB27BBC2235C42BC7B1667A1064EB00256 + 30065360C000BCAF05DCC0C2CBC3072CB13C1CC4C65BC03F2CC402BCC3044B76 + 3A10021E4051D64BBD5EAB0648D0AD5020062EE0C11F7C0408C9C2E9FAB6EB1A + B72CBB78742BC25C8C47F89AB36691C614705124600580CBC0701CC7723CC771 + 9C03747CC7784CC7769CC70CBCC773ECC77CACC781BCC080CCA763F0024B8C04 + 5940011685C11E9B7FC154CC551D8CC5779868DC56C64545C2B9AAABAA09BB2A + 4CC6A0EC5658B0BB54B0BE5F00C36B9C16DC3106717CC4096CC40AFCBF0BECCA + B37CC7B28CC3B70CC7B4ACC0B52CC478BCCBFC5BCBF68BBF83CB93897CCA9CFB + B58EFCB1571262617BB6947C5CD42003983CC25E2CBE6AEAAE6C0AAFD5DCCDF4 + 50427DABC6691C08003B} + end + end +end diff --git a/Cliente/uSplash.pas b/Cliente/uSplash.pas new file mode 100644 index 0000000..7f951a8 --- /dev/null +++ b/Cliente/uSplash.pas @@ -0,0 +1,56 @@ +unit uSplash; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, ExtCtrls, JvGIF, StdCtrls; + +type + TSplashScreen = class(TForm) + Image1: TImage; + Panel1: TPanel; + lblTexto: TLabel; + procedure Image1Click(Sender: TObject); + private + function GetTexto: String; + procedure SetTexto(const Value: String); + { Private declarations } + public + property Texto : String read GetTexto write SetTexto; + procedure ShowAsAbout; + end; + +var + SplashScreen: TSplashScreen; + +implementation + +{$R *.dfm} + +{ TSplashScreen } + +procedure TSplashScreen.ShowAsAbout; +begin + Image1.OnClick := Image1Click; + ShowModal; +end; + +procedure TSplashScreen.Image1Click(Sender: TObject); +begin + Close; +end; + +function TSplashScreen.GetTexto: String; +begin + Result := lblTexto.Caption; + +end; + +procedure TSplashScreen.SetTexto(const Value: String); +begin + lblTexto.Caption := Value; + Self.Update; +end; + +end. diff --git a/Cliente/vcl.drc b/Cliente/vcl.drc new file mode 100644 index 0000000..a81d7c4 --- /dev/null +++ b/Cliente/vcl.drc @@ -0,0 +1,10 @@ +/* VER150 + Generated by the Borland Delphi Pascal Compiler + because -GD or --drc was supplied to the compiler. + + This file contains compiler-generated resources that + were bound to the executable. + If this file is empty, then no compiler-generated + resources were bound to the produced executable. +*/ + diff --git a/Configuracion/Configuracion.bdsproj b/Configuracion/Configuracion.bdsproj new file mode 100644 index 0000000..5eba305 --- /dev/null +++ b/Configuracion/Configuracion.bdsproj @@ -0,0 +1,492 @@ + + + + + + + + + + + + Configuracion.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 3 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + .\ + ..\Output\Cliente + .\ + ..\Base;..\Usuarios + vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;CEToolsPkgd7;FR7;FRIBX7;fqb70;frx7;frxADO7;frxBDE7;frxDB7;frxDBX7;frxe7;frxIBX7;fs7;fsADO7;fsBDE7;fsDB7;fsIBX7;DataAbstract_Core_D7;DataAbstract_IDE_D7;dxComnD7;dxsbD7;dxBarD7;dxBarDBNavD7;dxBarExtDBItemsD7;dxBarExtItemsD7;dxDockingD7;cxEditorsVCLD7;cxLibraryVCLD7;dxThemeD7;cxDataD7;cxExtEditorsVCLD7;cxGridVCLD7;cxPageControlVCLD7;cxSchedulerVCLD7;cxTreeListVCLD7;dxPSCoreD7;PluginSDK_D7R + + + False + + + + + + False + + + True + False + + + + $00000000 + C:\Archivos de programa\Borland\Delphi7\Bin\ + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + diff --git a/Configuracion/Configuracion.cfg b/Configuracion/Configuracion.cfg new file mode 100644 index 0000000..da30fe0 --- /dev/null +++ b/Configuracion/Configuracion.cfg @@ -0,0 +1,45 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-GD +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N".\" +-LE"..\Output\Cliente" +-LN".\" +-U"..\Base;..\Usuarios" +-O"..\Base;..\Usuarios" +-I"..\Base;..\Usuarios" +-R"..\Base;..\Usuarios" +-Z +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/Configuracion/Configuracion.dcp b/Configuracion/Configuracion.dcp new file mode 100644 index 0000000..3a3dbda Binary files /dev/null and b/Configuracion/Configuracion.dcp differ diff --git a/Configuracion/Configuracion.dof b/Configuracion/Configuracion.dof new file mode 100644 index 0000000..ac16595 --- /dev/null +++ b/Configuracion/Configuracion.dof @@ -0,0 +1,185 @@ +[FileVersion] +Version=7.0 +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=1 +SymbolLibrary=1 +SymbolPlatform=1 +UnitLibrary=1 +UnitPlatform=1 +UnitDeprecated=1 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 +[Linker] +MapFile=3 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription= +[Directories] +OutputDir= +UnitOutputDir=.\ +PackageDLLOutputDir=..\Output\Cliente +PackageDCPOutputDir=.\ +SearchPath=..\Base;..\Usuarios +Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;CEToolsPkgd7;FR7;FRIBX7;fqb70;frx7;frxADO7;frxBDE7;frxDB7;frxDBX7;frxe7;frxIBX7;fs7;fsADO7;fsBDE7;fsDB7;fsIBX7;DataAbstract_Core_D7;DataAbstract_IDE_D7;dxComnD7;dxsbD7;dxBarD7;dxBarDBNavD7;dxBarExtDBItemsD7;dxBarExtItemsD7;dxDockingD7;cxEditorsVCLD7;cxLibraryVCLD7;dxThemeD7;cxDataD7;cxExtEditorsVCLD7;cxGridVCLD7;cxPageControlVCLD7;cxSchedulerVCLD7;cxTreeListVCLD7;dxPSCoreD7;PluginSDK_D7R +Conditionals= +DebugSourceDirs= +UsePackages=0 +[Parameters] +RunParams= +HostApplication= +Launcher= +UseLauncher=0 +DebugCWD= +[Language] +ActiveLang= +ProjectLang= +RootDir=C:\Archivos de programa\Borland\Delphi7\Bin\ +[Version Info] +IncludeVerInfo=1 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=3082 +CodePage=1252 +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= +[Excluded Packages] +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\DJclVcl70.bpl=JEDI Code Library VCL package for Delphi 7 +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\DJcl70.bpl=JEDI Code Library RTL package for Delphi 7 +C:\WINDOWS\system32\fqb70.bpl=FastQueryBuilder 1.01 +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxPSCoreD7.bpl=ExpressPrinting System (core 3.1) by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxComnD7.bpl=ExpressCommonLibrary by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxBarDBNavD7.bpl=ExpressBars DBNavigator by Developer Express Inc. +C:\Archivos de programa\RemObjects Software\Hydra\Dcu\D7\Hydra_Core_D7.bpl=RemObjects Hydra - Core Library +C:\Archivos de programa\RemObjects Software\Hydra\Dcu\D7\Hydra_IDE_D7.bpl=RemObjects Hydra - IDE Integration +C:\Archivos de programa\RemObjects Software\Hydra\Dcu\D7\Hydra_RO_D7.bpl=RemObjects Hydra - RemObjects SDK Integration Library +[HistoryLists\hlDebugSourcePath] +Count=1 +Item0=D:\Proyectos\Componentes\GUISDK\Sources\;D:\Proyectos\Componentes\PluginSDK\Source\;D:\Proyectos\FactuGES (Estudio)\Codigo\Modulos\Contactos\Cliente;D:\Proyectos\FactuGES (Estudio)\Codigo\Modulos\Contactos\Reglas +[HistoryLists\hlUnitAliases] +Count=1 +Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +[HistoryLists\hlSearchPath] +Count=16 +Item0=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente;..\..\Asientos\Cliente;..\..\Cuentas\Cliente +Item1=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente;..\..\Asientos\Cliente +Item2=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente +Item3=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente +Item4=..\Modulos\Presupuestos\Reglas;..\Modulos\Contactos\Reglas;..\Base;..\Configuracion;..\Usuarios;..\Modulos\Albaranes de cliente\Reglas +Item5=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\Base;..\Configuracion;..\Usuarios;..\Modulos\Intervalos;..\Modulos\Documentos asociados;..\Modulos\Contactos\Cliente;..\Modulos\Contactos\Reglas;..\Modulos\Presupuestos\Cliente;..\Modulos\Presupuestos\Reglas;..\Modulos\Albaranes de cliente\Cliente;..\Modulos\Albaranes de cliente\Reglas;..\Modulos\Facturas de cliente\Cliente;..\Modulos\Facturas de cliente\Reglas;..\Modulos\Pedidos a proveedor\Cliente;..\Modulos\Pedidos a proveedor\Reglas;..\Modulos\Facturas de proveedor\Cliente;..\Modulos\Facturas de proveedor\Reglas;..\Modulos\Montajes\Reglas;..\Modulos\Montajes\Cliente;..\Modulos\Articulos\Cliente;..\Modulos\Articulos\Reglas;..\Modulos\Almacenes\Reglas;..\Modulos\Almacenes\Cliente;..\Modulos\Pagos\Reglas;..\Modulos\Pagos\Cliente;..\Modulos\Cuentas\Reglas;..\Modulos\Cuentas\Cliente;..\Modulos\Asientos\Reglas;..\Modulos\Asientos\Cliente;..\Modulos\Calendarios\Cliente;..\Modulos\Calendarios\Reglas +Item6=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente;..\..\Documentos asociados;..\..\Contactos\Cliente;..\..\Almacenes\Cliente +Item7=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados +Item8=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente;..\..\Documentos asociados;..\..\Contactos\Cliente +Item9=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente;..\..\Documentos asociados +Item10=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente +Item11=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados;..\..\Montajes\Cliente;..\..\Almacenes\Cliente +Item12=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados;..\..\Montajes\Cliente +Item13=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\Servidor +Item14=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\base;..\Modulos\Calendarios\Cliente;..\Modulos\Calendarios\Reglas +Item15=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\Base;..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios +[HistoryLists\hlUnitOutputDirectory] +Count=1 +Item0=.\ +[HistoryLists\hlOutputDirectorry] +Count=2 +Item0=..\Output\Servidor +Item1=..\Output\Cliente +[HistoryLists\hlBPLOutput] +Count=3 +Item0=..\..\..\Output\Cliente +Item1=..\Output\Cliente +Item2=..\..\Output\Cliente +[HistoryLists\hlDCPOutput] +Count=1 +Item0=.\ diff --git a/Configuracion/Configuracion.dpk b/Configuracion/Configuracion.dpk new file mode 100644 index 0000000..43bab45 --- /dev/null +++ b/Configuracion/Configuracion.dpk @@ -0,0 +1,35 @@ +package Configuracion; + +{$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 + JvGlobusD7R, + BaseD7, + Usuarios; + +contains + uPanelControl in 'uPanelControl.pas' {fPanelControl}; + +end. diff --git a/Configuracion/Configuracion.drc b/Configuracion/Configuracion.drc new file mode 100644 index 0000000..a5d5271 --- /dev/null +++ b/Configuracion/Configuracion.drc @@ -0,0 +1,14 @@ +/* VER150 + Generated by the Borland Delphi Pascal Compiler + because -GD or --drc was supplied to the compiler. + + This file contains compiler-generated resources that + were bound to the executable. + If this file is empty, then no compiler-generated + resources were bound to the produced executable. +*/ + +STRINGTABLE +BEGIN +END + diff --git a/Configuracion/Configuracion.res b/Configuracion/Configuracion.res new file mode 100644 index 0000000..ec5f233 Binary files /dev/null and b/Configuracion/Configuracion.res differ diff --git a/Configuracion/uPanelControl.ddp b/Configuracion/uPanelControl.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Configuracion/uPanelControl.ddp differ diff --git a/Configuracion/uPanelControl.dfm b/Configuracion/uPanelControl.dfm new file mode 100644 index 0000000..f04e221 --- /dev/null +++ b/Configuracion/uPanelControl.dfm @@ -0,0 +1,262 @@ +object fPanelControl: TfPanelControl + Left = 509 + Top = 252 + BorderStyle = bsDialog + Caption = 'Panel de control' + ClientHeight = 458 + ClientWidth = 547 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + OldCreateOrder = False + Position = poScreenCenter + PixelsPerInch = 96 + TextHeight = 13 + object TabControl1: TTabControl + Left = 8 + Top = 32 + Width = 531 + Height = 383 + TabOrder = 0 + object Image1: TImage + Left = 112 + Top = 153 + Width = 48 + Height = 48 + AutoSize = True + Center = True + Picture.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000003000 + 00003008060000005702F987000000097048597300004E2000004E2001167D99 + DE0000000467414D410000AA11B57D14DC000016574944415478DAD55909905D + 65993D777DF7EDAFFB75A75F77A73BE94EA7B3922640D8229000E228E2A810C6 + D21970CA65600A0B95D151B12CA56AC6711D75449D08E2308C25E04204044380 + B08728210964EB24DDE97D7FFB76F739FF7D0DA53599194B29A7A6BB6EDEED97 + F7EEFDCEFF9DEF7CE7FBAFE4FB3EFE3FFF489FDA14FB9D376AB68BF37AD3306D + 07B62B61AA5246425771622187DEA63464C58722C9A83A1E1C5FC24CB9865F1F + A9E2A9FDB7E0D8FEB1D7AFA37B212C5473B0BD3A5625CFC91C9F1A7C8BAAEB57 + C5A3EA65AEEDA5AAB53A4CCB8669DA56B658DD1B56DCDD0FBD3071FF8E3D5323 + F305B3A02812BC3F1580D15215E62070C527FA51C95519BC8167A513F8EE9537 + E264FE245644CFC4B1B1A367AB867E59321EDAEC395E47B55A8B589653AC5B76 + 315BA81C30646FCFCF9E1E7DF427CF4D552DC76D2C82AAE07FE3C71B06205506 + 2EFAF000CAB91A42BE8157B483E88926B1A1FDECD4E68E4B3E3C591BB94CD3B4 + 01DBB1DA3CD743A55A0FEE51B7EA28E7CDB2AABAA75E3E9E7DE2F068FEF9FB9F + 18BD37D312C6E86C0DAA2CFFDF00D82B1FC4DA64A2FBFCA5177FE0C215E77DCE + 540A90F8BD6C360FDBF650AE55797D0766D524080B2ECF991184C398BCE3C1E1 + BFBFE7B1530F329C82C62CFCC9005CF1A9F3313D340D9714684AB7616547EB07 + 3A52ED1FEB6E6B5F57732B107C28166A41B0E53A5F1970DDACA356B3613926DF + 77113764BC7434F7E4E3FBE6BEF9CCE1991D85B2F3060248A523B2EA87082042 + 001601B804902700AF4353313FE1E0AF3FFA3E8C9F1AC3C0597D57F57437DF01 + D55E02DD46ADC2403C1F96C99576F9370BD87318789D854C1A95AA161CDB84A2 + C9688E189898ADBEF2AD07063FB5E768F6976F088043B339B53FDDFC564966AC + B2DC5D73FC05C7536A53E5F2DEE1627D68B9A1E6C4CAC6DA9BB07ACD2AF4ACCA + 7C637947FA665592A051514CD3854F3A9B04E03A0E6A5C798759F408C6B52D14 + 2B7566C10E6248450D4C2ED471DF93A7BEF8D08BD39F091B0AA43F14C048B1D0 + A74ADE95692336100F1B67FA9E9B72E0B771F94B16E329D6CCC142DD9A9D2BD4 + F618927F60494FE6E9359BD6AEE85BDE7A4F6BD238DFB2C5CA2BF03C870990E1 + 7A366452C9F32CD4EA1646A60AC8E64DD8A4635C9758271E3A5B43BCB78F7DC7 + F283FFBE6BE486E313E5DDAC05FFF706B0B9AF0525A6B6603ACB9B42C6AD4BA2 + C6070D55439D1CB53C8F9FB1E1F0DC21254CCF0DA8319DCB63C1749E32DAD23F + 5C7FE6EAB665CB5357B7C6639B6C7ECE63B3140D53ACA2CDEF8A33C712C5EB62 + 78B2845CD541346460494267564C24221E2C167ABEEC54763C3F7DFBCE7D93DF + 4F84B513BF17009B12D796D4D19E8CAE5364F5E3ED91F8F5BA2A2BE2E685402D + 5C16B0C80E01B0584DDF85D089F97215147064251CECEAE90CAF3DA3A7BDAF2F + 13AB911A123F2F945D913DCCCD573093AF622A67419514446321649AA2686D8E + 41E7FF576B26F2A532E60A5514CA269E3C30B773E7DEE9DB1211EDB9D302F8FC + F989D7FF10AB6B92972D49B56763A6757B2214BB3C1ED29063D7142B5EE2EA79 + FC8CC884B378D4F879B23B904250B3A7160A404847DB8A0EACDDB0022AA1CB7C + BF6E5A906489AF4085D9ADF0356A44B072590A7D1D1134C7341459C83566636A + 3E8FD19912696C62F7FE99977FFCC4C86D9DE9C803A70570F5DAD78207564474 + C09595FE4CF2F31B3AD29F957C0D941CAE2CD5821410D41119A82D066F933A8E + 2732E10435E330D06CA50A9732EB8505882E34A56290149DAB5AE7FB0ADA5BE2 + 48C723E8688D435525240C9DB26C4358079BF40D28C7A2CE174DC40C1F3B9E1F + DBF7ED1D83FF38365BFDE96901BC777DA3BE4530195D436732766D6F3AF5839E + A6645450822212041B646791CF0E6963997690EE7916624556D884EC802A3258 + 1FB2CA552497BB9AD0BFBE0F3D7DCB6155AB0C983C6F89A09320BAF8EA4BA291 + 31D84A0D36AFE7F3FA826AE1900C876AD5DDAAE2C7BB4E1DFADC3D07BE7C7CBC + 7CF769016C63060C2173ACFACE78F88CB33AD2B726D4D0DBA2A150DC16011181 + 085A089CC51B8862F4791BCB114556439677ACB37D3A04A8570AF0F91D4F9131 + 3D5545BA2B89BE75FDB8E8D2B3900ECB813C96D879832B08BF435D71858CF2BB + 41F0C1E105B55225B0F62605F7EF1E7DF52BF71FFEDAD074F587A705F0E9F3D9 + F6E7EAE436707647F8BA8B97B6FF9BCE1585AF30685E8C00244AA0C6D762B506 + 93241EA6612BAB3AEAA11096F666B0B42B4D1551B0303987C1A3A3989ACA6276 + 1A68EF025ABB97E25D576FC1405F1BD46404A5991C41928EAC19DF6737A71279 + 92CFA6E604007C014005B36B519514FC64F7C8AB5FF9C9D1AF0F4F97EF3A2D80 + 8F6DD23156B18412627D53EC1BEB3A5A6E96C51F1EB9A3040A19644020344527 + E5B2CDB25EBD6414D1F6166C5CDB8535DD093485550C8DE771E0E0308E1E1EC1 + ECE414058105CBE3CD579C83CB2F3A031D4B9A30450082FBE27A815DF61938D3 + EB13841380F0C0B24085F682A28A1F3D7E6AF7F6474E7C6B62A1FEF3D302B861 + A32AB747756FA26C36F5B6A4B62F8B46AEB1B8CA362F20B4B3463DCEF1A225DE + 446A49C04824B07C450619518C6D0924A32124A21214822B525A84CB1C1B99C3 + E1C3C338F8EA28B24560CB25FD78E7951760E9D234E666732C5804B4118DCD77 + 1ACAD6381A148AD24E944C33C8CA8F9E38F9ABEFED18FA66F792F023A705F0B9 + 0B2354154111E5BC5448FF523C1EBBC4A57590984766122E3BA4472935351D4D + 9DAD4834A7B0BEBF0319A6376948C8E5CA34636C4A2C425217AD9938CA549CE1 + 9129EC78702F0E0FE6D1DF97C6BBB76DC14A02AF174ABC364BDD12E52A6A0AAF + 0370BD466F49475552C8C1F18979FCEBC327FFE5E117A7EF4C45B503A705F089 + F3C3140FCF9754E9E2A8E37D21D596DE12E9CC20DC46E749698C47427496A448 + 2282543C4C7FEE91024A507CA281598BBDC1E64A4A8C49D51566A1469562137A + EA20F6EC1D43737B1CDBDEBD152BFB32906A35961725D3F40231684CB46E2002 + 1EB32D64794932843233F9CC4B9373DF7C60F02BFB478AF74774E5D4E901B006 + C44528DD5BADB2755B5B4FFB9B969DBD0E7D1BFB2199353618035182100E5157 + 7DD1AA51AA54E863D81B44017AE26011DA0D35516859443662E1109E7AE62076 + EE3E02998D6DDB355BB176553BCD69A3A155095861C684AA79BED7B01B220B94 + E865CD2152AF86AFDD77E4B96F3F34F419C6F93C8FD3FA6AE9939BB4E0028A2C + 5F5E2EDA5FE8EECD5CB8E2CC95D874E13A68BC588C4EB0C27406F219D4363B6B + 70EE0537148D47FC78813FF240571D9834CAA4FFF473AFE2C5174F493A33F78E + 776CC6DA95EDBC261580D710122D80FB8B3EC9155E4948218B995D0587860BB9 + AFDE77ECAE3DC7725FE5E5A7F0DFFC481F3F2F2402A1DB51DE51CFD56F5DBABC + F5AC15037DD874F199882A2E79AE2257B602EDF6A84C422D84660B09B1C50DDD + C6C2088BECF03C440A95A9F56EDDF29F2480DFEC1B97E294CFABDE7E0156F5B7 + 43764D213954283B90B80600362E5EB0D900BA68E8F6EC99CC6F7FF8C46377ED + 9FB99397FE15FE871FE9660220FF92AAA2BCD72FD66F69CE2456C4326D388719 + 10DDB22915A5A9B2982141560ED992D06A916EC1600FB2F0425EE31032188BE9 + 28D1AC8D4FCEFB4F3D7B1043C35529950EE3C28B376260D512A4C27EB018B59A + 1B6442AC84A06144526916EB810A6D7FF2D4E11D7B27EE9A9DB0BECB0F54CEDD + 3180D1EDE3987974016A5C85436D16AD4AC8AF74F3B9BA28C2564996AFA3A1B9 + 29D5145F2EC51338EB82B558BFAC09AD6D49CCB371C9FC659D70D116012CDA63 + 910D9108C77302CB918A1BC8E52B183C3EEE3FBE7B3FF21C853576EA33CE5A8D + 0BD73763659B4C8228A83B4AD06B6485168275D1A684F0C2C9021E3B99C77D33 + 73476B2AEE9ED937FFC59537ADA2989858783287F9E70B50630A9CAA4B25E3BD + 05808F9CC361C34527DFB851F6BC0F6B7AB8354F59DC74DE1A5CB27935BABADB + 3039394F5749CDF61A0D4750C0271029B0150D8B215008695C928E62663E8BDD + CF1CF29F7D6602092AF25C4A81D2DD8D8B370CE092250976E13C72C571D24E86 + 41DF54F375E866180F64E7B0B33087D14E2FDBDDD97CD8CD9A2FDA47723F4BAD + 0DBF927DAA503A2D801B364A22884EAEE64DB2247F4095E5D6B9BC8D0D034BBD + 0B376F9056ADEAF4F3F33959D39446D105DD536A6462B198858C8A0A7728BB86 + A1616474162FEC3D82032FE7D1AE01C73A81B9EE0CCEE8BB147F965809C59945 + AD3444F7E94077A39865CF3D5628E3D78919D4977266EE52912887582F0ACCF1 + D21E98957B66764EDD9EDF57A5CD901A05FF1A800F0E70F164F47392FB242DED + 5FF1552F647DF4AC8860C379FD38F7ECD54143A32342A5CC6F885A20777DAFC1 + 6551C426BD4D9C0ED20881F42962DFFE51BC74F01466475D6408E0C03260A837 + 89AE8E4B717DD75558B6A415AD7109B3A52C3ADD4E0C5B59DC39B9033BB45D68 + ED4CA33915879ED3394B1BF0B2F469057B32FBEBB12FE75F99FB51A4233137BB + 6B0E92BE08E0FD0322382C65287F4B79BE810C6912438766C06C6E6EC1E60BD6 + 6867AC6995C37A0845BA4F5177AF495FA0E10420AA4193FD20432F1F19C7BE97 + 193C3B74983788578143CB81B14D6D30DB9AF1BEBE77E3EDEBB671EE1EE09C41 + D3562DE1F19947F1C3D2DD783AF72C5AAC36442B714A1C6BCEE4AC6069BC7618 + 7EB564D50BD9EF8EDD37F48FE563B5D9A08B7A41270ED428C2C0AE2788EF2C50 + 15E7788CCFE120E87CDF72D18A966BDED6DBD9BD2405ABC2262576D31C51078D + D9C0E0179BB89A39FAA023B345FCE2D963183E99635103AB09B6758614EA050E + 5ED489C1BE22DED57D05FEA6E323784BDF25F4F1C033D93DF8EAF12FE325E740 + E01F43D5088CB201C95620D77958061B5E08AA25CC5EAD36BDFBE84D33CFCEFC + 40A3DDB1E639AFAC69E700A10535B83424615BAB226D0B6986AAE412BE548DAA + 3DDDE9B60D17463A3BFA5518292137BCA827E4483430618B590B460DC74F5A18 + 3D0A4C1C65CF504AB0953A6ACD453A5807E3EB62280C6430BC620ABD910CB6BA + 17E1EAE6AB504DD6716FF95E3C30F1083BB88A1EA51FAEC902AD68541EDEC754 + 09A271AE3951363A36D5B9B1A199FDC76ECC3E5BDAE99329D299EB81FDAF2E76 + 05A6E59248DBD67546C75BDF145B737DD450933473FA7C6A5A72FB7348AEB210 + 710DA4690D4411AB5490D16C05C3E4F2C42105C64C0BD6E59723D2E2619E36E4 + C1AE610CB5E7307D2E9059D20CB3C5A569A45DB64288EB34CB2A0717A546A76B + B29F4808D5A3816150EAAC3A5B0C052A34BEFAA493664602206EAD58CC0E0EDF + 31B37BEAF6FA823924FD03AEE144E6719869C175630FE3DAF4FA5B56EB992D9B + 5B97BD3DC499B4306BE3A8348E899527A09E9B439B9C4498B3729ECD4D22C98B + 256074BA02ED600BBAEADD38CFEF819A9668C37D3C1A1DC1896409CF5D3A8DCA + 3A06D9A120C45937EBCCA1589B0F8A2F66A4D1AA2E41C8A227AB48414F51C4AA + 5BD45F062FD7480FD2477322F428945B5AF7D2A9B1C1D1878E7EB2345EDA29FD + 9DB61575D2A125A9B7AC6D5A725B3C64DC28EC80D8517369CC12E528AC988591 + D653A86CA46AA463FC3F0DB39CE2AC580DA102ADC829036D43ED4869519A350D + 39AF8288478E965D9865070FAF9EC4D35B6631BABE8E949856C87D25D8849382 + 1D0DD118396807BC975C29085A7609C0E4DFCC86CC0C28AC05F06F9D6A571C99 + 9C1C7DF4F0ADE589D2C3D227F4CBD1648713AB3A539FCE34256EA1C46B41C7E5 + C02D56A8C989C1D16D1C9447609D9BC5DAB5CDC87444303351473D5D8134A643 + 7A2E85C82B69528729E66FD9B58240B40AFB770D38AA66B1B7770EBBB6CE61FA + 7C0B21DE2052538246E8D207A95E30984112AB2EBA33954761B020ADA46A28D0 + 799115B0A823315AEDF159FBE443073F5B9EC8DE2B7D54DA9A6C8A86FFB2AFBD + E9DBE95024E8B42A2FAC706C52789E9205000783330BF03756D0BB2582813747 + E14E69289A55CC3EE142DE976016C2B09BEAB02531B07BC18697D8B9137B42D1 + 71095956DC83678CE29177CE022D1484180332F9FF220F0200010BCA08004126 + 0846B616DF6306542B1C64C0A0D72A8E4DD4871EDDFF85F278E17EE94B2D576D + 896AA1F7B6C7231F125A2F7A934E4DA73782CE0CC45583F5E4617AAC8ADA8632 + 966CF1B1F6EA38A2F3ECA047AA18FD8589F84C023AA5CF0C89FD23DA6A4730A2 + 319C301788175494250B2FC466F0D8E6492CACA59D5EC17AC8FB4196255A0A39 + 0041ED27F5244B5087632A3B31C43901A96482E28660D0CCE5C687ACE15F1EF8 + 7C698C00EEEAF98BDB2952EF4B84D4A422FA33AFA4D1EA857888A665D0E00BB3 + 214DAA28F69450D85840E77B34F43AAD28EEF231762F8717AA52282EA36ED9B4 + D8087A80502993202C6621CC206CD94561BC82A7FBE6B1EFB21A462EF3D19A37 + 0293287622644F7803021020C4EA933E7075D602E943C596B9FA5E9DF49C9EC6 + FCE0D053732FCFFCB353B6F748DF6FDFF680A22A7F1E0F85A0D3EFC8CC278703 + 82E0176551CC088E68358C7CBA8CA9F6053FB255C60AAD49F2F7918F8FB32043 + ECC211A931D3BA7E631F69719B526C998802ADD28687A77CECEDCCE2C90BF278 + F522135D661CAAC6EFD51BF644628F5104951C35E0BFEC3732203617DC6285A2 + 50AECF1E187A297B7CEE17D6BC2B76EA26A53B975E3BC8616665949D4DA7AED3 + 7406BC157B43E2F194D80F12459DF40DCAB28519A5EC5B19CBCBE831D9C88620 + 4D50AF425C69D50D14C5751AD39590C3C64E1E255DECE4B14ADB66C2D81F9BC7 + CFFB4FE1F94D0B5E6FB885964571DD2A51BB32FD381ADB126207B3E6982C28D3 + 2AD4734EC135CDF9F29455B5C72A13D967DC2A7EC3E0831959DADE79CD010EE9 + 1BA2AAD6285C59094008FB2C1E2B888713E237C434F85C15DBE3D45A774591F8 + BA21C9BAA14962B4B49CC5D15080107BA63C17BB77E23D31B05BECC81DF5047E + E38FBBF729AF1CDADB3CF2627324E5C851B58AB25872DFE2504FD6F99E6BF3DC + B46B9EE954AC923BEB5450A6AD1961BC591EF3BF33916D5F7AED3102E88F88C0 + 45B0E295FF11129B370C5C67E0627B51A1D3930447C5506049AC375F585B49D1 + 102C9A785E86C5D956A88FBBF8EC403048042FC0ACD232D8571AC10F0A7B7FBA + D71EFB3A6BAEC45BCC335DC96068F7C552505C7DDF12ACE12FDB2143A78EF0D7 + 847B9A91F28EF6F77C87C17EC8D035553C9715749182C15AD4831FECA2C98DC6 + 106C950B695594C6A34F4F3CA8109213342451FF7E30DB3A6EC36E0B10AEA829 + 2A4B9DF35F4A8E6057F6E8DC8F17F6FDD310725FD7337A6089F9C140FDB0B871 + 106CB504F3B6DFB05CC23A9BC1EECB7F05F0BDD66BAED355F5FD71C3D86A681A + E3F4026D96C582F21F41A30010CF657117CEAE92DC78DA239EA5FB62D0179C17 + 92E57A012837D8224160AFC58A44A96E65CB41D1AAE181FCA1E776D506EFCEBB + D5EDE21AC65203AE7812F98702D8ACF7C4238AB6A9CF68B9A137943EB3458F2F + 0F2BB21696E9C399114314336188F61C6CF44AC1738CE0FA02802DDE137C173B + CBBEA83F71EE05F371D9B1827D9E39A75A1BB77233FB2B53270EDB53FF31EF56 + C53ECFE06B41845AB97096FF870168985009036A666597DEF4A6A416B938AE84 + 5AE2AAD6A1CB5A28AC849AC92285ED9F9457645F0A4A445CDF110FE4C4481E68 + BEE85B9EE750715C7661CB716CABE09BB9BA6BD927ABB9E1512F7F74DCCDBFCC + AF1EE231FBDB41FCD100229CCF56CA4DAC4D2F32E5577AC390239AA2A6154F0E + 93EF49C997382A4BB47892E62F767F31D78B3D66569E13705FF2C416B747DDB7 + 1DF138C1F72C0229905456DE35397AB8423D664EB7B7F34703B832BC1A05AF2E + CDB865FFB8F3BA4AE98B076D603016BF76881FB931D02DD67283C1EE6FBDBE76 + 988BEF99D2625C6F3480FF047136462EB85916B00000000049454E44AE426082} + end + object lblUsuarios: TcxLabel + Left = 168 + Top = 152 + Cursor = crHandPoint + Caption = 'Administraci'#243'n de usuarios' + ParentFont = False + Style.Font.Charset = DEFAULT_CHARSET + Style.Font.Color = clHighlight + Style.Font.Height = -13 + Style.Font.Name = 'Tahoma' + Style.Font.Style = [fsBold] + Style.HotTrack = True + StyleFocused.BorderStyle = ebsNone + StyleFocused.TextStyle = [] + StyleHot.BorderStyle = ebsNone + StyleHot.TextStyle = [fsBold, fsUnderline] + Transparent = True + OnClick = lblUsuariosClick + end + end + object Button1: TButton + Left = 464 + Top = 424 + Width = 75 + Height = 25 + Caption = '&Cerrar' + ModalResult = 1 + TabOrder = 1 + end + object JvNavPanelHeader1: TJvNavPanelHeader + Left = 0 + Top = 0 + Width = 547 + Align = alTop + Caption = 'Panel de control' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWhite + Font.Height = -16 + Font.Name = 'Arial' + Font.Style = [fsBold] + ParentFont = False + ColorFrom = 8684164 + ColorTo = 8684164 + ImageIndex = 0 + StyleManager = dmBase.StyleManager + ParentStyleManager = False + end +end diff --git a/Configuracion/uPanelControl.pas b/Configuracion/uPanelControl.pas new file mode 100644 index 0000000..c2609b8 --- /dev/null +++ b/Configuracion/uPanelControl.pas @@ -0,0 +1,50 @@ +unit uPanelControl; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, ComCtrls, JvExControls, JvComponent, JvgWizardHeader, StdCtrls, + ExtCtrls, uDataModuleBase, JvNavigationPane, cxControls, cxContainer, + cxEdit, cxLabel, Buttons, PngSpeedButton, pngimage; + +type + TfPanelControl = class(TForm) + TabControl1: TTabControl; + Button1: TButton; + JvNavPanelHeader1: TJvNavPanelHeader; + lblUsuarios: TcxLabel; + Image1: TImage; + procedure lblUsuariosClick(Sender: TObject); + private + { Private declarations } + public + { Public declarations } + end; + + + procedure VerPanelControl; + +implementation + +uses uUsuarios; + +{$R *.dfm} + + +procedure VerPanelControl; +begin + with TfPanelControl.Create(NIL) do + try + ShowModal; + finally + Free; + end; +end; + +procedure TfPanelControl.lblUsuariosClick(Sender: TObject); +begin + AdministrarUsuarios; +end; + +end. diff --git a/DataAbstract_D7/DataAbstract_D7.bdsproj b/DataAbstract_D7/DataAbstract_D7.bdsproj new file mode 100644 index 0000000..317c10f --- /dev/null +++ b/DataAbstract_D7/DataAbstract_D7.bdsproj @@ -0,0 +1,492 @@ + + + + + + + + + + + + DataAbstract_D7.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 3 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + + + + C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source;C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RODEC;C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RODX;C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\CodeGen;C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\DataSnap + vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;IntrawebDB_50_70;Intraweb_50_70;Rave50CLX;Rave50VCL;dclOfficeXP;cxLibraryVCLD7;cxEditorsVCLD7;dxThemeD7;cxDataD7;cxExtEditorsVCLD7;cxPageControlVCLD7;cxGridVCLD7;cxTreeListVCLD7;cxSchedulerVCLD7;TMSD7;PNGImageD7;mxProtector_d7;CEToolsPkgd7;FR7;FRIBX7 + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + diff --git a/DataAbstract_D7/DataAbstract_D7.cfg b/DataAbstract_D7/DataAbstract_D7.cfg new file mode 100644 index 0000000..4da8cac --- /dev/null +++ b/DataAbstract_D7/DataAbstract_D7.cfg @@ -0,0 +1,44 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-GD +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-LE"c:\archivos de programa\borland\delphi7\Projects\Bpl" +-LN"c:\archivos de programa\borland\delphi7\Projects\Bpl" +-U"C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source;C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RODEC;C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RODX;C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\CodeGen;C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\DataSnap" +-O"C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source;C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RODEC;C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RODX;C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\CodeGen;C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\DataSnap" +-I"C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source;C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RODEC;C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RODX;C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\CodeGen;C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\DataSnap" +-R"C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source;C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RODEC;C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RODX;C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\CodeGen;C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\DataSnap" +-Z +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/DataAbstract_D7/DataAbstract_D7.dof b/DataAbstract_D7/DataAbstract_D7.dof new file mode 100644 index 0000000..1cd3c85 --- /dev/null +++ b/DataAbstract_D7/DataAbstract_D7.dof @@ -0,0 +1,186 @@ +[FileVersion] +Version=7.0 +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=1 +SymbolLibrary=1 +SymbolPlatform=1 +UnitLibrary=1 +UnitPlatform=1 +UnitDeprecated=1 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 +[Linker] +MapFile=3 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription= +[Directories] +OutputDir= +UnitOutputDir= +PackageDLLOutputDir= +PackageDCPOutputDir= +SearchPath=C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source;C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RODEC;C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\RODX;C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\CodeGen;C:\Archivos de programa\RemObjects Software\RemObjects SDK for Delphi\Source\DataSnap +Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;IntrawebDB_50_70;Intraweb_50_70;Rave50CLX;Rave50VCL;dclOfficeXP;cxLibraryVCLD7;cxEditorsVCLD7;dxThemeD7;cxDataD7;cxExtEditorsVCLD7;cxPageControlVCLD7;cxGridVCLD7;cxTreeListVCLD7;cxSchedulerVCLD7;TMSD7;PNGImageD7;mxProtector_d7;CEToolsPkgd7;FR7;FRIBX7 +Conditionals= +DebugSourceDirs= +UsePackages=0 +[Parameters] +RunParams= +HostApplication= +Launcher= +UseLauncher=0 +DebugCWD= +[Language] +ActiveLang= +ProjectLang= +RootDir= +[Version Info] +IncludeVerInfo=1 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=3082 +CodePage=1252 +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= +[Excluded Packages] +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\DJclVcl70.bpl=JEDI Code Library VCL package for Delphi 7 +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\DJcl70.bpl=JEDI Code Library RTL package for Delphi 7 +C:\WINDOWS\system32\fqb70.bpl=FastQueryBuilder 1.01 +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxPSCoreD7.bpl=ExpressPrinting System (core 3.1) by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxComnD7.bpl=ExpressCommonLibrary by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxBarDBNavD7.bpl=ExpressBars DBNavigator by Developer Express Inc. +C:\Archivos de programa\RemObjects Software\Hydra\Dcu\D7\Hydra_Core_D7.bpl=RemObjects Hydra - Core Library +C:\Archivos de programa\RemObjects Software\Hydra\Dcu\D7\Hydra_IDE_D7.bpl=RemObjects Hydra - IDE Integration +C:\Archivos de programa\RemObjects Software\Hydra\Dcu\D7\Hydra_RO_D7.bpl=RemObjects Hydra - RemObjects SDK Integration Library +c:\archivos de programa\borland\delphi7\Projects\Bpl\RodaxFrameD7.bpl=Frames Acana (D7) +[HistoryLists\hlDebugSourcePath] +Count=1 +Item0=D:\Proyectos\Componentes\GUISDK\Sources\;D:\Proyectos\Componentes\PluginSDK\Source\;D:\Proyectos\FactuGES (Estudio)\Codigo\Modulos\Contactos\Cliente;D:\Proyectos\FactuGES (Estudio)\Codigo\Modulos\Contactos\Reglas +[HistoryLists\hlUnitAliases] +Count=1 +Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +[HistoryLists\hlSearchPath] +Count=16 +Item0=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente;..\..\Asientos\Cliente;..\..\Cuentas\Cliente +Item1=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente;..\..\Asientos\Cliente +Item2=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente +Item3=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente +Item4=..\Modulos\Presupuestos\Reglas;..\Modulos\Contactos\Reglas;..\Base;..\Configuracion;..\Usuarios;..\Modulos\Albaranes de cliente\Reglas +Item5=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\Base;..\Configuracion;..\Usuarios;..\Modulos\Intervalos;..\Modulos\Documentos asociados;..\Modulos\Contactos\Cliente;..\Modulos\Contactos\Reglas;..\Modulos\Presupuestos\Cliente;..\Modulos\Presupuestos\Reglas;..\Modulos\Albaranes de cliente\Cliente;..\Modulos\Albaranes de cliente\Reglas;..\Modulos\Facturas de cliente\Cliente;..\Modulos\Facturas de cliente\Reglas;..\Modulos\Pedidos a proveedor\Cliente;..\Modulos\Pedidos a proveedor\Reglas;..\Modulos\Facturas de proveedor\Cliente;..\Modulos\Facturas de proveedor\Reglas;..\Modulos\Montajes\Reglas;..\Modulos\Montajes\Cliente;..\Modulos\Articulos\Cliente;..\Modulos\Articulos\Reglas;..\Modulos\Almacenes\Reglas;..\Modulos\Almacenes\Cliente;..\Modulos\Pagos\Reglas;..\Modulos\Pagos\Cliente;..\Modulos\Cuentas\Reglas;..\Modulos\Cuentas\Cliente;..\Modulos\Asientos\Reglas;..\Modulos\Asientos\Cliente;..\Modulos\Calendarios\Cliente;..\Modulos\Calendarios\Reglas +Item6=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente;..\..\Documentos asociados;..\..\Contactos\Cliente;..\..\Almacenes\Cliente +Item7=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados +Item8=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente;..\..\Documentos asociados;..\..\Contactos\Cliente +Item9=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente;..\..\Documentos asociados +Item10=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente +Item11=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados;..\..\Montajes\Cliente;..\..\Almacenes\Cliente +Item12=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados;..\..\Montajes\Cliente +Item13=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\Servidor +Item14=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\base;..\Modulos\Calendarios\Cliente;..\Modulos\Calendarios\Reglas +Item15=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\Base;..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios +[HistoryLists\hlUnitOutputDirectory] +Count=1 +Item0=.\ +[HistoryLists\hlOutputDirectorry] +Count=2 +Item0=..\Output\Servidor +Item1=..\Output\Cliente +[HistoryLists\hlBPLOutput] +Count=3 +Item0=..\..\..\Output\Cliente +Item1=..\Output\Cliente +Item2=..\..\Output\Cliente +[HistoryLists\hlDCPOutput] +Count=1 +Item0=.\ diff --git a/DataAbstract_D7/DataAbstract_D7.dpk b/DataAbstract_D7/DataAbstract_D7.dpk new file mode 100644 index 0000000..82aecbb --- /dev/null +++ b/DataAbstract_D7/DataAbstract_D7.dpk @@ -0,0 +1,57 @@ +package DataAbstract_D7; + +{$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} +{$RUNONLY} +{$IMPLICITBUILD OFF} + +requires + vcl, + rtl, + dbrtl, + dsnap; + +contains + uDADataTable, + uDABINAdapter, + uDAScriptingProvider, + uDACDSDataTable, + uDARegExpr, + uDAInterfaces, + uDARes, + uDAClasses, + uDAEngine, + uDAHelpers, + uDAInterfacesEx, + uDAMacros, + uDAUtils, + uDADriverManager, + uDASupportClasses, + uDAXMLUtils, + DataAbstract_Intf, + uDAClientDataModule, + uDABusinessProcessor, + uDAOracleInterfaces, + uDADesigntimeCall; + +end. diff --git a/DataAbstract_D7/DataAbstract_D7.drc b/DataAbstract_D7/DataAbstract_D7.drc new file mode 100644 index 0000000..a81d7c4 --- /dev/null +++ b/DataAbstract_D7/DataAbstract_D7.drc @@ -0,0 +1,10 @@ +/* VER150 + Generated by the Borland Delphi Pascal Compiler + because -GD or --drc was supplied to the compiler. + + This file contains compiler-generated resources that + were bound to the executable. + If this file is empty, then no compiler-generated + resources were bound to the produced executable. +*/ + diff --git a/DataAbstract_D7/DataAbstract_D7.res b/DataAbstract_D7/DataAbstract_D7.res new file mode 100644 index 0000000..ec5f233 Binary files /dev/null and b/DataAbstract_D7/DataAbstract_D7.res differ diff --git a/FactuGES_D7.bdsgroup b/FactuGES_D7.bdsgroup new file mode 100644 index 0000000..6837ea3 --- /dev/null +++ b/FactuGES_D7.bdsgroup @@ -0,0 +1,43 @@ + + + + + + + + + + + + + DataAbstract_D7\DataAbstract_D7.bdsproj + Base\BaseD7.bdsproj + Usuarios\Usuarios.bdsproj + Configuracion\Configuracion.bdsproj + Modulos\Contactos\Cliente\Contactos.bdsproj + Modulos\Intervalos\Cliente\Intervalos.bdsproj + Modulos\Documentos asociados\DocumentosAsociados.bdsproj + Modulos\Cuentas\Cliente\Cuentas.bdsproj + Modulos\Almacenes\Cliente\Almacenes.bdsproj + Modulos\Asientos\Cliente\Asientos.bdsproj + Modulos\Presupuestos\Cliente\Presupuestos_Intf.bdsproj + Modulos\Montajes\Cliente\Montajes_Intf.bdsproj + Modulos\Pagos\Cliente\Pagos.bdsproj + Modulos\Presupuestos\Cliente\Presupuestos.bdsproj + Modulos\Albaranes de cliente\Cliente\AlbaranesCliente.bdsproj + Modulos\Pedidos a proveedor\Cliente\PedidosProveedor.bdsproj + Modulos\Montajes\Cliente\PedidosMontaje.bdsproj + Modulos\Articulos\Cliente\Articulos.bdsproj + Modulos\Montajes\Cliente\ArticulosMontaje.bdsproj + Modulos\Montajes\Cliente\Montajes_Impl.bdsproj + Modulos\Facturas de cliente\Cliente\FacturasCliente.bdsproj + Modulos\Facturas de proveedor\Cliente\FacturasProveedor.bdsproj + Modulos\Calendarios\Cliente\Calendarios.bdsproj + Cliente\FactuGES.bdsproj + Servidor\FactuGES_Server.bdsproj + DataAbstract_D7.bpl BaseD7.bpl Usuarios.bpl Configuracion.bpl Contactos.bpl Intervalos.bpl DocumentosAsociados.bpl Cuentas.bpl Almacenes.bpl Asientos.bpl Presupuestos_Intf.bpl Montajes_Intf.bpl Pagos.bpl Presupuestos.bpl AlbaranesCliente.bpl PedidosProveedor.bpl PedidosMontaje.bpl Articulos.bpl ArticulosMontaje.bpl Montajes_Impl.bpl FacturasCliente.bpl FacturasProveedor.bpl Calendarios.bpl FactuGES.exe FactuGES_Server.exe + + + + diff --git a/FactuGES_D7.bpg b/FactuGES_D7.bpg new file mode 100644 index 0000000..24dfaa4 --- /dev/null +++ b/FactuGES_D7.bpg @@ -0,0 +1,97 @@ +#------------------------------------------------------------------------------ +VERSION = BWS.01 +#------------------------------------------------------------------------------ +!ifndef ROOT +ROOT = $(MAKEDIR)\.. +!endif +#------------------------------------------------------------------------------ +MAKE = $(ROOT)\bin\make.exe -$(MAKEFLAGS) -f$** +DCC = $(ROOT)\bin\dcc32.exe $** +BRCC = $(ROOT)\bin\brcc32.exe $** +#------------------------------------------------------------------------------ +PROJECTS = DataAbstract_D7.bpl BaseD7.bpl Usuarios.bpl Configuracion.bpl \ + Contactos.bpl Intervalos.bpl DocumentosAsociados.bpl Cuentas.bpl Almacenes.bpl \ + Presupuestos_Intf.bpl Montajes_Intf.bpl Presupuestos.bpl AlbaranesCliente.bpl \ + PedidosProveedor.bpl PedidosMontaje.bpl Articulos.bpl ArticulosMontaje.bpl \ + Montajes_Impl.bpl FacturasCliente.bpl FacturasProveedor.bpl Asientos.bpl \ + Pagos.bpl Calendarios.bpl FactuGES.exe FactuGES_Server.exe +#------------------------------------------------------------------------------ +default: $(PROJECTS) +#------------------------------------------------------------------------------ + +BaseD7.bpl: Base\BaseD7.dpk + $(DCC) + +FactuGES_Server.exe: Servidor\FactuGES_Server.dpr + $(DCC) + +DataAbstract_D7.bpl: DataAbstract_D7\DataAbstract_D7.dpk + $(DCC) + +Contactos.bpl: Modulos\Contactos\Cliente\Contactos.dpk + $(DCC) + +FactuGES.exe: Cliente\FactuGES.dpr + $(DCC) + +Presupuestos_Intf.bpl: Modulos\Presupuestos\Cliente\Presupuestos_Intf.dpk + $(DCC) + +Configuracion.bpl: Configuracion\Configuracion.dpk + $(DCC) + +Usuarios.bpl: Usuarios\Usuarios.dpk + $(DCC) + +FacturasProveedor.bpl: Modulos\Facturas de proveedor\Cliente\FacturasProveedor.dpk + $(DCC) + +AlbaranesCliente.bpl: Modulos\Albaranes de cliente\Cliente\AlbaranesCliente.dpk + $(DCC) + +Almacenes.bpl: Modulos\Almacenes\Cliente\Almacenes.dpk + $(DCC) + +Montajes_Intf.bpl: Modulos\Montajes\Cliente\Montajes_Intf.dpk + $(DCC) + +Articulos.bpl: Modulos\Articulos\Cliente\Articulos.dpk + $(DCC) + +FacturasCliente.bpl: Modulos\Facturas de cliente\Cliente\FacturasCliente.dpk + $(DCC) + +PedidosProveedor.bpl: Modulos\Pedidos a proveedor\Cliente\PedidosProveedor.dpk + $(DCC) + +Montajes_Impl.bpl: Modulos\Montajes\Cliente\Montajes_Impl.dpk + $(DCC) + +PedidosMontaje.bpl: Modulos\Montajes\Cliente\PedidosMontaje.dpk + $(DCC) + +ArticulosMontaje.bpl: Modulos\Montajes\Cliente\ArticulosMontaje.dpk + $(DCC) + +Pagos.bpl: Modulos\Pagos\Cliente\Pagos.dpk + $(DCC) + +Cuentas.bpl: Modulos\Cuentas\Cliente\Cuentas.dpk + $(DCC) + +Intervalos.bpl: Modulos\Intervalos\Cliente\Intervalos.dpk + $(DCC) + +Asientos.bpl: Modulos\Asientos\Cliente\Asientos.dpk + $(DCC) + +DocumentosAsociados.bpl: Modulos\Documentos asociados\DocumentosAsociados.dpk + $(DCC) + +Calendarios.bpl: Modulos\Calendarios\Cliente\Calendarios.dpk + $(DCC) + +Presupuestos.bpl: Modulos\Presupuestos\Cliente\Presupuestos.dpk + $(DCC) + + diff --git a/Iconos/Agenda/16x16/Date-Time.png b/Iconos/Agenda/16x16/Date-Time.png new file mode 100644 index 0000000..fe95a0f Binary files /dev/null and b/Iconos/Agenda/16x16/Date-Time.png differ diff --git a/Iconos/Agenda/16x16/Thumbs.db b/Iconos/Agenda/16x16/Thumbs.db new file mode 100644 index 0000000..40b777b Binary files /dev/null and b/Iconos/Agenda/16x16/Thumbs.db differ diff --git a/Iconos/Agenda/24x24/Date-Time.png b/Iconos/Agenda/24x24/Date-Time.png new file mode 100644 index 0000000..665b7ac Binary files /dev/null and b/Iconos/Agenda/24x24/Date-Time.png differ diff --git a/Iconos/Agenda/24x24/Thumbs.db b/Iconos/Agenda/24x24/Thumbs.db new file mode 100644 index 0000000..90ce7d9 Binary files /dev/null and b/Iconos/Agenda/24x24/Thumbs.db differ diff --git a/Iconos/Agenda/28x28/Date-Time.png b/Iconos/Agenda/28x28/Date-Time.png new file mode 100644 index 0000000..90f2320 Binary files /dev/null and b/Iconos/Agenda/28x28/Date-Time.png differ diff --git a/Iconos/Agenda/28x28/Thumbs.db b/Iconos/Agenda/28x28/Thumbs.db new file mode 100644 index 0000000..0ff9e53 Binary files /dev/null and b/Iconos/Agenda/28x28/Thumbs.db differ diff --git a/Iconos/Agenda/Thumbs.db b/Iconos/Agenda/Thumbs.db new file mode 100644 index 0000000..fdd120a Binary files /dev/null and b/Iconos/Agenda/Thumbs.db differ diff --git a/Iconos/Albaranes/16x16/Letters patent.png b/Iconos/Albaranes/16x16/Letters patent.png new file mode 100644 index 0000000..2a70568 Binary files /dev/null and b/Iconos/Albaranes/16x16/Letters patent.png differ diff --git a/Iconos/Albaranes/16x16/Thumbs.db b/Iconos/Albaranes/16x16/Thumbs.db new file mode 100644 index 0000000..b7005e1 Binary files /dev/null and b/Iconos/Albaranes/16x16/Thumbs.db differ diff --git a/Iconos/Albaranes/16x16/pagado.png b/Iconos/Albaranes/16x16/pagado.png new file mode 100644 index 0000000..274231a Binary files /dev/null and b/Iconos/Albaranes/16x16/pagado.png differ diff --git a/Iconos/Albaranes/24x24/Letters patent.png b/Iconos/Albaranes/24x24/Letters patent.png new file mode 100644 index 0000000..f82a076 Binary files /dev/null and b/Iconos/Albaranes/24x24/Letters patent.png differ diff --git a/Iconos/Albaranes/24x24/Thumbs.db b/Iconos/Albaranes/24x24/Thumbs.db new file mode 100644 index 0000000..31aa274 Binary files /dev/null and b/Iconos/Albaranes/24x24/Thumbs.db differ diff --git a/Iconos/Albaranes/28x28/Letters patent.png b/Iconos/Albaranes/28x28/Letters patent.png new file mode 100644 index 0000000..4b30b6f Binary files /dev/null and b/Iconos/Albaranes/28x28/Letters patent.png differ diff --git a/Iconos/Albaranes/28x28/Thumbs.db b/Iconos/Albaranes/28x28/Thumbs.db new file mode 100644 index 0000000..6fb399e Binary files /dev/null and b/Iconos/Albaranes/28x28/Thumbs.db differ diff --git a/Iconos/Almacenes/16x16/Box-Closed-2.png b/Iconos/Almacenes/16x16/Box-Closed-2.png new file mode 100644 index 0000000..35c88b2 Binary files /dev/null and b/Iconos/Almacenes/16x16/Box-Closed-2.png differ diff --git a/Iconos/Almacenes/16x16/Thumbs.db b/Iconos/Almacenes/16x16/Thumbs.db new file mode 100644 index 0000000..8fb9b94 Binary files /dev/null and b/Iconos/Almacenes/16x16/Thumbs.db differ diff --git a/Iconos/Almacenes/16x16/nuevoalmacen.png b/Iconos/Almacenes/16x16/nuevoalmacen.png new file mode 100644 index 0000000..0d7d5b8 Binary files /dev/null and b/Iconos/Almacenes/16x16/nuevoalmacen.png differ diff --git a/Iconos/Almacenes/24x24/Box-Closed-2.png b/Iconos/Almacenes/24x24/Box-Closed-2.png new file mode 100644 index 0000000..7aeec56 Binary files /dev/null and b/Iconos/Almacenes/24x24/Box-Closed-2.png differ diff --git a/Iconos/Almacenes/24x24/Thumbs.db b/Iconos/Almacenes/24x24/Thumbs.db new file mode 100644 index 0000000..b52455f Binary files /dev/null and b/Iconos/Almacenes/24x24/Thumbs.db differ diff --git a/Iconos/Almacenes/24x24/nuevoalmacen.png b/Iconos/Almacenes/24x24/nuevoalmacen.png new file mode 100644 index 0000000..1ddabab Binary files /dev/null and b/Iconos/Almacenes/24x24/nuevoalmacen.png differ diff --git a/Iconos/Almacenes/28x28/Box-Closed-2.png b/Iconos/Almacenes/28x28/Box-Closed-2.png new file mode 100644 index 0000000..89db7f4 Binary files /dev/null and b/Iconos/Almacenes/28x28/Box-Closed-2.png differ diff --git a/Iconos/Almacenes/28x28/Thumbs.db b/Iconos/Almacenes/28x28/Thumbs.db new file mode 100644 index 0000000..b8e79c6 Binary files /dev/null and b/Iconos/Almacenes/28x28/Thumbs.db differ diff --git a/Iconos/Artículos/16x16/Insert.png b/Iconos/Artículos/16x16/Insert.png new file mode 100644 index 0000000..a6dde0f Binary files /dev/null and b/Iconos/Artículos/16x16/Insert.png differ diff --git a/Iconos/Artículos/16x16/Remove.png b/Iconos/Artículos/16x16/Remove.png new file mode 100644 index 0000000..332ae88 Binary files /dev/null and b/Iconos/Artículos/16x16/Remove.png differ diff --git a/Iconos/Artículos/16x16/Swap.png b/Iconos/Artículos/16x16/Swap.png new file mode 100644 index 0000000..bf54e00 Binary files /dev/null and b/Iconos/Artículos/16x16/Swap.png differ diff --git a/Iconos/Artículos/16x16/Thumbs.db b/Iconos/Artículos/16x16/Thumbs.db new file mode 100644 index 0000000..c9e8bc8 Binary files /dev/null and b/Iconos/Artículos/16x16/Thumbs.db differ diff --git a/Iconos/Artículos/16x16/articulos.png b/Iconos/Artículos/16x16/articulos.png new file mode 100644 index 0000000..acbaca9 Binary files /dev/null and b/Iconos/Artículos/16x16/articulos.png differ diff --git a/Iconos/Artículos/16x16/liberar.png b/Iconos/Artículos/16x16/liberar.png new file mode 100644 index 0000000..0f05e97 Binary files /dev/null and b/Iconos/Artículos/16x16/liberar.png differ diff --git a/Iconos/Artículos/16x16/recibirpedido.png b/Iconos/Artículos/16x16/recibirpedido.png new file mode 100644 index 0000000..8d0db7f Binary files /dev/null and b/Iconos/Artículos/16x16/recibirpedido.png differ diff --git a/Iconos/Artículos/16x16/reservar.png b/Iconos/Artículos/16x16/reservar.png new file mode 100644 index 0000000..475c2f8 Binary files /dev/null and b/Iconos/Artículos/16x16/reservar.png differ diff --git a/Iconos/Artículos/24x24/Insert.png b/Iconos/Artículos/24x24/Insert.png new file mode 100644 index 0000000..55fa057 Binary files /dev/null and b/Iconos/Artículos/24x24/Insert.png differ diff --git a/Iconos/Artículos/24x24/Remove.png b/Iconos/Artículos/24x24/Remove.png new file mode 100644 index 0000000..96872cd Binary files /dev/null and b/Iconos/Artículos/24x24/Remove.png differ diff --git a/Iconos/Artículos/24x24/Swap.png b/Iconos/Artículos/24x24/Swap.png new file mode 100644 index 0000000..12cece4 Binary files /dev/null and b/Iconos/Artículos/24x24/Swap.png differ diff --git a/Iconos/Artículos/24x24/Thumbs.db b/Iconos/Artículos/24x24/Thumbs.db new file mode 100644 index 0000000..497c5c6 Binary files /dev/null and b/Iconos/Artículos/24x24/Thumbs.db differ diff --git a/Iconos/Artículos/24x24/articulos.png b/Iconos/Artículos/24x24/articulos.png new file mode 100644 index 0000000..c638dfe Binary files /dev/null and b/Iconos/Artículos/24x24/articulos.png differ diff --git a/Iconos/Artículos/24x24/liberar.png b/Iconos/Artículos/24x24/liberar.png new file mode 100644 index 0000000..40be139 Binary files /dev/null and b/Iconos/Artículos/24x24/liberar.png differ diff --git a/Iconos/Artículos/24x24/recibirpedido.png b/Iconos/Artículos/24x24/recibirpedido.png new file mode 100644 index 0000000..87a39a0 Binary files /dev/null and b/Iconos/Artículos/24x24/recibirpedido.png differ diff --git a/Iconos/Artículos/24x24/reservar.png b/Iconos/Artículos/24x24/reservar.png new file mode 100644 index 0000000..a380fe5 Binary files /dev/null and b/Iconos/Artículos/24x24/reservar.png differ diff --git a/Iconos/Artículos/28x28/Insert.png b/Iconos/Artículos/28x28/Insert.png new file mode 100644 index 0000000..1cf6ee4 Binary files /dev/null and b/Iconos/Artículos/28x28/Insert.png differ diff --git a/Iconos/Artículos/28x28/Remove.png b/Iconos/Artículos/28x28/Remove.png new file mode 100644 index 0000000..f4f4bb2 Binary files /dev/null and b/Iconos/Artículos/28x28/Remove.png differ diff --git a/Iconos/Artículos/28x28/Swap.png b/Iconos/Artículos/28x28/Swap.png new file mode 100644 index 0000000..2e23a78 Binary files /dev/null and b/Iconos/Artículos/28x28/Swap.png differ diff --git a/Iconos/Artículos/28x28/Thumbs.db b/Iconos/Artículos/28x28/Thumbs.db new file mode 100644 index 0000000..93e146b Binary files /dev/null and b/Iconos/Artículos/28x28/Thumbs.db differ diff --git a/Iconos/Artículos/28x28/articulos.png b/Iconos/Artículos/28x28/articulos.png new file mode 100644 index 0000000..95147f2 Binary files /dev/null and b/Iconos/Artículos/28x28/articulos.png differ diff --git a/Iconos/Artículos/28x28/liberar.png b/Iconos/Artículos/28x28/liberar.png new file mode 100644 index 0000000..bd5c233 Binary files /dev/null and b/Iconos/Artículos/28x28/liberar.png differ diff --git a/Iconos/Artículos/28x28/recibirpedido.png b/Iconos/Artículos/28x28/recibirpedido.png new file mode 100644 index 0000000..15c5985 Binary files /dev/null and b/Iconos/Artículos/28x28/recibirpedido.png differ diff --git a/Iconos/Artículos/28x28/reservar.png b/Iconos/Artículos/28x28/reservar.png new file mode 100644 index 0000000..06ba9c5 Binary files /dev/null and b/Iconos/Artículos/28x28/reservar.png differ diff --git a/Iconos/Asientos/16x16/Cerrar.png b/Iconos/Asientos/16x16/Cerrar.png new file mode 100644 index 0000000..e0a2644 Binary files /dev/null and b/Iconos/Asientos/16x16/Cerrar.png differ diff --git a/Iconos/Asientos/16x16/Thumbs.db b/Iconos/Asientos/16x16/Thumbs.db new file mode 100644 index 0000000..9d3bfe8 Binary files /dev/null and b/Iconos/Asientos/16x16/Thumbs.db differ diff --git a/Iconos/Asientos/16x16/Tick.png b/Iconos/Asientos/16x16/Tick.png new file mode 100644 index 0000000..5d813a4 Binary files /dev/null and b/Iconos/Asientos/16x16/Tick.png differ diff --git a/Iconos/Asientos/24x24/Cerrar.png b/Iconos/Asientos/24x24/Cerrar.png new file mode 100644 index 0000000..f421f36 Binary files /dev/null and b/Iconos/Asientos/24x24/Cerrar.png differ diff --git a/Iconos/Asientos/24x24/Thumbs.db b/Iconos/Asientos/24x24/Thumbs.db new file mode 100644 index 0000000..1a6d60c Binary files /dev/null and b/Iconos/Asientos/24x24/Thumbs.db differ diff --git a/Iconos/Asientos/24x24/Tick.png b/Iconos/Asientos/24x24/Tick.png new file mode 100644 index 0000000..8712680 Binary files /dev/null and b/Iconos/Asientos/24x24/Tick.png differ diff --git a/Iconos/Asientos/28x28/Cerrar.png b/Iconos/Asientos/28x28/Cerrar.png new file mode 100644 index 0000000..f690bb7 Binary files /dev/null and b/Iconos/Asientos/28x28/Cerrar.png differ diff --git a/Iconos/Asientos/28x28/Thumbs.db b/Iconos/Asientos/28x28/Thumbs.db new file mode 100644 index 0000000..4fc4fac Binary files /dev/null and b/Iconos/Asientos/28x28/Thumbs.db differ diff --git a/Iconos/Asientos/28x28/Tick.png b/Iconos/Asientos/28x28/Tick.png new file mode 100644 index 0000000..293b401 Binary files /dev/null and b/Iconos/Asientos/28x28/Tick.png differ diff --git a/Iconos/Contactos/16x16/Box-Open-2.png b/Iconos/Contactos/16x16/Box-Open-2.png new file mode 100644 index 0000000..8e30418 Binary files /dev/null and b/Iconos/Contactos/16x16/Box-Open-2.png differ diff --git a/Iconos/Contactos/16x16/Comisiones.png b/Iconos/Contactos/16x16/Comisiones.png new file mode 100644 index 0000000..ce0f628 Binary files /dev/null and b/Iconos/Contactos/16x16/Comisiones.png differ diff --git a/Iconos/Contactos/16x16/Contact-Add.png b/Iconos/Contactos/16x16/Contact-Add.png new file mode 100644 index 0000000..28bd71c Binary files /dev/null and b/Iconos/Contactos/16x16/Contact-Add.png differ diff --git a/Iconos/Contactos/16x16/Contact-Edit.png b/Iconos/Contactos/16x16/Contact-Edit.png new file mode 100644 index 0000000..c413b8b Binary files /dev/null and b/Iconos/Contactos/16x16/Contact-Edit.png differ diff --git a/Iconos/Contactos/16x16/Contact.png b/Iconos/Contactos/16x16/Contact.png new file mode 100644 index 0000000..00e503f Binary files /dev/null and b/Iconos/Contactos/16x16/Contact.png differ diff --git a/Iconos/Contactos/16x16/Contact2.png b/Iconos/Contactos/16x16/Contact2.png new file mode 100644 index 0000000..c005eb1 Binary files /dev/null and b/Iconos/Contactos/16x16/Contact2.png differ diff --git a/Iconos/Contactos/16x16/Contact3.png b/Iconos/Contactos/16x16/Contact3.png new file mode 100644 index 0000000..38b7fcd Binary files /dev/null and b/Iconos/Contactos/16x16/Contact3.png differ diff --git a/Iconos/Contactos/16x16/Contact4.png b/Iconos/Contactos/16x16/Contact4.png new file mode 100644 index 0000000..0c12c3d Binary files /dev/null and b/Iconos/Contactos/16x16/Contact4.png differ diff --git a/Iconos/Contactos/16x16/Currency.png b/Iconos/Contactos/16x16/Currency.png new file mode 100644 index 0000000..5ecaee8 Binary files /dev/null and b/Iconos/Contactos/16x16/Currency.png differ diff --git a/Iconos/Contactos/16x16/Thumbs.db b/Iconos/Contactos/16x16/Thumbs.db new file mode 100644 index 0000000..67a6ab6 Binary files /dev/null and b/Iconos/Contactos/16x16/Thumbs.db differ diff --git a/Iconos/Contactos/16x16/User.png b/Iconos/Contactos/16x16/User.png new file mode 100644 index 0000000..ee6f2a7 Binary files /dev/null and b/Iconos/Contactos/16x16/User.png differ diff --git a/Iconos/Contactos/16x16/User2.png b/Iconos/Contactos/16x16/User2.png new file mode 100644 index 0000000..247cacf Binary files /dev/null and b/Iconos/Contactos/16x16/User2.png differ diff --git a/Iconos/Contactos/16x16/User3.png b/Iconos/Contactos/16x16/User3.png new file mode 100644 index 0000000..6a5b5ce Binary files /dev/null and b/Iconos/Contactos/16x16/User3.png differ diff --git a/Iconos/Contactos/16x16/User4.png b/Iconos/Contactos/16x16/User4.png new file mode 100644 index 0000000..d501e3a Binary files /dev/null and b/Iconos/Contactos/16x16/User4.png differ diff --git a/Iconos/Contactos/24x24/Box-Open-2.png b/Iconos/Contactos/24x24/Box-Open-2.png new file mode 100644 index 0000000..9959446 Binary files /dev/null and b/Iconos/Contactos/24x24/Box-Open-2.png differ diff --git a/Iconos/Contactos/24x24/Comisiones.png b/Iconos/Contactos/24x24/Comisiones.png new file mode 100644 index 0000000..f0be9b4 Binary files /dev/null and b/Iconos/Contactos/24x24/Comisiones.png differ diff --git a/Iconos/Contactos/24x24/Contact-Add.png b/Iconos/Contactos/24x24/Contact-Add.png new file mode 100644 index 0000000..5aefd12 Binary files /dev/null and b/Iconos/Contactos/24x24/Contact-Add.png differ diff --git a/Iconos/Contactos/24x24/Contact-Edit.png b/Iconos/Contactos/24x24/Contact-Edit.png new file mode 100644 index 0000000..4ab8651 Binary files /dev/null and b/Iconos/Contactos/24x24/Contact-Edit.png differ diff --git a/Iconos/Contactos/24x24/Contact.png b/Iconos/Contactos/24x24/Contact.png new file mode 100644 index 0000000..3272bfd Binary files /dev/null and b/Iconos/Contactos/24x24/Contact.png differ diff --git a/Iconos/Contactos/24x24/Contact2.png b/Iconos/Contactos/24x24/Contact2.png new file mode 100644 index 0000000..4a64469 Binary files /dev/null and b/Iconos/Contactos/24x24/Contact2.png differ diff --git a/Iconos/Contactos/24x24/Contact3.png b/Iconos/Contactos/24x24/Contact3.png new file mode 100644 index 0000000..8fdf023 Binary files /dev/null and b/Iconos/Contactos/24x24/Contact3.png differ diff --git a/Iconos/Contactos/24x24/Contact4.png b/Iconos/Contactos/24x24/Contact4.png new file mode 100644 index 0000000..b9b58b3 Binary files /dev/null and b/Iconos/Contactos/24x24/Contact4.png differ diff --git a/Iconos/Contactos/24x24/Currency.png b/Iconos/Contactos/24x24/Currency.png new file mode 100644 index 0000000..af28329 Binary files /dev/null and b/Iconos/Contactos/24x24/Currency.png differ diff --git a/Iconos/Contactos/24x24/Thumbs.db b/Iconos/Contactos/24x24/Thumbs.db new file mode 100644 index 0000000..554b783 Binary files /dev/null and b/Iconos/Contactos/24x24/Thumbs.db differ diff --git a/Iconos/Contactos/28x28/Box-Open-2.png b/Iconos/Contactos/28x28/Box-Open-2.png new file mode 100644 index 0000000..e88310c Binary files /dev/null and b/Iconos/Contactos/28x28/Box-Open-2.png differ diff --git a/Iconos/Contactos/28x28/Currency.png b/Iconos/Contactos/28x28/Currency.png new file mode 100644 index 0000000..0d7259c Binary files /dev/null and b/Iconos/Contactos/28x28/Currency.png differ diff --git a/Iconos/Contactos/28x28/Thumbs.db b/Iconos/Contactos/28x28/Thumbs.db new file mode 100644 index 0000000..8de7452 Binary files /dev/null and b/Iconos/Contactos/28x28/Thumbs.db differ diff --git a/Iconos/Cuentas/16x16/Book-Open.png b/Iconos/Cuentas/16x16/Book-Open.png new file mode 100644 index 0000000..8311378 Binary files /dev/null and b/Iconos/Cuentas/16x16/Book-Open.png differ diff --git a/Iconos/Cuentas/16x16/Books.png b/Iconos/Cuentas/16x16/Books.png new file mode 100644 index 0000000..eaf0f6d Binary files /dev/null and b/Iconos/Cuentas/16x16/Books.png differ diff --git a/Iconos/Cuentas/16x16/Thumbs.db b/Iconos/Cuentas/16x16/Thumbs.db new file mode 100644 index 0000000..458db83 Binary files /dev/null and b/Iconos/Cuentas/16x16/Thumbs.db differ diff --git a/Iconos/Cuentas/24x24/Book-Open.png b/Iconos/Cuentas/24x24/Book-Open.png new file mode 100644 index 0000000..e6c602e Binary files /dev/null and b/Iconos/Cuentas/24x24/Book-Open.png differ diff --git a/Iconos/Cuentas/24x24/Books.png b/Iconos/Cuentas/24x24/Books.png new file mode 100644 index 0000000..a845dfc Binary files /dev/null and b/Iconos/Cuentas/24x24/Books.png differ diff --git a/Iconos/Cuentas/24x24/Thumbs.db b/Iconos/Cuentas/24x24/Thumbs.db new file mode 100644 index 0000000..2140242 Binary files /dev/null and b/Iconos/Cuentas/24x24/Thumbs.db differ diff --git a/Iconos/Cuentas/28x28/Book-Open.png b/Iconos/Cuentas/28x28/Book-Open.png new file mode 100644 index 0000000..d7efe07 Binary files /dev/null and b/Iconos/Cuentas/28x28/Book-Open.png differ diff --git a/Iconos/Cuentas/28x28/Books.png b/Iconos/Cuentas/28x28/Books.png new file mode 100644 index 0000000..64136d3 Binary files /dev/null and b/Iconos/Cuentas/28x28/Books.png differ diff --git a/Iconos/Cuentas/28x28/Thumbs.db b/Iconos/Cuentas/28x28/Thumbs.db new file mode 100644 index 0000000..d4def72 Binary files /dev/null and b/Iconos/Cuentas/28x28/Thumbs.db differ diff --git a/Iconos/Factuges.ico b/Iconos/Factuges.ico new file mode 100644 index 0000000..9e11815 Binary files /dev/null and b/Iconos/Factuges.ico differ diff --git a/Iconos/Facturas de cliente/16x16/Invoice.png b/Iconos/Facturas de cliente/16x16/Invoice.png new file mode 100644 index 0000000..1e2e9cc Binary files /dev/null and b/Iconos/Facturas de cliente/16x16/Invoice.png differ diff --git a/Iconos/Facturas de cliente/16x16/Thumbs.db b/Iconos/Facturas de cliente/16x16/Thumbs.db new file mode 100644 index 0000000..39eb340 Binary files /dev/null and b/Iconos/Facturas de cliente/16x16/Thumbs.db differ diff --git a/Iconos/Facturas de cliente/24x24/Invoice.png b/Iconos/Facturas de cliente/24x24/Invoice.png new file mode 100644 index 0000000..c24cd70 Binary files /dev/null and b/Iconos/Facturas de cliente/24x24/Invoice.png differ diff --git a/Iconos/Facturas de cliente/24x24/Thumbs.db b/Iconos/Facturas de cliente/24x24/Thumbs.db new file mode 100644 index 0000000..a7c2af2 Binary files /dev/null and b/Iconos/Facturas de cliente/24x24/Thumbs.db differ diff --git a/Iconos/Facturas de cliente/28x28/Invoice.png b/Iconos/Facturas de cliente/28x28/Invoice.png new file mode 100644 index 0000000..045a1f7 Binary files /dev/null and b/Iconos/Facturas de cliente/28x28/Invoice.png differ diff --git a/Iconos/Facturas de cliente/28x28/Thumbs.db b/Iconos/Facturas de cliente/28x28/Thumbs.db new file mode 100644 index 0000000..e4723b6 Binary files /dev/null and b/Iconos/Facturas de cliente/28x28/Thumbs.db differ diff --git a/Iconos/Generales/16x16/09378.bmp b/Iconos/Generales/16x16/09378.bmp new file mode 100644 index 0000000..248fc74 Binary files /dev/null and b/Iconos/Generales/16x16/09378.bmp differ diff --git a/Iconos/Generales/16x16/09378.png b/Iconos/Generales/16x16/09378.png new file mode 100644 index 0000000..7e79599 Binary files /dev/null and b/Iconos/Generales/16x16/09378.png differ diff --git a/Iconos/Generales/16x16/About.png b/Iconos/Generales/16x16/About.png new file mode 100644 index 0000000..32635db Binary files /dev/null and b/Iconos/Generales/16x16/About.png differ diff --git a/Iconos/Generales/16x16/Añadir-capítulo.png b/Iconos/Generales/16x16/Añadir-capítulo.png new file mode 100644 index 0000000..16e9ab9 Binary files /dev/null and b/Iconos/Generales/16x16/Añadir-capítulo.png differ diff --git a/Iconos/Generales/16x16/Añadir-material.png b/Iconos/Generales/16x16/Añadir-material.png new file mode 100644 index 0000000..d43ef4a Binary files /dev/null and b/Iconos/Generales/16x16/Añadir-material.png differ diff --git a/Iconos/Generales/16x16/Back.png b/Iconos/Generales/16x16/Back.png new file mode 100644 index 0000000..31194b5 Binary files /dev/null and b/Iconos/Generales/16x16/Back.png differ diff --git a/Iconos/Generales/16x16/Box-Closed.png b/Iconos/Generales/16x16/Box-Closed.png new file mode 100644 index 0000000..189b83f Binary files /dev/null and b/Iconos/Generales/16x16/Box-Closed.png differ diff --git a/Iconos/Generales/16x16/Box-Open-2.png b/Iconos/Generales/16x16/Box-Open-2.png new file mode 100644 index 0000000..8e30418 Binary files /dev/null and b/Iconos/Generales/16x16/Box-Open-2.png differ diff --git a/Iconos/Generales/16x16/Card-Copy.png b/Iconos/Generales/16x16/Card-Copy.png new file mode 100644 index 0000000..0da221c Binary files /dev/null and b/Iconos/Generales/16x16/Card-Copy.png differ diff --git a/Iconos/Generales/16x16/Clear.png b/Iconos/Generales/16x16/Clear.png new file mode 100644 index 0000000..2062c27 Binary files /dev/null and b/Iconos/Generales/16x16/Clear.png differ diff --git a/Iconos/Generales/16x16/Copy.png b/Iconos/Generales/16x16/Copy.png new file mode 100644 index 0000000..7067e8d Binary files /dev/null and b/Iconos/Generales/16x16/Copy.png differ diff --git a/Iconos/Generales/16x16/Cut.png b/Iconos/Generales/16x16/Cut.png new file mode 100644 index 0000000..3bb4451 Binary files /dev/null and b/Iconos/Generales/16x16/Cut.png differ diff --git a/Iconos/Generales/16x16/Debug-Breakpoint.png b/Iconos/Generales/16x16/Debug-Breakpoint.png new file mode 100644 index 0000000..464fcd7 Binary files /dev/null and b/Iconos/Generales/16x16/Debug-Breakpoint.png differ diff --git a/Iconos/Generales/16x16/Debug-Watch-Delete.png b/Iconos/Generales/16x16/Debug-Watch-Delete.png new file mode 100644 index 0000000..8e2e6a1 Binary files /dev/null and b/Iconos/Generales/16x16/Debug-Watch-Delete.png differ diff --git a/Iconos/Generales/16x16/Debug-Watch.png b/Iconos/Generales/16x16/Debug-Watch.png new file mode 100644 index 0000000..5976f75 Binary files /dev/null and b/Iconos/Generales/16x16/Debug-Watch.png differ diff --git a/Iconos/Generales/16x16/Delete.png b/Iconos/Generales/16x16/Delete.png new file mode 100644 index 0000000..cb27f30 Binary files /dev/null and b/Iconos/Generales/16x16/Delete.png differ diff --git a/Iconos/Generales/16x16/Edit.png b/Iconos/Generales/16x16/Edit.png new file mode 100644 index 0000000..a4431dd Binary files /dev/null and b/Iconos/Generales/16x16/Edit.png differ diff --git a/Iconos/Generales/16x16/Exit.png b/Iconos/Generales/16x16/Exit.png new file mode 100644 index 0000000..21613aa Binary files /dev/null and b/Iconos/Generales/16x16/Exit.png differ diff --git a/Iconos/Generales/16x16/Forward.png b/Iconos/Generales/16x16/Forward.png new file mode 100644 index 0000000..2a17743 Binary files /dev/null and b/Iconos/Generales/16x16/Forward.png differ diff --git a/Iconos/Generales/16x16/Home.png b/Iconos/Generales/16x16/Home.png new file mode 100644 index 0000000..199e9cd Binary files /dev/null and b/Iconos/Generales/16x16/Home.png differ diff --git a/Iconos/Generales/16x16/Minus.png b/Iconos/Generales/16x16/Minus.png new file mode 100644 index 0000000..ad8a7d0 Binary files /dev/null and b/Iconos/Generales/16x16/Minus.png differ diff --git a/Iconos/Generales/16x16/Outline-Collapse.png b/Iconos/Generales/16x16/Outline-Collapse.png new file mode 100644 index 0000000..95ded08 Binary files /dev/null and b/Iconos/Generales/16x16/Outline-Collapse.png differ diff --git a/Iconos/Generales/16x16/Outline-Expand.png b/Iconos/Generales/16x16/Outline-Expand.png new file mode 100644 index 0000000..17cbe65 Binary files /dev/null and b/Iconos/Generales/16x16/Outline-Expand.png differ diff --git a/Iconos/Generales/16x16/Outline-Move Down.png b/Iconos/Generales/16x16/Outline-Move Down.png new file mode 100644 index 0000000..09fdc68 Binary files /dev/null and b/Iconos/Generales/16x16/Outline-Move Down.png differ diff --git a/Iconos/Generales/16x16/Outline-Move Up.png b/Iconos/Generales/16x16/Outline-Move Up.png new file mode 100644 index 0000000..4678fac Binary files /dev/null and b/Iconos/Generales/16x16/Outline-Move Up.png differ diff --git a/Iconos/Generales/16x16/Parcel.png b/Iconos/Generales/16x16/Parcel.png new file mode 100644 index 0000000..eb0ef92 Binary files /dev/null and b/Iconos/Generales/16x16/Parcel.png differ diff --git a/Iconos/Generales/16x16/Paste.png b/Iconos/Generales/16x16/Paste.png new file mode 100644 index 0000000..f1cbee6 Binary files /dev/null and b/Iconos/Generales/16x16/Paste.png differ diff --git a/Iconos/Generales/16x16/Plus.png b/Iconos/Generales/16x16/Plus.png new file mode 100644 index 0000000..cab9e8e Binary files /dev/null and b/Iconos/Generales/16x16/Plus.png differ diff --git a/Iconos/Generales/16x16/Preview.png b/Iconos/Generales/16x16/Preview.png new file mode 100644 index 0000000..a1ee549 Binary files /dev/null and b/Iconos/Generales/16x16/Preview.png differ diff --git a/Iconos/Generales/16x16/Print-Options.png b/Iconos/Generales/16x16/Print-Options.png new file mode 100644 index 0000000..cd0e509 Binary files /dev/null and b/Iconos/Generales/16x16/Print-Options.png differ diff --git a/Iconos/Generales/16x16/Print.png b/Iconos/Generales/16x16/Print.png new file mode 100644 index 0000000..8f029d7 Binary files /dev/null and b/Iconos/Generales/16x16/Print.png differ diff --git a/Iconos/Generales/16x16/Refresh.png b/Iconos/Generales/16x16/Refresh.png new file mode 100644 index 0000000..9ed4aac Binary files /dev/null and b/Iconos/Generales/16x16/Refresh.png differ diff --git a/Iconos/Generales/16x16/Save.png b/Iconos/Generales/16x16/Save.png new file mode 100644 index 0000000..51eb9de Binary files /dev/null and b/Iconos/Generales/16x16/Save.png differ diff --git a/Iconos/Generales/16x16/Search.png b/Iconos/Generales/16x16/Search.png new file mode 100644 index 0000000..e7a6758 Binary files /dev/null and b/Iconos/Generales/16x16/Search.png differ diff --git a/Iconos/Generales/16x16/Select All.png b/Iconos/Generales/16x16/Select All.png new file mode 100644 index 0000000..b3476eb Binary files /dev/null and b/Iconos/Generales/16x16/Select All.png differ diff --git a/Iconos/Generales/16x16/Speaking-Start.png b/Iconos/Generales/16x16/Speaking-Start.png new file mode 100644 index 0000000..935e566 Binary files /dev/null and b/Iconos/Generales/16x16/Speaking-Start.png differ diff --git a/Iconos/Generales/16x16/Sum-2.png b/Iconos/Generales/16x16/Sum-2.png new file mode 100644 index 0000000..6e5d8e9 Binary files /dev/null and b/Iconos/Generales/16x16/Sum-2.png differ diff --git a/Iconos/Generales/16x16/Table-Search.png b/Iconos/Generales/16x16/Table-Search.png new file mode 100644 index 0000000..be8bf80 Binary files /dev/null and b/Iconos/Generales/16x16/Table-Search.png differ diff --git a/Iconos/Generales/16x16/Thumbs.db b/Iconos/Generales/16x16/Thumbs.db new file mode 100644 index 0000000..34a958c Binary files /dev/null and b/Iconos/Generales/16x16/Thumbs.db differ diff --git a/Iconos/Generales/16x16/Total-capítulo.png b/Iconos/Generales/16x16/Total-capítulo.png new file mode 100644 index 0000000..4f721ba Binary files /dev/null and b/Iconos/Generales/16x16/Total-capítulo.png differ diff --git a/Iconos/Generales/16x16/Título-capítulo.png b/Iconos/Generales/16x16/Título-capítulo.png new file mode 100644 index 0000000..4eb60d9 Binary files /dev/null and b/Iconos/Generales/16x16/Título-capítulo.png differ diff --git a/Iconos/Generales/16x16/Undo.png b/Iconos/Generales/16x16/Undo.png new file mode 100644 index 0000000..114cf33 Binary files /dev/null and b/Iconos/Generales/16x16/Undo.png differ diff --git a/Iconos/Generales/16x16/View-One Page.png b/Iconos/Generales/16x16/View-One Page.png new file mode 100644 index 0000000..7573d11 Binary files /dev/null and b/Iconos/Generales/16x16/View-One Page.png differ diff --git a/Iconos/Generales/16x16/View-Page Width.png b/Iconos/Generales/16x16/View-Page Width.png new file mode 100644 index 0000000..2ad4e8e Binary files /dev/null and b/Iconos/Generales/16x16/View-Page Width.png differ diff --git a/Iconos/Generales/16x16/Warning.png b/Iconos/Generales/16x16/Warning.png new file mode 100644 index 0000000..0fca356 Binary files /dev/null and b/Iconos/Generales/16x16/Warning.png differ diff --git a/Iconos/Generales/16x16/Zoom-In.png b/Iconos/Generales/16x16/Zoom-In.png new file mode 100644 index 0000000..812c814 Binary files /dev/null and b/Iconos/Generales/16x16/Zoom-In.png differ diff --git a/Iconos/Generales/16x16/Zoom-Out.png b/Iconos/Generales/16x16/Zoom-Out.png new file mode 100644 index 0000000..e6ccf65 Binary files /dev/null and b/Iconos/Generales/16x16/Zoom-Out.png differ diff --git a/Iconos/Generales/16x16/db-Next-2.png b/Iconos/Generales/16x16/db-Next-2.png new file mode 100644 index 0000000..759e9ee Binary files /dev/null and b/Iconos/Generales/16x16/db-Next-2.png differ diff --git a/Iconos/Generales/16x16/db-Previous-2.png b/Iconos/Generales/16x16/db-Previous-2.png new file mode 100644 index 0000000..f673f28 Binary files /dev/null and b/Iconos/Generales/16x16/db-Previous-2.png differ diff --git a/Iconos/Generales/16x16/db-first-2.png b/Iconos/Generales/16x16/db-first-2.png new file mode 100644 index 0000000..7274025 Binary files /dev/null and b/Iconos/Generales/16x16/db-first-2.png differ diff --git a/Iconos/Generales/16x16/db-last-2.png b/Iconos/Generales/16x16/db-last-2.png new file mode 100644 index 0000000..bfb5d67 Binary files /dev/null and b/Iconos/Generales/16x16/db-last-2.png differ diff --git a/Iconos/Generales/24x24/About.png b/Iconos/Generales/24x24/About.png new file mode 100644 index 0000000..5d0ba3e Binary files /dev/null and b/Iconos/Generales/24x24/About.png differ diff --git a/Iconos/Generales/24x24/Back.png b/Iconos/Generales/24x24/Back.png new file mode 100644 index 0000000..1cd4d31 Binary files /dev/null and b/Iconos/Generales/24x24/Back.png differ diff --git a/Iconos/Generales/24x24/Box-Open-2.png b/Iconos/Generales/24x24/Box-Open-2.png new file mode 100644 index 0000000..9959446 Binary files /dev/null and b/Iconos/Generales/24x24/Box-Open-2.png differ diff --git a/Iconos/Generales/24x24/Card-Copy.png b/Iconos/Generales/24x24/Card-Copy.png new file mode 100644 index 0000000..ee4b76f Binary files /dev/null and b/Iconos/Generales/24x24/Card-Copy.png differ diff --git a/Iconos/Generales/24x24/Clear.png b/Iconos/Generales/24x24/Clear.png new file mode 100644 index 0000000..4ce31c8 Binary files /dev/null and b/Iconos/Generales/24x24/Clear.png differ diff --git a/Iconos/Generales/24x24/Copy.png b/Iconos/Generales/24x24/Copy.png new file mode 100644 index 0000000..9bf2618 Binary files /dev/null and b/Iconos/Generales/24x24/Copy.png differ diff --git a/Iconos/Generales/24x24/Cut.png b/Iconos/Generales/24x24/Cut.png new file mode 100644 index 0000000..b6e6529 Binary files /dev/null and b/Iconos/Generales/24x24/Cut.png differ diff --git a/Iconos/Generales/24x24/Debug-Breakpoint.png b/Iconos/Generales/24x24/Debug-Breakpoint.png new file mode 100644 index 0000000..16e4542 Binary files /dev/null and b/Iconos/Generales/24x24/Debug-Breakpoint.png differ diff --git a/Iconos/Generales/24x24/Debug-Watch-Delete.png b/Iconos/Generales/24x24/Debug-Watch-Delete.png new file mode 100644 index 0000000..89ae7bd Binary files /dev/null and b/Iconos/Generales/24x24/Debug-Watch-Delete.png differ diff --git a/Iconos/Generales/24x24/Debug-Watch.png b/Iconos/Generales/24x24/Debug-Watch.png new file mode 100644 index 0000000..547428e Binary files /dev/null and b/Iconos/Generales/24x24/Debug-Watch.png differ diff --git a/Iconos/Generales/24x24/Delete.png b/Iconos/Generales/24x24/Delete.png new file mode 100644 index 0000000..a169184 Binary files /dev/null and b/Iconos/Generales/24x24/Delete.png differ diff --git a/Iconos/Generales/24x24/Edit.png b/Iconos/Generales/24x24/Edit.png new file mode 100644 index 0000000..f39269e Binary files /dev/null and b/Iconos/Generales/24x24/Edit.png differ diff --git a/Iconos/Generales/24x24/Exit.png b/Iconos/Generales/24x24/Exit.png new file mode 100644 index 0000000..70eadf9 Binary files /dev/null and b/Iconos/Generales/24x24/Exit.png differ diff --git a/Iconos/Generales/24x24/Forward.png b/Iconos/Generales/24x24/Forward.png new file mode 100644 index 0000000..2ceec67 Binary files /dev/null and b/Iconos/Generales/24x24/Forward.png differ diff --git a/Iconos/Generales/24x24/Home.png b/Iconos/Generales/24x24/Home.png new file mode 100644 index 0000000..96b8c87 Binary files /dev/null and b/Iconos/Generales/24x24/Home.png differ diff --git a/Iconos/Generales/24x24/Minus.png b/Iconos/Generales/24x24/Minus.png new file mode 100644 index 0000000..1b2257f Binary files /dev/null and b/Iconos/Generales/24x24/Minus.png differ diff --git a/Iconos/Generales/24x24/Outline-Collapse.png b/Iconos/Generales/24x24/Outline-Collapse.png new file mode 100644 index 0000000..0e7c2cc Binary files /dev/null and b/Iconos/Generales/24x24/Outline-Collapse.png differ diff --git a/Iconos/Generales/24x24/Outline-Expand.png b/Iconos/Generales/24x24/Outline-Expand.png new file mode 100644 index 0000000..c643a7c Binary files /dev/null and b/Iconos/Generales/24x24/Outline-Expand.png differ diff --git a/Iconos/Generales/24x24/Outline-Move Down.png b/Iconos/Generales/24x24/Outline-Move Down.png new file mode 100644 index 0000000..65aaa61 Binary files /dev/null and b/Iconos/Generales/24x24/Outline-Move Down.png differ diff --git a/Iconos/Generales/24x24/Outline-Move Up.png b/Iconos/Generales/24x24/Outline-Move Up.png new file mode 100644 index 0000000..3dc2673 Binary files /dev/null and b/Iconos/Generales/24x24/Outline-Move Up.png differ diff --git a/Iconos/Generales/24x24/Paste.png b/Iconos/Generales/24x24/Paste.png new file mode 100644 index 0000000..9b4c3f0 Binary files /dev/null and b/Iconos/Generales/24x24/Paste.png differ diff --git a/Iconos/Generales/24x24/Plus.png b/Iconos/Generales/24x24/Plus.png new file mode 100644 index 0000000..f60ef53 Binary files /dev/null and b/Iconos/Generales/24x24/Plus.png differ diff --git a/Iconos/Generales/24x24/Preview.png b/Iconos/Generales/24x24/Preview.png new file mode 100644 index 0000000..4d185c1 Binary files /dev/null and b/Iconos/Generales/24x24/Preview.png differ diff --git a/Iconos/Generales/24x24/Print-Options.png b/Iconos/Generales/24x24/Print-Options.png new file mode 100644 index 0000000..b97b98c Binary files /dev/null and b/Iconos/Generales/24x24/Print-Options.png differ diff --git a/Iconos/Generales/24x24/Print.png b/Iconos/Generales/24x24/Print.png new file mode 100644 index 0000000..3f6e390 Binary files /dev/null and b/Iconos/Generales/24x24/Print.png differ diff --git a/Iconos/Generales/24x24/Refresh.png b/Iconos/Generales/24x24/Refresh.png new file mode 100644 index 0000000..03cacdf Binary files /dev/null and b/Iconos/Generales/24x24/Refresh.png differ diff --git a/Iconos/Generales/24x24/Save.png b/Iconos/Generales/24x24/Save.png new file mode 100644 index 0000000..56cc714 Binary files /dev/null and b/Iconos/Generales/24x24/Save.png differ diff --git a/Iconos/Generales/24x24/Search.png b/Iconos/Generales/24x24/Search.png new file mode 100644 index 0000000..3af96da Binary files /dev/null and b/Iconos/Generales/24x24/Search.png differ diff --git a/Iconos/Generales/24x24/Select All.png b/Iconos/Generales/24x24/Select All.png new file mode 100644 index 0000000..5632ed5 Binary files /dev/null and b/Iconos/Generales/24x24/Select All.png differ diff --git a/Iconos/Generales/24x24/Speaking-Start.png b/Iconos/Generales/24x24/Speaking-Start.png new file mode 100644 index 0000000..a02336a Binary files /dev/null and b/Iconos/Generales/24x24/Speaking-Start.png differ diff --git a/Iconos/Generales/24x24/Sum-2.png b/Iconos/Generales/24x24/Sum-2.png new file mode 100644 index 0000000..51a90c6 Binary files /dev/null and b/Iconos/Generales/24x24/Sum-2.png differ diff --git a/Iconos/Generales/24x24/Table-Search.png b/Iconos/Generales/24x24/Table-Search.png new file mode 100644 index 0000000..b145e04 Binary files /dev/null and b/Iconos/Generales/24x24/Table-Search.png differ diff --git a/Iconos/Generales/24x24/Thumbs.db b/Iconos/Generales/24x24/Thumbs.db new file mode 100644 index 0000000..7557c59 Binary files /dev/null and b/Iconos/Generales/24x24/Thumbs.db differ diff --git a/Iconos/Generales/24x24/Undo.png b/Iconos/Generales/24x24/Undo.png new file mode 100644 index 0000000..0fe4cc9 Binary files /dev/null and b/Iconos/Generales/24x24/Undo.png differ diff --git a/Iconos/Generales/24x24/View-One Page.png b/Iconos/Generales/24x24/View-One Page.png new file mode 100644 index 0000000..b66609e Binary files /dev/null and b/Iconos/Generales/24x24/View-One Page.png differ diff --git a/Iconos/Generales/24x24/View-Page Width.png b/Iconos/Generales/24x24/View-Page Width.png new file mode 100644 index 0000000..760a323 Binary files /dev/null and b/Iconos/Generales/24x24/View-Page Width.png differ diff --git a/Iconos/Generales/24x24/Warning.png b/Iconos/Generales/24x24/Warning.png new file mode 100644 index 0000000..e674c1f Binary files /dev/null and b/Iconos/Generales/24x24/Warning.png differ diff --git a/Iconos/Generales/24x24/Zoom-In.png b/Iconos/Generales/24x24/Zoom-In.png new file mode 100644 index 0000000..131feed Binary files /dev/null and b/Iconos/Generales/24x24/Zoom-In.png differ diff --git a/Iconos/Generales/24x24/Zoom-Out.png b/Iconos/Generales/24x24/Zoom-Out.png new file mode 100644 index 0000000..26cf347 Binary files /dev/null and b/Iconos/Generales/24x24/Zoom-Out.png differ diff --git a/Iconos/Generales/24x24/db-First-2.png b/Iconos/Generales/24x24/db-First-2.png new file mode 100644 index 0000000..c36c2ea Binary files /dev/null and b/Iconos/Generales/24x24/db-First-2.png differ diff --git a/Iconos/Generales/24x24/db-Last-2.png b/Iconos/Generales/24x24/db-Last-2.png new file mode 100644 index 0000000..97292c3 Binary files /dev/null and b/Iconos/Generales/24x24/db-Last-2.png differ diff --git a/Iconos/Generales/24x24/db-Next-2.png b/Iconos/Generales/24x24/db-Next-2.png new file mode 100644 index 0000000..d23efc7 Binary files /dev/null and b/Iconos/Generales/24x24/db-Next-2.png differ diff --git a/Iconos/Generales/24x24/db-Previous-2.png b/Iconos/Generales/24x24/db-Previous-2.png new file mode 100644 index 0000000..7c11e16 Binary files /dev/null and b/Iconos/Generales/24x24/db-Previous-2.png differ diff --git a/Iconos/Generales/28x28/Box-Open-2.png b/Iconos/Generales/28x28/Box-Open-2.png new file mode 100644 index 0000000..e88310c Binary files /dev/null and b/Iconos/Generales/28x28/Box-Open-2.png differ diff --git a/Iconos/Generales/28x28/Card-Copy.png b/Iconos/Generales/28x28/Card-Copy.png new file mode 100644 index 0000000..60566d1 Binary files /dev/null and b/Iconos/Generales/28x28/Card-Copy.png differ diff --git a/Iconos/Generales/28x28/Debug-Watch-Delete.png b/Iconos/Generales/28x28/Debug-Watch-Delete.png new file mode 100644 index 0000000..faf46e8 Binary files /dev/null and b/Iconos/Generales/28x28/Debug-Watch-Delete.png differ diff --git a/Iconos/Generales/28x28/Debug-Watch.png b/Iconos/Generales/28x28/Debug-Watch.png new file mode 100644 index 0000000..31c568f Binary files /dev/null and b/Iconos/Generales/28x28/Debug-Watch.png differ diff --git a/Iconos/Generales/28x28/Home.png b/Iconos/Generales/28x28/Home.png new file mode 100644 index 0000000..f89327a Binary files /dev/null and b/Iconos/Generales/28x28/Home.png differ diff --git a/Iconos/Generales/28x28/Outline-Move Down.png b/Iconos/Generales/28x28/Outline-Move Down.png new file mode 100644 index 0000000..eb2aa92 Binary files /dev/null and b/Iconos/Generales/28x28/Outline-Move Down.png differ diff --git a/Iconos/Generales/28x28/Outline-Move Up.png b/Iconos/Generales/28x28/Outline-Move Up.png new file mode 100644 index 0000000..4397959 Binary files /dev/null and b/Iconos/Generales/28x28/Outline-Move Up.png differ diff --git a/Iconos/Generales/28x28/Speaking-Start.png b/Iconos/Generales/28x28/Speaking-Start.png new file mode 100644 index 0000000..52294bb Binary files /dev/null and b/Iconos/Generales/28x28/Speaking-Start.png differ diff --git a/Iconos/Generales/28x28/Sum-2.png b/Iconos/Generales/28x28/Sum-2.png new file mode 100644 index 0000000..0508feb Binary files /dev/null and b/Iconos/Generales/28x28/Sum-2.png differ diff --git a/Iconos/Generales/28x28/Table-Search.png b/Iconos/Generales/28x28/Table-Search.png new file mode 100644 index 0000000..bb23481 Binary files /dev/null and b/Iconos/Generales/28x28/Table-Search.png differ diff --git a/Iconos/Generales/28x28/Thumbs.db b/Iconos/Generales/28x28/Thumbs.db new file mode 100644 index 0000000..c184efc Binary files /dev/null and b/Iconos/Generales/28x28/Thumbs.db differ diff --git a/Iconos/Generales/28x28/Warning.png b/Iconos/Generales/28x28/Warning.png new file mode 100644 index 0000000..19aec79 Binary files /dev/null and b/Iconos/Generales/28x28/Warning.png differ diff --git a/Iconos/Montajes/16x16/Document-Labels.png b/Iconos/Montajes/16x16/Document-Labels.png new file mode 100644 index 0000000..a6fa82b Binary files /dev/null and b/Iconos/Montajes/16x16/Document-Labels.png differ diff --git a/Iconos/Montajes/16x16/Thumbs.db b/Iconos/Montajes/16x16/Thumbs.db new file mode 100644 index 0000000..7181991 Binary files /dev/null and b/Iconos/Montajes/16x16/Thumbs.db differ diff --git a/Iconos/Montajes/16x16/Tools.png b/Iconos/Montajes/16x16/Tools.png new file mode 100644 index 0000000..21a2797 Binary files /dev/null and b/Iconos/Montajes/16x16/Tools.png differ diff --git a/Iconos/Montajes/24x24/Document-Labels.png b/Iconos/Montajes/24x24/Document-Labels.png new file mode 100644 index 0000000..291dbb6 Binary files /dev/null and b/Iconos/Montajes/24x24/Document-Labels.png differ diff --git a/Iconos/Montajes/24x24/Thumbs.db b/Iconos/Montajes/24x24/Thumbs.db new file mode 100644 index 0000000..8844d0e Binary files /dev/null and b/Iconos/Montajes/24x24/Thumbs.db differ diff --git a/Iconos/Montajes/24x24/Tools.png b/Iconos/Montajes/24x24/Tools.png new file mode 100644 index 0000000..f682a14 Binary files /dev/null and b/Iconos/Montajes/24x24/Tools.png differ diff --git a/Iconos/Montajes/28x28/Document-Labels.png b/Iconos/Montajes/28x28/Document-Labels.png new file mode 100644 index 0000000..cdf699d Binary files /dev/null and b/Iconos/Montajes/28x28/Document-Labels.png differ diff --git a/Iconos/Montajes/28x28/Thumbs.db b/Iconos/Montajes/28x28/Thumbs.db new file mode 100644 index 0000000..bca3944 Binary files /dev/null and b/Iconos/Montajes/28x28/Thumbs.db differ diff --git a/Iconos/Montajes/28x28/Tools.png b/Iconos/Montajes/28x28/Tools.png new file mode 100644 index 0000000..74aa0b1 Binary files /dev/null and b/Iconos/Montajes/28x28/Tools.png differ diff --git a/Iconos/Pagos/16x16/Currency.png b/Iconos/Pagos/16x16/Currency.png new file mode 100644 index 0000000..5ecaee8 Binary files /dev/null and b/Iconos/Pagos/16x16/Currency.png differ diff --git a/Iconos/Pagos/16x16/Thumbs.db b/Iconos/Pagos/16x16/Thumbs.db new file mode 100644 index 0000000..c5a1f33 Binary files /dev/null and b/Iconos/Pagos/16x16/Thumbs.db differ diff --git a/Iconos/Pagos/16x16/pagado.png b/Iconos/Pagos/16x16/pagado.png new file mode 100644 index 0000000..37feab5 Binary files /dev/null and b/Iconos/Pagos/16x16/pagado.png differ diff --git a/Iconos/Pagos/24x24/Currency.png b/Iconos/Pagos/24x24/Currency.png new file mode 100644 index 0000000..af28329 Binary files /dev/null and b/Iconos/Pagos/24x24/Currency.png differ diff --git a/Iconos/Pagos/24x24/pagado.png b/Iconos/Pagos/24x24/pagado.png new file mode 100644 index 0000000..d986e6c Binary files /dev/null and b/Iconos/Pagos/24x24/pagado.png differ diff --git a/Iconos/Pagos/28x28/Thumbs.db b/Iconos/Pagos/28x28/Thumbs.db new file mode 100644 index 0000000..b3322aa Binary files /dev/null and b/Iconos/Pagos/28x28/Thumbs.db differ diff --git a/Iconos/Pagos/28x28/pagado.png b/Iconos/Pagos/28x28/pagado.png new file mode 100644 index 0000000..d8980b6 Binary files /dev/null and b/Iconos/Pagos/28x28/pagado.png differ diff --git a/Iconos/Pedidos a proveedor/16x16/Complete-0.png b/Iconos/Pedidos a proveedor/16x16/Complete-0.png new file mode 100644 index 0000000..7531e3f Binary files /dev/null and b/Iconos/Pedidos a proveedor/16x16/Complete-0.png differ diff --git a/Iconos/Pedidos a proveedor/16x16/Complete-100.png b/Iconos/Pedidos a proveedor/16x16/Complete-100.png new file mode 100644 index 0000000..7e7fbb7 Binary files /dev/null and b/Iconos/Pedidos a proveedor/16x16/Complete-100.png differ diff --git a/Iconos/Pedidos a proveedor/16x16/Complete-50.png b/Iconos/Pedidos a proveedor/16x16/Complete-50.png new file mode 100644 index 0000000..1972bb7 Binary files /dev/null and b/Iconos/Pedidos a proveedor/16x16/Complete-50.png differ diff --git a/Iconos/Pedidos a proveedor/16x16/Thumbs.db b/Iconos/Pedidos a proveedor/16x16/Thumbs.db new file mode 100644 index 0000000..1337668 Binary files /dev/null and b/Iconos/Pedidos a proveedor/16x16/Thumbs.db differ diff --git a/Iconos/Pedidos a proveedor/16x16/pedidos.png b/Iconos/Pedidos a proveedor/16x16/pedidos.png new file mode 100644 index 0000000..bc972c8 Binary files /dev/null and b/Iconos/Pedidos a proveedor/16x16/pedidos.png differ diff --git a/Iconos/Pedidos a proveedor/24x24/Complete-0.png b/Iconos/Pedidos a proveedor/24x24/Complete-0.png new file mode 100644 index 0000000..4988815 Binary files /dev/null and b/Iconos/Pedidos a proveedor/24x24/Complete-0.png differ diff --git a/Iconos/Pedidos a proveedor/24x24/Complete-100.png b/Iconos/Pedidos a proveedor/24x24/Complete-100.png new file mode 100644 index 0000000..fe23a48 Binary files /dev/null and b/Iconos/Pedidos a proveedor/24x24/Complete-100.png differ diff --git a/Iconos/Pedidos a proveedor/24x24/Complete-50.png b/Iconos/Pedidos a proveedor/24x24/Complete-50.png new file mode 100644 index 0000000..147621b Binary files /dev/null and b/Iconos/Pedidos a proveedor/24x24/Complete-50.png differ diff --git a/Iconos/Pedidos a proveedor/24x24/Thumbs.db b/Iconos/Pedidos a proveedor/24x24/Thumbs.db new file mode 100644 index 0000000..f07c882 Binary files /dev/null and b/Iconos/Pedidos a proveedor/24x24/Thumbs.db differ diff --git a/Iconos/Pedidos a proveedor/24x24/pedido.png b/Iconos/Pedidos a proveedor/24x24/pedido.png new file mode 100644 index 0000000..1939938 Binary files /dev/null and b/Iconos/Pedidos a proveedor/24x24/pedido.png differ diff --git a/Iconos/Pedidos a proveedor/28x28/Complete-0.png b/Iconos/Pedidos a proveedor/28x28/Complete-0.png new file mode 100644 index 0000000..fa5ca6c Binary files /dev/null and b/Iconos/Pedidos a proveedor/28x28/Complete-0.png differ diff --git a/Iconos/Pedidos a proveedor/28x28/Complete-100.png b/Iconos/Pedidos a proveedor/28x28/Complete-100.png new file mode 100644 index 0000000..166d0c3 Binary files /dev/null and b/Iconos/Pedidos a proveedor/28x28/Complete-100.png differ diff --git a/Iconos/Pedidos a proveedor/28x28/Complete-50.png b/Iconos/Pedidos a proveedor/28x28/Complete-50.png new file mode 100644 index 0000000..5c81e92 Binary files /dev/null and b/Iconos/Pedidos a proveedor/28x28/Complete-50.png differ diff --git a/Iconos/Pedidos a proveedor/28x28/Thumbs.db b/Iconos/Pedidos a proveedor/28x28/Thumbs.db new file mode 100644 index 0000000..7da0f2c Binary files /dev/null and b/Iconos/Pedidos a proveedor/28x28/Thumbs.db differ diff --git a/Iconos/Pedidos a proveedor/28x28/pedido.png b/Iconos/Pedidos a proveedor/28x28/pedido.png new file mode 100644 index 0000000..d7c4b43 Binary files /dev/null and b/Iconos/Pedidos a proveedor/28x28/pedido.png differ diff --git a/Iconos/Presupuestos/16x16/Aumentar_letra.png b/Iconos/Presupuestos/16x16/Aumentar_letra.png new file mode 100644 index 0000000..141ebc4 Binary files /dev/null and b/Iconos/Presupuestos/16x16/Aumentar_letra.png differ diff --git a/Iconos/Presupuestos/16x16/Budget.png b/Iconos/Presupuestos/16x16/Budget.png new file mode 100644 index 0000000..095f2f1 Binary files /dev/null and b/Iconos/Presupuestos/16x16/Budget.png differ diff --git a/Iconos/Presupuestos/16x16/Delete-Blue.png b/Iconos/Presupuestos/16x16/Delete-Blue.png new file mode 100644 index 0000000..33a2a14 Binary files /dev/null and b/Iconos/Presupuestos/16x16/Delete-Blue.png differ diff --git a/Iconos/Presupuestos/16x16/Disminuir_letra.png b/Iconos/Presupuestos/16x16/Disminuir_letra.png new file mode 100644 index 0000000..2febedb Binary files /dev/null and b/Iconos/Presupuestos/16x16/Disminuir_letra.png differ diff --git a/Iconos/Presupuestos/16x16/Thumbs.db b/Iconos/Presupuestos/16x16/Thumbs.db new file mode 100644 index 0000000..22247dc Binary files /dev/null and b/Iconos/Presupuestos/16x16/Thumbs.db differ diff --git a/Iconos/Presupuestos/16x16/Tick.png b/Iconos/Presupuestos/16x16/Tick.png new file mode 100644 index 0000000..264d020 Binary files /dev/null and b/Iconos/Presupuestos/16x16/Tick.png differ diff --git a/Iconos/Presupuestos/24x24/Budget.png b/Iconos/Presupuestos/24x24/Budget.png new file mode 100644 index 0000000..6d01c8d Binary files /dev/null and b/Iconos/Presupuestos/24x24/Budget.png differ diff --git a/Iconos/Presupuestos/24x24/Delete-Blue.png b/Iconos/Presupuestos/24x24/Delete-Blue.png new file mode 100644 index 0000000..6546282 Binary files /dev/null and b/Iconos/Presupuestos/24x24/Delete-Blue.png differ diff --git a/Iconos/Presupuestos/24x24/Thumbs.db b/Iconos/Presupuestos/24x24/Thumbs.db new file mode 100644 index 0000000..98e4675 Binary files /dev/null and b/Iconos/Presupuestos/24x24/Thumbs.db differ diff --git a/Iconos/Presupuestos/24x24/Tick.png b/Iconos/Presupuestos/24x24/Tick.png new file mode 100644 index 0000000..8554e1f Binary files /dev/null and b/Iconos/Presupuestos/24x24/Tick.png differ diff --git a/Iconos/Presupuestos/28x28/Budget.png b/Iconos/Presupuestos/28x28/Budget.png new file mode 100644 index 0000000..8f5e61e Binary files /dev/null and b/Iconos/Presupuestos/28x28/Budget.png differ diff --git a/Iconos/Presupuestos/28x28/Thumbs.db b/Iconos/Presupuestos/28x28/Thumbs.db new file mode 100644 index 0000000..cccdead Binary files /dev/null and b/Iconos/Presupuestos/28x28/Thumbs.db differ diff --git a/Iconos/Servidor/16x16/Database.png b/Iconos/Servidor/16x16/Database.png new file mode 100644 index 0000000..badb104 Binary files /dev/null and b/Iconos/Servidor/16x16/Database.png differ diff --git a/Iconos/Servidor/16x16/Thumbs.db b/Iconos/Servidor/16x16/Thumbs.db new file mode 100644 index 0000000..7769653 Binary files /dev/null and b/Iconos/Servidor/16x16/Thumbs.db differ diff --git a/Iconos/Servidor/24x24/Database.png b/Iconos/Servidor/24x24/Database.png new file mode 100644 index 0000000..cd859e1 Binary files /dev/null and b/Iconos/Servidor/24x24/Database.png differ diff --git a/Iconos/Servidor/24x24/Thumbs.db b/Iconos/Servidor/24x24/Thumbs.db new file mode 100644 index 0000000..7593ddf Binary files /dev/null and b/Iconos/Servidor/24x24/Thumbs.db differ diff --git a/Iconos/Servidor/28x28/Database.png b/Iconos/Servidor/28x28/Database.png new file mode 100644 index 0000000..26d3c56 Binary files /dev/null and b/Iconos/Servidor/28x28/Database.png differ diff --git a/Iconos/Servidor/28x28/Thumbs.db b/Iconos/Servidor/28x28/Thumbs.db new file mode 100644 index 0000000..9dab4cb Binary files /dev/null and b/Iconos/Servidor/28x28/Thumbs.db differ diff --git a/Iconos/Thumbs.db b/Iconos/Thumbs.db new file mode 100644 index 0000000..27f373e Binary files /dev/null and b/Iconos/Thumbs.db differ diff --git a/Iconos/Usuarios/16x16/Thumbs.db b/Iconos/Usuarios/16x16/Thumbs.db new file mode 100644 index 0000000..00fac8f Binary files /dev/null and b/Iconos/Usuarios/16x16/Thumbs.db differ diff --git a/Iconos/Usuarios/16x16/User-Add.png b/Iconos/Usuarios/16x16/User-Add.png new file mode 100644 index 0000000..1649f38 Binary files /dev/null and b/Iconos/Usuarios/16x16/User-Add.png differ diff --git a/Iconos/Usuarios/16x16/User-Edit.png b/Iconos/Usuarios/16x16/User-Edit.png new file mode 100644 index 0000000..a660a37 Binary files /dev/null and b/Iconos/Usuarios/16x16/User-Edit.png differ diff --git a/Iconos/Usuarios/16x16/User-Password.png b/Iconos/Usuarios/16x16/User-Password.png new file mode 100644 index 0000000..a6d8942 Binary files /dev/null and b/Iconos/Usuarios/16x16/User-Password.png differ diff --git a/Iconos/Usuarios/16x16/User-Remove.png b/Iconos/Usuarios/16x16/User-Remove.png new file mode 100644 index 0000000..5edbd1d Binary files /dev/null and b/Iconos/Usuarios/16x16/User-Remove.png differ diff --git a/Iconos/Usuarios/16x16/User.png b/Iconos/Usuarios/16x16/User.png new file mode 100644 index 0000000..ee6f2a7 Binary files /dev/null and b/Iconos/Usuarios/16x16/User.png differ diff --git a/Iconos/Usuarios/16x16/Users.png b/Iconos/Usuarios/16x16/Users.png new file mode 100644 index 0000000..c376648 Binary files /dev/null and b/Iconos/Usuarios/16x16/Users.png differ diff --git a/Iconos/Usuarios/24x24/Thumbs.db b/Iconos/Usuarios/24x24/Thumbs.db new file mode 100644 index 0000000..8bcf3e5 Binary files /dev/null and b/Iconos/Usuarios/24x24/Thumbs.db differ diff --git a/Iconos/Usuarios/24x24/User-Add.png b/Iconos/Usuarios/24x24/User-Add.png new file mode 100644 index 0000000..3616f18 Binary files /dev/null and b/Iconos/Usuarios/24x24/User-Add.png differ diff --git a/Iconos/Usuarios/24x24/User-Edit.png b/Iconos/Usuarios/24x24/User-Edit.png new file mode 100644 index 0000000..1af01ad Binary files /dev/null and b/Iconos/Usuarios/24x24/User-Edit.png differ diff --git a/Iconos/Usuarios/24x24/User-Password.png b/Iconos/Usuarios/24x24/User-Password.png new file mode 100644 index 0000000..a121a6b Binary files /dev/null and b/Iconos/Usuarios/24x24/User-Password.png differ diff --git a/Iconos/Usuarios/24x24/User-Remove.png b/Iconos/Usuarios/24x24/User-Remove.png new file mode 100644 index 0000000..b50a9da Binary files /dev/null and b/Iconos/Usuarios/24x24/User-Remove.png differ diff --git a/Iconos/Usuarios/24x24/User.png b/Iconos/Usuarios/24x24/User.png new file mode 100644 index 0000000..ddb1dd6 Binary files /dev/null and b/Iconos/Usuarios/24x24/User.png differ diff --git a/Iconos/Usuarios/24x24/Users.png b/Iconos/Usuarios/24x24/Users.png new file mode 100644 index 0000000..dbdd35c Binary files /dev/null and b/Iconos/Usuarios/24x24/Users.png differ diff --git a/Iconos/Usuarios/28x28/Thumbs.db b/Iconos/Usuarios/28x28/Thumbs.db new file mode 100644 index 0000000..af72683 Binary files /dev/null and b/Iconos/Usuarios/28x28/Thumbs.db differ diff --git a/Iconos/Usuarios/28x28/User-Add.png b/Iconos/Usuarios/28x28/User-Add.png new file mode 100644 index 0000000..76459dc Binary files /dev/null and b/Iconos/Usuarios/28x28/User-Add.png differ diff --git a/Iconos/Usuarios/28x28/User-Edit.png b/Iconos/Usuarios/28x28/User-Edit.png new file mode 100644 index 0000000..139ec63 Binary files /dev/null and b/Iconos/Usuarios/28x28/User-Edit.png differ diff --git a/Iconos/Usuarios/28x28/User-Password.png b/Iconos/Usuarios/28x28/User-Password.png new file mode 100644 index 0000000..7720bf1 Binary files /dev/null and b/Iconos/Usuarios/28x28/User-Password.png differ diff --git a/Iconos/Usuarios/28x28/User-Remove.png b/Iconos/Usuarios/28x28/User-Remove.png new file mode 100644 index 0000000..b046745 Binary files /dev/null and b/Iconos/Usuarios/28x28/User-Remove.png differ diff --git a/Iconos/Usuarios/28x28/User.png b/Iconos/Usuarios/28x28/User.png new file mode 100644 index 0000000..e389c2a Binary files /dev/null and b/Iconos/Usuarios/28x28/User.png differ diff --git a/Iconos/Usuarios/28x28/Users.png b/Iconos/Usuarios/28x28/Users.png new file mode 100644 index 0000000..4c006ba Binary files /dev/null and b/Iconos/Usuarios/28x28/Users.png differ diff --git a/Iconos/Usuarios/48x48/Thumbs.db b/Iconos/Usuarios/48x48/Thumbs.db new file mode 100644 index 0000000..fa0d375 Binary files /dev/null and b/Iconos/Usuarios/48x48/Thumbs.db differ diff --git a/Iconos/Usuarios/48x48/Users.png b/Iconos/Usuarios/48x48/Users.png new file mode 100644 index 0000000..1697dfe Binary files /dev/null and b/Iconos/Usuarios/48x48/Users.png differ diff --git a/Iconos/fac.png b/Iconos/fac.png new file mode 100644 index 0000000..3537443 Binary files /dev/null and b/Iconos/fac.png differ diff --git a/Modulos/Albaranes de cliente/Cliente/AlbaranesCliente.bdsproj b/Modulos/Albaranes de cliente/Cliente/AlbaranesCliente.bdsproj new file mode 100644 index 0000000..ef68c28 --- /dev/null +++ b/Modulos/Albaranes de cliente/Cliente/AlbaranesCliente.bdsproj @@ -0,0 +1,492 @@ + + + + + + + + + + + + AlbaranesCliente.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 3 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + Albaranes de cliente + + + + .\ + ..\..\..\Output\Cliente + .\ + $(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente;..\..\Asientos\Cliente;..\..\Cuentas\Cliente;..\..\Almacenes\Cliente + vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;CEToolsPkgd7;FR7;FRIBX7;Hydra_Core_D7;Hydra_RO_D7;fqb70;frx7;frxADO7;frxBDE7;frxDB7;frxDBX7;frxe7;frxIBX7;fs7;fsADO7;fsBDE7;fsDB7;fsIBX7;DataAbstract_Core_D7;DataAbstract_IDE_D7 + + + False + + + + + + False + + + True + False + + + + $00000000 + C:\Archivos de programa\Borland\Delphi7\Bin\ + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + diff --git a/Modulos/Albaranes de cliente/Cliente/AlbaranesCliente.cfg b/Modulos/Albaranes de cliente/Cliente/AlbaranesCliente.cfg new file mode 100644 index 0000000..639fa68 --- /dev/null +++ b/Modulos/Albaranes de cliente/Cliente/AlbaranesCliente.cfg @@ -0,0 +1,45 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O- +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-GD +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N".\" +-LE"..\..\..\Output\Cliente" +-LN".\" +-U"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente;..\..\Asientos\Cliente;..\..\Cuentas\Cliente;..\..\Almacenes\Cliente;..\..\Montajes\Cliente" +-O"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente;..\..\Asientos\Cliente;..\..\Cuentas\Cliente;..\..\Almacenes\Cliente;..\..\Montajes\Cliente" +-I"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente;..\..\Asientos\Cliente;..\..\Cuentas\Cliente;..\..\Almacenes\Cliente;..\..\Montajes\Cliente" +-R"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente;..\..\Asientos\Cliente;..\..\Cuentas\Cliente;..\..\Almacenes\Cliente;..\..\Montajes\Cliente" +-Z +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/Modulos/Albaranes de cliente/Cliente/AlbaranesCliente.dcp b/Modulos/Albaranes de cliente/Cliente/AlbaranesCliente.dcp new file mode 100644 index 0000000..a15b642 Binary files /dev/null and b/Modulos/Albaranes de cliente/Cliente/AlbaranesCliente.dcp differ diff --git a/Modulos/Albaranes de cliente/Cliente/AlbaranesCliente.dof b/Modulos/Albaranes de cliente/Cliente/AlbaranesCliente.dof new file mode 100644 index 0000000..ad7ac23 --- /dev/null +++ b/Modulos/Albaranes de cliente/Cliente/AlbaranesCliente.dof @@ -0,0 +1,523 @@ +[FileVersion] +Version=7.0 +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=0 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=1 +SymbolLibrary=1 +SymbolPlatform=1 +UnitLibrary=1 +UnitPlatform=1 +UnitDeprecated=1 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 +[Linker] +MapFile=3 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=Albaranes de cliente +[Directories] +OutputDir= +UnitOutputDir=.\ +PackageDLLOutputDir=..\..\..\Output\Cliente +PackageDCPOutputDir=.\ +SearchPath=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente;..\..\Asientos\Cliente;..\..\Cuentas\Cliente;..\..\Almacenes\Cliente;..\..\Montajes\Cliente +Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;CEToolsPkgd7;FR7;FRIBX7;Hydra_Core_D7;Hydra_RO_D7;fqb70;frx7;frxADO7;frxBDE7;frxDB7;frxDBX7;frxe7;frxIBX7;fs7;fsADO7;fsBDE7;fsDB7;fsIBX7;DataAbstract_Core_D7;DataAbstract_IDE_D7 +Conditionals= +DebugSourceDirs= +UsePackages=0 +[Parameters] +RunParams= +HostApplication= +Launcher= +UseLauncher=0 +DebugCWD= +[Language] +ActiveLang= +ProjectLang= +RootDir=C:\Archivos de programa\Borland\Delphi7\Bin\ +[Version Info] +IncludeVerInfo=1 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=3082 +CodePage=1252 +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= +[Excluded Packages] +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\cxTreeListVCLD7.bpl=ExpressQuantumTreeList 4 (VCL Edition) by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxThemeD7.bpl=Express XP Theme Manager by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\cxLibraryVCLD7.bpl=Express Cross Platform Library (VCL Edition) by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\cxExportVCLD7.bpl=Express Cross Platform Export Library (VCL Edition) by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\cxEditorsVCLD7.bpl=ExpressEditors Library 5 (VCL Edition) by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\cxDataD7.bpl=ExpressDataController by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\cxExtEditorsVCLD7.bpl=ExpressExtendedEditors Library 5 (VCL Edition) by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\cxGridVCLD7.bpl=ExpressQuantumGrid 5 (VCL Edition) by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\cxPageControlVCLD7.bpl=Express Cross Platform PageControl (VCL Edition) by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\cxSchedulerVCLD7.bpl=ExpressScheduler 2 (VCL Edition) by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxsbD7.bpl=ExpressSideBar by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxComnD7.bpl=ExpressCommonLibrary by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxBarD7.bpl=ExpressBars by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxBarDBNavD7.bpl=ExpressBars DBNavigator by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxBarExtDBItemsD7.bpl=ExpressBars extended DB items by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxBarExtItemsD7.bpl=ExpressBars extended items by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxDockingD7.bpl=ExpressDocking Library by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxLayoutControlD7.bpl=ExpressLayout Control by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxNavBarD7.bpl=ExpressNavBar by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxGDIPlusD7.bpl=ExpressGDI+ Library by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxPSCoreD7.bpl=ExpressPrinting System by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\cxVerticalGridVCLD7.bpl=ExpressVerticalGrid (VCL Edition) by Developer Express Inc. +C:\Archivos de programa\Clever Components\Database Comparer\Delphi 7\Lib\ComparerD7.bpl=Database Comparer VCL +C:\Archivos de programa\Clever Components\Database Comparer\Delphi 7\Lib\ComparerBdeD7.bpl=Database Comparer VCL BDE +C:\Archivos de programa\Clever Components\Database Comparer\Delphi 7\Lib\ComparerDBXD7.bpl=Database Comparer VCL DBX +C:\Archivos de programa\Clever Components\Database Comparer\Delphi 7\Lib\ComparerIbxD7.bpl=Database Comparer VCL IBX +C:\Archivos de programa\Clever Components\Database Comparer\Delphi 7\Lib\ComparerAdoD7.bpl=Database Comparer VCL ADO +C:\Archivos de programa\EurekaLog 5\Delphi7\ExceptionExpert7.bpl=EurekaLog 5.1.9 +C:\WINDOWS\system32\dclShX_Namespace_V3D7.bpl=(untitled) +C:\WINDOWS\system32\vclShX_Namespace_v3D7.bpl=(untitled) +[HistoryLists\hlDebugSourcePath] +Count=1 +Item0=D:\Proyectos\Componentes\GUISDK\Sources\;D:\Proyectos\Componentes\PluginSDK\Source\;D:\Proyectos\FactuGES (Estudio)\Codigo\Modulos\Contactos\Cliente;D:\Proyectos\FactuGES (Estudio)\Codigo\Modulos\Contactos\Reglas +[HistoryLists\hlUnitAliases] +Count=1 +Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +[HistoryLists\hlSearchPath] +Count=16 +Item0=..\Modulos\Presupuestos\Reglas;..\Modulos\Contactos\Reglas;..\Base;..\Configuracion;..\Usuarios;..\Modulos\Albaranes de cliente\Reglas +Item1=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\Base;..\Configuracion;..\Usuarios;..\Modulos\Intervalos;..\Modulos\Documentos asociados;..\Modulos\Contactos\Cliente;..\Modulos\Contactos\Reglas;..\Modulos\Presupuestos\Cliente;..\Modulos\Presupuestos\Reglas;..\Modulos\Albaranes de cliente\Cliente;..\Modulos\Albaranes de cliente\Reglas;..\Modulos\Facturas de cliente\Cliente;..\Modulos\Facturas de cliente\Reglas;..\Modulos\Pedidos a proveedor\Cliente;..\Modulos\Pedidos a proveedor\Reglas;..\Modulos\Facturas de proveedor\Cliente;..\Modulos\Facturas de proveedor\Reglas;..\Modulos\Montajes\Reglas;..\Modulos\Montajes\Cliente;..\Modulos\Articulos\Cliente;..\Modulos\Articulos\Reglas;..\Modulos\Almacenes\Reglas;..\Modulos\Almacenes\Cliente;..\Modulos\Pagos\Reglas;..\Modulos\Pagos\Cliente;..\Modulos\Cuentas\Reglas;..\Modulos\Cuentas\Cliente;..\Modulos\Asientos\Reglas;..\Modulos\Asientos\Cliente;..\Modulos\Calendarios\Cliente;..\Modulos\Calendarios\Reglas +Item2=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente;..\..\Asientos\Cliente;..\..\Cuentas\Cliente +Item3=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente;..\..\Asientos\Cliente +Item4=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente +Item5=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente +Item6=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente;..\..\Documentos asociados;..\..\Contactos\Cliente;..\..\Almacenes\Cliente +Item7=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados +Item8=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente;..\..\Documentos asociados;..\..\Contactos\Cliente +Item9=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente;..\..\Documentos asociados +Item10=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente +Item11=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados;..\..\Montajes\Cliente;..\..\Almacenes\Cliente +Item12=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados;..\..\Montajes\Cliente +Item13=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\Servidor +Item14=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\base;..\Modulos\Calendarios\Cliente;..\Modulos\Calendarios\Reglas +Item15=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\Base;..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios +[HistoryLists\hlUnitOutputDirectory] +Count=1 +Item0=.\ +[HistoryLists\hlOutputDirectorry] +Count=2 +Item0=..\Output\Servidor +Item1=..\Output\Cliente +[HistoryLists\hlBPLOutput] +Count=3 +Item0=..\..\..\Output\Cliente +Item1=..\Output\Cliente +Item2=..\..\Output\Cliente +[HistoryLists\hlDCPOutput] +Count=1 +Item0=.\ +[Exception Log] +EurekaLog Version=519 +Activate=1 +Activate Handle=1 +Save Log File=1 +Foreground Tab=0 +Freeze Activate=0 +Freeze Timeout=0 +Freeze Message=The application seems to be frozen. +SMTP From=eurekalog@email.com +SMTP Host= +SMTP Port=25 +SMTP UserID= +SMTP Password= +Append to Log=0 +Show TerminateBtn=1 +TerminateBtn Operation=1 +Errors Number=32 +Errors Terminate=3 +Email Address= +Email Object= +Email Send Options=0 +Output Path= +Encrypt Password= +AutoCloseDialogSecs=0 +WebSendMode=0 +SupportULR= +HTMLLayout Count=15 +HTMLLine0="%3Chtml%3E" +HTMLLine1=" %3Chead%3E" +HTMLLine2=" %3C/head%3E" +HTMLLine3=" %3Cbody TopMargin=10 LeftMargin=10%3E" +HTMLLine4=" %3Ctable width="100%%" border="0"%3E" +HTMLLine5=" %3Ctr%3E" +HTMLLine6=" %3Ctd nowrap%3E" +HTMLLine7=" %3Cfont face="Lucida Console, Courier" size="2"%3E" +HTMLLine8=" %3C%%HTML_TAG%%%3E" +HTMLLine9=" %3C/font%3E" +HTMLLine10=" %3C/td%3E" +HTMLLine11=" %3C/tr%3E" +HTMLLine12=" %3C/table%3E" +HTMLLine13=" %3C/body%3E" +HTMLLine14="%3C/html%3E" +AutoCrashOperation=1 +AutoCrashNumber=10 +AutoCrashMinutes=1 +WebURL= +WebUserID= +WebPassword= +WebPort=0 +AttachedFiles= +Count=0 +EMail Message Line Count=0 +loNoDuplicateErrors=0 +loAppendReproduceText=0 +loDeleteLogAtVersionChange=0 +loAddComputerNameInLogFileName=0 +loSaveModulesSection=1 +loSaveCPUSection=1 +soAppStartDate=1 +soAppName=1 +soAppVersionNumber=1 +soAppParameters=1 +soAppCompilationDate=1 +soExcDate=1 +soExcAddress=1 +soExcModule=1 +soExcType=1 +soExcMessage=1 +soActCtlsFormClass=1 +soActCtlsFormText=1 +soActCtlsControlClass=1 +soActCtlsControlText=1 +soCmpName=1 +soCmpUser=1 +soCmpTotalMemory=1 +soCmpFreeMemory=1 +soCmpTotalDisk=1 +soCmpFreeDisk=1 +soCmpSysUpTime=1 +soCmpProcessor=1 +soCmpDisplayMode=1 +soOSType=1 +soOSBuildN=1 +soOSUpdate=1 +soOSLanguage=1 +soNetIP=1 +soNetSubmask=1 +soNetGateway=1 +soNetDNS1=1 +soNetDNS2=1 +soNetDHCP=1 +sndShowSendDialog=1 +sndShowSuccessFailureMsg=0 +sndSendEntireLog=0 +sndSendXMLLogCopy=0 +sndSendScreenshot=0 +sndUseOnlyActiveWindow=0 +sndSendLastHTMLPage=1 +sndSendInSeparatedThread=0 +sndAddDateInFileName=0 +sndCompressAllFiles=0 +edoShowExceptionDialog=1 +edoSendEmailChecked=1 +edoAttachScreenshotChecked=1 +edoShowCopyToClipOption=1 +edoShowDetailsButton=1 +edoShowInDetailedMode=0 +edoShowInTopMostMode=0 +edoUseEurekaLogLookAndFeel=1 +csoShowDLLs=1 +csoShowBPLs=1 +csoShowBorlandThreads=1 +csoShowWindowsThreads=1 +csoShowProcedureOffset=0 +boActivateCrashDetection=0 +boPauseBorlandThreads=0 +boDoNotPauseMainThread=0 +boPauseWindowsThreads=0 +boUseMainModuleOptions=1 +boCopyLogInCaseOfError=1 +boSaveCompressedCopyInCaseOfError=0 +Count mtInformationMsgCaption=1 +mtInformationMsgCaption0="Information." +Count mtQuestionMsgCaption=1 +mtQuestionMsgCaption0="Question." +Count mtDialog_Caption=1 +mtDialog_Caption0="Error." +Count mtDialog_ErrorMsgCaption=2 +mtDialog_ErrorMsgCaption0="An error has occurred during program execution." +mtDialog_ErrorMsgCaption1="Please read the following information for further details." +Count mtDialog_GeneralCaption=1 +mtDialog_GeneralCaption0="General" +Count mtDialog_GeneralHeader=1 +mtDialog_GeneralHeader0="General Information" +Count mtDialog_CallStackCaption=1 +mtDialog_CallStackCaption0="Call Stack" +Count mtDialog_CallStackHeader=1 +mtDialog_CallStackHeader0="Call Stack Information" +Count mtDialog_ModulesCaption=1 +mtDialog_ModulesCaption0="Modules" +Count mtDialog_ModulesHeader=1 +mtDialog_ModulesHeader0="Modules Information" +Count mtDialog_CPUCaption=1 +mtDialog_CPUCaption0="CPU" +Count mtDialog_CPUHeader=1 +mtDialog_CPUHeader0="CPU Information" +Count mtDialog_CustomDataCaption=1 +mtDialog_CustomDataCaption0="Other" +Count mtDialog_CustomDataHeader=1 +mtDialog_CustomDataHeader0="Other Information" +Count mtDialog_OKButtonCaption=1 +mtDialog_OKButtonCaption0="%26OK" +Count mtDialog_TerminateButtonCaption=1 +mtDialog_TerminateButtonCaption0="%26Terminate" +Count mtDialog_RestartButtonCaption=1 +mtDialog_RestartButtonCaption0="%26Restart" +Count mtDialog_DetailsButtonCaption=1 +mtDialog_DetailsButtonCaption0="%26Details" +Count mtDialog_SendMessage=1 +mtDialog_SendMessage0="%26Send this error via Internet" +Count mtDialog_ScreenshotMessage=1 +mtDialog_ScreenshotMessage0="%26Attach a Screenshot image" +Count mtDialog_CopyMessage=1 +mtDialog_CopyMessage0="%26Copy to Clipboard" +Count mtDialog_SupportMessage=1 +mtDialog_SupportMessage0="Go to the Support Page" +Count mtLog_AppHeader=1 +mtLog_AppHeader0="Application" +Count mtLog_AppStartDate=1 +mtLog_AppStartDate0="Start Date" +Count mtLog_AppName=1 +mtLog_AppName0="Name/Description" +Count mtLog_AppVersionNumber=1 +mtLog_AppVersionNumber0="Version Number" +Count mtLog_AppParameters=1 +mtLog_AppParameters0="Parameters" +Count mtLog_AppCompilationDate=1 +mtLog_AppCompilationDate0="Compilation Date" +Count mtLog_ExcHeader=1 +mtLog_ExcHeader0="Exception" +Count mtLog_ExcDate=1 +mtLog_ExcDate0="Date" +Count mtLog_ExcAddress=1 +mtLog_ExcAddress0="Address" +Count mtLog_ExcModule=1 +mtLog_ExcModule0="Module" +Count mtLog_ExcType=1 +mtLog_ExcType0="Type" +Count mtLog_ExcMessage=1 +mtLog_ExcMessage0="Message" +Count mtLog_ActCtrlsHeader=1 +mtLog_ActCtrlsHeader0="Active Controls" +Count mtLog_ActCtrlsFormClass=1 +mtLog_ActCtrlsFormClass0="Form Class" +Count mtLog_ActCtrlsFormText=1 +mtLog_ActCtrlsFormText0="Form Text" +Count mtLog_ActCtrlsControlClass=1 +mtLog_ActCtrlsControlClass0="Control Class" +Count mtLog_ActCtrlsControlText=1 +mtLog_ActCtrlsControlText0="Control Text" +Count mtLog_CmpHeader=1 +mtLog_CmpHeader0="Computer" +Count mtLog_CmpName=1 +mtLog_CmpName0="Name" +Count mtLog_CmpUser=1 +mtLog_CmpUser0="User" +Count mtLog_CmpTotalMemory=1 +mtLog_CmpTotalMemory0="Total Memory" +Count mtLog_CmpFreeMemory=1 +mtLog_CmpFreeMemory0="Free Memory" +Count mtLog_CmpTotalDisk=1 +mtLog_CmpTotalDisk0="Total Disk" +Count mtLog_CmpFreeDisk=1 +mtLog_CmpFreeDisk0="Free Disk" +Count mtLog_CmpSystemUpTime=1 +mtLog_CmpSystemUpTime0="System Up Time" +Count mtLog_CmpProcessor=1 +mtLog_CmpProcessor0="Processor" +Count mtLog_CmpDisplayMode=1 +mtLog_CmpDisplayMode0="Display Mode" +Count mtLog_OSHeader=1 +mtLog_OSHeader0="Operating System" +Count mtLog_OSType=1 +mtLog_OSType0="Type" +Count mtLog_OSBuildN=1 +mtLog_OSBuildN0="Build #" +Count mtLog_OSUpdate=1 +mtLog_OSUpdate0="Update" +Count mtLog_OSLanguage=1 +mtLog_OSLanguage0="Language" +Count mtLog_NetHeader=1 +mtLog_NetHeader0="Network" +Count mtLog_NetIP=1 +mtLog_NetIP0="IP Address" +Count mtLog_NetSubmask=1 +mtLog_NetSubmask0="Submask" +Count mtLog_NetGateway=1 +mtLog_NetGateway0="Gateway" +Count mtLog_NetDNS1=1 +mtLog_NetDNS10="DNS 1" +Count mtLog_NetDNS2=1 +mtLog_NetDNS20="DNS 2" +Count mtLog_NetDHCP=1 +mtLog_NetDHCP0="DHCP" +Count mtLog_CustInfoHeader=1 +mtLog_CustInfoHeader0="Custom Information" +Count mtCallStack_Address=1 +mtCallStack_Address0="Address" +Count mtCallStack_Name=1 +mtCallStack_Name0="Module" +Count mtCallStack_Unit=1 +mtCallStack_Unit0="Unit" +Count mtCallStack_Class=1 +mtCallStack_Class0="Class" +Count mtCallStack_Procedure=1 +mtCallStack_Procedure0="Procedure/Method" +Count mtCallStack_Line=1 +mtCallStack_Line0="Line" +Count mtCallStack_MainThread=1 +mtCallStack_MainThread0="Main" +Count mtCallStack_ExceptionThread=1 +mtCallStack_ExceptionThread0="Exception Thread" +Count mtCallStack_RunningThread=1 +mtCallStack_RunningThread0="Running Thread" +Count mtCallStack_CallingThread=1 +mtCallStack_CallingThread0="Calling Thread" +Count mtCallStack_ThreadID=1 +mtCallStack_ThreadID0="ID" +Count mtCallStack_ThreadPriority=1 +mtCallStack_ThreadPriority0="Priority" +Count mtCallStack_ThreadClass=1 +mtCallStack_ThreadClass0="Class" +Count mtSendDialog_Caption=1 +mtSendDialog_Caption0="Send." +Count mtSendDialog_Message=1 +mtSendDialog_Message0="Message" +Count mtSendDialog_Resolving=1 +mtSendDialog_Resolving0="Resolving DNS..." +Count mtSendDialog_Connecting=1 +mtSendDialog_Connecting0="Connecting with server..." +Count mtSendDialog_Connected=1 +mtSendDialog_Connected0="Connected with server." +Count mtSendDialog_Sending=1 +mtSendDialog_Sending0="Sending message..." +Count mtReproduceDialog_Caption=1 +mtReproduceDialog_Caption0="Request" +Count mtReproduceDialog_Request=1 +mtReproduceDialog_Request0="Please describe the steps to reproduce the error:" +Count mtReproduceDialog_OKButtonCaption=1 +mtReproduceDialog_OKButtonCaption0="%26OK" +Count mtModules_Handle=1 +mtModules_Handle0="Handle" +Count mtModules_Name=1 +mtModules_Name0="Name" +Count mtModules_Description=1 +mtModules_Description0="Description" +Count mtModules_Version=1 +mtModules_Version0="Version" +Count mtModules_Size=1 +mtModules_Size0="Size" +Count mtModules_LastModified=1 +mtModules_LastModified0="Modified" +Count mtModules_Path=1 +mtModules_Path0="Path" +Count mtCPU_Registers=1 +mtCPU_Registers0="Registers" +Count mtCPU_Stack=1 +mtCPU_Stack0="Stack" +Count mtCPU_MemoryDump=1 +mtCPU_MemoryDump0="Memory Dump" +Count mtSend_SuccessMsg=1 +mtSend_SuccessMsg0="The message was sent successfully." +Count mtSend_FailureMsg=1 +mtSend_FailureMsg0="Sorry, sending the message didn't work." + + diff --git a/Modulos/Albaranes de cliente/Cliente/AlbaranesCliente.dpk b/Modulos/Albaranes de cliente/Cliente/AlbaranesCliente.dpk new file mode 100644 index 0000000..2415b3a --- /dev/null +++ b/Modulos/Albaranes de cliente/Cliente/AlbaranesCliente.dpk @@ -0,0 +1,69 @@ +package AlbaranesCliente; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION OFF} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'Albaranes de cliente'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + vcldb, + PluginSDK_D7R, + GUISDK_D7, + PngComponentsD7, + PNG_D7, + vclactnband, + vclx, + BaseD7, + Contactos, + DataAbstract_D7, + cxLibraryVCLD7, + dxThemeD7, + cxEditorsVCLD7, + cxDataD7, + dbrtl, + vcljpg, + JvDBD7R, + dsnap, + Usuarios, + adortl, + DocumentosAsociados, + Presupuestos_Intf, + Pagos; + +contains + uPluginControllerAlbaranesCliente in 'uPluginControllerAlbaranesCliente.pas', + schAlbaranesClienteClient_Intf in '..\Reglas\schAlbaranesClienteClient_Intf.pas', + uBizAlbaranesCliente in '..\Reglas\uBizAlbaranesCliente.pas', + uDataModuleAlbaranesCliente in 'uDataModuleAlbaranesCliente.pas' {dmAlbaranesCliente: TDAClientDataModule}, + uViewAlbaranesCliente in 'uViewAlbaranesCliente.pas' {frViewAlbaranesCliente: TFrame}, + uEditorAlbaranesCliente in 'uEditorAlbaranesCliente.pas' {fEditorAlbaranesCliente: TCustomEditor}, + uEditorAlbaranCliente in 'uEditorAlbaranCliente.pas' {fEditorAlbaranCliente: TCustomEditor}, + uViewAlbaranCliente in 'uViewAlbaranCliente.pas' {frViewAlbaranCliente: TFrame}, + uViewDatosAlbaranCliente in 'uViewDatosAlbaranCliente.pas' {frViewDatosAlbaranCliente: TFrame}, + uViewDetallesAlbaranCliente in 'uViewDetallesAlbaranCliente.pas' {frViewDetallesAlbaranCliente: TFrame}, + uViewPresupuestoAlbaran in 'uViewPresupuestoAlbaran.pas' {frViewPresupuestoAlbaran: TFrame}, + uViewAlbaranRelacionado in 'uViewAlbaranRelacionado.pas' {frViewAlbaranRelacionado: TCustomView}; + +end. diff --git a/Modulos/Albaranes de cliente/Cliente/AlbaranesCliente.drc b/Modulos/Albaranes de cliente/Cliente/AlbaranesCliente.drc new file mode 100644 index 0000000..a5d5271 --- /dev/null +++ b/Modulos/Albaranes de cliente/Cliente/AlbaranesCliente.drc @@ -0,0 +1,14 @@ +/* VER150 + Generated by the Borland Delphi Pascal Compiler + because -GD or --drc was supplied to the compiler. + + This file contains compiler-generated resources that + were bound to the executable. + If this file is empty, then no compiler-generated + resources were bound to the produced executable. +*/ + +STRINGTABLE +BEGIN +END + diff --git a/Modulos/Albaranes de cliente/Cliente/AlbaranesCliente.res b/Modulos/Albaranes de cliente/Cliente/AlbaranesCliente.res new file mode 100644 index 0000000..ec5f233 Binary files /dev/null and b/Modulos/Albaranes de cliente/Cliente/AlbaranesCliente.res differ diff --git a/Modulos/Albaranes de cliente/Cliente/uDataModuleAlbaranesCliente.ddp b/Modulos/Albaranes de cliente/Cliente/uDataModuleAlbaranesCliente.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Albaranes de cliente/Cliente/uDataModuleAlbaranesCliente.ddp differ diff --git a/Modulos/Albaranes de cliente/Cliente/uDataModuleAlbaranesCliente.dfm b/Modulos/Albaranes de cliente/Cliente/uDataModuleAlbaranesCliente.dfm new file mode 100644 index 0000000..9bc8cfe --- /dev/null +++ b/Modulos/Albaranes de cliente/Cliente/uDataModuleAlbaranesCliente.dfm @@ -0,0 +1,686 @@ +object dmAlbaranesCliente: TdmAlbaranesCliente + OldCreateOrder = True + OnCreate = DAClientDataModuleCreate + RemoteService = RORemoteService + Adapter = dmBase.DABINAdapter + SchemaCall.MethodName = 'GetSchemaAsXML' + SchemaCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtString + end> + Left = 451 + Top = 337 + Height = 429 + Width = 624 + object RORemoteService: TRORemoteService + ServiceName = 'srvAlbaranesCliente' + Message = dmBase.ROMessage + Channel = dmBase.ROChannel + Left = 48 + Top = 32 + end + object tbl_AlbaranCliente: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'CODIGOEMPRESA' + DataType = datInteger + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'C'#243'd. empresa' + Alignment = taLeftJustify + DictionaryEntry = 'CODIGOEMPRESA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGO' + DataType = datInteger + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'C'#243'd. albar'#225'n' + Alignment = taLeftJustify + DictionaryEntry = 'CODIGOALBARANCLIENTE' + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHAALTA' + DataType = datDateTime + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'Fecha de alta' + Alignment = taLeftJustify + DictionaryEntry = 'FECHAALTA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'USUARIO' + DataType = datString + Size = 100 + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'Usuario de alta' + Alignment = taLeftJustify + DictionaryEntry = 'USUARIO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'REFERENCIA' + DataType = datString + Size = 20 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Referencia' + Alignment = taLeftJustify + DictionaryEntry = 'REFERENCIA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOCONTACTO' + DataType = datInteger + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'C'#243'd. contacto' + Alignment = taLeftJustify + DictionaryEntry = 'CODIGOCONTACTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NOMBRE' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Nombre' + Alignment = taLeftJustify + ServerAutoRefresh = True + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHAALBARAN' + DataType = datDateTime + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'Fecha' + Alignment = taLeftJustify + DictionaryEntry = 'FECHAALBARANCLIENTE' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'SITUACION' + DataType = datString + Size = 30 + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'Situaci'#243'n' + Alignment = taLeftJustify + DictionaryEntry = 'SITUACIONALBARANCLIENTE' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHAPAGO' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Fecha de pago' + Alignment = taLeftJustify + DictionaryEntry = 'FECHAPAGO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOPRESUPUESTO' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'C'#243'digo' + Alignment = taLeftJustify + DictionaryEntry = 'CODIGO (GENERICO)' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'BASEIMPONIBLE' + DataType = datCurrency + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Base imponible' + Alignment = taLeftJustify + DictionaryEntry = 'BASEIMPONIBLE' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'DESCUENTO' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Descuento' + Alignment = taLeftJustify + DictionaryEntry = 'DESCUENTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTEDESCUENTO' + DataType = datCurrency + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Importe dto.' + Alignment = taLeftJustify + DictionaryEntry = 'IMPORTEDESCUENTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IVA' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + DictionaryEntry = 'IVA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTEIVA' + DataType = datCurrency + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Importe IVA' + Alignment = taLeftJustify + DictionaryEntry = 'IMPORTEIVA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTETOTAL' + DataType = datCurrency + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Importe total' + Alignment = taLeftJustify + DictionaryEntry = 'IMPORTETOTAL' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'OBSERVACIONES' + DataType = datMemo + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Observaciones' + Alignment = taLeftJustify + DictionaryEntry = 'OBSERVACIONES' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FORMAPAGO' + DataType = datMemo + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Forma de pago' + Alignment = taLeftJustify + DictionaryEntry = 'FORMAPAGO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'REFERENCIAPRESUPUESTO' + DataType = datString + Size = 20 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + Params = <> + MasterMappingMode = mmDataRequest + LogChanges = False + StreamingOptions = [soDisableEventsWhileStreaming] + SchemaCall.MethodName = 'GetDatasetSchema' + SchemaCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBinary + end + item + Name = 'aDatasetName' + ParamType = fIn + DataType = rtString + Value = 'AlbaranCliente' + end> + DataRequestCall.MethodName = 'GetDatasetDataEx' + DataRequestCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBinary + end + item + Name = 'DatasetName' + ParamType = fIn + DataType = rtString + Value = 'AlbaranCliente' + end + item + Name = 'Params' + ParamType = fIn + DataType = rtUserDefined + UserClassName = 'TDADatasetParamArray' + end + item + Name = 'UserFilter' + ParamType = fIn + DataType = rtString + Value = '' + end + item + Name = 'IncludeSchema' + ParamType = fIn + DataType = rtBoolean + Value = False + end + item + Name = 'MaxRecords' + ParamType = fIn + DataType = rtInteger + Value = -1 + end> + DataUpdateCall.MethodName = 'UpdateData' + DataUpdateCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBinary + end + item + Name = 'Delta' + ParamType = fIn + DataType = rtBinary + end> + ScriptCall.MethodName = 'GetDatasetScripts' + ScriptCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtString + Value = '' + end + item + Name = 'DatasetNames' + ParamType = fIn + DataType = rtString + Value = 'AlbaranCliente' + end> + ReadOnly = False + RemoteService = RORemoteService + Adapter = dmBase.DABINAdapter + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'AlbaranCliente' + IndexDefs = <> + Left = 144 + Top = 32 + end + object ds_AlbaranCliente: TDADataSource + DataTable = tbl_AlbaranCliente + Left = 240 + Top = 32 + end + object tbl_DetallesAlbaranCliente: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'CODIGOALBARAN' + DataType = datInteger + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'C'#243'd. albar'#225'n' + Alignment = taLeftJustify + DictionaryEntry = 'CODIGOALBARANCLIENTE' + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NUMCONCEPTO' + DataType = datInteger + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'Num. concepto' + Alignment = taLeftJustify + DictionaryEntry = 'NUMCONCEPTO' + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'POSICION' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Posici'#243'n' + Alignment = taLeftJustify + DictionaryEntry = 'POSICIONCONCEPTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'TIPO' + DataType = datString + Size = 1 + Description = 'Cap'#237'tulo, etc' + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Tipo' + Alignment = taLeftJustify + DictionaryEntry = 'TIPODETALLESALBARANCLIENTE' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'DESCRIPCION' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Descripci'#243'n' + Alignment = taLeftJustify + DictionaryEntry = 'DESCRIPCION' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CANTIDAD' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Cantidad' + Alignment = taLeftJustify + DictionaryEntry = 'CANTIDAD' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTEUNIDAD' + DataType = datCurrency + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Importe unitario' + Alignment = taLeftJustify + DictionaryEntry = 'IMPORTEUNIDAD' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTETOTAL' + DataType = datCurrency + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Importe total' + Alignment = taLeftJustify + DictionaryEntry = 'IMPORTETOTAL' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'VISIBLE' + DataType = datString + Size = 1 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Visible' + Alignment = taLeftJustify + DictionaryEntry = 'VISIBLE' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PUNTOS' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Puntos' + Alignment = taLeftJustify + DictionaryEntry = 'PUNTOS' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTEPUNTOS' + DataType = datCurrency + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Importe puntos' + Alignment = taLeftJustify + DictionaryEntry = 'IMPORTEPUNTOS' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + Params = < + item + Name = 'CODIGOALBARAN' + DataType = datInteger + BlobType = dabtUnknown + Value = '1' + ParamType = daptInput + end> + MasterMappingMode = mmParams + MasterParamsMappings.Strings = ( + 'CODIGOALBARAN=CODIGO') + StreamingOptions = [soDisableEventsWhileStreaming] + SchemaCall.MethodName = 'GetDatasetSchema' + SchemaCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBinary + end + item + Name = 'aDatasetName' + ParamType = fIn + DataType = rtString + Value = 'DetallesAlbaranCliente' + end> + DataRequestCall.MethodName = 'GetDatasetDataEx' + DataRequestCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBinary + end + item + Name = 'DatasetName' + ParamType = fIn + DataType = rtString + Value = 'DetallesAlbaranCliente' + end + item + Name = 'Params' + ParamType = fIn + DataType = rtUserDefined + UserClassName = 'TDADatasetParamArray' + end + item + Name = 'UserFilter' + ParamType = fIn + DataType = rtString + Value = '' + end + item + Name = 'IncludeSchema' + ParamType = fIn + DataType = rtBoolean + Value = False + end + item + Name = 'MaxRecords' + ParamType = fIn + DataType = rtInteger + Value = -1 + end> + DataUpdateCall.MethodName = 'UpdateData' + DataUpdateCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBinary + end + item + Name = 'Delta' + ParamType = fIn + DataType = rtBinary + end> + ScriptCall.MethodName = 'GetDatasetScripts' + ScriptCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtString + Value = '' + end + item + Name = 'DatasetNames' + ParamType = fIn + DataType = rtString + Value = 'DetallesAlbaranCliente' + end> + ReadOnly = False + RemoteService = RORemoteService + Adapter = dmBase.DABINAdapter + MasterSource = ds_AlbaranCliente + MasterFields = 'CODIGO' + DetailFields = 'CODIGOALBARAN' + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'DetallesAlbaranCliente' + IndexDefs = <> + Left = 144 + Top = 88 + end + object ds_DetallesAlbaranCliente: TDADataSource + DataTable = tbl_DetallesAlbaranCliente + Left = 240 + Top = 88 + end + object DADesigntimeCall1: TDADesigntimeCall + RemoteRequest.MethodName = 'Login' + RemoteRequest.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBoolean + end + item + Name = 'UserID' + ParamType = fIn + DataType = rtString + Value = '1' + end + item + Name = 'Password' + ParamType = fIn + DataType = rtString + Value = '1' + end + item + Name = 'LoginInfo' + ParamType = fOut + DataType = rtUserDefined + UserClassName = 'TLoginInfo' + end> + RemoteService = RORemoteService2 + Left = 48 + Top = 88 + end + object RORemoteService2: TRORemoteService + ServiceName = 'srvLogin' + Message = dmBase.ROMessage + Channel = dmBase.ROChannel + Left = 48 + Top = 152 + end +end diff --git a/Modulos/Albaranes de cliente/Cliente/uDataModuleAlbaranesCliente.pas b/Modulos/Albaranes de cliente/Cliente/uDataModuleAlbaranesCliente.pas new file mode 100644 index 0000000..f1df368 --- /dev/null +++ b/Modulos/Albaranes de cliente/Cliente/uDataModuleAlbaranesCliente.pas @@ -0,0 +1,255 @@ +unit uDataModuleAlbaranesCliente; + +interface + +uses {vcl:} SysUtils, Classes, DB, DBClient, + {RemObjects:} uDAClientDataModule, uDADataTable, uDABINAdapter, + uROServiceComponent, uRORemoteService, uROClient, uROBinMessage, + uROWinInetHttpChannel, uDAScriptingProvider, uDACDSDataTable, + uDADesigntimeCall, uBizAlbaranesCliente, FactuGES_Intf; + +type + TdmAlbaranesCliente = class(TDAClientDataModule) + RORemoteService: TRORemoteService; + tbl_AlbaranCliente: TDACDSDataTable; + ds_AlbaranCliente: TDADataSource; + tbl_DetallesAlbaranCliente: TDACDSDataTable; + ds_DetallesAlbaranCliente: TDADataSource; + DADesigntimeCall1: TDADesigntimeCall; + RORemoteService2: TRORemoteService; + procedure DAClientDataModuleCreate(Sender: TObject); + private + { Private declarations } + public + function GetNextAutoinc : integer; + function GetItem: IBizAlbaranesCliente; overload; + function GetItem(Codigo: Integer): IBizAlbaranesCliente; overload; + function GetItems: IBizAlbaranesCliente; + procedure Print(Const Codigo: Integer); + procedure Preview(Const Codigo: Integer); + function DarNuevaReferencia : String; + function PuedoEliminarAlbaran (CodigoAlbaran : Integer) : Boolean; + function GetItemsSeleccionados(ASource : IBizAlbaranesCliente): IBizAlbaranesCliente; + procedure CambiarSituacion(AAlbaran: IBizAlbaranesCliente); + end; + +var + dmAlbaranesCliente: TdmAlbaranesCliente; + +implementation + +{$R *.DFM} + +uses + Forms, Controls, uDataTableUtils, uBizContacto, uDataModulePagos, + uDataModuleContactos, uDataModuleBase, schAlbaranesClienteClient_Intf, + uEditorPreview, uROTypes, uDBSelectionList, uDAInterfaces; + +{ TDAClientDataModule1 } + +function TdmAlbaranesCliente.GetItems: IBizAlbaranesCliente; +var + dtAlbaranes: TDACDSDataTable; + dtDetalles: TDACDSDataTable; + ACursor: TCursor; +begin + ACursor := Screen.Cursor; + Screen.Cursor := crHourGlass; + try + dtAlbaranes := TDACDSDataTable.Create(NIL); + CloneDataTable(tbl_AlbaranCliente, dtAlbaranes); + with dtAlbaranes do + begin + BusinessRulesID := BIZ_ALBARANCLIENTE; + FieldByName(fld_AlbaranClienteDESCUENTO).BusinessRulesID := 'Client.Field.Descuento'; + FieldByName(fld_AlbaranClienteIVA).BusinessRulesID := 'Client.Field.IVA'; + end; + + dtDetalles := TDACDSDataTable.Create(NIL); + CloneDataTable(tbl_DetallesAlbaranCliente, dtDetalles); + with dtDetalles do + begin + BusinessRulesID := BIZ_DETALLESALBARANCLIENTE; + DetailOptions := DetailOptions - [dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates]; + + FieldByName(fld_DetallesAlbaranClienteCANTIDAD).BusinessRulesID := 'Client.Field.Cantidad'; + FieldByName(fld_DetallesAlbaranClienteIMPORTEUNIDAD).BusinessRulesID := 'Client.Field.ImporteUnidad'; + FieldByName(fld_DetallesAlbaranClienteTIPO).BusinessRulesID := 'Client.Field.TipoDetalle'; + + FieldByName(fld_DetallesAlbaranClientePUNTOS).BusinessRulesID := 'Client.Field.Puntos'; + FieldByName(fld_DetallesAlbaranClienteIMPORTEPUNTOS).BusinessRulesID := 'Client.Field.ImportePuntos'; + + FieldByName(fld_DetallesAlbaranClienteVISIBLE).BusinessRulesID := 'Client.Field.Visible'; + end; + (dtAlbaranes as IBizAlbaranesCliente).Detalles := (dtDetalles as IBizDetallesAlbaranCliente); + + Result := (dtAlbaranes as IBizAlbaranesCliente); + finally + Screen.Cursor := ACursor; + end; +end; + +procedure TdmAlbaranesCliente.DAClientDataModuleCreate(Sender: TObject); +begin + RORemoteService.Channel := dmBase.Channel; + RORemoteService.Message := dmBase.Message; + Adapter := dmBase.Adapter; +end; + + +function TdmAlbaranesCliente.GetItem: IBizAlbaranesCliente; +var + dtAlbaranes: TDACDSDataTable; + dtDetalles: TDACDSDataTable; + ACursor: TCursor; +begin + ACursor := Screen.Cursor; + Screen.Cursor := crHourGlass; + try + dtAlbaranes := TDACDSDataTable.Create(NIL); + CloneDataTable(tbl_AlbaranCliente, dtAlbaranes); + with dtAlbaranes do + begin + BusinessRulesID := BIZ_ALBARANCLIENTE; + FieldByName(fld_AlbaranClienteDESCUENTO).BusinessRulesID := 'Client.Field.Descuento'; + FieldByName(fld_AlbaranClienteIVA).BusinessRulesID := 'Client.Field.IVA'; + end; + + dtDetalles := TDACDSDataTable.Create(NIL); + CloneDataTable(tbl_DetallesAlbaranCliente, dtDetalles); + with dtDetalles do + begin + BusinessRulesID := BIZ_DETALLESALBARANCLIENTE; + DetailOptions := DetailOptions - [dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates]; + + FieldByName(fld_DetallesAlbaranClienteCANTIDAD).BusinessRulesID := 'Client.Field.Cantidad'; + FieldByName(fld_DetallesAlbaranClienteIMPORTEUNIDAD).BusinessRulesID := 'Client.Field.ImporteUnidad'; + FieldByName(fld_DetallesAlbaranClienteTIPO).BusinessRulesID := 'Client.Field.TipoDetalle'; + end; + + (dtAlbaranes as IBizAlbaranesCliente).Detalles := (dtDetalles as IBizDetallesAlbaranCliente); + + Result := (dtAlbaranes as IBizAlbaranesCliente); + finally + Screen.Cursor := ACursor; + end; +end; + +function TdmAlbaranesCliente.GetNextAutoinc: integer; +begin + Result := (RORemoteService as IsrvAlbaranesCliente).GetNextAutoinc; +end; + +procedure TdmAlbaranesCliente.Preview(const Codigo: Integer); +var + AStream: TROBinaryMemoryStream; + AEditorPreview : TfEditorPreview; +begin + AEditorPreview := TfEditorPreview.Create(Application); + try + AStream := (RORemoteService as IsrvAlbaranesCliente).GenerateReport(Codigo); + AEditorPreview.Report.PreviewPages.LoadFromStream(AStream); + AEditorPreview.ShowModal; + finally + AEditorPreview.Release; + AStream.Free; + end; +end; + +function TdmAlbaranesCliente.DarNuevaReferencia: String; +begin + Result := (RORemoteService as IsrvAlbaranesCliente).DarNuevaReferencia; +end; + +function TdmAlbaranesCliente.PuedoEliminarAlbaran( + CodigoAlbaran: Integer): Boolean; +begin + Result := (RORemoteService as IsrvAlbaranesCliente).PuedoEliminarAlbaran(CodigoAlbaran); +end; + +procedure TdmAlbaranesCliente.Print(const Codigo: Integer); +var + AStream: TROBinaryMemoryStream; + AEditorPreview : TfEditorPreview; +begin + AEditorPreview := TfEditorPreview.Create(Application); + try + AStream := (RORemoteService as IsrvAlbaranesCliente).GenerateReport(Codigo); + AEditorPreview.Report.PreviewPages.LoadFromStream(AStream); + AEditorPreview.Print; + finally + AEditorPreview.Release; + AStream.Free; + end; +end; + +function TdmAlbaranesCliente.GetItemsSeleccionados(ASource: IBizAlbaranesCliente): IBizAlbaranesCliente; +var + aObj : ISelectedRowList; + dtAlbaran : IBizAlbaranesCliente; + i : integer; +begin + if Supports(ASource, ISelectedRowList, aObj) then + begin + if (aObj.SelectedRows.Count = 1) then + begin + ASource.DataTable.GotoBookmark(aObj.SelectedRows[0]); + Result := GetItem(ASource.CODIGO); + Exit; + end + else + dtAlbaran := GetItems; + end + else + raise Exception.Create('Interface no soportada (GetItemsSeleccionados)'); + + if dtAlbaran.DataTable.Active then + dtAlbaran.DataTable.Active := False; + with dtAlbaran.DataTable.Where do + begin + Clear; + for i := 0 to aObj.SelectedRows.Count - 1 do + begin + ASource.DataTable.GotoBookmark(aObj.SelectedRows[i]); + if i > 0 then + AddOperator(opAND); + AddText('ALBARANPAGO.' + fld_AlbaranClienteCODIGO + ' = ' + IntToStr(ASource.CODIGO)); + end; + end; + Result := dtAlbaran; +end; + +function TdmAlbaranesCliente.GetItem(Codigo: Integer): IBizAlbaranesCliente; +var + AAlbaran : IBizAlbaranesCliente; +begin + AAlbaran:= GetItems; + with AAlbaran.DataTable.Where do + AddText('ALBARANPAGO.' + fld_AlbaranClienteCODIGO + ' = ' + IntToStr(Codigo)); + Result := AAlbaran; +end; + +procedure TdmAlbaranesCliente.CambiarSituacion(AAlbaran: IBizAlbaranesCliente); +var + FechaPago: TDateTime; +begin + if Assigned(AAlbaran) then + begin + //El código presupuesto no ayudará a identificar el montaje relacionado + if dmPagos.AnadirPagoCliente(AAlbaran.Cliente, AAlbaran.CODIGOPRESUPUESTO, AAlbaran.REFERENCIA, AAlbaran.IMPORTETOTAL, FechaPago) then + begin + AAlbaran.Edit; + AAlbaran.FECHAPAGO := FechaPago; + AAlbaran.Post; + AAlbaran.DataTable.ApplyUpdates; + end; + end; +end; + +initialization + dmAlbaranesCliente := TdmAlbaranesCliente.Create(nil); + +finalization + FreeAndNil(dmAlbaranesCliente); + +end. diff --git a/Modulos/Albaranes de cliente/Cliente/uEditorAlbaranCliente.ddp b/Modulos/Albaranes de cliente/Cliente/uEditorAlbaranCliente.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Albaranes de cliente/Cliente/uEditorAlbaranCliente.ddp differ diff --git a/Modulos/Albaranes de cliente/Cliente/uEditorAlbaranCliente.dfm b/Modulos/Albaranes de cliente/Cliente/uEditorAlbaranCliente.dfm new file mode 100644 index 0000000..ceb57e0 --- /dev/null +++ b/Modulos/Albaranes de cliente/Cliente/uEditorAlbaranCliente.dfm @@ -0,0 +1,172 @@ +inherited fEditorAlbaranCliente: TfEditorAlbaranCliente + Left = 172 + Top = 111 + Width = 771 + Height = 579 + Caption = 'Nuevo albar'#225'n de cliente' + Constraints.MinWidth = 770 + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + Width = 763 + Caption = 'Nuevo albar'#225'n de cliente' + inherited Image1: TImage + Left = 736 + Picture.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001800 + 0000180806000000E0773DF80000000970485973000017120000171201679FD2 + 520000000467414D410000AA11B57D14DC000001CE4944415478DA63FCFFFF3F + 032D0123B2058B361EA79A6D71FE968C582D004A906CD8DFBFFF80F83F980601 + 0BDF6C868B7B66E1B660AFA53D8A01CEC70FE2341C59ADE99E5D0CF356EF6198 + BF64237E0B4871F9011B4706651669866DA7973344BEFCC6B070FD3EC21660F3 + 01BA1808D81EDCC770D8DE89E1E6F943607ED8B32F0C4B361DA0CC07FFFF01C3 + 1A88FF005D0F62FFFE070CFF3FFFC0BEF9F3EF2FC38A2D8749F7013100E40BDF + 07EF18D6EE38469C05306F9302BCEEBE61D8B0FB047116E04B39D800488FE2CA + B50C9BF69D24DE025C4105B31C260F532BB77C0DC3D603A768E703C925AB1876 + 1D3E433B1F882D58C1B0F7F839DAF94078EE328603A72EE0B720DAC71C9C3BC9 + F101FFEC250C47CE5CC26F4184A719387792E303AEE90B194E5EB88ADF825037 + 1386634E2E6459C03E653EC399CBD7F15B10E062C470DAC50DAF6120CBFFCC9D + 0FE7B32427822D60993897E1FCB59BF82DF0753080972B9072FE1FB8EC018B01 + CBFCA7D1A118F103E333F6CF61B874E3167E0BBC6CF5701A0EA25FC485630D3E + A22D70B3D6C66938A8047D93188933E888B2C0D15C036CD8BFBF9062F9F75F44 + 71FCEF3FD4A27FFF501C810C085A6067A2062E112901782DE89D3C9F6C839101 + CC0200E97E29EF897181770000000049454E44AE426082} + end + end + inherited TBXDock: TTBXDock + Width = 763 + inherited tbxMain: TTBXToolbar + inherited TBXItem2: TTBXItem + Visible = False + end + inherited TBXSeparatorItem1: TTBXSeparatorItem + Visible = False + end + inherited TBXItem5: TTBXItem + Visible = False + end + end + end + inherited pgPaginas: TPageControl + Width = 763 + Height = 328 + ActivePage = pagContenido + inherited pagGeneral: TTabSheet + inline frViewAlbaranCliente1: TfrViewAlbaranCliente + Left = 0 + Top = 0 + Width = 755 + Height = 300 + Align = alClient + AutoSize = True + Constraints.MinHeight = 300 + Constraints.MinWidth = 755 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 0 + ReadOnly = False + inherited frViewDatosYSeleccionContacto1: TfrViewDatosYSeleccionContacto + inherited Bevel1: TBevel + Width = 313 + end + inherited ToolBar1: TToolBar + Width = 369 + end + inherited edtlNombre: TcxDBTextEdit + Properties.OnChange = frViewDatosYSeleccionContacto1edtlNombrePropertiesChange + end + end + inherited frViewDatosAlbaranCliente1: TfrViewDatosAlbaranCliente + inherited eReferencia: TcxDBTextEdit + StyleDisabled.TextColor = clActiveCaption + end + end + end + end + object pagContenido: TTabSheet + Caption = 'Contenido' + ImageIndex = 1 + inline frViewDetallesAlbaranCliente1: TfrViewDetallesAlbaranCliente + Left = 0 + Top = 0 + Width = 755 + Height = 300 + Align = alClient + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 0 + ReadOnly = False + inherited cxGrid: TcxGrid + Width = 755 + Height = 278 + end + inherited ToolBar1: TToolBar + Width = 755 + end + end + end + end + inherited StatusBar: TStatusBar + Top = 526 + Width = 763 + end + inline frViewTotales1: TfrViewTotales [4] + Left = 0 + Top = 404 + Width = 763 + Height = 122 + Align = alBottom + Constraints.MaxHeight = 122 + Constraints.MinHeight = 122 + Constraints.MinWidth = 730 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 4 + ReadOnly = False + inherited TabControl1: TTabControl + Width = 763 + inherited GroupBox1: TGroupBox + inherited lblBase: TcxDBCurrencyEdit + Style.IsFontAssigned = True + end + inherited cxCurrencyEdit3: TcxDBCurrencyEdit + Style.IsFontAssigned = True + end + inherited cxCurrencyEdit4: TcxDBCurrencyEdit + Style.IsFontAssigned = True + end + inherited cxCurrencyEdit5: TcxDBCurrencyEdit + Style.IsFontAssigned = True + end + inherited cxCurrencyEdit1: TcxDBSpinEdit + Style.IsFontAssigned = True + end + inherited cxCurrencyEdit2: TcxDBSpinEdit + Style.IsFontAssigned = True + end + end + end + end + inherited EditorActionList: TActionList [5] + end + inherited SmallImages: TPngImageList [6] + end + inherited LargeImages: TPngImageList [7] + end + inherited JvFormStorage: TJvFormStorage [8] + end + inherited JvAppRegistryStorage: TJvAppRegistryStorage [9] + end +end diff --git a/Modulos/Albaranes de cliente/Cliente/uEditorAlbaranCliente.pas b/Modulos/Albaranes de cliente/Cliente/uEditorAlbaranCliente.pas new file mode 100644 index 0000000..7e06a41 --- /dev/null +++ b/Modulos/Albaranes de cliente/Cliente/uEditorAlbaranCliente.pas @@ -0,0 +1,166 @@ +unit uEditorAlbaranCliente; + +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, uBizAlbaranesCliente, + uViewAlbaranCliente, uCustomView, uViewBase, uViewContenido, uViewTotales, + uViewDetallesAlbaranCliente, StdCtrls, pngimage, AppEvnts, + uViewDetallesFamilias, JvComponentBase; + +type + IEditorAlbaranCliente = interface(IEditorDBItem) + ['{58CCCF45-8E27-418A-B938-075335A57A5F}'] + function GetAlbaranCliente: IBizAlbaranesCliente; + procedure SetAlbaranCliente(const Value: IBizAlbaranesCliente); + property AlbaranCliente: IBizAlbaranesCliente read GetAlbaranCliente write + SetAlbaranCliente; + end; + + TfEditorAlbaranCliente = class(TfEditorDBItem, IEditorAlbaranCliente) + frViewTotales1: TfrViewTotales; + pagContenido: TTabSheet; + frViewDetallesAlbaranCliente1: TfrViewDetallesAlbaranCliente; + frViewAlbaranCliente1: TfrViewAlbaranCliente; + procedure actEliminarExecute(Sender: TObject); + procedure FormShow(Sender: TObject); override; + procedure frViewDatosYSeleccionContacto1edtlNombrePropertiesChange( + Sender: TObject); + private + FAlbaranCliente: IBizAlbaranesCliente; + FViewAlbaranCliente: IViewAlbaranCliente; + protected + function GetAlbaranCliente: IBizAlbaranesCliente; + function GetViewAlbaran: IViewAlbaranCliente; + procedure SetAlbaranCliente(const Value: IBizAlbaranesCliente); + procedure SetViewAlbaran(const Value: IViewAlbaranCliente); + property ViewAlbaranCliente: IViewAlbaranCliente read GetViewAlbaran write + SetViewAlbaran; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + property AlbaranCliente: IBizAlbaranesCliente read GetAlbaranCliente write + SetAlbaranCliente; + end; + +var + fEditorAlbaranCliente: TfEditorAlbaranCliente; + +implementation + +uses uEditorUtils, uDataModuleAlbaranesCliente, uBizImportesDetalleBase, + uDataModulePresupuestos, uBizPresupuestosCliente, + schAlbaranesClienteClient_Intf, uExceptions; + +{$R *.dfm} + +function ShowEditorAlbaranCliente (ABizObject : TDADataTableRules) : TModalResult; +var + AEditor: TfEditorAlbaranCliente; +begin + AEditor := TfEditorAlbaranCliente.Create(Application); + try + AEditor.AlbaranCliente := (ABizObject as IBizAlbaranesCliente); + Result := AEditor.ShowModal; + finally + AEditor.Release; + end; +end; + +{ TfEditorAlbaranCliente } + +{ +**************************** TfEditorAlbaranCliente **************************** +} +constructor TfEditorAlbaranCliente.Create(AOwner: TComponent); +begin + inherited; +// ViewAlbaranCliente := CreateView(TfrViewAlbaranCliente) as IViewAlbaranCliente; + pgPaginas.ActivePageIndex := 0; + ViewAlbaranCliente := frViewAlbaranCliente1; +end; + +destructor TfEditorAlbaranCliente.Destroy; +begin + FViewAlbaranCliente := NIL; + FAlbaranCliente := NIL; + inherited; +end; + +procedure TfEditorAlbaranCliente.actEliminarExecute(Sender: TObject); +begin + if (Application.MessageBox('¿Desea borrar este albarán de cliente?', 'Atención', MB_YESNO) = IDYES) then + inherited; +end; + +procedure TfEditorAlbaranCliente.FormShow(Sender: TObject); +begin + inherited; + + if not Assigned(FViewAlbaranCliente) then + raise Exception.Create('No hay ninguna vista asignada'); + + if not Assigned(AlbaranCliente) then + raise Exception.Create('No hay ningún albarán asignado'); + + AlbaranCliente.DataTable.Active := True; +// FViewAlbaranCliente.ShowEmbedded(pagGeneral); +// FViewAlbaranCliente.SetFocus; +end; + +function TfEditorAlbaranCliente.GetAlbaranCliente: IBizAlbaranesCliente; +begin + Result := FAlbaranCliente; +end; + +function TfEditorAlbaranCliente.GetViewAlbaran: IViewAlbaranCliente; +begin + Result := FViewAlbaranCliente; +end; + +procedure TfEditorAlbaranCliente.SetAlbaranCliente(const Value: + IBizAlbaranesCliente); +begin + FAlbaranCliente := Value; + + if Assigned(FAlbaranCliente) then + begin + dsDataTable.DataTable := FAlbaranCliente.DataTable; + frViewTotales1.DADataSource.DataTable := FAlbaranCliente.DataTable; + frViewDetallesAlbaranCliente1.DADataSource.DataTable := FAlbaranCliente.Detalles.DataTable; + + if Assigned(FViewAlbaranCliente) then + FViewAlbaranCliente.AlbaranCliente := FAlbaranCliente; + end; +end; + +procedure TfEditorAlbaranCliente.SetViewAlbaran(const Value: + IViewAlbaranCliente); +begin + FViewAlbaranCliente := Value; + + if Assigned(FViewAlbaranCliente) and Assigned(AlbaranCliente) then + FViewAlbaranCliente.AlbaranCliente := AlbaranCliente; +end; + +procedure TfEditorAlbaranCliente.frViewDatosYSeleccionContacto1edtlNombrePropertiesChange( + Sender: TObject); +begin + inherited; + if Length(frViewAlbaranCliente1.frViewDatosYSeleccionContacto1.edtlNombre.Text) = 0 then + JvNavPanelHeader.Caption := 'Nuevo albarán de cliente' + else + JvNavPanelHeader.Caption := 'Albarán de ' + frViewAlbaranCliente1.frViewDatosYSeleccionContacto1.edtlNombre.Text; + Caption := JvNavPanelHeader.Caption; +end; + +initialization + RegisterEditor(IBizAlbaranesCliente, ShowEditorAlbaranCliente, etItem); + +finalization + +end. diff --git a/Modulos/Albaranes de cliente/Cliente/uEditorAlbaranesCliente.ddp b/Modulos/Albaranes de cliente/Cliente/uEditorAlbaranesCliente.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Albaranes de cliente/Cliente/uEditorAlbaranesCliente.ddp differ diff --git a/Modulos/Albaranes de cliente/Cliente/uEditorAlbaranesCliente.dfm b/Modulos/Albaranes de cliente/Cliente/uEditorAlbaranesCliente.dfm new file mode 100644 index 0000000..8a7a4e0 --- /dev/null +++ b/Modulos/Albaranes de cliente/Cliente/uEditorAlbaranesCliente.dfm @@ -0,0 +1,1447 @@ +inherited fEditorAlbaranesCliente: TfEditorAlbaranesCliente + Left = 330 + Top = 228 + Width = 815 + Caption = 'Lista de albaranes' + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + Width = 807 + Caption = 'Lista de albaranes' + inherited Image1: TImage + Left = 780 + Picture.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001800 + 0000180806000000E0773DF80000000970485973000017120000171201679FD2 + 520000000467414D410000AA11B57D14DC000001CE4944415478DA63FCFFFF3F + 032D0123B2058B361EA79A6D71FE968C582D004A906CD8DFBFFF80F83F980601 + 0BDF6C868B7B66E1B660AFA53D8A01CEC70FE2341C59ADE99E5D0CF356EF6198 + BF64237E0B4871F9011B4706651669866DA7973344BEFCC6B070FD3EC21660F3 + 01BA1808D81EDCC770D8DE89E1E6F943607ED8B32F0C4B361DA0CC07FFFF01C3 + 1A88FF005D0F62FFFE070CFF3FFFC0BEF9F3EF2FC38A2D8749F7013100E40BDF + 07EF18D6EE38469C05306F9302BCEEBE61D8B0FB047116E04B39D800488FE2CA + B50C9BF69D24DE025C4105B31C260F532BB77C0DC3D603A768E703C925AB1876 + 1D3E433B1F882D58C1B0F7F839DAF94078EE328603A72EE0B720DAC71C9C3BC9 + F101FFEC250C47CE5CC26F4184A719387792E303AEE90B194E5EB88ADF825037 + 1386634E2E6459C03E653EC399CBD7F15B10E062C470DAC50DAF6120CBFFCC9D + 0FE7B32427822D60993897E1FCB59BF82DF0753080972B9072FE1FB8EC018B01 + CBFCA7D1A118F103E333F6CF61B874E3167E0BBC6CF5701A0EA25FC485630D3E + A22D70B3D6C66938A8047D93188933E888B2C0D15C036CD8BFBF9062F9F75F44 + 71FCEF3FD4A27FFF501C810C085A6067A2062E112901782DE89D3C9F6C839101 + CC0200E97E29EF897181770000000049454E44AE426082} + end + end + inherited TBXDock: TTBXDock + Width = 807 + inherited tbxMain: TTBXToolbar + inherited TBXSeparatorItem14: TTBXSeparatorItem + Visible = False + end + inherited TBXItem33: TTBXItem + Visible = False + end + object TBXSeparatorItem16: TTBXSeparatorItem [8] + end + object TBXItem36: TTBXItem [9] + Action = actPagar + DisplayMode = nbdmImageAndText + end + end + inherited tbxFiltro: TTBXToolbar + Left = 505 + end + end + inherited StatusBar: TStatusBar + Width = 807 + end + inline frViewBarraSeleccion: TfrViewBarraSeleccion [3] + Left = 0 + Top = 395 + Width = 807 + Height = 37 + Align = alBottom + AutoScroll = False + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 3 + Visible = False + ReadOnly = False + inherited pnlSeleccion: TPanel + Top = 0 + Width = 807 + inherited bSeleccionar: TButton + Left = 636 + end + inherited bCancelar: TButton + Left = 715 + end + end + inherited ActionListSeleccion: TActionList + inherited actSeleccionar: TAction + OnExecute = frViewBarraSeleccionactSeleccionarExecute + end + inherited actCancelar: TAction + OnExecute = frViewBarraSeleccionactCancelarExecute + end + end + end + inherited EditorActionList: TActionList [4] + inherited actNuevo: TAction + ImageIndex = 22 + OnExecute = actNuevoExecute + end + object actPagar: TAction [24] + Category = 'Archivo' + Caption = 'Generar cobro' + ImageIndex = 23 + OnExecute = actPagarExecute + end + end + inherited SmallImages: TPngImageList [5] + 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 + 610000000970485973000017120000171201679FD252000001784944415478DA + 63FCFFFF3FC384055BFF3390010A12BC1919610600394469FAF3F71FC3EF3F7F + 192CBCB3192EEE99856AC05E4B2B14C5CEC78F81696471AB030719662EDFC530 + 7FC9464C03F0815FBFFF826D06D10BD7EDC36E00BA0BB001DDAD3B19966D3A84 + DB0098B341E01F50EECF9F7F709BCFB93B33686EDCCEB06ADB11FC06C05C627B + E830C3613B5BB8CD97BDDD1954D66E6158BFEB387E03D06DFEFDE70F987FDDDF + 934161E54686CDFB4EE136C0F1D85186FD56D6605B8D76EE053B1B044036DF09 + F661905ABA9E61E7A133B80D00391BDDE69FBFFE30FC028A3D890C60109ABB8A + E1E0A98B9806E4C47A321CB4B1410971B5F55B196E0542A2577CD15A869771C1 + 0CBC3357301C3B7719D380F44837B02D7F7EFF03DB7CD5D7834169F566B0D8EF + DF10FC2E398C8163EA5286D397AE611A9018EA0CD70CF202CC6674C03C7111C3 + 856B37310D880D70846B06F91BD9E6DFD01801E17FFFFE335CBA710BD380081F + 5B86155B0E139D13310C0009900A400600000CC180F01CA0F4A8000000004945 + 4E44AE426082} + Name = 'PngImage22' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000B3A00000B3A01647F570D0000015D4944415478DA + 63FCFFFF3F030830323232C0C0CEB58DCA2F6E6CBDF3FEF129B818C30F061490 + 3FFF3F58032336032E9C58FD9F8B47904155DB192EF6FFD72B867F9F2F31FCB9 + E3CA3063061E0380B6DBB373F01CB076CD66606165C7AAB96001923E6403809A + 9979F925FEC8299B32482B18E2D40C16C7614032D08039164EA97017810CF875 + 5E1CAC196F18EC5AD7C40F74FA073DB36006411179B8E6FF3F5F32FCBEA687A2 + 196B18000D681797D6AAD06008852B64D5BA0434E4251833000DFBFBA2087718 + 2CEF76FFFFE1E119865F5FDF81F9B993706BC61906D0589056D7D07F2223CE8D + 53332103DAC5C4A52B749438706AC6170BECACAC6C3FF4547918F8397FE3D48C + 3F1A79F9E7982A7F66F8FBBA16A7669C061CDB35E1BF9CAA1D83C84B23BC9AB1 + 1A008C466BA0F38F5888D632CC9AF907AF66AC065C383AF73FC7B7150C3B97ED + 21A819AB0137CE2CFBBF776E2643CE8C4F0435231B00004A4C11F0D3652A8300 + 00000049454E44AE426082} + Name = 'PngImage23' + Background = clWindow + end> + Bitmap = {} + end + inherited LargeImages: TPngImageList [6] + 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 + F80000000970485973000017120000171201679FD252000001CE4944415478DA + 63FCFFFF3F032D0123B2058B361EA79A6D71FE968C582D004A906CD8DFBFFF80 + F83F9806010BDF6C868B7B66E1B660AFA53D8A01CEC70FE2341C59ADE99E5D0C + F356EF6198BF64237E0B4871F9011B4706651669866DA7973344BEFCC6B070FD + 3EC21660F301BA1808D81EDCC770D8DE89E1E6F943607ED8B32F0C4B361DA0CC + 07FFFF01C31A88FF005D0F62FFFE070CFF3FFFC0BEF9F3EF2FC38A2D8749F701 + 3100E40BDF07EF18D6EE38469C05306F9302BCEEBE61D8B0FB047116E04B39D8 + 00488FE2CAB50C9BF69D24DE025C4105B31C260F532BB77C0DC3D603A768E703 + C925AB18761D3E433B1F882D58C1B0F7F839DAF94078EE328603A72EE0B720DA + C71C9C3BC9F101FFEC250C47CE5CC26F4184A719387792E303AEE90B194E5EB8 + 8ADF8250371386634E2E6459C03E653EC399CBD7F15B10E062C470DAC50DAF61 + 20CBFFCC9D0FE7B32427822D60993897E1FCB59BF82DF0753080972B9072FE1F + B8EC018B01CBFCA7D1A118F103E333F6CF61B874E3167E0BBC6CF5701A0EA25F + C485630D3EA22D70B3D6C66938A8047D93188933E888B2C0D15C036CD8BFBF90 + 62F9F75F4471FCEF3FD4A27FFF501C810C085A6067A2062E112901782DE89D3C + 9F6C839101CC0200E97E29EF897181770000000049454E44AE426082} + Name = 'PngImage21' + Background = clWindow + end> + Bitmap = {} + end + inherited JvFormStorage: TJvFormStorage [7] + end + inherited JvAppRegistryStorage: TJvAppRegistryStorage [8] + end + inherited dsDataTable: TDADataSource [9] + end + inherited GridPopupMenu: TPopupMenu + inherited Duplicar1: TMenuItem + Visible = False + end + end +end diff --git a/Modulos/Albaranes de cliente/Cliente/uEditorAlbaranesCliente.pas b/Modulos/Albaranes de cliente/Cliente/uEditorAlbaranesCliente.pas new file mode 100644 index 0000000..14ef590 --- /dev/null +++ b/Modulos/Albaranes de cliente/Cliente/uEditorAlbaranesCliente.pas @@ -0,0 +1,210 @@ +unit uEditorAlbaranesCliente; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uEditorGrid, Menus, DB, uDADataTable, JvAppStorage, + JvAppRegistryStorage, JvComponent, JvFormPlacement, ImgList, + PngImageList, StdActns, ActnList, ComCtrls, TB2ExtItems, TBXExtItems, + TBX, TB2Item, TB2Dock, TB2Toolbar, ExtCtrls, JvExControls, + JvNavigationPane, uBizAlbaranesCliente, uViewGrid, pngimage, uCustomView, + uViewBase, uViewBarraSeleccion, JvComponentBase, StdCtrls, Buttons, + cxControls, cxContainer, cxEdit, cxTextEdit, cxMaskEdit, cxDropDownEdit, + cxCalendar, TBXDkPanels; + +type + IEditorAlbaranesCliente = interface(IEditorGrid) + ['{AEB08024-B44B-46FD-B145-F8332BB9219F}'] + function GetAlbaranesCliente: IBizAlbaranesCliente; + procedure SetAlbaranesCliente(const Value: IBizAlbaranesCliente); + property AlbaranesCliente: IBizAlbaranesCliente read GetAlbaranesCliente + write SetAlbaranesCliente; + end; + + TfEditorAlbaranesCliente = class(TfEditorGrid, IEditorAlbaranesCliente) + frViewBarraSeleccion: TfrViewBarraSeleccion; + actPagar: TAction; + TBXItem36: TTBXItem; + TBXSeparatorItem16: TTBXSeparatorItem; + procedure actEliminarExecute(Sender: TObject); + procedure actModificarExecute(Sender: TObject); + procedure actNuevoExecute(Sender: TObject); + procedure frViewBarraSeleccionactSeleccionarExecute(Sender: TObject); + procedure frViewBarraSeleccionactCancelarExecute(Sender: TObject); + procedure actPagarExecute(Sender: TObject); + procedure edtFechaFiltro1PropertiesEditValueChanged(Sender: TObject); + private + FAlbaranesCliente: IBizAlbaranesCliente; + protected + function GetAlbaranesCliente: IBizAlbaranesCliente; + procedure SetAlbaranesCliente(const Value: IBizAlbaranesCliente); + procedure SetViewGrid(const Value: IViewGrid); override; + function GetSelectionBarVisible: Boolean; + procedure SetSelectionBarVisible(const Value: Boolean); + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + property AlbaranesCliente: IBizAlbaranesCliente read GetAlbaranesCliente + write SetAlbaranesCliente; + property SelectionBarVisible: Boolean read GetSelectionBarVisible write + SetSelectionBarVisible; + end; + +implementation + +uses uDataModuleAlbaranesCliente, uViewAlbaranesCliente, uEditorUtils; + +{$R *.dfm} + +function ShowEditorAlbaranesCliente (ABizObject : TDADataTableRules) : TModalResult; +var + AEditor: TfEditorAlbaranesCliente; +begin + AEditor := TfEditorAlbaranesCliente.Create(Application); + try + AEditor.AlbaranesCliente := (ABizObject as IBizAlbaranesCliente); + Result := AEditor.ShowModal; + finally + AEditor.Release; + end; +end; + +function ShowSelectEditorAlbaranesCliente (ABizObject : TDADataTableRules) : TModalResult; +var + AEditor: TfEditorAlbaranesCliente; +begin + AEditor := TfEditorAlbaranesCliente.Create(Application); + try + AEditor.AlbaranesCliente := (ABizObject as IBizAlbaranesCliente); + AEditor.SelectionBarVisible := True; + Result := AEditor.ShowModal; + finally + AEditor.Release; + end; +end; + +{ +*************************** TfEditorAlbaranesCliente *************************** +} +constructor TfEditorAlbaranesCliente.Create(AOwner: TComponent); +begin + inherited; + ViewGrid := CreateView(TfrViewAlbaranesCliente) as IViewAlbaranesCliente; +end; + +destructor TfEditorAlbaranesCliente.Destroy; +begin + FAlbaranesCliente := NIL; + inherited; +end; + +procedure TfEditorAlbaranesCliente.actEliminarExecute(Sender: TObject); +begin + if (Application.MessageBox('¿Desea borrar este albarán de cliente?', 'Atención', MB_YESNO) = IDYES) then + begin + inherited; + ViewGrid.RefreshGrid; + end; +end; + +procedure TfEditorAlbaranesCliente.actModificarExecute(Sender: TObject); +begin + inherited; + AlbaranesCliente.Show; + ViewGrid.RefreshGrid; + ViewGrid.SyncFocusedRecordsFromDataSet; +end; + +procedure TfEditorAlbaranesCliente.actNuevoExecute(Sender: TObject); +begin + inherited; + AlbaranesCliente.Insert; + AlbaranesCliente.Show; + ViewGrid.RefreshGrid; + ViewGrid.SyncFocusedRecordsFromDataSet; +end; + +function TfEditorAlbaranesCliente.GetAlbaranesCliente: IBizAlbaranesCliente; +begin + Result := FAlbaranesCliente; +end; + +procedure TfEditorAlbaranesCliente.SetAlbaranesCliente(const Value: + IBizAlbaranesCliente); +begin + FAlbaranesCliente := Value; + dsDataTable.DataTable := FAlbaranesCliente.DataTable; + if Assigned(ViewGrid) then + (ViewGrid as IViewAlbaranesCliente).AlbaranesCliente := AlbaranesCliente; +end; + +procedure TfEditorAlbaranesCliente.SetViewGrid(const Value: IViewGrid); +begin + inherited; + if Assigned(ViewGrid) and Assigned(AlbaranesCliente) then + (ViewGrid as IViewAlbaranesCliente).AlbaranesCliente := FAlbaranesCliente; +end; + +function TfEditorAlbaranesCliente.GetSelectionBarVisible: Boolean; +begin + Result := frViewBarraSeleccion.Visible; +end; + +procedure TfEditorAlbaranesCliente.SetSelectionBarVisible(const Value: Boolean); +begin + frViewBarraSeleccion.Visible := True; + ViewGrid.OnDblClick := frViewBarraSeleccion.actSeleccionar.OnExecute; +end; + +procedure TfEditorAlbaranesCliente.frViewBarraSeleccionactSeleccionarExecute(Sender: TObject); +begin + inherited; + if (AlbaranesCliente.DataTable.RecordCount > 0) then + begin + ViewGrid.SyncFocusedRecordsFromGrid; + ModalResult := mrOK; + end; +end; + +procedure TfEditorAlbaranesCliente.frViewBarraSeleccionactCancelarExecute( + Sender: TObject); +begin + inherited; + frViewBarraSeleccion.actCancelarExecute(Sender); +end; + +procedure TfEditorAlbaranesCliente.actPagarExecute(Sender: TObject); +begin + inherited; + ViewGrid.SyncFocusedRecordsFromGrid; + dmAlbaranesCliente.CambiarSituacion(AlbaranesCliente); + ViewGrid.RefreshGrid; + ViewGrid.SyncFocusedRecordsFromDataSet; +end; + +procedure TfEditorAlbaranesCliente.edtFechaFiltro1PropertiesEditValueChanged( + Sender: TObject); +begin + inherited; +{ + if not VarIsNull(edtFechaFiltro1.EditValue) and not VarIsNull(edtFechaFiltro2.EditValue) then + begin + if (edtFechaFiltro1.EditValue > edtFechaFiltro2.EditValue) then + begin + ShowMessage('La fecha de inicio debe ser anterior a la fecha final'); + edtFechaFiltro1.SetFocus; + end + else + (ViewGrid as IViewAlbaranesCliente).AnadirFiltro2(edtFechaFiltro1.EditValue, edtFechaFiltro2.EditValue); + end; +} +end; + +initialization + RegisterEditor(IBizAlbaranesCliente, ShowEditorAlbaranesCliente, etItems); + RegisterEditor(IBizAlbaranesCliente, ShowSelectEditorAlbaranesCliente, etSelectItems); + +finalization + +end. diff --git a/Modulos/Albaranes de cliente/Cliente/uPluginControllerAlbaranesCliente.ddp b/Modulos/Albaranes de cliente/Cliente/uPluginControllerAlbaranesCliente.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Albaranes de cliente/Cliente/uPluginControllerAlbaranesCliente.ddp differ diff --git a/Modulos/Albaranes de cliente/Cliente/uPluginControllerAlbaranesCliente.dfm b/Modulos/Albaranes de cliente/Cliente/uPluginControllerAlbaranesCliente.dfm new file mode 100644 index 0000000..d9083b1 --- /dev/null +++ b/Modulos/Albaranes de cliente/Cliente/uPluginControllerAlbaranesCliente.dfm @@ -0,0 +1,210 @@ +object ModuleAlbaranesCliente: TModuleAlbaranesCliente + OldCreateOrder = True + DefaultAction = actAlbaranesCliente + Description = 'Ventas' + ModuleMenu = MainMenu + ModuleName = 'Albaranes de pago' + SmallImages = SmallImages + LargeImages = LargeImages + Author = 'Rodax Software' + Version = '1.0.0' + Left = 652 + Top = 457 + Height = 252 + Width = 401 + object LargeImages: TPngImageList + Height = 24 + Width = 24 + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD252000002744944415478DA + 63FCFFFF3F032D01E3F0B060F9D6D334B3056E41A4B729491AFFFCFDCFF0F7EF + 3F869FBFFE80E93FFFFE8169301B887FFDFECB109E5E876A41E249438206FF05 + AAFFF5F72FC3AF3F7FC0F4975FBF207C10065A02932BFAB59C61DED24D9816CC + 373F8F6291F45B6F8626CF660C8BFE010D0361CFD5F60C1F791E800DBF14F082 + 4169A520D8928ABFAB705B00022036B2E11718CF33189F346660B809E4A83330 + 9C353FCBA0F9438BE117D007415B3C189EB2DF66B811FC1AAC566C3137431DC3 + 5AFC3E8019CE7C8A89E1AFD93F300D32FC6CDC5906E379408BB419183EEB7C61 + E0BDC2C3F05AE50D43F84E5F86BD51C718841771817DD0CEB211BB05E841C3BC + 1C684124D082C54C10C39719339C8D02D2B38C193E447C6410D8C2CFF0C2E525 + 43D49E00860B7F2EC0E3A3977D0B911620FBE02A508203887F30807DF056ED1D + 83F02D218627324F18E20E86329CFA79166EC164AEEDF82D40B6E42F50C36596 + 4B9038B80894D087C481DC5B79869F3F7E60180E02382D404E4520C58A1FFC18 + 6A9C6BC196FC03A7F5BF700CE247EF0D841BFE33E50F03E34C46FC16C0003C6D + 03B1CCB31F0C5325B4B1E60BDE877B505C0E03582D40CFA57FA039F3EA444D06 + 09A7200645CB1E86FBC74BC06A5EDC0726E7FBF719E6EE7BCE30A7DA09C3E229 + 4F73312D98B2780756570A7E3BC7A0F4660ED8307450DD928DD3E273AC89080B + BA27CF27584C9C2B7B88553CA5751FA65AA0E12000B680919191A0E1C75A14FF + 93124C404BC3E6EEFBB19A140B4281D42A6CC13467EF77AC96022D6024CA0290 + E196969AABB0C91D3F7E1D6BDC008101D0828BC45A803778402EC5A597681FE0 + 0A1E200087355E0B6809686E0100FA3E2AAB1481BE0E0000000049454E44AE42 + 6082} + Name = 'PngImage1' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD252000001CE4944415478DA + 63FCFFFF3F032D0123B2058B361EA79A6D71FE968C582D004A906CD8DFBFFF80 + F83F9806010BDF6C868B7B66E1B660AFA53D8A01CEC70FE2341C59ADE99E5D0C + F356EF6198BF64237E0B4871F9011B4706651669866DA7973344BEFCC6B070FD + 3EC21660F301BA1808D81EDCC770D8DE89E1E6F943607ED8B32F0C4B361DA0CC + 07FFFF01C31A88FF005D0F62FFFE070CFF3FFFC0BEF9F3EF2FC38A2D8749F701 + 3100E40BDF07EF18D6EE38469C05306F9302BCEEBE61D8B0FB047116E04B39D8 + 00488FE2CAB50C9BF69D24DE025C4105B31C260F532BB77C0DC3D603A768E703 + C925AB18761D3E433B1F882D58C1B0F7F839DAF94078EE328603A72EE0B720DA + C71C9C3BC9F101FFEC250C47CE5CC26F4184A719387792E303AEE90B194E5EB8 + 8ADF8250371386634E2E6459C03E653EC399CBD7F15B10E062C470DAC50DAF61 + 20CBFFCC9D0FE7B32427822D60993897E1FCB59BF82DF0753080972B9072FE1F + B8EC018B01CBFCA7D1A118F103E333F6CF61B874E3167E0BBC6CF5701A0EA25F + C485630D3EA22D70B3D6C66938A8047D93188933E888B2C0D15C036CD8BFBF90 + 62F9F75F4471FCEF3FD4A27FFF501C810C085A6067A2062E112901782DE89D3C + 9F6C839101CC0200E97E29EF897181770000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end> + Left = 232 + Top = 16 + Bitmap = {} + end + object ModuleActionList: TActionList + Images = LargeImages + Left = 40 + Top = 72 + object actAlbaranesCliente: TAction + Category = 'Ventas' + Caption = 'Albaranes de cliente' + ImageIndex = 1 + OnExecute = actAlbaranesClienteExecute + end + end + object MainMenu: TMainMenu + Images = LargeImages + Left = 40 + Top = 16 + object Ventas1: TMenuItem + Tag = 400 + Caption = '&Ventas' + GroupIndex = 1 + ImageIndex = 0 + object MenuItem5: TMenuItem + Tag = 3000 + Action = actAlbaranesCliente + end + end + end + object SmallImages: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD2520000011A4944415478DA + 63FCFFFF3F032580916203966D3945B60991DEA68C6003D4BD9919269F4CC6AA + E8F7DFBF0CDFFFFC61F8F6FB37C3C71F3FC0ECB9FE5B19523CE6309CDB310D61 + 0008C00C996B760EC3209B6D7270CD208062C02E9134B8429866E6534C1081AB + 0C0C7F13FF81999A6B4519BE035D02728DDCB204220CB80A118319A0B04200AC + 19843556A762370024B9DCFA328617903583BC62B83E13350C40FE074B421581 + 70EF05569C31907DD8036140F7E4F9180AA6DAEE60B04CAE6660905064F8717C + 2AC3F97DE719E6EE7BCE30A5C50BCE9EB3F73B23232E1B8EB528861E7CADB6EA + CEE58358E5939D24C32CABEFADC667C07F8A5D00A456811452D505208D5635F7 + 5783D480F211C92E98BBEF075C0FD8004A73230074DEE0E1BE54FBD500000000 + 49454E44AE426082} + Name = 'PngImage1' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001784944415478DA + 63FCFFFF3FC384055BFF3390010A12BC1919610600394469FAF3F71FC3EF3F7F + 192CBCB3192EEE99856AC05E4B2B14C5CEC78F81696471AB030719662EDFC530 + 7FC9464C03F0815FBFFF826D06D10BD7EDC36E00BA0BB001DDAD3B19966D3A84 + DB0098B341E01F50EECF9F7F709BCFB93B33686EDCCEB06ADB11FC06C05C627B + E830C3613B5BB8CD97BDDD1954D66E6158BFEB387E03D06DFEFDE70F987FDDDF + 934161E54686CDFB4EE136C0F1D85186FD56D6605B8D76EE053B1B044036DF09 + F661905ABA9E61E7A133B80D00391BDDE69FBFFE30FC028A3D890C60109ABB8A + E1E0A98B9806E4C47A321CB4B1410971B5F55B196E0542A2577CD15A869771C1 + 0CBC3357301C3B7719D380F44837B02D7F7EFF03DB7CD5D7834169F566B0D8EF + DF10FC2E398C8163EA5286D397AE611A9018EA0CD70CF202CC6674C03C7111C3 + 856B37310D880D70846B06F91BD9E6DFD01801E17FFFFE335CBA710BD380081F + 5B86155B0E139D13310C0009900A400600000CC180F01CA0F4A8000000004945 + 4E44AE426082} + Name = 'PngImage1' + Background = clWindow + end> + PngOptions = [pngBlendOnDisabled, pngGrayscaleOnDisabled] + Left = 308 + Top = 16 + Bitmap = {} + end + object ExtraImages: TPngImageList + Height = 28 + Width = 28 + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D494844520000001C0000001C0806000000720DDF + 940000000970485973000017120000171201679FD252000002D84944415478DA + ED946D48535118C7FF57855EB4171542B01756516845C868B63E4A1F2A7B1996 + 990B845008EA637DD2A828F34BF521D220C98484C28232B24C302329456D380D + A99C75035FB6A5B3E9ACAEBA7BD773CF4D9BEE6E6E23F6217AE0F09C73EE73CE + EF79CEFF9CCB793C1E44D2B8FFC07F0378EF697BC4A833C0DCCC6D616DE0163D + 104589BCC43CEB4B5E7DE62986E6728E9F9D0D3CD69A163448A47593A28849B7 + 5BF1731B01A6BFD7E97AC0F70DA0B0A4DC175899DE310B9CECC8C485DD17FD82 + 25DA58621589D8FB3003A3715F18ACCB60C3DAEA7806ADD759D03768F50F944D + EEABC1CC5C07B4AD5AE0230D3602A6741352845406945B56ED2E0C2CB0E0C3C1 + 2116BFA22A160DBA5E0CDAED812BF48645B745013C1D638EA4F40966CA33417B + 9BC09B00D7E6712C791C07AC0386D60F23A77E1F5E189B91786731ABB029FD33 + ECC343EA40B5A38CAE268844C05C02564529B0BB5A988CE4CBB5701E19C5F2DA + 652CD6B6D30E63830166B77946CFD7DB7938461C2100E5AA2C043CFABBC26E9A + 5C484D00ABD0B16104897509ACC2FE95FDC87B958DB609D30CF08D8EC798CB19 + 18A87661648DDEC574291A76D2C45645C3D58E35EC9B7B6ACA07265B93F613BE + FF189BFF96CA0B34CEFD0C2A6F386EEB467C4F61C0E7B2CADC80AF4B454C14B8 + C1DDE4D8DCCB340B04613C70856A6FABB81DD0E71701491A128B677102FF8C79 + 276F65FE4C45076E1565CC4AE291EB0416C527FB02E7FB7BF4DED882A48C2C68 + F457C0B79C562E09AF3C23F04A02158D569416EFF149E2D0B9165FE0F32673C0 + E31AB0BC45AAAD846DAA66D66F024ACB4EA9262103CBAE5DFD03BC7CBD12C158 + 72AC0B4F4E8E048C29B8D4E83DAC791F73C0F0934B600306E4382E28986CCDC5 + 1A4FA83A5202872B1A8507610383D5D13B010272E102B3694323750D7E426AF2 + F37718E62610165086E9F529F743D08F2540ED3C013BC30106A5DF74356A1632 + 3018FDFE26705EFDBC8FCF2F30921671E02FBE648AC22CC7AE57000000004945 + 4E44AE426082} + Name = 'PngImage0' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D494844520000001C0000001C0806000000720DDF + 940000000970485973000017120000171201679FD2520000028D4944415478DA + BDD6D96F12411800F00F313E9898989818135F4C4CF4C922F64A91F4B6144A8D + B6A5B5B59A68FF20638CF16AB1508A94638B40B14869412E918248F1A82FC627 + A331515F8C0FEC7EEE2E47A80566EB36FD58B2CCB033BFF96616662588087B19 + 924A707135C717B83AFECD14BE2B97D9177F143FF36DF90341BA4F5A15B8A269 + 94D404A9C0060EF59CF9EFD1336C5F0C3B489A6680661850E8AE43C66DA90D3A + 56B238DCDB008136C5B6CE7AE2B19AD0BFD7B7AD05E1A1C50FB38E3961E04E83 + 034F0F5C80BC2F07DE340593DFFE80DEB64206EDCFDFE0489FAC6686D5EABB62 + 5158539C87CD6CBC5C37FEE53718A8553268F36550A73A2B38336E9D681AF933 + B776F93C53AE9B7705C9A0D5F71A4755F2AA99080D2ED3A1CFBFC0E2090B0097 + 59B0BF00564ED14EE3D2A79F60F546C8E0C2B3348EA9CFF160BDBBB25E706D4F + 514BE0F0C5C8A0C59B42F6872A1A3C697783D3FF920C3EF1AEE3B8A6A90CD65B + CBD2802AAF29B5396175813B902083E6A5244E0C348BCEF0B8D909CBA1A400D0 + C3825AF1E0311305FE708A0CCE7B5EE1556D8BE8293D6A7440209A2683267702 + 27075B456778446F836022230074257062B085FFAB12031E9E5E8070324B068D + 4FE3EC1AB64248A91435A5871E582096DE10068EA99B21D2D12E2AC383F7CC90 + C8BC258306670C75FD4D10EFEA14051EB8638254EE3D199C5D8CE2E5DE4658EF + EB16D43937A8BC7EA65CDE7F738A07A5B78D9079B7290CBCD82D2F6E39F496C7 + 059A293C3EE48BE5AFD786B7AD73A92CB96580EC878F64F03115416DA79C88D1 + 7984EF3746AA4EFB8E40BD238C9A0E1911E3CE3FA6466B4EB56070C6FE02D5ED + 3222B66540153B7E650802A76D2154291BF8BD6C3782083EB206F1EEDCFD5DC1 + 4A5117DC8BF80B62399AE770EE3AE80000000049454E44AE426082} + Name = 'PngImage1' + Background = clWindow + end> + Left = 232 + Top = 80 + Bitmap = {} + end +end diff --git a/Modulos/Albaranes de cliente/Cliente/uPluginControllerAlbaranesCliente.pas b/Modulos/Albaranes de cliente/Cliente/uPluginControllerAlbaranesCliente.pas new file mode 100644 index 0000000..f0fe4cd --- /dev/null +++ b/Modulos/Albaranes de cliente/Cliente/uPluginControllerAlbaranesCliente.pas @@ -0,0 +1,68 @@ +unit uPluginControllerAlbaranesCliente; + +interface + +uses + uModuleController, uInterfaces, uHostManager, Menus, Classes, ActnList, + ImgList, Controls, PngImageList; + +type + IMCAlbaranesCliente = interface(IInterface) + ['{2D9B9C86-6970-46E6-A4B3-4361361C38B6}'] + end; + + TModuleAlbaranesCliente = class(TModuleController, IMCAlbaranesCliente) + actAlbaranesCliente: TAction; + ExtraImages: TPngImageList; + LargeImages: TPngImageList; + MainMenu: TMainMenu; + ModuleActionList: TActionList; + SmallImages: TPngImageList; + Ventas1: TMenuItem; + MenuItem5: TMenuItem; + procedure actAlbaranesClienteExecute(Sender: TObject); + public + end; + +implementation + +{$R *.dfm} + +uses + Forms, Dialogs, uGUIBase, uCustomEditor, SysUtils, + uBizAlbaranesCliente, uDataModuleAlbaranesCliente, uEditorAlbaranesCliente; + +function GetModule : TModuleController; +begin + Result := TModuleAlbaranesCliente.Create(NIL); +end; + +exports + GetModule name GET_MODULE_FUNC; + +procedure TModuleAlbaranesCliente.actAlbaranesClienteExecute(Sender: TObject); +var + aObj: IEditorAlbaranesCliente; + AAlbaranesCliente : IBizAlbaranesCliente; +begin + AAlbaranesCliente := dmAlbaranesCliente.GetItems; + aObj := TfEditorAlbaranesCliente.Create(Application); + try + with aObj do + begin + AlbaranesCliente := AAlbaranesCliente; + ShowEmbedded; + end; + finally + AAlbaranesCliente := NIL; + aObj := NIL; + end; +end; + +initialization + RegisterModuleClass(TModuleAlbaranesCliente); + +finalization + UnRegisterModuleClass(TModuleAlbaranesCliente); + +end. diff --git a/Modulos/Albaranes de cliente/Cliente/uViewAlbaranCliente.ddp b/Modulos/Albaranes de cliente/Cliente/uViewAlbaranCliente.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Albaranes de cliente/Cliente/uViewAlbaranCliente.ddp differ diff --git a/Modulos/Albaranes de cliente/Cliente/uViewAlbaranCliente.dfm b/Modulos/Albaranes de cliente/Cliente/uViewAlbaranCliente.dfm new file mode 100644 index 0000000..ed0a5d5 --- /dev/null +++ b/Modulos/Albaranes de cliente/Cliente/uViewAlbaranCliente.dfm @@ -0,0 +1,186 @@ +inherited frViewAlbaranCliente: TfrViewAlbaranCliente + Width = 755 + Height = 300 + Align = alClient + Constraints.MinHeight = 300 + Constraints.MinWidth = 755 + inline frViewDatosYSeleccionContacto1: TfrViewDatosYSeleccionContacto + Left = 362 + Top = 0 + Width = 391 + Height = 228 + Constraints.MinHeight = 202 + Constraints.MinWidth = 350 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 0 + ReadOnly = False + inherited Label5: TLabel + Width = 97 + Caption = 'Datos del cliente' + end + inherited Bevel1: TBevel + Left = 112 + Width = 265 + end + inherited ToolBar1: TToolBar + ButtonWidth = 129 + inherited ToolButton3: TToolButton + Left = 106 + end + inherited ToolButton2: TToolButton + Left = 114 + Caption = 'Dar de alta un cliente' + end + end + inherited edtlNombre: TcxDBTextEdit + StyleDisabled.BorderStyle = ebsNone + StyleDisabled.TextColor = clActiveCaption + Height = 21 + Width = 296 + end + inherited edtPoblacion: TcxDBTextEdit + StyleDisabled.BorderStyle = ebsNone + StyleDisabled.TextColor = clActiveCaption + TabOrder = 4 + Height = 21 + Width = 296 + end + inherited edtProvincia: TcxDBTextEdit + StyleDisabled.BorderStyle = ebsNone + StyleDisabled.TextColor = clActiveCaption + TabOrder = 3 + Height = 21 + Width = 152 + end + inherited edtNIFCIF: TcxDBTextEdit + StyleDisabled.BorderStyle = ebsNone + StyleDisabled.TextColor = clActiveCaption + Height = 21 + Width = 296 + end + inherited edtCalle: TcxDBTextEdit + StyleDisabled.BorderStyle = ebsNone + StyleDisabled.TextColor = clActiveCaption + Height = 21 + Width = 296 + end + inherited ToolBar2: TToolBar + Left = 181 + ButtonWidth = 178 + inherited ToolButton4: TToolButton + Caption = 'Ver ficha completa del cliente...' + end + end + inherited edtCodigoPostal: TcxDBTextEdit + StyleDisabled.BorderStyle = ebsNone + StyleDisabled.TextColor = clActiveCaption + Height = 21 + Width = 105 + end + inherited DADataSource: TDADataSource + Left = 64 + Top = 32 + end + inherited ActionList1: TActionList + inherited actElegirContacto: TAction + Caption = 'Elegir un cliente' + end + end + end + inline frViewDatosAlbaranCliente1: TfrViewDatosAlbaranCliente + Left = 0 + Top = 0 + Width = 360 + Height = 110 + Constraints.MinHeight = 110 + Constraints.MinWidth = 360 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 1 + ReadOnly = False + inherited edtFecha: TcxDBDateEdit + Width = 245 + end + inherited edtFechaPago: TcxDBDateEdit + Width = 245 + end + inherited eReferencia: TcxDBTextEdit + Width = 245 + end + end + inline frViewFormaPago1: TfrViewFormaPago + Left = 0 + Top = 215 + Width = 360 + Height = 79 + Constraints.MinWidth = 300 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 3 + ReadOnly = False + inherited Bevel1: TBevel + Width = 252 + end + inherited memFormaPago: TcxDBMemo + Height = 45 + Width = 329 + end + end + inline frViewObservaciones1: TfrViewObservaciones + Left = 368 + Top = 215 + Width = 381 + Height = 77 + Constraints.MinWidth = 300 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 2 + ReadOnly = False + inherited Bevel1: TBevel + Width = 283 + end + inherited memObservaciones: TcxDBMemo + Height = 45 + Width = 360 + end + end + inline frViewPresupuestoAlbaran1: TfrViewPresupuestoAlbaran + Left = 0 + Top = 104 + Width = 360 + Height = 121 + Constraints.MinHeight = 90 + Constraints.MinWidth = 360 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 4 + ReadOnly = False + inherited edtlReferencia: TcxDBTextEdit + Height = 21 + Width = 245 + end + end + object DADataSource: TDADataSource + end +end diff --git a/Modulos/Albaranes de cliente/Cliente/uViewAlbaranCliente.pas b/Modulos/Albaranes de cliente/Cliente/uViewAlbaranCliente.pas new file mode 100644 index 0000000..0f17cd3 --- /dev/null +++ b/Modulos/Albaranes de cliente/Cliente/uViewAlbaranCliente.pas @@ -0,0 +1,100 @@ +unit uViewAlbaranCliente; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, uBizAlbaranesCliente, DB, uDADataTable, uCustomView, + uViewDatosYSeleccionContacto, uViewDatosAlbaranCliente, + uViewObservaciones, uViewFormaPago, AppEvnts, uViewPresupuestoAlbaran, + uViewPresupuestoRelacionado, JvExControls, JvComponent, JvLabel, + JvDBControls, StdCtrls, Buttons; + +type + IViewAlbaranCliente = interface(IViewBase) + ['{4AF36827-838E-40AC-BEB5-72D69C721E6B}'] + function GetAlbaranCliente: IBizAlbaranesCliente; + procedure SetAlbaranCliente(const Value: IBizAlbaranesCliente); + property AlbaranCliente: IBizAlbaranesCliente read GetAlbaranCliente + write SetAlbaranCliente; + end; + + TfrViewAlbaranCliente = class(TfrViewBase, IViewAlbaranCliente) + DADataSource: TDADataSource; + frViewDatosYSeleccionContacto1: TfrViewDatosYSeleccionContacto; + frViewDatosAlbaranCliente1: TfrViewDatosAlbaranCliente; + frViewObservaciones1: TfrViewObservaciones; + frViewFormaPago1: TfrViewFormaPago; + frViewPresupuestoAlbaran1: TfrViewPresupuestoAlbaran; + procedure BitBtn1Click(Sender: TObject); + private + FAlbaranCliente : IBizAlbaranesCliente; + procedure OnContactoChanged (Sender : TObject); + procedure OnPresupuestoChanged(Sender : TObject); + protected + function GetAlbaranCliente: IBizAlbaranesCliente; + procedure SetAlbaranCliente(const Value: IBizAlbaranesCliente); + public + property AlbaranCliente: IBizAlbaranesCliente read GetAlbaranCliente + write SetAlbaranCliente; + end; + +var + frViewAlbaranCliente: TfrViewAlbaranCliente; + +implementation + +uses uBizContacto, uExceptions, uDataModulePresupuestos; + +{$R *.dfm} + +{ TfrViewAlbaranCliente } + +function TfrViewAlbaranCliente.GetAlbaranCliente: IBizAlbaranesCliente; +begin + Result := FAlbaranCliente; +end; + +procedure TfrViewAlbaranCliente.OnContactoChanged(Sender: TObject); +begin + if FAlbaranCliente.CODIGOCONTACTO <> (frViewDatosYSeleccionContacto1.Contacto as IBizCliente).CODIGO then + FAlbaranCliente.Cliente := (frViewDatosYSeleccionContacto1.Contacto as IBizCliente); +end; + +procedure TfrViewAlbaranCliente.OnPresupuestoChanged(Sender: TObject); +begin + if not (FAlbaranCliente.DataTable.State in dsEditModes) then + FAlbaranCliente.Edit; + FAlbaranCliente.CODIGOPRESUPUESTO := frViewPresupuestoAlbaran1.Presupuesto.CODIGO; + FAlbaranCliente.CopyFrom(frViewPresupuestoAlbaran1.Presupuesto); + frViewDatosYSeleccionContacto1.Contacto := FAlbaranCliente.Cliente; + MessageBox(0, 'Se ha copiado correctamente el presupuesto elegido en este albarán.', 'Presupuesto copiado', MB_ICONWARNING or MB_OK); +end; + +procedure TfrViewAlbaranCliente.SetAlbaranCliente( + const Value: IBizAlbaranesCliente); +begin + FAlbaranCliente := Value; + if Assigned(FAlbaranCliente) then + DADataSource.DataTable := FAlbaranCliente.DataTable + else + DADataSource.DataTable := NIL; + + frViewDatosAlbaranCliente1.DADataSource.DataTable := DADataSource.DataTable; + frViewObservaciones1.DADataSource.DataTable := DADataSource.DataTable; + frViewFormaPago1.DADataSource.DataTable := DADataSource.DataTable; + + frViewDatosYSeleccionContacto1.Contacto := FAlbaranCliente.Cliente; + frViewDatosYSeleccionContacto1.OnContactoChanged := OnContactoChanged; + + frViewPresupuestoAlbaran1.Presupuesto := dmPresupuestos.GetPresupuesto(FAlbaranCliente.CODIGOPRESUPUESTO); + frViewPresupuestoAlbaran1.OnPresupuestoChanged := OnPresupuestoChanged; +end; + +procedure TfrViewAlbaranCliente.BitBtn1Click(Sender: TObject); +begin + inherited; + frViewDatosYSeleccionContacto1.Contacto.DataTable.Active := tRUE; +end; + +end. diff --git a/Modulos/Albaranes de cliente/Cliente/uViewAlbaranRelacionado.ddp b/Modulos/Albaranes de cliente/Cliente/uViewAlbaranRelacionado.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Albaranes de cliente/Cliente/uViewAlbaranRelacionado.ddp differ diff --git a/Modulos/Albaranes de cliente/Cliente/uViewAlbaranRelacionado.dfm b/Modulos/Albaranes de cliente/Cliente/uViewAlbaranRelacionado.dfm new file mode 100644 index 0000000..0ca51fa --- /dev/null +++ b/Modulos/Albaranes de cliente/Cliente/uViewAlbaranRelacionado.dfm @@ -0,0 +1,163 @@ +inherited frViewAlbaranRelacionado: TfrViewAlbaranRelacionado + Width = 360 + Height = 90 + Constraints.MinHeight = 90 + Constraints.MinWidth = 360 + DesignSize = ( + 360 + 90) + object Label5: TLabel + Left = 8 + Top = 8 + Width = 114 + Height = 13 + Caption = 'Albar'#225'n relacionado' + Font.Charset = DEFAULT_CHARSET + Font.Color = clActiveCaption + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + ParentFont = False + end + object Bevel1: TBevel + Left = 152 + Top = 8 + Width = 197 + Height = 9 + Anchors = [akLeft, akTop, akRight] + Shape = bsBottomLine + end + object lblNombre: TLabel + Left = 16 + Top = 64 + Width = 56 + Height = 13 + Caption = 'Referencia:' + end + object ToolBar1: TToolBar + Left = 8 + Top = 29 + Width = 338 + Height = 22 + Align = alNone + Anchors = [akLeft, akTop, akRight] + ButtonWidth = 107 + Caption = 'ToolBar1' + EdgeBorders = [] + EdgeInner = esNone + EdgeOuter = esNone + Flat = True + Images = PngImageList + List = True + ParentShowHint = False + ShowCaptions = True + ShowHint = True + TabOrder = 0 + Transparent = True + Wrapable = False + object ToolButton1: TToolButton + Left = 0 + Top = 0 + Action = actElegirAlbaran + AutoSize = True + end + object ToolButton3: TToolButton + Left = 111 + Top = 0 + Width = 8 + Caption = 'ToolButton3' + ImageIndex = 1 + Style = tbsSeparator + end + object ToolButton2: TToolButton + Left = 119 + Top = 0 + Action = actVerAlbaran + end + end + object edtlReferencia: TcxDBTextEdit + Left = 100 + Top = 60 + Anchors = [akLeft, akTop, akRight] + AutoSize = False + DataBinding.DataField = 'REFERENCIA' + DataBinding.DataSource = DADataSource + Enabled = False + ParentFont = False + Style.Font.Charset = DEFAULT_CHARSET + Style.Font.Color = clWindowText + Style.Font.Height = -11 + Style.Font.Name = 'Tahoma' + Style.Font.Style = [] + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clActiveCaption + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 1 + Height = 21 + Width = 245 + end + object ActionList1: TActionList + Images = PngImageList + Left = 256 + object actElegirAlbaran: TAction + Caption = 'Elegir un albar'#225'n' + ImageIndex = 1 + end + object actVerAlbaran: TAction + Caption = 'Ver el albaran...' + ImageIndex = 1 + OnExecute = actVerAlbaranExecute + OnUpdate = actVerAlbaranUpdate + end + end + object PngImageList: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001774944415478DA + 63FCFFFF3FC384055BFF3390010A12BC1919610600394469FAF3F71FC3EF3F7F + 192CBCB3192EEE99856A80C35E4B14C5079C8F836964F1ED368718662EDFC530 + 7FC9464C03F0815FBFFF826D06D10BD7EDC36E00BA0BB0815586BB18966D3A84 + DB0098B341E01F50EECF9F7F709B034F3B312CD3DDC1B06ADB11FC06C05CB2CB + EE0883DB211BB8CD61E7DD18166A6E6558BFEB387E03D06DFEFDE70F981F75D9 + 8361AEEA2686CDFB4EE136609FD33106A77D56605BD79BEE033B1B044036C75F + F76698AEB88161E7A133B80D00391BDDE69FBFFE30FC028AA5DFF567E8975CCD + 70F0D4454C0372623D195C0E58A384F862ED6D0CB157BDC0EC2972EB18721E05 + 317489AE643876EE32A601E9916E605BFEFCFE07B639E2A23BC37CF52D60B1DF + BF21B8F0792843ABE03286D397AE611A9018EA0CD70CF202CC6674D0C0BB98E1 + C2B59B9806C40638C23583FC8D6CF36F688C80F0BF7FFF192EDDB8856940848F + 2DC38A2D8789CE89180680044805200300115980F04CC063740000000049454E + 44AE426082} + Name = 'PngImage1' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001774944415478DA + 63FCFFFF3FC384055BFF3390010A12BC1919610600394469FAF3F71FC3EF3F7F + 192CBCB3192EEE99856A80C35E4B14C5079C8F836964F1ED368718662EDFC530 + 7FC9464C03F0815FBFFF826D06D10BD7EDC36E00BA0BB0815586BB18966D3A84 + DB0098B341E01F50EECF9F7F709B034F3B312CD3DDC1B06ADB11FC06C05CB2CB + EE0883DB211BB8CD61E7DD18166A6E6558BFEB387E03D06DFEFDE70F981F75D9 + 8361AEEA2686CDFB4EE136609FD33106A77D56605BD79BEE033B1B044036C75F + F76698AEB88161E7A133B80D00391BDDE69FBFFE30FC028AA5DFF567E8975CCD + 70F0D4454C0372623D195C0E58A384F862ED6D0CB157BDC0EC2972EB18721E05 + 317489AE643876EE32A601E9916E605BFEFCFE07B639E2A23BC37CF52D60B1DF + BF21B8F0792843ABE03286D397AE611A9018EA0CD70CF202CC6674D0C0BB98E1 + C2B59B9806C40638C23583FC8D6CF36F688C80F0BF7FFF192EDDB8856940848F + 2DC38A2D8789CE89180680044805200300115980F04CC063740000000049454E + 44AE426082} + Name = 'PngImage2' + Background = clWindow + end> + Left = 288 + Bitmap = {} + end + object DADataSource: TDADataSource + Left = 320 + end +end diff --git a/Modulos/Albaranes de cliente/Cliente/uViewAlbaranRelacionado.pas b/Modulos/Albaranes de cliente/Cliente/uViewAlbaranRelacionado.pas new file mode 100644 index 0000000..e69dc89 --- /dev/null +++ b/Modulos/Albaranes de cliente/Cliente/uViewAlbaranRelacionado.pas @@ -0,0 +1,110 @@ +unit uViewAlbaranRelacionado; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, ExtCtrls, StdCtrls, cxControls, cxContainer, cxEdit, + cxTextEdit, cxDBEdit, ComCtrls, ToolWin, ImgList, PngImageList, ActnList, + DB, uDADataTable, uBizAlbaranesCliente; + +type + IViewAlbaranRelacionado = interface(IViewBase) + ['{FE0AF619-B4C7-4347-B890-BE8834803B1E}'] + + function GetAlbaran: IBizAlbaranesCliente; + procedure SetAlbaran(const Value: IBizAlbaranesCliente); + property Albaran: IBizAlbaranesCliente read GetAlbaran write SetAlbaran; + + function GetOnAlbaranChanged : TNotifyEvent; + procedure SetOnAlbaranChanged (const Value : TNotifyEvent); + property OnAlbaranChanged : TNotifyEvent read GetOnAlbaranChanged + write SetOnAlbaranChanged; + end; + + TfrViewAlbaranRelacionado = class(TfrViewBase, IViewAlbaranRelacionado) + Label5: TLabel; + Bevel1: TBevel; + ActionList1: TActionList; + actElegirAlbaran: TAction; + actVerAlbaran: TAction; + PngImageList: TPngImageList; + ToolBar1: TToolBar; + ToolButton1: TToolButton; + ToolButton3: TToolButton; + ToolButton2: TToolButton; + lblNombre: TLabel; + DADataSource: TDADataSource; + edtlReferencia: TcxDBTextEdit; + procedure actVerAlbaranExecute(Sender: TObject); + procedure actVerAlbaranUpdate(Sender: TObject); + private + FAlbaran : IBizAlbaranesCliente; + FOnAlbaranChanged : TNotifyEvent; + protected + function GetAlbaran: IBizAlbaranesCliente; + procedure SetAlbaran(const Value: IBizAlbaranesCliente); + + function GetOnAlbaranChanged : TNotifyEvent; + procedure SetOnAlbaranChanged (const Value : TNotifyEvent); + public + property Albaran: IBizAlbaranesCliente read GetAlbaran write SetAlbaran; + property OnAlbaranChanged : TNotifyEvent read GetOnAlbaranChanged + write SetOnAlbaranChanged; + end; + +var + frViewAlbaranRelacionado: TfrViewAlbaranRelacionado; + +implementation + +uses + uDataModuleAlbaranesCliente, schAlbaranesClienteClient_Intf; + +{$R *.dfm} + +{ TfrViewAlbaranRelacionado } + +procedure TfrViewAlbaranRelacionado.actVerAlbaranExecute( + Sender: TObject); +begin + FAlbaran.Show; +end; + +procedure TfrViewAlbaranRelacionado.actVerAlbaranUpdate( + Sender: TObject); +begin + inherited; + (Sender as TAction).Enabled := Assigned(FAlbaran); +end; + +function TfrViewAlbaranRelacionado.GetAlbaran: IBizAlbaranesCliente; +begin + Result := FAlbaran; +end; + +procedure TfrViewAlbaranRelacionado.SetAlbaran(const Value: IBizAlbaranesCliente); +begin + FAlbaran := Value; + DADataSource.DataTable := FAlbaran.DataTable; + + if not FAlbaran.DataTable.Active then + FAlbaran.DataTable.Active := True; + + if Assigned(FOnAlbaranChanged) then + FOnAlbaranChanged(Self); +end; + + +function TfrViewAlbaranRelacionado.GetOnAlbaranChanged: TNotifyEvent; +begin + Result := FOnAlbaranChanged; +end; + +procedure TfrViewAlbaranRelacionado.SetOnAlbaranChanged( + const Value: TNotifyEvent); +begin + FOnAlbaranChanged := Value; +end; + +end. diff --git a/Modulos/Albaranes de cliente/Cliente/uViewAlbaranesCliente.ddp b/Modulos/Albaranes de cliente/Cliente/uViewAlbaranesCliente.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Albaranes de cliente/Cliente/uViewAlbaranesCliente.ddp differ diff --git a/Modulos/Albaranes de cliente/Cliente/uViewAlbaranesCliente.dfm b/Modulos/Albaranes de cliente/Cliente/uViewAlbaranesCliente.dfm new file mode 100644 index 0000000..491c277 --- /dev/null +++ b/Modulos/Albaranes de cliente/Cliente/uViewAlbaranesCliente.dfm @@ -0,0 +1,217 @@ +inherited frViewAlbaranesCliente: TfrViewAlbaranesCliente + inherited cxGrid: TcxGrid + RootLevelOptions.DetailTabsPosition = dtpTop + OnActiveTabChanged = cxGridActiveTabChanged + inherited cxGridView: TcxGridDBTableView + DataController.KeyFieldNames = 'CODIGO' + DataController.Summary.FooterSummaryItems = < + item + Format = '0 Albaranes' + Kind = skCount + Column = cxGridViewNOMBRE + end + item + Format = ',0.00 '#8364';-,0.00 '#8364 + Kind = skSum + Column = cxGridViewIMPORTETOTAL + end> + object cxGridViewICONO: TcxGridDBColumn + Visible = False + OnCustomDrawCell = cxGridViewCODIGOCustomDrawCell + BestFitMaxWidth = 25 + Width = 25 + end + object cxGridViewCODIGO: TcxGridDBColumn + DataBinding.FieldName = 'CODIGO' + Visible = False + BestFitMaxWidth = 25 + Width = 21 + IsCaptionAssigned = True + end + object cxGridViewSITUACION: TcxGridDBColumn + DataBinding.FieldName = 'SITUACION' + PropertiesClassName = 'TcxImageComboBoxProperties' + Properties.Images = PngImageList + Properties.Items = < + item + Description = 'Pendiente' + Value = 'Pendiente' + end + item + Description = 'Pagado' + ImageIndex = 3 + Tag = 1 + Value = 'Pagado' + end> + Properties.ShowDescriptions = False + BestFitMaxWidth = 25 + Width = 58 + IsCaptionAssigned = True + end + object cxGridViewREFERENCIA: TcxGridDBColumn + DataBinding.FieldName = 'REFERENCIA' + PropertiesClassName = 'TcxTextEditProperties' + SortIndex = 0 + SortOrder = soDescending + Width = 136 + end + object cxGridViewREFERENCIAPRESUPUESTO: TcxGridDBColumn + Caption = 'Ref. montaje' + DataBinding.FieldName = 'REFERENCIAPRESUPUESTO' + end + object cxGridViewFECHAALBARAN: TcxGridDBColumn + DataBinding.FieldName = 'FECHAALBARAN' + Width = 138 + end + object cxGridViewNOMBRE: TcxGridDBColumn + DataBinding.FieldName = 'NOMBRE' + Width = 681 + end + object cxGridViewFECHAPAGO: TcxGridDBColumn + DataBinding.FieldName = 'FECHAPAGO' + Width = 118 + end + object cxGridViewIMPORTETOTAL: TcxGridDBColumn + DataBinding.FieldName = 'IMPORTETOTAL' + PropertiesClassName = 'TcxCurrencyEditProperties' + Properties.Alignment.Horz = taRightJustify + FooterAlignmentHorz = taRightJustify + HeaderAlignmentHorz = taRightJustify + Width = 147 + end + end + inherited cxGridLevel: TcxGridLevel + Caption = 'Todos' + end + object cxGridLevel1: TcxGridLevel + Caption = 'Pendientes' + end + object cxGridLevel2: TcxGridLevel + Caption = 'Pagados' + end + end + inherited frViewFiltroBase1: TfrViewFiltroBase + inherited TBXDock1: TTBXDock + inherited TBXDockablePanel1: TTBXDockablePanel + inherited dxLayoutControl1: TdxLayoutControl + inherited txtFiltroTodo: TcxTextEdit + Width = 465 + end + inherited edtFechaIniFiltro: TcxDateEdit + Width = 245 + end + inherited edtFechaFinFiltro: TcxDateEdit + Width = 204 + end + end + end + end + end + inherited dxComponentPrinter: TdxComponentPrinter + inherited dxComponentPrinterLink: TdxGridReportLink + ReportDocument.CreationDate = 38673.741107951390000000 + BuiltInReportLink = True + end + 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 + 610000000970485973000017120000171201679FD252000001784944415478DA + 63FCFFFF3FC384055BFF3390010A12BC1919610600394469FAF3F71FC3EF3F7F + 192CBCB3192EEE99856AC05E4B2B14C5CEC78F81696471AB030719662EDFC530 + 7FC9464C03F0815FBFFF826D06D10BD7EDC36E00BA0BB001DDAD3B19966D3A84 + DB0098B341E01F50EECF9F7F709BCFB93B33686EDCCEB06ADB11FC06C05C627B + E830C3613B5BB8CD97BDDD1954D66E6158BFEB387E03D06DFEFDE70F987FDDDF + 934161E54686CDFB4EE136C0F1D85186FD56D6605B8D76EE053B1B044036DF09 + F661905ABA9E61E7A133B80D00391BDDE69FBFFE30FC028A3D890C60109ABB8A + E1E0A98B9806E4C47A321CB4B1410971B5F55B196E0542A2577CD15A869771C1 + 0CBC3357301C3B7719D380F44837B02D7F7EFF03DB7CD5D7834169F566B0D8EF + DF10FC2E398C8163EA5286D397AE611A9018EA0CD70CF202CC6674C03C7111C3 + 856B37310D880D70846B06F91BD9E6DFD01801E17FFFFE335CBA710BD380081F + 5B86155B0E139D13310C0009900A400600000CC180F01CA0F4A8000000004945 + 4E44AE426082} + Name = 'PngImage2' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000001F14944415478DA8D92AD73DB4010C59F5958AE2CAC07CDA230B30896 + 557F82CACC2A58A832B30AB6ECA0E1414341C32D7391179AF5C2C2D4B7ABBAB5 + A7CD4C3423DFC9BBFBF6B71F8B3EE984CBE719287E96F97E3E71FEBEB62D5CE0 + 340237012100314654D53D82AB3DF96FA1BF324044F82A444D8E1EAAB34080A0 + 5A568877BC9D1870A29977A54361B489EA41E704E6C3FFF39E22145B745F756A + 5796216014F56C5D1391470113396664645D05F4499CA85E9296C4298D141874 + FAF2F12D3E7FFBEE0156ED2CA04E0327A0C0121450B75BB9431BD1AE29D06E64 + 6ADF1197CE4EC05A9B55E049A2BD78B3AA55855014895496B9A9677B1A28D0F4 + 325541D9B8C81AADEEE2755A09464058344C503F679430F7C27A54562D8675A6 + C027996228DE653BE35D74E4BCB312F87D222E51C3AAC6ADF65ED21385FB6D41 + 96761610192FF6A05CED843DA9AFA1B9F6DA85827200EB6FD16F80055EF1C8D8 + 4FF78F0DF063A0A83A019B8FB4D3C52B0552946D77C40D66020EA3A9AB0FDD26 + A73F02631E26FC6EA22F52C09B76DD97B3EDF17D7D4D900AD256660273A8EAEA + 6F9318D66E7CDBDC2EFB143577471BF17F090C5177FDD1EE5A38FF83AD2C09BA + EEA7051995BD5D5370CBB5F7292460D88E2FF7A01CF204EEC3E5E8DA646B5C98 + 2070E47818B6222F0AFC4345EC70838794452EFD7E0189B54D6F3A8EEF030000 + 000049454E44AE426082} + Name = 'PngImage3' + Background = clWindow + end> + Left = 56 + Top = 48 + Bitmap = {} + end +end diff --git a/Modulos/Albaranes de cliente/Cliente/uViewAlbaranesCliente.pas b/Modulos/Albaranes de cliente/Cliente/uViewAlbaranesCliente.pas new file mode 100644 index 0000000..d942108 --- /dev/null +++ b/Modulos/Albaranes de cliente/Cliente/uViewAlbaranesCliente.pas @@ -0,0 +1,156 @@ +unit uViewAlbaranesCliente; + +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, dxPScxGridLnk, ActnList, uDADataTable, + cxGridLevel, cxClasses, cxControls, cxGridCustomView, cxGrid, + uBizAlbaranesCliente, cxImage, Grids, DBGrids, cxCurrencyEdit, StdCtrls, + Buttons, cxRadioGroup, cxMaskEdit, cxDropDownEdit, cxCalendar, + cxContainer, TB2Dock, TBXDkPanels, uViewFiltroBase; + +type + IViewAlbaranesCliente = interface(IViewGrid) + ['{A490D8D4-B431-44D2-8AD7-BA74B40E98B7}'] + procedure SyncFocusedRecord; + function GetAlbaranesCliente: IBizAlbaranesCliente; + procedure SetAlbaranesCliente(const Value: IBizAlbaranesCliente); + property AlbaranesCliente: IBizAlbaranesCliente read GetAlbaranesCliente + write SetAlbaranesCliente; + end; + + TfrViewAlbaranesCliente = class(TfrViewGrid, IViewAlbaranesCliente) + PngImageList: TPngImageList; + cxGridViewNOMBRE: TcxGridDBColumn; + cxGridViewFECHAALBARAN: TcxGridDBColumn; + cxGridViewSITUACION: TcxGridDBColumn; + cxGridViewFECHAPAGO: TcxGridDBColumn; + cxGridViewIMPORTETOTAL: TcxGridDBColumn; + cxGridViewREFERENCIA: TcxGridDBColumn; + cxGridViewCODIGO: TcxGridDBColumn; + cxGridViewICONO: TcxGridDBColumn; + cxGridLevel1: TcxGridLevel; + cxGridLevel2: TcxGridLevel; + cxGridViewREFERENCIAPRESUPUESTO: TcxGridDBColumn; + procedure cxGridViewCODIGOCustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; + AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); + procedure cxGridActiveTabChanged(Sender: TcxCustomGrid; ALevel: TcxGridLevel); + + private + //Filtros relativos a la vista + procedure AnadirFiltroSituaciones; + procedure AnadirFiltroFechas; + + protected + FAlbaranesCliente: IBizAlbaranesCliente; + function GetAlbaranesCliente: IBizAlbaranesCliente; + procedure SetAlbaranesCliente(const Value: IBizAlbaranesCliente); + procedure AnadirOtrosFiltros; override; + + public + property AlbaranesCliente: IBizAlbaranesCliente read GetAlbaranesCliente write SetAlbaranesCliente; + procedure SyncFocusedRecord; + end; + +var + frViewAlbaranesCliente: TfrViewAlbaranesCliente; + +implementation + +uses + uDataModuleAlbaranesCliente; + +{$R *.dfm} + +{ TfrViewAlbaranesCliente } + +function TfrViewAlbaranesCliente.GetAlbaranesCliente: IBizAlbaranesCliente; +begin + Result := FAlbaranesCliente; +end; + +procedure TfrViewAlbaranesCliente.SetAlbaranesCliente( + const Value: IBizAlbaranesCliente); +begin + FAlbaranesCliente := Value; + if Assigned(FAlbaranesCliente) then + DADataSource.DataTable := FAlbaranesCliente.DataTable; +end; + +procedure TfrViewAlbaranesCliente.cxGridViewCODIGOCustomDrawCell( + Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; + AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); +var + R : TRect; +begin + inherited; + R := AViewInfo.ContentBounds; + ACanvas.FillRect(R); + ACanvas.DrawImage(PngImageList, R.Left, R.Top, 2); + ADone := True; +end; + +procedure TfrViewAlbaranesCliente.SyncFocusedRecord; +begin +// +end; + +procedure TfrViewAlbaranesCliente.cxGridActiveTabChanged(Sender: TcxCustomGrid; ALevel: TcxGridLevel); +begin + inherited; + RefrescarFiltro; +end; + +procedure TfrViewAlbaranesCliente.AnadirFiltroSituaciones; +var + FFiltro : TcxFilterCriteriaItemList; +begin + FFiltro := AddFilterGrid(fboAnd); + + case cxGrid.ActiveLevel.Index of + 1 : FFiltro.AddItem(cxGridViewSITUACION, foEqual, SITUACION_PENDIENTE, SITUACION_PENDIENTE); + 2 : FFiltro.AddItem(cxGridViewSITUACION, foEqual, SITUACION_PAGADO, SITUACION_PAGADO); + end; +end; + +procedure TfrViewAlbaranesCliente.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('FECHAALBARAN'); + FFiltro.AddItem(Columna, foBetween, varArrayOf([Fecha1, Fecha2]), VarToStr(Fecha1) + ' and ' + VarToStr(Fecha2)); + end; +end; + +procedure TfrViewAlbaranesCliente.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; + +end. diff --git a/Modulos/Albaranes de cliente/Cliente/uViewDatosAlbaranCliente.ddp b/Modulos/Albaranes de cliente/Cliente/uViewDatosAlbaranCliente.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Albaranes de cliente/Cliente/uViewDatosAlbaranCliente.ddp differ diff --git a/Modulos/Albaranes de cliente/Cliente/uViewDatosAlbaranCliente.dfm b/Modulos/Albaranes de cliente/Cliente/uViewDatosAlbaranCliente.dfm new file mode 100644 index 0000000..936b282 --- /dev/null +++ b/Modulos/Albaranes de cliente/Cliente/uViewDatosAlbaranCliente.dfm @@ -0,0 +1,101 @@ +inherited frViewDatosAlbaranCliente: TfrViewDatosAlbaranCliente + Width = 360 + Height = 110 + Constraints.MinHeight = 110 + Constraints.MinWidth = 360 + DesignSize = ( + 360 + 110) + object Bevel1: TBevel + Left = 176 + Top = 8 + Width = 173 + Height = 9 + Anchors = [akLeft, akTop, akRight] + Shape = bsBottomLine + end + object Label5: TLabel + Left = 8 + Top = 8 + Width = 161 + Height = 13 + Caption = 'Datos del albar'#225'n de cliente' + Font.Charset = DEFAULT_CHARSET + Font.Color = clActiveCaption + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + ParentFont = False + end + object Label1: TLabel + Left = 16 + Top = 32 + Width = 56 + Height = 13 + Caption = 'Referencia:' + end + object Label2: TLabel + Left = 16 + Top = 56 + Width = 69 + Height = 13 + Caption = 'Fecha de alta:' + end + object Label3: TLabel + Left = 16 + Top = 80 + Width = 75 + Height = 13 + Caption = 'Fecha de pago:' + end + object edtFecha: TcxDBDateEdit + Left = 100 + Top = 52 + Anchors = [akLeft, akTop, akRight] + DataBinding.DataField = 'FECHAALBARAN' + DataBinding.DataSource = DADataSource + Style.Color = clInfoBk + Style.LookAndFeel.NativeStyle = True + Style.Shadow = False + Style.ButtonTransparency = ebtNone + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 1 + Width = 245 + end + object edtFechaPago: TcxDBDateEdit + Left = 100 + Top = 76 + Anchors = [akLeft, akTop, akRight] + DataBinding.DataField = 'FECHAPAGO' + DataBinding.DataSource = DADataSource + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 2 + Width = 245 + end + object eReferencia: TcxDBTextEdit + Left = 100 + Top = 28 + Anchors = [akLeft, akTop, akRight] + DataBinding.DataField = 'REFERENCIA' + DataBinding.DataSource = DADataSource + Enabled = False + Properties.ReadOnly = True + Style.Color = clInfoBk + Style.LookAndFeel.NativeStyle = True + StyleDisabled.Color = clMenuBar + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clWindowText + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 0 + Width = 245 + end + object DADataSource: TDADataSource + Left = 192 + end +end diff --git a/Modulos/Albaranes de cliente/Cliente/uViewDatosAlbaranCliente.pas b/Modulos/Albaranes de cliente/Cliente/uViewDatosAlbaranCliente.pas new file mode 100644 index 0000000..fa1f071 --- /dev/null +++ b/Modulos/Albaranes de cliente/Cliente/uViewDatosAlbaranCliente.pas @@ -0,0 +1,35 @@ +unit uViewDatosAlbaranCliente; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, DB, uDADataTable, cxControls, cxContainer, cxEdit, + cxTextEdit, cxMaskEdit, cxDropDownEdit, cxCalendar, cxDBEdit, StdCtrls, + Mask, DBCtrls, ExtCtrls, cxMemo, cxRichEdit, cxDBRichEdit; + +type + TfrViewDatosAlbaranCliente = class(TfrViewBase) + Bevel1: TBevel; + Label5: TLabel; + Label1: TLabel; + Label2: TLabel; + edtFecha: TcxDBDateEdit; + Label3: TLabel; + edtFechaPago: TcxDBDateEdit; + DADataSource: TDADataSource; + eReferencia: TcxDBTextEdit; + private + { Private declarations } + public + { Public declarations } + end; + +var + frViewDatosAlbaranCliente: TfrViewDatosAlbaranCliente; + +implementation + +{$R *.dfm} + +end. diff --git a/Modulos/Albaranes de cliente/Cliente/uViewDetallesAlbaranCliente.ddp b/Modulos/Albaranes de cliente/Cliente/uViewDetallesAlbaranCliente.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Albaranes de cliente/Cliente/uViewDetallesAlbaranCliente.ddp differ diff --git a/Modulos/Albaranes de cliente/Cliente/uViewDetallesAlbaranCliente.dfm b/Modulos/Albaranes de cliente/Cliente/uViewDetallesAlbaranCliente.dfm new file mode 100644 index 0000000..59080a4 --- /dev/null +++ b/Modulos/Albaranes de cliente/Cliente/uViewDetallesAlbaranCliente.dfm @@ -0,0 +1,52 @@ +inherited frViewDetallesAlbaranCliente: TfrViewDetallesAlbaranCliente + inherited cxGrid: TcxGrid + inherited cxGridView: TcxGridDBTableView + inherited cxGridViewTIPO: TcxGridDBColumn + Width = 69 + end + inherited cxGridViewDESCRIPCION: TcxGridDBColumn + Width = 526 + end + object cxGridViewPUNTOS: TcxGridDBColumn [3] + DataBinding.FieldName = 'PUNTOS' + PropertiesClassName = 'TcxMaskEditProperties' + Properties.Alignment.Horz = taRightJustify + Styles.OnGetContentStyle = cxGridViewPUNTOSStylesGetContentStyle + Width = 74 + end + object cxGridViewIMPORTEPUNTOS: TcxGridDBColumn [4] + DataBinding.FieldName = 'IMPORTEPUNTOS' + PropertiesClassName = 'TcxCurrencyEditProperties' + Properties.Alignment.Horz = taRightJustify + Styles.OnGetContentStyle = cxGridViewPUNTOSStylesGetContentStyle + Width = 124 + end + inherited cxGridViewCANTIDAD: TcxGridDBColumn + Properties.Alignment.Horz = taRightJustify + Width = 83 + end + inherited cxGridViewIMPORTEUNIDAD: TcxGridDBColumn + Width = 157 + end + inherited cxGridViewIMPORTETOTAL: TcxGridDBColumn + Width = 157 + end + inherited cxGridViewVISIBLE: TcxGridDBColumn + Styles.OnGetContentStyle = cxGridViewVISIBLEStylesGetContentStyle + Width = 76 + end + end + end + inherited cxStyleRepository1: TcxStyleRepository + object cxStyle_PUNTOS: TcxStyle + AssignedValues = [svColor, svFont, svTextColor] + Color = 16053492 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + TextColor = clWindowText + end + end +end diff --git a/Modulos/Albaranes de cliente/Cliente/uViewDetallesAlbaranCliente.pas b/Modulos/Albaranes de cliente/Cliente/uViewDetallesAlbaranCliente.pas new file mode 100644 index 0000000..93b796c --- /dev/null +++ b/Modulos/Albaranes de cliente/Cliente/uViewDetallesAlbaranCliente.pas @@ -0,0 +1,94 @@ +unit uViewDetallesAlbaranCliente; + +interface + +uses + Windows, Messages, cxImageComboBox, + cxTextEdit, cxSpinEdit, cxStyles, cxCustomData, cxGraphics, cxFilter, + cxData, cxDataStorage, cxEdit, DB, cxDBData, ImgList, Controls, + PngImageList, uDADataTable, Classes, ActnList, ComCtrls, ToolWin, + cxGridLevel, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, + cxClasses, cxControls, cxGridCustomView, cxGrid, uViewDetallesFamilias, + cxCheckBox, cxMaskEdit, cxCurrencyEdit; + +type + TfrViewDetallesAlbaranCliente = class(TfrViewDetallesFamilias) + cxGridViewPUNTOS: TcxGridDBColumn; + cxGridViewIMPORTEPUNTOS: TcxGridDBColumn; + cxStyle_PUNTOS: TcxStyle; + procedure cxGridViewPUNTOSStylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); + procedure cxGridViewEditing(Sender: TcxCustomGridTableView; + AItem: TcxCustomGridTableItem; var AAllow: Boolean); + procedure cxGridViewVISIBLEStylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); + end; + + +implementation + +uses + Variants, uBizImportesDetalleBase, SysUtils; + +{$R *.dfm} + +procedure TfrViewDetallesAlbaranCliente.cxGridViewPUNTOSStylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); +var + IndiceCol : Integer; + ATipo : String; +begin + if Assigned(ARecord) then + begin + IndiceCol := (Sender as TcxGridDBTableView).GetColumnByFieldName(fld_TIPODETALLE).Index; + ATipo := VarToStr(ARecord.Values[IndiceCol]); + if ATipo = TIPODETALLE_CONCEPTO then + AStyle := cxStyle_PUNTOS; + if ATipo = TIPODETALLE_SUBTOTAL then + AStyle := cxStyle_SUBTOTAL; + if ATipo = TIPODETALLE_TITULO then + AStyle := cxStyle_TITULO; + end; +end; + +procedure TfrViewDetallesAlbaranCliente.cxGridViewEditing( + Sender: TcxCustomGridTableView; AItem: TcxCustomGridTableItem; + var AAllow: Boolean); +var + IndiceCol : Integer; +begin + IndiceCol := (Sender as TcxGridDBTableView).GetColumnByFieldName(fld_IMPORTEPUNTOS).Index; + if AItem.Index = IndiceCol then + begin + IndiceCol := (Sender as TcxGridDBTableView).GetColumnByFieldName(fld_TIPODETALLE).Index; + if (UpperCase(AItem.GridView.Items[IndiceCol].EditValue) = TIPODETALLE_SUBTOTAL) then + AAllow := False + else + AAllow := True + end + else + inherited; +end; + +procedure TfrViewDetallesAlbaranCliente.cxGridViewVISIBLEStylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); +var + IndiceCol : Integer; + ATipo : String; +begin + if Assigned(ARecord) then + begin + IndiceCol := (Sender as TcxGridDBTableView).GetColumnByFieldName(fld_TIPODETALLE).Index; + ATipo := VarToStr(ARecord.Values[IndiceCol]); + if ATipo = TIPODETALLE_SUBTOTAL then + AStyle := cxStyle_SUBTOTAL; + if ATipo = TIPODETALLE_TITULO then + AStyle := cxStyle_TITULO; + end; +end; + +end. diff --git a/Modulos/Albaranes de cliente/Cliente/uViewPresupuestoAlbaran.ddp b/Modulos/Albaranes de cliente/Cliente/uViewPresupuestoAlbaran.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Albaranes de cliente/Cliente/uViewPresupuestoAlbaran.ddp differ diff --git a/Modulos/Albaranes de cliente/Cliente/uViewPresupuestoAlbaran.dfm b/Modulos/Albaranes de cliente/Cliente/uViewPresupuestoAlbaran.dfm new file mode 100644 index 0000000..c469251 --- /dev/null +++ b/Modulos/Albaranes de cliente/Cliente/uViewPresupuestoAlbaran.dfm @@ -0,0 +1,16 @@ +inherited frViewPresupuestoAlbaran: TfrViewPresupuestoAlbaran + inherited lblNombre: TLabel + Width = 64 + Caption = 'Presupuesto:' + end + inherited edtlReferencia: TcxDBTextEdit + StyleDisabled.BorderStyle = ebsNone + Height = 21 + Width = 245 + end + inherited ActionList1: TActionList + inherited actElegirPresupuesto: TAction + OnExecute = actElegirPresupuestoExecute + end + end +end diff --git a/Modulos/Albaranes de cliente/Cliente/uViewPresupuestoAlbaran.pas b/Modulos/Albaranes de cliente/Cliente/uViewPresupuestoAlbaran.pas new file mode 100644 index 0000000..e84227e --- /dev/null +++ b/Modulos/Albaranes de cliente/Cliente/uViewPresupuestoAlbaran.pas @@ -0,0 +1,55 @@ +unit uViewPresupuestoAlbaran; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewPresupuestoRelacionado, ImgList, PngImageList, ActnList, + cxControls, cxContainer, cxEdit, cxTextEdit, ComCtrls, ToolWin, ExtCtrls, + StdCtrls, cxDBEdit, DB, uDADataTable; + +type + TfrViewPresupuestoAlbaran = class(TfrViewPresupuestoRelacionado) + procedure actElegirPresupuestoExecute(Sender: TObject); + private + { Private declarations } + public + { Public declarations } + end; + +var + frViewPresupuestoAlbaran: TfrViewPresupuestoAlbaran; + +implementation + +uses uBizPresupuestosCliente, schPresupuestosClient_Intf, + uDataModulePresupuestos; + +{$R *.dfm} + +procedure TfrViewPresupuestoAlbaran.actElegirPresupuestoExecute( + Sender: TObject); +var + APresupuesto : IBizPresupuestos; +begin + inherited; + + if Length(edtlReferencia.Text) > 0 then + if (MessageBox(0, 'Este albarán ya tiene asociado un presupuesto. '+#13+#10+ + 'Si elige otro presupuesto, se cambiará en este albarán el cliente y los conceptos '+#13+#10+ + 'para hacerlos coincidir con el presupuesto elegido. '+#13+#10+ + '¿Desea continuar?', 'Confirmación', MB_ICONQUESTION or MB_YESNO) = idNo) then + Exit; + + APresupuesto := dmPresupuestos.GetPresupuestosSinAlbaran; + try + if APresupuesto.ShowForSelect = mrOK then + begin + Self.Presupuesto := dmPresupuestos.GetItemsSeleccionados(APresupuesto) + end; + finally + APresupuesto := NIL; + end; +end; + +end. diff --git a/Modulos/Albaranes de cliente/Cliente/uViewPresupuestoRelacionado.dfm b/Modulos/Albaranes de cliente/Cliente/uViewPresupuestoRelacionado.dfm new file mode 100644 index 0000000..8e2edd2 --- /dev/null +++ b/Modulos/Albaranes de cliente/Cliente/uViewPresupuestoRelacionado.dfm @@ -0,0 +1,163 @@ +inherited frViewPresupuestoRelacionado: TfrViewPresupuestoRelacionado + Width = 360 + Height = 90 + Constraints.MinHeight = 90 + Constraints.MinWidth = 360 + DesignSize = ( + 360 + 90) + object Label5: TLabel + Left = 8 + Top = 8 + Width = 141 + Height = 13 + Caption = 'Presupuesto relacionado' + Font.Charset = DEFAULT_CHARSET + Font.Color = clActiveCaption + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + ParentFont = False + end + object Bevel1: TBevel + Left = 152 + Top = 8 + Width = 197 + Height = 9 + Anchors = [akLeft, akTop, akRight] + Shape = bsBottomLine + end + object lblNombre: TLabel + Left = 16 + Top = 64 + Width = 56 + Height = 13 + Caption = 'Referencia:' + end + object ToolBar1: TToolBar + Left = 8 + Top = 29 + Width = 338 + Height = 22 + Align = alNone + Anchors = [akLeft, akTop, akRight] + ButtonWidth = 131 + Caption = 'ToolBar1' + EdgeBorders = [] + EdgeInner = esNone + EdgeOuter = esNone + Flat = True + Images = PngImageList + List = True + ParentShowHint = False + ShowCaptions = True + ShowHint = True + TabOrder = 0 + Transparent = True + Wrapable = False + object ToolButton1: TToolButton + Left = 0 + Top = 0 + Action = actElegirPresupuesto + AutoSize = True + end + object ToolButton3: TToolButton + Left = 135 + Top = 0 + Width = 8 + Caption = 'ToolButton3' + ImageIndex = 1 + Style = tbsSeparator + end + object ToolButton2: TToolButton + Left = 143 + Top = 0 + Action = actVerPresupuesto + end + end + object edtlReferencia: TcxDBTextEdit + Left = 100 + Top = 60 + Anchors = [akLeft, akTop, akRight] + AutoSize = False + DataBinding.DataField = 'REFERENCIA' + DataBinding.DataSource = DADataSource + Enabled = False + ParentFont = False + Style.Font.Charset = DEFAULT_CHARSET + Style.Font.Color = clWindowText + Style.Font.Height = -11 + Style.Font.Name = 'Tahoma' + Style.Font.Style = [] + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clActiveCaption + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 1 + Height = 21 + Width = 245 + end + object ActionList1: TActionList + Images = PngImageList + Left = 256 + object actElegirPresupuesto: TAction + Caption = 'Elegir un presupuesto' + ImageIndex = 1 + end + object actVerPresupuesto: TAction + Caption = 'Ver el presupuesto...' + ImageIndex = 1 + OnExecute = actVerPresupuestoExecute + OnUpdate = actVerPresupuestoUpdate + end + end + object PngImageList: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001774944415478DA + 63FCFFFF3FC384055BFF3390010A12BC1919610600394469FAF3F71FC3EF3F7F + 192CBCB3192EEE99856A80C35E4B14C5079C8F836964F1ED368718662EDFC530 + 7FC9464C03F0815FBFFF826D06D10BD7EDC36E00BA0BB0815586BB18966D3A84 + DB0098B341E01F50EECF9F7F709B034F3B312CD3DDC1B06ADB11FC06C05CB2CB + EE0883DB211BB8CD61E7DD18166A6E6558BFEB387E03D06DFEFDE70F981F75D9 + 8361AEEA2686CDFB4EE136609FD33106A77D56605BD79BEE033B1B044036C75F + F76698AEB88161E7A133B80D00391BDDE69FBFFE30FC028AA5DFF567E8975CCD + 70F0D4454C0372623D195C0E58A384F862ED6D0CB157BDC0EC2972EB18721E05 + 317489AE643876EE32A601E9916E605BFEFCFE07B639E2A23BC37CF52D60B1DF + BF21B8F0792843ABE03286D397AE611A9018EA0CD70CF202CC6674D0C0BB98E1 + C2B59B9806C40638C23583FC8D6CF36F688C80F0BF7FFF192EDDB8856940848F + 2DC38A2D8789CE89180680044805200300115980F04CC063740000000049454E + 44AE426082} + Name = 'PngImage1' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001774944415478DA + 63FCFFFF3FC384055BFF3390010A12BC1919610600394469FAF3F71FC3EF3F7F + 192CBCB3192EEE99856A80C35E4B14C5079C8F836964F1ED368718662EDFC530 + 7FC9464C03F0815FBFFF826D06D10BD7EDC36E00BA0BB0815586BB18966D3A84 + DB0098B341E01F50EECF9F7F709B034F3B312CD3DDC1B06ADB11FC06C05CB2CB + EE0883DB211BB8CD61E7DD18166A6E6558BFEB387E03D06DFEFDE70F981F75D9 + 8361AEEA2686CDFB4EE136609FD33106A77D56605BD79BEE033B1B044036C75F + F76698AEB88161E7A133B80D00391BDDE69FBFFE30FC028AA5DFF567E8975CCD + 70F0D4454C0372623D195C0E58A384F862ED6D0CB157BDC0EC2972EB18721E05 + 317489AE643876EE32A601E9916E605BFEFCFE07B639E2A23BC37CF52D60B1DF + BF21B8F0792843ABE03286D397AE611A9018EA0CD70CF202CC6674D0C0BB98E1 + C2B59B9806C40638C23583FC8D6CF36F688C80F0BF7FFF192EDDB8856940848F + 2DC38A2D8789CE89180680044805200300115980F04CC063740000000049454E + 44AE426082} + Name = 'PngImage2' + Background = clWindow + end> + Left = 288 + Bitmap = {} + end + object DADataSource: TDADataSource + Left = 320 + end +end diff --git a/Modulos/Albaranes de cliente/Cliente/uViewPresupuestoRelacionado.pas b/Modulos/Albaranes de cliente/Cliente/uViewPresupuestoRelacionado.pas new file mode 100644 index 0000000..8be171b --- /dev/null +++ b/Modulos/Albaranes de cliente/Cliente/uViewPresupuestoRelacionado.pas @@ -0,0 +1,111 @@ +unit uViewPresupuestoRelacionado; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, ExtCtrls, StdCtrls, cxControls, cxContainer, cxEdit, + cxTextEdit, cxDBEdit, ComCtrls, ToolWin, ImgList, PngImageList, ActnList, + DB, uDADataTable, uBizPresupuestosCliente; + +type + IViewPresupuestoRelacionado = interface(IViewBase) + ['{42655AAC-2669-452D-8E56-C9AF657EF2BF}'] + + function GetPresupuesto: IBizPresupuestos; + procedure SetPresupuesto(const Value: IBizPresupuestos); + property Presupuesto: IBizPresupuestos read GetPresupuesto write SetPresupuesto; + + function GetOnPresupuestoChanged : TNotifyEvent; + procedure SetOnPresupuestoChanged (const Value : TNotifyEvent); + property OnPresupuestoChanged : TNotifyEvent read GetOnPresupuestoChanged + write SetOnPresupuestoChanged; + end; + + TfrViewPresupuestoRelacionado = class(TfrViewBase, IViewPresupuestoRelacionado) + Label5: TLabel; + Bevel1: TBevel; + ActionList1: TActionList; + actElegirPresupuesto: TAction; + actVerPresupuesto: TAction; + PngImageList: TPngImageList; + ToolBar1: TToolBar; + ToolButton1: TToolButton; + ToolButton3: TToolButton; + ToolButton2: TToolButton; + lblNombre: TLabel; + DADataSource: TDADataSource; + edtlReferencia: TcxDBTextEdit; + procedure actVerPresupuestoExecute(Sender: TObject); + procedure actVerPresupuestoUpdate(Sender: TObject); + private + FPresupuesto : IBizPresupuestos; + FOnPresupuestoChanged : TNotifyEvent; + protected + function GetPresupuesto: IBizPresupuestos; + procedure SetPresupuesto(const Value: IBizPresupuestos); + + function GetOnPresupuestoChanged : TNotifyEvent; + procedure SetOnPresupuestoChanged (const Value : TNotifyEvent); + public + property Presupuesto: IBizPresupuestos read GetPresupuesto write SetPresupuesto; + property OnPresupuestoChanged : TNotifyEvent read GetOnPresupuestoChanged + write SetOnPresupuestoChanged; + end; + +var + frViewPresupuestoRelacionado: TfrViewPresupuestoRelacionado; + +implementation + +uses + uDataModulePresupuestos, schPresupuestosClient_Intf; + +{$R *.dfm} + +{ TfrViewPresupuestoAlbaran } + +procedure TfrViewPresupuestoRelacionado.actVerPresupuestoExecute( + Sender: TObject); +begin + FPresupuesto.Show; +end; + +procedure TfrViewPresupuestoRelacionado.actVerPresupuestoUpdate( + Sender: TObject); +begin + inherited; + (Sender as TAction).Enabled := Assigned(FPresupuesto); +end; + +function TfrViewPresupuestoRelacionado.GetPresupuesto: IBizPresupuestos; +begin + Result := FPresupuesto; +end; + +procedure TfrViewPresupuestoRelacionado.SetPresupuesto( + const Value: IBizPresupuestos); +begin + FPresupuesto := Value; + DADataSource.DataTable := FPresupuesto.DataTable; + + if not FPresupuesto.DataTable.Active then + FPresupuesto.DataTable.Active := True; + + if Assigned(FOnPresupuestoChanged) then + FOnPresupuestoChanged(Self); +end; + + +function TfrViewPresupuestoRelacionado.GetOnPresupuestoChanged: TNotifyEvent; +begin + Result := FOnPresupuestoChanged; +end; + +procedure TfrViewPresupuestoRelacionado.SetOnPresupuestoChanged( + const Value: TNotifyEvent); +begin + FOnPresupuestoChanged := Value; +end; + +end. diff --git a/Modulos/Albaranes de cliente/Reglas/schAlbaranesClienteClient_Intf.pas b/Modulos/Albaranes de cliente/Reglas/schAlbaranesClienteClient_Intf.pas new file mode 100644 index 0000000..9ecb273 --- /dev/null +++ b/Modulos/Albaranes de cliente/Reglas/schAlbaranesClienteClient_Intf.pas @@ -0,0 +1,1715 @@ +unit schAlbaranesClienteClient_Intf; + +interface + +uses + Classes, DB, SysUtils, uROClasses, uDADataTable; + +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_DarReferenciaAlbaran = '{35F98298-F696-46BE-9D56-50D87C52A2C1}'; + RID_AlbaranCliente = '{14578616-F521-4BA3-A7E9-BB99BA3FA09C}'; + RID_AlbaranDePresupuesto = '{116AED58-1A39-4230-8961-B965FB7B0697}'; + RID_DetallesAlbaranCliente = '{9C31D267-5CA0-4776-9B6A-32E4633153D9}'; + RID_AlbaranCliente_RefreshDataset = '{22F08733-B02A-4130-84ED-B1E32F9F18DF}'; + RID_InformeCabeceraAlbaranPago = '{D018D751-1373-4A7C-9E2F-BFD097EC6967}'; + RID_InformeDetallesAlbaranPago = '{61D6092F-B71A-40E6-9601-980B85F71C86}'; + RID_DarSumaImportes = '{6AD3F242-7984-41B6-8F0F-CEAEF113373A}'; + + { Data table names } + nme_DarReferenciaAlbaran = 'DarReferenciaAlbaran'; + nme_AlbaranCliente = 'AlbaranCliente'; + nme_AlbaranDePresupuesto = 'AlbaranDePresupuesto'; + nme_DetallesAlbaranCliente = 'DetallesAlbaranCliente'; + nme_AlbaranCliente_RefreshDataset = 'AlbaranCliente_RefreshDataset'; + nme_InformeCabeceraAlbaranPago = 'InformeCabeceraAlbaranPago'; + nme_InformeDetallesAlbaranPago = 'InformeDetallesAlbaranPago'; + nme_DarSumaImportes = 'DarSumaImportes'; + + { DarReferenciaAlbaran fields } + fld_DarReferenciaAlbaranREFERENCIA = 'REFERENCIA'; + + { DarReferenciaAlbaran field indexes } + idx_DarReferenciaAlbaranREFERENCIA = 0; + + { AlbaranCliente fields } + fld_AlbaranClienteCODIGOEMPRESA = 'CODIGOEMPRESA'; + fld_AlbaranClienteCODIGO = 'CODIGO'; + fld_AlbaranClienteFECHAALTA = 'FECHAALTA'; + fld_AlbaranClienteUSUARIO = 'USUARIO'; + fld_AlbaranClienteREFERENCIA = 'REFERENCIA'; + fld_AlbaranClienteCODIGOCONTACTO = 'CODIGOCONTACTO'; + fld_AlbaranClienteNOMBRE = 'NOMBRE'; + fld_AlbaranClienteFECHAALBARAN = 'FECHAALBARAN'; + fld_AlbaranClienteSITUACION = 'SITUACION'; + fld_AlbaranClienteFECHAPAGO = 'FECHAPAGO'; + fld_AlbaranClienteCODIGOPRESUPUESTO = 'CODIGOPRESUPUESTO'; + fld_AlbaranClienteBASEIMPONIBLE = 'BASEIMPONIBLE'; + fld_AlbaranClienteDESCUENTO = 'DESCUENTO'; + fld_AlbaranClienteIMPORTEDESCUENTO = 'IMPORTEDESCUENTO'; + fld_AlbaranClienteIVA = 'IVA'; + fld_AlbaranClienteIMPORTEIVA = 'IMPORTEIVA'; + fld_AlbaranClienteIMPORTETOTAL = 'IMPORTETOTAL'; + fld_AlbaranClienteOBSERVACIONES = 'OBSERVACIONES'; + fld_AlbaranClienteFORMAPAGO = 'FORMAPAGO'; + fld_AlbaranClienteREFERENCIAPRESUPUESTO = 'REFERENCIAPRESUPUESTO'; + + { AlbaranCliente field indexes } + idx_AlbaranClienteCODIGOEMPRESA = 0; + idx_AlbaranClienteCODIGO = 1; + idx_AlbaranClienteFECHAALTA = 2; + idx_AlbaranClienteUSUARIO = 3; + idx_AlbaranClienteREFERENCIA = 4; + idx_AlbaranClienteCODIGOCONTACTO = 5; + idx_AlbaranClienteNOMBRE = 6; + idx_AlbaranClienteFECHAALBARAN = 7; + idx_AlbaranClienteSITUACION = 8; + idx_AlbaranClienteFECHAPAGO = 9; + idx_AlbaranClienteCODIGOPRESUPUESTO = 10; + idx_AlbaranClienteBASEIMPONIBLE = 11; + idx_AlbaranClienteDESCUENTO = 12; + idx_AlbaranClienteIMPORTEDESCUENTO = 13; + idx_AlbaranClienteIVA = 14; + idx_AlbaranClienteIMPORTEIVA = 15; + idx_AlbaranClienteIMPORTETOTAL = 16; + idx_AlbaranClienteOBSERVACIONES = 17; + idx_AlbaranClienteFORMAPAGO = 18; + idx_AlbaranClienteREFERENCIAPRESUPUESTO = 19; + + { AlbaranDePresupuesto fields } + fld_AlbaranDePresupuestoCODIGO = 'CODIGO'; + + { AlbaranDePresupuesto field indexes } + idx_AlbaranDePresupuestoCODIGO = 0; + + { DetallesAlbaranCliente fields } + fld_DetallesAlbaranClienteCODIGOALBARAN = 'CODIGOALBARAN'; + fld_DetallesAlbaranClienteNUMCONCEPTO = 'NUMCONCEPTO'; + fld_DetallesAlbaranClientePOSICION = 'POSICION'; + fld_DetallesAlbaranClienteTIPO = 'TIPO'; + fld_DetallesAlbaranClienteDESCRIPCION = 'DESCRIPCION'; + fld_DetallesAlbaranClienteCANTIDAD = 'CANTIDAD'; + fld_DetallesAlbaranClienteIMPORTEUNIDAD = 'IMPORTEUNIDAD'; + fld_DetallesAlbaranClienteIMPORTETOTAL = 'IMPORTETOTAL'; + fld_DetallesAlbaranClienteVISIBLE = 'VISIBLE'; + fld_DetallesAlbaranClientePUNTOS = 'PUNTOS'; + fld_DetallesAlbaranClienteIMPORTEPUNTOS = 'IMPORTEPUNTOS'; + + { DetallesAlbaranCliente field indexes } + idx_DetallesAlbaranClienteCODIGOALBARAN = 0; + idx_DetallesAlbaranClienteNUMCONCEPTO = 1; + idx_DetallesAlbaranClientePOSICION = 2; + idx_DetallesAlbaranClienteTIPO = 3; + idx_DetallesAlbaranClienteDESCRIPCION = 4; + idx_DetallesAlbaranClienteCANTIDAD = 5; + idx_DetallesAlbaranClienteIMPORTEUNIDAD = 6; + idx_DetallesAlbaranClienteIMPORTETOTAL = 7; + idx_DetallesAlbaranClienteVISIBLE = 8; + idx_DetallesAlbaranClientePUNTOS = 9; + idx_DetallesAlbaranClienteIMPORTEPUNTOS = 10; + + { AlbaranCliente_RefreshDataset fields } + fld_AlbaranCliente_RefreshDatasetCODIGO = 'CODIGO'; + fld_AlbaranCliente_RefreshDatasetNOMBRE = 'NOMBRE'; + fld_AlbaranCliente_RefreshDatasetSITUACION = 'SITUACION'; + fld_AlbaranCliente_RefreshDatasetREFERENCIAPRESUPUESTO = 'REFERENCIAPRESUPUESTO'; + + { AlbaranCliente_RefreshDataset field indexes } + idx_AlbaranCliente_RefreshDatasetCODIGO = 0; + idx_AlbaranCliente_RefreshDatasetNOMBRE = 1; + idx_AlbaranCliente_RefreshDatasetSITUACION = 2; + idx_AlbaranCliente_RefreshDatasetREFERENCIAPRESUPUESTO = 3; + + { InformeCabeceraAlbaranPago fields } + fld_InformeCabeceraAlbaranPagoCODIGOEMPRESA = 'CODIGOEMPRESA'; + fld_InformeCabeceraAlbaranPagoCODIGO = 'CODIGO'; + fld_InformeCabeceraAlbaranPagoFECHAALTA = 'FECHAALTA'; + fld_InformeCabeceraAlbaranPagoUSUARIO = 'USUARIO'; + fld_InformeCabeceraAlbaranPagoREFERENCIA = 'REFERENCIA'; + fld_InformeCabeceraAlbaranPagoCODIGOCONTACTO = 'CODIGOCONTACTO'; + fld_InformeCabeceraAlbaranPagoFECHAALBARAN = 'FECHAALBARAN'; + fld_InformeCabeceraAlbaranPagoSITUACION = 'SITUACION'; + fld_InformeCabeceraAlbaranPagoFECHAPAGO = 'FECHAPAGO'; + fld_InformeCabeceraAlbaranPagoBASEIMPONIBLE = 'BASEIMPONIBLE'; + fld_InformeCabeceraAlbaranPagoDESCUENTO = 'DESCUENTO'; + fld_InformeCabeceraAlbaranPagoIMPORTEDESCUENTO = 'IMPORTEDESCUENTO'; + fld_InformeCabeceraAlbaranPagoIVA = 'IVA'; + fld_InformeCabeceraAlbaranPagoIMPORTEIVA = 'IMPORTEIVA'; + fld_InformeCabeceraAlbaranPagoIMPORTETOTAL = 'IMPORTETOTAL'; + fld_InformeCabeceraAlbaranPagoOBSERVACIONES = 'OBSERVACIONES'; + fld_InformeCabeceraAlbaranPagoFORMAPAGO = 'FORMAPAGO'; + fld_InformeCabeceraAlbaranPagoCODIGOPRESUPUESTO = 'CODIGOPRESUPUESTO'; + fld_InformeCabeceraAlbaranPagoREFERENCIAPRE = 'REFERENCIAPRE'; + fld_InformeCabeceraAlbaranPagoNIFCIF = 'NIFCIF'; + fld_InformeCabeceraAlbaranPagoNOMBRE = 'NOMBRE'; + fld_InformeCabeceraAlbaranPagoCALLE = 'CALLE'; + fld_InformeCabeceraAlbaranPagoCODIGOPOSTAL = 'CODIGOPOSTAL'; + fld_InformeCabeceraAlbaranPagoPOBLACION = 'POBLACION'; + fld_InformeCabeceraAlbaranPagoTELEFONO1 = 'TELEFONO1'; + fld_InformeCabeceraAlbaranPagoTELEFONO2 = 'TELEFONO2'; + fld_InformeCabeceraAlbaranPagoMOVIL = 'MOVIL'; + + { InformeCabeceraAlbaranPago field indexes } + idx_InformeCabeceraAlbaranPagoCODIGOEMPRESA = 0; + idx_InformeCabeceraAlbaranPagoCODIGO = 1; + idx_InformeCabeceraAlbaranPagoFECHAALTA = 2; + idx_InformeCabeceraAlbaranPagoUSUARIO = 3; + idx_InformeCabeceraAlbaranPagoREFERENCIA = 4; + idx_InformeCabeceraAlbaranPagoCODIGOCONTACTO = 5; + idx_InformeCabeceraAlbaranPagoFECHAALBARAN = 6; + idx_InformeCabeceraAlbaranPagoSITUACION = 7; + idx_InformeCabeceraAlbaranPagoFECHAPAGO = 8; + idx_InformeCabeceraAlbaranPagoBASEIMPONIBLE = 9; + idx_InformeCabeceraAlbaranPagoDESCUENTO = 10; + idx_InformeCabeceraAlbaranPagoIMPORTEDESCUENTO = 11; + idx_InformeCabeceraAlbaranPagoIVA = 12; + idx_InformeCabeceraAlbaranPagoIMPORTEIVA = 13; + idx_InformeCabeceraAlbaranPagoIMPORTETOTAL = 14; + idx_InformeCabeceraAlbaranPagoOBSERVACIONES = 15; + idx_InformeCabeceraAlbaranPagoFORMAPAGO = 16; + idx_InformeCabeceraAlbaranPagoCODIGOPRESUPUESTO = 17; + idx_InformeCabeceraAlbaranPagoREFERENCIAPRE = 18; + idx_InformeCabeceraAlbaranPagoNIFCIF = 19; + idx_InformeCabeceraAlbaranPagoNOMBRE = 20; + idx_InformeCabeceraAlbaranPagoCALLE = 21; + idx_InformeCabeceraAlbaranPagoCODIGOPOSTAL = 22; + idx_InformeCabeceraAlbaranPagoPOBLACION = 23; + idx_InformeCabeceraAlbaranPagoTELEFONO1 = 24; + idx_InformeCabeceraAlbaranPagoTELEFONO2 = 25; + idx_InformeCabeceraAlbaranPagoMOVIL = 26; + + { InformeDetallesAlbaranPago fields } + fld_InformeDetallesAlbaranPagoCODIGOALBARAN = 'CODIGOALBARAN'; + fld_InformeDetallesAlbaranPagoNUMCONCEPTO = 'NUMCONCEPTO'; + fld_InformeDetallesAlbaranPagoDESCRIPCION = 'DESCRIPCION'; + fld_InformeDetallesAlbaranPagoCANTIDAD = 'CANTIDAD'; + fld_InformeDetallesAlbaranPagoIMPORTEUNIDAD = 'IMPORTEUNIDAD'; + fld_InformeDetallesAlbaranPagoIMPORTETOTAL = 'IMPORTETOTAL'; + fld_InformeDetallesAlbaranPagoTIPO = 'TIPO'; + fld_InformeDetallesAlbaranPagoPOSICION = 'POSICION'; + + { InformeDetallesAlbaranPago field indexes } + idx_InformeDetallesAlbaranPagoCODIGOALBARAN = 0; + idx_InformeDetallesAlbaranPagoNUMCONCEPTO = 1; + idx_InformeDetallesAlbaranPagoDESCRIPCION = 2; + idx_InformeDetallesAlbaranPagoCANTIDAD = 3; + idx_InformeDetallesAlbaranPagoIMPORTEUNIDAD = 4; + idx_InformeDetallesAlbaranPagoIMPORTETOTAL = 5; + idx_InformeDetallesAlbaranPagoTIPO = 6; + idx_InformeDetallesAlbaranPagoPOSICION = 7; + + { DarSumaImportes fields } + fld_DarSumaImportesBASEIMPONIBLE = 'BASEIMPONIBLE'; + fld_DarSumaImportesIMPORTEIVA = 'IMPORTEIVA'; + fld_DarSumaImportesIMPORTETOTAL = 'IMPORTETOTAL'; + + { DarSumaImportes field indexes } + idx_DarSumaImportesBASEIMPONIBLE = 0; + idx_DarSumaImportesIMPORTEIVA = 1; + idx_DarSumaImportesIMPORTETOTAL = 2; + +type + { IDarReferenciaAlbaran } + IDarReferenciaAlbaran = interface(IDAStronglyTypedDataTable) + ['{C6FEC801-58D9-4332-B152-41E118F9B63A}'] + { Property getters and setters } + function GetREFERENCIAValue: String; + procedure SetREFERENCIAValue(const aValue: String); + + + { Properties } + property REFERENCIA: String read GetREFERENCIAValue write SetREFERENCIAValue; + end; + + { TDarReferenciaAlbaranDataTableRules } + TDarReferenciaAlbaranDataTableRules = class(TDADataTableRules, IDarReferenciaAlbaran) + private + protected + { Property getters and setters } + function GetREFERENCIAValue: String; virtual; + procedure SetREFERENCIAValue(const aValue: String); virtual; + + { Properties } + property REFERENCIA: String read GetREFERENCIAValue write SetREFERENCIAValue; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + + { IAlbaranCliente } + IAlbaranCliente = interface(IDAStronglyTypedDataTable) + ['{642833FA-4649-486C-89C8-B9728500F01D}'] + { Property getters and setters } + function GetCODIGOEMPRESAValue: Integer; + procedure SetCODIGOEMPRESAValue(const aValue: Integer); + function GetCODIGOValue: Integer; + procedure SetCODIGOValue(const aValue: Integer); + function GetFECHAALTAValue: DateTime; + procedure SetFECHAALTAValue(const aValue: DateTime); + function GetUSUARIOValue: String; + procedure SetUSUARIOValue(const aValue: String); + function GetREFERENCIAValue: String; + procedure SetREFERENCIAValue(const aValue: String); + function GetCODIGOCONTACTOValue: Integer; + procedure SetCODIGOCONTACTOValue(const aValue: Integer); + function GetNOMBREValue: String; + procedure SetNOMBREValue(const aValue: String); + function GetFECHAALBARANValue: DateTime; + procedure SetFECHAALBARANValue(const aValue: DateTime); + function GetSITUACIONValue: String; + procedure SetSITUACIONValue(const aValue: String); + function GetFECHAPAGOValue: DateTime; + procedure SetFECHAPAGOValue(const aValue: DateTime); + function GetCODIGOPRESUPUESTOValue: Integer; + procedure SetCODIGOPRESUPUESTOValue(const aValue: Integer); + function GetBASEIMPONIBLEValue: Currency; + procedure SetBASEIMPONIBLEValue(const aValue: Currency); + function GetDESCUENTOValue: Float; + procedure SetDESCUENTOValue(const aValue: Float); + function GetIMPORTEDESCUENTOValue: Currency; + procedure SetIMPORTEDESCUENTOValue(const aValue: Currency); + function GetIVAValue: Float; + procedure SetIVAValue(const aValue: Float); + function GetIMPORTEIVAValue: Currency; + procedure SetIMPORTEIVAValue(const aValue: Currency); + function GetIMPORTETOTALValue: Currency; + procedure SetIMPORTETOTALValue(const aValue: Currency); + function GetOBSERVACIONESValue: IROStrings; + procedure SetOBSERVACIONESValue(const aValue: IROStrings); + function GetFORMAPAGOValue: IROStrings; + procedure SetFORMAPAGOValue(const aValue: IROStrings); + function GetREFERENCIAPRESUPUESTOValue: String; + procedure SetREFERENCIAPRESUPUESTOValue(const aValue: String); + + + { Properties } + property CODIGOEMPRESA: Integer read GetCODIGOEMPRESAValue write SetCODIGOEMPRESAValue; + property CODIGO: Integer read GetCODIGOValue write SetCODIGOValue; + property FECHAALTA: DateTime read GetFECHAALTAValue write SetFECHAALTAValue; + property USUARIO: String read GetUSUARIOValue write SetUSUARIOValue; + property REFERENCIA: String read GetREFERENCIAValue write SetREFERENCIAValue; + property CODIGOCONTACTO: Integer read GetCODIGOCONTACTOValue write SetCODIGOCONTACTOValue; + property NOMBRE: String read GetNOMBREValue write SetNOMBREValue; + property FECHAALBARAN: DateTime read GetFECHAALBARANValue write SetFECHAALBARANValue; + property SITUACION: String read GetSITUACIONValue write SetSITUACIONValue; + property FECHAPAGO: DateTime read GetFECHAPAGOValue write SetFECHAPAGOValue; + property CODIGOPRESUPUESTO: Integer read GetCODIGOPRESUPUESTOValue write SetCODIGOPRESUPUESTOValue; + property BASEIMPONIBLE: Currency read GetBASEIMPONIBLEValue write SetBASEIMPONIBLEValue; + property DESCUENTO: Float read GetDESCUENTOValue write SetDESCUENTOValue; + property IMPORTEDESCUENTO: Currency read GetIMPORTEDESCUENTOValue write SetIMPORTEDESCUENTOValue; + property IVA: Float read GetIVAValue write SetIVAValue; + property IMPORTEIVA: Currency read GetIMPORTEIVAValue write SetIMPORTEIVAValue; + property IMPORTETOTAL: Currency read GetIMPORTETOTALValue write SetIMPORTETOTALValue; + property OBSERVACIONES: IROStrings read GetOBSERVACIONESValue write SetOBSERVACIONESValue; + property FORMAPAGO: IROStrings read GetFORMAPAGOValue write SetFORMAPAGOValue; + property REFERENCIAPRESUPUESTO: String read GetREFERENCIAPRESUPUESTOValue write SetREFERENCIAPRESUPUESTOValue; + end; + + { TAlbaranClienteDataTableRules } + TAlbaranClienteDataTableRules = class(TDADataTableRules, IAlbaranCliente) + private + protected + { Property getters and setters } + function GetCODIGOEMPRESAValue: Integer; virtual; + procedure SetCODIGOEMPRESAValue(const aValue: Integer); virtual; + function GetCODIGOValue: Integer; virtual; + procedure SetCODIGOValue(const aValue: Integer); virtual; + function GetFECHAALTAValue: DateTime; virtual; + procedure SetFECHAALTAValue(const aValue: DateTime); virtual; + function GetUSUARIOValue: String; virtual; + procedure SetUSUARIOValue(const aValue: String); virtual; + function GetREFERENCIAValue: String; virtual; + procedure SetREFERENCIAValue(const aValue: String); virtual; + function GetCODIGOCONTACTOValue: Integer; virtual; + procedure SetCODIGOCONTACTOValue(const aValue: Integer); virtual; + function GetNOMBREValue: String; virtual; + procedure SetNOMBREValue(const aValue: String); virtual; + function GetFECHAALBARANValue: DateTime; virtual; + procedure SetFECHAALBARANValue(const aValue: DateTime); virtual; + function GetSITUACIONValue: String; virtual; + procedure SetSITUACIONValue(const aValue: String); virtual; + function GetFECHAPAGOValue: DateTime; virtual; + procedure SetFECHAPAGOValue(const aValue: DateTime); virtual; + function GetCODIGOPRESUPUESTOValue: Integer; virtual; + procedure SetCODIGOPRESUPUESTOValue(const aValue: Integer); virtual; + function GetBASEIMPONIBLEValue: Currency; virtual; + procedure SetBASEIMPONIBLEValue(const aValue: Currency); virtual; + function GetDESCUENTOValue: Float; virtual; + procedure SetDESCUENTOValue(const aValue: Float); virtual; + function GetIMPORTEDESCUENTOValue: Currency; virtual; + procedure SetIMPORTEDESCUENTOValue(const aValue: Currency); virtual; + function GetIVAValue: Float; virtual; + procedure SetIVAValue(const aValue: Float); virtual; + function GetIMPORTEIVAValue: Currency; virtual; + procedure SetIMPORTEIVAValue(const aValue: Currency); virtual; + function GetIMPORTETOTALValue: Currency; virtual; + procedure SetIMPORTETOTALValue(const aValue: Currency); virtual; + function GetOBSERVACIONESValue: IROStrings; virtual; + procedure SetOBSERVACIONESValue(const aValue: IROStrings); virtual; + function GetFORMAPAGOValue: IROStrings; virtual; + procedure SetFORMAPAGOValue(const aValue: IROStrings); virtual; + function GetREFERENCIAPRESUPUESTOValue: String; virtual; + procedure SetREFERENCIAPRESUPUESTOValue(const aValue: String); virtual; + + { Properties } + property CODIGOEMPRESA: Integer read GetCODIGOEMPRESAValue write SetCODIGOEMPRESAValue; + property CODIGO: Integer read GetCODIGOValue write SetCODIGOValue; + property FECHAALTA: DateTime read GetFECHAALTAValue write SetFECHAALTAValue; + property USUARIO: String read GetUSUARIOValue write SetUSUARIOValue; + property REFERENCIA: String read GetREFERENCIAValue write SetREFERENCIAValue; + property CODIGOCONTACTO: Integer read GetCODIGOCONTACTOValue write SetCODIGOCONTACTOValue; + property NOMBRE: String read GetNOMBREValue write SetNOMBREValue; + property FECHAALBARAN: DateTime read GetFECHAALBARANValue write SetFECHAALBARANValue; + property SITUACION: String read GetSITUACIONValue write SetSITUACIONValue; + property FECHAPAGO: DateTime read GetFECHAPAGOValue write SetFECHAPAGOValue; + property CODIGOPRESUPUESTO: Integer read GetCODIGOPRESUPUESTOValue write SetCODIGOPRESUPUESTOValue; + property BASEIMPONIBLE: Currency read GetBASEIMPONIBLEValue write SetBASEIMPONIBLEValue; + property DESCUENTO: Float read GetDESCUENTOValue write SetDESCUENTOValue; + property IMPORTEDESCUENTO: Currency read GetIMPORTEDESCUENTOValue write SetIMPORTEDESCUENTOValue; + property IVA: Float read GetIVAValue write SetIVAValue; + property IMPORTEIVA: Currency read GetIMPORTEIVAValue write SetIMPORTEIVAValue; + property IMPORTETOTAL: Currency read GetIMPORTETOTALValue write SetIMPORTETOTALValue; + property OBSERVACIONES: IROStrings read GetOBSERVACIONESValue write SetOBSERVACIONESValue; + property FORMAPAGO: IROStrings read GetFORMAPAGOValue write SetFORMAPAGOValue; + property REFERENCIAPRESUPUESTO: String read GetREFERENCIAPRESUPUESTOValue write SetREFERENCIAPRESUPUESTOValue; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + + { IAlbaranDePresupuesto } + IAlbaranDePresupuesto = interface(IDAStronglyTypedDataTable) + ['{78FBFEFF-5738-4B40-819A-3F70EED86124}'] + { Property getters and setters } + function GetCODIGOValue: Integer; + procedure SetCODIGOValue(const aValue: Integer); + + + { Properties } + property CODIGO: Integer read GetCODIGOValue write SetCODIGOValue; + end; + + { TAlbaranDePresupuestoDataTableRules } + TAlbaranDePresupuestoDataTableRules = class(TDADataTableRules, IAlbaranDePresupuesto) + private + protected + { Property getters and setters } + function GetCODIGOValue: Integer; virtual; + procedure SetCODIGOValue(const aValue: Integer); virtual; + + { Properties } + property CODIGO: Integer read GetCODIGOValue write SetCODIGOValue; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + + { IDetallesAlbaranCliente } + IDetallesAlbaranCliente = interface(IDAStronglyTypedDataTable) + ['{D9E720C6-134F-4020-975B-7EF111D57933}'] + { Property getters and setters } + function GetCODIGOALBARANValue: Integer; + procedure SetCODIGOALBARANValue(const aValue: Integer); + function GetNUMCONCEPTOValue: Integer; + procedure SetNUMCONCEPTOValue(const aValue: Integer); + function GetPOSICIONValue: Integer; + procedure SetPOSICIONValue(const aValue: Integer); + function GetTIPOValue: String; + procedure SetTIPOValue(const aValue: String); + function GetDESCRIPCIONValue: String; + procedure SetDESCRIPCIONValue(const aValue: String); + function GetCANTIDADValue: Integer; + procedure SetCANTIDADValue(const aValue: Integer); + function GetIMPORTEUNIDADValue: Currency; + procedure SetIMPORTEUNIDADValue(const aValue: Currency); + function GetIMPORTETOTALValue: Currency; + procedure SetIMPORTETOTALValue(const aValue: Currency); + function GetVISIBLEValue: String; + procedure SetVISIBLEValue(const aValue: String); + function GetPUNTOSValue: Integer; + procedure SetPUNTOSValue(const aValue: Integer); + function GetIMPORTEPUNTOSValue: Currency; + procedure SetIMPORTEPUNTOSValue(const aValue: Currency); + + + { Properties } + property CODIGOALBARAN: Integer read GetCODIGOALBARANValue write SetCODIGOALBARANValue; + property NUMCONCEPTO: Integer read GetNUMCONCEPTOValue write SetNUMCONCEPTOValue; + property POSICION: Integer read GetPOSICIONValue write SetPOSICIONValue; + property TIPO: String read GetTIPOValue write SetTIPOValue; + property DESCRIPCION: String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + property CANTIDAD: Integer read GetCANTIDADValue write SetCANTIDADValue; + property IMPORTEUNIDAD: Currency read GetIMPORTEUNIDADValue write SetIMPORTEUNIDADValue; + property IMPORTETOTAL: Currency read GetIMPORTETOTALValue write SetIMPORTETOTALValue; + property VISIBLE: String read GetVISIBLEValue write SetVISIBLEValue; + property PUNTOS: Integer read GetPUNTOSValue write SetPUNTOSValue; + property IMPORTEPUNTOS: Currency read GetIMPORTEPUNTOSValue write SetIMPORTEPUNTOSValue; + end; + + { TDetallesAlbaranClienteDataTableRules } + TDetallesAlbaranClienteDataTableRules = class(TDADataTableRules, IDetallesAlbaranCliente) + private + protected + { Property getters and setters } + function GetCODIGOALBARANValue: Integer; virtual; + procedure SetCODIGOALBARANValue(const aValue: Integer); virtual; + function GetNUMCONCEPTOValue: Integer; virtual; + procedure SetNUMCONCEPTOValue(const aValue: Integer); virtual; + function GetPOSICIONValue: Integer; virtual; + procedure SetPOSICIONValue(const aValue: Integer); virtual; + function GetTIPOValue: String; virtual; + procedure SetTIPOValue(const aValue: String); virtual; + function GetDESCRIPCIONValue: String; virtual; + procedure SetDESCRIPCIONValue(const aValue: String); virtual; + function GetCANTIDADValue: Integer; virtual; + procedure SetCANTIDADValue(const aValue: Integer); virtual; + function GetIMPORTEUNIDADValue: Currency; virtual; + procedure SetIMPORTEUNIDADValue(const aValue: Currency); virtual; + function GetIMPORTETOTALValue: Currency; virtual; + procedure SetIMPORTETOTALValue(const aValue: Currency); virtual; + function GetVISIBLEValue: String; virtual; + procedure SetVISIBLEValue(const aValue: String); virtual; + function GetPUNTOSValue: Integer; virtual; + procedure SetPUNTOSValue(const aValue: Integer); virtual; + function GetIMPORTEPUNTOSValue: Currency; virtual; + procedure SetIMPORTEPUNTOSValue(const aValue: Currency); virtual; + + { Properties } + property CODIGOALBARAN: Integer read GetCODIGOALBARANValue write SetCODIGOALBARANValue; + property NUMCONCEPTO: Integer read GetNUMCONCEPTOValue write SetNUMCONCEPTOValue; + property POSICION: Integer read GetPOSICIONValue write SetPOSICIONValue; + property TIPO: String read GetTIPOValue write SetTIPOValue; + property DESCRIPCION: String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + property CANTIDAD: Integer read GetCANTIDADValue write SetCANTIDADValue; + property IMPORTEUNIDAD: Currency read GetIMPORTEUNIDADValue write SetIMPORTEUNIDADValue; + property IMPORTETOTAL: Currency read GetIMPORTETOTALValue write SetIMPORTETOTALValue; + property VISIBLE: String read GetVISIBLEValue write SetVISIBLEValue; + property PUNTOS: Integer read GetPUNTOSValue write SetPUNTOSValue; + property IMPORTEPUNTOS: Currency read GetIMPORTEPUNTOSValue write SetIMPORTEPUNTOSValue; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + + { IAlbaranCliente_RefreshDataset } + IAlbaranCliente_RefreshDataset = interface(IDAStronglyTypedDataTable) + ['{3832562D-0F4D-4243-A963-3B59CB9D2B05}'] + { Property getters and setters } + function GetCODIGOValue: Integer; + procedure SetCODIGOValue(const aValue: Integer); + function GetNOMBREValue: String; + procedure SetNOMBREValue(const aValue: String); + function GetSITUACIONValue: String; + procedure SetSITUACIONValue(const aValue: String); + function GetREFERENCIAPRESUPUESTOValue: String; + procedure SetREFERENCIAPRESUPUESTOValue(const aValue: String); + + + { Properties } + property CODIGO: Integer read GetCODIGOValue write SetCODIGOValue; + property NOMBRE: String read GetNOMBREValue write SetNOMBREValue; + property SITUACION: String read GetSITUACIONValue write SetSITUACIONValue; + property REFERENCIAPRESUPUESTO: String read GetREFERENCIAPRESUPUESTOValue write SetREFERENCIAPRESUPUESTOValue; + end; + + { TAlbaranCliente_RefreshDatasetDataTableRules } + TAlbaranCliente_RefreshDatasetDataTableRules = class(TDADataTableRules, IAlbaranCliente_RefreshDataset) + private + protected + { Property getters and setters } + function GetCODIGOValue: Integer; virtual; + procedure SetCODIGOValue(const aValue: Integer); virtual; + function GetNOMBREValue: String; virtual; + procedure SetNOMBREValue(const aValue: String); virtual; + function GetSITUACIONValue: String; virtual; + procedure SetSITUACIONValue(const aValue: String); virtual; + function GetREFERENCIAPRESUPUESTOValue: String; virtual; + procedure SetREFERENCIAPRESUPUESTOValue(const aValue: String); virtual; + + { Properties } + property CODIGO: Integer read GetCODIGOValue write SetCODIGOValue; + property NOMBRE: String read GetNOMBREValue write SetNOMBREValue; + property SITUACION: String read GetSITUACIONValue write SetSITUACIONValue; + property REFERENCIAPRESUPUESTO: String read GetREFERENCIAPRESUPUESTOValue write SetREFERENCIAPRESUPUESTOValue; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + + { IInformeCabeceraAlbaranPago } + IInformeCabeceraAlbaranPago = interface(IDAStronglyTypedDataTable) + ['{7CEBCE95-FD7B-46D1-844E-70F47FC60D0E}'] + { Property getters and setters } + function GetCODIGOEMPRESAValue: Integer; + procedure SetCODIGOEMPRESAValue(const aValue: Integer); + function GetCODIGOValue: Integer; + procedure SetCODIGOValue(const aValue: Integer); + function GetFECHAALTAValue: DateTime; + procedure SetFECHAALTAValue(const aValue: DateTime); + function GetUSUARIOValue: String; + procedure SetUSUARIOValue(const aValue: String); + function GetREFERENCIAValue: String; + procedure SetREFERENCIAValue(const aValue: String); + function GetCODIGOCONTACTOValue: Integer; + procedure SetCODIGOCONTACTOValue(const aValue: Integer); + function GetFECHAALBARANValue: DateTime; + procedure SetFECHAALBARANValue(const aValue: DateTime); + function GetSITUACIONValue: String; + procedure SetSITUACIONValue(const aValue: String); + function GetFECHAPAGOValue: DateTime; + procedure SetFECHAPAGOValue(const aValue: DateTime); + function GetBASEIMPONIBLEValue: Float; + procedure SetBASEIMPONIBLEValue(const aValue: Float); + function GetDESCUENTOValue: Float; + procedure SetDESCUENTOValue(const aValue: Float); + function GetIMPORTEDESCUENTOValue: Float; + procedure SetIMPORTEDESCUENTOValue(const aValue: Float); + function GetIVAValue: Float; + procedure SetIVAValue(const aValue: Float); + function GetIMPORTEIVAValue: Float; + procedure SetIMPORTEIVAValue(const aValue: Float); + function GetIMPORTETOTALValue: Float; + procedure SetIMPORTETOTALValue(const aValue: Float); + function GetOBSERVACIONESValue: IROStrings; + procedure SetOBSERVACIONESValue(const aValue: IROStrings); + function GetFORMAPAGOValue: IROStrings; + procedure SetFORMAPAGOValue(const aValue: IROStrings); + function GetCODIGOPRESUPUESTOValue: Integer; + procedure SetCODIGOPRESUPUESTOValue(const aValue: Integer); + function GetREFERENCIAPREValue: String; + procedure SetREFERENCIAPREValue(const aValue: String); + function GetNIFCIFValue: String; + procedure SetNIFCIFValue(const aValue: String); + function GetNOMBREValue: String; + procedure SetNOMBREValue(const aValue: String); + function GetCALLEValue: String; + procedure SetCALLEValue(const aValue: String); + function GetCODIGOPOSTALValue: String; + procedure SetCODIGOPOSTALValue(const aValue: String); + function GetPOBLACIONValue: String; + procedure SetPOBLACIONValue(const aValue: String); + function GetTELEFONO1Value: String; + procedure SetTELEFONO1Value(const aValue: String); + function GetTELEFONO2Value: String; + procedure SetTELEFONO2Value(const aValue: String); + function GetMOVILValue: String; + procedure SetMOVILValue(const aValue: String); + + + { Properties } + property CODIGOEMPRESA: Integer read GetCODIGOEMPRESAValue write SetCODIGOEMPRESAValue; + property CODIGO: Integer read GetCODIGOValue write SetCODIGOValue; + property FECHAALTA: DateTime read GetFECHAALTAValue write SetFECHAALTAValue; + property USUARIO: String read GetUSUARIOValue write SetUSUARIOValue; + property REFERENCIA: String read GetREFERENCIAValue write SetREFERENCIAValue; + property CODIGOCONTACTO: Integer read GetCODIGOCONTACTOValue write SetCODIGOCONTACTOValue; + property FECHAALBARAN: DateTime read GetFECHAALBARANValue write SetFECHAALBARANValue; + property SITUACION: String read GetSITUACIONValue write SetSITUACIONValue; + property FECHAPAGO: DateTime read GetFECHAPAGOValue write SetFECHAPAGOValue; + property BASEIMPONIBLE: Float read GetBASEIMPONIBLEValue write SetBASEIMPONIBLEValue; + property DESCUENTO: Float read GetDESCUENTOValue write SetDESCUENTOValue; + property IMPORTEDESCUENTO: Float read GetIMPORTEDESCUENTOValue write SetIMPORTEDESCUENTOValue; + property IVA: Float read GetIVAValue write SetIVAValue; + property IMPORTEIVA: Float read GetIMPORTEIVAValue write SetIMPORTEIVAValue; + property IMPORTETOTAL: Float read GetIMPORTETOTALValue write SetIMPORTETOTALValue; + property OBSERVACIONES: IROStrings read GetOBSERVACIONESValue write SetOBSERVACIONESValue; + property FORMAPAGO: IROStrings read GetFORMAPAGOValue write SetFORMAPAGOValue; + property CODIGOPRESUPUESTO: Integer read GetCODIGOPRESUPUESTOValue write SetCODIGOPRESUPUESTOValue; + property REFERENCIAPRE: String read GetREFERENCIAPREValue write SetREFERENCIAPREValue; + property NIFCIF: String read GetNIFCIFValue write SetNIFCIFValue; + property NOMBRE: String read GetNOMBREValue write SetNOMBREValue; + property CALLE: String read GetCALLEValue write SetCALLEValue; + property CODIGOPOSTAL: String read GetCODIGOPOSTALValue write SetCODIGOPOSTALValue; + property POBLACION: String read GetPOBLACIONValue write SetPOBLACIONValue; + property TELEFONO1: String read GetTELEFONO1Value write SetTELEFONO1Value; + property TELEFONO2: String read GetTELEFONO2Value write SetTELEFONO2Value; + property MOVIL: String read GetMOVILValue write SetMOVILValue; + end; + + { TInformeCabeceraAlbaranPagoDataTableRules } + TInformeCabeceraAlbaranPagoDataTableRules = class(TDADataTableRules, IInformeCabeceraAlbaranPago) + private + protected + { Property getters and setters } + function GetCODIGOEMPRESAValue: Integer; virtual; + procedure SetCODIGOEMPRESAValue(const aValue: Integer); virtual; + function GetCODIGOValue: Integer; virtual; + procedure SetCODIGOValue(const aValue: Integer); virtual; + function GetFECHAALTAValue: DateTime; virtual; + procedure SetFECHAALTAValue(const aValue: DateTime); virtual; + function GetUSUARIOValue: String; virtual; + procedure SetUSUARIOValue(const aValue: String); virtual; + function GetREFERENCIAValue: String; virtual; + procedure SetREFERENCIAValue(const aValue: String); virtual; + function GetCODIGOCONTACTOValue: Integer; virtual; + procedure SetCODIGOCONTACTOValue(const aValue: Integer); virtual; + function GetFECHAALBARANValue: DateTime; virtual; + procedure SetFECHAALBARANValue(const aValue: DateTime); virtual; + function GetSITUACIONValue: String; virtual; + procedure SetSITUACIONValue(const aValue: String); virtual; + function GetFECHAPAGOValue: DateTime; virtual; + procedure SetFECHAPAGOValue(const aValue: DateTime); virtual; + function GetBASEIMPONIBLEValue: Float; virtual; + procedure SetBASEIMPONIBLEValue(const aValue: Float); virtual; + function GetDESCUENTOValue: Float; virtual; + procedure SetDESCUENTOValue(const aValue: Float); virtual; + function GetIMPORTEDESCUENTOValue: Float; virtual; + procedure SetIMPORTEDESCUENTOValue(const aValue: Float); virtual; + function GetIVAValue: Float; virtual; + procedure SetIVAValue(const aValue: Float); virtual; + function GetIMPORTEIVAValue: Float; virtual; + procedure SetIMPORTEIVAValue(const aValue: Float); virtual; + function GetIMPORTETOTALValue: Float; virtual; + procedure SetIMPORTETOTALValue(const aValue: Float); virtual; + function GetOBSERVACIONESValue: IROStrings; virtual; + procedure SetOBSERVACIONESValue(const aValue: IROStrings); virtual; + function GetFORMAPAGOValue: IROStrings; virtual; + procedure SetFORMAPAGOValue(const aValue: IROStrings); virtual; + function GetCODIGOPRESUPUESTOValue: Integer; virtual; + procedure SetCODIGOPRESUPUESTOValue(const aValue: Integer); virtual; + function GetREFERENCIAPREValue: String; virtual; + procedure SetREFERENCIAPREValue(const aValue: String); virtual; + function GetNIFCIFValue: String; virtual; + procedure SetNIFCIFValue(const aValue: String); virtual; + function GetNOMBREValue: String; virtual; + procedure SetNOMBREValue(const aValue: String); virtual; + function GetCALLEValue: String; virtual; + procedure SetCALLEValue(const aValue: String); virtual; + function GetCODIGOPOSTALValue: String; virtual; + procedure SetCODIGOPOSTALValue(const aValue: String); virtual; + function GetPOBLACIONValue: String; virtual; + procedure SetPOBLACIONValue(const aValue: String); virtual; + function GetTELEFONO1Value: String; virtual; + procedure SetTELEFONO1Value(const aValue: String); virtual; + function GetTELEFONO2Value: String; virtual; + procedure SetTELEFONO2Value(const aValue: String); virtual; + function GetMOVILValue: String; virtual; + procedure SetMOVILValue(const aValue: String); virtual; + + { Properties } + property CODIGOEMPRESA: Integer read GetCODIGOEMPRESAValue write SetCODIGOEMPRESAValue; + property CODIGO: Integer read GetCODIGOValue write SetCODIGOValue; + property FECHAALTA: DateTime read GetFECHAALTAValue write SetFECHAALTAValue; + property USUARIO: String read GetUSUARIOValue write SetUSUARIOValue; + property REFERENCIA: String read GetREFERENCIAValue write SetREFERENCIAValue; + property CODIGOCONTACTO: Integer read GetCODIGOCONTACTOValue write SetCODIGOCONTACTOValue; + property FECHAALBARAN: DateTime read GetFECHAALBARANValue write SetFECHAALBARANValue; + property SITUACION: String read GetSITUACIONValue write SetSITUACIONValue; + property FECHAPAGO: DateTime read GetFECHAPAGOValue write SetFECHAPAGOValue; + property BASEIMPONIBLE: Float read GetBASEIMPONIBLEValue write SetBASEIMPONIBLEValue; + property DESCUENTO: Float read GetDESCUENTOValue write SetDESCUENTOValue; + property IMPORTEDESCUENTO: Float read GetIMPORTEDESCUENTOValue write SetIMPORTEDESCUENTOValue; + property IVA: Float read GetIVAValue write SetIVAValue; + property IMPORTEIVA: Float read GetIMPORTEIVAValue write SetIMPORTEIVAValue; + property IMPORTETOTAL: Float read GetIMPORTETOTALValue write SetIMPORTETOTALValue; + property OBSERVACIONES: IROStrings read GetOBSERVACIONESValue write SetOBSERVACIONESValue; + property FORMAPAGO: IROStrings read GetFORMAPAGOValue write SetFORMAPAGOValue; + property CODIGOPRESUPUESTO: Integer read GetCODIGOPRESUPUESTOValue write SetCODIGOPRESUPUESTOValue; + property REFERENCIAPRE: String read GetREFERENCIAPREValue write SetREFERENCIAPREValue; + property NIFCIF: String read GetNIFCIFValue write SetNIFCIFValue; + property NOMBRE: String read GetNOMBREValue write SetNOMBREValue; + property CALLE: String read GetCALLEValue write SetCALLEValue; + property CODIGOPOSTAL: String read GetCODIGOPOSTALValue write SetCODIGOPOSTALValue; + property POBLACION: String read GetPOBLACIONValue write SetPOBLACIONValue; + property TELEFONO1: String read GetTELEFONO1Value write SetTELEFONO1Value; + property TELEFONO2: String read GetTELEFONO2Value write SetTELEFONO2Value; + property MOVIL: String read GetMOVILValue write SetMOVILValue; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + + { IInformeDetallesAlbaranPago } + IInformeDetallesAlbaranPago = interface(IDAStronglyTypedDataTable) + ['{2C1837CB-F884-46C6-BD8E-59A6AD8670A8}'] + { Property getters and setters } + function GetCODIGOALBARANValue: Integer; + procedure SetCODIGOALBARANValue(const aValue: Integer); + function GetNUMCONCEPTOValue: Integer; + procedure SetNUMCONCEPTOValue(const aValue: Integer); + function GetDESCRIPCIONValue: String; + procedure SetDESCRIPCIONValue(const aValue: String); + function GetCANTIDADValue: Float; + procedure SetCANTIDADValue(const aValue: Float); + function GetIMPORTEUNIDADValue: Float; + procedure SetIMPORTEUNIDADValue(const aValue: Float); + function GetIMPORTETOTALValue: Float; + procedure SetIMPORTETOTALValue(const aValue: Float); + function GetTIPOValue: String; + procedure SetTIPOValue(const aValue: String); + function GetPOSICIONValue: Integer; + procedure SetPOSICIONValue(const aValue: Integer); + + + { Properties } + property CODIGOALBARAN: Integer read GetCODIGOALBARANValue write SetCODIGOALBARANValue; + property NUMCONCEPTO: Integer read GetNUMCONCEPTOValue write SetNUMCONCEPTOValue; + property DESCRIPCION: String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + property CANTIDAD: Float read GetCANTIDADValue write SetCANTIDADValue; + property IMPORTEUNIDAD: Float read GetIMPORTEUNIDADValue write SetIMPORTEUNIDADValue; + property IMPORTETOTAL: Float read GetIMPORTETOTALValue write SetIMPORTETOTALValue; + property TIPO: String read GetTIPOValue write SetTIPOValue; + property POSICION: Integer read GetPOSICIONValue write SetPOSICIONValue; + end; + + { TInformeDetallesAlbaranPagoDataTableRules } + TInformeDetallesAlbaranPagoDataTableRules = class(TDADataTableRules, IInformeDetallesAlbaranPago) + private + protected + { Property getters and setters } + function GetCODIGOALBARANValue: Integer; virtual; + procedure SetCODIGOALBARANValue(const aValue: Integer); virtual; + function GetNUMCONCEPTOValue: Integer; virtual; + procedure SetNUMCONCEPTOValue(const aValue: Integer); virtual; + function GetDESCRIPCIONValue: String; virtual; + procedure SetDESCRIPCIONValue(const aValue: String); virtual; + function GetCANTIDADValue: Float; virtual; + procedure SetCANTIDADValue(const aValue: Float); virtual; + function GetIMPORTEUNIDADValue: Float; virtual; + procedure SetIMPORTEUNIDADValue(const aValue: Float); virtual; + function GetIMPORTETOTALValue: Float; virtual; + procedure SetIMPORTETOTALValue(const aValue: Float); virtual; + function GetTIPOValue: String; virtual; + procedure SetTIPOValue(const aValue: String); virtual; + function GetPOSICIONValue: Integer; virtual; + procedure SetPOSICIONValue(const aValue: Integer); virtual; + + { Properties } + property CODIGOALBARAN: Integer read GetCODIGOALBARANValue write SetCODIGOALBARANValue; + property NUMCONCEPTO: Integer read GetNUMCONCEPTOValue write SetNUMCONCEPTOValue; + property DESCRIPCION: String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + property CANTIDAD: Float read GetCANTIDADValue write SetCANTIDADValue; + property IMPORTEUNIDAD: Float read GetIMPORTEUNIDADValue write SetIMPORTEUNIDADValue; + property IMPORTETOTAL: Float read GetIMPORTETOTALValue write SetIMPORTETOTALValue; + property TIPO: String read GetTIPOValue write SetTIPOValue; + property POSICION: Integer read GetPOSICIONValue write SetPOSICIONValue; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + + { + Suma de todos los importes entre un intervalo de fechas + } + { IDarSumaImportes } + IDarSumaImportes = interface(IDAStronglyTypedDataTable) + ['{C49AE35E-D0D0-4D17-80C9-9E996E212A8D}'] + { Property getters and setters } + function GetBASEIMPONIBLEValue: Float; + procedure SetBASEIMPONIBLEValue(const aValue: Float); + function GetIMPORTEIVAValue: Float; + procedure SetIMPORTEIVAValue(const aValue: Float); + function GetIMPORTETOTALValue: Float; + procedure SetIMPORTETOTALValue(const aValue: Float); + + + { Properties } + property BASEIMPONIBLE: Float read GetBASEIMPONIBLEValue write SetBASEIMPONIBLEValue; + property IMPORTEIVA: Float read GetIMPORTEIVAValue write SetIMPORTEIVAValue; + property IMPORTETOTAL: Float read GetIMPORTETOTALValue write SetIMPORTETOTALValue; + end; + + { TDarSumaImportesDataTableRules } + TDarSumaImportesDataTableRules = class(TDADataTableRules, IDarSumaImportes) + private + protected + { Property getters and setters } + function GetBASEIMPONIBLEValue: Float; virtual; + procedure SetBASEIMPONIBLEValue(const aValue: Float); virtual; + function GetIMPORTEIVAValue: Float; virtual; + procedure SetIMPORTEIVAValue(const aValue: Float); virtual; + function GetIMPORTETOTALValue: Float; virtual; + procedure SetIMPORTETOTALValue(const aValue: Float); virtual; + + { Properties } + property BASEIMPONIBLE: Float read GetBASEIMPONIBLEValue write SetBASEIMPONIBLEValue; + property IMPORTEIVA: Float read GetIMPORTEIVAValue write SetIMPORTEIVAValue; + property IMPORTETOTAL: Float read GetIMPORTETOTALValue write SetIMPORTETOTALValue; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + +implementation + +uses Variants; + +{ TDarReferenciaAlbaranDataTableRules } +constructor TDarReferenciaAlbaranDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TDarReferenciaAlbaranDataTableRules.Destroy; +begin + inherited; +end; + +function TDarReferenciaAlbaranDataTableRules.GetREFERENCIAValue: String; +begin + result := DataTable.Fields[idx_DarReferenciaAlbaranREFERENCIA].AsString; +end; + +procedure TDarReferenciaAlbaranDataTableRules.SetREFERENCIAValue(const aValue: String); +begin + DataTable.Fields[idx_DarReferenciaAlbaranREFERENCIA].AsString := aValue; +end; + + +{ TAlbaranClienteDataTableRules } +constructor TAlbaranClienteDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TAlbaranClienteDataTableRules.Destroy; +begin + inherited; +end; + +function TAlbaranClienteDataTableRules.GetCODIGOEMPRESAValue: Integer; +begin + result := DataTable.Fields[idx_AlbaranClienteCODIGOEMPRESA].AsInteger; +end; + +procedure TAlbaranClienteDataTableRules.SetCODIGOEMPRESAValue(const aValue: Integer); +begin + DataTable.Fields[idx_AlbaranClienteCODIGOEMPRESA].AsInteger := aValue; +end; + +function TAlbaranClienteDataTableRules.GetCODIGOValue: Integer; +begin + result := DataTable.Fields[idx_AlbaranClienteCODIGO].AsInteger; +end; + +procedure TAlbaranClienteDataTableRules.SetCODIGOValue(const aValue: Integer); +begin + DataTable.Fields[idx_AlbaranClienteCODIGO].AsInteger := aValue; +end; + +function TAlbaranClienteDataTableRules.GetFECHAALTAValue: DateTime; +begin + result := DataTable.Fields[idx_AlbaranClienteFECHAALTA].AsDateTime; +end; + +procedure TAlbaranClienteDataTableRules.SetFECHAALTAValue(const aValue: DateTime); +begin + DataTable.Fields[idx_AlbaranClienteFECHAALTA].AsDateTime := aValue; +end; + +function TAlbaranClienteDataTableRules.GetUSUARIOValue: String; +begin + result := DataTable.Fields[idx_AlbaranClienteUSUARIO].AsString; +end; + +procedure TAlbaranClienteDataTableRules.SetUSUARIOValue(const aValue: String); +begin + DataTable.Fields[idx_AlbaranClienteUSUARIO].AsString := aValue; +end; + +function TAlbaranClienteDataTableRules.GetREFERENCIAValue: String; +begin + result := DataTable.Fields[idx_AlbaranClienteREFERENCIA].AsString; +end; + +procedure TAlbaranClienteDataTableRules.SetREFERENCIAValue(const aValue: String); +begin + DataTable.Fields[idx_AlbaranClienteREFERENCIA].AsString := aValue; +end; + +function TAlbaranClienteDataTableRules.GetCODIGOCONTACTOValue: Integer; +begin + result := DataTable.Fields[idx_AlbaranClienteCODIGOCONTACTO].AsInteger; +end; + +procedure TAlbaranClienteDataTableRules.SetCODIGOCONTACTOValue(const aValue: Integer); +begin + DataTable.Fields[idx_AlbaranClienteCODIGOCONTACTO].AsInteger := aValue; +end; + +function TAlbaranClienteDataTableRules.GetNOMBREValue: String; +begin + result := DataTable.Fields[idx_AlbaranClienteNOMBRE].AsString; +end; + +procedure TAlbaranClienteDataTableRules.SetNOMBREValue(const aValue: String); +begin + DataTable.Fields[idx_AlbaranClienteNOMBRE].AsString := aValue; +end; + +function TAlbaranClienteDataTableRules.GetFECHAALBARANValue: DateTime; +begin + result := DataTable.Fields[idx_AlbaranClienteFECHAALBARAN].AsDateTime; +end; + +procedure TAlbaranClienteDataTableRules.SetFECHAALBARANValue(const aValue: DateTime); +begin + DataTable.Fields[idx_AlbaranClienteFECHAALBARAN].AsDateTime := aValue; +end; + +function TAlbaranClienteDataTableRules.GetSITUACIONValue: String; +begin + result := DataTable.Fields[idx_AlbaranClienteSITUACION].AsString; +end; + +procedure TAlbaranClienteDataTableRules.SetSITUACIONValue(const aValue: String); +begin + DataTable.Fields[idx_AlbaranClienteSITUACION].AsString := aValue; +end; + +function TAlbaranClienteDataTableRules.GetFECHAPAGOValue: DateTime; +begin + result := DataTable.Fields[idx_AlbaranClienteFECHAPAGO].AsDateTime; +end; + +procedure TAlbaranClienteDataTableRules.SetFECHAPAGOValue(const aValue: DateTime); +begin + DataTable.Fields[idx_AlbaranClienteFECHAPAGO].AsDateTime := aValue; +end; + +function TAlbaranClienteDataTableRules.GetCODIGOPRESUPUESTOValue: Integer; +begin + result := DataTable.Fields[idx_AlbaranClienteCODIGOPRESUPUESTO].AsInteger; +end; + +procedure TAlbaranClienteDataTableRules.SetCODIGOPRESUPUESTOValue(const aValue: Integer); +begin + DataTable.Fields[idx_AlbaranClienteCODIGOPRESUPUESTO].AsInteger := aValue; +end; + +function TAlbaranClienteDataTableRules.GetBASEIMPONIBLEValue: Currency; +begin + result := DataTable.Fields[idx_AlbaranClienteBASEIMPONIBLE].AsCurrency; +end; + +procedure TAlbaranClienteDataTableRules.SetBASEIMPONIBLEValue(const aValue: Currency); +begin + DataTable.Fields[idx_AlbaranClienteBASEIMPONIBLE].AsCurrency := aValue; +end; + +function TAlbaranClienteDataTableRules.GetDESCUENTOValue: Float; +begin + result := DataTable.Fields[idx_AlbaranClienteDESCUENTO].AsFloat; +end; + +procedure TAlbaranClienteDataTableRules.SetDESCUENTOValue(const aValue: Float); +begin + DataTable.Fields[idx_AlbaranClienteDESCUENTO].AsFloat := aValue; +end; + +function TAlbaranClienteDataTableRules.GetIMPORTEDESCUENTOValue: Currency; +begin + result := DataTable.Fields[idx_AlbaranClienteIMPORTEDESCUENTO].AsCurrency; +end; + +procedure TAlbaranClienteDataTableRules.SetIMPORTEDESCUENTOValue(const aValue: Currency); +begin + DataTable.Fields[idx_AlbaranClienteIMPORTEDESCUENTO].AsCurrency := aValue; +end; + +function TAlbaranClienteDataTableRules.GetIVAValue: Float; +begin + result := DataTable.Fields[idx_AlbaranClienteIVA].AsFloat; +end; + +procedure TAlbaranClienteDataTableRules.SetIVAValue(const aValue: Float); +begin + DataTable.Fields[idx_AlbaranClienteIVA].AsFloat := aValue; +end; + +function TAlbaranClienteDataTableRules.GetIMPORTEIVAValue: Currency; +begin + result := DataTable.Fields[idx_AlbaranClienteIMPORTEIVA].AsCurrency; +end; + +procedure TAlbaranClienteDataTableRules.SetIMPORTEIVAValue(const aValue: Currency); +begin + DataTable.Fields[idx_AlbaranClienteIMPORTEIVA].AsCurrency := aValue; +end; + +function TAlbaranClienteDataTableRules.GetIMPORTETOTALValue: Currency; +begin + result := DataTable.Fields[idx_AlbaranClienteIMPORTETOTAL].AsCurrency; +end; + +procedure TAlbaranClienteDataTableRules.SetIMPORTETOTALValue(const aValue: Currency); +begin + DataTable.Fields[idx_AlbaranClienteIMPORTETOTAL].AsCurrency := aValue; +end; + +function TAlbaranClienteDataTableRules.GetOBSERVACIONESValue: IROStrings; +begin + result := NewROStrings(); + result.Text := DataTable.Fields[idx_AlbaranClienteOBSERVACIONES].AsString; +end; + +procedure TAlbaranClienteDataTableRules.SetOBSERVACIONESValue(const aValue: IROStrings); +begin + DataTable.Fields[idx_AlbaranClienteOBSERVACIONES].AsString := aValue.Text; +end; + +function TAlbaranClienteDataTableRules.GetFORMAPAGOValue: IROStrings; +begin + result := NewROStrings(); + result.Text := DataTable.Fields[idx_AlbaranClienteFORMAPAGO].AsString; +end; + +procedure TAlbaranClienteDataTableRules.SetFORMAPAGOValue(const aValue: IROStrings); +begin + DataTable.Fields[idx_AlbaranClienteFORMAPAGO].AsString := aValue.Text; +end; + +function TAlbaranClienteDataTableRules.GetREFERENCIAPRESUPUESTOValue: String; +begin + result := DataTable.Fields[idx_AlbaranClienteREFERENCIAPRESUPUESTO].AsString; +end; + +procedure TAlbaranClienteDataTableRules.SetREFERENCIAPRESUPUESTOValue(const aValue: String); +begin + DataTable.Fields[idx_AlbaranClienteREFERENCIAPRESUPUESTO].AsString := aValue; +end; + + +{ TAlbaranDePresupuestoDataTableRules } +constructor TAlbaranDePresupuestoDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TAlbaranDePresupuestoDataTableRules.Destroy; +begin + inherited; +end; + +function TAlbaranDePresupuestoDataTableRules.GetCODIGOValue: Integer; +begin + result := DataTable.Fields[idx_AlbaranDePresupuestoCODIGO].AsInteger; +end; + +procedure TAlbaranDePresupuestoDataTableRules.SetCODIGOValue(const aValue: Integer); +begin + DataTable.Fields[idx_AlbaranDePresupuestoCODIGO].AsInteger := aValue; +end; + + +{ TDetallesAlbaranClienteDataTableRules } +constructor TDetallesAlbaranClienteDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TDetallesAlbaranClienteDataTableRules.Destroy; +begin + inherited; +end; + +function TDetallesAlbaranClienteDataTableRules.GetCODIGOALBARANValue: Integer; +begin + result := DataTable.Fields[idx_DetallesAlbaranClienteCODIGOALBARAN].AsInteger; +end; + +procedure TDetallesAlbaranClienteDataTableRules.SetCODIGOALBARANValue(const aValue: Integer); +begin + DataTable.Fields[idx_DetallesAlbaranClienteCODIGOALBARAN].AsInteger := aValue; +end; + +function TDetallesAlbaranClienteDataTableRules.GetNUMCONCEPTOValue: Integer; +begin + result := DataTable.Fields[idx_DetallesAlbaranClienteNUMCONCEPTO].AsInteger; +end; + +procedure TDetallesAlbaranClienteDataTableRules.SetNUMCONCEPTOValue(const aValue: Integer); +begin + DataTable.Fields[idx_DetallesAlbaranClienteNUMCONCEPTO].AsInteger := aValue; +end; + +function TDetallesAlbaranClienteDataTableRules.GetPOSICIONValue: Integer; +begin + result := DataTable.Fields[idx_DetallesAlbaranClientePOSICION].AsInteger; +end; + +procedure TDetallesAlbaranClienteDataTableRules.SetPOSICIONValue(const aValue: Integer); +begin + DataTable.Fields[idx_DetallesAlbaranClientePOSICION].AsInteger := aValue; +end; + +function TDetallesAlbaranClienteDataTableRules.GetTIPOValue: String; +begin + result := DataTable.Fields[idx_DetallesAlbaranClienteTIPO].AsString; +end; + +procedure TDetallesAlbaranClienteDataTableRules.SetTIPOValue(const aValue: String); +begin + DataTable.Fields[idx_DetallesAlbaranClienteTIPO].AsString := aValue; +end; + +function TDetallesAlbaranClienteDataTableRules.GetDESCRIPCIONValue: String; +begin + result := DataTable.Fields[idx_DetallesAlbaranClienteDESCRIPCION].AsString; +end; + +procedure TDetallesAlbaranClienteDataTableRules.SetDESCRIPCIONValue(const aValue: String); +begin + DataTable.Fields[idx_DetallesAlbaranClienteDESCRIPCION].AsString := aValue; +end; + +function TDetallesAlbaranClienteDataTableRules.GetCANTIDADValue: Integer; +begin + result := DataTable.Fields[idx_DetallesAlbaranClienteCANTIDAD].AsInteger; +end; + +procedure TDetallesAlbaranClienteDataTableRules.SetCANTIDADValue(const aValue: Integer); +begin + DataTable.Fields[idx_DetallesAlbaranClienteCANTIDAD].AsInteger := aValue; +end; + +function TDetallesAlbaranClienteDataTableRules.GetIMPORTEUNIDADValue: Currency; +begin + result := DataTable.Fields[idx_DetallesAlbaranClienteIMPORTEUNIDAD].AsCurrency; +end; + +procedure TDetallesAlbaranClienteDataTableRules.SetIMPORTEUNIDADValue(const aValue: Currency); +begin + DataTable.Fields[idx_DetallesAlbaranClienteIMPORTEUNIDAD].AsCurrency := aValue; +end; + +function TDetallesAlbaranClienteDataTableRules.GetIMPORTETOTALValue: Currency; +begin + result := DataTable.Fields[idx_DetallesAlbaranClienteIMPORTETOTAL].AsCurrency; +end; + +procedure TDetallesAlbaranClienteDataTableRules.SetIMPORTETOTALValue(const aValue: Currency); +begin + DataTable.Fields[idx_DetallesAlbaranClienteIMPORTETOTAL].AsCurrency := aValue; +end; + +function TDetallesAlbaranClienteDataTableRules.GetVISIBLEValue: String; +begin + result := DataTable.Fields[idx_DetallesAlbaranClienteVISIBLE].AsString; +end; + +procedure TDetallesAlbaranClienteDataTableRules.SetVISIBLEValue(const aValue: String); +begin + DataTable.Fields[idx_DetallesAlbaranClienteVISIBLE].AsString := aValue; +end; + +function TDetallesAlbaranClienteDataTableRules.GetPUNTOSValue: Integer; +begin + result := DataTable.Fields[idx_DetallesAlbaranClientePUNTOS].AsInteger; +end; + +procedure TDetallesAlbaranClienteDataTableRules.SetPUNTOSValue(const aValue: Integer); +begin + DataTable.Fields[idx_DetallesAlbaranClientePUNTOS].AsInteger := aValue; +end; + +function TDetallesAlbaranClienteDataTableRules.GetIMPORTEPUNTOSValue: Currency; +begin + result := DataTable.Fields[idx_DetallesAlbaranClienteIMPORTEPUNTOS].AsCurrency; +end; + +procedure TDetallesAlbaranClienteDataTableRules.SetIMPORTEPUNTOSValue(const aValue: Currency); +begin + DataTable.Fields[idx_DetallesAlbaranClienteIMPORTEPUNTOS].AsCurrency := aValue; +end; + + +{ TAlbaranCliente_RefreshDatasetDataTableRules } +constructor TAlbaranCliente_RefreshDatasetDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TAlbaranCliente_RefreshDatasetDataTableRules.Destroy; +begin + inherited; +end; + +function TAlbaranCliente_RefreshDatasetDataTableRules.GetCODIGOValue: Integer; +begin + result := DataTable.Fields[idx_AlbaranCliente_RefreshDatasetCODIGO].AsInteger; +end; + +procedure TAlbaranCliente_RefreshDatasetDataTableRules.SetCODIGOValue(const aValue: Integer); +begin + DataTable.Fields[idx_AlbaranCliente_RefreshDatasetCODIGO].AsInteger := aValue; +end; + +function TAlbaranCliente_RefreshDatasetDataTableRules.GetNOMBREValue: String; +begin + result := DataTable.Fields[idx_AlbaranCliente_RefreshDatasetNOMBRE].AsString; +end; + +procedure TAlbaranCliente_RefreshDatasetDataTableRules.SetNOMBREValue(const aValue: String); +begin + DataTable.Fields[idx_AlbaranCliente_RefreshDatasetNOMBRE].AsString := aValue; +end; + +function TAlbaranCliente_RefreshDatasetDataTableRules.GetSITUACIONValue: String; +begin + result := DataTable.Fields[idx_AlbaranCliente_RefreshDatasetSITUACION].AsString; +end; + +procedure TAlbaranCliente_RefreshDatasetDataTableRules.SetSITUACIONValue(const aValue: String); +begin + DataTable.Fields[idx_AlbaranCliente_RefreshDatasetSITUACION].AsString := aValue; +end; + +function TAlbaranCliente_RefreshDatasetDataTableRules.GetREFERENCIAPRESUPUESTOValue: String; +begin + result := DataTable.Fields[idx_AlbaranCliente_RefreshDatasetREFERENCIAPRESUPUESTO].AsString; +end; + +procedure TAlbaranCliente_RefreshDatasetDataTableRules.SetREFERENCIAPRESUPUESTOValue(const aValue: String); +begin + DataTable.Fields[idx_AlbaranCliente_RefreshDatasetREFERENCIAPRESUPUESTO].AsString := aValue; +end; + + +{ TInformeCabeceraAlbaranPagoDataTableRules } +constructor TInformeCabeceraAlbaranPagoDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TInformeCabeceraAlbaranPagoDataTableRules.Destroy; +begin + inherited; +end; + +function TInformeCabeceraAlbaranPagoDataTableRules.GetCODIGOEMPRESAValue: Integer; +begin + result := DataTable.Fields[idx_InformeCabeceraAlbaranPagoCODIGOEMPRESA].AsInteger; +end; + +procedure TInformeCabeceraAlbaranPagoDataTableRules.SetCODIGOEMPRESAValue(const aValue: Integer); +begin + DataTable.Fields[idx_InformeCabeceraAlbaranPagoCODIGOEMPRESA].AsInteger := aValue; +end; + +function TInformeCabeceraAlbaranPagoDataTableRules.GetCODIGOValue: Integer; +begin + result := DataTable.Fields[idx_InformeCabeceraAlbaranPagoCODIGO].AsInteger; +end; + +procedure TInformeCabeceraAlbaranPagoDataTableRules.SetCODIGOValue(const aValue: Integer); +begin + DataTable.Fields[idx_InformeCabeceraAlbaranPagoCODIGO].AsInteger := aValue; +end; + +function TInformeCabeceraAlbaranPagoDataTableRules.GetFECHAALTAValue: DateTime; +begin + result := DataTable.Fields[idx_InformeCabeceraAlbaranPagoFECHAALTA].AsDateTime; +end; + +procedure TInformeCabeceraAlbaranPagoDataTableRules.SetFECHAALTAValue(const aValue: DateTime); +begin + DataTable.Fields[idx_InformeCabeceraAlbaranPagoFECHAALTA].AsDateTime := aValue; +end; + +function TInformeCabeceraAlbaranPagoDataTableRules.GetUSUARIOValue: String; +begin + result := DataTable.Fields[idx_InformeCabeceraAlbaranPagoUSUARIO].AsString; +end; + +procedure TInformeCabeceraAlbaranPagoDataTableRules.SetUSUARIOValue(const aValue: String); +begin + DataTable.Fields[idx_InformeCabeceraAlbaranPagoUSUARIO].AsString := aValue; +end; + +function TInformeCabeceraAlbaranPagoDataTableRules.GetREFERENCIAValue: String; +begin + result := DataTable.Fields[idx_InformeCabeceraAlbaranPagoREFERENCIA].AsString; +end; + +procedure TInformeCabeceraAlbaranPagoDataTableRules.SetREFERENCIAValue(const aValue: String); +begin + DataTable.Fields[idx_InformeCabeceraAlbaranPagoREFERENCIA].AsString := aValue; +end; + +function TInformeCabeceraAlbaranPagoDataTableRules.GetCODIGOCONTACTOValue: Integer; +begin + result := DataTable.Fields[idx_InformeCabeceraAlbaranPagoCODIGOCONTACTO].AsInteger; +end; + +procedure TInformeCabeceraAlbaranPagoDataTableRules.SetCODIGOCONTACTOValue(const aValue: Integer); +begin + DataTable.Fields[idx_InformeCabeceraAlbaranPagoCODIGOCONTACTO].AsInteger := aValue; +end; + +function TInformeCabeceraAlbaranPagoDataTableRules.GetFECHAALBARANValue: DateTime; +begin + result := DataTable.Fields[idx_InformeCabeceraAlbaranPagoFECHAALBARAN].AsDateTime; +end; + +procedure TInformeCabeceraAlbaranPagoDataTableRules.SetFECHAALBARANValue(const aValue: DateTime); +begin + DataTable.Fields[idx_InformeCabeceraAlbaranPagoFECHAALBARAN].AsDateTime := aValue; +end; + +function TInformeCabeceraAlbaranPagoDataTableRules.GetSITUACIONValue: String; +begin + result := DataTable.Fields[idx_InformeCabeceraAlbaranPagoSITUACION].AsString; +end; + +procedure TInformeCabeceraAlbaranPagoDataTableRules.SetSITUACIONValue(const aValue: String); +begin + DataTable.Fields[idx_InformeCabeceraAlbaranPagoSITUACION].AsString := aValue; +end; + +function TInformeCabeceraAlbaranPagoDataTableRules.GetFECHAPAGOValue: DateTime; +begin + result := DataTable.Fields[idx_InformeCabeceraAlbaranPagoFECHAPAGO].AsDateTime; +end; + +procedure TInformeCabeceraAlbaranPagoDataTableRules.SetFECHAPAGOValue(const aValue: DateTime); +begin + DataTable.Fields[idx_InformeCabeceraAlbaranPagoFECHAPAGO].AsDateTime := aValue; +end; + +function TInformeCabeceraAlbaranPagoDataTableRules.GetBASEIMPONIBLEValue: Float; +begin + result := DataTable.Fields[idx_InformeCabeceraAlbaranPagoBASEIMPONIBLE].AsFloat; +end; + +procedure TInformeCabeceraAlbaranPagoDataTableRules.SetBASEIMPONIBLEValue(const aValue: Float); +begin + DataTable.Fields[idx_InformeCabeceraAlbaranPagoBASEIMPONIBLE].AsFloat := aValue; +end; + +function TInformeCabeceraAlbaranPagoDataTableRules.GetDESCUENTOValue: Float; +begin + result := DataTable.Fields[idx_InformeCabeceraAlbaranPagoDESCUENTO].AsFloat; +end; + +procedure TInformeCabeceraAlbaranPagoDataTableRules.SetDESCUENTOValue(const aValue: Float); +begin + DataTable.Fields[idx_InformeCabeceraAlbaranPagoDESCUENTO].AsFloat := aValue; +end; + +function TInformeCabeceraAlbaranPagoDataTableRules.GetIMPORTEDESCUENTOValue: Float; +begin + result := DataTable.Fields[idx_InformeCabeceraAlbaranPagoIMPORTEDESCUENTO].AsFloat; +end; + +procedure TInformeCabeceraAlbaranPagoDataTableRules.SetIMPORTEDESCUENTOValue(const aValue: Float); +begin + DataTable.Fields[idx_InformeCabeceraAlbaranPagoIMPORTEDESCUENTO].AsFloat := aValue; +end; + +function TInformeCabeceraAlbaranPagoDataTableRules.GetIVAValue: Float; +begin + result := DataTable.Fields[idx_InformeCabeceraAlbaranPagoIVA].AsFloat; +end; + +procedure TInformeCabeceraAlbaranPagoDataTableRules.SetIVAValue(const aValue: Float); +begin + DataTable.Fields[idx_InformeCabeceraAlbaranPagoIVA].AsFloat := aValue; +end; + +function TInformeCabeceraAlbaranPagoDataTableRules.GetIMPORTEIVAValue: Float; +begin + result := DataTable.Fields[idx_InformeCabeceraAlbaranPagoIMPORTEIVA].AsFloat; +end; + +procedure TInformeCabeceraAlbaranPagoDataTableRules.SetIMPORTEIVAValue(const aValue: Float); +begin + DataTable.Fields[idx_InformeCabeceraAlbaranPagoIMPORTEIVA].AsFloat := aValue; +end; + +function TInformeCabeceraAlbaranPagoDataTableRules.GetIMPORTETOTALValue: Float; +begin + result := DataTable.Fields[idx_InformeCabeceraAlbaranPagoIMPORTETOTAL].AsFloat; +end; + +procedure TInformeCabeceraAlbaranPagoDataTableRules.SetIMPORTETOTALValue(const aValue: Float); +begin + DataTable.Fields[idx_InformeCabeceraAlbaranPagoIMPORTETOTAL].AsFloat := aValue; +end; + +function TInformeCabeceraAlbaranPagoDataTableRules.GetOBSERVACIONESValue: IROStrings; +begin + result := NewROStrings(); + result.Text := DataTable.Fields[idx_InformeCabeceraAlbaranPagoOBSERVACIONES].AsString; +end; + +procedure TInformeCabeceraAlbaranPagoDataTableRules.SetOBSERVACIONESValue(const aValue: IROStrings); +begin + DataTable.Fields[idx_InformeCabeceraAlbaranPagoOBSERVACIONES].AsString := aValue.Text; +end; + +function TInformeCabeceraAlbaranPagoDataTableRules.GetFORMAPAGOValue: IROStrings; +begin + result := NewROStrings(); + result.Text := DataTable.Fields[idx_InformeCabeceraAlbaranPagoFORMAPAGO].AsString; +end; + +procedure TInformeCabeceraAlbaranPagoDataTableRules.SetFORMAPAGOValue(const aValue: IROStrings); +begin + DataTable.Fields[idx_InformeCabeceraAlbaranPagoFORMAPAGO].AsString := aValue.Text; +end; + +function TInformeCabeceraAlbaranPagoDataTableRules.GetCODIGOPRESUPUESTOValue: Integer; +begin + result := DataTable.Fields[idx_InformeCabeceraAlbaranPagoCODIGOPRESUPUESTO].AsInteger; +end; + +procedure TInformeCabeceraAlbaranPagoDataTableRules.SetCODIGOPRESUPUESTOValue(const aValue: Integer); +begin + DataTable.Fields[idx_InformeCabeceraAlbaranPagoCODIGOPRESUPUESTO].AsInteger := aValue; +end; + +function TInformeCabeceraAlbaranPagoDataTableRules.GetREFERENCIAPREValue: String; +begin + result := DataTable.Fields[idx_InformeCabeceraAlbaranPagoREFERENCIAPRE].AsString; +end; + +procedure TInformeCabeceraAlbaranPagoDataTableRules.SetREFERENCIAPREValue(const aValue: String); +begin + DataTable.Fields[idx_InformeCabeceraAlbaranPagoREFERENCIAPRE].AsString := aValue; +end; + +function TInformeCabeceraAlbaranPagoDataTableRules.GetNIFCIFValue: String; +begin + result := DataTable.Fields[idx_InformeCabeceraAlbaranPagoNIFCIF].AsString; +end; + +procedure TInformeCabeceraAlbaranPagoDataTableRules.SetNIFCIFValue(const aValue: String); +begin + DataTable.Fields[idx_InformeCabeceraAlbaranPagoNIFCIF].AsString := aValue; +end; + +function TInformeCabeceraAlbaranPagoDataTableRules.GetNOMBREValue: String; +begin + result := DataTable.Fields[idx_InformeCabeceraAlbaranPagoNOMBRE].AsString; +end; + +procedure TInformeCabeceraAlbaranPagoDataTableRules.SetNOMBREValue(const aValue: String); +begin + DataTable.Fields[idx_InformeCabeceraAlbaranPagoNOMBRE].AsString := aValue; +end; + +function TInformeCabeceraAlbaranPagoDataTableRules.GetCALLEValue: String; +begin + result := DataTable.Fields[idx_InformeCabeceraAlbaranPagoCALLE].AsString; +end; + +procedure TInformeCabeceraAlbaranPagoDataTableRules.SetCALLEValue(const aValue: String); +begin + DataTable.Fields[idx_InformeCabeceraAlbaranPagoCALLE].AsString := aValue; +end; + +function TInformeCabeceraAlbaranPagoDataTableRules.GetCODIGOPOSTALValue: String; +begin + result := DataTable.Fields[idx_InformeCabeceraAlbaranPagoCODIGOPOSTAL].AsString; +end; + +procedure TInformeCabeceraAlbaranPagoDataTableRules.SetCODIGOPOSTALValue(const aValue: String); +begin + DataTable.Fields[idx_InformeCabeceraAlbaranPagoCODIGOPOSTAL].AsString := aValue; +end; + +function TInformeCabeceraAlbaranPagoDataTableRules.GetPOBLACIONValue: String; +begin + result := DataTable.Fields[idx_InformeCabeceraAlbaranPagoPOBLACION].AsString; +end; + +procedure TInformeCabeceraAlbaranPagoDataTableRules.SetPOBLACIONValue(const aValue: String); +begin + DataTable.Fields[idx_InformeCabeceraAlbaranPagoPOBLACION].AsString := aValue; +end; + +function TInformeCabeceraAlbaranPagoDataTableRules.GetTELEFONO1Value: String; +begin + result := DataTable.Fields[idx_InformeCabeceraAlbaranPagoTELEFONO1].AsString; +end; + +procedure TInformeCabeceraAlbaranPagoDataTableRules.SetTELEFONO1Value(const aValue: String); +begin + DataTable.Fields[idx_InformeCabeceraAlbaranPagoTELEFONO1].AsString := aValue; +end; + +function TInformeCabeceraAlbaranPagoDataTableRules.GetTELEFONO2Value: String; +begin + result := DataTable.Fields[idx_InformeCabeceraAlbaranPagoTELEFONO2].AsString; +end; + +procedure TInformeCabeceraAlbaranPagoDataTableRules.SetTELEFONO2Value(const aValue: String); +begin + DataTable.Fields[idx_InformeCabeceraAlbaranPagoTELEFONO2].AsString := aValue; +end; + +function TInformeCabeceraAlbaranPagoDataTableRules.GetMOVILValue: String; +begin + result := DataTable.Fields[idx_InformeCabeceraAlbaranPagoMOVIL].AsString; +end; + +procedure TInformeCabeceraAlbaranPagoDataTableRules.SetMOVILValue(const aValue: String); +begin + DataTable.Fields[idx_InformeCabeceraAlbaranPagoMOVIL].AsString := aValue; +end; + + +{ TInformeDetallesAlbaranPagoDataTableRules } +constructor TInformeDetallesAlbaranPagoDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TInformeDetallesAlbaranPagoDataTableRules.Destroy; +begin + inherited; +end; + +function TInformeDetallesAlbaranPagoDataTableRules.GetCODIGOALBARANValue: Integer; +begin + result := DataTable.Fields[idx_InformeDetallesAlbaranPagoCODIGOALBARAN].AsInteger; +end; + +procedure TInformeDetallesAlbaranPagoDataTableRules.SetCODIGOALBARANValue(const aValue: Integer); +begin + DataTable.Fields[idx_InformeDetallesAlbaranPagoCODIGOALBARAN].AsInteger := aValue; +end; + +function TInformeDetallesAlbaranPagoDataTableRules.GetNUMCONCEPTOValue: Integer; +begin + result := DataTable.Fields[idx_InformeDetallesAlbaranPagoNUMCONCEPTO].AsInteger; +end; + +procedure TInformeDetallesAlbaranPagoDataTableRules.SetNUMCONCEPTOValue(const aValue: Integer); +begin + DataTable.Fields[idx_InformeDetallesAlbaranPagoNUMCONCEPTO].AsInteger := aValue; +end; + +function TInformeDetallesAlbaranPagoDataTableRules.GetDESCRIPCIONValue: String; +begin + result := DataTable.Fields[idx_InformeDetallesAlbaranPagoDESCRIPCION].AsString; +end; + +procedure TInformeDetallesAlbaranPagoDataTableRules.SetDESCRIPCIONValue(const aValue: String); +begin + DataTable.Fields[idx_InformeDetallesAlbaranPagoDESCRIPCION].AsString := aValue; +end; + +function TInformeDetallesAlbaranPagoDataTableRules.GetCANTIDADValue: Float; +begin + result := DataTable.Fields[idx_InformeDetallesAlbaranPagoCANTIDAD].AsFloat; +end; + +procedure TInformeDetallesAlbaranPagoDataTableRules.SetCANTIDADValue(const aValue: Float); +begin + DataTable.Fields[idx_InformeDetallesAlbaranPagoCANTIDAD].AsFloat := aValue; +end; + +function TInformeDetallesAlbaranPagoDataTableRules.GetIMPORTEUNIDADValue: Float; +begin + result := DataTable.Fields[idx_InformeDetallesAlbaranPagoIMPORTEUNIDAD].AsFloat; +end; + +procedure TInformeDetallesAlbaranPagoDataTableRules.SetIMPORTEUNIDADValue(const aValue: Float); +begin + DataTable.Fields[idx_InformeDetallesAlbaranPagoIMPORTEUNIDAD].AsFloat := aValue; +end; + +function TInformeDetallesAlbaranPagoDataTableRules.GetIMPORTETOTALValue: Float; +begin + result := DataTable.Fields[idx_InformeDetallesAlbaranPagoIMPORTETOTAL].AsFloat; +end; + +procedure TInformeDetallesAlbaranPagoDataTableRules.SetIMPORTETOTALValue(const aValue: Float); +begin + DataTable.Fields[idx_InformeDetallesAlbaranPagoIMPORTETOTAL].AsFloat := aValue; +end; + +function TInformeDetallesAlbaranPagoDataTableRules.GetTIPOValue: String; +begin + result := DataTable.Fields[idx_InformeDetallesAlbaranPagoTIPO].AsString; +end; + +procedure TInformeDetallesAlbaranPagoDataTableRules.SetTIPOValue(const aValue: String); +begin + DataTable.Fields[idx_InformeDetallesAlbaranPagoTIPO].AsString := aValue; +end; + +function TInformeDetallesAlbaranPagoDataTableRules.GetPOSICIONValue: Integer; +begin + result := DataTable.Fields[idx_InformeDetallesAlbaranPagoPOSICION].AsInteger; +end; + +procedure TInformeDetallesAlbaranPagoDataTableRules.SetPOSICIONValue(const aValue: Integer); +begin + DataTable.Fields[idx_InformeDetallesAlbaranPagoPOSICION].AsInteger := aValue; +end; + + +{ TDarSumaImportesDataTableRules } +constructor TDarSumaImportesDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TDarSumaImportesDataTableRules.Destroy; +begin + inherited; +end; + +function TDarSumaImportesDataTableRules.GetBASEIMPONIBLEValue: Float; +begin + result := DataTable.Fields[idx_DarSumaImportesBASEIMPONIBLE].AsFloat; +end; + +procedure TDarSumaImportesDataTableRules.SetBASEIMPONIBLEValue(const aValue: Float); +begin + DataTable.Fields[idx_DarSumaImportesBASEIMPONIBLE].AsFloat := aValue; +end; + +function TDarSumaImportesDataTableRules.GetIMPORTEIVAValue: Float; +begin + result := DataTable.Fields[idx_DarSumaImportesIMPORTEIVA].AsFloat; +end; + +procedure TDarSumaImportesDataTableRules.SetIMPORTEIVAValue(const aValue: Float); +begin + DataTable.Fields[idx_DarSumaImportesIMPORTEIVA].AsFloat := aValue; +end; + +function TDarSumaImportesDataTableRules.GetIMPORTETOTALValue: Float; +begin + result := DataTable.Fields[idx_DarSumaImportesIMPORTETOTAL].AsFloat; +end; + +procedure TDarSumaImportesDataTableRules.SetIMPORTETOTALValue(const aValue: Float); +begin + DataTable.Fields[idx_DarSumaImportesIMPORTETOTAL].AsFloat := aValue; +end; + + +initialization + RegisterDataTableRules(RID_DarReferenciaAlbaran, TDarReferenciaAlbaranDataTableRules); + RegisterDataTableRules(RID_AlbaranCliente, TAlbaranClienteDataTableRules); + RegisterDataTableRules(RID_AlbaranDePresupuesto, TAlbaranDePresupuestoDataTableRules); + RegisterDataTableRules(RID_DetallesAlbaranCliente, TDetallesAlbaranClienteDataTableRules); + RegisterDataTableRules(RID_AlbaranCliente_RefreshDataset, TAlbaranCliente_RefreshDatasetDataTableRules); + RegisterDataTableRules(RID_InformeCabeceraAlbaranPago, TInformeCabeceraAlbaranPagoDataTableRules); + RegisterDataTableRules(RID_InformeDetallesAlbaranPago, TInformeDetallesAlbaranPagoDataTableRules); + RegisterDataTableRules(RID_DarSumaImportes, TDarSumaImportesDataTableRules); + +end. diff --git a/Modulos/Albaranes de cliente/Reglas/schAlbaranesClienteServer_Intf.pas b/Modulos/Albaranes de cliente/Reglas/schAlbaranesClienteServer_Intf.pas new file mode 100644 index 0000000..adf9ed5 --- /dev/null +++ b/Modulos/Albaranes de cliente/Reglas/schAlbaranesClienteServer_Intf.pas @@ -0,0 +1,1967 @@ +unit schAlbaranesClienteServer_Intf; + +interface + +uses + Classes, DB, SysUtils, uROClasses, uDADataTable, uDABusinessProcessor, schAlbaranesClienteClient_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_DarReferenciaAlbaranDelta = '{D9EAC03F-B4A2-41B9-A2B2-7CF11F780D28}'; + RID_AlbaranClienteDelta = '{8E3B55C2-3828-41E4-8AEA-F0D487EDD873}'; + RID_AlbaranDePresupuestoDelta = '{1D24D93A-7A20-4DC4-ACE3-F9E644618634}'; + RID_DetallesAlbaranClienteDelta = '{91443B47-343B-46EC-85F0-19C431B1F56B}'; + RID_AlbaranCliente_RefreshDatasetDelta = '{7857A2CE-B06F-491A-BB36-844139B9125E}'; + RID_InformeCabeceraAlbaranPagoDelta = '{B87026ED-31B8-4320-8908-DE7DED600AC9}'; + RID_InformeDetallesAlbaranPagoDelta = '{0698DC8F-4317-451B-8770-F18535997036}'; + RID_DarSumaImportesDelta = '{DFDB0CB4-85D3-449B-B350-EC3758E21B72}'; + +type + { IDarReferenciaAlbaranDelta } + IDarReferenciaAlbaranDelta = interface(IDarReferenciaAlbaran) + ['{D9EAC03F-B4A2-41B9-A2B2-7CF11F780D28}'] + { Property getters and setters } + function GetOldREFERENCIAValue : String; + + { Properties } + property OldREFERENCIA : String read GetOldREFERENCIAValue; + end; + + { TDarReferenciaAlbaranBusinessProcessorRules } + TDarReferenciaAlbaranBusinessProcessorRules = class(TDABusinessProcessorRules, IDarReferenciaAlbaran, IDarReferenciaAlbaranDelta) + private + protected + { Property getters and setters } + function GetREFERENCIAValue: String; virtual; + function GetOldREFERENCIAValue: String; virtual; + procedure SetREFERENCIAValue(const aValue: String); virtual; + + { Properties } + property REFERENCIA : String read GetREFERENCIAValue write SetREFERENCIAValue; + property OldREFERENCIA : String read GetOldREFERENCIAValue; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + + { IAlbaranClienteDelta } + IAlbaranClienteDelta = interface(IAlbaranCliente) + ['{8E3B55C2-3828-41E4-8AEA-F0D487EDD873}'] + { Property getters and setters } + function GetOldCODIGOEMPRESAValue : Integer; + function GetOldCODIGOValue : Integer; + function GetOldFECHAALTAValue : DateTime; + function GetOldUSUARIOValue : String; + function GetOldREFERENCIAValue : String; + function GetOldCODIGOCONTACTOValue : Integer; + function GetOldNOMBREValue : String; + function GetOldFECHAALBARANValue : DateTime; + function GetOldSITUACIONValue : String; + function GetOldFECHAPAGOValue : DateTime; + function GetOldCODIGOPRESUPUESTOValue : Integer; + function GetOldBASEIMPONIBLEValue : Currency; + function GetOldDESCUENTOValue : Float; + function GetOldIMPORTEDESCUENTOValue : Currency; + function GetOldIVAValue : Float; + function GetOldIMPORTEIVAValue : Currency; + function GetOldIMPORTETOTALValue : Currency; + function GetOldOBSERVACIONESValue : IROStrings; + function GetOldFORMAPAGOValue : IROStrings; + function GetOldREFERENCIAPRESUPUESTOValue : String; + + { Properties } + property OldCODIGOEMPRESA : Integer read GetOldCODIGOEMPRESAValue; + property OldCODIGO : Integer read GetOldCODIGOValue; + property OldFECHAALTA : DateTime read GetOldFECHAALTAValue; + property OldUSUARIO : String read GetOldUSUARIOValue; + property OldREFERENCIA : String read GetOldREFERENCIAValue; + property OldCODIGOCONTACTO : Integer read GetOldCODIGOCONTACTOValue; + property OldNOMBRE : String read GetOldNOMBREValue; + property OldFECHAALBARAN : DateTime read GetOldFECHAALBARANValue; + property OldSITUACION : String read GetOldSITUACIONValue; + property OldFECHAPAGO : DateTime read GetOldFECHAPAGOValue; + property OldCODIGOPRESUPUESTO : Integer read GetOldCODIGOPRESUPUESTOValue; + property OldBASEIMPONIBLE : Currency read GetOldBASEIMPONIBLEValue; + property OldDESCUENTO : Float read GetOldDESCUENTOValue; + property OldIMPORTEDESCUENTO : Currency read GetOldIMPORTEDESCUENTOValue; + property OldIVA : Float read GetOldIVAValue; + property OldIMPORTEIVA : Currency read GetOldIMPORTEIVAValue; + property OldIMPORTETOTAL : Currency read GetOldIMPORTETOTALValue; + property OldOBSERVACIONES : IROStrings read GetOldOBSERVACIONESValue; + property OldFORMAPAGO : IROStrings read GetOldFORMAPAGOValue; + property OldREFERENCIAPRESUPUESTO : String read GetOldREFERENCIAPRESUPUESTOValue; + end; + + { TAlbaranClienteBusinessProcessorRules } + TAlbaranClienteBusinessProcessorRules = class(TDABusinessProcessorRules, IAlbaranCliente, IAlbaranClienteDelta) + private + protected + { Property getters and setters } + function GetCODIGOEMPRESAValue: Integer; virtual; + function GetOldCODIGOEMPRESAValue: Integer; virtual; + procedure SetCODIGOEMPRESAValue(const aValue: Integer); virtual; + function GetCODIGOValue: Integer; virtual; + function GetOldCODIGOValue: Integer; virtual; + procedure SetCODIGOValue(const aValue: Integer); virtual; + function GetFECHAALTAValue: DateTime; virtual; + function GetOldFECHAALTAValue: DateTime; virtual; + procedure SetFECHAALTAValue(const aValue: DateTime); virtual; + function GetUSUARIOValue: String; virtual; + function GetOldUSUARIOValue: String; virtual; + procedure SetUSUARIOValue(const aValue: String); virtual; + function GetREFERENCIAValue: String; virtual; + function GetOldREFERENCIAValue: String; virtual; + procedure SetREFERENCIAValue(const aValue: String); virtual; + function GetCODIGOCONTACTOValue: Integer; virtual; + function GetOldCODIGOCONTACTOValue: Integer; virtual; + procedure SetCODIGOCONTACTOValue(const aValue: Integer); virtual; + function GetNOMBREValue: String; virtual; + function GetOldNOMBREValue: String; virtual; + procedure SetNOMBREValue(const aValue: String); virtual; + function GetFECHAALBARANValue: DateTime; virtual; + function GetOldFECHAALBARANValue: DateTime; virtual; + procedure SetFECHAALBARANValue(const aValue: DateTime); virtual; + function GetSITUACIONValue: String; virtual; + function GetOldSITUACIONValue: String; virtual; + procedure SetSITUACIONValue(const aValue: String); virtual; + function GetFECHAPAGOValue: DateTime; virtual; + function GetOldFECHAPAGOValue: DateTime; virtual; + procedure SetFECHAPAGOValue(const aValue: DateTime); virtual; + function GetCODIGOPRESUPUESTOValue: Integer; virtual; + function GetOldCODIGOPRESUPUESTOValue: Integer; virtual; + procedure SetCODIGOPRESUPUESTOValue(const aValue: Integer); virtual; + function GetBASEIMPONIBLEValue: Currency; virtual; + function GetOldBASEIMPONIBLEValue: Currency; virtual; + procedure SetBASEIMPONIBLEValue(const aValue: Currency); virtual; + function GetDESCUENTOValue: Float; virtual; + function GetOldDESCUENTOValue: Float; virtual; + procedure SetDESCUENTOValue(const aValue: Float); virtual; + function GetIMPORTEDESCUENTOValue: Currency; virtual; + function GetOldIMPORTEDESCUENTOValue: Currency; virtual; + procedure SetIMPORTEDESCUENTOValue(const aValue: Currency); virtual; + function GetIVAValue: Float; virtual; + function GetOldIVAValue: Float; virtual; + procedure SetIVAValue(const aValue: Float); virtual; + function GetIMPORTEIVAValue: Currency; virtual; + function GetOldIMPORTEIVAValue: Currency; virtual; + procedure SetIMPORTEIVAValue(const aValue: Currency); virtual; + function GetIMPORTETOTALValue: Currency; virtual; + function GetOldIMPORTETOTALValue: Currency; virtual; + procedure SetIMPORTETOTALValue(const aValue: Currency); virtual; + function GetOBSERVACIONESValue: IROStrings; virtual; + function GetOldOBSERVACIONESValue: IROStrings; virtual; + procedure SetOBSERVACIONESValue(const aValue: IROStrings); virtual; + function GetFORMAPAGOValue: IROStrings; virtual; + function GetOldFORMAPAGOValue: IROStrings; virtual; + procedure SetFORMAPAGOValue(const aValue: IROStrings); virtual; + function GetREFERENCIAPRESUPUESTOValue: String; virtual; + function GetOldREFERENCIAPRESUPUESTOValue: String; virtual; + procedure SetREFERENCIAPRESUPUESTOValue(const aValue: String); virtual; + + { Properties } + property CODIGOEMPRESA : Integer read GetCODIGOEMPRESAValue write SetCODIGOEMPRESAValue; + property OldCODIGOEMPRESA : Integer read GetOldCODIGOEMPRESAValue; + property CODIGO : Integer read GetCODIGOValue write SetCODIGOValue; + property OldCODIGO : Integer read GetOldCODIGOValue; + property FECHAALTA : DateTime read GetFECHAALTAValue write SetFECHAALTAValue; + property OldFECHAALTA : DateTime read GetOldFECHAALTAValue; + property USUARIO : String read GetUSUARIOValue write SetUSUARIOValue; + property OldUSUARIO : String read GetOldUSUARIOValue; + property REFERENCIA : String read GetREFERENCIAValue write SetREFERENCIAValue; + property OldREFERENCIA : String read GetOldREFERENCIAValue; + property CODIGOCONTACTO : Integer read GetCODIGOCONTACTOValue write SetCODIGOCONTACTOValue; + property OldCODIGOCONTACTO : Integer read GetOldCODIGOCONTACTOValue; + property NOMBRE : String read GetNOMBREValue write SetNOMBREValue; + property OldNOMBRE : String read GetOldNOMBREValue; + property FECHAALBARAN : DateTime read GetFECHAALBARANValue write SetFECHAALBARANValue; + property OldFECHAALBARAN : DateTime read GetOldFECHAALBARANValue; + property SITUACION : String read GetSITUACIONValue write SetSITUACIONValue; + property OldSITUACION : String read GetOldSITUACIONValue; + property FECHAPAGO : DateTime read GetFECHAPAGOValue write SetFECHAPAGOValue; + property OldFECHAPAGO : DateTime read GetOldFECHAPAGOValue; + property CODIGOPRESUPUESTO : Integer read GetCODIGOPRESUPUESTOValue write SetCODIGOPRESUPUESTOValue; + property OldCODIGOPRESUPUESTO : Integer read GetOldCODIGOPRESUPUESTOValue; + property BASEIMPONIBLE : Currency read GetBASEIMPONIBLEValue write SetBASEIMPONIBLEValue; + property OldBASEIMPONIBLE : Currency read GetOldBASEIMPONIBLEValue; + property DESCUENTO : Float read GetDESCUENTOValue write SetDESCUENTOValue; + property OldDESCUENTO : Float read GetOldDESCUENTOValue; + property IMPORTEDESCUENTO : Currency read GetIMPORTEDESCUENTOValue write SetIMPORTEDESCUENTOValue; + property OldIMPORTEDESCUENTO : Currency read GetOldIMPORTEDESCUENTOValue; + property IVA : Float read GetIVAValue write SetIVAValue; + property OldIVA : Float read GetOldIVAValue; + property IMPORTEIVA : Currency read GetIMPORTEIVAValue write SetIMPORTEIVAValue; + property OldIMPORTEIVA : Currency read GetOldIMPORTEIVAValue; + property IMPORTETOTAL : Currency read GetIMPORTETOTALValue write SetIMPORTETOTALValue; + property OldIMPORTETOTAL : Currency read GetOldIMPORTETOTALValue; + property OBSERVACIONES : IROStrings read GetOBSERVACIONESValue write SetOBSERVACIONESValue; + property OldOBSERVACIONES : IROStrings read GetOldOBSERVACIONESValue; + property FORMAPAGO : IROStrings read GetFORMAPAGOValue write SetFORMAPAGOValue; + property OldFORMAPAGO : IROStrings read GetOldFORMAPAGOValue; + property REFERENCIAPRESUPUESTO : String read GetREFERENCIAPRESUPUESTOValue write SetREFERENCIAPRESUPUESTOValue; + property OldREFERENCIAPRESUPUESTO : String read GetOldREFERENCIAPRESUPUESTOValue; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + + { IAlbaranDePresupuestoDelta } + IAlbaranDePresupuestoDelta = interface(IAlbaranDePresupuesto) + ['{1D24D93A-7A20-4DC4-ACE3-F9E644618634}'] + { Property getters and setters } + function GetOldCODIGOValue : Integer; + + { Properties } + property OldCODIGO : Integer read GetOldCODIGOValue; + end; + + { TAlbaranDePresupuestoBusinessProcessorRules } + TAlbaranDePresupuestoBusinessProcessorRules = class(TDABusinessProcessorRules, IAlbaranDePresupuesto, IAlbaranDePresupuestoDelta) + private + protected + { Property getters and setters } + function GetCODIGOValue: Integer; virtual; + function GetOldCODIGOValue: Integer; virtual; + procedure SetCODIGOValue(const aValue: Integer); virtual; + + { Properties } + property CODIGO : Integer read GetCODIGOValue write SetCODIGOValue; + property OldCODIGO : Integer read GetOldCODIGOValue; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + + { IDetallesAlbaranClienteDelta } + IDetallesAlbaranClienteDelta = interface(IDetallesAlbaranCliente) + ['{91443B47-343B-46EC-85F0-19C431B1F56B}'] + { Property getters and setters } + function GetOldCODIGOALBARANValue : Integer; + function GetOldNUMCONCEPTOValue : Integer; + function GetOldPOSICIONValue : Integer; + function GetOldTIPOValue : String; + function GetOldDESCRIPCIONValue : String; + function GetOldCANTIDADValue : Integer; + function GetOldIMPORTEUNIDADValue : Currency; + function GetOldIMPORTETOTALValue : Currency; + function GetOldVISIBLEValue : String; + function GetOldPUNTOSValue : Integer; + function GetOldIMPORTEPUNTOSValue : Currency; + + { Properties } + property OldCODIGOALBARAN : Integer read GetOldCODIGOALBARANValue; + property OldNUMCONCEPTO : Integer read GetOldNUMCONCEPTOValue; + property OldPOSICION : Integer read GetOldPOSICIONValue; + property OldTIPO : String read GetOldTIPOValue; + property OldDESCRIPCION : String read GetOldDESCRIPCIONValue; + property OldCANTIDAD : Integer read GetOldCANTIDADValue; + property OldIMPORTEUNIDAD : Currency read GetOldIMPORTEUNIDADValue; + property OldIMPORTETOTAL : Currency read GetOldIMPORTETOTALValue; + property OldVISIBLE : String read GetOldVISIBLEValue; + property OldPUNTOS : Integer read GetOldPUNTOSValue; + property OldIMPORTEPUNTOS : Currency read GetOldIMPORTEPUNTOSValue; + end; + + { TDetallesAlbaranClienteBusinessProcessorRules } + TDetallesAlbaranClienteBusinessProcessorRules = class(TDABusinessProcessorRules, IDetallesAlbaranCliente, IDetallesAlbaranClienteDelta) + private + protected + { Property getters and setters } + function GetCODIGOALBARANValue: Integer; virtual; + function GetOldCODIGOALBARANValue: Integer; virtual; + procedure SetCODIGOALBARANValue(const aValue: Integer); virtual; + function GetNUMCONCEPTOValue: Integer; virtual; + function GetOldNUMCONCEPTOValue: Integer; virtual; + procedure SetNUMCONCEPTOValue(const aValue: Integer); virtual; + function GetPOSICIONValue: Integer; virtual; + function GetOldPOSICIONValue: Integer; virtual; + procedure SetPOSICIONValue(const aValue: Integer); virtual; + function GetTIPOValue: String; virtual; + function GetOldTIPOValue: String; virtual; + procedure SetTIPOValue(const aValue: String); virtual; + function GetDESCRIPCIONValue: String; virtual; + function GetOldDESCRIPCIONValue: String; virtual; + procedure SetDESCRIPCIONValue(const aValue: String); virtual; + function GetCANTIDADValue: Integer; virtual; + function GetOldCANTIDADValue: Integer; virtual; + procedure SetCANTIDADValue(const aValue: Integer); virtual; + function GetIMPORTEUNIDADValue: Currency; virtual; + function GetOldIMPORTEUNIDADValue: Currency; virtual; + procedure SetIMPORTEUNIDADValue(const aValue: Currency); virtual; + function GetIMPORTETOTALValue: Currency; virtual; + function GetOldIMPORTETOTALValue: Currency; virtual; + procedure SetIMPORTETOTALValue(const aValue: Currency); virtual; + function GetVISIBLEValue: String; virtual; + function GetOldVISIBLEValue: String; virtual; + procedure SetVISIBLEValue(const aValue: String); virtual; + function GetPUNTOSValue: Integer; virtual; + function GetOldPUNTOSValue: Integer; virtual; + procedure SetPUNTOSValue(const aValue: Integer); virtual; + function GetIMPORTEPUNTOSValue: Currency; virtual; + function GetOldIMPORTEPUNTOSValue: Currency; virtual; + procedure SetIMPORTEPUNTOSValue(const aValue: Currency); virtual; + + { Properties } + property CODIGOALBARAN : Integer read GetCODIGOALBARANValue write SetCODIGOALBARANValue; + property OldCODIGOALBARAN : Integer read GetOldCODIGOALBARANValue; + property NUMCONCEPTO : Integer read GetNUMCONCEPTOValue write SetNUMCONCEPTOValue; + property OldNUMCONCEPTO : Integer read GetOldNUMCONCEPTOValue; + property POSICION : Integer read GetPOSICIONValue write SetPOSICIONValue; + property OldPOSICION : Integer read GetOldPOSICIONValue; + property TIPO : String read GetTIPOValue write SetTIPOValue; + property OldTIPO : String read GetOldTIPOValue; + property DESCRIPCION : String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + property OldDESCRIPCION : String read GetOldDESCRIPCIONValue; + property CANTIDAD : Integer read GetCANTIDADValue write SetCANTIDADValue; + property OldCANTIDAD : Integer read GetOldCANTIDADValue; + property IMPORTEUNIDAD : Currency read GetIMPORTEUNIDADValue write SetIMPORTEUNIDADValue; + property OldIMPORTEUNIDAD : Currency read GetOldIMPORTEUNIDADValue; + property IMPORTETOTAL : Currency read GetIMPORTETOTALValue write SetIMPORTETOTALValue; + property OldIMPORTETOTAL : Currency read GetOldIMPORTETOTALValue; + property VISIBLE : String read GetVISIBLEValue write SetVISIBLEValue; + property OldVISIBLE : String read GetOldVISIBLEValue; + property PUNTOS : Integer read GetPUNTOSValue write SetPUNTOSValue; + property OldPUNTOS : Integer read GetOldPUNTOSValue; + property IMPORTEPUNTOS : Currency read GetIMPORTEPUNTOSValue write SetIMPORTEPUNTOSValue; + property OldIMPORTEPUNTOS : Currency read GetOldIMPORTEPUNTOSValue; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + + { IAlbaranCliente_RefreshDatasetDelta } + IAlbaranCliente_RefreshDatasetDelta = interface(IAlbaranCliente_RefreshDataset) + ['{7857A2CE-B06F-491A-BB36-844139B9125E}'] + { Property getters and setters } + function GetOldCODIGOValue : Integer; + function GetOldNOMBREValue : String; + function GetOldSITUACIONValue : String; + function GetOldREFERENCIAPRESUPUESTOValue : String; + + { Properties } + property OldCODIGO : Integer read GetOldCODIGOValue; + property OldNOMBRE : String read GetOldNOMBREValue; + property OldSITUACION : String read GetOldSITUACIONValue; + property OldREFERENCIAPRESUPUESTO : String read GetOldREFERENCIAPRESUPUESTOValue; + end; + + { TAlbaranCliente_RefreshDatasetBusinessProcessorRules } + TAlbaranCliente_RefreshDatasetBusinessProcessorRules = class(TDABusinessProcessorRules, IAlbaranCliente_RefreshDataset, IAlbaranCliente_RefreshDatasetDelta) + private + protected + { Property getters and setters } + function GetCODIGOValue: Integer; virtual; + function GetOldCODIGOValue: Integer; virtual; + procedure SetCODIGOValue(const aValue: Integer); virtual; + function GetNOMBREValue: String; virtual; + function GetOldNOMBREValue: String; virtual; + procedure SetNOMBREValue(const aValue: String); virtual; + function GetSITUACIONValue: String; virtual; + function GetOldSITUACIONValue: String; virtual; + procedure SetSITUACIONValue(const aValue: String); virtual; + function GetREFERENCIAPRESUPUESTOValue: String; virtual; + function GetOldREFERENCIAPRESUPUESTOValue: String; virtual; + procedure SetREFERENCIAPRESUPUESTOValue(const aValue: String); virtual; + + { Properties } + property CODIGO : Integer read GetCODIGOValue write SetCODIGOValue; + property OldCODIGO : Integer read GetOldCODIGOValue; + property NOMBRE : String read GetNOMBREValue write SetNOMBREValue; + property OldNOMBRE : String read GetOldNOMBREValue; + property SITUACION : String read GetSITUACIONValue write SetSITUACIONValue; + property OldSITUACION : String read GetOldSITUACIONValue; + property REFERENCIAPRESUPUESTO : String read GetREFERENCIAPRESUPUESTOValue write SetREFERENCIAPRESUPUESTOValue; + property OldREFERENCIAPRESUPUESTO : String read GetOldREFERENCIAPRESUPUESTOValue; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + + { IInformeCabeceraAlbaranPagoDelta } + IInformeCabeceraAlbaranPagoDelta = interface(IInformeCabeceraAlbaranPago) + ['{B87026ED-31B8-4320-8908-DE7DED600AC9}'] + { Property getters and setters } + function GetOldCODIGOEMPRESAValue : Integer; + function GetOldCODIGOValue : Integer; + function GetOldFECHAALTAValue : DateTime; + function GetOldUSUARIOValue : String; + function GetOldREFERENCIAValue : String; + function GetOldCODIGOCONTACTOValue : Integer; + function GetOldFECHAALBARANValue : DateTime; + function GetOldSITUACIONValue : String; + function GetOldFECHAPAGOValue : DateTime; + function GetOldBASEIMPONIBLEValue : Float; + function GetOldDESCUENTOValue : Float; + function GetOldIMPORTEDESCUENTOValue : Float; + function GetOldIVAValue : Float; + function GetOldIMPORTEIVAValue : Float; + function GetOldIMPORTETOTALValue : Float; + function GetOldOBSERVACIONESValue : IROStrings; + function GetOldFORMAPAGOValue : IROStrings; + function GetOldCODIGOPRESUPUESTOValue : Integer; + function GetOldREFERENCIAPREValue : String; + function GetOldNIFCIFValue : String; + function GetOldNOMBREValue : String; + function GetOldCALLEValue : String; + function GetOldCODIGOPOSTALValue : String; + function GetOldPOBLACIONValue : String; + function GetOldTELEFONO1Value : String; + function GetOldTELEFONO2Value : String; + function GetOldMOVILValue : String; + + { Properties } + property OldCODIGOEMPRESA : Integer read GetOldCODIGOEMPRESAValue; + property OldCODIGO : Integer read GetOldCODIGOValue; + property OldFECHAALTA : DateTime read GetOldFECHAALTAValue; + property OldUSUARIO : String read GetOldUSUARIOValue; + property OldREFERENCIA : String read GetOldREFERENCIAValue; + property OldCODIGOCONTACTO : Integer read GetOldCODIGOCONTACTOValue; + property OldFECHAALBARAN : DateTime read GetOldFECHAALBARANValue; + property OldSITUACION : String read GetOldSITUACIONValue; + property OldFECHAPAGO : DateTime read GetOldFECHAPAGOValue; + property OldBASEIMPONIBLE : Float read GetOldBASEIMPONIBLEValue; + property OldDESCUENTO : Float read GetOldDESCUENTOValue; + property OldIMPORTEDESCUENTO : Float read GetOldIMPORTEDESCUENTOValue; + property OldIVA : Float read GetOldIVAValue; + property OldIMPORTEIVA : Float read GetOldIMPORTEIVAValue; + property OldIMPORTETOTAL : Float read GetOldIMPORTETOTALValue; + property OldOBSERVACIONES : IROStrings read GetOldOBSERVACIONESValue; + property OldFORMAPAGO : IROStrings read GetOldFORMAPAGOValue; + property OldCODIGOPRESUPUESTO : Integer read GetOldCODIGOPRESUPUESTOValue; + property OldREFERENCIAPRE : String read GetOldREFERENCIAPREValue; + property OldNIFCIF : String read GetOldNIFCIFValue; + property OldNOMBRE : String read GetOldNOMBREValue; + property OldCALLE : String read GetOldCALLEValue; + property OldCODIGOPOSTAL : String read GetOldCODIGOPOSTALValue; + property OldPOBLACION : String read GetOldPOBLACIONValue; + property OldTELEFONO1 : String read GetOldTELEFONO1Value; + property OldTELEFONO2 : String read GetOldTELEFONO2Value; + property OldMOVIL : String read GetOldMOVILValue; + end; + + { TInformeCabeceraAlbaranPagoBusinessProcessorRules } + TInformeCabeceraAlbaranPagoBusinessProcessorRules = class(TDABusinessProcessorRules, IInformeCabeceraAlbaranPago, IInformeCabeceraAlbaranPagoDelta) + private + protected + { Property getters and setters } + function GetCODIGOEMPRESAValue: Integer; virtual; + function GetOldCODIGOEMPRESAValue: Integer; virtual; + procedure SetCODIGOEMPRESAValue(const aValue: Integer); virtual; + function GetCODIGOValue: Integer; virtual; + function GetOldCODIGOValue: Integer; virtual; + procedure SetCODIGOValue(const aValue: Integer); virtual; + function GetFECHAALTAValue: DateTime; virtual; + function GetOldFECHAALTAValue: DateTime; virtual; + procedure SetFECHAALTAValue(const aValue: DateTime); virtual; + function GetUSUARIOValue: String; virtual; + function GetOldUSUARIOValue: String; virtual; + procedure SetUSUARIOValue(const aValue: String); virtual; + function GetREFERENCIAValue: String; virtual; + function GetOldREFERENCIAValue: String; virtual; + procedure SetREFERENCIAValue(const aValue: String); virtual; + function GetCODIGOCONTACTOValue: Integer; virtual; + function GetOldCODIGOCONTACTOValue: Integer; virtual; + procedure SetCODIGOCONTACTOValue(const aValue: Integer); virtual; + function GetFECHAALBARANValue: DateTime; virtual; + function GetOldFECHAALBARANValue: DateTime; virtual; + procedure SetFECHAALBARANValue(const aValue: DateTime); virtual; + function GetSITUACIONValue: String; virtual; + function GetOldSITUACIONValue: String; virtual; + procedure SetSITUACIONValue(const aValue: String); virtual; + function GetFECHAPAGOValue: DateTime; virtual; + function GetOldFECHAPAGOValue: DateTime; virtual; + procedure SetFECHAPAGOValue(const aValue: DateTime); virtual; + function GetBASEIMPONIBLEValue: Float; virtual; + function GetOldBASEIMPONIBLEValue: Float; virtual; + procedure SetBASEIMPONIBLEValue(const aValue: Float); virtual; + function GetDESCUENTOValue: Float; virtual; + function GetOldDESCUENTOValue: Float; virtual; + procedure SetDESCUENTOValue(const aValue: Float); virtual; + function GetIMPORTEDESCUENTOValue: Float; virtual; + function GetOldIMPORTEDESCUENTOValue: Float; virtual; + procedure SetIMPORTEDESCUENTOValue(const aValue: Float); virtual; + function GetIVAValue: Float; virtual; + function GetOldIVAValue: Float; virtual; + procedure SetIVAValue(const aValue: Float); virtual; + function GetIMPORTEIVAValue: Float; virtual; + function GetOldIMPORTEIVAValue: Float; virtual; + procedure SetIMPORTEIVAValue(const aValue: Float); virtual; + function GetIMPORTETOTALValue: Float; virtual; + function GetOldIMPORTETOTALValue: Float; virtual; + procedure SetIMPORTETOTALValue(const aValue: Float); virtual; + function GetOBSERVACIONESValue: IROStrings; virtual; + function GetOldOBSERVACIONESValue: IROStrings; virtual; + procedure SetOBSERVACIONESValue(const aValue: IROStrings); virtual; + function GetFORMAPAGOValue: IROStrings; virtual; + function GetOldFORMAPAGOValue: IROStrings; virtual; + procedure SetFORMAPAGOValue(const aValue: IROStrings); virtual; + function GetCODIGOPRESUPUESTOValue: Integer; virtual; + function GetOldCODIGOPRESUPUESTOValue: Integer; virtual; + procedure SetCODIGOPRESUPUESTOValue(const aValue: Integer); virtual; + function GetREFERENCIAPREValue: String; virtual; + function GetOldREFERENCIAPREValue: String; virtual; + procedure SetREFERENCIAPREValue(const aValue: String); virtual; + function GetNIFCIFValue: String; virtual; + function GetOldNIFCIFValue: String; virtual; + procedure SetNIFCIFValue(const aValue: String); virtual; + function GetNOMBREValue: String; virtual; + function GetOldNOMBREValue: String; virtual; + procedure SetNOMBREValue(const aValue: String); virtual; + function GetCALLEValue: String; virtual; + function GetOldCALLEValue: String; virtual; + procedure SetCALLEValue(const aValue: String); virtual; + function GetCODIGOPOSTALValue: String; virtual; + function GetOldCODIGOPOSTALValue: String; virtual; + procedure SetCODIGOPOSTALValue(const aValue: String); virtual; + function GetPOBLACIONValue: String; virtual; + function GetOldPOBLACIONValue: String; virtual; + procedure SetPOBLACIONValue(const aValue: String); virtual; + function GetTELEFONO1Value: String; virtual; + function GetOldTELEFONO1Value: String; virtual; + procedure SetTELEFONO1Value(const aValue: String); virtual; + function GetTELEFONO2Value: String; virtual; + function GetOldTELEFONO2Value: String; virtual; + procedure SetTELEFONO2Value(const aValue: String); virtual; + function GetMOVILValue: String; virtual; + function GetOldMOVILValue: String; virtual; + procedure SetMOVILValue(const aValue: String); virtual; + + { Properties } + property CODIGOEMPRESA : Integer read GetCODIGOEMPRESAValue write SetCODIGOEMPRESAValue; + property OldCODIGOEMPRESA : Integer read GetOldCODIGOEMPRESAValue; + property CODIGO : Integer read GetCODIGOValue write SetCODIGOValue; + property OldCODIGO : Integer read GetOldCODIGOValue; + property FECHAALTA : DateTime read GetFECHAALTAValue write SetFECHAALTAValue; + property OldFECHAALTA : DateTime read GetOldFECHAALTAValue; + property USUARIO : String read GetUSUARIOValue write SetUSUARIOValue; + property OldUSUARIO : String read GetOldUSUARIOValue; + property REFERENCIA : String read GetREFERENCIAValue write SetREFERENCIAValue; + property OldREFERENCIA : String read GetOldREFERENCIAValue; + property CODIGOCONTACTO : Integer read GetCODIGOCONTACTOValue write SetCODIGOCONTACTOValue; + property OldCODIGOCONTACTO : Integer read GetOldCODIGOCONTACTOValue; + property FECHAALBARAN : DateTime read GetFECHAALBARANValue write SetFECHAALBARANValue; + property OldFECHAALBARAN : DateTime read GetOldFECHAALBARANValue; + property SITUACION : String read GetSITUACIONValue write SetSITUACIONValue; + property OldSITUACION : String read GetOldSITUACIONValue; + property FECHAPAGO : DateTime read GetFECHAPAGOValue write SetFECHAPAGOValue; + property OldFECHAPAGO : DateTime read GetOldFECHAPAGOValue; + property BASEIMPONIBLE : Float read GetBASEIMPONIBLEValue write SetBASEIMPONIBLEValue; + property OldBASEIMPONIBLE : Float read GetOldBASEIMPONIBLEValue; + property DESCUENTO : Float read GetDESCUENTOValue write SetDESCUENTOValue; + property OldDESCUENTO : Float read GetOldDESCUENTOValue; + property IMPORTEDESCUENTO : Float read GetIMPORTEDESCUENTOValue write SetIMPORTEDESCUENTOValue; + property OldIMPORTEDESCUENTO : Float read GetOldIMPORTEDESCUENTOValue; + property IVA : Float read GetIVAValue write SetIVAValue; + property OldIVA : Float read GetOldIVAValue; + property IMPORTEIVA : Float read GetIMPORTEIVAValue write SetIMPORTEIVAValue; + property OldIMPORTEIVA : Float read GetOldIMPORTEIVAValue; + property IMPORTETOTAL : Float read GetIMPORTETOTALValue write SetIMPORTETOTALValue; + property OldIMPORTETOTAL : Float read GetOldIMPORTETOTALValue; + property OBSERVACIONES : IROStrings read GetOBSERVACIONESValue write SetOBSERVACIONESValue; + property OldOBSERVACIONES : IROStrings read GetOldOBSERVACIONESValue; + property FORMAPAGO : IROStrings read GetFORMAPAGOValue write SetFORMAPAGOValue; + property OldFORMAPAGO : IROStrings read GetOldFORMAPAGOValue; + property CODIGOPRESUPUESTO : Integer read GetCODIGOPRESUPUESTOValue write SetCODIGOPRESUPUESTOValue; + property OldCODIGOPRESUPUESTO : Integer read GetOldCODIGOPRESUPUESTOValue; + property REFERENCIAPRE : String read GetREFERENCIAPREValue write SetREFERENCIAPREValue; + property OldREFERENCIAPRE : String read GetOldREFERENCIAPREValue; + property NIFCIF : String read GetNIFCIFValue write SetNIFCIFValue; + property OldNIFCIF : String read GetOldNIFCIFValue; + property NOMBRE : String read GetNOMBREValue write SetNOMBREValue; + property OldNOMBRE : String read GetOldNOMBREValue; + property CALLE : String read GetCALLEValue write SetCALLEValue; + property OldCALLE : String read GetOldCALLEValue; + property CODIGOPOSTAL : String read GetCODIGOPOSTALValue write SetCODIGOPOSTALValue; + property OldCODIGOPOSTAL : String read GetOldCODIGOPOSTALValue; + property POBLACION : String read GetPOBLACIONValue write SetPOBLACIONValue; + property OldPOBLACION : String read GetOldPOBLACIONValue; + property TELEFONO1 : String read GetTELEFONO1Value write SetTELEFONO1Value; + property OldTELEFONO1 : String read GetOldTELEFONO1Value; + property TELEFONO2 : String read GetTELEFONO2Value write SetTELEFONO2Value; + property OldTELEFONO2 : String read GetOldTELEFONO2Value; + property MOVIL : String read GetMOVILValue write SetMOVILValue; + property OldMOVIL : String read GetOldMOVILValue; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + + { IInformeDetallesAlbaranPagoDelta } + IInformeDetallesAlbaranPagoDelta = interface(IInformeDetallesAlbaranPago) + ['{0698DC8F-4317-451B-8770-F18535997036}'] + { Property getters and setters } + function GetOldCODIGOALBARANValue : Integer; + function GetOldNUMCONCEPTOValue : Integer; + function GetOldDESCRIPCIONValue : String; + function GetOldCANTIDADValue : Float; + function GetOldIMPORTEUNIDADValue : Float; + function GetOldIMPORTETOTALValue : Float; + function GetOldTIPOValue : String; + function GetOldPOSICIONValue : Integer; + + { Properties } + property OldCODIGOALBARAN : Integer read GetOldCODIGOALBARANValue; + property OldNUMCONCEPTO : Integer read GetOldNUMCONCEPTOValue; + property OldDESCRIPCION : String read GetOldDESCRIPCIONValue; + property OldCANTIDAD : Float read GetOldCANTIDADValue; + property OldIMPORTEUNIDAD : Float read GetOldIMPORTEUNIDADValue; + property OldIMPORTETOTAL : Float read GetOldIMPORTETOTALValue; + property OldTIPO : String read GetOldTIPOValue; + property OldPOSICION : Integer read GetOldPOSICIONValue; + end; + + { TInformeDetallesAlbaranPagoBusinessProcessorRules } + TInformeDetallesAlbaranPagoBusinessProcessorRules = class(TDABusinessProcessorRules, IInformeDetallesAlbaranPago, IInformeDetallesAlbaranPagoDelta) + private + protected + { Property getters and setters } + function GetCODIGOALBARANValue: Integer; virtual; + function GetOldCODIGOALBARANValue: Integer; virtual; + procedure SetCODIGOALBARANValue(const aValue: Integer); virtual; + function GetNUMCONCEPTOValue: Integer; virtual; + function GetOldNUMCONCEPTOValue: Integer; virtual; + procedure SetNUMCONCEPTOValue(const aValue: Integer); virtual; + function GetDESCRIPCIONValue: String; virtual; + function GetOldDESCRIPCIONValue: String; virtual; + procedure SetDESCRIPCIONValue(const aValue: String); virtual; + function GetCANTIDADValue: Float; virtual; + function GetOldCANTIDADValue: Float; virtual; + procedure SetCANTIDADValue(const aValue: Float); virtual; + function GetIMPORTEUNIDADValue: Float; virtual; + function GetOldIMPORTEUNIDADValue: Float; virtual; + procedure SetIMPORTEUNIDADValue(const aValue: Float); virtual; + function GetIMPORTETOTALValue: Float; virtual; + function GetOldIMPORTETOTALValue: Float; virtual; + procedure SetIMPORTETOTALValue(const aValue: Float); virtual; + function GetTIPOValue: String; virtual; + function GetOldTIPOValue: String; virtual; + procedure SetTIPOValue(const aValue: String); virtual; + function GetPOSICIONValue: Integer; virtual; + function GetOldPOSICIONValue: Integer; virtual; + procedure SetPOSICIONValue(const aValue: Integer); virtual; + + { Properties } + property CODIGOALBARAN : Integer read GetCODIGOALBARANValue write SetCODIGOALBARANValue; + property OldCODIGOALBARAN : Integer read GetOldCODIGOALBARANValue; + property NUMCONCEPTO : Integer read GetNUMCONCEPTOValue write SetNUMCONCEPTOValue; + property OldNUMCONCEPTO : Integer read GetOldNUMCONCEPTOValue; + property DESCRIPCION : String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + property OldDESCRIPCION : String read GetOldDESCRIPCIONValue; + property CANTIDAD : Float read GetCANTIDADValue write SetCANTIDADValue; + property OldCANTIDAD : Float read GetOldCANTIDADValue; + property IMPORTEUNIDAD : Float read GetIMPORTEUNIDADValue write SetIMPORTEUNIDADValue; + property OldIMPORTEUNIDAD : Float read GetOldIMPORTEUNIDADValue; + property IMPORTETOTAL : Float read GetIMPORTETOTALValue write SetIMPORTETOTALValue; + property OldIMPORTETOTAL : Float read GetOldIMPORTETOTALValue; + property TIPO : String read GetTIPOValue write SetTIPOValue; + property OldTIPO : String read GetOldTIPOValue; + property POSICION : Integer read GetPOSICIONValue write SetPOSICIONValue; + property OldPOSICION : Integer read GetOldPOSICIONValue; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + + { IDarSumaImportesDelta } + IDarSumaImportesDelta = interface(IDarSumaImportes) + ['{DFDB0CB4-85D3-449B-B350-EC3758E21B72}'] + { Property getters and setters } + function GetOldBASEIMPONIBLEValue : Float; + function GetOldIMPORTEIVAValue : Float; + function GetOldIMPORTETOTALValue : Float; + + { Properties } + property OldBASEIMPONIBLE : Float read GetOldBASEIMPONIBLEValue; + property OldIMPORTEIVA : Float read GetOldIMPORTEIVAValue; + property OldIMPORTETOTAL : Float read GetOldIMPORTETOTALValue; + end; + + { TDarSumaImportesBusinessProcessorRules } + TDarSumaImportesBusinessProcessorRules = class(TDABusinessProcessorRules, IDarSumaImportes, IDarSumaImportesDelta) + private + protected + { Property getters and setters } + function GetBASEIMPONIBLEValue: Float; virtual; + function GetOldBASEIMPONIBLEValue: Float; virtual; + procedure SetBASEIMPONIBLEValue(const aValue: Float); virtual; + function GetIMPORTEIVAValue: Float; virtual; + function GetOldIMPORTEIVAValue: Float; virtual; + procedure SetIMPORTEIVAValue(const aValue: Float); virtual; + function GetIMPORTETOTALValue: Float; virtual; + function GetOldIMPORTETOTALValue: Float; virtual; + procedure SetIMPORTETOTALValue(const aValue: Float); virtual; + + { Properties } + property BASEIMPONIBLE : Float read GetBASEIMPONIBLEValue write SetBASEIMPONIBLEValue; + property OldBASEIMPONIBLE : Float read GetOldBASEIMPONIBLEValue; + property IMPORTEIVA : Float read GetIMPORTEIVAValue write SetIMPORTEIVAValue; + property OldIMPORTEIVA : Float read GetOldIMPORTEIVAValue; + property IMPORTETOTAL : Float read GetIMPORTETOTALValue write SetIMPORTETOTALValue; + property OldIMPORTETOTAL : Float read GetOldIMPORTETOTALValue; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + +implementation + +uses + Variants, uROBinaryHelpers; + +{ TDarReferenciaAlbaranBusinessProcessorRules } +constructor TDarReferenciaAlbaranBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TDarReferenciaAlbaranBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TDarReferenciaAlbaranBusinessProcessorRules.GetREFERENCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_DarReferenciaAlbaranREFERENCIA]; +end; + +function TDarReferenciaAlbaranBusinessProcessorRules.GetOldREFERENCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_DarReferenciaAlbaranREFERENCIA]; +end; + +procedure TDarReferenciaAlbaranBusinessProcessorRules.SetREFERENCIAValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_DarReferenciaAlbaranREFERENCIA] := aValue; +end; + + +{ TAlbaranClienteBusinessProcessorRules } +constructor TAlbaranClienteBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TAlbaranClienteBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TAlbaranClienteBusinessProcessorRules.GetCODIGOEMPRESAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_AlbaranClienteCODIGOEMPRESA]; +end; + +function TAlbaranClienteBusinessProcessorRules.GetOldCODIGOEMPRESAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_AlbaranClienteCODIGOEMPRESA]; +end; + +procedure TAlbaranClienteBusinessProcessorRules.SetCODIGOEMPRESAValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_AlbaranClienteCODIGOEMPRESA] := aValue; +end; + +function TAlbaranClienteBusinessProcessorRules.GetCODIGOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_AlbaranClienteCODIGO]; +end; + +function TAlbaranClienteBusinessProcessorRules.GetOldCODIGOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_AlbaranClienteCODIGO]; +end; + +procedure TAlbaranClienteBusinessProcessorRules.SetCODIGOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_AlbaranClienteCODIGO] := aValue; +end; + +function TAlbaranClienteBusinessProcessorRules.GetFECHAALTAValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_AlbaranClienteFECHAALTA]; +end; + +function TAlbaranClienteBusinessProcessorRules.GetOldFECHAALTAValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_AlbaranClienteFECHAALTA]; +end; + +procedure TAlbaranClienteBusinessProcessorRules.SetFECHAALTAValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_AlbaranClienteFECHAALTA] := aValue; +end; + +function TAlbaranClienteBusinessProcessorRules.GetUSUARIOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_AlbaranClienteUSUARIO]; +end; + +function TAlbaranClienteBusinessProcessorRules.GetOldUSUARIOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_AlbaranClienteUSUARIO]; +end; + +procedure TAlbaranClienteBusinessProcessorRules.SetUSUARIOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_AlbaranClienteUSUARIO] := aValue; +end; + +function TAlbaranClienteBusinessProcessorRules.GetREFERENCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_AlbaranClienteREFERENCIA]; +end; + +function TAlbaranClienteBusinessProcessorRules.GetOldREFERENCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_AlbaranClienteREFERENCIA]; +end; + +procedure TAlbaranClienteBusinessProcessorRules.SetREFERENCIAValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_AlbaranClienteREFERENCIA] := aValue; +end; + +function TAlbaranClienteBusinessProcessorRules.GetCODIGOCONTACTOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_AlbaranClienteCODIGOCONTACTO]; +end; + +function TAlbaranClienteBusinessProcessorRules.GetOldCODIGOCONTACTOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_AlbaranClienteCODIGOCONTACTO]; +end; + +procedure TAlbaranClienteBusinessProcessorRules.SetCODIGOCONTACTOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_AlbaranClienteCODIGOCONTACTO] := aValue; +end; + +function TAlbaranClienteBusinessProcessorRules.GetNOMBREValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_AlbaranClienteNOMBRE]; +end; + +function TAlbaranClienteBusinessProcessorRules.GetOldNOMBREValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_AlbaranClienteNOMBRE]; +end; + +procedure TAlbaranClienteBusinessProcessorRules.SetNOMBREValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_AlbaranClienteNOMBRE] := aValue; +end; + +function TAlbaranClienteBusinessProcessorRules.GetFECHAALBARANValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_AlbaranClienteFECHAALBARAN]; +end; + +function TAlbaranClienteBusinessProcessorRules.GetOldFECHAALBARANValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_AlbaranClienteFECHAALBARAN]; +end; + +procedure TAlbaranClienteBusinessProcessorRules.SetFECHAALBARANValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_AlbaranClienteFECHAALBARAN] := aValue; +end; + +function TAlbaranClienteBusinessProcessorRules.GetSITUACIONValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_AlbaranClienteSITUACION]; +end; + +function TAlbaranClienteBusinessProcessorRules.GetOldSITUACIONValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_AlbaranClienteSITUACION]; +end; + +procedure TAlbaranClienteBusinessProcessorRules.SetSITUACIONValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_AlbaranClienteSITUACION] := aValue; +end; + +function TAlbaranClienteBusinessProcessorRules.GetFECHAPAGOValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_AlbaranClienteFECHAPAGO]; +end; + +function TAlbaranClienteBusinessProcessorRules.GetOldFECHAPAGOValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_AlbaranClienteFECHAPAGO]; +end; + +procedure TAlbaranClienteBusinessProcessorRules.SetFECHAPAGOValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_AlbaranClienteFECHAPAGO] := aValue; +end; + +function TAlbaranClienteBusinessProcessorRules.GetCODIGOPRESUPUESTOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_AlbaranClienteCODIGOPRESUPUESTO]; +end; + +function TAlbaranClienteBusinessProcessorRules.GetOldCODIGOPRESUPUESTOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_AlbaranClienteCODIGOPRESUPUESTO]; +end; + +procedure TAlbaranClienteBusinessProcessorRules.SetCODIGOPRESUPUESTOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_AlbaranClienteCODIGOPRESUPUESTO] := aValue; +end; + +function TAlbaranClienteBusinessProcessorRules.GetBASEIMPONIBLEValue: Currency; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_AlbaranClienteBASEIMPONIBLE]; +end; + +function TAlbaranClienteBusinessProcessorRules.GetOldBASEIMPONIBLEValue: Currency; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_AlbaranClienteBASEIMPONIBLE]; +end; + +procedure TAlbaranClienteBusinessProcessorRules.SetBASEIMPONIBLEValue(const aValue: Currency); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_AlbaranClienteBASEIMPONIBLE] := aValue; +end; + +function TAlbaranClienteBusinessProcessorRules.GetDESCUENTOValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_AlbaranClienteDESCUENTO]; +end; + +function TAlbaranClienteBusinessProcessorRules.GetOldDESCUENTOValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_AlbaranClienteDESCUENTO]; +end; + +procedure TAlbaranClienteBusinessProcessorRules.SetDESCUENTOValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_AlbaranClienteDESCUENTO] := aValue; +end; + +function TAlbaranClienteBusinessProcessorRules.GetIMPORTEDESCUENTOValue: Currency; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_AlbaranClienteIMPORTEDESCUENTO]; +end; + +function TAlbaranClienteBusinessProcessorRules.GetOldIMPORTEDESCUENTOValue: Currency; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_AlbaranClienteIMPORTEDESCUENTO]; +end; + +procedure TAlbaranClienteBusinessProcessorRules.SetIMPORTEDESCUENTOValue(const aValue: Currency); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_AlbaranClienteIMPORTEDESCUENTO] := aValue; +end; + +function TAlbaranClienteBusinessProcessorRules.GetIVAValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_AlbaranClienteIVA]; +end; + +function TAlbaranClienteBusinessProcessorRules.GetOldIVAValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_AlbaranClienteIVA]; +end; + +procedure TAlbaranClienteBusinessProcessorRules.SetIVAValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_AlbaranClienteIVA] := aValue; +end; + +function TAlbaranClienteBusinessProcessorRules.GetIMPORTEIVAValue: Currency; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_AlbaranClienteIMPORTEIVA]; +end; + +function TAlbaranClienteBusinessProcessorRules.GetOldIMPORTEIVAValue: Currency; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_AlbaranClienteIMPORTEIVA]; +end; + +procedure TAlbaranClienteBusinessProcessorRules.SetIMPORTEIVAValue(const aValue: Currency); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_AlbaranClienteIMPORTEIVA] := aValue; +end; + +function TAlbaranClienteBusinessProcessorRules.GetIMPORTETOTALValue: Currency; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_AlbaranClienteIMPORTETOTAL]; +end; + +function TAlbaranClienteBusinessProcessorRules.GetOldIMPORTETOTALValue: Currency; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_AlbaranClienteIMPORTETOTAL]; +end; + +procedure TAlbaranClienteBusinessProcessorRules.SetIMPORTETOTALValue(const aValue: Currency); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_AlbaranClienteIMPORTETOTAL] := aValue; +end; + +function TAlbaranClienteBusinessProcessorRules.GetOBSERVACIONESValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.NewValueByName[fld_AlbaranClienteOBSERVACIONES]; +end; + +function TAlbaranClienteBusinessProcessorRules.GetOldOBSERVACIONESValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.OldValueByName[fld_AlbaranClienteOBSERVACIONES]; +end; + +procedure TAlbaranClienteBusinessProcessorRules.SetOBSERVACIONESValue(const aValue: IROStrings); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_AlbaranClienteOBSERVACIONES] := aValue.Text; +end; + +function TAlbaranClienteBusinessProcessorRules.GetFORMAPAGOValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.NewValueByName[fld_AlbaranClienteFORMAPAGO]; +end; + +function TAlbaranClienteBusinessProcessorRules.GetOldFORMAPAGOValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.OldValueByName[fld_AlbaranClienteFORMAPAGO]; +end; + +procedure TAlbaranClienteBusinessProcessorRules.SetFORMAPAGOValue(const aValue: IROStrings); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_AlbaranClienteFORMAPAGO] := aValue.Text; +end; + +function TAlbaranClienteBusinessProcessorRules.GetREFERENCIAPRESUPUESTOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_AlbaranClienteREFERENCIAPRESUPUESTO]; +end; + +function TAlbaranClienteBusinessProcessorRules.GetOldREFERENCIAPRESUPUESTOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_AlbaranClienteREFERENCIAPRESUPUESTO]; +end; + +procedure TAlbaranClienteBusinessProcessorRules.SetREFERENCIAPRESUPUESTOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_AlbaranClienteREFERENCIAPRESUPUESTO] := aValue; +end; + + +{ TAlbaranDePresupuestoBusinessProcessorRules } +constructor TAlbaranDePresupuestoBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TAlbaranDePresupuestoBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TAlbaranDePresupuestoBusinessProcessorRules.GetCODIGOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_AlbaranDePresupuestoCODIGO]; +end; + +function TAlbaranDePresupuestoBusinessProcessorRules.GetOldCODIGOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_AlbaranDePresupuestoCODIGO]; +end; + +procedure TAlbaranDePresupuestoBusinessProcessorRules.SetCODIGOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_AlbaranDePresupuestoCODIGO] := aValue; +end; + + +{ TDetallesAlbaranClienteBusinessProcessorRules } +constructor TDetallesAlbaranClienteBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TDetallesAlbaranClienteBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TDetallesAlbaranClienteBusinessProcessorRules.GetCODIGOALBARANValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesAlbaranClienteCODIGOALBARAN]; +end; + +function TDetallesAlbaranClienteBusinessProcessorRules.GetOldCODIGOALBARANValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_DetallesAlbaranClienteCODIGOALBARAN]; +end; + +procedure TDetallesAlbaranClienteBusinessProcessorRules.SetCODIGOALBARANValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesAlbaranClienteCODIGOALBARAN] := aValue; +end; + +function TDetallesAlbaranClienteBusinessProcessorRules.GetNUMCONCEPTOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesAlbaranClienteNUMCONCEPTO]; +end; + +function TDetallesAlbaranClienteBusinessProcessorRules.GetOldNUMCONCEPTOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_DetallesAlbaranClienteNUMCONCEPTO]; +end; + +procedure TDetallesAlbaranClienteBusinessProcessorRules.SetNUMCONCEPTOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesAlbaranClienteNUMCONCEPTO] := aValue; +end; + +function TDetallesAlbaranClienteBusinessProcessorRules.GetPOSICIONValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesAlbaranClientePOSICION]; +end; + +function TDetallesAlbaranClienteBusinessProcessorRules.GetOldPOSICIONValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_DetallesAlbaranClientePOSICION]; +end; + +procedure TDetallesAlbaranClienteBusinessProcessorRules.SetPOSICIONValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesAlbaranClientePOSICION] := aValue; +end; + +function TDetallesAlbaranClienteBusinessProcessorRules.GetTIPOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesAlbaranClienteTIPO]; +end; + +function TDetallesAlbaranClienteBusinessProcessorRules.GetOldTIPOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_DetallesAlbaranClienteTIPO]; +end; + +procedure TDetallesAlbaranClienteBusinessProcessorRules.SetTIPOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesAlbaranClienteTIPO] := aValue; +end; + +function TDetallesAlbaranClienteBusinessProcessorRules.GetDESCRIPCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesAlbaranClienteDESCRIPCION]; +end; + +function TDetallesAlbaranClienteBusinessProcessorRules.GetOldDESCRIPCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_DetallesAlbaranClienteDESCRIPCION]; +end; + +procedure TDetallesAlbaranClienteBusinessProcessorRules.SetDESCRIPCIONValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesAlbaranClienteDESCRIPCION] := aValue; +end; + +function TDetallesAlbaranClienteBusinessProcessorRules.GetCANTIDADValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesAlbaranClienteCANTIDAD]; +end; + +function TDetallesAlbaranClienteBusinessProcessorRules.GetOldCANTIDADValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_DetallesAlbaranClienteCANTIDAD]; +end; + +procedure TDetallesAlbaranClienteBusinessProcessorRules.SetCANTIDADValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesAlbaranClienteCANTIDAD] := aValue; +end; + +function TDetallesAlbaranClienteBusinessProcessorRules.GetIMPORTEUNIDADValue: Currency; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesAlbaranClienteIMPORTEUNIDAD]; +end; + +function TDetallesAlbaranClienteBusinessProcessorRules.GetOldIMPORTEUNIDADValue: Currency; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_DetallesAlbaranClienteIMPORTEUNIDAD]; +end; + +procedure TDetallesAlbaranClienteBusinessProcessorRules.SetIMPORTEUNIDADValue(const aValue: Currency); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesAlbaranClienteIMPORTEUNIDAD] := aValue; +end; + +function TDetallesAlbaranClienteBusinessProcessorRules.GetIMPORTETOTALValue: Currency; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesAlbaranClienteIMPORTETOTAL]; +end; + +function TDetallesAlbaranClienteBusinessProcessorRules.GetOldIMPORTETOTALValue: Currency; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_DetallesAlbaranClienteIMPORTETOTAL]; +end; + +procedure TDetallesAlbaranClienteBusinessProcessorRules.SetIMPORTETOTALValue(const aValue: Currency); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesAlbaranClienteIMPORTETOTAL] := aValue; +end; + +function TDetallesAlbaranClienteBusinessProcessorRules.GetVISIBLEValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesAlbaranClienteVISIBLE]; +end; + +function TDetallesAlbaranClienteBusinessProcessorRules.GetOldVISIBLEValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_DetallesAlbaranClienteVISIBLE]; +end; + +procedure TDetallesAlbaranClienteBusinessProcessorRules.SetVISIBLEValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesAlbaranClienteVISIBLE] := aValue; +end; + +function TDetallesAlbaranClienteBusinessProcessorRules.GetPUNTOSValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesAlbaranClientePUNTOS]; +end; + +function TDetallesAlbaranClienteBusinessProcessorRules.GetOldPUNTOSValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_DetallesAlbaranClientePUNTOS]; +end; + +procedure TDetallesAlbaranClienteBusinessProcessorRules.SetPUNTOSValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesAlbaranClientePUNTOS] := aValue; +end; + +function TDetallesAlbaranClienteBusinessProcessorRules.GetIMPORTEPUNTOSValue: Currency; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesAlbaranClienteIMPORTEPUNTOS]; +end; + +function TDetallesAlbaranClienteBusinessProcessorRules.GetOldIMPORTEPUNTOSValue: Currency; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_DetallesAlbaranClienteIMPORTEPUNTOS]; +end; + +procedure TDetallesAlbaranClienteBusinessProcessorRules.SetIMPORTEPUNTOSValue(const aValue: Currency); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesAlbaranClienteIMPORTEPUNTOS] := aValue; +end; + + +{ TAlbaranCliente_RefreshDatasetBusinessProcessorRules } +constructor TAlbaranCliente_RefreshDatasetBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TAlbaranCliente_RefreshDatasetBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TAlbaranCliente_RefreshDatasetBusinessProcessorRules.GetCODIGOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_AlbaranCliente_RefreshDatasetCODIGO]; +end; + +function TAlbaranCliente_RefreshDatasetBusinessProcessorRules.GetOldCODIGOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_AlbaranCliente_RefreshDatasetCODIGO]; +end; + +procedure TAlbaranCliente_RefreshDatasetBusinessProcessorRules.SetCODIGOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_AlbaranCliente_RefreshDatasetCODIGO] := aValue; +end; + +function TAlbaranCliente_RefreshDatasetBusinessProcessorRules.GetNOMBREValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_AlbaranCliente_RefreshDatasetNOMBRE]; +end; + +function TAlbaranCliente_RefreshDatasetBusinessProcessorRules.GetOldNOMBREValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_AlbaranCliente_RefreshDatasetNOMBRE]; +end; + +procedure TAlbaranCliente_RefreshDatasetBusinessProcessorRules.SetNOMBREValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_AlbaranCliente_RefreshDatasetNOMBRE] := aValue; +end; + +function TAlbaranCliente_RefreshDatasetBusinessProcessorRules.GetSITUACIONValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_AlbaranCliente_RefreshDatasetSITUACION]; +end; + +function TAlbaranCliente_RefreshDatasetBusinessProcessorRules.GetOldSITUACIONValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_AlbaranCliente_RefreshDatasetSITUACION]; +end; + +procedure TAlbaranCliente_RefreshDatasetBusinessProcessorRules.SetSITUACIONValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_AlbaranCliente_RefreshDatasetSITUACION] := aValue; +end; + +function TAlbaranCliente_RefreshDatasetBusinessProcessorRules.GetREFERENCIAPRESUPUESTOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_AlbaranCliente_RefreshDatasetREFERENCIAPRESUPUESTO]; +end; + +function TAlbaranCliente_RefreshDatasetBusinessProcessorRules.GetOldREFERENCIAPRESUPUESTOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_AlbaranCliente_RefreshDatasetREFERENCIAPRESUPUESTO]; +end; + +procedure TAlbaranCliente_RefreshDatasetBusinessProcessorRules.SetREFERENCIAPRESUPUESTOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_AlbaranCliente_RefreshDatasetREFERENCIAPRESUPUESTO] := aValue; +end; + + +{ TInformeCabeceraAlbaranPagoBusinessProcessorRules } +constructor TInformeCabeceraAlbaranPagoBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TInformeCabeceraAlbaranPagoBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TInformeCabeceraAlbaranPagoBusinessProcessorRules.GetCODIGOEMPRESAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraAlbaranPagoCODIGOEMPRESA]; +end; + +function TInformeCabeceraAlbaranPagoBusinessProcessorRules.GetOldCODIGOEMPRESAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraAlbaranPagoCODIGOEMPRESA]; +end; + +procedure TInformeCabeceraAlbaranPagoBusinessProcessorRules.SetCODIGOEMPRESAValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraAlbaranPagoCODIGOEMPRESA] := aValue; +end; + +function TInformeCabeceraAlbaranPagoBusinessProcessorRules.GetCODIGOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraAlbaranPagoCODIGO]; +end; + +function TInformeCabeceraAlbaranPagoBusinessProcessorRules.GetOldCODIGOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraAlbaranPagoCODIGO]; +end; + +procedure TInformeCabeceraAlbaranPagoBusinessProcessorRules.SetCODIGOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraAlbaranPagoCODIGO] := aValue; +end; + +function TInformeCabeceraAlbaranPagoBusinessProcessorRules.GetFECHAALTAValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraAlbaranPagoFECHAALTA]; +end; + +function TInformeCabeceraAlbaranPagoBusinessProcessorRules.GetOldFECHAALTAValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraAlbaranPagoFECHAALTA]; +end; + +procedure TInformeCabeceraAlbaranPagoBusinessProcessorRules.SetFECHAALTAValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraAlbaranPagoFECHAALTA] := aValue; +end; + +function TInformeCabeceraAlbaranPagoBusinessProcessorRules.GetUSUARIOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraAlbaranPagoUSUARIO]; +end; + +function TInformeCabeceraAlbaranPagoBusinessProcessorRules.GetOldUSUARIOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraAlbaranPagoUSUARIO]; +end; + +procedure TInformeCabeceraAlbaranPagoBusinessProcessorRules.SetUSUARIOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraAlbaranPagoUSUARIO] := aValue; +end; + +function TInformeCabeceraAlbaranPagoBusinessProcessorRules.GetREFERENCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraAlbaranPagoREFERENCIA]; +end; + +function TInformeCabeceraAlbaranPagoBusinessProcessorRules.GetOldREFERENCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraAlbaranPagoREFERENCIA]; +end; + +procedure TInformeCabeceraAlbaranPagoBusinessProcessorRules.SetREFERENCIAValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraAlbaranPagoREFERENCIA] := aValue; +end; + +function TInformeCabeceraAlbaranPagoBusinessProcessorRules.GetCODIGOCONTACTOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraAlbaranPagoCODIGOCONTACTO]; +end; + +function TInformeCabeceraAlbaranPagoBusinessProcessorRules.GetOldCODIGOCONTACTOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraAlbaranPagoCODIGOCONTACTO]; +end; + +procedure TInformeCabeceraAlbaranPagoBusinessProcessorRules.SetCODIGOCONTACTOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraAlbaranPagoCODIGOCONTACTO] := aValue; +end; + +function TInformeCabeceraAlbaranPagoBusinessProcessorRules.GetFECHAALBARANValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraAlbaranPagoFECHAALBARAN]; +end; + +function TInformeCabeceraAlbaranPagoBusinessProcessorRules.GetOldFECHAALBARANValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraAlbaranPagoFECHAALBARAN]; +end; + +procedure TInformeCabeceraAlbaranPagoBusinessProcessorRules.SetFECHAALBARANValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraAlbaranPagoFECHAALBARAN] := aValue; +end; + +function TInformeCabeceraAlbaranPagoBusinessProcessorRules.GetSITUACIONValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraAlbaranPagoSITUACION]; +end; + +function TInformeCabeceraAlbaranPagoBusinessProcessorRules.GetOldSITUACIONValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraAlbaranPagoSITUACION]; +end; + +procedure TInformeCabeceraAlbaranPagoBusinessProcessorRules.SetSITUACIONValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraAlbaranPagoSITUACION] := aValue; +end; + +function TInformeCabeceraAlbaranPagoBusinessProcessorRules.GetFECHAPAGOValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraAlbaranPagoFECHAPAGO]; +end; + +function TInformeCabeceraAlbaranPagoBusinessProcessorRules.GetOldFECHAPAGOValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraAlbaranPagoFECHAPAGO]; +end; + +procedure TInformeCabeceraAlbaranPagoBusinessProcessorRules.SetFECHAPAGOValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraAlbaranPagoFECHAPAGO] := aValue; +end; + +function TInformeCabeceraAlbaranPagoBusinessProcessorRules.GetBASEIMPONIBLEValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraAlbaranPagoBASEIMPONIBLE]; +end; + +function TInformeCabeceraAlbaranPagoBusinessProcessorRules.GetOldBASEIMPONIBLEValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraAlbaranPagoBASEIMPONIBLE]; +end; + +procedure TInformeCabeceraAlbaranPagoBusinessProcessorRules.SetBASEIMPONIBLEValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraAlbaranPagoBASEIMPONIBLE] := aValue; +end; + +function TInformeCabeceraAlbaranPagoBusinessProcessorRules.GetDESCUENTOValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraAlbaranPagoDESCUENTO]; +end; + +function TInformeCabeceraAlbaranPagoBusinessProcessorRules.GetOldDESCUENTOValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraAlbaranPagoDESCUENTO]; +end; + +procedure TInformeCabeceraAlbaranPagoBusinessProcessorRules.SetDESCUENTOValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraAlbaranPagoDESCUENTO] := aValue; +end; + +function TInformeCabeceraAlbaranPagoBusinessProcessorRules.GetIMPORTEDESCUENTOValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraAlbaranPagoIMPORTEDESCUENTO]; +end; + +function TInformeCabeceraAlbaranPagoBusinessProcessorRules.GetOldIMPORTEDESCUENTOValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraAlbaranPagoIMPORTEDESCUENTO]; +end; + +procedure TInformeCabeceraAlbaranPagoBusinessProcessorRules.SetIMPORTEDESCUENTOValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraAlbaranPagoIMPORTEDESCUENTO] := aValue; +end; + +function TInformeCabeceraAlbaranPagoBusinessProcessorRules.GetIVAValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraAlbaranPagoIVA]; +end; + +function TInformeCabeceraAlbaranPagoBusinessProcessorRules.GetOldIVAValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraAlbaranPagoIVA]; +end; + +procedure TInformeCabeceraAlbaranPagoBusinessProcessorRules.SetIVAValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraAlbaranPagoIVA] := aValue; +end; + +function TInformeCabeceraAlbaranPagoBusinessProcessorRules.GetIMPORTEIVAValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraAlbaranPagoIMPORTEIVA]; +end; + +function TInformeCabeceraAlbaranPagoBusinessProcessorRules.GetOldIMPORTEIVAValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraAlbaranPagoIMPORTEIVA]; +end; + +procedure TInformeCabeceraAlbaranPagoBusinessProcessorRules.SetIMPORTEIVAValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraAlbaranPagoIMPORTEIVA] := aValue; +end; + +function TInformeCabeceraAlbaranPagoBusinessProcessorRules.GetIMPORTETOTALValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraAlbaranPagoIMPORTETOTAL]; +end; + +function TInformeCabeceraAlbaranPagoBusinessProcessorRules.GetOldIMPORTETOTALValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraAlbaranPagoIMPORTETOTAL]; +end; + +procedure TInformeCabeceraAlbaranPagoBusinessProcessorRules.SetIMPORTETOTALValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraAlbaranPagoIMPORTETOTAL] := aValue; +end; + +function TInformeCabeceraAlbaranPagoBusinessProcessorRules.GetOBSERVACIONESValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraAlbaranPagoOBSERVACIONES]; +end; + +function TInformeCabeceraAlbaranPagoBusinessProcessorRules.GetOldOBSERVACIONESValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraAlbaranPagoOBSERVACIONES]; +end; + +procedure TInformeCabeceraAlbaranPagoBusinessProcessorRules.SetOBSERVACIONESValue(const aValue: IROStrings); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraAlbaranPagoOBSERVACIONES] := aValue.Text; +end; + +function TInformeCabeceraAlbaranPagoBusinessProcessorRules.GetFORMAPAGOValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraAlbaranPagoFORMAPAGO]; +end; + +function TInformeCabeceraAlbaranPagoBusinessProcessorRules.GetOldFORMAPAGOValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraAlbaranPagoFORMAPAGO]; +end; + +procedure TInformeCabeceraAlbaranPagoBusinessProcessorRules.SetFORMAPAGOValue(const aValue: IROStrings); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraAlbaranPagoFORMAPAGO] := aValue.Text; +end; + +function TInformeCabeceraAlbaranPagoBusinessProcessorRules.GetCODIGOPRESUPUESTOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraAlbaranPagoCODIGOPRESUPUESTO]; +end; + +function TInformeCabeceraAlbaranPagoBusinessProcessorRules.GetOldCODIGOPRESUPUESTOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraAlbaranPagoCODIGOPRESUPUESTO]; +end; + +procedure TInformeCabeceraAlbaranPagoBusinessProcessorRules.SetCODIGOPRESUPUESTOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraAlbaranPagoCODIGOPRESUPUESTO] := aValue; +end; + +function TInformeCabeceraAlbaranPagoBusinessProcessorRules.GetREFERENCIAPREValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraAlbaranPagoREFERENCIAPRE]; +end; + +function TInformeCabeceraAlbaranPagoBusinessProcessorRules.GetOldREFERENCIAPREValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraAlbaranPagoREFERENCIAPRE]; +end; + +procedure TInformeCabeceraAlbaranPagoBusinessProcessorRules.SetREFERENCIAPREValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraAlbaranPagoREFERENCIAPRE] := aValue; +end; + +function TInformeCabeceraAlbaranPagoBusinessProcessorRules.GetNIFCIFValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraAlbaranPagoNIFCIF]; +end; + +function TInformeCabeceraAlbaranPagoBusinessProcessorRules.GetOldNIFCIFValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraAlbaranPagoNIFCIF]; +end; + +procedure TInformeCabeceraAlbaranPagoBusinessProcessorRules.SetNIFCIFValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraAlbaranPagoNIFCIF] := aValue; +end; + +function TInformeCabeceraAlbaranPagoBusinessProcessorRules.GetNOMBREValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraAlbaranPagoNOMBRE]; +end; + +function TInformeCabeceraAlbaranPagoBusinessProcessorRules.GetOldNOMBREValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraAlbaranPagoNOMBRE]; +end; + +procedure TInformeCabeceraAlbaranPagoBusinessProcessorRules.SetNOMBREValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraAlbaranPagoNOMBRE] := aValue; +end; + +function TInformeCabeceraAlbaranPagoBusinessProcessorRules.GetCALLEValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraAlbaranPagoCALLE]; +end; + +function TInformeCabeceraAlbaranPagoBusinessProcessorRules.GetOldCALLEValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraAlbaranPagoCALLE]; +end; + +procedure TInformeCabeceraAlbaranPagoBusinessProcessorRules.SetCALLEValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraAlbaranPagoCALLE] := aValue; +end; + +function TInformeCabeceraAlbaranPagoBusinessProcessorRules.GetCODIGOPOSTALValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraAlbaranPagoCODIGOPOSTAL]; +end; + +function TInformeCabeceraAlbaranPagoBusinessProcessorRules.GetOldCODIGOPOSTALValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraAlbaranPagoCODIGOPOSTAL]; +end; + +procedure TInformeCabeceraAlbaranPagoBusinessProcessorRules.SetCODIGOPOSTALValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraAlbaranPagoCODIGOPOSTAL] := aValue; +end; + +function TInformeCabeceraAlbaranPagoBusinessProcessorRules.GetPOBLACIONValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraAlbaranPagoPOBLACION]; +end; + +function TInformeCabeceraAlbaranPagoBusinessProcessorRules.GetOldPOBLACIONValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraAlbaranPagoPOBLACION]; +end; + +procedure TInformeCabeceraAlbaranPagoBusinessProcessorRules.SetPOBLACIONValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraAlbaranPagoPOBLACION] := aValue; +end; + +function TInformeCabeceraAlbaranPagoBusinessProcessorRules.GetTELEFONO1Value: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraAlbaranPagoTELEFONO1]; +end; + +function TInformeCabeceraAlbaranPagoBusinessProcessorRules.GetOldTELEFONO1Value: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraAlbaranPagoTELEFONO1]; +end; + +procedure TInformeCabeceraAlbaranPagoBusinessProcessorRules.SetTELEFONO1Value(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraAlbaranPagoTELEFONO1] := aValue; +end; + +function TInformeCabeceraAlbaranPagoBusinessProcessorRules.GetTELEFONO2Value: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraAlbaranPagoTELEFONO2]; +end; + +function TInformeCabeceraAlbaranPagoBusinessProcessorRules.GetOldTELEFONO2Value: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraAlbaranPagoTELEFONO2]; +end; + +procedure TInformeCabeceraAlbaranPagoBusinessProcessorRules.SetTELEFONO2Value(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraAlbaranPagoTELEFONO2] := aValue; +end; + +function TInformeCabeceraAlbaranPagoBusinessProcessorRules.GetMOVILValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraAlbaranPagoMOVIL]; +end; + +function TInformeCabeceraAlbaranPagoBusinessProcessorRules.GetOldMOVILValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraAlbaranPagoMOVIL]; +end; + +procedure TInformeCabeceraAlbaranPagoBusinessProcessorRules.SetMOVILValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraAlbaranPagoMOVIL] := aValue; +end; + + +{ TInformeDetallesAlbaranPagoBusinessProcessorRules } +constructor TInformeDetallesAlbaranPagoBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TInformeDetallesAlbaranPagoBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TInformeDetallesAlbaranPagoBusinessProcessorRules.GetCODIGOALBARANValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesAlbaranPagoCODIGOALBARAN]; +end; + +function TInformeDetallesAlbaranPagoBusinessProcessorRules.GetOldCODIGOALBARANValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeDetallesAlbaranPagoCODIGOALBARAN]; +end; + +procedure TInformeDetallesAlbaranPagoBusinessProcessorRules.SetCODIGOALBARANValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesAlbaranPagoCODIGOALBARAN] := aValue; +end; + +function TInformeDetallesAlbaranPagoBusinessProcessorRules.GetNUMCONCEPTOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesAlbaranPagoNUMCONCEPTO]; +end; + +function TInformeDetallesAlbaranPagoBusinessProcessorRules.GetOldNUMCONCEPTOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeDetallesAlbaranPagoNUMCONCEPTO]; +end; + +procedure TInformeDetallesAlbaranPagoBusinessProcessorRules.SetNUMCONCEPTOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesAlbaranPagoNUMCONCEPTO] := aValue; +end; + +function TInformeDetallesAlbaranPagoBusinessProcessorRules.GetDESCRIPCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesAlbaranPagoDESCRIPCION]; +end; + +function TInformeDetallesAlbaranPagoBusinessProcessorRules.GetOldDESCRIPCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeDetallesAlbaranPagoDESCRIPCION]; +end; + +procedure TInformeDetallesAlbaranPagoBusinessProcessorRules.SetDESCRIPCIONValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesAlbaranPagoDESCRIPCION] := aValue; +end; + +function TInformeDetallesAlbaranPagoBusinessProcessorRules.GetCANTIDADValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesAlbaranPagoCANTIDAD]; +end; + +function TInformeDetallesAlbaranPagoBusinessProcessorRules.GetOldCANTIDADValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeDetallesAlbaranPagoCANTIDAD]; +end; + +procedure TInformeDetallesAlbaranPagoBusinessProcessorRules.SetCANTIDADValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesAlbaranPagoCANTIDAD] := aValue; +end; + +function TInformeDetallesAlbaranPagoBusinessProcessorRules.GetIMPORTEUNIDADValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesAlbaranPagoIMPORTEUNIDAD]; +end; + +function TInformeDetallesAlbaranPagoBusinessProcessorRules.GetOldIMPORTEUNIDADValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeDetallesAlbaranPagoIMPORTEUNIDAD]; +end; + +procedure TInformeDetallesAlbaranPagoBusinessProcessorRules.SetIMPORTEUNIDADValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesAlbaranPagoIMPORTEUNIDAD] := aValue; +end; + +function TInformeDetallesAlbaranPagoBusinessProcessorRules.GetIMPORTETOTALValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesAlbaranPagoIMPORTETOTAL]; +end; + +function TInformeDetallesAlbaranPagoBusinessProcessorRules.GetOldIMPORTETOTALValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeDetallesAlbaranPagoIMPORTETOTAL]; +end; + +procedure TInformeDetallesAlbaranPagoBusinessProcessorRules.SetIMPORTETOTALValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesAlbaranPagoIMPORTETOTAL] := aValue; +end; + +function TInformeDetallesAlbaranPagoBusinessProcessorRules.GetTIPOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesAlbaranPagoTIPO]; +end; + +function TInformeDetallesAlbaranPagoBusinessProcessorRules.GetOldTIPOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeDetallesAlbaranPagoTIPO]; +end; + +procedure TInformeDetallesAlbaranPagoBusinessProcessorRules.SetTIPOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesAlbaranPagoTIPO] := aValue; +end; + +function TInformeDetallesAlbaranPagoBusinessProcessorRules.GetPOSICIONValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesAlbaranPagoPOSICION]; +end; + +function TInformeDetallesAlbaranPagoBusinessProcessorRules.GetOldPOSICIONValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeDetallesAlbaranPagoPOSICION]; +end; + +procedure TInformeDetallesAlbaranPagoBusinessProcessorRules.SetPOSICIONValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesAlbaranPagoPOSICION] := aValue; +end; + + +{ TDarSumaImportesBusinessProcessorRules } +constructor TDarSumaImportesBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TDarSumaImportesBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TDarSumaImportesBusinessProcessorRules.GetBASEIMPONIBLEValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_DarSumaImportesBASEIMPONIBLE]; +end; + +function TDarSumaImportesBusinessProcessorRules.GetOldBASEIMPONIBLEValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_DarSumaImportesBASEIMPONIBLE]; +end; + +procedure TDarSumaImportesBusinessProcessorRules.SetBASEIMPONIBLEValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_DarSumaImportesBASEIMPONIBLE] := aValue; +end; + +function TDarSumaImportesBusinessProcessorRules.GetIMPORTEIVAValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_DarSumaImportesIMPORTEIVA]; +end; + +function TDarSumaImportesBusinessProcessorRules.GetOldIMPORTEIVAValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_DarSumaImportesIMPORTEIVA]; +end; + +procedure TDarSumaImportesBusinessProcessorRules.SetIMPORTEIVAValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_DarSumaImportesIMPORTEIVA] := aValue; +end; + +function TDarSumaImportesBusinessProcessorRules.GetIMPORTETOTALValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_DarSumaImportesIMPORTETOTAL]; +end; + +function TDarSumaImportesBusinessProcessorRules.GetOldIMPORTETOTALValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_DarSumaImportesIMPORTETOTAL]; +end; + +procedure TDarSumaImportesBusinessProcessorRules.SetIMPORTETOTALValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_DarSumaImportesIMPORTETOTAL] := aValue; +end; + + +initialization + RegisterBusinessProcessorRules(RID_DarReferenciaAlbaranDelta, TDarReferenciaAlbaranBusinessProcessorRules); + RegisterBusinessProcessorRules(RID_AlbaranClienteDelta, TAlbaranClienteBusinessProcessorRules); + RegisterBusinessProcessorRules(RID_AlbaranDePresupuestoDelta, TAlbaranDePresupuestoBusinessProcessorRules); + RegisterBusinessProcessorRules(RID_DetallesAlbaranClienteDelta, TDetallesAlbaranClienteBusinessProcessorRules); + RegisterBusinessProcessorRules(RID_AlbaranCliente_RefreshDatasetDelta, TAlbaranCliente_RefreshDatasetBusinessProcessorRules); + RegisterBusinessProcessorRules(RID_InformeCabeceraAlbaranPagoDelta, TInformeCabeceraAlbaranPagoBusinessProcessorRules); + RegisterBusinessProcessorRules(RID_InformeDetallesAlbaranPagoDelta, TInformeDetallesAlbaranPagoBusinessProcessorRules); + RegisterBusinessProcessorRules(RID_DarSumaImportesDelta, TDarSumaImportesBusinessProcessorRules); + +end. diff --git a/Modulos/Albaranes de cliente/Reglas/uBizAlbaranesCliente.pas b/Modulos/Albaranes de cliente/Reglas/uBizAlbaranesCliente.pas new file mode 100644 index 0000000..6bf3bb1 --- /dev/null +++ b/Modulos/Albaranes de cliente/Reglas/uBizAlbaranesCliente.pas @@ -0,0 +1,561 @@ +unit uBizAlbaranesCliente; + +interface + +uses + Controls, uDAInterfaces, uDADataTable, Classes, uBizContacto, DB, + schAlbaranesClienteClient_Intf, uBizImportesDetalleBase, + uBizImportesCabeceraBase, uBizPresupuestosCliente, uDBSelectionList, + uExceptions, uBizInformesBase; + +const + BIZ_ALBARANCLIENTE = 'Client.AlbaranCliente'; + BIZ_DETALLESALBARANCLIENTE = 'Client.DetallesAlbaranCliente'; + + SITUACION_PENDIENTE = 'Pendiente'; + SITUACION_PAGADO = 'Pagado'; + +type + IBizDetallesAlbaranCliente = interface(IDetallesAlbaranCliente) + ['{8AA767E6-8C11-4E72-81B7-609DA076AC77}'] + procedure CopyFrom(ADetallesPresupuesto : IBizDetallesPresupuesto); + end; + + IBizAlbaranesCliente = interface(IAlbaranCliente) + ['{18C13046-1C42-477C-95F4-C80739D97A54}'] + function GetDetalles: IBizDetallesAlbaranCliente; + procedure SetDetalles(Value: IBizDetallesAlbaranCliente); + property Detalles: IBizDetallesAlbaranCliente read GetDetalles write + SetDetalles; + + function GetCliente: IBizCliente; + procedure SetCliente(Value: IBizCliente); + property Cliente: IBizCliente read GetCliente write SetCliente; + + procedure Show; + function ShowForSelect : TModalResult; + procedure CopyFrom(APresupuesto : IBizPresupuestos); + end; + + TBizDetallesAlbaranCliente = class(TDetallesAlbaranClienteDataTableRules, + IBizDetallesAlbaranCliente, + IBizImportesDetalle, + IBizPuntosDetalle, + IBizVisibleDetalle, + IParche) // PARCHE *********************** + private + FIsAppend : Boolean; + FPosicionNueva : Integer; + FPuedoLanzarEvento : Boolean; // PARCHE *********************** + + procedure SetCANTIDADValue(const aValue: Integer); override; + procedure SetIMPORTEUNIDADValue(const aValue: Currency); override; + procedure SetIMPORTETOTALValue(const aValue: Currency); override; + procedure SetPUNTOSValue(const aValue: Integer); override; + procedure SetIMPORTEPUNTOSValue(const aValue: Currency); override; + + protected + procedure OnNewRecord(Sender: TDADataTable); override; + procedure BeforeInsert(Sender: TDADataTable); override; + procedure AfterPost(Sender: TDADataTable); override; + procedure AfterInsert(Sender: TDADataTable); override; + procedure AfterDelete(Sender: TDADataTable); override; + procedure BeforeDelete(Sender: TDADataTable); override; + + // PARCHE *********************** + procedure ActivarEventos; + procedure DesactivarEventos; + procedure Refrescar; + function PuedoLanzarEvento : Boolean; + public + procedure RecalcularImporte; + function DarSumaTotalImportes : Currency; + constructor Create(aDataTable: TDADataTable); override; + procedure CopyFrom(ADetallesPresupuesto : IBizDetallesPresupuesto); + end; + + + TBizAlbaranesCliente = class(TAlbaranClienteDataTableRules, IBizAlbaranesCliente, + IBizImportesCabecera, ISelectedRowList, + IApplyUpdateFailedException, IBizInformesAware) + private + FCliente : IBizCliente; + FDetalles: IBizDetallesAlbaranCliente; + FDetallesLink: TDADataSource; + FSelectedRows : TSelectedRowList; + protected + procedure ShowApplyUpdateFailed (const Error: EDAApplyUpdateFailed); + function GetDetalles: IBizDetallesAlbaranCliente; + procedure SetDetalles(Value: IBizDetallesAlbaranCliente); + + function GetCliente: IBizCliente; + procedure SetCliente(Value: IBizCliente); + + procedure OnNewRecord(Sender: TDADataTable); override; + + function GetSelectedRows : TSelectedRowList; + procedure BeforeDelete(Sender: TDADataTable); override; + procedure AfterDelete(Sender: TDADataTable); override; + procedure OnPostError(DataTable: TDADataTable; Error: EDatabaseError; + var Action: TDataAction); override; + procedure BeforeApplyUpdates(Sender : TDADataTable; const Delta : IDADelta); + public + procedure RecalcularImporte; + property Cliente: IBizCliente read GetCliente write SetCliente; + property Detalles: IBizDetallesAlbaranCliente read GetDetalles write + SetDetalles; + procedure Show; + function ShowForSelect : TModalResult; + procedure Preview; + procedure Print; + procedure CopyFrom(APresupuesto : IBizPresupuestos); + + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + property SelectedRows : TSelectedRowList read GetSelectedRows; + end; + + procedure ValidarAlbaranCliente (const AAlbaranCliente : IBizAlbaranesCliente); + + +implementation + +uses + Windows, Dialogs, uDACDSDataTable, SysUtils, uEditorUtils, Variants, Math, + uDataModuleContactos, schPresupuestosClient_Intf, Forms, + uDataModuleBase, uDataModuleUsuarios, uDataModuleAlbaranesCliente, + uDataTableUtils; + +var + FMasterDeleting : Boolean; + FCancelInsert : Boolean; + +procedure ValidarAlbaranCliente (const AAlbaranCliente : IBizAlbaranesCliente); +begin + if (FloatToStr(AAlbaranCliente.FECHAALBARAN) = '0') then + raise Exception.Create('Debe indicar la fecha de este albarán'); + + if not Assigned(AAlbaranCliente.Cliente) or + (AAlbaranCliente.Cliente.DataTable.IsEmpty) then + raise Exception.Create('Debe indicar el cliente de este albarán'); + + AAlbaranCliente.Edit; + if (FloatToStr(AAlbaranCliente.FECHAPAGO) = '0') then + AAlbaranCliente.SITUACION := SITUACION_PENDIENTE + else + AAlbaranCliente.SITUACION := SITUACION_PAGADO; + AAlbaranCliente.Post; + + + if (Length(AAlbaranCliente.REFERENCIA) = 0) then + begin + AAlbaranCliente.Edit; + AAlbaranCliente.REFERENCIA := dmAlbaranesCliente.DarNuevaReferencia; + AAlbaranCliente.Post; + ShowMessage('A este albarán se le ha asignado la referencia ' + AAlbaranCliente.REFERENCIA); + end; +end; + +constructor TBizAlbaranesCliente.Create(aDataTable: TDADataTable); +begin + inherited; + FCliente := NIL; + FDetallesLink := TDADataSource.Create(NIL); + FSelectedRows := TSelectedRowList.Create(aDataTable); + aDataTable.OnBeforeApplyUpdates := BeforeApplyUpdates; +end; + +destructor TBizAlbaranesCliente.Destroy; +begin + FCliente := NIL; + FDetalles := NIL; + FDetallesLink.Free; + FSelectedRows.Free; + inherited; +end; + +function TBizAlbaranesCliente.GetCliente: IBizCliente; +begin + if not Assigned(FCliente) then + FCliente := dmContactos.GetCliente(CODIGOCONTACTO) + else + if (CODIGOCONTACTO <> FCliente.Codigo) and + not (FCliente.DataTable.State in dsEditModes) then + dmContactos.GetContacto(FCliente, CODIGOCONTACTO); + + if not FCliente.DataTable.Active then + FCliente.DataTable.Active := True; + + Result := FCliente; +end; + +function TBizAlbaranesCliente.GetDetalles: IBizDetallesAlbaranCliente; +begin + Result := FDetalles; +end; + +procedure TBizAlbaranesCliente.CopyFrom(APresupuesto: IBizPresupuestos); +var + ACursor: TCursor; +begin + if not (State in dsEditModes) then + Edit; + if not (APresupuesto.DataTable.Active) then + APresupuesto.DataTable.Active := True; + + ACursor := Screen.Cursor; + Screen.Cursor := crHourGlass; + Application.ProcessMessages; + try + CODIGOEMPRESA := APresupuesto.CODIGOEMPRESA; + CODIGOCONTACTO := APresupuesto.CODIGOCONTACTO; + BASEIMPONIBLE := APresupuesto.BASEIMPONIBLE; + DESCUENTO := APresupuesto.DESCUENTO; + IVA := APresupuesto.IVA; + OBSERVACIONES := APresupuesto.OBSERVACIONES; + FORMAPAGO := APresupuesto.FORMAPAGO; + CODIGOPRESUPUESTO := APresupuesto.CODIGO; + Cliente := APresupuesto.Cliente; + Detalles.CopyFrom(APresupuesto.Detalles); + RecalcularImporte; + finally + Screen.Cursor := ACursor; + end; +end; + +procedure TBizAlbaranesCliente.OnNewRecord(Sender: TDADataTable); +begin + inherited; + CODIGOEMPRESA := dmBase.CodigoEmpresa; + USUARIO := dmUsuarios.LoginInfo.UserID; + FECHAALTA := Date; + FECHAALBARAN := Date; + SITUACION := SITUACION_PENDIENTE; + CODIGO := dmAlbaranesCliente.GetNextAutoinc; +end; + +procedure TBizAlbaranesCliente.Preview; +begin + dmAlbaranesCliente.Preview(Self.CODIGO); +end; + +procedure TBizAlbaranesCliente.SetCliente(Value: IBizCliente); +var + bEnEdicion : Boolean; +begin + bEnEdicion := (DataTable.State in dsEditModes); + if not bEnEdicion then + Edit; + FCliente := Value; + if Assigned(FCliente) then + begin + CODIGOCONTACTO := FCliente.CODIGO; + Post; + if bEnEdicion then + Edit; + end +end; + +procedure TBizAlbaranesCliente.SetDetalles(Value: IBizDetallesAlbaranCliente); +begin + FDetalles := Value; + FDetallesLink.DataTable := Self.DataTable; + FDetalles.DataTable.MasterSource := FDetallesLink; +end; + +procedure TBizAlbaranesCliente.Show; +begin + ShowEditor(IBizAlbaranesCliente, Self, etItem); +end; + +procedure TBizDetallesAlbaranCliente.ActivarEventos; +begin + FPuedoLanzarEvento := True; +end; + +procedure TBizDetallesAlbaranCliente.AfterDelete(Sender: TDADataTable); +var + ACabecera : IBizImportesCabecera; +begin + inherited; + + // PARCHE ******************* + if not PuedoLanzarEvento then + Exit; + + if (not FMasterDeleting) and (not FCancelInsert) then + begin + ReasignarPosiciones(Self.DataTable); + if Assigned(DataTable.MasterSource) and + Supports(DataTable.MasterSource.DataTable, IBizImportesCabecera, ACabecera) then + ACabecera.RecalcularImporte; + end; + FCancelInsert := False; +end; + +procedure TBizDetallesAlbaranCliente.AfterInsert(Sender: TDADataTable); +begin + inherited; + + // PARCHE ******************* + if not PuedoLanzarEvento then + Exit; + + FIsAppend := DataTable.EOF; + Post; + Edit; // Para volver a dejarlo en modo de edición +end; + +procedure TBizDetallesAlbaranCliente.AfterPost(Sender: TDADataTable); +begin + inherited; + + // PARCHE ******************* + if not PuedoLanzarEvento then + Exit; + + if POSICION < 0 then + AsignarPosicion(Self.DataTable, FIsAppend); + + if NUMCONCEPTO < 0 then + AsignarNumConcepto(Self.DataTable); + + FIsAppend := False; +end; + +procedure TBizDetallesAlbaranCliente.BeforeDelete(Sender: TDADataTable); +begin + inherited; + + // PARCHE ******************* + if not PuedoLanzarEvento then + Exit; + + if (DataTable.State in dsEditModes) then + DataTable.Cancel; + + if not FMasterDeleting then + FCancelInsert := not (DataTable.MasterSource.DataTable.FieldByName('CODIGO').AsInteger = CODIGOALBARAN); +end; + +procedure TBizDetallesAlbaranCliente.BeforeInsert(Sender: TDADataTable); +begin + inherited; + + // PARCHE ******************* + if not PuedoLanzarEvento then + Exit; + + if Assigned(DataTable.MasterSource) and + (DataTable.MasterSource.DataTable.State in dsEditModes) then + DataTable.MasterSource.DataTable.Post; + + if GetRecordCount = 0 then + FPosicionNueva := -1 + else + FPosicionNueva := POSICION * (-1); +end; + + +procedure TBizDetallesAlbaranCliente.CopyFrom( + ADetallesPresupuesto: IBizDetallesPresupuesto); +begin + DeleteAllTable(Self.DataTable); + + ADetallesPresupuesto.First; + while not ADetallesPresupuesto.EOF do + begin + Append; + DataTable.DisableControls; + DataTable.DisableEventHandlers; + try + TIPO := ADetallesPresupuesto.TIPO; + DESCRIPCION := ADetallesPresupuesto.DESCRIPCION; + CANTIDAD := ADetallesPresupuesto.CANTIDAD; + IMPORTEUNIDAD := ADetallesPresupuesto.IMPORTEUNIDAD; + IMPORTETOTAL := ADetallesPresupuesto.IMPORTETOTAL; + PUNTOS := ADetallesPresupuesto.PUNTOS; + IMPORTEPUNTOS := ADetallesPresupuesto.IMPORTEPUNTOS; + VISIBLE := ADetallesPresupuesto.VISIBLE; + finally + DataTable.EnableControls; + DataTable.EnableEventHandlers; + end; + Post; + ADetallesPresupuesto.Next; + end; +end; + +constructor TBizDetallesAlbaranCliente.Create(aDataTable: TDADataTable); +begin + inherited; + FPosicionNueva := 1; // Los conceptos empiezan a contar en 1 + + // PARCHE ******************* + FPuedoLanzarEvento := True; +end; + +function TBizDetallesAlbaranCliente.DarSumaTotalImportes: Currency; +begin + Result := DarTotalDetalles(Self.DataTable, True, True); +end; + +procedure TBizDetallesAlbaranCliente.DesactivarEventos; +begin + FPuedoLanzarEvento := False; +end; + +procedure TBizDetallesAlbaranCliente.OnNewRecord(Sender: TDADataTable); +begin + inherited; + + // PARCHE ******************* + if not PuedoLanzarEvento then + Exit; + + POSICION := FPosicionNueva; + NUMCONCEPTO := -1; + TIPO := TIPODETALLE_CONCEPTO; + VISIBLE := VISIBLE_TRUE; + + Self.DataTable.DisableEventHandlers; + try + CANTIDAD := 1; + finally + Self.DataTable.EnableEventHandlers; + end; +end; + + +function TBizAlbaranesCliente.GetSelectedRows: TSelectedRowList; +begin + Result := FSelectedRows; +end; + +procedure TBizAlbaranesCliente.ShowApplyUpdateFailed( + const Error: EDAApplyUpdateFailed); +begin + if (Pos(AUF_FKVIOLATION, Error.Message) > 0) then + MessageBox(0, 'No se puede borrar este albarán porque tiene una factura asociada', 'Atención', MB_ICONWARNING or MB_OK); +end; + + +procedure TBizAlbaranesCliente.BeforeDelete(Sender: TDADataTable); +begin + inherited; + if not dmAlbaranesCliente.PuedoEliminarAlbaran(CODIGO) then + raise Exception.Create('No se puede borrar este albarán porque tiene una factura asociada'); + FMasterDeleting := True; // Para que los detalles de borren de golpe y no recalcule posiciones ni totales +end; + +procedure TBizAlbaranesCliente.AfterDelete(Sender: TDADataTable); +begin + inherited; + FMasterDeleting := False; +end; + +procedure TBizAlbaranesCliente.Print; +begin + dmAlbaranesCliente.Print(Self.CODIGO); +end; + +procedure TBizAlbaranesCliente.OnPostError(DataTable: TDADataTable; + Error: EDatabaseError; var Action: TDataAction); +begin + inherited; + Action := daAbort; + if (Pos(AUF_HAVEVALUE, Error.Message) > 0) then + begin + if (Pos('contacto', Error.Message) > 0) then + MessageBox(0, 'Debe indicar el cliente de este albarán', 'Atención', MB_ICONWARNING or MB_OK) + else + if (Pos('Fecha albarán', Error.Message) > 0) then + MessageBox(0, 'Debe indicar la fecha de este albarán', 'Atención', MB_ICONWARNING or MB_OK) + else + raise Error; + end + else + raise Error; +end; + +procedure TBizAlbaranesCliente.BeforeApplyUpdates(Sender: TDADataTable; + const Delta: IDADelta); +var + i : integer; +begin + for i := 0 to Delta.Count - 1 do + case Delta.Changes[i].ChangeType of + ctInsert, ctUpdate : ValidarAlbaranCliente(Self); + //ctDelete : + end; +end; + +function TBizDetallesAlbaranCliente.PuedoLanzarEvento: Boolean; +begin + Result := FPuedoLanzarEvento; +end; + +procedure TBizDetallesAlbaranCliente.RecalcularImporte; +begin + RecalcularImporteDetalle(Self.DataTable, True, True); +end; + +procedure TBizAlbaranesCliente.RecalcularImporte; +begin + RecalcularImportesCabecera(Self.DataTable, Detalles.DataTable); +end; + +procedure TBizDetallesAlbaranCliente.Refrescar; +begin + DataTable.Refresh; +end; + +function TBizAlbaranesCliente.ShowForSelect: TModalResult; +begin + Result := ShowEditor(IBizAlbaranesCliente, Self, etSelectItems); +end; + +procedure TBizDetallesAlbaranCliente.SetCANTIDADValue(const aValue: Integer); +begin + if aValue = 0 + then DataTable.Fields[idx_DetallesAlbaranClienteCANTIDAD].AsVariant := Null + else inherited; +end; + +procedure TBizDetallesAlbaranCliente.SetIMPORTEPUNTOSValue(const aValue: Currency); +begin + if aValue = 0 + then DataTable.Fields[idx_DetallesAlbaranClienteIMPORTEPUNTOS].AsVariant := Null + else inherited; +end; + +procedure TBizDetallesAlbaranCliente.SetIMPORTETOTALValue(const aValue: Currency); +begin + if aValue = 0 + then DataTable.Fields[idx_DetallesAlbaranClienteIMPORTETOTAL].AsVariant := Null + else inherited; +end; + +procedure TBizDetallesAlbaranCliente.SetIMPORTEUNIDADValue(const aValue: Currency); +begin + if aValue = 0 + then DataTable.Fields[idx_DetallesAlbaranClienteIMPORTEUNIDAD].AsVariant := Null + else inherited; +end; + +procedure TBizDetallesAlbaranCliente.SetPUNTOSValue(const aValue: Integer); +begin + if aValue = 0 + then DataTable.Fields[idx_DetallesAlbaranClientePUNTOS].AsVariant := Null + else inherited; +end; + +initialization + FMasterDeleting := False; + RegisterDataTableRules(BIZ_DETALLESALBARANCLIENTE, TBizDetallesAlbaranCliente); + RegisterDataTableRules(BIZ_ALBARANCLIENTE, TBizAlbaranesCliente); + +finalization + +end. diff --git a/Modulos/Albaranes de cliente/Servidor/srvAlbaranesCliente_Impl.ddp b/Modulos/Albaranes de cliente/Servidor/srvAlbaranesCliente_Impl.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Albaranes de cliente/Servidor/srvAlbaranesCliente_Impl.ddp differ diff --git a/Modulos/Albaranes de cliente/Servidor/srvAlbaranesCliente_Impl.dfm b/Modulos/Albaranes de cliente/Servidor/srvAlbaranesCliente_Impl.dfm new file mode 100644 index 0000000..67a5701 --- /dev/null +++ b/Modulos/Albaranes de cliente/Servidor/srvAlbaranesCliente_Impl.dfm @@ -0,0 +1,1920 @@ +object srvAlbaranesCliente: TsrvAlbaranesCliente + OldCreateOrder = True + RequiresSession = True + SessionManager = dmServer.SessionManager + AcquireConnection = True + ConnectionName = 'IBX' + ServiceSchema = schAlbaranesCliente + ServiceAdapter = DABINAdapter + Left = 413 + Top = 252 + Height = 463 + Width = 347 + object schAlbaranesCliente: TDASchema + ConnectionManager = dmServer.ConnectionManager + DataDictionary = dmServer.DataDictionary + Diagrams = dmServer.DADiagrams + Datasets = < + item + Params = <> + Statements = < + item + Connection = 'IBX' + TargetTable = 'ALBARANPAGO' + SQL = 'SELECT * FROM DAR_REFERENCIA_ALBARAN' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'REFERENCIA' + TableField = 'REFERENCIA' + end> + end> + Name = 'DarReferenciaAlbaran' + Fields = < + item + Name = 'REFERENCIA' + DataType = datString + Size = 20 + BlobType = dabtUnknown + DictionaryEntry = 'REFERENCIA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end + item + Params = <> + Statements = < + item + Connection = 'IBX' + TargetTable = 'ALBARANPAGO' + SQL = + 'SELECT ALBARANPAGO.CODIGOEMPRESA, ALBARANPAGO.CODIGO, ALBARANPAG' + + 'O.FECHAALTA,'#10' ALBARANPAGO.USUARIO, ALBARANPAGO.REFERENCIA,' + + ' ALBARANPAGO.CODIGOCONTACTO,'#10' CONTACTOS.NOMBRE, ALBARANPAG' + + 'O.FECHAALBARAN, ALBARANPAGO.SITUACION,'#10' ALBARANPAGO.FECHAP' + + 'AGO, ALBARANPAGO.BASEIMPONIBLE, ALBARANPAGO.DESCUENTO,'#10' AL' + + 'BARANPAGO.IMPORTEDESCUENTO, ALBARANPAGO.IVA, ALBARANPAGO.IMPORTE' + + 'IVA,'#10' ALBARANPAGO.IMPORTETOTAL, ALBARANPAGO.OBSERVACIONES,' + + #10' ALBARANPAGO.FORMAPAGO, ALBARANPAGO.CODIGOPRESUPUESTO,'#10' ' + + ' MONTAJES.REFERENCIA as REFERENCIAPRESUPUESTO'#10'FROM ALBARANPA' + + 'GO'#10' INNER JOIN CONTACTOS ON (ALBARANPAGO.CODIGOCONTACTO = CONT' + + 'ACTOS.CODIGO)'#10' LEFT OUTER JOIN MONTAJES ON (ALBARANPAGO.CODIGO' + + 'PRESUPUESTO = MONTAJES.CODIGOPRESUPUESTO)' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'CODIGOEMPRESA' + TableField = 'CODIGOEMPRESA' + end + item + DatasetField = 'CODIGO' + TableField = 'CODIGO' + end + item + DatasetField = 'FECHAALTA' + TableField = 'FECHAALTA' + end + item + DatasetField = 'USUARIO' + TableField = 'USUARIO' + end + item + DatasetField = 'CODIGOCONTACTO' + TableField = 'CODIGOCONTACTO' + end + item + DatasetField = 'FECHAALBARAN' + TableField = 'FECHAALBARAN' + end + item + DatasetField = 'SITUACION' + TableField = 'SITUACION' + end + item + DatasetField = 'FECHAPAGO' + TableField = 'FECHAPAGO' + end + item + DatasetField = 'BASEIMPONIBLE' + TableField = 'BASEIMPONIBLE' + end + item + DatasetField = 'DESCUENTO' + TableField = 'DESCUENTO' + end + item + DatasetField = 'IMPORTEDESCUENTO' + TableField = 'IMPORTEDESCUENTO' + end + item + DatasetField = 'IVA' + TableField = 'IVA' + end + item + DatasetField = 'IMPORTEIVA' + TableField = 'IMPORTEIVA' + end + item + DatasetField = 'IMPORTETOTAL' + TableField = 'IMPORTETOTAL' + end + item + DatasetField = 'OBSERVACIONES' + TableField = 'OBSERVACIONES' + end + item + DatasetField = 'FORMAPAGO' + TableField = 'FORMAPAGO' + end + item + DatasetField = 'NOMBRE' + TableField = 'NOMBRE' + end + item + DatasetField = 'REFERENCIA' + TableField = 'REFERENCIA' + end + item + DatasetField = 'CODIGOPRESUPUESTO' + TableField = 'CODIGOPRESUPUESTO' + end + item + DatasetField = 'REFERENCIAPRESUPUESTO' + TableField = 'REFERENCIAPRESUPUESTO' + end> + end> + Name = 'AlbaranCliente' + Fields = < + item + Name = 'CODIGOEMPRESA' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'CODIGOEMPRESA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGO' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'CODIGOALBARANCLIENTE' + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHAALTA' + DataType = datDateTime + BlobType = dabtUnknown + DictionaryEntry = 'FECHAALTA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'USUARIO' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DictionaryEntry = 'USUARIO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'REFERENCIA' + DataType = datString + Size = 20 + BlobType = dabtUnknown + DictionaryEntry = 'REFERENCIA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOCONTACTO' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'CODIGOCONTACTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NOMBRE' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Nombre' + Alignment = taLeftJustify + ServerAutoRefresh = True + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHAALBARAN' + DataType = datDateTime + BlobType = dabtUnknown + DictionaryEntry = 'FECHAALBARANCLIENTE' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'SITUACION' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DictionaryEntry = 'SITUACIONALBARANCLIENTE' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHAPAGO' + DataType = datDateTime + BlobType = dabtUnknown + DictionaryEntry = 'FECHAPAGO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOPRESUPUESTO' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'CODIGO (GENERICO)' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'BASEIMPONIBLE' + DataType = datCurrency + BlobType = dabtUnknown + DictionaryEntry = 'BASEIMPONIBLE' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'DESCUENTO' + DataType = datFloat + BlobType = dabtUnknown + DictionaryEntry = 'DESCUENTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTEDESCUENTO' + DataType = datCurrency + BlobType = dabtUnknown + DictionaryEntry = 'IMPORTEDESCUENTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IVA' + DataType = datFloat + BlobType = dabtUnknown + DictionaryEntry = 'IVA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTEIVA' + DataType = datCurrency + BlobType = dabtUnknown + DictionaryEntry = 'IMPORTEIVA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTETOTAL' + DataType = datCurrency + BlobType = dabtUnknown + DictionaryEntry = 'IMPORTETOTAL' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'OBSERVACIONES' + DataType = datMemo + BlobType = dabtUnknown + DictionaryEntry = 'OBSERVACIONES' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FORMAPAGO' + DataType = datMemo + BlobType = dabtUnknown + DictionaryEntry = 'FORMAPAGO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'REFERENCIAPRESUPUESTO' + DataType = datString + Size = 20 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end + item + Params = < + item + Name = 'CODIGOPRESUPUESTO' + DataType = datInteger + BlobType = dabtUnknown + Value = '505' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'ALBARANPAGO' + SQL = + 'SELECT '#10' CODIGO'#10' FROM'#10' ALBARANPAGO'#10' WHERE CODIGOPRESUPUE' + + 'STO = :CODIGOPRESUPUESTO' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'CODIGO' + TableField = 'CODIGO' + end> + end> + Name = 'AlbaranDePresupuesto' + Fields = < + item + Name = 'CODIGO' + DataType = datInteger + BlobType = dabtUnknown + LogChanges = False + DictionaryEntry = 'CODIGO (GENERICO)' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end + item + Params = < + item + Name = 'CODIGOALBARAN' + DataType = datInteger + BlobType = dabtUnknown + Value = '1' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'DETALLESALBARANPAGO' + SQL = + 'SELECT'#10' CODIGOALBARAN, NUMCONCEPTO, POSICION, TIPO, DESCRIPCI' + + 'ON, CANTIDAD,'#10' IMPORTEUNIDAD, IMPORTETOTAL, VISIBLE, PUNTOS, ' + + 'IMPORTEPUNTOS'#10' FROM'#10' DETALLESALBARANPAGO'#10' WHERE CODIGOALBAR' + + 'AN = :CODIGOALBARAN'#10' ORDER BY POSICION' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'CODIGOALBARAN' + TableField = 'CODIGOALBARAN' + end + item + DatasetField = 'NUMCONCEPTO' + TableField = 'NUMCONCEPTO' + end + item + DatasetField = 'DESCRIPCION' + TableField = 'DESCRIPCION' + end + item + DatasetField = 'CANTIDAD' + TableField = 'CANTIDAD' + end + item + DatasetField = 'IMPORTEUNIDAD' + TableField = 'IMPORTEUNIDAD' + end + item + DatasetField = 'IMPORTETOTAL' + TableField = 'IMPORTETOTAL' + end + item + DatasetField = 'POSICION' + TableField = 'POSICION' + end + item + DatasetField = 'TIPO' + TableField = 'TIPO' + end + item + DatasetField = 'VISIBLE' + TableField = 'VISIBLE' + end + item + DatasetField = 'PUNTOS' + TableField = 'PUNTOS' + end + item + DatasetField = 'IMPORTEPUNTOS' + TableField = 'IMPORTEPUNTOS' + end> + end> + Name = 'DetallesAlbaranCliente' + Fields = < + item + Name = 'CODIGOALBARAN' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'CODIGOALBARANCLIENTE' + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NUMCONCEPTO' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'NUMCONCEPTO' + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'POSICION' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'POSICIONCONCEPTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'TIPO' + DataType = datString + Size = 1 + Description = 'Cap'#237'tulo, etc' + BlobType = dabtUnknown + DictionaryEntry = 'TIPODETALLESALBARANCLIENTE' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'DESCRIPCION' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DictionaryEntry = 'DESCRIPCION' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CANTIDAD' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'CANTIDAD' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTEUNIDAD' + DataType = datCurrency + BlobType = dabtUnknown + DictionaryEntry = 'IMPORTEUNIDAD' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTETOTAL' + DataType = datCurrency + BlobType = dabtUnknown + DictionaryEntry = 'IMPORTETOTAL' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'VISIBLE' + DataType = datString + Size = 1 + BlobType = dabtUnknown + DictionaryEntry = 'VISIBLE' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PUNTOS' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'PUNTOS' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTEPUNTOS' + DataType = datCurrency + BlobType = dabtUnknown + DictionaryEntry = 'IMPORTEPUNTOS' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end + item + Params = < + item + Name = 'CODIGO' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'ALBARANPAGO' + SQL = + 'SELECT ALBARANPAGO.CODIGO, CONTACTOS.NOMBRE, ALBARANPAGO.SITUACI' + + 'ON,'#10' MONTAJES.REFERENCIA as REFERENCIAPRESUPUESTO'#10'FROM ALB' + + 'ARANPAGO'#10' INNER JOIN CONTACTOS ON (ALBARANPAGO.CODIGOCONTACTO ' + + '= CONTACTOS.CODIGO)'#10' LEFT OUTER JOIN MONTAJES ON (ALBARANPAGO.' + + 'CODIGOPRESUPUESTO = MONTAJES.CODIGOPRESUPUESTO)'#10'WHERE'#10' ALBAR' + + 'ANPAGO.CODIGO = :CODIGO' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'CODIGO' + TableField = 'CODIGO' + end + item + DatasetField = 'NOMBRE' + TableField = 'NOMBRE' + end + item + DatasetField = 'SITUACION' + TableField = 'SITUACION' + end + item + DatasetField = 'REFERENCIAPRESUPUESTO' + TableField = 'REFERENCIAPRESUPUESTO' + end> + end> + Name = 'AlbaranCliente_RefreshDataset' + Fields = < + item + Name = 'CODIGO' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'CODIGOALBARANCLIENTE' + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NOMBRE' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'SITUACION' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'REFERENCIAPRESUPUESTO' + DataType = datString + Size = 20 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end + item + Params = < + item + Name = 'CODIGO' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'ALBARANPAGO' + SQL = + 'SELECT ALBARANPAGO.CODIGOEMPRESA, ALBARANPAGO.CODIGO, ALBARANPAG' + + 'O.FECHAALTA,'#10' ALBARANPAGO.USUARIO, ALBARANPAGO.REFERENCIA,' + + ' ALBARANPAGO.CODIGOCONTACTO,'#10' ALBARANPAGO.FECHAALBARAN, AL' + + 'BARANPAGO.SITUACION, ALBARANPAGO.FECHAPAGO,'#10' ALBARANPAGO.B' + + 'ASEIMPONIBLE, ALBARANPAGO.DESCUENTO, ALBARANPAGO.IMPORTEDESCUENT' + + 'O,'#10' ALBARANPAGO.IVA, ALBARANPAGO.IMPORTEIVA, ALBARANPAGO.I' + + 'MPORTETOTAL,'#10' ALBARANPAGO.OBSERVACIONES, ALBARANPAGO.FORMA' + + 'PAGO,'#10' ALBARANPAGO.CODIGOPRESUPUESTO, MONTAJES.REFERENCIA ' + + 'as REFERENCIAPRE,'#10' '#10'CO.NIFCIF, CO.NOMBRE, CO.CALLE, CO.COD' + + 'IGOPOSTAL, CO.POBLACION, CO.TELEFONO1,'#10'CO.TELEFONO2, CO.MOVIL'#10#10'F' + + 'ROM ALBARANPAGO'#10'INNER JOIN CONTACTOS CO ON (ALBARANPAGO.CODIGOCO' + + 'NTACTO = CO.CODIGO)'#10'LEFT OUTER JOIN MONTAJES ON (ALBARANPAGO.COD' + + 'IGOPRESUPUESTO = MONTAJES.CODIGOPRESUPUESTO)'#10'WHERE ALBARANPAGO.C' + + 'ODIGO = :CODIGO' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'CODIGOEMPRESA' + TableField = 'CODIGOEMPRESA' + end + item + DatasetField = 'CODIGO' + TableField = 'CODIGO' + end + item + DatasetField = 'FECHAALTA' + TableField = 'FECHAALTA' + end + item + DatasetField = 'USUARIO' + TableField = 'USUARIO' + end + item + DatasetField = 'CODIGOCONTACTO' + TableField = 'CODIGOCONTACTO' + end + item + DatasetField = 'FECHAALBARAN' + TableField = 'FECHAALBARAN' + end + item + DatasetField = 'SITUACION' + TableField = 'SITUACION' + end + item + DatasetField = 'FECHAPAGO' + TableField = 'FECHAPAGO' + end + item + DatasetField = 'BASEIMPONIBLE' + TableField = 'BASEIMPONIBLE' + end + item + DatasetField = 'DESCUENTO' + TableField = 'DESCUENTO' + end + item + DatasetField = 'IMPORTEDESCUENTO' + TableField = 'IMPORTEDESCUENTO' + end + item + DatasetField = 'IVA' + TableField = 'IVA' + end + item + DatasetField = 'IMPORTEIVA' + TableField = 'IMPORTEIVA' + end + item + DatasetField = 'IMPORTETOTAL' + TableField = 'IMPORTETOTAL' + end + item + DatasetField = 'OBSERVACIONES' + TableField = 'OBSERVACIONES' + end + item + DatasetField = 'FORMAPAGO' + TableField = 'FORMAPAGO' + end + item + DatasetField = 'NOMBRE' + TableField = 'NOMBRE' + end + item + DatasetField = 'REFERENCIA' + TableField = 'REFERENCIA' + end + item + DatasetField = 'CODIGOPRESUPUESTO' + TableField = 'CODIGOPRESUPUESTO' + end + item + DatasetField = 'REFERENCIAPRE' + TableField = 'REFERENCIAPRE' + end + item + DatasetField = 'NIFCIF' + TableField = 'NIFCIF' + end + item + DatasetField = 'CALLE' + TableField = 'CALLE' + end + item + DatasetField = 'CODIGOPOSTAL' + TableField = 'CODIGOPOSTAL' + end + item + DatasetField = 'POBLACION' + TableField = 'POBLACION' + end + item + DatasetField = 'TELEFONO1' + TableField = 'TELEFONO1' + end + item + DatasetField = 'TELEFONO2' + TableField = 'TELEFONO2' + end + item + DatasetField = 'MOVIL' + TableField = 'MOVIL' + end> + end> + Name = 'InformeCabeceraAlbaranPago' + Fields = < + item + Name = 'CODIGOEMPRESA' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGO' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHAALTA' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'USUARIO' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'REFERENCIA' + DataType = datString + Size = 20 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOCONTACTO' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHAALBARAN' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'SITUACION' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHAPAGO' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'BASEIMPONIBLE' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'DESCUENTO' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTEDESCUENTO' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IVA' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTEIVA' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTETOTAL' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'OBSERVACIONES' + DataType = datMemo + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FORMAPAGO' + DataType = datMemo + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOPRESUPUESTO' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'REFERENCIAPRE' + DataType = datString + Size = 20 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NIFCIF' + DataType = datString + Size = 10 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NOMBRE' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CALLE' + DataType = datString + Size = 150 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOPOSTAL' + DataType = datString + Size = 5 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'POBLACION' + DataType = datString + Size = 40 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'TELEFONO1' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'TELEFONO2' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'MOVIL' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end + item + Params = < + item + Name = 'CODIGOALBARAN' + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'ALBARANPAGO' + SQL = + 'SELECT CODIGOALBARAN, NUMCONCEPTO, DESCRIPCION, CANTIDAD, IMPORT' + + 'EUNIDAD,'#10'IMPORTETOTAL, TIPO, POSICION'#10'FROM DETALLESALBARANPAGO'#10'W' + + 'HERE CODIGOALBARAN = :CODIGOALBARAN AND'#10'VISIBLE = '#39'S'#39#10'ORDER BY P' + + 'OSICION;' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'CODIGOALBARAN' + TableField = 'CODIGOALBARAN' + end + item + DatasetField = 'NUMCONCEPTO' + TableField = 'NUMCONCEPTO' + end + item + DatasetField = 'DESCRIPCION' + TableField = 'DESCRIPCION' + end + item + DatasetField = 'CANTIDAD' + TableField = 'CANTIDAD' + end + item + DatasetField = 'IMPORTEUNIDAD' + TableField = 'IMPORTEUNIDAD' + end + item + DatasetField = 'IMPORTETOTAL' + TableField = 'IMPORTETOTAL' + end + item + DatasetField = 'TIPO' + TableField = 'TIPO' + end + item + DatasetField = 'POSICION' + TableField = 'POSICION' + end> + end> + Name = 'InformeDetallesAlbaranPago' + Fields = < + item + Name = 'CODIGOALBARAN' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NUMCONCEPTO' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'DESCRIPCION' + DataType = datString + Size = 2000 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CANTIDAD' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTEUNIDAD' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTETOTAL' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'TIPO' + DataType = datString + Size = 1 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'POSICION' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end + item + Params = < + item + Name = 'FECHAINI' + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'FECHAFIN' + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'ALBARANPAGO' + SQL = + 'SELECT '#10' sum(BASEIMPONIBLE) AS BASEIMPONIBLE,'#10' sum(IMPORTE' + + 'IVA) AS IMPORTEIVA,'#10' sum(IMPORTETOTAL) AS IMPORTETOTAL'#10' FROM' + + #10' ALBARANPAGO'#10'WHERE FECHAALBARAN BETWEEN :FECHAINI AND :FECHA' + + 'FIN' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'BASEIMPONIBLE' + TableField = 'BASEIMPONIBLE' + end + item + DatasetField = 'IMPORTEIVA' + TableField = 'IMPORTEIVA' + end + item + DatasetField = 'IMPORTETOTAL' + TableField = 'IMPORTETOTAL' + end> + end> + Name = 'DarSumaImportes' + Description = 'Suma de todos los importes entre un intervalo de fechas' + Fields = < + item + Name = 'BASEIMPONIBLE' + DataType = datFloat + BlobType = dabtUnknown + LogChanges = False + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTEIVA' + DataType = datFloat + BlobType = dabtUnknown + LogChanges = False + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTETOTAL' + DataType = datFloat + BlobType = dabtUnknown + LogChanges = False + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end> + Commands = < + item + Params = < + item + Name = 'CODIGOEMPRESA' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'CODIGO' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'FECHAALTA' + DataType = datDateTime + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'USUARIO' + DataType = datString + Size = 100 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'CODIGOCONTACTO' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'FECHAALBARAN' + DataType = datDateTime + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'SITUACION' + DataType = datString + Size = 30 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'FECHAPAGO' + DataType = datDateTime + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'BASEIMPONIBLE' + DataType = datFloat + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'DESCUENTO' + DataType = datFloat + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'IMPORTEDESCUENTO' + DataType = datFloat + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'IVA' + DataType = datFloat + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'IMPORTEIVA' + DataType = datFloat + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'IMPORTETOTAL' + DataType = datFloat + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'OBSERVACIONES' + DataType = datMemo + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'FORMAPAGO' + DataType = datMemo + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'REFERENCIA' + DataType = datString + Size = 20 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'CODIGOPRESUPUESTO' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'ALBARANPAGO' + SQL = + 'INSERT'#10' INTO ALBARANPAGO'#10' (CODIGOEMPRESA, CODIGO, FECHAALTA,' + + ' USUARIO, CODIGOCONTACTO,'#10' FECHAALBARAN, SITUACION, FECHAPAG' + + 'O, BASEIMPONIBLE, '#10' DESCUENTO, IMPORTEDESCUENTO, IVA, IMPORT' + + 'EIVA, IMPORTETOTAL, '#10' OBSERVACIONES, FORMAPAGO, REFERENCIA, ' + + 'CODIGOPRESUPUESTO)'#10' VALUES'#10' (:CODIGOEMPRESA, :CODIGO, :FECHA' + + 'ALTA, :USUARIO, :CODIGOCONTACTO,'#10' :FECHAALBARAN, :SITUACION,' + + ' :FECHAPAGO, :BASEIMPONIBLE, '#10' :DESCUENTO, :IMPORTEDESCUENTO' + + ', :IVA, :IMPORTEIVA, :IMPORTETOTAL, '#10' :OBSERVACIONES, :FORMA' + + 'PAGO, :REFERENCIA, :CODIGOPRESUPUESTO)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Insert_AlbaranCliente' + end + item + Params = < + item + Name = 'CODIGOEMPRESA' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'FECHAALTA' + DataType = datDateTime + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'USUARIO' + DataType = datString + Size = 100 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'CODIGOCONTACTO' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'FECHAALBARAN' + DataType = datDateTime + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'SITUACION' + DataType = datString + Size = 30 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'FECHAPAGO' + DataType = datDateTime + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'BASEIMPONIBLE' + DataType = datFloat + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'DESCUENTO' + DataType = datFloat + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'IMPORTEDESCUENTO' + DataType = datFloat + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'IVA' + DataType = datFloat + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'IMPORTEIVA' + DataType = datFloat + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'IMPORTETOTAL' + DataType = datFloat + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'OBSERVACIONES' + DataType = datMemo + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'FORMAPAGO' + DataType = datMemo + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'REFERENCIA' + DataType = datString + Size = 20 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'CODIGOPRESUPUESTO' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'OLD_CODIGO' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'ALBARANPAGO' + SQL = + 'UPDATE ALBARANPAGO'#10' SET '#10' CODIGOEMPRESA = :CODIGOEMPRESA, '#10' ' + + ' FECHAALTA = :FECHAALTA, '#10' USUARIO = :USUARIO, '#10' CODIGOC' + + 'ONTACTO = :CODIGOCONTACTO, '#10' FECHAALBARAN = :FECHAALBARAN, '#10' ' + + ' SITUACION = :SITUACION, '#10' FECHAPAGO = :FECHAPAGO, '#10' BAS' + + 'EIMPONIBLE = :BASEIMPONIBLE, '#10' DESCUENTO = :DESCUENTO, '#10' I' + + 'MPORTEDESCUENTO = :IMPORTEDESCUENTO, '#10' IVA = :IVA, '#10' IMPOR' + + 'TEIVA = :IMPORTEIVA, '#10' IMPORTETOTAL = :IMPORTETOTAL, '#10' OBS' + + 'ERVACIONES = :OBSERVACIONES, '#10' FORMAPAGO = :FORMAPAGO, '#10' R' + + 'EFERENCIA = :REFERENCIA,'#10' CODIGOPRESUPUESTO = :CODIGOPRESUPUE' + + 'STO'#10' WHERE'#10' (CODIGO = :OLD_CODIGO)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Update_AlbaranCliente' + end + item + Params = < + item + Name = 'OLD_CODIGO' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'ALBARANPAGO' + SQL = + 'DELETE '#10' FROM'#10' ALBARANPAGO'#10' WHERE'#10' (CODIGO = :OLD_CODIGO' + + ')' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Delete_AlbaranCliente' + end> + RelationShips = < + item + Name = 'FK_DetallesAlbaranCliente_AlbaranCliente' + MasterDatasetName = 'AlbaranCliente' + MasterFields = 'CODIGO' + DetailDatasetName = 'DetallesAlbaranCliente' + DetailFields = 'CODIGOALBARAN' + end + item + Name = 'FK_InformeDetallesAlbaranPago_InformeCabeceraAlbaranPago' + MasterDatasetName = 'InformeCabeceraAlbaranPago' + MasterFields = 'CODIGO' + DetailDatasetName = 'InformeDetallesAlbaranPago' + DetailFields = 'CODIGOALBARAN' + end> + UpdateRules = < + item + Name = 'Insert AlbaranCliente' + DoUpdate = False + DoInsert = True + DoDelete = False + DatasetName = 'AlbaranCliente' + FailureBehaviour = fbRaiseException + end + item + Name = 'Update AlbaranCliente' + DoUpdate = True + DoInsert = False + DoDelete = False + DatasetName = 'AlbaranCliente' + FailureBehaviour = fbRaiseException + end + item + Name = 'Delete DetallesAlbaranCliente' + DoUpdate = False + DoInsert = False + DoDelete = True + DatasetName = 'DetallesAlbaranCliente' + FailureBehaviour = fbRaiseException + end + item + Name = 'Insert DetallesAlbaranCliente' + DoUpdate = False + DoInsert = True + DoDelete = False + DatasetName = 'DetallesAlbaranCliente' + FailureBehaviour = fbRaiseException + end + item + Name = 'Update DetallesAlbaranCliente' + DoUpdate = True + DoInsert = False + DoDelete = False + DatasetName = 'DetallesAlbaranCliente' + FailureBehaviour = fbRaiseException + end + item + Name = 'Delete AlbaranCliente' + DoUpdate = False + DoInsert = False + DoDelete = True + DatasetName = 'AlbaranCliente' + FailureBehaviour = fbRaiseException + end> + Left = 48 + Top = 24 + end + object bpAlbaranes: TDABusinessProcessor + Schema = schAlbaranesCliente + InsertCommandName = 'Insert_AlbaranCliente' + UpdateCommandName = 'Update_AlbaranCliente' + RefreshDatasetName = 'AlbaranCliente_RefreshDataset' + ReferencedDataset = 'AlbaranCliente' + ProcessorOptions = [poAutoGenerateDelete, poPrepareCommands] + UpdateMode = updWhereKeyOnly + Left = 184 + Top = 24 + end + object frxDBDetalles: TfrxDBDataset + UserName = 'frxDBDetalles' + CloseDataSource = False + DataSource = DADataDetalles + Left = 200 + Top = 128 + end + object frxDBCabecera: TfrxDBDataset + UserName = 'frxDBCabecera' + CloseDataSource = False + DataSource = DADataCabecera + Left = 120 + Top = 128 + end + object DADataCabecera: TDADataSource + DataTable = tbl_AlbaranPago + Left = 120 + Top = 176 + end + object DADataDetalles: TDADataSource + DataTable = tbl_DetallesAlbaranPago + Left = 200 + Top = 176 + end + object frxReport1: TfrxReport + Version = '3.23.7' + DotMatrixReport = False + EngineOptions.DoublePass = True + IniFile = '\Software\Fast Reports' + PreviewOptions.Buttons = [pbPrint, pbLoad, pbSave, pbExport, pbZoom, pbFind, pbOutline, pbPageSetup, pbTools, pbEdit, pbNavigator] + PreviewOptions.OutlineWidth = 180 + PreviewOptions.Zoom = 1.000000000000000000 + PrintOptions.Printer = 'Default' + ReportOptions.CreateDate = 37871.995398692100000000 + ReportOptions.Description.Strings = ( + 'Demonstrates how to create simple list report.') + ReportOptions.LastChange = 38708.696339131940000000 + ReportOptions.VersionBuild = '1' + ReportOptions.VersionMajor = '12' + ReportOptions.VersionMinor = '13' + ReportOptions.VersionRelease = '1' + ScriptLanguage = 'PascalScript' + ScriptText.Strings = ( + 'procedure Band4OnBeforePrint(Sender: TfrxComponent);' + 'begin' + ' case of' + ' '#39'C'#39': begin' + ' MemoCampo12.Style := '#39'Concepto comentario'#39';' + ' MemoCampo2.Style := '#39'Concepto comentario'#39';' + ' MemoCampo3.Style := '#39'Concepto comentario'#39';' + ' MemoCampo4.Style := '#39'Concepto comentario'#39';' + ' end;' + ' '#39'S'#39': begin' + ' MemoCampo12.Style := '#39'Concepto subtotal'#39';' + ' MemoCampo2.Style := '#39'Concepto subtotal'#39';' + ' MemoCampo3.Style := '#39'Concepto subtotal'#39';' + ' MemoCampo4.Style := '#39'Concepto subtotal'#39';' + ' end;' + ' '#39'A'#39': begin' + ' MemoCampo12.Style := '#39'Concepto normal'#39';' + ' MemoCampo2.Style := '#39'Concepto normal'#39';' + ' MemoCampo3.Style := '#39'Concepto normal'#39';' + ' MemoCampo4.Style := '#39'Concepto normal'#39';' + ' end;' + ' end;' + 'end;' + '' + 'procedure ReportSummary1OnBeforePrint(Sender: TfrxComponent);' + 'begin' + + ' Engine.CurY := Engine.CurY + Engine.FreeSpace - ReportSum' + + 'mary1.Height - 1;' + 'end;' + '' + 'begin' + '' + 'end.') + StoreInDFM = False + Left = 40 + Top = 128 + Datasets = < + item + DataSet = frxDBCabecera + DataSetName = 'frxDBCabecera' + end + item + DataSet = frxDBDetalles + DataSetName = 'frxDBDetalles' + end> + Variables = <> + Style = < + item + Name = 'Concepto normal' + Color = clNone + Font.Charset = ANSI_CHARSET + Font.Color = clWindowText + Font.Height = -13 + Font.Name = 'Tahoma' + Font.Style = [] + end + item + Name = 'Concepto subtotal' + Color = 15790320 + Font.Charset = ANSI_CHARSET + Font.Color = clWindowText + Font.Height = -13 + Font.Name = 'Tahoma' + Font.Style = [fsBold] + end + item + Name = 'Cabecera de columna' + Color = 15790320 + Font.Charset = ANSI_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Tahoma' + Font.Style = [fsBold] + Frame.Typ = [ftLeft, ftRight, ftTop, ftBottom] + end> + end + object tbl_AlbaranPago: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = <> + Params = <> + MasterMappingMode = mmDataRequest + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteFetchEnabled = False + SchemaCall.Params = <> + DataRequestCall.Params = <> + DataUpdateCall.Params = <> + ScriptCall.Params = <> + ReadOnly = False + Adapter = DABINAdapter + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + IndexDefs = <> + Left = 120 + Top = 232 + end + object tbl_DetallesAlbaranPago: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = <> + Params = <> + MasterMappingMode = mmDataRequest + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteFetchEnabled = False + SchemaCall.Params = <> + DataRequestCall.Params = <> + DataUpdateCall.Params = <> + ScriptCall.Params = <> + ReadOnly = False + Adapter = DABINAdapter + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + IndexDefs = <> + Left = 200 + Top = 232 + end + object DABINAdapter: TDABINAdapter + Left = 48 + Top = 72 + end +end diff --git a/Modulos/Albaranes de cliente/Servidor/srvAlbaranesCliente_Impl.pas b/Modulos/Albaranes de cliente/Servidor/srvAlbaranesCliente_Impl.pas new file mode 100644 index 0000000..77f619a --- /dev/null +++ b/Modulos/Albaranes de cliente/Servidor/srvAlbaranesCliente_Impl.pas @@ -0,0 +1,163 @@ +unit srvAlbaranesCliente_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:} DARemoteService_Impl, + {Used RODLs:} DataAbstract_Intf, + {Generated:} FactuGES_Intf, uDAClasses, uDAScriptingProvider, + uDABusinessProcessor, uDADataTable, uDAInterfaces, frxClass, DB, frxDBSet, + uDACDSDataTable, uDABINAdapter; + +type + { TsrvAlbaranesCliente } + TsrvAlbaranesCliente = class(TDARemoteService, IsrvAlbaranesCliente) + bpAlbaranes: TDABusinessProcessor; + frxDBDetalles: TfrxDBDataset; + frxDBCabecera: TfrxDBDataset; + DADataCabecera: TDADataSource; + DADataDetalles: TDADataSource; + tbl_AlbaranPago: TDACDSDataTable; + tbl_DetallesAlbaranPago: TDACDSDataTable; + DABINAdapter: TDABINAdapter; + schAlbaranesCliente: TDASchema; + frxReport1: TfrxReport; + private + protected + function GetNextAutoinc: Integer; + function ExisteAlbaranDePresupuesto(const CodigoPresupuesto: Integer; out CodigoAlbaran: Integer): Boolean; + function GenerateReport(const Codigo: Integer): Binary; + function DarNuevaReferencia: String; + function PuedoEliminarAlbaran(const CodigoAlbaran: Integer): Boolean; + function DarSumaImportes(const FechaIni: DateTime; const FechaFin: DateTime): TstImportes; + end; + +implementation + +{$R *.dfm} +uses + {Generated:} FactuGES_Invk, uDataModuleServer, Forms, Dialogs, + schAlbaranesClienteClient_Intf; + +procedure Create_srvAlbaranesCliente(out anInstance : IUnknown); +begin + anInstance := TsrvAlbaranesCliente.Create(NIL); +end; + +{ TsrvAlbaranesCliente } + +function TsrvAlbaranesCliente.DarSumaImportes(const FechaIni, + FechaFin: DateTime): TstImportes; +var + dsSuma: IDADataset; + AImportes : TstImportes; +begin + Connection.BeginTransaction; + AImportes := TstImportes.Create; + dsSuma := schAlbaranesCliente.NewDataset(Connection, nme_DarSumaImportes, ['FECHAINI', 'FECHAFIN'], [FechaIni, FechaFin]); + try + dsSuma.Open; + if dsSuma.RecordCount > 0 then + with AImportes do + begin + BaseImponible := dsSuma.FieldByName(fld_DarSumaImportesBASEIMPONIBLE).AsCurrency; + ImporteIVA := dsSuma.FieldByName(fld_DarSumaImportesIMPORTEIVA).AsCurrency; + ImporteTotal := dsSuma.FieldByName(fld_DarSumaImportesIMPORTETOTAL).AsCurrency; + end; + Result := AImportes; + finally + dsSuma.Close; + end; + Connection.RollbackTransaction; +end; + +function TsrvAlbaranesCliente.DarNuevaReferencia: String; +var + dsReferencia: IDADataset; +begin + dsReferencia := schAlbaranesCliente.NewDataset(Connection, 'DarReferenciaAlbaran'); + dsReferencia.Active := True; + Result := dsReferencia.FieldByName('REFERENCIA').AsString; +end; + +function TsrvAlbaranesCliente.ExisteAlbaranDePresupuesto( + const CodigoPresupuesto: Integer; out CodigoAlbaran: Integer): Boolean; +var + ADataSet : IDADataset; +begin + Result := False; + ADataSet := schAlbaranesCliente.NewDataset(Connection, nme_AlbaranDePresupuesto); + ADataSet.ParamByName('CODIGOPRESUPUESTO').AsInteger := CodigoPresupuesto; + ADataSet.Open; + if ADataSet.RecordCount > 0 then + begin + CodigoAlbaran := ADataSet.FieldByName(fld_AlbaranDePresupuestoCODIGO).AsInteger; + Result := True; + end; + ADataSet.Close; +end; + +function TsrvAlbaranesCliente.GenerateReport(const Codigo: Integer): Binary; +var + dsMaster: IDADataset; + dsDetail: IDADataset; + AStream: TMemoryStream; +begin + AStream := TMemoryStream.Create; + Result := Binary.Create; + try + dsMaster := schAlbaranesCliente.NewDataset(Connection, 'InformeCabeceraAlbaranPago', ['CODIGO'], [Codigo]); + dsDetail := schAlbaranesCliente.NewDataset(Connection, 'InformeDetallesAlbaranPago', ['CODIGOALBARAN'], [Codigo]); + + AStream.Clear; + ServiceAdapter.WriteDataset(AStream, dsMaster, [woRows, woSchema], -1); + ServiceAdapter.ReadDataset(AStream, tbl_AlbaranPago, TRUE, '', TRUE, TRUE); + + AStream.Clear; + ServiceAdapter.WriteDataset(AStream, dsDetail, [woRows, woSchema], -1); + ServiceAdapter.ReadDataset(AStream, tbl_DetallesAlbaranPago, TRUE, '', TRUE, TRUE); + + frxReport1.LoadFromFile(DarRutaInformes + 'InfAlbaran.fr3', True); + frxReport1.PrepareReport; + frxReport1.PreviewPages.SaveToStream(Result); + finally + AStream.Free; + end; +end; + +function TsrvAlbaranesCliente.GetNextAutoinc: Integer; +begin + Result := uDataModuleServer.GetNextAutoinc(Connection, 'GEN_ALBARANESCLIENTE'); +end; + +function TsrvAlbaranesCliente.PuedoEliminarAlbaran( + const CodigoAlbaran: Integer): Boolean; +var + dsAlbaran: IDASQLCommand; +begin + Result := True; + Connection.BeginTransaction; + try + dsAlbaran := schAlbaranesCliente.NewCommand(Connection, 'Delete_AlbaranCliente', ['OLD_CODIGO'], [CodigoAlbaran]); + except + on E: Exception do + Result := False; + end; + Connection.RollbackTransaction; +end; + +initialization + TROClassFactory.Create('srvAlbaranesCliente', Create_srvAlbaranesCliente, TsrvAlbaranesCliente_Invoker); + +finalization + +end. diff --git a/Modulos/Almacenes/Cliente/Almacenes.bdsproj b/Modulos/Almacenes/Cliente/Almacenes.bdsproj new file mode 100644 index 0000000..e0477e2 --- /dev/null +++ b/Modulos/Almacenes/Cliente/Almacenes.bdsproj @@ -0,0 +1,492 @@ + + + + + + + + + + + + Almacenes.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 3 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + .\ + ..\..\..\Output\Cliente + .\ + $(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\Reglas + vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;IntrawebDB_50_70;Intraweb_50_70;Rave50CLX;Rave50VCL;dclOfficeXP;PluginSDK_D7R;DJcl;JvStdCtrlsD7R;JvAppFrmD7R;JvCoreD7R;JvBandsD7R;JvBDED7R;JvDBD7R;JvDlgsD7R;JvCmpD7R;JvCryptD7R;JvCtrlsD7R;JvCustomD7R;JvDockingD7R;JvDotNetCtrlsD7R;JvEDID7R;qrpt;JvGlobusD7R;JvHMID7R;JvInspectorD7R;JvInterpreterD7R;JvJansD7R;JvManagedThreadsD7R;JvMMD7R;JvNetD7R;JvPageCompsD7R;JvPluginD7R;JvPrintPreviewD7R;JvSystemD7R;JvTimeFrameworkD7R;JvUIBD7R;JvValidatorsD7R;JvWizardD7R;JvXPCtrlsD7R;GUISDK_D7;RemObjects_WebBroker_D7;RemObjects_Indy_D7;RemObjects_RODX_D7;RemObjects_BPDX_D7;PascalScript_RO_D7;DataAbstract_Core_D7;DataAbstract_IDE_D7;DataAbstract_DBXDriver_D7;DataAbstract_Scripting_D7;dxBarD7;dxComnD7;cxLibraryVCLD7;cxEditorsVCLD7;dxThemeD7;cxDataD7;cxExtEditorsVCLD7;cxGridVCLD7;cxPageControlVCLD7;cxSchedulerVCLD7;cxTreeListVCLD7;dxBarDBNavD7;dxBarExtDBItemsD7;dxBarExtItemsD7;dxDockingD7;dxNavBarD7;dxPSCoreD7;dxsbD7;dxPSLnksD7;dxPSTeeChartD7;EPCOTAUtils70;PNG_D7;PngComponentsD7;tb2k_d7;tbx_d7;UserControlD7_RT;fqb70;frx7;frxADO7;frxBDE7;frxcs7;frxDB7;frxDBX7;frxe7;frxIBX7;fs7;fsADO7;fsBDE7;fsDB7;fsIBX7;cxExportVCLD7;cxIntl5D7;cxIntlPrintSys3D7;dxPScxCommonD7;dxPScxExtCommonD7;dxPScxGridLnkD7;dxPScxPCProdD7;dxPScxSchedulerLnkD7;dxPScxTLLnkD7;dxPSDBTeeChartD7;dxPsPrVwAdvD7 + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + diff --git a/Modulos/Almacenes/Cliente/Almacenes.cfg b/Modulos/Almacenes/Cliente/Almacenes.cfg new file mode 100644 index 0000000..5ba1fcf --- /dev/null +++ b/Modulos/Almacenes/Cliente/Almacenes.cfg @@ -0,0 +1,45 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O- +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-GD +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N".\" +-LE"..\..\..\Output\Cliente" +-LN".\" +-U"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\Reglas" +-O"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\Reglas" +-I"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\Reglas" +-R"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\Reglas" +-Z +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/Modulos/Almacenes/Cliente/Almacenes.dcp b/Modulos/Almacenes/Cliente/Almacenes.dcp new file mode 100644 index 0000000..dacc4ea Binary files /dev/null and b/Modulos/Almacenes/Cliente/Almacenes.dcp differ diff --git a/Modulos/Almacenes/Cliente/Almacenes.dof b/Modulos/Almacenes/Cliente/Almacenes.dof new file mode 100644 index 0000000..e9a4708 --- /dev/null +++ b/Modulos/Almacenes/Cliente/Almacenes.dof @@ -0,0 +1,175 @@ +[FileVersion] +Version=7.0 +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=0 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=1 +SymbolLibrary=1 +SymbolPlatform=1 +UnitLibrary=1 +UnitPlatform=1 +UnitDeprecated=1 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 +[Linker] +MapFile=3 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription= +[Directories] +OutputDir= +UnitOutputDir=.\ +PackageDLLOutputDir=..\..\..\Output\Cliente +PackageDCPOutputDir=.\ +SearchPath=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\Reglas +Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;IntrawebDB_50_70;Intraweb_50_70;Rave50CLX;Rave50VCL;dclOfficeXP;PluginSDK_D7R;DJcl;JvStdCtrlsD7R;JvAppFrmD7R;JvCoreD7R;JvBandsD7R;JvBDED7R;JvDBD7R;JvDlgsD7R;JvCmpD7R;JvCryptD7R;JvCtrlsD7R;JvCustomD7R;JvDockingD7R;JvDotNetCtrlsD7R;JvEDID7R;qrpt;JvGlobusD7R;JvHMID7R;JvInspectorD7R;JvInterpreterD7R;JvJansD7R;JvManagedThreadsD7R;JvMMD7R;JvNetD7R;JvPageCompsD7R;JvPluginD7R;JvPrintPreviewD7R;JvSystemD7R;JvTimeFrameworkD7R;JvUIBD7R;JvValidatorsD7R;JvWizardD7R;JvXPCtrlsD7R;GUISDK_D7;RemObjects_WebBroker_D7;RemObjects_Indy_D7;RemObjects_RODX_D7;RemObjects_BPDX_D7;PascalScript_RO_D7;DataAbstract_Core_D7;DataAbstract_IDE_D7;DataAbstract_DBXDriver_D7;DataAbstract_Scripting_D7;dxBarD7;dxComnD7;cxLibraryVCLD7;cxEditorsVCLD7;dxThemeD7;cxDataD7;cxExtEditorsVCLD7;cxGridVCLD7;cxPageControlVCLD7;cxSchedulerVCLD7;cxTreeListVCLD7;dxBarDBNavD7;dxBarExtDBItemsD7;dxBarExtItemsD7;dxDockingD7;dxNavBarD7;dxPSCoreD7;dxsbD7;dxPSLnksD7;dxPSTeeChartD7;EPCOTAUtils70;PNG_D7;PngComponentsD7;tb2k_d7;tbx_d7;UserControlD7_RT;fqb70;frx7;frxADO7;frxBDE7;frxcs7;frxDB7;frxDBX7;frxe7;frxIBX7;fs7;fsADO7;fsBDE7;fsDB7;fsIBX7;cxExportVCLD7;cxIntl5D7;cxIntlPrintSys3D7;dxPScxCommonD7;dxPScxExtCommonD7;dxPScxGridLnkD7;dxPScxPCProdD7;dxPScxSchedulerLnkD7;dxPScxTLLnkD7;dxPSDBTeeChartD7;dxPsPrVwAdvD7 +Conditionals= +DebugSourceDirs= +UsePackages=0 +[Parameters] +RunParams= +HostApplication= +Launcher= +UseLauncher=0 +DebugCWD= +[Language] +ActiveLang= +ProjectLang= +RootDir= +[Version Info] +IncludeVerInfo=1 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=3082 +CodePage=1252 +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= +[HistoryLists\hlDebugSourcePath] +Count=1 +Item0=D:\Proyectos\Componentes\GUISDK\Sources\;D:\Proyectos\Componentes\PluginSDK\Source\;D:\Proyectos\FactuGES (Estudio)\Codigo\Modulos\Contactos\Cliente;D:\Proyectos\FactuGES (Estudio)\Codigo\Modulos\Contactos\Reglas +[HistoryLists\hlUnitAliases] +Count=1 +Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +[HistoryLists\hlSearchPath] +Count=16 +Item0=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente;..\..\Asientos\Cliente;..\..\Cuentas\Cliente +Item1=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente;..\..\Asientos\Cliente +Item2=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente +Item3=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente +Item4=..\Modulos\Presupuestos\Reglas;..\Modulos\Contactos\Reglas;..\Base;..\Configuracion;..\Usuarios;..\Modulos\Albaranes de cliente\Reglas +Item5=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\Base;..\Configuracion;..\Usuarios;..\Modulos\Intervalos;..\Modulos\Documentos asociados;..\Modulos\Contactos\Cliente;..\Modulos\Contactos\Reglas;..\Modulos\Presupuestos\Cliente;..\Modulos\Presupuestos\Reglas;..\Modulos\Albaranes de cliente\Cliente;..\Modulos\Albaranes de cliente\Reglas;..\Modulos\Facturas de cliente\Cliente;..\Modulos\Facturas de cliente\Reglas;..\Modulos\Pedidos a proveedor\Cliente;..\Modulos\Pedidos a proveedor\Reglas;..\Modulos\Facturas de proveedor\Cliente;..\Modulos\Facturas de proveedor\Reglas;..\Modulos\Montajes\Reglas;..\Modulos\Montajes\Cliente;..\Modulos\Articulos\Cliente;..\Modulos\Articulos\Reglas;..\Modulos\Almacenes\Reglas;..\Modulos\Almacenes\Cliente;..\Modulos\Pagos\Reglas;..\Modulos\Pagos\Cliente;..\Modulos\Cuentas\Reglas;..\Modulos\Cuentas\Cliente;..\Modulos\Asientos\Reglas;..\Modulos\Asientos\Cliente;..\Modulos\Calendarios\Cliente;..\Modulos\Calendarios\Reglas +Item6=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente;..\..\Documentos asociados;..\..\Contactos\Cliente;..\..\Almacenes\Cliente +Item7=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados +Item8=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente;..\..\Documentos asociados;..\..\Contactos\Cliente +Item9=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente;..\..\Documentos asociados +Item10=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente +Item11=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados;..\..\Montajes\Cliente;..\..\Almacenes\Cliente +Item12=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados;..\..\Montajes\Cliente +Item13=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\Servidor +Item14=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\base;..\Modulos\Calendarios\Cliente;..\Modulos\Calendarios\Reglas +Item15=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\Base;..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios +[HistoryLists\hlUnitOutputDirectory] +Count=1 +Item0=.\ +[HistoryLists\hlOutputDirectorry] +Count=2 +Item0=..\Output\Servidor +Item1=..\Output\Cliente +[HistoryLists\hlBPLOutput] +Count=3 +Item0=..\..\..\Output\Cliente +Item1=..\Output\Cliente +Item2=..\..\Output\Cliente +[HistoryLists\hlDCPOutput] +Count=1 +Item0=.\ diff --git a/Modulos/Almacenes/Cliente/Almacenes.dpk b/Modulos/Almacenes/Cliente/Almacenes.dpk new file mode 100644 index 0000000..239543f --- /dev/null +++ b/Modulos/Almacenes/Cliente/Almacenes.dpk @@ -0,0 +1,82 @@ +package Almacenes; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION OFF} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$IMPLICITBUILD OFF} + +requires + vcl, + rtl, + PluginSDK_D7R, + GUISDK_D7, + PNG_D7, + PngComponentsD7, + dbrtl, + vcldb, + dsnap, + adortl, + JvCoreD7R, + vclx, + vcljpg, + JvAppFrmD7R, + JvStdCtrlsD7R, + JvSystemD7R, + vclactnband, + designide, + cxLibraryVCLD7, + dxThemeD7, + cxEditorsVCLD7, + cxDataD7, + JvPageCompsD7R, + tb2k_d7, + tbx_d7, + BaseD7, + Usuarios, + dxPSCoreD7, + dxComnD7, + cxGridVCLD7, + cxPageControlVCLD7, + cxExtEditorsVCLD7, + cxExportVCLD7, + cxIntlPrintSys3D7, + dxPScxCommonD7, + dxPSLnksD7, + vclshlctrls, + dxPScxGridLnkD7, + dclcxLibraryVCLD7, + frx7, + fs7, + fqb70, + bdertl; + +contains + uPluginControllerAlmacenes in 'uPluginControllerAlmacenes.pas' {ModuleAlmacenes: TModuleController}, + uViewAlmacen in 'uViewAlmacen.pas' {frViewAlmacen: TFrame}, + uEditorAlmacen in 'uEditorAlmacen.pas' {fEditorAlmacen: TCustomEditor}, + uDataModuleAlmacenes in 'uDataModuleAlmacenes.pas' {dmAlmacenes: TDAClientDataModule}, + uEditorAlmacenes in 'uEditorAlmacenes.pas' {fEditorAlmacenes: TCustomEditor}, + uViewAlmacenes in 'uViewAlmacenes.pas' {frViewAlmacenes: TFrame}, + uListaAlmacenes in 'uListaAlmacenes.pas' {fListaAlmacenes}, + uBizAlmacenes in '..\Reglas\uBizAlmacenes.pas'; + +end. diff --git a/Modulos/Almacenes/Cliente/Almacenes.drc b/Modulos/Almacenes/Cliente/Almacenes.drc new file mode 100644 index 0000000..a5d5271 --- /dev/null +++ b/Modulos/Almacenes/Cliente/Almacenes.drc @@ -0,0 +1,14 @@ +/* VER150 + Generated by the Borland Delphi Pascal Compiler + because -GD or --drc was supplied to the compiler. + + This file contains compiler-generated resources that + were bound to the executable. + If this file is empty, then no compiler-generated + resources were bound to the produced executable. +*/ + +STRINGTABLE +BEGIN +END + diff --git a/Modulos/Almacenes/Cliente/Almacenes.res b/Modulos/Almacenes/Cliente/Almacenes.res new file mode 100644 index 0000000..ec5f233 Binary files /dev/null and b/Modulos/Almacenes/Cliente/Almacenes.res differ diff --git a/Modulos/Almacenes/Cliente/uDataModuleAlmacenes.ddp b/Modulos/Almacenes/Cliente/uDataModuleAlmacenes.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Almacenes/Cliente/uDataModuleAlmacenes.ddp differ diff --git a/Modulos/Almacenes/Cliente/uDataModuleAlmacenes.dfm b/Modulos/Almacenes/Cliente/uDataModuleAlmacenes.dfm new file mode 100644 index 0000000..2b412c9 --- /dev/null +++ b/Modulos/Almacenes/Cliente/uDataModuleAlmacenes.dfm @@ -0,0 +1,323 @@ +object dmAlmacenes: TdmAlmacenes + OldCreateOrder = True + OnCreate = DAClientDataModuleCreate + RemoteService = RORemoteService + Adapter = DABINAdapter + SchemaCall.MethodName = 'GetSchemaAsXML' + SchemaCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtString + end> + Left = 328 + Top = 337 + Height = 208 + Width = 313 + object RORemoteService: TRORemoteService + ServiceName = 'srvAlmacenes' + Message = dmBase.ROMessage + Channel = dmBase.ROChannel + Left = 48 + Top = 20 + end + object DABINAdapter: TDABINAdapter + Left = 48 + Top = 88 + end + object tbl_Almacenes: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'CODIGOEMPRESA' + DataType = datInteger + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'C'#243'd. empresa' + Alignment = taLeftJustify + DictionaryEntry = 'CODIGOEMPRESA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGO' + DataType = datAutoInc + BlobType = dabtUnknown + GeneratorName = 'GEN_ALMACENES' + Required = True + DisplayWidth = 0 + DisplayLabel = 'C'#243'd. almac'#233'n' + Alignment = taLeftJustify + DictionaryEntry = 'CODIGOALMACEN_GEN' + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHAALTA' + DataType = datDateTime + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'Fecha de alta' + Alignment = taLeftJustify + DictionaryEntry = 'FECHAALTA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'USUARIO' + DataType = datString + Size = 100 + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'Usuario de alta' + Alignment = taLeftJustify + DictionaryEntry = 'USUARIO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NOMBRE' + DataType = datString + Size = 100 + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'Nombre' + Alignment = taLeftJustify + DictionaryEntry = 'NOMBRE' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CALLE' + DataType = datString + Size = 150 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Calle' + Alignment = taLeftJustify + DictionaryEntry = 'CALLE' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PROVINCIA' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Provincia' + Alignment = taLeftJustify + DictionaryEntry = 'PROVINCIA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'POBLACION' + DataType = datString + Size = 40 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Poblaci'#243'n' + Alignment = taLeftJustify + DictionaryEntry = 'POBLACION' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOPOSTAL' + DataType = datString + Size = 5 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'C'#243'd. postal' + Alignment = taLeftJustify + DictionaryEntry = 'CODIGOPOSTAL' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'TELEFONO' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Tel'#233'fono' + Alignment = taLeftJustify + DictionaryEntry = 'TELEFONO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'MOVIL' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'M'#243'vil' + Alignment = taLeftJustify + DictionaryEntry = 'MOVIL' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FAX' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Fax' + Alignment = taLeftJustify + DictionaryEntry = 'FAX' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PERSONACONTACTO' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Persona de contacto' + Alignment = taLeftJustify + DictionaryEntry = 'PERSONACONTACTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'OBSERVACIONES' + DataType = datMemo + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Observaciones' + Alignment = taLeftJustify + DictionaryEntry = 'OBSERVACIONES' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + Params = <> + MasterMappingMode = mmDataRequest + StreamingOptions = [soDisableEventsWhileStreaming] + SchemaCall.MethodName = 'GetDatasetSchema' + SchemaCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBinary + end + item + Name = 'aDatasetName' + ParamType = fIn + DataType = rtString + Value = 'ALMACENES' + end> + DataRequestCall.MethodName = 'GetDatasetDataEx' + DataRequestCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBinary + end + item + Name = 'DatasetName' + ParamType = fIn + DataType = rtString + Value = 'ALMACENES' + end + item + Name = 'Params' + ParamType = fIn + DataType = rtUserDefined + UserClassName = 'TDADatasetParamArray' + end + item + Name = 'UserFilter' + ParamType = fIn + DataType = rtString + Value = '' + end + item + Name = 'IncludeSchema' + ParamType = fIn + DataType = rtBoolean + Value = False + end + item + Name = 'MaxRecords' + ParamType = fIn + DataType = rtInteger + Value = -1 + end> + DataUpdateCall.MethodName = 'UpdateData' + DataUpdateCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBinary + end + item + Name = 'Delta' + ParamType = fIn + DataType = rtBinary + end> + ScriptCall.MethodName = 'GetDatasetScripts' + ScriptCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtString + Value = '' + end + item + Name = 'DatasetNames' + ParamType = fIn + DataType = rtString + Value = 'ALMACENES' + end> + ReadOnly = False + RemoteService = RORemoteService + Adapter = DABINAdapter + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'ALMACENES' + IndexDefs = <> + Left = 152 + Top = 24 + end + object ds_Almacenes: TDADataSource + DataTable = tbl_Almacenes + Left = 224 + Top = 24 + end +end diff --git a/Modulos/Almacenes/Cliente/uDataModuleAlmacenes.pas b/Modulos/Almacenes/Cliente/uDataModuleAlmacenes.pas new file mode 100644 index 0000000..b2dfa0e --- /dev/null +++ b/Modulos/Almacenes/Cliente/uDataModuleAlmacenes.pas @@ -0,0 +1,136 @@ +unit uDataModuleAlmacenes; + +interface + +uses {vcl:} SysUtils, Classes, DB, DBClient, + {RemObjects:} uDAClientDataModule, uDADataTable, uDABINAdapter, + uROServiceComponent, uRORemoteService, uROClient, uROBinMessage, + uROWinInetHttpChannel, uDAScriptingProvider, uDACDSDataTable, + uBizAlmacenes; + +type + TdmAlmacenes = class(TDAClientDataModule) + DABINAdapter: TDABINAdapter; + RORemoteService: TRORemoteService; + tbl_Almacenes: TDACDSDataTable; + ds_Almacenes: TDADataSource; + procedure DAClientDataModuleCreate(Sender: TObject); + private + public + function GetItems: IBizAlmacen; + function GetItem(Codigo : Integer): IBizAlmacen; + procedure Preview; + function PuedoEliminarAlmacen(Codigo : Integer) : Boolean; + end; + +var + dmAlmacenes: TdmAlmacenes; + +implementation + +{$R *.DFM} + +uses + Controls, Forms, uDAInterfaces, DataAbstract_Intf, FactuGES_Intf, + uDataTableUtils, uROTypes, uEditorPreview, + Dialogs, schAlmacenesClient_Intf, uDataModuleBase, uDBSelectionList; + +const + MAX_RECORDS = 100; + + +procedure TdmAlmacenes.DAClientDataModuleCreate(Sender: TObject); +begin + RORemoteService.Channel := dmBase.Channel; + RORemoteService.Message := dmBase.Message; +end; + +function TdmAlmacenes.GetItems: IBizAlmacen; +var + dtAlmacenes: TDACDSDataTable; + ACursor: TCursor; +begin + ACursor := Screen.Cursor; + Screen.Cursor := crHourGlass; + try + dtAlmacenes := TDACDSDataTable.Create(NIL); + CloneDataTable(tbl_Almacenes, dtAlmacenes); + dtAlmacenes.BusinessRulesID := 'BizAlmacen'; + Result := (dtAlmacenes as IBizAlmacen); + finally + Screen.Cursor := ACursor; + end; +end; + +procedure TdmAlmacenes.Preview; +var + AStream: TMemoryStream; + AEditorPreview : TfEditorPreview; +begin +{ AStream := Binary.Create; + AEditorPreview := TfEditorPreview.Create(Application); + try + AStream := (RemoteService as ISrvContactos).GenerateReport; + AEditorPreview.Report.PreviewPages.LoadFromStream(AStream); + AEditorPreview.ShowModal; + finally + AEditorPreview.Release; + AStream.Free; + end; +} +end; + +{function TdmAlmacenes.GetCliente(Codigo: Integer): IBizCliente; +var +// dtContactos: TDACDSDataTable; +// dtCategorias: TDACDSDataTable; +// ACursor: TCursor; +begin +{ ACursor := Screen.Cursor; + Screen.Cursor := crHourGlass; + try + dtContactos := TDACDSDataTable.Create(NIL); + CloneDataTable(tbl_Contactos, dtContactos); + dtContactos.BusinessRulesID := 'BizCliente'; + + dtCategorias := TDACDSDataTable.Create(NIL); + CloneDataTable(tbl_CategoriasContacto, dtCategorias); + dtCategorias.BusinessRulesID := 'BizCategoria'; + (dtContactos as IBizContacto).Categorias := (dtCategorias as IBizCategoriasContacto); + + Result := (dtContactos as IBizCliente); + GetCliente(Result, Codigo); + finally + Screen.Cursor := ACursor; + end; +end; +} + +function TdmAlmacenes.GetItem(Codigo: Integer): IBizAlmacen; +var + AAlmacen: IBizAlmacen; +begin + AAlmacen := GetItems; + with AAlmacen.DataTable do + begin + if Active then Active := False; + Where.Clear; + Where.AddCondition(fld_ALMACENESCODIGO, cEqual, Codigo); + Active := True; + end; + Result := AAlmacen; +end; + +function TdmAlmacenes.PuedoEliminarAlmacen(Codigo: Integer): Boolean; +begin + Result := (RORemoteService as IsrvAlmacenes).PuedoEliminarAlmacen(Codigo); +end; + +initialization + dmAlmacenes := TdmAlmacenes.Create(nil); + +finalization + FreeAndNil(dmAlmacenes); + +end. + diff --git a/Modulos/Almacenes/Cliente/uEditorAlmacen.ddp b/Modulos/Almacenes/Cliente/uEditorAlmacen.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Almacenes/Cliente/uEditorAlmacen.ddp differ diff --git a/Modulos/Almacenes/Cliente/uEditorAlmacen.dfm b/Modulos/Almacenes/Cliente/uEditorAlmacen.dfm new file mode 100644 index 0000000..98f60a4 --- /dev/null +++ b/Modulos/Almacenes/Cliente/uEditorAlmacen.dfm @@ -0,0 +1,126 @@ +inherited fEditorAlmacen: TfEditorAlmacen + Left = 374 + Top = 273 + HorzScrollBar.Visible = False + VertScrollBar.Range = 0 + VertScrollBar.Visible = False + BorderStyle = bsDialog + Caption = 'Ficha de almac'#233'n' + ClientHeight = 463 + ClientWidth = 634 + Scaled = False + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + Width = 634 + Caption = 'Almac'#233'n' + inherited Image1: TImage + Left = 607 + Picture.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001000 + 00001008060000001FF3FF610000000970485973000017120000171201679FD2 + 520000000467414D410000B18E7CFB51930000022E4944415478DA8D93CF6BD3 + 6018C7BF6997A45DD376EA70CA18D31D44981741280C44119DA83DC87619781A + 1EFD1BC49B2028B28353141111A43BE8CD934E65A8D4A1686B61B5A31DD8CCBA + FEDAACEDF226B389EFFB26CBCC54E6030FEFCB4B3E9FE79B9744B02C0B8220E0 + F7BA3AB2D75A282DE07F4AD82C60F0851B8F50530BF85EF98A62368DCCAB69B0 + B366BD8C95B24ACF4BB877FD226AFD635EC13A5CF99243A356869A4D51F83987 + 99EC476D09E5621E0F6F5EC6C8D938EE7C503604EB7055CDA34127A8B90C3ECD + 3CE570A35AA2FD0DCB4B2AEE4F5CC29953C35094102667655B706D7480C3F974 + 12AD951AAAC502E6DEBCE47031974673B942BB8AA9DB57103F7D129D9D413ED4 + 154C8C0BD6FCE7AD2F6C2816C3CE9E6E8862077C3E9F57307CE2FC1F80655A30 + 8C35E844C7B3273318D8D78FE8B6282449A41211B7DE05FE2D304D13866EC344 + 33F0FAC55BF4EDE945A42B0C910A6459C6DD94F27781D936F964B2AADB02DAEF + 9329ECEEED4138A240944548B2840773DBBD02B637596C6238205D352AD17564 + 3E66B1A3BB0B0A15489204292061AAB0CB2B68D3C96B34367120BE3AB2F96C01 + E1A8825028083920F35778BCD8B721387E6C9C42060788465C50A312B24AB058 + 2C2110946907282C61BA3588442221B882C343E75C50A30093B10484D849EAD5 + 3AFC1D7E0ECFFA631C76FF0526387470D4135977405B62A0D56CB2C791891C71 + 618FE0C0FEB873618623B2E33361FB679B4A340A1FF5C01E41928C6DF9256E86 + 59FD02D3B7960923D6946A0000000049454E44AE426082} + end + end + inherited TBXDock: TTBXDock + Width = 634 + inherited tbxMain: TTBXToolbar + inherited TBXItem2: TTBXItem + Visible = False + end + inherited TBXItem5: TTBXItem + Visible = False + end + inherited TBXItem23: TTBXItem + Visible = False + end + inherited TBXItem3: TTBXItem + Visible = False + end + end + inherited tbxMenu: TTBXToolbar + DockPos = 0 + inherited TBXSubmenuItem4: TTBXSubmenuItem + inherited TBXItem8: TTBXItem + Visible = False + end + inherited TBXSeparatorItem5: TTBXSeparatorItem + Visible = False + end + inherited TBXItem10: TTBXItem + Visible = False + end + inherited TBXSeparatorItem6: TTBXSeparatorItem + Visible = False + end + inherited TBXItem21: TTBXItem + Visible = False + end + inherited TBXItem22: TTBXItem + Visible = False + end + inherited TBXItem9: TTBXItem + Visible = False + end + end + inherited TBXSubmenuItem1: TTBXSubmenuItem + inherited TBXItem32: TTBXItem + Visible = False + end + inherited TBXItem31: TTBXItem + Visible = False + end + inherited TBXSeparatorItem13: TTBXSeparatorItem + Visible = False + end + end + end + end + inherited pgPaginas: TPageControl + Width = 634 + Height = 368 + inherited pagGeneral: TTabSheet + Constraints.MinHeight = 140 + end + end + inherited StatusBar: TStatusBar + Top = 444 + Width = 634 + end + inherited EditorActionList: TActionList + Top = 128 + end + inherited SmallImages: TPngImageList + Top = 112 + end + inherited dsDataTable: TDADataSource [6] + OnDataChange = dsDataTableDataChange + Left = 168 + Top = 120 + end + inherited LargeImages: TPngImageList [7] + Top = 112 + end + inherited JvFormStorage: TJvFormStorage [8] + end + inherited JvAppRegistryStorage: TJvAppRegistryStorage [9] + end +end diff --git a/Modulos/Almacenes/Cliente/uEditorAlmacen.pas b/Modulos/Almacenes/Cliente/uEditorAlmacen.pas new file mode 100644 index 0000000..72a4555 --- /dev/null +++ b/Modulos/Almacenes/Cliente/uEditorAlmacen.pas @@ -0,0 +1,150 @@ +unit uEditorAlmacen; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uEditorDBItem, ToolWin, ComCtrls, JvExControls, JvComponent, + uViewAlmacen, uBizAlmacenes, JvNavigationPane, ActnList, + uEditorBase, StdActns, TB2Dock, TB2Toolbar, TBX, ImgList, PngImageList, + TB2Item, uEditorItem, DB, uDADataTable, uEditorDBBase, JvFormAutoSize, + uDAScriptingProvider, uDACDSDataTable, StdCtrls, pngimage, ExtCtrls, + TBXDkPanels, JvButton, AppEvnts, uCustomView, uViewBase, uViewMensaje, + JvAppStorage, JvAppRegistryStorage, JvFormPlacement, + + uViewAlmacenes; + +type + IEditorAlmacen = interface(IEditorDBItem) + ['{BADE8E8B-B0BC-4759-B2EE-4B4082827BE0}'] + function GetAlmacen: IBizAlmacen; + procedure SetAlmacen(const Value: IBizAlmacen); + property Almacen: IBizAlmacen read GetAlmacen write SetAlmacen; + end; + + TfEditorAlmacen = class(TfEditorDBItem, IEditorAlmacen) + + procedure FormShow(Sender: TObject); + procedure dsDataTableDataChange(Sender: TObject; Field: TField); + procedure actEliminarExecute(Sender: TObject); + private + FAlmacen: IBizAlmacen; + FViewAlmacen : IViewAlmacen; + protected + function GetAlmacen: IBizAlmacen; virtual; + procedure SetAlmacen(const Value: IBizAlmacen); virtual; + + function GetViewAlmacen: IViewAlmacen; + procedure SetViewAlmacen(const Value: IViewAlmacen); + property ViewAlmacen: IViewAlmacen read GetViewAlmacen write + SetViewAlmacen; + public + property Almacen: IBizAlmacen read GetAlmacen write SetAlmacen; + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + end; + +implementation + +{$R *.dfm} + +uses + uCustomEditor, uDataModuleAlmacenes, uDataModuleBase, uEditorUtils; + +function ShowEditorAlmacen (ABizObject : TDADataTableRules): TModalResult; +var + AEditor: TfEditorAlmacen; +begin + AEditor := TfEditorAlmacen.Create(Application); + try + AEditor.Almacen := (ABizObject as IBizAlmacen); + Result := AEditor.ShowModal; + finally + AEditor.Release; + end; +end; + +{ +******************************* TfEditorAlmacen ******************************* +} +function TfEditorAlmacen.GetAlmacen: IBizAlmacen; +begin + Result := FAlmacen; +end; + +function TfEditorAlmacen.GetViewAlmacen: IViewAlmacen; +begin + Result := FViewAlmacen; +end; + +procedure TfEditorAlmacen.SetAlmacen(const Value: IBizAlmacen); +begin + FAlmacen := Value; + dsDataTable.DataTable := FAlmacen.DataTable; + + if Assigned(FViewAlmacen) and Assigned(Almacen) then + FViewAlmacen.Almacen := Almacen; +end; + +procedure TfEditorAlmacen.SetViewAlmacen(const Value: IViewAlmacen); +begin + FViewAlmacen := Value; + + if Assigned(FViewAlmacen) and Assigned(Almacen) then + FViewAlmacen.Almacen := Almacen; +end; + +procedure TfEditorAlmacen.FormShow(Sender: TObject); +begin + inherited; + + if not Assigned(FViewAlmacen) then + raise Exception.Create('No hay ninguna vista asignada'); + + if not Assigned(Almacen) then + raise Exception.Create('No hay ningún almacén asignado'); + + Almacen.DataTable.Active := True; + FViewAlmacen.ShowEmbedded(pagGeneral); + FViewAlmacen.SetFocus; +end; + +destructor TfEditorAlmacen.Destroy; +begin + FViewAlmacen := NIL; + FAlmacen := NIL; + inherited; +end; + +constructor TfEditorAlmacen.Create(AOwner: TComponent); +begin + inherited; + ViewAlmacen := CreateView(TfrViewAlmacen) as IViewAlmacen; +end; + +procedure TfEditorAlmacen.dsDataTableDataChange(Sender: TObject; + Field: TField); +begin + inherited; + if Assigned(FAlmacen) and (not (FAlmacen.DataTable.Fetching) or + not (FAlmacen.DataTable.Opening) or not (FAlmacen.DataTable.Closing)) then + begin + if Length(FAlmacen.NOMBRE) = 0 then + JvNavPanelHeader.Caption := 'Nuevo almacén' + else + JvNavPanelHeader.Caption := 'Almacén - ' + FAlmacen.Nombre; + Caption := JvNavPanelHeader.Caption; + end; +end; + +procedure TfEditorAlmacen.actEliminarExecute(Sender: TObject); +begin + if (Application.MessageBox('¿Desea borrar este almacén?', 'Atención', MB_YESNO) = IDYES) then + inherited; +end; + +initialization + RegisterEditor(IBizAlmacen, ShowEditorAlmacen, etItem); + +end. + diff --git a/Modulos/Almacenes/Cliente/uEditorAlmacenes.ddp b/Modulos/Almacenes/Cliente/uEditorAlmacenes.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Almacenes/Cliente/uEditorAlmacenes.ddp differ diff --git a/Modulos/Almacenes/Cliente/uEditorAlmacenes.dfm b/Modulos/Almacenes/Cliente/uEditorAlmacenes.dfm new file mode 100644 index 0000000..d95ebcb --- /dev/null +++ b/Modulos/Almacenes/Cliente/uEditorAlmacenes.dfm @@ -0,0 +1,1414 @@ +inherited fEditorAlmacenes: TfEditorAlmacenes + Left = 213 + Top = 191 + Caption = 'Lista de almacenes' + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + Caption = 'Lista de almacenes' + inherited Image1: TImage + Picture.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001800 + 0000180806000000E0773DF80000000970485973000017120000171201679FD2 + 520000000467414D410000B18E7CFB5193000001D44944415478DAB5D4BD4B02 + 7118C0F1E737D552D0105843616F838519166551345443A32D2E0DD15863FF41 + 6B2141353544144A2004114144431695841445D00BE950E7905618742F2257CF + D9D9EFCE3BEF4EF001797E9CFAFD1C8A125114A19C43648010A2F98205AF5D7C + 611296C3FE33961802189F5909C13B1383EFF427B05FB94738B40976BB0DC6E7 + 56FEAE7D289EF7EF3E422010280E941ADF589E8754A3AF3820C7F10DA9D798A5 + 785D8D0D6EAB87F5013A8E81D46BDC521C471750C731F0CEC44DC55B1B9A41E0 + 0510848C36B038D15410C7F3C1FAB261BCABC3998BF31969472B070A81D97E52 + D20F62D0E381CCEF5DF3129043CE494F21B03445C4B1D169C360369B95223C27 + C0D17E181CCE36E963A19163C1551A40C731747274019DDDED529C460EBF1CD6 + 01751CCF91D328F40DBA81653905B2976CB10668C5715F5DDEC2D088473AD3C8 + 0ED3681ED08BE3BEBBB997001C1AD98ED79B038AC5F14E9FEE9FF3008D6C3DD4 + 1A03EA38FBCDE501FE6F332F090520236BD755C5013A22A8367D3DF9962C0056 + 2315100C06FFFF21D480D938EE743AAD00E4389E3581E1A149D371FC0E388ECD + 03745C17F0F4FA4CC77164401DD705DC2EAFE9B80CE03FA73AAE0B9C733EB03A + 5A714DA05C5376E00756B52DFEBD3C9AE50000000049454E44AE426082} + end + end + inherited TBXDock: TTBXDock + inherited tbxFiltro: TTBXToolbar + Left = 411 + inherited tbxEditFiltro: TTBXEditItem + EditOptions = [tboUseEditWhenVertical] + end + inherited TBXItem37: TTBXItem + Visible = False + end + end + end + inline frViewBarraSeleccion: TfrViewBarraSeleccion [3] + Left = 0 + Top = 395 + Width = 885 + Height = 37 + Align = alBottom + AutoScroll = False + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 3 + Visible = False + ReadOnly = False + inherited pnlSeleccion: TPanel + Top = 0 + Width = 885 + inherited bSeleccionar: TButton + Left = 550 + end + inherited bCancelar: TButton + Left = 629 + end + end + inherited ActionListSeleccion: TActionList + inherited actSeleccionar: TAction + OnExecute = frViewBarraSeleccionactSeleccionarExecute + end + end + end + inherited EditorActionList: TActionList [4] + inherited actNuevo: TAction + ImageIndex = 22 + OnExecute = actNuevoExecute + end + inherited actDuplicar: TAction + Visible = False + end + end + inherited SmallImages: TPngImageList [5] + 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 + 610000000970485973000017120000171201679FD252000002704944415478DA + 8593DB4B545114C6BF333AFB8CCD3853A11686162811410F1118241524984951 + 0F864F520F3DE8D3FC0DD183145949E12814D1850A9CA2871294A8208BC1862E + 2814836578BF4D9A8D9EBD679A4E6B9D33C7697AB0058BBD38ECEFB7D7FA1647 + 936F607AF6410305D7FA17E07C773946A646D1DE0E0483583334F30E4C554145 + 6508E6700B18903C9CAD7BA64E63B0FF39829D8FF0333E83C5D971CA49DCB874 + 16F1AD0DD0D46CC814BD2D6008078BB8764097CFB45AE2C5D9090B30333A8CBB + 1D17D070A20E5DEF7DD481692239D769B2D8F4B7D86D2D85ACD311FF989BC4D2 + FC34BE4F8FE1E69573387AE4100A7D5E5C1BD0A13973AB93B65014374329B2E4 + 5D76CEA1A9562416E2B8DF7511C7EA6BE05D57004DD36C007BC09718A0EB5669 + 01F4EE2CA0F92A01A9D3EABD7B50B2A908C29D0F97CB9501AC3142AC27826432 + 052525FA9EF4A3627B19021B0210C24D10373AA21EDB44769CB7C0663AE16C26 + 7AAF0FD248E2D58BB728DF560AFF7A1FDC04D0751DD73FFAB21EFCBD3AAE9DCD + BC7E590F432A44238328DD528242BF176E9D3AD0056E7FDA687BD0D60BD4D59E + 4265E52D0B104D3442190AD5C58FF13456439E280C7E88A1A828001F01841010 + 1E81075F37DB1EB435692603D2E9DF48A914E48AB2440641944C522AC43E7F43 + 61C00B9FB7003A89798487136559406D4D1389E832CD2B0D099911328481E363 + D3F014084A0F3CD4FEB3E59D0887C3DA2AE06075235D94D68B2B7C2A06290BC4 + 677C7E0179F92E7A596020AFCA12DBFF420650B5FB784ECB9CD2B0C5067D5B4E + 2CF3750CF9F7AF8A7300BB76D459C6392F33C8C87490FE95A65392F8408E3807 + 10910DF85FFC2BE6F80376357B8923C9356C0000000049454E44AE426082} + Name = 'PngImage22' + Background = clWindow + end> + Bitmap = {} + end + inherited LargeImages: TPngImageList [6] + 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 + F80000000970485973000017120000171201679FD252000002694944415478DA + B594CB6B134118C0BFB9743D6841A48A1E5A1FF1502A5AA555A3584544BDE829 + 1E04C58B87E4A247FF84EAA168AD90A017C17A908882082A8A50A15AAD448B0F + D0F8A8252D4A1A2D096477670DE37C3B997D249B6636E007C37C330BBFDF3CBE + 59C21803F305615A9411E061E75F7972C233AE7E6B25080A60943073031F4492 + C0BE240005F4909B4B59CB029A4FB1B64709400906423197A28BA7072137F72B + 347C64D22062073C50823D6B4F08733169F7083F9BBA0385D96F502E2EF0F607 + F4D2028CDDBE09EBD7AD8223E792F6BC5EFAEDFB3E742F0BE9749A10E3393067 + D5C704B8AD230EA6C94F25E3AE6646BFAA0CBF3E320885AE9810B01B42605F28 + 17689A18A2404BBB82A9A51794E1AB97AF84F7ED0355419323CAFF5801F3B9EF + A1E0183E01C2B162B08AF0B29D1D552B2BF3704609BEB1732D509302A57FFD02 + 59FBDED2C45C56D6A5F39D4DE1DB36F5D870D3B4EC3EB36497E788F83BC05A8F + 6F276C78585C78FCB2D845EA8C9B378A81683F58D472E0D84F903EFF1D600C9D + 24ECF0C1534DEBBB52A9701007EA149E3C18879ECD117E2C964F3246B7B426F0 + C211F4ECE924F4F675DB70AFE471A93BBCA0168EA097E36F21BA672BE8BAE193 + DC9F8F841304C1B17FF3FA23EC3BB0838FA94F7277AE4B5DD0088E731FDE656D + 81789CAEE4D6F41A35C162705C69F6D3B423F04A463F773417D4C2CB6543801D + 9105B3B99F3E81945C9B5AB6B8C0811862B5A65CB5078E2D9F2FD409AEBCD26C + 38E681025538CE178B259FC00B0F14ECDF7B5C198E7760188623A885070A76EF + 8C29C331A420081E28E8EF3DAA0C9702F9E70C7A3F758209230661A311BC4EF0 + 3FE21F497E40FE838101750000000049454E44AE426082} + Name = 'PngImage21' + Background = clWindow + end> + Bitmap = {} + end + inherited JvFormStorage: TJvFormStorage [7] + end + inherited JvAppRegistryStorage: TJvAppRegistryStorage [8] + end + inherited dsDataTable: TDADataSource [9] + end +end diff --git a/Modulos/Almacenes/Cliente/uEditorAlmacenes.pas b/Modulos/Almacenes/Cliente/uEditorAlmacenes.pas new file mode 100644 index 0000000..f0fd1cb --- /dev/null +++ b/Modulos/Almacenes/Cliente/uEditorAlmacenes.pas @@ -0,0 +1,170 @@ +unit uEditorAlmacenes; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uEditorBase, uEditorGrid, ToolWin, ComCtrls, JvExControls, JvComponent, + JvNavigationPane, uViewAlmacenes, uBizAlmacenes, ActnList, DBActns, uViewGrid, + Menus, uDataModuleBase, ImgList, PngImageList, TB2Dock, TB2Toolbar, TBX, + TB2Item, StdActns, TB2ExtItems, TBXExtItems, TB2MRU, DB, uDADataTable, + JvFormAutoSize, uDAScriptingProvider, uDACDSDataTable, JvAppStorage, + JvAppRegistryStorage, JvFormPlacement, ExtCtrls, uCustomView, uViewBase, + uViewBarraSeleccion, pngimage, JvComponentBase; + +type + IEditorAlmacenes = interface(IEditorGrid) + ['{D757531B-1392-46E9-9EDA-2B0A2AFE5DCC}'] + function GetAlmacenes: IBizAlmacen; + procedure SetAlmacenes(const Value: IBizAlmacen); + property Almacenes: IBizAlmacen read GetAlmacenes write SetAlmacenes; + + function GetSelectionBarVisible: Boolean; + procedure SetSelectionBarVisible(const Value: Boolean); + property SelectionBarVisible : Boolean read GetSelectionBarVisible write + SetSelectionBarVisible; + end; + + TfEditorAlmacenes = class(TfEditorGrid, IEditorAlmacenes) + frViewBarraSeleccion: TfrViewBarraSeleccion; + procedure FormShow(Sender: TObject); + procedure actNuevoExecute(Sender: TObject); + procedure actModificarExecute(Sender: TObject); + procedure actEliminarExecute(Sender: TObject); + procedure frViewBarraSeleccionactSeleccionarExecute(Sender: TObject); + private + FAlmacenes: IBizAlmacen; + protected + function GetAlmacenes: IBizAlmacen; virtual; + procedure SetAlmacenes(const Value: IBizAlmacen); virtual; + procedure SetViewGrid(const Value: IViewGrid); override; + function GetSelectionBarVisible: Boolean; virtual; + procedure SetSelectionBarVisible(const Value: Boolean); virtual; + public + property SelectionBarVisible : Boolean read GetSelectionBarVisible write + SetSelectionBarVisible; + property Almacenes: IBizAlmacen read GetAlmacenes write SetAlmacenes; + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + end; + +implementation + +uses + uCustomEditor, uDataModuleAlmacenes, + uEditorAlmacen, uEditorDBBase, uEditorUtils, + cxGrid, cxGridCustomTableView, uDBSelectionList, uListaAlmacenes; + +{$R *.dfm} + +function ShowEditorAlmacenes (ABizObject : TDADataTableRules): TModalResult; +var + AEditor: TfListaAlmacenes; +begin + AEditor := TfListaAlmacenes.Create(Application); + try + AEditor.Almacenes := (ABizObject as IBizAlmacen); + Result := AEditor.ShowModal; + finally + AEditor.Release; + end; +end; + +{ +****************************** TfEditorAlmacenes ******************************* +} +procedure TfEditorAlmacenes.FormShow(Sender: TObject); +begin + inherited; + + if not Assigned(ViewGrid) then + raise Exception.Create('No hay ninguna vista asignada'); + + if not Assigned(Almacenes) then + raise Exception.Create('No hay ningún Almacen asignado'); + + Almacenes.DataTable.Active := True; +end; + +function TfEditorAlmacenes.GetAlmacenes: IBizAlmacen; +begin + Result := FAlmacenes; +end; + +procedure TfEditorAlmacenes.SetAlmacenes(const Value: IBizAlmacen); +begin + FAlmacenes := Value; + dsDataTable.DataTable := FAlmacenes.DataTable; + if Assigned(ViewGrid) then + (ViewGrid as IViewAlmacenes).Almacenes := Almacenes; +end; + +procedure TfEditorAlmacenes.actNuevoExecute(Sender: TObject); +begin + inherited; + Almacenes.Insert; + Almacenes.Show; + ViewGrid.RefreshGrid; + ViewGrid.SyncFocusedRecordsFromDataSet; +end; + +procedure TfEditorAlmacenes.actModificarExecute(Sender: TObject); +begin + inherited; + Almacenes.Show; + ViewGrid.RefreshGrid; + ViewGrid.SyncFocusedRecordsFromDataSet; +end; + +procedure TfEditorAlmacenes.SetViewGrid(const Value: IViewGrid); +begin + inherited; + if Assigned(ViewGrid) and Assigned(Almacenes) then + (ViewGrid as IViewAlmacenes).Almacenes := Almacenes; +end; + +destructor TfEditorAlmacenes.Destroy; +begin + FAlmacenes := NIL; + inherited; +end; + +function TfEditorAlmacenes.GetSelectionBarVisible: Boolean; +begin + Result := frViewBarraSeleccion.Visible +end; + +procedure TfEditorAlmacenes.SetSelectionBarVisible(const Value: Boolean); +begin + frViewBarraSeleccion.Visible := True; + ViewGrid.OnDblClick := frViewBarraSeleccion.actSeleccionar.OnExecute; +end; + +procedure TfEditorAlmacenes.frViewBarraSeleccionactSeleccionarExecute( + Sender: TObject); +begin + inherited; + ViewGrid.SyncFocusedRecordsFromGrid; + ModalResult := mrOK; +end; + +constructor TfEditorAlmacenes.Create(AOwner: TComponent); +begin + inherited; + ViewGrid := CreateView(TfrViewAlmacenes) as IViewAlmacenes; +end; + +procedure TfEditorAlmacenes.actEliminarExecute(Sender: TObject); +begin + if (Application.MessageBox('¿Desea borrar este almacén?', 'Atención', MB_YESNO) = IDYES) then + begin + inherited; + ViewGrid.RefreshGrid; + end; +end; + +initialization + RegisterEditor(IBizAlmacen, ShowEditorAlmacenes, etItems); + +end. + diff --git a/Modulos/Almacenes/Cliente/uListaAlmacenes.ddp b/Modulos/Almacenes/Cliente/uListaAlmacenes.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Almacenes/Cliente/uListaAlmacenes.ddp differ diff --git a/Modulos/Almacenes/Cliente/uListaAlmacenes.dfm b/Modulos/Almacenes/Cliente/uListaAlmacenes.dfm new file mode 100644 index 0000000..66f8ea4 --- /dev/null +++ b/Modulos/Almacenes/Cliente/uListaAlmacenes.dfm @@ -0,0 +1,104 @@ +object fListaAlmacenes: TfListaAlmacenes + Left = 356 + Top = 461 + Width = 363 + Height = 150 + ActiveControl = cxAlmacenes + Caption = 'fListaAlmacenes' + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + PixelsPerInch = 96 + TextHeight = 13 + object Label1: TLabel + Left = 21 + Top = 42 + Width = 100 + Height = 13 + Caption = 'Nombre del almac'#233'n:' + end + object Label5: TLabel + Left = 9 + Top = 9 + Width = 84 + Height = 13 + Caption = 'Elegir almac'#233'n' + Font.Charset = DEFAULT_CHARSET + Font.Color = clActiveCaption + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + ParentFont = False + end + object Bevel1: TBevel + Left = 108 + Top = 9 + Width = 237 + Height = 9 + Shape = bsBottomLine + end + object cxAlmacenes: TcxLookupComboBox + Left = 128 + Top = 38 + Properties.KeyFieldNames = 'CODIGO' + Properties.ListColumns = < + item + SortOrder = soAscending + FieldName = 'NOMBRE' + end> + Properties.ListOptions.AnsiSort = True + Properties.ListOptions.GridLines = glNone + Properties.ListOptions.ShowHeader = False + Properties.ListSource = DADataSource + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 0 + Width = 217 + end + object pnlSeleccion: TPanel + Left = 0 + Top = 79 + Width = 355 + Height = 37 + Align = alBottom + BevelOuter = bvNone + ParentBackground = True + TabOrder = 1 + DesignSize = ( + 355 + 37) + object bSeleccionar: TButton + Left = 192 + Top = 7 + Width = 74 + Height = 23 + Anchors = [akRight] + Caption = '&Seleccionar' + Default = True + ModalResult = 1 + TabOrder = 0 + OnClick = bSeleccionarClick + end + object bCancelar: TButton + Left = 273 + Top = 7 + Width = 74 + Height = 23 + Anchors = [akRight] + Cancel = True + Caption = '&Cancelar' + ModalResult = 2 + TabOrder = 1 + end + end + object DADataSource: TDADataSource + Left = 84 + Top = 68 + end +end diff --git a/Modulos/Almacenes/Cliente/uListaAlmacenes.pas b/Modulos/Almacenes/Cliente/uListaAlmacenes.pas new file mode 100644 index 0000000..17fd6f0 --- /dev/null +++ b/Modulos/Almacenes/Cliente/uListaAlmacenes.pas @@ -0,0 +1,79 @@ +unit uListaAlmacenes; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, cxGraphics, cxControls, cxContainer, cxEdit, cxTextEdit, + cxMaskEdit, cxDropDownEdit, cxLookupEdit, cxDBLookupEdit, + cxDBLookupComboBox, DB, uDADataTable, uCustomView, uViewBase, + uViewBarraSeleccion, uBizAlmacenes, ExtCtrls, StdCtrls, + Grids, DBGrids; + +type + TfListaAlmacenes = class(TForm) + DADataSource: TDADataSource; + Label1: TLabel; + Label5: TLabel; + Bevel1: TBevel; + cxAlmacenes: TcxLookupComboBox; + pnlSeleccion: TPanel; + bSeleccionar: TButton; + bCancelar: TButton; + procedure bSeleccionarClick(Sender: TObject); + private + FAlmacenes: IBizAlmacen; + function GetAlmacenes: IBizAlmacen; + procedure SetAlmacen(const Value: IBizAlmacen); + public + property Almacenes: IBizAlmacen read GetAlmacenes write SetAlmacen; + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + end; + +var + fListaAlmacenes: TfListaAlmacenes; + +implementation +{$R *.dfm} + +uses uDataModuleAlmacenes, schAlmacenesClient_Intf; + +{ TfListaAlmacenes } + +constructor TfListaAlmacenes.Create(AOwner: TComponent); +begin + inherited; +end; + +destructor TfListaAlmacenes.Destroy; +begin + FAlmacenes := Nil; + inherited; +end; + +function TfListaAlmacenes.GetAlmacenes: IBizAlmacen; +begin + Result := FAlmacenes; +end; + +procedure TfListaAlmacenes.SetAlmacen(const Value: IBizAlmacen); +begin + FAlmacenes := Value; + if Assigned(FAlmacenes) then + begin + DADataSource.DataTable := FAlmacenes.DataTable; + FAlmacenes.DataTable.Active := True; + cxAlmacenes.ItemIndex := 0; + end + else + DADataSource.DataTable := Nil; +end; + +procedure TfListaAlmacenes.bSeleccionarClick(Sender: TObject); +begin + FAlmacenes.First; + FAlmacenes.Locate(fld_ALMACENESNOMBRE, cxAlmacenes.Text); +end; + +end. diff --git a/Modulos/Almacenes/Cliente/uPluginControllerAlmacenes.ddp b/Modulos/Almacenes/Cliente/uPluginControllerAlmacenes.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Almacenes/Cliente/uPluginControllerAlmacenes.ddp differ diff --git a/Modulos/Almacenes/Cliente/uPluginControllerAlmacenes.dfm b/Modulos/Almacenes/Cliente/uPluginControllerAlmacenes.dfm new file mode 100644 index 0000000..43f8432 --- /dev/null +++ b/Modulos/Almacenes/Cliente/uPluginControllerAlmacenes.dfm @@ -0,0 +1,140 @@ +object ModuleAlmacenes: TModuleAlmacenes + OldCreateOrder = True + Description = 'Almacenes' + ModuleMenu = MainMenu + ModuleName = 'Almacenes' + SmallImages = SmallImages + LargeImages = LargeImages + Author = 'Rodax Software' + Version = '1.0.0' + Left = 527 + Top = 373 + Height = 252 + Width = 401 + object LargeImages: TPngImageList + Height = 24 + Width = 24 + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD252000001D44944415478DA + B5D4BD4B027118C0F1E737D552D0105843616F838519166551345443A32D2E0D + D15863FF416B2141353544144A2004114144431695841445D00BE950E7905618 + 742F2257CFD9D9EFCE3BEF4EF001797E9CFAFD1C8A125114A19C43648010A2F9 + 8205AF5D7C611296C3FE33961802189F5909C13B1383EFF427B05FB94738B409 + 76BB0DC6E756FEAE7D289EF7EF3E422010280E941ADF589E8754A3AF3820C7F1 + 0DA9D798A5785D8D0D6EAB87F5013A8E81D46BDC521C471750C731F0CEC44DC5 + 5B1B9A41E00510848C36B038D15410C7F3C1FAB261BCABC3998BF31969472B07 + 0A81D97E52D20F62D0E381CCEF5DF3129043CE494F21B03445C4B1D169C36036 + 9B95223C27C0D17E181CCE36E963A19163C1551A40C731747274019DDDED529C + 460EBF1CD601751CCF91D328F40DBA81653905B2976CB10668C5715F5DDEC2D0 + 88473AD3C80ED3681ED08BE3BEBBB997001C1AD98ED79B038AC5F14E9FEE9FF3 + 008D6C3DD41A03EA38FBCDE501FE6F332F090520236BD755C5013A22A8367D3D + F9962C00562315100C06FFFF21D480D938EE743AAD00E4389E3581E1A149D371 + FC0E388ECD03745C17F0F4FA4CC77164401DD705DC2EAFE9B80CE03FA73AAE0B + 9C733EB03A5A714DA05C5376E00756B52DFEBD3C9AE50000000049454E44AE42 + 6082} + Name = 'PngImage0' + Background = clWindow + end> + Left = 232 + Top = 16 + Bitmap = {} + end + object ModuleActionList: TActionList + Images = LargeImages + Left = 40 + Top = 72 + object actAlmacenes: TAction + Category = 'Log'#237'stica' + Caption = 'Almacenes' + ImageIndex = 0 + OnExecute = actAlmacenesExecute + end + end + object MainMenu: TMainMenu + Images = LargeImages + Left = 40 + Top = 16 + object menu: TMenuItem + Tag = 100 + Caption = '&Log'#237'stica' + GroupIndex = 1 + ImageIndex = 0 + OnClick = actAlmacenesExecute + object Almacenes1: TMenuItem + Tag = 100 + Action = actAlmacenes + end + object N1: TMenuItem + Tag = 101 + Caption = '-' + end + end + end + object SmallImages: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD2520000022E4944415478DA + 8D93CF6BD36018C7BF6997A45DD376EA70CA18D31D44981741280C44119DA83D + C87619781A1EFD1BC49B2028B28353141111A43BE8CD934E65A8D4A1686B61B5 + A31DD8CCBAFEDAACEDF226B389EFFB26CBCC54E6030FEFCB4B3E9FE79B9744B0 + 2C0B8220E0F7BA3AB2D75A282DE07F4AD82C60F0851B8F50530BF85EF98A6236 + 8DCCAB69B0B366BD8C95B24ACF4BB877FD226AFD635EC13A5CF99243A356869A + 4D51F8398799EC476D09E5621E0F6F5EC6C8D938EE7C503604EB7055CDA34127 + A8B90C3ECD3CE570A35AA2FD0DCB4B2AEE4F5CC29953C35094102667655B706D + 7480C3F97412AD951AAAC502E6DEBCE47031974673B942BB8AA9DB57103F7D12 + 9D9D413ED4154C8C0BD6FCE7AD2F6C2816C3CE9E6E8862077C3E9F57307CE2FC + 1F80655A308C35E844C7B3273318D8D78FE8B6282449A41211B7DE05FE2D304D + 13866EC34433F0FAC55BF4EDE945A42B0C910A6459C6DD94F27781D936F964B2 + AADB02DAEF9329ECEEED4138A240944548B2840773DBBD02B637596C6238205D + 352AD175643E66B1A3BB0B0A15489204292061AAB0CB2B68D3C96B34367120BE + 3AB2F96C01E1A8825028083920F35778BCD8B721387E6C9C42060788465C50A3 + 12B24AB0582C2110946907282C61BA3588442221B882C343E75C50A30093B104 + 84D849EAD53AFC1D7E0ECFFA631C76FF0526387470D4135977405B62A0D56CB2 + C791891C71618FE0C0FEB873618623B2E33361FB679B4A340A1FF5C01E41928C + 6DF9256E8659FD02D3B7960923D6946A0000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end> + PngOptions = [pngBlendOnDisabled, pngGrayscaleOnDisabled] + Left = 308 + Top = 16 + Bitmap = {} + end + object ExtraImages: TPngImageList + Height = 28 + Width = 28 + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D494844520000001C0000001C0806000000720DDF + 940000000970485973000017120000171201679FD2520000020F4944415478DA + E5D4DB2B04511800F06FB659D7CD2D892816B984258992242129E5924BDEE491 + 47FF81571E9495072F44BB1EF69127CAA5DC436E895C4A92AC6CC48E9961EC39 + 63C7EEEC65CEAC6D5F7CF575E69C33F3FD3AA773861204014219D4FF02298AF2 + FAD2709B5EB8BEBF0E18195B17A4C28A20C2FA8D16E059065EACF7F0FE6203FB + AB986B9619D0EB93A169D0E8757E7A6C089ED2BBC1643291814E4C2CF0EC13F3 + 368FB0AE8E5618DF0E27038381A1200283851181C1C414C191F6CC3F611DED2D + A0D150E4E0402515F0A56CACAF83C8A808A069DA0DF50B8EF65242437D1F11C0 + B13C701C87DBA58555282E2B045A4B83D691AE685040578C6339585DDC808292 + 3C0CC9D13F83728CE378D858D981DC826C8CC9D189DD88C0C10F86151119BAB7 + 7D08593919222843270F74EAC1AFCF2FBC126F181A3FDA3F85F4CC34097245A7 + 4EE2D4814A18EA9F1D5F404A6A1284858779A0B3E789E42009869E2FCF6F2031 + 29016FA11C9DBB4A26034931D691B73777101B1F8341396AB94D53064930C6FE + 21818F0F5688D6454907C589CE5BB3C16C36BBFF3EE5605D6DAF072616E781E7 + C53196FD5D1DEADB9E6D18D06A7F4FE73263C018AAEB17ACAAEC715FCD4F515F + 186ADFDFDE1C975C23615B9A720953042BCA3A556168FB19C68EBF47E8A1AEDA + 0D53044B0DADAA30144EF038A6C60353048BF29B55614ED017A6086E32DD1048 + F8C2FC82A1889083DF93D867F65E51168D0000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end> + Left = 232 + Top = 80 + Bitmap = {} + end +end diff --git a/Modulos/Almacenes/Cliente/uPluginControllerAlmacenes.pas b/Modulos/Almacenes/Cliente/uPluginControllerAlmacenes.pas new file mode 100644 index 0000000..18e2727 --- /dev/null +++ b/Modulos/Almacenes/Cliente/uPluginControllerAlmacenes.pas @@ -0,0 +1,73 @@ +unit uPluginControllerAlmacenes; + +interface + +uses + uModuleController, uInterfaces, uHostManager, Menus, Classes, ActnList, + ImgList, Controls, PngImageList; + +type + IMCAlmacenes = interface(IInterface) + ['{A0E73296-EAE8-4528-93EB-953484D484EB}'] + end; + + TModuleAlmacenes = class(TModuleController, IMCAlmacenes) + actAlmacenes: TAction; + menu: TMenuItem; + ExtraImages: TPngImageList; + LargeImages: TPngImageList; + MainMenu: TMainMenu; + ModuleActionList: TActionList; + Almacenes1: TMenuItem; + SmallImages: TPngImageList; + N1: TMenuItem; + procedure actAlmacenesExecute(Sender: TObject); + public + end; + +implementation + +{$R *.dfm} + +uses + Forms, Dialogs, uGUIBase, SysUtils, uDataModuleAlmacenes, uEditorAlmacenes, + uBizAlmacenes; + +function GetModule : TModuleController; +begin + Result := TModuleAlmacenes.Create(NIL); +end; + +exports + GetModule name GET_MODULE_FUNC; + +{ +******************************* TModuleContactos ******************************* +} + +procedure TModuleAlmacenes.actAlmacenesExecute(Sender: TObject); +var + aObj: IEditorAlmacenes; + AAlmacenes : IBizAlmacen; +begin + AAlmacenes := dmAlmacenes.GetItems; + aObj := TfEditorAlmacenes.Create(Application); + try + with aObj do + begin + Almacenes := AAlmacenes; + ShowEmbedded; + end; + finally + AAlmacenes := NIL; + aObj := NIL; + end; +end; + +initialization + RegisterModuleClass(TModuleAlmacenes); + +finalization + UnRegisterModuleClass(TModuleAlmacenes); + +end. diff --git a/Modulos/Almacenes/Cliente/uViewAlmacen.ddp b/Modulos/Almacenes/Cliente/uViewAlmacen.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Almacenes/Cliente/uViewAlmacen.ddp differ diff --git a/Modulos/Almacenes/Cliente/uViewAlmacen.dfm b/Modulos/Almacenes/Cliente/uViewAlmacen.dfm new file mode 100644 index 0000000..a4e958a --- /dev/null +++ b/Modulos/Almacenes/Cliente/uViewAlmacen.dfm @@ -0,0 +1,218 @@ +inherited frViewAlmacen: TfrViewAlmacen + Width = 600 + Height = 245 + Align = alClient + AutoSize = True + Constraints.MinHeight = 245 + Constraints.MinWidth = 600 + OnResize = FrameResize + object pnlGeneral: TPanel + Left = 0 + Top = 0 + Width = 313 + Height = 84 + BevelOuter = bvNone + Constraints.MinWidth = 300 + ParentBackground = True + ParentColor = True + TabOrder = 0 + DesignSize = ( + 313 + 84) + object Label5: TLabel + Left = 8 + Top = 8 + Width = 165 + Height = 13 + Caption = 'Datos generales del almac'#233'n' + Font.Charset = DEFAULT_CHARSET + Font.Color = clActiveCaption + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + ParentFont = False + end + object Bevel1: TBevel + Left = 176 + Top = 8 + Width = 129 + Height = 9 + Anchors = [akLeft, akTop, akRight] + Shape = bsBottomLine + end + object Label2: TLabel + Left = 16 + Top = 56 + Width = 54 + Height = 26 + Caption = 'Persona de'#13#10'contacto:' + end + object Label1: TLabel + Left = 16 + Top = 32 + Width = 41 + Height = 13 + Caption = 'Nombre:' + end + object eNombre: TcxDBTextEdit + Left = 93 + Top = 28 + Anchors = [akLeft, akTop, akRight] + DataBinding.DataField = 'NOMBRE' + DataBinding.DataSource = DADataSource + Style.Color = 14745599 + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 0 + Width = 204 + end + object ePersonaContacto: TcxDBTextEdit + Left = 93 + Top = 52 + Anchors = [akLeft, akTop, akRight] + DataBinding.DataField = 'PERSONACONTACTO' + DataBinding.DataSource = DADataSource + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 1 + Width = 204 + end + end + inline frViewDireccion: TfrViewDireccion + Left = 0 + Top = 100 + Width = 601 + Height = 140 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 2 + ReadOnly = False + inherited Label5: TLabel + Width = 127 + Caption = 'Direcci'#243'n del almac'#233'n' + end + inherited Bevel1: TBevel + Left = 144 + Width = 445 + end + inherited eCalle: TcxDBTextEdit + Left = 92 + Width = 495 + end + inherited ePoblacion: TcxDBTextEdit + Left = 92 + Width = 495 + end + inherited eProvincia: TcxDBTextEdit + Left = 92 + Width = 495 + end + inherited eCodigoPostal: TcxDBTextEdit + Left = 92 + Width = 495 + end + end + object Panel1: TPanel + Left = 313 + Top = 0 + Width = 288 + Height = 113 + BevelOuter = bvNone + ParentBackground = True + ParentColor = True + TabOrder = 1 + DesignSize = ( + 288 + 113) + object Label3: TLabel + Left = 8 + Top = 8 + Width = 129 + Height = 13 + Caption = 'Tel'#233'fonos de contacto' + Font.Charset = DEFAULT_CHARSET + Font.Color = clActiveCaption + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + ParentFont = False + end + object Bevel2: TBevel + Left = 144 + Top = 8 + Width = 134 + Height = 9 + Anchors = [akLeft, akTop, akRight] + Shape = bsBottomLine + end + object lblTelefono: TLabel + Left = 22 + Top = 32 + Width = 46 + Height = 13 + Caption = 'Tel'#233'fono:' + end + object lblMovil: TLabel + Left = 22 + Top = 56 + Width = 28 + Height = 13 + Caption = 'M'#243'vil:' + end + object lblFax: TLabel + Left = 22 + Top = 80 + Width = 75 + Height = 13 + Caption = 'N'#250'mero de fax:' + end + object eTlfTelefono: TcxDBTextEdit + Left = 100 + Top = 28 + DataBinding.DataField = 'TELEFONO' + DataBinding.DataSource = DADataSource + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 0 + Width = 173 + end + object eTlfMovil: TcxDBTextEdit + Left = 100 + Top = 52 + DataBinding.DataField = 'MOVIL' + DataBinding.DataSource = DADataSource + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 1 + Width = 173 + end + object eFax: TcxDBTextEdit + Left = 100 + Top = 76 + DataBinding.DataField = 'FAX' + DataBinding.DataSource = DADataSource + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 2 + Width = 173 + end + end + object DADataSource: TDADataSource + Left = 336 + Top = 64 + end +end diff --git a/Modulos/Almacenes/Cliente/uViewAlmacen.pas b/Modulos/Almacenes/Cliente/uViewAlmacen.pas new file mode 100644 index 0000000..764b25d --- /dev/null +++ b/Modulos/Almacenes/Cliente/uViewAlmacen.pas @@ -0,0 +1,107 @@ +unit uViewAlmacen; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, ExtCtrls, StdCtrls, Buttons, DB, uDADataTable, + DBCtrls, Grids, DBGrids, uBizAlmacenes, Mask, ComCtrls, uCustomView, + uViewDireccion, uViewTelefonos, uViewInternet, uViewCategorias, + JvComponent, JvFormAutoSize, cxControls, cxContainer, cxEdit, cxTextEdit, + cxDBEdit; + +type + IViewAlmacen = interface(IViewBase) + ['{A9189F38-9832-4919-9B98-56F345C2AACA}'] + function GetAlmacen: IBizAlmacen; + procedure SetAlmacen(const Value: IBizAlmacen); + property Almacen: IBizAlmacen read GetAlmacen write SetAlmacen; + end; + + TfrViewAlmacen = class(TfrViewBase, IViewAlmacen) + Bevel1: TBevel; + DADataSource: TDADataSource; + frViewDireccion: TfrViewDireccion; + Label1: TLabel; + Label2: TLabel; + Label5: TLabel; + pnlGeneral: TPanel; + eNombre: TcxDBTextEdit; + ePersonaContacto: TcxDBTextEdit; + Panel1: TPanel; + Label3: TLabel; + Bevel2: TBevel; + lblTelefono: TLabel; + eTlfTelefono: TcxDBTextEdit; + lblMovil: TLabel; + eTlfMovil: TcxDBTextEdit; + lblFax: TLabel; + eFax: TcxDBTextEdit; + procedure FrameResize(Sender: TObject); + private + FAlmacen: IBizAlmacen; + protected + function GetAlmacen: IBizAlmacen; + procedure SetAlmacen(const Value: IBizAlmacen); + public + constructor Create(AOwner : TComponent); override; + property Almacen: IBizAlmacen read GetAlmacen write SetAlmacen; + end; + +implementation + +uses uDataModuleAlmacenes; + +{$R *.dfm} + +{ TfrViewAlmacenes } + +{ +******************************* TfrViewAlmacenes ******************************** +} +constructor TfrViewAlmacen.Create(AOwner : TComponent); +begin + inherited; +end; + +procedure TfrViewAlmacen.FrameResize(Sender: TObject); +var + CalcWidth: Integer; +begin + { CalcWidth := Round(Width / (1.0 + WidthRatio)); + + DisableAlign; + try + pnlGeneral.Width := CalcWidth; + frViewDireccion.Width := CalcWidth; + frViewTelefonos.Left := pnlGeneral.Width + pnlGeneral.Left; + frViewTelefonos.Width := CalcWidth; + finally + EnableAlign; + end;} +end; + +function TfrViewAlmacen.GetAlmacen: IBizAlmacen; +begin + Result := FAlmacen; +end; + +procedure TfrViewAlmacen.SetAlmacen(const Value: IBizAlmacen); +begin + FAlmacen := Value; + if Assigned(FAlmacen) then + DADataSource.DataTable := FAlmacen.DataTable + else + DADataSource.DataTable := NIL; + + frViewDireccion.DADataSource.DataTable := DADataSource.DataTable; +end; + +initialization + RegisterClass(TfrViewAlmacen); + +finalization + UnRegisterClass(TfrViewAlmacen); + +end. + diff --git a/Modulos/Almacenes/Cliente/uViewAlmacenes.ddp b/Modulos/Almacenes/Cliente/uViewAlmacenes.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Almacenes/Cliente/uViewAlmacenes.ddp differ diff --git a/Modulos/Almacenes/Cliente/uViewAlmacenes.dfm b/Modulos/Almacenes/Cliente/uViewAlmacenes.dfm new file mode 100644 index 0000000..ba445d2 --- /dev/null +++ b/Modulos/Almacenes/Cliente/uViewAlmacenes.dfm @@ -0,0 +1,73 @@ +inherited frViewAlmacenes: TfrViewAlmacenes + inherited cxGrid: TcxGrid + inherited cxGridView: TcxGridDBTableView + DataController.KeyFieldNames = 'CODIGO' + DataController.Summary.FooterSummaryItems = < + item + Format = '0 almacenes' + Kind = skCount + Column = cxGrid1ViewNOMBRE + end> + OptionsBehavior.PullFocusing = True + object cxGridViewCODIGO: TcxGridDBColumn + DataBinding.FieldName = 'CODIGO' + OnCustomDrawCell = cxGridViewCODIGOCustomDrawCell + BestFitMaxWidth = 25 + Width = 25 + IsCaptionAssigned = True + end + object cxGrid1ViewNOMBRE: TcxGridDBColumn + DataBinding.FieldName = 'NOMBRE' + SortIndex = 0 + SortOrder = soAscending + Width = 304 + end + object cxGrid1ViewPERSONACONTACTO: TcxGridDBColumn + DataBinding.FieldName = 'CALLE' + Width = 118 + end + object cxGrid1ViewTELEFONO: TcxGridDBColumn + DataBinding.FieldName = 'TELEFONO' + BestFitMaxWidth = 64 + Width = 118 + end + end + end + inherited dxComponentPrinter: TdxComponentPrinter + inherited dxComponentPrinterLink: TdxGridReportLink + ReportDocument.CreationDate = 38673.842406053240000000 + BuiltInReportLink = True + end + end + object PngImageList: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD2520000022E4944415478DA + 8D93CF6BD36018C7BF6997A45DD376EA70CA18D31D44981741280C44119DA83D + C87619781A1EFD1BC49B2028B28353141111A43BE8CD934E65A8D4A1686B61B5 + A31DD8CCBAFEDAACEDF226B389EFFB26CBCC54E6030FEFCB4B3E9FE79B9744B0 + 2C0B8220E0F7BA3AB2D75A282DE07F4AD82C60F0851B8F50530BF85EF98A6236 + 8DCCAB69B0B366BD8C95B24ACF4BB877FD226AFD635EC13A5CF99243A356869A + 4D51F8398799EC476D09E5621E0F6F5EC6C8D938EE7C503604EB7055CDA34127 + A8B90C3ECD3CE570A35AA2FD0DCB4B2AEE4F5CC29953C35094102667655B706D + 7480C3F97412AD951AAAC502E6DEBCE47031974673B942BB8AA9DB57103F7D12 + 9D9D413ED4154C8C0BD6FCE7AD2F6C2816C3CE9E6E8862077C3E9F57307CE2FC + 1F80655A308C35E844C7B3273318D8D78FE8B6282449A41211B7DE05FE2D304D + 13866EC34433F0FAC55BF4EDE945A42B0C910A6459C6DD94F27781D936F964B2 + AADB02DAEF9329ECEEED4138A240944548B2840773DBBD02B637596C6238205D + 352AD175643E66B1A3BB0B0A15489204292061AAB0CB2B68D3C96B34367120BE + 3AB2F96C01E1A8825028083920F35778BCD8B721387E6C9C42060788465C50A3 + 12B24AB0582C2110946907282C61BA3588442221B882C343E75C50A30093B104 + 84D849EAD53AFC1D7E0ECFFA631C76FF0526387470D4135977405B62A0D56CB2 + C791891C71618FE0C0FEB873618623B2E33361FB679B4A340A1FF5C01E41928C + 6DF9256E8659FD02D3B7960923D6946A0000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end> + Left = 160 + Top = 32 + Bitmap = {} + end +end diff --git a/Modulos/Almacenes/Cliente/uViewAlmacenes.pas b/Modulos/Almacenes/Cliente/uViewAlmacenes.pas new file mode 100644 index 0000000..25d1efc --- /dev/null +++ b/Modulos/Almacenes/Cliente/uViewAlmacenes.pas @@ -0,0 +1,82 @@ +unit uViewAlmacenes; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewGrid, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, + cxDataStorage, cxEdit, DB, cxDBData, uDADataTable, cxGridLevel, + cxClasses, cxControls, cxGridCustomView, cxGridCustomTableView, + cxGridTableView, cxGridDBTableView, cxGrid, uBizAlmacenes, ActnList, Menus, + cxGridBandedTableView, cxGridDBBandedTableView, JvComponent, + JvFormAutoSize, PngImageList, ImgList, dxPSGlbl, dxPSUtl, dxPSEngn, + dxPrnPg, dxBkgnd, dxWrap, dxPrnDev, dxPSCompsProvider, dxPSFillPatterns, + dxPSEdgePatterns, cxIntlPrintSys3, dxPSCore, dxPScxCommon, dxPScxGridLnk; + +type + IViewAlmacenes = interface(IViewGrid) + ['{B88935A5-527C-4CF5-84A6-AA197FB71674}'] + function GetAlmacenes: IBizAlmacen; + procedure SetAlmacenes(const Value: IBizAlmacen); + property Almacenes: IBizAlmacen read GetAlmacenes write SetAlmacenes; + end; + + TfrViewAlmacenes = class(TfrViewGrid, IViewAlmacenes) + cxGrid1ViewPERSONACONTACTO: TcxGridDBColumn; + cxGrid1ViewNOMBRE: TcxGridDBColumn; + cxGrid1ViewTELEFONO: TcxGridDBColumn; + cxGridViewCODIGO: TcxGridDBColumn; + PngImageList: TPngImageList; + procedure cxGridViewCODIGOCustomDrawCell( + Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; + AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); + protected + FAlmacenes: IBizAlmacen; + function GetAlmacenes: IBizAlmacen; virtual; + procedure SetAlmacenes(const Value: IBizAlmacen); virtual; + public + property DataSet: IBizAlmacen read GetAlmacenes write SetAlmacenes; + end; + +var + frViewAlmacenes: TfrViewAlmacenes; + +implementation + +uses uDataModuleAlmacenes; + + +{$R *.dfm} + +{ TfrViewClientes } + +{ +******************************* TfrViewAlmacenes ******************************* +} +function TfrViewAlmacenes.GetAlmacenes: IBizAlmacen; +begin + Result := FAlmacenes; +end; + +procedure TfrViewAlmacenes.SetAlmacenes(const Value: IBizAlmacen); +begin + FAlmacenes := Value; + if Assigned(FAlmacenes) then + DADataSource.DataTable := FAlmacenes.DataTable; +end; + + +procedure TfrViewAlmacenes.cxGridViewCODIGOCustomDrawCell( + Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; + AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); +var + R : TRect; +begin + inherited; + R := AViewInfo.ContentBounds; + ACanvas.FillRect(R); + ACanvas.DrawImage(PngImageList, R.Left, R.Top, 0); + ADone := True; +end; + +end. diff --git a/Modulos/Almacenes/Reglas/schAlmacenesClient_Intf.pas b/Modulos/Almacenes/Reglas/schAlmacenesClient_Intf.pas new file mode 100644 index 0000000..9aa82af --- /dev/null +++ b/Modulos/Almacenes/Reglas/schAlmacenesClient_Intf.pas @@ -0,0 +1,317 @@ +unit schAlmacenesClient_Intf; + +interface + +uses + Classes, DB, SysUtils, uROClasses, uDADataTable; + +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_ALMACENES = '{E40FF005-6127-4C15-B90B-62D1944091F3}'; + + { Data table names } + nme_ALMACENES = 'ALMACENES'; + + { ALMACENES fields } + fld_ALMACENESCODIGOEMPRESA = 'CODIGOEMPRESA'; + fld_ALMACENESCODIGO = 'CODIGO'; + fld_ALMACENESFECHAALTA = 'FECHAALTA'; + fld_ALMACENESUSUARIO = 'USUARIO'; + fld_ALMACENESNOMBRE = 'NOMBRE'; + fld_ALMACENESCALLE = 'CALLE'; + fld_ALMACENESPROVINCIA = 'PROVINCIA'; + fld_ALMACENESPOBLACION = 'POBLACION'; + fld_ALMACENESCODIGOPOSTAL = 'CODIGOPOSTAL'; + fld_ALMACENESTELEFONO = 'TELEFONO'; + fld_ALMACENESMOVIL = 'MOVIL'; + fld_ALMACENESFAX = 'FAX'; + fld_ALMACENESPERSONACONTACTO = 'PERSONACONTACTO'; + fld_ALMACENESOBSERVACIONES = 'OBSERVACIONES'; + + { ALMACENES field indexes } + idx_ALMACENESCODIGOEMPRESA = 0; + idx_ALMACENESCODIGO = 1; + idx_ALMACENESFECHAALTA = 2; + idx_ALMACENESUSUARIO = 3; + idx_ALMACENESNOMBRE = 4; + idx_ALMACENESCALLE = 5; + idx_ALMACENESPROVINCIA = 6; + idx_ALMACENESPOBLACION = 7; + idx_ALMACENESCODIGOPOSTAL = 8; + idx_ALMACENESTELEFONO = 9; + idx_ALMACENESMOVIL = 10; + idx_ALMACENESFAX = 11; + idx_ALMACENESPERSONACONTACTO = 12; + idx_ALMACENESOBSERVACIONES = 13; + +type + { IALMACENES } + IALMACENES = interface(IDAStronglyTypedDataTable) + ['{3E2C271E-51D7-4838-98EC-BB629026C37C}'] + { Property getters and setters } + function GetCODIGOEMPRESAValue: Integer; + procedure SetCODIGOEMPRESAValue(const aValue: Integer); + function GetCODIGOValue: Integer; + procedure SetCODIGOValue(const aValue: Integer); + function GetFECHAALTAValue: DateTime; + procedure SetFECHAALTAValue(const aValue: DateTime); + function GetUSUARIOValue: String; + procedure SetUSUARIOValue(const aValue: String); + function GetNOMBREValue: String; + procedure SetNOMBREValue(const aValue: String); + function GetCALLEValue: String; + procedure SetCALLEValue(const aValue: String); + function GetPROVINCIAValue: String; + procedure SetPROVINCIAValue(const aValue: String); + function GetPOBLACIONValue: String; + procedure SetPOBLACIONValue(const aValue: String); + function GetCODIGOPOSTALValue: String; + procedure SetCODIGOPOSTALValue(const aValue: String); + function GetTELEFONOValue: String; + procedure SetTELEFONOValue(const aValue: String); + function GetMOVILValue: String; + procedure SetMOVILValue(const aValue: String); + function GetFAXValue: String; + procedure SetFAXValue(const aValue: String); + function GetPERSONACONTACTOValue: String; + procedure SetPERSONACONTACTOValue(const aValue: String); + function GetOBSERVACIONESValue: IROStrings; + procedure SetOBSERVACIONESValue(const aValue: IROStrings); + + + { Properties } + property CODIGOEMPRESA: Integer read GetCODIGOEMPRESAValue write SetCODIGOEMPRESAValue; + property CODIGO: Integer read GetCODIGOValue write SetCODIGOValue; + property FECHAALTA: DateTime read GetFECHAALTAValue write SetFECHAALTAValue; + property USUARIO: String read GetUSUARIOValue write SetUSUARIOValue; + property NOMBRE: String read GetNOMBREValue write SetNOMBREValue; + property CALLE: String read GetCALLEValue write SetCALLEValue; + property PROVINCIA: String read GetPROVINCIAValue write SetPROVINCIAValue; + property POBLACION: String read GetPOBLACIONValue write SetPOBLACIONValue; + property CODIGOPOSTAL: String read GetCODIGOPOSTALValue write SetCODIGOPOSTALValue; + property TELEFONO: String read GetTELEFONOValue write SetTELEFONOValue; + property MOVIL: String read GetMOVILValue write SetMOVILValue; + property FAX: String read GetFAXValue write SetFAXValue; + property PERSONACONTACTO: String read GetPERSONACONTACTOValue write SetPERSONACONTACTOValue; + property OBSERVACIONES: IROStrings read GetOBSERVACIONESValue write SetOBSERVACIONESValue; + end; + + { TALMACENESDataTableRules } + TALMACENESDataTableRules = class(TDADataTableRules, IALMACENES) + private + protected + { Property getters and setters } + function GetCODIGOEMPRESAValue: Integer; virtual; + procedure SetCODIGOEMPRESAValue(const aValue: Integer); virtual; + function GetCODIGOValue: Integer; virtual; + procedure SetCODIGOValue(const aValue: Integer); virtual; + function GetFECHAALTAValue: DateTime; virtual; + procedure SetFECHAALTAValue(const aValue: DateTime); virtual; + function GetUSUARIOValue: String; virtual; + procedure SetUSUARIOValue(const aValue: String); virtual; + function GetNOMBREValue: String; virtual; + procedure SetNOMBREValue(const aValue: String); virtual; + function GetCALLEValue: String; virtual; + procedure SetCALLEValue(const aValue: String); virtual; + function GetPROVINCIAValue: String; virtual; + procedure SetPROVINCIAValue(const aValue: String); virtual; + function GetPOBLACIONValue: String; virtual; + procedure SetPOBLACIONValue(const aValue: String); virtual; + function GetCODIGOPOSTALValue: String; virtual; + procedure SetCODIGOPOSTALValue(const aValue: String); virtual; + function GetTELEFONOValue: String; virtual; + procedure SetTELEFONOValue(const aValue: String); virtual; + function GetMOVILValue: String; virtual; + procedure SetMOVILValue(const aValue: String); virtual; + function GetFAXValue: String; virtual; + procedure SetFAXValue(const aValue: String); virtual; + function GetPERSONACONTACTOValue: String; virtual; + procedure SetPERSONACONTACTOValue(const aValue: String); virtual; + function GetOBSERVACIONESValue: IROStrings; virtual; + procedure SetOBSERVACIONESValue(const aValue: IROStrings); virtual; + + { Properties } + property CODIGOEMPRESA: Integer read GetCODIGOEMPRESAValue write SetCODIGOEMPRESAValue; + property CODIGO: Integer read GetCODIGOValue write SetCODIGOValue; + property FECHAALTA: DateTime read GetFECHAALTAValue write SetFECHAALTAValue; + property USUARIO: String read GetUSUARIOValue write SetUSUARIOValue; + property NOMBRE: String read GetNOMBREValue write SetNOMBREValue; + property CALLE: String read GetCALLEValue write SetCALLEValue; + property PROVINCIA: String read GetPROVINCIAValue write SetPROVINCIAValue; + property POBLACION: String read GetPOBLACIONValue write SetPOBLACIONValue; + property CODIGOPOSTAL: String read GetCODIGOPOSTALValue write SetCODIGOPOSTALValue; + property TELEFONO: String read GetTELEFONOValue write SetTELEFONOValue; + property MOVIL: String read GetMOVILValue write SetMOVILValue; + property FAX: String read GetFAXValue write SetFAXValue; + property PERSONACONTACTO: String read GetPERSONACONTACTOValue write SetPERSONACONTACTOValue; + property OBSERVACIONES: IROStrings read GetOBSERVACIONESValue write SetOBSERVACIONESValue; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + +implementation + +uses Variants; + +{ TALMACENESDataTableRules } +constructor TALMACENESDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TALMACENESDataTableRules.Destroy; +begin + inherited; +end; + +function TALMACENESDataTableRules.GetCODIGOEMPRESAValue: Integer; +begin + result := DataTable.Fields[idx_ALMACENESCODIGOEMPRESA].AsInteger; +end; + +procedure TALMACENESDataTableRules.SetCODIGOEMPRESAValue(const aValue: Integer); +begin + DataTable.Fields[idx_ALMACENESCODIGOEMPRESA].AsInteger := aValue; +end; + +function TALMACENESDataTableRules.GetCODIGOValue: Integer; +begin + result := DataTable.Fields[idx_ALMACENESCODIGO].AsInteger; +end; + +procedure TALMACENESDataTableRules.SetCODIGOValue(const aValue: Integer); +begin + DataTable.Fields[idx_ALMACENESCODIGO].AsInteger := aValue; +end; + +function TALMACENESDataTableRules.GetFECHAALTAValue: DateTime; +begin + result := DataTable.Fields[idx_ALMACENESFECHAALTA].AsDateTime; +end; + +procedure TALMACENESDataTableRules.SetFECHAALTAValue(const aValue: DateTime); +begin + DataTable.Fields[idx_ALMACENESFECHAALTA].AsDateTime := aValue; +end; + +function TALMACENESDataTableRules.GetUSUARIOValue: String; +begin + result := DataTable.Fields[idx_ALMACENESUSUARIO].AsString; +end; + +procedure TALMACENESDataTableRules.SetUSUARIOValue(const aValue: String); +begin + DataTable.Fields[idx_ALMACENESUSUARIO].AsString := aValue; +end; + +function TALMACENESDataTableRules.GetNOMBREValue: String; +begin + result := DataTable.Fields[idx_ALMACENESNOMBRE].AsString; +end; + +procedure TALMACENESDataTableRules.SetNOMBREValue(const aValue: String); +begin + DataTable.Fields[idx_ALMACENESNOMBRE].AsString := aValue; +end; + +function TALMACENESDataTableRules.GetCALLEValue: String; +begin + result := DataTable.Fields[idx_ALMACENESCALLE].AsString; +end; + +procedure TALMACENESDataTableRules.SetCALLEValue(const aValue: String); +begin + DataTable.Fields[idx_ALMACENESCALLE].AsString := aValue; +end; + +function TALMACENESDataTableRules.GetPROVINCIAValue: String; +begin + result := DataTable.Fields[idx_ALMACENESPROVINCIA].AsString; +end; + +procedure TALMACENESDataTableRules.SetPROVINCIAValue(const aValue: String); +begin + DataTable.Fields[idx_ALMACENESPROVINCIA].AsString := aValue; +end; + +function TALMACENESDataTableRules.GetPOBLACIONValue: String; +begin + result := DataTable.Fields[idx_ALMACENESPOBLACION].AsString; +end; + +procedure TALMACENESDataTableRules.SetPOBLACIONValue(const aValue: String); +begin + DataTable.Fields[idx_ALMACENESPOBLACION].AsString := aValue; +end; + +function TALMACENESDataTableRules.GetCODIGOPOSTALValue: String; +begin + result := DataTable.Fields[idx_ALMACENESCODIGOPOSTAL].AsString; +end; + +procedure TALMACENESDataTableRules.SetCODIGOPOSTALValue(const aValue: String); +begin + DataTable.Fields[idx_ALMACENESCODIGOPOSTAL].AsString := aValue; +end; + +function TALMACENESDataTableRules.GetTELEFONOValue: String; +begin + result := DataTable.Fields[idx_ALMACENESTELEFONO].AsString; +end; + +procedure TALMACENESDataTableRules.SetTELEFONOValue(const aValue: String); +begin + DataTable.Fields[idx_ALMACENESTELEFONO].AsString := aValue; +end; + +function TALMACENESDataTableRules.GetMOVILValue: String; +begin + result := DataTable.Fields[idx_ALMACENESMOVIL].AsString; +end; + +procedure TALMACENESDataTableRules.SetMOVILValue(const aValue: String); +begin + DataTable.Fields[idx_ALMACENESMOVIL].AsString := aValue; +end; + +function TALMACENESDataTableRules.GetFAXValue: String; +begin + result := DataTable.Fields[idx_ALMACENESFAX].AsString; +end; + +procedure TALMACENESDataTableRules.SetFAXValue(const aValue: String); +begin + DataTable.Fields[idx_ALMACENESFAX].AsString := aValue; +end; + +function TALMACENESDataTableRules.GetPERSONACONTACTOValue: String; +begin + result := DataTable.Fields[idx_ALMACENESPERSONACONTACTO].AsString; +end; + +procedure TALMACENESDataTableRules.SetPERSONACONTACTOValue(const aValue: String); +begin + DataTable.Fields[idx_ALMACENESPERSONACONTACTO].AsString := aValue; +end; + +function TALMACENESDataTableRules.GetOBSERVACIONESValue: IROStrings; +begin + result := NewROStrings(); + result.Text := DataTable.Fields[idx_ALMACENESOBSERVACIONES].AsString; +end; + +procedure TALMACENESDataTableRules.SetOBSERVACIONESValue(const aValue: IROStrings); +begin + DataTable.Fields[idx_ALMACENESOBSERVACIONES].AsString := aValue.Text; +end; + + +initialization + RegisterDataTableRules(RID_ALMACENES, TALMACENESDataTableRules); + +end. diff --git a/Modulos/Almacenes/Reglas/schAlmacenesServer_Intf.pas b/Modulos/Almacenes/Reglas/schAlmacenesServer_Intf.pas new file mode 100644 index 0000000..deacbac --- /dev/null +++ b/Modulos/Almacenes/Reglas/schAlmacenesServer_Intf.pas @@ -0,0 +1,367 @@ +unit schAlmacenesServer_Intf; + +interface + +uses + Classes, DB, SysUtils, uROClasses, uDADataTable, uDABusinessProcessor, schAlmacenesClient_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_ALMACENESDelta = '{4FFAA3A8-AB4A-4DD2-A296-B9114795E2AE}'; + +type + { IALMACENESDelta } + IALMACENESDelta = interface(IALMACENES) + ['{4FFAA3A8-AB4A-4DD2-A296-B9114795E2AE}'] + { Property getters and setters } + function GetOldCODIGOEMPRESAValue : Integer; + function GetOldCODIGOValue : Integer; + function GetOldFECHAALTAValue : DateTime; + function GetOldUSUARIOValue : String; + function GetOldNOMBREValue : String; + function GetOldCALLEValue : String; + function GetOldPROVINCIAValue : String; + function GetOldPOBLACIONValue : String; + function GetOldCODIGOPOSTALValue : String; + function GetOldTELEFONOValue : String; + function GetOldMOVILValue : String; + function GetOldFAXValue : String; + function GetOldPERSONACONTACTOValue : String; + function GetOldOBSERVACIONESValue : IROStrings; + + { Properties } + property OldCODIGOEMPRESA : Integer read GetOldCODIGOEMPRESAValue; + property OldCODIGO : Integer read GetOldCODIGOValue; + property OldFECHAALTA : DateTime read GetOldFECHAALTAValue; + property OldUSUARIO : String read GetOldUSUARIOValue; + property OldNOMBRE : String read GetOldNOMBREValue; + property OldCALLE : String read GetOldCALLEValue; + property OldPROVINCIA : String read GetOldPROVINCIAValue; + property OldPOBLACION : String read GetOldPOBLACIONValue; + property OldCODIGOPOSTAL : String read GetOldCODIGOPOSTALValue; + property OldTELEFONO : String read GetOldTELEFONOValue; + property OldMOVIL : String read GetOldMOVILValue; + property OldFAX : String read GetOldFAXValue; + property OldPERSONACONTACTO : String read GetOldPERSONACONTACTOValue; + property OldOBSERVACIONES : IROStrings read GetOldOBSERVACIONESValue; + end; + + { TALMACENESBusinessProcessorRules } + TALMACENESBusinessProcessorRules = class(TDABusinessProcessorRules, IALMACENES, IALMACENESDelta) + private + protected + { Property getters and setters } + function GetCODIGOEMPRESAValue: Integer; virtual; + function GetOldCODIGOEMPRESAValue: Integer; virtual; + procedure SetCODIGOEMPRESAValue(const aValue: Integer); virtual; + function GetCODIGOValue: Integer; virtual; + function GetOldCODIGOValue: Integer; virtual; + procedure SetCODIGOValue(const aValue: Integer); virtual; + function GetFECHAALTAValue: DateTime; virtual; + function GetOldFECHAALTAValue: DateTime; virtual; + procedure SetFECHAALTAValue(const aValue: DateTime); virtual; + function GetUSUARIOValue: String; virtual; + function GetOldUSUARIOValue: String; virtual; + procedure SetUSUARIOValue(const aValue: String); virtual; + function GetNOMBREValue: String; virtual; + function GetOldNOMBREValue: String; virtual; + procedure SetNOMBREValue(const aValue: String); virtual; + function GetCALLEValue: String; virtual; + function GetOldCALLEValue: String; virtual; + procedure SetCALLEValue(const aValue: String); virtual; + function GetPROVINCIAValue: String; virtual; + function GetOldPROVINCIAValue: String; virtual; + procedure SetPROVINCIAValue(const aValue: String); virtual; + function GetPOBLACIONValue: String; virtual; + function GetOldPOBLACIONValue: String; virtual; + procedure SetPOBLACIONValue(const aValue: String); virtual; + function GetCODIGOPOSTALValue: String; virtual; + function GetOldCODIGOPOSTALValue: String; virtual; + procedure SetCODIGOPOSTALValue(const aValue: String); virtual; + function GetTELEFONOValue: String; virtual; + function GetOldTELEFONOValue: String; virtual; + procedure SetTELEFONOValue(const aValue: String); virtual; + function GetMOVILValue: String; virtual; + function GetOldMOVILValue: String; virtual; + procedure SetMOVILValue(const aValue: String); virtual; + function GetFAXValue: String; virtual; + function GetOldFAXValue: String; virtual; + procedure SetFAXValue(const aValue: String); virtual; + function GetPERSONACONTACTOValue: String; virtual; + function GetOldPERSONACONTACTOValue: String; virtual; + procedure SetPERSONACONTACTOValue(const aValue: String); virtual; + function GetOBSERVACIONESValue: IROStrings; virtual; + function GetOldOBSERVACIONESValue: IROStrings; virtual; + procedure SetOBSERVACIONESValue(const aValue: IROStrings); virtual; + + { Properties } + property CODIGOEMPRESA : Integer read GetCODIGOEMPRESAValue write SetCODIGOEMPRESAValue; + property OldCODIGOEMPRESA : Integer read GetOldCODIGOEMPRESAValue; + property CODIGO : Integer read GetCODIGOValue write SetCODIGOValue; + property OldCODIGO : Integer read GetOldCODIGOValue; + property FECHAALTA : DateTime read GetFECHAALTAValue write SetFECHAALTAValue; + property OldFECHAALTA : DateTime read GetOldFECHAALTAValue; + property USUARIO : String read GetUSUARIOValue write SetUSUARIOValue; + property OldUSUARIO : String read GetOldUSUARIOValue; + property NOMBRE : String read GetNOMBREValue write SetNOMBREValue; + property OldNOMBRE : String read GetOldNOMBREValue; + property CALLE : String read GetCALLEValue write SetCALLEValue; + property OldCALLE : String read GetOldCALLEValue; + property PROVINCIA : String read GetPROVINCIAValue write SetPROVINCIAValue; + property OldPROVINCIA : String read GetOldPROVINCIAValue; + property POBLACION : String read GetPOBLACIONValue write SetPOBLACIONValue; + property OldPOBLACION : String read GetOldPOBLACIONValue; + property CODIGOPOSTAL : String read GetCODIGOPOSTALValue write SetCODIGOPOSTALValue; + property OldCODIGOPOSTAL : String read GetOldCODIGOPOSTALValue; + property TELEFONO : String read GetTELEFONOValue write SetTELEFONOValue; + property OldTELEFONO : String read GetOldTELEFONOValue; + property MOVIL : String read GetMOVILValue write SetMOVILValue; + property OldMOVIL : String read GetOldMOVILValue; + property FAX : String read GetFAXValue write SetFAXValue; + property OldFAX : String read GetOldFAXValue; + property PERSONACONTACTO : String read GetPERSONACONTACTOValue write SetPERSONACONTACTOValue; + property OldPERSONACONTACTO : String read GetOldPERSONACONTACTOValue; + property OBSERVACIONES : IROStrings read GetOBSERVACIONESValue write SetOBSERVACIONESValue; + property OldOBSERVACIONES : IROStrings read GetOldOBSERVACIONESValue; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + +implementation + +uses + Variants, uROBinaryHelpers; + +{ TALMACENESBusinessProcessorRules } +constructor TALMACENESBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TALMACENESBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TALMACENESBusinessProcessorRules.GetCODIGOEMPRESAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ALMACENESCODIGOEMPRESA]; +end; + +function TALMACENESBusinessProcessorRules.GetOldCODIGOEMPRESAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ALMACENESCODIGOEMPRESA]; +end; + +procedure TALMACENESBusinessProcessorRules.SetCODIGOEMPRESAValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ALMACENESCODIGOEMPRESA] := aValue; +end; + +function TALMACENESBusinessProcessorRules.GetCODIGOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ALMACENESCODIGO]; +end; + +function TALMACENESBusinessProcessorRules.GetOldCODIGOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ALMACENESCODIGO]; +end; + +procedure TALMACENESBusinessProcessorRules.SetCODIGOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ALMACENESCODIGO] := aValue; +end; + +function TALMACENESBusinessProcessorRules.GetFECHAALTAValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ALMACENESFECHAALTA]; +end; + +function TALMACENESBusinessProcessorRules.GetOldFECHAALTAValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ALMACENESFECHAALTA]; +end; + +procedure TALMACENESBusinessProcessorRules.SetFECHAALTAValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ALMACENESFECHAALTA] := aValue; +end; + +function TALMACENESBusinessProcessorRules.GetUSUARIOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ALMACENESUSUARIO]; +end; + +function TALMACENESBusinessProcessorRules.GetOldUSUARIOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ALMACENESUSUARIO]; +end; + +procedure TALMACENESBusinessProcessorRules.SetUSUARIOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ALMACENESUSUARIO] := aValue; +end; + +function TALMACENESBusinessProcessorRules.GetNOMBREValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ALMACENESNOMBRE]; +end; + +function TALMACENESBusinessProcessorRules.GetOldNOMBREValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ALMACENESNOMBRE]; +end; + +procedure TALMACENESBusinessProcessorRules.SetNOMBREValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ALMACENESNOMBRE] := aValue; +end; + +function TALMACENESBusinessProcessorRules.GetCALLEValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ALMACENESCALLE]; +end; + +function TALMACENESBusinessProcessorRules.GetOldCALLEValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ALMACENESCALLE]; +end; + +procedure TALMACENESBusinessProcessorRules.SetCALLEValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ALMACENESCALLE] := aValue; +end; + +function TALMACENESBusinessProcessorRules.GetPROVINCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ALMACENESPROVINCIA]; +end; + +function TALMACENESBusinessProcessorRules.GetOldPROVINCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ALMACENESPROVINCIA]; +end; + +procedure TALMACENESBusinessProcessorRules.SetPROVINCIAValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ALMACENESPROVINCIA] := aValue; +end; + +function TALMACENESBusinessProcessorRules.GetPOBLACIONValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ALMACENESPOBLACION]; +end; + +function TALMACENESBusinessProcessorRules.GetOldPOBLACIONValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ALMACENESPOBLACION]; +end; + +procedure TALMACENESBusinessProcessorRules.SetPOBLACIONValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ALMACENESPOBLACION] := aValue; +end; + +function TALMACENESBusinessProcessorRules.GetCODIGOPOSTALValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ALMACENESCODIGOPOSTAL]; +end; + +function TALMACENESBusinessProcessorRules.GetOldCODIGOPOSTALValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ALMACENESCODIGOPOSTAL]; +end; + +procedure TALMACENESBusinessProcessorRules.SetCODIGOPOSTALValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ALMACENESCODIGOPOSTAL] := aValue; +end; + +function TALMACENESBusinessProcessorRules.GetTELEFONOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ALMACENESTELEFONO]; +end; + +function TALMACENESBusinessProcessorRules.GetOldTELEFONOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ALMACENESTELEFONO]; +end; + +procedure TALMACENESBusinessProcessorRules.SetTELEFONOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ALMACENESTELEFONO] := aValue; +end; + +function TALMACENESBusinessProcessorRules.GetMOVILValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ALMACENESMOVIL]; +end; + +function TALMACENESBusinessProcessorRules.GetOldMOVILValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ALMACENESMOVIL]; +end; + +procedure TALMACENESBusinessProcessorRules.SetMOVILValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ALMACENESMOVIL] := aValue; +end; + +function TALMACENESBusinessProcessorRules.GetFAXValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ALMACENESFAX]; +end; + +function TALMACENESBusinessProcessorRules.GetOldFAXValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ALMACENESFAX]; +end; + +procedure TALMACENESBusinessProcessorRules.SetFAXValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ALMACENESFAX] := aValue; +end; + +function TALMACENESBusinessProcessorRules.GetPERSONACONTACTOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ALMACENESPERSONACONTACTO]; +end; + +function TALMACENESBusinessProcessorRules.GetOldPERSONACONTACTOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ALMACENESPERSONACONTACTO]; +end; + +procedure TALMACENESBusinessProcessorRules.SetPERSONACONTACTOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ALMACENESPERSONACONTACTO] := aValue; +end; + +function TALMACENESBusinessProcessorRules.GetOBSERVACIONESValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.NewValueByName[fld_ALMACENESOBSERVACIONES]; +end; + +function TALMACENESBusinessProcessorRules.GetOldOBSERVACIONESValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.OldValueByName[fld_ALMACENESOBSERVACIONES]; +end; + +procedure TALMACENESBusinessProcessorRules.SetOBSERVACIONESValue(const aValue: IROStrings); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ALMACENESOBSERVACIONES] := aValue.Text; +end; + + +initialization + RegisterBusinessProcessorRules(RID_ALMACENESDelta, TALMACENESBusinessProcessorRules); + +end. diff --git a/Modulos/Almacenes/Reglas/uBizAlmacenes.pas b/Modulos/Almacenes/Reglas/uBizAlmacenes.pas new file mode 100644 index 0000000..1fd649a --- /dev/null +++ b/Modulos/Almacenes/Reglas/uBizAlmacenes.pas @@ -0,0 +1,161 @@ +unit uBizAlmacenes; + +interface + +uses + uDAInterfaces, uDADataTable, schAlmacenesClient_Intf, Classes, + DBGrids, uDBSelectionList, DB, uExceptions, Controls; + +type + + IBizAlmacen = interface(IALMACENES) + ['{D9479C4B-52EA-4DB6-9F8F-4B8B758EF80A}'] + procedure Show; + procedure ShowAll; + procedure Preview; + function ShowForSelect : TModalResult; + end; + + TBizAlmacenDataTableRules = class(TALMACENESDataTableRules, IBizAlmacen, + IApplyUpdateFailedException, ISelectedRowList) + private + FSelectedRows : TSelectedRowList; + procedure ShowToSelect; + procedure BeforeApplyUpdates(Sender: TDADataTable; const Delta: IDADelta); + procedure OnPostError(DataTable: TDADataTable; Error: EDatabaseError; + var Action: TDataAction); override; + protected + procedure OnNewRecord(Sender: TDADataTable); override; + function GetSelectedRows : TSelectedRowList; virtual; + procedure ShowApplyUpdateFailed (const Error: EDAApplyUpdateFailed); virtual; + procedure BeforeDelete(Sender: TDADataTable); override; + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + procedure Show; virtual; + procedure ShowAll; virtual; + procedure Preview; virtual; + function ShowForSelect : TModalResult; virtual; + property SelectedRows : TSelectedRowList read GetSelectedRows; + end; + + procedure ValidarAlmacen (const AAlmacen : IBizAlmacen); + +implementation + +uses + Windows, Dialogs, uDACDSDataTable, SysUtils, uDataModuleBase, uDataModuleUsuarios, + uEditorUtils, uDataModuleAlmacenes, Variants; + + +procedure ValidarAlmacen (const AAlmacen : IBizAlmacen); +begin +// +end; + + +{ TBizAlmacenDataTableRules } + +{ +************************** TBizAlmacenDataTableRules ************************** +} + +procedure TBizAlmacenDataTableRules.OnNewRecord(Sender: TDADataTable); +begin + inherited; + CODIGOEMPRESA := dmBase.CodigoEmpresa; + USUARIO := dmUsuarios.LoginInfo.UserID; + FECHAALTA := Date; +end; + +procedure TBizAlmacenDataTableRules.Show; +begin + ShowEditor(IBizAlmacen, Self, etItem); +end; + +procedure TBizAlmacenDataTableRules.Preview; +begin +// dmContactos.Preview; +end; + +procedure TBizAlmacenDataTableRules.ShowApplyUpdateFailed( + const Error: EDAApplyUpdateFailed); +begin + if (Pos(AUF_FKVIOLATION, Error.Message) > 0) then + MessageBox(0, 'No se puede borrar este almacén porque tiene articulos o está asociado al destino de algún pedido', 'Atención', MB_ICONWARNING or MB_OK); +end; + +function TBizAlmacenDataTableRules.GetSelectedRows: TSelectedRowList; +begin + Result := FSelectedRows; +end; + +procedure TBizAlmacenDataTableRules.ShowToSelect; +begin +// +end; + +constructor TBizAlmacenDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; + FSelectedRows := TSelectedRowList.Create(aDataTable); + aDataTable.OnBeforeApplyUpdates := BeforeApplyUpdates; +end; + +destructor TBizAlmacenDataTableRules.Destroy; +begin + FSelectedRows.Free; + inherited; +end; + +procedure TBizAlmacenDataTableRules.ShowAll; +begin +// ShowEditor(IBizProveedor, Self, etItems); +end; + +function TBizAlmacenDataTableRules.ShowForSelect: TModalResult; +begin + Result := ShowEditor(IBizAlmacen, Self, etItems); +end; + +procedure TBizAlmacenDataTableRules.BeforeApplyUpdates( + Sender: TDADataTable; const Delta: IDADelta); +var + i: Integer; +begin + for i := 0 to Delta.Count - 1 do + case Delta.Changes[i].ChangeType of + ctInsert, ctUpdate : ValidarAlmacen(Self); +// ctDelete : + end; +end; + +procedure TBizAlmacenDataTableRules.OnPostError(DataTable: TDADataTable; + Error: EDatabaseError; var Action: TDataAction); +begin + inherited; + Action := daAbort; + if (Pos(AUF_HAVEVALUE, Error.Message) > 0) then + begin + if (Pos('Nombre', Error.Message) > 0) then + MessageBox(0, 'Debe indicar al menos el nombre', 'Atención', MB_ICONWARNING or MB_OK) + else + raise Error; + end + else + raise Error; +end; + +procedure TBizAlmacenDataTableRules.BeforeDelete(Sender: TDADataTable); +begin + inherited; + if not dmAlmacenes.PuedoEliminarAlmacen(CODIGO) then + raise Exception.Create('No se puede borrar este almacén porque tiene articulos o está asociado al destino de algún pedido'); +end; + +initialization + RegisterDataTableRules('BizAlmacen', TBizAlmacenDataTableRules); + +finalization + +end. diff --git a/Modulos/Almacenes/Servidor/srvAlmacenes_Impl.ddp b/Modulos/Almacenes/Servidor/srvAlmacenes_Impl.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Almacenes/Servidor/srvAlmacenes_Impl.ddp differ diff --git a/Modulos/Almacenes/Servidor/srvAlmacenes_Impl.dfm b/Modulos/Almacenes/Servidor/srvAlmacenes_Impl.dfm new file mode 100644 index 0000000..5f0a4cc --- /dev/null +++ b/Modulos/Almacenes/Servidor/srvAlmacenes_Impl.dfm @@ -0,0 +1,273 @@ +object srvAlmacenes: TsrvAlmacenes + OldCreateOrder = True + RequiresSession = True + SessionManager = dmServer.SessionManager + AcquireConnection = True + ConnectionName = 'IBX' + ServiceSchema = schAlmacenes + ServiceAdapter = DABINAdapter + Left = 200 + Top = 200 + Height = 300 + Width = 300 + object schAlmacenes: TDASchema + ConnectionManager = dmServer.ConnectionManager + DataDictionary = dmServer.DataDictionary + Diagrams = dmServer.DADiagrams + Datasets = < + item + Params = <> + Statements = < + item + Connection = 'IBX' + TargetTable = 'ALMACENES' + SQL = + 'SELECT '#10' CODIGOEMPRESA, CODIGO, FECHAALTA, USUARIO, NOMBRE, '#10 + + ' CALLE, PROVINCIA, POBLACION, CODIGOPOSTAL, TELEFONO, '#10' MO' + + 'VIL, FAX, PERSONACONTACTO, OBSERVACIONES'#10' FROM'#10' ALMACENES'#10'OR' + + 'DER BY NOMBRE' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'CODIGOEMPRESA' + TableField = 'CODIGOEMPRESA' + end + item + DatasetField = 'CODIGO' + TableField = 'CODIGO' + end + item + DatasetField = 'FECHAALTA' + TableField = 'FECHAALTA' + end + item + DatasetField = 'USUARIO' + TableField = 'USUARIO' + 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 = 'CODIGOPOSTAL' + TableField = 'CODIGOPOSTAL' + end + item + DatasetField = 'TELEFONO' + TableField = 'TELEFONO' + end + item + DatasetField = 'MOVIL' + TableField = 'MOVIL' + end + item + DatasetField = 'FAX' + TableField = 'FAX' + end + item + DatasetField = 'PERSONACONTACTO' + TableField = 'PERSONACONTACTO' + end + item + DatasetField = 'OBSERVACIONES' + TableField = 'OBSERVACIONES' + end> + end> + Name = 'ALMACENES' + Fields = < + item + Name = 'CODIGOEMPRESA' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'CODIGOEMPRESA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGO' + DataType = datAutoInc + BlobType = dabtUnknown + GeneratorName = 'GEN_ALMACENES' + DictionaryEntry = 'CODIGOALMACEN_GEN' + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHAALTA' + DataType = datDateTime + BlobType = dabtUnknown + DictionaryEntry = 'FECHAALTA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'USUARIO' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DictionaryEntry = 'USUARIO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NOMBRE' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DictionaryEntry = 'NOMBRE' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CALLE' + DataType = datString + Size = 150 + BlobType = dabtUnknown + DictionaryEntry = 'CALLE' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PROVINCIA' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DictionaryEntry = 'PROVINCIA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'POBLACION' + DataType = datString + Size = 40 + BlobType = dabtUnknown + DictionaryEntry = 'POBLACION' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOPOSTAL' + DataType = datString + Size = 5 + BlobType = dabtUnknown + DictionaryEntry = 'CODIGOPOSTAL' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'TELEFONO' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DictionaryEntry = 'TELEFONO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'MOVIL' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DictionaryEntry = 'MOVIL' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FAX' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DictionaryEntry = 'FAX' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PERSONACONTACTO' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DictionaryEntry = 'PERSONACONTACTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'OBSERVACIONES' + DataType = datMemo + BlobType = dabtUnknown + DictionaryEntry = 'OBSERVACIONES' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end> + Commands = < + item + Params = < + item + Name = 'OLD_CODIGO' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'ALMACENES' + SQL = 'DELETE '#10' FROM'#10' ALMACENES'#10' WHERE'#10' (CODIGO = :OLD_CODIGO)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Delete_Almacenes' + end> + RelationShips = <> + UpdateRules = <> + Left = 40 + Top = 16 + end + object DABINAdapter: TDABINAdapter + Left = 40 + Top = 72 + end +end diff --git a/Modulos/Almacenes/Servidor/srvAlmacenes_Impl.pas b/Modulos/Almacenes/Servidor/srvAlmacenes_Impl.pas new file mode 100644 index 0000000..2d18e3e --- /dev/null +++ b/Modulos/Almacenes/Servidor/srvAlmacenes_Impl.pas @@ -0,0 +1,69 @@ +unit srvAlmacenes_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:} DARemoteService_Impl, + {Used RODLs:} DataAbstract_Intf, + {Generated:} FactuGES_Intf, uDAClasses, uDADataTable, uDABINAdapter; + +type + { TsrvAlmacenes } + TsrvAlmacenes = class(TDARemoteService, IsrvAlmacenes) + schAlmacenes: TDASchema; + DABINAdapter: TDABINAdapter; + private + protected + { IsrvAlmacenes methods } + function GenerateReport: Binary; + function PuedoEliminarAlmacen(const Codigo: Integer): Boolean; + end; + +implementation + +{$R *.dfm} +uses + {Generated:} FactuGES_Invk, uDataModuleServer, uDAInterfaces; + +procedure Create_srvAlmacenes(out anInstance : IUnknown); +begin + anInstance := TsrvAlmacenes.Create(NIL); +end; + +{ srvAlmacenes } +function TsrvAlmacenes.GenerateReport: Binary; +begin +// +end; + +function TsrvAlmacenes.PuedoEliminarAlmacen( + const Codigo: Integer): Boolean; +var + dsData: IDASQLCommand; +begin + Result := True; + Connection.BeginTransaction; + try + dsData := schAlmacenes.NewCommand(Connection, 'Delete_Almacenes', ['OLD_CODIGO'], [Codigo]); + except + on E: Exception do + Result := False; + end; + Connection.RollbackTransaction; +end; + +initialization + TROClassFactory.Create('srvAlmacenes', Create_srvAlmacenes, TsrvAlmacenes_Invoker); + +finalization + +end. diff --git a/Modulos/Articulos/Cliente/Articulos.bdsproj b/Modulos/Articulos/Cliente/Articulos.bdsproj new file mode 100644 index 0000000..d64e3d8 --- /dev/null +++ b/Modulos/Articulos/Cliente/Articulos.bdsproj @@ -0,0 +1,492 @@ + + + + + + + + + + + + Articulos.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 3 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + .\ + ..\..\..\Output\Cliente + .\ + $(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\Reglas;..\..\..\Modulos\Presupuestos\Cliente;..\..\..\Modulos\Contactos\Cliente;..\..\..\Modulos\Almacenes\Cliente;..\..\..\Modulos\Pedidos a proveedor\Cliente;..\..\..\Modulos\Montajes\Cliente;..\..\Documentos asociados + vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;IntrawebDB_50_70;Intraweb_50_70;Rave50CLX;Rave50VCL;dclOfficeXP;PluginSDK_D7R;DJcl;JvStdCtrlsD7R;JvAppFrmD7R;JvCoreD7R;JvBandsD7R;JvBDED7R;JvDBD7R;JvDlgsD7R;JvCmpD7R;JvCryptD7R;JvCtrlsD7R;JvCustomD7R;JvDockingD7R;JvDotNetCtrlsD7R;JvEDID7R;qrpt;JvGlobusD7R;JvHMID7R;JvInspectorD7R;JvInterpreterD7R;JvJansD7R;JvManagedThreadsD7R;JvMMD7R;JvNetD7R;JvPageCompsD7R;JvPluginD7R;JvPrintPreviewD7R;JvSystemD7R;JvTimeFrameworkD7R;JvUIBD7R;JvValidatorsD7R;JvWizardD7R;JvXPCtrlsD7R;GUISDK_D7;RemObjects_WebBroker_D7;RemObjects_Indy_D7;RemObjects_RODX_D7;RemObjects_BPDX_D7;PascalScript_RO_D7;DataAbstract_Core_D7;DataAbstract_IDE_D7;DataAbstract_DBXDriver_D7;DataAbstract_Scripting_D7;dxBarD7;dxComnD7;cxLibraryVCLD7;cxEditorsVCLD7;dxThemeD7;cxDataD7;cxExtEditorsVCLD7;cxGridVCLD7;cxPageControlVCLD7;cxSchedulerVCLD7;cxTreeListVCLD7;dxBarDBNavD7;dxBarExtDBItemsD7;dxBarExtItemsD7;dxDockingD7;dxNavBarD7;dxPSCoreD7;dxsbD7;dxPSLnksD7;dxPSTeeChartD7;EPCOTAUtils70;PNG_D7;PngComponentsD7;tb2k_d7;tbx_d7;UserControlD7_RT;fqb70;frx7;frxADO7;frxBDE7;frxcs7;frxDB7;frxDBX7;frxe7;frxIBX7;fs7;fsADO7;fsBDE7;fsDB7;fsIBX7;cxExportVCLD7;cxIntl5D7;cxIntlPrintSys3D7;dxPScxCommonD7;dxPScxExtCommonD7;dxPScxGridLnkD7;dxPScxPCProdD7;dxPScxSchedulerLnkD7;dxPScxTLLnkD7;dxPSDBTeeChartD7;dxPsPrVwAdvD7 + + + False + + + + + + False + + + True + False + + + + $00000000 + C:\Archivos de programa\Borland\Delphi7\Bin\ + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + diff --git a/Modulos/Articulos/Cliente/Articulos.cfg b/Modulos/Articulos/Cliente/Articulos.cfg new file mode 100644 index 0000000..3b5f0f5 --- /dev/null +++ b/Modulos/Articulos/Cliente/Articulos.cfg @@ -0,0 +1,45 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O- +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-GD +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N".\" +-LE"..\..\..\Output\Cliente" +-LN".\" +-U"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\Reglas;..\..\..\Modulos\Presupuestos\Cliente;..\..\..\Modulos\Contactos\Cliente;..\..\..\Modulos\Almacenes\Cliente;..\..\..\Modulos\Pedidos a proveedor\Cliente;..\..\..\Modulos\Montajes\Cliente;..\..\Documentos asociados" +-O"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\Reglas;..\..\..\Modulos\Presupuestos\Cliente;..\..\..\Modulos\Contactos\Cliente;..\..\..\Modulos\Almacenes\Cliente;..\..\..\Modulos\Pedidos a proveedor\Cliente;..\..\..\Modulos\Montajes\Cliente;..\..\Documentos asociados" +-I"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\Reglas;..\..\..\Modulos\Presupuestos\Cliente;..\..\..\Modulos\Contactos\Cliente;..\..\..\Modulos\Almacenes\Cliente;..\..\..\Modulos\Pedidos a proveedor\Cliente;..\..\..\Modulos\Montajes\Cliente;..\..\Documentos asociados" +-R"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\Reglas;..\..\..\Modulos\Presupuestos\Cliente;..\..\..\Modulos\Contactos\Cliente;..\..\..\Modulos\Almacenes\Cliente;..\..\..\Modulos\Pedidos a proveedor\Cliente;..\..\..\Modulos\Montajes\Cliente;..\..\Documentos asociados" +-Z +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/Modulos/Articulos/Cliente/Articulos.dcp b/Modulos/Articulos/Cliente/Articulos.dcp new file mode 100644 index 0000000..21e4b78 Binary files /dev/null and b/Modulos/Articulos/Cliente/Articulos.dcp differ diff --git a/Modulos/Articulos/Cliente/Articulos.dof b/Modulos/Articulos/Cliente/Articulos.dof new file mode 100644 index 0000000..8a816a4 --- /dev/null +++ b/Modulos/Articulos/Cliente/Articulos.dof @@ -0,0 +1,175 @@ +[FileVersion] +Version=7.0 +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=0 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=1 +SymbolLibrary=1 +SymbolPlatform=1 +UnitLibrary=1 +UnitPlatform=1 +UnitDeprecated=1 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 +[Linker] +MapFile=3 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription= +[Directories] +OutputDir= +UnitOutputDir=.\ +PackageDLLOutputDir=..\..\..\Output\Cliente +PackageDCPOutputDir=.\ +SearchPath=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\Reglas;..\..\..\Modulos\Presupuestos\Cliente;..\..\..\Modulos\Contactos\Cliente;..\..\..\Modulos\Almacenes\Cliente;..\..\..\Modulos\Pedidos a proveedor\Cliente;..\..\..\Modulos\Montajes\Cliente;..\..\Documentos asociados +Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;IntrawebDB_50_70;Intraweb_50_70;Rave50CLX;Rave50VCL;dclOfficeXP;PluginSDK_D7R;DJcl;JvStdCtrlsD7R;JvAppFrmD7R;JvCoreD7R;JvBandsD7R;JvBDED7R;JvDBD7R;JvDlgsD7R;JvCmpD7R;JvCryptD7R;JvCtrlsD7R;JvCustomD7R;JvDockingD7R;JvDotNetCtrlsD7R;JvEDID7R;qrpt;JvGlobusD7R;JvHMID7R;JvInspectorD7R;JvInterpreterD7R;JvJansD7R;JvManagedThreadsD7R;JvMMD7R;JvNetD7R;JvPageCompsD7R;JvPluginD7R;JvPrintPreviewD7R;JvSystemD7R;JvTimeFrameworkD7R;JvUIBD7R;JvValidatorsD7R;JvWizardD7R;JvXPCtrlsD7R;GUISDK_D7;RemObjects_WebBroker_D7;RemObjects_Indy_D7;RemObjects_RODX_D7;RemObjects_BPDX_D7;PascalScript_RO_D7;DataAbstract_Core_D7;DataAbstract_IDE_D7;DataAbstract_DBXDriver_D7;DataAbstract_Scripting_D7;dxBarD7;dxComnD7;cxLibraryVCLD7;cxEditorsVCLD7;dxThemeD7;cxDataD7;cxExtEditorsVCLD7;cxGridVCLD7;cxPageControlVCLD7;cxSchedulerVCLD7;cxTreeListVCLD7;dxBarDBNavD7;dxBarExtDBItemsD7;dxBarExtItemsD7;dxDockingD7;dxNavBarD7;dxPSCoreD7;dxsbD7;dxPSLnksD7;dxPSTeeChartD7;EPCOTAUtils70;PNG_D7;PngComponentsD7;tb2k_d7;tbx_d7;UserControlD7_RT;fqb70;frx7;frxADO7;frxBDE7;frxcs7;frxDB7;frxDBX7;frxe7;frxIBX7;fs7;fsADO7;fsBDE7;fsDB7;fsIBX7;cxExportVCLD7;cxIntl5D7;cxIntlPrintSys3D7;dxPScxCommonD7;dxPScxExtCommonD7;dxPScxGridLnkD7;dxPScxPCProdD7;dxPScxSchedulerLnkD7;dxPScxTLLnkD7;dxPSDBTeeChartD7;dxPsPrVwAdvD7 +Conditionals= +DebugSourceDirs= +UsePackages=0 +[Parameters] +RunParams= +HostApplication= +Launcher= +UseLauncher=0 +DebugCWD= +[Language] +ActiveLang= +ProjectLang= +RootDir=C:\Archivos de programa\Borland\Delphi7\Bin\ +[Version Info] +IncludeVerInfo=1 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=3082 +CodePage=1252 +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= +[HistoryLists\hlDebugSourcePath] +Count=1 +Item0=D:\Proyectos\Componentes\GUISDK\Sources\;D:\Proyectos\Componentes\PluginSDK\Source\;D:\Proyectos\FactuGES (Estudio)\Codigo\Modulos\Contactos\Cliente;D:\Proyectos\FactuGES (Estudio)\Codigo\Modulos\Contactos\Reglas +[HistoryLists\hlUnitAliases] +Count=1 +Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +[HistoryLists\hlSearchPath] +Count=16 +Item0=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente;..\..\Asientos\Cliente;..\..\Cuentas\Cliente +Item1=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente;..\..\Asientos\Cliente +Item2=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente +Item3=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente +Item4=..\Modulos\Presupuestos\Reglas;..\Modulos\Contactos\Reglas;..\Base;..\Configuracion;..\Usuarios;..\Modulos\Albaranes de cliente\Reglas +Item5=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\Base;..\Configuracion;..\Usuarios;..\Modulos\Intervalos;..\Modulos\Documentos asociados;..\Modulos\Contactos\Cliente;..\Modulos\Contactos\Reglas;..\Modulos\Presupuestos\Cliente;..\Modulos\Presupuestos\Reglas;..\Modulos\Albaranes de cliente\Cliente;..\Modulos\Albaranes de cliente\Reglas;..\Modulos\Facturas de cliente\Cliente;..\Modulos\Facturas de cliente\Reglas;..\Modulos\Pedidos a proveedor\Cliente;..\Modulos\Pedidos a proveedor\Reglas;..\Modulos\Facturas de proveedor\Cliente;..\Modulos\Facturas de proveedor\Reglas;..\Modulos\Montajes\Reglas;..\Modulos\Montajes\Cliente;..\Modulos\Articulos\Cliente;..\Modulos\Articulos\Reglas;..\Modulos\Almacenes\Reglas;..\Modulos\Almacenes\Cliente;..\Modulos\Pagos\Reglas;..\Modulos\Pagos\Cliente;..\Modulos\Cuentas\Reglas;..\Modulos\Cuentas\Cliente;..\Modulos\Asientos\Reglas;..\Modulos\Asientos\Cliente;..\Modulos\Calendarios\Cliente;..\Modulos\Calendarios\Reglas +Item6=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente;..\..\Documentos asociados;..\..\Contactos\Cliente;..\..\Almacenes\Cliente +Item7=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados +Item8=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente;..\..\Documentos asociados;..\..\Contactos\Cliente +Item9=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente;..\..\Documentos asociados +Item10=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente +Item11=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados;..\..\Montajes\Cliente;..\..\Almacenes\Cliente +Item12=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados;..\..\Montajes\Cliente +Item13=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\Servidor +Item14=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\base;..\Modulos\Calendarios\Cliente;..\Modulos\Calendarios\Reglas +Item15=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\Base;..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios +[HistoryLists\hlUnitOutputDirectory] +Count=1 +Item0=.\ +[HistoryLists\hlOutputDirectorry] +Count=2 +Item0=..\Output\Servidor +Item1=..\Output\Cliente +[HistoryLists\hlBPLOutput] +Count=3 +Item0=..\..\..\Output\Cliente +Item1=..\Output\Cliente +Item2=..\..\Output\Cliente +[HistoryLists\hlDCPOutput] +Count=1 +Item0=.\ diff --git a/Modulos/Articulos/Cliente/Articulos.dpk b/Modulos/Articulos/Cliente/Articulos.dpk new file mode 100644 index 0000000..a7a567d --- /dev/null +++ b/Modulos/Articulos/Cliente/Articulos.dpk @@ -0,0 +1,88 @@ +package Articulos; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION OFF} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$IMPLICITBUILD OFF} + +requires + vcl, + rtl, + PluginSDK_D7R, + GUISDK_D7, + PNG_D7, + PngComponentsD7, + dbrtl, + vcldb, + dsnap, + adortl, + JvCoreD7R, + vclx, + vcljpg, + JvAppFrmD7R, + JvStdCtrlsD7R, + JvSystemD7R, + vclactnband, + designide, + cxLibraryVCLD7, + dxThemeD7, + cxEditorsVCLD7, + cxDataD7, + JvPageCompsD7R, + tb2k_d7, + tbx_d7, + BaseD7, + Usuarios, + dxPSCoreD7, + dxComnD7, + cxGridVCLD7, + cxPageControlVCLD7, + cxExtEditorsVCLD7, + cxExportVCLD7, + cxIntlPrintSys3D7, + dxPScxCommonD7, + dxPSLnksD7, + vclshlctrls, + dxPScxGridLnkD7, + dclcxLibraryVCLD7, + frx7, + fs7, + tee, + fqb70, + bdertl, + Almacenes, + PedidosProveedor, + Montajes_Intf; + +contains + uPluginControllerArticulos in 'uPluginControllerArticulos.pas' {ModuleArticulos: TModuleController}, + uDataModuleArticulos in 'uDataModuleArticulos.pas' {dmArticulos: TDAClientDataModule}, + uViewArticulosAlmacen in 'uViewArticulosAlmacen.pas' {frViewArticulosAlmacen: TFrame}, + uEditorArticulosAlmacen in 'uEditorArticulosAlmacen.pas' {fEditorArticulosAlmacen: TCustomEditor}, + uViewListaArticulos in 'uViewListaArticulos.pas' {frViewListaArticulos: TFrame}, + uEditorEntradaArticulos in 'uEditorEntradaArticulos.pas' {fEditorEntradaArticulos: TCustomEditor}, + uBizArticulos in '..\Reglas\uBizArticulos.pas', + uEditorSituacionPedido in 'uEditorSituacionPedido.pas' {fEditorSituacionPedido}, + schArticulosServer_Intf in '..\Reglas\schArticulosServer_Intf.pas', + schArticulosClient_Intf in '..\Reglas\schArticulosClient_Intf.pas'; + +end. diff --git a/Modulos/Articulos/Cliente/Articulos.drc b/Modulos/Articulos/Cliente/Articulos.drc new file mode 100644 index 0000000..a5d5271 --- /dev/null +++ b/Modulos/Articulos/Cliente/Articulos.drc @@ -0,0 +1,14 @@ +/* VER150 + Generated by the Borland Delphi Pascal Compiler + because -GD or --drc was supplied to the compiler. + + This file contains compiler-generated resources that + were bound to the executable. + If this file is empty, then no compiler-generated + resources were bound to the produced executable. +*/ + +STRINGTABLE +BEGIN +END + diff --git a/Modulos/Articulos/Cliente/Articulos.res b/Modulos/Articulos/Cliente/Articulos.res new file mode 100644 index 0000000..ec5f233 Binary files /dev/null and b/Modulos/Articulos/Cliente/Articulos.res differ diff --git a/Modulos/Articulos/Cliente/uDataModuleArticulos.ddp b/Modulos/Articulos/Cliente/uDataModuleArticulos.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Articulos/Cliente/uDataModuleArticulos.ddp differ diff --git a/Modulos/Articulos/Cliente/uDataModuleArticulos.dfm b/Modulos/Articulos/Cliente/uDataModuleArticulos.dfm new file mode 100644 index 0000000..a0feb6c --- /dev/null +++ b/Modulos/Articulos/Cliente/uDataModuleArticulos.dfm @@ -0,0 +1,263 @@ +object dmArticulos: TdmArticulos + OldCreateOrder = True + OnCreate = DAClientDataModuleCreate + RemoteService = RORemoteService + Adapter = DABINAdapter + SchemaCall.MethodName = 'GetSchemaAsXML' + SchemaCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtString + end> + Left = 328 + Top = 337 + Height = 197 + Width = 369 + object RORemoteService: TRORemoteService + ServiceName = 'srvArticulos' + Message = dmBase.ROMessage + Channel = dmBase.ROChannel + Left = 48 + Top = 20 + end + object DABINAdapter: TDABINAdapter + Left = 48 + Top = 88 + end + object tbl_Articulos: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'CODIGO' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'C'#243'digo' + Alignment = taLeftJustify + DictionaryEntry = 'CODIGO (GENERICO)' + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOALMACEN' + DataType = datInteger + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'C'#243'd. almac'#233'n' + Alignment = taLeftJustify + DictionaryEntry = 'CODIGOALMACEN' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOPEDIDO' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'C'#243'd. pedido' + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CANTIDAD' + DataType = datInteger + BlobType = dabtUnknown + LogChanges = False + DisplayWidth = 0 + Alignment = taRightJustify + InPrimaryKey = False + Calculated = True + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOMONTAJE' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'DESCRIPCION' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Descripci'#243'n' + Alignment = taLeftJustify + DictionaryEntry = 'DESCRIPCION' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'REFERENCIAPEDIDO' + DataType = datString + Size = 20 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'REFERENCIAMONTAJE' + DataType = datString + Size = 20 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CLIENTE' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Cliente' + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ALMACEN' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Almac'#233'n' + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'SITUACION' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + Params = <> + MasterMappingMode = mmDataRequest + StreamingOptions = [soDisableEventsWhileStreaming] + SchemaCall.MethodName = 'GetDatasetSchema' + SchemaCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBinary + end + item + Name = 'aDatasetName' + ParamType = fIn + DataType = rtString + Value = 'ARTICULOS' + end> + DataRequestCall.MethodName = 'GetDatasetDataEx' + DataRequestCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBinary + end + item + Name = 'DatasetName' + ParamType = fIn + DataType = rtString + Value = 'ARTICULOS' + end + item + Name = 'Params' + ParamType = fIn + DataType = rtUserDefined + UserClassName = 'TDADatasetParamArray' + end + item + Name = 'UserFilter' + ParamType = fIn + DataType = rtString + Value = '' + end + item + Name = 'IncludeSchema' + ParamType = fIn + DataType = rtBoolean + Value = False + end + item + Name = 'MaxRecords' + ParamType = fIn + DataType = rtInteger + Value = -1 + end> + DataUpdateCall.MethodName = 'UpdateData' + DataUpdateCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBinary + end + item + Name = 'Delta' + ParamType = fIn + DataType = rtBinary + end> + ScriptCall.MethodName = 'GetDatasetScripts' + ScriptCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtString + Value = '' + end + item + Name = 'DatasetNames' + ParamType = fIn + DataType = rtString + Value = 'ARTICULOS' + end> + ReadOnly = False + RemoteService = RORemoteService + Adapter = DABINAdapter + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'ARTICULOS' + IndexDefs = <> + Left = 168 + Top = 24 + end + object ds_Articulos: TDADataSource + DataTable = tbl_Articulos + Left = 248 + Top = 24 + end +end diff --git a/Modulos/Articulos/Cliente/uDataModuleArticulos.pas b/Modulos/Articulos/Cliente/uDataModuleArticulos.pas new file mode 100644 index 0000000..0b727e3 --- /dev/null +++ b/Modulos/Articulos/Cliente/uDataModuleArticulos.pas @@ -0,0 +1,176 @@ +unit uDataModuleArticulos; + +interface + +uses {vcl:} SysUtils, Classes, DB, DBClient, + {RemObjects:} uDAClientDataModule, uDADataTable, uDABINAdapter, + uROServiceComponent, uRORemoteService, uROClient, uROBinMessage, + uROWinInetHttpChannel, uDAScriptingProvider, uDACDSDataTable, + uBizArticulos; + +type + TdmArticulos = class(TDAClientDataModule) + DABINAdapter: TDABINAdapter; + RORemoteService: TRORemoteService; + tbl_Articulos: TDACDSDataTable; + ds_Articulos: TDADataSource; + procedure DAClientDataModuleCreate(Sender: TObject); + private + public + function GetDataTableItems: TDACDSDataTable; + function GetItems: IBizArticulosAlmacen; + function GetItemsLibres: IBizArticulosAlmacen; + function GetItem(Codigo : Integer): IBizArticulosAlmacen; + function GetNextAutoinc : integer; + procedure Preview; + end; + +var + dmArticulos: TdmArticulos; + +implementation + +{$R *.DFM} + +uses + Controls, Forms, uDAInterfaces, DataAbstract_Intf, FactuGES_Intf, + uDataTableUtils, uROTypes, uEditorPreview, uBizMontajes, + Dialogs, schArticulosClient_Intf, uDataModuleBase, uDBSelectionList; + +const + MAX_RECORDS = 100; + + +procedure TdmArticulos.DAClientDataModuleCreate(Sender: TObject); +begin + RORemoteService.Channel := dmBase.Channel; + RORemoteService.Message := dmBase.Message; +end; + +procedure TdmArticulos.Preview; +var + AStream: TMemoryStream; + AEditorPreview : TfEditorPreview; +begin +{ AStream := Binary.Create; + AEditorPreview := TfEditorPreview.Create(Application); + try + AStream := (RemoteService as ISrvContactos).GenerateReport; + AEditorPreview.Report.PreviewPages.LoadFromStream(AStream); + AEditorPreview.ShowModal; + finally + AEditorPreview.Release; + AStream.Free; + end; +} +end; + +{function TdmAlmacenes.GetCliente(Codigo: Integer): IBizCliente; +var +// dtContactos: TDACDSDataTable; +// dtCategorias: TDACDSDataTable; +// ACursor: TCursor; +begin +{ ACursor := Screen.Cursor; + Screen.Cursor := crHourGlass; + try + dtContactos := TDACDSDataTable.Create(NIL); + CloneDataTable(tbl_Contactos, dtContactos); + dtContactos.BusinessRulesID := 'BizCliente'; + + dtCategorias := TDACDSDataTable.Create(NIL); + CloneDataTable(tbl_CategoriasContacto, dtCategorias); + dtCategorias.BusinessRulesID := 'BizCategoria'; + (dtContactos as IBizContacto).Categorias := (dtCategorias as IBizCategoriasContacto); + + Result := (dtContactos as IBizCliente); + GetCliente(Result, Codigo); + finally + Screen.Cursor := ACursor; + end; +end; +} + +function TdmArticulos.GetItems: IBizArticulosAlmacen; +var + AArticulos : IBizArticulosAlmacen; +begin + AArticulos := (GetDataTableItems as IBizArticulosAlmacen); + with AArticulos.DataTable.Where do + begin + Clear; + OpenBraket; + AddText('MONTAJES.SITUACION not in (''' + SITUACION_PENDIENTEPAGO + ''', ''' + SITUACION_PAGADO + ''')', False); +// AddText('MONTAJES.FECHAFIN is null', False); + CloseBraket; + end; + + Result := AArticulos; +end; + +function TdmArticulos.GetItem(Codigo: Integer): IBizArticulosAlmacen; +var + AArticuloAlmacen: IBizArticulosAlmacen; +begin + AArticuloAlmacen := GetItems; + with AArticuloAlmacen.DataTable do + begin + if Active then + Active := False; + Where.Clear; + Where.OpenBraket; + Where.AddText('ARTICULOS.' + fld_ARTICULOSCODIGO + ' = ' + IntToStr(Codigo), False); + Where.CloseBraket; + end; + Result := AArticuloAlmacen; +end; + +function TdmArticulos.GetNextAutoinc: integer; +begin + Result := (RORemoteService as IsrvArticulos).GetNextAutoinc; +end; + +function TdmArticulos.GetDataTableItems: TDACDSDataTable; +var + dtArticulos: TDACDSDataTable; + ACursor: TCursor; + +begin + ACursor := Screen.Cursor; + Screen.Cursor := crHourGlass; + try + dtArticulos := TDACDSDataTable.Create(NIL); + CloneDataTable(tbl_Articulos, dtArticulos); + dtArticulos.BusinessRulesID := 'BizArticulosAlmacen'; + Result := dtArticulos; + finally + Screen.Cursor := ACursor; + end; +end; + +function TdmArticulos.GetItemsLibres: IBizArticulosAlmacen; +var + AArticulos : IBizArticulosAlmacen; +begin + AArticulos := GetItems; + with AArticulos.DataTable.Where do + begin + if not Empty then + AddOperator(opAND); + Clear; + OpenBraket; + AddText('ARTICULOS.CODIGOMONTAJE is null', False); + CloseBraket; + end; + + Result := AArticulos; +end; + +initialization + dmArticulos := TdmArticulos.Create(nil); + +finalization + FreeAndNil(dmArticulos); + +end. + diff --git a/Modulos/Articulos/Cliente/uDataModuleLogistica.ddp b/Modulos/Articulos/Cliente/uDataModuleLogistica.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Articulos/Cliente/uDataModuleLogistica.ddp differ diff --git a/Modulos/Articulos/Cliente/uDataModuleLogistica.dfm b/Modulos/Articulos/Cliente/uDataModuleLogistica.dfm new file mode 100644 index 0000000..34fcb86 --- /dev/null +++ b/Modulos/Articulos/Cliente/uDataModuleLogistica.dfm @@ -0,0 +1,502 @@ +object dmLogistica: TdmLogistica + OldCreateOrder = True + OnCreate = DAClientDataModuleCreate + RemoteService = RORemoteService + Adapter = DABINAdapter + SchemaCall.MethodName = 'GetSchemaAsXML' + SchemaCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtString + end> + Left = 328 + Top = 337 + Height = 498 + Width = 531 + object RORemoteService: TRORemoteService + ServiceName = 'srvLogistica' + Message = dmBase.ROMessage + Channel = dmBase.ROChannel + Left = 48 + Top = 20 + end + object DABINAdapter: TDABINAdapter + Left = 48 + Top = 88 + end + object tbl_Almacenes: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'CODIGOEMPRESA' + DataType = datInteger + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'C'#243'd. empresa' + Alignment = taLeftJustify + DictionaryEntry = 'CODIGOEMPRESA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGO' + DataType = datAutoInc + BlobType = dabtUnknown + GeneratorName = 'GEN_ALMACENES' + Required = True + DisplayWidth = 0 + DisplayLabel = 'C'#243'd. almac'#233'n' + Alignment = taLeftJustify + ServerAutoRefresh = True + DictionaryEntry = 'CODIGOALMACEN_GEN' + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHAALTA' + DataType = datDateTime + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'Fecha de alta' + Alignment = taLeftJustify + DictionaryEntry = 'FECHAALTA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'USUARIO' + DataType = datString + Size = 100 + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'Usuario de alta' + Alignment = taLeftJustify + DictionaryEntry = 'USUARIO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NOMBRE' + DataType = datString + Size = 100 + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'Nombre' + Alignment = taLeftJustify + DictionaryEntry = 'NOMBRE' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CALLE' + DataType = datString + Size = 150 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Calle' + Alignment = taLeftJustify + DictionaryEntry = 'CALLE' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PROVINCIA' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Provincia' + Alignment = taLeftJustify + DictionaryEntry = 'PROVINCIA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'POBLACION' + DataType = datString + Size = 40 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Poblaci'#243'n' + Alignment = taLeftJustify + DictionaryEntry = 'POBLACION' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOPOSTAL' + DataType = datString + Size = 5 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'C'#243'd. postal' + Alignment = taLeftJustify + DictionaryEntry = 'CODIGOPOSTAL' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'TELEFONO' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Tel'#233'fono' + Alignment = taLeftJustify + DictionaryEntry = 'TELEFONO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'MOVIL' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'M'#243'vil' + Alignment = taLeftJustify + DictionaryEntry = 'MOVIL' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FAX' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'N'#250'mero de fax' + Alignment = taLeftJustify + DictionaryEntry = 'FAX' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PERSONACONTACTO' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Persona de contacto' + Alignment = taLeftJustify + DictionaryEntry = 'PERSONACONTACTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'OBSERVACIONES' + DataType = datMemo + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Observaciones' + Alignment = taLeftJustify + DictionaryEntry = 'OBSERVACIONES' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + Params = <> + MasterMappingMode = mmDataRequest + StreamingOptions = [soDisableEventsWhileStreaming] + SchemaCall.MethodName = 'GetDatasetSchema' + SchemaCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBinary + end + item + Name = 'aDatasetName' + ParamType = fIn + DataType = rtString + Value = 'ALMACENES' + end> + DataRequestCall.MethodName = 'GetDatasetDataEx' + DataRequestCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBinary + end + item + Name = 'DatasetName' + ParamType = fIn + DataType = rtString + Value = 'ALMACENES' + end + item + Name = 'Params' + ParamType = fIn + DataType = rtUserDefined + UserClassName = 'TDADatasetParamArray' + end + item + Name = 'UserFilter' + ParamType = fIn + DataType = rtString + Value = '' + end + item + Name = 'IncludeSchema' + ParamType = fIn + DataType = rtBoolean + Value = False + end + item + Name = 'MaxRecords' + ParamType = fIn + DataType = rtInteger + Value = -1 + end> + DataUpdateCall.MethodName = 'UpdateData' + DataUpdateCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBinary + end + item + Name = 'Delta' + ParamType = fIn + DataType = rtBinary + end> + ScriptCall.MethodName = 'GetDatasetScripts' + ScriptCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtString + Value = '' + end + item + Name = 'DatasetNames' + ParamType = fIn + DataType = rtString + Value = 'ALMACENES' + end> + ReadOnly = False + RemoteService = RORemoteService + Adapter = DABINAdapter + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'ALMACENES' + IndexDefs = <> + Left = 248 + Top = 184 + end + object ds_Almacenes: TDADataSource + DataTable = tbl_Almacenes + Left = 352 + Top = 192 + end + object tbl_Articulos: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'CODIGO' + DataType = datAutoInc + BlobType = dabtUnknown + GeneratorName = 'GEN_ARTICULOS' + Required = True + DisplayWidth = 0 + DisplayLabel = 'C'#243'd. art'#237'culo' + Alignment = taLeftJustify + ServerAutoRefresh = True + DictionaryEntry = 'CODIGOARTICULO_GEN' + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOALMACEN' + DataType = datInteger + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'C'#243'd. almac'#233'n' + Alignment = taLeftJustify + DictionaryEntry = 'CODIGOALMACEN' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOPEDIDO' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'C'#243'd. pedido' + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOOBRA' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'C'#243'd. obra' + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'DESCRIPCION' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Descripci'#243'n' + Alignment = taLeftJustify + DictionaryEntry = 'DESCRIPCION' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CANTIDAD' + DataType = datInteger + BlobType = dabtUnknown + LogChanges = False + DisplayWidth = 0 + DisplayLabel = 'Cantidad' + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = True + Lookup = False + LookupCache = False + end> + Params = <> + MasterMappingMode = mmDataRequest + StreamingOptions = [soDisableEventsWhileStreaming] + SchemaCall.MethodName = 'GetDatasetSchema' + SchemaCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBinary + end + item + Name = 'aDatasetName' + ParamType = fIn + DataType = rtString + Value = 'ARTICULOS' + end> + DataRequestCall.MethodName = 'GetDatasetDataEx' + DataRequestCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBinary + end + item + Name = 'DatasetName' + ParamType = fIn + DataType = rtString + Value = 'ARTICULOS' + end + item + Name = 'Params' + ParamType = fIn + DataType = rtUserDefined + UserClassName = 'TDADatasetParamArray' + end + item + Name = 'UserFilter' + ParamType = fIn + DataType = rtString + Value = '' + end + item + Name = 'IncludeSchema' + ParamType = fIn + DataType = rtBoolean + Value = False + end + item + Name = 'MaxRecords' + ParamType = fIn + DataType = rtInteger + Value = -1 + end> + DataUpdateCall.MethodName = 'UpdateData' + DataUpdateCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBinary + end + item + Name = 'Delta' + ParamType = fIn + DataType = rtBinary + end> + ScriptCall.MethodName = 'GetDatasetScripts' + ScriptCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtString + Value = '' + end + item + Name = 'DatasetNames' + ParamType = fIn + DataType = rtString + Value = 'ARTICULOS' + end> + ReadOnly = False + RemoteService = RORemoteService + Adapter = DABINAdapter + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'ARTICULOS' + IndexDefs = <> + Left = 240 + Top = 104 + end + object ds_Articulos: TDADataSource + DataTable = tbl_Articulos + Left = 352 + Top = 96 + end +end diff --git a/Modulos/Articulos/Cliente/uDataModuleLogistica.pas b/Modulos/Articulos/Cliente/uDataModuleLogistica.pas new file mode 100644 index 0000000..de475a3 --- /dev/null +++ b/Modulos/Articulos/Cliente/uDataModuleLogistica.pas @@ -0,0 +1,176 @@ +unit uDataModuleLogistica; + +interface + +uses {vcl:} SysUtils, Classes, DB, DBClient, + {RemObjects:} uDAClientDataModule, uDADataTable, uDABINAdapter, + uROServiceComponent, uRORemoteService, uROClient, uROBinMessage, + uROWinInetHttpChannel, uDAScriptingProvider, uDACDSDataTable, + uBizLogistica; + +type + TdmLogistica = class(TDAClientDataModule) + DABINAdapter: TDABINAdapter; + RORemoteService: TRORemoteService; + tbl_Almacenes: TDACDSDataTable; + ds_Almacenes: TDADataSource; + tbl_Articulos: TDACDSDataTable; + ds_Articulos: TDADataSource; + procedure DAClientDataModuleCreate(Sender: TObject); + private + public + function GetItemsAlmacenes: IBizAlmacen; + function GetItemsArticulos: IBizArticulosAlmacen; + function GetItemAlmacen(Codigo : Integer): IBizAlmacen; + function GetItemArticulo(Codigo : Integer): IBizArticulosAlmacen; + + + + function GetNextAutoinc : integer; +// function GetCliente(Codigo : Integer): IBizCliente; overload; + procedure Preview; + end; + +var + dmLogistica: TdmLogistica; + +implementation + +{$R *.DFM} + +uses + Controls, Forms, uDAInterfaces, DataAbstract_Intf, FactuGES_Intf, + uDataTableUtils, uROTypes, uEditorPreview, + Dialogs, schLogisticaClient_Intf, uDataModuleBase, uDBSelectionList; + +const + MAX_RECORDS = 100; + + +procedure TdmLogistica.DAClientDataModuleCreate(Sender: TObject); +begin + RORemoteService.Channel := dmBase.Channel; + RORemoteService.Message := dmBase.Message; +end; + +function TdmLogistica.GetItemsAlmacenes: IBizAlmacen; +var + dtAlmacenes: TDACDSDataTable; + ACursor: TCursor; +begin + ACursor := Screen.Cursor; + Screen.Cursor := crHourGlass; + try + dtAlmacenes := TDACDSDataTable.Create(NIL); + CloneDataTable(tbl_Almacenes, dtAlmacenes); + dtAlmacenes.BusinessRulesID := 'BizAlmacen'; + Result := (dtAlmacenes as IBizAlmacen); + finally + Screen.Cursor := ACursor; + end; +end; + +procedure TdmLogistica.Preview; +var + AStream: TMemoryStream; + AEditorPreview : TfEditorPreview; +begin +{ AStream := Binary.Create; + AEditorPreview := TfEditorPreview.Create(Application); + try + AStream := (RemoteService as ISrvContactos).GenerateReport; + AEditorPreview.Report.PreviewPages.LoadFromStream(AStream); + AEditorPreview.ShowModal; + finally + AEditorPreview.Release; + AStream.Free; + end; +} +end; + +{function TdmAlmacenes.GetCliente(Codigo: Integer): IBizCliente; +var +// dtContactos: TDACDSDataTable; +// dtCategorias: TDACDSDataTable; +// ACursor: TCursor; +begin +{ ACursor := Screen.Cursor; + Screen.Cursor := crHourGlass; + try + dtContactos := TDACDSDataTable.Create(NIL); + CloneDataTable(tbl_Contactos, dtContactos); + dtContactos.BusinessRulesID := 'BizCliente'; + + dtCategorias := TDACDSDataTable.Create(NIL); + CloneDataTable(tbl_CategoriasContacto, dtCategorias); + dtCategorias.BusinessRulesID := 'BizCategoria'; + (dtContactos as IBizContacto).Categorias := (dtCategorias as IBizCategoriasContacto); + + Result := (dtContactos as IBizCliente); + GetCliente(Result, Codigo); + finally + Screen.Cursor := ACursor; + end; +end; +} + +function TdmLogistica.GetNextAutoinc: integer; +begin +// Result := (RORemoteService as IsrvContactos).GetNextAutoinc; +end; + +function TdmLogistica.GetItemAlmacen(Codigo: Integer): IBizAlmacen; +var + AAlmacen: IBizAlmacen; +begin + AAlmacen := GetItemsAlmacenes; + with AAlmacen.DataTable do + begin + if Active then Active := False; + Where.Clear; + Where.AddCondition(fld_ALMACENESCODIGO, cEqual, Codigo); + Active := True; + end; + Result := AAlmacen; +end; + +function TdmLogistica.GetItemsArticulos: IBizArticulosAlmacen; +var + dtArticulos: TDACDSDataTable; + ACursor: TCursor; +begin + ACursor := Screen.Cursor; + Screen.Cursor := crHourGlass; + try + dtArticulos := TDACDSDataTable.Create(NIL); + CloneDataTable(tbl_Articulos, dtArticulos); + dtArticulos.BusinessRulesID := 'BizArticulosAlmacen'; + Result := (dtArticulos as IBizArticulosAlmacen); + finally + Screen.Cursor := ACursor; + end; +end; + +function TdmLogistica.GetItemArticulo(Codigo: Integer): IBizArticulosAlmacen; +var + AArticuloAlmacen: IBizArticulosAlmacen; +begin + AArticuloAlmacen := GetItemsArticulos; + with AArticuloAlmacen.DataTable do + begin + if Active then Active := False; + Where.Clear; + Where.AddCondition(fld_ARTICULOSCODIGO, cEqual, Codigo); + Active := True; + end; + Result := AArticuloAlmacen; +end; + +initialization + dmLogistica := TdmLogistica.Create(nil); + +finalization + FreeAndNil(dmLogistica); + +end. + diff --git a/Modulos/Articulos/Cliente/uEditorArticulosAlmacen.ddp b/Modulos/Articulos/Cliente/uEditorArticulosAlmacen.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Articulos/Cliente/uEditorArticulosAlmacen.ddp differ diff --git a/Modulos/Articulos/Cliente/uEditorArticulosAlmacen.dfm b/Modulos/Articulos/Cliente/uEditorArticulosAlmacen.dfm new file mode 100644 index 0000000..cb962fc --- /dev/null +++ b/Modulos/Articulos/Cliente/uEditorArticulosAlmacen.dfm @@ -0,0 +1,1692 @@ +inherited fEditorArticulosAlmacen: TfEditorArticulosAlmacen + Left = 162 + Top = 243 + Caption = 'Inventario de art'#237'culos en almacenes' + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + Caption = 'Inventario de art'#237'culos en almacenes' + inherited Image1: TImage + Picture.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001800 + 0000180806000000E0773DF80000000970485973000017120000171201679FD2 + 520000000467414D410000AA11B57D14DC000001CC4944415478DA63FCFFFF3F + 032D0123B2058B361EA79A6D71FE968C582D004A906CD8DFBFFF80F83F980601 + 0BDF6C868B7B66E1B6C0752FAA25BB9D8FE3341C59ED5A8B030CF356EF6198BF + 64237E0B4871B9C7016B0659651686F9DB8E30BC8BFEC6B070FD3EC21660F301 + BA18086CB53DC2E07DD88661CFCD1360FEEB882F0C4B361DA0CC07FFFF01C31A + 88FF005D0F62FFFE070CFF3FFFC0BEF9F3EF2FC38A2D8749F7013100E48B4741 + EF18D6EE38469C05306F9302EEFBBF61D8B0FB047116E04B39D80048CF4CD5CD + 0C9BF69D24DE025C4105B31C260F533B4D7913C3D603A768E783890A1B18761D + 3E433B1FF4C9AC63D87BFC1CED7CD02DB986E1C0A90BF82D88F63107E74E727C + D02EBE8AE1C8994BF82D88F03403E74E727CD024BC9CE1E485ABF82D08753361 + F03B66479605F5024B19CE5CBE8EDF8200172386E0130E780D0359BEE4CF5C38 + 3F8625196C410DEF6286F3D76EE2B7C0D7C1005EAE40CAF97FE0B2072C062CF3 + 73EFFB63C40F8C5FC9BD88E1D28D5BF82DF0B2D5C36938882E78148835F888B6 + C0CD5A1BA7E1A012B4E46930CEA023CA0247730DB061FFFE428AE5DF7F11C5F1 + BFFF508BFEFD437104322068819D891AB844A404E0B5A077F27C8A0C87019805 + 00F0E629EF34B079A30000000049454E44AE426082} + end + end + inherited TBXDock: TTBXDock + inherited tbxMain: TTBXToolbar + object TBXSeparatorItem84: TTBXSeparatorItem [6] + end + object TBXItem54: TTBXItem [7] + Action = actTrasladar + DisplayMode = nbdmImageAndText + end + object TBXSeparatorItem16: TTBXSeparatorItem [8] + end + object TBXItem55: TTBXItem [9] + Action = actRecibirPedido + DisplayMode = nbdmImageAndText + end + object TBXSeparatorItem17: TTBXSeparatorItem [10] + end + object TBXItem56: TTBXItem [11] + Action = actLiberar + DisplayMode = nbdmImageAndText + end + object TBXItem57: TTBXItem [12] + Action = actReservar + DisplayMode = nbdmImageAndText + end + end + inherited tbxFiltro: TTBXToolbar + Left = 655 + inherited TBXItem37: TTBXItem + Visible = False + end + end + end + inline frViewBarraSeleccion: TfrViewBarraSeleccion [3] + Left = 0 + Top = 395 + Width = 885 + Height = 37 + Align = alBottom + AutoScroll = False + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 3 + Visible = False + ReadOnly = False + inherited pnlSeleccion: TPanel + Top = 0 + Width = 885 + inherited bSeleccionar: TButton + Left = 536 + end + inherited bCancelar: TButton + Left = 615 + end + end + inherited ActionListSeleccion: TActionList + inherited actSeleccionar: TAction + OnExecute = frViewBarraSeleccionactSeleccionarExecute + end + inherited actCancelar: TAction + OnExecute = frViewBarraSeleccionactCancelarExecute + end + end + end + inherited EditorActionList: TActionList [4] + inherited actNuevo: TAction + Caption = '&Entrada' + ImageIndex = 21 + OnExecute = actNuevoExecute + end + inherited actModificar: TAction + Visible = False + end + inherited actEliminar: TAction + Caption = 'Salida' + ImageIndex = 22 + end + inherited actDuplicar: TAction + Visible = False + end + inherited actAnchoAuto: TAction + ImageIndex = 27 + end + object actRecibirPedido: TAction + Category = 'Logistica' + Caption = 'Recibir pedido' + ImageIndex = 24 + OnExecute = actRecibirPedidoExecute + end + object actTrasladar: TAction + Category = 'Logistica' + Caption = 'Trasladar' + ImageIndex = 23 + OnExecute = actTrasladarExecute + OnUpdate = actTrasladarUpdate + end + object actReservar: TAction + Category = 'Logistica' + Caption = 'Reservar' + ImageIndex = 25 + OnExecute = actReservarExecute + OnUpdate = actReservarUpdate + end + object actLiberar: TAction + Category = 'Logistica' + Caption = 'Liberar' + ImageIndex = 26 + OnExecute = actLiberarExecute + OnUpdate = actLiberarUpdate + end + end + inherited SmallImages: TPngImageList [5] + 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 + 610000000970485973000017120000171201679FD252000000F54944415478DA + 6364C002AE56C8FC67201230E23240B9A106C2F9F18381E1C11D86799D1B1892 + E6638AE13700AA70F6256F06E6EDA91003D0C4701B50510256C870E32AC3EC5F + 651003A6638AE1362022006C0B0C800D28C714C369C0C1871404222901CB88AE + 089B66ED8E278CB8029691185BB296430DA82014880633FEFF38C180610BDC80 + 080281689C7EFDFFD99307197E2CB882620BCC006C01CB08D204E3E4C5AA30BC + FBF88DA1B07A39C3E42279B82D200370C602C8009046100069BEF7E42D985EBA + EC08C334CD16B038410340CE0681DC4C3786BB8FDF306CDB728E81E142065151 + 8C1188609A48CDD80D20413308000018D5C3DDD8008BA70000000049454E44AE + 426082} + Name = 'PngImage22' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000000F64944415478DA + 63BC5A21F39F8148A0DDF184115D8C11648072430D84F7E30703C3833B0CF33A + 373024CDC714CB5A8ECF00A8C2D997BC1998B7A7420C4013C36D4045095821C3 + 8DAB0CB37F95410C988E2986DB808800B02D300036A01C530CA701071F121788 + F8C3808800C306700622C8005C518C1C9D380311660021D7E10C441403905C97 + DB070CB00B19A806600B44B80168AE5B705481E1ECC9837043F00614CC75D6D3 + B3E16279B12A0CEF3E7E6328AC5E0E3684A00120D7CDE5DB0DD6080220CDF79E + BC05D34B971D61202AAA8CD3AFFF073B1B087233DD18EE3E7EC3B06DCB39C22E + C00A0C6640A2969830C06900522C0000AF7FD7D8678509020000000049454E44 + AE426082} + Name = 'PngImage21' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD2520000013A4944415478DA + 63BC5C22F99F8148A0D3FD8C115D8C1164806A4B0D84F7FD3B03C3FD3B0CB3DB + 3732A42EC614CB5985CF00A8C2E9177D1858B6A5420C4013C36D4075315821C3 + F5AB0CD37F95430C98852986DB80287FB02D300036A012530CA701071E121788 + F8C360D00422474704C3648D169C81C8A837EDFFFF4B598CA8064003B1B0EF21 + 8381990343F227179C81689872EDFF855307186086800DD8A33D1BACB9BB359A + 4158809B61D2C25B708D20C3E6F2ED81F3F3E2D518DE7EF8CA505ABD94A1BF48 + 9E81F1FFFFFF0C20678547DA320801352BC908830D01019041E7E768816D0569 + 040190E67B4FDE32BC03D22B971F861800760AD010376F630665395186E9D377 + 80C540DE81190072360864667A30DC7DF49A61D7D6B3606FC00D801902A29103 + 0923D4D1D4A018005340C8009458403780540000D999FD8911DCCCCA00000000 + 49454E44AE426082} + Name = 'PngImage23' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000B3A00000B3A01647F570D000001BD4944415478DA + 63FCFFFF3F03258011D980BE9612BCA615D5F43012342037D71F43E3D7774F18 + 0C6D0B18EE3F7989DD80E9FD4DC140F69AEF5F3F31A01B00D27C6A511543FAEC + 6F0C0F9EBEC269C0FFA4747E86A97D8FE106FCFEFE89E117107F7DF384E1EAB6 + 69A41900D2FCF5ED53207ECCF0FBDB6786FB2737820D282BCE866BCC2AAA67C4 + 6A40468A235C3388FEF6EE1983D9443FB8C61F277E33CC9BF911B701B1816A0C + 171FBC63B87DEB17C4A6F9220C160EEA0C2FD6453148042D633871E026C3B4C4 + 3760F15707E2310DD033146160F8FE9EC1D6E02D0323D00E75FBCD70DB2F6C30 + 61F05854043604047AF4B37FA018F0E9E33F861D5BFF337898DE62E0E7F9C3F0 + FFDF5F867FBF7E32FCF9FD83E1DF1F20FEFD9341283D98A1AED48FA1A97B13C8 + 002714030EEFFF0EB6DDCEF02DC3FFFFFF18FEFDFC01D5FC13A8F90758330AB8 + 9CCD0837202482176E3B2FC70F86FF7F7F31FCF985B01966C89FAF9F1996ADBA + F503A8DDAB6409C37EB801AA6A6C60DB6D749F8335FCFDF38BE12FD480FF6003 + 7E01BDF38BE1F1F51B0C07CFFFBE03D4AC8A120BDA4A9F19D8DEEC6160F97815 + 6FE6016A86DB8E62C0B773F5C4643E14CD1899891C000039F251E625517D8200 + 00000049454E44AE426082} + Name = 'PngImage24' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001A94944415478DA + 8D925D28836114C7FF4FBEE246B9734BBB61B990C89512492925F9B6BB5D0817 + 98968FF21186250AADB69285D2848DB2A5AC854D44CBB7D096C495A4D078278F + BDCF986C5EAF53E7E2391FBF739E7F871C2AE229FE6952F52D098E111E20E969 + F7BF3C1EC07D099DCA04F95468ACCEF017E0B350B35F80F015B91F10141306B4 + 35B1429C1E43C329FD00AD3F962493E22156E2AB04C2C280A8FB0B5C1FD4929F + 808A4236E5CB18A0A51059CD524CE86B7E4C54CD7A611C69C5E3F51009006C57 + A1822D726D181DAF816DDF0B854CC936A03E2F560EB0BC75BA0337CE7E2228A2 + FA7912666D0E4A4B1A71681FF95E396D8B5695A7C2BED00597BD8F088A38F834 + 098B2E0795D58D705A4301DBCBDD38B7F5124111EB5DF3A277417733C9AF2236 + 8CC5E1D894210A48CE1FFE5D447E3A0F303ADEC0BD51B87737E1DAE944427A27 + A21333F1F24AA19F3900380708A5A197CCFF930718D6BDE0BC141BBADC402EB1 + C8020FF70EC3DC9138607A8D631BF0EE9CCA0B34BFF87CC974220ED0995F59F3 + ED9E1177671A44C457213AA98C01ACAB677F034415E44D08C0202943A290C8C8 + 98EC0F53DC14659A0322CE0000000049454E44AE426082} + Name = 'PngImage25' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001A44944415478DA + 63BC5C22F99F8148A0D3FD8C115D8C1164806A4B0D84F7FD3B03C3FD3B0CB3DB + 3732A42EC614CB5985CF00A8C2E9177D1858B6A5420C4013C36D4075315821C3 + F5AB0CD37F95430C980511D38AD361F8C0AF0A54C9C0C0CCCCC0C0FEEE36C3E3 + 4BD98CA80644F9836D8101B00195FE0CF6A53A0CF31666A2D8D8BEE237C38609 + 550C9F1FF732C20D38F01033C0D6FFAA66983C3593E1C0C5DF0C2571E56017FC + 07E290F24EB0FCBE25F50C4FCF7730E20CC4EEAF0B18B6CF7261080F2B62B87C + 7402C2C926C7FF3BC99C63B8FFFA29C3BDA36D8C3803B1EBCB02861DB35D18A2 + 638B18CEEF9BC0C88003E00CC4DC7B6B09A68BFF672C19B10662E1142186AB1B + CD091AA0EDD98F3D1041B6830CD870EC0FC3AF3FFF19EE9F39C270EF54038392 + 590303A7B225C38F9FFF19162EBDC4C0F0EB1803E3FFFF98291914502003561D + FACDF0EBF77F86C3B35DE172CA413B18BEFFFAC7B06AF515C2062CD9FB0BEC02 + 103EBFD81DAEF907106FDA788DB001B3B7FF046B7E767603C39B1BD319582563 + 1838B522C006ECDB7503BF01044310047019003644AF97A0216C6C5C4E003148 + 0E65624E21D60000000049454E44AE426082} + Name = 'PngImage26' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001124944415478DA + 63FCFFFF3F03258091620340848147C2FF0B3B1630A24B1223CE08E20CAC0B28 + 0A0098010B361C807BE3E7CF5F0C5FBF7D63F8F2ED3B98D65455C62ADE599ACC + 886240BCBF3D58E19FBFFF18BE7DFFC5F0EDC72F86D6A98B1826D7E760159FD2 + 908B69C0EF3F7F810A7E337C072ABC71FF15C3FC556B1916F69463155FD45B81 + 3060DAF21DFF93835D18BEFF80D8F0FDC71F8647CFDF334C9CB38061E5D446AC + E21B66B7220CE89AB3EE7F6AA80754D16F862F409BDE7FFCC6D0D43F8561DDCC + 76ACE2FB574C4418503771F1FFB4085F86DB0F5EA3847049633BC3C6F97D58C5 + CF6E9B8730A0A86DE6FF6FC0D0FDF4F90BC3E72F5FA1F417867FFFFE33589818 + 601587A78381CF4C941A00005C20FBD97F751C0A0000000049454E44AE426082} + Name = 'PngImage27' + Background = clWindow + end> + Bitmap = {} + end + inherited LargeImages: TPngImageList [6] + 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 + F80000000970485973000017120000171201679FD252000001914944415478DA + 63FCFFFF3F032D0123CD2DC02571B542C61948EDC1A3D78590BC56FBE3BDF82C + F8AFDC50C3C0CE9E8E21F7F3E74C8679892D0C49F3F1CB672E7BCC88D702A00B + C08AE1E0C70F20FECE307B970103F3F654900184E449B000A4F9C33B8801A79C + 302DC02E4FA40530CD60037E32CCBE15846A016E79222CF83811A1F9C307880B + 5FA5202CC02F4F84050FEB119A6141F0AB0C61017E794682A968F62A79ACF220 + 0340A9089F3C210B9C0F3EC49DCEEDE5195C08C9E3CD07840031F904AB0F88C9 + C1DA1D4FF612994FB05A40D06559CB9F3012994FD02C3098F1FFAA470B032197 + 6158406C3E304EBFFEFFECC9830CFFCFA7E375198A0584F201C8509400761264 + E86CDFC0F0E304034E97A15840281F802CC88B554109A919AB8E311C3F749DE1 + C78667585D06B380503E41B1E0DAD3B70C2F3F7F6778F3E53758C1DB7BCF2196 + 4C3882E132A80504F309381FC02CD87FE30986E1938BE4B1BA0C640131790554 + 5B32C22216062CED34C1864FD36CC1E932503E20DA02F4640AA62F64909DC309 + 5B4025C3E116D0BA550100E46DEBE08B969D720000000049454E44AE426082} + Name = 'PngImage21' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD2520000019B4944415478DA + 63FCFFFF3F032D0123C8826B95B2CE40F61E3CEA5C08C96B773CD98B2E08321B + 66C17FE5861A0676F6740C9D3F7FCE649897D8C290341FBF7CD6F2278C782DD0 + 6A7F0C560C073F7E00F17786D9BB0C1898B7A732642EC32F4F9A0520CD1FDE41 + 0C38E58469011679E22D8069061BF09361F6AD20540B70C81367C1C78908CD1F + 3E405CF82A0561011E79E22C78588FD00C0B825F65080BF0C813B400948A66AF + 92C79A0641068052113E794216381F7C883B9DDBCB33B81092A7381F60732121 + 40523E005970B54286608E47F60949F9006A01493E25291FC02CC0E5530E0F41 + 86699A842C2090CE312C40F2A9757F12C3D9930719182E64E0B180403A47B100 + 68B875B93B6A0438093274B66F805B42523E40B100EA53EBF64886BC581514B5 + 33561D63387EE83AD81292F2012875C02D80FAD47A7A36D8826B4FDF32BCFCFC + 9DE1CD97DF60F56FEF3D075BF2FF7C3A23C41646E292382C15C17CBAE0A802D8 + 82FD379E60188EE203122C40F1E95CBEDD908885024B3B4DB8E1287140AC0578 + 81C10C48E58E2D1551CD0224C3512CA025A0B90500E54149EFB4C64472000000 + 0049454E44AE426082} + Name = 'PngImage22' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD252000001A44944415478DA + 63FCFFFF3F032D0123C8822BA552254076371E75A584E475BA9FF5E0B3E0BF6A + 4B0D033B7B1686829F3FA731CC8E6D61485D8C5F3E67D53346BC16005D00560C + 07DFBF3330FCF8CE307D872103CBB654900184E449B000A4F9C33B303DFDA433 + A605D8E589B400A6F93D10FFF8C930FD6630AA05B8E589B0E0432F42F3870F10 + 17BE4A4558805F9E080B1E542334835D0834E05739C202FCF2F82D00A5A2E9CB + E5B1A6419001A054844F9E900525071EE24EE70EF20CA584E447F3C130C90786 + 29D7184ED42CC5990F18F5A6FDFF7F298B11B70578D2F95CBE3D600D27B227E3 + CC074007FCBF70EA0003B22544E58385471419F2E2D518262DBC85221E6F731F + 2C870C9C9D85187ADBD7C12D8159E00C4CE77BB0190E7239C8F0AB4FDE3068CB + 88C0C593B267314CD66881CB2383E92B8E309C3E7C0D6C0923BE1A0D14A6F3A6 + A6810D7FF9F93B58ECCDE75F0C6FEF3D871B000A169803406A40F2200053C348 + A8CA0459E211EF0CD70403E816ECBBFE18C370823E40B6C4D4560BAC0919C02C + 00452C0CC0D4A1C40131006409CC5052D4106D01CC00421660CD07B404001FE5 + 4BB30B8819120000000049454E44AE426082} + Name = 'PngImage23' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F8000000097048597300000B1300000B1301009A9C18000002E14944415478DA + B5946B4814611486DF15C3122BB444ED8F901A921678438824C140D3CD322BD0 + 2828BB295678234249A8ED87844461A969125844264A60E18F42A2D032B520FF + C836EB6AEDEAEE9A3BB2E67AD99969BED976749A1DD92C0F0C73E6CC37EFF3CE + 39DF8C8AE338AC66A8960206CBB6A4F0A757CBACDF1B7DD3F8FA5F005C84A602 + 3E3E05B2857373F7D0705C83C216A3EA9F00BC43414C0CBB1D98B5A3B63306DE + 2FCFFC67002F1EA0DE8C358E4964A5C6624F5C30E2B60762477880C71001507B + EB5A369FB72619EB200288737A122167A33165A6C1B21C36F8AD85971710B9D5 + 1F17737622373D7C5910D17601B82C358789FBF54E005D2D88C3CA1F342DC022 + 6B8EC23ECB203323163D031446862DB85BBE1B27D4912A8F00A7CE6D84B6B2CA + 09D0972F8A933399C1FC65F46B7DD1F96E04599909E8EEA760B5D0787E3B0D09 + 51412A8F016417D53E0975EB880CF94560033E7E99C0A103F16869EF45727C08 + 52437BC53505C5952A45C00CA5C7E3EB4F157B7AACE208DA74E75156DD83C307 + 1385560D53663CD424637F74236ACAAA50FA08CA00E569B1589FE42BA4ECEF5D + 575EACE6DBA483D16485C9F003B46D5EA8339FF33D03580D34DA3BA4ADBDD41C + 842B4519E23501B8628CDF69C6510B6E641BC45A7ED1559522A0A97E0A3151DE + 880DD349EAFE398928294CC3E09011B69F738BE2DF2CD057B7F02FEB80B6FB2D + DE7C5AF85AD2CC45B805B8DCE7658EBAE99603FEB9BB507A619F00D1EA4DD053 + 2618EEB40AF7A64606F1ACC33CCB2F4DE7015D6E014AEE8900E75800C738B0E9 + 640AC2B6054BC4596601D487F7827B7ED8116E67A0E47EA938C91902C94BC744 + 5D9B286EFB3E24BAE7015D7200C3A0A9715AE6DE9D38C9C13A447172ADEBEB13 + DDCB77D1693F58C76D32F79E8A4F8F5112F77240DE3A343DB04BDCFF8DB8D960 + 95B89701C8CF4E74CF7F58E441978033778A0A07A9B3CEFAF4F8B04B5CE25E06 + 2085044E8395C69FEE65809981CA158BF321732F01AC66AC3AE0176A11A2EF01 + B8EA320000000049454E44AE426082} + Name = 'PngImage24' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD252000001FE4944415478DA + 63FCFFFF3F032D0123C8822BA552254076371E75A584E475BA9FF5E0B3E0BF6A + 4B0D033B7B1686829F3FA731CC8E6D61485D8C5F3E67D53346BC16005D00560C + 07DFBF3330FCF8CE307D872103CBB654900184E449B000A4F9C33B303DFDA433 + A605D8E589B400A6F93D10FFF8C930FD6630AA05B8E589B0E0432F42F3870F10 + 17BE4A4558805F9E080B1E542334835D0834E05739C202FCF2F82D00A5A2E9CB + E5B1A6419001A054844F9E900525071EE24EE70EF20CA584E469920F184D8E63 + A8FF7FC69211AB05A4E6030E6B43862B1BCC510C6F5DF18F61F9A2890CFF2F15 + 33E2B780403E8019BEFFE25F86DCCA49700B22E3F2C134B22564E5030E172BB0 + 053A5EFD0CFD451AF0480606D9FFC808533C1610990F38427CC8B480887C0032 + 9C58008A7092F20128EC27379A3038EA3313341C163F300B9C81E97C0FBE740E + CA07B9F7D6828366F73906865F7FFE83F14F10FD1B8AC162408FFF626058B2EC + 3C50D1318805C4025018832CD87A0A61F8833347181E9CAE6350306D62E050B2 + 041BFEFDD77F86B56B2E906FC1FA63FFE02E3F36C7192EAF10B81B6CF88F9FFF + 18B66EBE44BE052B0EFD4509964B4B5D510CFFF1FB1FC3DE1D57C8B760FE9E3F + 0CBF7E410C7F7E6E3DC3BB9BD3189825621938B4A28196FC65F8F38F81E1D8DE + ABE459004A45B9F56788D340AA05604BF47A89D600CA6C004568670C5BA5F9FB + 0000000049454E44AE426082} + Name = 'PngImage25' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD252000002054944415478DA + 63FCFFFF3F032D0123C8822BA552254076371E75A584E475BA9FF5E0B3E0BF6A + 4B0D033B7B1686829F3FA731CC8E6D61485D8C5F3E67D53346BC16005D00560C + 07DFBF3330FCF8CE307D872103CBB654900184E449B000A4F9C33B303DFDA433 + A605D8E589B400A6F93D10FFF8C930FD6630AA05B8E589B0E0432F42F3870F10 + 17BE4A4558805F9E080B1E542334835D0834E05739C202FCF2F82D00A5A2E9CB + E5B1A6419001A054844F9E900525071EE24EE70EF20CA584E469920F184D8E63 + A8FF7FC69211AB05A4E6030E6B43862B1BCC510C6F5DF18F61F9A2890CFF2F15 + 33E2B780403E8019BEFFE25F86DCCA49700B22E3F2C134B22564E5030E172BB0 + 053A5EFD0CFD451AF0480606D97F2799730CFBEEFDC0610191F98023C407AB05 + 782399D87C00329C58008A7092F20128EC27379A3038EA3313341C163F300B9C + 81E97C0FBE740ECA07B9F7D6828366F73906865F7FFE83F14F10FD1B8AC16240 + 8FFF626058B2EC3C50D1318805C4025024822CD87A0A61F8833347181E9CAE63 + 50306D62E050B2041BFEFDD77F86B56B2E906FC1FA63FFE02E3F36C7192EAF10 + B81B6CF88F9FFF18B66EBE44BE052B0EFD4509964B4B5D510CFFF1FB1FC3DE1D + 57C8B760FE9E3F0CBF7E410C7F7E6E3DC3BB9BD3189825621938B4A28196FC65 + F8F38F81E1D8DEABE459004A45B9F56788D340AA05604BF47A89D600CACD00E4 + E9610CDEDF75F30000000049454E44AE426082} + Name = 'PngImage26' + Background = clWindow + end> + Bitmap = {} + end + inherited JvFormStorage: TJvFormStorage [7] + end + inherited JvAppRegistryStorage: TJvAppRegistryStorage [8] + end + inherited dsDataTable: TDADataSource [9] + end + inherited GridPopupMenu: TPopupMenu + inherited Nuevo1: TMenuItem [3] + end + object rasladar1: TMenuItem [4] + Action = actTrasladar + end + inherited N1: TMenuItem [5] + end + object Liberar1: TMenuItem [6] + Action = actLiberar + end + object Reservar1: TMenuItem [7] + Action = actReservar + end + end +end diff --git a/Modulos/Articulos/Cliente/uEditorArticulosAlmacen.pas b/Modulos/Articulos/Cliente/uEditorArticulosAlmacen.pas new file mode 100644 index 0000000..7750c3a --- /dev/null +++ b/Modulos/Articulos/Cliente/uEditorArticulosAlmacen.pas @@ -0,0 +1,289 @@ +unit uEditorArticulosAlmacen; + +interface + +uses + Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, + uCustomEditor, uEditorGrid, uBizArticulos, ImgList, + PngImageList, StdActns, ActnList, TB2ExtItems, TBXExtItems, TBX, TB2Item, + TB2Dock, TB2Toolbar, JvExControls, JvComponent, JvNavigationPane, + uViewArticulosAlmacen, Menus, DB, uDADataTable, ComCtrls, uViewGrid, + uDAScriptingProvider, uDACDSDataTable, JvAppStorage, + JvAppRegistryStorage, JvFormPlacement, pngimage, ExtCtrls, uCustomView, + uViewBase, uViewBarraSeleccion, JvComponentBase; + +type + IEditorArticulosAlmacen = interface(IEditorGrid) + ['{24939779-BF07-43C4-AA66-FD59CD2A0692}'] + function GetArticulosAlmacen: IBizArticulosAlmacen; + procedure SetArticulosAlmacen(const Value: IBizArticulosAlmacen); + property ArticulosAlmacen: IBizArticulosAlmacen read GetArticulosAlmacen write + SetArticulosAlmacen; + end; + + TfEditorArticulosAlmacen = class(TfEditorGrid, IEditorArticulosAlmacen) + actRecibirPedido: TAction; + actTrasladar: TAction; + actReservar: TAction; + actLiberar: TAction; + TBXSeparatorItem16: TTBXSeparatorItem; + TBXSeparatorItem17: TTBXSeparatorItem; + rasladar1: TMenuItem; + Liberar1: TMenuItem; + Reservar1: TMenuItem; + frViewBarraSeleccion: TfrViewBarraSeleccion; + procedure actEliminarExecute(Sender: TObject); + procedure actModificarExecute(Sender: TObject); + procedure actNuevoExecute(Sender: TObject); + procedure frViewBarraSeleccionactSeleccionarExecute(Sender: TObject); + procedure frViewBarraSeleccionbCancelarClick(Sender: TObject); + procedure actRecibirPedidoExecute(Sender: TObject); + procedure actTrasladarExecute(Sender: TObject); + procedure actReservarExecute(Sender: TObject); + procedure actLiberarExecute(Sender: TObject); + procedure actTrasladarUpdate(Sender: TObject); + procedure actReservarUpdate(Sender: TObject); + procedure actLiberarUpdate(Sender: TObject); + procedure frViewBarraSeleccionactCancelarExecute(Sender: TObject); + private + FArticulosAlmacen: IBizArticulosAlmacen; + protected + function GetArticulosAlmacen: IBizArticulosAlmacen; + function GetSelectionBarVisible: Boolean; + procedure SetArticulosAlmacen(const Value: IBizArticulosAlmacen); + procedure SetSelectionBarVisible(const Value: Boolean); + procedure SetViewGrid(const Value: IViewGrid); override; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + property ArticulosAlmacen: IBizArticulosAlmacen read GetArticulosAlmacen write + SetArticulosAlmacen; + property SelectionBarVisible: Boolean read GetSelectionBarVisible write + SetSelectionBarVisible; + end; + +var + fEditorArticulosAlmacen : TfEditorArticulosAlmacen; + +implementation + +uses uDataModuleArticulos, uEditorUtils, uDBSelectionList, uDataModulePedidosProveedor, +uBizPedidosProveedor, uBizMontajes, uDataModuleMontajes; + +{$R *.DFM} + +function ShowEditorArticulosAlmacen (ABizObject : TDADataTableRules) : TModalResult; +var + AEditor: TfEditorArticulosAlmacen; +begin + AEditor := TfEditorArticulosAlmacen.Create(Application); + try + AEditor.ArticulosAlmacen := (ABizObject as IBizArticulosAlmacen); + Result := AEditor.ShowModal; + finally + AEditor.Release; + end; +end; + +function ShowSelectEditorArticulosAlmacen (ABizObject : TDADataTableRules) : TModalResult; +var + AEditor: TfEditorArticulosAlmacen; +begin + AEditor := TfEditorArticulosAlmacen.Create(Application); + try + AEditor.ArticulosAlmacen := (ABizObject as IBizArticulosAlmacen); + AEditor.SelectionBarVisible := True; + Result := AEditor.ShowModal; + finally + AEditor.Release; + end; +end; + +{ TfEditorArticulosAlmacen } + +{ +***************************** TfEditorArticulosAlmacen ***************************** +} +constructor TfEditorArticulosAlmacen.Create(AOwner: TComponent); +begin + inherited; + ViewGrid := CreateView(TfrViewArticulosAlmacen) as IViewArticulosAlmacen; +end; + +destructor TfEditorArticulosAlmacen.Destroy; +begin + FArticulosAlmacen := NIL; + inherited; +end; + +procedure TfEditorArticulosAlmacen.actEliminarExecute(Sender: TObject); +var + aAux : ISelectedRowList; + aPregunta : String; +begin + aPregunta := '¿Desea realizar la salida del almacén de este artículo?'; + if Supports(ArticulosAlmacen, ISelectedRowList, aAux) then + if (aAux.SelectedRows.Count > 1) then + aPregunta := '¿Desea realizar la salida del almacén de los artículos que ha seleccionado?'; + + if (Application.MessageBox(PAnsiChar(aPregunta), 'Confirmación', MB_YESNO) = IDYES) then + begin + //inherited; + ArticulosAlmacen.Eliminar; + ViewGrid.RefreshGrid; + end; +end; + +procedure TfEditorArticulosAlmacen.actModificarExecute(Sender: TObject); +begin +// inherited; +end; + +procedure TfEditorArticulosAlmacen.actNuevoExecute(Sender: TObject); +begin + ArticulosAlmacen.RecibirArticulos(ViewGrid.Grid.ActiveLevel.Tag); + ViewGrid.RefreshGrid; + ViewGrid.SyncFocusedRecordsFromDataSet; +end; + +procedure TfEditorArticulosAlmacen.frViewBarraSeleccionactSeleccionarExecute( + Sender: TObject); +begin + inherited; + ViewGrid.SyncFocusedRecordsFromGrid; + ModalResult := mrOK; +end; + +procedure TfEditorArticulosAlmacen.frViewBarraSeleccionbCancelarClick(Sender: + TObject); +begin + inherited; + frViewBarraSeleccion.actCancelarExecute(Sender); +end; + +function TfEditorArticulosAlmacen.GetArticulosAlmacen: IBizArticulosAlmacen; +begin + Result := FArticulosAlmacen; +end; + +function TfEditorArticulosAlmacen.GetSelectionBarVisible: Boolean; +begin + Result := frViewBarraSeleccion.Visible +end; + +procedure TfEditorArticulosAlmacen.SetArticulosAlmacen(const Value: IBizArticulosAlmacen); +begin + FArticulosAlmacen := Value; + dsDataTable.DataTable := FArticulosAlmacen.DataTable; + if Assigned(ViewGrid) then + (ViewGrid as IViewArticulosAlmacen).ArticulosAlmacen := ArticulosAlmacen; +end; + +procedure TfEditorArticulosAlmacen.SetSelectionBarVisible(const Value: Boolean); +begin + frViewBarraSeleccion.Visible := True; + ViewGrid.OnDblClick := frViewBarraSeleccion.actSeleccionar.OnExecute; +end; + +procedure TfEditorArticulosAlmacen.SetViewGrid(const Value: IViewGrid); +begin + inherited; + if Assigned(ViewGrid) and Assigned(ArticulosAlmacen) then + (ViewGrid as IViewArticulosAlmacen).ArticulosAlmacen := ArticulosAlmacen; + + ViewGrid.OnDblClick := Nil; +end; + +procedure TfEditorArticulosAlmacen.actRecibirPedidoExecute(Sender: TObject); +var + APedido: IBizPedidosProveedor; +begin + inherited; + APedido := dmPedidos.GetItemsPendientesRecepcion; + + try + if APedido.ShowForSelect = mrOK then + begin + ArticulosAlmacen.RecibirArticulos(APedido, ViewGrid.Grid.ActiveLevel.Tag); + end; + finally + APedido := NIL; + end; +end; + +procedure TfEditorArticulosAlmacen.actTrasladarExecute(Sender: TObject); +begin + ArticulosAlmacen.Trasladar; + ViewGrid.RefreshGrid; + ViewGrid.SyncFocusedRecordsFromDataSet; +end; + +procedure TfEditorArticulosAlmacen.actReservarExecute(Sender: TObject); +var + AMontaje: IBizMontaje; +begin + inherited; + AMontaje := dmMontajes.GetItemsPendientes(sitPendientes); + + try + if AMontaje.ShowForSelect = mrOK then + begin + ArticulosAlmacen.Reservar(AMontaje); + ViewGrid.RefreshGrid; + ViewGrid.SyncFocusedRecordsFromDataSet; + end; + finally + AMontaje := NIL; + end; +end; + +procedure TfEditorArticulosAlmacen.actLiberarExecute(Sender: TObject); +begin + if (MessageDlg('¿Está seguro que desea liberar los artículos seleccionados?', mtConfirmation, [mbYes, mbNo], 0) = mrYes) then + ArticulosAlmacen.Liberar; + ViewGrid.RefreshGrid; + ViewGrid.SyncFocusedRecordsFromDataSet; +end; + +procedure TfEditorArticulosAlmacen.actTrasladarUpdate(Sender: TObject); +begin + inherited; + if Assigned(dsDataTable.DataTable) then + (Sender as TAction).Enabled := (not dsDataTable.DataTable.IsEmpty) + else + (Sender as TAction).Enabled := False; +end; + +procedure TfEditorArticulosAlmacen.actReservarUpdate(Sender: TObject); +begin + inherited; + if Assigned(dsDataTable.DataTable) then + (Sender as TAction).Enabled := (not dsDataTable.DataTable.IsEmpty) + else + (Sender as TAction).Enabled := False; +end; + +procedure TfEditorArticulosAlmacen.actLiberarUpdate(Sender: TObject); +begin + inherited; + if Assigned(dsDataTable.DataTable) then + (Sender as TAction).Enabled := (not dsDataTable.DataTable.IsEmpty) + else + (Sender as TAction).Enabled := False; +end; + +procedure TfEditorArticulosAlmacen.frViewBarraSeleccionactCancelarExecute( + Sender: TObject); +begin + inherited; + frViewBarraSeleccion.actCancelarExecute(Sender); +end; + +initialization + RegisterEditor(IBizArticulosAlmacen, ShowEditorArticulosAlmacen, etItems); + RegisterEditor(IBizArticulosAlmacen, ShowSelectEditorArticulosAlmacen, etSelectItems); + +finalization + +end. + diff --git a/Modulos/Articulos/Cliente/uEditorEntradaArticulos.ddp b/Modulos/Articulos/Cliente/uEditorEntradaArticulos.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Articulos/Cliente/uEditorEntradaArticulos.ddp differ diff --git a/Modulos/Articulos/Cliente/uEditorEntradaArticulos.dfm b/Modulos/Articulos/Cliente/uEditorEntradaArticulos.dfm new file mode 100644 index 0000000..0fe9313 --- /dev/null +++ b/Modulos/Articulos/Cliente/uEditorEntradaArticulos.dfm @@ -0,0 +1,89 @@ +inherited fEditorEntradaArticulos: TfEditorEntradaArticulos + Left = 387 + Top = 196 + Caption = 'Entrada de art'#237'culos en almac'#233'n' + OnClose = CustomEditorClose + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + Caption = 'Entrada de art'#237'culos en almac'#233'n' + end + inherited pgPaginas: TPageControl + inherited pagGeneral: TTabSheet + inline frViewListaArticulos: TfrViewListaArticulos + Left = 0 + Top = 117 + Width = 658 + Height = 242 + Align = alClient + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 0 + ReadOnly = False + inherited cxGrid: TcxGrid + Width = 658 + Height = 217 + inherited cxGridView: TcxGridDBTableView + OptionsCustomize.ColumnSorting = True + inherited cxGridViewCODIGOALMACEN: TcxGridDBColumn + Caption = 'Almac'#233'n de destino' + Properties.ListOptions.GridLines = glNone + SortIndex = 0 + SortOrder = soAscending + end + inherited cxGridViewCANTIDAD: TcxGridDBColumn + Caption = 'Cantidad' + end + end + end + inherited ToolBar1: TToolBar + Width = 658 + end + end + inline frViewDatosPedido: TfrViewDatosPedido + Left = 0 + Top = 0 + Width = 658 + Height = 117 + Align = alTop + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 1 + Visible = False + ReadOnly = False + inherited GroupBox1: TGroupBox + Left = 7 + Top = 4 + end + end + end + end + inherited EditorActionList: TActionList + inherited actNuevo: TAction + Visible = False + end + inherited actModificar: TAction + Visible = False + end + inherited actEliminar: TAction + Visible = False + end + inherited actPrevisualizar: TAction + Visible = False + end + inherited actImprimir: TAction + Visible = False + end + inherited actRefrescar: TAction + Visible = False + end + end +end diff --git a/Modulos/Articulos/Cliente/uEditorEntradaArticulos.pas b/Modulos/Articulos/Cliente/uEditorEntradaArticulos.pas new file mode 100644 index 0000000..17f2e11 --- /dev/null +++ b/Modulos/Articulos/Cliente/uEditorEntradaArticulos.pas @@ -0,0 +1,100 @@ +unit uEditorEntradaArticulos; + +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, uCustomView, + uViewBase, uViewContenido, uViewListaArticulos, uBizArticulos, + uEditorItem, pngimage, uViewDetallesNormales, uViewDatosPedido; + +type + TfEditorEntradaArticulos = class(TfEditorDBItem) + frViewListaArticulos: TfrViewListaArticulos; + frViewDatosPedido: TfrViewDatosPedido; + procedure actGuardarExecute(Sender: TObject); + procedure CustomEditorClose(Sender: TObject; var Action: TCloseAction); + private + FHayCambios: Boolean; + FArticulos: IBizArticulosAlmacen; + function GetArticulos: IBizArticulosAlmacen; + procedure SetArticulos(const Value: IBizArticulosAlmacen); + public + property Articulos: IBizArticulosAlmacen read GetArticulos write SetArticulos; + constructor Create(AOwner: TComponent); override; + + end; + +var + fEditorEntradaArticulos: TfEditorEntradaArticulos; + +implementation +{$R *.dfm} + +uses uEditorUtils; + +function ShowEditorEntradaArticulos (ABizObject : TDADataTableRules): TModalResult; +var + AEditor: TfEditorEntradaArticulos; +begin + AEditor := TfEditorEntradaArticulos.Create(Application); + try + AEditor.Articulos := (ABizObject as IBizArticulosAlmacen); + Result := AEditor.ShowModal; + finally + AEditor.Release; + end; +end; + +{ TfEditorRecibirPedido } + +function TfEditorEntradaArticulos.GetArticulos: IBizArticulosAlmacen; +begin + Result := FArticulos; +end; + +procedure TfEditorEntradaArticulos.SetArticulos(const Value: IBizArticulosAlmacen); +begin + FArticulos := Value; + + if Assigned(FArticulos) then + dsDataTable.DataTable := FArticulos.DataTable + else + dsDataTable.DataTable := NIL; + + frViewListaArticulos.DADataSource.DataTable := dsDataTable.DataTable; + if FArticulos.CodigoAlmacenEntrada = -1 then + FArticulos.CodigoAlmacenEntrada := frViewListaArticulos.Almacenes.CODIGO; + + frViewDatosPedido.Pedido := FArticulos.Pedido; +end; + +procedure TfEditorEntradaArticulos.actGuardarExecute(Sender: TObject); +begin + Articulos.GuardarArticulosUnitarios; + FHayCambios:= True; +end; + +procedure TfEditorEntradaArticulos.CustomEditorClose(Sender: TObject; + var Action: TCloseAction); +begin + inherited; + if FHayCambios + then ModalResult := mrOK + else ModalResult := mrCancel; +end; + +constructor TfEditorEntradaArticulos.Create(AOwner: TComponent); +begin + inherited; + FHayCambios:= False; +end; + +initialization + RegisterEditor(IBizArticulosAlmacen, ShowEditorEntradaArticulos, etItem); + + +end. diff --git a/Modulos/Articulos/Cliente/uEditorSituacionPedido.ddp b/Modulos/Articulos/Cliente/uEditorSituacionPedido.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Articulos/Cliente/uEditorSituacionPedido.ddp differ diff --git a/Modulos/Articulos/Cliente/uEditorSituacionPedido.dfm b/Modulos/Articulos/Cliente/uEditorSituacionPedido.dfm new file mode 100644 index 0000000..34e8dde --- /dev/null +++ b/Modulos/Articulos/Cliente/uEditorSituacionPedido.dfm @@ -0,0 +1,94 @@ +object fEditorSituacionPedido: TfEditorSituacionPedido + Left = 497 + Top = 344 + BorderStyle = bsDialog + Caption = 'Nueva situaci'#243'n del pedido' + ClientHeight = 136 + ClientWidth = 322 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + DesignSize = ( + 322 + 136) + PixelsPerInch = 96 + TextHeight = 13 + object Bevel1: TBevel + Left = 177 + Top = 8 + Width = 136 + Height = 9 + Anchors = [akLeft, akTop, akRight] + Shape = bsBottomLine + end + object Label5: TLabel + Left = 8 + Top = 8 + Width = 162 + Height = 13 + Caption = 'El pedido pasar'#225' a situaci'#243'n' + Font.Charset = DEFAULT_CHARSET + Font.Color = clActiveCaption + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + ParentFont = False + end + object rdxSituacion1: TRadioButton + Left = 46 + Top = 39 + Width = 211 + Height = 16 + Caption = 'El pedido se ha recibido totalmente' + Checked = True + TabOrder = 0 + TabStop = True + end + object rdxSituacion2: TRadioButton + Left = 46 + Top = 67 + Width = 219 + Height = 17 + Caption = 'El pedido se ha recibido parcialmente' + TabOrder = 1 + end + object pnlSeleccion: TPanel + Left = 0 + Top = 99 + Width = 322 + Height = 37 + Align = alBottom + BevelOuter = bvNone + ParentBackground = True + TabOrder = 2 + DesignSize = ( + 322 + 37) + object bSeleccionar: TButton + Left = 159 + Top = 7 + Width = 74 + Height = 23 + Anchors = [akRight] + Caption = '&Aceptar' + Default = True + ModalResult = 1 + TabOrder = 0 + end + object bCancelar: TButton + Left = 240 + Top = 7 + Width = 74 + Height = 23 + Anchors = [akRight] + Cancel = True + Caption = '&Cancelar' + ModalResult = 2 + TabOrder = 1 + end + end +end diff --git a/Modulos/Articulos/Cliente/uEditorSituacionPedido.pas b/Modulos/Articulos/Cliente/uEditorSituacionPedido.pas new file mode 100644 index 0000000..7ee4859 --- /dev/null +++ b/Modulos/Articulos/Cliente/uEditorSituacionPedido.pas @@ -0,0 +1,31 @@ +unit uEditorSituacionPedido; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uCustomView, uViewBase, uViewBarraSeleccion, StdCtrls, ExtCtrls; + +type + TfEditorSituacionPedido = class(TForm) + rdxSituacion1: TRadioButton; + rdxSituacion2: TRadioButton; + Bevel1: TBevel; + Label5: TLabel; + pnlSeleccion: TPanel; + bSeleccionar: TButton; + bCancelar: TButton; + private + { Private declarations } + public + { Public declarations } + end; + +var + fEditorSituacionPedido: TfEditorSituacionPedido; + +implementation + +{$R *.dfm} + +end. diff --git a/Modulos/Articulos/Cliente/uPluginControllerArticulos.ddp b/Modulos/Articulos/Cliente/uPluginControllerArticulos.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Articulos/Cliente/uPluginControllerArticulos.ddp differ diff --git a/Modulos/Articulos/Cliente/uPluginControllerArticulos.dfm b/Modulos/Articulos/Cliente/uPluginControllerArticulos.dfm new file mode 100644 index 0000000..4848c37 --- /dev/null +++ b/Modulos/Articulos/Cliente/uPluginControllerArticulos.dfm @@ -0,0 +1,192 @@ +object ModuleArticulos: TModuleArticulos + OldCreateOrder = True + Description = 'Art'#237'culos de almac'#233'n' + ModuleMenu = MainMenu + ModuleName = 'Art'#237'culos de almac'#233'n' + SmallImages = SmallImages + LargeImages = LargeImages + Author = 'Rodax Software' + Version = '1.0.0' + Left = 691 + Top = 507 + Height = 252 + Width = 401 + object LargeImages: TPngImageList + Height = 24 + Width = 24 + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD2520000015E4944415478DA + 63FCFFFF3F032D0123CC822BA552CE406A0F1EB52E84E475BA9FEDC567C17FD5 + 961A0676F62C0C9D3F7F4E63981DDBC290BA18BF7CCEAA678C782D00BA00AC18 + 0EBE7F6760F8F19D61FA0E4306966DA9200308C993600148F38777607AFA4967 + 4C0BB0CB1369014CF37B20FEF19361FACD60540B70CB1361C1875E84E60F1F20 + 2E7C958AB000BF3C11163CA8466806BB1068C0AF728405F8E5F15B004A45D397 + CB634D83200340A9089F3C210B9C0F3CC49DCE1DE4195C08C9539C0FB0B99010 + 20351F50D1023CE99C88620504C041466A3E8059803338D18394D47CC088E118 + 64F0F91303C397CF0CD30F58C1D5939A0F705B00359CE133D082B3EED82D2094 + 0F705A806438D8073743B05A40301FC0D2398A056886337CFDC230FD4902A605 + A400B8056F3A300C67F8F29561FA876C2A5970B38481E1D72F14C319BE7D4189 + 33B22DC0175FC87146AE0578E30B39CEC8B2801440730B007C5C13EF8DA2E719 + 0000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD252000001D44944415478DA + B5D4BD4B027118C0F1E737D552D0105843616F838519166551345443A32D2E0D + D15863FF416B2141353544144A2004114144431695841445D00BE950E7905618 + 742F2257CFD9D9EFCE3BEF4EF001797E9CFAFD1C8A125114A19C43648010A2F9 + 8205AF5D7C611296C3FE33961802189F5909C13B1383EFF427B05FB94738B409 + 76BB0DC6E756FEAE7D289EF7EF3E422010280E941ADF589E8754A3AF3820C7F1 + 0DA9D798A5785D8D0D6EAB87F5013A8E81D46BDC521C471750C731F0CEC44DC5 + 5B1B9A41E00510848C36B038D15410C7F3C1FAB261BCABC3998BF31969472B07 + 0A81D97E52D20F62D0E381CCEF5DF3129043CE494F21B03445C4B1D169C36036 + 9B95223C27C0D17E181CCE36E963A19163C1551A40C731747274019DDDED529C + 460EBF1CD601751CCF91D328F40DBA81653905B2976CB10668C5715F5DDEC2D0 + 88473AD3C80ED3681ED08BE3BEBBB997001C1AD98ED79B038AC5F14E9FEE9FF3 + 008D6C3DD41A03EA38FBCDE501FE6F332F090520236BD755C5013A22A8367D3D + F9962C00562315100C06FFFF21D480D938EE743AAD00E4389E3581E1A149D371 + FC0E388ECD03745C17F0F4FA4CC77164401DD705DC2EAFE9B80CE03FA73AAE0B + 9C733EB03A5A714DA05C5376E00756B52DFEBD3C9AE50000000049454E44AE42 + 6082} + Name = 'PngImage1' + Background = clWindow + end> + Left = 232 + Top = 16 + Bitmap = {} + end + object ModuleActionList: TActionList + Images = LargeImages + Left = 40 + Top = 72 + object actArticulos: TAction + Category = 'Log'#237'stica' + Caption = 'Inventarios' + ImageIndex = 0 + OnExecute = actArticulosExecute + end + end + object MainMenu: TMainMenu + Images = LargeImages + Left = 40 + Top = 16 + object Logistica1: TMenuItem + Tag = 200 + Caption = '&Log'#237'stica' + GroupIndex = 1 + ImageIndex = 1 + object Articulos1: TMenuItem + Tag = 1000 + Action = actArticulos + end + object N1: TMenuItem + Tag = 1001 + Caption = '-' + end + end + end + object SmallImages: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001004944415478DA + 63BC5C22F99F8148A0D3FD8C115D8C1164806A4B0D84F7FD3B03C3FD3B0CB3DB + 3732A42EC614CB5985CF00A8C2E9177D1858B6A5420C4013C36D4075315821C3 + F5AB0CD37F95430C98852986DB80287FB02D300036A012530CA701071E121788 + F8C3002DC072573F67FCFF9F7004E10C449001403967A09A3D78F4BBE00C44A8 + 0160C3D9D9B33074FEFC398D61766C0BEE408419004C3C60C5700072E98FEF0C + D3771882D5E10C44AC0680347F7807A6A79F748618802FA0AE944A210C80697E + 0FC43F7E324CBF194C82011F7A119A3F7C80B8E0552A09063CA8466806BBE03B + 3CB0091A008A85E9CBE5B1CA13638033308071A6030779061700E6FAF742387F + 63F70000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD2520000022E4944415478DA + 8D93CF6BD36018C7BF6997A45DD376EA70CA18D31D44981741280C44119DA83D + C87619781A1EFD1BC49B2028B28353141111A43BE8CD934E65A8D4A1686B61B5 + A31DD8CCBAFEDAACEDF226B389EFFB26CBCC54E6030FEFCB4B3E9FE79B9744B0 + 2C0B8220E0F7BA3AB2D75A282DE07F4AD82C60F0851B8F50530BF85EF98A6236 + 8DCCAB69B0B366BD8C95B24ACF4BB877FD226AFD635EC13A5CF99243A356869A + 4D51F8398799EC476D09E5621E0F6F5EC6C8D938EE7C503604EB7055CDA34127 + A8B90C3ECD3CE570A35AA2FD0DCB4B2AEE4F5CC29953C35094102667655B706D + 7480C3F97412AD951AAAC502E6DEBCE47031974673B942BB8AA9DB57103F7D12 + 9D9D413ED4154C8C0BD6FCE7AD2F6C2816C3CE9E6E8862077C3E9F57307CE2FC + 1F80655A308C35E844C7B3273318D8D78FE8B6282449A41211B7DE05FE2D304D + 13866EC34433F0FAC55BF4EDE945A42B0C910A6459C6DD94F27781D936F964B2 + AADB02DAEF9329ECEEED4138A240944548B2840773DBBD02B637596C6238205D + 352AD175643E66B1A3BB0B0A15489204292061AAB0CB2B68D3C96B34367120BE + 3AB2F96C01E1A8825028083920F35778BCD8B721387E6C9C42060788465C50A3 + 12B24AB0582C2110946907282C61BA3588442221B882C343E75C50A30093B104 + 84D849EAD53AFC1D7E0ECFFA631C76FF0526387470D4135977405B62A0D56CB2 + C791891C71618FE0C0FEB873618623B2E33361FB679B4A340A1FF5C01E41928C + 6DF9256E8659FD02D3B7960923D6946A0000000049454E44AE426082} + Name = 'PngImage1' + Background = clWindow + end> + PngOptions = [pngBlendOnDisabled, pngGrayscaleOnDisabled] + Left = 308 + Top = 16 + Bitmap = {} + end + object ExtraImages: TPngImageList + Height = 28 + Width = 28 + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D494844520000001C0000001C0806000000720DDF + 940000000970485973000017120000171201679FD252000001374944415478DA + 63FCFFFF3F033D01E3C8B2F04AA9943390DA43408F0B316A74BA9FED25C6C2FF + AA2D350CECEC59584DF9F9731AC3ECD81686D4C584D5E4AC7AC6489485409781 + 35A180CF9F1818BE7C66987EC08A81655B2AC83062D4906921D42086CF40C3CE + BA63B710BB1A322C443208ECFA9B219816E25643A2856806317CFDC230FD4902 + AA85F8D59060E19B0E0C8318BE7C6598FE211B61216135245878B38481E1D72F + 148318BE015DFFAB1C61216135C45908CA16D397CB33E00220C340D982901A62 + 2D743EF0107FA67690677021460D55333E2ED71303C8CDF834B4104FA626B6EC + 450E5E72333ECC4292A380DC8CCF88D581444401B9191FB78504CA5572333E76 + 0B892857C9CAF8582D24B25C2527E397022DE921270A302C2415901A0554B190 + 9428A086854495BD38333E3DC0F0B71000FEC966E74A55381F0000000049454E + 44AE426082} + Name = 'PngImage0' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D494844520000001C0000001C0806000000720DDF + 940000000970485973000017120000171201679FD2520000020F4944415478DA + E5D4DB2B04511800F06FB659D7CD2D892816B984258992242129E5924BDEE491 + 47FF81571E9495072F44BB1EF69127CAA5DC436E895C4A92AC6CC48E9961EC39 + 63C7EEEC65CEAC6D5F7CF575E69C33F3FD3AA773861204014219D4FF02298AF2 + FAD2709B5EB8BEBF0E18195B17A4C28A20C2FA8D16E059065EACF7F0FE6203FB + AB986B9619D0EB93A169D0E8757E7A6C089ED2BBC1643291814E4C2CF0EC13F3 + 368FB0AE8E5618DF0E27038381A1200283851181C1C414C191F6CC3F611DED2D + A0D150E4E0402515F0A56CACAF83C8A808A069DA0DF50B8EF65242437D1F11C0 + B13C701C87DBA58555282E2B045A4B83D691AE685040578C6339585DDC808292 + 3C0CC9D13F83728CE378D858D981DC826C8CC9D189DD88C0C10F86151119BAB7 + 7D08593919222843270F74EAC1AFCF2FBC126F181A3FDA3F85F4CC34097245A7 + 4EE2D4814A18EA9F1D5F404A6A1284858779A0B3E789E42009869E2FCF6F2031 + 29016FA11C9DBB4A26034931D691B73777101B1F8341396AB94D53064930C6FE + 21818F0F5688D6454907C589CE5BB3C16C36BBFF3EE5605D6DAF072616E781E7 + C53196FD5D1DEADB9E6D18D06A7F4FE73263C018AAEB17ACAAEC715FCD4F515F + 186ADFDFDE1C975C23615B9A720953042BCA3A556168FB19C68EBF47E8A1AEDA + 0D53044B0DADAA30144EF038A6C60353048BF29B55614ED017A6086E32DD1048 + F8C2FC82A1889083DF93D867F65E51168D0000000049454E44AE426082} + Name = 'PngImage1' + Background = clWindow + end> + Left = 232 + Top = 80 + Bitmap = {} + end +end diff --git a/Modulos/Articulos/Cliente/uPluginControllerArticulos.pas b/Modulos/Articulos/Cliente/uPluginControllerArticulos.pas new file mode 100644 index 0000000..29a421d --- /dev/null +++ b/Modulos/Articulos/Cliente/uPluginControllerArticulos.pas @@ -0,0 +1,73 @@ +unit uPluginControllerArticulos; + +interface + +uses + uModuleController, uInterfaces, uHostManager, Menus, Classes, ActnList, + ImgList, Controls, PngImageList; + +type + IMCArticulos = interface(IInterface) + ['{A0E73296-EAE8-4528-93EB-953484D484EB}'] + end; + + TModuleArticulos = class(TModuleController, IMCArticulos) + Logistica1: TMenuItem; + ExtraImages: TPngImageList; + LargeImages: TPngImageList; + MainMenu: TMainMenu; + ModuleActionList: TActionList; + SmallImages: TPngImageList; + actArticulos: TAction; + Articulos1: TMenuItem; + N1: TMenuItem; + procedure actArticulosExecute(Sender: TObject); + public + end; + +implementation + +{$R *.dfm} + +uses + Forms, Dialogs, uGUIBase, SysUtils, uDataModuleArticulos, uEditorAlmacenes, + uBizArticulos, uEditorArticulosAlmacen; + +function GetModule : TModuleController; +begin + Result := TModuleArticulos.Create(NIL); +end; + +exports + GetModule name GET_MODULE_FUNC; + +{ +******************************* TModuleContactos ******************************* +} + +procedure TModuleArticulos.actArticulosExecute(Sender: TObject); +var + aObj: IEditorArticulosAlmacen; + AArticulosAlmacen : IBizArticulosAlmacen; +begin + AArticulosAlmacen := dmArticulos.GetItems; + aObj := TfEditorArticulosAlmacen.Create(Application); + try + with aObj do + begin + ArticulosAlmacen := AArticulosAlmacen; + ShowEmbedded; + end; + finally + AArticulosAlmacen := NIL; + aObj := NIL; + end; +end; + +initialization + RegisterModuleClass(TModuleArticulos); + +finalization + UnRegisterModuleClass(TModuleArticulos); + +end. diff --git a/Modulos/Articulos/Cliente/uViewArticulosAlmacen.ddp b/Modulos/Articulos/Cliente/uViewArticulosAlmacen.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Articulos/Cliente/uViewArticulosAlmacen.ddp differ diff --git a/Modulos/Articulos/Cliente/uViewArticulosAlmacen.dfm b/Modulos/Articulos/Cliente/uViewArticulosAlmacen.dfm new file mode 100644 index 0000000..08a9502 --- /dev/null +++ b/Modulos/Articulos/Cliente/uViewArticulosAlmacen.dfm @@ -0,0 +1,173 @@ +inherited frViewArticulosAlmacen: TfrViewArticulosAlmacen + inherited cxGrid: TcxGrid + RootLevelOptions.DetailTabsPosition = dtpTop + OnActiveTabChanged = cxGridActiveTabChanged + inherited cxGridView: TcxGridDBTableView + DataController.KeyFieldNames = 'CODIGO' + DataController.Summary.FooterSummaryItems = < + item + Format = '0 art'#237'culos' + Kind = skCount + Column = cxGridViewDESCRIPCION + end> + Styles.OnGetContentStyle = cxGridViewStylesGetContentStyle + object cxGridViewCODIGO: TcxGridDBColumn + DataBinding.FieldName = 'CODIGO' + Visible = False + BestFitMaxWidth = 25 + Width = 25 + IsCaptionAssigned = True + end + object cxGridViewICONO: TcxGridDBColumn + DataBinding.FieldName = 'REFERENCIAMONTAJE' + OnCustomDrawCell = cxGridViewCODIGOCustomDrawCell + BestFitMaxWidth = 25 + Width = 30 + IsCaptionAssigned = True + end + object cxGridViewCODIGOALMACEN: TcxGridDBColumn + DataBinding.FieldName = 'CODIGOALMACEN' + Visible = False + Width = 62 + end + object cxGridViewCODIGOPEDIDO: TcxGridDBColumn + DataBinding.FieldName = 'CODIGOPEDIDO' + Visible = False + Width = 61 + end + object cxGridViewCODIGOMONTAJE: TcxGridDBColumn + DataBinding.FieldName = 'CODIGOMONTAJE' + PropertiesClassName = 'TcxButtonEditProperties' + Properties.Buttons = < + item + Default = True + Kind = bkEllipsis + end> + Visible = False + Width = 64 + end + object cxGridViewDESCRIPCION: TcxGridDBColumn + DataBinding.FieldName = 'DESCRIPCION' + Width = 257 + end + object cxGridViewREFERENCIAMONTAJE: TcxGridDBColumn + Caption = 'Reservado para' + DataBinding.FieldName = 'REFERENCIAMONTAJE' + Width = 74 + end + object cxGridViewCLIENTE: TcxGridDBColumn + Caption = 'Cliente del montaje' + DataBinding.FieldName = 'CLIENTE' + end + object cxGridViewALMACEN: TcxGridDBColumn + DataBinding.FieldName = 'ALMACEN' + Width = 80 + end + end + object cxGridDBTableView1: TcxGridDBTableView [1] + NavigatorButtons.ConfirmDelete = False + DataController.Summary.DefaultGroupSummaryItems = <> + DataController.Summary.FooterSummaryItems = <> + DataController.Summary.SummaryGroups = <> + OptionsView.NewItemRowInfoText = 'Click here to add a new row' + end + inherited cxGridLevel: TcxGridLevel + Tag = -1 + Caption = 'Todos los almacenes' + end + end + inherited frViewFiltroBase1: TfrViewFiltroBase + inherited TBXDock1: TTBXDock + inherited TBXDockablePanel1: TTBXDockablePanel + inherited dxLayoutControl1: TdxLayoutControl + inherited txtFiltroTodo: TcxTextEdit + Width = 273 + end + inherited edtFechaIniFiltro: TcxDateEdit + Width = 121 + end + inherited edtFechaFinFiltro: TcxDateEdit + Width = 121 + end + inherited dxLayoutControl1Group_Root: TdxLayoutGroup + inherited dxLayoutControl1Group1: TdxLayoutGroup + Visible = False + end + end + end + end + end + end + inherited dxComponentPrinter: TdxComponentPrinter + inherited dxComponentPrinterLink: TdxGridReportLink + ReportDocument.CreationDate = 38673.741107951390000000 + BuiltInReportLink = True + end + end + inherited cxStyleRepository1: TcxStyleRepository + inherited cxStyleEven: TcxStyle + AssignedValues = [svFont] + Font.Name = 'Tahoma' + end + inherited cxStyleOdd: TcxStyle + AssignedValues = [svColor, svFont] + Font.Name = 'Tahoma' + end + inherited cxStyleSelection: TcxStyle + AssignedValues = [svColor, svFont, svTextColor] + Font.Name = 'Tahoma' + end + object cxStyleArticuloReservado: TcxStyle + AssignedValues = [svFont, svTextColor] + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + TextColor = clHighlight + end + end + object PngImageList: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001004944415478DA + 63BC5C22F99F8148A0D3FD8C115D8C1164806A4B0D84F7FD3B03C3FD3B0CB3DB + 3732A42EC614CB5985CF00A8C2E9177D1858B6A5420C4013C36D4075315821C3 + F5AB0CD37F95430C98852986DB80287FB02D300036A012530CA701071E121788 + F8C3002DC072573F67FCFF9F7004E10C449001403967A09A3D78F4BBE00C44A8 + 0160C3D9D9B33074FEFC398D61766C0BEE408419004C3C60C5700072E98FEF0C + D3771882D5E10C44AC0680347F7807A6A79F748618802FA0AE944A210C80697E + 0FC43F7E324CBF194C82011F7A119A3F7C80B8E0552A09063CA8466806BBE03B + 3CB0091A008A85E9CBE5B1CA13638033308071A6030779061700E6FAF742387F + 63F70000000049454E44AE426082} + Name = 'PngImage1' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001A94944415478DA + 8D925D28836114C7FF4FBEE246B9734BBB61B990C89512492925F9B6BB5D0817 + 98968FF21186250AADB69285D2848DB2A5AC854D44CBB7D096C495A4D078278F + BDCF986C5EAF53E7E2391FBF739E7F871C2AE229FE6952F52D098E111E20E969 + F7BF3C1EC07D099DCA04F95468ACCEF017E0B350B35F80F015B91F10141306B4 + 35B1429C1E43C329FD00AD3F962493E22156E2AB04C2C280A8FB0B5C1FD4929F + 808A4236E5CB18A0A51059CD524CE86B7E4C54CD7A611C69C5E3F51009006C57 + A1822D726D181DAF816DDF0B854CC936A03E2F560EB0BC75BA0337CE7E2228A2 + FA7912666D0E4A4B1A71681FF95E396D8B5695A7C2BED00597BD8F088A38F834 + 098B2E0795D58D705A4301DBCBDD38B7F5124111EB5DF3A277417733C9AF2236 + 8CC5E1D894210A48CE1FFE5D447E3A0F303ADEC0BD51B87737E1DAE944427A27 + A21333F1F24AA19F3900380708A5A197CCFF930718D6BDE0BC141BBADC402EB1 + C8020FF70EC3DC9138607A8D631BF0EE9CCA0B34BFF87CC974220ED0995F59F3 + ED9E1177671A44C457213AA98C01ACAB677F034415E44D08C0202943A290C8C8 + 98EC0F53DC14659A0322CE0000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end> + Left = 56 + Top = 48 + Bitmap = {} + end +end diff --git a/Modulos/Articulos/Cliente/uViewArticulosAlmacen.pas b/Modulos/Articulos/Cliente/uViewArticulosAlmacen.pas new file mode 100644 index 0000000..d2dac7a --- /dev/null +++ b/Modulos/Articulos/Cliente/uViewArticulosAlmacen.pas @@ -0,0 +1,213 @@ +unit uViewArticulosAlmacen; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewGrid, uViewPreview, frxClass, frxPreview, cxStyles, + cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, DB, + cxDBData, ActnList, uDADataTable, cxGridLevel, cxClasses, cxControls, + cxGridCustomView, cxGridCustomTableView, cxGridTableView, + cxGridDBTableView, cxGrid, StdCtrls, ExtCtrls, cxLabel, dxPSGlbl, dxPSUtl, + dxPSEngn, dxPrnPg, dxBkgnd, dxWrap, dxPrnDev, dxPSCompsProvider, dxPSFillPatterns, + dxPSEdgePatterns, cxIntlPrintSys3, dxPSCore, dxPScxCommon, dxPScxGridLnk, cxImage, + cxImageComboBox, ImgList, PngImageList, cxTextEdit, Grids, DBGrids, uBizArticulos, + cxDBLookupComboBox, cxButtonEdit, uViewFiltroBase; + +type + IViewArticulosAlmacen = interface(IViewGrid) + ['{DDB60E80-F34F-42D7-AD44-10AEF3068078}'] + function GetArticulosAlmacen: IBizArticulosAlmacen; + procedure SetArticulosAlmacen(const Value: IBizArticulosAlmacen); + property ArticulosAlmacen: IBizArticulosAlmacen read GetArticulosAlmacen write + SetArticulosAlmacen; + end; + + TfrViewArticulosAlmacen = class(TfrViewGrid, IViewArticulosAlmacen) + cxGridDBTableView1: TcxGridDBTableView; + cxGridViewCODIGO: TcxGridDBColumn; + cxGridViewCODIGOALMACEN: TcxGridDBColumn; + cxGridViewDESCRIPCION: TcxGridDBColumn; + cxGridViewCODIGOMONTAJE: TcxGridDBColumn; + cxGridViewCODIGOPEDIDO: TcxGridDBColumn; + PngImageList: TPngImageList; + cxGridViewREFERENCIAMONTAJE: TcxGridDBColumn; + cxGridViewALMACEN: TcxGridDBColumn; + cxGridViewICONO: TcxGridDBColumn; + cxStyleArticuloReservado: TcxStyle; + cxGridViewCLIENTE: TcxGridDBColumn; + procedure SelectionChanged(Sender: TcxCustomGridTableView); override; + procedure cxGridActiveTabChanged(Sender: TcxCustomGrid; ALevel: + TcxGridLevel); + procedure cxGridViewCODIGOCustomDrawCell(Sender: TcxCustomGridTableView; + ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var + ADone: Boolean); + procedure cxGridViewStylesGetContentStyle(Sender: TcxCustomGridTableView; + ARecord: TcxCustomGridRecord; AItem: TcxCustomGridTableItem; out + AStyle: TcxStyle); + + private + //Filtros relativos a la vista + procedure AnadirFiltroAlmacen; + + protected + FNivelFiltrado : TcxFilterCriteriaItemList; + FArticulosAlmacen: IBizArticulosAlmacen; + function GetArticulosAlmacen: IBizArticulosAlmacen; + procedure SetArticulosAlmacen(const Value: IBizArticulosAlmacen); + procedure AnadirOtrosFiltros; override; + + public + property ArticulosAlmacen: IBizArticulosAlmacen read GetArticulosAlmacen write + SetArticulosAlmacen; + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + end; + +var + frViewArticulosAlmacen: TfrViewArticulosAlmacen; + +implementation + +uses uDataModuleArticulos, schArticulosClient_Intf, uDBSelectionList, +uBizAlmacenes, uDataModuleAlmacenes; + +{$R *.dfm} + +constructor TfrViewArticulosAlmacen.Create(AOwner: TComponent); +begin + inherited; + Self.MultiSelection := True; +end; + +procedure TfrViewArticulosAlmacen.cxGridActiveTabChanged(Sender: TcxCustomGrid; ALevel: TcxGridLevel); +begin + inherited; + RefrescarFiltro; +end; + +procedure TfrViewArticulosAlmacen.cxGridViewCODIGOCustomDrawCell(Sender: + TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: + TcxGridTableDataCellViewInfo; var ADone: Boolean); +var + R: TRect; +begin + inherited; + R := AViewInfo.ContentBounds; + ACanvas.FillRect(R); + if Length(AViewInfo.Text) = 0 then + ACanvas.DrawImage(PngImageList, R.Left, R.Top, 0) + else + ACanvas.DrawImage(PngImageList, R.Left, R.Top, 1); + ADone := True; +end; + +procedure TfrViewArticulosAlmacen.cxGridViewStylesGetContentStyle(Sender: + TcxCustomGridTableView; ARecord: TcxCustomGridRecord; AItem: + TcxCustomGridTableItem; out AStyle: TcxStyle); +var + IndiceCol: Integer; + AMontaje: string; +begin + inherited; + if Assigned(ARecord) then + begin + IndiceCol := (Sender as TcxGridDBTableView).GetColumnByFieldName(fld_ARTICULOSREFERENCIAMONTAJE).Index; + AMontaje := VarToStr(ARecord.DisplayTexts[IndiceCol]); + if (Length(AMontaje) > 0) then + AStyle := cxStyleArticuloReservado; + end; +end; + +destructor TfrViewArticulosAlmacen.Destroy; +begin + inherited; +end; + +function TfrViewArticulosAlmacen.GetArticulosAlmacen: IBizArticulosAlmacen; +begin + Result := FArticulosAlmacen; +end; + +procedure TfrViewArticulosAlmacen.SetArticulosAlmacen(const Value: IBizArticulosAlmacen); +var + Nivel: TcxGridLevel; + i: Integer; + AAlmacenes: IBizAlmacen; + +begin + FArticulosAlmacen := Value; + if Assigned(FArticulosAlmacen) then + begin + DADataSource.DataTable := FArticulosAlmacen.DataTable; + + try + AAlmacenes := dmAlmacenes.GetItems; + AAlmacenes.DataTable.Active := True; + AAlmacenes.First; + while not AAlmacenes.EOF do + begin + Nivel := cxGrid.Levels.Add; + Nivel.Caption := AAlmacenes.NOMBRE; + Nivel.Tag := AAlmacenes.CODIGO; + AAlmacenes.Next; + end; + finally + AAlmacenes := Nil; + end; + end; +end; + +procedure TfrViewArticulosAlmacen.SelectionChanged(Sender: TcxCustomGridTableView); +var + ABookmark : Pointer; + i, pos: Integer; + +begin + inherited; + + pos := (Sender as TcxGridDBTableView).GetColumnByFieldName('CODIGO').Index; + if FArticulosAlmacen <> NIL then + begin + FArticulosAlmacen.DataTable.DisableControls; + ABookmark := FArticulosAlmacen.DataTable.GetBookMark; + (FArticulosAlmacen as ISelectedRowList).SelectedRows.Clear; + for i:=0 to Sender.Controller.SelectedRecordCount-1 do + begin + FArticulosAlmacen.DataTable.Locate('CODIGO', Sender.Controller.SelectedRecords[i].Values[pos],[]); + (FArticulosAlmacen as ISelectedRowList).SelectedRows.CurrentRowSelected := True; + end; + (FArticulosAlmacen as ISelectedRowList).SelectedRows.Count; + FArticulosAlmacen.DataTable.GotoBookmark(ABookmark); + FArticulosAlmacen.DataTable.FreeBookmark(ABookmark); + FArticulosAlmacen.DataTable.EnableControls; + end; +end; + +procedure TfrViewArticulosAlmacen.AnadirFiltroAlmacen; +var + CodigoAlmacen: String; + FFiltro : TcxFilterCriteriaItemList; +begin + cxGridView.DataController.Filter.Options := [fcoCaseInsensitive, fcoSoftCompare]; + FFiltro := AddFilterGrid(fboAnd); + + CodigoAlmacen := IntToStr(cxGrid.Levels.Items[cxGrid.ActiveLevel.Index].Tag); + if CodigoAlmacen <> '-1' then + FFiltro.AddItem(cxGridViewCODIGOALMACEN, foEqual, CodigoAlmacen, CodigoAlmacen); +end; + +procedure TfrViewArticulosAlmacen.AnadirOtrosFiltros; +begin + inherited; + + AnadirFiltroAlmacen; + + //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; + +end. diff --git a/Modulos/Articulos/Cliente/uViewDatosPedido.ddp b/Modulos/Articulos/Cliente/uViewDatosPedido.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Articulos/Cliente/uViewDatosPedido.ddp differ diff --git a/Modulos/Articulos/Cliente/uViewListaArticulos.ddp b/Modulos/Articulos/Cliente/uViewListaArticulos.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Articulos/Cliente/uViewListaArticulos.ddp differ diff --git a/Modulos/Articulos/Cliente/uViewListaArticulos.dfm b/Modulos/Articulos/Cliente/uViewListaArticulos.dfm new file mode 100644 index 0000000..ee1d986 --- /dev/null +++ b/Modulos/Articulos/Cliente/uViewListaArticulos.dfm @@ -0,0 +1,60 @@ +inherited frViewListaArticulos: TfrViewListaArticulos + inherited cxGrid: TcxGrid + inherited cxGridView: TcxGridDBTableView + DataController.Options = [dcoAnsiSort, dcoAssignGroupingValues, dcoAssignMasterDetailKeys, dcoSaveExpanding, dcoSortByDisplayText, dcoFocusTopRowAfterSorting, dcoImmediatePost] + object cxGridViewRecID: TcxGridDBColumn + DataBinding.FieldName = 'RecID' + Visible = False + end + object cxGridViewCODIGO: TcxGridDBColumn + DataBinding.FieldName = 'CODIGO' + Visible = False + end + object cxGridViewCODIGOALMACEN: TcxGridDBColumn + Caption = 'Almac'#233'n destino' + DataBinding.FieldName = 'CODIGOALMACEN' + PropertiesClassName = 'TcxLookupComboBoxProperties' + Properties.ImmediatePost = True + Properties.KeyFieldNames = 'CODIGO' + Properties.ListColumns = < + item + SortOrder = soAscending + FieldName = 'NOMBRE' + end> + Properties.ListOptions.AnsiSort = True + Properties.ListOptions.ShowHeader = False + Properties.ListSource = DADataSourceAlmacenes + Width = 225 + end + object cxGridViewCODIGOMONTAJE: TcxGridDBColumn + DataBinding.FieldName = 'CODIGOMONTAJE' + Visible = False + end + object cxGridViewREFERENCIAMONTAJE: TcxGridDBColumn + DataBinding.FieldName = 'REFERENCIAMONTAJE' + Visible = False + end + object cxGridViewDESCRIPCION: TcxGridDBColumn + DataBinding.FieldName = 'DESCRIPCION' + end + object cxGridViewCANTIDAD: TcxGridDBColumn + DataBinding.FieldName = 'CANTIDAD' + HeaderAlignmentHorz = taRightJustify + Width = 200 + end + end + end + inherited ActionListContenido: TActionList + inherited actSubir: TAction + Visible = False + end + inherited actBajar: TAction + Visible = False + end + end + object DADataSourceAlmacenes: TDADataSource + DataTable = dmPresupuestos.tbl_DetallesPresupuestos + Left = 8 + Top = 208 + end +end diff --git a/Modulos/Articulos/Cliente/uViewListaArticulos.pas b/Modulos/Articulos/Cliente/uViewListaArticulos.pas new file mode 100644 index 0000000..49a0cf8 --- /dev/null +++ b/Modulos/Articulos/Cliente/uViewListaArticulos.pas @@ -0,0 +1,62 @@ +unit uViewListaArticulos; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewContenido, cxStyles, cxCustomData, cxGraphics, cxFilter, + cxData, cxDataStorage, cxEdit, DB, cxDBData, ImgList, PngImageList, + uDADataTable, ActnList, ComCtrls, ToolWin, cxGridLevel, cxClasses, + cxControls, cxGridCustomView, cxGridCustomTableView, cxGridTableView, + cxGridDBTableView, cxGrid, cxDBLookupComboBox, uBizArticulos, uBizAlmacenes, + uViewDetallesNormales, StdCtrls; + +type + TfrViewListaArticulos = class(TfrViewDetallesNormales) + cxGridViewRecID: TcxGridDBColumn; + cxGridViewCODIGO: TcxGridDBColumn; + cxGridViewCODIGOALMACEN: TcxGridDBColumn; + cxGridViewCODIGOMONTAJE: TcxGridDBColumn; + cxGridViewDESCRIPCION: TcxGridDBColumn; + DADataSourceAlmacenes: TDADataSource; + cxGridViewCANTIDAD: TcxGridDBColumn; + cxGridViewREFERENCIAMONTAJE: TcxGridDBColumn; + private + FAlmacenes: IBizAlmacen; + function getAlmacenes: IBizAlmacen; + public + property Almacenes: IBizAlmacen read getAlmacenes; + constructor Create(AOwner : TComponent); override; + destructor destroy; override; + end; + +var + frViewListaArticulos: TfrViewListaArticulos; + +implementation + +uses uDataModuleArticulos, uDataModuleAlmacenes; +{$R *.dfm} + +{ TfrViewListaArticulos } + +constructor TfrViewListaArticulos.Create(AOwner: TComponent); +begin + inherited; + FAlmacenes := dmAlmacenes.GetItems; + DADataSourceAlmacenes.DataTable := FAlmacenes.DataTable; + DADataSourceAlmacenes.DataTable.Active := True; +end; + +destructor TfrViewListaArticulos.destroy; +begin + FAlmacenes := Nil; + inherited; +end; + +function TfrViewListaArticulos.getAlmacenes: IBizAlmacen; +begin + Result := FAlmacenes; +end; + +end. diff --git a/Modulos/Articulos/Reglas/schArticulosClient_Intf.pas b/Modulos/Articulos/Reglas/schArticulosClient_Intf.pas new file mode 100644 index 0000000..372529f --- /dev/null +++ b/Modulos/Articulos/Reglas/schArticulosClient_Intf.pas @@ -0,0 +1,484 @@ +unit schArticulosClient_Intf; + +interface + +uses + Classes, DB, SysUtils, uROClasses, uDADataTable; + +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_ARTICULOS = '{5E5E80E8-DDC5-4E93-9501-219E5E37B69F}'; + RID_Refresh_ARTICULOS = '{666A9B90-4226-4465-AFB7-F86AE114FB72}'; + + { Data table names } + nme_ARTICULOS = 'ARTICULOS'; + nme_Refresh_ARTICULOS = 'Refresh_ARTICULOS'; + + { ARTICULOS fields } + fld_ARTICULOSCODIGO = 'CODIGO'; + fld_ARTICULOSCODIGOALMACEN = 'CODIGOALMACEN'; + fld_ARTICULOSCODIGOPEDIDO = 'CODIGOPEDIDO'; + fld_ARTICULOSCANTIDAD = 'CANTIDAD'; + fld_ARTICULOSCODIGOMONTAJE = 'CODIGOMONTAJE'; + fld_ARTICULOSDESCRIPCION = 'DESCRIPCION'; + fld_ARTICULOSREFERENCIAPEDIDO = 'REFERENCIAPEDIDO'; + fld_ARTICULOSREFERENCIAMONTAJE = 'REFERENCIAMONTAJE'; + fld_ARTICULOSCLIENTE = 'CLIENTE'; + fld_ARTICULOSALMACEN = 'ALMACEN'; + fld_ARTICULOSSITUACION = 'SITUACION'; + + { ARTICULOS field indexes } + idx_ARTICULOSCODIGO = 0; + idx_ARTICULOSCODIGOALMACEN = 1; + idx_ARTICULOSCODIGOPEDIDO = 2; + idx_ARTICULOSCANTIDAD = 3; + idx_ARTICULOSCODIGOMONTAJE = 4; + idx_ARTICULOSDESCRIPCION = 5; + idx_ARTICULOSREFERENCIAPEDIDO = 6; + idx_ARTICULOSREFERENCIAMONTAJE = 7; + idx_ARTICULOSCLIENTE = 8; + idx_ARTICULOSALMACEN = 9; + idx_ARTICULOSSITUACION = 10; + + { Refresh_ARTICULOS fields } + fld_Refresh_ARTICULOSCODIGO = 'CODIGO'; + fld_Refresh_ARTICULOSCODIGOALMACEN = 'CODIGOALMACEN'; + fld_Refresh_ARTICULOSCODIGOPEDIDO = 'CODIGOPEDIDO'; + fld_Refresh_ARTICULOSCODIGOMONTAJE = 'CODIGOMONTAJE'; + fld_Refresh_ARTICULOSDESCRIPCION = 'DESCRIPCION'; + fld_Refresh_ARTICULOSREFERENCIAPEDIDO = 'REFERENCIAPEDIDO'; + fld_Refresh_ARTICULOSREFERENCIAMONTAJE = 'REFERENCIAMONTAJE'; + fld_Refresh_ARTICULOSCLIENTE = 'CLIENTE'; + fld_Refresh_ARTICULOSALMACEN = 'ALMACEN'; + fld_Refresh_ARTICULOSSITUACION = 'SITUACION'; + + { Refresh_ARTICULOS field indexes } + idx_Refresh_ARTICULOSCODIGO = 0; + idx_Refresh_ARTICULOSCODIGOALMACEN = 1; + idx_Refresh_ARTICULOSCODIGOPEDIDO = 2; + idx_Refresh_ARTICULOSCODIGOMONTAJE = 3; + idx_Refresh_ARTICULOSDESCRIPCION = 4; + idx_Refresh_ARTICULOSREFERENCIAPEDIDO = 5; + idx_Refresh_ARTICULOSREFERENCIAMONTAJE = 6; + idx_Refresh_ARTICULOSCLIENTE = 7; + idx_Refresh_ARTICULOSALMACEN = 8; + idx_Refresh_ARTICULOSSITUACION = 9; + +type + { IARTICULOS } + IARTICULOS = interface(IDAStronglyTypedDataTable) + ['{26AD3DE8-2AF7-4110-B0C7-4894B1913FFE}'] + { Property getters and setters } + function GetCODIGOValue: Integer; + procedure SetCODIGOValue(const aValue: Integer); + function GetCODIGOALMACENValue: Integer; + procedure SetCODIGOALMACENValue(const aValue: Integer); + function GetCODIGOPEDIDOValue: Integer; + procedure SetCODIGOPEDIDOValue(const aValue: Integer); + function GetCANTIDADValue: Integer; + procedure SetCANTIDADValue(const aValue: Integer); + function GetCODIGOMONTAJEValue: Integer; + procedure SetCODIGOMONTAJEValue(const aValue: Integer); + function GetDESCRIPCIONValue: String; + procedure SetDESCRIPCIONValue(const aValue: String); + function GetREFERENCIAPEDIDOValue: String; + procedure SetREFERENCIAPEDIDOValue(const aValue: String); + function GetREFERENCIAMONTAJEValue: String; + procedure SetREFERENCIAMONTAJEValue(const aValue: String); + function GetCLIENTEValue: String; + procedure SetCLIENTEValue(const aValue: String); + function GetALMACENValue: String; + procedure SetALMACENValue(const aValue: String); + function GetSITUACIONValue: String; + procedure SetSITUACIONValue(const aValue: String); + + + { Properties } + property CODIGO: Integer read GetCODIGOValue write SetCODIGOValue; + property CODIGOALMACEN: Integer read GetCODIGOALMACENValue write SetCODIGOALMACENValue; + property CODIGOPEDIDO: Integer read GetCODIGOPEDIDOValue write SetCODIGOPEDIDOValue; + property CANTIDAD: Integer read GetCANTIDADValue write SetCANTIDADValue; + property CODIGOMONTAJE: Integer read GetCODIGOMONTAJEValue write SetCODIGOMONTAJEValue; + property DESCRIPCION: String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + property REFERENCIAPEDIDO: String read GetREFERENCIAPEDIDOValue write SetREFERENCIAPEDIDOValue; + property REFERENCIAMONTAJE: String read GetREFERENCIAMONTAJEValue write SetREFERENCIAMONTAJEValue; + property CLIENTE: String read GetCLIENTEValue write SetCLIENTEValue; + property ALMACEN: String read GetALMACENValue write SetALMACENValue; + property SITUACION: String read GetSITUACIONValue write SetSITUACIONValue; + end; + + { TARTICULOSDataTableRules } + TARTICULOSDataTableRules = class(TDADataTableRules, IARTICULOS) + private + protected + { Property getters and setters } + function GetCODIGOValue: Integer; virtual; + procedure SetCODIGOValue(const aValue: Integer); virtual; + function GetCODIGOALMACENValue: Integer; virtual; + procedure SetCODIGOALMACENValue(const aValue: Integer); virtual; + function GetCODIGOPEDIDOValue: Integer; virtual; + procedure SetCODIGOPEDIDOValue(const aValue: Integer); virtual; + function GetCANTIDADValue: Integer; virtual; + procedure SetCANTIDADValue(const aValue: Integer); virtual; + function GetCODIGOMONTAJEValue: Integer; virtual; + procedure SetCODIGOMONTAJEValue(const aValue: Integer); virtual; + function GetDESCRIPCIONValue: String; virtual; + procedure SetDESCRIPCIONValue(const aValue: String); virtual; + function GetREFERENCIAPEDIDOValue: String; virtual; + procedure SetREFERENCIAPEDIDOValue(const aValue: String); virtual; + function GetREFERENCIAMONTAJEValue: String; virtual; + procedure SetREFERENCIAMONTAJEValue(const aValue: String); virtual; + function GetCLIENTEValue: String; virtual; + procedure SetCLIENTEValue(const aValue: String); virtual; + function GetALMACENValue: String; virtual; + procedure SetALMACENValue(const aValue: String); virtual; + function GetSITUACIONValue: String; virtual; + procedure SetSITUACIONValue(const aValue: String); virtual; + + { Properties } + property CODIGO: Integer read GetCODIGOValue write SetCODIGOValue; + property CODIGOALMACEN: Integer read GetCODIGOALMACENValue write SetCODIGOALMACENValue; + property CODIGOPEDIDO: Integer read GetCODIGOPEDIDOValue write SetCODIGOPEDIDOValue; + property CANTIDAD: Integer read GetCANTIDADValue write SetCANTIDADValue; + property CODIGOMONTAJE: Integer read GetCODIGOMONTAJEValue write SetCODIGOMONTAJEValue; + property DESCRIPCION: String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + property REFERENCIAPEDIDO: String read GetREFERENCIAPEDIDOValue write SetREFERENCIAPEDIDOValue; + property REFERENCIAMONTAJE: String read GetREFERENCIAMONTAJEValue write SetREFERENCIAMONTAJEValue; + property CLIENTE: String read GetCLIENTEValue write SetCLIENTEValue; + property ALMACEN: String read GetALMACENValue write SetALMACENValue; + property SITUACION: String read GetSITUACIONValue write SetSITUACIONValue; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + + { IRefresh_ARTICULOS } + IRefresh_ARTICULOS = interface(IDAStronglyTypedDataTable) + ['{4A2E068E-6FE3-4536-AAE0-D24663E16D56}'] + { Property getters and setters } + function GetCODIGOValue: Integer; + procedure SetCODIGOValue(const aValue: Integer); + function GetCODIGOALMACENValue: Integer; + procedure SetCODIGOALMACENValue(const aValue: Integer); + function GetCODIGOPEDIDOValue: Integer; + procedure SetCODIGOPEDIDOValue(const aValue: Integer); + function GetCODIGOMONTAJEValue: Integer; + procedure SetCODIGOMONTAJEValue(const aValue: Integer); + function GetDESCRIPCIONValue: String; + procedure SetDESCRIPCIONValue(const aValue: String); + function GetREFERENCIAPEDIDOValue: String; + procedure SetREFERENCIAPEDIDOValue(const aValue: String); + function GetREFERENCIAMONTAJEValue: String; + procedure SetREFERENCIAMONTAJEValue(const aValue: String); + function GetCLIENTEValue: String; + procedure SetCLIENTEValue(const aValue: String); + function GetALMACENValue: String; + procedure SetALMACENValue(const aValue: String); + function GetSITUACIONValue: String; + procedure SetSITUACIONValue(const aValue: String); + + + { Properties } + property CODIGO: Integer read GetCODIGOValue write SetCODIGOValue; + property CODIGOALMACEN: Integer read GetCODIGOALMACENValue write SetCODIGOALMACENValue; + property CODIGOPEDIDO: Integer read GetCODIGOPEDIDOValue write SetCODIGOPEDIDOValue; + property CODIGOMONTAJE: Integer read GetCODIGOMONTAJEValue write SetCODIGOMONTAJEValue; + property DESCRIPCION: String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + property REFERENCIAPEDIDO: String read GetREFERENCIAPEDIDOValue write SetREFERENCIAPEDIDOValue; + property REFERENCIAMONTAJE: String read GetREFERENCIAMONTAJEValue write SetREFERENCIAMONTAJEValue; + property CLIENTE: String read GetCLIENTEValue write SetCLIENTEValue; + property ALMACEN: String read GetALMACENValue write SetALMACENValue; + property SITUACION: String read GetSITUACIONValue write SetSITUACIONValue; + end; + + { TRefresh_ARTICULOSDataTableRules } + TRefresh_ARTICULOSDataTableRules = class(TDADataTableRules, IRefresh_ARTICULOS) + private + protected + { Property getters and setters } + function GetCODIGOValue: Integer; virtual; + procedure SetCODIGOValue(const aValue: Integer); virtual; + function GetCODIGOALMACENValue: Integer; virtual; + procedure SetCODIGOALMACENValue(const aValue: Integer); virtual; + function GetCODIGOPEDIDOValue: Integer; virtual; + procedure SetCODIGOPEDIDOValue(const aValue: Integer); virtual; + function GetCODIGOMONTAJEValue: Integer; virtual; + procedure SetCODIGOMONTAJEValue(const aValue: Integer); virtual; + function GetDESCRIPCIONValue: String; virtual; + procedure SetDESCRIPCIONValue(const aValue: String); virtual; + function GetREFERENCIAPEDIDOValue: String; virtual; + procedure SetREFERENCIAPEDIDOValue(const aValue: String); virtual; + function GetREFERENCIAMONTAJEValue: String; virtual; + procedure SetREFERENCIAMONTAJEValue(const aValue: String); virtual; + function GetCLIENTEValue: String; virtual; + procedure SetCLIENTEValue(const aValue: String); virtual; + function GetALMACENValue: String; virtual; + procedure SetALMACENValue(const aValue: String); virtual; + function GetSITUACIONValue: String; virtual; + procedure SetSITUACIONValue(const aValue: String); virtual; + + { Properties } + property CODIGO: Integer read GetCODIGOValue write SetCODIGOValue; + property CODIGOALMACEN: Integer read GetCODIGOALMACENValue write SetCODIGOALMACENValue; + property CODIGOPEDIDO: Integer read GetCODIGOPEDIDOValue write SetCODIGOPEDIDOValue; + property CODIGOMONTAJE: Integer read GetCODIGOMONTAJEValue write SetCODIGOMONTAJEValue; + property DESCRIPCION: String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + property REFERENCIAPEDIDO: String read GetREFERENCIAPEDIDOValue write SetREFERENCIAPEDIDOValue; + property REFERENCIAMONTAJE: String read GetREFERENCIAMONTAJEValue write SetREFERENCIAMONTAJEValue; + property CLIENTE: String read GetCLIENTEValue write SetCLIENTEValue; + property ALMACEN: String read GetALMACENValue write SetALMACENValue; + property SITUACION: String read GetSITUACIONValue write SetSITUACIONValue; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + +implementation + +uses Variants; + +{ TARTICULOSDataTableRules } +constructor TARTICULOSDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TARTICULOSDataTableRules.Destroy; +begin + inherited; +end; + +function TARTICULOSDataTableRules.GetCODIGOValue: Integer; +begin + result := DataTable.Fields[idx_ARTICULOSCODIGO].AsInteger; +end; + +procedure TARTICULOSDataTableRules.SetCODIGOValue(const aValue: Integer); +begin + DataTable.Fields[idx_ARTICULOSCODIGO].AsInteger := aValue; +end; + +function TARTICULOSDataTableRules.GetCODIGOALMACENValue: Integer; +begin + result := DataTable.Fields[idx_ARTICULOSCODIGOALMACEN].AsInteger; +end; + +procedure TARTICULOSDataTableRules.SetCODIGOALMACENValue(const aValue: Integer); +begin + DataTable.Fields[idx_ARTICULOSCODIGOALMACEN].AsInteger := aValue; +end; + +function TARTICULOSDataTableRules.GetCODIGOPEDIDOValue: Integer; +begin + result := DataTable.Fields[idx_ARTICULOSCODIGOPEDIDO].AsInteger; +end; + +procedure TARTICULOSDataTableRules.SetCODIGOPEDIDOValue(const aValue: Integer); +begin + DataTable.Fields[idx_ARTICULOSCODIGOPEDIDO].AsInteger := aValue; +end; + +function TARTICULOSDataTableRules.GetCANTIDADValue: Integer; +begin + result := DataTable.Fields[idx_ARTICULOSCANTIDAD].AsInteger; +end; + +procedure TARTICULOSDataTableRules.SetCANTIDADValue(const aValue: Integer); +begin + DataTable.Fields[idx_ARTICULOSCANTIDAD].AsInteger := aValue; +end; + +function TARTICULOSDataTableRules.GetCODIGOMONTAJEValue: Integer; +begin + result := DataTable.Fields[idx_ARTICULOSCODIGOMONTAJE].AsInteger; +end; + +procedure TARTICULOSDataTableRules.SetCODIGOMONTAJEValue(const aValue: Integer); +begin + DataTable.Fields[idx_ARTICULOSCODIGOMONTAJE].AsInteger := aValue; +end; + +function TARTICULOSDataTableRules.GetDESCRIPCIONValue: String; +begin + result := DataTable.Fields[idx_ARTICULOSDESCRIPCION].AsString; +end; + +procedure TARTICULOSDataTableRules.SetDESCRIPCIONValue(const aValue: String); +begin + DataTable.Fields[idx_ARTICULOSDESCRIPCION].AsString := aValue; +end; + +function TARTICULOSDataTableRules.GetREFERENCIAPEDIDOValue: String; +begin + result := DataTable.Fields[idx_ARTICULOSREFERENCIAPEDIDO].AsString; +end; + +procedure TARTICULOSDataTableRules.SetREFERENCIAPEDIDOValue(const aValue: String); +begin + DataTable.Fields[idx_ARTICULOSREFERENCIAPEDIDO].AsString := aValue; +end; + +function TARTICULOSDataTableRules.GetREFERENCIAMONTAJEValue: String; +begin + result := DataTable.Fields[idx_ARTICULOSREFERENCIAMONTAJE].AsString; +end; + +procedure TARTICULOSDataTableRules.SetREFERENCIAMONTAJEValue(const aValue: String); +begin + DataTable.Fields[idx_ARTICULOSREFERENCIAMONTAJE].AsString := aValue; +end; + +function TARTICULOSDataTableRules.GetCLIENTEValue: String; +begin + result := DataTable.Fields[idx_ARTICULOSCLIENTE].AsString; +end; + +procedure TARTICULOSDataTableRules.SetCLIENTEValue(const aValue: String); +begin + DataTable.Fields[idx_ARTICULOSCLIENTE].AsString := aValue; +end; + +function TARTICULOSDataTableRules.GetALMACENValue: String; +begin + result := DataTable.Fields[idx_ARTICULOSALMACEN].AsString; +end; + +procedure TARTICULOSDataTableRules.SetALMACENValue(const aValue: String); +begin + DataTable.Fields[idx_ARTICULOSALMACEN].AsString := aValue; +end; + +function TARTICULOSDataTableRules.GetSITUACIONValue: String; +begin + result := DataTable.Fields[idx_ARTICULOSSITUACION].AsString; +end; + +procedure TARTICULOSDataTableRules.SetSITUACIONValue(const aValue: String); +begin + DataTable.Fields[idx_ARTICULOSSITUACION].AsString := aValue; +end; + + +{ TRefresh_ARTICULOSDataTableRules } +constructor TRefresh_ARTICULOSDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TRefresh_ARTICULOSDataTableRules.Destroy; +begin + inherited; +end; + +function TRefresh_ARTICULOSDataTableRules.GetCODIGOValue: Integer; +begin + result := DataTable.Fields[idx_Refresh_ARTICULOSCODIGO].AsInteger; +end; + +procedure TRefresh_ARTICULOSDataTableRules.SetCODIGOValue(const aValue: Integer); +begin + DataTable.Fields[idx_Refresh_ARTICULOSCODIGO].AsInteger := aValue; +end; + +function TRefresh_ARTICULOSDataTableRules.GetCODIGOALMACENValue: Integer; +begin + result := DataTable.Fields[idx_Refresh_ARTICULOSCODIGOALMACEN].AsInteger; +end; + +procedure TRefresh_ARTICULOSDataTableRules.SetCODIGOALMACENValue(const aValue: Integer); +begin + DataTable.Fields[idx_Refresh_ARTICULOSCODIGOALMACEN].AsInteger := aValue; +end; + +function TRefresh_ARTICULOSDataTableRules.GetCODIGOPEDIDOValue: Integer; +begin + result := DataTable.Fields[idx_Refresh_ARTICULOSCODIGOPEDIDO].AsInteger; +end; + +procedure TRefresh_ARTICULOSDataTableRules.SetCODIGOPEDIDOValue(const aValue: Integer); +begin + DataTable.Fields[idx_Refresh_ARTICULOSCODIGOPEDIDO].AsInteger := aValue; +end; + +function TRefresh_ARTICULOSDataTableRules.GetCODIGOMONTAJEValue: Integer; +begin + result := DataTable.Fields[idx_Refresh_ARTICULOSCODIGOMONTAJE].AsInteger; +end; + +procedure TRefresh_ARTICULOSDataTableRules.SetCODIGOMONTAJEValue(const aValue: Integer); +begin + DataTable.Fields[idx_Refresh_ARTICULOSCODIGOMONTAJE].AsInteger := aValue; +end; + +function TRefresh_ARTICULOSDataTableRules.GetDESCRIPCIONValue: String; +begin + result := DataTable.Fields[idx_Refresh_ARTICULOSDESCRIPCION].AsString; +end; + +procedure TRefresh_ARTICULOSDataTableRules.SetDESCRIPCIONValue(const aValue: String); +begin + DataTable.Fields[idx_Refresh_ARTICULOSDESCRIPCION].AsString := aValue; +end; + +function TRefresh_ARTICULOSDataTableRules.GetREFERENCIAPEDIDOValue: String; +begin + result := DataTable.Fields[idx_Refresh_ARTICULOSREFERENCIAPEDIDO].AsString; +end; + +procedure TRefresh_ARTICULOSDataTableRules.SetREFERENCIAPEDIDOValue(const aValue: String); +begin + DataTable.Fields[idx_Refresh_ARTICULOSREFERENCIAPEDIDO].AsString := aValue; +end; + +function TRefresh_ARTICULOSDataTableRules.GetREFERENCIAMONTAJEValue: String; +begin + result := DataTable.Fields[idx_Refresh_ARTICULOSREFERENCIAMONTAJE].AsString; +end; + +procedure TRefresh_ARTICULOSDataTableRules.SetREFERENCIAMONTAJEValue(const aValue: String); +begin + DataTable.Fields[idx_Refresh_ARTICULOSREFERENCIAMONTAJE].AsString := aValue; +end; + +function TRefresh_ARTICULOSDataTableRules.GetCLIENTEValue: String; +begin + result := DataTable.Fields[idx_Refresh_ARTICULOSCLIENTE].AsString; +end; + +procedure TRefresh_ARTICULOSDataTableRules.SetCLIENTEValue(const aValue: String); +begin + DataTable.Fields[idx_Refresh_ARTICULOSCLIENTE].AsString := aValue; +end; + +function TRefresh_ARTICULOSDataTableRules.GetALMACENValue: String; +begin + result := DataTable.Fields[idx_Refresh_ARTICULOSALMACEN].AsString; +end; + +procedure TRefresh_ARTICULOSDataTableRules.SetALMACENValue(const aValue: String); +begin + DataTable.Fields[idx_Refresh_ARTICULOSALMACEN].AsString := aValue; +end; + +function TRefresh_ARTICULOSDataTableRules.GetSITUACIONValue: String; +begin + result := DataTable.Fields[idx_Refresh_ARTICULOSSITUACION].AsString; +end; + +procedure TRefresh_ARTICULOSDataTableRules.SetSITUACIONValue(const aValue: String); +begin + DataTable.Fields[idx_Refresh_ARTICULOSSITUACION].AsString := aValue; +end; + + +initialization + RegisterDataTableRules(RID_ARTICULOS, TARTICULOSDataTableRules); + RegisterDataTableRules(RID_Refresh_ARTICULOS, TRefresh_ARTICULOSDataTableRules); + +end. diff --git a/Modulos/Articulos/Reglas/schArticulosServer_Intf.pas b/Modulos/Articulos/Reglas/schArticulosServer_Intf.pas new file mode 100644 index 0000000..24d3376 --- /dev/null +++ b/Modulos/Articulos/Reglas/schArticulosServer_Intf.pas @@ -0,0 +1,555 @@ +unit schArticulosServer_Intf; + +interface + +uses + Classes, DB, SysUtils, uROClasses, uDADataTable, uDABusinessProcessor, schArticulosClient_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_ARTICULOSDelta = '{C8AB35D3-820C-4756-B58D-5F78434DFB33}'; + RID_Refresh_ARTICULOSDelta = '{01037450-9D82-4996-8DC2-9A3BECB84B04}'; + +type + { IARTICULOSDelta } + IARTICULOSDelta = interface(IARTICULOS) + ['{C8AB35D3-820C-4756-B58D-5F78434DFB33}'] + { Property getters and setters } + function GetOldCODIGOValue : Integer; + function GetOldCODIGOALMACENValue : Integer; + function GetOldCODIGOPEDIDOValue : Integer; + function GetOldCANTIDADValue : Integer; + function GetOldCODIGOMONTAJEValue : Integer; + function GetOldDESCRIPCIONValue : String; + function GetOldREFERENCIAPEDIDOValue : String; + function GetOldREFERENCIAMONTAJEValue : String; + function GetOldCLIENTEValue : String; + function GetOldALMACENValue : String; + function GetOldSITUACIONValue : String; + + { Properties } + property OldCODIGO : Integer read GetOldCODIGOValue; + property OldCODIGOALMACEN : Integer read GetOldCODIGOALMACENValue; + property OldCODIGOPEDIDO : Integer read GetOldCODIGOPEDIDOValue; + property OldCANTIDAD : Integer read GetOldCANTIDADValue; + property OldCODIGOMONTAJE : Integer read GetOldCODIGOMONTAJEValue; + property OldDESCRIPCION : String read GetOldDESCRIPCIONValue; + property OldREFERENCIAPEDIDO : String read GetOldREFERENCIAPEDIDOValue; + property OldREFERENCIAMONTAJE : String read GetOldREFERENCIAMONTAJEValue; + property OldCLIENTE : String read GetOldCLIENTEValue; + property OldALMACEN : String read GetOldALMACENValue; + property OldSITUACION : String read GetOldSITUACIONValue; + end; + + { TARTICULOSBusinessProcessorRules } + TARTICULOSBusinessProcessorRules = class(TDABusinessProcessorRules, IARTICULOS, IARTICULOSDelta) + private + protected + { Property getters and setters } + function GetCODIGOValue: Integer; virtual; + function GetOldCODIGOValue: Integer; virtual; + procedure SetCODIGOValue(const aValue: Integer); virtual; + function GetCODIGOALMACENValue: Integer; virtual; + function GetOldCODIGOALMACENValue: Integer; virtual; + procedure SetCODIGOALMACENValue(const aValue: Integer); virtual; + function GetCODIGOPEDIDOValue: Integer; virtual; + function GetOldCODIGOPEDIDOValue: Integer; virtual; + procedure SetCODIGOPEDIDOValue(const aValue: Integer); virtual; + function GetCANTIDADValue: Integer; virtual; + function GetOldCANTIDADValue: Integer; virtual; + procedure SetCANTIDADValue(const aValue: Integer); virtual; + function GetCODIGOMONTAJEValue: Integer; virtual; + function GetOldCODIGOMONTAJEValue: Integer; virtual; + procedure SetCODIGOMONTAJEValue(const aValue: Integer); virtual; + function GetDESCRIPCIONValue: String; virtual; + function GetOldDESCRIPCIONValue: String; virtual; + procedure SetDESCRIPCIONValue(const aValue: String); virtual; + function GetREFERENCIAPEDIDOValue: String; virtual; + function GetOldREFERENCIAPEDIDOValue: String; virtual; + procedure SetREFERENCIAPEDIDOValue(const aValue: String); virtual; + function GetREFERENCIAMONTAJEValue: String; virtual; + function GetOldREFERENCIAMONTAJEValue: String; virtual; + procedure SetREFERENCIAMONTAJEValue(const aValue: String); virtual; + function GetCLIENTEValue: String; virtual; + function GetOldCLIENTEValue: String; virtual; + procedure SetCLIENTEValue(const aValue: String); virtual; + function GetALMACENValue: String; virtual; + function GetOldALMACENValue: String; virtual; + procedure SetALMACENValue(const aValue: String); virtual; + function GetSITUACIONValue: String; virtual; + function GetOldSITUACIONValue: String; virtual; + procedure SetSITUACIONValue(const aValue: String); virtual; + + { Properties } + property CODIGO : Integer read GetCODIGOValue write SetCODIGOValue; + property OldCODIGO : Integer read GetOldCODIGOValue; + property CODIGOALMACEN : Integer read GetCODIGOALMACENValue write SetCODIGOALMACENValue; + property OldCODIGOALMACEN : Integer read GetOldCODIGOALMACENValue; + property CODIGOPEDIDO : Integer read GetCODIGOPEDIDOValue write SetCODIGOPEDIDOValue; + property OldCODIGOPEDIDO : Integer read GetOldCODIGOPEDIDOValue; + property CANTIDAD : Integer read GetCANTIDADValue write SetCANTIDADValue; + property OldCANTIDAD : Integer read GetOldCANTIDADValue; + property CODIGOMONTAJE : Integer read GetCODIGOMONTAJEValue write SetCODIGOMONTAJEValue; + property OldCODIGOMONTAJE : Integer read GetOldCODIGOMONTAJEValue; + property DESCRIPCION : String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + property OldDESCRIPCION : String read GetOldDESCRIPCIONValue; + property REFERENCIAPEDIDO : String read GetREFERENCIAPEDIDOValue write SetREFERENCIAPEDIDOValue; + property OldREFERENCIAPEDIDO : String read GetOldREFERENCIAPEDIDOValue; + property REFERENCIAMONTAJE : String read GetREFERENCIAMONTAJEValue write SetREFERENCIAMONTAJEValue; + property OldREFERENCIAMONTAJE : String read GetOldREFERENCIAMONTAJEValue; + property CLIENTE : String read GetCLIENTEValue write SetCLIENTEValue; + property OldCLIENTE : String read GetOldCLIENTEValue; + property ALMACEN : String read GetALMACENValue write SetALMACENValue; + property OldALMACEN : String read GetOldALMACENValue; + property SITUACION : String read GetSITUACIONValue write SetSITUACIONValue; + property OldSITUACION : String read GetOldSITUACIONValue; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + + { IRefresh_ARTICULOSDelta } + IRefresh_ARTICULOSDelta = interface(IRefresh_ARTICULOS) + ['{01037450-9D82-4996-8DC2-9A3BECB84B04}'] + { Property getters and setters } + function GetOldCODIGOValue : Integer; + function GetOldCODIGOALMACENValue : Integer; + function GetOldCODIGOPEDIDOValue : Integer; + function GetOldCODIGOMONTAJEValue : Integer; + function GetOldDESCRIPCIONValue : String; + function GetOldREFERENCIAPEDIDOValue : String; + function GetOldREFERENCIAMONTAJEValue : String; + function GetOldCLIENTEValue : String; + function GetOldALMACENValue : String; + function GetOldSITUACIONValue : String; + + { Properties } + property OldCODIGO : Integer read GetOldCODIGOValue; + property OldCODIGOALMACEN : Integer read GetOldCODIGOALMACENValue; + property OldCODIGOPEDIDO : Integer read GetOldCODIGOPEDIDOValue; + property OldCODIGOMONTAJE : Integer read GetOldCODIGOMONTAJEValue; + property OldDESCRIPCION : String read GetOldDESCRIPCIONValue; + property OldREFERENCIAPEDIDO : String read GetOldREFERENCIAPEDIDOValue; + property OldREFERENCIAMONTAJE : String read GetOldREFERENCIAMONTAJEValue; + property OldCLIENTE : String read GetOldCLIENTEValue; + property OldALMACEN : String read GetOldALMACENValue; + property OldSITUACION : String read GetOldSITUACIONValue; + end; + + { TRefresh_ARTICULOSBusinessProcessorRules } + TRefresh_ARTICULOSBusinessProcessorRules = class(TDABusinessProcessorRules, IRefresh_ARTICULOS, IRefresh_ARTICULOSDelta) + private + protected + { Property getters and setters } + function GetCODIGOValue: Integer; virtual; + function GetOldCODIGOValue: Integer; virtual; + procedure SetCODIGOValue(const aValue: Integer); virtual; + function GetCODIGOALMACENValue: Integer; virtual; + function GetOldCODIGOALMACENValue: Integer; virtual; + procedure SetCODIGOALMACENValue(const aValue: Integer); virtual; + function GetCODIGOPEDIDOValue: Integer; virtual; + function GetOldCODIGOPEDIDOValue: Integer; virtual; + procedure SetCODIGOPEDIDOValue(const aValue: Integer); virtual; + function GetCODIGOMONTAJEValue: Integer; virtual; + function GetOldCODIGOMONTAJEValue: Integer; virtual; + procedure SetCODIGOMONTAJEValue(const aValue: Integer); virtual; + function GetDESCRIPCIONValue: String; virtual; + function GetOldDESCRIPCIONValue: String; virtual; + procedure SetDESCRIPCIONValue(const aValue: String); virtual; + function GetREFERENCIAPEDIDOValue: String; virtual; + function GetOldREFERENCIAPEDIDOValue: String; virtual; + procedure SetREFERENCIAPEDIDOValue(const aValue: String); virtual; + function GetREFERENCIAMONTAJEValue: String; virtual; + function GetOldREFERENCIAMONTAJEValue: String; virtual; + procedure SetREFERENCIAMONTAJEValue(const aValue: String); virtual; + function GetCLIENTEValue: String; virtual; + function GetOldCLIENTEValue: String; virtual; + procedure SetCLIENTEValue(const aValue: String); virtual; + function GetALMACENValue: String; virtual; + function GetOldALMACENValue: String; virtual; + procedure SetALMACENValue(const aValue: String); virtual; + function GetSITUACIONValue: String; virtual; + function GetOldSITUACIONValue: String; virtual; + procedure SetSITUACIONValue(const aValue: String); virtual; + + { Properties } + property CODIGO : Integer read GetCODIGOValue write SetCODIGOValue; + property OldCODIGO : Integer read GetOldCODIGOValue; + property CODIGOALMACEN : Integer read GetCODIGOALMACENValue write SetCODIGOALMACENValue; + property OldCODIGOALMACEN : Integer read GetOldCODIGOALMACENValue; + property CODIGOPEDIDO : Integer read GetCODIGOPEDIDOValue write SetCODIGOPEDIDOValue; + property OldCODIGOPEDIDO : Integer read GetOldCODIGOPEDIDOValue; + property CODIGOMONTAJE : Integer read GetCODIGOMONTAJEValue write SetCODIGOMONTAJEValue; + property OldCODIGOMONTAJE : Integer read GetOldCODIGOMONTAJEValue; + property DESCRIPCION : String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + property OldDESCRIPCION : String read GetOldDESCRIPCIONValue; + property REFERENCIAPEDIDO : String read GetREFERENCIAPEDIDOValue write SetREFERENCIAPEDIDOValue; + property OldREFERENCIAPEDIDO : String read GetOldREFERENCIAPEDIDOValue; + property REFERENCIAMONTAJE : String read GetREFERENCIAMONTAJEValue write SetREFERENCIAMONTAJEValue; + property OldREFERENCIAMONTAJE : String read GetOldREFERENCIAMONTAJEValue; + property CLIENTE : String read GetCLIENTEValue write SetCLIENTEValue; + property OldCLIENTE : String read GetOldCLIENTEValue; + property ALMACEN : String read GetALMACENValue write SetALMACENValue; + property OldALMACEN : String read GetOldALMACENValue; + property SITUACION : String read GetSITUACIONValue write SetSITUACIONValue; + property OldSITUACION : String read GetOldSITUACIONValue; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + +implementation + +uses + Variants, uROBinaryHelpers; + +{ TARTICULOSBusinessProcessorRules } +constructor TARTICULOSBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TARTICULOSBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TARTICULOSBusinessProcessorRules.GetCODIGOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ARTICULOSCODIGO]; +end; + +function TARTICULOSBusinessProcessorRules.GetOldCODIGOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ARTICULOSCODIGO]; +end; + +procedure TARTICULOSBusinessProcessorRules.SetCODIGOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ARTICULOSCODIGO] := aValue; +end; + +function TARTICULOSBusinessProcessorRules.GetCODIGOALMACENValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ARTICULOSCODIGOALMACEN]; +end; + +function TARTICULOSBusinessProcessorRules.GetOldCODIGOALMACENValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ARTICULOSCODIGOALMACEN]; +end; + +procedure TARTICULOSBusinessProcessorRules.SetCODIGOALMACENValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ARTICULOSCODIGOALMACEN] := aValue; +end; + +function TARTICULOSBusinessProcessorRules.GetCODIGOPEDIDOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ARTICULOSCODIGOPEDIDO]; +end; + +function TARTICULOSBusinessProcessorRules.GetOldCODIGOPEDIDOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ARTICULOSCODIGOPEDIDO]; +end; + +procedure TARTICULOSBusinessProcessorRules.SetCODIGOPEDIDOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ARTICULOSCODIGOPEDIDO] := aValue; +end; + +function TARTICULOSBusinessProcessorRules.GetCANTIDADValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ARTICULOSCANTIDAD]; +end; + +function TARTICULOSBusinessProcessorRules.GetOldCANTIDADValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ARTICULOSCANTIDAD]; +end; + +procedure TARTICULOSBusinessProcessorRules.SetCANTIDADValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ARTICULOSCANTIDAD] := aValue; +end; + +function TARTICULOSBusinessProcessorRules.GetCODIGOMONTAJEValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ARTICULOSCODIGOMONTAJE]; +end; + +function TARTICULOSBusinessProcessorRules.GetOldCODIGOMONTAJEValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ARTICULOSCODIGOMONTAJE]; +end; + +procedure TARTICULOSBusinessProcessorRules.SetCODIGOMONTAJEValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ARTICULOSCODIGOMONTAJE] := aValue; +end; + +function TARTICULOSBusinessProcessorRules.GetDESCRIPCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ARTICULOSDESCRIPCION]; +end; + +function TARTICULOSBusinessProcessorRules.GetOldDESCRIPCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ARTICULOSDESCRIPCION]; +end; + +procedure TARTICULOSBusinessProcessorRules.SetDESCRIPCIONValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ARTICULOSDESCRIPCION] := aValue; +end; + +function TARTICULOSBusinessProcessorRules.GetREFERENCIAPEDIDOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ARTICULOSREFERENCIAPEDIDO]; +end; + +function TARTICULOSBusinessProcessorRules.GetOldREFERENCIAPEDIDOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ARTICULOSREFERENCIAPEDIDO]; +end; + +procedure TARTICULOSBusinessProcessorRules.SetREFERENCIAPEDIDOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ARTICULOSREFERENCIAPEDIDO] := aValue; +end; + +function TARTICULOSBusinessProcessorRules.GetREFERENCIAMONTAJEValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ARTICULOSREFERENCIAMONTAJE]; +end; + +function TARTICULOSBusinessProcessorRules.GetOldREFERENCIAMONTAJEValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ARTICULOSREFERENCIAMONTAJE]; +end; + +procedure TARTICULOSBusinessProcessorRules.SetREFERENCIAMONTAJEValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ARTICULOSREFERENCIAMONTAJE] := aValue; +end; + +function TARTICULOSBusinessProcessorRules.GetCLIENTEValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ARTICULOSCLIENTE]; +end; + +function TARTICULOSBusinessProcessorRules.GetOldCLIENTEValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ARTICULOSCLIENTE]; +end; + +procedure TARTICULOSBusinessProcessorRules.SetCLIENTEValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ARTICULOSCLIENTE] := aValue; +end; + +function TARTICULOSBusinessProcessorRules.GetALMACENValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ARTICULOSALMACEN]; +end; + +function TARTICULOSBusinessProcessorRules.GetOldALMACENValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ARTICULOSALMACEN]; +end; + +procedure TARTICULOSBusinessProcessorRules.SetALMACENValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ARTICULOSALMACEN] := aValue; +end; + +function TARTICULOSBusinessProcessorRules.GetSITUACIONValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ARTICULOSSITUACION]; +end; + +function TARTICULOSBusinessProcessorRules.GetOldSITUACIONValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ARTICULOSSITUACION]; +end; + +procedure TARTICULOSBusinessProcessorRules.SetSITUACIONValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ARTICULOSSITUACION] := aValue; +end; + + +{ TRefresh_ARTICULOSBusinessProcessorRules } +constructor TRefresh_ARTICULOSBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TRefresh_ARTICULOSBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TRefresh_ARTICULOSBusinessProcessorRules.GetCODIGOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_ARTICULOSCODIGO]; +end; + +function TRefresh_ARTICULOSBusinessProcessorRules.GetOldCODIGOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Refresh_ARTICULOSCODIGO]; +end; + +procedure TRefresh_ARTICULOSBusinessProcessorRules.SetCODIGOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_ARTICULOSCODIGO] := aValue; +end; + +function TRefresh_ARTICULOSBusinessProcessorRules.GetCODIGOALMACENValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_ARTICULOSCODIGOALMACEN]; +end; + +function TRefresh_ARTICULOSBusinessProcessorRules.GetOldCODIGOALMACENValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Refresh_ARTICULOSCODIGOALMACEN]; +end; + +procedure TRefresh_ARTICULOSBusinessProcessorRules.SetCODIGOALMACENValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_ARTICULOSCODIGOALMACEN] := aValue; +end; + +function TRefresh_ARTICULOSBusinessProcessorRules.GetCODIGOPEDIDOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_ARTICULOSCODIGOPEDIDO]; +end; + +function TRefresh_ARTICULOSBusinessProcessorRules.GetOldCODIGOPEDIDOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Refresh_ARTICULOSCODIGOPEDIDO]; +end; + +procedure TRefresh_ARTICULOSBusinessProcessorRules.SetCODIGOPEDIDOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_ARTICULOSCODIGOPEDIDO] := aValue; +end; + +function TRefresh_ARTICULOSBusinessProcessorRules.GetCODIGOMONTAJEValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_ARTICULOSCODIGOMONTAJE]; +end; + +function TRefresh_ARTICULOSBusinessProcessorRules.GetOldCODIGOMONTAJEValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Refresh_ARTICULOSCODIGOMONTAJE]; +end; + +procedure TRefresh_ARTICULOSBusinessProcessorRules.SetCODIGOMONTAJEValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_ARTICULOSCODIGOMONTAJE] := aValue; +end; + +function TRefresh_ARTICULOSBusinessProcessorRules.GetDESCRIPCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_ARTICULOSDESCRIPCION]; +end; + +function TRefresh_ARTICULOSBusinessProcessorRules.GetOldDESCRIPCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Refresh_ARTICULOSDESCRIPCION]; +end; + +procedure TRefresh_ARTICULOSBusinessProcessorRules.SetDESCRIPCIONValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_ARTICULOSDESCRIPCION] := aValue; +end; + +function TRefresh_ARTICULOSBusinessProcessorRules.GetREFERENCIAPEDIDOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_ARTICULOSREFERENCIAPEDIDO]; +end; + +function TRefresh_ARTICULOSBusinessProcessorRules.GetOldREFERENCIAPEDIDOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Refresh_ARTICULOSREFERENCIAPEDIDO]; +end; + +procedure TRefresh_ARTICULOSBusinessProcessorRules.SetREFERENCIAPEDIDOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_ARTICULOSREFERENCIAPEDIDO] := aValue; +end; + +function TRefresh_ARTICULOSBusinessProcessorRules.GetREFERENCIAMONTAJEValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_ARTICULOSREFERENCIAMONTAJE]; +end; + +function TRefresh_ARTICULOSBusinessProcessorRules.GetOldREFERENCIAMONTAJEValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Refresh_ARTICULOSREFERENCIAMONTAJE]; +end; + +procedure TRefresh_ARTICULOSBusinessProcessorRules.SetREFERENCIAMONTAJEValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_ARTICULOSREFERENCIAMONTAJE] := aValue; +end; + +function TRefresh_ARTICULOSBusinessProcessorRules.GetCLIENTEValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_ARTICULOSCLIENTE]; +end; + +function TRefresh_ARTICULOSBusinessProcessorRules.GetOldCLIENTEValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Refresh_ARTICULOSCLIENTE]; +end; + +procedure TRefresh_ARTICULOSBusinessProcessorRules.SetCLIENTEValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_ARTICULOSCLIENTE] := aValue; +end; + +function TRefresh_ARTICULOSBusinessProcessorRules.GetALMACENValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_ARTICULOSALMACEN]; +end; + +function TRefresh_ARTICULOSBusinessProcessorRules.GetOldALMACENValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Refresh_ARTICULOSALMACEN]; +end; + +procedure TRefresh_ARTICULOSBusinessProcessorRules.SetALMACENValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_ARTICULOSALMACEN] := aValue; +end; + +function TRefresh_ARTICULOSBusinessProcessorRules.GetSITUACIONValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_ARTICULOSSITUACION]; +end; + +function TRefresh_ARTICULOSBusinessProcessorRules.GetOldSITUACIONValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Refresh_ARTICULOSSITUACION]; +end; + +procedure TRefresh_ARTICULOSBusinessProcessorRules.SetSITUACIONValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_ARTICULOSSITUACION] := aValue; +end; + + +initialization + RegisterBusinessProcessorRules(RID_ARTICULOSDelta, TARTICULOSBusinessProcessorRules); + RegisterBusinessProcessorRules(RID_Refresh_ARTICULOSDelta, TRefresh_ARTICULOSBusinessProcessorRules); + +end. diff --git a/Modulos/Articulos/Reglas/uBizArticulos.pas b/Modulos/Articulos/Reglas/uBizArticulos.pas new file mode 100644 index 0000000..e47706b --- /dev/null +++ b/Modulos/Articulos/Reglas/uBizArticulos.pas @@ -0,0 +1,422 @@ +unit uBizArticulos; + +interface + +uses + uDAInterfaces, uDADataTable, schArticulosClient_Intf, Classes, + DBGrids, uDBSelectionList, DB, uExceptions, Controls, + uBizMontajes, uBizPedidosProveedor; + +type + + IBizArticulosAlmacen = interface(IARTICULOS) + ['{97972D47-1503-4DDD-9B49-966A6E93EF5E}'] + procedure RecibirArticulos(Const APedido: IBizPedidosProveedor; Const CodigoAlmacenDes: Integer); overload; + procedure RecibirArticulos(Const CodigoAlmacenDes: Integer); overload; + procedure GuardarArticulosUnitarios; + function Trasladar: Boolean; + function Liberar: Boolean; + function Reservar(Const AMontaje: IBizMontaje): Boolean; overload; + function Reservar(Const CodigoMontaje: Integer): Boolean; overload; + function Eliminar: Boolean; + + function GetCodigoAlmacenEntrada: Integer; + procedure SetCodigoAlmacenEntrada(const Value: Integer); + property CodigoAlmacenEntrada: Integer read GetCodigoAlmacenEntrada write SetCodigoAlmacenEntrada; + + function GetPedido : IBizPedidosProveedor; + procedure SetPedido (Const Value: IBizPedidosProveedor); + property Pedido: IBizPedidosProveedor read GetPedido write SetPedido; + + function Show: TModalResult; + function ShowForSelect : TModalResult; +// procedure ShowAll; +// procedure Preview; + + end; + + TBizArticulosAlmacenDataTableRules = class(TARTICULOSDataTableRules, IBizArticulosAlmacen, + IApplyUpdateFailedException, ISelectedRowList) + private + FCodigoAlmacenEntrada : Integer; + FSelectedRows : TSelectedRowList; + FPedido : IBizPedidosProveedor; + procedure OnNewRecord(Sender: TDADataTable); override; + procedure OnPostError(DataTable: TDADataTable; Error: EDatabaseError; + var Action: TDataAction); override; + protected + function GetPedido : IBizPedidosProveedor; + procedure SetPedido (Const Value: IBizPedidosProveedor); + function GetCodigoAlmacenEntrada: Integer; + procedure SetCodigoAlmacenEntrada(const Value: Integer); + function GetSelectedRows : TSelectedRowList; virtual; + procedure ShowApplyUpdateFailed (const Error: EDAApplyUpdateFailed); virtual; + public + property CodigoAlmacenEntrada: Integer read GetCodigoAlmacenEntrada write SetCodigoAlmacenEntrada; + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + function Show: TModalResult; + function ShowForSelect : TModalResult; + procedure RecibirArticulos(Const APedido: IBizPedidosProveedor; Const CodigoAlmacenDes: Integer); overload; + procedure RecibirArticulos(Const CodigoAlmacenDes: Integer); overload; + procedure GuardarArticulosUnitarios; + function Trasladar: Boolean; + function Liberar: Boolean; + function Reservar(Const AMontaje: IBizMontaje): Boolean; overload; + function Reservar(Const CodigoMontaje: Integer): Boolean; overload; + function Eliminar: Boolean; + property SelectedRows : TSelectedRowList read GetSelectedRows; + property Pedido: IBizPedidosProveedor read GetPedido write SetPedido; + end; + +implementation + +uses + Dialogs, uDACDSDataTable, SysUtils, uDataModuleBase, uDataModuleUsuarios, + uEditorUtils, uDataModuleArticulos, Variants, uBizImportesDetalleBase, + uDataModuleAlmacenes, uBizAlmacenes, schPedidosProveedorClient_Intf, + uEditorSituacionPedido, Forms, wIndows, uDataModuleMontajes; + + +{ TBizArticulosAlmacenDataTableRules } + +constructor TBizArticulosAlmacenDataTableRules.Create( + aDataTable: TDADataTable); +begin + inherited; + FPedido := NIL; + FSelectedRows := TSelectedRowList.Create(aDataTable); + CodigoAlmacenEntrada := -1; +end; + +destructor TBizArticulosAlmacenDataTableRules.Destroy; +begin + FPedido := NIL; + FSelectedRows.Free; + inherited; +end; + +function TBizArticulosAlmacenDataTableRules.GetSelectedRows: TSelectedRowList; +begin + Result := FSelectedRows; +end; + +procedure TBizArticulosAlmacenDataTableRules.RecibirArticulos(Const APedido: IBizPedidosProveedor; Const CodigoAlmacenDes: Integer); +var + AArticulos: IBizArticulosAlmacen; + ADetalles: IBizDetallesPedidoProveedor; +begin + try + if APedido.DataTable.FieldByName(fld_PedidosProveedorCODIGOALMACEN).IsNull then + begin + MessageBox(0, 'En el pedido que ha elegido no figura ningún almacén como destino.' + #10#13 + + 'Si desea recibir este pedido en algún almacén' + #10#13 + + 'modifique antes el pedido para indicarlo.', 'Atención', MB_ICONWARNING or MB_OK); + + Exit; + end; + + AArticulos := dmArticulos.GetItem(-1); + if not AArticulos.DataTable.Active then + AArticulos.DataTable.Active := True; + + ADetalles := APedido.Detalles; + if Assigned(ADetalles) then + begin + ADetalles.First; + while not ADetalles.EOF do + begin + if (ADetalles.TIPO = TIPODETALLE_CONCEPTO) + and (Length(Trim(ADetalles.DESCRIPCION)) <> 0) then + begin + AArticulos.Insert; + if not APedido.DataTable.FieldByName(fld_PedidosProveedorCODIGOALMACEN).IsNull then + AArticulos.CODIGOALMACEN := APedido.CODIGOALMACEN; + if not APedido.DataTable.FieldByName(fld_PedidosProveedorCODIGO).IsNull then + AArticulos.CODIGOPEDIDO := APedido.CODIGO; + if not APedido.DataTable.FieldByName(fld_PedidosProveedorCODIGOMONTAJE).IsNull then + AArticulos.CODIGOMONTAJE := APedido.CODIGOMONTAJE; + AArticulos.DESCRIPCION := ADetalles.DESCRIPCION; + AArticulos.CANTIDAD := ADetalles.CANTIDAD; + AArticulos.Post; + end; + ADetalles.Next; + end; + end; + + if APedido.DataTable.FieldByName(fld_PedidosProveedorCODIGOALMACEN).IsNull + then + AArticulos.CodigoAlmacenEntrada := CodigoAlmacenDes + else + begin + AArticulos.CodigoAlmacenEntrada := APedido.CODIGOALMACEN; + AArticulos.Pedido := APedido; + end; + + if AArticulos.show = mrOK then + begin + with TfEditorSituacionPedido.Create(Nil) do + try + if (ShowModal = mrOk) then + begin + if rdxSituacion1.checked + then APedido.CambiarSituacion(SITUACION_RECIBIDO) + else APedido.CambiarSituacion(SITUACION_PARCIAL); + end + else + showmessage('Pedido quedará con la misma situación con la que estaba antes de ser elegido'); + finally + Free; + end; + + Self.DataTable.Refresh; + end; + finally + AArticulos := Nil; + end; +end; + +function TBizArticulosAlmacenDataTableRules.Show: TModalResult; +begin + Result := ShowEditor(IBizArticulosAlmacen, Self, etItem); +end; + +procedure TBizArticulosAlmacenDataTableRules.ShowApplyUpdateFailed( + const Error: EDAApplyUpdateFailed); +begin + if (Pos(AUF_FKVIOLATION, Error.Message) > 0) then + MessageBox(0, 'No se puede borrar este artículo porque asociado a algo', 'Atención', MB_ICONWARNING or MB_OK); +end; + +procedure TBizArticulosAlmacenDataTableRules.OnNewRecord(Sender: TDADataTable); +begin + inherited; + DESCRIPCION := 'Escriba aquí la descripción del artículo'; + CODIGO := dmArticulos.GetNextAutoinc; + if CodigoAlmacenEntrada <> -1 then + CODIGOALMACEN := CodigoAlmacenEntrada; + CANTIDAD := 1; +end; + +function TBizArticulosAlmacenDataTableRules.Trasladar: Boolean; +var + AAlmacen: IBizAlmacen; + AObj: TSelectedRowList; + i: Integer; +begin + try + AAlmacen := dmAlmacenes.GetItems; + if AAlmacen.ShowForSelect = mrOk then + begin + AObj := Self.GetSelectedRows; + Self.DataTable.DisableControls; + for i:=0 to (AObj.Count -1) do + begin + Self.DataTable.GotoBookmark(AObj.Items[i]); + Self.Edit; + Self.CODIGOALMACEN := AAlmacen.CODIGO; + Self.Post; + end; + Self.DataTable.EnableControls; + Self.DataTable.ApplyUpdates; + end; + AAlmacen := Nil; + except + on E: EDAApplyUpdateFailed do + begin + Self.DataTable.CancelUpdates; + showmessage('Error en el traslado'); + AAlmacen := Nil; + end; + end; +end; + +function TBizArticulosAlmacenDataTableRules.Liberar: Boolean; +var + AObj: TSelectedRowList; + i: Integer; +begin + try + AObj := Self.GetSelectedRows; + Self.DataTable.DisableControls; + for i:=0 to (AObj.Count -1) do + begin + Self.DataTable.GotoBookmark(AObj.Items[i]); + Self.Edit; + Self.datatable.FieldByName(fld_ARTICULOSCODIGOMontaje).AsVariant := Null; + Self.Post; + end; + Self.DataTable.EnableControls; + Self.DataTable.ApplyUpdates; + except + on E: EDAApplyUpdateFailed do + begin + Self.DataTable.CancelUpdates; + showmessage('Error al liberar los artículos'); + end; + end; +end; + +function TBizArticulosAlmacenDataTableRules.Reservar(const AMontaje: IBizMontaje): Boolean; +var + AObj: TSelectedRowList; + i: Integer; +begin + try + AObj := Self.GetSelectedRows; + Self.DataTable.DisableControls; + for i:=0 to (AObj.Count -1) do + begin + Self.DataTable.GotoBookmark(AObj.Items[i]); + Self.Edit; + Self.CODIGOMontaje := AMontaje.CODIGO; + Self.Post; + end; + Self.DataTable.EnableControls; + Self.DataTable.ApplyUpdates; + except + on E: EDAApplyUpdateFailed do + begin + Self.DataTable.CancelUpdates; + showmessage('Error al reservar para la Montaje'); + end; + end; +end; + +procedure TBizArticulosAlmacenDataTableRules.RecibirArticulos(Const CodigoAlmacenDes: Integer); +var + AArticulos: IBizArticulosAlmacen; +begin + try + AArticulos := dmArticulos.GetItem(-1); + if not AArticulos.DataTable.Active then + AArticulos.DataTable.Active := True; + + AArticulos.CodigoAlmacenEntrada := CodigoAlmacenDes; + AArticulos.Show; + Self.DataTable.Refresh; + finally + AArticulos := Nil; + end; +end; + +procedure TBizArticulosAlmacenDataTableRules.GuardarArticulosUnitarios; +var + AArticulosUnitarios: IBizArticulosAlmacen; + i: Integer; +begin + AArticulosUnitarios := dmArticulos.getItem(-1); + if not AArticulosUnitarios.DataTable.Active then + AArticulosUnitarios.DataTable.Active := True; + + Self.First; + while not Self.DataTable.EOF do + begin + for i:=0 to (Self.CANTIDAD - 1) do + begin + AArticulosUnitarios.Insert; + AArticulosUnitarios.CODIGOALMACEN := Self.CODIGOALMACEN; + if not Self.DataTable.FieldByName(fld_ARTICULOSCODIGOPEDIDO).IsNull then + AArticulosUnitarios.CODIGOPEDIDO := Self.CODIGOPEDIDO; + if not Self.DataTable.FieldByName(fld_ARTICULOSCODIGOMONTAJE).IsNull then + AArticulosUnitarios.CODIGOMONTAJE := Self.CODIGOMONTAJE; + AArticulosUnitarios.DESCRIPCION := Self.DESCRIPCION; + AArticulosUnitarios.Post; + end; + Self.Next; + end; + + Self.DataTable.CancelUpdates; + AArticulosUnitarios.DataTable.ApplyUpdates; +end; + +function TBizArticulosAlmacenDataTableRules.Eliminar: Boolean; +var + AObj: TSelectedRowList; + i: Integer; +begin + try + AObj := Self.GetSelectedRows; + Self.DataTable.DisableControls; + for i:=0 to (AObj.Count -1) do + begin + Self.DataTable.GotoBookmark(AObj.Items[i]); + Self.DataTable.Delete; + end; + Self.DataTable.EnableControls; + Self.DataTable.ApplyUpdates; + +// Self.SelectedRows.Clear; +// Self.SelectedRows.CurrentRowSelected := True; + + except + on E: EDAApplyUpdateFailed do + begin + Self.DataTable.CancelUpdates; + showmessage('Error al eliminar los artículos'); + end; + end; +end; + +procedure TBizArticulosAlmacenDataTableRules.OnPostError( + DataTable: TDADataTable; Error: EDatabaseError; var Action: TDataAction); +begin + inherited; + Action := daAbort; + if (Pos(AUF_HAVEVALUE, Error.Message) > 0) then + begin + if (Pos('almacén', Error.Message) > 0) then + MessageBox(0, 'Debe indicar el almacén de destino', 'Atención', MB_ICONWARNING or MB_OK) + else + raise Error; + end + else + raise Error; +end; + +function TBizArticulosAlmacenDataTableRules.GetCodigoAlmacenEntrada: Integer; +begin + Result := FCodigoAlmacenEntrada; +end; + +procedure TBizArticulosAlmacenDataTableRules.SetCodigoAlmacenEntrada( + const Value: Integer); +begin + FCodigoAlmacenEntrada := Value; +end; + +function TBizArticulosAlmacenDataTableRules.ShowForSelect: TModalResult; +begin + Result := ShowEditor(IBizArticulosAlmacen, Self, etSelectItems); +end; + +function TBizArticulosAlmacenDataTableRules.Reservar(const CodigoMontaje: Integer): Boolean; +var + AMontaje: IBizMontaje; +begin + try + AMontaje := dmMontajes.GetItem(CodigoMontaje); + AMontaje.DataTable.Active := True; + Reservar(AMontaje); + finally + AMontaje := Nil; + end; +end; + +function TBizArticulosAlmacenDataTableRules.GetPedido: IBizPedidosProveedor; +begin + Result := FPedido; +end; + +procedure TBizArticulosAlmacenDataTableRules.SetPedido(const Value: IBizPedidosProveedor); +begin + FPedido := Value; +end; + +initialization + RegisterDataTableRules('BizAlmacen', TBizAlmacenDataTableRules); + RegisterDataTableRules('BizArticulosAlmacen', TBizArticulosAlmacenDataTableRules); + +finalization + +end. diff --git a/Modulos/Articulos/Servidor/srvArticulos_Impl.ddp b/Modulos/Articulos/Servidor/srvArticulos_Impl.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Articulos/Servidor/srvArticulos_Impl.ddp differ diff --git a/Modulos/Articulos/Servidor/srvArticulos_Impl.dfm b/Modulos/Articulos/Servidor/srvArticulos_Impl.dfm new file mode 100644 index 0000000..c910303 --- /dev/null +++ b/Modulos/Articulos/Servidor/srvArticulos_Impl.dfm @@ -0,0 +1,565 @@ +object srvArticulos: TsrvArticulos + OldCreateOrder = True + SessionManager = dmServer.SessionManager + AcquireConnection = True + ConnectionName = 'IBX' + ServiceSchema = schArticulos + ServiceAdapter = DABINAdapter + Left = 449 + Top = 259 + Height = 300 + Width = 300 + object schArticulos: TDASchema + ConnectionManager = dmServer.ConnectionManager + DataDictionary = dmServer.DataDictionary + Diagrams = dmServer.DADiagrams + Datasets = < + item + Params = <> + Statements = < + item + Connection = 'IBX' + TargetTable = 'ARTICULOS' + SQL = + 'SELECT'#10' ARTICULOS.CODIGO, ARTICULOS.CODIGOALMACEN, ARTICULOS.' + + 'DESCRIPCION, 0 as CANTIDAD,'#10' ARTICULOS.CODIGOPEDIDO, PEDIDOS.' + + 'REFERENCIA as REFERENCIAPEDIDO,'#10' ARTICULOS.CODIGOMONTAJE, MON' + + 'TAJES.REFERENCIA as REFERENCIAMONTAJE,'#10' CONTACTOS.NOMBRE AS C' + + 'LIENTE, ALMACENES.NOMBRE as ALMACEN,'#10' MONTAJES.SITUACION'#10'FROM' + + ' ARTICULOS'#10'LEFT JOIN ALMACENES ON (ARTICULOS.CODIGOALMACEN = ALM' + + 'ACENES.CODIGO)'#10'LEFT JOIN PEDIDOS ON (ARTICULOS.CODIGOPEDIDO = PE' + + 'DIDOS.CODIGO)'#10'LEFT JOIN MONTAJES ON (ARTICULOS.CODIGOMONTAJE = M' + + 'ONTAJES.CODIGO)'#10'LEFT JOIN CONTACTOS ON (MONTAJES.CODIGOCONTACTO ' + + '= CONTACTOS.CODIGO)' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'CODIGO' + TableField = 'CODIGO' + end + item + DatasetField = 'CODIGOALMACEN' + TableField = 'CODIGOALMACEN' + end + item + DatasetField = 'CODIGOPEDIDO' + TableField = 'CODIGOPEDIDO' + end + item + DatasetField = 'DESCRIPCION' + TableField = 'DESCRIPCION' + end + item + DatasetField = 'CODIGOMONTAJE' + TableField = 'CODIGOMONTAJE' + end + item + DatasetField = 'REFERENCIAPEDIDO' + TableField = 'REFERENCIAPEDIDO' + end + item + DatasetField = 'REFERENCIAMONTAJE' + TableField = 'REFERENCIAMONTAJE' + end + item + DatasetField = 'ALMACEN' + TableField = 'ALMACEN' + end + item + DatasetField = 'CLIENTE' + TableField = 'CLIENTE' + end + item + DatasetField = 'SITUACION' + TableField = 'SITUACION' + end> + end> + Name = 'ARTICULOS' + Fields = < + item + Name = 'CODIGO' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'CODIGO (GENERICO)' + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOALMACEN' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'CODIGOALMACEN' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOPEDIDO' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'C'#243'd. pedido' + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CANTIDAD' + DataType = datInteger + BlobType = dabtUnknown + LogChanges = False + DisplayWidth = 0 + Alignment = taRightJustify + InPrimaryKey = False + Calculated = True + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOMONTAJE' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'DESCRIPCION' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DictionaryEntry = 'DESCRIPCION' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'REFERENCIAPEDIDO' + DataType = datString + Size = 20 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'REFERENCIAMONTAJE' + DataType = datString + Size = 20 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CLIENTE' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Cliente' + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ALMACEN' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Almac'#233'n' + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'SITUACION' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end + item + Params = < + item + Name = 'CODIGO' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'ARTICULOS' + SQL = + 'SELECT'#10' ARTICULOS.CODIGO, ARTICULOS.CODIGOALMACEN, ARTICULOS.' + + 'DESCRIPCION,'#10' ARTICULOS.CODIGOPEDIDO, PEDIDOS.REFERENCIA as R' + + 'EFERENCIAPEDIDO,'#10' ARTICULOS.CODIGOMONTAJE, MONTAJES.REFERENCI' + + 'A as REFERENCIAMONTAJE,'#10' CONTACTOS.NOMBRE AS CLIENTE, ALMACEN' + + 'ES.NOMBRE as ALMACEN,'#10' MONTAJES.SITUACION'#10'FROM ARTICULOS'#10'LEFT' + + ' JOIN ALMACENES ON (ARTICULOS.CODIGOALMACEN = ALMACENES.CODIGO)'#10 + + 'LEFT JOIN PEDIDOS ON (ARTICULOS.CODIGOPEDIDO = PEDIDOS.CODIGO)'#10'L' + + 'EFT JOIN MONTAJES ON (ARTICULOS.CODIGOMONTAJE = MONTAJES.CODIGO)' + + #10'LEFT JOIN CONTACTOS ON (MONTAJES.CODIGOCONTACTO = CONTACTOS.COD' + + 'IGO)'#10'WHERE ARTICULOS.CODIGO = :CODIGO' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'CODIGO' + TableField = 'CODIGO' + end + item + DatasetField = 'CODIGOALMACEN' + TableField = 'CODIGOALMACEN' + end + item + DatasetField = 'CODIGOPEDIDO' + TableField = 'CODIGOPEDIDO' + end + item + DatasetField = 'DESCRIPCION' + TableField = 'DESCRIPCION' + end + item + DatasetField = 'CODIGOMONTAJE' + TableField = 'CODIGOMONTAJE' + end + item + DatasetField = 'REFERENCIAPEDIDO' + TableField = 'REFERENCIAPEDIDO' + end + item + DatasetField = 'REFERENCIAMONTAJE' + TableField = 'REFERENCIAMONTAJE' + end + item + DatasetField = 'ALMACEN' + TableField = 'ALMACEN' + end + item + DatasetField = 'CLIENTE' + TableField = 'CLIENTE' + end + item + DatasetField = 'SITUACION' + TableField = 'SITUACION' + end> + end> + Name = 'Refresh_ARTICULOS' + Fields = < + item + Name = 'CODIGO' + DataType = datAutoInc + BlobType = dabtUnknown + GeneratorName = 'GEN_ARTICULOS' + DictionaryEntry = 'CODIGOARTICULO_GEN' + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOALMACEN' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'CODIGOALMACEN' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOPEDIDO' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'C'#243'd. pedido' + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOMONTAJE' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'DESCRIPCION' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DictionaryEntry = 'DESCRIPCION' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'REFERENCIAPEDIDO' + DataType = datString + Size = 20 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'REFERENCIAMONTAJE' + DataType = datString + Size = 20 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CLIENTE' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Cliente' + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ALMACEN' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'SITUACION' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end> + Commands = < + item + Params = < + item + Name = 'CODIGO' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'CODIGOALMACEN' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'CODIGOPEDIDO' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'DESCRIPCION' + DataType = datString + Size = 100 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'CODIGOMONTAJE' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'ARTICULOS' + SQL = + 'INSERT'#10' INTO ARTICULOS'#10' (CODIGO, CODIGOALMACEN, CODIGOPEDIDO' + + ', DESCRIPCION, CODIGOMONTAJE)'#10' VALUES'#10' (:CODIGO, :CODIGOALMA' + + 'CEN, :CODIGOPEDIDO, :DESCRIPCION, :CODIGOMONTAJE)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Insert_ARTICULOS' + end + item + Params = < + item + Name = 'OLD_CODIGO' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'ARTICULOS' + SQL = 'DELETE '#10' FROM'#10' ARTICULOS'#10' WHERE'#10' (CODIGO = :OLD_CODIGO)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Delete_ARTICULOS' + end + item + Params = < + item + Name = 'CODIGOALMACEN' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'CODIGOPEDIDO' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'DESCRIPCION' + DataType = datString + Size = 100 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'CODIGOMONTAJE' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'OLD_CODIGO' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'ARTICULOS' + SQL = + 'UPDATE ARTICULOS'#10' SET '#10' CODIGOALMACEN = :CODIGOALMACEN, '#10' ' + + ' CODIGOPEDIDO = :CODIGOPEDIDO, '#10' DESCRIPCION = :DESCRIPCION, ' + + #10' CODIGOMONTAJE = :CODIGOMONTAJE'#10' WHERE'#10' (CODIGO = :OLD_C' + + 'ODIGO)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Update_ARTICULOS' + end> + RelationShips = <> + UpdateRules = < + item + Name = 'Insert ARTICULOS' + DoUpdate = False + DoInsert = True + DoDelete = False + DatasetName = 'ARTICULOS' + FailureBehaviour = fbRaiseException + end + item + Name = 'Update ARTICULOS' + DoUpdate = True + DoInsert = False + DoDelete = False + DatasetName = 'ARTICULOS' + FailureBehaviour = fbRaiseException + end + item + Name = 'Delete ARTICULOS' + DoUpdate = False + DoInsert = False + DoDelete = True + DatasetName = 'ARTICULOS' + FailureBehaviour = fbRaiseException + end> + Left = 40 + Top = 16 + end + object bpArticulos: TDABusinessProcessor + Schema = schArticulos + InsertCommandName = 'Insert_ARTICULOS' + UpdateCommandName = 'Update_ARTICULOS' + RefreshDatasetName = 'Refresh_ARTICULOS' + ReferencedDataset = 'ARTICULOS' + ProcessorOptions = [poAutoGenerateDelete, poPrepareCommands] + UpdateMode = updWhereKeyOnly + Left = 184 + Top = 16 + end + object DABINAdapter: TDABINAdapter + Left = 40 + Top = 72 + end +end diff --git a/Modulos/Articulos/Servidor/srvArticulos_Impl.pas b/Modulos/Articulos/Servidor/srvArticulos_Impl.pas new file mode 100644 index 0000000..431d5b6 --- /dev/null +++ b/Modulos/Articulos/Servidor/srvArticulos_Impl.pas @@ -0,0 +1,54 @@ +unit srvArticulos_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:} DARemoteService_Impl, + {Used RODLs:} DataAbstract_Intf, + {Generated:} FactuGES_Intf, uDAClasses, uDAScriptingProvider, + uDABusinessProcessor, uDADataTable, uDABINAdapter; + +type + { TsrvArticulos } + TsrvArticulos = class(TDARemoteService, IsrvArticulos) + bpArticulos: TDABusinessProcessor; + DABINAdapter: TDABINAdapter; + schArticulos: TDASchema; + private + protected + { IsrvArticulos methods } + function GetNextAutoinc: Integer; + end; + +implementation + +{$R *.dfm} +uses + {Generated:} FactuGES_Invk, uDataModuleServer; + +procedure Create_srvArticulos(out anInstance : IUnknown); +begin + anInstance := TsrvArticulos.Create(NIL); +end; + +{ srvArticulos } +function TsrvArticulos.GetNextAutoinc: Integer; +begin + Result := uDataModuleServer.GetNextAutoinc(Connection, 'GEN_ARTICULOS'); +end; + +initialization + TROClassFactory.Create('srvArticulos', Create_srvArticulos, TsrvArticulos_Invoker); + +finalization + +end. diff --git a/Modulos/Asientos/Cliente/Asientos.bdsproj b/Modulos/Asientos/Cliente/Asientos.bdsproj new file mode 100644 index 0000000..332cbb6 --- /dev/null +++ b/Modulos/Asientos/Cliente/Asientos.bdsproj @@ -0,0 +1,492 @@ + + + + + + + + + + + + Asientos.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 3 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + .\ + ..\..\..\Output\Cliente + .\ + $(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\Reglas;..\..\Cuentas\Cliente;..\..\Intervalos\Cliente + vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;IntrawebDB_50_70;Intraweb_50_70;Rave50CLX;Rave50VCL;dclOfficeXP;PluginSDK_D7R;DJcl;JvStdCtrlsD7R;JvAppFrmD7R;JvCoreD7R;JvBandsD7R;JvBDED7R;JvDBD7R;JvDlgsD7R;JvCmpD7R;JvCryptD7R;JvCtrlsD7R;JvCustomD7R;JvDockingD7R;JvDotNetCtrlsD7R;JvEDID7R;qrpt;JvGlobusD7R;JvHMID7R;JvInspectorD7R;JvInterpreterD7R;JvJansD7R;JvManagedThreadsD7R;JvMMD7R;JvNetD7R;JvPageCompsD7R;JvPluginD7R;JvPrintPreviewD7R;JvSystemD7R;JvTimeFrameworkD7R;JvUIBD7R;JvValidatorsD7R;JvWizardD7R;JvXPCtrlsD7R;GUISDK_D7;RemObjects_WebBroker_D7;RemObjects_Indy_D7;RemObjects_RODX_D7;RemObjects_BPDX_D7;PascalScript_RO_D7;DataAbstract_Core_D7;DataAbstract_IDE_D7;DataAbstract_DBXDriver_D7;DataAbstract_Scripting_D7;dxBarD7;dxComnD7;cxLibraryVCLD7;cxEditorsVCLD7;dxThemeD7;cxDataD7;cxExtEditorsVCLD7;cxGridVCLD7;cxPageControlVCLD7;cxSchedulerVCLD7;cxTreeListVCLD7;dxBarDBNavD7;dxBarExtDBItemsD7;dxBarExtItemsD7;dxDockingD7;dxNavBarD7;dxPSCoreD7;dxsbD7;dxPSLnksD7;dxPSTeeChartD7;EPCOTAUtils70;PNG_D7;PngComponentsD7;tb2k_d7;tbx_d7;UserControlD7_RT;fqb70;frx7;frxADO7;frxBDE7;frxcs7;frxDB7;frxDBX7;frxe7;frxIBX7;fs7;fsADO7;fsBDE7;fsDB7;fsIBX7;cxExportVCLD7;cxIntl5D7;cxIntlPrintSys3D7;dxPScxCommonD7;dxPScxExtCommonD7;dxPScxGridLnkD7;dxPScxPCProdD7;dxPScxTLLnkD7;dxPSDBTeeChartD7;dxPsPrVwAdvD7 + + + False + + + + + + False + + + True + False + + + + $00000000 + C:\Archivos de programa\Borland\Delphi7\Bin\ + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + diff --git a/Modulos/Asientos/Cliente/Asientos.cfg b/Modulos/Asientos/Cliente/Asientos.cfg new file mode 100644 index 0000000..c3c8af2 --- /dev/null +++ b/Modulos/Asientos/Cliente/Asientos.cfg @@ -0,0 +1,45 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-GD +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N".\" +-LE"..\..\..\Output\Cliente" +-LN".\" +-U"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\Reglas;..\..\Cuentas\Cliente;..\..\Intervalos\Cliente" +-O"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\Reglas;..\..\Cuentas\Cliente;..\..\Intervalos\Cliente" +-I"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\Reglas;..\..\Cuentas\Cliente;..\..\Intervalos\Cliente" +-R"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\Reglas;..\..\Cuentas\Cliente;..\..\Intervalos\Cliente" +-Z +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/Modulos/Asientos/Cliente/Asientos.dcp b/Modulos/Asientos/Cliente/Asientos.dcp new file mode 100644 index 0000000..94a82f7 Binary files /dev/null and b/Modulos/Asientos/Cliente/Asientos.dcp differ diff --git a/Modulos/Asientos/Cliente/Asientos.dof b/Modulos/Asientos/Cliente/Asientos.dof new file mode 100644 index 0000000..4a772e5 --- /dev/null +++ b/Modulos/Asientos/Cliente/Asientos.dof @@ -0,0 +1,177 @@ +[FileVersion] +Version=7.0 +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=1 +SymbolLibrary=1 +SymbolPlatform=1 +UnitLibrary=1 +UnitPlatform=1 +UnitDeprecated=1 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 +[Linker] +MapFile=3 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription= +[Directories] +OutputDir= +UnitOutputDir=.\ +PackageDLLOutputDir=..\..\..\Output\Cliente +PackageDCPOutputDir=.\ +SearchPath=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\Reglas;..\..\Cuentas\Cliente;..\..\Intervalos\Cliente +Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;IntrawebDB_50_70;Intraweb_50_70;Rave50CLX;Rave50VCL;dclOfficeXP;PluginSDK_D7R;DJcl;JvStdCtrlsD7R;JvAppFrmD7R;JvCoreD7R;JvBandsD7R;JvBDED7R;JvDBD7R;JvDlgsD7R;JvCmpD7R;JvCryptD7R;JvCtrlsD7R;JvCustomD7R;JvDockingD7R;JvDotNetCtrlsD7R;JvEDID7R;qrpt;JvGlobusD7R;JvHMID7R;JvInspectorD7R;JvInterpreterD7R;JvJansD7R;JvManagedThreadsD7R;JvMMD7R;JvNetD7R;JvPageCompsD7R;JvPluginD7R;JvPrintPreviewD7R;JvSystemD7R;JvTimeFrameworkD7R;JvUIBD7R;JvValidatorsD7R;JvWizardD7R;JvXPCtrlsD7R;GUISDK_D7;RemObjects_WebBroker_D7;RemObjects_Indy_D7;RemObjects_RODX_D7;RemObjects_BPDX_D7;PascalScript_RO_D7;DataAbstract_Core_D7;DataAbstract_IDE_D7;DataAbstract_DBXDriver_D7;DataAbstract_Scripting_D7;dxBarD7;dxComnD7;cxLibraryVCLD7;cxEditorsVCLD7;dxThemeD7;cxDataD7;cxExtEditorsVCLD7;cxGridVCLD7;cxPageControlVCLD7;cxSchedulerVCLD7;cxTreeListVCLD7;dxBarDBNavD7;dxBarExtDBItemsD7;dxBarExtItemsD7;dxDockingD7;dxNavBarD7;dxPSCoreD7;dxsbD7;dxPSLnksD7;dxPSTeeChartD7;EPCOTAUtils70;PNG_D7;PngComponentsD7;tb2k_d7;tbx_d7;UserControlD7_RT;fqb70;frx7;frxADO7;frxBDE7;frxcs7;frxDB7;frxDBX7;frxe7;frxIBX7;fs7;fsADO7;fsBDE7;fsDB7;fsIBX7;cxExportVCLD7;cxIntl5D7;cxIntlPrintSys3D7;dxPScxCommonD7;dxPScxExtCommonD7;dxPScxGridLnkD7;dxPScxPCProdD7;dxPScxTLLnkD7;dxPSDBTeeChartD7;dxPsPrVwAdvD7 +Conditionals= +DebugSourceDirs= +UsePackages=0 +[Parameters] +RunParams= +HostApplication= +Launcher= +UseLauncher=0 +DebugCWD= +[Language] +ActiveLang= +ProjectLang= +RootDir=C:\Archivos de programa\Borland\Delphi7\Bin\ +[Version Info] +IncludeVerInfo=1 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=3082 +CodePage=1252 +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= +[Excluded Packages] +C:\Archivos de programa\Developer Express Inc\Lib\D7\dxPScxSchedulerLnkD7.bpl=ExpressPrinting System ReportLink for ExpressScheduler by Developer Express Inc. +[HistoryLists\hlDebugSourcePath] +Count=1 +Item0=D:\Proyectos\Componentes\GUISDK\Sources\;D:\Proyectos\Componentes\PluginSDK\Source\;D:\Proyectos\FactuGES (Estudio)\Codigo\Modulos\Contactos\Cliente;D:\Proyectos\FactuGES (Estudio)\Codigo\Modulos\Contactos\Reglas +[HistoryLists\hlUnitAliases] +Count=1 +Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +[HistoryLists\hlSearchPath] +Count=16 +Item0=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente;..\..\Asientos\Cliente;..\..\Cuentas\Cliente +Item1=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente;..\..\Asientos\Cliente +Item2=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente +Item3=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente +Item4=..\Modulos\Presupuestos\Reglas;..\Modulos\Contactos\Reglas;..\Base;..\Configuracion;..\Usuarios;..\Modulos\Albaranes de cliente\Reglas +Item5=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\Base;..\Configuracion;..\Usuarios;..\Modulos\Intervalos;..\Modulos\Documentos asociados;..\Modulos\Contactos\Cliente;..\Modulos\Contactos\Reglas;..\Modulos\Presupuestos\Cliente;..\Modulos\Presupuestos\Reglas;..\Modulos\Albaranes de cliente\Cliente;..\Modulos\Albaranes de cliente\Reglas;..\Modulos\Facturas de cliente\Cliente;..\Modulos\Facturas de cliente\Reglas;..\Modulos\Pedidos a proveedor\Cliente;..\Modulos\Pedidos a proveedor\Reglas;..\Modulos\Facturas de proveedor\Cliente;..\Modulos\Facturas de proveedor\Reglas;..\Modulos\Montajes\Reglas;..\Modulos\Montajes\Cliente;..\Modulos\Articulos\Cliente;..\Modulos\Articulos\Reglas;..\Modulos\Almacenes\Reglas;..\Modulos\Almacenes\Cliente;..\Modulos\Pagos\Reglas;..\Modulos\Pagos\Cliente;..\Modulos\Cuentas\Reglas;..\Modulos\Cuentas\Cliente;..\Modulos\Asientos\Reglas;..\Modulos\Asientos\Cliente;..\Modulos\Calendarios\Cliente;..\Modulos\Calendarios\Reglas +Item6=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente;..\..\Documentos asociados;..\..\Contactos\Cliente;..\..\Almacenes\Cliente +Item7=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados +Item8=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente;..\..\Documentos asociados;..\..\Contactos\Cliente +Item9=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente;..\..\Documentos asociados +Item10=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente +Item11=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados;..\..\Montajes\Cliente;..\..\Almacenes\Cliente +Item12=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados;..\..\Montajes\Cliente +Item13=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\Servidor +Item14=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\base;..\Modulos\Calendarios\Cliente;..\Modulos\Calendarios\Reglas +Item15=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\Base;..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios +[HistoryLists\hlUnitOutputDirectory] +Count=1 +Item0=.\ +[HistoryLists\hlOutputDirectorry] +Count=2 +Item0=..\Output\Servidor +Item1=..\Output\Cliente +[HistoryLists\hlBPLOutput] +Count=3 +Item0=..\..\..\Output\Cliente +Item1=..\Output\Cliente +Item2=..\..\Output\Cliente +[HistoryLists\hlDCPOutput] +Count=1 +Item0=.\ diff --git a/Modulos/Asientos/Cliente/Asientos.dpk b/Modulos/Asientos/Cliente/Asientos.dpk new file mode 100644 index 0000000..b111c0f --- /dev/null +++ b/Modulos/Asientos/Cliente/Asientos.dpk @@ -0,0 +1,85 @@ +package Asientos; + +{$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 + rtl, + vcl, + PluginSDK_D7R, + GUISDK_D7, + ccpack70, + designide, + vclactnband, + vclx, + cfpack, + JvAppFrmD7R, + JvStdCtrlsD7R, + vcljpg, + JvCoreD7R, + JvSystemD7R, + PngComponentsD7, + PNG_D7, + dbrtl, + dsnap, + adortl, + vcldb, + BaseD7, + Usuarios, + cxLibraryVCLD7, + dxThemeD7, + dxPSCoreD7, + dxComnD7, + cxDataD7, + cxEditorsVCLD7, + cxGridVCLD7, + cxPageControlVCLD7, + cxExtEditorsVCLD7, + cxExportVCLD7, + cxIntlPrintSys3D7, + dxPScxCommonD7, + dxPSLnksD7, + vclshlctrls, + dxPScxGridLnkD7, + dclcxLibraryVCLD7, + JvPageCompsD7R, + tb2k_d7, + tbx_d7, + Cuentas, + Intervalos, + dxLayoutControlD7; + +contains + uPluginControllerAsientos in 'uPluginControllerAsientos.pas' {ModuleAsientos: TModuleController}, + uDataModuleAsientos in 'uDataModuleAsientos.pas' {dmAsientos: TDAClientDataModule}, + uBizAsientos in '..\Reglas\uBizAsientos.pas', + uViewAsientos in 'uViewAsientos.pas' {frViewAsientos: TCustomView}, + uEditorAsientos in 'uEditorAsientos.pas' {fEditorAsientos: TCustomEditor}, + uViewAsiento in 'uViewAsiento.pas' {frViewAsiento: TCustomView}, + uEditorAsiento in 'uEditorAsiento.pas' {fEditorAsiento: TCustomEditor}, + uCerrarCaja in 'uCerrarCaja.pas' {frCerrarCaja}, + schAsientosClient_Intf in '..\Reglas\schAsientosClient_Intf.pas', + schAsientosServer_Intf in '..\Reglas\schAsientosServer_Intf.pas'; + +end. diff --git a/Modulos/Asientos/Cliente/Asientos.drc b/Modulos/Asientos/Cliente/Asientos.drc new file mode 100644 index 0000000..a5d5271 --- /dev/null +++ b/Modulos/Asientos/Cliente/Asientos.drc @@ -0,0 +1,14 @@ +/* VER150 + Generated by the Borland Delphi Pascal Compiler + because -GD or --drc was supplied to the compiler. + + This file contains compiler-generated resources that + were bound to the executable. + If this file is empty, then no compiler-generated + resources were bound to the produced executable. +*/ + +STRINGTABLE +BEGIN +END + diff --git a/Modulos/Asientos/Cliente/Asientos.res b/Modulos/Asientos/Cliente/Asientos.res new file mode 100644 index 0000000..ec5f233 Binary files /dev/null and b/Modulos/Asientos/Cliente/Asientos.res differ diff --git a/Modulos/Asientos/Cliente/uCerrarCaja.ddp b/Modulos/Asientos/Cliente/uCerrarCaja.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Asientos/Cliente/uCerrarCaja.ddp differ diff --git a/Modulos/Asientos/Cliente/uCerrarCaja.dfm b/Modulos/Asientos/Cliente/uCerrarCaja.dfm new file mode 100644 index 0000000..56e41fc --- /dev/null +++ b/Modulos/Asientos/Cliente/uCerrarCaja.dfm @@ -0,0 +1,90 @@ +object frCerrarCaja: TfrCerrarCaja + Left = 489 + Top = 479 + BorderStyle = bsDialog + Caption = 'Cerrar caja' + ClientHeight = 144 + ClientWidth = 313 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + Position = poMainFormCenter + PixelsPerInch = 96 + TextHeight = 13 + object Label3: TLabel + Left = 37 + Top = 43 + Width = 77 + Height = 13 + Caption = 'Fecha de cierre:' + end + object Label2: TLabel + Left = 8 + Top = 8 + Width = 171 + Height = 13 + Caption = 'Por favor, indique la fecha de cierre:' + end + object Label1: TLabel + Left = 40 + Top = 72 + Width = 229 + Height = 26 + Caption = + 'Todos los asientos anterior a esa fecha de cierre'#13#10'no se podr'#225'n ' + + 'modificar.' + end + object eFechaCierre: TcxDateEdit + Left = 120 + Top = 40 + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.Kind = lfStandard + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.Kind = lfStandard + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.Kind = lfStandard + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 0 + Width = 154 + end + object pnlSeleccion: TPanel + Left = 0 + Top = 107 + Width = 313 + Height = 37 + Align = alBottom + BevelOuter = bvNone + ParentBackground = True + TabOrder = 1 + DesignSize = ( + 313 + 37) + object bAceptar: TButton + Left = 150 + Top = 7 + Width = 74 + Height = 23 + Anchors = [akRight] + Caption = '&Aceptar' + Default = True + ModalResult = 1 + TabOrder = 0 + end + object bCancelar: TButton + Left = 231 + Top = 7 + Width = 74 + Height = 23 + Anchors = [akRight] + Cancel = True + Caption = '&Cancelar' + ModalResult = 2 + TabOrder = 1 + end + end +end diff --git a/Modulos/Asientos/Cliente/uCerrarCaja.pas b/Modulos/Asientos/Cliente/uCerrarCaja.pas new file mode 100644 index 0000000..aaf9da7 --- /dev/null +++ b/Modulos/Asientos/Cliente/uCerrarCaja.pas @@ -0,0 +1,32 @@ +unit uCerrarCaja; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, cxControls, cxContainer, cxEdit, cxTextEdit, cxMaskEdit, + cxDropDownEdit, cxCalendar, StdCtrls, ExtCtrls; + +type + TfrCerrarCaja = class(TForm) + Label3: TLabel; + eFechaCierre: TcxDateEdit; + pnlSeleccion: TPanel; + bAceptar: TButton; + bCancelar: TButton; + Label2: TLabel; + Label1: TLabel; + private + { Private declarations } + public + { Public declarations } + end; + +var + frCerrarCaja: TfrCerrarCaja; + +implementation + +{$R *.dfm} + +end. diff --git a/Modulos/Asientos/Cliente/uDataModuleAsientos.ddp b/Modulos/Asientos/Cliente/uDataModuleAsientos.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Asientos/Cliente/uDataModuleAsientos.ddp differ diff --git a/Modulos/Asientos/Cliente/uDataModuleAsientos.dfm b/Modulos/Asientos/Cliente/uDataModuleAsientos.dfm new file mode 100644 index 0000000..d754360 Binary files /dev/null and b/Modulos/Asientos/Cliente/uDataModuleAsientos.dfm differ diff --git a/Modulos/Asientos/Cliente/uDataModuleAsientos.pas b/Modulos/Asientos/Cliente/uDataModuleAsientos.pas new file mode 100644 index 0000000..302fb50 --- /dev/null +++ b/Modulos/Asientos/Cliente/uDataModuleAsientos.pas @@ -0,0 +1,193 @@ +unit uDataModuleAsientos; + +interface + +uses {vcl:} SysUtils, Classes, DB, DBClient, + {RemObjects:} uDAClientDataModule, uDADataTable, uDABINAdapter, + uROServiceComponent, uRORemoteService, uROClient, uROBinMessage, + uROWinInetHttpChannel, uDAScriptingProvider, uDACDSDataTable, + uBizAsientos; + +type + TdmAsientos = class(TDAClientDataModule) + DABINAdapter: TDABINAdapter; + RORemoteService: TRORemoteService; + tbl_Asientos: TDACDSDataTable; + ds_Asientos: TDADataSource; + procedure DAClientDataModuleCreate(Sender: TObject); + private + public + function GetItems: IBizAsiento; + function GetItem(Codigo:Integer): IBizAsiento; + procedure Preview; + function AsignarPunteado(const CodigoCuenta: Integer; const FechaIni: DateTime; const FechaFin: TDateTime; const ValorPunteado: Integer): boolean; + function darPenultimoCierre(const CodigoCuenta: Integer): TDateTime; + function darSumaAcumulada(const CodigoCuenta: Integer; const FechaIni: DateTime; const FechaFin: DateTime): Currency; + procedure anadirAsiento(pDatos: TDatosAsiento); + end; + +var + dmAsientos: TdmAsientos; + +implementation + +{$R *.DFM} + +uses + Controls, Forms, uDAInterfaces, DataAbstract_Intf, FactuGES_Intf, + uDataTableUtils, uROTypes, uEditorPreview, + Dialogs, schAsientosClient_Intf, uDataModuleBase, uDBSelectionList, + uDataModuleCuentas; + +procedure TdmAsientos.anadirAsiento(pDatos: TDatosAsiento); +var + AAsiento: IBizAsiento; +begin + try + AAsiento := GetItem(-1); + AAsiento.Cuenta.OnCuentaChanged := Nil; + AAsiento.Cuenta.LocalizarCuenta(pDatos.CodigoCuenta); + with AAsiento do + begin + DataTable.Active := True; + Insert; + CODIGOCUENTA := pDatos.CodigoCuenta; + FECHAASIENTO := pDatos.FechaAsiento; + CODIGOPAGO := pDatos.CodigoPago; + DESCRIPCION := pDatos.Descripcion; + IMPORTE := pDatos.Importe; + Post; + DataTable.ApplyUpdates; + AAsiento := NIL; + end; + except + on E:Exception do begin + AAsiento.DataTable.CancelUpdates; + AAsiento := NIL; + raise; + end; + end; +end; + +function TdmAsientos.AsignarPunteado(const CodigoCuenta: Integer; const FechaIni: TDateTime; const FechaFin: TDateTime; const ValorPunteado: Integer): boolean; +begin + Result := (RORemoteService as IsrvAsientos).AsignarPunteo(CodigoCuenta, FechaIni, FechaFin, ValorPunteado); +end; + +procedure TdmAsientos.DAClientDataModuleCreate(Sender: TObject); +begin + RORemoteService.Channel := dmBase.Channel; + RORemoteService.Message := dmBase.Message; +end; + +function TdmAsientos.darPenultimoCierre(const CodigoCuenta: Integer): TDateTime; +begin + Result := (RORemoteService as IsrvAsientos).darPenultimoCierre(CodigoCuenta); +end; + +function TdmAsientos.darSumaAcumulada(const CodigoCuenta: Integer; const FechaIni, FechaFin: DateTime): Currency; +begin + Result := (RORemoteService as IsrvAsientos).darSumaAcumulada(CodigoCuenta, FechaIni, FechaFin); +end; + +function TdmAsientos.GetItem(Codigo: Integer): IBizAsiento; +var + AAsiento : IBizAsiento; +begin + AAsiento:= GetItems; + with AAsiento.DataTable.Where do + AddText(fld_AsientosCODIGO + ' = ' + IntToStr(Codigo)); + Result := AAsiento; +end; + +function TdmAsientos.GetItems: IBizAsiento; +var + dtAsientos: TDACDSDataTable; + ACursor: TCursor; +begin + ACursor := Screen.Cursor; + Screen.Cursor := crHourGlass; + try + dtAsientos := TDACDSDataTable.Create(NIL); + CloneDataTable(tbl_Asientos, dtAsientos); + dtAsientos.BusinessRulesID := 'BizAsiento'; + Result := (dtAsientos as IBizAsiento); + finally + Screen.Cursor := ACursor; + end; +end; + +procedure TdmAsientos.Preview; +var + AStream: TMemoryStream; + AEditorPreview : TfEditorPreview; +begin +{ AStream := Binary.Create; + AEditorPreview := TfEditorPreview.Create(Application); + try + AStream := (RemoteService as ISrvContactos).GenerateReport; + AEditorPreview.Report.PreviewPages.LoadFromStream(AStream); + AEditorPreview.ShowModal; + finally + AEditorPreview.Release; + AStream.Free; + end; +} +end; + +{function TdmCuentas.GetCliente(Codigo: Integer): IBizCliente; +var +// dtContactos: TDACDSDataTable; +// dtCategorias: TDACDSDataTable; +// ACursor: TCursor; +begin +{ ACursor := Screen.Cursor; + Screen.Cursor := crHourGlass; + try + dtContactos := TDACDSDataTable.Create(NIL); + CloneDataTable(tbl_Contactos, dtContactos); + dtContactos.BusinessRulesID := 'BizCliente'; + + dtCategorias := TDACDSDataTable.Create(NIL); + CloneDataTable(tbl_CategoriasContacto, dtCategorias); + dtCategorias.BusinessRulesID := 'BizCategoria'; + (dtContactos as IBizContacto).Categorias := (dtCategorias as IBizCategoriasContacto); + + Result := (dtContactos as IBizCliente); + GetCliente(Result, Codigo); + finally + Screen.Cursor := ACursor; + end; +end; +} + +{function TdmAsientos.GetItem(Codigo: Integer): IBizCuenta; +var + ACuenta: IBizCuenta; +begin + ACuenta := GetItems; + with ACuenta.DataTable do + begin + if Active then Active := False; + Where.Clear; + Where.AddCondition(fld_CuentasCODIGO, cEqual, Codigo); + Active := True; + end; + Result := ACuenta; +end; + +{function TdmAsientos.PuedoEliminarCuenta(Codigo: Integer): Boolean; +begin + Result := (RORemoteService as IsrvCuentas).PuedoEliminarCuenta(Codigo); +end; +} + + +initialization + dmAsientos := TdmAsientos.Create(nil); + +finalization + FreeAndNil(dmAsientos); + +end. + diff --git a/Modulos/Asientos/Cliente/uEditorAsiento.ddp b/Modulos/Asientos/Cliente/uEditorAsiento.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Asientos/Cliente/uEditorAsiento.ddp differ diff --git a/Modulos/Asientos/Cliente/uEditorAsiento.dfm b/Modulos/Asientos/Cliente/uEditorAsiento.dfm new file mode 100644 index 0000000..00a5c64 --- /dev/null +++ b/Modulos/Asientos/Cliente/uEditorAsiento.dfm @@ -0,0 +1,160 @@ +inherited fEditorAsiento: TfEditorAsiento + Left = 468 + Top = 411 + Width = 638 + Height = 382 + HorzScrollBar.Visible = False + VertScrollBar.Visible = False + Caption = 'Ficha de cuenta' + Scaled = False + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + Width = 630 + Caption = 'Cuenta' + inherited Image1: TImage + Left = 603 + Picture.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001800 + 0000180806000000E0773DF80000000970485973000017120000171201679FD2 + 520000000467414D410000B18E7CFB5193000002F14944415478DAB5960B4814 + 411CC6BFBD67E74964266260986447A8216A6686585964929251529410598969 + 709C65566A6826667948662565080549450749412F2AA21222148C42E8454660 + 6698A9F7DADB6B678E3D1F3BA517F687657761E6FBFDBF6F66D8E5DC6E37FE67 + 71D283E561D7A4A4ACD4686E2A632B6BCFA2E3EE396E14B0E99ADB92BF081B56 + 453127F40F0CE3DB8F21747FEAA3EF86B02004CDD663CE2C7FE6F8D8B4BDE8E8 + 35009D468E23E2F09F074B8E9E02F2DAECB2094D195AEFC4F6B606A8940AE4DF + 7630C5C9582F60C15CC80013ABBB1F303FB7A3719D1A09EB0BF1D4520FD30337 + 4C495A1802D911F90420E570BAE0E45D48CE32E2D17533542A05D42A2575A250 + 70BE015811995773E079012B379B70BFF5A428AC44F1638ED98C4F1191CE3BFB + 94687E654775328F355B0EE0CE951338FA4283DC382D22031CD069D532175302 + 08821B56BB9376CEBB484402D2B71FC4AD966A3122A51891823AD1CD50CBA2F2 + 39A28A650E11E442E68EC3B8D95C45058FBDD4FD5B44A473DE25D045B5890EDE + 8FE86944876287B131B714ADE72B50D73513654BACD4098968E2A2FF1190B922 + D22B4EA2F144E4C2AF11078D247B4F392E9F29A7621AB547D01391721C243EBD + 800D58BBDC00E33D4166BB287A9042730A2B71A9FE08153AFD36801951439A0A + 8919FBD880D4A511B463A7E882DC6D0E1EED3F03F1E4831DF911DFB1D3781C4D + A74A70F1633052C2B588D7F7C18F3818B3E8C409392F4C404A5CB8579C444400 + A473E9CADB5F83C69A626F1CE4D2EB343496B110725E9880A49830943D53CB6C + EF9ADF4B810525B5A8AF2AA2C22D3D21CC88A4F3C2042444857AF6BD20D0FB88 + CD8181412BAEF686625BC817184BEB60AE34D1F7ADC13DD0FB69C48834E3169D + 3821E7850958BC30840A4B91586D4E7A275B9794A9DC4C0152912D4976911497 + 0422DB9909201F8AE92A1980D46EFECDB4885F783DE87998084067FBB439404C + 2230F479F493F9D7C15203634B9C3C69DDC8E6B8C947311A78F7957E6FA73295 + FBDFBF2DBF01AB269FECD6A6E3080000000049454E44AE426082} + end + end + inherited TBXDock: TTBXDock + Width = 630 + inherited tbxMain: TTBXToolbar + inherited TBXItem2: TTBXItem + Visible = False + end + inherited TBXItem5: TTBXItem + Visible = False + end + inherited TBXItem23: TTBXItem + Visible = False + end + inherited TBXItem3: TTBXItem + Visible = False + end + end + inherited tbxMenu: TTBXToolbar + DockPos = 0 + inherited TBXSubmenuItem4: TTBXSubmenuItem + inherited TBXItem8: TTBXItem + Visible = False + end + inherited TBXSeparatorItem5: TTBXSeparatorItem + Visible = False + end + inherited TBXItem10: TTBXItem + Visible = False + end + inherited TBXSeparatorItem6: TTBXSeparatorItem + Visible = False + end + inherited TBXItem21: TTBXItem + Visible = False + end + inherited TBXItem22: TTBXItem + Visible = False + end + inherited TBXItem9: TTBXItem + Visible = False + end + end + inherited TBXSubmenuItem1: TTBXSubmenuItem + inherited TBXItem32: TTBXItem + Visible = False + end + inherited TBXItem31: TTBXItem + Visible = False + end + inherited TBXSeparatorItem13: TTBXSeparatorItem + Visible = False + end + end + end + end + inherited pgPaginas: TPageControl + Width = 630 + Height = 253 + inherited pagGeneral: TTabSheet + Constraints.MinHeight = 140 + inline frViewAsiento1: TfrViewAsiento + Left = 0 + Top = 0 + Width = 622 + Height = 225 + Align = alClient + AutoSize = True + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 0 + ReadOnly = False + inherited dxLayoutControl1: TdxLayoutControl + Width = 622 + Height = 225 + inherited edtFecha: TcxDBDateEdit + Width = 150 + end + inherited eDescripcion: TcxDBTextEdit + Width = 413 + end + inherited cxCurrencyEdit5: TcxDBCurrencyEdit + Left = 372 + Width = 150 + end + end + end + end + end + inherited StatusBar: TStatusBar + Top = 329 + Width = 630 + end + inherited EditorActionList: TActionList + Top = 128 + end + inherited SmallImages: TPngImageList + Top = 112 + end + inherited dsDataTable: TDADataSource [6] + OnDataChange = dsDataTableDataChange + Left = 168 + Top = 120 + end + inherited LargeImages: TPngImageList [7] + Top = 112 + end + inherited JvFormStorage: TJvFormStorage [8] + end + inherited JvAppRegistryStorage: TJvAppRegistryStorage [9] + end +end diff --git a/Modulos/Asientos/Cliente/uEditorAsiento.pas b/Modulos/Asientos/Cliente/uEditorAsiento.pas new file mode 100644 index 0000000..edbbfcc --- /dev/null +++ b/Modulos/Asientos/Cliente/uEditorAsiento.pas @@ -0,0 +1,151 @@ +unit uEditorAsiento; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uEditorDBItem, ToolWin, ComCtrls, JvExControls, JvComponent, + uViewAsiento, uBizAsientos, JvNavigationPane, ActnList, + uEditorBase, StdActns, TB2Dock, TB2Toolbar, TBX, ImgList, PngImageList, + TB2Item, uEditorItem, DB, uDADataTable, uEditorDBBase, JvFormAutoSize, + uDAScriptingProvider, uDACDSDataTable, StdCtrls, pngimage, ExtCtrls, + TBXDkPanels, JvButton, AppEvnts, uCustomView, uViewBase, uViewMensaje, + JvAppStorage, JvAppRegistryStorage, JvFormPlacement, + + uViewAsientos; + +type + IEditorAsiento = interface(IEditorDBItem) + ['{D61A23CA-1C89-4734-B52C-CFD5AB807F3E}'] + function GetAsiento: IBizAsiento; + procedure SetAsiento(const Value: IBizAsiento); + property Asiento: IBizAsiento read GetAsiento write SetAsiento; + end; + + TfEditorAsiento = class(TfEditorDBItem, IEditorAsiento) + frViewAsiento1: TfrViewAsiento; + procedure FormShow(Sender: TObject); + procedure dsDataTableDataChange(Sender: TObject; Field: TField); + procedure actEliminarExecute(Sender: TObject); + private + FAsiento: IBizAsiento; + FViewAsiento : IViewAsiento; + protected + function GetAsiento: IBizAsiento; virtual; + procedure SetAsiento(const Value: IBizAsiento); virtual; + + function GetViewAsiento: IViewAsiento; + procedure SetViewAsiento(const Value: IViewAsiento); + property ViewAsiento: IViewAsiento read GetViewAsiento write + SetViewAsiento; + public + property Asiento: IBizAsiento read GetAsiento write SetAsiento; + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + end; + +implementation + +{$R *.dfm} + +uses + uCustomEditor, uDataModuleAsientos, uDataModuleBase, uEditorUtils; + +function ShowEditorAsiento (ABizObject : TDADataTableRules): TModalResult; +var + AEditor: TfEditorAsiento; +begin + AEditor := TfEditorAsiento.Create(Application); + try + AEditor.Asiento := (ABizObject as IBizAsiento); + Result := AEditor.ShowModal; + finally + AEditor.Release; + end; +end; + +{ +******************************* TfEditorAsiento ******************************* +} +function TfEditorAsiento.GetAsiento: IBizAsiento; +begin + Result := FAsiento; +end; + +function TfEditorAsiento.GetViewAsiento: IViewAsiento; +begin + Result := FViewAsiento; +end; + +procedure TfEditorAsiento.SetAsiento(const Value: IBizAsiento); +begin + FAsiento := Value; + dsDataTable.DataTable := FAsiento.DataTable; + + if Assigned(FViewAsiento) and Assigned(Asiento) then + FViewAsiento.Asiento := Asiento; +end; + +procedure TfEditorAsiento.SetViewAsiento(const Value: IViewAsiento); +begin + FViewAsiento := Value; + + if Assigned(FViewAsiento) and Assigned(Asiento) then + FViewAsiento.Asiento := Asiento; +end; + +procedure TfEditorAsiento.FormShow(Sender: TObject); +begin + inherited; + + if not Assigned(FViewAsiento) then + raise Exception.Create('No hay ninguna vista asignada'); + + if not Assigned(Asiento) then + raise Exception.Create('No hay ningún almacén asignado'); + + Asiento.DataTable.Active := True; + FViewAsiento.ShowEmbedded(pagGeneral); + FViewAsiento.SetFocus; +end; + +destructor TfEditorAsiento.Destroy; +begin + FViewAsiento := NIL; + FAsiento := NIL; + inherited; +end; + +constructor TfEditorAsiento.Create(AOwner: TComponent); +begin + inherited; +// ViewAsiento := CreateView(TfrViewAsiento) as IViewAsiento; + ViewAsiento := frViewAsiento1; +end; + +procedure TfEditorAsiento.dsDataTableDataChange(Sender: TObject; + Field: TField); +begin + inherited; + if Assigned(FAsiento) and (not (FAsiento.DataTable.Fetching) or + not (FAsiento.DataTable.Opening) or not (FAsiento.DataTable.Closing)) then + begin + if Length(FAsiento.DESCRIPCION) = 0 then + JvNavPanelHeader.Caption := 'Nuevo asiento en ' + FAsiento.Cuenta.NOMBRE + else + JvNavPanelHeader.Caption := 'Asiento en ' + FAsiento.Cuenta.NOMBRE + ' - ' + FAsiento.DESCRIPCION; + Caption := JvNavPanelHeader.Caption; + end; +end; + +procedure TfEditorAsiento.actEliminarExecute(Sender: TObject); +begin + if (Application.MessageBox('¿Desea borrar este asiento?', 'Atención', MB_YESNO) = IDYES) then + inherited; +end; + +initialization + RegisterEditor(IBizAsiento, ShowEditorAsiento, etItem); + +end. + diff --git a/Modulos/Asientos/Cliente/uEditorAsientos.ddp b/Modulos/Asientos/Cliente/uEditorAsientos.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Asientos/Cliente/uEditorAsientos.ddp differ diff --git a/Modulos/Asientos/Cliente/uEditorAsientos.dfm b/Modulos/Asientos/Cliente/uEditorAsientos.dfm new file mode 100644 index 0000000..a47dd1f --- /dev/null +++ b/Modulos/Asientos/Cliente/uEditorAsientos.dfm @@ -0,0 +1,1514 @@ +inherited fEditorAsientos: TfEditorAsientos + Left = 186 + Top = 225 + Width = 910 + Caption = 'fEditorAsientos' + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + Width = 902 + inherited Image1: TImage + Left = 875 + Picture.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001800 + 0000180806000000E0773DF80000000970485973000017120000171201679FD2 + 520000000467414D410000B18E7CFB5193000002F14944415478DAB5960B4814 + 411CC6BFBD67E74964266260986447A8216A6686585964929251529410598969 + 709C65566A6826667948662565080549450749412F2AA21222148C42E8454660 + 6698A9F7DADB6B678E3D1F3BA517F687657761E6FBFDBF6F66D8E5DC6E37FE67 + 71D283E561D7A4A4ACD4686E2A632B6BCFA2E3EE396E14B0E99ADB92BF081B56 + 453127F40F0CE3DB8F21747FEAA3EF86B02004CDD663CE2C7FE6F8D8B4BDE8E8 + 35009D468E23E2F09F074B8E9E02F2DAECB2094D195AEFC4F6B606A8940AE4DF + 7630C5C9582F60C15CC80013ABBB1F303FB7A3719D1A09EB0BF1D4520FD30337 + 4C495A1802D911F90420E570BAE0E45D48CE32E2D17533542A05D42A2575A250 + 70BE015811995773E079012B379B70BFF5A428AC44F1638ED98C4F1191CE3BFB + 94687E654775328F355B0EE0CE951338FA4283DC382D22031CD069D532175302 + 08821B56BB9376CEBB484402D2B71FC4AD966A3122A51891823AD1CD50CBA2F2 + 39A28A650E11E442E68EC3B8D95C45058FBDD4FD5B44A473DE25D045B5890EDE + 8FE86944876287B131B714ADE72B50D73513654BACD4098968E2A2FF1190B922 + D22B4EA2F144E4C2AF11078D247B4F392E9F29A7621AB547D01391721C243EBD + 800D58BBDC00E33D4166BB287A9042730A2B71A9FE08153AFD36801951439A0A + 8919FBD880D4A511B463A7E882DC6D0E1EED3F03F1E4831DF911DFB1D3781C4D + A74A70F1633052C2B588D7F7C18F3818B3E8C409392F4C404A5CB8579C444400 + A473E9CADB5F83C69A626F1CE4D2EB343496B110725E9880A49830943D53CB6C + EF9ADF4B810525B5A8AF2AA2C22D3D21CC88A4F3C2042444857AF6BD20D0FB88 + CD8181412BAEF686625BC817184BEB60AE34D1F7ADC13DD0FB69C48834E3169D + 3821E7850958BC30840A4B91586D4E7A275B9794A9DC4C0152912D4976911497 + 0422DB9909201F8AE92A1980D46EFECDB4885F783DE87998084067FBB439404C + 2230F479F493F9D7C15203634B9C3C69DDC8E6B8C947311A78F7957E6FA73295 + FBDFBF2DBF01AB269FECD6A6E3080000000049454E44AE426082} + end + end + inherited TBXDock: TTBXDock + Width = 902 + inherited tbxMain: TTBXToolbar + inherited TBXItem33: TTBXItem + Visible = False + end + object TBXItem36: TTBXItem [8] + Action = actPuntear + DisplayMode = nbdmImageAndText + end + object TBXItem39: TTBXItem [9] + Action = actCerrarCaja + DisplayMode = nbdmImageAndText + end + end + inherited tbxMenu: TTBXToolbar + object TBXSubmenuItem2: TTBXSubmenuItem [3] + Caption = '&Herramientas' + object TBXSeparatorItem16: TTBXSeparatorItem + end + object TBXItem38: TTBXItem + Action = actCerrarCaja + end + end + end + inherited tbxFiltro: TTBXToolbar + Left = 601 + inherited TBXItem37: TTBXItem + Visible = False + end + end + end + inherited StatusBar: TStatusBar + Width = 902 + end + inherited EditorActionList: TActionList + inherited actNuevo: TAction + ImageIndex = 24 + OnExecute = actNuevoExecute + OnUpdate = actNuevoUpdate + end + object actCerrarCaja: TAction + Category = 'Herramientas' + Caption = 'Cerrar caja' + ImageIndex = 23 + OnExecute = actCerrarCajaExecute + OnUpdate = actCerrarCajaUpdate + end + object actPuntear: TAction + Category = 'Herramientas' + Caption = 'Puntear asiento' + ImageIndex = 22 + OnExecute = actPuntearExecute + OnUpdate = actPuntearUpdate + 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 + 610000000970485973000017120000171201679FD252000000DD4944415478DA + 63FCFFFF3F032580716819F062EFCEFF1F776F6650EF98C248B201771A4AFFFF + B873834167C966466471A20CB816EBF7FF1F501DBA66A20CB8EC63FDFF3F3333 + 83DEC6438CD8E4F11A00B2F9C7F54B0C46671E30E2520337E0E59C89FF1F77D6 + 3128CE59C7206CEFCC08F2F3BB7993192496EE6190B3B521C2804533FF3F28CB + 60E0D0D06110296966789212C82050D8C8A05E5E87533386176E6646FFFFB07E + 1903B3802003B3842C83E1818B78356318F0F2E2A5FF0FDCF5C16CA1991B1854 + FDFD49330004AE64C7FF67770B224A33C158181A060000C2907AE143E74E3500 + 00000049454E44AE426082} + Name = 'PngImage22' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001C64944415478DA + 63FCFFFF3F03258091620340C49ADD17B19A12E2AACF884F0E64392343C0F2FF + 6BB2B518825DF43014ADDD7309ABB8BE4B1AC3255E2786FFEB2318F11A005278 + 71CF2CE20D48DEF013AE688A271383857736C389AD531972B6FF838BCF0D60C7 + EF823F7FFF317CFBF19BE1F7EFBF0C4E21050CFBD64C60E0E26465E064674571 + C1CECA60868FBB3733E0744183C537069F9872862D4B3A191A4E70A1B8E04E43 + 29C38F3B371874966C46B8C0DF51076CF3B7EF3F19BE03E99F7FFE3284A7D430 + AC9CD3C2C0CDC1CAC0C5C10E76C9FD9460867FC0D0D7FD1A8DEA05574B7586C2 + DD8880CA567BCD9098D7C4307F521DC3D45BA260B18239407F333333C47ED5C0 + 0C036B0305B0CD5FBEFF62F8FAED17380C722A3A18A67454307073B13170B467 + 31FCB87E89417ECF3570D8601860A4210DD7AC787A03C3E3CE3A06C539EB182E + B2CB31C8ED98C5F06EDE640689A57B181855B5C16183614053C714B8F377C519 + 333C28CB60E0D0D06110296966789212C82050D8C810B6FB095C0D8A01D892EA + 0D89CD0C1FD62F6360161064609690653012ACC450033100077871E1E2FF07EE + FA60B6D0CC0D0C6A0101186AC179015F6EBC921DFF9FDD2D8841D5DF1FA74500 + CD58EC9D16DF11E60000000049454E44AE426082} + Name = 'PngImage23' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD2520000013A4944415478DA + 63FCFFFF3F03258091620340C4FABD97B19A12E8ACCB884F0E64392343C8AAFF + EB333519029C7430146DD87705ABB8914716C3795E4786FFAB4319F11A005278 + 6EC734E20D48DFFC13AE68821B1383B57F3EC3D18D13190A76FD838BCFF465C7 + EF823F7FFF317CFFF19BE1F79FBF0C2EE1250C7B56F6307072B03270B2B392E6 + 825AB3EF0C7EF1550C9B16B631349FE224EC021F7B2DB0CDDF7EFC02D3BF802E + 8848AF675831B391810BE8022E0E36B84BB01AE06CAECA50B20F115099AA6F18 + 920A5A19E64DA866987E5B04236C300CB0D49707DBFCF5FB2F30FEFDFB2F436E + 5537C3E4B652066E2E36062E4E36B84B406183618081BA145CF337200681A2BA + 3E86BEA62206561666144340618361405317667CE30328066055C12387607F79 + 845509C4005C00D9E0356158D581F302A5B911006305C5E10A57158000000000 + 49454E44AE426082} + Name = 'PngImage24' + Background = clWindow + end> + 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 + F80000000970485973000017120000171201679FD252000003C14944415478DA + DD956B6C145514C7CFBD33B33BBBB3BBECDA076C312D4D8BB32D260514A8224D + 4B6A434552A97E8146A2A698E023061AA90D06121362216A8941340B7ED0F882 + 98AA2D446A6137A6560D1A5B694B6D8DB12275B7BB9D7DCCBEE7E95D34C40F4B + 6D453EE8F93693B9FFDF39F7FCCF19A4EB3ADCCC40FF2F80BFBD1514DF15887D + E905F6AE3AE076B683EE28043D9D045015D0E222E8011F68420010C300A21900 + 8A02A68CEFD034EDA9C480C7AA08815FF9232756FC5B001AB1EC72ECC83BAEC4 + C4F5E9B18BA0C6A20201E4DF18203803C8C000E6381EB166776A62A4263D391E + C556FB3E643479F92EF7A51B038467015B6C778294DC93FCF6EB6DA9D1A1511D + E36386F28A13789143E68FBCF90F7B20464117C3E439550891803B33F55353FC + BB0B008ADC41B16C275DEA02C0185CAFBFB34040320EA0A9A046C280D3C90A2D + 1E3B1A7EEBD56A391236DB9E781E98DB2A5F9006FB0F485F7900885EE527030B + 00D80BC82115409648156A95323EFC6CECDCE996D4A58BC0ACAD49DBDB0EF6D3 + A52547F570E2B3B4A7E76AA5A5DB1F5E0060517ED631342899625D8CBE167BDF + BD2974EA5DE01E6C01DBAE8E4FB1CDF108391AC8DA15936F0101386DD4FC0096 + 47F75CBD226A6971AD1E12F686DD871BC4F3A729B4F856E09AB6BFC7D53474EA + 3A1AC19C15203B137F6A2D5DE6CC0DF0EDDEB149F14F2F895F18889A6A1B59CB + CE76BF9C4A793549DAAAFE76B93BF0F27E908301C1B2EDF14176F5BA03C692B2 + 6164BB05B0CD3E3F807F6FEB88ECBB7C7B7CD03B6BAABBCFCA3DD636969C18A9 + 8D7F7E7EA5F4F3649FE49F36E1BC2567D8751B76517905D3A6AA359A81AF0264 + E60018C3354091D3911B103ED79B9126460DB3C70E93BE5260DED2AC52FC8A5E + B1EF0C23F6F537B20DF76253FD031EE2C44650248971160395BF98F48888E3EC + BDFFA155B2F68EDC80A420F4A47F1CAF0A767614C43C5F98A82207B075F74366 + 6A0212DF0FA9B627F74D59363FF4912A045F24D986F44C0AB4ACBBB21A7FD1E1 + 9B9B730352B3418734E3AB16FB7BBB421FBECD27872741A748768546A05DAB42 + 96A696DDE655D5DD4A58485C4B374794D7D7E5060853BF645D5646066820F4C6 + 2167F0F80790D6004CAE22B0B7EDD798E2E59B11466729987BC597D76FCC0D98 + 99F603A2E80A6434BF14711FDA30D3F58A555669B0366F91ACAD6DC3640D3CA7 + 25625E449A3057B8EEA9BE0EE08A8FBC412C59C3A5D19E9307239EBEAD74E56A + 30AE5CF303CE2BD8A12BCA18685A12FE262A6AD7CF09C85601D1B31F3F1D1BFA + A6DD70F746A097F1DD64929FD165655EBFBFEB026E46FCF701BF032AFB53EF33 + 8209D90000000049454E44AE426082} + Name = 'PngImage21' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD252000004264944415478DA + B5967B50546518C69FB3B7B3376242B066030A6DC455113418146C2885A29466 + 09AAB1098B61642C0DBB008A30850C625C9224D4092C3596312612A69C8471D0 + 9C90C6F112CBBAC11FD28D21B918E2427B3DBBA773BECD75D6B31834D3FBD7F7 + CDBCDFF37BBFE77DCF85625916FF6750B717ADA70DFF4ACA4C89A666935BF641 + 3DFABA1AA93B00DD71B675EB1264242FF77BE0C6CDBF303A3185815FC6C87E71 + C47CCC0F5221E4FE00BFF9D1C9B9E81B8B048CF914C58B43FD305A5F5511404E + BB5D70E0531DED3D78F1D42148C4226CFEDAE1579CCFF502163E0401E0EEE8BF + 01D474DBF1C906291E4BDD829E6FEA91D7C9227F0D0D6DB07F8BE604E0C3E174 + C1C9B89090B60DE74ED4412A15412A11939B8844D4DC00FE2CAA7B9A82D3E946 + D2F379E8FAB2961316E3DD3394DF62E664115FF99531311A2FDA5199C460DD0B + 6FA3E3780D4ACED3D81C47232AC801052D15DC625600B79B85D5EE2495332E8F + 45A91BF371B2A91212CE1E8F4562281552815573B6A83CD10E86036CC8DA81F6 + A37B8960E905E57FB388AF9C71B949C5569B13D72C2A625149EC3474AF15A1A5 + B11CD5864094C65BC84D14B4CCA7E9948B41474B1B96DAC631D167F005A4AF8D + F28AF3D658ED0E52B9D9E2804C2242664E31F4877613315AEA1154C865C42A1E + 22E15CB20DF4E1CF331D30F68FE2A453E30B78F6712DB69D720BAE5D107D8B40 + 5F79FD7D1CA97B8F1313E32353904F8E8C659068376255F7015CBE7C15A5CEF5 + 18085BE60B48591D09869F79AEA97CE53607839EC9607C3768C7D645E3C8CE2B + 43C3BE6234FCFC209E5848234E3D06959C6B32D760EADA554CEB0FC0F2C730F6 + 39C2706C78A5B0074FC63EEA156718CE220EE0B1CB3345B9EFECC1C1AA22CE7B + 8FE7FC4DD41C40363C88A9837B6031F522F8433D8ADB7E80FEAC440858B32202 + BBBE97092CCA5D3042806F14EEC5FE8A4222FED9EF1ACE73166B03AE63695321 + 1C577AE07EAB1AE1CFA561FDA6225C1A8A10025645851321C6CD37DA0D8BD581 + 49B315CD23E1C8D20C61FBAE2AD4961790FD266E1F1A24078ED6E0E6577AC875 + 5908DC52088952459E17BF631A13A921C2B76DE1C7945FF3A33BCFD0856F8F7D + 8ED41733E08C7F0AD3941C9AFE7398AADA01366209943BAB21095B40A68B1F67 + BF00FE4331539C4E0B83F944135C6E0AA32FBD89A6F30378C6D88950058BCEC8 + 64B48EF84E9F00C04736639A1150529000B6793F260F37808E8D01AB5D01737B + 0BC499393068D6E1C28FE3DEDC23A65B9EC5DD00187A6604843E1080E2243912 + CFD6C2DCDD0BDC47835AA6457D680EDA7E6260E32CF57DE32500D3BFDDF964E2 + 5EF14F0195E92148371EC67069255C4A09E6ED2EC3CE89E5E8EC9FF27FAE7D23 + 456136C115C0BF2CE31605637BC8101E69FB18D295ABA1CE78B911AA800A6D5C + F4AF331DA5E6FADB32F84573B6B9F752059DA2BB2E5207662D8E8F31DD2BFF6F + ECF7177993923BFF0000000049454E44AE426082} + Name = 'PngImage22' + Background = clWindow + end> + Bitmap = {} + end + inherited GridPopupMenu: TPopupMenu + inherited Duplicar1: TMenuItem + Visible = False + end + object Cerrarcaja1: TMenuItem [6] + Action = actCerrarCaja + end + object N3: TMenuItem [7] + Caption = '-' + end + end +end diff --git a/Modulos/Asientos/Cliente/uEditorAsientos.pas b/Modulos/Asientos/Cliente/uEditorAsientos.pas new file mode 100644 index 0000000..8b8735a --- /dev/null +++ b/Modulos/Asientos/Cliente/uEditorAsientos.pas @@ -0,0 +1,191 @@ +unit uEditorAsientos; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uEditorGrid, Menus, DB, uDADataTable, JvAppStorage, + JvAppRegistryStorage, JvComponent, JvFormPlacement, ImgList, + PngImageList, StdActns, ActnList, ComCtrls, TB2ExtItems, TBXExtItems, + TBX, TB2Item, TB2Dock, TB2Toolbar, ExtCtrls, JvExControls, + JvNavigationPane, uBizAsientos, uViewGrid, JvComponentBase, pngimage; + +type + IEditorAsientos = interface(IEditorGrid) + ['{05667247-1AC6-4297-9B84-524A2AA3A04C}'] + function GetAsientos: IBizAsiento; + procedure SetAsientos(const Value: IBizAsiento); + property Asientos: IBizAsiento read GetAsientos write SetAsientos; + end; + + TfEditorAsientos = class(TfEditorGrid, IEditorAsientos) + actCerrarCaja: TAction; + N3: TMenuItem; + Cerrarcaja1: TMenuItem; + actPuntear: TAction; + TBXItem36: TTBXItem; + TBXSubmenuItem2: TTBXSubmenuItem; + TBXSeparatorItem16: TTBXSeparatorItem; + TBXItem38: TTBXItem; + TBXItem39: TTBXItem; + procedure FormShow(Sender: TObject); + procedure actNuevoExecute(Sender: TObject); + procedure actModificarExecute(Sender: TObject); + procedure actCerrarCajaExecute(Sender: TObject); + procedure actEliminarExecute(Sender: TObject); + procedure actCerrarCajaUpdate(Sender: TObject); + procedure actNuevoUpdate(Sender: TObject); + procedure actPuntearExecute(Sender: TObject); + procedure actPuntearUpdate(Sender: TObject); + private + FAsientos: IBizAsiento; + protected + function GetAsientos: IBizAsiento; virtual; + procedure SetAsientos(const Value: IBizAsiento); virtual; + procedure SetViewGrid(const Value: IViewGrid); override; + public + property Asientos: IBizAsiento read GetAsientos write SetAsientos; + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + end; + +var + fEditorAsientos: TfEditorAsientos; + +implementation + +{$R *.dfm} +{ TfEditorAsientos } + +uses uViewAsientos; + +constructor TfEditorAsientos.Create(AOwner: TComponent); +begin + inherited; + ViewGrid := CreateView(TfrViewAsientos) as IViewAsientos; +end; + +destructor TfEditorAsientos.Destroy; +begin + FAsientos := NIL; + inherited; +end; + +procedure TfEditorAsientos.FormShow(Sender: TObject); +begin + inherited; + + if not Assigned(ViewGrid) then + raise Exception.Create('No hay ninguna vista asignada'); + + if not Assigned(Asientos) then + raise Exception.Create('No hay ningún asiento asignado'); + + Asientos.DataTable.Active := True; +end; + +function TfEditorAsientos.GetAsientos: IBizAsiento; +begin + Result := FAsientos; +end; + +procedure TfEditorAsientos.SetAsientos(const Value: IBizAsiento); +begin + FAsientos := Value; + dsDataTable.DataTable := FAsientos.DataTable; + if Assigned(ViewGrid) then + (ViewGrid as IViewAsientos).Asientos := Asientos; +end; + +procedure TfEditorAsientos.SetViewGrid(const Value: IViewGrid); +begin + inherited; + if Assigned(ViewGrid) and Assigned(Asientos) then + (ViewGrid as IViewAsientos).Asientos := Asientos; +end; + +procedure TfEditorAsientos.actNuevoExecute(Sender: TObject); +begin + inherited; + Asientos.Insert; + Asientos.Show; + ViewGrid.RefreshGrid; + ViewGrid.SyncFocusedRecordsFromDataSet; +end; + +procedure TfEditorAsientos.actModificarExecute(Sender: TObject); +begin + inherited; + Asientos.Show; + ViewGrid.RefreshGrid; + ViewGrid.SyncFocusedRecordsFromDataSet; +end; + +procedure TfEditorAsientos.actCerrarCajaExecute(Sender: TObject); +var + ACursor: TCursor; +begin + ACursor := Screen.Cursor; + Screen.Cursor := crHourGlass; + + ViewGrid.SyncFocusedRecordsFromGrid; + Asientos.cerrarCaja; + ViewGrid.RefreshGrid; + ViewGrid.SyncFocusedRecordsFromDataSet; + + Screen.Cursor := ACursor; +end; + +procedure TfEditorAsientos.actEliminarExecute(Sender: TObject); +begin + ViewGrid.SyncFocusedRecordsFromGrid; + + if Asientos.PUNTEADO = CTE_NOPUNTEADO + then inherited + else if (Asientos.TIPOASIENTO = CTE_CIERRE) + then Asientos.eliminarCierreCaja + else raise Exception.Create('No se puede borrar un asiento que esta punteado por un cierre de caja'); + + ViewGrid.RefreshGrid; + ViewGrid.SyncFocusedRecordsFromDataSet; +end; + +procedure TfEditorAsientos.actCerrarCajaUpdate(Sender: TObject); +begin + inherited; + + if Assigned(dsDataTable.DataTable) then + (Sender as TAction).Enabled := (not dsDataTable.DataTable.IsEmpty) + and not (dsDataTable.DataTable.State = dsInsert) + else + (Sender as TAction).Enabled := False; +end; + +procedure TfEditorAsientos.actNuevoUpdate(Sender: TObject); +begin + inherited; + (Sender as TAction).Enabled := Asientos.Cuenta.RecordCount <> 0; +end; + +procedure TfEditorAsientos.actPuntearExecute(Sender: TObject); +begin + inherited; + + ViewGrid.SyncFocusedRecordsFromGrid; + Asientos.puntearAsiento; + ViewGrid.RefreshGrid; + ViewGrid.SyncFocusedRecordsFromDataSet; +end; + +procedure TfEditorAsientos.actPuntearUpdate(Sender: TObject); +begin + inherited; + + if Assigned(dsDataTable.DataTable) then + (Sender as TAction).Enabled := (not dsDataTable.DataTable.IsEmpty) + and not (dsDataTable.DataTable.State = dsInsert) + else + (Sender as TAction).Enabled := False; +end; + +end. diff --git a/Modulos/Asientos/Cliente/uPluginControllerAsientos.ddp b/Modulos/Asientos/Cliente/uPluginControllerAsientos.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Asientos/Cliente/uPluginControllerAsientos.ddp differ diff --git a/Modulos/Asientos/Cliente/uPluginControllerAsientos.dfm b/Modulos/Asientos/Cliente/uPluginControllerAsientos.dfm new file mode 100644 index 0000000..080963e --- /dev/null +++ b/Modulos/Asientos/Cliente/uPluginControllerAsientos.dfm @@ -0,0 +1,149 @@ +object ModuleAsientos: TModuleAsientos + OldCreateOrder = True + Description = 'Cuentas' + ModuleMenu = MainMenu + ModuleName = 'Cuentas' + SmallImages = SmallImages + LargeImages = LargeImages + Author = 'Rodax Software' + Version = '1.0.0' + Left = 495 + Top = 389 + Height = 252 + Width = 401 + object LargeImages: TPngImageList + Height = 24 + Width = 24 + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD252000002F14944415478DA + B5960B4814411CC6BFBD67E74964266260986447A8216A668658596492925152 + 9410598969709C65566A6826667948662565080549450749412F2AA21222148C + 42E84546606698A9F7DADB6B678E3D1F3BA517F687657761E6FBFDBF6F66D8E5 + DC6E37FE6771D283E561D7A4A4ACD4686E2A632B6BCFA2E3EE396E14B0E99ADB + 92BF081B56453127F40F0CE3DB8F21747FEAA3EF86B02004CDD663CE2C7FE6F8 + D8B4BDE8E835009D468E23E2F09F074B8E9E02F2DAECB2094D195AEFC4F6B606 + A8940AE4DF7630C5C9582F60C15CC80013ABBB1F303FB7A3719D1A09EB0BF1D4 + 520FD303374C495A1802D911F90420E570BAE0E45D48CE32E2D17533542A05D4 + 2A2575A25070BE015811995773E079012B379B70BFF5A428AC44F1638ED98C4F + 1191CE3BFB94687E654775328F355B0EE0CE951338FA4283DC382D22031CD069 + D53217530208821B56BB9376CEBB484402D2B71FC4AD966A3122A51891823AD1 + CD50CBA2F239A28A650E11E442E68EC3B8D95C45058FBDD4FD5B44A473DE25D0 + 45B5890EDE8FE86944876287B131B714ADE72B50D73513654BACD4098968E2A2 + FF1190B922D22B4EA2F144E4C2AF11078D247B4F392E9F29A7621AB547D01391 + 721C243EBD800D58BBDC00E33D4166BB287A9042730A2B71A9FE08153AFD3680 + 1951439A0A8919FBD880D4A511B463A7E882DC6D0E1EED3F03F1E4831DF911DF + B1D3781C4DA74A70F1633052C2B588D7F7C18F3818B3E8C409392F4C404A5CB8 + 579C444400A473E9CADB5F83C69A626F1CE4D2EB343496B110725E9880A49830 + 943D53CB6CEF9ADF4B810525B5A8AF2AA2C22D3D21CC88A4F3C2042444857AF6 + BD20D0FB88CD8181412BAEF686625BC817184BEB60AE34D1F7ADC13DD0FB69C4 + 8834E3169D3821E7850958BC30840A4B91586D4E7A275B9794A9DC4C0152912D + 49769114970422DB9909201F8AE92A1980D46EFECDB4885F783DE87998084067 + FBB439404C2230F479F493F9D7C15203634B9C3C69DDC8E6B8C947311A78F795 + 7E6FA73295FBDFBF2DBF01AB269FECD6A6E3080000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end> + Left = 232 + Top = 16 + Bitmap = {} + end + object ModuleActionList: TActionList + Images = LargeImages + Left = 40 + Top = 72 + object actAsientos: TAction + Category = 'Contabilidad' + Caption = 'Asientos' + ImageIndex = 0 + OnExecute = actAsientosExecute + end + end + object MainMenu: TMainMenu + Images = LargeImages + Left = 40 + Top = 16 + object menu: TMenuItem + Tag = 500 + Caption = '&Contabilidad' + GroupIndex = 1 + ImageIndex = 0 + OnClick = actAsientosExecute + object Contabilidad1: TMenuItem + Tag = 200 + Action = actAsientos + end + object N1: TMenuItem + Tag = 101 + Caption = '-' + end + end + end + object SmallImages: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD2520000013A4944415478DA + 63FCFFFF3F03258091620340C4FABD97B19A12E8ACCB884F0E64392343C8AAFF + EB333519029C7430146DD87705ABB8914716C3795E4786FFAB4319F11A005278 + 6EC734E20D48DFFC13AE68821B1383B57F3EC3D18D13190A76FD838BCFF465C7 + EF823F7FFF317CFFF19BE1F79FBF0C2EE1250C7B56F6307072B03270B2B392E6 + 825AB3EF0C7EF1550C9B16B631349FE224EC021F7B2DB0CDDF7EFC02D3BF802E + 8848AF675831B391810BE8022E0E36B84BB01AE06CAECA50B20F115099AA6F18 + 920A5A19E64DA866987E5B04236C300CB0D49707DBFCF5FB2F30FEFDFB2F436E + 5537C3E4B652066E2E36062E4E36B84B406183618081BA145CF337200681A2BA + 3E86BEA62206561666144340618361405317667CE30328066055C12387607F79 + 845509C4005C00D9E0356158D581F302A5B911006305C5E10A57158000000000 + 49454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end> + PngOptions = [pngBlendOnDisabled, pngGrayscaleOnDisabled] + Left = 308 + Top = 16 + Bitmap = {} + end + object ExtraImages: TPngImageList + Height = 28 + Width = 28 + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D494844520000001C0000001C0806000000720DDF + 940000000970485973000017120000171201679FD252000002F74944415478DA + DD967D48535118C69F7D396A129989581826D90A3544CD4C112B8B4CD232520A + 0B222B518BC62CB352433331CB21999594211424190D9284BEA8884AA850300A + A12F320233C3CC0FB6DDDDDB3D675D03BDC74D4DFFE881CBB9BB77EFFB3BCFB3 + B3C351088280A99462CA81D28DF9419B4BE4E4B8E031D514979F43CB9DF3B486 + 9873146FBE2E98331763E3AA206661774F3FBEFDE843FBA7AEA1677A3F2F78CD + D261F64C77665D687C165A3AF540AB41E1008A30B8CF8379BB6E54E0F0262F9B + AAA1542A5CFA2E052E9803A12145310298D168912DAC49D4D291E37844ACDF8B + E6C62AA8554A64DEB63261A4C629504EEDDD80E99905D5EB34B0D9ED88DEB01F + 4FCC9530DE17608CD242EF3901872C596D76D8383B75B832C588870D26A8D54A + 68D42AEA9415EFB82335AD565018273A5CB3E520EED59F12412AE43E62FF8E63 + 8E94E70511C0A3B54B85DA571694C670A24B1E09DB0EA1E9EA491C7BEE86F430 + 2D023DAC4CA72E03259814237146609CF83969C711DCAA2B15235589202575CA + 8A77DC91162DB7521899C4A6F47CDCAC2DA1CD8FBF9836B148E59CBD1FD0D148 + 0F87F6D377A97B0A517FA108156D3350B0747054A7A3029356043263FC3560A5 + 4DC9BBB4AC225C395B481BBB691CCD59D0F0846C36706DB41E86BBBC6C3C39C1 + BD1446AE9D8613B85C7994363DF3D683196955BC1A9189FBD8C0B86501D48DCD + EE70455DF23C9A7F7AE2F1070B3203BE5360C68132D49CCEC3A58FDE88F5D722 + 5CD7C5741A936C600363C3FC47C0C8283993A2CECE2B477559EE5074D2250725 + 9B04131815E28782A71AD97876CDEF1C821BF22B5059924321751D3ECC48C9FF + 966C124C604490AFACB39EDE415CEBF4459ACF17BA8A8D8526988A8DF4D956EF + 0EE8A6BB319D924D82090C5D3497192319098C48021291A54F5724235EB24930 + 814B16FA38850D073A83924D820924C781C9902C906837F7E69FC32EBEEE75DC + C801D1DA3C290E111209F47DFE03242250679226355C622397742355F1F7D4E6 + 8AE426F5EE2B3D8DB9DA8202FFFB93F76F83A547E7CAF74B390000000049454E + 44AE426082} + Name = 'PngImage0' + Background = clWindow + end> + Left = 232 + Top = 80 + Bitmap = {} + end +end diff --git a/Modulos/Asientos/Cliente/uPluginControllerAsientos.pas b/Modulos/Asientos/Cliente/uPluginControllerAsientos.pas new file mode 100644 index 0000000..021a15f --- /dev/null +++ b/Modulos/Asientos/Cliente/uPluginControllerAsientos.pas @@ -0,0 +1,78 @@ +unit uPluginControllerAsientos; + +interface + +uses + uModuleController, uInterfaces, uHostManager, Menus, Classes, ActnList, + ImgList, Controls, PngImageList; + +type + IMCAsientos = interface(IInterface) + ['{9B90127C-6EDE-44EE-BB45-93C0645CED0A}'] + end; + + TModuleAsientos = class(TModuleController, IMCAsientos) + actAsientos: TAction; + menu: TMenuItem; + ExtraImages: TPngImageList; + LargeImages: TPngImageList; + MainMenu: TMainMenu; + ModuleActionList: TActionList; + Contabilidad1: TMenuItem; + SmallImages: TPngImageList; + N1: TMenuItem; + procedure actAsientosExecute(Sender: TObject); + public + end; + +implementation + +{$R *.dfm} + +uses + Forms, Dialogs, uGUIBase, SysUtils, uDataModuleAsientos, uEditorAsientos, + uBizAsientos; + +function GetModule : TModuleController; +begin + Result := TModuleAsientos.Create(NIL); +end; + +exports + GetModule name GET_MODULE_FUNC; + +{ +******************************* TModuleContactos ******************************* +} + +procedure TModuleAsientos.actAsientosExecute(Sender: TObject); +var + aObj: IEditorAsientos; + AAsientos: IBizAsiento; + ACursor: TCursor; +begin + ACursor := Screen.Cursor; + Screen.Cursor := crHourGlass; + + AAsientos := dmAsientos.GetItems; + aObj := TfEditorAsientos.Create(Application); + try + with aObj do + begin + Asientos := AAsientos; + ShowEmbedded; + end; + finally + AAsientos := NIL; + aObj := NIL; + Screen.Cursor := ACursor; + end; +end; + +initialization + RegisterModuleClass(TModuleAsientos); + +finalization + UnRegisterModuleClass(TModuleAsientos); + +end. diff --git a/Modulos/Asientos/Cliente/uViewAsiento.ddp b/Modulos/Asientos/Cliente/uViewAsiento.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Asientos/Cliente/uViewAsiento.ddp differ diff --git a/Modulos/Asientos/Cliente/uViewAsiento.dfm b/Modulos/Asientos/Cliente/uViewAsiento.dfm new file mode 100644 index 0000000..f531d66 --- /dev/null +++ b/Modulos/Asientos/Cliente/uViewAsiento.dfm @@ -0,0 +1,119 @@ +inherited frViewAsiento: TfrViewAsiento + Width = 484 + Height = 131 + Align = alClient + AutoSize = True + object dxLayoutControl1: TdxLayoutControl + Left = 0 + Top = 0 + Width = 484 + Height = 131 + Align = alClient + ParentBackground = True + TabOrder = 0 + AutoContentSizes = [acsWidth, acsHeight] + LookAndFeel = dxLayoutOfficeLookAndFeel1 + object edtFecha: TcxDBDateEdit + Left = 85 + Top = 30 + DataBinding.DataField = 'FECHAASIENTO' + DataBinding.DataSource = DADataSource + Style.Color = clInfoBk + Style.LookAndFeel.NativeStyle = True + Style.Shadow = False + Style.ButtonTransparency = ebtNone + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 0 + Width = 150 + end + object eDescripcion: TcxDBTextEdit + Left = 85 + Top = 57 + DataBinding.DataField = 'DESCRIPCION' + DataBinding.DataSource = DADataSource + Style.Color = 14745599 + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 2 + Width = 413 + end + object cxCurrencyEdit5: TcxDBCurrencyEdit + Left = 300 + Top = 30 + AutoSize = False + DataBinding.DataField = 'IMPORTE' + DataBinding.DataSource = DADataSource + ParentFont = False + Properties.Alignment.Horz = taRightJustify + Properties.ReadOnly = False + Properties.UseLeftAlignmentOnEditing = False + Properties.UseThousandSeparator = True + Style.Color = clInfoBk + Style.LookAndFeel.NativeStyle = True + Style.TextColor = clWindowText + Style.TextStyle = [fsBold] + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.NativeStyle = True + StyleFocused.TextColor = clWindowText + StyleHot.LookAndFeel.NativeStyle = True + StyleHot.TextColor = clWindowText + TabOrder = 1 + Height = 21 + Width = 150 + end + object dxLayoutControl1Group_Root: TdxLayoutGroup + ShowCaption = False + Hidden = True + ShowBorder = False + object dxLayoutControl1Group1: TdxLayoutGroup + Caption = 'Datos del asiento' + object dxLayoutControl1Group2: TdxLayoutGroup + ShowCaption = False + Hidden = True + LayoutDirection = ldHorizontal + ShowBorder = False + object dxLayoutControl1Item1: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = 'Fecha:' + Control = edtFecha + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item3: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = 'Importe:' + Control = cxCurrencyEdit5 + ControlOptions.ShowBorder = False + end + end + object dxLayoutControl1Item2: TdxLayoutItem + Caption = 'Descripci'#243'n:' + Control = eDescripcion + ControlOptions.ShowBorder = False + end + end + end + end + object DADataSource: TDADataSource + Left = 256 + Top = 32 + end + object dxLayoutLookAndFeelList1: TdxLayoutLookAndFeelList + Left = 432 + Top = 80 + object dxLayoutOfficeLookAndFeel1: TdxLayoutOfficeLookAndFeel + GroupOptions.CaptionOptions.Font.Charset = DEFAULT_CHARSET + GroupOptions.CaptionOptions.Font.Color = clWindowText + GroupOptions.CaptionOptions.Font.Height = -11 + GroupOptions.CaptionOptions.Font.Name = 'MS Sans Serif' + GroupOptions.CaptionOptions.Font.Style = [fsBold] + GroupOptions.CaptionOptions.TextColor = clActiveCaption + GroupOptions.CaptionOptions.UseDefaultFont = False + end + end +end diff --git a/Modulos/Asientos/Cliente/uViewAsiento.pas b/Modulos/Asientos/Cliente/uViewAsiento.pas new file mode 100644 index 0000000..8d92d85 --- /dev/null +++ b/Modulos/Asientos/Cliente/uViewAsiento.pas @@ -0,0 +1,83 @@ +unit uViewAsiento; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, ExtCtrls, StdCtrls, Buttons, DB, uDADataTable, + DBCtrls, Grids, DBGrids, uBizAsientos, Mask, ComCtrls, uCustomView, + JvComponent, JvFormAutoSize, cxControls, cxContainer, cxEdit, cxTextEdit, + cxDBEdit, cxMemo, uViewFormaPago, cxCurrencyEdit, cxMaskEdit, + cxDropDownEdit, cxCalendar, uListaCuentas, dxLayoutControl, + dxLayoutLookAndFeels; + +type + IViewAsiento = interface(IViewBase) + ['{D6147CF8-EBEF-4F87-8202-97A2BA47250F}'] + function GetAsiento: IBizAsiento; + procedure SetAsiento(const Value: IBizAsiento); + property Asiento: IBizAsiento read GetAsiento write SetAsiento; + end; + + TfrViewAsiento = class(TfrViewBase, IViewAsiento) + DADataSource: TDADataSource; + eDescripcion: TcxDBTextEdit; + edtFecha: TcxDBDateEdit; + cxCurrencyEdit5: TcxDBCurrencyEdit; + dxLayoutControl1Group_Root: TdxLayoutGroup; + dxLayoutControl1: TdxLayoutControl; + dxLayoutControl1Group1: TdxLayoutGroup; + dxLayoutControl1Item1: TdxLayoutItem; + dxLayoutControl1Item2: TdxLayoutItem; + dxLayoutControl1Item3: TdxLayoutItem; + dxLayoutControl1Group2: TdxLayoutGroup; + dxLayoutLookAndFeelList1: TdxLayoutLookAndFeelList; + dxLayoutOfficeLookAndFeel1: TdxLayoutOfficeLookAndFeel; + private + FAsiento: IBizAsiento; + protected + function GetAsiento: IBizAsiento; + procedure SetAsiento(const Value: IBizAsiento); + public + constructor Create(AOwner : TComponent); override; + property Asiento: IBizAsiento read GetAsiento write SetAsiento; + end; + +implementation + +uses uDataModuleAsientos; + +{$R *.dfm} + +{ TfrViewAsientos } + +{ +******************************* TfrViewAsientos ******************************** +} +constructor TfrViewAsiento.Create(AOwner : TComponent); +begin + inherited; +end; + +function TfrViewAsiento.GetAsiento: IBizAsiento; +begin + Result := FAsiento; +end; + +procedure TfrViewAsiento.SetAsiento(const Value: IBizAsiento); +begin + FAsiento := Value; + if Assigned(FAsiento) then + DADataSource.DataTable := FAsiento.DataTable + else + DADataSource.DataTable := NIL; +end; + +initialization + RegisterClass(TfrViewAsiento); + +finalization + UnRegisterClass(TfrViewAsiento); + +end. + diff --git a/Modulos/Asientos/Cliente/uViewAsientos.ddp b/Modulos/Asientos/Cliente/uViewAsientos.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Asientos/Cliente/uViewAsientos.ddp differ diff --git a/Modulos/Asientos/Cliente/uViewAsientos.dfm b/Modulos/Asientos/Cliente/uViewAsientos.dfm new file mode 100644 index 0000000..789a4dc --- /dev/null +++ b/Modulos/Asientos/Cliente/uViewAsientos.dfm @@ -0,0 +1,177 @@ +inherited frViewAsientos: TfrViewAsientos + inherited cxGrid: TcxGrid + Top = 39 + Height = 231 + RootLevelOptions.DetailTabsPosition = dtpTop + OnActiveTabChanged = cxGridActiveTabChanged + inherited cxGridView: TcxGridDBTableView + OnCustomDrawCell = cxGridViewCustomDrawCell + DataController.KeyFieldNames = 'CODIGO' + DataController.Summary.FooterSummaryItems = < + item + Format = '0 almacenes' + Kind = skCount + end> + OptionsBehavior.PullFocusing = True + OptionsCustomize.ColumnMoving = False + OptionsCustomize.ColumnSorting = False + Styles.OnGetContentStyle = cxGridViewStylesGetContentStyle + object cxGridViewRecID: TcxGridDBColumn + DataBinding.FieldName = 'RecID' + Visible = False + end + object cxGridViewCODIGO: TcxGridDBColumn + DataBinding.FieldName = 'CODIGO' + Visible = False + end + object cxGridViewTIPOASIENTO: TcxGridDBColumn + DataBinding.FieldName = 'TIPOASIENTO' + Visible = False + end + object cxGridViewPUNTEADO: TcxGridDBColumn + DataBinding.FieldName = 'PUNTEADO' + OnCustomDrawCell = cxGridViewPUNTEADOCustomDrawCell + Options.ShowEditButtons = isebNever + Width = 35 + IsCaptionAssigned = True + end + object cxGridViewCODIGOCUENTA: TcxGridDBColumn + DataBinding.FieldName = 'CODIGOCUENTA' + Visible = False + end + object cxGridViewFECHAALTA: TcxGridDBColumn + DataBinding.FieldName = 'FECHAALTA' + Visible = False + end + object cxGridViewUSUARIO: TcxGridDBColumn + DataBinding.FieldName = 'USUARIO' + Visible = False + end + object cxGridViewFECHAASIENTO: TcxGridDBColumn + DataBinding.FieldName = 'FECHAASIENTO' + end + object cxGridViewFORMAPAGO: TcxGridDBColumn + DataBinding.FieldName = 'FORMAPAGO' + Visible = False + end + object cxGridViewDESCRIPCION: TcxGridDBColumn + DataBinding.FieldName = 'DESCRIPCION' + Options.Sorting = False + end + object cxGridViewCODIGOPAGO: TcxGridDBColumn + DataBinding.FieldName = 'CODIGOPAGO' + Visible = False + end + object cxGridViewIMPORTE: TcxGridDBColumn + DataBinding.FieldName = 'IMPORTE' + HeaderAlignmentHorz = taRightJustify + Options.Sorting = False + end + object cxGridViewIMPORTEANT: TcxGridDBColumn + DataBinding.FieldName = 'IMPORTEANT' + HeaderAlignmentHorz = taRightJustify + Options.Sorting = False + end + object cxGridViewIMPORTEPOS: TcxGridDBColumn + DataBinding.FieldName = 'IMPORTEPOS' + HeaderAlignmentHorz = taRightJustify + Options.Sorting = False + end + end + inherited cxGridLevel: TcxGridLevel + Tag = -1 + end + end + inline frListaIntervalos: TfrListaIntervalos [1] + Left = 0 + Top = 0 + Width = 443 + Height = 39 + Align = alTop + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 1 + ReadOnly = False + inherited Label3: TLabel + Left = 9 + Top = 12 + Width = 99 + Caption = 'Mostrar asientos de:' + end + inherited cxIntervalos: TcxLookupComboBox + Left = 114 + Top = 9 + Width = 305 + end + end + inherited DADataSource: TDADataSource [2] + end + inherited ActionList1: TActionList [3] + end + inherited dxComponentPrinter: TdxComponentPrinter [4] + inherited dxComponentPrinterLink: TdxGridReportLink + ReportDocument.CreationDate = 38673.842406053240000000 + BuiltInReportLink = True + end + end + inherited dxPSEngineController1: TdxPSEngineController [5] + end + inherited cxStyleRepository1: TcxStyleRepository + object cxStylePunteado: TcxStyle + AssignedValues = [svTextColor] + TextColor = clHighlight + end + object cxStyleCierre: TcxStyle + AssignedValues = [svFont, svTextColor] + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + TextColor = clActiveCaption + end + end + object PngImageList: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD2520000013A4944415478DA + 63FCFFFF3F03258091620340C4FABD97B19A12E8ACCB884F0E64392343C8AAFF + EB333519029C7430146DD87705ABB8914716C3795E4786FFAB4319F11A005278 + 6EC734E20D48DFFC13AE68821B1383B57F3EC3D18D13190A76FD838BCFF465C7 + EF823F7FFF317CFFF19BE1F79FBF0C2EE1250C7B56F6307072B03270B2B392E6 + 825AB3EF0C7EF1550C9B16B631349FE224EC021F7B2DB0CDDF7EFC02D3BF802E + 8848AF675831B391810BE8022E0E36B84BB01AE06CAECA50B20F115099AA6F18 + 920A5A19E64DA866987E5B04236C300CB0D49707DBFCF5FB2F30FEFDFB2F436E + 5537C3E4B652066E2E36062E4E36B84B406183618081BA145CF337200681A2BA + 3E86BEA62206561666144340618361405317667CE30328066055C12387607F79 + 845509C4005C00D9E0356158D581F302A5B911006305C5E10A57158000000000 + 49454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000000DD4944415478DA + 63FCFFFF3F032580716819F062EFCEFF1F776F6650EF98C248B201771A4AFFFF + B873834167C966466471A20CB816EBF7FF1F501DBA66A20CB8EC63FDFF3F3333 + 83DEC6438CD8E4F11A00B2F9C7F54B0C46671E30E2520337E0E59C89FF1F77D6 + 3128CE59C7206CEFCC08F2F3BB7993192496EE6190B3B521C2804533FF3F28CB + 60E0D0D06110296966789212C82050D8C8A05E5E87533386176E6646FFFFB07E + 1903B3802003B3842C83E1818B78356318F0F2E2A5FF0FDCF5C16CA1991B1854 + FDFD49330004AE64C7FF67770B224A33C158181A060000C2907AE143E74E3500 + 00000049454E44AE426082} + Name = 'PngImage1' + Background = clWindow + end> + Left = 160 + Top = 32 + Bitmap = {} + end +end diff --git a/Modulos/Asientos/Cliente/uViewAsientos.pas b/Modulos/Asientos/Cliente/uViewAsientos.pas new file mode 100644 index 0000000..9d61200 --- /dev/null +++ b/Modulos/Asientos/Cliente/uViewAsientos.pas @@ -0,0 +1,232 @@ +unit uViewAsientos; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewGrid, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, + cxDataStorage, cxEdit, DB, cxDBData, uDADataTable, cxGridLevel, + cxClasses, cxControls, cxGridCustomView, cxGridCustomTableView, + cxGridTableView, cxGridDBTableView, cxGrid, uBizAsientos, uBizCuentas, ActnList, + Menus, cxGridBandedTableView, cxGridDBBandedTableView, JvComponent, + JvFormAutoSize, PngImageList, ImgList, dxPSGlbl, dxPSUtl, dxPSEngn, + dxPrnPg, dxBkgnd, dxWrap, dxPrnDev, dxPSCompsProvider, dxPSFillPatterns, + dxPSEdgePatterns, cxIntlPrintSys3, dxPSCore, dxPScxCommon, dxPScxGridLnk, + cxContainer, cxTextEdit, cxMaskEdit, cxDropDownEdit, cxLookupEdit, + cxDBLookupEdit, cxDBLookupComboBox, uCustomView, uViewBase, + uListaIntervalos; + +type + IViewAsientos = interface(IViewGrid) + ['{D28EF069-4ADB-40B5-A117-D07C6CFC4A6F}'] + function GetAsientos: IBizAsiento; + procedure SetAsientos(const Value: IBizAsiento); + property Asientos: IBizAsiento read GetAsientos write SetAsientos; + end; + + TfrViewAsientos = class(TfrViewGrid, IViewAsientos) + PngImageList: TPngImageList; + cxGridViewRecID: TcxGridDBColumn; + cxGridViewCODIGO: TcxGridDBColumn; + cxGridViewCODIGOCUENTA: TcxGridDBColumn; + cxGridViewFECHAALTA: TcxGridDBColumn; + cxGridViewUSUARIO: TcxGridDBColumn; + cxGridViewIMPORTE: TcxGridDBColumn; + cxGridViewFORMAPAGO: TcxGridDBColumn; + cxGridViewDESCRIPCION: TcxGridDBColumn; + cxGridViewCODIGOPAGO: TcxGridDBColumn; + cxGridViewFECHAASIENTO: TcxGridDBColumn; + cxGridViewIMPORTEANT: TcxGridDBColumn; + cxGridViewIMPORTEPOS: TcxGridDBColumn; + cxGridViewPUNTEADO: TcxGridDBColumn; + cxGridViewTIPOASIENTO: TcxGridDBColumn; + frListaIntervalos: TfrListaIntervalos; + cxStylePunteado: TcxStyle; + cxStyleCierre: TcxStyle; + procedure cxGridViewICONOCustomDrawCell( + Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; + AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); + procedure cxGridActiveTabChanged(Sender: TcxCustomGrid; + ALevel: TcxGridLevel); + procedure cxGridViewCustomDrawCell(Sender: TcxCustomGridTableView; + ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; + var ADone: Boolean); + procedure cxGridViewPUNTEADOCustomDrawCell( + Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; + AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); + procedure cxGridViewStylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); + private + protected + FAsientos: IBizAsiento; + function GetAsientos: IBizAsiento; virtual; + procedure SetAsientos(const Value: IBizAsiento); virtual; + public + property Asientos: IBizAsiento read GetAsientos write SetAsientos; + end; + +var + frViewAsientos: TfrViewAsientos; + +implementation + +uses uDataModuleAsientos, uDataModuleCuentas, schAsientosClient_Intf; + + +{$R *.dfm} + +{ TfrViewClientes } + +{ +******************************* TfrViewAsientos ******************************* +} +function TfrViewAsientos.GetAsientos: IBizAsiento; +begin + Result := FAsientos; +end; + +procedure TfrViewAsientos.SetAsientos(const Value: IBizAsiento); +var + Nivel: TcxGridLevel; + auxb: Boolean; + +begin + FAsientos := Value; + + if Assigned(FAsientos) then + begin + DADataSource.DataTable := FAsientos.DataTable; + + if FAsientos.Cuenta.RecordCount > 0 then + begin + with FAsientos.Cuenta do + begin + First; + auxb:=True; + while not EOF do + begin + if auxb + //Ponemos la primera cuenta en el nivel ya creado + then Nivel := cxGridLevel + //Creamos un nuevo nivel + else Nivel := cxGrid.Levels.Add; + + Nivel.Caption := NOMBRE; + Nivel.Tag := CODIGO; + Next; + auxb := False; + end; + First; + end; + end + else cxGrid.RootLevelOptions.DetailTabsPosition := dtpNone; + + FAsientos.Intervalo := frListaIntervalos.Intervalo; + end; +end; + + +procedure TfrViewAsientos.cxGridViewICONOCustomDrawCell( + Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; + AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); +var + R : TRect; +begin + inherited; + R := AViewInfo.ContentBounds; + ACanvas.FillRect(R); + ACanvas.DrawImage(PngImageList, R.Left, R.Top, 0); + ADone := True; +end; + +procedure TfrViewAsientos.cxGridActiveTabChanged(Sender: TcxCustomGrid; ALevel: TcxGridLevel); +var + ACursor: TCursor; +begin + ACursor := Screen.Cursor; + Screen.Cursor := crHourGlass; + + inherited; + FAsientos.Cuenta.LocalizarCuenta(cxGrid.Levels.Items[ALevel.Index].Tag); + cxGrid.Levels.Items[ALevel.Index].GridView := cxGridView; + Screen.Cursor := ACursor; +end; + +procedure TfrViewAsientos.cxGridViewCustomDrawCell( + Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; + AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); +var + IndiceCol : Integer; +begin + inherited; +{ + if not AViewInfo.Selected then + begin + //Apariencia de los cierres + IndiceCol := (Sender as TcxGridDBTableView).GetColumnByFieldName(fld_AsientosTIPOASIENTO).Index; + if UpperCase(AViewInfo.GridRecord.DisplayTexts[IndiceCol]) = CTE_CIERRE then + begin + ACanvas.Canvas.Font.Color := $000000CC; + ACanvas.Canvas.Brush.Color := $00CAEEFF; + end + else + begin + IndiceCol := (Sender as TcxGridDBTableView).GetColumnByFieldName(fld_AsientosPUNTEADO).Index; + if UpperCase(AViewInfo.GridRecord.DisplayTexts[IndiceCol]) = IntToStr(CTE_PUNTEADO) then + begin + ACanvas.Canvas.Font.Color := $00CAD1D2; + end; + end; + end; } +end; + +procedure TfrViewAsientos.cxGridViewPUNTEADOCustomDrawCell( + Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; + AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); +var + IndiceCol: Integer; + R : TRect; +begin + inherited; + IndiceCol := (Sender as TcxGridDBTableView).GetColumnByFieldName('PUNTEADO').Index; + if UpperCase(AViewInfo.GridRecord.DisplayTexts[IndiceCol]) = IntToStr(CTE_PUNTEADO) then + begin + R := AViewInfo.ContentBounds; + ACanvas.FillRect(R); + ACanvas.DrawImage(PngImageList, R.Left, R.Top, 1); + ADone := True; + end + else + begin + R := AViewInfo.ContentBounds; + ACanvas.FillRect(R); +// ACanvas.DrawImage(PngImageList, R.Left, R.Top, 1); + ADone := True; + end; +end; + +procedure TfrViewAsientos.cxGridViewStylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); +var + IndiceCol: Integer; + ASituacion: string; +begin + inherited; + if Assigned(ARecord) then + begin + IndiceCol := (Sender as TcxGridDBTableView).GetColumnByFieldName(fld_AsientosPUNTEADO).Index; + ASituacion := VarToStr(ARecord.DisplayTexts[IndiceCol]); + if ASituacion = IntToStr(CTE_PUNTEADO) then + AStyle := cxStylePunteado; + + IndiceCol := (Sender as TcxGridDBTableView).GetColumnByFieldName(fld_AsientosTIPOASIENTO).Index; + ASituacion := VarToStr(ARecord.DisplayTexts[IndiceCol]); + if ASituacion = CTE_CIERRE then + AStyle := cxStyleCierre; + + end; +end; + +end. diff --git a/Modulos/Asientos/Reglas/schAsientosClient_Intf.pas b/Modulos/Asientos/Reglas/schAsientosClient_Intf.pas new file mode 100644 index 0000000..1bb6cb4 --- /dev/null +++ b/Modulos/Asientos/Reglas/schAsientosClient_Intf.pas @@ -0,0 +1,455 @@ +unit schAsientosClient_Intf; + +interface + +uses + Classes, DB, SysUtils, uROClasses, uDADataTable; + +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_darPenultimoCierre = '{36EB92A1-A369-46F7-AA43-46939BBEA6E0}'; + RID_Asientos = '{1CF7245D-9E9B-494C-95B3-595DCBA9FAEF}'; + RID_darSumaAcumulada = '{6B4FEB53-EE31-4ABA-BEFE-E8E9A52DB210}'; + + { Data table names } + nme_darPenultimoCierre = 'darPenultimoCierre'; + nme_Asientos = 'Asientos'; + nme_darSumaAcumulada = 'darSumaAcumulada'; + + { darPenultimoCierre fields } + fld_darPenultimoCierreCODIGO = 'CODIGO'; + fld_darPenultimoCierreFECHAASIENTO = 'FECHAASIENTO'; + fld_darPenultimoCierreDESCRIPCION = 'DESCRIPCION'; + + { darPenultimoCierre field indexes } + idx_darPenultimoCierreCODIGO = 0; + idx_darPenultimoCierreFECHAASIENTO = 1; + idx_darPenultimoCierreDESCRIPCION = 2; + + { Asientos fields } + fld_AsientosCODIGO = 'CODIGO'; + fld_AsientosCODIGOCUENTA = 'CODIGOCUENTA'; + fld_AsientosTIPOASIENTO = 'TIPOASIENTO'; + fld_AsientosPUNTEADO = 'PUNTEADO'; + fld_AsientosFECHAALTA = 'FECHAALTA'; + fld_AsientosUSUARIO = 'USUARIO'; + fld_AsientosFECHAASIENTO = 'FECHAASIENTO'; + fld_AsientosFORMAPAGO = 'FORMAPAGO'; + fld_AsientosDESCRIPCION = 'DESCRIPCION'; + fld_AsientosCODIGOPAGO = 'CODIGOPAGO'; + fld_AsientosIMPORTE = 'IMPORTE'; + fld_AsientosIMPORTEANT = 'IMPORTEANT'; + fld_AsientosIMPORTEPOS = 'IMPORTEPOS'; + + { Asientos field indexes } + idx_AsientosCODIGO = 0; + idx_AsientosCODIGOCUENTA = 1; + idx_AsientosTIPOASIENTO = 2; + idx_AsientosPUNTEADO = 3; + idx_AsientosFECHAALTA = 4; + idx_AsientosUSUARIO = 5; + idx_AsientosFECHAASIENTO = 6; + idx_AsientosFORMAPAGO = 7; + idx_AsientosDESCRIPCION = 8; + idx_AsientosCODIGOPAGO = 9; + idx_AsientosIMPORTE = 10; + idx_AsientosIMPORTEANT = 11; + idx_AsientosIMPORTEPOS = 12; + + { darSumaAcumulada fields } + fld_darSumaAcumuladaSUMA = 'SUMA'; + + { darSumaAcumulada field indexes } + idx_darSumaAcumuladaSUMA = 0; + +type + { IdarPenultimoCierre } + IdarPenultimoCierre = interface(IDAStronglyTypedDataTable) + ['{B0ABEE53-7101-4F92-8485-D1369C557E44}'] + { Property getters and setters } + function GetCODIGOValue: Integer; + procedure SetCODIGOValue(const aValue: Integer); + function GetFECHAASIENTOValue: DateTime; + procedure SetFECHAASIENTOValue(const aValue: DateTime); + function GetDESCRIPCIONValue: String; + procedure SetDESCRIPCIONValue(const aValue: String); + + + { Properties } + property CODIGO: Integer read GetCODIGOValue write SetCODIGOValue; + property FECHAASIENTO: DateTime read GetFECHAASIENTOValue write SetFECHAASIENTOValue; + property DESCRIPCION: String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + end; + + { TdarPenultimoCierreDataTableRules } + TdarPenultimoCierreDataTableRules = class(TDADataTableRules, IdarPenultimoCierre) + private + protected + { Property getters and setters } + function GetCODIGOValue: Integer; virtual; + procedure SetCODIGOValue(const aValue: Integer); virtual; + function GetFECHAASIENTOValue: DateTime; virtual; + procedure SetFECHAASIENTOValue(const aValue: DateTime); virtual; + function GetDESCRIPCIONValue: String; virtual; + procedure SetDESCRIPCIONValue(const aValue: String); virtual; + + { Properties } + property CODIGO: Integer read GetCODIGOValue write SetCODIGOValue; + property FECHAASIENTO: DateTime read GetFECHAASIENTOValue write SetFECHAASIENTOValue; + property DESCRIPCION: String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + + { IAsientos } + IAsientos = interface(IDAStronglyTypedDataTable) + ['{AFFFEEE0-A246-4551-9F4C-6105DA8CEB07}'] + { Property getters and setters } + function GetCODIGOValue: Integer; + procedure SetCODIGOValue(const aValue: Integer); + function GetCODIGOCUENTAValue: Integer; + procedure SetCODIGOCUENTAValue(const aValue: Integer); + function GetTIPOASIENTOValue: String; + procedure SetTIPOASIENTOValue(const aValue: String); + function GetPUNTEADOValue: Integer; + procedure SetPUNTEADOValue(const aValue: Integer); + function GetFECHAALTAValue: DateTime; + procedure SetFECHAALTAValue(const aValue: DateTime); + function GetUSUARIOValue: String; + procedure SetUSUARIOValue(const aValue: String); + function GetFECHAASIENTOValue: DateTime; + procedure SetFECHAASIENTOValue(const aValue: DateTime); + function GetFORMAPAGOValue: IROStrings; + procedure SetFORMAPAGOValue(const aValue: IROStrings); + function GetDESCRIPCIONValue: String; + procedure SetDESCRIPCIONValue(const aValue: String); + function GetCODIGOPAGOValue: Integer; + procedure SetCODIGOPAGOValue(const aValue: Integer); + function GetIMPORTEValue: Currency; + procedure SetIMPORTEValue(const aValue: Currency); + function GetIMPORTEANTValue: Currency; + procedure SetIMPORTEANTValue(const aValue: Currency); + function GetIMPORTEPOSValue: Currency; + procedure SetIMPORTEPOSValue(const aValue: Currency); + + + { Properties } + property CODIGO: Integer read GetCODIGOValue write SetCODIGOValue; + property CODIGOCUENTA: Integer read GetCODIGOCUENTAValue write SetCODIGOCUENTAValue; + property TIPOASIENTO: String read GetTIPOASIENTOValue write SetTIPOASIENTOValue; + property PUNTEADO: Integer read GetPUNTEADOValue write SetPUNTEADOValue; + property FECHAALTA: DateTime read GetFECHAALTAValue write SetFECHAALTAValue; + property USUARIO: String read GetUSUARIOValue write SetUSUARIOValue; + property FECHAASIENTO: DateTime read GetFECHAASIENTOValue write SetFECHAASIENTOValue; + property FORMAPAGO: IROStrings read GetFORMAPAGOValue write SetFORMAPAGOValue; + property DESCRIPCION: String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + property CODIGOPAGO: Integer read GetCODIGOPAGOValue write SetCODIGOPAGOValue; + property IMPORTE: Currency read GetIMPORTEValue write SetIMPORTEValue; + property IMPORTEANT: Currency read GetIMPORTEANTValue write SetIMPORTEANTValue; + property IMPORTEPOS: Currency read GetIMPORTEPOSValue write SetIMPORTEPOSValue; + end; + + { TAsientosDataTableRules } + TAsientosDataTableRules = class(TDADataTableRules, IAsientos) + private + protected + { Property getters and setters } + function GetCODIGOValue: Integer; virtual; + procedure SetCODIGOValue(const aValue: Integer); virtual; + function GetCODIGOCUENTAValue: Integer; virtual; + procedure SetCODIGOCUENTAValue(const aValue: Integer); virtual; + function GetTIPOASIENTOValue: String; virtual; + procedure SetTIPOASIENTOValue(const aValue: String); virtual; + function GetPUNTEADOValue: Integer; virtual; + procedure SetPUNTEADOValue(const aValue: Integer); virtual; + function GetFECHAALTAValue: DateTime; virtual; + procedure SetFECHAALTAValue(const aValue: DateTime); virtual; + function GetUSUARIOValue: String; virtual; + procedure SetUSUARIOValue(const aValue: String); virtual; + function GetFECHAASIENTOValue: DateTime; virtual; + procedure SetFECHAASIENTOValue(const aValue: DateTime); virtual; + function GetFORMAPAGOValue: IROStrings; virtual; + procedure SetFORMAPAGOValue(const aValue: IROStrings); virtual; + function GetDESCRIPCIONValue: String; virtual; + procedure SetDESCRIPCIONValue(const aValue: String); virtual; + function GetCODIGOPAGOValue: Integer; virtual; + procedure SetCODIGOPAGOValue(const aValue: Integer); virtual; + function GetIMPORTEValue: Currency; virtual; + procedure SetIMPORTEValue(const aValue: Currency); virtual; + function GetIMPORTEANTValue: Currency; virtual; + procedure SetIMPORTEANTValue(const aValue: Currency); virtual; + function GetIMPORTEPOSValue: Currency; virtual; + procedure SetIMPORTEPOSValue(const aValue: Currency); virtual; + + { Properties } + property CODIGO: Integer read GetCODIGOValue write SetCODIGOValue; + property CODIGOCUENTA: Integer read GetCODIGOCUENTAValue write SetCODIGOCUENTAValue; + property TIPOASIENTO: String read GetTIPOASIENTOValue write SetTIPOASIENTOValue; + property PUNTEADO: Integer read GetPUNTEADOValue write SetPUNTEADOValue; + property FECHAALTA: DateTime read GetFECHAALTAValue write SetFECHAALTAValue; + property USUARIO: String read GetUSUARIOValue write SetUSUARIOValue; + property FECHAASIENTO: DateTime read GetFECHAASIENTOValue write SetFECHAASIENTOValue; + property FORMAPAGO: IROStrings read GetFORMAPAGOValue write SetFORMAPAGOValue; + property DESCRIPCION: String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + property CODIGOPAGO: Integer read GetCODIGOPAGOValue write SetCODIGOPAGOValue; + property IMPORTE: Currency read GetIMPORTEValue write SetIMPORTEValue; + property IMPORTEANT: Currency read GetIMPORTEANTValue write SetIMPORTEANTValue; + property IMPORTEPOS: Currency read GetIMPORTEPOSValue write SetIMPORTEPOSValue; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + + { IdarSumaAcumulada } + IdarSumaAcumulada = interface(IDAStronglyTypedDataTable) + ['{7C3C1280-C621-442C-99E5-9286F90974F2}'] + { Property getters and setters } + function GetSUMAValue: Float; + procedure SetSUMAValue(const aValue: Float); + + + { Properties } + property SUMA: Float read GetSUMAValue write SetSUMAValue; + end; + + { TdarSumaAcumuladaDataTableRules } + TdarSumaAcumuladaDataTableRules = class(TDADataTableRules, IdarSumaAcumulada) + private + protected + { Property getters and setters } + function GetSUMAValue: Float; virtual; + procedure SetSUMAValue(const aValue: Float); virtual; + + { Properties } + property SUMA: Float read GetSUMAValue write SetSUMAValue; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + +implementation + +uses Variants; + +{ TdarPenultimoCierreDataTableRules } +constructor TdarPenultimoCierreDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TdarPenultimoCierreDataTableRules.Destroy; +begin + inherited; +end; + +function TdarPenultimoCierreDataTableRules.GetCODIGOValue: Integer; +begin + result := DataTable.Fields[idx_darPenultimoCierreCODIGO].AsInteger; +end; + +procedure TdarPenultimoCierreDataTableRules.SetCODIGOValue(const aValue: Integer); +begin + DataTable.Fields[idx_darPenultimoCierreCODIGO].AsInteger := aValue; +end; + +function TdarPenultimoCierreDataTableRules.GetFECHAASIENTOValue: DateTime; +begin + result := DataTable.Fields[idx_darPenultimoCierreFECHAASIENTO].AsDateTime; +end; + +procedure TdarPenultimoCierreDataTableRules.SetFECHAASIENTOValue(const aValue: DateTime); +begin + DataTable.Fields[idx_darPenultimoCierreFECHAASIENTO].AsDateTime := aValue; +end; + +function TdarPenultimoCierreDataTableRules.GetDESCRIPCIONValue: String; +begin + result := DataTable.Fields[idx_darPenultimoCierreDESCRIPCION].AsString; +end; + +procedure TdarPenultimoCierreDataTableRules.SetDESCRIPCIONValue(const aValue: String); +begin + DataTable.Fields[idx_darPenultimoCierreDESCRIPCION].AsString := aValue; +end; + + +{ TAsientosDataTableRules } +constructor TAsientosDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TAsientosDataTableRules.Destroy; +begin + inherited; +end; + +function TAsientosDataTableRules.GetCODIGOValue: Integer; +begin + result := DataTable.Fields[idx_AsientosCODIGO].AsInteger; +end; + +procedure TAsientosDataTableRules.SetCODIGOValue(const aValue: Integer); +begin + DataTable.Fields[idx_AsientosCODIGO].AsInteger := aValue; +end; + +function TAsientosDataTableRules.GetCODIGOCUENTAValue: Integer; +begin + result := DataTable.Fields[idx_AsientosCODIGOCUENTA].AsInteger; +end; + +procedure TAsientosDataTableRules.SetCODIGOCUENTAValue(const aValue: Integer); +begin + DataTable.Fields[idx_AsientosCODIGOCUENTA].AsInteger := aValue; +end; + +function TAsientosDataTableRules.GetTIPOASIENTOValue: String; +begin + result := DataTable.Fields[idx_AsientosTIPOASIENTO].AsString; +end; + +procedure TAsientosDataTableRules.SetTIPOASIENTOValue(const aValue: String); +begin + DataTable.Fields[idx_AsientosTIPOASIENTO].AsString := aValue; +end; + +function TAsientosDataTableRules.GetPUNTEADOValue: Integer; +begin + result := DataTable.Fields[idx_AsientosPUNTEADO].AsInteger; +end; + +procedure TAsientosDataTableRules.SetPUNTEADOValue(const aValue: Integer); +begin + DataTable.Fields[idx_AsientosPUNTEADO].AsInteger := aValue; +end; + +function TAsientosDataTableRules.GetFECHAALTAValue: DateTime; +begin + result := DataTable.Fields[idx_AsientosFECHAALTA].AsDateTime; +end; + +procedure TAsientosDataTableRules.SetFECHAALTAValue(const aValue: DateTime); +begin + DataTable.Fields[idx_AsientosFECHAALTA].AsDateTime := aValue; +end; + +function TAsientosDataTableRules.GetUSUARIOValue: String; +begin + result := DataTable.Fields[idx_AsientosUSUARIO].AsString; +end; + +procedure TAsientosDataTableRules.SetUSUARIOValue(const aValue: String); +begin + DataTable.Fields[idx_AsientosUSUARIO].AsString := aValue; +end; + +function TAsientosDataTableRules.GetFECHAASIENTOValue: DateTime; +begin + result := DataTable.Fields[idx_AsientosFECHAASIENTO].AsDateTime; +end; + +procedure TAsientosDataTableRules.SetFECHAASIENTOValue(const aValue: DateTime); +begin + DataTable.Fields[idx_AsientosFECHAASIENTO].AsDateTime := aValue; +end; + +function TAsientosDataTableRules.GetFORMAPAGOValue: IROStrings; +begin + result := NewROStrings(); + result.Text := DataTable.Fields[idx_AsientosFORMAPAGO].AsString; +end; + +procedure TAsientosDataTableRules.SetFORMAPAGOValue(const aValue: IROStrings); +begin + DataTable.Fields[idx_AsientosFORMAPAGO].AsString := aValue.Text; +end; + +function TAsientosDataTableRules.GetDESCRIPCIONValue: String; +begin + result := DataTable.Fields[idx_AsientosDESCRIPCION].AsString; +end; + +procedure TAsientosDataTableRules.SetDESCRIPCIONValue(const aValue: String); +begin + DataTable.Fields[idx_AsientosDESCRIPCION].AsString := aValue; +end; + +function TAsientosDataTableRules.GetCODIGOPAGOValue: Integer; +begin + result := DataTable.Fields[idx_AsientosCODIGOPAGO].AsInteger; +end; + +procedure TAsientosDataTableRules.SetCODIGOPAGOValue(const aValue: Integer); +begin + DataTable.Fields[idx_AsientosCODIGOPAGO].AsInteger := aValue; +end; + +function TAsientosDataTableRules.GetIMPORTEValue: Currency; +begin + result := DataTable.Fields[idx_AsientosIMPORTE].AsCurrency; +end; + +procedure TAsientosDataTableRules.SetIMPORTEValue(const aValue: Currency); +begin + DataTable.Fields[idx_AsientosIMPORTE].AsCurrency := aValue; +end; + +function TAsientosDataTableRules.GetIMPORTEANTValue: Currency; +begin + result := DataTable.Fields[idx_AsientosIMPORTEANT].AsCurrency; +end; + +procedure TAsientosDataTableRules.SetIMPORTEANTValue(const aValue: Currency); +begin + DataTable.Fields[idx_AsientosIMPORTEANT].AsCurrency := aValue; +end; + +function TAsientosDataTableRules.GetIMPORTEPOSValue: Currency; +begin + result := DataTable.Fields[idx_AsientosIMPORTEPOS].AsCurrency; +end; + +procedure TAsientosDataTableRules.SetIMPORTEPOSValue(const aValue: Currency); +begin + DataTable.Fields[idx_AsientosIMPORTEPOS].AsCurrency := aValue; +end; + + +{ TdarSumaAcumuladaDataTableRules } +constructor TdarSumaAcumuladaDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TdarSumaAcumuladaDataTableRules.Destroy; +begin + inherited; +end; + +function TdarSumaAcumuladaDataTableRules.GetSUMAValue: Float; +begin + result := DataTable.Fields[idx_darSumaAcumuladaSUMA].AsFloat; +end; + +procedure TdarSumaAcumuladaDataTableRules.SetSUMAValue(const aValue: Float); +begin + DataTable.Fields[idx_darSumaAcumuladaSUMA].AsFloat := aValue; +end; + + +initialization + RegisterDataTableRules(RID_darPenultimoCierre, TdarPenultimoCierreDataTableRules); + RegisterDataTableRules(RID_Asientos, TAsientosDataTableRules); + RegisterDataTableRules(RID_darSumaAcumulada, TdarSumaAcumuladaDataTableRules); + +end. diff --git a/Modulos/Asientos/Reglas/schAsientosServer_Intf.pas b/Modulos/Asientos/Reglas/schAsientosServer_Intf.pas new file mode 100644 index 0000000..fd40f46 --- /dev/null +++ b/Modulos/Asientos/Reglas/schAsientosServer_Intf.pas @@ -0,0 +1,505 @@ +unit schAsientosServer_Intf; + +interface + +uses + Classes, DB, SysUtils, uROClasses, uDADataTable, uDABusinessProcessor, schAsientosClient_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_darPenultimoCierreDelta = '{D3C1CAE3-F142-4BFA-B8D4-B1F32E9DEB2E}'; + RID_AsientosDelta = '{0D27F555-A7BA-4304-B9C3-F7F79F39934E}'; + RID_darSumaAcumuladaDelta = '{80563683-11A2-4648-845B-90F578B8B434}'; + +type + { IdarPenultimoCierreDelta } + IdarPenultimoCierreDelta = interface(IdarPenultimoCierre) + ['{D3C1CAE3-F142-4BFA-B8D4-B1F32E9DEB2E}'] + { Property getters and setters } + function GetOldCODIGOValue : Integer; + function GetOldFECHAASIENTOValue : DateTime; + function GetOldDESCRIPCIONValue : String; + + { Properties } + property OldCODIGO : Integer read GetOldCODIGOValue; + property OldFECHAASIENTO : DateTime read GetOldFECHAASIENTOValue; + property OldDESCRIPCION : String read GetOldDESCRIPCIONValue; + end; + + { TdarPenultimoCierreBusinessProcessorRules } + TdarPenultimoCierreBusinessProcessorRules = class(TDABusinessProcessorRules, IdarPenultimoCierre, IdarPenultimoCierreDelta) + private + protected + { Property getters and setters } + function GetCODIGOValue: Integer; virtual; + function GetOldCODIGOValue: Integer; virtual; + procedure SetCODIGOValue(const aValue: Integer); virtual; + function GetFECHAASIENTOValue: DateTime; virtual; + function GetOldFECHAASIENTOValue: DateTime; virtual; + procedure SetFECHAASIENTOValue(const aValue: DateTime); virtual; + function GetDESCRIPCIONValue: String; virtual; + function GetOldDESCRIPCIONValue: String; virtual; + procedure SetDESCRIPCIONValue(const aValue: String); virtual; + + { Properties } + property CODIGO : Integer read GetCODIGOValue write SetCODIGOValue; + property OldCODIGO : Integer read GetOldCODIGOValue; + property FECHAASIENTO : DateTime read GetFECHAASIENTOValue write SetFECHAASIENTOValue; + property OldFECHAASIENTO : DateTime read GetOldFECHAASIENTOValue; + property DESCRIPCION : String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + property OldDESCRIPCION : String read GetOldDESCRIPCIONValue; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + + { IAsientosDelta } + IAsientosDelta = interface(IAsientos) + ['{0D27F555-A7BA-4304-B9C3-F7F79F39934E}'] + { Property getters and setters } + function GetOldCODIGOValue : Integer; + function GetOldCODIGOCUENTAValue : Integer; + function GetOldTIPOASIENTOValue : String; + function GetOldPUNTEADOValue : Integer; + function GetOldFECHAALTAValue : DateTime; + function GetOldUSUARIOValue : String; + function GetOldFECHAASIENTOValue : DateTime; + function GetOldFORMAPAGOValue : IROStrings; + function GetOldDESCRIPCIONValue : String; + function GetOldCODIGOPAGOValue : Integer; + function GetOldIMPORTEValue : Currency; + function GetOldIMPORTEANTValue : Currency; + function GetOldIMPORTEPOSValue : Currency; + + { Properties } + property OldCODIGO : Integer read GetOldCODIGOValue; + property OldCODIGOCUENTA : Integer read GetOldCODIGOCUENTAValue; + property OldTIPOASIENTO : String read GetOldTIPOASIENTOValue; + property OldPUNTEADO : Integer read GetOldPUNTEADOValue; + property OldFECHAALTA : DateTime read GetOldFECHAALTAValue; + property OldUSUARIO : String read GetOldUSUARIOValue; + property OldFECHAASIENTO : DateTime read GetOldFECHAASIENTOValue; + property OldFORMAPAGO : IROStrings read GetOldFORMAPAGOValue; + property OldDESCRIPCION : String read GetOldDESCRIPCIONValue; + property OldCODIGOPAGO : Integer read GetOldCODIGOPAGOValue; + property OldIMPORTE : Currency read GetOldIMPORTEValue; + property OldIMPORTEANT : Currency read GetOldIMPORTEANTValue; + property OldIMPORTEPOS : Currency read GetOldIMPORTEPOSValue; + end; + + { TAsientosBusinessProcessorRules } + TAsientosBusinessProcessorRules = class(TDABusinessProcessorRules, IAsientos, IAsientosDelta) + private + protected + { Property getters and setters } + function GetCODIGOValue: Integer; virtual; + function GetOldCODIGOValue: Integer; virtual; + procedure SetCODIGOValue(const aValue: Integer); virtual; + function GetCODIGOCUENTAValue: Integer; virtual; + function GetOldCODIGOCUENTAValue: Integer; virtual; + procedure SetCODIGOCUENTAValue(const aValue: Integer); virtual; + function GetTIPOASIENTOValue: String; virtual; + function GetOldTIPOASIENTOValue: String; virtual; + procedure SetTIPOASIENTOValue(const aValue: String); virtual; + function GetPUNTEADOValue: Integer; virtual; + function GetOldPUNTEADOValue: Integer; virtual; + procedure SetPUNTEADOValue(const aValue: Integer); virtual; + function GetFECHAALTAValue: DateTime; virtual; + function GetOldFECHAALTAValue: DateTime; virtual; + procedure SetFECHAALTAValue(const aValue: DateTime); virtual; + function GetUSUARIOValue: String; virtual; + function GetOldUSUARIOValue: String; virtual; + procedure SetUSUARIOValue(const aValue: String); virtual; + function GetFECHAASIENTOValue: DateTime; virtual; + function GetOldFECHAASIENTOValue: DateTime; virtual; + procedure SetFECHAASIENTOValue(const aValue: DateTime); virtual; + function GetFORMAPAGOValue: IROStrings; virtual; + function GetOldFORMAPAGOValue: IROStrings; virtual; + procedure SetFORMAPAGOValue(const aValue: IROStrings); virtual; + function GetDESCRIPCIONValue: String; virtual; + function GetOldDESCRIPCIONValue: String; virtual; + procedure SetDESCRIPCIONValue(const aValue: String); virtual; + function GetCODIGOPAGOValue: Integer; virtual; + function GetOldCODIGOPAGOValue: Integer; virtual; + procedure SetCODIGOPAGOValue(const aValue: Integer); virtual; + function GetIMPORTEValue: Currency; virtual; + function GetOldIMPORTEValue: Currency; virtual; + procedure SetIMPORTEValue(const aValue: Currency); virtual; + function GetIMPORTEANTValue: Currency; virtual; + function GetOldIMPORTEANTValue: Currency; virtual; + procedure SetIMPORTEANTValue(const aValue: Currency); virtual; + function GetIMPORTEPOSValue: Currency; virtual; + function GetOldIMPORTEPOSValue: Currency; virtual; + procedure SetIMPORTEPOSValue(const aValue: Currency); virtual; + + { Properties } + property CODIGO : Integer read GetCODIGOValue write SetCODIGOValue; + property OldCODIGO : Integer read GetOldCODIGOValue; + property CODIGOCUENTA : Integer read GetCODIGOCUENTAValue write SetCODIGOCUENTAValue; + property OldCODIGOCUENTA : Integer read GetOldCODIGOCUENTAValue; + property TIPOASIENTO : String read GetTIPOASIENTOValue write SetTIPOASIENTOValue; + property OldTIPOASIENTO : String read GetOldTIPOASIENTOValue; + property PUNTEADO : Integer read GetPUNTEADOValue write SetPUNTEADOValue; + property OldPUNTEADO : Integer read GetOldPUNTEADOValue; + property FECHAALTA : DateTime read GetFECHAALTAValue write SetFECHAALTAValue; + property OldFECHAALTA : DateTime read GetOldFECHAALTAValue; + property USUARIO : String read GetUSUARIOValue write SetUSUARIOValue; + property OldUSUARIO : String read GetOldUSUARIOValue; + property FECHAASIENTO : DateTime read GetFECHAASIENTOValue write SetFECHAASIENTOValue; + property OldFECHAASIENTO : DateTime read GetOldFECHAASIENTOValue; + property FORMAPAGO : IROStrings read GetFORMAPAGOValue write SetFORMAPAGOValue; + property OldFORMAPAGO : IROStrings read GetOldFORMAPAGOValue; + property DESCRIPCION : String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + property OldDESCRIPCION : String read GetOldDESCRIPCIONValue; + property CODIGOPAGO : Integer read GetCODIGOPAGOValue write SetCODIGOPAGOValue; + property OldCODIGOPAGO : Integer read GetOldCODIGOPAGOValue; + property IMPORTE : Currency read GetIMPORTEValue write SetIMPORTEValue; + property OldIMPORTE : Currency read GetOldIMPORTEValue; + property IMPORTEANT : Currency read GetIMPORTEANTValue write SetIMPORTEANTValue; + property OldIMPORTEANT : Currency read GetOldIMPORTEANTValue; + property IMPORTEPOS : Currency read GetIMPORTEPOSValue write SetIMPORTEPOSValue; + property OldIMPORTEPOS : Currency read GetOldIMPORTEPOSValue; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + + { IdarSumaAcumuladaDelta } + IdarSumaAcumuladaDelta = interface(IdarSumaAcumulada) + ['{80563683-11A2-4648-845B-90F578B8B434}'] + { Property getters and setters } + function GetOldSUMAValue : Float; + + { Properties } + property OldSUMA : Float read GetOldSUMAValue; + end; + + { TdarSumaAcumuladaBusinessProcessorRules } + TdarSumaAcumuladaBusinessProcessorRules = class(TDABusinessProcessorRules, IdarSumaAcumulada, IdarSumaAcumuladaDelta) + private + protected + { Property getters and setters } + function GetSUMAValue: Float; virtual; + function GetOldSUMAValue: Float; virtual; + procedure SetSUMAValue(const aValue: Float); virtual; + + { Properties } + property SUMA : Float read GetSUMAValue write SetSUMAValue; + property OldSUMA : Float read GetOldSUMAValue; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + +implementation + +uses + Variants, uROBinaryHelpers; + +{ TdarPenultimoCierreBusinessProcessorRules } +constructor TdarPenultimoCierreBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TdarPenultimoCierreBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TdarPenultimoCierreBusinessProcessorRules.GetCODIGOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_darPenultimoCierreCODIGO]; +end; + +function TdarPenultimoCierreBusinessProcessorRules.GetOldCODIGOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_darPenultimoCierreCODIGO]; +end; + +procedure TdarPenultimoCierreBusinessProcessorRules.SetCODIGOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_darPenultimoCierreCODIGO] := aValue; +end; + +function TdarPenultimoCierreBusinessProcessorRules.GetFECHAASIENTOValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_darPenultimoCierreFECHAASIENTO]; +end; + +function TdarPenultimoCierreBusinessProcessorRules.GetOldFECHAASIENTOValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_darPenultimoCierreFECHAASIENTO]; +end; + +procedure TdarPenultimoCierreBusinessProcessorRules.SetFECHAASIENTOValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_darPenultimoCierreFECHAASIENTO] := aValue; +end; + +function TdarPenultimoCierreBusinessProcessorRules.GetDESCRIPCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_darPenultimoCierreDESCRIPCION]; +end; + +function TdarPenultimoCierreBusinessProcessorRules.GetOldDESCRIPCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_darPenultimoCierreDESCRIPCION]; +end; + +procedure TdarPenultimoCierreBusinessProcessorRules.SetDESCRIPCIONValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_darPenultimoCierreDESCRIPCION] := aValue; +end; + + +{ TAsientosBusinessProcessorRules } +constructor TAsientosBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TAsientosBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TAsientosBusinessProcessorRules.GetCODIGOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_AsientosCODIGO]; +end; + +function TAsientosBusinessProcessorRules.GetOldCODIGOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_AsientosCODIGO]; +end; + +procedure TAsientosBusinessProcessorRules.SetCODIGOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_AsientosCODIGO] := aValue; +end; + +function TAsientosBusinessProcessorRules.GetCODIGOCUENTAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_AsientosCODIGOCUENTA]; +end; + +function TAsientosBusinessProcessorRules.GetOldCODIGOCUENTAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_AsientosCODIGOCUENTA]; +end; + +procedure TAsientosBusinessProcessorRules.SetCODIGOCUENTAValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_AsientosCODIGOCUENTA] := aValue; +end; + +function TAsientosBusinessProcessorRules.GetTIPOASIENTOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_AsientosTIPOASIENTO]; +end; + +function TAsientosBusinessProcessorRules.GetOldTIPOASIENTOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_AsientosTIPOASIENTO]; +end; + +procedure TAsientosBusinessProcessorRules.SetTIPOASIENTOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_AsientosTIPOASIENTO] := aValue; +end; + +function TAsientosBusinessProcessorRules.GetPUNTEADOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_AsientosPUNTEADO]; +end; + +function TAsientosBusinessProcessorRules.GetOldPUNTEADOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_AsientosPUNTEADO]; +end; + +procedure TAsientosBusinessProcessorRules.SetPUNTEADOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_AsientosPUNTEADO] := aValue; +end; + +function TAsientosBusinessProcessorRules.GetFECHAALTAValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_AsientosFECHAALTA]; +end; + +function TAsientosBusinessProcessorRules.GetOldFECHAALTAValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_AsientosFECHAALTA]; +end; + +procedure TAsientosBusinessProcessorRules.SetFECHAALTAValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_AsientosFECHAALTA] := aValue; +end; + +function TAsientosBusinessProcessorRules.GetUSUARIOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_AsientosUSUARIO]; +end; + +function TAsientosBusinessProcessorRules.GetOldUSUARIOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_AsientosUSUARIO]; +end; + +procedure TAsientosBusinessProcessorRules.SetUSUARIOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_AsientosUSUARIO] := aValue; +end; + +function TAsientosBusinessProcessorRules.GetFECHAASIENTOValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_AsientosFECHAASIENTO]; +end; + +function TAsientosBusinessProcessorRules.GetOldFECHAASIENTOValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_AsientosFECHAASIENTO]; +end; + +procedure TAsientosBusinessProcessorRules.SetFECHAASIENTOValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_AsientosFECHAASIENTO] := aValue; +end; + +function TAsientosBusinessProcessorRules.GetFORMAPAGOValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.NewValueByName[fld_AsientosFORMAPAGO]; +end; + +function TAsientosBusinessProcessorRules.GetOldFORMAPAGOValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.OldValueByName[fld_AsientosFORMAPAGO]; +end; + +procedure TAsientosBusinessProcessorRules.SetFORMAPAGOValue(const aValue: IROStrings); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_AsientosFORMAPAGO] := aValue.Text; +end; + +function TAsientosBusinessProcessorRules.GetDESCRIPCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_AsientosDESCRIPCION]; +end; + +function TAsientosBusinessProcessorRules.GetOldDESCRIPCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_AsientosDESCRIPCION]; +end; + +procedure TAsientosBusinessProcessorRules.SetDESCRIPCIONValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_AsientosDESCRIPCION] := aValue; +end; + +function TAsientosBusinessProcessorRules.GetCODIGOPAGOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_AsientosCODIGOPAGO]; +end; + +function TAsientosBusinessProcessorRules.GetOldCODIGOPAGOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_AsientosCODIGOPAGO]; +end; + +procedure TAsientosBusinessProcessorRules.SetCODIGOPAGOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_AsientosCODIGOPAGO] := aValue; +end; + +function TAsientosBusinessProcessorRules.GetIMPORTEValue: Currency; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_AsientosIMPORTE]; +end; + +function TAsientosBusinessProcessorRules.GetOldIMPORTEValue: Currency; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_AsientosIMPORTE]; +end; + +procedure TAsientosBusinessProcessorRules.SetIMPORTEValue(const aValue: Currency); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_AsientosIMPORTE] := aValue; +end; + +function TAsientosBusinessProcessorRules.GetIMPORTEANTValue: Currency; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_AsientosIMPORTEANT]; +end; + +function TAsientosBusinessProcessorRules.GetOldIMPORTEANTValue: Currency; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_AsientosIMPORTEANT]; +end; + +procedure TAsientosBusinessProcessorRules.SetIMPORTEANTValue(const aValue: Currency); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_AsientosIMPORTEANT] := aValue; +end; + +function TAsientosBusinessProcessorRules.GetIMPORTEPOSValue: Currency; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_AsientosIMPORTEPOS]; +end; + +function TAsientosBusinessProcessorRules.GetOldIMPORTEPOSValue: Currency; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_AsientosIMPORTEPOS]; +end; + +procedure TAsientosBusinessProcessorRules.SetIMPORTEPOSValue(const aValue: Currency); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_AsientosIMPORTEPOS] := aValue; +end; + + +{ TdarSumaAcumuladaBusinessProcessorRules } +constructor TdarSumaAcumuladaBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TdarSumaAcumuladaBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TdarSumaAcumuladaBusinessProcessorRules.GetSUMAValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_darSumaAcumuladaSUMA]; +end; + +function TdarSumaAcumuladaBusinessProcessorRules.GetOldSUMAValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_darSumaAcumuladaSUMA]; +end; + +procedure TdarSumaAcumuladaBusinessProcessorRules.SetSUMAValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_darSumaAcumuladaSUMA] := aValue; +end; + + +initialization + RegisterBusinessProcessorRules(RID_darPenultimoCierreDelta, TdarPenultimoCierreBusinessProcessorRules); + RegisterBusinessProcessorRules(RID_AsientosDelta, TAsientosBusinessProcessorRules); + RegisterBusinessProcessorRules(RID_darSumaAcumuladaDelta, TdarSumaAcumuladaBusinessProcessorRules); + +end. diff --git a/Modulos/Asientos/Reglas/uBizAsientos.pas b/Modulos/Asientos/Reglas/uBizAsientos.pas new file mode 100644 index 0000000..3dd545a --- /dev/null +++ b/Modulos/Asientos/Reglas/uBizAsientos.pas @@ -0,0 +1,542 @@ +unit uBizAsientos; + +interface + +uses + uDAInterfaces, uDADataTable, schAsientosClient_Intf, Classes, + DBGrids, uDBSelectionList, DB, uExceptions, Controls, uBizCuentas, + uBizIntervalos; + +const + CTE_PUNTEADO = 1; + CTE_NOPUNTEADO = 0; + CTE_ASIENTO = 'A'; + CTE_CIERRE = 'C'; + +type + TDatosAsiento = class(TObject) + public + CodigoCuenta : Integer; + FechaAsiento : TDateTime; + CodigoPago : Integer; + Descripcion : String; + Importe: Currency; + end; + + IBizAsiento = interface(IAsientos) + ['{4585F549-EBAF-454C-826F-A8D527AD585E}'] + function getCuenta: IBizCuenta; + property Cuenta: IBizCuenta read getCuenta; + + procedure setIntervalo(const Value: IBizIntervalos); + function getIntervalo: IBizIntervalos; + property Intervalo: IBizIntervalos read getIntervalo write setIntervalo; + + procedure Show; + function ShowForSelect : TModalResult; + + procedure cerrarCaja; + procedure eliminarCierreCaja; + procedure puntearAsiento; + end; + + TBizAsientoDataTableRules = class(TAsientosDataTableRules, IBizAsiento, + IApplyUpdateFailedException, ISelectedRowList) + private + FCuenta : IBizCuenta; + FIntervalo: IBizIntervalos; + FSumaAcumulada: Currency; + + FSelectedRows : TSelectedRowList; + procedure ShowToSelect; + procedure BeforeApplyUpdates(Sender: TDADataTable; const Delta: IDADelta); + procedure OnPostError(DataTable: TDADataTable; Error: EDatabaseError; + var Action: TDataAction); override; + + function puntearAsientos(const ValorPunteo: Integer): TDateTime; + procedure recalcular(const DesdeFinal: Boolean); + procedure CalcularImportes; + function anadirCierre(FechaCierre: TDateTime): Boolean; + function eliminarCierre: Boolean; + + function getCuenta: IBizCuenta; + function getIntervalo: IBizIntervalos; + procedure setIntervalo(const Value: IBizIntervalos); + procedure OnCuentaChanged(Sender : TObject); + procedure OnIntervaloChanged(Sender : TObject); + + procedure refrescarVista; + + protected + procedure OnNewRecord(Sender: TDADataTable); override; + function GetSelectedRows : TSelectedRowList; virtual; + procedure ShowApplyUpdateFailed (const Error: EDAApplyUpdateFailed); virtual; + procedure BeforeDelete(Sender: TDADataTable); override; + procedure AfterPost(Sender: TDADataTable); override; + procedure AfterDelete(Sender: TDADataTable); override; + procedure AfterOpen(Sender: TDADataTable); override; + + public + property SelectedRows : TSelectedRowList read GetSelectedRows; + property Cuenta: IBizCuenta read getCuenta; + property Intervalo: IBizIntervalos read getIntervalo write setIntervalo; + + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + procedure Show; virtual; +// procedure ShowAll; virtual; +// procedure Preview; virtual; + function ShowForSelect : TModalResult; virtual; + + procedure cerrarCaja; + procedure eliminarCierreCaja; + procedure puntearAsiento; + end; + + procedure ValidarAsiento (const AAsiento : IBizAsiento); + +implementation + +uses + Windows, Dialogs, uDACDSDataTable, SysUtils, uDataModuleBase, uDataModuleUsuarios, + uEditorUtils, uDataModuleAsientos, Variants, Forms, uCerrarCaja, + DateUtils, uDataModuleCuentas; + + +procedure ValidarAsiento (const AAsiento : IBizAsiento); +begin + if (AAsiento.TIPOASIENTO = CTE_ASIENTO) then + if (AAsiento.FECHAASIENTO <= AAsiento.Cuenta.ULTIMOCIERRE) then + raise Exception.Create('El asiento no puede tener fecha anterior al último cierre'); +end; + + +{ TBizAsientoDataTableRules } + +{ +************************** TBizAsientoDataTableRules ************************** +} + +procedure TBizAsientoDataTableRules.OnNewRecord(Sender: TDADataTable); +begin + inherited; + USUARIO := dmUsuarios.LoginInfo.UserID; + FECHAALTA := Date; + TIPOASIENTO := CTE_ASIENTO; + FECHAASIENTO := Date; + PUNTEADO := CTE_NOPUNTEADO; + CODIGOCUENTA := Cuenta.CODIGO; + IMPORTE := 0; +end; + +procedure TBizAsientoDataTableRules.Show; +begin + if PUNTEADO = CTE_PUNTEADO then + begin + raise Exception.Create('No se puede modificar este asiento porque está punteado'); + exit; + end; + + ShowEditor(IBizAsiento, Self, etItem); +end; + +{procedure TBizAsientoDataTableRules.Preview; +begin +// dmContactos.Preview; +end; +} +procedure TBizAsientoDataTableRules.ShowApplyUpdateFailed( + const Error: EDAApplyUpdateFailed); +begin + if (Pos(AUF_FKVIOLATION, Error.Message) > 0) then + MessageBox(0, 'No se puede borrar este asiento porque tiene pagos asociados', 'Atención', MB_ICONWARNING or MB_OK); +end; + +function TBizAsientoDataTableRules.GetSelectedRows: TSelectedRowList; +begin + Result := FSelectedRows; +end; + +procedure TBizAsientoDataTableRules.ShowToSelect; +begin +// +end; + +constructor TBizAsientoDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; + FSumaAcumulada := 0; + FCuenta := dmCuentas.GetItems; + FCuenta.OnCuentaChanged := OnCuentaChanged; + + FSelectedRows := TSelectedRowList.Create(aDataTable); + aDataTable.OnBeforeApplyUpdates := BeforeApplyUpdates; + aDataTable.AfterOpen := AfterOpen; +end; + +destructor TBizAsientoDataTableRules.Destroy; +begin + FCuenta := Nil; + FSelectedRows.Free; + inherited; +end; + +{procedure TBizAsientoDataTableRules.ShowAll; +begin +// ShowEditor(IBizProveedor, Self, etItems); +end; +} +function TBizAsientoDataTableRules.ShowForSelect: TModalResult; +begin + Result := ShowEditor(IBizAsiento, Self, etItems); +end; + +procedure TBizAsientoDataTableRules.BeforeApplyUpdates( + Sender: TDADataTable; const Delta: IDADelta); +var + i: Integer; +begin + for i := 0 to Delta.Count - 1 do + case Delta.Changes[i].ChangeType of + ctInsert, ctUpdate : ValidarAsiento(Self); +// ctDelete : + end; +end; + +procedure TBizAsientoDataTableRules.OnPostError(DataTable: TDADataTable; + Error: EDatabaseError; var Action: TDataAction); +begin + inherited; + Action := daAbort; + if (Pos(AUF_HAVEVALUE, Error.Message) > 0) then + begin + if (Pos('Nombre', Error.Message) > 0) then + MessageBox(0, 'Debe indicar una descripción', 'Atención', MB_ICONWARNING or MB_OK) + else + raise Error; + end + else + raise Error; +end; + +procedure TBizAsientoDataTableRules.BeforeDelete(Sender: TDADataTable); +begin + //Si es un CIERRE lo que se elimina, debemos despuntear los asientos que comprende + if TIPOASIENTO = CTE_CIERRE then + begin + puntearAsientos(CTE_NOPUNTEADO); + dmAsientos.AsignarPunteado(Cuenta.CODIGO, FECHAASIENTO, Cuenta.PENULTIMOCIERRE, CTE_NOPUNTEADO); + end; + + inherited; +end; + +procedure TBizAsientoDataTableRules.CalcularImportes; +var + varImporteAnt: double; + varImportePos: double; + ABookmark: Pointer; +begin + DataTable.DisableControls; + DataTable.DisableEventHandlers; + + try + ABookmark := DataTable.GetBookMark; + DataTable.Next; + //Comprobamos si calculamos desde el principio o desde un asiento intermedio + if DataTable.EOF + then + varImportePos:= FSumaAcumulada + else + begin + varImportePos:= IMPORTEPOS; + DataTable.Prior; + end; + + while not Self.DataTable.BOF do + begin + DataTable.edit; + IMPORTEANT := varImportePos; + IMPORTEPOS := IMPORTEANT + IMPORTE; + varImportePos := IMPORTEPOS; + DataTable.Post; + DataTable.Prior; + end; + finally + DataTable.GotoBookmark(Abookmark); + DataTable.FreeBookmark(ABookmark); + DataTable.EnableControls; + DataTable.EnableEventHandlers; + end; +end; + +procedure TBizAsientoDataTableRules.AfterPost(Sender: TDADataTable); +var + i, x: Integer; + +begin + //Comprobamos los cambios para solo recalcular en el caso de modificar el importe + //y añadir un asiento nuevo + for i:=0 to DataTable.Delta.count-1 do + if (DataTable.Delta.Changes[i].ChangeType = ctInsert) then + begin + //Este evento salta dos veces, cuando se hace el post en el cliente + //y cuando se hace el applyupdates. En el primer caso todavía no se + //ha asignado el codigo, de esta forma omitiremos el recalculo y + //optimizamos el número de llamadas al mismo + if CODIGO > 0 then recalcular(False); + end + else if (DataTable.Delta.Changes[i].ChangeType = ctUpdate) then + if (DataTable.Delta.Changes[i].OldValueByName[fld_AsientosIMPORTE] <> DataTable.Delta.Changes[i].NewValueByName[fld_AsientosIMPORTE]) then + recalcular(False); +end; + +procedure TBizAsientoDataTableRules.AfterDelete(Sender: TDADataTable); +begin + recalcular(False); +end; + +procedure TBizAsientoDataTableRules.AfterOpen(Sender: TDADataTable); +begin + recalcular(True); +end; + +procedure TBizAsientoDataTableRules.recalcular(const DesdeFinal: Boolean); +begin + if DesdeFinal then + DataTable.Last + else + begin + DataTable.Sort(['FECHAASIENTO', 'CODIGO'],[sdDescending, sdDescending]); + + //En el caso de ser un CIERRE NUEVO el asiento introducido punteamos "localmente" + //todos los asientos anteriores al cierre y luego mandamos al servidor puntear en BD + if TIPOASIENTO = CTE_CIERRE then + begin + puntearAsientos(CTE_PUNTEADO); + dmAsientos.AsignarPunteado(Cuenta.CODIGO, FECHAASIENTO, Cuenta.PENULTIMOCIERRE, CTE_PUNTEADO); + end; + end; + + CalcularImportes; +end; + +procedure TBizAsientoDataTableRules.cerrarCaja; +begin + with TfrCerrarCaja.Create(NIL) do + try + eFechaCierre.Date := FECHAASIENTO; + ShowModal; + if ModalResult = mrOk then + begin + if anadirCierre(eFechaCierre.Date) then + begin + DataTable.ApplyUpdates; + Cuenta.DataTable.ApplyUpdates; + end + else + begin + DataTable.CancelUpdates; + Cuenta.DataTable.CancelUpdates; + end; + end; + finally + Free; + end; +end; + +function TBizAsientoDataTableRules.anadirCierre(FechaCierre: TDateTime): Boolean; +begin + try + Result:= True; + //Insertamos un asiento de cierre + DataTable.Insert; + FECHAASIENTO := FechaCierre; + TIPOASIENTO := CTE_CIERRE; + PUNTEADO := CTE_PUNTEADO; + DESCRIPCION := 'CIERRE ' + DateToStr(FechaCierre); + DataTable.Post; + //Asignamos el nuevo último cierre de la cuenta activa + Cuenta.DataTable.Edit; + Cuenta.PENULTIMOCIERRE := Cuenta.ULTIMOCIERRE; + Cuenta.ULTIMOCIERRE := FechaCierre; + Cuenta.DataTable.Post; + except + on E: Exception do + Result:= False; + end; +end; + +function TBizAsientoDataTableRules.getCuenta: IBizCuenta; +begin + if (not FCuenta.DataTable.Active) then + FCuenta.DataTable.Active := True; + + Result := FCuenta; +end; + +function TBizAsientoDataTableRules.puntearAsientos(const ValorPunteo: Integer): TDateTime; +//Punteamos con DisableEventHandlers con el fin de que no se produzcan deltas, ya +//que la modificación de los registros se realizará por un servicio, esto es solo +//para que los cambios se reflejen en local sin tener que refrescar. +var + ABookmark : TBookmark; +begin + Self.DataTable.DisableControls; + Self.DataTable.DisableEventHandlers; + + try + //Saltamos el asiento de cierre + ABookmark := DataTable.GetBookMark; + DataTable.Next; + while (not DataTable.EOF) + and (TIPOASIENTO = CTE_ASIENTO) do + begin + DataTable.edit; + PUNTEADO := ValorPunteo; + DataTable.Post; + DataTable.Next; + end; + finally + + //En el caso de salir del bucle por ser final de fichero y no por encontrar otro + //cierre restamos un día para incluir todos los asientos del final de la tabla + Result := FECHAASIENTO; + if (DataTable.EOF) then + Result:= Result - 1; + + DataTable.GotoBookmark(ABookmark); + DataTable.FreeBookmark(ABookmark); + DataTable.EnableControls; + DataTable.EnableEventHandlers; + end; +end; + +procedure TBizAsientoDataTableRules.eliminarCierreCaja; +begin + if (FECHAASIENTO < Cuenta.ULTIMOCIERRE) then + raise Exception.Create('No puede eliminar un cierre anterior al último cierre de la cuenta'); + + if eliminarCierre then + begin + DataTable.ApplyUpdates; + Cuenta.DataTable.ApplyUpdates; + end + else + begin + DataTable.CancelUpdates; + Cuenta.DataTable.CancelUpdates; + end; +end; + +function TBizAsientoDataTableRules.eliminarCierre: Boolean; +begin + try + Result := True; + DataTable.Delete; + + //Asignamos el nuevo último cierre de la cuenta activa + Cuenta.Edit; + Cuenta.ULTIMOCIERRE := Cuenta.PENULTIMOCIERRE; + Cuenta.PENULTIMOCIERRE := dmAsientos.darPenultimoCierre(Cuenta.CODIGO); + Cuenta.Post; + except + on E: Exception do + Result := False; + end; +end; + +procedure TBizAsientoDataTableRules.refrescarVista; +var + fechaini: TDateTime; + fechaFin: TDateTime; + i: integer; + +begin + if DataTable.Active then + DataTable.Active := False; + + if (Intervalo.DIAS = 0) and (Intervalo.MESES = 0) and (Intervalo.ANOS = 0) then + begin + fechaIni := MaxDateTime; + fechaFin := MinDateTime; + FSumaAcumulada := 0; + end + else + begin + fechaini := date; + fechaFin := date; + fechafin := IncDay(fechafin,(-1)*Intervalo.DIAS); + for i:=1 to Intervalo.MESES do + fechafin := IncDay(fechafin,(-1)*DaysInMonth(fechafin)); + for i:=1 to Intervalo.ANOS do + fechafin := IncDay(fechafin,(-1)*DaysInYear(fechafin)); + + FSumaAcumulada := dmAsientos.darSumaAcumulada(FCuenta.CODIGO, fechafin, MinDateTime); + end; + + DataTable.Where.Clear; + DataTable.Where.OpenBraket; + DataTable.Where.AddText('ASIENTOS.CODIGOCUENTA' + ' = ' + IntToStr(FCuenta.CODIGO), False); + DataTable.Where.CloseBraket; + + DataTable.Where.AddOperator(opAND); + DataTable.Where.OpenBraket; + DataTable.Where.AddText('ASIENTOS.FECHAASIENTO between ''' + FormatDateTime('dd.mm.yyyy', FechaFin) + ''' and ''' + FormatDateTime('dd.mm.yyyy', FechaIni) + '''', False); + DataTable.Where.CloseBraket; + + DataTable.Active := True; +end; + +procedure TBizAsientoDataTableRules.OnIntervaloChanged(Sender: TObject); +begin +refrescarVista; +end; + +function TBizAsientoDataTableRules.getIntervalo: IBizIntervalos; +begin + Result := FIntervalo; +end; + +procedure TBizAsientoDataTableRules.setIntervalo(const Value: IBizIntervalos); +begin + FIntervalo := Value; + if Assigned(FIntervalo) then + begin + Fintervalo.OnIntervaloChanged := OnIntervaloChanged; + refrescarVista; + end; +end; + +procedure TBizAsientoDataTableRules.OnCuentaChanged(Sender: TObject); +begin +refrescarVista; +end; + +procedure TBizAsientoDataTableRules.puntearAsiento; +begin + if (FECHAASIENTO <= Cuenta.ULTIMOCIERRE) then + raise Exception.Create('No puede despuntear un asiento cerrado'); + + try + DataTable.Edit; + if PUNTEADO = CTE_PUNTEADO + then PUNTEADO := CTE_NOPUNTEADO + else PUNTEADO := CTE_PUNTEADO; + DataTable.Post; + DataTable.ApplyUpdates; + except + on E: Exception do + begin + DataTable.CancelUpdates; + raise Exception.Create(E.message); + end; + end; +end; + +initialization + RegisterDataTableRules('BizAsiento', TBizAsientoDataTableRules); + +finalization + +end. diff --git a/Modulos/Asientos/Servidor/srvAsientos_Impl.ddp b/Modulos/Asientos/Servidor/srvAsientos_Impl.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Asientos/Servidor/srvAsientos_Impl.ddp differ diff --git a/Modulos/Asientos/Servidor/srvAsientos_Impl.dfm b/Modulos/Asientos/Servidor/srvAsientos_Impl.dfm new file mode 100644 index 0000000..29d8e98 --- /dev/null +++ b/Modulos/Asientos/Servidor/srvAsientos_Impl.dfm @@ -0,0 +1,403 @@ +object srvAsientos: TsrvAsientos + OldCreateOrder = True + RequiresSession = True + SessionManager = dmServer.SessionManager + AcquireConnection = True + ConnectionName = 'IBX' + ServiceSchema = schAsientos + ServiceAdapter = DABINAdapter + Left = 512 + Top = 168 + Height = 300 + Width = 300 + object schAsientos: TDASchema + ConnectionManager = dmServer.ConnectionManager + DataDictionary = dmServer.DataDictionary + Diagrams = dmServer.DADiagrams + Datasets = < + item + Params = < + item + Name = 'CODIGOCUENTA' + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + SQL = + 'SELECT CODIGO, FECHAASIENTO, DESCRIPCION'#10'FROM asientos'#10'WHERE COD' + + 'IGOCUENTA = :CODIGOCUENTA'#10'AND TIPOASIENTO = '#39'C'#39#10'ORDER BY FECHAAS' + + 'IENTO DESC, CODIGO DESC' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'CODIGO' + TableField = 'CODIGO' + end + item + DatasetField = 'FECHAASIENTO' + TableField = 'FECHAASIENTO' + end + item + DatasetField = 'DESCRIPCION' + TableField = 'DESCRIPCION' + end> + end> + Name = 'darPenultimoCierre' + Fields = < + item + Name = 'CODIGO' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHAASIENTO' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'DESCRIPCION' + DataType = datString + Size = 2000 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end + item + Params = <> + Statements = < + item + Connection = 'IBX' + TargetTable = 'ASIENTOS' + SQL = + 'SELECT'#10'ASIENTOS.CODIGO, ASIENTOS.CODIGOCUENTA, ASIENTOS.TIPOASIE' + + 'NTO, ASIENTOS.PUNTEADO, ASIENTOS.FECHAALTA, ASIENTOS.USUARIO,'#10'AS' + + 'IENTOS.FECHAASIENTO, ASIENTOS.FORMAPAGO, ASIENTOS.DESCRIPCION, A' + + 'SIENTOS.CODIGOPAGO,'#10'ASIENTOS.IMPORTE, CAST(0 as FLOAT) as IMPORT' + + 'EANT, CAST(0 as FLOAT) as IMPORTEPOS'#10#10'FROM ASIENTOS'#10#10'order by AS' + + 'IENTOS.FECHAASIENTO DESC, ASIENTOS.CODIGO DESC' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'CODIGO' + TableField = 'CODIGO' + end + item + DatasetField = 'CODIGOCUENTA' + TableField = 'CODIGOCUENTA' + end + item + DatasetField = 'FECHAALTA' + TableField = 'FECHAALTA' + end + item + DatasetField = 'USUARIO' + TableField = 'USUARIO' + end + item + DatasetField = 'IMPORTE' + TableField = 'IMPORTE' + end + item + DatasetField = 'FORMAPAGO' + TableField = 'FORMAPAGO' + end + item + DatasetField = 'DESCRIPCION' + TableField = 'DESCRIPCION' + end + item + DatasetField = 'CODIGOPAGO' + TableField = 'CODIGOPAGO' + end + item + DatasetField = 'FECHAASIENTO' + TableField = 'FECHAASIENTO' + end + item + DatasetField = 'PUNTEADO' + TableField = 'PUNTEADO' + end + item + DatasetField = 'TIPOASIENTO' + TableField = 'TIPOASIENTO' + end> + end> + Name = 'Asientos' + Fields = < + item + Name = 'CODIGO' + DataType = datAutoInc + BlobType = dabtUnknown + GeneratorName = 'GEN_ASIENTOS' + DisplayWidth = 0 + Alignment = taLeftJustify + DictionaryEntry = 'CODIGOASIENTO_GEN' + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOCUENTA' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'CODIGO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'TIPOASIENTO' + DataType = datString + Size = 1 + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'Tipo asiento' + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PUNTEADO' + DataType = datInteger + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'Punteado' + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHAALTA' + DataType = datDateTime + BlobType = dabtUnknown + DictionaryEntry = 'FECHAALTA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'USUARIO' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DictionaryEntry = 'USUARIO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHAASIENTO' + DataType = datDateTime + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'Fecha asiento' + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FORMAPAGO' + DataType = datMemo + BlobType = dabtUnknown + DictionaryEntry = 'FORMAPAGO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'DESCRIPCION' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DictionaryEntry = 'DESCRIPCION' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOPAGO' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'CODIGO (GENERICO)' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTE' + DataType = datCurrency + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Cuantia' + Alignment = taRightJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTEANT' + DataType = datCurrency + BlobType = dabtUnknown + LogChanges = False + DisplayWidth = 0 + DisplayLabel = 'Importe anterior' + Alignment = taRightJustify + InPrimaryKey = False + Calculated = True + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTEPOS' + DataType = datCurrency + BlobType = dabtUnknown + LogChanges = False + DisplayWidth = 0 + DisplayLabel = 'Importe posterior' + Alignment = taRightJustify + InPrimaryKey = False + Calculated = True + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end + item + Params = < + item + Name = 'CODIGOCUENTA' + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'FECHAFIN' + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'FECHAINI' + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + SQL = + 'select SUM(IMPORTE) as SUMA'#10'from ASIENTOS'#10'WHERE (CODIGOCUENTA = ' + + ':CODIGOCUENTA)'#10'AND (FECHAASIENTO between :FECHAFIN and :FECHAINI' + + ')' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'SUMA' + TableField = 'SUMA' + end> + end> + Name = 'darSumaAcumulada' + Fields = < + item + Name = 'SUMA' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end> + Commands = < + item + Params = < + item + Name = 'VALORPUNTEADO' + BlobType = dabtUnknown + Value = '' + ParamType = daptUnknown + end + item + Name = 'CODIGOCUENTA' + BlobType = dabtUnknown + Value = '' + ParamType = daptUnknown + end + item + Name = 'FECHAINI' + BlobType = dabtUnknown + Value = '' + ParamType = daptUnknown + end + item + Name = 'FECHAFIN' + BlobType = dabtUnknown + Value = '' + ParamType = daptUnknown + end> + Statements = < + item + Connection = 'IBX' + SQL = + 'UPDATE ASIENTOS'#10'SET PUNTEADO = :VALORPUNTEADO'#10'WHERE (CODIGOCUENT' + + 'A = :CODIGOCUENTA)'#10'AND (FECHAASIENTO <= :FECHAINI and FECHAASIEN' + + 'TO > :FECHAFIN)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'AsignarPunteo' + end> + RelationShips = <> + UpdateRules = <> + Left = 40 + Top = 16 + end + object DABINAdapter: TDABINAdapter + Left = 40 + Top = 72 + end +end diff --git a/Modulos/Asientos/Servidor/srvAsientos_Impl.pas b/Modulos/Asientos/Servidor/srvAsientos_Impl.pas new file mode 100644 index 0000000..2cdb7a2 --- /dev/null +++ b/Modulos/Asientos/Servidor/srvAsientos_Impl.pas @@ -0,0 +1,97 @@ +unit srvAsientos_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:} DARemoteService_Impl, + {Used RODLs:} DataAbstract_Intf, + {Generated:} FactuGES_Intf, uDAClasses, uDAScriptingProvider, + uDABusinessProcessor, uDADataTable, uDABINAdapter; + +type + { TsrvAsientos } + TsrvAsientos = class(TDARemoteService, IsrvAsientos) + schAsientos: TDASchema; + DABINAdapter: TDABINAdapter; + protected + function AsignarPunteo(const CodigoCuenta: Integer; const FechaIni: DateTime; const FechaFin: DateTime; const ValorPunteado: Integer): Boolean; + function darPenultimoCierre(const CodigoCuenta: Integer): DateTime; + function darSumaAcumulada(const CodigoCuenta: Integer; const FechaIni: DateTime; const FechaFin: DateTime): Currency; + end; + +implementation + +{$R *.dfm} +uses + {Generated:} FactuGES_Invk, uDataModuleServer, uDAInterfaces, schAsientosClient_Intf; + +procedure Create_srvAsientos(out anInstance : IUnknown); +begin + anInstance := TsrvAsientos.Create(NIL); +end; + +{ srvAsientos } +{ TsrvAsientos } + +function TsrvAsientos.AsignarPunteo(const CodigoCuenta: Integer; const FechaIni: DateTime; const FechaFin: DateTime; const ValorPunteado: Integer): Boolean; +var + dsData: IDASQLCommand; +begin + try + Result:= True; + dsData := schAsientos.NewCommand(Connection, 'AsignarPunteo', ['CODIGOCUENTA', 'FECHAINI', 'FECHAFIN', 'VALORPUNTEADO'], [CodigoCuenta, FechaIni, FechaFin, ValorPunteado]); + except + on E: Exception do + Result := False; + end; +end; + +function TsrvAsientos.darPenultimoCierre(const CodigoCuenta: Integer): DateTime; +var + ADataSet : IDADataset; +begin + try + Result:= MinDateTime; + ADataSet := schAsientos.NewDataset(Connection, 'darPenultimoCierre', ['CODIGOCUENTA'], [CodigoCuenta]); + if not ADataSet.Dataset.FieldByName(fld_AsientosFECHAASIENTO).IsNull then + begin + //Todavia no se ha hecho el commit y por tanto aparece la fecha de cierre que se va a eliminar por ello dos NEXT + ADataSet.Next; + ADataSet.Next; + if not ADataSet.EOF then + Result := ADataSet.FieldByName(fld_AsientosFECHAASIENTO).AsDateTime; + end; + finally + ADataSet.Close; + end; +end; + +function TsrvAsientos.darSumaAcumulada(const CodigoCuenta: Integer; const FechaIni: DateTime; const FechaFin: DateTime): Currency; +var + ADataSet : IDADataset; +begin + try + Result:= 0; + ADataSet := schAsientos.NewDataset(Connection, 'darSumaAcumulada', ['CODIGOCUENTA', 'FECHAINI', 'FECHAFIN'], [CodigoCuenta, FechaIni, FechaFin]); + if not ADataSet.EOF then + Result := ADataSet.Dataset.Fields[0].AsCurrency; + finally + ADataSet.Close; + end; +end; + +initialization + TROClassFactory.Create('srvAsientos', Create_srvAsientos, TsrvAsientos_Invoker); + +finalization + +end. diff --git a/Modulos/Calendarios/Cliente/Calendarios.bdsproj b/Modulos/Calendarios/Cliente/Calendarios.bdsproj new file mode 100644 index 0000000..1ade83c --- /dev/null +++ b/Modulos/Calendarios/Cliente/Calendarios.bdsproj @@ -0,0 +1,492 @@ + + + + + + + + + + + + Calendarios.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 3 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + .\ + ..\..\..\Output\Cliente + .\ + $(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\Reglas;..\Cliente + vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;IntrawebDB_50_70;Intraweb_50_70;Rave50CLX;Rave50VCL;dclOfficeXP;PluginSDK_D7R;DJcl;JvStdCtrlsD7R;JvAppFrmD7R;JvCoreD7R;JvBandsD7R;JvBDED7R;JvDBD7R;JvDlgsD7R;JvCmpD7R;JvCryptD7R;JvCtrlsD7R;JvCustomD7R;JvDockingD7R;JvDotNetCtrlsD7R;JvEDID7R;qrpt;JvGlobusD7R;JvHMID7R;JvInspectorD7R;JvInterpreterD7R;JvJansD7R;JvManagedThreadsD7R;JvMMD7R;JvNetD7R;JvPageCompsD7R;JvPluginD7R;JvPrintPreviewD7R;JvSystemD7R;JvTimeFrameworkD7R;JvUIBD7R;JvValidatorsD7R;JvWizardD7R;JvXPCtrlsD7R;GUISDK_D7;RemObjects_WebBroker_D7;RemObjects_Indy_D7;RemObjects_RODX_D7;RemObjects_BPDX_D7;PascalScript_RO_D7;DataAbstract_Core_D7;DataAbstract_IDE_D7;DataAbstract_DBXDriver_D7;DataAbstract_Scripting_D7;dxBarD7;dxComnD7;cxLibraryVCLD7;cxEditorsVCLD7;dxThemeD7;cxDataD7;cxExtEditorsVCLD7;cxGridVCLD7;cxPageControlVCLD7;cxSchedulerVCLD7;cxTreeListVCLD7;dxBarDBNavD7;dxBarExtDBItemsD7;dxBarExtItemsD7;dxDockingD7;dxNavBarD7;dxPSCoreD7;dxsbD7;dxPSLnksD7;dxPSTeeChartD7;EPCOTAUtils70;PNG_D7;PngComponentsD7;tb2k_d7;tbx_d7;UserControlD7_RT;fqb70;frx7;frxADO7;frxBDE7;frxcs7;frxDB7;frxDBX7;frxe7;frxIBX7;fs7;fsADO7;fsBDE7;fsDB7;fsIBX7;cxExportVCLD7;cxIntl5D7;cxIntlPrintSys3D7;dxPScxCommonD7;dxPScxExtCommonD7;dxPScxGridLnkD7;dxPScxPCProdD7;dxPScxTLLnkD7;dxPSDBTeeChartD7;dxPsPrVwAdvD7;TMSD7;FR7;FRIBX7;cxIntlSchedulerD7;dxLayoutControlD7;dxPScxScheduler2LnkD7 + + + False + + + + + + False + + + True + False + + + + $00000000 + C:\Archivos de programa\Borland\Delphi7\Bin\ + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + diff --git a/Modulos/Calendarios/Cliente/Calendarios.cfg b/Modulos/Calendarios/Cliente/Calendarios.cfg new file mode 100644 index 0000000..4af03f3 --- /dev/null +++ b/Modulos/Calendarios/Cliente/Calendarios.cfg @@ -0,0 +1,45 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O- +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-GD +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N".\" +-LE"..\..\..\Output\Cliente" +-LN".\" +-U"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\Reglas;..\Cliente" +-O"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\Reglas;..\Cliente" +-I"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\Reglas;..\Cliente" +-R"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\Reglas;..\Cliente" +-Z +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/Modulos/Calendarios/Cliente/Calendarios.dcp b/Modulos/Calendarios/Cliente/Calendarios.dcp new file mode 100644 index 0000000..adbbfa3 Binary files /dev/null and b/Modulos/Calendarios/Cliente/Calendarios.dcp differ diff --git a/Modulos/Calendarios/Cliente/Calendarios.dof b/Modulos/Calendarios/Cliente/Calendarios.dof new file mode 100644 index 0000000..a782ccf --- /dev/null +++ b/Modulos/Calendarios/Cliente/Calendarios.dof @@ -0,0 +1,175 @@ +[FileVersion] +Version=7.0 +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=0 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=1 +SymbolLibrary=1 +SymbolPlatform=1 +UnitLibrary=1 +UnitPlatform=1 +UnitDeprecated=1 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 +[Linker] +MapFile=3 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription= +[Directories] +OutputDir= +UnitOutputDir=.\ +PackageDLLOutputDir=..\..\..\Output\Cliente +PackageDCPOutputDir=.\ +SearchPath=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\Reglas;..\Cliente +Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;IntrawebDB_50_70;Intraweb_50_70;Rave50CLX;Rave50VCL;dclOfficeXP;PluginSDK_D7R;DJcl;JvStdCtrlsD7R;JvAppFrmD7R;JvCoreD7R;JvBandsD7R;JvBDED7R;JvDBD7R;JvDlgsD7R;JvCmpD7R;JvCryptD7R;JvCtrlsD7R;JvCustomD7R;JvDockingD7R;JvDotNetCtrlsD7R;JvEDID7R;qrpt;JvGlobusD7R;JvHMID7R;JvInspectorD7R;JvInterpreterD7R;JvJansD7R;JvManagedThreadsD7R;JvMMD7R;JvNetD7R;JvPageCompsD7R;JvPluginD7R;JvPrintPreviewD7R;JvSystemD7R;JvTimeFrameworkD7R;JvUIBD7R;JvValidatorsD7R;JvWizardD7R;JvXPCtrlsD7R;GUISDK_D7;RemObjects_WebBroker_D7;RemObjects_Indy_D7;RemObjects_RODX_D7;RemObjects_BPDX_D7;PascalScript_RO_D7;DataAbstract_Core_D7;DataAbstract_IDE_D7;DataAbstract_DBXDriver_D7;DataAbstract_Scripting_D7;dxBarD7;dxComnD7;cxLibraryVCLD7;cxEditorsVCLD7;dxThemeD7;cxDataD7;cxExtEditorsVCLD7;cxGridVCLD7;cxPageControlVCLD7;cxSchedulerVCLD7;cxTreeListVCLD7;dxBarDBNavD7;dxBarExtDBItemsD7;dxBarExtItemsD7;dxDockingD7;dxNavBarD7;dxPSCoreD7;dxsbD7;dxPSLnksD7;dxPSTeeChartD7;EPCOTAUtils70;PNG_D7;PngComponentsD7;tb2k_d7;tbx_d7;UserControlD7_RT;fqb70;frx7;frxADO7;frxBDE7;frxcs7;frxDB7;frxDBX7;frxe7;frxIBX7;fs7;fsADO7;fsBDE7;fsDB7;fsIBX7;cxExportVCLD7;cxIntl5D7;cxIntlPrintSys3D7;dxPScxCommonD7;dxPScxExtCommonD7;dxPScxGridLnkD7;dxPScxPCProdD7;dxPScxTLLnkD7;dxPSDBTeeChartD7;dxPsPrVwAdvD7;TMSD7;FR7;FRIBX7;cxIntlSchedulerD7;dxLayoutControlD7;dxPScxScheduler2LnkD7 +Conditionals= +DebugSourceDirs= +UsePackages=0 +[Parameters] +RunParams= +HostApplication= +Launcher= +UseLauncher=0 +DebugCWD= +[Language] +ActiveLang= +ProjectLang= +RootDir=C:\Archivos de programa\Borland\Delphi7\Bin\ +[Version Info] +IncludeVerInfo=1 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=3082 +CodePage=1252 +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= +[HistoryLists\hlDebugSourcePath] +Count=1 +Item0=D:\Proyectos\Componentes\GUISDK\Sources\;D:\Proyectos\Componentes\PluginSDK\Source\;D:\Proyectos\FactuGES (Estudio)\Codigo\Modulos\Contactos\Cliente;D:\Proyectos\FactuGES (Estudio)\Codigo\Modulos\Contactos\Reglas +[HistoryLists\hlUnitAliases] +Count=1 +Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +[HistoryLists\hlSearchPath] +Count=16 +Item0=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente;..\..\Asientos\Cliente;..\..\Cuentas\Cliente +Item1=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente;..\..\Asientos\Cliente +Item2=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente +Item3=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente +Item4=..\Modulos\Presupuestos\Reglas;..\Modulos\Contactos\Reglas;..\Base;..\Configuracion;..\Usuarios;..\Modulos\Albaranes de cliente\Reglas +Item5=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\Base;..\Configuracion;..\Usuarios;..\Modulos\Intervalos;..\Modulos\Documentos asociados;..\Modulos\Contactos\Cliente;..\Modulos\Contactos\Reglas;..\Modulos\Presupuestos\Cliente;..\Modulos\Presupuestos\Reglas;..\Modulos\Albaranes de cliente\Cliente;..\Modulos\Albaranes de cliente\Reglas;..\Modulos\Facturas de cliente\Cliente;..\Modulos\Facturas de cliente\Reglas;..\Modulos\Pedidos a proveedor\Cliente;..\Modulos\Pedidos a proveedor\Reglas;..\Modulos\Facturas de proveedor\Cliente;..\Modulos\Facturas de proveedor\Reglas;..\Modulos\Montajes\Reglas;..\Modulos\Montajes\Cliente;..\Modulos\Articulos\Cliente;..\Modulos\Articulos\Reglas;..\Modulos\Almacenes\Reglas;..\Modulos\Almacenes\Cliente;..\Modulos\Pagos\Reglas;..\Modulos\Pagos\Cliente;..\Modulos\Cuentas\Reglas;..\Modulos\Cuentas\Cliente;..\Modulos\Asientos\Reglas;..\Modulos\Asientos\Cliente;..\Modulos\Calendarios\Cliente;..\Modulos\Calendarios\Reglas +Item6=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente;..\..\Documentos asociados;..\..\Contactos\Cliente;..\..\Almacenes\Cliente +Item7=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados +Item8=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente;..\..\Documentos asociados;..\..\Contactos\Cliente +Item9=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente;..\..\Documentos asociados +Item10=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente +Item11=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados;..\..\Montajes\Cliente;..\..\Almacenes\Cliente +Item12=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados;..\..\Montajes\Cliente +Item13=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\Servidor +Item14=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\base;..\Modulos\Calendarios\Cliente;..\Modulos\Calendarios\Reglas +Item15=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\Base;..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios +[HistoryLists\hlUnitOutputDirectory] +Count=1 +Item0=.\ +[HistoryLists\hlOutputDirectorry] +Count=2 +Item0=..\Output\Servidor +Item1=..\Output\Cliente +[HistoryLists\hlBPLOutput] +Count=3 +Item0=..\..\..\Output\Cliente +Item1=..\Output\Cliente +Item2=..\..\Output\Cliente +[HistoryLists\hlDCPOutput] +Count=1 +Item0=.\ diff --git a/Modulos/Calendarios/Cliente/Calendarios.dpk b/Modulos/Calendarios/Cliente/Calendarios.dpk new file mode 100644 index 0000000..8b5084b --- /dev/null +++ b/Modulos/Calendarios/Cliente/Calendarios.dpk @@ -0,0 +1,79 @@ +package Calendarios; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION OFF} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$IMPLICITBUILD OFF} + +requires + BaseD7, + PluginSDK_D7R, + rtl, + vcl, + cxLibraryVCLD7, + dxThemeD7, + cxEditorsVCLD7, + cxDataD7, + dbrtl, + vcljpg, + vcldb, + cxExtEditorsVCLD7, + vclx, + cxExportVCLD7, + cxSchedulerVCLD7, + dxPScxScheduler2LnkD7, + cxGridVCLD7, + cxPageControlVCLD7, + dxPSCoreD7, + dxComnD7, + dxPScxGridLnkD7, + dxPScxCommonD7, + dxPSLnksD7, + designide, + vclactnband, + vclshlctrls, + dclcxLibraryVCLD7, + dsnap, + adortl, + PngComponentsD7, + PNG_D7, + tb2k_d7, + tbx_d7, + JvCoreD7R, + Jcl, + JclVcl, + JvSystemD7R, + JvPageCompsD7R, + JvStdCtrlsD7R; + +contains + uPluginControllerCalendarios in 'uPluginControllerCalendarios.pas' {ModuleCalendarios: TModuleController}, + uDataModuleCalendarios in 'uDataModuleCalendarios.pas' {dmCalendarios: TDAClientDataModule}, + uViewCalendarioBase in 'uViewCalendarioBase.pas' {frViewCalendarioBase: TCustomView}, + uBizCitas in '..\Reglas\uBizCitas.pas', + uEditorCalendarioBase in 'uEditorCalendarioBase.pas' {fEditorCalendarioBase: TCustomEditor}, + uEditorCalendarioMediciones in 'uEditorCalendarioMediciones.pas' {fEditorCalendarioMediciones: TCustomEditor}, + uViewCalendarioConFiltro in 'uViewCalendarioConFiltro.pas' {frViewCalendarioConFiltro: TCustomView}, + EditorEventos in 'EditorEventos.pas' {frEditorEventos}, + uEditorCalendarioConFiltro in 'uEditorCalendarioConFiltro.pas' {fEditorCalendarioConFiltro: TCustomEditor}; + +end. diff --git a/Modulos/Calendarios/Cliente/Calendarios.drc b/Modulos/Calendarios/Cliente/Calendarios.drc new file mode 100644 index 0000000..a5d5271 --- /dev/null +++ b/Modulos/Calendarios/Cliente/Calendarios.drc @@ -0,0 +1,14 @@ +/* VER150 + Generated by the Borland Delphi Pascal Compiler + because -GD or --drc was supplied to the compiler. + + This file contains compiler-generated resources that + were bound to the executable. + If this file is empty, then no compiler-generated + resources were bound to the produced executable. +*/ + +STRINGTABLE +BEGIN +END + diff --git a/Modulos/Calendarios/Cliente/Calendarios.res b/Modulos/Calendarios/Cliente/Calendarios.res new file mode 100644 index 0000000..ec5f233 Binary files /dev/null and b/Modulos/Calendarios/Cliente/Calendarios.res differ diff --git a/Modulos/Calendarios/Cliente/EditorEventos.ddp b/Modulos/Calendarios/Cliente/EditorEventos.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Calendarios/Cliente/EditorEventos.ddp differ diff --git a/Modulos/Calendarios/Cliente/EditorEventos.dfm b/Modulos/Calendarios/Cliente/EditorEventos.dfm new file mode 100644 index 0000000..3cc8eaa --- /dev/null +++ b/Modulos/Calendarios/Cliente/EditorEventos.dfm @@ -0,0 +1,267 @@ +inherited frEditorEventos: TfrEditorEventos + Left = 428 + Top = 320 + BorderIcons = [biSystemMenu] + Caption = 'frEditorEventos' + ClientHeight = 533 + Constraints.MinHeight = 350 + PixelsPerInch = 96 + TextHeight = 13 + inherited pnlButtons: TPanel + Top = 492 + Height = 41 + AutoSize = True + inherited pnlThreeButtons: TPanel + Height = 41 + inherited btnOk: TcxButton + Left = -34 + end + inherited btnCancel: TcxButton + Left = 76 + end + inherited btnDelete: TcxButton + Left = 186 + end + end + inherited pnlRecurrence: TPanel + Height = 41 + inherited btnRecurrence: TcxButton + LookAndFeel.Kind = lfFlat + end + end + end + inherited pnlCaption: TPanel + Top = 148 + Height = 37 + Visible = False + DesignSize = ( + 450 + 37) + inherited lbLocation: TLabel + Top = 62 + end + inherited lbLabel: TLabel + Top = 62 + end + inherited teLocation: TcxTextEdit + Top = 58 + end + inherited icbLabel: TcxImageComboBox + Top = 58 + end + end + inherited pnlTime: TPanel + Top = 185 + Visible = False + end + inherited pnlRecurrenceInfo: TPanel + Top = 252 + end + inherited pnlPlaceHolder: TPanel + Top = 332 + Visible = False + inherited pnlReminder: TPanel + Visible = False + end + inherited Panel1: TPanel + inherited Bevel3: TBevel + Width = 431 + Visible = False + end + end + end + inherited pnlMessage: TPanel + Top = 375 + Height = 117 + Anchors = [] + BorderWidth = 10 + TabOrder = 9 + Visible = False + inherited Bevel2: TBevel + Width = 431 + end + inherited Bevel1: TBevel + Left = 10 + Top = 106 + Width = 430 + Height = 1 + Align = alBottom + Visible = False + end + inherited meMessage: TcxMemo + Top = 10 + Align = alClient + Height = 96 + Width = 430 + end + end + inherited pnlResource: TPanel + Top = 105 + Visible = False + object Bevel9: TBevel [2] + Left = 12 + Top = 36 + Width = 429 + Height = 7 + Anchors = [akLeft, akTop, akRight] + Shape = bsBottomLine + Visible = False + end + object cbInstaladores: TcxComboBox [3] + Left = 80 + Top = 13 + TabOrder = 1 + Width = 217 + end + inherited cbResources: TcxCheckComboBox + Left = 144 + Properties.EmptySelectionText = 'Ninguno seleccionado' + Visible = False + Width = 122 + end + object cbMedicion: TcxCheckBox + Left = 319 + Top = 14 + Caption = 'Es una medici'#243'n' + Properties.OnChange = cbTerminadoPropertiesChange + TabOrder = 2 + Visible = False + Width = 122 + end + end + object pnlObra: TPanel + Left = 0 + Top = 41 + Width = 450 + Height = 64 + Align = alTop + BevelOuter = bvNone + FullRepaint = False + ParentColor = True + TabOrder = 6 + Visible = False + DesignSize = ( + 450 + 64) + object lbObra: TLabel + Left = 16 + Top = 16 + Width = 28 + Height = 13 + Caption = 'Obra:' + end + object lbTipo: TLabel + Left = 16 + Top = 41 + Width = 24 + Height = 13 + Caption = 'Tipo:' + end + object lbPartida: TLabel + Left = 241 + Top = 41 + Width = 51 + Height = 13 + Alignment = taRightJustify + Caption = 'Pedido de:' + Visible = False + end + object Bevel10: TBevel + Left = 11 + Top = 0 + Width = 429 + Height = 8 + Anchors = [akLeft, akTop, akRight] + Shape = bsTopLine + end + object cbObra: TcxComboBox + Left = 72 + Top = 12 + Anchors = [akLeft, akTop, akRight] + Properties.DropDownAutoWidth = False + Properties.DropDownListStyle = lsFixedList + Properties.OnEditValueChanged = cbObraPropertiesEditValueChanged + TabOrder = 0 + Width = 370 + end + object cbTipo: TcxComboBox + Left = 72 + Top = 37 + Properties.DropDownAutoWidth = False + Properties.DropDownListStyle = lsFixedList + Properties.OnEditValueChanged = cbTipoPropertiesEditValueChanged + TabOrder = 1 + Width = 145 + end + object teCodigoContrato: TEdit + Left = 40 + Top = 32 + Width = 25 + Height = 21 + TabOrder = 2 + Text = 'teCodigoContrato' + Visible = False + end + object teNombreCliente: TEdit + Left = 40 + Top = 8 + Width = 25 + Height = 21 + TabOrder = 3 + Text = 'teNombreCliente' + Visible = False + end + object cbPartida: TcxComboBox + Left = 296 + Top = 37 + Anchors = [akLeft, akTop, akRight] + Properties.DropDownAutoWidth = False + Properties.DropDownListStyle = lsFixedList + Properties.OnEditValueChanged = cbTipoPropertiesEditValueChanged + TabOrder = 4 + Visible = False + Width = 145 + end + end + object pnlCompletada: TPanel + Left = 0 + Top = 292 + Width = 450 + Height = 40 + Align = alTop + BevelOuter = bvNone + FullRepaint = False + ParentColor = True + TabOrder = 8 + Visible = False + DesignSize = ( + 450 + 40) + object Bevel8: TBevel + Left = 11 + Top = 0 + Width = 431 + Height = 9 + Anchors = [akLeft, akTop, akRight] + Shape = bsTopLine + end + object cbCompletada: TcxCheckBox + Left = 12 + Top = 12 + Caption = 'Cita completada el d'#237'a' + Properties.OnChange = cbTerminadoPropertiesChange + TabOrder = 0 + Width = 141 + end + object deFechaCompletada: TcxDateEdit + Left = 147 + Top = 11 + Properties.DateButtons = [btnToday] + Properties.ImmediatePost = True + Properties.InputKind = ikStandard + Properties.OnChange = deFechaCompletadaPropertiesChange + TabOrder = 1 + Width = 121 + end + end +end diff --git a/Modulos/Calendarios/Cliente/EditorEventos.pas b/Modulos/Calendarios/Cliente/EditorEventos.pas new file mode 100644 index 0000000..73daf4a --- /dev/null +++ b/Modulos/Calendarios/Cliente/EditorEventos.pas @@ -0,0 +1,352 @@ +unit EditorEventos; +//Para poder ver el dfm de esta unidad es necesario abrir primero +//C:\Archivos de programa\Developer Express Inc\ExpressScheduler 2\Sources\cxSchedulerEventEditor + +interface + +uses Graphics, cxSchedulerDialogs, cxSchedulerEventEditor, + Menus, cxLookAndFeelPainters, cxGraphics, StdCtrls, + cxCheckComboBox, cxMemo, cxDropDownEdit, cxCheckBox, cxSpinEdit, + cxTimeEdit, cxCalendar, cxMaskEdit, cxImageComboBox, cxTextEdit, + cxControls, cxContainer, cxEdit, cxGroupBox, Controls, ExtCtrls, + cxButtons, Classes, + + uBizCitas; + +type + TfrEditorEventos = class(TcxSchedulerEventEditorForm) + pnlObra: TPanel; + lbObra: TLabel; + cbObra: TcxComboBox; + lbTipo: TLabel; + cbTipo: TcxComboBox; + teCodigoContrato: TEdit; + teNombreCliente: TEdit; + lbPartida: TLabel; + cbPartida: TcxComboBox; + pnlCompletada: TPanel; + Bevel8: TBevel; + cbCompletada: TcxCheckBox; + deFechaCompletada: TcxDateEdit; + Bevel9: TBevel; + cbInstaladores: TcxComboBox; + Bevel10: TBevel; + cbMedicion: TcxCheckBox; + procedure cbObraPropertiesEditValueChanged(Sender: TObject); + procedure cbTipoPropertiesEditValueChanged(Sender: TObject); + procedure cbTerminadoPropertiesChange(Sender: TObject); + procedure deFechaCompletadaPropertiesChange(Sender: TObject); + private + FTipoEvento : TTipoCitas; + procedure ApplyChanges; + protected + procedure DeleteEvent; override; + procedure PostEvent; override; + procedure SaveChanges; override; + function GetFormColor: TColor; override; + function GetResourcesPanelVisible: Boolean; override; + procedure InitializeControls; override; + procedure LoadEventValuesIntoControls; override; + function IsValid: Boolean; override; + procedure SetCaptions; override; + procedure SetReadOnly(AValue: Boolean); override; + procedure UpdateEventValuesFromControls; override; + procedure SaveResourceID; override; + public + constructor Create(AOwner: TComponent); override; + end; + +var + frEditorEventos: TfrEditorEventos; + +implementation +{$R *.dfm} + +uses SysUtils, Dialogs, Variants, DateUtils, cxSchedulerUtils, +schCitasClient_Intf, uDataModuleCalendarios; + +{ TfrEditorEventos } + +procedure TfrEditorEventos.ApplyChanges; +begin + inherited; + // +end; + +constructor TfrEditorEventos.Create(AOwner: TComponent); +begin + inherited; +end; + +function TfrEditorEventos.GetFormColor: TColor; +begin + Result := $00F9FEFF; +end; + +procedure TfrEditorEventos.InitializeControls; +begin + if not VarIsNull(Event.GetCustomFieldValueByName(fld_CITASTIPOTAREA)) then + FTipoEvento := DarTipoCita(Event.GetCustomFieldValueByName(fld_CITASTIPOTAREA)) + else + FTipoEvento := tcPersonal; + + inherited; + + pnlMessage.Visible := True; + pnlCaption.Visible := True; + + if not (FTipoEvento in [tcPersonal, tcMedicion]) then + begin + pnlObra.Visible := True; + if FTipoEvento in [tcPedido, tcConfirmacion, tcRecepcion, tcAviso, tcEntregaCliente] then + begin + pnlCompletada.Visible := True; + end; + end + else begin + pnlObra.Visible := False; + cbMedicion.Visible := (FTipoEvento = tcMedicion) + end; +end; + +function TfrEditorEventos.IsValid: Boolean; +begin + Result := inherited IsValid; + + if Result then + begin + if Length(teSubject.Text) = 0 then + begin + ShowMessage('Indique el asunto'); + Result := False; + end; + + if (FTipoEvento in [tcEntrega, tcMontaje, tcRemate]) then + begin + if Length(cbInstaladores.EditValue) = 0 then + begin + ShowMessage('Hay que indicar el instalador'); + Result := False; + end; + end; + end; +end; + +procedure TfrEditorEventos.LoadEventValuesIntoControls; +var + I, AResourceIndex: Integer; +begin + inherited LoadEventValuesIntoControls; + + if icbLabel.ItemIndex = 6 then + cbMedicion.Checked := True; + + + if (Event.GetCustomFieldValueByName(fld_CITASTIPOTAREA) <> NULL) and + not (Length(Event.GetCustomFieldValueByName(fld_CITASTIPOTAREA)) = 0) then + cbTipo.EditValue := Event.GetCustomFieldValueByName(fld_CITASTIPOTAREA); + + if not (FTipoEvento in [tcPersonal, tcMedicion]) then + begin + if (Event.GetCustomFieldValueByName(fld_CITASCODIGOCONTRATO) <> NULL) and + not (Length(Event.GetCustomFieldValueByName(fld_CITASCODIGOCONTRATO))=0) then + teCodigoContrato.Text := Event.GetCustomFieldValueByName(fld_CITASCODIGOCONTRATO); + + if (Event.GetCustomFieldValueByName(fld_CITASNOMBRECLIENTE) <> NULL) and + not (Length(Event.GetCustomFieldValueByName(fld_CITASNOMBRECLIENTE))=0) then + teNombreCliente.Text := Event.GetCustomFieldValueByName(fld_CITASNOMBRECLIENTE); + + if (Event.GetCustomFieldValueByName(fld_CITASCOMPLETADA) <> NULL) then + begin + cbCompletada.Checked := True; + deFechaCompletada.Date := DateOf(VarToDateTime(Event.GetCustomFieldValueByName(fld_CITASCOMPLETADA))); + end; + end; + + AResourceIndex := -1; + with cbInstaladores do + begin + Properties.Items.BeginUpdate; + try + Properties.Items.Clear; + for i := 0 to cbResources.Properties.Items.Count - 1 do + begin + Properties.Items.Add(cbResources.Properties.Items[i].Description); + if cbResources.States[I] = cbsChecked then + AResourceIndex := i; + end; + finally + Properties.Items.EndUpdate; + end; + ItemIndex := AResourceIndex; + end; +end; + +procedure TfrEditorEventos.SetCaptions; +begin + inherited SetCaptions; + + case FTipoEvento of + tcEntrega, + tcMontaje, + tcRemate : lbResource.Caption := 'Instalador:'; + + tcMedicion: lbResource.Caption := 'Vendedor:'; + end; + + lbSubject.Caption := 'Asunto:'; + lbStartTime.Caption := 'Comienzo:'; + lbEndTime.Caption := 'Final:'; + cbAllDayEvent.Caption := 'Todo el día'; + btnOk.Caption := 'Aceptar'; + btnDelete.Caption := 'Eliminar'; + btnCancel.Caption := 'Cancelar'; +end; + +procedure TfrEditorEventos.SetReadOnly(AValue: Boolean); +begin + inherited; + if AValue then + begin + cbObra.Enabled:= False; + cbPartida.Enabled:= False; + cbTipo.Enabled:= False; + deFechaCompletada.Enabled:= False; + cbCompletada.Enabled:= False; + end + else + begin + cbObra.Enabled:= True; + cbPartida.Enabled:= True; + cbTipo.Enabled:= True; + deFechaCompletada.Enabled:= True; + cbCompletada.Enabled:= True; + end; +end; + +procedure TfrEditorEventos.UpdateEventValuesFromControls; +begin + inherited UpdateEventValuesFromControls; + + SaveResourceID; + + try + // post the data from the custom editing controls + + if not VarIsNull(teCodigoContrato.Text) then + Event.SetCustomFieldValueByName(fld_CITASCODIGOCONTRATO, teCodigoContrato.Text); + + if not VarIsNull(teNombreCliente.Text) then + Event.SetCustomFieldValueByName(fld_CITASNOMBRECLIENTE, teNombreCliente.Text); + + if not VarIsNull(cbPartida.EditValue) then + Event.SetCustomFieldValueByName(fld_CITASPARTIDA, TextoPartidasObra[cbPartida.ItemIndex]); + + if not VarIsNull(deFechaCompletada.EditValue) then + Event.SetCustomFieldValueByName(fld_CITASCOMPLETADA, deFechaCompletada.Date) + else + Event.SetCustomFieldValueByName(fld_CITASCOMPLETADA, Null); + + if not VarIsNull(cbTipo.EditValue) then + begin + FTipoEvento := DarTipoCita(cbTipo.EditValue); + Event.SetCustomFieldValueByName(fld_CITASTIPOTAREA, TextoTipoCita[Ord(FTipoEvento)]); + end + else + FTipoEvento := tcPersonal; + + if cbMedicion.Checked then + Event.LabelColor := EventLabelColors[6] + else + Event.LabelColor := EventLabelColors[Ord(FTipoEvento) + 1]; + except + on E: Exception do + ShowMessage('Can''t post data' + #13#10 + E.Message); + end; +end; + +procedure TfrEditorEventos.cbObraPropertiesEditValueChanged( + Sender: TObject); +begin + inherited OnChanged(Sender); + if Length(cbObra.EditValue) <> 0 then + begin + teCodigoContrato.Text := Copy(cbObra.EditValue, 0, Pos(' ', cbObra.EditValue)-1); + teNombreCliente.Text := Copy(cbObra.EditValue, Pos(' ', cbObra.EditValue)+1, MaxInt); + end + else begin + teCodigoContrato.Text := '0'; + teNombreCliente.Text := ''; + end; +end; + +procedure TfrEditorEventos.cbTipoPropertiesEditValueChanged( + Sender: TObject); +begin + inherited OnChanged(Sender); + icbLabel.ItemIndex := cbTipo.ItemIndex + 1; + icbLabel.EditModified := True; +end; + +procedure TfrEditorEventos.cbTerminadoPropertiesChange(Sender: TObject); +begin + deFechaCompletada.Enabled := cbCompletada.Checked; + if not cbCompletada.Checked then + deFechaCompletada.Clear + else + if Length(deFechaCompletada.EditValue) = 0 then + deFechaCompletada.Date := DateOf(Now); + + FModified := True; + CheckVisible; +end; + +procedure TfrEditorEventos.deFechaCompletadaPropertiesChange( + Sender: TObject); +begin + FModified := True; +end; + +procedure TfrEditorEventos.DeleteEvent; +begin + inherited; +end; + +procedure TfrEditorEventos.PostEvent; +begin + inherited; +end; + +procedure TfrEditorEventos.SaveChanges; +begin + inherited; +end; + +function TfrEditorEventos.GetResourcesPanelVisible: Boolean; +begin + Result := not (FTipoEvento in [tcPedido, tcConfirmacion, tcRecepcion, tcAviso, tcEntregaCliente]); +end; + +procedure TfrEditorEventos.SaveResourceID; +var + I: Integer; +begin + if pnlResource.Visible then + begin + for I := 0 to cbResources.Properties.Items.Count - 1 do + cbResources.States[I] := cbsUnchecked; + cbResources.States[cbInstaladores.ItemIndex] := cbsChecked; + end + else + begin + showmessage('debo poner a nulo el valor de resources'); + for I := 0 to cbResources.Properties.Items.Count - 1 do + cbResources.States[I] := cbsUnchecked; + end; + inherited; +end; + +initialization + cxEventEditorClass := TfrEditorEventos; // indicate that the new Event modal dialog will be invoked at runtime + +end. diff --git a/Modulos/Calendarios/Cliente/Unit1.ddp b/Modulos/Calendarios/Cliente/Unit1.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Calendarios/Cliente/Unit1.ddp differ diff --git a/Modulos/Calendarios/Cliente/Unit1.dfm b/Modulos/Calendarios/Cliente/Unit1.dfm new file mode 100644 index 0000000..bd5da5f --- /dev/null +++ b/Modulos/Calendarios/Cliente/Unit1.dfm @@ -0,0 +1,48 @@ +inherited fEditorBase1: TfEditorBase1 + Left = 380 + Top = 362 + Width = 686 + Caption = 'fEditorBase1' + Color = clActiveCaption + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + Width = 678 + inherited Image1: TImage + Left = 651 + end + end + inherited TBXDock: TTBXDock + Width = 678 + end + inherited StatusBar: TStatusBar + Width = 678 + end + inline frViewBase21: TfrViewBase2 [3] + Left = 0 + Top = 76 + Width = 678 + Height = 383 + Align = alClient + Color = clYellow + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentBackground = False + ParentColor = False + ParentFont = False + TabOrder = 3 + ReadOnly = False + end + inherited EditorActionList: TActionList [4] + end + inherited SmallImages: TPngImageList [5] + end + inherited LargeImages: TPngImageList [6] + end + inherited JvFormStorage: TJvFormStorage [7] + OnRestorePlacement = JvFormStorageRestorePlacement + end +end diff --git a/Modulos/Calendarios/Cliente/Unit1.pas b/Modulos/Calendarios/Cliente/Unit1.pas new file mode 100644 index 0000000..8b9e34d --- /dev/null +++ b/Modulos/Calendarios/Cliente/Unit1.pas @@ -0,0 +1,36 @@ +unit Unit1; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uEditorBase, JvAppStorage, JvAppRegistryStorage, + JvComponentBase, JvFormPlacement, ImgList, PngImageList, StdActns, + ActnList, ComCtrls, TBX, TB2Item, TB2Dock, TB2Toolbar, pngimage, + ExtCtrls, JvExControls, JvComponent, JvNavigationPane, uCustomView, + uViewBase, Unit2; + +type + TfEditorBase1 = class(TfEditorBase) + frViewBase21: TfrViewBase2; + procedure JvFormStorageRestorePlacement(Sender: TObject); + private + { Private declarations } + public + { Public declarations } + end; + +var + fEditorBase1: TfEditorBase1; + +implementation + +{$R *.dfm} + +procedure TfEditorBase1.JvFormStorageRestorePlacement(Sender: TObject); +begin + inherited; + Invalidate; +end; + +end. diff --git a/Modulos/Calendarios/Cliente/Unit2.ddp b/Modulos/Calendarios/Cliente/Unit2.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Calendarios/Cliente/Unit2.ddp differ diff --git a/Modulos/Calendarios/Cliente/Unit2.dfm b/Modulos/Calendarios/Cliente/Unit2.dfm new file mode 100644 index 0000000..d0d1a66 --- /dev/null +++ b/Modulos/Calendarios/Cliente/Unit2.dfm @@ -0,0 +1,6 @@ +inherited frViewBase2: TfrViewBase2 + Align = alClient + Color = clYellow + ParentBackground = False + ParentColor = False +end diff --git a/Modulos/Calendarios/Cliente/Unit2.pas b/Modulos/Calendarios/Cliente/Unit2.pas new file mode 100644 index 0000000..d9b7547 --- /dev/null +++ b/Modulos/Calendarios/Cliente/Unit2.pas @@ -0,0 +1,24 @@ +unit Unit2; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase; + +type + TfrViewBase2 = class(TfrViewBase) + private + { Private declarations } + public + { Public declarations } + end; + +var + frViewBase2: TfrViewBase2; + +implementation + +{$R *.dfm} + +end. diff --git a/Modulos/Calendarios/Cliente/uDataModuleCalendarios.ddp b/Modulos/Calendarios/Cliente/uDataModuleCalendarios.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Calendarios/Cliente/uDataModuleCalendarios.ddp differ diff --git a/Modulos/Calendarios/Cliente/uDataModuleCalendarios.dfm b/Modulos/Calendarios/Cliente/uDataModuleCalendarios.dfm new file mode 100644 index 0000000..8bb3ef1 Binary files /dev/null and b/Modulos/Calendarios/Cliente/uDataModuleCalendarios.dfm differ diff --git a/Modulos/Calendarios/Cliente/uDataModuleCalendarios.pas b/Modulos/Calendarios/Cliente/uDataModuleCalendarios.pas new file mode 100644 index 0000000..c1d967c --- /dev/null +++ b/Modulos/Calendarios/Cliente/uDataModuleCalendarios.pas @@ -0,0 +1,110 @@ +unit uDataModuleCalendarios; + +interface + +uses {vcl:} SysUtils, Classes, DB, DBClient, + {RemObjects:} uDAClientDataModule, uDADataTable, uDABINAdapter, + uROServiceComponent, uRORemoteService, uROClient, uROBinMessage, + uROWinInetHttpChannel, uDAScriptingProvider, uDACDSDataTable, + uBizCitas; + +type + TdmCalendarios = class(TDAClientDataModule) + DABINAdapter: TDABINAdapter; + RORemoteService: TRORemoteService; + tbl_Citas: TDACDSDataTable; + ds_Citas: TDADataSource; + tbl_Vendedores: TDACDSDataTable; + ds_Vendedores: TDADataSource; + procedure DAClientDataModuleCreate(Sender: TObject); + private + public + function GetCodigo: Integer; + function GetItems: IBizCitas; + function GetMediciones: IBizCitas; + function GetVendedores: IBizVendedores; + end; + +var + dmCalendarios: TdmCalendarios; + +implementation + +{$R *.DFM} + +uses + Controls, Forms, uDAInterfaces, DataAbstract_Intf, FactuGES_Intf, + uDataTableUtils, uROTypes, uEditorPreview, Variants, + Dialogs, uDataModuleBase, uDBSelectionList, + schCitasClient_Intf; + + +procedure TdmCalendarios.DAClientDataModuleCreate(Sender: TObject); +begin + RORemoteService.Channel := dmBase.Channel; + RORemoteService.Message := dmBase.Message; +end; + +function TdmCalendarios.GetCodigo: Integer; +begin + Result := (RORemoteService as IsrvCitas).GetCodigo('GEN_ID'); +end; + +function TdmCalendarios.GetItems: IBizCitas; +var + dtCitas: TDACDSDataTable; + ACursor: TCursor; +begin + ACursor := Screen.Cursor; + Screen.Cursor := crHourGlass; + try + dtCitas := TDACDSDataTable.Create(NIL); + CloneDataTable(tbl_Citas, dtCitas); + dtCitas.BusinessRulesID := BIZ_CITAS; + Result := (dtCitas as IBizCitas); + finally + Screen.Cursor := ACursor; + end; +end; + +function TdmCalendarios.GetMediciones: IBizCitas; +var + dtCitas : IBizCitas; +begin + dtCitas := GetItems; + with dtCitas.DataTable.Where do + begin + if not Empty then + AddOperator(opAND); + OpenBraket; + AddText('CITAS.' + fld_CITASTIPOTAREA + ' = ''' + TextoTipoCita[Ord(tcMedicion)] + '''', False); + CloseBraket; + end; + Result := dtCitas; +end; + +function TdmCalendarios.GetVendedores: IBizVendedores; +var + dtVendedores: TDACDSDataTable; + ACursor: TCursor; +begin + ACursor := Screen.Cursor; + Screen.Cursor := crHourGlass; + try + dtVendedores := TDACDSDataTable.Create(NIL); + CloneDataTable(tbl_Vendedores, dtVendedores); + dtVendedores.BusinessRulesID := BIZ_VENDEDORES; + Result := (dtVendedores as IBizVendedores); + finally + Screen.Cursor := ACursor; + end; +end; + +initialization + dmCalendarios := TdmCalendarios.Create(nil); + +finalization + FreeAndNil(dmCalendarios); + +end. + diff --git a/Modulos/Calendarios/Cliente/uEditorCalendarioBase.ddp b/Modulos/Calendarios/Cliente/uEditorCalendarioBase.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Calendarios/Cliente/uEditorCalendarioBase.ddp differ diff --git a/Modulos/Calendarios/Cliente/uEditorCalendarioBase.dfm b/Modulos/Calendarios/Cliente/uEditorCalendarioBase.dfm new file mode 100644 index 0000000..9a5257b --- /dev/null +++ b/Modulos/Calendarios/Cliente/uEditorCalendarioBase.dfm @@ -0,0 +1,142 @@ +inherited fEditorCalendarioBase: TfEditorCalendarioBase + Align = alClient + Caption = 'fEditorCalendarioBase' + PixelsPerInch = 96 + TextHeight = 13 + inherited TBXDock: TTBXDock + inherited tbxMain: TTBXToolbar + object TBXSeparatorItem14: TTBXSeparatorItem + end + object TBXItem33: TTBXItem + Action = actDia + end + object TBXItem34: TTBXItem + Action = actSemana + end + object TBXItem7: TTBXItem + Action = actMes + end + end + end + inherited EditorActionList: TActionList + Left = 0 + Top = 80 + inherited actNuevo: TAction + Category = 'Calendario' + OnExecute = actNuevoExecute + end + inherited actModificar: TAction + Category = 'Calendario' + OnExecute = actModificarExecute + OnUpdate = actModificarUpdate + end + inherited actGuardarCerrar: TAction + Visible = False + end + inherited actGuardar: TAction + Visible = False + end + inherited actEliminar: TAction + Category = 'Calendario' + OnExecute = actEliminarExecute + OnUpdate = actEliminarUpdate + end + inherited actImprimir: TAction + OnExecute = actImprimirExecute + end + inherited actCerrar: TAction + Visible = False + end + inherited actRefrescar: TAction + Category = 'Calendario' + OnExecute = actRefrescarExecute + end + inherited actAnterior: TAction + Visible = False + end + inherited actSiguiente: TAction + Visible = False + end + object actDia: TAction + Category = 'Calendario' + Caption = 'D'#237'a' + OnExecute = actDiaExecute + end + object actSemana: TAction + Category = 'Calendario' + Caption = 'Semana' + OnExecute = actSemanaExecute + end + object actMes: TAction + Category = 'Calendario' + Caption = 'Mes' + OnExecute = actMesExecute + end + object actSemana5: TAction + Category = 'Calendario' + Caption = 'Semana laboral' + OnExecute = actSemana5Execute + end + end + object cxSchedulerDBStorage: TcxSchedulerDBStorage + Resources.Items = <> + Resources.ResourceID = 'CODIGO' + Resources.ResourceName = 'NOMBRE' + CustomFields = <> + DataSource = DADataSource + FieldNames.Caption = 'CAPTION' + FieldNames.EventType = 'TIPO' + FieldNames.Finish = 'FINISH' + FieldNames.ID = 'ID' + FieldNames.LabelColor = 'LABELCOLOR' + FieldNames.Location = 'LOCATION' + FieldNames.Message = 'MENSAJE' + FieldNames.Options = 'OPTIONS' + FieldNames.ParentID = 'PARENTID' + FieldNames.ResourceID = 'RESOURCEID' + FieldNames.Start = 'START' + FieldNames.State = 'STATE' + Left = 32 + Top = 80 + end + object DADataSource: TDADataSource + Left = 64 + Top = 80 + end + object dxComponentPrinter1: TdxComponentPrinter + CurrentLink = dxComponentPrinter1Link2 + PreviewOptions.EnableOptions = [peoPageSetup, peoPrint] + PreviewOptions.Caption = 'Vista previa' + PreviewOptions.VisibleOptions = [pvoPageSetup, pvoPrint, pvoPageMargins] + Version = 0 + Left = 32 + Top = 112 + object dxComponentPrinter1Link2: TcxSchedulerReportLink + PrinterPage.DMPaper = 9 + PrinterPage.Footer = 6350 + PrinterPage.Header = 6350 + PrinterPage.Margins.Bottom = 12700 + PrinterPage.Margins.Left = 12700 + PrinterPage.Margins.Right = 12700 + PrinterPage.Margins.Top = 12700 + PrinterPage.PageSize.X = 210000 + PrinterPage.PageSize.Y = 297000 + PrinterPage._dxMeasurementUnits_ = 0 + PrinterPage._dxLastMU_ = 2 + ReportDocument.CreationDate = 38869.819535011570000000 + OptionsFormatting.SuppressBackgroundBitmaps = True + OptionsFormatting.UseNativeStyles = True + PrintRange.TimePrintFrom = 0.416666666666666700 + PrintRange.TimePrintTo = 0.854166666666666600 + PrintStyles.Weekly.Active = True + SupportedCustomDraw = True + BuiltInReportLink = True + end + end + object dxPrintDialog1: TdxPrintDialog + ButtonsEnabled = [pdbPrinterProperties, pdbNetwork, pdbPreview, pdbPageSetup] + ButtonsVisible = [pdbPrinterProperties, pdbNetwork, pdbPreview] + OptionsEnabled = [pdoAllPages, pdoPageRange] + Top = 112 + end +end diff --git a/Modulos/Calendarios/Cliente/uEditorCalendarioBase.pas b/Modulos/Calendarios/Cliente/uEditorCalendarioBase.pas new file mode 100644 index 0000000..1c027bf --- /dev/null +++ b/Modulos/Calendarios/Cliente/uEditorCalendarioBase.pas @@ -0,0 +1,307 @@ +unit uEditorCalendarioBase; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uEditorBase, dxLayoutLookAndFeels, JvAppStorage, + JvAppRegistryStorage, JvComponentBase, JvFormPlacement, ImgList, + PngImageList, StdActns, ActnList, ComCtrls, TBX, TB2Item, TB2Dock, + TB2Toolbar, pngimage, ExtCtrls, JvExControls, JvComponent, + JvNavigationPane, uBizCitas, uViewCalendarioBase, cxSchedulerStorage, + cxSchedulerDBStorage, DB, uDADataTable, + + + cxScheduler, cxSchedulerCustomControls, cxSchedulerCustomResourceView, + cxSchedulerDayView, cxSchedulerDateNavigator, cxSchedulerTimeGridView, + cxSchedulerUtils, cxSchedulerWeekView, cxSchedulerYearView, dxPSGlbl, + dxPSUtl, dxPSEngn, dxPrnPg, dxBkgnd, dxWrap, dxPrnDev, dxPSCompsProvider, + dxPSFillPatterns, dxPSEdgePatterns, dxPrnDlg, dxPSCore, dxPScxCommon, + dxPScxScheduler2Lnk; + +type + IEditorCalendarioBase = interface(IEditorBase) + ['{FC69C1D8-B566-4CBF-9F87-16728114D161}'] + function GetCitas: IBizCitas; + procedure SetCitas(const Value: IBizCitas); + property Citas: IBizCitas read GetCitas write SetCitas; + end; + + TfEditorCalendarioBase = class(TfEditorBase, IEditorCalendarioBase) + TBXItem7: TTBXItem; + TBXSeparatorItem14: TTBXSeparatorItem; + TBXItem33: TTBXItem; + TBXItem34: TTBXItem; + actDia: TAction; + actSemana: TAction; + actMes: TAction; + cxSchedulerDBStorage: TcxSchedulerDBStorage; + DADataSource: TDADataSource; + actSemana5: TAction; + dxComponentPrinter1: TdxComponentPrinter; + dxComponentPrinter1Link2: TcxSchedulerReportLink; + dxPrintDialog1: TdxPrintDialog; + + procedure FormShow(Sender: TObject); + procedure actDiaExecute(Sender: TObject); + procedure actSemanaExecute(Sender: TObject); + procedure actMesExecute(Sender: TObject); + procedure actRefrescarExecute(Sender: TObject); + procedure actNuevoExecute(Sender: TObject); + procedure actModificarExecute(Sender: TObject); + procedure actEliminarExecute(Sender: TObject); + procedure actModificarUpdate(Sender: TObject); + procedure actEliminarUpdate(Sender: TObject); + procedure actSemana5Execute(Sender: TObject); + procedure actImprimirExecute(Sender: TObject); + + procedure cxSchedulerBeforeEditing(Sender: TcxCustomScheduler; + AEvent: TcxSchedulerControlEvent; AInplace: Boolean; + var Allow: Boolean); + + private + FCitas: IBizCitas; + FViewCitas: IViewCalendarioBase; + + protected + function GetViewCitas: IViewCalendarioBase; + procedure SetViewCitas(const Value: IViewCalendarioBase); + function GetCitas: IBizCitas; + procedure SetCitas(const Value: IBizCitas); + + procedure InicializarCampos; virtual; + procedure InicializarEvento (var aEvent : TcxSchedulerControlEvent); virtual; + + public + property Citas: IBizCitas read GetCitas write SetCitas; + property ViewCitas: IViewCalendarioBase read GetViewCitas write SetViewCitas; + destructor Destroy; override; + end; + +var + fEditorCalendarioBase: TfEditorCalendarioBase; + +implementation +{$R *.dfm} + +{ TfEditorCalendarioBase } + +uses schCitasClient_Intf; + +function TfEditorCalendarioBase.GetCitas: IBizCitas; +begin + Result := FCitas; +end; + +function TfEditorCalendarioBase.GetViewCitas: IViewCalendarioBase; +begin + Result := FViewCitas; +end; + +procedure TfEditorCalendarioBase.SetCitas(const Value: IBizCitas); +begin + FCitas := Value; + + if Assigned(FCitas) then + begin + DADataSource.DataTable := FCitas.DataTable; + + if not DADataSource.DataTable.Active then + DADataSource.DataTable.Active := True; + end + else + DADataSource.DataTable := NIL; +end; + +procedure TfEditorCalendarioBase.SetViewCitas(const Value: IViewCalendarioBase); +begin + FViewCitas := Value; + + if Assigned(FViewCitas) then + FViewCitas.Calendario.OnBeforeEditing := cxSchedulerBeforeEditing; +end; + +procedure TfEditorCalendarioBase.FormShow(Sender: TObject); +begin + inherited; + + InicializarCampos; + + if not Assigned(FViewCitas) then + raise Exception.Create('No hay ninguna vista asignada'); + + if not Assigned(Citas) then + raise Exception.Create('No hay ninguna cita asignada'); + + +end; + +destructor TfEditorCalendarioBase.Destroy; +begin + FViewCitas := NIL; + FCitas := NIL; + inherited; +end; + +procedure TfEditorCalendarioBase.actDiaExecute(Sender: TObject); +begin + with FViewCitas.Calendario do + begin + if not ViewWeek.Active then + FViewCitas.pAnchorDate := SelectedDays[0]; + SelectDays([FViewCitas.pAnchorDate], True); + + ViewDay.Active := True; + end; +end; + +procedure TfEditorCalendarioBase.actSemanaExecute(Sender: TObject); +begin + with FViewCitas.Calendario do + begin + if not ViewWeek.Active then + FViewCitas.pAnchorDate := SelectedDays[0]; + SelectDays([FViewCitas.pAnchorDate], False); + + ViewWeek.Active := True; + end; +end; + +procedure TfEditorCalendarioBase.actMesExecute(Sender: TObject); +begin + with FViewCitas.Calendario do + begin + if not ViewWeek.Active then + FViewCitas.pAnchorDate := SelectedDays[0]; + SelectDays([FViewCitas.pAnchorDate], False); + + GoToDate(SelectedDays[0], vmMonth); + end; +end; + +procedure TfEditorCalendarioBase.actRefrescarExecute(Sender: TObject); +begin + cxSchedulerDBStorage.FullRefresh; +end; + +procedure TfEditorCalendarioBase.actNuevoExecute(Sender: TObject); +begin + FViewCitas.Calendario.CreateEventUsingDialog; +end; + +procedure TfEditorCalendarioBase.actModificarExecute(Sender: TObject); +begin + with FViewCitas.Calendario do + begin + if (SelectedEventCount = 1) then + EditEventUsingDialog(SelectedEvents[0]); + end; +end; + +procedure TfEditorCalendarioBase.actEliminarExecute(Sender: TObject); +begin + with FViewCitas.Calendario do + begin + if (SelectedEventCount > 0) then + DeleteSelectedEvents(); + end; +end; + +procedure TfEditorCalendarioBase.actModificarUpdate(Sender: TObject); +begin + (Sender as TAction).Enabled := (FViewCitas.Calendario.SelectedEventCount = 1); +end; + +procedure TfEditorCalendarioBase.actEliminarUpdate(Sender: TObject); +begin + (Sender as TAction).Enabled := (FViewCitas.Calendario.SelectedEventCount > 0); +end; + +procedure TfEditorCalendarioBase.actSemana5Execute(Sender: TObject); +begin + with FViewCitas.Calendario do + begin + FViewCitas.pAnchorDate := SelectedDays[0]; + SelectDays([FViewCitas.pAnchorDate], True); + + SelectWorkDays(Date); + end; +end; + +procedure TfEditorCalendarioBase.actImprimirExecute(Sender: TObject); +begin + inherited; + with FViewCitas.Calendario do + begin + with dxComponentPrinter1Link2.PrintStyles do + begin + if ViewDay.Active then + begin + Daily.Active := True; + FViewCitas.pAnchorDate := SelectedDays.Items[0]; + end + else + if ViewWeek.Active then + Weekly.Active := True + else begin + Monthly.Active := True; + FViewCitas.pAnchorDate := SelectedDays.Items[SelectedDays.Count DIV 2]; + end; + end; + dxComponentPrinter1Link2.PrintRange.PrintFrom := FViewCitas.pAnchorDate; + dxComponentPrinter1Link2.PrintRange.PrintTo := FViewCitas.pAnchorDate; + dxComponentPrinter1.Print(True, nil, nil); + end; +end; + +procedure TfEditorCalendarioBase.InicializarEvento(var aEvent: TcxSchedulerControlEvent); +begin + // +end; + +procedure TfEditorCalendarioBase.cxSchedulerBeforeEditing( + Sender: TcxCustomScheduler; AEvent: TcxSchedulerControlEvent; + AInplace: Boolean; var Allow: Boolean); +begin + if VarIsNull(AEvent.ID) then + InicializarEvento(AEvent); + Allow := True; +end; + +procedure TfEditorCalendarioBase.InicializarCampos; +var + aField : TcxSchedulerDBStorageField; +begin + inherited; + + with cxSchedulerDBStorage.CustomFields do + begin + try + BeginUpdate; + Clear; + + aField := Add; + aField.FieldName := fld_CITASTIPOTAREA; + + aField := Add; + aField.FieldName := fld_CITASCODIGOCONTRATO; + + aField := Add; + aField.FieldName := fld_CITASNOMBRECLIENTE; + + aField := Add; + aField.FieldName := fld_CITASPARTIDA; + + aField := Add; + aField.FieldName := fld_CITASCOMPLETADA; + + aField := Add; + aField.FieldName := fld_CITASNOMBREPROVEEDOR; + + finally + EndUpdate; + end; + end; +end; + +end. diff --git a/Modulos/Calendarios/Cliente/uEditorCalendarioConFiltro.ddp b/Modulos/Calendarios/Cliente/uEditorCalendarioConFiltro.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Calendarios/Cliente/uEditorCalendarioConFiltro.ddp differ diff --git a/Modulos/Calendarios/Cliente/uEditorCalendarioConFiltro.dfm b/Modulos/Calendarios/Cliente/uEditorCalendarioConFiltro.dfm new file mode 100644 index 0000000..625615f --- /dev/null +++ b/Modulos/Calendarios/Cliente/uEditorCalendarioConFiltro.dfm @@ -0,0 +1,20 @@ +inherited fEditorCalendarioConFiltro: TfEditorCalendarioConFiltro + Caption = 'fEditorCalendarioConFiltro' + PixelsPerInch = 96 + TextHeight = 13 + inherited EditorActionList: TActionList + object actVerTodos: TAction + Category = 'Calendario' + Caption = 'Ver todos' + OnExecute = actVerTodosExecute + end + end + inherited JvFormStorage: TJvFormStorage + OnSavePlacement = JvFormStorageSavePlacement + end + inherited dxComponentPrinter1: TdxComponentPrinter + inherited dxComponentPrinter1Link2: TcxSchedulerReportLink + BuiltInReportLink = True + end + end +end diff --git a/Modulos/Calendarios/Cliente/uEditorCalendarioConFiltro.pas b/Modulos/Calendarios/Cliente/uEditorCalendarioConFiltro.pas new file mode 100644 index 0000000..654f289 --- /dev/null +++ b/Modulos/Calendarios/Cliente/uEditorCalendarioConFiltro.pas @@ -0,0 +1,132 @@ +unit uEditorCalendarioConFiltro; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uEditorCalendarioBase, dxPSGlbl, dxPSUtl, dxPSEngn, dxPrnPg, + dxBkgnd, dxWrap, dxPrnDev, dxPSCompsProvider, dxPSFillPatterns, + dxPSEdgePatterns, dxPrnDlg, dxPSCore, dxPScxCommon, dxPScxScheduler2Lnk, + DB, uDADataTable, cxSchedulerStorage, cxSchedulerDBStorage, + dxLayoutLookAndFeels, JvAppStorage, JvAppRegistryStorage, + JvComponentBase, JvFormPlacement, ImgList, PngImageList, StdActns, + ActnList, ComCtrls, TBX, TB2Item, TB2Dock, TB2Toolbar, pngimage, + ExtCtrls, JvExControls, JvComponent, JvNavigationPane; + +type + IEditorCalendarioConFiltro = interface(IEditorCalendarioBase) + ['{81ED9B0E-6F65-4B7D-884F-192AE45A7708}'] + end; + + TfEditorCalendarioConFiltro = class(TfEditorCalendarioBase, IEditorCalendarioConFiltro) + actVerTodos: TAction; + procedure actVerTodosExecute(Sender: TObject); + procedure FormShow(Sender: TObject); + procedure JvFormStorageSavePlacement(Sender: TObject); + protected + NombreLista: String; + procedure CargarLista; virtual; + public + destructor destroy; override; + end; + +var + fEditorCalendarioConFiltro: TfEditorCalendarioConFiltro; + +implementation +{$R *.dfm} + +uses uViewCalendarioConFiltro; + +procedure TfEditorCalendarioConFiltro.actVerTodosExecute(Sender: TObject); +var + I: Integer; +begin + with (ViewCitas as IViewCalendarioConFiltro).Resources do + begin + Items.BeginUpdate; + try + for I := 0 to Items.Count - 1 do + begin + Items[I].Checked := True; + TcxSchedulerStorageResourceItem(Items[I].ItemObject).Visible := True; + end; + finally + Items.EndUpdate; + end; + end; +end; + +procedure TfEditorCalendarioConFiltro.CargarLista; +var + I: Integer; + cadena: String; +begin + cadena := JvFormStorage.ReadString(NombreLista, ''); + + with (ViewCitas as IViewCalendarioConFiltro).Resources do + begin + Items.BeginUpdate; + try + Items.Clear; + + for I := 0 to ViewCitas.Calendario.Storage.ResourceCount - 1 do + begin + with Items.Add do + begin + ImageIndex := 0; + Text := ViewCitas.Calendario.Storage.ResourceNames[I]; + Checked := ViewCitas.Calendario.Storage.Resources.ResourceItems[I].Visible; + ItemObject := ViewCitas.Calendario.Storage.Resources.ResourceItems[I]; + end; + end; + finally + Items.EndUpdate; + end; + + for I := 0 to Items.Count - 1 do + if (Length(cadena) > 0) and (Pos('#' + IntToStr(i) + '#', cadena) = 0) then + begin + Items[i].Checked := False; + (Items[i].ItemObject as TcxSchedulerStorageResourceItem).Visible := False; + end; + end; +end; + +destructor TfEditorCalendarioConFiltro.destroy; +begin + inherited; +end; + +procedure TfEditorCalendarioConFiltro.FormShow(Sender: TObject); +begin + inherited FormShow(Sender); + + try + ViewCitas.Calendario.BeginUpdate; + CargarLista; + finally; + ViewCitas.Calendario.EndUpdate; + end; + + actSemana.Execute; +end; + +procedure TfEditorCalendarioConFiltro.JvFormStorageSavePlacement( + Sender: TObject); +var + i : integer; + cadena : string; +begin + inherited; + with (ViewCitas as IViewCalendarioConFiltro).Resources do + begin + cadena := '#'; + for i := 0 to Items.Count - 1 do + if Items[i].Checked then + cadena := cadena + IntToStr(i) + '#'; + JvFormStorage.WriteString(NombreLista, cadena); + end; +end; + +end. diff --git a/Modulos/Calendarios/Cliente/uEditorCalendarioMediciones.ddp b/Modulos/Calendarios/Cliente/uEditorCalendarioMediciones.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Calendarios/Cliente/uEditorCalendarioMediciones.ddp differ diff --git a/Modulos/Calendarios/Cliente/uEditorCalendarioMediciones.dfm b/Modulos/Calendarios/Cliente/uEditorCalendarioMediciones.dfm new file mode 100644 index 0000000..f9f32e6 --- /dev/null +++ b/Modulos/Calendarios/Cliente/uEditorCalendarioMediciones.dfm @@ -0,0 +1,134 @@ +inherited fEditorCalendarioMediciones: TfEditorCalendarioMediciones + Left = 219 + Top = 175 + Width = 800 + Height = 646 + Caption = 'fEditorCalendarioMediciones' + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + Width = 792 + Caption = 'AGENDA' + inherited Image1: TImage + Left = 765 + Picture.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001C00 + 00001C0806000000720DDF940000000970485973000017120000171201679FD2 + 520000000467414D410000B18E7CFB5193000004D64944415478DABD957D5054 + 5514C07F6FD905044492B5D6044CD210FCFE0C9B093533C4444B821C14AB51FE + 404873C26AC68FCCB226C5D132354B9D880835191D1D5304B2A6D148938F2C34 + 244405D915C4E563835D78BBBDB7C88B6D91D8FEF0CCDC39F79E77CFFDBD73EE + 3BE709369B8DFB29820C14044131C4AFC8785152FBA5B1E0EB8F120EB87A604F + FE765637405BE6B6458C9FB58CA29C5D828BBC1EFD1560F09B854A5EA7984B49 + 8E9B4FCA86548C6396BA9CB29EFC2B3E1C2F28C075D1A3EDC6DC43FB899F399D + B5DB37B27CCDC74E07B65BC16C81568BCD3E4C2DB2EE589BDB245D7648F1F79F + 9CA63C134B5751787267F7C088D061EC3E9CEE046C6D93615D00164798FC22B6 + CA438ABFF7D8B4BBFB405DDE0350964B97CF3A007B0393E71E37B3157FB7B0CD + 76BB2CF704EA6F5CE7607A1A712FA5A20B0C720926DB04D30DAA8BB6E117BA82 + BAB600E585EF09FCB7B80273DCE7788E13D0E5CFD145F12BD9F30F303BB7C416 + 33738C4B07AC395049F6B1DFB971BDCEC11E18A425267A04CB676A11452BA2D5 + CA915305ECCB3CFADFC04F324E3AD9F4EEC315D0CA9469786BFB4B69173B8645 + A4C5D24EE6CE5C059CF8A42FC7F2CFF51E989230CB21AA6D3B7E6069EC281E19 + 1B82A1BA960754CD840DF1E3F9C8CD1CCE5945E95523E78D7D308B36BECB3AC3 + 6BC953D1592EFF3F60E8A2E344853F4CD098C7B85A7289D9E10F32794200CD2D + AD145FD4E3A90BC068B252F8D36F9CBB2922FAF861B8504EE2742B5F7D73C235 + 606774EFBD1F4B45512949B121E8745E4859E48A41A4FA8E0D3715988C356C5D + B99025EBF6917EA69ECB3F96313DF00ED5B7CB9C81DDDD59A7ECC811ED772265 + 8A886015E19307D9E767AFB4633283462D9543731D69AFC63167711233E6BDC0 + D1C3BF9073BB2FD7F38B19EA7E86E2BCCF9C815D53D875ED1391CE9AF5F351D5 + 5D2331360C51B0D128F5D19FCBDB259880A5C5C8A665F3895CB084C8D878346E + 022A53138BB79660F8B50A9D299FF20B5FBA064C5D3D8F89FD9B099FA0A35DB2 + 15558AF6E8AACA0AF9E2835446854F65CEC25750BBC1C08041685ACD246F29A0 + B4E816FD0C7954FF91E11A30E58D68B62C7E878CAC25F8870CA7418A502DA572 + 7DC253AC7D7727EB5727A192FEADF2EF352DF320519336F1E8AC27A8AA6AC547 + 9F87BE2CA3F777F8D6E70696AE8CE2E9000B6DBE03A482966182943AA9A599EE + B0213186ED47F2159B466D23A88F86675ECFE55291817EFA135497EDEF7D8472 + 494C9D3B9E606E133C7A186A55C787A276EBD032447D57CB6B1F09DC58594BDC + 9E0A6ACE5748777842BA4317809D6511B9600A8F6B2D8C9838548209DDC23C24 + 1DE4A92179D3F71498FD69CA3F89BF7B1925797B7B0FEC8C32242294D69A1A52 + 660FC677D0000495CD218D7D352A06BAABF934EB02BB2E8AB4379A08AD3D4D4D + 53BD631D3E376314BB324FF5D8B0E53E2A473929269C56BD8184B1DECC891A49 + 63730BE346BE8DB1762BB70C0DA46515937BCB13542ABC0A8E93103F8ECCEC5C + 4760F4B491F6CE6EEFF0F62E6FA35D997768AB54E97BCF3629CD3B70FA68A92E + F50CF65571F35A1DBA210FF167A3805AABA5ADDE8857C969E626BDDC7D2F9D1D + 11C6DE83F9F4461A1B4C7C9B574971BDB6DBE7FD340D0CF7AA21F2D9097879FB + D86D4EC08D5B76F70AD655CC52D36EAC1369B3796015540896BFF0F430D357EB + 89BBA7B7D37E05783FE56F92C591F6D1A442580000000049454E44AE426082} + end + end + inherited TBXDock: TTBXDock + Width = 792 + inherited tbxMenu: TTBXToolbar + Visible = False + end + end + inherited StatusBar: TStatusBar + Top = 593 + Width = 792 + end + inline frViewCalendarioMediciones: TfrViewCalendarioConFiltro [3] + Left = 0 + Top = 76 + Width = 792 + Height = 517 + Align = alClient + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 3 + ReadOnly = False + inherited cxScheduler: TcxScheduler + Width = 792 + Height = 517 + OptionsView.WorkStart = 0.416666666666666700 + OptionsView.WorkFinish = 0.854166666666666800 + Storage = cxSchedulerDBStorage + Splitters = { + 89020000FA00000018030000FF00000084020000000000008902000005020000} + StoredClientBounds = {00000000000000001803000005020000} + inherited pnlVendedores: TPanel + Height = 262 + inherited cxResources: TcxCheckListBox + Height = 225 + end + inherited Panel2: TPanel + Caption = 'Vendedores' + end + inherited tbxMain: TTBXToolbar + Top = 243 + Height = 19 + inherited TBXItem5: TTBXItem + Action = actVerTodos + end + end + end + end + end + inherited EditorActionList: TActionList [4] + end + inherited SmallImages: TPngImageList [5] + end + inherited LargeImages: TPngImageList [6] + end + inherited JvFormStorage: TJvFormStorage [7] + end + inherited JvAppRegistryStorage: TJvAppRegistryStorage [8] + end + inherited cxSchedulerDBStorage: TcxSchedulerDBStorage [9] + Resources.DataSource = DADataSource2 + end + inherited DADataSource: TDADataSource [10] + end + inherited dxComponentPrinter1: TdxComponentPrinter [11] + inherited dxComponentPrinter1Link2: TcxSchedulerReportLink + BuiltInReportLink = True + end + end + object DADataSource2: TDADataSource + Left = 96 + Top = 80 + end +end diff --git a/Modulos/Calendarios/Cliente/uEditorCalendarioMediciones.pas b/Modulos/Calendarios/Cliente/uEditorCalendarioMediciones.pas new file mode 100644 index 0000000..d6caf2a --- /dev/null +++ b/Modulos/Calendarios/Cliente/uEditorCalendarioMediciones.pas @@ -0,0 +1,104 @@ +unit uEditorCalendarioMediciones; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, dxLayoutLookAndFeels, JvAppStorage, JvAppRegistryStorage, + JvComponentBase, JvFormPlacement, ImgList, PngImageList, StdActns, ActnList, + ComCtrls, TBX, TB2Item, TB2Dock, TB2Toolbar, pngimage, ExtCtrls, JvExControls, + JvComponent, JvNavigationPane, uCustomView, uViewBase, uViewCalendarioBase, + cxSchedulerStorage, cxSchedulerDBStorage, DB, + uDADataTable, dxPSGlbl, dxPSUtl, dxPSEngn, dxPrnPg, dxBkgnd, dxWrap, + dxPrnDev, dxPSCompsProvider, dxPSFillPatterns, dxPSEdgePatterns, + dxPrnDlg, dxPSCore, dxPScxCommon, dxPScxScheduler2Lnk, Grids, DBGrids, + + uBizCitas, uEditorCalendarioConFiltro, uViewCalendarioConFiltro, + uEditorCalendarioBase, uViewCalendarioMediciones; + +type + IEditorCalendarioMediciones = interface(IEditorCalendarioConFiltro) + ['{CA83B596-1408-455F-AD78-0BC121A452C3}'] + function GetVendedores: IBizVendedores; + procedure SetVendedores(const Value: IBizVendedores); + property Vendedores : IBizVendedores read GetVendedores write SetVendedores; + end; + + TfEditorCalendarioMediciones = class(TfEditorCalendarioConFiltro, IEditorCalendarioMediciones) + DADataSource2: TDADataSource; + frViewCalendarioMediciones: TfrViewCalendarioConFiltro; + + private + FVendedores: IBizVendedores; + procedure CargarLista; override; + function GetVendedores: IBizVendedores; + procedure SetVendedores(const Value: IBizVendedores); + + protected + procedure InicializarEvento (var aEvent : TcxSchedulerControlEvent); override; + + public + property Vendedores : IBizVendedores read GetVendedores write SetVendedores; + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + end; + +var + fEditorCalendarioMediciones: TfEditorCalendarioMediciones; + +implementation +{$R *.dfm} + +{ TfEditorCalendarioMediciones } + +uses schCitasClient_Intf; + + +constructor TfEditorCalendarioMediciones.Create(AOwner: TComponent); +begin + inherited; + ViewCitas := frViewCalendarioMediciones; +end; + +procedure TfEditorCalendarioMediciones.CargarLista; +begin + NombreLista := 'Mediciones'; + inherited; +end; + +function TfEditorCalendarioMediciones.GetVendedores: IBizVendedores; +begin + Result := FVendedores; +end; + +procedure TfEditorCalendarioMediciones.SetVendedores(const Value: IBizVendedores); +begin + FVendedores := Value; + + if Assigned(FVendedores) then + begin + DADataSource2.DataTable := FVendedores.DataTable; + + if not FVendedores.DataTable.Active then + FVendedores.DataTable.Active := True; + end + else + DADataSource2.DataTable := Nil; +end; + +procedure TfEditorCalendarioMediciones.InicializarEvento(var aEvent: TcxSchedulerControlEvent); +begin + inherited; + with AEvent do + begin + SetCustomFieldValueByName(fld_CITASTIPOTAREA, TextoTipoCita[Ord(tcMedicion)]); + end; +end; + +destructor TfEditorCalendarioMediciones.Destroy; +begin + FVendedores := Nil; + inherited; +end; + +end. diff --git a/Modulos/Calendarios/Cliente/uEditorCalendarioMontajes.ddp b/Modulos/Calendarios/Cliente/uEditorCalendarioMontajes.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Calendarios/Cliente/uEditorCalendarioMontajes.ddp differ diff --git a/Modulos/Calendarios/Cliente/uEditorCalendarioMontajes.dfm b/Modulos/Calendarios/Cliente/uEditorCalendarioMontajes.dfm new file mode 100644 index 0000000..daf0712 --- /dev/null +++ b/Modulos/Calendarios/Cliente/uEditorCalendarioMontajes.dfm @@ -0,0 +1,76 @@ +inherited fEditorCalendarioMontajes: TfEditorCalendarioMontajes + Caption = 'fEditorCalendarioMontajes' + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + Caption = 'CALENDARIO MONTAJES' + end + inline frViewCalendarioMontajes: TfrViewCalendarioConFiltro [3] + Left = 0 + Top = 76 + Width = 666 + Height = 387 + Align = alClient + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 3 + ReadOnly = False + inherited cxScheduler: TcxScheduler + Width = 666 + Height = 387 + OptionsView.WorkStart = 0.416666666666666700 + OptionsView.WorkFinish = 0.854166666666666800 + Storage = cxSchedulerDBStorage + Selection = 28 + Splitters = { + 0B020000FA0000009A020000FF00000006020000000000000B02000083010000} + StoredClientBounds = {00000000000000009A02000083010000} + inherited pnlVendedores: TPanel + Height = 132 + inherited cxResources: TcxCheckListBox + Height = 95 + end + inherited Panel2: TPanel + Caption = 'Instaladores' + end + inherited tbxMain: TTBXToolbar + Top = 113 + Height = 19 + inherited TBXItem5: TTBXItem + Action = actVerTodos + end + end + end + end + end + inherited EditorActionList: TActionList [4] + end + inherited SmallImages: TPngImageList [5] + end + inherited LargeImages: TPngImageList [6] + end + inherited JvFormStorage: TJvFormStorage [7] + end + inherited JvAppRegistryStorage: TJvAppRegistryStorage [8] + end + inherited dxLayoutLookAndFeelList1: TdxLayoutLookAndFeelList [9] + end + inherited cxSchedulerDBStorage: TcxSchedulerDBStorage [10] + Resources.DataSource = DADataSource2 + end + inherited DADataSource: TDADataSource [11] + end + inherited dxComponentPrinter1: TdxComponentPrinter [12] + inherited dxComponentPrinter1Link2: TcxSchedulerReportLink + BuiltInReportLink = True + end + end + object DADataSource2: TDADataSource + Left = 96 + Top = 80 + end +end diff --git a/Modulos/Calendarios/Cliente/uEditorCalendarioMontajes.pas b/Modulos/Calendarios/Cliente/uEditorCalendarioMontajes.pas new file mode 100644 index 0000000..8d20d89 --- /dev/null +++ b/Modulos/Calendarios/Cliente/uEditorCalendarioMontajes.pas @@ -0,0 +1,149 @@ +unit uEditorCalendarioMontajes; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uEditorCalendarioBase, dxPSGlbl, dxPSUtl, dxPSEngn, dxPrnPg, + dxBkgnd, dxWrap, dxPrnDev, dxPSCompsProvider, dxPSFillPatterns, + dxPSEdgePatterns, dxPrnDlg, dxPSCore, dxPScxCommon, dxPScxScheduler2Lnk, + DB, uDADataTable, cxSchedulerStorage, cxSchedulerDBStorage, + dxLayoutLookAndFeels, JvAppStorage, JvAppRegistryStorage, + JvComponentBase, JvFormPlacement, ImgList, PngImageList, StdActns, + ActnList, ComCtrls, TBX, TB2Item, TB2Dock, TB2Toolbar, pngimage, + ExtCtrls, JvExControls, JvComponent, JvNavigationPane, uCustomView, + uViewBase, uViewCalendarioBase, uViewCalendarioConFiltro, + uEditorCalendarioConFiltro, uBizCitas; + +type + IEditorCalendarioMontajes = interface(IEditorCalendarioConFiltro) + ['{158B8A5F-5CF6-43F2-BBD0-C65212089035}'] + function GetInstaladores: IBizInstaladores; + procedure SetInstaladores(const Value: IBizInstaladores); + property Instaladores : IBizInstaladores read GetInstaladores write SetInstaladores; + end; + + TfEditorCalendarioMontajes = class(TfEditorCalendarioConFiltro, IEditorCalendarioMontajes) + frViewCalendarioMontajes: TfrViewCalendarioConFiltro; + DADataSource2: TDADataSource; + + procedure EventDisplayText(Sender: TObject; AEvent: TcxSchedulerControlEvent; + var AText: String); + procedure EventHintText(Sender: TObject; AEvent: TcxSchedulerControlEvent; + var AText: String); + procedure FormShow(Sender: TObject); + private + FInstaladores: IBizInstaladores; + procedure CargarLista; override; + function GetInstaladores: IBizInstaladores; + procedure SetInstaladores(const Value: IBizInstaladores); + + protected + procedure InicializarEvento (var aEvent : TcxSchedulerControlEvent); override; + + public + property Instaladores : IBizInstaladores read GetInstaladores write SetInstaladores; + constructor Create(AOwner: TComponent); override; + destructor destroy; override; + end; + +var + fEditorCalendarioMontajes: TfEditorCalendarioMontajes; + +implementation + +{$R *.dfm} +{ TfEditorCalendarioMontajes } + +uses schCitasClient_Intf; + +procedure TfEditorCalendarioMontajes.CargarLista; +begin + NombreLista := 'Instaladores'; + inherited; +end; + +constructor TfEditorCalendarioMontajes.Create(AOwner: TComponent); +begin + inherited; + ViewCitas := frViewCalendarioMontajes; +end; + +function TfEditorCalendarioMontajes.GetInstaladores: IBizInstaladores; +begin + Result := FInstaladores; +end; + +procedure TfEditorCalendarioMontajes.InicializarEvento(var aEvent: TcxSchedulerControlEvent); +begin + inherited; + + with AEvent do + begin + SetCustomFieldValueByName(fld_CITASTIPOTAREA, TextoTipoCita[Ord(tcMontaje)]); + AllDayEvent := True; + end; +end; + +procedure TfEditorCalendarioMontajes.SetInstaladores(const Value: IBizInstaladores); +begin + FInstaladores := Value; + + if Assigned(FInstaladores) then + begin + DADataSource2.DataTable := FInstaladores.DataTable; + + if not FInstaladores.DataTable.Active then + FInstaladores.DataTable.Active := True; + end + else + DADataSource2.DataTable := Nil; +end; + +procedure TfEditorCalendarioMontajes.EventDisplayText(Sender: TObject; AEvent: TcxSchedulerControlEvent; var AText: String); +var + Nombre : String; + Tipo : String; + +begin + inherited; + + if not VarIsNull(AEvent.GetCustomFieldValueByName(fld_CITASNOMBRECLIENTE)) then + begin + Nombre := VarToStr(AEvent.GetCustomFieldValueByName(fld_CITASNOMBRECLIENTE)); + Tipo := VarToStr(AEvent.GetCustomFieldValueByName(fld_CITASTIPOTAREA)); + AText := AEvent.Caption + ' - ' + Tipo + ' (' + Nombre + ')'; + end; +end; + +procedure TfEditorCalendarioMontajes.EventHintText(Sender: TObject; AEvent: TcxSchedulerControlEvent; var AText: String); +var + Nombre : String; + Tipo : String; +begin + inherited; + if not VarIsNull(AEvent.GetCustomFieldValueByName(fld_CITASNOMBRECLIENTE)) then + begin + Nombre := VarToStr(AEvent.GetCustomFieldValueByName(fld_CITASNOMBRECLIENTE)); + Tipo := VarToStr(AEvent.GetCustomFieldValueByName(fld_CITASTIPOTAREA)); + AText := AEvent.Caption + #10#13 + Tipo + ' (' + Nombre + ')'; + end; +end; + +procedure TfEditorCalendarioMontajes.FormShow(Sender: TObject); +begin + inherited FormShow(Sender); + + ViewCitas.Calendario.OnGetEventDisplayText := EventDisplayText; + ViewCitas.Calendario.OnGetEventHintText := EventHintText; +end; + +destructor TfEditorCalendarioMontajes.destroy; +begin + ViewCitas.Calendario.OnGetEventDisplayText := Nil; + ViewCitas.Calendario.OnGetEventHintText := Nil; + + inherited; +end; + +end. diff --git a/Modulos/Calendarios/Cliente/uEditorCalendarioRecepciones.ddp b/Modulos/Calendarios/Cliente/uEditorCalendarioRecepciones.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Calendarios/Cliente/uEditorCalendarioRecepciones.ddp differ diff --git a/Modulos/Calendarios/Cliente/uEditorCalendarioRecepciones.dfm b/Modulos/Calendarios/Cliente/uEditorCalendarioRecepciones.dfm new file mode 100644 index 0000000..9d7a5c7 --- /dev/null +++ b/Modulos/Calendarios/Cliente/uEditorCalendarioRecepciones.dfm @@ -0,0 +1,67 @@ +inherited fEditorCalendarioRecepciones: TfEditorCalendarioRecepciones + Caption = 'fEditorCalendarioRecepciones' + PixelsPerInch = 96 + TextHeight = 13 + inline frViewCalendarioRecepciones: TfrViewCalendarioConFiltro [3] + Left = 0 + Top = 76 + Width = 630 + Height = 319 + Align = alClient + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 3 + ReadOnly = False + inherited cxScheduler: TcxScheduler + Height = 319 + OptionsView.WorkStart = 0.416666666666666700 + OptionsView.WorkFinish = 0.854166666666666800 + Storage = cxSchedulerDBStorage + Selection = 56 + Splitters = { + E7010000FA00000076020000FF000000E201000000000000E70100003F010000} + StoredClientBounds = {0000000000000000760200003F010000} + inherited pnlVendedores: TPanel + Height = 64 + inherited cxResources: TcxCheckListBox + Height = 40 + end + inherited tbxMain: TTBXToolbar + Top = 58 + Visible = False + end + end + end + end + inherited EditorActionList: TActionList [4] + end + inherited SmallImages: TPngImageList [5] + end + inherited LargeImages: TPngImageList [6] + end + inherited JvFormStorage: TJvFormStorage [7] + end + inherited JvAppRegistryStorage: TJvAppRegistryStorage [8] + end + inherited dxLayoutLookAndFeelList1: TdxLayoutLookAndFeelList [9] + end + inherited cxSchedulerDBStorage: TcxSchedulerDBStorage [10] + Resources.DataSource = DADataSource2 + Resources.ResourceName = 'DESCRIPCION' + end + inherited DADataSource: TDADataSource [11] + end + inherited dxComponentPrinter1: TdxComponentPrinter [12] + inherited dxComponentPrinter1Link2: TcxSchedulerReportLink + BuiltInReportLink = True + end + end + object DADataSource2: TDADataSource + Left = 95 + Top = 80 + end +end diff --git a/Modulos/Calendarios/Cliente/uEditorCalendarioRecepciones.pas b/Modulos/Calendarios/Cliente/uEditorCalendarioRecepciones.pas new file mode 100644 index 0000000..491d66c --- /dev/null +++ b/Modulos/Calendarios/Cliente/uEditorCalendarioRecepciones.pas @@ -0,0 +1,142 @@ +unit uEditorCalendarioRecepciones; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uEditorCalendarioConFiltro, dxPSGlbl, dxPSUtl, dxPSEngn, + dxPrnPg, dxBkgnd, dxWrap, dxPrnDev, dxPSCompsProvider, dxPSFillPatterns, + dxPSEdgePatterns, dxPrnDlg, dxPSCore, dxPScxCommon, dxPScxScheduler2Lnk, + DB, uDADataTable, cxSchedulerStorage, cxSchedulerDBStorage, + dxLayoutLookAndFeels, JvAppStorage, JvAppRegistryStorage, cxCheckBox, + JvComponentBase, JvFormPlacement, ImgList, PngImageList, StdActns, + ActnList, ComCtrls, TBX, TB2Item, TB2Dock, TB2Toolbar, pngimage, + ExtCtrls, JvExControls, JvComponent, JvNavigationPane, uCustomView, + uViewBase, uViewCalendarioBase, uViewCalendarioConFiltro, uBizCitas; + +type + IEditorCalendarioRecepciones = interface(IEditorCalendarioConFiltro) + ['{108A5E35-18F4-4100-B4EB-F059AC86BBB4}'] + function GetDocumentos: IBizDocumentos; + procedure SetDocumentos(const Value: IBizDocumentos); + property Documentos : IBizDocumentos read GetDocumentos write SetDocumentos; + end; + + TfEditorCalendarioRecepciones = class(TfEditorCalendarioConFiltro, IEditorCalendarioRecepciones) + frViewCalendarioRecepciones: TfrViewCalendarioConFiltro; + DADataSource2: TDADataSource; + + private + FDocumentos: IBizDocumentos; + procedure CargarLista; override; + function GetDocumentos: IBizDocumentos; + procedure SetDocumentos(const Value: IBizDocumentos); + + protected + procedure InicializarCampos; override; + procedure InicializarEvento (var aEvent : TcxSchedulerControlEvent); override; + + public + property Documentos : IBizDocumentos read GetDocumentos write SetDocumentos; + constructor Create(AOwner: TComponent); override; + end; + +var + fEditorCalendarioRecepciones: TfEditorCalendarioRecepciones; + +implementation + +{$R *.dfm} +{ TfEditorCalendarioRecepciones } +uses schCitasClient_Intf, uEditorCalendarioBase, uDataModuleCalendarios; + +procedure TfEditorCalendarioRecepciones.CargarLista; +begin + NombreLista := 'Documentos'; + inherited; +end; + +constructor TfEditorCalendarioRecepciones.Create(AOwner: TComponent); +begin + inherited; + ViewCitas := frViewCalendarioRecepciones; +// (ViewCitas as IViewCalendarioConFiltro).Resources.OnEditValueChanged := Nil; +end; + +function TfEditorCalendarioRecepciones.GetDocumentos: IBizDocumentos; +begin + Result := FDocumentos; +end; + +procedure TfEditorCalendarioRecepciones.InicializarCampos; +var + aField : TcxSchedulerDBStorageField; +begin + inherited; + + with cxSchedulerDBStorage.CustomFields do + begin + try + BeginUpdate; + + aField := Add; + aField.FieldName := CTE_TIPO_DOCUMENTO; + + finally + EndUpdate; + end; + end; + +end; + +procedure TfEditorCalendarioRecepciones.InicializarEvento(var aEvent: TcxSchedulerControlEvent); +var + ItemSeleccionado: Integer; + ItemTextSeleccionado: String; + ADocumento : IBizDocumentos; +begin + inherited; + + with AEvent do + begin + SetCustomFieldValueByName(fld_CITASTIPOTAREA, TextoTipoCita[Ord(tcRecepcion)]); + + //Preparamos la fuente de datos para que se cargen los tipos de pedido del documento seleccionado + //CAMBIARÁ + + + with (ViewCitas as IViewCalendarioConFiltro).Resources do + begin + Items.BeginUpdate; + for ItemSeleccionado := 0 to Items.Count - 1 do + if Items[ItemSeleccionado].Checked then + Break; + Items.EndUpdate; + end; + ItemTextSeleccionado := (ViewCitas as IViewCalendarioConFiltro).Resources.Items[ItemSeleccionado].Text; + + ADocumento := dmCalendarios.GetDocumento(ItemTextSeleccionado); + ADocumento.DataTable.Active := True; + SetCustomFieldValueByName(CTE_TIPO_DOCUMENTO, ADocumento.CODIGO); + ADocumento := Nil; + + AllDayEvent := True; + end; +end; + +procedure TfEditorCalendarioRecepciones.SetDocumentos(const Value: IBizDocumentos); +begin + FDocumentos := Value; + + if Assigned(FDocumentos) then + begin + DADataSource2.DataTable := FDocumentos.DataTable; + + if not FDocumentos.DataTable.Active then + FDocumentos.DataTable.Active := True; + end + else + DADataSource2.DataTable := Nil; +end; + +end. diff --git a/Modulos/Calendarios/Cliente/uPluginControllerCalendarios.ddp b/Modulos/Calendarios/Cliente/uPluginControllerCalendarios.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Calendarios/Cliente/uPluginControllerCalendarios.ddp differ diff --git a/Modulos/Calendarios/Cliente/uPluginControllerCalendarios.dfm b/Modulos/Calendarios/Cliente/uPluginControllerCalendarios.dfm new file mode 100644 index 0000000..99c3414 --- /dev/null +++ b/Modulos/Calendarios/Cliente/uPluginControllerCalendarios.dfm @@ -0,0 +1,176 @@ +object ModuleCalendarios: TModuleCalendarios + OldCreateOrder = True + DefaultAction = actMediciones + Description = 'Agenda' + ModuleMenu = MainMenu + ModuleName = 'Agenda' + SmallImages = SmallImages + LargeImages = LargeImages + Author = 'Rodax Software' + Version = '1.0.0' + Left = 743 + Top = 220 + Height = 252 + Width = 401 + object LargeImages: TPngImageList + Height = 24 + Width = 24 + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD252000003F74944415478DA + BD957B4C5B6514C07F2D2D9416A40B38B083B291381DD98693988118A6892608 + D14D668CD1CD6982A8F860EA8C7F684C4C9C5B14B30D8D9338CC1E42946C6C63 + 43C79AC5B94D200B5319E1FD280104DA1568A1406F1FB7DE768C50C7A3FEA127 + 3939E77B9CF3CB3DDF77CF27F37ABDFC9722FBDF003299CC6F9F2B3CB65F3285 + 921E283FB07D673049168B990FE02DDBBF8DFBB30AF8A3E6A02C48C08231B380 + A4F77FF73BE9420B996BEEA6E4E411AC2979419561A118E367A9B200C0474FAC + C770FC07FFB8B5AD96B73E2C0E4834E5F03229E94D7B733C2559A1EBF86C8C3A + A5C83F6F55B5CF0F18EEEFA3E24811CFECD8455C827EC9E4D302386DFD18AFEE + E3CE753BB9E15C81DB0376CD0280F964B1E47E5FF0CEFABEE43E9917F06FAFE0 + 521200386168F46E7D2C65C920B75BC470CD44EBB093419B07BBD383522E121B + 0E69492A925769A9ACA9E3BBB22AFF8D5A14F0D5B17301E391090FA30A3DFAD5 + AB707A44CC9609C6C6EC84466A10E572C99F241E1B892A13DF5754070778637B + 96DFFFF8EB6AE4BA0D444447611E1A637D8292C45825A72AEAC8DC9CC1E5261B + ED2607823C0487B193B1EB55341ABE090EE02BCBBBA5CDAC4C4EC2661A212FFB + 2ED46A39E3D2A1769A44AC935E5C8E712C374638D7EC66C42DC77CF114BD3F7F + 703BE09F65F149B719E2531FC262B65290134B84464EDFA848EBA048885C3A17 + E704BB5FC965CB8E7CD6A63FCE9ED37D8C5B46E92DDF9B382FE056596EF9FBAA + FA7168A2D0874F93FD600C6E29E4B74E372E3788AE293E7D6D2B9B72B6F0D44B + F9A89532BE3DDDCD9501277D35D56F070578EF680FEE3015CF6744B2325E4DAF + 45C4681699B49A38BAE71D6256E879FAE5D789940E3B4A7B07B5B5FD94363A30 + 35D4960555A26B1389C8140A428DD7C9DFF5243D5272450874345CA4E3D79334 + 751AF1F5CA0D69E9E4BE584071D12F74E9EEC5DC507736A82F283CDCC1B442CD + 03496AB45A0D4A0533EA458E1B954A895202864A73DA5019672E0D72B0DEC6E0 + 65C3E1A0004595DDB409E1C484B848BB2F6E0E60466792FB7CBD4AC1B6E226DA + A54BD0F5E397AF0655A2018B93CEB03588A2C80B9BE2D044A96E4BEE535D9882 + B3F5837C72DE82BDBB8DC1F23C5D0060F323EBA466E5F1DF7BB7470CF03FAFEC + A2C3AB25CC25F066968EB8B8081CD2BACD3AC1EA782DCBA443A9ACFB8BBDE7CD + 08820BE1D22106EA4B03FF839CCC640E555C98B707395D1ECEB4C8995A9E8830 + 25B051AF62ED72053F9DB84AF6B319185AACB48F79F10802BAA12B4C0C77F1A7 + A12410B0FB8B92451B9D287AB12912A4D6BB91B098E8D967D6BF26F5697B4F3B + F29E0BC4442A9049BD29A017CDDDBCA42C7B541F7ECFC3B9AA98E854294AEB9E + B65BEC7DCDF562674595F42A0CCDDDFA374E2097A403759C690000000049454E + 44AE426082} + Name = 'PngImage0' + Background = clWindow + end> + Left = 232 + Top = 16 + Bitmap = {} + end + object ModuleActionList: TActionList + Images = LargeImages + Left = 40 + Top = 72 + object actMediciones: TAction + Category = 'Agenda' + Caption = 'Agenda' + ImageIndex = 0 + OnExecute = actMedicionesExecute + end + end + object MainMenu: TMainMenu + Images = LargeImages + Left = 40 + Top = 16 + object menu: TMenuItem + Tag = 90 + Caption = 'A&genda' + GroupIndex = 1 + ImageIndex = 0 + OnClick = actMedicionesExecute + object Calendario1: TMenuItem + Tag = 90 + Action = actMediciones + end + end + end + object SmallImages: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD2520000020E4944415478DA + A5935148535118C77FD7B995E5C21CA68B066A08D540849E4620410F93C256AE + 20230823F42924CAA8071D7B08E9A1879EB37AAA204741413D15962D7CD0A264 + D440289DC26ACEB5ED7AB7DDDDED76B7B5626CEB213F38FC0FE79CEFF7FD0FDF + 3942DB9539950D8490038CF576966DA4D2105B57898AD9BCC6122AB2B6169754 + 44A9A0D9CF23950195928B4945402E6A177E03FED77EC3C709048F6752753A4F + FCF36026AB925632DA1514D2E94C7EEE79F18EBBF79F9603DC6E7749B2AAF95B + 150D289B9A51F57564D6C30C0F9EE4F5CC87EA0097CB95D78B97AE71F9C6130E + D9BB097C8FB1B8A6407D1391509446C9CFDBA9E77F01952A7F93F7D269B3D165 + D1B3D3A4239294F185B6303B1F6439AAE3EBCB3BA58062E59C5E1819A7C6DACF + E90346AC1D26225A6796B58E8C9F3D86AD6F884FD1DDBC9FF3557710485868DC + 7790D1336DC43302B32B1213C3FDEC393240778F03EFF4021E6FB8BA83C1B187 + 44B20D5C3DDF85683473F39CA3A4407DC729BCB1D6EA0E96E226A2663B037DED + 246A7424D3DA238A49646BB7D2BE0D269FCDF3783A5800F43A8EFFE9AF9C536D + ACFE4C30FAE807965D469CF65616E302920CE63AD08B6B0CDDF22107BF14003D + 878F72CFF3AAEC01F9571466C22DB46C376035496C1652C4754D3C78134289C7 + 6896A60A80EBB7CB938B91CC1A499AF69334EC20256B1F4A4E61100398053F06 + 240455DDD06FE617B61D3A44F24E4F720000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end> + PngOptions = [pngBlendOnDisabled, pngGrayscaleOnDisabled] + Left = 308 + Top = 16 + Bitmap = {} + end + object ExtraImages: TPngImageList + Height = 28 + Width = 28 + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D494844520000001C0000001C0806000000720DDF + 940000000970485973000017120000171201679FD252000004D64944415478DA + BD957D50545514C07F6FD905044492B5D6044CD210FCFE0C9B093533C4444B82 + 1C14AB51FE404873C26AC68FCCB226C5D132354B9D880835191D1D5304B2A6D1 + 48938F2C34244405D915C4E563835D78BBBDB7C88B6D91D8FEF0CCDC39F79E77 + CFFDBD73EE3BE709369B8DFB29820C14044131C4AFC8785152FBA5B1E0EB8F12 + 0EB87A604FFE765637405BE6B6458C9FB58CA29C5D828BBC1EFD1560F09B854A + 5EA7984B498E9B4FCA86548C6396BA9CB29EFC2B3E1C2F28C075D1A3EDC6DC43 + FB899F399DB5DB37B27CCDC74E07B65BC16C81568BCD3E4C2DB2EE589BDB245D + 7648F1F79F9CA63C134B5751787267F7C088D061EC3E9CEE046C6D93615D0016 + 4798FC22B6CA438ABFF7D8B4BBFB405DDE0350964B97CF3A007B0393E71E37B3 + 157FB7B0CD76BB2CF704EA6F5CE7607A1A712FA5A20B0C720926DB04D30DAA8B + B6E117BA82BAB600E585EF09FCB7B80273DCE7788E13D0E5CFD145F12BD9F30F + 303BB7C41633738C4B07AC395049F6B1DFB971BDCEC11E18A425267A04CB676A + 11452BA2D5CA915305ECCB3CFADFC04F324E3AD9F4EEC315D0CA9469786BFB4B + 69173B8645A4C5D24EE6CE5C059CF8A42FC7F2CFF51E989230CB21AA6D3B7E60 + 69EC281E191B82A1BA960754CD840DF1E3F9C8CD1CCE5945E95523E78D7D308B + 36BECB3AC36BC953D1592EFF3F60E8A2E344853F4CD098C7B85A7289D9E10F32 + 794200CD2DAD145FD4E3A90BC068B252F8D36F9CBB2922FAF861B8504EE2742B + 5F7D73C235606774EFBD1F4B45512949B121E8745E4859E48A41A4FA8E0D3715 + 988C356C5DB99025EBF6917EA69ECB3F96313DF00ED5B7CB9C81DDDD59A7ECC8 + 11ED7722658A886015E19307D9E767AFB4633283462D9543731D69AFC6316771 + 1233E6BDC0D1C3BF9073BB2FD7F38B19EA7E86E2BCCF9C815D53D875ED1391CE + 9AF5F351D55D2331360C51B0D128F5D19FCBDB259880A5C5C8A665F3895CB084 + C8D878346E022A53138BB79660F8B50A9D299FF20B5FBA064C5D3D8F89FD9B09 + 9FA0A35DB215558AF6E8AACA0AF9E2835446854F65CEC25750BBC1C08041685A + CD246F29A0B4E816FD0C7954FF91E11A30E58D68B62C7E878CAC25F8870CA741 + 8A502DA5727DC253AC7D7727EB5727A192FEADF2EF352DF320519336F1E8AC27 + A8AA6AC5479F87BE2CA3F777F8D6E70696AE8CE2E9000B6DBE03A48296618294 + 3AA9A599EEB0213186ED47F2159B466D23A88F86675ECFE55291817EFA135497 + EDEF7D8472494C9D3B9E606E133C7A186A55C787A276EBD032447D57CB6B1F09 + DC58594BDC9E0A6ACE5748777842BA4317809D6511B9600A8F6B2D8C98385482 + 09DDC23C241DE4A92179D3F71498FD69CA3F89BF7B1925797B7B0FEC8C322422 + 94D69A1A52660FC677D0000495CD218D7D352A06BAABF934EB02BB2E8AB4379A + 08AD3D4D4D53BD631D3E376314BB324FF5D8B0E53E2A473929269C56BD8184B1 + DECC891A4963730BE346BE8DB1762BB70C0DA46515937BCB13542ABC0A8E9310 + 3F8ECCEC5C4760F4B491F6CE6EEFF0F62E6FA35D997768AB54E97BCF3629CD3B + 70FA68A92EF50CF65571F35A1DBA210FF167A3805AABA5ADDE8857C969E626BD + DC7D2F9D1D11C6DE83F9F4461A1B4C7C9B574971BDB6DBE7FD340D0CF7AA21F2 + D9097879FBD86D4EC08D5B76F70AD655CC52D36EAC1369B3796015540896BFF0 + F430D357EB89BBA7B7D37E05783FE56F92C591F6D1A442580000000049454E44 + AE426082} + Name = 'PngImage0' + Background = clWindow + end> + Left = 232 + Top = 80 + Bitmap = {} + end +end diff --git a/Modulos/Calendarios/Cliente/uPluginControllerCalendarios.pas b/Modulos/Calendarios/Cliente/uPluginControllerCalendarios.pas new file mode 100644 index 0000000..72ec666 --- /dev/null +++ b/Modulos/Calendarios/Cliente/uPluginControllerCalendarios.pas @@ -0,0 +1,79 @@ +unit uPluginControllerCalendarios; + +interface + +uses + uModuleController, uInterfaces, uHostManager, Menus, Classes, ActnList, + ImgList, Controls, PngImageList; + +type + IMCCuentas = interface(IInterface) + ['{269979BB-DCF8-41FD-8F46-57022242FE86}'] + end; + + TModuleCalendarios = class(TModuleController, IMCCuentas) + actMediciones: TAction; + menu: TMenuItem; + ExtraImages: TPngImageList; + LargeImages: TPngImageList; + MainMenu: TMainMenu; + ModuleActionList: TActionList; + Calendario1: TMenuItem; + SmallImages: TPngImageList; + procedure actMedicionesExecute(Sender: TObject); + public + end; + +implementation + +{$R *.dfm} + +uses + Forms, Dialogs, uGUIBase, SysUtils, uDataModuleCalendarios, + uBizCitas, + + uEditorCalendarioMediciones, uEditorCalendarioBase, + uEditorCalendarioConFiltro; + +function GetModule : TModuleController; +begin + Result := TModuleCalendarios.Create(NIL); +end; + +exports + GetModule name GET_MODULE_FUNC; + +{ +******************************* TModuleContactos ******************************* +} + +procedure TModuleCalendarios.actMedicionesExecute(Sender: TObject); +var + aObj: IEditorCalendarioMediciones; + ACitas : IBizCitas; + AVendedores : IBizVendedores; +begin + ACitas := dmCalendarios.GetMediciones; + AVendedores := dmCalendarios.GetVendedores; + aObj := TfEditorCalendarioMediciones.Create(Application); + try + with aObj do + begin + Citas := ACitas; + Vendedores := AVendedores; + ShowEmbedded; + end; + finally + ACitas := NIL; + AVendedores := NIL; + aObj := NIL; + end; +end; + +initialization + RegisterModuleClass(TModuleCalendarios); + +finalization + UnRegisterModuleClass(TModuleCalendarios); + +end. diff --git a/Modulos/Calendarios/Cliente/uPluginControllerCuentas.ddp b/Modulos/Calendarios/Cliente/uPluginControllerCuentas.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Calendarios/Cliente/uPluginControllerCuentas.ddp differ diff --git a/Modulos/Calendarios/Cliente/uViewCalendarioBase.ddp b/Modulos/Calendarios/Cliente/uViewCalendarioBase.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Calendarios/Cliente/uViewCalendarioBase.ddp differ diff --git a/Modulos/Calendarios/Cliente/uViewCalendarioBase.dfm b/Modulos/Calendarios/Cliente/uViewCalendarioBase.dfm new file mode 100644 index 0000000..bb74873 --- /dev/null +++ b/Modulos/Calendarios/Cliente/uViewCalendarioBase.dfm @@ -0,0 +1,45 @@ +inherited frViewCalendarioBase: TfrViewCalendarioBase + Width = 443 + Height = 270 + Align = alClient + object cxScheduler: TcxScheduler + Left = 0 + Top = 0 + Width = 443 + Height = 270 + DateNavigator.RowCount = 2 + DateNavigator.ShowWeekNumbers = False + ViewDay.Active = True + ViewDay.AutoContentHeight = True + ViewDay.GroupingKind = gkByDate + ViewTimeGrid.ShowTimeAsClock = True + ViewWeek.GroupingKind = gkByDate + ViewWeek.ShowTimeAsClock = True + ViewWeeks.GroupingKind = gkNone + ViewWeeks.ShowTimeAsClock = True + Align = alClient + BevelInner = bvNone + BevelOuter = bvNone + BorderStyle = cxcbsNone + ContentPopupMenu.Items = [cpmiNewEvent, cpmiToday, cpmiGoToThisDay] + DialogsLookAndFeel.NativeStyle = True + EventOperations.InplaceEditing = False + EventOperations.Recurrence = False + EventPopupMenu.Items = [epmiOpen, epmiDelete] + LookAndFeel.Kind = lfUltraFlat + LookAndFeel.NativeStyle = False + OptionsCustomize.DynamicSizing = True + OptionsView.DayBorderColor = clActiveCaption + OptionsView.ShowEventsWithoutResource = True + OptionsView.WorkDays = [dMonday, dTuesday, dWednesday, dThursday, dFriday, dSaturday] + OptionsView.WorkStart = 0.416666666666666700 + OptionsView.WorkFinish = 0.854166666666666800 + ParentFont = True + ShowHint = True + TabOrder = 0 + Selection = 1 + Splitters = { + 2C010000FA000000BB010000FF00000027010000000000002C0100000E010000} + StoredClientBounds = {0000000000000000BB0100000E010000} + end +end diff --git a/Modulos/Calendarios/Cliente/uViewCalendarioBase.pas b/Modulos/Calendarios/Cliente/uViewCalendarioBase.pas new file mode 100644 index 0000000..6b79953 --- /dev/null +++ b/Modulos/Calendarios/Cliente/uViewCalendarioBase.pas @@ -0,0 +1,79 @@ +unit uViewCalendarioBase; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, dxLayoutControl, cxControls, Menus, cxStyles, + cxGraphics, cxEdit, cxScheduler, cxSchedulerStorage, + cxSchedulerCustomControls, cxSchedulerCustomResourceView, + cxSchedulerDayView, cxSchedulerDateNavigator, cxSchedulerTimeGridView, + cxSchedulerUtils, cxSchedulerWeekView, cxSchedulerYearView, dxPrnDev, + dxPSGlbl, dxPSUtl, dxPSEngn, dxPrnPg, dxBkgnd, dxWrap, dxPSCompsProvider, + dxPSFillPatterns, dxPSEdgePatterns, dxPSCore, dxPScxCommon, + dxPScxScheduler2Lnk, dxPrnDlg, cxSchedulerDBStorage, ActnList, DB, + uDADataTable, uBizCitas, JvAppStorage, JvAppRegistryStorage, + JvComponentBase, JvFormPlacement, uViewGrid; + +type + IViewCalendarioBase = interface(IViewBase) + ['{A5CF0823-17C6-4FBA-9DC8-6E8D310503F5}'] + function getCalendario: TcxScheduler; + property Calendario: TcxScheduler read getCalendario; + + function GetpAnchorDate: TDateTime; + procedure SetpAnchorDate(const Value: TDateTime); + property pAnchorDate: TDateTime read GetpAnchorDate write SetpAnchorDate; + end; + + TfrViewCalendarioBase = class(TfrViewBase, IViewCalendarioBase) + cxScheduler : TcxScheduler; + private + AnchorDate: TDateTime; + + protected + function GetpAnchorDate: TDateTime; + procedure SetpAnchorDate(const Value: TDateTime); + + function getCalendario: TcxScheduler; + public + property pAnchorDate: TDateTime read GetpAnchorDate write SetpAnchorDate; + property Calendario: TcxScheduler read getCalendario; + constructor Create(AOwner : TComponent); override; + destructor Destroy; override; + end; + +var + frViewCalendarioBase: TfrViewCalendarioBase; + +implementation + +{$R *.dfm} + +constructor TfrViewCalendarioBase.Create(AOwner: TComponent); +begin + inherited Create(AOwner); + AnchorDate := Date; +end; + +destructor TfrViewCalendarioBase.Destroy; +begin + inherited; +end; + +function TfrViewCalendarioBase.getCalendario: TcxScheduler; +begin + Result := cxScheduler; +end; + +function TfrViewCalendarioBase.GetpAnchorDate: TDateTime; +begin + Result := AnchorDate; +end; + +procedure TfrViewCalendarioBase.SetpAnchorDate(const Value: TDateTime); +begin + AnchorDate := Value; +end; + +end. diff --git a/Modulos/Calendarios/Cliente/uViewCalendarioConFiltro.ddp b/Modulos/Calendarios/Cliente/uViewCalendarioConFiltro.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Calendarios/Cliente/uViewCalendarioConFiltro.ddp differ diff --git a/Modulos/Calendarios/Cliente/uViewCalendarioConFiltro.dfm b/Modulos/Calendarios/Cliente/uViewCalendarioConFiltro.dfm new file mode 100644 index 0000000..e11a194 --- /dev/null +++ b/Modulos/Calendarios/Cliente/uViewCalendarioConFiltro.dfm @@ -0,0 +1,624 @@ +inherited frViewCalendarioConFiltro: TfrViewCalendarioConFiltro + inherited cxScheduler: TcxScheduler + OnInitEventImages = cxSchedulerInitEventImages + ControlBox.Control = pnlVendedores + EventImages = ImageList1 + OptionsView.WorkStart = 0.416666666666666700 + OptionsView.WorkFinish = 0.854166666666666800 + Selection = 1 + Splitters = { + 2C010000FA000000BB010000FF00000027010000000000002C0100000E010000} + StoredClientBounds = {0000000000000000BB0100000E010000} + object pnlVendedores: TPanel + Left = 0 + Top = 0 + Width = 143 + Height = 15 + Align = alClient + BevelOuter = bvNone + Color = 16383743 + Constraints.MaxHeight = 440 + ParentBackground = True + TabOrder = 0 + object cxResources: TcxCheckListBox + Left = 0 + Top = 18 + Width = 143 + Height = 416 + Align = alClient + Items = <> + ParentFont = False + Sorted = True + Style.BorderStyle = cbsNone + Style.LookAndFeel.Kind = lfStandard + Style.TransparentBorder = False + StyleDisabled.BorderStyle = cbsNone + StyleDisabled.LookAndFeel.Kind = lfStandard + StyleFocused.BorderStyle = cbsNone + StyleFocused.LookAndFeel.Kind = lfStandard + StyleHot.BorderStyle = cbsNone + StyleHot.LookAndFeel.Kind = lfStandard + TabOrder = 0 + OnEditValueChanged = cxResourcesEditValueChanged + end + object Panel2: TPanel + Left = 0 + Top = 0 + Width = 143 + Height = 18 + Align = alTop + BevelInner = bvSpace + BevelOuter = bvNone + Caption = 'Titulo filtro' + Color = 14280169 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + ParentFont = False + TabOrder = 1 + end + object tbxMain: TTBXToolbar + Left = 0 + Top = 9 + Width = 143 + Height = 6 + Align = alBottom + Caption = 'tbxMain' + ChevronHint = 'M'#225's botones|' + DockMode = dmCannotFloatOrChangeDocks + DockPos = -23 + DockRow = 1 + DragHandleStyle = dhNone + ParentShowHint = False + ShowHint = True + TabOrder = 2 + object TBXItem5: TTBXItem + DisplayMode = nbdmImageAndText + end + end + end + end + object ImageList1: TImageList + Height = 32 + Width = 32 + Left = 744 + Top = 280 + Bitmap = { + 494C010101000400040020002000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600 + 0000000000003600000028000000800000002000000001002000000000000040 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000A0A0AFF0A0A + 0AFF0A0A0AFF0A0A0AFF0A0A0AFF000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000A0A0AFF0A0A + 0AFF306074FF0A0A0AFF0A0A0AFF0A0A0AFF0000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000A0A0AFF0A0A0AFF76FC + FAFF76FCFAFF306074FF0A0A0AFF0A0A0AFF0A0A0AFF00000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000A0A0AFF0A0A0AFF76FCFAFF76FC + FAFF76FCFAFF76FCFAFF306074FF0A0A0AFF0A0A0AFF0A0A0AFF000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000A0A0AFF0A0A0AFF76FCFAFF76FCFAFF76FC + FAFF76FCFAFF76FCFAFF76FCFAFF306074FF0A0A0AFF0A0A0AFF0A0A0AFF0000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000A0A0AFF0A0A0AFF76FCFAFF76FCFAFF76FCFAFF76FC + FAFF43CCFFFF76FCFAFF76FCFAFF76FCFAFF306074FF0A0A0AFF0A0A0AFF0A0A + 0AFF000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000A0A0AFF0A0A0AFF76FCFAFF76FCFAFF306074FF60B7 + D0FF43CCFFFF76FCFAFF76FCFAFF76FCFAFF76FCFAFF306074FF0A0A0AFF0A0A + 0AFF0A0A0AFF0000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000A0A0AFF0A0A0AFF306074FF0A0A0AFF43CC + FFFF76FCFAFF43CCFFFF306074FF43CCFFFF76FCFAFF76FCFAFF306074FF0A0A + 0AFF0A0A0AFF0A0A0AFF00000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000A0A0AFF0A0A0AFF43CCFFFF76FC + FAFF43CCFFFF306074FF0A0A0AFF43CCFFFF76FCFAFF76FCFAFF76FCFAFF3060 + 74FF0A0A0AFF0A0A0AFF0A0A0AFF000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000A0A0AFF0A0A0AFF97DE + F3FF306074FF0A0A0AFF43CCFFFF76FCFAFF76FCFAFF76FCFAFF76FCFAFF76FC + FAFF306074FF0A0A0AFF0A0A0AFF0A0A0AFF0000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000A0A0AFF0A0A + 0AFF0A0A0AFF43CCFFFF76FCFAFF76FCFAFF76FCFAFF43CCFFFF76FCFAFF76FC + FAFF76FCFAFF306074FF0A0A0AFF0A0A0AFF0A0A0AFF00000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000A0A + 0AFF0A0A0AFF76FCFAFF76FCFAFF306074FF60B7D0FF43CCFFFF76FCFAFF76FC + FAFF76FCFAFF76FCFAFF306074FF0A0A0AFF0A0A0AFF0A0A0AFF000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000A0A0AFF0A0A0AFF306074FF0A0A0AFF43CCFFFF76FCFAFF43CCFFFF3060 + 74FF43CCFFFF76FCFAFF76FCFAFF306074FF0A0A0AFF0A0A0AFF0A0A0AFF0000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000A0A0AFF0A0A0AFF43CCFFFF76FCFAFF43CCFFFF306074FF0A0A + 0AFF60B7D0FF76FCFAFF76FCFAFF76FCFAFF306074FF0A0A0AFF0A0A0AFF0A0A + 0AFF000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000A0A0AFF0A0A0AFF43CCFFFF306074FF0A0A0AFF43CC + FFFF43CCFFFF76FCFAFF76FCFAFF76FCFAFF76FCFAFF306074FF0A0A0AFF0A0A + 0AFF000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000A0A0AFF0A0A0AFF0A0A0AFF43CCFFFF76FC + FAFF76FCFAFF76FCFAFF76FCFAFF76FCFAFF76FCFAFF76FCFAFF306074FF0A0A + 0AFF000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000A0A0AFF0A0A0AFF97DEF3FF76FC + FAFF306074FF60B7D0FF43CCFFFF76FCFAFF76FCFAFF76FCFAFF306074FF0A0A + 0AFF000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000A0A0AFF0A0A0AFF3060 + 74FF0A0A0AFF43CCFFFF76FCFAFF76FCFAFF76FCFAFF306074FF0A0A0AFF0000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000A0A0AFF0A0A + 0AFF43CCFFFF76FCFAFF76FCFAFF76FCFAFF306074FF0A0A0AFF000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000A0A + 0AFF0A0A0AFF76FCFAFF76FCFAFF306074FF0A0A0AFF00000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000A0A0AFF0A0A0AFF306074FF0A0A0AFF0000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000A0A0AFF0A0A0AFF000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000424D3E000000000000003E000000 + 2800000080000000200000000100010000000000000200000000000000000000 + 000000000000000000000000FFFFFF00FFFFFFFF000000000000000000000000 + FFFFFFFF000000000000000000000000FFFFFFFF000000000000000000000000 + FFFFFFFF000000000000000000000000FFC1FFFF000000000000000000000000 + FFC0FFFF000000000000000000000000FF807FFF000000000000000000000000 + FF003FFF000000000000000000000000FE001FFF000000000000000000000000 + FC000FFF000000000000000000000000FC0007FF000000000000000000000000 + FE0003FF000000000000000000000000FF0001FF000000000000000000000000 + FF8000FF000000000000000000000000FFC0007F000000000000000000000000 + FFE0003F000000000000000000000000FFF0001F000000000000000000000000 + FFF8000F000000000000000000000000FFFC000F000000000000000000000000 + FFFE000F000000000000000000000000FFFF000F000000000000000000000000 + FFFF801F000000000000000000000000FFFFC03F000000000000000000000000 + FFFFE07F000000000000000000000000FFFFF0FF000000000000000000000000 + FFFFF9FF000000000000000000000000FFFFFFFF000000000000000000000000 + FFFFFFFF000000000000000000000000FFFFFFFF000000000000000000000000 + FFFFFFFF000000000000000000000000FFFFFFFF000000000000000000000000 + FFFFFFFF00000000000000000000000000000000000000000000000000000000 + 000000000000} + end +end diff --git a/Modulos/Calendarios/Cliente/uViewCalendarioConFiltro.pas b/Modulos/Calendarios/Cliente/uViewCalendarioConFiltro.pas new file mode 100644 index 0000000..0430111 --- /dev/null +++ b/Modulos/Calendarios/Cliente/uViewCalendarioConFiltro.pas @@ -0,0 +1,119 @@ +unit uViewCalendarioConFiltro; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewCalendarioBase, Menus, cxStyles, cxGraphics, cxEdit, + cxScheduler, cxSchedulerStorage, cxSchedulerCustomControls, + cxSchedulerCustomResourceView, cxSchedulerDayView, + cxSchedulerDateNavigator, cxSchedulerTimeGridView, cxSchedulerUtils, + cxSchedulerWeekView, cxSchedulerYearView, dxPrnDev, dxPSGlbl, dxPSUtl, + dxPSEngn, dxPrnPg, dxBkgnd, dxWrap, dxPSCompsProvider, dxPSFillPatterns, + dxPSEdgePatterns, cxContainer, cxCheckListBox, ExtCtrls, + dxPSCore, dxPScxCommon, dxPScxScheduler2Lnk, dxPrnDlg, + cxSchedulerDBStorage, ActnList, cxControls, JvAppStorage, + JvAppRegistryStorage, JvComponentBase, JvFormPlacement, TB2Item, TBX, + TB2Dock, TB2Toolbar, DB, uDADataTable, ImgList; + +type + IViewCalendarioConFiltro = interface(IViewCalendarioBase) + ['{636C30A6-74A9-4B6D-A68A-2B26DE208A7F}'] + function getResources: TcxCheckListBox; + property Resources: TcxCheckListBox read getResources; + end; + + TfrViewCalendarioConFiltro = class(TfrViewCalendarioBase, IViewCalendarioConFiltro) + pnlVendedores: TPanel; + cxResources: TcxCheckListBox; + Panel2: TPanel; + tbxMain: TTBXToolbar; + TBXItem5: TTBXItem; + ImageList1: TImageList; + procedure cxResourcesEditValueChanged(Sender: TObject); + procedure cxSchedulerInitEventImages(Sender: TcxCustomScheduler; + AEvent: TcxSchedulerControlEvent; AImages: TcxSchedulerEventImages); + protected + function getResources: TcxCheckListBox; + public + property Resources: TcxCheckListBox read getResources; + + public + constructor Create(AOwner : TComponent); override; + end; + +var + frViewCalendarioConFiltro: TfrViewCalendarioConFiltro; + +implementation + +{$R *.dfm} + +procedure TfrViewCalendarioConFiltro.cxResourcesEditValueChanged(Sender: TObject); +var + AIndex: Integer; +begin + AIndex := cxResources.ItemIndex; + + if AIndex < 0 then + Exit; + with cxResources.Items[AIndex] do + TcxSchedulerStorageResourceItem(ItemObject).Visible := Checked; + + if cxScheduler.Storage.Resources.ResourceItems.VisibleResourceCount = 0 then + begin + cxResources.Items[AIndex].Checked := True; + Exit; + end; +end; + +procedure TfrViewCalendarioConFiltro.cxSchedulerInitEventImages( + Sender: TcxCustomScheduler; AEvent: TcxSchedulerControlEvent; + AImages: TcxSchedulerEventImages); +begin + inherited; + if not cxScheduler.ViewWeeks.Active then + if AEvent.LabelColor = EventLabelColors[6] then + AImages.Add(0); +end; + +constructor TfrViewCalendarioConFiltro.Create(AOwner: TComponent); +begin + inherited; + { + dsCitas.DataSet := TablaCitas; + dsVendedores.DataSet := TablaVendedores; + + with TablaCitas do + begin + Database := dmBaseDatos.BD; + Transaction := dmBaseDatos.Transaccion; + SelectSQL.Assign(dmTablaCitas.sqlConsultar); + SelectSQL.Add('WHERE TIPOTAREA = ''' + TextoTipoCita[Ord(tcMedicion)] + ''''); + InsertSQL.Assign(dmTablaCitas.sqlInsertar); + ModifySQL.Assign(dmTablaCitas.sqlModificar); + DeleteSQL.Assign(dmTablaCitas.sqlEliminar); + RefreshSQL.Assign(dmTablaCitas.sqlRefrescar); + RefreshSQL.Add('and TIPOTAREA = ''' + TextoTipoCita[Ord(tcMedicion)] + ''''); + + BeforePost := TablaCitasBeforePost; + AfterPost := TablaCitasAfterPost; + Prepare; + end; + + with TablaVendedores do + begin + Database := dmBaseDatos.BD; + Transaction := dmBaseDatos.Transaccion; + SelectSQL.Add('select * from VENDEDORES'); + Prepare; + end; +} +end; + +function TfrViewCalendarioConFiltro.getResources: TcxCheckListBox; +begin + Result := cxResources; +end; + +end. diff --git a/Modulos/Calendarios/Cliente/uViewCalendarioMediciones.dfm b/Modulos/Calendarios/Cliente/uViewCalendarioMediciones.dfm new file mode 100644 index 0000000..4959589 --- /dev/null +++ b/Modulos/Calendarios/Cliente/uViewCalendarioMediciones.dfm @@ -0,0 +1,26 @@ +inherited frViewCalendarioMediciones: TfrViewCalendarioMediciones + Width = 586 + Height = 406 + inherited cxScheduler: TcxScheduler + Width = 586 + Height = 406 + OptionsView.WorkStart = 0.416666666666666700 + OptionsView.WorkFinish = 0.854166666666666800 + Selection = 231 + Splitters = { + BB010000FA0000004A020000FF000000B601000000000000BB01000096010000} + StoredClientBounds = {00000000000000004A02000096010000} + inherited pnlVendedores: TPanel + Height = 151 + inherited cxResources: TcxCheckListBox + Height = 127 + end + inherited Panel2: TPanel + Caption = 'Vendedores' + end + inherited tbxMain: TTBXToolbar + Top = 145 + end + end + end +end diff --git a/Modulos/Calendarios/Cliente/uViewCalendarioMediciones.pas b/Modulos/Calendarios/Cliente/uViewCalendarioMediciones.pas new file mode 100644 index 0000000..79dadb4 --- /dev/null +++ b/Modulos/Calendarios/Cliente/uViewCalendarioMediciones.pas @@ -0,0 +1,29 @@ +unit uViewCalendarioMediciones; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewCalendarioConFiltro, Menus, cxStyles, cxGraphics, cxEdit, + cxScheduler, cxSchedulerStorage, cxSchedulerCustomControls, + cxSchedulerCustomResourceView, cxSchedulerDayView, + cxSchedulerDateNavigator, cxSchedulerTimeGridView, cxSchedulerUtils, + cxSchedulerWeekView, cxSchedulerYearView, ImgList, TB2Item, TBX, TB2Dock, + TB2Toolbar, cxContainer, cxCheckListBox, ExtCtrls, cxControls; + +type + TfrViewCalendarioMediciones = class(TfrViewCalendarioConFiltro) + private + { Private declarations } + public + { Public declarations } + end; + +var + frViewCalendarioMediciones: TfrViewCalendarioMediciones; + +implementation + +{$R *.dfm} + +end. diff --git a/Modulos/Calendarios/Reglas/schCitasClient_Intf.pas b/Modulos/Calendarios/Reglas/schCitasClient_Intf.pas new file mode 100644 index 0000000..5437e2d --- /dev/null +++ b/Modulos/Calendarios/Reglas/schCitasClient_Intf.pas @@ -0,0 +1,862 @@ +unit schCitasClient_Intf; + +interface + +uses + Classes, DB, SysUtils, uROClasses, uDADataTable; + +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_CITAS = '{8A00AC3C-FD7C-4241-B7C7-8EFD1937F000}'; + RID_VENDEDORES = '{59850C69-DF4D-44E2-BA00-C4FDC03E39E0}'; + + { Data table names } + nme_CITAS = 'CITAS'; + nme_VENDEDORES = 'VENDEDORES'; + + { CITAS fields } + fld_CITASID = 'ID'; + fld_CITASPARENTID = 'PARENTID'; + fld_CITASSTART = 'START'; + fld_CITASTIPO = 'TIPO'; + fld_CITASFINISH = 'FINISH'; + fld_CITASOPTIONS = 'OPTIONS'; + fld_CITASCAPTION = 'CAPTION'; + fld_CITASMENSAJE = 'MENSAJE'; + fld_CITASRECURRENCEINDEX = 'RECURRENCEINDEX'; + fld_CITASRESOURCEID = 'RESOURCEID'; + fld_CITASLOCATION = 'LOCATION'; + fld_CITASREMINDER = 'REMINDER'; + fld_CITASSTATE = 'STATE'; + fld_CITASLABELCOLOR = 'LABELCOLOR'; + fld_CITASCODIGOCONTRATO = 'CODIGOCONTRATO'; + fld_CITASTIPOTAREA = 'TIPOTAREA'; + fld_CITASNOMBRECLIENTE = 'NOMBRECLIENTE'; + fld_CITASPARTIDA = 'PARTIDA'; + fld_CITASCOMPLETADA = 'COMPLETADA'; + fld_CITASNOMBREPROVEEDOR = 'NOMBREPROVEEDOR'; + fld_CITASCODIGOCOLUMNA = 'CODIGOCOLUMNA'; + fld_CITASCODIGOFILA = 'CODIGOFILA'; + fld_CITASEMPRESA = 'EMPRESA'; + + { CITAS field indexes } + idx_CITASID = 0; + idx_CITASPARENTID = 1; + idx_CITASSTART = 2; + idx_CITASTIPO = 3; + idx_CITASFINISH = 4; + idx_CITASOPTIONS = 5; + idx_CITASCAPTION = 6; + idx_CITASMENSAJE = 7; + idx_CITASRECURRENCEINDEX = 8; + idx_CITASRESOURCEID = 9; + idx_CITASLOCATION = 10; + idx_CITASREMINDER = 11; + idx_CITASSTATE = 12; + idx_CITASLABELCOLOR = 13; + idx_CITASCODIGOCONTRATO = 14; + idx_CITASTIPOTAREA = 15; + idx_CITASNOMBRECLIENTE = 16; + idx_CITASPARTIDA = 17; + idx_CITASCOMPLETADA = 18; + idx_CITASNOMBREPROVEEDOR = 19; + idx_CITASCODIGOCOLUMNA = 20; + idx_CITASCODIGOFILA = 21; + idx_CITASEMPRESA = 22; + + { VENDEDORES fields } + fld_VENDEDORESCODIGOEMPRESA = 'CODIGOEMPRESA'; + fld_VENDEDORESCODIGO = 'CODIGO'; + fld_VENDEDORESFECHAALTA = 'FECHAALTA'; + fld_VENDEDORESUSUARIO = 'USUARIO'; + fld_VENDEDORESNIFCIF = 'NIFCIF'; + fld_VENDEDORESNOMBRE = 'NOMBRE'; + fld_VENDEDORESNOTAS = 'NOTAS'; + fld_VENDEDORESCALLE = 'CALLE'; + fld_VENDEDORESPROVINCIA = 'PROVINCIA'; + fld_VENDEDORESCODIGOPOSTAL = 'CODIGOPOSTAL'; + fld_VENDEDORESPOBLACION = 'POBLACION'; + fld_VENDEDORESTELEFONO1 = 'TELEFONO1'; + fld_VENDEDORESTELEFONO2 = 'TELEFONO2'; + fld_VENDEDORESMOVIL = 'MOVIL'; + fld_VENDEDORESFAX = 'FAX'; + fld_VENDEDORESCORREO1 = 'CORREO1'; + fld_VENDEDORESCORREO2 = 'CORREO2'; + fld_VENDEDORESPAGINAWEB = 'PAGINAWEB'; + fld_VENDEDORESPERSONACONTACTO = 'PERSONACONTACTO'; + + { VENDEDORES field indexes } + idx_VENDEDORESCODIGOEMPRESA = 0; + idx_VENDEDORESCODIGO = 1; + idx_VENDEDORESFECHAALTA = 2; + idx_VENDEDORESUSUARIO = 3; + idx_VENDEDORESNIFCIF = 4; + idx_VENDEDORESNOMBRE = 5; + idx_VENDEDORESNOTAS = 6; + idx_VENDEDORESCALLE = 7; + idx_VENDEDORESPROVINCIA = 8; + idx_VENDEDORESCODIGOPOSTAL = 9; + idx_VENDEDORESPOBLACION = 10; + idx_VENDEDORESTELEFONO1 = 11; + idx_VENDEDORESTELEFONO2 = 12; + idx_VENDEDORESMOVIL = 13; + idx_VENDEDORESFAX = 14; + idx_VENDEDORESCORREO1 = 15; + idx_VENDEDORESCORREO2 = 16; + idx_VENDEDORESPAGINAWEB = 17; + idx_VENDEDORESPERSONACONTACTO = 18; + +type + { ICITAS } + ICITAS = interface(IDAStronglyTypedDataTable) + ['{03AC3728-729B-4224-B900-4A4A1666746B}'] + { Property getters and setters } + function GetIDValue: Integer; + procedure SetIDValue(const aValue: Integer); + function GetPARENTIDValue: Integer; + procedure SetPARENTIDValue(const aValue: Integer); + function GetSTARTValue: DateTime; + procedure SetSTARTValue(const aValue: DateTime); + function GetTIPOValue: Integer; + procedure SetTIPOValue(const aValue: Integer); + function GetFINISHValue: DateTime; + procedure SetFINISHValue(const aValue: DateTime); + function GetOPTIONSValue: Integer; + procedure SetOPTIONSValue(const aValue: Integer); + function GetCAPTIONValue: String; + procedure SetCAPTIONValue(const aValue: String); + function GetMENSAJEValue: String; + procedure SetMENSAJEValue(const aValue: String); + function GetRECURRENCEINDEXValue: Integer; + procedure SetRECURRENCEINDEXValue(const aValue: Integer); + function GetRESOURCEIDValue: Integer; + procedure SetRESOURCEIDValue(const aValue: Integer); + function GetLOCATIONValue: String; + procedure SetLOCATIONValue(const aValue: String); + function GetREMINDERValue: Integer; + procedure SetREMINDERValue(const aValue: Integer); + function GetSTATEValue: Integer; + procedure SetSTATEValue(const aValue: Integer); + function GetLABELCOLORValue: Integer; + procedure SetLABELCOLORValue(const aValue: Integer); + function GetCODIGOCONTRATOValue: String; + procedure SetCODIGOCONTRATOValue(const aValue: String); + function GetTIPOTAREAValue: String; + procedure SetTIPOTAREAValue(const aValue: String); + function GetNOMBRECLIENTEValue: String; + procedure SetNOMBRECLIENTEValue(const aValue: String); + function GetPARTIDAValue: String; + procedure SetPARTIDAValue(const aValue: String); + function GetCOMPLETADAValue: DateTime; + procedure SetCOMPLETADAValue(const aValue: DateTime); + function GetNOMBREPROVEEDORValue: String; + procedure SetNOMBREPROVEEDORValue(const aValue: String); + function GetCODIGOCOLUMNAValue: Integer; + procedure SetCODIGOCOLUMNAValue(const aValue: Integer); + function GetCODIGOFILAValue: Integer; + procedure SetCODIGOFILAValue(const aValue: Integer); + function GetEMPRESAValue: Integer; + procedure SetEMPRESAValue(const aValue: Integer); + + + { Properties } + property ID: Integer read GetIDValue write SetIDValue; + property PARENTID: Integer read GetPARENTIDValue write SetPARENTIDValue; + property START: DateTime read GetSTARTValue write SetSTARTValue; + property TIPO: Integer read GetTIPOValue write SetTIPOValue; + property FINISH: DateTime read GetFINISHValue write SetFINISHValue; + property OPTIONS: Integer read GetOPTIONSValue write SetOPTIONSValue; + property CAPTION: String read GetCAPTIONValue write SetCAPTIONValue; + property MENSAJE: String read GetMENSAJEValue write SetMENSAJEValue; + property RECURRENCEINDEX: Integer read GetRECURRENCEINDEXValue write SetRECURRENCEINDEXValue; + property RESOURCEID: Integer read GetRESOURCEIDValue write SetRESOURCEIDValue; + property LOCATION: String read GetLOCATIONValue write SetLOCATIONValue; + property REMINDER: Integer read GetREMINDERValue write SetREMINDERValue; + property STATE: Integer read GetSTATEValue write SetSTATEValue; + property LABELCOLOR: Integer read GetLABELCOLORValue write SetLABELCOLORValue; + property CODIGOCONTRATO: String read GetCODIGOCONTRATOValue write SetCODIGOCONTRATOValue; + property TIPOTAREA: String read GetTIPOTAREAValue write SetTIPOTAREAValue; + property NOMBRECLIENTE: String read GetNOMBRECLIENTEValue write SetNOMBRECLIENTEValue; + property PARTIDA: String read GetPARTIDAValue write SetPARTIDAValue; + property COMPLETADA: DateTime read GetCOMPLETADAValue write SetCOMPLETADAValue; + property NOMBREPROVEEDOR: String read GetNOMBREPROVEEDORValue write SetNOMBREPROVEEDORValue; + property CODIGOCOLUMNA: Integer read GetCODIGOCOLUMNAValue write SetCODIGOCOLUMNAValue; + property CODIGOFILA: Integer read GetCODIGOFILAValue write SetCODIGOFILAValue; + property EMPRESA: Integer read GetEMPRESAValue write SetEMPRESAValue; + end; + + { TCITASDataTableRules } + TCITASDataTableRules = class(TDADataTableRules, ICITAS) + private + protected + { Property getters and setters } + function GetIDValue: Integer; virtual; + procedure SetIDValue(const aValue: Integer); virtual; + function GetPARENTIDValue: Integer; virtual; + procedure SetPARENTIDValue(const aValue: Integer); virtual; + function GetSTARTValue: DateTime; virtual; + procedure SetSTARTValue(const aValue: DateTime); virtual; + function GetTIPOValue: Integer; virtual; + procedure SetTIPOValue(const aValue: Integer); virtual; + function GetFINISHValue: DateTime; virtual; + procedure SetFINISHValue(const aValue: DateTime); virtual; + function GetOPTIONSValue: Integer; virtual; + procedure SetOPTIONSValue(const aValue: Integer); virtual; + function GetCAPTIONValue: String; virtual; + procedure SetCAPTIONValue(const aValue: String); virtual; + function GetMENSAJEValue: String; virtual; + procedure SetMENSAJEValue(const aValue: String); virtual; + function GetRECURRENCEINDEXValue: Integer; virtual; + procedure SetRECURRENCEINDEXValue(const aValue: Integer); virtual; + function GetRESOURCEIDValue: Integer; virtual; + procedure SetRESOURCEIDValue(const aValue: Integer); virtual; + function GetLOCATIONValue: String; virtual; + procedure SetLOCATIONValue(const aValue: String); virtual; + function GetREMINDERValue: Integer; virtual; + procedure SetREMINDERValue(const aValue: Integer); virtual; + function GetSTATEValue: Integer; virtual; + procedure SetSTATEValue(const aValue: Integer); virtual; + function GetLABELCOLORValue: Integer; virtual; + procedure SetLABELCOLORValue(const aValue: Integer); virtual; + function GetCODIGOCONTRATOValue: String; virtual; + procedure SetCODIGOCONTRATOValue(const aValue: String); virtual; + function GetTIPOTAREAValue: String; virtual; + procedure SetTIPOTAREAValue(const aValue: String); virtual; + function GetNOMBRECLIENTEValue: String; virtual; + procedure SetNOMBRECLIENTEValue(const aValue: String); virtual; + function GetPARTIDAValue: String; virtual; + procedure SetPARTIDAValue(const aValue: String); virtual; + function GetCOMPLETADAValue: DateTime; virtual; + procedure SetCOMPLETADAValue(const aValue: DateTime); virtual; + function GetNOMBREPROVEEDORValue: String; virtual; + procedure SetNOMBREPROVEEDORValue(const aValue: String); virtual; + function GetCODIGOCOLUMNAValue: Integer; virtual; + procedure SetCODIGOCOLUMNAValue(const aValue: Integer); virtual; + function GetCODIGOFILAValue: Integer; virtual; + procedure SetCODIGOFILAValue(const aValue: Integer); virtual; + function GetEMPRESAValue: Integer; virtual; + procedure SetEMPRESAValue(const aValue: Integer); virtual; + + { Properties } + property ID: Integer read GetIDValue write SetIDValue; + property PARENTID: Integer read GetPARENTIDValue write SetPARENTIDValue; + property START: DateTime read GetSTARTValue write SetSTARTValue; + property TIPO: Integer read GetTIPOValue write SetTIPOValue; + property FINISH: DateTime read GetFINISHValue write SetFINISHValue; + property OPTIONS: Integer read GetOPTIONSValue write SetOPTIONSValue; + property CAPTION: String read GetCAPTIONValue write SetCAPTIONValue; + property MENSAJE: String read GetMENSAJEValue write SetMENSAJEValue; + property RECURRENCEINDEX: Integer read GetRECURRENCEINDEXValue write SetRECURRENCEINDEXValue; + property RESOURCEID: Integer read GetRESOURCEIDValue write SetRESOURCEIDValue; + property LOCATION: String read GetLOCATIONValue write SetLOCATIONValue; + property REMINDER: Integer read GetREMINDERValue write SetREMINDERValue; + property STATE: Integer read GetSTATEValue write SetSTATEValue; + property LABELCOLOR: Integer read GetLABELCOLORValue write SetLABELCOLORValue; + property CODIGOCONTRATO: String read GetCODIGOCONTRATOValue write SetCODIGOCONTRATOValue; + property TIPOTAREA: String read GetTIPOTAREAValue write SetTIPOTAREAValue; + property NOMBRECLIENTE: String read GetNOMBRECLIENTEValue write SetNOMBRECLIENTEValue; + property PARTIDA: String read GetPARTIDAValue write SetPARTIDAValue; + property COMPLETADA: DateTime read GetCOMPLETADAValue write SetCOMPLETADAValue; + property NOMBREPROVEEDOR: String read GetNOMBREPROVEEDORValue write SetNOMBREPROVEEDORValue; + property CODIGOCOLUMNA: Integer read GetCODIGOCOLUMNAValue write SetCODIGOCOLUMNAValue; + property CODIGOFILA: Integer read GetCODIGOFILAValue write SetCODIGOFILAValue; + property EMPRESA: Integer read GetEMPRESAValue write SetEMPRESAValue; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + + { IVENDEDORES } + IVENDEDORES = interface(IDAStronglyTypedDataTable) + ['{97DEA09F-C83C-47D3-8854-74212F62078A}'] + { Property getters and setters } + function GetCODIGOEMPRESAValue: Integer; + procedure SetCODIGOEMPRESAValue(const aValue: Integer); + function GetCODIGOValue: Integer; + procedure SetCODIGOValue(const aValue: Integer); + function GetFECHAALTAValue: DateTime; + procedure SetFECHAALTAValue(const aValue: DateTime); + function GetUSUARIOValue: String; + procedure SetUSUARIOValue(const aValue: String); + function GetNIFCIFValue: String; + procedure SetNIFCIFValue(const aValue: String); + function GetNOMBREValue: String; + procedure SetNOMBREValue(const aValue: String); + function GetNOTASValue: String; + procedure SetNOTASValue(const aValue: String); + function GetCALLEValue: String; + procedure SetCALLEValue(const aValue: String); + function GetPROVINCIAValue: String; + procedure SetPROVINCIAValue(const aValue: String); + function GetCODIGOPOSTALValue: String; + procedure SetCODIGOPOSTALValue(const aValue: String); + function GetPOBLACIONValue: String; + procedure SetPOBLACIONValue(const aValue: String); + function GetTELEFONO1Value: String; + procedure SetTELEFONO1Value(const aValue: String); + function GetTELEFONO2Value: String; + procedure SetTELEFONO2Value(const aValue: String); + function GetMOVILValue: String; + procedure SetMOVILValue(const aValue: String); + function GetFAXValue: String; + procedure SetFAXValue(const aValue: String); + function GetCORREO1Value: String; + procedure SetCORREO1Value(const aValue: String); + function GetCORREO2Value: String; + procedure SetCORREO2Value(const aValue: String); + function GetPAGINAWEBValue: String; + procedure SetPAGINAWEBValue(const aValue: String); + function GetPERSONACONTACTOValue: String; + procedure SetPERSONACONTACTOValue(const aValue: String); + + + { Properties } + property CODIGOEMPRESA: Integer read GetCODIGOEMPRESAValue write SetCODIGOEMPRESAValue; + property CODIGO: Integer read GetCODIGOValue write SetCODIGOValue; + property FECHAALTA: DateTime read GetFECHAALTAValue write SetFECHAALTAValue; + property USUARIO: String read GetUSUARIOValue write SetUSUARIOValue; + property NIFCIF: String read GetNIFCIFValue write SetNIFCIFValue; + property NOMBRE: String read GetNOMBREValue write SetNOMBREValue; + property NOTAS: String read GetNOTASValue write SetNOTASValue; + property CALLE: String read GetCALLEValue write SetCALLEValue; + property PROVINCIA: String read GetPROVINCIAValue write SetPROVINCIAValue; + property CODIGOPOSTAL: String read GetCODIGOPOSTALValue write SetCODIGOPOSTALValue; + property POBLACION: String read GetPOBLACIONValue write SetPOBLACIONValue; + property TELEFONO1: String read GetTELEFONO1Value write SetTELEFONO1Value; + property TELEFONO2: String read GetTELEFONO2Value write SetTELEFONO2Value; + property MOVIL: String read GetMOVILValue write SetMOVILValue; + property FAX: String read GetFAXValue write SetFAXValue; + property CORREO1: String read GetCORREO1Value write SetCORREO1Value; + property CORREO2: String read GetCORREO2Value write SetCORREO2Value; + property PAGINAWEB: String read GetPAGINAWEBValue write SetPAGINAWEBValue; + property PERSONACONTACTO: String read GetPERSONACONTACTOValue write SetPERSONACONTACTOValue; + end; + + { TVENDEDORESDataTableRules } + TVENDEDORESDataTableRules = class(TDADataTableRules, IVENDEDORES) + private + protected + { Property getters and setters } + function GetCODIGOEMPRESAValue: Integer; virtual; + procedure SetCODIGOEMPRESAValue(const aValue: Integer); virtual; + function GetCODIGOValue: Integer; virtual; + procedure SetCODIGOValue(const aValue: Integer); virtual; + function GetFECHAALTAValue: DateTime; virtual; + procedure SetFECHAALTAValue(const aValue: DateTime); virtual; + function GetUSUARIOValue: String; virtual; + procedure SetUSUARIOValue(const aValue: String); virtual; + function GetNIFCIFValue: String; virtual; + procedure SetNIFCIFValue(const aValue: String); virtual; + function GetNOMBREValue: String; virtual; + procedure SetNOMBREValue(const aValue: String); virtual; + function GetNOTASValue: String; virtual; + procedure SetNOTASValue(const aValue: String); virtual; + function GetCALLEValue: String; virtual; + procedure SetCALLEValue(const aValue: String); virtual; + function GetPROVINCIAValue: String; virtual; + procedure SetPROVINCIAValue(const aValue: String); virtual; + function GetCODIGOPOSTALValue: String; virtual; + procedure SetCODIGOPOSTALValue(const aValue: String); virtual; + function GetPOBLACIONValue: String; virtual; + procedure SetPOBLACIONValue(const aValue: String); virtual; + function GetTELEFONO1Value: String; virtual; + procedure SetTELEFONO1Value(const aValue: String); virtual; + function GetTELEFONO2Value: String; virtual; + procedure SetTELEFONO2Value(const aValue: String); virtual; + function GetMOVILValue: String; virtual; + procedure SetMOVILValue(const aValue: String); virtual; + function GetFAXValue: String; virtual; + procedure SetFAXValue(const aValue: String); virtual; + function GetCORREO1Value: String; virtual; + procedure SetCORREO1Value(const aValue: String); virtual; + function GetCORREO2Value: String; virtual; + procedure SetCORREO2Value(const aValue: String); virtual; + function GetPAGINAWEBValue: String; virtual; + procedure SetPAGINAWEBValue(const aValue: String); virtual; + function GetPERSONACONTACTOValue: String; virtual; + procedure SetPERSONACONTACTOValue(const aValue: String); virtual; + + { Properties } + property CODIGOEMPRESA: Integer read GetCODIGOEMPRESAValue write SetCODIGOEMPRESAValue; + property CODIGO: Integer read GetCODIGOValue write SetCODIGOValue; + property FECHAALTA: DateTime read GetFECHAALTAValue write SetFECHAALTAValue; + property USUARIO: String read GetUSUARIOValue write SetUSUARIOValue; + property NIFCIF: String read GetNIFCIFValue write SetNIFCIFValue; + property NOMBRE: String read GetNOMBREValue write SetNOMBREValue; + property NOTAS: String read GetNOTASValue write SetNOTASValue; + property CALLE: String read GetCALLEValue write SetCALLEValue; + property PROVINCIA: String read GetPROVINCIAValue write SetPROVINCIAValue; + property CODIGOPOSTAL: String read GetCODIGOPOSTALValue write SetCODIGOPOSTALValue; + property POBLACION: String read GetPOBLACIONValue write SetPOBLACIONValue; + property TELEFONO1: String read GetTELEFONO1Value write SetTELEFONO1Value; + property TELEFONO2: String read GetTELEFONO2Value write SetTELEFONO2Value; + property MOVIL: String read GetMOVILValue write SetMOVILValue; + property FAX: String read GetFAXValue write SetFAXValue; + property CORREO1: String read GetCORREO1Value write SetCORREO1Value; + property CORREO2: String read GetCORREO2Value write SetCORREO2Value; + property PAGINAWEB: String read GetPAGINAWEBValue write SetPAGINAWEBValue; + property PERSONACONTACTO: String read GetPERSONACONTACTOValue write SetPERSONACONTACTOValue; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + +implementation + +uses Variants; + +{ TCITASDataTableRules } +constructor TCITASDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TCITASDataTableRules.Destroy; +begin + inherited; +end; + +function TCITASDataTableRules.GetIDValue: Integer; +begin + result := DataTable.Fields[idx_CITASID].AsInteger; +end; + +procedure TCITASDataTableRules.SetIDValue(const aValue: Integer); +begin + DataTable.Fields[idx_CITASID].AsInteger := aValue; +end; + +function TCITASDataTableRules.GetPARENTIDValue: Integer; +begin + result := DataTable.Fields[idx_CITASPARENTID].AsInteger; +end; + +procedure TCITASDataTableRules.SetPARENTIDValue(const aValue: Integer); +begin + DataTable.Fields[idx_CITASPARENTID].AsInteger := aValue; +end; + +function TCITASDataTableRules.GetSTARTValue: DateTime; +begin + result := DataTable.Fields[idx_CITASSTART].AsDateTime; +end; + +procedure TCITASDataTableRules.SetSTARTValue(const aValue: DateTime); +begin + DataTable.Fields[idx_CITASSTART].AsDateTime := aValue; +end; + +function TCITASDataTableRules.GetTIPOValue: Integer; +begin + result := DataTable.Fields[idx_CITASTIPO].AsInteger; +end; + +procedure TCITASDataTableRules.SetTIPOValue(const aValue: Integer); +begin + DataTable.Fields[idx_CITASTIPO].AsInteger := aValue; +end; + +function TCITASDataTableRules.GetFINISHValue: DateTime; +begin + result := DataTable.Fields[idx_CITASFINISH].AsDateTime; +end; + +procedure TCITASDataTableRules.SetFINISHValue(const aValue: DateTime); +begin + DataTable.Fields[idx_CITASFINISH].AsDateTime := aValue; +end; + +function TCITASDataTableRules.GetOPTIONSValue: Integer; +begin + result := DataTable.Fields[idx_CITASOPTIONS].AsInteger; +end; + +procedure TCITASDataTableRules.SetOPTIONSValue(const aValue: Integer); +begin + DataTable.Fields[idx_CITASOPTIONS].AsInteger := aValue; +end; + +function TCITASDataTableRules.GetCAPTIONValue: String; +begin + result := DataTable.Fields[idx_CITASCAPTION].AsString; +end; + +procedure TCITASDataTableRules.SetCAPTIONValue(const aValue: String); +begin + DataTable.Fields[idx_CITASCAPTION].AsString := aValue; +end; + +function TCITASDataTableRules.GetMENSAJEValue: String; +begin + result := DataTable.Fields[idx_CITASMENSAJE].AsString; +end; + +procedure TCITASDataTableRules.SetMENSAJEValue(const aValue: String); +begin + DataTable.Fields[idx_CITASMENSAJE].AsString := aValue; +end; + +function TCITASDataTableRules.GetRECURRENCEINDEXValue: Integer; +begin + result := DataTable.Fields[idx_CITASRECURRENCEINDEX].AsInteger; +end; + +procedure TCITASDataTableRules.SetRECURRENCEINDEXValue(const aValue: Integer); +begin + DataTable.Fields[idx_CITASRECURRENCEINDEX].AsInteger := aValue; +end; + +function TCITASDataTableRules.GetRESOURCEIDValue: Integer; +begin + result := DataTable.Fields[idx_CITASRESOURCEID].AsInteger; +end; + +procedure TCITASDataTableRules.SetRESOURCEIDValue(const aValue: Integer); +begin + DataTable.Fields[idx_CITASRESOURCEID].AsInteger := aValue; +end; + +function TCITASDataTableRules.GetLOCATIONValue: String; +begin + result := DataTable.Fields[idx_CITASLOCATION].AsString; +end; + +procedure TCITASDataTableRules.SetLOCATIONValue(const aValue: String); +begin + DataTable.Fields[idx_CITASLOCATION].AsString := aValue; +end; + +function TCITASDataTableRules.GetREMINDERValue: Integer; +begin + result := DataTable.Fields[idx_CITASREMINDER].AsInteger; +end; + +procedure TCITASDataTableRules.SetREMINDERValue(const aValue: Integer); +begin + DataTable.Fields[idx_CITASREMINDER].AsInteger := aValue; +end; + +function TCITASDataTableRules.GetSTATEValue: Integer; +begin + result := DataTable.Fields[idx_CITASSTATE].AsInteger; +end; + +procedure TCITASDataTableRules.SetSTATEValue(const aValue: Integer); +begin + DataTable.Fields[idx_CITASSTATE].AsInteger := aValue; +end; + +function TCITASDataTableRules.GetLABELCOLORValue: Integer; +begin + result := DataTable.Fields[idx_CITASLABELCOLOR].AsInteger; +end; + +procedure TCITASDataTableRules.SetLABELCOLORValue(const aValue: Integer); +begin + DataTable.Fields[idx_CITASLABELCOLOR].AsInteger := aValue; +end; + +function TCITASDataTableRules.GetCODIGOCONTRATOValue: String; +begin + result := DataTable.Fields[idx_CITASCODIGOCONTRATO].AsString; +end; + +procedure TCITASDataTableRules.SetCODIGOCONTRATOValue(const aValue: String); +begin + DataTable.Fields[idx_CITASCODIGOCONTRATO].AsString := aValue; +end; + +function TCITASDataTableRules.GetTIPOTAREAValue: String; +begin + result := DataTable.Fields[idx_CITASTIPOTAREA].AsString; +end; + +procedure TCITASDataTableRules.SetTIPOTAREAValue(const aValue: String); +begin + DataTable.Fields[idx_CITASTIPOTAREA].AsString := aValue; +end; + +function TCITASDataTableRules.GetNOMBRECLIENTEValue: String; +begin + result := DataTable.Fields[idx_CITASNOMBRECLIENTE].AsString; +end; + +procedure TCITASDataTableRules.SetNOMBRECLIENTEValue(const aValue: String); +begin + DataTable.Fields[idx_CITASNOMBRECLIENTE].AsString := aValue; +end; + +function TCITASDataTableRules.GetPARTIDAValue: String; +begin + result := DataTable.Fields[idx_CITASPARTIDA].AsString; +end; + +procedure TCITASDataTableRules.SetPARTIDAValue(const aValue: String); +begin + DataTable.Fields[idx_CITASPARTIDA].AsString := aValue; +end; + +function TCITASDataTableRules.GetCOMPLETADAValue: DateTime; +begin + result := DataTable.Fields[idx_CITASCOMPLETADA].AsDateTime; +end; + +procedure TCITASDataTableRules.SetCOMPLETADAValue(const aValue: DateTime); +begin + DataTable.Fields[idx_CITASCOMPLETADA].AsDateTime := aValue; +end; + +function TCITASDataTableRules.GetNOMBREPROVEEDORValue: String; +begin + result := DataTable.Fields[idx_CITASNOMBREPROVEEDOR].AsString; +end; + +procedure TCITASDataTableRules.SetNOMBREPROVEEDORValue(const aValue: String); +begin + DataTable.Fields[idx_CITASNOMBREPROVEEDOR].AsString := aValue; +end; + +function TCITASDataTableRules.GetCODIGOCOLUMNAValue: Integer; +begin + result := DataTable.Fields[idx_CITASCODIGOCOLUMNA].AsInteger; +end; + +procedure TCITASDataTableRules.SetCODIGOCOLUMNAValue(const aValue: Integer); +begin + DataTable.Fields[idx_CITASCODIGOCOLUMNA].AsInteger := aValue; +end; + +function TCITASDataTableRules.GetCODIGOFILAValue: Integer; +begin + result := DataTable.Fields[idx_CITASCODIGOFILA].AsInteger; +end; + +procedure TCITASDataTableRules.SetCODIGOFILAValue(const aValue: Integer); +begin + DataTable.Fields[idx_CITASCODIGOFILA].AsInteger := aValue; +end; + +function TCITASDataTableRules.GetEMPRESAValue: Integer; +begin + result := DataTable.Fields[idx_CITASEMPRESA].AsInteger; +end; + +procedure TCITASDataTableRules.SetEMPRESAValue(const aValue: Integer); +begin + DataTable.Fields[idx_CITASEMPRESA].AsInteger := aValue; +end; + + +{ TVENDEDORESDataTableRules } +constructor TVENDEDORESDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TVENDEDORESDataTableRules.Destroy; +begin + inherited; +end; + +function TVENDEDORESDataTableRules.GetCODIGOEMPRESAValue: Integer; +begin + result := DataTable.Fields[idx_VENDEDORESCODIGOEMPRESA].AsInteger; +end; + +procedure TVENDEDORESDataTableRules.SetCODIGOEMPRESAValue(const aValue: Integer); +begin + DataTable.Fields[idx_VENDEDORESCODIGOEMPRESA].AsInteger := aValue; +end; + +function TVENDEDORESDataTableRules.GetCODIGOValue: Integer; +begin + result := DataTable.Fields[idx_VENDEDORESCODIGO].AsInteger; +end; + +procedure TVENDEDORESDataTableRules.SetCODIGOValue(const aValue: Integer); +begin + DataTable.Fields[idx_VENDEDORESCODIGO].AsInteger := aValue; +end; + +function TVENDEDORESDataTableRules.GetFECHAALTAValue: DateTime; +begin + result := DataTable.Fields[idx_VENDEDORESFECHAALTA].AsDateTime; +end; + +procedure TVENDEDORESDataTableRules.SetFECHAALTAValue(const aValue: DateTime); +begin + DataTable.Fields[idx_VENDEDORESFECHAALTA].AsDateTime := aValue; +end; + +function TVENDEDORESDataTableRules.GetUSUARIOValue: String; +begin + result := DataTable.Fields[idx_VENDEDORESUSUARIO].AsString; +end; + +procedure TVENDEDORESDataTableRules.SetUSUARIOValue(const aValue: String); +begin + DataTable.Fields[idx_VENDEDORESUSUARIO].AsString := aValue; +end; + +function TVENDEDORESDataTableRules.GetNIFCIFValue: String; +begin + result := DataTable.Fields[idx_VENDEDORESNIFCIF].AsString; +end; + +procedure TVENDEDORESDataTableRules.SetNIFCIFValue(const aValue: String); +begin + DataTable.Fields[idx_VENDEDORESNIFCIF].AsString := aValue; +end; + +function TVENDEDORESDataTableRules.GetNOMBREValue: String; +begin + result := DataTable.Fields[idx_VENDEDORESNOMBRE].AsString; +end; + +procedure TVENDEDORESDataTableRules.SetNOMBREValue(const aValue: String); +begin + DataTable.Fields[idx_VENDEDORESNOMBRE].AsString := aValue; +end; + +function TVENDEDORESDataTableRules.GetNOTASValue: String; +begin + result := DataTable.Fields[idx_VENDEDORESNOTAS].AsString; +end; + +procedure TVENDEDORESDataTableRules.SetNOTASValue(const aValue: String); +begin + DataTable.Fields[idx_VENDEDORESNOTAS].AsString := aValue; +end; + +function TVENDEDORESDataTableRules.GetCALLEValue: String; +begin + result := DataTable.Fields[idx_VENDEDORESCALLE].AsString; +end; + +procedure TVENDEDORESDataTableRules.SetCALLEValue(const aValue: String); +begin + DataTable.Fields[idx_VENDEDORESCALLE].AsString := aValue; +end; + +function TVENDEDORESDataTableRules.GetPROVINCIAValue: String; +begin + result := DataTable.Fields[idx_VENDEDORESPROVINCIA].AsString; +end; + +procedure TVENDEDORESDataTableRules.SetPROVINCIAValue(const aValue: String); +begin + DataTable.Fields[idx_VENDEDORESPROVINCIA].AsString := aValue; +end; + +function TVENDEDORESDataTableRules.GetCODIGOPOSTALValue: String; +begin + result := DataTable.Fields[idx_VENDEDORESCODIGOPOSTAL].AsString; +end; + +procedure TVENDEDORESDataTableRules.SetCODIGOPOSTALValue(const aValue: String); +begin + DataTable.Fields[idx_VENDEDORESCODIGOPOSTAL].AsString := aValue; +end; + +function TVENDEDORESDataTableRules.GetPOBLACIONValue: String; +begin + result := DataTable.Fields[idx_VENDEDORESPOBLACION].AsString; +end; + +procedure TVENDEDORESDataTableRules.SetPOBLACIONValue(const aValue: String); +begin + DataTable.Fields[idx_VENDEDORESPOBLACION].AsString := aValue; +end; + +function TVENDEDORESDataTableRules.GetTELEFONO1Value: String; +begin + result := DataTable.Fields[idx_VENDEDORESTELEFONO1].AsString; +end; + +procedure TVENDEDORESDataTableRules.SetTELEFONO1Value(const aValue: String); +begin + DataTable.Fields[idx_VENDEDORESTELEFONO1].AsString := aValue; +end; + +function TVENDEDORESDataTableRules.GetTELEFONO2Value: String; +begin + result := DataTable.Fields[idx_VENDEDORESTELEFONO2].AsString; +end; + +procedure TVENDEDORESDataTableRules.SetTELEFONO2Value(const aValue: String); +begin + DataTable.Fields[idx_VENDEDORESTELEFONO2].AsString := aValue; +end; + +function TVENDEDORESDataTableRules.GetMOVILValue: String; +begin + result := DataTable.Fields[idx_VENDEDORESMOVIL].AsString; +end; + +procedure TVENDEDORESDataTableRules.SetMOVILValue(const aValue: String); +begin + DataTable.Fields[idx_VENDEDORESMOVIL].AsString := aValue; +end; + +function TVENDEDORESDataTableRules.GetFAXValue: String; +begin + result := DataTable.Fields[idx_VENDEDORESFAX].AsString; +end; + +procedure TVENDEDORESDataTableRules.SetFAXValue(const aValue: String); +begin + DataTable.Fields[idx_VENDEDORESFAX].AsString := aValue; +end; + +function TVENDEDORESDataTableRules.GetCORREO1Value: String; +begin + result := DataTable.Fields[idx_VENDEDORESCORREO1].AsString; +end; + +procedure TVENDEDORESDataTableRules.SetCORREO1Value(const aValue: String); +begin + DataTable.Fields[idx_VENDEDORESCORREO1].AsString := aValue; +end; + +function TVENDEDORESDataTableRules.GetCORREO2Value: String; +begin + result := DataTable.Fields[idx_VENDEDORESCORREO2].AsString; +end; + +procedure TVENDEDORESDataTableRules.SetCORREO2Value(const aValue: String); +begin + DataTable.Fields[idx_VENDEDORESCORREO2].AsString := aValue; +end; + +function TVENDEDORESDataTableRules.GetPAGINAWEBValue: String; +begin + result := DataTable.Fields[idx_VENDEDORESPAGINAWEB].AsString; +end; + +procedure TVENDEDORESDataTableRules.SetPAGINAWEBValue(const aValue: String); +begin + DataTable.Fields[idx_VENDEDORESPAGINAWEB].AsString := aValue; +end; + +function TVENDEDORESDataTableRules.GetPERSONACONTACTOValue: String; +begin + result := DataTable.Fields[idx_VENDEDORESPERSONACONTACTO].AsString; +end; + +procedure TVENDEDORESDataTableRules.SetPERSONACONTACTOValue(const aValue: String); +begin + DataTable.Fields[idx_VENDEDORESPERSONACONTACTO].AsString := aValue; +end; + + +initialization + RegisterDataTableRules(RID_CITAS, TCITASDataTableRules); + RegisterDataTableRules(RID_VENDEDORES, TVENDEDORESDataTableRules); + +end. diff --git a/Modulos/Calendarios/Reglas/schCitasServer_Intf.pas b/Modulos/Calendarios/Reglas/schCitasServer_Intf.pas new file mode 100644 index 0000000..f325294 --- /dev/null +++ b/Modulos/Calendarios/Reglas/schCitasServer_Intf.pas @@ -0,0 +1,1017 @@ +unit schCitasServer_Intf; + +interface + +uses + Classes, DB, SysUtils, uROClasses, uDADataTable, uDABusinessProcessor, schCitasClient_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_CITASDelta = '{5090F644-9CFB-4232-9EEE-7F7E7168EBB7}'; + RID_VENDEDORESDelta = '{DD67A3C2-3DE7-439A-B460-DC5BD2BB3032}'; + +type + { ICITASDelta } + ICITASDelta = interface(ICITAS) + ['{5090F644-9CFB-4232-9EEE-7F7E7168EBB7}'] + { Property getters and setters } + function GetOldIDValue : Integer; + function GetOldPARENTIDValue : Integer; + function GetOldSTARTValue : DateTime; + function GetOldTIPOValue : Integer; + function GetOldFINISHValue : DateTime; + function GetOldOPTIONSValue : Integer; + function GetOldCAPTIONValue : String; + function GetOldMENSAJEValue : String; + function GetOldRECURRENCEINDEXValue : Integer; + function GetOldRESOURCEIDValue : Integer; + function GetOldLOCATIONValue : String; + function GetOldREMINDERValue : Integer; + function GetOldSTATEValue : Integer; + function GetOldLABELCOLORValue : Integer; + function GetOldCODIGOCONTRATOValue : String; + function GetOldTIPOTAREAValue : String; + function GetOldNOMBRECLIENTEValue : String; + function GetOldPARTIDAValue : String; + function GetOldCOMPLETADAValue : DateTime; + function GetOldNOMBREPROVEEDORValue : String; + function GetOldCODIGOCOLUMNAValue : Integer; + function GetOldCODIGOFILAValue : Integer; + function GetOldEMPRESAValue : Integer; + + { Properties } + property OldID : Integer read GetOldIDValue; + property OldPARENTID : Integer read GetOldPARENTIDValue; + property OldSTART : DateTime read GetOldSTARTValue; + property OldTIPO : Integer read GetOldTIPOValue; + property OldFINISH : DateTime read GetOldFINISHValue; + property OldOPTIONS : Integer read GetOldOPTIONSValue; + property OldCAPTION : String read GetOldCAPTIONValue; + property OldMENSAJE : String read GetOldMENSAJEValue; + property OldRECURRENCEINDEX : Integer read GetOldRECURRENCEINDEXValue; + property OldRESOURCEID : Integer read GetOldRESOURCEIDValue; + property OldLOCATION : String read GetOldLOCATIONValue; + property OldREMINDER : Integer read GetOldREMINDERValue; + property OldSTATE : Integer read GetOldSTATEValue; + property OldLABELCOLOR : Integer read GetOldLABELCOLORValue; + property OldCODIGOCONTRATO : String read GetOldCODIGOCONTRATOValue; + property OldTIPOTAREA : String read GetOldTIPOTAREAValue; + property OldNOMBRECLIENTE : String read GetOldNOMBRECLIENTEValue; + property OldPARTIDA : String read GetOldPARTIDAValue; + property OldCOMPLETADA : DateTime read GetOldCOMPLETADAValue; + property OldNOMBREPROVEEDOR : String read GetOldNOMBREPROVEEDORValue; + property OldCODIGOCOLUMNA : Integer read GetOldCODIGOCOLUMNAValue; + property OldCODIGOFILA : Integer read GetOldCODIGOFILAValue; + property OldEMPRESA : Integer read GetOldEMPRESAValue; + end; + + { TCITASBusinessProcessorRules } + TCITASBusinessProcessorRules = class(TDABusinessProcessorRules, ICITAS, ICITASDelta) + private + protected + { Property getters and setters } + function GetIDValue: Integer; virtual; + function GetOldIDValue: Integer; virtual; + procedure SetIDValue(const aValue: Integer); virtual; + function GetPARENTIDValue: Integer; virtual; + function GetOldPARENTIDValue: Integer; virtual; + procedure SetPARENTIDValue(const aValue: Integer); virtual; + function GetSTARTValue: DateTime; virtual; + function GetOldSTARTValue: DateTime; virtual; + procedure SetSTARTValue(const aValue: DateTime); virtual; + function GetTIPOValue: Integer; virtual; + function GetOldTIPOValue: Integer; virtual; + procedure SetTIPOValue(const aValue: Integer); virtual; + function GetFINISHValue: DateTime; virtual; + function GetOldFINISHValue: DateTime; virtual; + procedure SetFINISHValue(const aValue: DateTime); virtual; + function GetOPTIONSValue: Integer; virtual; + function GetOldOPTIONSValue: Integer; virtual; + procedure SetOPTIONSValue(const aValue: Integer); virtual; + function GetCAPTIONValue: String; virtual; + function GetOldCAPTIONValue: String; virtual; + procedure SetCAPTIONValue(const aValue: String); virtual; + function GetMENSAJEValue: String; virtual; + function GetOldMENSAJEValue: String; virtual; + procedure SetMENSAJEValue(const aValue: String); virtual; + function GetRECURRENCEINDEXValue: Integer; virtual; + function GetOldRECURRENCEINDEXValue: Integer; virtual; + procedure SetRECURRENCEINDEXValue(const aValue: Integer); virtual; + function GetRESOURCEIDValue: Integer; virtual; + function GetOldRESOURCEIDValue: Integer; virtual; + procedure SetRESOURCEIDValue(const aValue: Integer); virtual; + function GetLOCATIONValue: String; virtual; + function GetOldLOCATIONValue: String; virtual; + procedure SetLOCATIONValue(const aValue: String); virtual; + function GetREMINDERValue: Integer; virtual; + function GetOldREMINDERValue: Integer; virtual; + procedure SetREMINDERValue(const aValue: Integer); virtual; + function GetSTATEValue: Integer; virtual; + function GetOldSTATEValue: Integer; virtual; + procedure SetSTATEValue(const aValue: Integer); virtual; + function GetLABELCOLORValue: Integer; virtual; + function GetOldLABELCOLORValue: Integer; virtual; + procedure SetLABELCOLORValue(const aValue: Integer); virtual; + function GetCODIGOCONTRATOValue: String; virtual; + function GetOldCODIGOCONTRATOValue: String; virtual; + procedure SetCODIGOCONTRATOValue(const aValue: String); virtual; + function GetTIPOTAREAValue: String; virtual; + function GetOldTIPOTAREAValue: String; virtual; + procedure SetTIPOTAREAValue(const aValue: String); virtual; + function GetNOMBRECLIENTEValue: String; virtual; + function GetOldNOMBRECLIENTEValue: String; virtual; + procedure SetNOMBRECLIENTEValue(const aValue: String); virtual; + function GetPARTIDAValue: String; virtual; + function GetOldPARTIDAValue: String; virtual; + procedure SetPARTIDAValue(const aValue: String); virtual; + function GetCOMPLETADAValue: DateTime; virtual; + function GetOldCOMPLETADAValue: DateTime; virtual; + procedure SetCOMPLETADAValue(const aValue: DateTime); virtual; + function GetNOMBREPROVEEDORValue: String; virtual; + function GetOldNOMBREPROVEEDORValue: String; virtual; + procedure SetNOMBREPROVEEDORValue(const aValue: String); virtual; + function GetCODIGOCOLUMNAValue: Integer; virtual; + function GetOldCODIGOCOLUMNAValue: Integer; virtual; + procedure SetCODIGOCOLUMNAValue(const aValue: Integer); virtual; + function GetCODIGOFILAValue: Integer; virtual; + function GetOldCODIGOFILAValue: Integer; virtual; + procedure SetCODIGOFILAValue(const aValue: Integer); virtual; + function GetEMPRESAValue: Integer; virtual; + function GetOldEMPRESAValue: Integer; virtual; + procedure SetEMPRESAValue(const aValue: Integer); virtual; + + { Properties } + property ID : Integer read GetIDValue write SetIDValue; + property OldID : Integer read GetOldIDValue; + property PARENTID : Integer read GetPARENTIDValue write SetPARENTIDValue; + property OldPARENTID : Integer read GetOldPARENTIDValue; + property START : DateTime read GetSTARTValue write SetSTARTValue; + property OldSTART : DateTime read GetOldSTARTValue; + property TIPO : Integer read GetTIPOValue write SetTIPOValue; + property OldTIPO : Integer read GetOldTIPOValue; + property FINISH : DateTime read GetFINISHValue write SetFINISHValue; + property OldFINISH : DateTime read GetOldFINISHValue; + property OPTIONS : Integer read GetOPTIONSValue write SetOPTIONSValue; + property OldOPTIONS : Integer read GetOldOPTIONSValue; + property CAPTION : String read GetCAPTIONValue write SetCAPTIONValue; + property OldCAPTION : String read GetOldCAPTIONValue; + property MENSAJE : String read GetMENSAJEValue write SetMENSAJEValue; + property OldMENSAJE : String read GetOldMENSAJEValue; + property RECURRENCEINDEX : Integer read GetRECURRENCEINDEXValue write SetRECURRENCEINDEXValue; + property OldRECURRENCEINDEX : Integer read GetOldRECURRENCEINDEXValue; + property RESOURCEID : Integer read GetRESOURCEIDValue write SetRESOURCEIDValue; + property OldRESOURCEID : Integer read GetOldRESOURCEIDValue; + property LOCATION : String read GetLOCATIONValue write SetLOCATIONValue; + property OldLOCATION : String read GetOldLOCATIONValue; + property REMINDER : Integer read GetREMINDERValue write SetREMINDERValue; + property OldREMINDER : Integer read GetOldREMINDERValue; + property STATE : Integer read GetSTATEValue write SetSTATEValue; + property OldSTATE : Integer read GetOldSTATEValue; + property LABELCOLOR : Integer read GetLABELCOLORValue write SetLABELCOLORValue; + property OldLABELCOLOR : Integer read GetOldLABELCOLORValue; + property CODIGOCONTRATO : String read GetCODIGOCONTRATOValue write SetCODIGOCONTRATOValue; + property OldCODIGOCONTRATO : String read GetOldCODIGOCONTRATOValue; + property TIPOTAREA : String read GetTIPOTAREAValue write SetTIPOTAREAValue; + property OldTIPOTAREA : String read GetOldTIPOTAREAValue; + property NOMBRECLIENTE : String read GetNOMBRECLIENTEValue write SetNOMBRECLIENTEValue; + property OldNOMBRECLIENTE : String read GetOldNOMBRECLIENTEValue; + property PARTIDA : String read GetPARTIDAValue write SetPARTIDAValue; + property OldPARTIDA : String read GetOldPARTIDAValue; + property COMPLETADA : DateTime read GetCOMPLETADAValue write SetCOMPLETADAValue; + property OldCOMPLETADA : DateTime read GetOldCOMPLETADAValue; + property NOMBREPROVEEDOR : String read GetNOMBREPROVEEDORValue write SetNOMBREPROVEEDORValue; + property OldNOMBREPROVEEDOR : String read GetOldNOMBREPROVEEDORValue; + property CODIGOCOLUMNA : Integer read GetCODIGOCOLUMNAValue write SetCODIGOCOLUMNAValue; + property OldCODIGOCOLUMNA : Integer read GetOldCODIGOCOLUMNAValue; + property CODIGOFILA : Integer read GetCODIGOFILAValue write SetCODIGOFILAValue; + property OldCODIGOFILA : Integer read GetOldCODIGOFILAValue; + property EMPRESA : Integer read GetEMPRESAValue write SetEMPRESAValue; + property OldEMPRESA : Integer read GetOldEMPRESAValue; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + + { IVENDEDORESDelta } + IVENDEDORESDelta = interface(IVENDEDORES) + ['{DD67A3C2-3DE7-439A-B460-DC5BD2BB3032}'] + { Property getters and setters } + function GetOldCODIGOEMPRESAValue : Integer; + function GetOldCODIGOValue : Integer; + function GetOldFECHAALTAValue : DateTime; + function GetOldUSUARIOValue : String; + function GetOldNIFCIFValue : String; + function GetOldNOMBREValue : String; + function GetOldNOTASValue : String; + function GetOldCALLEValue : String; + function GetOldPROVINCIAValue : String; + function GetOldCODIGOPOSTALValue : String; + function GetOldPOBLACIONValue : String; + function GetOldTELEFONO1Value : String; + function GetOldTELEFONO2Value : String; + function GetOldMOVILValue : String; + function GetOldFAXValue : String; + function GetOldCORREO1Value : String; + function GetOldCORREO2Value : String; + function GetOldPAGINAWEBValue : String; + function GetOldPERSONACONTACTOValue : String; + + { Properties } + property OldCODIGOEMPRESA : Integer read GetOldCODIGOEMPRESAValue; + property OldCODIGO : Integer read GetOldCODIGOValue; + property OldFECHAALTA : DateTime read GetOldFECHAALTAValue; + property OldUSUARIO : String read GetOldUSUARIOValue; + property OldNIFCIF : String read GetOldNIFCIFValue; + property OldNOMBRE : String read GetOldNOMBREValue; + property OldNOTAS : String read GetOldNOTASValue; + property OldCALLE : String read GetOldCALLEValue; + property OldPROVINCIA : String read GetOldPROVINCIAValue; + property OldCODIGOPOSTAL : String read GetOldCODIGOPOSTALValue; + property OldPOBLACION : String read GetOldPOBLACIONValue; + property OldTELEFONO1 : String read GetOldTELEFONO1Value; + property OldTELEFONO2 : String read GetOldTELEFONO2Value; + property OldMOVIL : String read GetOldMOVILValue; + property OldFAX : String read GetOldFAXValue; + property OldCORREO1 : String read GetOldCORREO1Value; + property OldCORREO2 : String read GetOldCORREO2Value; + property OldPAGINAWEB : String read GetOldPAGINAWEBValue; + property OldPERSONACONTACTO : String read GetOldPERSONACONTACTOValue; + end; + + { TVENDEDORESBusinessProcessorRules } + TVENDEDORESBusinessProcessorRules = class(TDABusinessProcessorRules, IVENDEDORES, IVENDEDORESDelta) + private + protected + { Property getters and setters } + function GetCODIGOEMPRESAValue: Integer; virtual; + function GetOldCODIGOEMPRESAValue: Integer; virtual; + procedure SetCODIGOEMPRESAValue(const aValue: Integer); virtual; + function GetCODIGOValue: Integer; virtual; + function GetOldCODIGOValue: Integer; virtual; + procedure SetCODIGOValue(const aValue: Integer); virtual; + function GetFECHAALTAValue: DateTime; virtual; + function GetOldFECHAALTAValue: DateTime; virtual; + procedure SetFECHAALTAValue(const aValue: DateTime); virtual; + function GetUSUARIOValue: String; virtual; + function GetOldUSUARIOValue: String; virtual; + procedure SetUSUARIOValue(const aValue: String); virtual; + function GetNIFCIFValue: String; virtual; + function GetOldNIFCIFValue: String; virtual; + procedure SetNIFCIFValue(const aValue: String); virtual; + function GetNOMBREValue: String; virtual; + function GetOldNOMBREValue: String; virtual; + procedure SetNOMBREValue(const aValue: String); virtual; + function GetNOTASValue: String; virtual; + function GetOldNOTASValue: String; virtual; + procedure SetNOTASValue(const aValue: String); virtual; + function GetCALLEValue: String; virtual; + function GetOldCALLEValue: String; virtual; + procedure SetCALLEValue(const aValue: String); virtual; + function GetPROVINCIAValue: String; virtual; + function GetOldPROVINCIAValue: String; virtual; + procedure SetPROVINCIAValue(const aValue: String); virtual; + function GetCODIGOPOSTALValue: String; virtual; + function GetOldCODIGOPOSTALValue: String; virtual; + procedure SetCODIGOPOSTALValue(const aValue: String); virtual; + function GetPOBLACIONValue: String; virtual; + function GetOldPOBLACIONValue: String; virtual; + procedure SetPOBLACIONValue(const aValue: String); virtual; + function GetTELEFONO1Value: String; virtual; + function GetOldTELEFONO1Value: String; virtual; + procedure SetTELEFONO1Value(const aValue: String); virtual; + function GetTELEFONO2Value: String; virtual; + function GetOldTELEFONO2Value: String; virtual; + procedure SetTELEFONO2Value(const aValue: String); virtual; + function GetMOVILValue: String; virtual; + function GetOldMOVILValue: String; virtual; + procedure SetMOVILValue(const aValue: String); virtual; + function GetFAXValue: String; virtual; + function GetOldFAXValue: String; virtual; + procedure SetFAXValue(const aValue: String); virtual; + function GetCORREO1Value: String; virtual; + function GetOldCORREO1Value: String; virtual; + procedure SetCORREO1Value(const aValue: String); virtual; + function GetCORREO2Value: String; virtual; + function GetOldCORREO2Value: String; virtual; + procedure SetCORREO2Value(const aValue: String); virtual; + function GetPAGINAWEBValue: String; virtual; + function GetOldPAGINAWEBValue: String; virtual; + procedure SetPAGINAWEBValue(const aValue: String); virtual; + function GetPERSONACONTACTOValue: String; virtual; + function GetOldPERSONACONTACTOValue: String; virtual; + procedure SetPERSONACONTACTOValue(const aValue: String); virtual; + + { Properties } + property CODIGOEMPRESA : Integer read GetCODIGOEMPRESAValue write SetCODIGOEMPRESAValue; + property OldCODIGOEMPRESA : Integer read GetOldCODIGOEMPRESAValue; + property CODIGO : Integer read GetCODIGOValue write SetCODIGOValue; + property OldCODIGO : Integer read GetOldCODIGOValue; + property FECHAALTA : DateTime read GetFECHAALTAValue write SetFECHAALTAValue; + property OldFECHAALTA : DateTime read GetOldFECHAALTAValue; + property USUARIO : String read GetUSUARIOValue write SetUSUARIOValue; + property OldUSUARIO : String read GetOldUSUARIOValue; + property NIFCIF : String read GetNIFCIFValue write SetNIFCIFValue; + property OldNIFCIF : String read GetOldNIFCIFValue; + property NOMBRE : String read GetNOMBREValue write SetNOMBREValue; + property OldNOMBRE : String read GetOldNOMBREValue; + property NOTAS : String read GetNOTASValue write SetNOTASValue; + property OldNOTAS : String read GetOldNOTASValue; + property CALLE : String read GetCALLEValue write SetCALLEValue; + property OldCALLE : String read GetOldCALLEValue; + property PROVINCIA : String read GetPROVINCIAValue write SetPROVINCIAValue; + property OldPROVINCIA : String read GetOldPROVINCIAValue; + property CODIGOPOSTAL : String read GetCODIGOPOSTALValue write SetCODIGOPOSTALValue; + property OldCODIGOPOSTAL : String read GetOldCODIGOPOSTALValue; + property POBLACION : String read GetPOBLACIONValue write SetPOBLACIONValue; + property OldPOBLACION : String read GetOldPOBLACIONValue; + property TELEFONO1 : String read GetTELEFONO1Value write SetTELEFONO1Value; + property OldTELEFONO1 : String read GetOldTELEFONO1Value; + property TELEFONO2 : String read GetTELEFONO2Value write SetTELEFONO2Value; + property OldTELEFONO2 : String read GetOldTELEFONO2Value; + property MOVIL : String read GetMOVILValue write SetMOVILValue; + property OldMOVIL : String read GetOldMOVILValue; + property FAX : String read GetFAXValue write SetFAXValue; + property OldFAX : String read GetOldFAXValue; + property CORREO1 : String read GetCORREO1Value write SetCORREO1Value; + property OldCORREO1 : String read GetOldCORREO1Value; + property CORREO2 : String read GetCORREO2Value write SetCORREO2Value; + property OldCORREO2 : String read GetOldCORREO2Value; + property PAGINAWEB : String read GetPAGINAWEBValue write SetPAGINAWEBValue; + property OldPAGINAWEB : String read GetOldPAGINAWEBValue; + property PERSONACONTACTO : String read GetPERSONACONTACTOValue write SetPERSONACONTACTOValue; + property OldPERSONACONTACTO : String read GetOldPERSONACONTACTOValue; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + +implementation + +uses + Variants, uROBinaryHelpers; + +{ TCITASBusinessProcessorRules } +constructor TCITASBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TCITASBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TCITASBusinessProcessorRules.GetIDValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_CITASID]; +end; + +function TCITASBusinessProcessorRules.GetOldIDValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_CITASID]; +end; + +procedure TCITASBusinessProcessorRules.SetIDValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_CITASID] := aValue; +end; + +function TCITASBusinessProcessorRules.GetPARENTIDValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_CITASPARENTID]; +end; + +function TCITASBusinessProcessorRules.GetOldPARENTIDValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_CITASPARENTID]; +end; + +procedure TCITASBusinessProcessorRules.SetPARENTIDValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_CITASPARENTID] := aValue; +end; + +function TCITASBusinessProcessorRules.GetSTARTValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_CITASSTART]; +end; + +function TCITASBusinessProcessorRules.GetOldSTARTValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_CITASSTART]; +end; + +procedure TCITASBusinessProcessorRules.SetSTARTValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_CITASSTART] := aValue; +end; + +function TCITASBusinessProcessorRules.GetTIPOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_CITASTIPO]; +end; + +function TCITASBusinessProcessorRules.GetOldTIPOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_CITASTIPO]; +end; + +procedure TCITASBusinessProcessorRules.SetTIPOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_CITASTIPO] := aValue; +end; + +function TCITASBusinessProcessorRules.GetFINISHValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_CITASFINISH]; +end; + +function TCITASBusinessProcessorRules.GetOldFINISHValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_CITASFINISH]; +end; + +procedure TCITASBusinessProcessorRules.SetFINISHValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_CITASFINISH] := aValue; +end; + +function TCITASBusinessProcessorRules.GetOPTIONSValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_CITASOPTIONS]; +end; + +function TCITASBusinessProcessorRules.GetOldOPTIONSValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_CITASOPTIONS]; +end; + +procedure TCITASBusinessProcessorRules.SetOPTIONSValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_CITASOPTIONS] := aValue; +end; + +function TCITASBusinessProcessorRules.GetCAPTIONValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_CITASCAPTION]; +end; + +function TCITASBusinessProcessorRules.GetOldCAPTIONValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_CITASCAPTION]; +end; + +procedure TCITASBusinessProcessorRules.SetCAPTIONValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_CITASCAPTION] := aValue; +end; + +function TCITASBusinessProcessorRules.GetMENSAJEValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_CITASMENSAJE]; +end; + +function TCITASBusinessProcessorRules.GetOldMENSAJEValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_CITASMENSAJE]; +end; + +procedure TCITASBusinessProcessorRules.SetMENSAJEValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_CITASMENSAJE] := aValue; +end; + +function TCITASBusinessProcessorRules.GetRECURRENCEINDEXValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_CITASRECURRENCEINDEX]; +end; + +function TCITASBusinessProcessorRules.GetOldRECURRENCEINDEXValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_CITASRECURRENCEINDEX]; +end; + +procedure TCITASBusinessProcessorRules.SetRECURRENCEINDEXValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_CITASRECURRENCEINDEX] := aValue; +end; + +function TCITASBusinessProcessorRules.GetRESOURCEIDValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_CITASRESOURCEID]; +end; + +function TCITASBusinessProcessorRules.GetOldRESOURCEIDValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_CITASRESOURCEID]; +end; + +procedure TCITASBusinessProcessorRules.SetRESOURCEIDValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_CITASRESOURCEID] := aValue; +end; + +function TCITASBusinessProcessorRules.GetLOCATIONValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_CITASLOCATION]; +end; + +function TCITASBusinessProcessorRules.GetOldLOCATIONValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_CITASLOCATION]; +end; + +procedure TCITASBusinessProcessorRules.SetLOCATIONValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_CITASLOCATION] := aValue; +end; + +function TCITASBusinessProcessorRules.GetREMINDERValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_CITASREMINDER]; +end; + +function TCITASBusinessProcessorRules.GetOldREMINDERValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_CITASREMINDER]; +end; + +procedure TCITASBusinessProcessorRules.SetREMINDERValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_CITASREMINDER] := aValue; +end; + +function TCITASBusinessProcessorRules.GetSTATEValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_CITASSTATE]; +end; + +function TCITASBusinessProcessorRules.GetOldSTATEValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_CITASSTATE]; +end; + +procedure TCITASBusinessProcessorRules.SetSTATEValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_CITASSTATE] := aValue; +end; + +function TCITASBusinessProcessorRules.GetLABELCOLORValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_CITASLABELCOLOR]; +end; + +function TCITASBusinessProcessorRules.GetOldLABELCOLORValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_CITASLABELCOLOR]; +end; + +procedure TCITASBusinessProcessorRules.SetLABELCOLORValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_CITASLABELCOLOR] := aValue; +end; + +function TCITASBusinessProcessorRules.GetCODIGOCONTRATOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_CITASCODIGOCONTRATO]; +end; + +function TCITASBusinessProcessorRules.GetOldCODIGOCONTRATOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_CITASCODIGOCONTRATO]; +end; + +procedure TCITASBusinessProcessorRules.SetCODIGOCONTRATOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_CITASCODIGOCONTRATO] := aValue; +end; + +function TCITASBusinessProcessorRules.GetTIPOTAREAValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_CITASTIPOTAREA]; +end; + +function TCITASBusinessProcessorRules.GetOldTIPOTAREAValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_CITASTIPOTAREA]; +end; + +procedure TCITASBusinessProcessorRules.SetTIPOTAREAValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_CITASTIPOTAREA] := aValue; +end; + +function TCITASBusinessProcessorRules.GetNOMBRECLIENTEValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_CITASNOMBRECLIENTE]; +end; + +function TCITASBusinessProcessorRules.GetOldNOMBRECLIENTEValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_CITASNOMBRECLIENTE]; +end; + +procedure TCITASBusinessProcessorRules.SetNOMBRECLIENTEValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_CITASNOMBRECLIENTE] := aValue; +end; + +function TCITASBusinessProcessorRules.GetPARTIDAValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_CITASPARTIDA]; +end; + +function TCITASBusinessProcessorRules.GetOldPARTIDAValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_CITASPARTIDA]; +end; + +procedure TCITASBusinessProcessorRules.SetPARTIDAValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_CITASPARTIDA] := aValue; +end; + +function TCITASBusinessProcessorRules.GetCOMPLETADAValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_CITASCOMPLETADA]; +end; + +function TCITASBusinessProcessorRules.GetOldCOMPLETADAValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_CITASCOMPLETADA]; +end; + +procedure TCITASBusinessProcessorRules.SetCOMPLETADAValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_CITASCOMPLETADA] := aValue; +end; + +function TCITASBusinessProcessorRules.GetNOMBREPROVEEDORValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_CITASNOMBREPROVEEDOR]; +end; + +function TCITASBusinessProcessorRules.GetOldNOMBREPROVEEDORValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_CITASNOMBREPROVEEDOR]; +end; + +procedure TCITASBusinessProcessorRules.SetNOMBREPROVEEDORValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_CITASNOMBREPROVEEDOR] := aValue; +end; + +function TCITASBusinessProcessorRules.GetCODIGOCOLUMNAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_CITASCODIGOCOLUMNA]; +end; + +function TCITASBusinessProcessorRules.GetOldCODIGOCOLUMNAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_CITASCODIGOCOLUMNA]; +end; + +procedure TCITASBusinessProcessorRules.SetCODIGOCOLUMNAValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_CITASCODIGOCOLUMNA] := aValue; +end; + +function TCITASBusinessProcessorRules.GetCODIGOFILAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_CITASCODIGOFILA]; +end; + +function TCITASBusinessProcessorRules.GetOldCODIGOFILAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_CITASCODIGOFILA]; +end; + +procedure TCITASBusinessProcessorRules.SetCODIGOFILAValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_CITASCODIGOFILA] := aValue; +end; + +function TCITASBusinessProcessorRules.GetEMPRESAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_CITASEMPRESA]; +end; + +function TCITASBusinessProcessorRules.GetOldEMPRESAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_CITASEMPRESA]; +end; + +procedure TCITASBusinessProcessorRules.SetEMPRESAValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_CITASEMPRESA] := aValue; +end; + + +{ TVENDEDORESBusinessProcessorRules } +constructor TVENDEDORESBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TVENDEDORESBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TVENDEDORESBusinessProcessorRules.GetCODIGOEMPRESAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_VENDEDORESCODIGOEMPRESA]; +end; + +function TVENDEDORESBusinessProcessorRules.GetOldCODIGOEMPRESAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_VENDEDORESCODIGOEMPRESA]; +end; + +procedure TVENDEDORESBusinessProcessorRules.SetCODIGOEMPRESAValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_VENDEDORESCODIGOEMPRESA] := aValue; +end; + +function TVENDEDORESBusinessProcessorRules.GetCODIGOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_VENDEDORESCODIGO]; +end; + +function TVENDEDORESBusinessProcessorRules.GetOldCODIGOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_VENDEDORESCODIGO]; +end; + +procedure TVENDEDORESBusinessProcessorRules.SetCODIGOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_VENDEDORESCODIGO] := aValue; +end; + +function TVENDEDORESBusinessProcessorRules.GetFECHAALTAValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_VENDEDORESFECHAALTA]; +end; + +function TVENDEDORESBusinessProcessorRules.GetOldFECHAALTAValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_VENDEDORESFECHAALTA]; +end; + +procedure TVENDEDORESBusinessProcessorRules.SetFECHAALTAValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_VENDEDORESFECHAALTA] := aValue; +end; + +function TVENDEDORESBusinessProcessorRules.GetUSUARIOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_VENDEDORESUSUARIO]; +end; + +function TVENDEDORESBusinessProcessorRules.GetOldUSUARIOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_VENDEDORESUSUARIO]; +end; + +procedure TVENDEDORESBusinessProcessorRules.SetUSUARIOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_VENDEDORESUSUARIO] := aValue; +end; + +function TVENDEDORESBusinessProcessorRules.GetNIFCIFValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_VENDEDORESNIFCIF]; +end; + +function TVENDEDORESBusinessProcessorRules.GetOldNIFCIFValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_VENDEDORESNIFCIF]; +end; + +procedure TVENDEDORESBusinessProcessorRules.SetNIFCIFValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_VENDEDORESNIFCIF] := aValue; +end; + +function TVENDEDORESBusinessProcessorRules.GetNOMBREValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_VENDEDORESNOMBRE]; +end; + +function TVENDEDORESBusinessProcessorRules.GetOldNOMBREValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_VENDEDORESNOMBRE]; +end; + +procedure TVENDEDORESBusinessProcessorRules.SetNOMBREValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_VENDEDORESNOMBRE] := aValue; +end; + +function TVENDEDORESBusinessProcessorRules.GetNOTASValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_VENDEDORESNOTAS]; +end; + +function TVENDEDORESBusinessProcessorRules.GetOldNOTASValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_VENDEDORESNOTAS]; +end; + +procedure TVENDEDORESBusinessProcessorRules.SetNOTASValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_VENDEDORESNOTAS] := aValue; +end; + +function TVENDEDORESBusinessProcessorRules.GetCALLEValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_VENDEDORESCALLE]; +end; + +function TVENDEDORESBusinessProcessorRules.GetOldCALLEValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_VENDEDORESCALLE]; +end; + +procedure TVENDEDORESBusinessProcessorRules.SetCALLEValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_VENDEDORESCALLE] := aValue; +end; + +function TVENDEDORESBusinessProcessorRules.GetPROVINCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_VENDEDORESPROVINCIA]; +end; + +function TVENDEDORESBusinessProcessorRules.GetOldPROVINCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_VENDEDORESPROVINCIA]; +end; + +procedure TVENDEDORESBusinessProcessorRules.SetPROVINCIAValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_VENDEDORESPROVINCIA] := aValue; +end; + +function TVENDEDORESBusinessProcessorRules.GetCODIGOPOSTALValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_VENDEDORESCODIGOPOSTAL]; +end; + +function TVENDEDORESBusinessProcessorRules.GetOldCODIGOPOSTALValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_VENDEDORESCODIGOPOSTAL]; +end; + +procedure TVENDEDORESBusinessProcessorRules.SetCODIGOPOSTALValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_VENDEDORESCODIGOPOSTAL] := aValue; +end; + +function TVENDEDORESBusinessProcessorRules.GetPOBLACIONValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_VENDEDORESPOBLACION]; +end; + +function TVENDEDORESBusinessProcessorRules.GetOldPOBLACIONValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_VENDEDORESPOBLACION]; +end; + +procedure TVENDEDORESBusinessProcessorRules.SetPOBLACIONValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_VENDEDORESPOBLACION] := aValue; +end; + +function TVENDEDORESBusinessProcessorRules.GetTELEFONO1Value: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_VENDEDORESTELEFONO1]; +end; + +function TVENDEDORESBusinessProcessorRules.GetOldTELEFONO1Value: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_VENDEDORESTELEFONO1]; +end; + +procedure TVENDEDORESBusinessProcessorRules.SetTELEFONO1Value(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_VENDEDORESTELEFONO1] := aValue; +end; + +function TVENDEDORESBusinessProcessorRules.GetTELEFONO2Value: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_VENDEDORESTELEFONO2]; +end; + +function TVENDEDORESBusinessProcessorRules.GetOldTELEFONO2Value: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_VENDEDORESTELEFONO2]; +end; + +procedure TVENDEDORESBusinessProcessorRules.SetTELEFONO2Value(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_VENDEDORESTELEFONO2] := aValue; +end; + +function TVENDEDORESBusinessProcessorRules.GetMOVILValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_VENDEDORESMOVIL]; +end; + +function TVENDEDORESBusinessProcessorRules.GetOldMOVILValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_VENDEDORESMOVIL]; +end; + +procedure TVENDEDORESBusinessProcessorRules.SetMOVILValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_VENDEDORESMOVIL] := aValue; +end; + +function TVENDEDORESBusinessProcessorRules.GetFAXValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_VENDEDORESFAX]; +end; + +function TVENDEDORESBusinessProcessorRules.GetOldFAXValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_VENDEDORESFAX]; +end; + +procedure TVENDEDORESBusinessProcessorRules.SetFAXValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_VENDEDORESFAX] := aValue; +end; + +function TVENDEDORESBusinessProcessorRules.GetCORREO1Value: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_VENDEDORESCORREO1]; +end; + +function TVENDEDORESBusinessProcessorRules.GetOldCORREO1Value: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_VENDEDORESCORREO1]; +end; + +procedure TVENDEDORESBusinessProcessorRules.SetCORREO1Value(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_VENDEDORESCORREO1] := aValue; +end; + +function TVENDEDORESBusinessProcessorRules.GetCORREO2Value: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_VENDEDORESCORREO2]; +end; + +function TVENDEDORESBusinessProcessorRules.GetOldCORREO2Value: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_VENDEDORESCORREO2]; +end; + +procedure TVENDEDORESBusinessProcessorRules.SetCORREO2Value(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_VENDEDORESCORREO2] := aValue; +end; + +function TVENDEDORESBusinessProcessorRules.GetPAGINAWEBValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_VENDEDORESPAGINAWEB]; +end; + +function TVENDEDORESBusinessProcessorRules.GetOldPAGINAWEBValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_VENDEDORESPAGINAWEB]; +end; + +procedure TVENDEDORESBusinessProcessorRules.SetPAGINAWEBValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_VENDEDORESPAGINAWEB] := aValue; +end; + +function TVENDEDORESBusinessProcessorRules.GetPERSONACONTACTOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_VENDEDORESPERSONACONTACTO]; +end; + +function TVENDEDORESBusinessProcessorRules.GetOldPERSONACONTACTOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_VENDEDORESPERSONACONTACTO]; +end; + +procedure TVENDEDORESBusinessProcessorRules.SetPERSONACONTACTOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_VENDEDORESPERSONACONTACTO] := aValue; +end; + + +initialization + RegisterBusinessProcessorRules(RID_CITASDelta, TCITASBusinessProcessorRules); + RegisterBusinessProcessorRules(RID_VENDEDORESDelta, TVENDEDORESBusinessProcessorRules); + +end. diff --git a/Modulos/Calendarios/Reglas/uBizCitas.pas b/Modulos/Calendarios/Reglas/uBizCitas.pas new file mode 100644 index 0000000..fa9c97b --- /dev/null +++ b/Modulos/Calendarios/Reglas/uBizCitas.pas @@ -0,0 +1,193 @@ +unit uBizCitas; + +interface + +uses + uDAInterfaces, uDADataTable, Classes, DBGrids, uDBSelectionList, DB, + uExceptions, Controls, + + schCitasClient_Intf; + +const + BIZ_CITAS = 'BizCitas'; + BIZ_VENDEDORES = 'BizVendedores'; + BIZ_INSTALADORES = 'BizInstaladores'; + BIZ_DOCUMENTOS = 'BizDocumentos'; + BIZ_TIPOSPEDIDODOCUMENTO = 'BizTiposPedidoDocumento'; + CTE_TIPO_DOCUMENTO = 'TIPO_DOCUMENTO'; + BIZ_OBRAS = 'BizObras'; + + TextoTipoCita: array[0..9] of String = ('PERSONAL', 'MEDICION', 'ENTREGA', + 'MONTAJE', 'REMATE', 'PEDIDO', 'CONFIRMACION', + 'RECEPCION', 'AVISO', 'ENTREGACLIENTE'); + + LiteralTipoCita: array[0..9] of String = ('Personal', 'Medición', + 'Entrega a instalador', 'Montaje', 'Remate', 'Pedido', + 'Confirmación de pedido', 'Recepción de pedido', 'Aviso transportista', + 'Entrega al cliente'); + + TextoPartidasObra: array[0..3] of String = ('COCINA', 'ENCIMERAS', + 'ELECTRO', 'VARIOS'); + + LiteralPartidasObra: array[0..3] of String = ('Cocina', 'Encimeras', + 'Electrodomésticos', 'Varios'); + +type + TPartidasObra = (poCocina, poEncimeras, poElectro, poVarios); + TTipoCitas = (tcPersonal, tcMedicion, tcEntrega, tcMontaje, tcRemate, + tcPedido, tcConfirmacion, tcRecepcion, tcAviso, tcEntregaCliente); + + + IBizCitas = interface(ICitas) + ['{B7CFAD14-99F6-4541-89B4-94B4C4B829D2}'] + procedure Show; + end; + + IBizVendedores = interface(IVendedores) + ['{19E86356-0BA1-4A58-A552-D68D665232DB}'] + end; + + IBizInstaladores = interface //(IInstaladores) + ['{27917CC0-E202-4C0B-82FE-19DC2B494DB2}'] + end; + + IBizDocumentos = interface //(IDocumentos) + ['{3000D86E-FD7B-40BD-99FB-E05C00B8FA8A}'] + end; + + IBizTiposPedidoDocumento = interface //(ITiposPedidoDocumento) + ['{B6B48E61-C510-4ACA-BFD8-65A876010B13}'] + end; + + IBizObras = interface //(IObras) + ['{B9A9EDDE-4F4C-46D1-B48C-2B0BB4E4580E}'] + end; + + TBizCitasDataTableRules = class(TCitasDataTableRules, IBizCitas, + IApplyUpdateFailedException) + private + procedure BeforeApplyUpdates(Sender: TDADataTable; const Delta: IDADelta); + procedure BeforePost(Sender: TDADataTable); + procedure OnPostError(DataTable: TDADataTable; Error: EDatabaseError; + var Action: TDataAction); override; + protected + procedure OnNewRecord(Sender: TDADataTable); override; + procedure ShowApplyUpdateFailed (const Error: EDAApplyUpdateFailed); virtual; + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + procedure Show; virtual; + end; + + TBizVendedoresDataTableRules = class(TVendedoresDataTableRules, IBizVendedores) + end; + + function DarTipoCita (Texto : String) : TTipoCitas; + function esCitaFase (Texto : String) : Boolean; + +implementation + +uses + Windows, Dialogs, uDACDSDataTable, SysUtils, uDataModuleBase, + uEditorUtils, Variants, + + uDataModuleCalendarios; + + +function DarTipoCita (Texto : String) : TTipoCitas; +var + i : Integer; +begin + Result := tcPersonal; + for I := Low(TextoTipoCita) to High(TextoTipoCita) do + begin + if UpperCase(TextoTipoCita[i]) = UpperCase(Texto) then + Result := TTipoCitas(I); + end; + + if Result = tcPersonal then + for I := Low(LiteralTipoCita) to High(LiteralTipoCita) do + begin + if UpperCase(LiteralTipoCita[i]) = UpperCase(Texto) then + Result := TTipoCitas(I); + end; +end; + +function esCitaFase (Texto : String) : Boolean; +var + I: TTipoCitas; +begin + Result := False; + for I:=tcPedido to tcEntregaCliente do + if (TextoTipoCita[Ord(I)] = Texto) then + Result := True; +end; + + +{ TBizCitasDataTableRules } + +{ +************************** TBizCitasDataTableRules ************************** +} + +procedure TBizCitasDataTableRules.OnNewRecord(Sender: TDADataTable); +begin + inherited; + ID := dmCalendarios.GetCodigo; +end; + +procedure TBizCitasDataTableRules.Show; +begin + ShowEditor(IBizCitas, Self, etItem); +end; + +procedure TBizCitasDataTableRules.ShowApplyUpdateFailed(const Error: EDAApplyUpdateFailed); +begin +// if (Pos(AUF_FKVIOLATION, Error.Message) > 0) then +// MessageBox(0, 'No se puede borrar esta cuenta porque tiene pagos asociados', 'Atención', MB_ICONWARNING or MB_OK); +end; + +constructor TBizCitasDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; + aDataTable.OnBeforeApplyUpdates := BeforeApplyUpdates; +end; + +destructor TBizCitasDataTableRules.Destroy; +begin + inherited; +end; + +procedure TBizCitasDataTableRules.BeforeApplyUpdates(Sender: TDADataTable; const Delta: IDADelta); +begin +// +end; + +procedure TBizCitasDataTableRules.OnPostError(DataTable: TDADataTable; + Error: EDatabaseError; var Action: TDataAction); +begin + inherited; + Action := daAbort; + if (Pos(AUF_HAVEVALUE, Error.Message) > 0) then + begin + if (Pos('Nombre', Error.Message) > 0) then + MessageBox(0, 'Debe indicar al menos el nombre', 'Atención', MB_ICONWARNING or MB_OK) + else + raise Error; + end + else + raise Error; +end; + +procedure TBizCitasDataTableRules.BeforePost(Sender: TDADataTable); +begin + Sender.FieldByName(fld_CITASCODIGOCONTRATO).AsVariant := null; +end; + +initialization + RegisterDataTableRules(BIZ_CITAS, TBizCitasDataTableRules); + RegisterDataTableRules(BIZ_VENDEDORES, TBizVendedoresDataTableRules); + +finalization + +end. diff --git a/Modulos/Calendarios/Servidor/srvCitas_Impl.ddp b/Modulos/Calendarios/Servidor/srvCitas_Impl.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Calendarios/Servidor/srvCitas_Impl.ddp differ diff --git a/Modulos/Calendarios/Servidor/srvCitas_Impl.dfm b/Modulos/Calendarios/Servidor/srvCitas_Impl.dfm new file mode 100644 index 0000000..f4572ce --- /dev/null +++ b/Modulos/Calendarios/Servidor/srvCitas_Impl.dfm @@ -0,0 +1,723 @@ +object srvCitas: TsrvCitas + OldCreateOrder = True + RequiresSession = True + SessionManager = dmServer.SessionManager + AcquireConnection = True + ConnectionName = 'IBX' + ServiceSchema = schCitas + ServiceAdapter = DABINAdapter + Left = 502 + Top = 206 + Height = 184 + Width = 245 + object schCitas: TDASchema + ConnectionManager = dmServer.ConnectionManager + DataDictionary = dmServer.DataDictionary + Diagrams = dmServer.DADiagrams + Datasets = < + item + Params = <> + Statements = < + item + Connection = 'IBX' + TargetTable = 'CITAS' + SQL = + 'SELECT '#10' ID, PARENTID, START, TIPO, FINISH, OPTIONS, CAPTION,' + + ' '#10' MENSAJE, RECURRENCEINDEX, RESOURCEID, LOCATION, REMINDER, ' + + #10' STATE, LABELCOLOR, CODIGOCONTRATO, TIPOTAREA, NOMBRECLIENTE' + + ', '#10' PARTIDA, COMPLETADA, NOMBREPROVEEDOR, CODIGOCOLUMNA, '#10' ' + + ' CODIGOFILA, EMPRESA'#10' FROM'#10' CITAS' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'ID' + TableField = 'ID' + end + item + DatasetField = 'PARENTID' + TableField = 'PARENTID' + end + item + DatasetField = 'START' + TableField = 'START' + end + item + DatasetField = 'TIPO' + TableField = 'TIPO' + end + item + DatasetField = 'FINISH' + TableField = 'FINISH' + end + item + DatasetField = 'OPTIONS' + TableField = 'OPTIONS' + end + item + DatasetField = 'CAPTION' + TableField = 'CAPTION' + end + item + DatasetField = 'MENSAJE' + TableField = 'MENSAJE' + end + item + DatasetField = 'RECURRENCEINDEX' + TableField = 'RECURRENCEINDEX' + end + item + DatasetField = 'RESOURCEID' + TableField = 'RESOURCEID' + end + item + DatasetField = 'LOCATION' + TableField = 'LOCATION' + end + item + DatasetField = 'REMINDER' + TableField = 'REMINDER' + end + item + DatasetField = 'STATE' + TableField = 'STATE' + end + item + DatasetField = 'LABELCOLOR' + TableField = 'LABELCOLOR' + end + item + DatasetField = 'CODIGOCONTRATO' + TableField = 'CODIGOCONTRATO' + end + item + DatasetField = 'TIPOTAREA' + TableField = 'TIPOTAREA' + end + item + DatasetField = 'NOMBRECLIENTE' + TableField = 'NOMBRECLIENTE' + end + item + DatasetField = 'PARTIDA' + TableField = 'PARTIDA' + end + item + DatasetField = 'COMPLETADA' + TableField = 'COMPLETADA' + end + item + DatasetField = 'NOMBREPROVEEDOR' + TableField = 'NOMBREPROVEEDOR' + end + item + DatasetField = 'CODIGOCOLUMNA' + TableField = 'CODIGOCOLUMNA' + end + item + DatasetField = 'CODIGOFILA' + TableField = 'CODIGOFILA' + end + item + DatasetField = 'EMPRESA' + TableField = 'EMPRESA' + end> + end> + Name = 'CITAS' + Fields = < + item + Name = 'ID' + DataType = datInteger + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PARENTID' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'START' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'TIPO' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FINISH' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'OPTIONS' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CAPTION' + DataType = datString + Size = 255 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'MENSAJE' + DataType = datString + Size = 255 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'RECURRENCEINDEX' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'RESOURCEID' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'LOCATION' + DataType = datString + Size = 255 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'REMINDER' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'STATE' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'LABELCOLOR' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOCONTRATO' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'TIPOTAREA' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NOMBRECLIENTE' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PARTIDA' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'COMPLETADA' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NOMBREPROVEEDOR' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOCOLUMNA' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOFILA' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'EMPRESA' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end + item + Params = <> + Statements = < + item + Connection = 'IBX' + TargetTable = 'CONTACTOS' + SQL = + 'SELECT CODIGOEMPRESA, CODIGO, FECHAALTA, USUARIO, NIFCIF,'#10' NO' + + 'MBRE, NOTAS, CALLE, PROVINCIA, CODIGOPOSTAL, POBLACION,'#10' TELE' + + 'FONO1, TELEFONO2, MOVIL, FAX, CORREO1, CORREO2,'#10' PAGINAWEB, P' + + 'ERSONACONTACTO'#10#10'FROM CONTACTOS'#10'LEFT JOIN CONTACTOSCATEGORIAS ON ' + + '(CODIGOCONTACTO = CODIGO)'#10'WHERE CODIGOCATEGORIA = 4' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'CODIGOEMPRESA' + TableField = 'CODIGOEMPRESA' + end + item + DatasetField = 'CODIGO' + TableField = 'CODIGO' + end + item + DatasetField = 'FECHAALTA' + TableField = 'FECHAALTA' + end + item + DatasetField = 'USUARIO' + TableField = 'USUARIO' + end + item + DatasetField = 'NIFCIF' + TableField = 'NIFCIF' + end + item + DatasetField = 'NOMBRE' + TableField = 'NOMBRE' + end + item + DatasetField = 'NOTAS' + TableField = 'NOTAS' + end + item + DatasetField = 'CALLE' + TableField = 'CALLE' + end + item + DatasetField = 'PROVINCIA' + TableField = 'PROVINCIA' + end + item + DatasetField = 'CODIGOPOSTAL' + TableField = 'CODIGOPOSTAL' + end + item + DatasetField = 'POBLACION' + TableField = 'POBLACION' + end + item + DatasetField = 'TELEFONO1' + TableField = 'TELEFONO1' + end + item + DatasetField = 'TELEFONO2' + TableField = 'TELEFONO2' + end + item + DatasetField = 'MOVIL' + TableField = 'MOVIL' + end + item + DatasetField = 'FAX' + TableField = 'FAX' + end + item + DatasetField = 'CORREO1' + TableField = 'CORREO1' + end + item + DatasetField = 'CORREO2' + TableField = 'CORREO2' + end + item + DatasetField = 'PAGINAWEB' + TableField = 'PAGINAWEB' + end + item + DatasetField = 'PERSONACONTACTO' + TableField = 'PERSONACONTACTO' + end> + end> + Name = 'VENDEDORES' + Fields = < + item + Name = 'CODIGOEMPRESA' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGO' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHAALTA' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'USUARIO' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NIFCIF' + DataType = datString + Size = 10 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NOMBRE' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NOTAS' + DataType = datString + Size = 2000 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CALLE' + DataType = datString + Size = 150 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PROVINCIA' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOPOSTAL' + DataType = datString + Size = 5 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'POBLACION' + DataType = datString + Size = 40 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'TELEFONO1' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'TELEFONO2' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'MOVIL' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FAX' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CORREO1' + DataType = datString + Size = 60 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CORREO2' + DataType = datString + Size = 60 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PAGINAWEB' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PERSONACONTACTO' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end> + Commands = <> + RelationShips = <> + UpdateRules = <> + Left = 24 + Top = 16 + end + object DABINAdapter: TDABINAdapter + Left = 24 + Top = 72 + end +end diff --git a/Modulos/Calendarios/Servidor/srvCitas_Impl.pas b/Modulos/Calendarios/Servidor/srvCitas_Impl.pas new file mode 100644 index 0000000..596ec70 --- /dev/null +++ b/Modulos/Calendarios/Servidor/srvCitas_Impl.pas @@ -0,0 +1,59 @@ +unit srvCitas_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:} DARemoteService_Impl, + {Used RODLs:} DataAbstract_Intf, + {Generated:} FactuGES_Intf, uDAClasses, uDAInterfaces, uDADataTable, + uDABINAdapter; + +type + { TsrvCitas } + TsrvCitas = class(TDARemoteService, IsrvCitas) + schCitas: TDASchema; + DABINAdapter: TDABINAdapter; + private + protected + function getCodigo(const Generador: String): Integer; + end; + +implementation + +{$R *.dfm} +uses + {Generated:} FactuGES_Invk, uDataModuleServer; + +procedure Create_srvCitas(out anInstance : IUnknown); +begin + anInstance := TsrvCitas.Create(NIL); +end; + +{ srvCitas } +{ TsrvCitas } + +function TsrvCitas.getCodigo(const Generador: String): Integer; +var + ds: IDADataset; +begin + ds := Connection.NewDataset(Format('SELECT Gen_id("%s",1) FROM RDB$DataBase', [Generador])); + ds.Open; + Result := ds.Fields[0].Value; + ds.Close; +end; + +initialization + TROClassFactory.Create('srvCitas', Create_srvCitas, TsrvCitas_Invoker); + +finalization + +end. diff --git a/Modulos/Contactos/Cliente/Contactos.bdsproj b/Modulos/Contactos/Cliente/Contactos.bdsproj new file mode 100644 index 0000000..ead81fe --- /dev/null +++ b/Modulos/Contactos/Cliente/Contactos.bdsproj @@ -0,0 +1,492 @@ + + + + + + + + + + + + Contactos.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 3 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + .\ + ..\..\..\Output\Cliente + .\ + $(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Contactos\Cliente;..\..\Contactos\Reglas + vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;CEToolsPkgd7;FR7;FRIBX7;Hydra_Core_D7;Hydra_RO_D7;fqb70;frx7;frxADO7;frxBDE7;frxDB7;frxDBX7;frxe7;frxIBX7;fs7;fsADO7;fsBDE7;fsDB7;fsIBX7;DataAbstract_Core_D7;DataAbstract_IDE_D7 + + + False + + + + + + False + + + True + False + + + + $00000000 + C:\Archivos de programa\Borland\Delphi7\Bin\ + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + diff --git a/Modulos/Contactos/Cliente/Contactos.cfg b/Modulos/Contactos/Cliente/Contactos.cfg new file mode 100644 index 0000000..4ab59e4 --- /dev/null +++ b/Modulos/Contactos/Cliente/Contactos.cfg @@ -0,0 +1,45 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O- +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-GD +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N".\" +-LE"..\..\..\Output\Cliente" +-LN".\" +-U"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Contactos\Cliente;..\..\Contactos\Reglas" +-O"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Contactos\Cliente;..\..\Contactos\Reglas" +-I"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Contactos\Cliente;..\..\Contactos\Reglas" +-R"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Contactos\Cliente;..\..\Contactos\Reglas" +-Z +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/Modulos/Contactos/Cliente/Contactos.dcp b/Modulos/Contactos/Cliente/Contactos.dcp new file mode 100644 index 0000000..eee0e6a Binary files /dev/null and b/Modulos/Contactos/Cliente/Contactos.dcp differ diff --git a/Modulos/Contactos/Cliente/Contactos.dof b/Modulos/Contactos/Cliente/Contactos.dof new file mode 100644 index 0000000..147be38 --- /dev/null +++ b/Modulos/Contactos/Cliente/Contactos.dof @@ -0,0 +1,495 @@ +[FileVersion] +Version=7.0 +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=0 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=1 +SymbolLibrary=1 +SymbolPlatform=1 +UnitLibrary=1 +UnitPlatform=1 +UnitDeprecated=1 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 +[Linker] +MapFile=3 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription= +[Directories] +OutputDir= +UnitOutputDir=.\ +PackageDLLOutputDir=..\..\..\Output\Cliente +PackageDCPOutputDir=.\ +SearchPath=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Contactos\Cliente;..\..\Contactos\Reglas +Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;CEToolsPkgd7;FR7;FRIBX7;Hydra_Core_D7;Hydra_RO_D7;fqb70;frx7;frxADO7;frxBDE7;frxDB7;frxDBX7;frxe7;frxIBX7;fs7;fsADO7;fsBDE7;fsDB7;fsIBX7;DataAbstract_Core_D7;DataAbstract_IDE_D7 +Conditionals= +DebugSourceDirs= +UsePackages=0 +[Parameters] +RunParams= +HostApplication= +Launcher= +UseLauncher=0 +DebugCWD= +[Language] +ActiveLang= +ProjectLang= +RootDir=C:\Archivos de programa\Borland\Delphi7\Bin\ +[Version Info] +IncludeVerInfo=1 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=3082 +CodePage=1252 +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= +[Excluded Packages] +C:\Archivos de programa\Developer Express Inc\Lib\D7\dxPScxSchedulerLnkD7.bpl=ExpressPrinting System ReportLink for ExpressScheduler by Developer Express Inc. +C:\Archivos de programa\Developer Express Inc\Lib\D7\dxLayoutControlcxEditAdaptersD7.bpl=ExpressLayoutControl Adapters for ExpressEditors Library 5 by Developer Express Inc. +[HistoryLists\hlDebugSourcePath] +Count=1 +Item0=D:\Proyectos\Componentes\GUISDK\Sources\;D:\Proyectos\Componentes\PluginSDK\Source\;D:\Proyectos\FactuGES (Estudio)\Codigo\Modulos\Contactos\Cliente;D:\Proyectos\FactuGES (Estudio)\Codigo\Modulos\Contactos\Reglas +[HistoryLists\hlUnitAliases] +Count=1 +Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +[HistoryLists\hlSearchPath] +Count=16 +Item0=..\Modulos\Presupuestos\Reglas;..\Modulos\Contactos\Reglas;..\Base;..\Configuracion;..\Usuarios;..\Modulos\Albaranes de cliente\Reglas +Item1=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\Base;..\Configuracion;..\Usuarios;..\Modulos\Intervalos;..\Modulos\Documentos asociados;..\Modulos\Contactos\Cliente;..\Modulos\Contactos\Reglas;..\Modulos\Presupuestos\Cliente;..\Modulos\Presupuestos\Reglas;..\Modulos\Albaranes de cliente\Cliente;..\Modulos\Albaranes de cliente\Reglas;..\Modulos\Facturas de cliente\Cliente;..\Modulos\Facturas de cliente\Reglas;..\Modulos\Pedidos a proveedor\Cliente;..\Modulos\Pedidos a proveedor\Reglas;..\Modulos\Facturas de proveedor\Cliente;..\Modulos\Facturas de proveedor\Reglas;..\Modulos\Montajes\Reglas;..\Modulos\Montajes\Cliente;..\Modulos\Articulos\Cliente;..\Modulos\Articulos\Reglas;..\Modulos\Almacenes\Reglas;..\Modulos\Almacenes\Cliente;..\Modulos\Pagos\Reglas;..\Modulos\Pagos\Cliente;..\Modulos\Cuentas\Reglas;..\Modulos\Cuentas\Cliente;..\Modulos\Asientos\Reglas;..\Modulos\Asientos\Cliente;..\Modulos\Calendarios\Cliente;..\Modulos\Calendarios\Reglas +Item2=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente;..\..\Asientos\Cliente;..\..\Cuentas\Cliente +Item3=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente;..\..\Asientos\Cliente +Item4=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente +Item5=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente +Item6=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente;..\..\Documentos asociados;..\..\Contactos\Cliente;..\..\Almacenes\Cliente +Item7=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados +Item8=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente;..\..\Documentos asociados;..\..\Contactos\Cliente +Item9=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente;..\..\Documentos asociados +Item10=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente +Item11=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados;..\..\Montajes\Cliente;..\..\Almacenes\Cliente +Item12=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados;..\..\Montajes\Cliente +Item13=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\Servidor +Item14=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\base;..\Modulos\Calendarios\Cliente;..\Modulos\Calendarios\Reglas +Item15=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\Base;..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios +[HistoryLists\hlUnitOutputDirectory] +Count=1 +Item0=.\ +[HistoryLists\hlOutputDirectorry] +Count=2 +Item0=..\Output\Servidor +Item1=..\Output\Cliente +[HistoryLists\hlBPLOutput] +Count=3 +Item0=..\..\..\Output\Cliente +Item1=..\Output\Cliente +Item2=..\..\Output\Cliente +[HistoryLists\hlDCPOutput] +Count=1 +Item0=.\ +[Exception Log] +EurekaLog Version=519 +Activate=1 +Activate Handle=1 +Save Log File=1 +Foreground Tab=0 +Freeze Activate=0 +Freeze Timeout=0 +Freeze Message=The application seems to be frozen. +SMTP From=eurekalog@email.com +SMTP Host= +SMTP Port=25 +SMTP UserID= +SMTP Password= +Append to Log=0 +Show TerminateBtn=1 +TerminateBtn Operation=1 +Errors Number=32 +Errors Terminate=3 +Email Address= +Email Object= +Email Send Options=0 +Output Path= +Encrypt Password= +AutoCloseDialogSecs=0 +WebSendMode=0 +SupportULR= +HTMLLayout Count=15 +HTMLLine0="%3Chtml%3E" +HTMLLine1=" %3Chead%3E" +HTMLLine2=" %3C/head%3E" +HTMLLine3=" %3Cbody TopMargin=10 LeftMargin=10%3E" +HTMLLine4=" %3Ctable width="100%%" border="0"%3E" +HTMLLine5=" %3Ctr%3E" +HTMLLine6=" %3Ctd nowrap%3E" +HTMLLine7=" %3Cfont face="Lucida Console, Courier" size="2"%3E" +HTMLLine8=" %3C%%HTML_TAG%%%3E" +HTMLLine9=" %3C/font%3E" +HTMLLine10=" %3C/td%3E" +HTMLLine11=" %3C/tr%3E" +HTMLLine12=" %3C/table%3E" +HTMLLine13=" %3C/body%3E" +HTMLLine14="%3C/html%3E" +AutoCrashOperation=1 +AutoCrashNumber=10 +AutoCrashMinutes=1 +WebURL= +WebUserID= +WebPassword= +WebPort=0 +AttachedFiles= +Count=0 +EMail Message Line Count=0 +loNoDuplicateErrors=0 +loAppendReproduceText=0 +loDeleteLogAtVersionChange=0 +loAddComputerNameInLogFileName=0 +loSaveModulesSection=1 +loSaveCPUSection=1 +soAppStartDate=1 +soAppName=1 +soAppVersionNumber=1 +soAppParameters=1 +soAppCompilationDate=1 +soExcDate=1 +soExcAddress=1 +soExcModule=1 +soExcType=1 +soExcMessage=1 +soActCtlsFormClass=1 +soActCtlsFormText=1 +soActCtlsControlClass=1 +soActCtlsControlText=1 +soCmpName=1 +soCmpUser=1 +soCmpTotalMemory=1 +soCmpFreeMemory=1 +soCmpTotalDisk=1 +soCmpFreeDisk=1 +soCmpSysUpTime=1 +soCmpProcessor=1 +soCmpDisplayMode=1 +soOSType=1 +soOSBuildN=1 +soOSUpdate=1 +soOSLanguage=1 +soNetIP=1 +soNetSubmask=1 +soNetGateway=1 +soNetDNS1=1 +soNetDNS2=1 +soNetDHCP=1 +sndShowSendDialog=1 +sndShowSuccessFailureMsg=0 +sndSendEntireLog=0 +sndSendXMLLogCopy=0 +sndSendScreenshot=0 +sndUseOnlyActiveWindow=0 +sndSendLastHTMLPage=1 +sndSendInSeparatedThread=0 +sndAddDateInFileName=0 +sndCompressAllFiles=0 +edoShowExceptionDialog=1 +edoSendEmailChecked=1 +edoAttachScreenshotChecked=1 +edoShowCopyToClipOption=1 +edoShowDetailsButton=1 +edoShowInDetailedMode=0 +edoShowInTopMostMode=0 +edoUseEurekaLogLookAndFeel=1 +csoShowDLLs=1 +csoShowBPLs=1 +csoShowBorlandThreads=1 +csoShowWindowsThreads=1 +csoShowProcedureOffset=0 +boActivateCrashDetection=0 +boPauseBorlandThreads=0 +boDoNotPauseMainThread=0 +boPauseWindowsThreads=0 +boUseMainModuleOptions=1 +boCopyLogInCaseOfError=1 +boSaveCompressedCopyInCaseOfError=0 +Count mtInformationMsgCaption=1 +mtInformationMsgCaption0="Information." +Count mtQuestionMsgCaption=1 +mtQuestionMsgCaption0="Question." +Count mtDialog_Caption=1 +mtDialog_Caption0="Error." +Count mtDialog_ErrorMsgCaption=2 +mtDialog_ErrorMsgCaption0="An error has occurred during program execution." +mtDialog_ErrorMsgCaption1="Please read the following information for further details." +Count mtDialog_GeneralCaption=1 +mtDialog_GeneralCaption0="General" +Count mtDialog_GeneralHeader=1 +mtDialog_GeneralHeader0="General Information" +Count mtDialog_CallStackCaption=1 +mtDialog_CallStackCaption0="Call Stack" +Count mtDialog_CallStackHeader=1 +mtDialog_CallStackHeader0="Call Stack Information" +Count mtDialog_ModulesCaption=1 +mtDialog_ModulesCaption0="Modules" +Count mtDialog_ModulesHeader=1 +mtDialog_ModulesHeader0="Modules Information" +Count mtDialog_CPUCaption=1 +mtDialog_CPUCaption0="CPU" +Count mtDialog_CPUHeader=1 +mtDialog_CPUHeader0="CPU Information" +Count mtDialog_CustomDataCaption=1 +mtDialog_CustomDataCaption0="Other" +Count mtDialog_CustomDataHeader=1 +mtDialog_CustomDataHeader0="Other Information" +Count mtDialog_OKButtonCaption=1 +mtDialog_OKButtonCaption0="%26OK" +Count mtDialog_TerminateButtonCaption=1 +mtDialog_TerminateButtonCaption0="%26Terminate" +Count mtDialog_RestartButtonCaption=1 +mtDialog_RestartButtonCaption0="%26Restart" +Count mtDialog_DetailsButtonCaption=1 +mtDialog_DetailsButtonCaption0="%26Details" +Count mtDialog_SendMessage=1 +mtDialog_SendMessage0="%26Send this error via Internet" +Count mtDialog_ScreenshotMessage=1 +mtDialog_ScreenshotMessage0="%26Attach a Screenshot image" +Count mtDialog_CopyMessage=1 +mtDialog_CopyMessage0="%26Copy to Clipboard" +Count mtDialog_SupportMessage=1 +mtDialog_SupportMessage0="Go to the Support Page" +Count mtLog_AppHeader=1 +mtLog_AppHeader0="Application" +Count mtLog_AppStartDate=1 +mtLog_AppStartDate0="Start Date" +Count mtLog_AppName=1 +mtLog_AppName0="Name/Description" +Count mtLog_AppVersionNumber=1 +mtLog_AppVersionNumber0="Version Number" +Count mtLog_AppParameters=1 +mtLog_AppParameters0="Parameters" +Count mtLog_AppCompilationDate=1 +mtLog_AppCompilationDate0="Compilation Date" +Count mtLog_ExcHeader=1 +mtLog_ExcHeader0="Exception" +Count mtLog_ExcDate=1 +mtLog_ExcDate0="Date" +Count mtLog_ExcAddress=1 +mtLog_ExcAddress0="Address" +Count mtLog_ExcModule=1 +mtLog_ExcModule0="Module" +Count mtLog_ExcType=1 +mtLog_ExcType0="Type" +Count mtLog_ExcMessage=1 +mtLog_ExcMessage0="Message" +Count mtLog_ActCtrlsHeader=1 +mtLog_ActCtrlsHeader0="Active Controls" +Count mtLog_ActCtrlsFormClass=1 +mtLog_ActCtrlsFormClass0="Form Class" +Count mtLog_ActCtrlsFormText=1 +mtLog_ActCtrlsFormText0="Form Text" +Count mtLog_ActCtrlsControlClass=1 +mtLog_ActCtrlsControlClass0="Control Class" +Count mtLog_ActCtrlsControlText=1 +mtLog_ActCtrlsControlText0="Control Text" +Count mtLog_CmpHeader=1 +mtLog_CmpHeader0="Computer" +Count mtLog_CmpName=1 +mtLog_CmpName0="Name" +Count mtLog_CmpUser=1 +mtLog_CmpUser0="User" +Count mtLog_CmpTotalMemory=1 +mtLog_CmpTotalMemory0="Total Memory" +Count mtLog_CmpFreeMemory=1 +mtLog_CmpFreeMemory0="Free Memory" +Count mtLog_CmpTotalDisk=1 +mtLog_CmpTotalDisk0="Total Disk" +Count mtLog_CmpFreeDisk=1 +mtLog_CmpFreeDisk0="Free Disk" +Count mtLog_CmpSystemUpTime=1 +mtLog_CmpSystemUpTime0="System Up Time" +Count mtLog_CmpProcessor=1 +mtLog_CmpProcessor0="Processor" +Count mtLog_CmpDisplayMode=1 +mtLog_CmpDisplayMode0="Display Mode" +Count mtLog_OSHeader=1 +mtLog_OSHeader0="Operating System" +Count mtLog_OSType=1 +mtLog_OSType0="Type" +Count mtLog_OSBuildN=1 +mtLog_OSBuildN0="Build #" +Count mtLog_OSUpdate=1 +mtLog_OSUpdate0="Update" +Count mtLog_OSLanguage=1 +mtLog_OSLanguage0="Language" +Count mtLog_NetHeader=1 +mtLog_NetHeader0="Network" +Count mtLog_NetIP=1 +mtLog_NetIP0="IP Address" +Count mtLog_NetSubmask=1 +mtLog_NetSubmask0="Submask" +Count mtLog_NetGateway=1 +mtLog_NetGateway0="Gateway" +Count mtLog_NetDNS1=1 +mtLog_NetDNS10="DNS 1" +Count mtLog_NetDNS2=1 +mtLog_NetDNS20="DNS 2" +Count mtLog_NetDHCP=1 +mtLog_NetDHCP0="DHCP" +Count mtLog_CustInfoHeader=1 +mtLog_CustInfoHeader0="Custom Information" +Count mtCallStack_Address=1 +mtCallStack_Address0="Address" +Count mtCallStack_Name=1 +mtCallStack_Name0="Module" +Count mtCallStack_Unit=1 +mtCallStack_Unit0="Unit" +Count mtCallStack_Class=1 +mtCallStack_Class0="Class" +Count mtCallStack_Procedure=1 +mtCallStack_Procedure0="Procedure/Method" +Count mtCallStack_Line=1 +mtCallStack_Line0="Line" +Count mtCallStack_MainThread=1 +mtCallStack_MainThread0="Main" +Count mtCallStack_ExceptionThread=1 +mtCallStack_ExceptionThread0="Exception Thread" +Count mtCallStack_RunningThread=1 +mtCallStack_RunningThread0="Running Thread" +Count mtCallStack_CallingThread=1 +mtCallStack_CallingThread0="Calling Thread" +Count mtCallStack_ThreadID=1 +mtCallStack_ThreadID0="ID" +Count mtCallStack_ThreadPriority=1 +mtCallStack_ThreadPriority0="Priority" +Count mtCallStack_ThreadClass=1 +mtCallStack_ThreadClass0="Class" +Count mtSendDialog_Caption=1 +mtSendDialog_Caption0="Send." +Count mtSendDialog_Message=1 +mtSendDialog_Message0="Message" +Count mtSendDialog_Resolving=1 +mtSendDialog_Resolving0="Resolving DNS..." +Count mtSendDialog_Connecting=1 +mtSendDialog_Connecting0="Connecting with server..." +Count mtSendDialog_Connected=1 +mtSendDialog_Connected0="Connected with server." +Count mtSendDialog_Sending=1 +mtSendDialog_Sending0="Sending message..." +Count mtReproduceDialog_Caption=1 +mtReproduceDialog_Caption0="Request" +Count mtReproduceDialog_Request=1 +mtReproduceDialog_Request0="Please describe the steps to reproduce the error:" +Count mtReproduceDialog_OKButtonCaption=1 +mtReproduceDialog_OKButtonCaption0="%26OK" +Count mtModules_Handle=1 +mtModules_Handle0="Handle" +Count mtModules_Name=1 +mtModules_Name0="Name" +Count mtModules_Description=1 +mtModules_Description0="Description" +Count mtModules_Version=1 +mtModules_Version0="Version" +Count mtModules_Size=1 +mtModules_Size0="Size" +Count mtModules_LastModified=1 +mtModules_LastModified0="Modified" +Count mtModules_Path=1 +mtModules_Path0="Path" +Count mtCPU_Registers=1 +mtCPU_Registers0="Registers" +Count mtCPU_Stack=1 +mtCPU_Stack0="Stack" +Count mtCPU_MemoryDump=1 +mtCPU_MemoryDump0="Memory Dump" +Count mtSend_SuccessMsg=1 +mtSend_SuccessMsg0="The message was sent successfully." +Count mtSend_FailureMsg=1 +mtSend_FailureMsg0="Sorry, sending the message didn't work." + + diff --git a/Modulos/Contactos/Cliente/Contactos.dpk b/Modulos/Contactos/Cliente/Contactos.dpk new file mode 100644 index 0000000..ea93b94 --- /dev/null +++ b/Modulos/Contactos/Cliente/Contactos.dpk @@ -0,0 +1,83 @@ +package Contactos; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION OFF} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + vcldb, + PluginSDK_D7R, + GUISDK_D7, + BaseD7, + PngComponentsD7, + PNG_D7, + Usuarios, + vclactnband, + vclx, + JvCoreD7R, + vcljpg, + JvSystemD7R, + JvPageCompsD7R, + JvStdCtrlsD7R, + tb2k_d7, + tbx_d7, + dxLayoutControlD7, + dbrtl, + dsnap, + adortl; + +{%ToDo 'Contactos.todo'} + +contains + uPluginControllerContactos in 'uPluginControllerContactos.pas' {ModuleContactos: TModuleController}, + uDataModuleContactos in 'uDataModuleContactos.pas' {dmContactos: TDAClientDataModule}, + uEditorContacto in 'uEditorContacto.pas' {fEditorContacto}, + uBizContacto in '..\Reglas\uBizContacto.pas', + uEditorContactos in 'uEditorContactos.pas' {fEditorContactos}, + uViewContactos in 'uViewContactos.pas' {frViewContactos: TFrame}, + uViewContacto in 'uViewContacto.pas' {frViewContacto: TFrame}, + uViewCliente in 'uViewCliente.pas' {frViewCliente: TFrame}, + uViewClientes in 'uViewClientes.pas' {frViewClientes: TFrame}, + uEditorCliente in 'uEditorCliente.pas' {fEditorCliente}, + uEditorClientes in 'uEditorClientes.pas' {fEditorClientes}, + uEditorProveedores in 'uEditorProveedores.pas' {fEditorProveedores}, + uViewProveedores in 'uViewProveedores.pas' {frViewProveedores: TFrame}, + uEditorProveedor in 'uEditorProveedor.pas' {fEditorProveedor}, + uViewProveedor in 'uViewProveedor.pas' {frViewProveedor: TFrame}, + uEditorVendedores in 'uEditorVendedores.pas' {fEditorVendedores: TCustomEditor}, + uEditorVendedor in 'uEditorVendedor.pas' {fEditorVendedor: TCustomEditor}, + schContactosClient_Intf in '..\Reglas\schContactosClient_Intf.pas', + uViewDatosYSeleccionContacto in 'uViewDatosYSeleccionContacto.pas' {frViewDatosYSeleccionContacto: TFrame}, + uViewVendedor in 'uViewVendedor.pas' {frViewVendedor: TFrame}, + uViewVendedores in 'uViewVendedores.pas' {frViewVendedores: TFrame}, + uViewInstaladores in 'uViewInstaladores.pas' {frViewInstaladores: TFrame}, + uViewInstalador in 'uViewInstalador.pas' {frViewInstalador: TFrame}, + uEditorInstaladores in 'uEditorInstaladores.pas' {fEditorInstaladores: TCustomEditor}, + uEditorInstalador in 'uEditorInstalador.pas' {fEditorInstalador: TCustomEditor}, + uEditorComisiones in 'uEditorComisiones.pas' {fEditorComisiones: TCustomEditor}, + uDataModuleComisiones in 'uDataModuleComisiones.pas' {dmComisiones: TDAClientDataModule}, + uBizComisiones in '..\Reglas\uBizComisiones.pas'; + +end. diff --git a/Modulos/Contactos/Cliente/Contactos.drc b/Modulos/Contactos/Cliente/Contactos.drc new file mode 100644 index 0000000..a5d5271 --- /dev/null +++ b/Modulos/Contactos/Cliente/Contactos.drc @@ -0,0 +1,14 @@ +/* VER150 + Generated by the Borland Delphi Pascal Compiler + because -GD or --drc was supplied to the compiler. + + This file contains compiler-generated resources that + were bound to the executable. + If this file is empty, then no compiler-generated + resources were bound to the produced executable. +*/ + +STRINGTABLE +BEGIN +END + diff --git a/Modulos/Contactos/Cliente/Contactos.res b/Modulos/Contactos/Cliente/Contactos.res new file mode 100644 index 0000000..ec5f233 Binary files /dev/null and b/Modulos/Contactos/Cliente/Contactos.res differ diff --git a/Modulos/Contactos/Cliente/Contactos.todo b/Modulos/Contactos/Cliente/Contactos.todo new file mode 100644 index 0000000..99a8091 --- /dev/null +++ b/Modulos/Contactos/Cliente/Contactos.todo @@ -0,0 +1,2 @@ + + diff --git a/Modulos/Contactos/Cliente/uDataModuleComisiones.ddp b/Modulos/Contactos/Cliente/uDataModuleComisiones.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Contactos/Cliente/uDataModuleComisiones.ddp differ diff --git a/Modulos/Contactos/Cliente/uDataModuleComisiones.dfm b/Modulos/Contactos/Cliente/uDataModuleComisiones.dfm new file mode 100644 index 0000000..b63e8a1 --- /dev/null +++ b/Modulos/Contactos/Cliente/uDataModuleComisiones.dfm @@ -0,0 +1,453 @@ +object dmComisiones: TdmComisiones + OldCreateOrder = True + OnCreate = DAClientDataModuleCreate + RemoteService = RORemoteService + Adapter = DABinAdapter + SchemaCall.MethodName = 'GetSchemaAsXML' + SchemaCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtString + end> + Height = 668 + Width = 358 + object RORemoteService: TRORemoteService + ServiceName = 'srvComisiones' + Message = ROBinMessage1 + Channel = ROWinInetHTTPChannel1 + Left = 40 + Top = 16 + end + object DABinAdapter: TDABINAdapter + Left = 136 + Top = 16 + end + object tbl_VENDEDORESCOMISION: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'VENDEDOR' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Vendedor' + ReadOnly = True + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PORCENTAJE' + DataType = datFloat + BlobType = dabtUnknown + DefaultValue = '0' + DisplayWidth = 0 + DisplayLabel = 'Porcentaje' + ReadOnly = True + Alignment = taRightJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'COMISION' + DataType = datFloat + BlobType = dabtUnknown + LogChanges = False + DefaultValue = '0' + DisplayWidth = 0 + DisplayLabel = 'Comisi'#243'n' + Alignment = taRightJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + Params = <> + MasterMappingMode = mmDataRequest + StreamingOptions = [soDisableEventsWhileStreaming] + SchemaCall.MethodName = 'GetDatasetSchema' + SchemaCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBinary + end + item + Name = 'aDatasetName' + ParamType = fIn + DataType = rtString + Value = 'VENDEDORESCOMISION' + end> + DataRequestCall.MethodName = 'GetDatasetDataEx' + DataRequestCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBinary + end + item + Name = 'DatasetName' + ParamType = fIn + DataType = rtString + Value = 'VENDEDORESCOMISION' + end + item + Name = 'Params' + ParamType = fIn + DataType = rtUserDefined + UserClassName = 'TDADatasetParamArray' + end + item + Name = 'UserFilter' + ParamType = fIn + DataType = rtString + Value = '' + end + item + Name = 'IncludeSchema' + ParamType = fIn + DataType = rtBoolean + Value = False + end + item + Name = 'MaxRecords' + ParamType = fIn + DataType = rtInteger + Value = -1 + end> + DataUpdateCall.MethodName = 'UpdateData' + DataUpdateCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBinary + end + item + Name = 'Delta' + ParamType = fIn + DataType = rtBinary + end> + ScriptCall.MethodName = 'GetDatasetScripts' + ScriptCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtString + Value = '' + end + item + Name = 'DatasetNames' + ParamType = fIn + DataType = rtString + Value = 'VENDEDORESCOMISION' + end> + ReadOnly = False + RemoteService = RORemoteService + Adapter = DABinAdapter + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'VENDEDORESCOMISION' + IndexDefs = <> + Left = 72 + Top = 152 + end + object ds_VENDEDORESCOMISION: TDADataSource + DataTable = tbl_VENDEDORESCOMISION + Left = 248 + Top = 152 + end + object LoginRemoteService: TRORemoteService + ServiceName = 'srvLogin' + Message = ROBinMessage1 + Channel = ROWinInetHTTPChannel1 + Left = 80 + Top = 320 + end + object DADesigntimeCall1: TDADesigntimeCall + RemoteRequest.MethodName = 'Login' + RemoteRequest.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBoolean + end + item + Name = 'User' + ParamType = fIn + DataType = rtString + Value = 'admin' + end + item + Name = 'Password' + ParamType = fIn + DataType = rtString + Value = '1' + end + item + Name = 'LoginInfo' + ParamType = fOut + DataType = rtUserDefined + UserClassName = 'TRdxLoginInfo' + end> + RemoteService = LoginRemoteService + Left = 80 + Top = 264 + end + object ROWinInetHTTPChannel1: TROWinInetHTTPChannel + ServerLocators = <> + DispatchOptions = [] + ProbeServers = False + ProbeFrequency = 60000 + UserAgent = 'RemObjects SDK' + TargetURL = 'http://localhost:8099/bin' + Left = 80 + Top = 376 + end + object ROBinMessage1: TROBinMessage + Left = 80 + Top = 428 + end + object tbl_COBROSCOMISION: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'SELECCION' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOEMPRESA' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGO' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOCONTACTO' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NOMBRE' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + ReadOnly = True + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHAPAGO' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + ReadOnly = True + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTE' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + ReadOnly = True + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FORMAPAGO' + DataType = datString + Size = 50 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'DESCRIPCION' + DataType = datString + Size = 2000 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOCATEGORIA' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CATEGORIA' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + Params = < + item + Name = 'FECHAINI' + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'FECHAFIN' + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end> + MasterMappingMode = mmDataRequest + StreamingOptions = [soDisableEventsWhileStreaming] + SchemaCall.MethodName = 'GetDatasetSchema' + SchemaCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBinary + end + item + Name = 'aDatasetName' + ParamType = fIn + DataType = rtString + Value = 'COBROSCOMISION' + end> + DataRequestCall.MethodName = 'GetDatasetDataEx' + DataRequestCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBinary + end + item + Name = 'DatasetName' + ParamType = fIn + DataType = rtString + Value = 'COBROSCOMISION' + end + item + Name = 'Params' + ParamType = fIn + DataType = rtUserDefined + UserClassName = 'TDADatasetParamArray' + end + item + Name = 'UserFilter' + ParamType = fIn + DataType = rtString + Value = '' + end + item + Name = 'IncludeSchema' + ParamType = fIn + DataType = rtBoolean + Value = False + end + item + Name = 'MaxRecords' + ParamType = fIn + DataType = rtInteger + Value = -1 + end> + DataUpdateCall.MethodName = 'UpdateData' + DataUpdateCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBinary + end + item + Name = 'Delta' + ParamType = fIn + DataType = rtBinary + end> + ScriptCall.MethodName = 'GetDatasetScripts' + ScriptCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtString + Value = '' + end + item + Name = 'DatasetNames' + ParamType = fIn + DataType = rtString + Value = 'COBROSCOMISION' + end> + ReadOnly = False + RemoteService = RORemoteService + Adapter = DABinAdapter + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'COBROSCOMISION' + IndexDefs = <> + Left = 72 + Top = 104 + end + object ds_COBROSCOMISION: TDADataSource + DataTable = tbl_COBROSCOMISION + Left = 248 + Top = 96 + end +end diff --git a/Modulos/Contactos/Cliente/uDataModuleComisiones.pas b/Modulos/Contactos/Cliente/uDataModuleComisiones.pas new file mode 100644 index 0000000..0e48a7f --- /dev/null +++ b/Modulos/Contactos/Cliente/uDataModuleComisiones.pas @@ -0,0 +1,139 @@ +unit uDataModuleComisiones; + +interface + +uses {vcl:} SysUtils, Classes, DB, DBClient, + {RemObjects:} uDAClientDataModule, uDADataTable, uDABINAdapter, + uROServiceComponent, uRORemoteService, uROClient, uROBinMessage, + uROWinInetHttpChannel, uDataModuleBase, uDAScriptingProvider, + uDACDSDataTable, uBizComisiones, uDADesigntimeCall; + +type + TdmComisiones = class(TDAClientDataModule) + RORemoteService: TRORemoteService; + DABinAdapter: TDABINAdapter; + tbl_VENDEDORESCOMISION: TDACDSDataTable; + ds_VENDEDORESCOMISION: TDADataSource; + LoginRemoteService: TRORemoteService; + DADesigntimeCall1: TDADesigntimeCall; + ROWinInetHTTPChannel1: TROWinInetHTTPChannel; + ROBinMessage1: TROBinMessage; + tbl_COBROSCOMISION: TDACDSDataTable; + ds_COBROSCOMISION: TDADataSource; + procedure DAClientDataModuleCreate(Sender: TObject); + private + function GetVendedoresComision: IBizVendedoresComision; + + public + function GetComision(Codigo : Integer): Float; + procedure SetComision(Codigo : Integer; Comision : Float); + procedure CalcularComisiones; + + function GetCobrosComision(FechaInicial, FechaFinal : TDateTime): IBizCobrosComision; + end; + +var + dmComisiones: TdmComisiones; + +implementation + +uses FactuGES_Intf, DataAbstract_Intf, Controls, forms, uDataTableUtils, + uGUIBase, uEditorComisiones, schComisionesClient_Intf; + +{$R *.DFM} + +{ TdmComisiones } + +procedure TdmComisiones.CalcularComisiones; +var + aObj: IEditorComisiones; +begin + aObj := TfEditorComisiones.Create(Application); + try + with aObj do + begin + ShowModal; + end; + finally + aObj := NIL; + end; +end; + +procedure TdmComisiones.DAClientDataModuleCreate(Sender: TObject); +begin + RORemoteService.Channel := dmBase.ROChannel; + RORemoteService.Message := dmBase.ROMessage; +end; + +function TdmComisiones.GetCobrosComision(FechaInicial, FechaFinal: TDateTime): IBizCobrosComision; +var + dtCobrosComision: TDACDSDataTable; + AParams : TDADatasetParamArray; + ACursor: TCursor; +begin + ACursor := Screen.Cursor; + Screen.Cursor := crHourGlass; + try + dtCobrosComision := TDACDSDataTable.Create(NIL); + CloneDataTable(tbl_CobrosCOMISION, dtCobrosComision); + with dtCobrosComision do + begin + BusinessRulesID := BIZ_CobrosCOMISION; + FieldByName(fld_CobrosCOMISIONSELECCION).BusinessRulesID := BIZ_SELECCION; + + AParams := TDADatasetParamArray.Create; + with AParams.Add do begin + Name := 'FECHAINI'; + Value := FechaInicial; + end; + + with AParams.Add do begin + Name := 'FECHAFIN'; + Value := FechaFinal; + end; + DataRequestCall.ParamByName(par_Params).AsComplexType := AParams; + end; + + (dtCobrosComision as IBizCobrosComision).VendedoresComision := GetVendedoresComision; + + Result := (dtCobrosComision as IBizCobrosComision); + finally + Screen.Cursor := ACursor; + end; +end; + +function TdmComisiones.GetComision(Codigo: Integer): Float; +begin + Result := (RORemoteService as IsrvComisiones).GetComision(Codigo); +end; + +function TdmComisiones.GetVendedoresComision: IBizVendedoresComision; +var + dtVendedoresComision: TDACDSDataTable; + ACursor: TCursor; +begin + ACursor := Screen.Cursor; + Screen.Cursor := crHourGlass; + try + dtVendedoresComision := TDACDSDataTable.Create(NIL); + CloneDataTable(tbl_VENDEDORESCOMISION, dtVendedoresComision); + dtVendedoresComision.BusinessRulesID := BIZ_VENDEDORESCOMISION; + + Result := (dtVendedoresComision as IBizVendedoresComision); + finally + Screen.Cursor := ACursor; + end; +end; + +procedure TdmComisiones.SetComision(Codigo: Integer; Comision: Float); +begin + (RORemoteService as IsrvComisiones).SetComision(Codigo, Comision); +end; + +initialization + dmComisiones := TdmComisiones.Create(nil); + +finalization + FreeAndNil(dmComisiones); + +end. \ No newline at end of file diff --git a/Modulos/Contactos/Cliente/uDataModuleContactos.dfm b/Modulos/Contactos/Cliente/uDataModuleContactos.dfm new file mode 100644 index 0000000..36268f6 --- /dev/null +++ b/Modulos/Contactos/Cliente/uDataModuleContactos.dfm @@ -0,0 +1,654 @@ +object dmContactos: TdmContactos + OldCreateOrder = True + OnCreate = DAClientDataModuleCreate + RemoteService = RORemoteService + Adapter = DABINAdapter + SchemaCall.MethodName = 'GetSchemaAsXML' + SchemaCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtString + end> + Left = 328 + Top = 337 + Height = 498 + Width = 531 + object RORemoteService: TRORemoteService + ServiceName = 'srvContactos' + Message = dmBase.ROMessage + Channel = dmBase.ROChannel + Left = 48 + Top = 20 + end + object DABINAdapter: TDABINAdapter + Left = 48 + Top = 88 + end + object tbl_Categorias: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'CODIGO' + DataType = datAutoInc + BlobType = dabtUnknown + GeneratorName = 'GEN_CATEGORIAS' + Required = True + DisplayWidth = 0 + DisplayLabel = 'C'#243'd. categor'#237'a' + Alignment = taLeftJustify + DictionaryEntry = 'CODIGOCATEGORIA_GEN' + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'DESCRIPCION' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + Params = <> + MasterMappingMode = mmDataRequest + StreamingOptions = [soDisableEventsWhileStreaming] + SchemaCall.MethodName = 'GetDatasetSchema' + SchemaCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBinary + end + item + Name = 'aDatasetName' + ParamType = fIn + DataType = rtString + Value = 'Categorias' + end> + DataRequestCall.MethodName = 'GetDatasetDataEx' + DataRequestCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBinary + end + item + Name = 'DatasetName' + ParamType = fIn + DataType = rtString + Value = 'Categorias' + end + item + Name = 'Params' + ParamType = fIn + DataType = rtUserDefined + UserClassName = 'TDADatasetParamArray' + end + item + Name = 'UserFilter' + ParamType = fIn + DataType = rtString + Value = '' + end + item + Name = 'IncludeSchema' + ParamType = fIn + DataType = rtBoolean + Value = False + end + item + Name = 'MaxRecords' + ParamType = fIn + DataType = rtInteger + Value = -1 + end> + DataUpdateCall.MethodName = 'UpdateData' + DataUpdateCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBinary + end + item + Name = 'Delta' + ParamType = fIn + DataType = rtBinary + end> + ScriptCall.MethodName = 'GetDatasetScripts' + ScriptCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtString + Value = '' + end + item + Name = 'DatasetNames' + ParamType = fIn + DataType = rtString + Value = 'Categorias' + end> + ReadOnly = False + RemoteService = RORemoteService + Adapter = DABINAdapter + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'Categorias' + IndexDefs = <> + Left = 248 + Top = 232 + end + object ds_Categorias: TDADataSource + DataTable = tbl_Categorias + Left = 392 + Top = 216 + end + object tbl_CategoriasContacto: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'CODIGOCONTACTO' + DataType = datInteger + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'C'#243'd. contacto' + Alignment = taLeftJustify + DictionaryEntry = 'CODIGOCONTACTO' + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOCATEGORIA' + DataType = datInteger + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'C'#243'd. categor'#237'a' + Alignment = taLeftJustify + DictionaryEntry = 'CODIGOCATEGORIA' + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end> + Params = < + item + Name = 'CODIGOCONTACTO' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end> + MasterMappingMode = mmParams + MasterParamsMappings.Strings = ( + 'CODIGOCONTACTO=CODIGO') + StreamingOptions = [soDisableEventsWhileStreaming] + SchemaCall.MethodName = 'GetDatasetSchema' + SchemaCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBinary + end + item + Name = 'aDatasetName' + ParamType = fIn + DataType = rtString + Value = 'CategoriasContacto' + end> + DataRequestCall.MethodName = 'GetDatasetDataEx' + DataRequestCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBinary + end + item + Name = 'DatasetName' + ParamType = fIn + DataType = rtString + Value = 'CategoriasContacto' + end + item + Name = 'Params' + ParamType = fIn + DataType = rtUserDefined + UserClassName = 'TDADatasetParamArray' + end + item + Name = 'UserFilter' + ParamType = fIn + DataType = rtString + Value = '' + end + item + Name = 'IncludeSchema' + ParamType = fIn + DataType = rtBoolean + Value = False + end + item + Name = 'MaxRecords' + ParamType = fIn + DataType = rtInteger + Value = -1 + end> + DataUpdateCall.MethodName = 'UpdateData' + DataUpdateCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBinary + end + item + Name = 'Delta' + ParamType = fIn + DataType = rtBinary + end> + ScriptCall.MethodName = 'GetDatasetScripts' + ScriptCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtString + Value = '' + end + item + Name = 'DatasetNames' + ParamType = fIn + DataType = rtString + Value = 'CategoriasContacto' + end> + ReadOnly = False + RemoteService = RORemoteService + Adapter = DABINAdapter + MasterSource = ds_Contactos + MasterFields = 'CODIGO' + DetailFields = 'CODIGOCONTACTO' + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'CategoriasContacto' + IndexDefs = <> + Left = 248 + Top = 128 + end + object ds_CategoriasContacto: TDADataSource + DataTable = tbl_CategoriasContacto + Left = 400 + Top = 128 + end + object tbl_Contactos: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'CODIGOEMPRESA' + DataType = datInteger + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'C'#243'd. empresa' + Alignment = taLeftJustify + DictionaryEntry = 'CODIGOEMPRESA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGO' + DataType = datInteger + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'C'#243'd. contacto' + Alignment = taLeftJustify + DictionaryEntry = 'CODIGOCONTACTO' + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHAALTA' + DataType = datDateTime + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'Fecha de alta' + Alignment = taLeftJustify + DictionaryEntry = 'FECHAALTA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'USUARIO' + DataType = datString + Size = 100 + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'Usuario de alta' + Alignment = taLeftJustify + DictionaryEntry = 'USUARIO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NIFCIF' + DataType = datString + Size = 10 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'NIF/CIF' + Alignment = taLeftJustify + DictionaryEntry = 'NIFCIF' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NOMBRE' + DataType = datString + Size = 100 + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'Nombre' + Alignment = taLeftJustify + DictionaryEntry = 'NOMBRE' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NOTAS' + DataType = datString + Size = 2000 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Notas' + Alignment = taLeftJustify + DictionaryEntry = 'NOTAS' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CALLE' + DataType = datString + Size = 150 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Calle' + Alignment = taLeftJustify + DictionaryEntry = 'CALLE' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PROVINCIA' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Provincia' + Alignment = taLeftJustify + DictionaryEntry = 'PROVINCIA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOPOSTAL' + DataType = datString + Size = 5 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'C'#243'd. postal' + Alignment = taLeftJustify + DictionaryEntry = 'CODIGOPOSTAL' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'POBLACION' + DataType = datString + Size = 40 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Poblaci'#243'n' + Alignment = taLeftJustify + DictionaryEntry = 'POBLACION' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'TELEFONO1' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Tlf. particular' + Alignment = taLeftJustify + DictionaryEntry = 'TELEFONOPARTICULAR' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'TELEFONO2' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Tlf. trabajo' + Alignment = taLeftJustify + DictionaryEntry = 'TELEFONOTRABAJO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'MOVIL' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'M'#243'vil' + Alignment = taLeftJustify + DictionaryEntry = 'MOVIL' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FAX' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Fax' + Alignment = taLeftJustify + DictionaryEntry = 'FAX' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CORREO1' + DataType = datString + Size = 60 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'E-mail' + Alignment = taLeftJustify + DictionaryEntry = 'CORREO1' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CORREO2' + DataType = datString + Size = 60 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'E-mail' + Alignment = taLeftJustify + DictionaryEntry = 'CORREO2' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PAGINAWEB' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'P'#225'gina web' + Alignment = taLeftJustify + DictionaryEntry = 'PAGINAWEB' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PERSONACONTACTO' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Persona de contacto' + Alignment = taLeftJustify + DictionaryEntry = 'PERSONACONTACTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + Params = <> + MasterMappingMode = mmDataRequest + StreamingOptions = [soDisableEventsWhileStreaming] + SchemaCall.MethodName = 'GetDatasetSchema' + SchemaCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBinary + end + item + Name = 'aDatasetName' + ParamType = fIn + DataType = rtString + Value = 'Contactos' + end> + DataRequestCall.MethodName = 'GetDatasetDataEx' + DataRequestCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBinary + end + item + Name = 'DatasetName' + ParamType = fIn + DataType = rtString + Value = 'Contactos' + end + item + Name = 'Params' + ParamType = fIn + DataType = rtUserDefined + UserClassName = 'TDADatasetParamArray' + end + item + Name = 'UserFilter' + ParamType = fIn + DataType = rtString + Value = '' + end + item + Name = 'IncludeSchema' + ParamType = fIn + DataType = rtBoolean + Value = False + end + item + Name = 'MaxRecords' + ParamType = fIn + DataType = rtInteger + Value = -1 + end> + DataUpdateCall.MethodName = 'UpdateData' + DataUpdateCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBinary + end + item + Name = 'Delta' + ParamType = fIn + DataType = rtBinary + end> + ScriptCall.MethodName = 'GetDatasetScripts' + ScriptCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtString + Value = '' + end + item + Name = 'DatasetNames' + ParamType = fIn + DataType = rtString + Value = 'Contactos' + end> + ReadOnly = False + RemoteService = RORemoteService + Adapter = DABINAdapter + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'Contactos' + IndexDefs = <> + Left = 248 + Top = 32 + end + object ds_Contactos: TDADataSource + DataTable = tbl_Contactos + Left = 392 + Top = 32 + end +end diff --git a/Modulos/Contactos/Cliente/uDataModuleContactos.pas b/Modulos/Contactos/Cliente/uDataModuleContactos.pas new file mode 100644 index 0000000..596dd27 --- /dev/null +++ b/Modulos/Contactos/Cliente/uDataModuleContactos.pas @@ -0,0 +1,335 @@ +unit uDataModuleContactos; + +interface + +uses {vcl:} SysUtils, Classes, DB, DBClient, + {RemObjects:} uDAClientDataModule, uDADataTable, uDABINAdapter, + uROServiceComponent, uRORemoteService, uROClient, uROBinMessage, + uROWinInetHttpChannel, uDAScriptingProvider, uDACDSDataTable, + uBizContacto; + +type + TdmContactos = class(TDAClientDataModule) + DABINAdapter: TDABINAdapter; + RORemoteService: TRORemoteService; + tbl_Categorias: TDACDSDataTable; + ds_Categorias: TDADataSource; + tbl_CategoriasContacto: TDACDSDataTable; + ds_CategoriasContacto: TDADataSource; + tbl_Contactos: TDACDSDataTable; + ds_Contactos: TDADataSource; + procedure DAClientDataModuleCreate(Sender: TObject); + private + function GetContactos(CodigoCategoria : Integer): IBizContacto; + + function GetContacto(CodigoCategoria : Integer; const Codigo : Integer): IBizContacto; overload; + public + function PuedoEliminarContacto (CodigoContacto : Integer) : Boolean; + function GetNextAutoinc : integer; + procedure Preview; + + procedure GetContacto(AContacto : IBizContacto; const Codigo : Integer); overload; + + function GetCliente(Codigo : Integer): IBizCliente; + function GetProveedor(Codigo : Integer): IBizProveedor; + function GetInstalador(Codigo : Integer): IBizInstalador; + function GetVendedor(Codigo : Integer): IBizVendedor; + + function GetClientes: IBizCliente; + function GetProveedores: IBizProveedor; + function GetInstaladores : IBizInstalador; + function GetVendedores : IBizVendedor; + + function GetItemsSeleccionados(ASource : IBizContacto): IBizContacto; + + end; + +var + dmContactos: TdmContactos; + +implementation + +{$R *.DFM} + +uses + Controls, Forms, uDAInterfaces, DataAbstract_Intf, FactuGES_Intf, + uDataTableUtils, uROTypes, uEditorPreview, + Dialogs, schContactosClient_Intf, uDataModuleBase, uDBSelectionList; + +procedure TdmContactos.DAClientDataModuleCreate(Sender: TObject); +begin + RORemoteService.Channel := dmBase.Channel; + RORemoteService.Message := dmBase.Message; +end; + +function TdmContactos.GetClientes: IBizCliente; +var + ACliente: IBizCliente; +begin + ACliente := (GetContactos(CLIENTE) as IBizCliente); + Result := ACliente; +end; + +function TdmContactos.GetProveedores: IBizProveedor; +var + AProveedor: IBizProveedor; +begin + AProveedor := (GetContactos(PROVEEDOR) as IBizProveedor); + Result := AProveedor; +end; + +function TdmContactos.GetContactos(CodigoCategoria : Integer): IBizContacto; +var + dtContactos: TDACDSDataTable; + dtCategorias: TDACDSDataTable; + ACursor: TCursor; +begin + ACursor := Screen.Cursor; + Screen.Cursor := crHourGlass; + try + dtContactos := TDACDSDataTable.Create(NIL); + CloneDataTable(tbl_Contactos, dtContactos); + with dtContactos do + begin + case CodigoCategoria of + CLIENTE : BusinessRulesID := BIZ_CLIENTE; + PROVEEDOR : BusinessRulesID := BIZ_PROVEEDOR; + INSTALADOR : BusinessRulesID := BIZ_INSTALADOR; + VENDEDOR : begin + BusinessRulesID := BIZ_VENDEDOR; + with Fields.Add do + begin + Name := fld_ContactosCOMISION; + DisplayLabel := 'Comisión'; + LogChanges := False; + Calculated := True; + Alignment := taRightJustify; + DataType := datFloat; + BlobType := dabtUnknown; + InPrimaryKey := False; + Lookup := False; + LookupCache := False; + end; + end; + end; + Where.Clear; + // No funciona porque la columna no está en la select + // --> Where.AddCondition(fld_CategoriasContactoCODIGOCATEGORIA, cEqual, CLIENTE); + Where.AddText(fld_CategoriasContactoCODIGOCATEGORIA + '=' + IntToStr(CODIGOCATEGORIA)); + end; + + dtCategorias := TDACDSDataTable.Create(NIL); + CloneDataTable(tbl_CategoriasContacto, dtCategorias); + with dtCategorias do + begin + BusinessRulesID := BIZ_CATEGORIACONTACTO; + DetailOptions := DetailOptions - [dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates]; + end; + + (dtContactos as IBizContacto).Categorias := (dtCategorias as IBizCategoriasContacto); + + Result := (dtContactos as IBizContacto); + finally + Screen.Cursor := ACursor; + end; +end; + +procedure TdmContactos.Preview; +var + AStream: TMemoryStream; + AEditorPreview : TfEditorPreview; +begin + AStream := Binary.Create; + AEditorPreview := TfEditorPreview.Create(Application); + try + AStream := (RemoteService as ISrvContactos).GenerateReport; + AEditorPreview.Report.PreviewPages.LoadFromStream(AStream); + AEditorPreview.ShowModal; + finally + AEditorPreview.Release; + AStream.Free; + end; +end; + +function TdmContactos.GetCliente(Codigo: Integer): IBizCliente; +var + ACursor: TCursor; +begin + ACursor := Screen.Cursor; + Screen.Cursor := crHourGlass; + try + Result := (GetContacto(CLIENTE, Codigo) as IBizCliente); + finally + Screen.Cursor := ACursor; + end; +end; + +function TdmContactos.GetItemsSeleccionados(ASource: IBizContacto): IBizContacto; +var + aObj : ISelectedRowList; + dtContacto : IBizContacto; + i : integer; +begin + if Supports(ASource, ISelectedRowList, aObj) then + begin + if (aObj.SelectedRows.Count = 1) then + begin + ASource.DataTable.GotoBookmark(aObj.SelectedRows[0]); + if Supports(ASource, IBizCliente) then + Result := GetCliente(ASource.CODIGO) + else if Supports(ASource, IBizProveedor) then + Result := GetProveedor(ASource.CODIGO); +// else if Supports(ASource, IBizInstalador) then +// Result := GetInstalador(ASource.CODIGO); + Exit; + end + else + begin + if Supports(ASource, IBizCliente) then + dtContacto := GetClientes + else if Supports(ASource, IBizProveedor) then + dtContacto := GetProveedores; +// else if Supports(ASource, IBizInstalador) then +// dtContacto := GetInstaladores; + end; + end + else + raise Exception.Create('Interface no soportada (GetItemsSeleccionados)'); + + + if dtContacto.DataTable.Active then + dtContacto.DataTable.Active := False; + with dtContacto.DataTable.Where do + begin + Clear; + for i := 0 to aObj.SelectedRows.Count - 1 do + begin + ASource.DataTable.GotoBookmark(aObj.SelectedRows[i]); + if i > 0 then + AddOperator(opAND); + AddCondition(fld_ContactosCODIGO, cEqual, ASource.CODIGO); + end; + end; + Result := dtContacto; +end; + +function TdmContactos.GetInstaladores: IBizInstalador; +var + AInstalador: IBizInstalador; +begin + AInstalador := (GetContactos(INSTALADOR) as IBizInstalador); + Result := AInstalador; +end; + +function TdmContactos.GetProveedor(Codigo: Integer): IBizProveedor; +var + ACursor: TCursor; +begin + ACursor := Screen.Cursor; + Screen.Cursor := crHourGlass; + try + Result := (GetContacto(PROVEEDOR, Codigo) as IBizProveedor); + finally + Screen.Cursor := ACursor; + end; +end; + +function TdmContactos.GetNextAutoinc: integer; +begin + Result := (RORemoteService as IsrvContactos).GetNextAutoinc; +end; + +function TdmContactos.PuedoEliminarContacto( + CodigoContacto: Integer): Boolean; +begin + Result := (RORemoteService as IsrvContactos).PuedoEliminarContacto(CodigoContacto); +end; + +function TdmContactos.GetVendedores: IBizVendedor; +var + AVendedor: IBizVendedor; +begin + AVendedor := (GetContactos(VENDEDOR) as IBizVendedor); + Result := AVendedor; +end; + +procedure TdmContactos.GetContacto(AContacto: IBizContacto; + const Codigo: Integer); +var + AuxCategoria : Integer; +begin + with AContacto.DataTable do + begin + if Active then + Active := False; + Where.Clear; + // No funciona porque la columna no está en la select + // --> Where.AddCondition(fld_CategoriasContactoCODIGOCATEGORIA, cEqual, CLIENTE); + + if Supports(AContacto, IBizCliente) then + AuxCategoria := CLIENTE + else begin + if Supports(AContacto, IBizProveedor) then + AuxCategoria := PROVEEDOR + else begin + if Supports(AContacto, IBizInstalador) then + AuxCategoria := INSTALADOR + else begin + if Supports(AContacto, IBizVendedor) then + AuxCategoria := VENDEDOR + else + raise Exception.Create('Tipo de contacto desconocido (GetContacto)'); + end; + end; + end; + + Where.AddText(fld_CategoriasContactoCODIGOCATEGORIA + '=' + IntToStr(AuxCategoria)); + Where.AddOperator(opAND); + Where.AddCondition(fld_ContactosCODIGO, cEqual, Codigo); + end; +end; + +function TdmContactos.GetInstalador(Codigo: Integer): IBizInstalador; +var + ACursor: TCursor; +begin + ACursor := Screen.Cursor; + Screen.Cursor := crHourGlass; + try + Result := (GetContacto(INSTALADOR, Codigo) as IBizInstalador); + finally + Screen.Cursor := ACursor; + end; +end; + +function TdmContactos.GetVendedor(Codigo: Integer): IBizVendedor; +var + ACursor: TCursor; +begin + ACursor := Screen.Cursor; + Screen.Cursor := crHourGlass; + try + Result := (GetContacto(VENDEDOR, Codigo) as IBizVendedor); + finally + Screen.Cursor := ACursor; + end; +end; + +function TdmContactos.GetContacto(CodigoCategoria: Integer; + const Codigo: Integer): IBizContacto; +var + AContactos : IBizContacto; +begin + AContactos := GetContactos(CodigoCategoria) as IBizContacto; + GetContacto(AContactos, Codigo); + Result := AContactos; +end; + +initialization + dmContactos := TdmContactos.Create(nil); + +finalization + FreeAndNil(dmContactos); + +end. + diff --git a/Modulos/Contactos/Cliente/uEditorCliente.dfm b/Modulos/Contactos/Cliente/uEditorCliente.dfm new file mode 100644 index 0000000..f21c961 --- /dev/null +++ b/Modulos/Contactos/Cliente/uEditorCliente.dfm @@ -0,0 +1,57 @@ +inherited fEditorCliente: TfEditorCliente + Left = 387 + Top = 297 + Caption = 'Ficha de cliente' + ClientHeight = 464 + ClientWidth = 592 + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + Width = 592 + inherited Image1: TImage + Left = 565 + Picture.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001800 + 0000180806000000E0773DF80000000970485973000017120000171201679FD2 + 520000000467414D410000B18E7CFB51930000033B4944415478DADD957F6856 + 5518C73F77EF0FDFBDB9B94DC1214D5BB2FD61A3B0399236D6642496A32874A1 + 329D2D322C7F24686C0D539318FE964419E29F6AFF5810D982821CBA0D572928 + 46A4AD36B7D770BEEFF6FEBA7BEF3DF7DEB773A72EDFDE3BD71FEE1F0F3CDC73 + 78CEF97E9EE73CE79CAB24934926B3298F07E0EB73BF4E0AE5B5AA79CA18400E + C61C86162270F93043033D986692E9454B99337F459A80695AA37EFB6B58D6BD + F1DDFE2BAB3EE2D277479D01033FED440FFC4E389C60381263C47431B7BC9EE2 + 05B5FF4BDCFED6AC6E7406F47535A1057AE5242FD1689C585C951627AA06A9AC + FB9C278B5F1A136F3A2D1CB766D3E2115E5FFB713A203E78893F2F1C401D1A91 + C571CBA9493C2E055DE80C066F93F55429E5CB0F3D34F251B392BCD9D09C0E08 + F67C457FF7492CCD853FD38FCFEB41C142681AAAAA72FD763F351F768E8A08C3 + 64D797CEC57DAF2A46EDBAEDCE80E16B67F0E1C7E3F6482103210442D7D125E4 + 7AD8A2BAE1F4B8D15B7666327A43F657AEDF910E880C7413BAF2051989613214 + 19BB5C681806868444E30922D32B295DBC7E42717B5CB761977391FBBB5AD16E + 76CAED37B17DA66167A13310715358BD8D1905CF4C286E5BFDE6DDCE806B7D17 + E8ED68656622814716591882802AB893534259453D3373674F286EFBDED9F259 + 3AE07C7F072DDDFBE9BBF51BCBF4222AF29F261009D13674836EF30ED5854B78 + 7FE106F29E98312AD47CF01BC7226F5C5DC5BAAD2DA980E7E64F655FE711DA03 + 5DA8DE30B9A129AC29A9E5AFE19B7C1B6C079F0F821994E79552B7E06D0AB2E7 + A4446E9FAA0733FBA0716F2A80593DECF9F118514610D3E2E8468CBC58169A57 + 10F70B7C46164AC84B70B097A5C5AFB2B5E2133E3DDAE698C1BB6F95B3A9797F + 2A2090DDC1DE1F5AC9F6E5626427107E699ABC702E175E251377DC872BECE3EF + 500F453905B4BE71EAA1176DCBF603A90033FF0F769FDD879600F7340F56A620 + E936E569525074372ED5432C1C269618A4A6A4868D658DEC39FEBD63060DCB5F + 4C07BCFC4211576F5DE5F8C513FC7CE3171991B0B5EDD7027999A52964E678D9 + 5CD6C4B3F9A5E3467EBFA5011695CD1D77D1442FE77FC51D0195CF173E327147 + C08E96238FFA87F62F6032DBA403FE011B7940FEE55D65A30000000049454E44 + AE426082} + end + end + inherited TBXDock: TTBXDock + Width = 592 + end + inherited pgPaginas: TPageControl + Width = 592 + Height = 369 + end + inherited StatusBar: TStatusBar + Top = 445 + Width = 592 + end +end diff --git a/Modulos/Contactos/Cliente/uEditorCliente.pas b/Modulos/Contactos/Cliente/uEditorCliente.pas new file mode 100644 index 0000000..8086a52 --- /dev/null +++ b/Modulos/Contactos/Cliente/uEditorCliente.pas @@ -0,0 +1,80 @@ +unit uEditorCliente; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uEditorContacto, ImgList, PngImageList, StdActns, ActnList, TBX, + TB2Item, TB2Dock, TB2Toolbar, ComCtrls, JvExControls, JvComponent, + JvNavigationPane, uViewCliente, uBizContacto, DB, uDADataTable, + JvFormAutoSize, uDAScriptingProvider, uDACDSDataTable, uCustomView, + uViewBase, uViewMensaje, JvAppStorage, JvAppRegistryStorage, + JvFormPlacement, ExtCtrls, pngimage; + +type + IEditorCliente = interface(IEditorContacto) + ['{18215A21-1EDD-4E72-A69F-87C8E4347E84}'] + end; + + TfEditorCliente = class(TfEditorContacto, IEditorCliente) + procedure actEliminarExecute(Sender: TObject); + procedure dsDataTableDataChange(Sender: TObject; Field: TField); + public + constructor Create(AOwner: TComponent); override; + end; + +implementation + +uses + uEditorUtils, uEditorItem, uDataModuleContactos, + uDataModuleBase, uEditorBase; + +{$R *.dfm} + +function ShowEditorCliente (ABizObject : TDADataTableRules) : TModalResult; +var + AEditor: TfEditorCliente; +begin + AEditor := TfEditorCliente.Create(Application); + try + AEditor.Contacto := (ABizObject as IBizCliente); + Result := AEditor.ShowModal; + finally + AEditor.Release; + end; +end; + +procedure TfEditorCliente.actEliminarExecute(Sender: TObject); +begin + if (Application.MessageBox('¿Desea borrar este cliente?', 'Atención', MB_YESNO) = IDYES) then + inherited; +end; + +constructor TfEditorCliente.Create(AOwner: TComponent); +begin + inherited; + ViewContacto := CreateView(TfrViewCliente) as IViewCliente; +end; + +procedure TfEditorCliente.dsDataTableDataChange(Sender: TObject; + Field: TField); +begin + inherited; + if Assigned(Contacto) and (not (Contacto.DataTable.Fetching) or + not (Contacto.DataTable.Opening) or not (Contacto.DataTable.Closing)) then + begin + if Length(Contacto.NOMBRE) = 0 then + JvNavPanelHeader.Caption := 'Nuevo cliente' + else + JvNavPanelHeader.Caption := Contacto.NOMBRE; + Self.Caption := JvNavPanelHeader.Caption; + end; +end; + +initialization + RegisterEditor(IBizCliente, ShowEditorCliente, etItem); + +finalization + + +end. diff --git a/Modulos/Contactos/Cliente/uEditorClientes.ddp b/Modulos/Contactos/Cliente/uEditorClientes.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Contactos/Cliente/uEditorClientes.ddp differ diff --git a/Modulos/Contactos/Cliente/uEditorClientes.dfm b/Modulos/Contactos/Cliente/uEditorClientes.dfm new file mode 100644 index 0000000..757f0bb --- /dev/null +++ b/Modulos/Contactos/Cliente/uEditorClientes.dfm @@ -0,0 +1,1400 @@ +inherited fEditorClientes: TfEditorClientes + Left = 441 + Top = 313 + Width = 693 + Caption = 'Lista de clientes' + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + Width = 685 + Caption = 'Lista de clientes' + inherited Image1: TImage + Left = 658 + Picture.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001800 + 0000180806000000E0773DF80000000970485973000017120000171201679FD2 + 520000000467414D410000B18E7CFB51930000033B4944415478DADD957F6856 + 5518C73F77EF0FDFBDB9B94DC1214D5BB2FD61A3B0399236D6642496A32874A1 + 329D2D322C7F24686C0D539318FE964419E29F6AFF5810D982821CBA0D572928 + 46A4AD36B7D770BEEFF6FEBA7BEF3DF7DEB773A72EDFDE3BD71FEE1F0F3CDC73 + 78CEF97E9EE73CE79CAB24934926B3298F07E0EB73BF4E0AE5B5AA79CA18400E + C61C86162270F93043033D986692E9454B99337F459A80695AA37EFB6B58D6BD + F1DDFE2BAB3EE2D277479D01033FED440FFC4E389C60381263C47431B7BC9EE2 + 05B5FF4BDCFED6AC6E7406F47535A1057AE5242FD1689C585C951627AA06A9AC + FB9C278B5F1A136F3A2D1CB766D3E2115E5FFB713A203E78893F2F1C401D1A91 + C571CBA9493C2E055DE80C066F93F55429E5CB0F3D34F251B392BCD9D09C0E08 + F67C457FF7492CCD853FD38FCFEB41C142681AAAAA72FD763F351F768E8A08C3 + 64D797CEC57DAF2A46EDBAEDCE80E16B67F0E1C7E3F6482103210442D7D125E4 + 7AD8A2BAE1F4B8D15B7666327A43F657AEDF910E880C7413BAF2051989613214 + 19BB5C681806868444E30922D32B295DBC7E42717B5CB761977391FBBB5AD16E + 76CAED37B17DA66167A13310715358BD8D1905CF4C286E5BFDE6DDCE806B7D17 + E8ED68656622814716591882802AB893534259453D3373674F286EFBDED9F259 + 3AE07C7F072DDDFBE9BBF51BCBF4222AF29F261009D13674836EF30ED5854B78 + 7FE106F29E98312AD47CF01BC7226F5C5DC5BAAD2DA980E7E64F655FE711DA03 + 5DA8DE30B9A129AC29A9E5AFE19B7C1B6C079F0F821994E79552B7E06D0AB2E7 + A4446E9FAA0733FBA0716F2A80593DECF9F118514610D3E2E8468CBC58169A57 + 10F70B7C46164AC84B70B097A5C5AFB2B5E2133E3DDAE698C1BB6F95B3A9797F + 2A2090DDC1DE1F5AC9F6E5626427107E699ABC702E175E251377DC872BECE3EF + 500F453905B4BE71EAA1176DCBF603A90033FF0F769FDD879600F7340F56A620 + E936E569525074372ED5432C1C269618A4A6A4868D658DEC39FEBD63060DCB5F + 4C07BCFC4211576F5DE5F8C513FC7CE3171991B0B5EDD7027999A52964E678D9 + 5CD6C4B3F9A5E3467EBFA5011695CD1D77D1442FE77FC51D0195CF173E327147 + C08E96238FFA87F62F6032DBA403FE011B7940FEE55D65A30000000049454E44 + AE426082} + end + end + inherited TBXDock: TTBXDock + Width = 685 + inherited tbxFiltro: TTBXToolbar + Left = 411 + end + end + inherited StatusBar: TStatusBar + Width = 685 + end + inherited frViewBarraSeleccion: TfrViewBarraSeleccion + Width = 685 + inherited pnlSeleccion: TPanel + Width = 685 + inherited bSeleccionar: TButton + Left = 522 + end + inherited bCancelar: TButton + Left = 601 + end + end + end + inherited EditorActionList: TActionList + inherited actNuevo: TAction + ImageIndex = 22 + 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 + 610000000970485973000017120000171201679FD252000001EC4944415478DA + A5934B6813511486BF541B88CD26620DA262A51BDB8520158308D5852055B01B + A3E8CEBD2E7CE063512852D09D2E82E04604AB1B5D4451B059D8A6010D84D842 + 5B6B6B1A8D414A4C9B18EB4C27F3F466D41943ED4233309C3BDC39DFFFDF9F7B + 3C9665D1C8E379323CD510C1061C3DD0697F48C531BEE7A7EDB57F6B072DADBB + 9C1F4DE154D74D34DD70DE43272FB9805AF3975484E56F1A856289C2D23CFB4F + 44D8D4BE17DD30B932A8D629B7358D70F7C1D39F8023FBB6917B35C0D78F590C + 43EC5A06954A8505A5C4B1CB2947F14F07D158D205F48436F03E761E640FEB7C + 3ED660204B3263B9597A2F24ED866B8F59DD414F28C8E7443FDE6A55A883AAA9 + 28F232F3FA7ABA8EDFAC53FEBD1E1A4DBB805A0685370F91E65E0880084BD358 + 9255CCB65EDAF784571E413378F97ABC1E90C8C6C88EDC6687E9150EAAA415D8 + BCFB14DD9D875734D76A2235E102B674A85C1CEEA3B498E374F020A666727F21 + 4E662ECFDBAB19BBB9EFD6B3BA0C423B37BA80A4F188E733A32881327EA91991 + 22924FA7B9E427373B45FADCB4A3ACFD72929E78E702EE1506C8E68B18AD0AEA + 5A595C2F44A02D3495BD7CF8344EF2CC24D7EFC4567770361EA65C2EFCF5AA06 + 0241A2E1215BD5302DBB9AA24ECE645C4077D77606A3F17F9E0307D07F23F2FF + C3D4E838FF008E7263BE13CA147C0000000049454E44AE426082} + Name = 'PngImage22' + Background = clWindow + end> + 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 + F80000000970485973000017120000171201679FD2520000033B4944415478DA + DD957F68565518C73F77EF0FDFBDB9B94DC1214D5BB2FD61A3B0399236D66424 + 96A32874A1329D2D322C7F24686C0D539318FE964419E29F6AFF5810D982821C + BA0D57292846A4AD36B7D770BEEFF6FEBA7BEF3DF7DEB773A72EDFDE3BD71FEE + 1F0F3CDC7378CEF97E9EE73CE79CAB24934926B3298F07E0EB73BF4E0AE5B5AA + 79CA18400EC61C86162270F93043033D986692E9454B99337F459A80695AA37E + FB6B58D6BDF1DDFE2BAB3EE2D277479D01033FED440FFC4E389C60381263C474 + 31B7BC9EE205B5FF4BDCFED6AC6E7406F47535A1057AE5242FD1689C585C9516 + 27AA06A9ACFB9C278B5F1A136F3A2D1CB766D3E2115E5FFB713A203E78893F2F + 1C401D1A91C571CBA9493C2E055DE80C066F93F55429E5CB0F3D34F251B392BC + D9D09C0E08F67C457FF7492CCD853FD38FCFEB41C142681AAAAA72FD763F351F + 768E8A08C364D797CEC57DAF2A46EDBAEDCE80E16B67F0E1C7E3F64821032104 + 42D7D125E47AD8A2BAE1F4B8D15B7666327A43F657AEDF910E880C7413BAF205 + 198961321419BB5C681806868444E30922D32B295DBC7E42717B5CB761977391 + FBBB5AD16E76CAED37B17DA66167A13310715358BD8D1905CF4C286E5BFDE6DD + CE806B7D17E8ED68656622814716591882802AB893534259453D3373674F286E + FBDED9F2593AE07C7F072DDDFBE9BBF51BCBF4222AF29F261009D13674836EF3 + 0ED5854B787FE106F29E98312AD47CF01BC7226F5C5DC5BAAD2DA980E7E64F65 + 5FE711DA035DA8DE30B9A129AC29A9E5AFE19B7C1B6C079F0F821994E79552B7 + E06D0AB2E7A4446E9FAA0733FBA0716F2A80593DECF9F118514610D3E2E8468C + BC58169A5710F70B7C46164AC84B70B097A5C5AFB2B5E2133E3DDAE698C1BB6F + 95B3A9797F2A2090DDC1DE1F5AC9F6E5626427107E699ABC702E175E251377DC + 872BECE3EF500F453905B4BE71EAA1176DCBF603A90033FF0F769FDD879600F7 + 340F56A620E936E569525074372ED5432C1C269618A4A6A4868D658DEC39FEBD + 63060DCB5F4C07BCFC4211576F5DE5F8C513FC7CE3171991B0B5EDD7027999A5 + 2964E678D95CD6C4B3F9A5E3467EBFA5011695CD1D77D1442FE77FC51D0195CF + 173E327147C08E96238FFA87F62F6032DBA403FE011B7940FEE55D65A3000000 + 0049454E44AE426082} + Name = 'PngImage21' + Background = clWindow + end> + Bitmap = {} + end +end diff --git a/Modulos/Contactos/Cliente/uEditorClientes.pas b/Modulos/Contactos/Cliente/uEditorClientes.pas new file mode 100644 index 0000000..eccd4a7 --- /dev/null +++ b/Modulos/Contactos/Cliente/uEditorClientes.pas @@ -0,0 +1,117 @@ +unit uEditorClientes; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uEditorContactos, Menus, ImgList, PngImageList, StdActns, + ActnList, TB2ExtItems, TBXExtItems, TBX, TB2Item, TB2Dock, TB2Toolbar, + JvExControls, JvComponent, JvNavigationPane, DB, uDADataTable, + JvFormAutoSize, ComCtrls, uDAScriptingProvider, uDACDSDataTable, StdCtrls, + JvAppStorage, JvAppRegistryStorage, JvFormPlacement, uCustomView, + uViewBase, uViewBarraSeleccion, ExtCtrls, pngimage, JvComponentBase; + +type + IEditorClientes = interface(IEditorContactos) + ['{C4C456DA-6E1F-41E7-A48D-B743BDD7FA18}'] + end; + + TfEditorClientes = class(TfEditorContactos, IEditorClientes) + procedure actEliminarExecute(Sender: TObject); + procedure actDuplicarExecute(Sender: TObject); + private + function GetSelectionBarVisible: Boolean; + procedure SetSelectionBarVisible(const Value: Boolean); + public + property SelectionBarVisible : Boolean read GetSelectionBarVisible write + SetSelectionBarVisible; + constructor Create(AOwner: TComponent); override; + end; + +implementation + +uses + uViewClientes, uViewContactos, uEditorUtils, + uDataModuleContactos, uDataModuleBase, uEditorGrid, uBizContacto, + uDBSelectionList; + +{$R *.dfm} + +function ShowEditorClientes (ABizObject : TDADataTableRules) : TModalResult; +var + AEditor: TfEditorClientes; +begin + AEditor := TfEditorClientes.Create(Application); + try + AEditor.Contactos := (ABizObject as IBizCliente); + Result := AEditor.ShowModal; + finally + AEditor.Release; + end; +end; + +function ShowSelectEditorClientes (ABizObject : TDADataTableRules) : TModalResult; +var + AEditor: TfEditorClientes; +begin + AEditor := TfEditorClientes.Create(Application); + try + AEditor.Contactos := (ABizObject as IBizCliente); + AEditor.SelectionBarVisible := True; + Result := AEditor.ShowModal; + finally + AEditor.Release; + end; +end; + + +{ +******************************* TfEditorClientes ******************************* +} +procedure TfEditorClientes.actEliminarExecute(Sender: TObject); +begin + if (Application.MessageBox('¿Desea borrar este cliente?', 'Atención', MB_YESNO) = IDYES) then + begin + inherited; + ViewGrid.RefreshGrid; + end; +end; + +constructor TfEditorClientes.Create(AOwner: TComponent); +begin + inherited; + ViewGrid := CreateView(TfrViewClientes) as IViewContactos; +end; + +function TfEditorClientes.GetSelectionBarVisible: Boolean; +begin + Result := frViewBarraSeleccion.Visible +end; + +procedure TfEditorClientes.SetSelectionBarVisible(const Value: Boolean); +begin + frViewBarraSeleccion.Visible := True; + ViewGrid.OnDblClick := frViewBarraSeleccion.actSeleccionar.OnExecute; +end; + +procedure TfEditorClientes.actDuplicarExecute(Sender: TObject); +var + AContacto : IBizContacto; +begin + inherited; + AContacto := dmContactos.GetCliente(Contactos.CODIGO); + Contactos.Insert; + Contactos.CopyFrom(AContacto); + Contactos.DataTable.ApplyUpdates; + ViewGrid.RefreshGrid; + ViewGrid.GotoFirst; +end; + +initialization + RegisterEditor(IBizCliente, ShowEditorClientes, etItems); + RegisterEditor(IBizCliente, ShowSelectEditorClientes, etSelectItems); + +finalization + +end. + diff --git a/Modulos/Contactos/Cliente/uEditorComisiones.ddp b/Modulos/Contactos/Cliente/uEditorComisiones.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Contactos/Cliente/uEditorComisiones.ddp differ diff --git a/Modulos/Contactos/Cliente/uEditorComisiones.dfm b/Modulos/Contactos/Cliente/uEditorComisiones.dfm new file mode 100644 index 0000000..a091447 --- /dev/null +++ b/Modulos/Contactos/Cliente/uEditorComisiones.dfm @@ -0,0 +1,598 @@ +inherited fEditorComisiones: TfEditorComisiones + Left = 241 + Top = 117 + Width = 851 + Height = 662 + Caption = 'C'#225'lculo de comisiones de vendedores' + OnGetModified = CustomEditorGetModified + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + Width = 843 + Caption = 'C'#225'lculo de comisiones de vendedores' + inherited Image1: TImage + Left = 816 + Picture.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001800 + 0000180806000000E0773DF80000000970485973000017120000171201679FD2 + 520000000467414D410000AA11B57D14DC0000040C4944415478DAB5957F6C13 + 6518C7BF776D474BC7D87061A011815981753211E6D86AA5B865486AC409129C + 4AB6C13637C5312331D1EC17E8D044A3C1A066C384986804FF984AC6C284C531 + 6B9C9190A1123061D1D4C8A4CEBA75EDF5DADEBDBEEFF576F3E0A64EC39B5C9E + F7C7F5F93CCFF77D9E2B4708C1F51C1C0374F57D775D2865F7E6721A802E944D + B66649C98A55E7B24CD78024510B0239419473599620C9CC12CD2AEFD2E7A1AA + 173074B2430F60CE84B1515C38D6819FFABB100E8711B2656059F183C82B7D1C + 66EB5CD589EA9048DA9C304B1DB020D87CCB4E03404C8CE0DC7BAF401EFC14C1 + 88802B13131815A2088405DC555E83BB1F69024C56257296D1FE4F2C86D2D47A + C6B0ADA6490FD8E471E2FCC031F80F3D0F4E8C211815F1074760CE4C4360E40A + 02E35134BCD30BFB42A71A359391CAC164236A4612418224652AAF6DD6031E58 + 9783939DAD183DF53E623C0FD3DC5464396EC26D8EF908FEF63B3EEEFA02DE9A + 362C2A2CA7B7C02B0E5F3D6E35CC60873B88C7EA5AF480FB29A0FBB50624C6CE + C1E15C8C797366C36EE311098561E109FA3E3F8B1B8BAAE1703F0A99E3956827 + 2F95699F9093DA4F66B2FDA9563DC0EB5E81237B2B9099F2335CF7E4420C4721 + 50FD63542E330FF4F67E8DC5F7ED418E7B1B9584532B8B5D2A93E5AFCE65055C + F1F45E3D60A36B390ED697D032BA04EFA6B5B05BAC8846449868F46121840F8E + 0C207F4B33567B77508938254A69527B96851AF924B8AA619F1EB0A16819DE6E + AAC2455F0F4A3DB7232F671EE2B13862721C8367FCF8D27711DE9637915FB099 + 9633BB03597964B53C596F10552E6AB0B3F12A4069A10343A77DF8B6A51319F6 + 286C8541983244042E110883E9E0641BB23B1AB16481538BB8ED40B7E125EFAE + 2C46CD332FEA01C505B762A0F12DDC70E617088910A2EB4790B6260EA17B0EEC + DF6781F0669C77A5206F5725D2AC193ABDB52E26C93DE6B3F6D9763D60FD9A6C + 9CCE7F12E9B367C124F2204502D272A9DA275211B94CB34002E1F1187EA87760 + 4359A5D2682F1DEC31CC60D7760FEAF6ECD7033CABB3712ABF0EA9560BEC9C19 + 2455866916609E30438C4B082712D8F8BADFD0E1375987B4BB206A45D53FF7B2 + 1EE05EB514C7EFACC67C9B1D36B30929BC89B613AD16DACDA2948065730F1696 + 9461A9EB0D0CFB762B8E2F0F9F05867F4467DFAF38DCB4EE5A72C98929802B6F + 09BEEAFE0CFEC12188C110402B88C940EB14B289C302773AB203EF2ACEAE1ECD + ED4F4C0BD600852B17A9B52D4F75A8046DAD94243D5FE9AF3494A9625FFF357B + 87FBA3531914386F563FC1C94A4836D1148C7E4031FEE1DA19C944A15B35406B + FB817FFC875A953982EA15438632D168A797E8DF0C5FDB2D0FBB5CCB8F1A9EF9 + 2E1842E9B8632600F2B7F250BD8D7E37A30CA8393A4DA45B29E0A3FF05F8AFE3 + 4FB2402F1C4138F79E0000000049454E44AE426082} + end + end + inherited TBXDock: TTBXDock + Width = 843 + inherited tbxMenu: TTBXToolbar + Visible = False + end + end + inherited StatusBar: TStatusBar + Top = 609 + Width = 843 + end + object dxLayoutControl1: TdxLayoutControl [3] + Left = 0 + Top = 76 + Width = 843 + Height = 533 + Align = alClient + TabOrder = 3 + AutoContentSizes = [acsWidth, acsHeight] + LookAndFeel = dxLayoutOfficeLookAndFeel1 + object edtFechaIni: TcxDateEdit + Left = 61 + Top = 30 + Properties.DateButtons = [btnToday] + Properties.DateOnError = deToday + Properties.SaveTime = False + Properties.ShowTime = False + Properties.OnValidate = edtFechaIniPropertiesValidate + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + Style.ButtonStyle = bts3D + Style.PopupBorderStyle = epbsFrame3D + StyleDisabled.LookAndFeel.Kind = lfStandard + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.Kind = lfStandard + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.Kind = lfStandard + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 0 + Width = 297 + end + object edtFechaFin: TcxDateEdit + Left = 400 + Top = 30 + Properties.DateButtons = [btnToday] + Properties.DateOnError = deToday + Properties.SaveTime = False + Properties.ShowTime = False + Properties.OnValidate = edtFechaIniPropertiesValidate + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + Style.ButtonStyle = bts3D + Style.PopupBorderStyle = epbsFrame3D + StyleDisabled.LookAndFeel.Kind = lfStandard + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.Kind = lfStandard + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.Kind = lfStandard + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 1 + Width = 295 + end + object Button1: TButton + Left = 701 + Top = 30 + Width = 120 + Height = 25 + Caption = 'Calcular comisiones' + TabOrder = 2 + OnClick = Button1Click + end + object cxGrid: TcxGrid + Left = 22 + Top = 357 + Width = 799 + Height = 160 + TabOrder = 5 + LookAndFeel.Kind = lfOffice11 + LookAndFeel.NativeStyle = True + object cxGridView: TcxGridDBTableView + NavigatorButtons.ConfirmDelete = False + FilterBox.Visible = fvNever + DataController.DataSource = DADataSource2 + DataController.Filter.Options = [fcoCaseInsensitive] + DataController.Options = [dcoAnsiSort, dcoAssignGroupingValues, dcoAssignMasterDetailKeys, dcoSaveExpanding, dcoSortByDisplayText, dcoFocusTopRowAfterSorting] + DataController.Summary.DefaultGroupSummaryItems = <> + DataController.Summary.FooterSummaryItems = < + item + Format = ',0.00 '#8364';-,0.00 '#8364 + Kind = skSum + end + item + Format = ',0.00 '#8364';-,0.00 '#8364 + Kind = skSum + Column = cxGridViewCOMISION + end + item + Format = 'Total comisiones = ' + Kind = skCount + Column = cxGridViewPORCENTAJE + end> + DataController.Summary.SummaryGroups = <> + OptionsBehavior.AlwaysShowEditor = True + OptionsBehavior.CellHints = True + OptionsBehavior.FocusCellOnTab = True + OptionsBehavior.GoToNextCellOnEnter = True + OptionsBehavior.BestFitMaxRecordCount = 20 + OptionsBehavior.FocusCellOnCycle = True + OptionsCustomize.ColumnFiltering = False + OptionsCustomize.ColumnGrouping = False + OptionsCustomize.ColumnMoving = False + OptionsCustomize.ColumnSorting = False + OptionsCustomize.DataRowSizing = True + OptionsData.Deleting = False + OptionsData.Editing = False + OptionsData.Inserting = False + OptionsSelection.CellSelect = False + OptionsSelection.UnselectFocusedRecordOnExit = False + OptionsView.CellEndEllipsis = True + OptionsView.ScrollBars = ssVertical + OptionsView.CellAutoHeight = True + OptionsView.ColumnAutoWidth = True + OptionsView.DataRowHeight = 25 + OptionsView.Footer = True + OptionsView.GridLineColor = clInactiveCaption + OptionsView.GridLines = glHorizontal + OptionsView.GroupByBox = False + OptionsView.HeaderEndEllipsis = True + OptionsView.NewItemRowInfoText = 'Click here to add a new row' + object cxGridViewVENDEDOR: TcxGridDBColumn + Caption = 'Vendedor' + DataBinding.FieldName = 'VENDEDOR' + Width = 336 + end + object cxGridViewPORCENTAJE: TcxGridDBColumn + Caption = 'Porcentaje' + DataBinding.FieldName = 'PORCENTAJE' + PropertiesClassName = 'TcxSpinEditProperties' + Properties.Alignment.Horz = taRightJustify + Properties.Alignment.Vert = taVCenter + Properties.DisplayFormat = '0.00 %' + HeaderAlignmentHorz = taRightJustify + Width = 84 + end + object cxGridViewCOMISION: TcxGridDBColumn + Caption = 'Comisi'#243'n' + DataBinding.FieldName = 'COMISION' + PropertiesClassName = 'TcxCurrencyEditProperties' + Properties.Alignment.Horz = taRightJustify + Properties.Alignment.Vert = taVCenter + HeaderAlignmentHorz = taRightJustify + Width = 84 + end + end + object cxGridLevel: TcxGridLevel + GridView = cxGridView + end + end + object edtImporteCobros: TcxCurrencyEdit + Left = 685 + Top = 306 + Properties.Alignment.Horz = taRightJustify + Properties.ReadOnly = True + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.Kind = lfStandard + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.Kind = lfStandard + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.Kind = lfStandard + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 3 + Width = 136 + end + object cxGrid1: TcxGrid + Left = 22 + Top = 85 + Width = 799 + Height = 215 + TabOrder = 4 + LookAndFeel.Kind = lfOffice11 + LookAndFeel.NativeStyle = True + object cxGridDBTableView1: TcxGridDBTableView + NavigatorButtons.ConfirmDelete = False + FilterBox.Visible = fvNever + OnCustomDrawCell = cxGridDBTableView1CustomDrawCell + DataController.DataSource = DADataSource + DataController.Filter.Options = [fcoCaseInsensitive] + DataController.Options = [dcoAnsiSort, dcoAssignGroupingValues, dcoAssignMasterDetailKeys, dcoSaveExpanding, dcoSortByDisplayText, dcoFocusTopRowAfterSorting, dcoImmediatePost] + DataController.Summary.DefaultGroupSummaryItems = <> + DataController.Summary.FooterSummaryItems = < + item + Format = ',0.00 '#8364';-,0.00 '#8364 + Kind = skSum + end + item + Format = ',0.00 '#8364';-,0.00 '#8364 + Kind = skSum + end + item + Format = 'Total comisiones = ' + Kind = skCount + end> + DataController.Summary.SummaryGroups = <> + OptionsBehavior.AlwaysShowEditor = True + OptionsBehavior.CellHints = True + OptionsBehavior.FocusCellOnTab = True + OptionsBehavior.GoToNextCellOnEnter = True + OptionsBehavior.BestFitMaxRecordCount = 20 + OptionsBehavior.FocusCellOnCycle = True + OptionsCustomize.ColumnFiltering = False + OptionsCustomize.ColumnGrouping = False + OptionsCustomize.ColumnMoving = False + OptionsCustomize.ColumnSorting = False + OptionsCustomize.DataRowSizing = True + OptionsData.Deleting = False + OptionsData.Inserting = False + OptionsSelection.UnselectFocusedRecordOnExit = False + OptionsView.CellEndEllipsis = True + OptionsView.ScrollBars = ssVertical + OptionsView.CellAutoHeight = True + OptionsView.ColumnAutoWidth = True + OptionsView.GridLineColor = clInactiveCaption + OptionsView.GridLines = glHorizontal + OptionsView.GroupByBox = False + OptionsView.HeaderEndEllipsis = True + OptionsView.NewItemRowInfoText = 'Click here to add a new row' + Styles.ContentEven = cxStyleEven + Styles.ContentOdd = cxStyleOdd + Styles.Selection = cxStyleSelection + Styles.Indicator = cxStyleSelection + object cxGridDBTableView1RecID: TcxGridDBColumn + DataBinding.FieldName = 'RecID' + Visible = False + end + object cxGridDBTableView1SELECCION: TcxGridDBColumn + DataBinding.FieldName = 'SELECCION' + PropertiesClassName = 'TcxCheckBoxProperties' + Properties.ImmediatePost = True + Properties.ValueChecked = 1 + Properties.ValueUnchecked = 0 + Width = 36 + IsCaptionAssigned = True + end + object cxGridDBTableView1CODIGOEMPRESA: TcxGridDBColumn + DataBinding.FieldName = 'CODIGOEMPRESA' + Visible = False + end + object cxGridDBTableView1CODIGO: TcxGridDBColumn + DataBinding.FieldName = 'CODIGO' + Visible = False + end + object cxGridDBTableView1CODIGOCONTACTO: TcxGridDBColumn + DataBinding.FieldName = 'CODIGOCONTACTO' + Visible = False + end + object cxGridDBTableView1FECHAPAGO: TcxGridDBColumn + Caption = 'Fecha' + DataBinding.FieldName = 'FECHAPAGO' + PropertiesClassName = 'TcxDateEditProperties' + Properties.AutoSelect = False + Properties.ReadOnly = True + Options.Editing = False + Width = 98 + end + object cxGridDBTableView1NOMBRE: TcxGridDBColumn + Caption = 'Nombre' + DataBinding.FieldName = 'NOMBRE' + PropertiesClassName = 'TcxTextEditProperties' + Properties.AutoSelect = False + Properties.ReadOnly = True + Options.Editing = False + Width = 244 + end + object cxGridDBTableView1DESCRIPCION: TcxGridDBColumn + Caption = 'Descripci'#243'n del pago' + DataBinding.FieldName = 'DESCRIPCION' + PropertiesClassName = 'TcxTextEditProperties' + Properties.AutoSelect = False + Properties.ReadOnly = True + Options.Editing = False + Width = 263 + end + object cxGridDBTableView1IMPORTE: TcxGridDBColumn + Caption = 'Importe' + DataBinding.FieldName = 'IMPORTE' + PropertiesClassName = 'TcxCurrencyEditProperties' + Properties.Alignment.Horz = taRightJustify + Properties.AutoSelect = False + Properties.ReadOnly = True + FooterAlignmentHorz = taRightJustify + HeaderAlignmentHorz = taRightJustify + Options.Editing = False + Width = 156 + end + end + object cxGridLevel1: TcxGridLevel + GridView = cxGridDBTableView1 + end + end + object cxSplitter1: TcxSplitter + Left = 0 + Top = 0 + Width = 821 + Height = 5 + AlignSplitter = salTop + end + object dxLayoutControl1Group_Root: TdxLayoutGroup + ShowCaption = False + Hidden = True + ShowBorder = False + object dxLayoutControl1Group1: TdxLayoutGroup + Caption = 'Seleccione el rango de fechas' + LayoutDirection = ldHorizontal + object dxLayoutControl1Item1: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = 'Desde:' + Control = edtFechaIni + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item2: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = 'hasta:' + Control = edtFechaFin + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item5: TdxLayoutItem + Caption = 'New Item' + ShowCaption = False + Control = Button1 + ControlOptions.ShowBorder = False + end + end + object dxLayoutControl1Group3: TdxLayoutGroup + AutoAligns = [aaHorizontal] + AlignVert = avClient + Caption = 'Lista de albaranes' + object dxLayoutControl1Item6: TdxLayoutItem + AutoAligns = [] + AlignHorz = ahRight + AlignVert = avBottom + Caption = 'Importe total de los albaranes:' + Control = edtImporteCobros + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item3: TdxLayoutItem + AutoAligns = [aaHorizontal] + AlignVert = avClient + Caption = 'New Item' + ShowCaption = False + Control = cxGrid1 + ControlOptions.ShowBorder = False + end + end + object dxLayoutControl1Group2: TdxLayoutGroup + AutoAligns = [aaHorizontal] + AlignVert = avBottom + Caption = 'Comisiones por vendedor' + object dxLayoutControl1Item4: TdxLayoutItem + AutoAligns = [aaHorizontal] + AlignVert = avClient + Control = cxGrid + ControlOptions.ShowBorder = False + end + end + end + end + inherited EditorActionList: TActionList + Left = 456 + Top = 88 + inherited actPrevisualizar: TAction + OnExecute = actPrevisualizarExecute + end + end + object dxLayoutLookAndFeelList1: TdxLayoutLookAndFeelList + Left = 8 + Top = 84 + object dxLayoutOfficeLookAndFeel1: TdxLayoutOfficeLookAndFeel + GroupOptions.CaptionOptions.Font.Charset = DEFAULT_CHARSET + GroupOptions.CaptionOptions.Font.Color = clWindowText + GroupOptions.CaptionOptions.Font.Height = -11 + GroupOptions.CaptionOptions.Font.Name = 'MS Sans Serif' + GroupOptions.CaptionOptions.Font.Style = [fsBold] + GroupOptions.CaptionOptions.TextColor = clActiveCaption + GroupOptions.CaptionOptions.UseDefaultFont = False + end + end + object DADataSource: TDADataSource + Left = 40 + Top = 216 + end + object cxStyleRepository1: TcxStyleRepository + Left = 8 + Top = 112 + object cxStyleEven: TcxStyle + end + object cxStyleOdd: TcxStyle + AssignedValues = [svColor] + Color = clInactiveCaptionText + end + object cxStyleSelection: TcxStyle + AssignedValues = [svColor, svTextColor] + Color = clHighlight + TextColor = clHighlightText + end + end + object DADataSource2: TDADataSource + Left = 40 + Top = 456 + end + object dxComponentPrinter: TdxComponentPrinter + CurrentLink = dxComponentPrinterLink5 + PreviewOptions.EnableOptions = [peoCanChangeMargins, peoPageBackground, peoPageSetup, peoPreferences, peoPrint] + PreviewOptions.VisibleOptions = [pvoPageBackground, pvoPageSetup, pvoPreferences, pvoPrint, pvoPrintStyles, pvoReportFileOperations, pvoPageMargins] + PreviewOptions.WindowState = wsMaximized + Version = 0 + Left = 688 + Top = 208 + object dxComponentPrinterLink1: TdxGridReportLink + Active = True + Component = cxGrid1 + PrinterPage.DMPaper = 9 + PrinterPage.Footer = 6350 + PrinterPage.Header = 6350 + PrinterPage.Margins.Bottom = 12700 + PrinterPage.Margins.Left = 12700 + PrinterPage.Margins.Right = 12700 + PrinterPage.Margins.Top = 12700 + PrinterPage.PageSize.X = 210000 + PrinterPage.PageSize.Y = 297000 + PrinterPage._dxMeasurementUnits_ = 0 + PrinterPage._dxLastMU_ = 2 + ReportDocument.CreationDate = 39238.569511527780000000 + OptionsDetails.StartFromFocusedView = True + OptionsExpanding.ExpandCards = True + OptionsExpanding.ExpandGroupRows = True + OptionsExpanding.ExpandMasterRows = True + OptionsSelection.ProcessSelection = True + OptionsSize.AutoWidth = True + BuiltInReportLink = True + end + object dxComponentPrinterLink2: TdxCompositionReportLink + Active = True + PrinterPage.DMPaper = 9 + PrinterPage.Footer = 6350 + PrinterPage.Header = 6350 + PrinterPage.Margins.Bottom = 12700 + PrinterPage.Margins.Left = 12700 + PrinterPage.Margins.Right = 12700 + PrinterPage.Margins.Top = 12700 + PrinterPage.PageSize.X = 210000 + PrinterPage.PageSize.Y = 297000 + PrinterPage._dxMeasurementUnits_ = 0 + PrinterPage._dxLastMU_ = 2 + ReportDocument.Caption = 'NewReport' + ReportDocument.CreationDate = 39238.590108136580000000 + ReportDocument.IsDescriptionAssigned = True + Items = < + item + ReportLink = dxComponentPrinterLink4 + BuiltInCompositionItem = True + end + item + ReportLink = dxComponentPrinterLink3 + BuiltInCompositionItem = True + end> + BuiltInReportLink = True + end + object dxComponentPrinterLink3: TdxGridReportLink + Active = True + Component = cxGrid + PrinterPage.DMPaper = 9 + PrinterPage.Footer = 6350 + PrinterPage.Header = 6350 + PrinterPage.Margins.Bottom = 12700 + PrinterPage.Margins.Left = 12700 + PrinterPage.Margins.Right = 12700 + PrinterPage.Margins.Top = 12700 + PrinterPage.PageSize.X = 210000 + PrinterPage.PageSize.Y = 297000 + PrinterPage._dxMeasurementUnits_ = 0 + PrinterPage._dxLastMU_ = 2 + ReportDocument.CreationDate = 39238.590108136580000000 + BuiltInReportLink = True + end + object dxComponentPrinterLink4: TdxLayoutControlReportLink + Active = True + Component = dxLayoutControl1 + PrinterPage.DMPaper = 9 + PrinterPage.Footer = 6350 + PrinterPage.Header = 6350 + PrinterPage.Margins.Bottom = 12700 + PrinterPage.Margins.Left = 12700 + PrinterPage.Margins.Right = 12700 + PrinterPage.Margins.Top = 12700 + PrinterPage.PageSize.X = 210000 + PrinterPage.PageSize.Y = 297000 + PrinterPage._dxMeasurementUnits_ = 0 + PrinterPage._dxLastMU_ = 2 + ReportDocument.CreationDate = 39238.590108136580000000 + OptionsPagination.Controls = False + BuiltInReportLink = True + HiddenComponents = {} + ExcludedComponents = { + 64784C61796F7574436F6E74726F6C314974656D330D0A64784C61796F757443 + 6F6E74726F6C314974656D340D0A} + AggregatedReportLinks = {6478436F6D706F6E656E745072696E7465724C696E6B310D0A} + end + object dxComponentPrinterLink5: TdxCustomContainerReportLink + Active = True + Component = Owner + PrinterPage.DMPaper = 9 + PrinterPage.Footer = 6350 + PrinterPage.Header = 6350 + PrinterPage.Margins.Bottom = 12700 + PrinterPage.Margins.Left = 12700 + PrinterPage.Margins.Right = 12700 + PrinterPage.Margins.Top = 12700 + PrinterPage.PageSize.X = 210000 + PrinterPage.PageSize.Y = 297000 + PrinterPage._dxMeasurementUnits_ = 0 + PrinterPage._dxLastMU_ = 2 + ReportDocument.CreationDate = 39238.600628252310000000 + BuiltInReportLink = True + HiddenComponents = {} + ExcludedComponents = { + 4A764E617650616E656C4865616465720D0A496D616765310D0A544258446F63 + 6B0D0A7462784D61696E0D0A7462784D656E750D0A5374617475734261720D0A + 64784C61796F7574436F6E74726F6C310D0A6564744665636861496E690D0A65 + 6474466563686146696E0D0A427574746F6E310D0A6378477269640D0A656474 + 496D706F727465436F62726F730D0A637847726964310D0A637853706C697474 + 6572310D0A} + AggregatedReportLinks = { + 6478436F6D706F6E656E745072696E7465724C696E6B310D0A6478436F6D706F + 6E656E745072696E7465724C696E6B330D0A} + end + end +end diff --git a/Modulos/Contactos/Cliente/uEditorComisiones.pas b/Modulos/Contactos/Cliente/uEditorComisiones.pas new file mode 100644 index 0000000..b8e95d5 --- /dev/null +++ b/Modulos/Contactos/Cliente/uEditorComisiones.pas @@ -0,0 +1,168 @@ +unit uEditorComisiones; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uEditorItem, JvAppStorage, JvAppRegistryStorage, JvComponent, + JvFormPlacement, ImgList, PngImageList, StdActns, ActnList, ComCtrls, + TBX, TB2Item, TB2Dock, TB2Toolbar, pngimage, ExtCtrls, JvExControls, + JvNavigationPane, uEditorBase, uCustomView, uViewBase, StdCtrls, + uDADataTable, dxLayoutControl, cxContainer, cxEdit, cxTextEdit, + cxMaskEdit, cxDropDownEdit, cxCalendar, cxControls, dxLayoutLookAndFeels, + cxStyles, DB, cxGrid, cxCustomData, cxGraphics, cxFilter, cxData, + cxDataStorage, cxDBData, cxGridLevel, cxGridCustomTableView, + cxGridTableView, cxGridDBTableView, cxClasses, cxGridCustomView, + cxCurrencyEdit, cxSpinEdit, uBizComisiones, cxCheckBox, cxSplitter, + JvComponentBase, JvExExtCtrls, JvSplitter, JvSplit, dxPSGlbl, dxPSUtl, + dxPSEngn, dxPrnPg, dxBkgnd, dxWrap, dxPrnDev, dxPSCompsProvider, + dxPSFillPatterns, dxPSEdgePatterns, dxPSCore, dxPScxCommon, dxPScxGridLnk, + dxPSContainerLnk, dxPSdxLCLnk; + +type + IEditorComisiones = interface(IEditorBase) + ['{C3894FB2-9030-466C-B2D9-5CF3CF5EA1B8}'] + end; + + TfEditorComisiones = class(TfEditorBase, IEditorComisiones) + Button1: TButton; + dxLayoutControl1Group_Root: TdxLayoutGroup; + dxLayoutControl1: TdxLayoutControl; + edtFechaIni: TcxDateEdit; + edtFechaFin: TcxDateEdit; + dxLayoutControl1Item2: TdxLayoutItem; + dxLayoutControl1Group1: TdxLayoutGroup; + dxLayoutLookAndFeelList1: TdxLayoutLookAndFeelList; + dxLayoutOfficeLookAndFeel1: TdxLayoutOfficeLookAndFeel; + DADataSource: TDADataSource; + dxLayoutControl1Item4: TdxLayoutItem; + cxGrid: TcxGrid; + cxGridView: TcxGridDBTableView; + cxGridViewVENDEDOR: TcxGridDBColumn; + cxGridViewPORCENTAJE: TcxGridDBColumn; + cxGridViewCOMISION: TcxGridDBColumn; + cxGridLevel: TcxGridLevel; + dxLayoutControl1Item1: TdxLayoutItem; + dxLayoutControl1Group2: TdxLayoutGroup; + dxLayoutControl1Item5: TdxLayoutItem; + edtImporteCobros: TcxCurrencyEdit; + dxLayoutControl1Item6: TdxLayoutItem; + dxLayoutControl1Group3: TdxLayoutGroup; + cxGrid1: TcxGrid; + cxGridDBTableView1: TcxGridDBTableView; + cxGridLevel1: TcxGridLevel; + dxLayoutControl1Item3: TdxLayoutItem; + cxGridDBTableView1RecID: TcxGridDBColumn; + cxGridDBTableView1SELECCION: TcxGridDBColumn; + cxGridDBTableView1CODIGOEMPRESA: TcxGridDBColumn; + cxGridDBTableView1CODIGO: TcxGridDBColumn; + cxGridDBTableView1CODIGOCONTACTO: TcxGridDBColumn; + cxGridDBTableView1NOMBRE: TcxGridDBColumn; + cxGridDBTableView1FECHAPAGO: TcxGridDBColumn; + cxGridDBTableView1IMPORTE: TcxGridDBColumn; + cxStyleRepository1: TcxStyleRepository; + cxStyleEven: TcxStyle; + cxStyleOdd: TcxStyle; + cxStyleSelection: TcxStyle; + DADataSource2: TDADataSource; + cxSplitter1: TcxSplitter; + cxGridDBTableView1DESCRIPCION: TcxGridDBColumn; + dxComponentPrinter: TdxComponentPrinter; + dxComponentPrinterLink1: TdxGridReportLink; + dxComponentPrinterLink2: TdxCompositionReportLink; + dxComponentPrinterLink3: TdxGridReportLink; + dxComponentPrinterLink4: TdxLayoutControlReportLink; + dxComponentPrinterLink5: TdxCustomContainerReportLink; + procedure Button1Click(Sender: TObject); + procedure FormShow(Sender: TObject); + procedure edtFechaIniPropertiesValidate(Sender: TObject; + var DisplayValue: Variant; var ErrorText: TCaption; + var Error: Boolean); + procedure CustomEditorGetModified(Sender: TObject; + var Modified: Boolean); + procedure cxGridDBTableView1CustomDrawCell( + Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; + AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); + procedure actPrevisualizarExecute(Sender: TObject); + private + FComisiones : TDADataTable; + FCobrosComision : IBizCobrosComision; + procedure OnTotalChanged(Sender : TObject); + public + { Public declarations } + end; + +var + fEditorComisiones: TfEditorComisiones; + +implementation + +uses uDataModuleComisiones, DateUtils, FactuGES_Intf, schComisionesClient_Intf; + +{$R *.dfm} + +procedure TfEditorComisiones.Button1Click(Sender: TObject); +begin + //Liberamos + if Assigned(FCobrosComision) then + FCobrosComision := Nil; + + FCobrosComision := dmComisiones.GetCobrosComision(edtFechaIni.Date, edtFechaFin.Date); + DADataSource.DataTable := FCobrosComision.DataTable; + DADataSource2.DataTable := FCobrosComision.VendedoresComision.DataTable; + FCobrosComision.OnTotalChanged := OnTotalChanged; + DADataSource2.DataTable.Active := True; //No cambiar el orden es importante que el orden sea este + DADataSource.DataTable.Active := True; +end; + +procedure TfEditorComisiones.FormShow(Sender: TObject); +begin + inherited; + edtFechaIni.Date := DateOf(StartOfTheMonth(Now)); + edtFechaFin.Date := DateOf(EndOfTheMonth(Now)); +end; + +procedure TfEditorComisiones.edtFechaIniPropertiesValidate(Sender: TObject; + var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean); +begin + inherited; + if Length(DisplayValue) = 0 then + begin + Error := True; + ErrorText := 'La fecha no puede ser vacía'; + end; +end; + +procedure TfEditorComisiones.CustomEditorGetModified(Sender: TObject; + var Modified: Boolean); +begin + inherited; + Modified := False; +end; + +procedure TfEditorComisiones.cxGridDBTableView1CustomDrawCell( + Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; + AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); +var + IndiceCol : Integer; +begin + IndiceCol := (Sender as TcxGridDBTableView).GetColumnByFieldName(fld_CobrosCOMISIONSELECCION).Index; + if UPPERCASE(AViewInfo.GridRecord.DisplayTexts[IndiceCol]) = 'FALSE' then + begin + ACanvas.Canvas.Font.Style := [fsStrikeOut]; + ACanvas.Canvas.Font.Color := clGray; + end; +end; + +procedure TfEditorComisiones.OnTotalChanged(Sender: TObject); +begin + edtImporteCobros.Value := FCobrosComision.Total; +end; + +procedure TfEditorComisiones.actPrevisualizarExecute(Sender: TObject); +begin + inherited; + dxComponentPrinter.Preview; +end; + +end. diff --git a/Modulos/Contactos/Cliente/uEditorContacto.dfm b/Modulos/Contactos/Cliente/uEditorContacto.dfm new file mode 100644 index 0000000..9a6a6cc --- /dev/null +++ b/Modulos/Contactos/Cliente/uEditorContacto.dfm @@ -0,0 +1,102 @@ +inherited fEditorContacto: TfEditorContacto + Left = 575 + Top = 291 + HorzScrollBar.Visible = False + VertScrollBar.Range = 0 + VertScrollBar.Visible = False + BorderStyle = bsDialog + Caption = 'Ficha de contacto' + ClientHeight = 463 + ClientWidth = 634 + Scaled = False + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + Width = 634 + Caption = 'Cliente' + inherited Image1: TImage + Left = 607 + end + end + inherited TBXDock: TTBXDock + Width = 634 + inherited tbxMain: TTBXToolbar + inherited TBXItem2: TTBXItem + Visible = False + end + inherited TBXItem5: TTBXItem + Visible = False + end + inherited TBXItem23: TTBXItem + Visible = False + end + inherited TBXItem3: TTBXItem + Visible = False + end + end + inherited tbxMenu: TTBXToolbar + DockPos = 0 + inherited TBXSubmenuItem4: TTBXSubmenuItem + inherited TBXItem8: TTBXItem + Visible = False + end + inherited TBXSeparatorItem5: TTBXSeparatorItem + Visible = False + end + inherited TBXItem10: TTBXItem + Visible = False + end + inherited TBXSeparatorItem6: TTBXSeparatorItem + Visible = False + end + inherited TBXItem21: TTBXItem + Visible = False + end + inherited TBXItem22: TTBXItem + Visible = False + end + inherited TBXItem9: TTBXItem + Visible = False + end + end + inherited TBXSubmenuItem1: TTBXSubmenuItem + inherited TBXItem32: TTBXItem + Visible = False + end + inherited TBXItem31: TTBXItem + Visible = False + end + inherited TBXSeparatorItem13: TTBXSeparatorItem + Visible = False + end + end + end + end + inherited pgPaginas: TPageControl + Width = 634 + Height = 368 + end + inherited StatusBar: TStatusBar + Top = 444 + Width = 634 + end + inherited EditorActionList: TActionList + Top = 128 + end + inherited SmallImages: TPngImageList + Top = 112 + end + inherited dsDataTable: TDADataSource [6] + Left = 168 + Top = 120 + end + inherited LargeImages: TPngImageList [7] + Top = 112 + end + inherited JvFormStorage: TJvFormStorage [8] + Top = 144 + end + inherited JvAppRegistryStorage: TJvAppRegistryStorage [9] + Top = 144 + end +end diff --git a/Modulos/Contactos/Cliente/uEditorContacto.pas b/Modulos/Contactos/Cliente/uEditorContacto.pas new file mode 100644 index 0000000..846750c --- /dev/null +++ b/Modulos/Contactos/Cliente/uEditorContacto.pas @@ -0,0 +1,101 @@ +unit uEditorContacto; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uEditorDBItem, ToolWin, ComCtrls, JvExControls, JvComponent, + uViewContacto, uBizContacto, JvNavigationPane, ActnList, + uEditorBase, StdActns, TB2Dock, TB2Toolbar, TBX, ImgList, PngImageList, + TB2Item, uEditorItem, DB, uDADataTable, uEditorDBBase, JvFormAutoSize, + uDAScriptingProvider, uDACDSDataTable, StdCtrls, pngimage, ExtCtrls, + TBXDkPanels, JvButton, AppEvnts, uCustomView, uViewBase, uViewMensaje, + JvAppStorage, JvAppRegistryStorage, JvFormPlacement; + +type + IEditorContacto = interface(IEditorDBItem) + ['{21DD6B74-F218-4AFC-91EE-1ECD4ADF1553}'] + function GetContacto: IBizContacto; + procedure SetContacto(const Value: IBizContacto); + property Contacto: IBizContacto read GetContacto write SetContacto; + end; + + TfEditorContacto = class(TfEditorDBItem, IEditorContacto) + procedure FormShow(Sender: TObject); + private + FContacto: IBizContacto; + FViewContacto : IViewContacto; + protected + function GetContacto: IBizContacto; virtual; + procedure SetContacto(const Value: IBizContacto); virtual; + + function GetViewContacto: IViewContacto; + procedure SetViewContacto(const Value: IViewContacto); + property ViewContacto: IViewContacto read GetViewContacto write + SetViewContacto; + public + property Contacto: IBizContacto read GetContacto write SetContacto; + destructor Destroy; override; + end; + +implementation + +{$R *.dfm} + +uses + uCustomEditor, uDataModuleContactos, uDataModuleBase; + +{ +******************************* TfEditorContacto ******************************* +} +function TfEditorContacto.GetContacto: IBizContacto; +begin + Result := FContacto; +end; + +function TfEditorContacto.GetViewContacto: IViewContacto; +begin + Result := FViewContacto; +end; + +procedure TfEditorContacto.SetContacto(const Value: IBizContacto); +begin + FContacto := Value; + dsDataTable.DataTable := FContacto.DataTable; + + if Assigned(FViewContacto) and Assigned(Contacto) then + FViewContacto.Contacto := Contacto; +end; + +procedure TfEditorContacto.SetViewContacto(const Value: IViewContacto); +begin + FViewContacto := Value; + + if Assigned(FViewContacto) and Assigned(Contacto) then + FViewContacto.Contacto := Contacto; +end; + +procedure TfEditorContacto.FormShow(Sender: TObject); +begin + inherited; + + if not Assigned(FViewContacto) then + raise Exception.Create('No hay ninguna vista asignada'); + + if not Assigned(Contacto) then + raise Exception.Create('No hay ningún contacto asignado'); + + Contacto.DataTable.Active := True; + FViewContacto.ShowEmbedded(pagGeneral); + FViewContacto.SetFocus; +end; + +destructor TfEditorContacto.Destroy; +begin + FViewContacto := NIL; + FContacto := NIL; + inherited; +end; + +end. + diff --git a/Modulos/Contactos/Cliente/uEditorContactos.ddp b/Modulos/Contactos/Cliente/uEditorContactos.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Contactos/Cliente/uEditorContactos.ddp differ diff --git a/Modulos/Contactos/Cliente/uEditorContactos.dfm b/Modulos/Contactos/Cliente/uEditorContactos.dfm new file mode 100644 index 0000000..60b5f3f --- /dev/null +++ b/Modulos/Contactos/Cliente/uEditorContactos.dfm @@ -0,0 +1,75 @@ +inherited fEditorContactos: TfEditorContactos + Left = 180 + Top = 250 + Caption = 'Lista de contactos' + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + Caption = 'Lista de contactos' + end + inherited TBXDock: TTBXDock + inherited tbxMain: TTBXToolbar + inherited TBXSeparatorItem14: TTBXSeparatorItem + Visible = False + end + inherited TBXItem33: TTBXItem + Visible = False + end + end + inherited tbxFiltro: TTBXToolbar + Left = 394 + inherited tbxEditFiltro: TTBXEditItem + EditOptions = [tboUseEditWhenVertical] + end + inherited TBXItem37: TTBXItem + Visible = False + end + end + end + inline frViewBarraSeleccion: TfrViewBarraSeleccion [3] + Left = 0 + Top = 395 + Width = 885 + Height = 37 + Align = alBottom + AutoScroll = False + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 3 + Visible = False + ReadOnly = False + inherited pnlSeleccion: TPanel + Top = 0 + Width = 885 + end + inherited ActionListSeleccion: TActionList + inherited actSeleccionar: TAction + OnExecute = frViewBarraSeleccionactSeleccionarExecute + end + end + end + inherited EditorActionList: TActionList [4] + inherited actNuevo: TAction + OnExecute = actNuevoExecute + end + end + inherited SmallImages: TPngImageList [5] + end + inherited LargeImages: TPngImageList [6] + end + inherited JvFormStorage: TJvFormStorage [7] + end + inherited JvAppRegistryStorage: TJvAppRegistryStorage [8] + end + inherited dsDataTable: TDADataSource [9] + end + inherited GridPopupMenu: TPopupMenu + inherited Duplicar1: TMenuItem + Visible = False + end + end +end diff --git a/Modulos/Contactos/Cliente/uEditorContactos.pas b/Modulos/Contactos/Cliente/uEditorContactos.pas new file mode 100644 index 0000000..4647063 --- /dev/null +++ b/Modulos/Contactos/Cliente/uEditorContactos.pas @@ -0,0 +1,137 @@ +unit uEditorContactos; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uEditorBase, uEditorGrid, ToolWin, ComCtrls, JvExControls, JvComponent, + JvNavigationPane, uViewContactos, uBizContacto, ActnList, DBActns, uViewGrid, + Menus, uDataModuleBase, ImgList, PngImageList, TB2Dock, TB2Toolbar, TBX, + TB2Item, StdActns, TB2ExtItems, TBXExtItems, TB2MRU, DB, uDADataTable, + JvFormAutoSize, uDAScriptingProvider, uDACDSDataTable, JvAppStorage, + JvAppRegistryStorage, JvFormPlacement, ExtCtrls, uCustomView, uViewBase, + uViewBarraSeleccion, JvComponentBase; + +type + IEditorContactos = interface(IEditorGrid) + ['{21DD6B74-F218-4AFC-91EE-1ECD4ADF1553}'] + function GetContactos: IBizContacto; + procedure SetContactos(const Value: IBizContacto); + property Contactos: IBizContacto read GetContactos write SetContactos; + + function GetSelectionBarVisible: Boolean; + procedure SetSelectionBarVisible(const Value: Boolean); + property SelectionBarVisible : Boolean read GetSelectionBarVisible write + SetSelectionBarVisible; + end; + + TfEditorContactos = class(TfEditorGrid, IEditorContactos) + frViewBarraSeleccion: TfrViewBarraSeleccion; + procedure FormShow(Sender: TObject); + procedure actNuevoExecute(Sender: TObject); + procedure actModificarExecute(Sender: TObject); + procedure frViewBarraSeleccionactSeleccionarExecute(Sender: TObject); + private + FContactos: IBizContacto; + protected + function GetContactos: IBizContacto; virtual; + procedure SetContactos(const Value: IBizContacto); virtual; + procedure SetViewGrid(const Value: IViewGrid); override; + function GetSelectionBarVisible: Boolean; virtual; + procedure SetSelectionBarVisible(const Value: Boolean); virtual; + public + property SelectionBarVisible : Boolean read GetSelectionBarVisible write + SetSelectionBarVisible; + property Contactos: IBizContacto read GetContactos write SetContactos; + destructor Destroy; override; + end; + +implementation + +uses + uCustomEditor, uDataModuleContactos, + uEditorContacto, uPluginControllerContactos, uEditorDBBase, + cxGrid, cxGridCustomTableView, uDBSelectionList; + +{$R *.dfm} + +{ +****************************** TfEditorContactos ******************************* +} +procedure TfEditorContactos.FormShow(Sender: TObject); +begin + inherited; + + if not Assigned(ViewGrid) then + raise Exception.Create('No hay ninguna vista asignada'); + + if not Assigned(Contactos) then + raise Exception.Create('No hay ningún contacto asignado'); + + Contactos.DataTable.Active := True; +end; + +function TfEditorContactos.GetContactos: IBizContacto; +begin + Result := FContactos; +end; + +procedure TfEditorContactos.SetContactos(const Value: IBizContacto); +begin + FContactos := Value; + dsDataTable.DataTable := FContactos.DataTable; + if Assigned(ViewGrid) then + (ViewGrid as IViewContactos).Contactos := Contactos; +end; + +procedure TfEditorContactos.actNuevoExecute(Sender: TObject); +begin + inherited; + Contactos.Insert; + Contactos.Show; + ViewGrid.RefreshGrid; + ViewGrid.SyncFocusedRecordsFromDataSet; +end; + +procedure TfEditorContactos.actModificarExecute(Sender: TObject); +begin + inherited; + Contactos.Show; + ViewGrid.RefreshGrid; + ViewGrid.SyncFocusedRecordsFromDataSet; +end; + +procedure TfEditorContactos.SetViewGrid(const Value: IViewGrid); +begin + inherited; + if Assigned(ViewGrid) and Assigned(Contactos) then + (ViewGrid as IViewContactos).Contactos := Contactos; +end; + +destructor TfEditorContactos.Destroy; +begin + FContactos := NIL; + inherited; +end; + +function TfEditorContactos.GetSelectionBarVisible: Boolean; +begin + Result := frViewBarraSeleccion.Visible +end; + +procedure TfEditorContactos.SetSelectionBarVisible(const Value: Boolean); +begin + frViewBarraSeleccion.Visible := True; + ViewGrid.OnDblClick := frViewBarraSeleccion.actSeleccionar.OnExecute; +end; + +procedure TfEditorContactos.frViewBarraSeleccionactSeleccionarExecute( + Sender: TObject); +begin + inherited; + ViewGrid.SyncFocusedRecordsFromGrid; + ModalResult := mrOK; +end; + +end. + diff --git a/Modulos/Contactos/Cliente/uEditorInstalador.dfm b/Modulos/Contactos/Cliente/uEditorInstalador.dfm new file mode 100644 index 0000000..cfbad36 --- /dev/null +++ b/Modulos/Contactos/Cliente/uEditorInstalador.dfm @@ -0,0 +1,43 @@ +inherited fEditorInstalador: TfEditorInstalador + Caption = 'Ficha de instalador' + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + inherited Image1: TImage + Picture.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001800 + 0000180806000000E0773DF80000000970485973000017120000171201679FD2 + 520000000467414D410000AA11B57D14DC0000034D4944415478DADD957D6855 + 651CC73FF7E56CF7DEE962EA340397D96C0B97291B8AD95227EA086706460E47 + 6AA60B06C3B7966FC3AD482457D01441A13F842141232128288656B4ECC58992 + F8C760E2CB9DB9DBBABBD773CFDD793F3DF7EA86977B74FDE1FEE9811FCF73CE + F39CEFE7FB3C3F7ECFF1388EC37836CFFF0370E6EC9571A1BC5E55E619058887 + D10953FB87FE9E4F8986AF61990E534A5633B3BC2E4BC0B26C114EBA376C3136 + EDF4D8B42D56ADDFCDE5AE93EE80F06FCDE8FDBDC4E2AA880449CB4771E5664A + 17D4FE27F154FFEA862677C08DEE26D4F00D2C3B075956482492C88A829C8CB2 + 74E33166942E1B156FEA305C8F666775929AB7F6640394C805FA7E6C23191B16 + C9F18BA50E92CF836EE8440623E43F534EE5FA638F749E0EDB61EDA6BDD980C1 + BE4E6E9DEFC0D67D8482218239121E8490AAA12493F446C2BCF6DEEF6911DDB0 + 38D8E99EDC862A9975EFEC7707C4FEEC244008C92F097726866188D0D1348DDE + 98CDCAFA2F31CD94E3945BEBBEFB7BCEEDD4CE847B438C6BEB9BB301F1F0AF44 + 2F9DC63B1CC3EB15DEC587E67D88ACA8DC9DFC0A15D58D638AA78EADAEE1A07B + 926F751F47BBD92D8EDF2235770FA0138EFB99B5620F85452F8C299E7AB7B1B1 + D51D702EDC43E287369E5455249164C334E8570C060BCAA858D0C053D3A78E29 + 9E9ADBB2FDC36C40D7A53B1C387599EBB13BAC29FB8275D38AB97D37CA277205 + 7FFD022BE7CCA069CB8B4CCE9B9216DADBF6B56B92B76FAA62DBAE8F3201739F + 2FA2F5F38B745D88A048010AF306D85053C2CDDB71BE3D9FC0D182F8127FB364 + DE04EAEBCA78FA89E919CE0D33F3D81ADE3F9C09D0FD797C70F467E2092FDAC4 + 49E83E93C2608C612B80AC4E2464EAF8E2830CE903AC7969162DDB96D17AF41B + D71DBC5B5B49E3BE8F33017D4370A8FD27F27373D14205E8B9134421A9A20EFC + E488AB30479591E428036A94E78AF339DDF206E648613DE07CA4D0761C389209 + 187682347FF63D9AA8626FA00033370F4792402CF6EA1A929E40518650BC1A35 + 8B4BD9F7F6620E9FF8CE75075BDF7C391B50BDA8848B57FB69FFAA873FAE5C4B + 5F038EED495F171EC716209B40C124F66F9EC3FCA2E2873A1F695980E50B673F + F45E49BFB3467A7B4C7157C0D2F2671F9BB82BA0E550FB63FFA38D02C6B38D3B + E05FAF5B45FEC8107D9F0000000049454E44AE426082} + end + end + inherited dsDataTable: TDADataSource + OnDataChange = dsDataTableDataChange + end +end diff --git a/Modulos/Contactos/Cliente/uEditorInstalador.pas b/Modulos/Contactos/Cliente/uEditorInstalador.pas new file mode 100644 index 0000000..bd54d5d --- /dev/null +++ b/Modulos/Contactos/Cliente/uEditorInstalador.pas @@ -0,0 +1,81 @@ +unit uEditorInstalador; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uEditorContacto, JvAppStorage, JvAppRegistryStorage, + JvComponent, JvFormPlacement, DB, uDADataTable, ImgList, PngImageList, + StdActns, ActnList, ComCtrls, TBX, TB2Item, TB2Dock, TB2Toolbar, + JvExControls, JvNavigationPane, ExtCtrls, pngimage; + +type + IEditorInstalador = interface(IEditorContacto) + ['{0959F4A7-ADD2-4437-B91B-3CB483C77A5E}'] + end; + + TfEditorInstalador = class(TfEditorContacto, IEditorInstalador) + procedure actEliminarExecute(Sender: TObject); + procedure dsDataTableDataChange(Sender: TObject; Field: TField); + public + constructor Create(AOwner: TComponent); override; + end; + +var + fEditorInstalador: TfEditorInstalador; + +implementation + +uses + uEditorUtils, uBizContacto, uViewInstalador; + +{$R *.dfm} + +function ShowEditorInstalador (ABizObject : TDADataTableRules) : TModalResult; +var + AEditor: TfEditorInstalador; +begin + AEditor := TfEditorInstalador.Create(Application); + try + AEditor.Contacto := (ABizObject as IBizInstalador); + Result := AEditor.ShowModal; + finally + AEditor.Release; + end; +end; + +{ TfEditorInstalador } + +constructor TfEditorInstalador.Create(AOwner: TComponent); +begin + inherited; + ViewContacto := CreateView(TfrViewInstalador) as IViewInstalador; +end; + +procedure TfEditorInstalador.actEliminarExecute(Sender: TObject); +begin + if (Application.MessageBox('¿Desea borrar este instalador?', 'Atención', MB_YESNO) = IDYES) then + inherited; +end; + +procedure TfEditorInstalador.dsDataTableDataChange(Sender: TObject; + Field: TField); +begin + inherited; + if Assigned(Contacto) and (not (Contacto.DataTable.Fetching) or + not (Contacto.DataTable.Opening) or not (Contacto.DataTable.Closing)) then + begin + if Length(Contacto.NOMBRE) = 0 then + JvNavPanelHeader.Caption := 'Nuevo instalador' + else + JvNavPanelHeader.Caption := Contacto.NOMBRE; + Self.Caption := JvNavPanelHeader.Caption; + end; +end; + +initialization + RegisterEditor(IBizInstalador, ShowEditorInstalador, etItem); + +finalization + +end. diff --git a/Modulos/Contactos/Cliente/uEditorInstaladores.ddp b/Modulos/Contactos/Cliente/uEditorInstaladores.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Contactos/Cliente/uEditorInstaladores.ddp differ diff --git a/Modulos/Contactos/Cliente/uEditorInstaladores.dfm b/Modulos/Contactos/Cliente/uEditorInstaladores.dfm new file mode 100644 index 0000000..617b187 --- /dev/null +++ b/Modulos/Contactos/Cliente/uEditorInstaladores.dfm @@ -0,0 +1,1394 @@ +inherited fEditorInstaladores: TfEditorInstaladores + Left = 280 + Top = 256 + Caption = 'Lista de instaladores' + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + Caption = 'Lista de instaladores' + inherited Image1: TImage + Picture.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001800 + 0000180806000000E0773DF80000000970485973000017120000171201679FD2 + 520000000467414D410000AA11B57D14DC0000034C4944415478DADD957D6855 + 651CC73FF76DF765BA983ACBC0596BB685CB940DA36CA50B75883303238723B7 + 4C170C86A62DDF865B9148ADC02982427F0863040D05C1A0185AD1B217274AD2 + 1F8349EA9DB9EBBCDEBB73CFDD793F3DF7EA46977B6CFDE1FEE9811FCF73CEF3 + 9CEFE7FB3C3F7ECF71D9B6CD5436D7FF0370EAEC9529A1BC5E55E69A00888789 + 0943BDC350FFE744C357310D9B59256B78A2BC2E4BC0342D1176BAD72D3136AC + F4D8B04C566DD8C9E5DEE3CE80F02FAD684303C4E28A880449D343716503A54B + 6AFF9378AA5FBDB1C51970ADAF05257C0DD3CA419264128924922C2325A32CDB + 7484B9A5CB27C45BBA74C7A379AF3A49CD5BBBB20172E40283DF77908C8D89E4 + 78C5521B9FC785A66B444622E43D594EE58623FFEA3C1D96CDBAFADDD98091C1 + 1E6E9CEFC2D23C84822182393E5C082145454E2619888479EDFD5FD3229A6EB2 + BFC739B94D5512EBDFD9EB0C88FDDE4380103EAF4FB833D0755D8486AAAA0CC4 + 2C56367E8561A41CA7DC9AF7DDDF736EA57626DCEB625CDBD89A0D88877F267A + A91BF7580CB75B78171F1AF72192AC303AF3652AAA9B27154F1D5B5DD37EE724 + DFE83B8A7ABD4F1CBF496AEE1E40231CF752B462170585CF4E2A9E7AB7A9B9DD + 19702EDC4FE2BB0E1E53147C22C9BAA13324EB8CE49751B1A489C7E7CC9E543C + 35B779DB47D980DE4BB7D877E2327FC66EB1B6EC4BD63F5ACCCDD1289F4915FC + F513AC5C309796CDCF313377565A6877C769C7246FABAF62EB8E8F33010B9F29 + A4FD8B8BF45E8820FB0214E40EB3B1A684EB37E37C7D3E81AD06F1246EF3CAA2 + 6934D69531EF913919CE7523F3D89A3E389809D0BCB97C78F847E20937EAF419 + 681E8382600CC50C30AA4C27646878E32344B561D6BE5844DBD6E5B41F3EE3B8 + 83776B2B69DEF3492660F02E1CE8FC813CBF1F35948FE69F260A491175E02547 + 5C857E45C22B451956A23C5D9C4777DB1B18E385F50FE7E385B67DDFA7998031 + 3B48EBA16F514515BB03F918FE5C6C9F0FC4628FA6E2D512C8F25D64B74ACDD2 + 52F6BCBD9483C7BE71DCC196375FCA0654BF50C2C53F86E83CD9CF6F57AEA6AF + 01DB72A5AF0B976D099045207F067B1B16B0B8B0F881CEC75B16E0D5E7E73FF0 + 5E49BF33C77B6B527147C0B2F2A71E9AB823A0ED40E743FFA34D00A6B24D39E0 + 6FAF6B45FE0D6316680000000049454E44AE426082} + end + end + inherited TBXDock: TTBXDock + inherited tbxFiltro: TTBXToolbar + Left = 411 + end + end + inherited frViewBarraSeleccion: TfrViewBarraSeleccion + inherited pnlSeleccion: TPanel + inherited bSeleccionar: TButton + Left = 548 + Top = -1 + end + inherited bCancelar: TButton + Left = 627 + Top = -1 + end + end + end + inherited EditorActionList: TActionList + inherited actNuevo: TAction + ImageIndex = 22 + 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 + 610000000970485973000017120000171201679FD252000001FE4944415478DA + A593DD4B145118C69F5574D5458A40DD44FCCA9B42D88B8494104A1242C4AF0B + 4DF1CA3FA08822C110F7C6BA124151BB8990F422304183564165053FD05D575C + 4334694D8D1A97C65DDB666677CE7C78668C1D16F3A276E0F09EC3CCFB7B9EF3 + CEFB9A5455453C8F697C76332E820EA8AF28D60F9C7F0DA1832D7D9F9E7B0396 + CC9BD10F15EA54921410498648641A2554363E31005AF2D14A1FF85F0447FE63 + 302106775B06905D741B92ACE0E9B018A39C9F308B37231367809AF2027C5DB0 + 23B0E7832CD3B7AA8C60F0043FC301343DF79CA9D225114557D6CEEFA7960C40 + 755906761C8F00DE044B6A2A122980E37878F677D1D0EED293BBDEE16207D565 + 567C737622391CA1EAA077142108027E485750D2DC1FA3ACD541033A9C2E03A0 + D58071BF05B7EBD0FC831082102F42C9AF4351E98373C984167166D1130B18DB + 6710986B43B198421D44B0282AB0DAECA8B25D3F97ACADF9D50D0390919783D6 + A14F601358D4DE8B4015C3F8E8B420B8EEC6C1E8333DB9A36732A606B76C9906 + E0C31782B1E94384AC57713999859A988413E112D2FCDFC1B3CBD87EFD38AA4C + FEF482CBBB6500BAE759F8DC8710B27211369B697B9990F29B83F998A1202F36 + 5F3D44F7E0D4C50E1A7A97E92FF4FDBD57D30AE17E795F579515558F0A8DDEED + CF06E04EC9350C8FCFFDF31C4401F6177DFF3F4CF18EF329BD276228E7D4407E + 0000000049454E44AE426082} + Name = 'PngImage22' + Background = clWindow + end> + 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 + F80000000970485973000017120000171201679FD2520000034D4944415478DA + DD957D6855651CC73FF7E56CF7DEE962EA340397D96C0B97291B8AD95227EA08 + 6706460E476AA60B06C3B7966FC3AD482457D01441A13F842141232128288656 + B4ECC58992F8C760E2CB9DB9DBBABBD773CFDD793F3DF7EA86977B74FDE1FEE9 + 811FCF73CEF39CEFE7FB3C3F7ECFF1388EC37836CFFF0370E6EC9571A1BC5E55 + E619058887D10953FB87FE9E4F8986AF61990E534A5633B3BC2E4BC0B26C114E + BA376C3136EDF4D8B42D56ADDFCDE5AE93EE80F06FCDE8FDBDC4E2AA880449CB + 4771E5664A17D4FE27F154FFEA862677C08DEE26D4F00D2C3B075956482492C8 + 8A829C8CB274E33166942E1B156FEA305C8F666775929AB7F6640394C805FA7E + 6C23191B16C9F18BA50E92CF836EE8440623E43F534EE5FA638F749E0EDB61ED + A6BDD980C1BE4E6E9DEFC0D67D8482218239121E8490AAA12493F446C2BCF6DE + EF6911DDB038D8E99EDC862A9975EFEC7707C4FEEC244008C92F097726866188 + D0D1348DDE98CDCAFA2F31CD94E3945BEBBEFB7BCEEDD4CE847B438C6BEB9BB3 + 01F1F0AF442F9DC63B1CC3EB15DEC587E67D88ACA8DC9DFC0A15D58D638AA78E + ADAEE1A07B926F751F47BBD92D8EDF2235770FA0138EFB99B5620F85452F8C29 + 9E7AB7B1B1D51D702EDC43E287369E5455249164C334E8570C060BCAA858D0C0 + 53D3A78E299E9ADBB2FDC36C40D7A53B1C387599EBB13BAC29FB8275D38AB97D + 37CA2772057FFD022BE7CCA069CB8B4CCE9B9216DADBF6B56B92B76FAA62DBAE + 8F3201739F2FA2F5F38B745D88A048010AF306D85053C2CDDB71BE3D9FC0D182 + F8127FB364DE04EAEBCA78FA89E919CE0D33F3D81ADE3F9C09D0FD797C70F467 + E2092FDAC449E83E93C2608C612B80AC4E2464EAF8E2830CE903AC7969162DDB + 96D17AF41BD71DBC5B5B49E3BE8F33017D4370A8FD27F27373D14205E8B91344 + 21A9A20EFCE488AB30479591E428036A94E78AF339DDF206E648613DE07CA4D0 + 761C389209187682347FF63D9AA8626FA00033370F4792402CF6EA1A929E4051 + 8650BC1A358B4BD9F7F6620E9FF8CE75075BDF7C391B50BDA8848B57FB69FFAA + 873FAE5C4B5F038EED495F171EC716209B40C124F66F9EC3FCA2E2873A1F6959 + 80E50B673FF45E49BFB3467A7B4C7157C0D2F2671F9BB82BA0E550FB63FFA38D + 02C6B38D3BE05FAF5B45FEC8107D9F0000000049454E44AE426082} + Name = 'PngImage21' + Background = clWindow + end> + Bitmap = {} + end +end diff --git a/Modulos/Contactos/Cliente/uEditorInstaladores.pas b/Modulos/Contactos/Cliente/uEditorInstaladores.pas new file mode 100644 index 0000000..0de2019 --- /dev/null +++ b/Modulos/Contactos/Cliente/uEditorInstaladores.pas @@ -0,0 +1,75 @@ +unit uEditorInstaladores; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uEditorContactos, Menus, DB, uDADataTable, JvAppStorage, + JvAppRegistryStorage, JvComponent, JvFormPlacement, ImgList, + PngImageList, StdActns, ActnList, ComCtrls, TB2ExtItems, TBXExtItems, + TBX, TB2Item, TB2Dock, TB2Toolbar, JvExControls, JvNavigationPane, + ExtCtrls, uCustomView, uViewBase, uViewBarraSeleccion, pngimage, + JvComponentBase; + +type + IEditorInstaladores = interface(IEditorContactos) + ['{D9A44463-036A-4AEF-88DC-2D61DEB4C837}'] + end; + + TfEditorInstaladores = class(TfEditorContactos, IEditorInstaladores) + procedure actEliminarExecute(Sender: TObject); + private + protected + public + constructor Create(AOwner: TComponent); override; + end; + +var + fEditorInstaladores: TfEditorInstaladores; + +implementation + +uses + uEditorUtils, uBizContacto, uViewInstaladores, uViewContactos; + +{$R *.dfm} + +function ShowEditorInstaladores (ABizObject : TDADataTableRules) : TModalResult; +var + AEditor: TfEditorInstaladores; +begin + AEditor := TfEditorInstaladores.Create(Application); + try + AEditor.Contactos := (ABizObject as IBizInstalador); + Result := AEditor.ShowModal; + finally + AEditor.Release; + end; +end; + + +{ TfEditorInstaladores } + +constructor TfEditorInstaladores.Create(AOwner: TComponent); +begin + inherited; + ViewGrid := CreateView(TfrViewInstaladores) as IViewContactos; +end; + +procedure TfEditorInstaladores.actEliminarExecute(Sender: TObject); +begin + if (Application.MessageBox('¿Desea borrar este instalador?', 'Atención', MB_YESNO) = IDYES) then + begin + inherited; + ViewGrid.RefreshGrid; + end; + +end; + +initialization + RegisterEditor(IBizInstalador, ShowEditorInstaladores, etItems); + +finalization + +end. + diff --git a/Modulos/Contactos/Cliente/uEditorProveedor.dfm b/Modulos/Contactos/Cliente/uEditorProveedor.dfm new file mode 100644 index 0000000..a1ac2ce --- /dev/null +++ b/Modulos/Contactos/Cliente/uEditorProveedor.dfm @@ -0,0 +1,44 @@ +inherited fEditorProveedor: TfEditorProveedor + Caption = 'Ficha de proveedor' + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + Caption = 'Proveedor' + inherited Image1: TImage + Picture.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001800 + 0000180806000000E0773DF80000000970485973000017120000171201679FD2 + 520000000467414D410000AA11B57D14DC0000034D4944415478DADD957D6855 + 651CC73FE7BE7177CDB9B18A126639175BE8F08F59BE35D199B6DE56833057E2 + 0B668AA361A953D3A1A6CEA9C3A0242AFA27184134080A05250DCD958E063502 + 69D272EE6ED96DBBDEBB7BCFD9BDE7B5E75CB7E1E59E39FF70FFF8C08FE739E7 + 39E7FBF93EBFDF799E235996C54436E9FE007C7BEE8F09A15495CF924601E262 + 74429707E8BD7C9C707F17866EF160D14B3C5EBA2A43C0304C1156AAD74C31D6 + CDD458370D9E5BB98DDF7FF8DC1910FCB11EF56627916842441CC5705358B68E + E2A7ABEF4ADCEE5F78B3CE19D07DA68EC4CD6E0CD3472C26138F2BC464999812 + 66F19A13E4172F1915AF6BD61C53F35E85C2CBAB776602E4DE5FF9EBE72694C8 + 90288E473C6AE1754BA89A4AA83F44F6F452CA569EB8A3F3549816AFAEDD9509 + E8EF68A1A7A319537513C80A90E5F322218412496445A13314E495ED6D291155 + 33D8DBE25CDC9AF218AFBDB5DB1910E96AC14F00AFC72BDCE9689A264225994C + D2193159BEF11B74DD766CBB3586DDDF726EDA2B13EE3531AEDE589F0988062F + 11FEED2B5C43115C2EE15DBCA80F43627282C1BC45CCA9A81D57DC4EDBAA9ABD + CE45EE69FD84E4F556917E037BEE16402518F550B06C270F4D2B1957DCBEB7A6 + 76FF185FD1852B749CFA80470A13784591355DA357D608F72E64D1BA2AB2A74E + 1F57DC9E5BBFE54026A0E7FC4F5C6A384ADFB5106A6125B3AB6FD0D716267859 + D423D44641F97C166C7F075FCE6329A15D4DDF391679CBDA72DEDE7A281DB0A4 + 6032178F1CA1EFC2797C8ACE40CEC394AC7883484F3703674F8BC227E87799E4 + CD5BC8539B5633E9D15969CE353D3D6D353B1AD3014F46BB38D7D4004A9C298A + 785085786E1E3E3541408EA1FB250644FCF7CF2045CF2F675E7D23FB3F3EE9B8 + 824DD565D4BE7F341D907FA595331F1EC69F9B2D003A01D522A999887D86E473 + 21FB5D44B2DC84FFFE979C19C5547EF935FAC8C6BACDF9C8467B77CFB1744051 + F84FBE3F78402422C914B7878010F78883CE1200D52B21FBDC4407E3E21819A2 + E4C50A66D71DA2F1B3D38E2BD8F0FA3399808AF945F475B4F3CBA75F70B5BD1D + 53E455B24CEC73DC4C85458EFF01E6EED94CEECC67C7743ED232004BE73E31E6 + B992BA678CF4E6B8E28E80C5A533EE99B823605FC347F7FC8F360A98C836E180 + FF01702244FEF5B056BE0000000049454E44AE426082} + end + end + inherited dsDataTable: TDADataSource + OnDataChange = dsDataTableDataChange + end +end diff --git a/Modulos/Contactos/Cliente/uEditorProveedor.pas b/Modulos/Contactos/Cliente/uEditorProveedor.pas new file mode 100644 index 0000000..6043ff0 --- /dev/null +++ b/Modulos/Contactos/Cliente/uEditorProveedor.pas @@ -0,0 +1,79 @@ +unit uEditorProveedor; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uEditorContacto, ImgList, PngImageList, StdActns, ActnList, TBX, + TB2Item, TB2Dock, TB2Toolbar, ComCtrls, JvExControls, JvComponent, + JvNavigationPane, uEditorItem, uViewProveedor, uBizContacto, DB, + uDADataTable, JvFormAutoSize, uDAScriptingProvider, uDACDSDataTable, + uCustomView, uViewBase, uViewMensaje, JvAppStorage, JvAppRegistryStorage, + JvFormPlacement, ExtCtrls, pngimage; + +type + IEditorProveedor = interface(IEditorContacto) + ['{D95C4DF8-819C-43EC-8589-CA53DCE78ADD}'] + end; + + TfEditorProveedor = class(TfEditorContacto, IEditorProveedor) + procedure actEliminarExecute(Sender: TObject); + procedure dsDataTableDataChange(Sender: TObject; Field: TField); + public + constructor Create(AOwner: TComponent); override; + end; + +implementation + +uses + uDataModuleContactos, uEditorUtils, uDataModuleBase; + +{$R *.dfm} + +function ShowEditorProveedor (ABizObject : TDADataTableRules) : TModalResult; +var + AEditor: TfEditorProveedor; +begin + AEditor := TfEditorProveedor.Create(Application); + try + AEditor.Contacto := (ABizObject as IBizProveedor); + Result := AEditor.ShowModal; + finally + AEditor.Release; + end; +end; + +procedure TfEditorProveedor.actEliminarExecute(Sender: TObject); +begin + if (Application.MessageBox('¿Desea borrar este proveedor?', 'Atención', MB_YESNO) = IDYES) then + inherited; +end; + +constructor TfEditorProveedor.Create(AOwner: TComponent); +begin + inherited; + ViewContacto := CreateView(TfrViewProveedor) as IViewProveedor; +end; + +procedure TfEditorProveedor.dsDataTableDataChange(Sender: TObject; + Field: TField); +begin + inherited; + if Assigned(Contacto) and (not (Contacto.DataTable.Fetching) or + not (Contacto.DataTable.Opening) or not (Contacto.DataTable.Closing)) then + begin + if Length(Contacto.NOMBRE) = 0 then + JvNavPanelHeader.Caption := 'Nuevo proveedor' + else + JvNavPanelHeader.Caption := Contacto.NOMBRE; + Self.Caption := JvNavPanelHeader.Caption; + end; +end; + +initialization + RegisterEditor(IBizProveedor, ShowEditorProveedor, etItem); + +finalization + + +end. diff --git a/Modulos/Contactos/Cliente/uEditorProveedores.ddp b/Modulos/Contactos/Cliente/uEditorProveedores.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Contactos/Cliente/uEditorProveedores.ddp differ diff --git a/Modulos/Contactos/Cliente/uEditorProveedores.dfm b/Modulos/Contactos/Cliente/uEditorProveedores.dfm new file mode 100644 index 0000000..5544404 --- /dev/null +++ b/Modulos/Contactos/Cliente/uEditorProveedores.dfm @@ -0,0 +1,1392 @@ +inherited fEditorProveedores: TfEditorProveedores + Left = 406 + Top = 352 + Caption = 'Lista de proveedores' + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + Caption = 'Lista de proveedores' + inherited Image1: TImage + Picture.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001800 + 0000180806000000E0773DF80000000970485973000017120000171201679FD2 + 520000000467414D410000AA11B57D14DC0000034D4944415478DADD957D6855 + 651CC73FE7BE7177CDB9B18A126639175BE8F08F59BE35D199B6DE56833057E2 + 0B668AA361A953D3A1A6CEA9C3A0242AFA27184134080A05250DCD958E063502 + 69D272EE6ED96DBBDEBB7BCFD9BDE7B5E75CB7E1E59E39FF70FFF8C08FE739E7 + 39E7FBF93EBFDF799E235996C54436E9FE007C7BEE8F09A15495CF924601E262 + 74429707E8BD7C9C707F17866EF160D14B3C5EBA2A43C0304C1156AAD74C31D6 + CDD458370D9E5BB98DDF7FF8DC1910FCB11EF56627916842441CC5705358B68E + E2A7ABEF4ADCEE5F78B3CE19D07DA68EC4CD6E0CD3472C26138F2BC464999812 + 66F19A13E4172F1915AF6BD61C53F35E85C2CBAB776602E4DE5FF9EBE72694C8 + 90288E473C6AE1754BA89A4AA83F44F6F452CA569EB8A3F3549816AFAEDD9509 + E8EF68A1A7A319537513C80A90E5F322218412496445A13314E495ED6D291155 + 33D8DBE25CDC9AF218AFBDB5DB1910E96AC14F00AFC72BDCE9689A264225994C + D2193159BEF11B74DD766CBB3586DDDF726EDA2B13EE3531AEDE589F0988062F + 11FEED2B5C43115C2EE15DBCA80F43627282C1BC45CCA9A81D57DC4EDBAA9ABD + CE45EE69FD84E4F556917E037BEE16402518F550B06C270F4D2B1957DCBEB7A6 + 76FF185FD1852B749CFA80470A13784591355DA357D608F72E64D1BA2AB2A74E + 1F57DC9E5BBFE54026A0E7FC4F5C6A384ADFB5106A6125B3AB6FD0D716267859 + D423D44641F97C166C7F075FCE6329A15D4DDF391679CBDA72DEDE7A281DB0A4 + 6032178F1CA1EFC2797C8ACE40CEC394AC7883484F3703674F8BC227E87799E4 + CD5BC8539B5633E9D15969CE353D3D6D353B1AD3014F46BB38D7D4004A9C298A + 785085786E1E3E3541408EA1FB250644FCF7CF2045CF2F675E7D23FB3F3EE9B8 + 824DD565D4BE7F341D907FA595331F1EC69F9B2D003A01D522A999887D86E473 + 21FB5D44B2DC84FFFE979C19C5547EF935FAC8C6BACDF9C8467B77CFB1744051 + F84FBE3F78402422C914B7878010F78883CE1200D52B21FBDC4407E3E21819A2 + E4C50A66D71DA2F1B3D38E2BD8F0FA3399808AF945F475B4F3CBA75F70B5BD1D + 53E455B24CEC73DC4C85458EFF01E6EED94CEECC67C7743ED232004BE73E31E6 + B992BA678CF4E6B8E28E80C5A533EE99B823605FC347F7FC8F360A98C836E180 + FF01702244FEF5B056BE0000000049454E44AE426082} + end + end + inherited TBXDock: TTBXDock + inherited tbxFiltro: TTBXToolbar + Left = 411 + end + end + inherited frViewBarraSeleccion: TfrViewBarraSeleccion + inherited pnlSeleccion: TPanel + inherited bSeleccionar: TButton + Left = 548 + end + inherited bCancelar: TButton + Left = 627 + end + end + end + inherited EditorActionList: TActionList + inherited actNuevo: TAction + ImageIndex = 22 + 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 + 610000000970485973000017120000171201679FD252000001FA4944415478DA + A5934B6813511486BF342610A2C50A86A220150BA2145C58D120828ABA2AD2BA + F0B510C48D1B1154A828A55D5877825474AB45375D58A80B9385292DA8A8B151 + 6B6D8DB50F43C1B4C624364C1E73E7E19DA96408B50BCDC0E5CC65E6FFFE7FCE + DCE3324D936A2E577FE46355041BD076B0C9DE280B23E412E3F6FD9A4DDBF107 + 76965F3464524D33109A8E2A7459350E1FBFEC002CF1FCEB1EF28B82F98534C9 + 5C9203A7EFB2A1712F9A6E70A557AD706EA88970FFD1C012E0E8BECDCC3EEF22 + 33338DAECBA7A64E36FB8B5431C389EBB12557B93461D8CED6FE71F8A5036809 + AE271EBA0879177E9F0FB704284A9ED8B7498EB5476D71671F2B276809D63337 + D481B75892EEC86F5429140A7CD7D6D17CEA4E85B3D5070B181A8A3A00AB07C9 + B70F512643567E8410E4F22A46432B8D7B4E2E130BD9C4672F629580A9D02B86 + E76EB0CDF0CA0425A205D8B5F11C5B8F1C5A26B6D6F09B0F0E2058AB11B97495 + D44F95FAB34D881A831F0F26989A9EA0FDEB275B7CEDD6938A1EECDE117000FE + 701FF1A703D4153D28AB6B71E3C2A72C92F6A8C413292E8CBD2F3B8B3F67213A + 3AEE000AB7BB49CC8E11D03CAC92BFDB251D4A5E93B45B90984973FEDD08DDF7 + C22B27889D69239355FE7A54EBD6FA690D0FDAAEBA61DAD59075F4F31707B0BF + 790BBDFD83FF3C076540D7CD9EFF1FA66AC7F93783B161288AF0DFC000000000 + 49454E44AE426082} + Name = 'PngImage22' + Background = clWindow + end> + 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 + F80000000970485973000017120000171201679FD2520000034D4944415478DA + DD957D6855651CC73FE7BE7177CDB9B18A126639175BE8F08F59BE35D199B6DE + 56833057E20B668AA361A953D3A1A6CEA9C3A0242AFA27184134080A05250DCD + 958E06350269D272EE6ED96DBBDEBB7BCFD9BDE7B5E75CB7E1E59E39FF70FFF8 + C08FE739E739E7FBF93EBFDF799E235996C54436E9FE007C7BEE8F09A15495CF + 924601E26274429707E8BD7C9C707F17866EF160D14B3C5EBA2A43C0304C1156 + AAD74C31D6CDD458370D9E5BB98DDF7FF8DC1910FCB11EF56627916842441CC5 + 705358B68EE2A7ABEF4ADCEE5F78B3CE19D07DA68EC4CD6E0CD3472C26138F2B + C46499981266F19A13E4172F1915AF6BD61C53F35E85C2CBAB776602E4DE5FF9 + EBE72694C890288E473C6AE1754BA89A4AA83F44F6F452CA569EB8A3F3549816 + AFAEDD9509E8EF68A1A7A319537513C80A90E5F322218412496445A13314E495 + ED6D29115533D8DBE25CDC9AF218AFBDB5DB1910E96AC14F00AFC72BDCE9689A + 264225994CD2193159BEF11B74DD766CBB3586DDDF726EDA2B13EE3531AEDE58 + 9F0988062F11FEED2B5C43115C2EE15DBCA80F43627282C1BC45CCA9A81D57DC + 4EDBAA9ABDCE45EE69FD84E4F556917E037BEE16402518F550B06C270F4D2B19 + 57DCBEB7A676FF185FD1852B749CFA80470A13784591355DA357D608F72E64D1 + BA2AB2A74E1F57DC9E5BBFE54026A0E7FC4F5C6A384ADFB5106A6125B3AB6FD0 + D716267859D423D44641F97C166C7F075FCE6329A15D4DDF391679CBDA72DEDE + 7A281DB0A46032178F1CA1EFC2797C8ACE40CEC394AC7883484F3703674F8BC2 + 27E87799E4CD5BC8539B5633E9D15969CE353D3D6D353B1AD3014F46BB38D7D4 + 004A9C298A785085786E1E3E3541408EA1FB250644FCF7CF2045CF2F675E7D23 + FB3F3EE9B8824DD565D4BE7F341D907FA595331F1EC69F9B2D003A01D522A999 + 887D86E47321FB5D44B2DC84FFFE979C19C5547EF935FAC8C6BACDF9C8467B77 + CFB1744051F84FBE3F78402422C914B7878010F78883CE1200D52B21FBDC4407 + E3E21819A2E4C50A66D71DA2F1B3D38E2BD8F0FA3399808AF945F475B4F3CBA7 + 5F70B5BD1D53E455B24CEC73DC4C85458EFF01E6EED94CEECC67C7743ED23200 + 4BE73E31E6B992BA678CF4E6B8E28E80C5A533EE99B823605FC347F7FC8F360A + 98C836E180FF01702244FEF5B056BE0000000049454E44AE426082} + Name = 'PngImage21' + Background = clWindow + end> + Bitmap = {} + end +end diff --git a/Modulos/Contactos/Cliente/uEditorProveedores.pas b/Modulos/Contactos/Cliente/uEditorProveedores.pas new file mode 100644 index 0000000..bacd26c --- /dev/null +++ b/Modulos/Contactos/Cliente/uEditorProveedores.pas @@ -0,0 +1,100 @@ +unit uEditorProveedores; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uEditorContactos, Menus, ImgList, PngImageList, StdActns, + ActnList, TB2ExtItems, TBXExtItems, TBX, TB2Item, TB2Dock, TB2Toolbar, + JvExControls, JvComponent, JvNavigationPane, DB, uDADataTable, + JvFormAutoSize, ComCtrls, uDAScriptingProvider, uDACDSDataTable, + JvAppStorage, JvAppRegistryStorage, JvFormPlacement, ExtCtrls, + uCustomView, uViewBase, uViewBarraSeleccion, pngimage, JvComponentBase; + +type + IEditorProveedores = interface(IEditorContactos) + ['{1A37D5B6-E090-4E71-94AA-1ABF34EA98DF}'] + end; + + TfEditorProveedores = class(TfEditorContactos, IEditorProveedores) + procedure actEliminarExecute(Sender: TObject); + procedure actDuplicarExecute(Sender: TObject); + public + constructor Create(AOwner: TComponent); override; + end; + +implementation + +uses + uViewProveedores, uViewContactos, uDataModuleContactos, uDataModuleBase, + uEditorGrid, uEditorUtils, uBizContacto; + +{$R *.dfm} + +function ShowEditorProveedores (ABizObject : TDADataTableRules) : TModalResult; +var + AEditor: TfEditorProveedores; +begin + AEditor := TfEditorProveedores.Create(Application); + try + AEditor.Contactos := (ABizObject as IBizProveedor); + Result := AEditor.ShowModal; + finally + AEditor.Release; + end; +end; + +function ShowSelectEditorProveedores (ABizObject : TDADataTableRules) : TModalResult; +var + AEditor: TfEditorProveedores; +begin + AEditor := TfEditorProveedores.Create(Application); + try + AEditor.Contactos := (ABizObject as IBizProveedor); + AEditor.SelectionBarVisible := True; + Result := AEditor.ShowModal; + finally + AEditor.Release; + end; +end; + + +{ +***************************** TfEditorProveedores ****************************** +} +procedure TfEditorProveedores.actEliminarExecute(Sender: TObject); +begin + if (Application.MessageBox('¿Desea borrar este proveedor?', 'Atención', MB_YESNO) = IDYES) then + begin + inherited; + ViewGrid.RefreshGrid; + end; + +end; + +constructor TfEditorProveedores.Create(AOwner: TComponent); +begin + inherited; + ViewGrid := CreateView(TfrViewProveedores) as IViewContactos; +end; + +procedure TfEditorProveedores.actDuplicarExecute(Sender: TObject); +var + AContacto : IBizContacto; +begin + inherited; + AContacto := dmContactos.GetCliente(Contactos.CODIGO); + Contactos.Insert; + Contactos.CopyFrom(AContacto); + Contactos.DataTable.ApplyUpdates; + ViewGrid.RefreshGrid; + ViewGrid.GotoFirst; +end; + +initialization + RegisterEditor(IBizProveedor, ShowEditorProveedores, etItems); + RegisterEditor(IBizProveedor, ShowSelectEditorProveedores, etSelectItems); + +finalization + +end. diff --git a/Modulos/Contactos/Cliente/uEditorVendedor.dfm b/Modulos/Contactos/Cliente/uEditorVendedor.dfm new file mode 100644 index 0000000..8bc98c7 --- /dev/null +++ b/Modulos/Contactos/Cliente/uEditorVendedor.dfm @@ -0,0 +1,49 @@ +inherited fEditorVendedor: TfEditorVendedor + Caption = 'Ficha de vendedor' + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + Caption = 'Vendedor' + inherited Image1: TImage + Picture.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001800 + 0000180806000000E0773DF80000000970485973000017120000171201679FD2 + 520000000467414D410000AA11B57D14DC000003E54944415478DADD955D6C14 + 5514C7FF33B36D77D952281050902FCB8A74AB8D402DEDBA76B1A64896501142 + B028A105DAB47C941A890A292D1FF2D1E00B06358527134D782A1F29840A4429 + 25D604B5A8444C7830354AA8752DDBD9D9D99DB9D77B6767A69D661FED0BB399 + 9C7B6736E777CEFF9C7347A094623C2FE1F100745CFF795C286B5E29106C00DB + 180FF99E27450C6BAE09617B40D7990505D1A8F19E101D3AE196DAD6F82FBBDF + A8D987BEABED4E0077A60C0DE2D78BEDF8FD9B0EC8B28CA827170BCB5F4761C5 + DB70B927994E4C8754B7D7945BE68007C1D7EBB6A60124D418EE7C7E1CA4F702 + 2231050F878731A8C431202B78B1AA162FBDD90C486E23729ED1D1F31969A5A9 + 0B0D61436DB3135019F2E36EF745F49FD90B414D201257F1AF40E19A96838107 + 0F31F0288EC6CFBAE07DD26F46CD65647270D9A899914EA1D1944C5575FB9D80 + D565F9B87ABA1583D7BE404214214DCAC60CDF2C3CE39B8EC8DFFFE05CC74D84 + 6B0F604E4915AB8268383C71C99D36832DC108DEAA6F7102563140E7478DD086 + EEC0E79F87291327C0EB11118BCAC81029AE7FFD0366966E832FB81144108D68 + ADA272ED3592D2DECA64D38E5627201C5C84B30737635AE61F08BC5C00558E43 + 61FA27985C2E11E8EAFA0EF35EDB83FCE00626896076162F2A9765B473628037 + EF3AE804AC0C3C8B530DAFB236BA8F70E5327833DC88C754482C7A5989E2CBB3 + DD285AB71F4BC25B98448211A56E69CFB33023B7C0358D879C8015A50BF16973 + 0DEEF55C4645E83914E64F413291448224D17BBB1FB77AEE21DCF2318A8AD7B2 + 76E63520C64DCCF6E4B3414DB998C1D6A631808A121FFA6EF4E0A796D3C8F5C6 + E1298940CA5531709F42E99D0C817890D7DE84F94FF8ED880F9CEC4C5BE4DDD5 + E5A87DE7B013505EBC00DD4D9F60EAED3FA16851C4973F40CED22494CE89F0FE + 32035474E16E2013853BAB91E3CE75E86D4F314D3DE33EEBDE3DE2042C5F9A87 + 1B45DB317942162455042D559053C0D4BE928DD85F2C0B68901F25F05B830F2B + D6541B83F6E1A9CB6933D8B92984FA3D479D80D0923C5C2BAA47B63B035EC105 + 9A4D206501AE6117D4A40E59D3580308F8FEA9382ACFB419DD43471D13562DA8 + D9510DEF1D7302822F3C8D4B8BB761BAC70B8F4B42A628B17162DDC2A659D535 + C4182496D0F0E3A22CAC3FD1C29C11B4B577A5CDA061631976BC3F0610289C8F + 6F3BBF427F6F1FD44814601DC465607D0A2231505626A45953915F16C0CCD973 + 0D9DC9E813D43A81CD5AECFAE0B81350F2FC1CB3B7C9C884EAB0F7464BEAA39C + 5A00E33D6CCB01FCD7B8B7CD0928F6CF368FE05427A48668044638CC76689DFB + 23DF0D0B0A3393DDFBC6005A8F9CFCDFBF6836603CAF7107FC0730314BFE0CBC + 83B80000000049454E44AE426082} + end + end + inherited dsDataTable: TDADataSource + OnDataChange = dsDataTableDataChange + end +end diff --git a/Modulos/Contactos/Cliente/uEditorVendedor.pas b/Modulos/Contactos/Cliente/uEditorVendedor.pas new file mode 100644 index 0000000..f3c35e0 --- /dev/null +++ b/Modulos/Contactos/Cliente/uEditorVendedor.pas @@ -0,0 +1,81 @@ +unit uEditorVendedor; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uEditorContacto, JvAppStorage, JvAppRegistryStorage, + JvComponent, JvFormPlacement, DB, uDADataTable, ImgList, PngImageList, + StdActns, ActnList, ComCtrls, TBX, TB2Item, TB2Dock, TB2Toolbar, + JvExControls, JvNavigationPane, ExtCtrls, pngimage; + +type + IEditorVendedor = interface(IEditorContacto) + ['{119A41EE-541C-4522-B786-5D64767E9018}'] + end; + + TfEditorVendedor = class(TfEditorContacto, IEditorVendedor) + procedure actEliminarExecute(Sender: TObject); + procedure dsDataTableDataChange(Sender: TObject; Field: TField); + public + constructor Create(AOwner: TComponent); override; + end; + +var + fEditorVendedor: TfEditorVendedor; + +implementation + +uses + uEditorUtils, uBizContacto, uViewVendedor; + +{$R *.dfm} + +function ShowEditorVendedor (ABizObject : TDADataTableRules) : TModalResult; +var + AEditor: TfEditorVendedor; +begin + AEditor := TfEditorVendedor.Create(Application); + try + AEditor.Contacto := (ABizObject as IBizVendedor); + Result := AEditor.ShowModal; + finally + AEditor.Release; + end; +end; + +{ TfEditorVendedor } + +constructor TfEditorVendedor.Create(AOwner: TComponent); +begin + inherited; + ViewContacto := CreateView(TfrViewVendedor) as IViewVendedor; +end; + +procedure TfEditorVendedor.actEliminarExecute(Sender: TObject); +begin + if (Application.MessageBox('¿Desea borrar este vendedor?', 'Atención', MB_YESNO) = IDYES) then + inherited; +end; + +procedure TfEditorVendedor.dsDataTableDataChange(Sender: TObject; + Field: TField); +begin + inherited; + if Assigned(Contacto) and (not (Contacto.DataTable.Fetching) or + not (Contacto.DataTable.Opening) or not (Contacto.DataTable.Closing)) then + begin + if Length(Contacto.NOMBRE) = 0 then + JvNavPanelHeader.Caption := 'Nuevo vendedor' + else + JvNavPanelHeader.Caption := Contacto.NOMBRE; + Self.Caption := JvNavPanelHeader.Caption; + end; +end; + +initialization + RegisterEditor(IBizVendedor, ShowEditorVendedor, etItem); + +finalization + +end. diff --git a/Modulos/Contactos/Cliente/uEditorVendedores.ddp b/Modulos/Contactos/Cliente/uEditorVendedores.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Contactos/Cliente/uEditorVendedores.ddp differ diff --git a/Modulos/Contactos/Cliente/uEditorVendedores.dfm b/Modulos/Contactos/Cliente/uEditorVendedores.dfm new file mode 100644 index 0000000..e17f75d --- /dev/null +++ b/Modulos/Contactos/Cliente/uEditorVendedores.dfm @@ -0,0 +1,1499 @@ +inherited fEditorVendedores: TfEditorVendedores + Left = 263 + Top = 269 + Width = 825 + Caption = 'Lista de vendedores' + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + Width = 817 + Caption = 'Lista de vendedores' + inherited Image1: TImage + Left = 790 + Picture.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001800 + 0000180806000000E0773DF80000000970485973000017120000171201679FD2 + 520000000467414D410000AA11B57D14DC000003E54944415478DADD955D6C14 + 5514C7FF33B36D77D952281050902FCB8A74AB8D402DEDBA76B1A64896501142 + B028A105DAB47C941A890A292D1FF2D1E00B06358527134D782A1F29840A4429 + 25D604B5A8444C7830354AA8752DDBD9D9D99DB9D77B6767A69D661FED0BB399 + 9C7B6736E777CEFF9C7347A094623C2FE1F100745CFF795C286B5E29106C00DB + 180FF99E27450C6BAE09617B40D7990505D1A8F19E101D3AE196DAD6F82FBBDF + A8D987BEABED4E0077A60C0DE2D78BEDF8FD9B0EC8B28CA827170BCB5F4761C5 + DB70B927994E4C8754B7D7945BE68007C1D7EBB6A60124D418EE7C7E1CA4F702 + 2231050F878731A8C431202B78B1AA162FBDD90C486E23729ED1D1F31969A5A9 + 0B0D61436DB3135019F2E36EF745F49FD90B414D201257F1AF40E19A96838107 + 0F31F0288EC6CFBAE07DD26F46CD65647270D9A899914EA1D1944C5575FB9D80 + D565F9B87ABA1583D7BE404214214DCAC60CDF2C3CE39B8EC8DFFFE05CC74D84 + 6B0F604E4915AB8268383C71C99D36832DC108DEAA6F7102563140E7478DD086 + EEC0E79F87291327C0EB11118BCAC81029AE7FFD0366966E832FB81144108D68 + ADA272ED3592D2DECA64D38E5627201C5C84B30737635AE61F08BC5C00558E43 + 61FA27985C2E11E8EAFA0EF35EDB83FCE00626896076162F2A9765B473628037 + EF3AE804AC0C3C8B530DAFB236BA8F70E5327833DC88C754482C7A5989E2CBB3 + DD285AB71F4BC25B98448211A56E69CFB33023B7C0358D879C8015A50BF16973 + 0DEEF55C4645E83914E64F413291448224D17BBB1FB77AEE21DCF2318A8AD7B2 + 76E63520C64DCCF6E4B3414DB998C1D6A631808A121FFA6EF4E0A796D3C8F5C6 + E1298940CA5531709F42E99D0C817890D7DE84F94FF8ED880F9CEC4C5BE4DDD5 + E5A87DE7B013505EBC00DD4D9F60EAED3FA16851C4973F40CED22494CE89F0FE + 32035474E16E2013853BAB91E3CE75E86D4F314D3DE33EEBDE3DE2042C5F9A87 + 1B45DB317942162455042D559053C0D4BE928DD85F2C0B68901F25F05B830F2B + D6541B83F6E1A9CB6933D8B92984FA3D479D80D0923C5C2BAA47B63B035EC105 + 9A4D206501AE6117D4A40E59D3580308F8FEA9382ACFB419DD43471D13562DA8 + D9510DEF1D7302822F3C8D4B8BB761BAC70B8F4B42A628B17162DDC2A659D535 + C4182496D0F0E3A22CAC3FD1C29C11B4B577A5CDA061631976BC3F0610289C8F + 6F3BBF427F6F1FD44814601DC465607D0A2231505626A45953915F16C0CCD973 + 0D9DC9E813D43A81CD5AECFAE0B81350F2FC1CB3B7C9C884EAB0F7464BEAA39C + 5A00E33D6CCB01FCD7B8B7CD0928F6CF368FE05427A48668044638CC76689DFB + 23DF0D0B0A3393DDFBC6005A8F9CFCDFBF6836603CAF7107FC0730314BFE0CBC + 83B80000000049454E44AE426082} + end + end + inherited TBXDock: TTBXDock + Width = 817 + inherited tbxMain: TTBXToolbar + inherited TBXSeparatorItem14: TTBXSeparatorItem + Visible = True + end + object TBXItem36: TTBXItem [8] + Action = actComisiones + DisplayMode = nbdmImageAndText + end + end + inherited tbxMenu: TTBXToolbar + object TBXSubmenuItem2: TTBXSubmenuItem + Caption = '&Herramientas' + end + end + inherited tbxFiltro: TTBXToolbar + Left = 548 + end + end + inherited StatusBar: TStatusBar + Width = 817 + end + inherited frViewBarraSeleccion: TfrViewBarraSeleccion + Width = 817 + inherited pnlSeleccion: TPanel + Width = 817 + inherited bSeleccionar: TButton + Left = 658 + end + inherited bCancelar: TButton + Left = 737 + end + end + end + inherited EditorActionList: TActionList + inherited actNuevo: TAction + ImageIndex = 23 + end + object actComisiones: TAction + Category = 'Herramientas' + Caption = 'Calcular comisiones...' + ImageIndex = 22 + OnExecute = actComisionesExecute + 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 + 610000000970485973000017120000171201679FD252000002514944415478DA + 8D925F4853511CC7BFF7DE4DBD6E33B799A3425C8533D2F025C55C98FDC1021F + 667F1C542CA2724421A307090A155F828242F065680F3129E80F4C16120E1B89 + 4E9A302CED41211FCC10DB5AD3AE77F7DE6DEC740B1C14BBD5F7E51C0EE77CCE + E7777E872284603389B59877FEE540EBD2B8173CCF8363F5A83CDA8A9A66078C + 5B4D147284DA0424A5C4CCACE7EE5226E4B3C51302221B1B880922A2BC80BA73 + 4E1C3CDBF5C96834942B023E8CFBC8F2C35BA0A424E2A284358A40555284E86A + 04D1EF225C6E3FCC55F5942260D4DD4D62AF1F2349D360B66861AAD8014B4529 + E25FBF61D83B8916672FEA6CD79501C3F73A487A7D16155566187485D0B03412 + 1C0F354D10783383ED0DED38D4D6A10C18EA729092BCCFB0365643E2450872FD + 49B91C150DF8FDD3309FE844B3FD9A32E0FEE5260261112DB67A68D405101312 + 18F9765EE0F0E4E9046ACF74E394F3E65F009D0EB2107C85E6A67DA8D96B402A + 994232934228BC8CA9E0025A7AFA613F7D551930351A70CDF50CF6E93522D803 + 71307A09D145592A540C2AC362F7C08DA163B58D17140123CE077DC6F08A4B48 + 73100FAFA2687F0AC2880EEC9EB7508AB56789CA027C95974871613E18890669 + 1050544DC0AD076075DE06B6ED8218EC4778EC1D06035FE0BE733C3BCF025E58 + 2E126D811A1A4A05A2CD80C907185D0463651C3ECE4DE634683F62B267019E9D + E74929AB01AB62904733A041217DD2F7FF063ECFF0C472E8FDBC14E7AE40EE40 + 465E36EA5760299BFEB5F19F06B912EC2D27B90C7E1E941FF0F96F5D5000B4C9 + C3B33F0D1E8D8BD9FFF003405736B02FCE0FFF0000000049454E44AE426082} + Name = 'PngImage22' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD2520000023A4944415478DA + A593DB4B54511487BF39733C3A9A9930A99486541086169598264184522F3D84 + 34200541FF400FD24B17886E6405911111111614158414955866669A1682E565 + 2A310BAF9490CC4C303367CED9E7B4CF0C34F9E043B95FD67ED8EB5BBFF55B7B + B96CDB6621C7D5D436B820421CB07B7B31C1994986EF9E67EAFD6B66748BBCF2 + 6ACA7D07513D5E8430318585B06C4CD38982C58BD2A8F6D5250015856E461E5C + 461DEA623C1060C634980E8428F31DA072DF4999A050FF449B53B95069A3F1F6 + A304C03BD9CC647323564C472CC964457101A1C02CC35F83D41CB9436A762186 + 252B4B15A62930E5BDB5B32F09D0061A098D77B366DD4ABCD919A4692E8C6898 + 573DA394D49C25ABA0848B2D9EF915443A2EE00EFBD9B9AB8C48304A241CC632 + 755E747DA3747F03D9F94508D9BB21EC78741474BCFB90048C3E3CCAD4A7767C + 7B2A599695251FC5181E9BE0D99B097C87EFB1347FAD4C962D1889644B9AD9D9 + DBFF570BD3FD0CDCBCCF6AAF4E6EA5C1AF90CE582B0473F2D871A29E742D33E1 + 813301D38E4FA1BB6F2809C878DA85DA3E82AD06A0761AD70F0DED713ED1F454 + A60E6D60D3C62A4E5F6999E3C1E6F5394940FAB11BA4842268AA0B75AB8EE767 + 1A51BF228D140CE5EA6CB9762A2E3D3E05A705E945EFC0C72440ADBB8AC71064 + A6A8286E05372E624260183018FA4E45CB25CE5D7F3EBF82E8DB1E66FD5F2010 + 469146D96E09502096E2C62A5A4ED5DEDA7875E7273AD1D99F3EFFE724605BE9 + 2A6E35BDFCE73DF803387EA6E1FF9769A1EBFC1BC1A15528DD8924DF00000000 + 49454E44AE426082} + Name = 'PngImage23' + Background = clWindow + end> + 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 + F80000000970485973000017120000171201679FD252000003E54944415478DA + DD955D6C145514C7FF33B36D77D952281050902FCB8A74AB8D402DEDBA76B1A6 + 4896501142B028A105DAB47C941A890A292D1FF2D1E00B06358527134D782A1F + 29840A442925D604B5A8444C7830354AA8752DDBD9D9D99DB9D77B6767A69D66 + 1FED0BB3999C7B6736E777CEFF9C7347A094623C2FE1F100745CFF795C286B5E + 29106C00DB180FF99E27450C6BAE09617B40D7990505D1A8F19E101D3AE196DA + D6F82FBBDFA8D987BEABED4E0077A60C0DE2D78BEDF8FD9B0EC8B28CA827170B + CB5F4761C5DB70B927994E4C8754B7D7945BE68007C1D7EBB6A60124D418EE7C + 7E1CA4F7022231050F878731A8C431202B78B1AA162FBDD90C486E23729ED1D1 + F31969A5A90B0D61436DB3135019F2E36EF745F49FD90B414D201257F1AF40E1 + 9A968381070F31F0288EC6CFBAE07DD26F46CD65647270D9A899914EA1D1944C + 5575FB9D80D565F9B87ABA1583D7BE404214214DCAC60CDF2C3CE39B8EC8DFFF + E05CC74D846B0F604E4915AB8268383C71C99D36832DC108DEAA6F7102563140 + E7478DD086EEC0E79F87291327C0EB11118BCAC81029AE7FFD0366966E832FB8 + 1144108D68ADA272ED3592D2DECA64D38E5627201C5C84B30737635AE61F08BC + 5C00558E4361FA27985C2E11E8EAFA0EF35EDB83FCE00626896076162F2A9765 + B473628037EF3AE804AC0C3C8B530DAFB236BA8F70E5327833DC88C754482C7A + 5989E2CBB3DD285AB71F4BC25B98448211A56E69CFB33023B7C0358D879C8015 + A50BF169730DEEF55C4645E83914E64F413291448224D17BBB1FB77AEE21DCF2 + 318A8AD7B276E63520C64DCCF6E4B3414DB998C1D6A631808A121FFA6EF4E0A7 + 96D3C8F5C6E1298940CA5531709F42E99D0C817890D7DE84F94FF8ED880F9CEC + 4C5BE4DDD5E5A87DE7B013505EBC00DD4D9F60EAED3FA16851C4973F40CED224 + 94CE89F0FE32035474E16E2013853BAB91E3CE75E86D4F314D3DE33EEBDE3DE2 + 042C5F9A871B45DB317942162455042D559053C0D4BE928DD85F2C0B68901F25 + F05B830F2BD6541B83F6E1A9CB6933D8B92984FA3D479D80D0923C5C2BAA47B6 + 3B035EC1059A4D206501AE6117D4A40E59D3580308F8FEA9382ACFB419DD4347 + 1D13562DA8D9510DEF1D7302822F3C8D4B8BB761BAC70B8F4B42A628B17162DD + C2A659D535C4182496D0F0E3A22CAC3FD1C29C11B4B577A5CDA061631976BC3F + 0610289C8F6F3BBF427F6F1FD44814601DC465607D0A2231505626A45953915F + 16C0CCD9730D9DC9E813D43A81CD5AECFAE0B81350F2FC1CB3B7C9C884EAB0F7 + 464BEAA39C5A00E33D6CCB01FCD7B8B7CD0928F6CF368FE05427A48668044638 + CC76689DFB23DF0D0B0A3393DDFBC6005A8F9CFCDFBF6836603CAF7107FC0730 + 314BFE0CBC83B80000000049454E44AE426082} + Name = 'PngImage21' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD2520000040C4944415478DA + B5957F6C136518C7BF776D474BC7D87061A011815981753211E6D86AA5B86548 + 6AC409129C4AB6C13637C5312331D1EC17E8D044A3C1A066C384986804FF984A + C6C284C5316B9C9190A1123061D1D4C8A4CEBA75EDF5DADEBDBEEFF576F3E0A6 + 4EC39B5C9EF7C7F5F93CCFF77D9E2B4708C1F51C1C0374F57D775D2865F7E672 + 1A802E944DB66649C98A55E7B24CD78024510B0239419473599620C9CC12CD2A + EFD2E7A1AA173074B2430F60CE84B1515C38D6819FFABB100E8711B2656059F1 + 83C82B7D1C66EB5CD589EA9048DA9C304B1DB020D87CCB4E03404C8CE0DC7BAF + 401EFC14C188802B13131815A2088405DC555E83BB1F69024C56257296D1FE4F + 2C86D2D47AC6B0ADA6490FD8E471E2FCC031F80F3D0F4E8C211815F1074760CE + 4C4360E40A02E35134BCD30BFB42A71A359391CAC164236A4612418224652AAF + 6DD6031E589783939DAD183DF53E623C0FD3DC5464396EC26D8EF908FEF63B3E + EEFA02DE9A362C2A2CA7B7C02B0E5F3D6E35CC60873B88C7EA5AF480FB29A0FB + B50624C6CEC1E15C8C797366C36EE311098561E109FA3E3F8B1B8BAAE1703F0A + 99E39568272F95699F9093DA4F66B2FDA9563DC0EB5E81237B2B9099F2335CF7 + E4420C472150FD63542E330FF4F67E8DC5F7ED418E7B1B9584532B8B5D2A93E5 + AFCE65055CF1F45E3D60A36B390ED697D032BA04EFA6B5B05BAC8846449868F4 + 6121840F8E0C207F4B33567B77508938254A69527B96851AF924B8AA619F1EB0 + A16819DE6EAAC2455F0F4A3DB7232F671EE2B13862721C8367FCF8D27711DE96 + 37915FB0999633BB03597964B53C596F10552E6AB0B3F12A4069A10343A77DF8 + B6A51319F6286C8541983244042E110883E9E0641BB23B1AB16481538BB8ED40 + B7E125EFAE2C46CD332FEA01C505B762A0F12DDC70E617088910A2EB4790B626 + 0EA17B0EECDF6781F0669C77A5206F5725D2AC193ABDB52E26C93DE6B3F6D976 + 3D60FD9A6C9CCE7F12E9B367C124F2204502D272A9DA275211B94CB34002E1F1 + 187EA877604359A5D2682F1DEC31CC60D7760FEAF6ECD7033CABB3712ABF0EA9 + 560BEC9C192455866916609E30438C4B082712D8F8BADFD0E1375987B4BB206A + 45D53FF7B21EE05EB514C7EFACC67C9B1D36B30929BC89B613AD16DACDA29480 + 65730F16969461A9EB0D0CFB762B8E2F0F9F05867F4467DFAF38DCB4EE5A72C9 + 8929802B6F09BEEAFE0CFEC12188C110402B88C940EB14B289C302773AB203EF + 2ACEAE1ECDED4F4C0BD600852B17A9B52D4F75A8046DAD94243D5FE9AF3494A9 + 625FFF357B87FBA3531914386F563FC1C94A4836D1148C7E4031FEE1DA19C944 + A15B35406BFB817FFC875A953982EA15438632D168A797E8DF0C5FDB2D0FBB5C + CB8F1A9EF92E1842E9B8632600F2B7F250BD8D7E37A30CA8393A4DA45B29E0A3 + FF05F8AFE34FB2402F1C4138F79E0000000049454E44AE426082} + Name = 'PngImage22' + Background = clWindow + end> + Bitmap = {} + end +end diff --git a/Modulos/Contactos/Cliente/uEditorVendedores.pas b/Modulos/Contactos/Cliente/uEditorVendedores.pas new file mode 100644 index 0000000..1f883ce --- /dev/null +++ b/Modulos/Contactos/Cliente/uEditorVendedores.pas @@ -0,0 +1,88 @@ +unit uEditorVendedores; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uEditorContactos, Menus, DB, uDADataTable, JvAppStorage, + JvAppRegistryStorage, JvComponent, JvFormPlacement, ImgList, + PngImageList, StdActns, ActnList, ComCtrls, TB2ExtItems, TBXExtItems, + TBX, TB2Item, TB2Dock, TB2Toolbar, JvExControls, JvNavigationPane, + ExtCtrls, uCustomView, uViewBase, uViewBarraSeleccion, pngimage, + JvComponentBase; + +type + IEditorVendedores = interface(IEditorContactos) + ['{01A97825-6628-41D3-969F-1B296EE2ECE1}'] + end; + + TfEditorVendedores = class(TfEditorContactos, IEditorVendedores) + actComisiones: TAction; + TBXSubmenuItem2: TTBXSubmenuItem; + TBXItem36: TTBXItem; + procedure actEliminarExecute(Sender: TObject); + procedure actComisionesExecute(Sender: TObject); + private + protected + public + constructor Create(AOwner: TComponent); override; + end; + +var + fEditorVendedores: TfEditorVendedores; + +implementation + +uses + uEditorUtils, uBizContacto, uViewVendedores, uViewContactos; + +{$R *.dfm} + +function ShowEditorVendedores (ABizObject : TDADataTableRules) : TModalResult; +var + AEditor: TfEditorVendedores; +begin + AEditor := TfEditorVendedores.Create(Application); + try + AEditor.Contactos := (ABizObject as IBizInstalador); + Result := AEditor.ShowModal; + finally + AEditor.Release; + end; +end; + + +{ TfEditorVendedores } + +constructor TfEditorVendedores.Create(AOwner: TComponent); +begin + inherited; + ViewGrid := CreateView(TfrViewVendedores) as IViewContactos; +end; + +procedure TfEditorVendedores.actEliminarExecute(Sender: TObject); +begin + if (Application.MessageBox('¿Desea borrar este vendedor?', 'Atención', MB_YESNO) = IDYES) then + begin + inherited; + ViewGrid.RefreshGrid; + end; + +end; + +procedure TfEditorVendedores.actComisionesExecute(Sender: TObject); +var + aObj : IBizVendedor; +begin + inherited; + if Supports(Contactos, IBizVendedor, aObj) then + aObj.CalcularComisiones; +end; + +initialization + RegisterEditor(IBizVendedor, ShowEditorVendedores, etItems); + +finalization + +end. + diff --git a/Modulos/Contactos/Cliente/uPluginControllerContactos.dfm b/Modulos/Contactos/Cliente/uPluginControllerContactos.dfm new file mode 100644 index 0000000..05f88bb --- /dev/null +++ b/Modulos/Contactos/Cliente/uPluginControllerContactos.dfm @@ -0,0 +1,838 @@ +object ModuleContactos: TModuleContactos + OldCreateOrder = True + Description = 'Ventas' + ModuleMenu = MainMenu + ModuleName = 'Contactos' + SmallImages = SmallImages + LargeImages = LargeImages + Author = 'Rodax Software' + Version = '1.0.0' + Left = 780 + Top = 302 + Height = 252 + Width = 401 + object LargeImages: TPngImageList + Height = 24 + Width = 24 + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD252000002744944415478DA + 63FCFFFF3F032D01E3F0B060F9D6D334B3056E41A4B729491AFFFCFDCFF0F7EF + 3F869FBFFE80E93FFFFE8169301B887FFDFECB109E5E876A41E249438206FF05 + AAFFF5F72FC3AF3F7FC0F4975FBF207C10065A02932BFAB59C61DED24D9816CC + 373F8F6291F45B6F8626CF660C8BFE010D0361CFD5F60C1F791E800DBF14F082 + 4169A520D8928ABFAB705B00022036B2E11718CF33189F346660B809E4A83330 + 9C353FCBA0F9438BE117D007415B3C189EB2DF66B811FC1AAC566C3137431DC3 + 5AFC3E8019CE7C8A89E1AFD93F300D32FC6CDC5906E379408BB419183EEB7C61 + E0BDC2C3F05AE50D43F84E5F86BD51C718841771817DD0CEB211BB05E841C3BC + 1C684124D082C54C10C39719339C8D02D2B38C193E447C6410D8C2CFF0C2E525 + 43D49E00860B7F2EC0E3A3977D0B911620FBE02A508203887F30807DF056ED1D + 83F02D218627324F18E20E86329CFA79166EC164AEEDF82D40B6E42F50C36596 + 4B9038B80894D087C481DC5B79869F3F7E60180E02382D404E4520C58A1FFC18 + 6A9C6BC196FC03A7F5BF700CE247EF0D841BFE33E50F03E34C46FC16C0003C6D + 03B1CCB31F0C5325B4B1E60BDE877B505C0E03582D40CFA57FA039F3EA444D06 + 09A7200645CB1E86FBC74BC06A5EDC0726E7FBF719E6EE7BCE30A7DA09C3E229 + 4F73312D98B2780756570A7E3BC7A0F4660ED8307450DD928DD3E273AC89080B + BA27CF27584C9C2B7B88553CA5751FA65AA0E12000B680919191A0E1C75A14FF + 93124C404BC3E6EEFBB19A140B4281D42A6CC13467EF77AC96022D6024CA0290 + E196969AABB0C91D3F7E1D6BDC008101D0828BC45A803778402EC5A597681FE0 + 0A1E200087355E0B6809686E0100FA3E2AAB1481BE0E0000000049454E44AE42 + 6082} + Name = 'PngImage1' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD2520000033B4944415478DA + DD957F68565518C73F77EF0FDFBDB9B94DC1214D5BB2FD61A3B0399236D66424 + 96A32874A1329D2D322C7F24686C0D539318FE964419E29F6AFF5810D982821C + BA0D57292846A4AD36B7D770BEEFF6FEBA7BEF3DF7DEB773A72EDFDE3BD71FEE + 1F0F3CDC7378CEF97E9EE73CE79CAB24934926B3298F07E0EB73BF4E0AE5B5AA + 79CA18400EC61C86162270F93043033D986692E9454B99337F459A80695AA37E + FB6B58D6BDF1DDFE2BAB3EE2D277479D01033FED440FFC4E389C60381263C474 + 31B7BC9EE205B5FF4BDCFED6AC6E7406F47535A1057AE5242FD1689C585C9516 + 27AA06A9ACFB9C278B5F1A136F3A2D1CB766D3E2115E5FFB713A203E78893F2F + 1C401D1A91C571CBA9493C2E055DE80C066F93F55429E5CB0F3D34F251B392BC + D9D09C0E08F67C457FF7492CCD853FD38FCFEB41C142681AAAAA72FD763F351F + 768E8A08C364D797CEC57DAF2A46EDBAEDCE80E16B67F0E1C7E3F64821032104 + 42D7D125E47AD8A2BAE1F4B8D15B7666327A43F657AEDF910E880C7413BAF205 + 198961321419BB5C681806868444E30922D32B295DBC7E42717B5CB761977391 + FBBB5AD16E76CAED37B17DA66167A13310715358BD8D1905CF4C286E5BFDE6DD + CE806B7D17E8ED68656622814716591882802AB893534259453D3373674F286E + FBDED9F2593AE07C7F072DDDFBE9BBF51BCBF4222AF29F261009D13674836EF3 + 0ED5854B787FE106F29E98312AD47CF01BC7226F5C5DC5BAAD2DA980E7E64F65 + 5FE711DA035DA8DE30B9A129AC29A9E5AFE19B7C1B6C079F0F821994E79552B7 + E06D0AB2E7A4446E9FAA0733FBA0716F2A80593DECF9F118514610D3E2E8468C + BC58169A5710F70B7C46164AC84B70B097A5C5AFB2B5E2133E3DDAE698C1BB6F + 95B3A9797F2A2090DDC1DE1F5AC9F6E5626427107E699ABC702E175E251377DC + 872BECE3EF500F453905B4BE71EAA1176DCBF603A90033FF0F769FDD879600F7 + 340F56A620E936E569525074372ED5432C1C269618A4A6A4868D658DEC39FEBD + 63060DCB5F4C07BCFC4211576F5DE5F8C513FC7CE3171991B0B5EDD7027999A5 + 2964E678D95CD6C4B3F9A5E3467EBFA5011695CD1D77D1442FE77FC51D0195CF + 173E327147C08E96238FFA87F62F6032DBA403FE011B7940FEE55D65A3000000 + 0049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD2520000034D4944415478DA + DD957D6855651CC73FE7BE7177CDB9B18A126639175BE8F08F59BE35D199B6DE + 56833057E20B668AA361A953D3A1A6CEA9C3A0242AFA27184134080A05250DCD + 958E06350269D272EE6ED96DBBDEBB7BCFD9BDE7B5E75CB7E1E59E39FF70FFF8 + C08FE739E739E7FBF93EBFDF799E235996C54436E9FE007C7BEE8F09A15495CF + 924601E26274429707E8BD7C9C707F17866EF160D14B3C5EBA2A43C0304C1156 + AAD74C31D6CDD458370D9E5BB98DDF7FF8DC1910FCB11EF56627916842441CC5 + 705358B68EE2A7ABEF4ADCEE5F78B3CE19D07DA68EC4CD6E0CD3472C26138F2B + C46499981266F19A13E4172F1915AF6BD61C53F35E85C2CBAB776602E4DE5FF9 + EBE72694C890288E473C6AE1754BA89A4AA83F44F6F452CA569EB8A3F3549816 + AFAEDD9509E8EF68A1A7A319537513C80A90E5F322218412496445A13314E495 + ED6D29115533D8DBE25CDC9AF218AFBDB5DB1910E96AC14F00AFC72BDCE9689A + 264225994CD2193159BEF11B74DD766CBB3586DDDF726EDA2B13EE3531AEDE58 + 9F0988062F11FEED2B5C43115C2EE15DBCA80F43627282C1BC45CCA9A81D57DC + 4EDBAA9ABDCE45EE69FD84E4F556917E037BEE16402518F550B06C270F4D2B19 + 57DCBEB7A676FF185FD1852B749CFA80470A13784591355DA357D608F72E64D1 + BA2AB2A74E1F57DC9E5BBFE54026A0E7FC4F5C6A384ADFB5106A6125B3AB6FD0 + D716267859D423D44641F97C166C7F075FCE6329A15D4DDF391679CBDA72DEDE + 7A281DB0A46032178F1CA1EFC2797C8ACE40CEC394AC7883484F3703674F8BC2 + 27E87799E4CD5BC8539B5633E9D15969CE353D3D6D353B1AD3014F46BB38D7D4 + 004A9C298A785085786E1E3E3541408EA1FB250644FCF7CF2045CF2F675E7D23 + FB3F3EE9B8824DD565D4BE7F341D907FA595331F1EC69F9B2D003A01D522A999 + 887D86E47321FB5D44B2DC84FFFE979C19C5547EF935FAC8C6BACDF9C8467B77 + CFB1744051F84FBE3F78402422C914B7878010F78883CE1200D52B21FBDC4407 + E3E21819A2E4C50A66D71DA2F1B3D38E2BD8F0FA3399808AF945F475B4F3CBA7 + 5F70B5BD1D53E455B24CEC73DC4C85458EFF01E6EED94CEECC67C7743ED23200 + 4BE73E31E6B992BA678CF4E6B8E28E80C5A533EE99B823605FC347F7FC8F360A + 98C836E180FF01702244FEF5B056BE0000000049454E44AE426082} + Name = 'PngImage2' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD2520000034D4944415478DA + DD957D6855651CC73FF7E56CF7DEE962EA340397D96C0B97291B8AD95227EA08 + 6706460E476AA60B06C3B7966FC3AD482457D01441A13F842141232128288656 + B4ECC58992F8C760E2CB9DB9DBBABBD773CFDD793F3DF7EA86977B74FDE1FEE9 + 811FCF73CEF39CEFE7FB3C3F7ECFF1388EC37836CFFF0370E6EC9571A1BC5E55 + E619058887D10953FB87FE9E4F8986AF61990E534A5633B3BC2E4BC0B26C114E + BA376C3136EDF4D8B42D56ADDFCDE5AE93EE80F06FCDE8FDBDC4E2AA880449CB + 4771E5664A17D4FE27F154FFEA862677C08DEE26D4F00D2C3B075956482492C8 + 8A829C8CB274E33166942E1B156FEA305C8F666775929AB7F6640394C805FA7E + 6C23191B16C9F18BA50E92CF836EE8440623E43F534EE5FA638F749E0EDB61ED + A6BDD980C1BE4E6E9DEFC0D67D8482218239121E8490AAA12493F446C2BCF6DE + EF6911DDB038D8E99EDC862A9975EFEC7707C4FEEC244008C92F097726866188 + D0D1348DDE98CDCAFA2F31CD94E3945BEBBEFB7BCEEDD4CE847B438C6BEB9BB3 + 01F1F0AF442F9DC63B1CC3EB15DEC587E67D88ACA8DC9DFC0A15D58D638AA78E + ADAEE1A07B926F751F47BBD92D8EDF2235770FA0138EFB99B5620F85452F8C29 + 9E7AB7B1B1D51D702EDC43E287369E5455249164C334E8570C060BCAA858D0C0 + 53D3A78E299E9ADBB2FDC36C40D7A53B1C387599EBB13BAC29FB8275D38AB97D + 37CA2772057FFD022BE7CCA069CB8B4CCE9B9216DADBF6B56B92B76FAA62DBAE + 8F3201739F2FA2F5F38B745D88A048010AF306D85053C2CDDB71BE3D9FC0D182 + F8127FB364DE04EAEBCA78FA89E919CE0D33F3D81ADE3F9C09D0FD797C70F467 + E2092FDAC449E83E93C2608C612B80AC4E2464EAF8E2830CE903AC7969162DDB + 96D17AF41BD71DBC5B5B49E3BE8F33017D4370A8FD27F27373D14205E8B91344 + 21A9A20EFCE488AB30479591E428036A94E78AF339DDF206E648613DE07CA4D0 + 761C389209187682347FF63D9AA8626FA00033370F4792402CF6EA1A929E4051 + 8650BC1A358B4BD9F7F6620E9FF8CE75075BDF7C391B50BDA8848B57FB69FFAA + 873FAE5C4B5F038EED495F171EC716209B40C124F66F9EC3FCA2E2873A1F6959 + 80E50B673FF45E49BFB3467A7B4C7157C0D2F2671F9BB82BA0E550FB63FFA38D + 02C6B38D3BE05FAF5B45FEC8107D9F0000000049454E44AE426082} + Name = 'PngImage3' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD25200000A4D694343505068 + 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 + F73EE77CFEFC2FF784F3FB25D29F330000028C4944415478DADD945F4853511C + C7BF77646942ABE9A061F6BF8690D443427B88A2321123166EDAA21E122308EA + B184407DC887E8A932F0611A3542325F0A0729B432A849CA68CA1CA2B86C0C4B + 43A428EFEEEE9FCE39E8DA9FBB7F0F7BE9073F7EE7DE7BCEF7737EBFF33B9753 + 1405F934EEFF00F43A47F34689026C7555392D1425059224232C882C8AB2CC22 + 1B131722121AAFB6C6030E5BDE6514964540126444C2448CB8F0538448C78204 + 99BC672E8A687FA045CFB357C980B1FEE371A033B53EB4365D4B06911D53AFAE + 71603A50C284BF85CEA174CB73709284B647BAD4006A741C2B3EBEFC05756573 + 88AC7C4541D17638433B602C324010049C35F7C33FA1C5C2623D9B5B5AEC407B + 973E7D066BE2E5C5C308FE3EC622151F5A3A8AD3BAB704B21B538B5530EA47E1 + 0D56A2DEFA12C3AE26E8373E25352419D80DEA80C4D21834BD98976DD8AA7130 + F11A9D1B834B2654970C6166D986FDDA018C7F3F8586F303981C59C7C4E941B5 + F594670788CF60161C0AA18067194C840EA2B2CC8B4FD3FB70E1D220263F70AB + 5D403278B2333D2016229105BE5F417606023F85F585467606DBE44D08F37C92 + 38B59480D82EA2ED6736FBD172B1994164D6EB52D4E973A3CD19155F8C5C815E + D3951E10BD48B4B77985C50D073CF86C79AF7A2FF4B596B89DAF992A20F1968A + AB37D377BF02FA9356EC3D72173323B7D89C85D931708100BA5DF3B0DF3E9104 + EE0C5D4F06743A5EABEE72F31F0FF6FCB033B1446BE9B89112EC29B8FC0F70EF + E1E38CBF09CFCD39D5F7CD1DAEE4B9449C1A03701C9751FCE39D5D4A2E6522D0 + 866E17FF22178095843EB532D9DFACA8420980CB0A40C54DA68A3EB56F6EB75F + F56C881D22006FB680B4E5A13B4DB536EB0C52958718AB755A403E2DEF80BF27 + 2521AB920B52530000000049454E44AE426082} + Name = 'PngImage4' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD252000003E54944415478DA + DD955D6C145514C7FF33B36D77D952281050902FCB8A74AB8D402DEDBA76B1A6 + 4896501142B028A105DAB47C941A890A292D1FF2D1E00B06358527134D782A1F + 29840A442925D604B5A8444C7830354AA8752DDBD9D9D99DB9D77B6767A69D66 + 1FED0BB3999C7B6736E777CEFF9C7347A094623C2FE1F100745CFF795C286B5E + 29106C00DB180FF99E27450C6BAE09617B40D7990505D1A8F19E101D3AE196DA + D6F82FBBDFA8D987BEABED4E0077A60C0DE2D78BEDF8FD9B0EC8B28CA827170B + CB5F4761C5DB70B927994E4C8754B7D7945BE68007C1D7EBB6A60124D418EE7C + 7E1CA4F7022231050F878731A8C431202B78B1AA162FBDD90C486E23729ED1D1 + F31969A5A90B0D61436DB3135019F2E36EF745F49FD90B414D201257F1AF40E1 + 9A968381070F31F0288EC6CFBAE07DD26F46CD65647270D9A899914EA1D1944C + 5575FB9D80D565F9B87ABA1583D7BE404214214DCAC60CDF2C3CE39B8EC8DFFF + E05CC74D846B0F604E4915AB8268383C71C99D36832DC108DEAA6F7102563140 + E7478DD086EEC0E79F87291327C0EB11118BCAC81029AE7FFD0366966E832FB8 + 1144108D68ADA272ED3592D2DECA64D38E5627201C5C84B30737635AE61F08BC + 5C00558E4361FA27985C2E11E8EAFA0EF35EDB83FCE00626896076162F2A9765 + B473628037EF3AE804AC0C3C8B530DAFB236BA8F70E5327833DC88C754482C7A + 5989E2CBB3DD285AB71F4BC25B98448211A56E69CFB33023B7C0358D879C8015 + A50BF169730DEEF55C4645E83914E64F413291448224D17BBB1FB77AEE21DCF2 + 318A8AD7B276E63520C64DCCF6E4B3414DB998C1D6A631808A121FFA6EF4E0A7 + 96D3C8F5C6E1298940CA5531709F42E99D0C817890D7DE84F94FF8ED880F9CEC + 4C5BE4DDD5E5A87DE7B013505EBC00DD4D9F60EAED3FA16851C4973F40CED224 + 94CE89F0FE32035474E16E2013853BAB91E3CE75E86D4F314D3DE33EEBDE3DE2 + 042C5F9A871B45DB317942162455042D559053C0D4BE928DD85F2C0B68901F25 + F05B830F2BD6541B83F6E1A9CB6933D8B92984FA3D479D80D0923C5C2BAA47B6 + 3B035EC1059A4D206501AE6117D4A40E59D3580308F8FEA9382ACFB419DD4347 + 1D13562DA8D9510DEF1D7302822F3C8D4B8BB761BAC70B8F4B42A628B17162DD + C2A659D535C4182496D0F0E3A22CAC3FD1C29C11B4B577A5CDA061631976BC3F + 0610289C8F6F3BBF427F6F1FD44814601DC465607D0A2231505626A45953915F + 16C0CCD9730D9DC9E813D43A81CD5AECFAE0B81350F2FC1CB3B7C9C884EAB0F7 + 464BEAA39C5A00E33D6CCB01FCD7B8B7CD0928F6CF368FE05427A48668044638 + CC76689DFB23DF0D0B0A3393DDFBC6005A8F9CFCDFBF6836603CAF7107FC0730 + 314BFE0CBC83B80000000049454E44AE426082} + Name = 'PngImage5' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F8000000097048597300000B3A00000B3A01647F570D000002874944415478DA + B5944D68134114C7DF50C47E585BA2D0B095924095A51E4CA5CA2208D58BE9AD + 154F06CA565452A1A224E736F4165088F45222480881DE6C901EA4274F122FC9 + 0A3DE450684C2FA188C4A6F9EA6EB2CE5BBBC36E13936CA40F1E339999FC7FFB + E63F3344555538CB20670EE864D1FA7AC2471B81E6384DD7C9B044739766C2EB + 15DE760C0804246349F18101A53438A83CE6790EC6C62E82D339C4268B451962 + B1644B5053C0CACA0DF63B184C42A5D20399CC1736B6BC2C6A2004E8B9BD9DC6 + 29FF6908317E7520E022B4EFA1DD18428E8E6428148E211CDE8DD3B9B993B5DA + BCDF3F6102944A0AA4523F1A20C4F8D50B0BEF2012798510D5E79BD0C4313736 + B21ADC58E5E2E2559378B9FCB7CD660F80024853000642D6D65E3071CCADAD1C + 033C7BFE441DE55EC2FCBCA3411C7367A704767B85556102C8721DAAD59A49DC + 66EB856834A301425E507F2AD7A176E91E9CEF7B0A333323267145A9433E9F6F + 345914439B3E9F6796E32E306104A1389AB9B7F75B83B8875D50EBE761F36B11 + F2E7EEC395D1D726F31D8E69AD32FD3FABAB115681872E7C8490C3C3636DF1FE + 7E8196DACF8EA60E79303205A4AA40F0130797C7DDF03EFC81E8772597EB7D83 + 000C141704C16F344E83D0EEAC3EE676BB9B4286732E887EE321994A9B8E396E + 35027471F4A1E54DA65BA7FE0B623C5546006E992EDEF4A2E981860A3C2D5D0A + 811548DB9B6C14770922A43312843E8B5D43483BF14A4E82047D05A44A779590 + 4EC47543AD7A6202B413EFD6786245BC1B08B12A6E1542961EDAD4E93BD7A047 + FE0EF6BE7247E2ED2078D1F055665B74739257EFF2BFC03974D0B1782B087D91 + E31430673279EAF62DB52E172C89378344221F9978C331FD9F40086D4CE2187F + 00FADE10E28785B5A40000000049454E44AE426082} + Name = 'PngImage6' + Background = clWindow + end> + Left = 232 + Top = 16 + Bitmap = {} + end + object ModuleActionList: TActionList + Images = LargeImages + Left = 40 + Top = 72 + object actClientes: TAction + Category = 'Ventas' + Caption = 'Clientes' + ImageIndex = 1 + OnExecute = actClientesExecute + end + object actProveedores: TAction + Category = 'Compras' + Caption = 'Proveedores' + ImageIndex = 2 + OnExecute = actProveedoresExecute + end + object actInstaladores: TAction + Category = 'Montajes' + Caption = 'Instaladores' + ImageIndex = 3 + OnExecute = actInstaladoresExecute + end + object actVendedores: TAction + Category = 'Ventas' + Caption = 'Vendedores' + ImageIndex = 5 + OnExecute = actVendedoresExecute + end + end + object MainMenu: TMainMenu + Images = LargeImages + Left = 40 + Top = 16 + object Compras1: TMenuItem + Tag = 200 + Caption = '&Compras' + GroupIndex = 1 + ImageIndex = 4 + OnClick = actProveedoresExecute + object Proveedores1: TMenuItem + Tag = 100 + Action = actProveedores + end + object N2: TMenuItem + Tag = 101 + Caption = '-' + end + end + object Obras1: TMenuItem + Tag = 300 + Caption = '&Montajes' + GroupIndex = 1 + ImageIndex = 6 + object Instaladores1: TMenuItem + Tag = 100 + Action = actInstaladores + end + object N3: TMenuItem + Tag = 101 + Caption = '-' + end + end + object Ventas1: TMenuItem + Tag = 400 + Caption = '&Ventas' + GroupIndex = 1 + ImageIndex = 0 + object Resumen1: TMenuItem + Tag = 100 + Action = actClientes + end + object N1: TMenuItem + Tag = 101 + Caption = '-' + end + object Vendedores1: TMenuItem + Tag = 102 + Action = actVendedores + end + object N4: TMenuItem + Tag = 103 + Caption = '-' + end + end + end + object SmallImages: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD2520000011A4944415478DA + 63FCFFFF3F032580916203966D3945B60991DEA68C6003D4BD9919269F4CC6AA + E8F7DFBF0CDFFFFC61F8F6FB37C3C71F3FC0ECB9FE5B19523CE6309CDB310D61 + 0008C00C996B760EC3209B6D7270CD208062C02E9134B8429866E6534C1081AB + 0C0C7F13FF81999A6B4519BE035D02728DDCB204220CB80A118319A0B04200AC + 19843556A762370024B9DCFA328617903583BC62B83E13350C40FE074B421581 + 70EF05569C31907DD8036140F7E4F9180AA6DAEE60B04CAE6660905064F8717C + 2AC3F97DE719E6EE7BCE30A5C50BCE9EB3F73B23232E1B8EB528861E7CADB6EA + CEE58358E5939D24C32CABEFADC667C07F8A5D00A456811452D505208D5635F7 + 5783D480F211C92E98BBEF075C0FD8004A73230074DEE0E1BE54FBD500000000 + 49454E44AE426082} + 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 = 'PngImage5' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001FA4944415478DA + A5934B6813511486BF342610A2C50A86A220150BA2145C58D120828ABA2AD2BA + F0B510C48D1B1154A828A55D5877825474AB45375D58A80B9385292DA8A8B151 + 6B6D8DB50F43C1B4C624364C1E73E7E19DA96408B50BCDC0E5CC65E6FFFE7FCE + DCE3324D936A2E577FE46355041BD076B0C9DE280B23E412E3F6FD9A4DDBF107 + 76965F3464524D33109A8E2A7459350E1FBFEC002CF1FCEB1EF28B82F98534C9 + 5C9203A7EFB2A1712F9A6E70A557AD706EA88970FFD1C012E0E8BECDCC3EEF22 + 33338DAECBA7A64E36FB8B5431C389EBB12557B93461D8CED6FE71F8A5036809 + AE271EBA0879177E9F0FB704284A9ED8B7498EB5476D71671F2B276809D63337 + D481B75892EEC86F5429140A7CD7D6D17CEA4E85B3D5070B181A8A3A00AB07C9 + B70F512643567E8410E4F22A46432B8D7B4E2E130BD9C4672F629580A9D02B86 + E76EB0CDF0CA0425A205D8B5F11C5B8F1C5A26B6D6F09B0F0E2058AB11B97495 + D44F95FAB34D881A831F0F26989A9EA0FDEB275B7CEDD6938A1EECDE117000FE + 701FF1A703D4153D28AB6B71E3C2A72C92F6A8C413292E8CBD2F3B8B3F67213A + 3AEE000AB7BB49CC8E11D03CAC92BFDB251D4A5E93B45B90984973FEDD08DDF7 + C22B27889D69239355FE7A54EBD6FA690D0FDAAEBA61DAD59075F4F31707B0BF + 790BBDFD83FF3C076540D7CD9EFF1FA66AC7F93783B161288AF0DFC000000000 + 49454E44AE426082} + Name = 'PngImage3' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001FE4944415478DA + A593DD4B145118C69F5574D5458A40DD44FCCA9B42D88B8494104A1242C4AF0B + 4DF1CA3FA08822C110F7C6BA124151BB8990F422304183564165053FD05D575C + 4334694D8D1A97C65DDB666677CE7C78668C1D16F3A276E0F09EC3CCFB7B9EF3 + CEFB9A5455453C8F697C76332E820EA8AF28D60F9C7F0DA1832D7D9F9E7B0396 + CC9BD10F15EA54921410498648641A2554363E31005AF2D14A1FF85F0447FE63 + 302106775B06905D741B92ACE0E9B018A39C9F308B37231367809AF2027C5DB0 + 23B0E7832CD3B7AA8C60F0043FC301343DF79CA9D225114557D6CEEFA7960C40 + 755906761C8F00DE044B6A2A122980E37878F677D1D0EED293BBDEE16207D565 + 567C737622391CA1EAA077142108027E485750D2DC1FA3ACD541033A9C2E03A0 + D58071BF05B7EBD0FC831082102F42C9AF4351E98373C984167166D1130B18DB + 6710986B43B198421D44B0282AB0DAECA8B25D3F97ACADF9D50D0390919783D6 + A14F601358D4DE8B4015C3F8E8B420B8EEC6C1E8333DB9A36732A606B76C9906 + E0C31782B1E94384AC57713999859A988413E112D2FCDFC1B3CBD87EFD38AA4C + FEF482CBBB6500BAE759F8DC8710B27211369B697B9990F29B83F998A1202F36 + 5F3D44F7E0D4C50E1A7A97E92FF4FDBD57D30AE17E795F579515558F0A8DDEED + CF06E04EC9350C8FCFFDF31C4401F6177DFF3F4CF18EF329BD276228E7D4407E + 0000000049454E44AE426082} + Name = 'PngImage2' + 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 + F73EE77CFEFC2FF784F3FB25D29F330000012D4944415478DA63FCFFFF3F0325 + 80916203966D3945B60991DEA68C6003B42CC41852B26F6355F4E7E77F86DFDF + FE31FCFEFC97E1FBFBDF60F68E73460C89D19D0CE7764C4318000230434E2E77 + C63048416B135C3308A018D0B7F8235C214CB30CFF5E880B3E3F6278F12F11CC + 16175BC3F0FFF76F06865F7F18E4EC4E103600A41904600688092E076B66001A + 22E77C16BB01BFBEFC6338BFD915C30BC89A19FFFC619075BF881A0620FF8334 + FFFAF297E1D75760A07DF9C3B032A610670C641FF64018D03D793E8682A9B63B + 184C53EA197E89A933309DE86638BFEF3CC3DC7DCF19A6B478C1D973F67E6764 + C465C3B116C5D003AFD556DDBD7C10AB7CB293649865F5BDD5F80CF84FB10B80 + D42A9042AABA00A4D1AAE6FE6A901A503E22D90573F7FD80EB011B40696E0400 + A0BEE1E16734A0290000000049454E44AE426082} + Name = 'PngImage4' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD2520000023A4944415478DA + A593DB4B54511487BF39733C3A9A9930A99486541086169598264184522F3D84 + 34200541FF400FD24B17886E6405911111111614158414955866669A1682E565 + 2A310BAF9490CC4C303367CED9E7B4CF0C34F9E043B95FD67ED8EB5BBFF55B7B + B96CDB6621C7D5D436B820421CB07B7B31C1994986EF9E67EAFD6B66748BBCF2 + 6ACA7D07513D5E8430318585B06C4CD38982C58BD2A8F6D5250015856E461E5C + 461DEA623C1060C634980E8428F31DA072DF4999A050FF449B53B95069A3F1F6 + A304C03BD9CC647323564C472CC964457101A1C02CC35F83D41CB9436A762186 + 252B4B15A62930E5BDB5B32F09D0061A098D77B366DD4ABCD919A4692E8C6898 + 573DA394D49C25ABA0848B2D9EF915443A2EE00EFBD9B9AB8C48304A241CC632 + 755E747DA3747F03D9F94508D9BB21EC78741474BCFB90048C3E3CCAD4A7767C + 7B2A599695251FC5181E9BE0D99B097C87EFB1347FAD4C962D1889644B9AD9D9 + DBFF570BD3FD0CDCBCCF6AAF4E6EA5C1AF90CE582B0473F2D871A29E742D33E1 + 813301D38E4FA1BB6F2809C878DA85DA3E82AD06A0761AD70F0DED713ED1F454 + A60E6D60D3C62A4E5F6999E3C1E6F5394940FAB11BA4842268AA0B75AB8EE767 + 1A51BF228D140CE5EA6CB9762A2E3D3E05A705E945EFC0C72440ADBB8AC71064 + A6A8286E05372E624260183018FA4E45CB25CE5D7F3EBF82E8DB1E66FD5F2010 + 469146D96E09502096E2C62A5A4ED5DEDA7875E7273AD1D99F3EFFE724605BE9 + 2A6E35BDFCE73DF803387EA6E1FF9769A1EBFC1BC1A15528DD8924DF00000000 + 49454E44AE426082} + Name = 'PngImage5' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000B1300000B1301009A9C18000001604944415478DA + A5923F48C34014C6DF81B838A88B145DD22D20D8E8505737330A5D9CE4BA650C + 34739BEE0AE7E658B277A8939364B5A0C6A19231500417A14D177539EF1D5EB8 + E64F1D3C7821B9F7BE1FDFFB08E19CC37F0E512FBE1FE9244FD465C9BCE7FBD6 + 5529000FA58C33E60063B1005A04BFF1BEDBA550AF6F42BFFF5280C8A1C1C025 + CA45ABB507C3E19B04FCDE75D04DAFD780F9FC4BC275880418C649E6220F5060 + D735613A5DC81A8FD3AC4F946D6C4C261FD06CD62008926C40B4F8AC164930CE + A4E937DC3F8E6077E354BA4040470FCCB66D5186B4BAF56E814329C44904EC8E + CAFE6C6D013BDBEB08280D51C274C89949210C23081E4C787A8E899E49BB7DBD + 0CA882DC8ECEA558CF244942C0F00B00DC196D3B37D6D23A7AA895FF8112E3CE + 683BFA647F42489518773E68385E7E9D3C845489D5CE6599E810B24A5C166CFE + 3F918FA343935F1CC7A5E23C44D4AB487FBF900142AAC4ABCE0F9C32EE2C4B99 + 4F200000000049454E44AE426082} + Name = 'PngImage6' + Background = clWindow + end> + PngOptions = [pngBlendOnDisabled, pngGrayscaleOnDisabled] + Left = 308 + Top = 16 + Bitmap = {} + end + object ExtraImages: TPngImageList + Height = 28 + Width = 28 + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D494844520000001C0000001C0806000000720DDF + 940000000970485973000017120000171201679FD252000002D84944415478DA + ED946D48535118C7FF57855EB4171542B01756516845C868B63E4A1F2A7B1996 + 990B845008EA637DD2A828F34BF521D220C98484C28232B24C302329456D380D + A99C75035FB6A5B3E9ACAEBA7BD773CF4D9BEE6E6E23F6217AE0F09C73EE73CE + EF79CEFF9CCB793C1E44D2B8FFC07F0378EF697BC4A833C0DCCC6D616DE0163D + 104589BCC43CEB4B5E7DE62986E6728E9F9D0D3CD69A163448A47593A28849B7 + 5BF1731B01A6BFD7E97AC0F70DA0B0A4DC175899DE310B9CECC8C485DD17FD82 + 25DA58621589D8FB3003A3715F18ACCB60C3DAEA7806ADD759D03768F50F944D + EEABC1CC5C07B4AD5AE0230D3602A6741352845406945B56ED2E0C2CB0E0C3C1 + 2116BFA22A160DBA5E0CDAED812BF48645B745013C1D638EA4F40966CA33417B + 9BC09B00D7E6712C791C07AC0386D60F23A77E1F5E189B91786731ABB029FD33 + ECC343EA40B5A38CAE268844C05C02564529B0BB5A988CE4CBB5701E19C5F2DA + 652CD6B6D30E63830166B77946CFD7DB7938461C2100E5AA2C043CFABBC26E9A + 5C484D00ABD0B16104897509ACC2FE95FDC87B958DB609D30CF08D8EC798CB19 + 18A87661648DDEC574291A76D2C45645C3D58E35EC9B7B6ACA07265B93F613BE + FF189BFF96CA0B34CEFD0C2A6F386EEB467C4F61C0E7B2CADC80AF4B454C14B8 + C1DDE4D8DCCB340B04613C70856A6FABB81DD0E71701491A128B677102FF8C79 + 276F65FE4C45076E1565CC4AE291EB0416C527FB02E7FB7BF4DED882A48C2C68 + F457C0B79C562E09AF3C23F04A02158D569416EFF149E2D0B9165FE0F32673C0 + E31AB0BC45AAAD846DAA66D66F024ACB4EA9262103CBAE5DFD03BC7CBD12C158 + 72AC0B4F4E8E048C29B8D4E83DAC791F73C0F0934B600306E4382E28986CCDC5 + 1A4FA83A5202872B1A8507610383D5D13B010272E102B3694323750D7E426AF2 + F37718E62610165086E9F529F743D08F2540ED3C013BC30106A5DF74356A1632 + 3018FDFE26705EFDBC8FCF2F30921671E02FBE648AC22CC7AE57000000004945 + 4E44AE426082} + Name = 'PngImage0' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D494844520000001C0000001C0806000000720DDF + 940000000970485973000017120000171201679FD25200000A4D694343505068 + 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 + F73EE77CFEFC2FF784F3FB25D29F33000002F94944415478DAED946B48936114 + C7FFAFDA55CD5CD32E46609161D087082129E8B2794B50495B5EBE140C83A2CF + 5DD13E9804111195502441068D04D32C2DCD6181592D2F594CF2B291A6DB9C9A + 3AB3E9DE4BCFFB583ADBC539621FA2030FE7BCCF7B38BF739EFFF3BE8C2008F0 + A531FF81FF06F0C1538DCFA833C0ACE418AF0AB09C008EE389E7A9A7316F1753 + 4F72C8DEE16379738131992F3C06092C814D0AB05949C1499EC6A2E726391AF3 + 53FCF462593434C9A0EFEDC3D9C2DB8E408D4A3E079CBCAF1B79B9B92EC13CE9 + 9CA71371484C54A1B367250519BF1E8454A202C3F2A86F96A1B7DFE01A289A18 + 3B837D1CEE41526427584B3F0282D7A15ABF195181AB29505C29296568D70661 + 602083E64B034BA06E96A3DF64723FA13D6C7D481DB871330C5C268D4558EDE0 + 1EC449EB0874033A0CB1D8145401FFE070B4E9B7233DBD122FEB8F206CF93D90 + 2E50D3120FD3A0D939D0D951AEF55711D10418F82CACF12BA1B07869036A0677 + 412E7D8EAED14C44853CA1B96D2639148A2A68DFF95198B8AA5A1330343CE439 + 904E68311260CEAF097BC060290458E9849FBEEC40B4A49A4EA8698F46764E2D + B48DC20CB0A23901639611F740671746D4483BDA4735B459745814BC916A1881 + 20FA8EB5D91C60A29569E2F07D626CFE5BCA5A05A426E928542C68316A21E938 + E3F6735992B6172B264261669508636ED1BDD2B73258ADE3EE2714619C75F6FB + 12FDFD832711A3CCC754F8162C1EF83C9DA77B4CFD88DE40FDF9E216DC39B77F + 4E138F2CC7B12C34C21138DFDFA3AB681B56C91488DA79091D6F4ED35CB3BE89 + 7A3F5D37F5C56A036E141C70682223BFD111F8EC55ABDBE3EAEB7C8FADC6425A + D49919BE5971B5E894D32644E0CD6B57668197AFDF852716116841E58961B739 + CA8B6AFBC7F2F680D4B41F8C843E5020C3301EC1447B5D10292C5447D280A258 + 6D2DF51AE8A98EF60D1020E32DF01029984DC2341729E54795BBD3FE6CC02BA0 + 088B8D8D7EB800FD6803645D20C00FDE003DD2EFF734CE6CC1404FF4FB9BC079 + F5B33F3E97405F9ACF813F01DF078FC2BAE18F2B0000000049454E44AE426082} + Name = 'PngImage1' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D494844520000001C0000001C0806000000720DDF + 94000000097048597300004E2000004E2001167D99DE000002C04944415478DA + E5D54D6813411400E0B788D816B1A5150CA99404AA2CF5E02AFE2C82503DA5B7 + 14BD054A2A6A130F5549CE6DDA9BD0424A2F69041B42A517B1417A909E3C497A + 3129F49043A131BD8422129BE6A7CDCF3A6F935932C96E9AB0928B0F1E43B233 + FBCD4CDE4C384992A093C1FD1F20C7712D0FF0F9C22ED2882487490AD5AFA324 + F748861D0E71516BAC6CB50356B1059E37C2D0D025309B7B99E72B2BDB4D6155 + D0E389D6EE7188E4278F47F85805A564B20BE2F16F4A879919BB0C67320525B7 + B662F8C85D8F6A82B3B33795CF73733B0C5A1BA4AF8D346B6EF7080366B34588 + 447E36A00A485E2A555E2070F425881E1F17209D3E05BF7F2F449E8DAB6D334E + D0E9BCC660B95CA54D240E81809C2A88C0E4E41204026F10955CAE1119C35C5F + 4FC893A9C75EBC7C260D1AA76162C2D48061EEEE66C160C82BAB6C0031105D5E + 7EA560989B9BC906D0EB00E957F10694061EC185EEE730367685C18AC532A452 + 2966825353F739062C14CA70725262B0FEFE2E0806E30C8898C803947A78D8F8 + 9E81D4F9C77075F02D534C26D3A8BC722CA8FDFD3F303F1F80D5D5D71590AC6A + C3E5B2598DC68B0A8430627400452926887652186BC09D14E1DD17235C1EB6C0 + 7BFF078E1E1F52CD0B086220268AA29BAC7091AED04666F714D1A3A353B9D3C1 + 419AEC7F8F72DE286AE913642C168F423E1985303901C16D1E7E4462CC96631D + 204831FC1D996381D58928E96BA5832C168B2A6AE5ED4D310AE216534CF31CD6 + 86DDEE95B4D0BEA4A08969454B575B3354EDA8E8026981F8A25EF8176853B0B6 + 1AB140BC5FEDBA514DB01EA30512CDEB5BA92AA885D102D1F39B368067617A0B + 89015BC5F4A00AB8E4E4DAC2CE42F176C17F1D4D70FAC98034FAE03A9C2BEC80 + A13BD712D60C2577738880E39A206EE9ED5BBCF490FF0DE6DEC3B66F905A3410 + F8AC8AA916CD9D7B77A57221DD16568B92461363C04E46C7C1BF0E73BFE74CCD + 6AD20000000049454E44AE426082} + Name = 'PngImage2' + Background = clWindow + end> + Left = 232 + Top = 80 + Bitmap = {} + end +end diff --git a/Modulos/Contactos/Cliente/uPluginControllerContactos.pas b/Modulos/Contactos/Cliente/uPluginControllerContactos.pas new file mode 100644 index 0000000..ffe53c0 --- /dev/null +++ b/Modulos/Contactos/Cliente/uPluginControllerContactos.pas @@ -0,0 +1,159 @@ +unit uPluginControllerContactos; + +interface + +uses + uModuleController, uInterfaces, uHostManager, Menus, Classes, ActnList, + ImgList, Controls, PngImageList; + +type + IMCContactos = interface(IInterface) + ['{E148CA5A-63A0-4BE8-B634-6E7A92A90F25}'] + procedure ListaClientes; + procedure ListaProveedores; + end; + + TModuleContactos = class(TModuleController, IMCContactos) + actClientes: TAction; + actProveedores: TAction; + Compras1: TMenuItem; + ExtraImages: TPngImageList; + LargeImages: TPngImageList; + MainMenu: TMainMenu; + ModuleActionList: TActionList; + Proveedores1: TMenuItem; + Resumen1: TMenuItem; + SmallImages: TPngImageList; + Ventas1: TMenuItem; + Obras1: TMenuItem; + Instaladores1: TMenuItem; + actInstaladores: TAction; + N1: TMenuItem; + N2: TMenuItem; + N3: TMenuItem; + actVendedores: TAction; + Vendedores1: TMenuItem; + N4: TMenuItem; + procedure actClientesExecute(Sender: TObject); + procedure actProveedoresExecute(Sender: TObject); + procedure actInstaladoresExecute(Sender: TObject); + procedure actVendedoresExecute(Sender: TObject); + public + procedure ListaClientes; + procedure ListaProveedores; + end; + +implementation + +{$R *.dfm} + +uses + Forms, Dialogs, uGUIBase, uCustomEditor, SysUtils, uEditorClientes, + uEditorProveedores, uDataModuleContactos, + uEditorUtils, uEditorContactos, uBizContacto, uEditorInstaladores, + uEditorVendedores; + +function GetModule : TModuleController; +begin + Result := TModuleContactos.Create(NIL); +end; + +exports + GetModule name GET_MODULE_FUNC; + +{ +******************************* TModuleContactos ******************************* +} +procedure TModuleContactos.actClientesExecute(Sender: TObject); +begin + ListaClientes; +end; + +procedure TModuleContactos.actProveedoresExecute(Sender: TObject); +begin + ListaProveedores; +end; + +procedure TModuleContactos.ListaClientes; +var + aObj: IEditorClientes; + AClientes : IBizCliente; +begin + AClientes := dmContactos.GetClientes; + aObj := TfEditorClientes.Create(Application); + try + with aObj do + begin + Contactos := AClientes; + ShowEmbedded; + end; + finally + AClientes := NIL; + aObj := NIL; + end; +end; + +procedure TModuleContactos.ListaProveedores; +var + aObj: IEditorProveedores; + AProveedores : IBizProveedor; +begin + AProveedores := dmContactos.GetProveedores; + aObj := TfEditorProveedores.Create(Application); + try + with aObj do + begin + Contactos := AProveedores; + ShowEmbedded; + end; + finally + AProveedores := NIL; + aObj := NIL; + end; +end; + +procedure TModuleContactos.actInstaladoresExecute(Sender: TObject); +var + aObj: IEditorInstaladores; + AInstaladores : IBizInstalador; +begin + AInstaladores := dmContactos.GetInstaladores; + aObj := TfEditorInstaladores.Create(Application); + try + with aObj do + begin + Contactos := AInstaladores; + ShowEmbedded; + end; + finally + AInstaladores := NIL; + aObj := NIL; + end; +end; + +procedure TModuleContactos.actVendedoresExecute(Sender: TObject); +var + aObj: IEditorVendedores; + AVendedores : IBizVendedor; +begin + AVendedores := dmContactos.GetVendedores; + aObj := TfEditorVendedores.Create(Application); + try + with aObj do + begin + Contactos := AVendedores; + ShowEmbedded; + end; + finally + AVendedores := NIL; + aObj := NIL; + end; +end; + +initialization + RegisterModuleClass(TModuleContactos); + +finalization + UnRegisterModuleClass(TModuleContactos); + +end. diff --git a/Modulos/Contactos/Cliente/uViewCliente.dfm b/Modulos/Contactos/Cliente/uViewCliente.dfm new file mode 100644 index 0000000..4ab8049 --- /dev/null +++ b/Modulos/Contactos/Cliente/uViewCliente.dfm @@ -0,0 +1,53 @@ +inherited frViewCliente: TfrViewCliente + inherited pnlGeneral: TPanel + inherited eNombre: TcxDBTextEdit + Width = 185 + end + inherited eNIFCIF: TcxDBTextEdit + Width = 185 + end + end + inherited frViewTelefonos: TfrViewTelefonos + inherited eTlfParticular: TcxDBTextEdit + Width = 185 + end + inherited eTlfTrabajo: TcxDBTextEdit + Width = 185 + end + inherited eTlfMovil: TcxDBTextEdit + Width = 185 + end + inherited eFax: TcxDBTextEdit + Width = 185 + end + end + inherited frViewInternet1: TfrViewInternet + inherited lblTrabajo: TLabel + Visible = True + end + inherited ePaginaWeb: TcxDBTextEdit + Width = 185 + end + inherited eMailTrabajo: TcxDBTextEdit + Visible = True + Width = 185 + end + inherited eMailParticular: TcxDBTextEdit + Width = 185 + end + end + inherited frViewDireccion: TfrViewDireccion + inherited eCalle: TcxDBTextEdit + Width = 185 + end + inherited ePoblacion: TcxDBTextEdit + Width = 185 + end + inherited eProvincia: TcxDBTextEdit + Width = 185 + end + inherited eCodigoPostal: TcxDBTextEdit + Width = 185 + end + end +end diff --git a/Modulos/Contactos/Cliente/uViewCliente.pas b/Modulos/Contactos/Cliente/uViewCliente.pas new file mode 100644 index 0000000..23a9006 --- /dev/null +++ b/Modulos/Contactos/Cliente/uViewCliente.pas @@ -0,0 +1,24 @@ +unit uViewCliente; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewContacto, DB, uDADataTable, DBCtrls, uViewCategorias, + uViewInternet, uViewTelefonos, StdCtrls, Mask, ExtCtrls, uCustomView, + uViewBase, uViewDireccion, JvComponent, JvFormAutoSize, cxControls, + cxContainer, cxEdit, cxTextEdit, cxDBEdit; + +type + IViewCliente = interface(IViewContacto) + ['{C06F4653-1745-4B7E-A3DC-102B2F23238E}'] + end; + + TfrViewCliente = class(TfrViewContacto, IViewCliente) + end; + +implementation + +{$R *.dfm} + +end. diff --git a/Modulos/Contactos/Cliente/uViewClientes.dfm b/Modulos/Contactos/Cliente/uViewClientes.dfm new file mode 100644 index 0000000..94a6404 --- /dev/null +++ b/Modulos/Contactos/Cliente/uViewClientes.dfm @@ -0,0 +1,54 @@ +inherited frViewClientes: TfrViewClientes + inherited cxGrid: TcxGrid + inherited cxGridView: TcxGridDBTableView + DataController.Summary.FooterSummaryItems = < + item + Format = '0 clientes' + Kind = skCount + Column = cxGrid1ViewNOMBRE + end> + inherited cxGridViewCODIGO: TcxGridDBColumn + IsCaptionAssigned = True + end + end + end + inherited dxComponentPrinter: TdxComponentPrinter + inherited dxComponentPrinterLink: TdxGridReportLink + ReportDocument.CreationDate = 38673.845245682870000000 + BuiltInReportLink = True + end + end + inherited PngImageList: TPngImageList + PngImages = < + 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 = 'PngImage0' + Background = clWindow + end> + Bitmap = {} + end +end diff --git a/Modulos/Contactos/Cliente/uViewClientes.pas b/Modulos/Contactos/Cliente/uViewClientes.pas new file mode 100644 index 0000000..e1f875e --- /dev/null +++ b/Modulos/Contactos/Cliente/uViewClientes.pas @@ -0,0 +1,29 @@ +unit uViewClientes; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewContactos, cxStyles, cxCustomData, cxGraphics, cxFilter, + cxData, cxDataStorage, cxEdit, DB, cxDBData, ActnList, uDADataTable, + cxGridLevel, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, + cxClasses, cxControls, cxGridCustomView, cxGrid, JvComponent, + JvFormAutoSize, cxImage, PngImageList, ImgList, dxPSGlbl, dxPSUtl, + dxPSEngn, dxPrnPg, dxBkgnd, dxWrap, dxPrnDev, dxPSCompsProvider, + dxPSFillPatterns, dxPSEdgePatterns, cxIntlPrintSys3, dxPSCore, + dxPScxCommon, dxPScxGridLnk; + +type + IViewClientes = interface(IViewContactos) + ['{3E16CAB9-83E7-4083-A4B7-027E2616466F}'] + end; + + TfrViewClientes = class(TfrViewContactos, IViewClientes) + end; + + +implementation + +{$R *.dfm} + +end. diff --git a/Modulos/Contactos/Cliente/uViewContacto.dfm b/Modulos/Contactos/Cliente/uViewContacto.dfm new file mode 100644 index 0000000..9a152fc --- /dev/null +++ b/Modulos/Contactos/Cliente/uViewContacto.dfm @@ -0,0 +1,175 @@ +inherited frViewContacto: TfrViewContacto + Width = 600 + Height = 270 + Align = alClient + AutoSize = True + Constraints.MinHeight = 225 + Constraints.MinWidth = 600 + OnResize = FrameResize + object pnlGeneral: TPanel + Left = 0 + Top = 0 + Width = 300 + Height = 84 + BevelOuter = bvNone + Constraints.MinWidth = 300 + ParentBackground = True + ParentColor = True + TabOrder = 0 + DesignSize = ( + 300 + 84) + object Label5: TLabel + Left = 8 + Top = 8 + Width = 45 + Height = 13 + Caption = 'General' + Font.Charset = DEFAULT_CHARSET + Font.Color = clActiveCaption + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + ParentFont = False + end + object Bevel1: TBevel + Left = 64 + Top = 8 + Width = 226 + Height = 9 + Anchors = [akLeft, akTop, akRight] + Shape = bsBottomLine + end + object Label2: TLabel + Left = 16 + Top = 56 + Width = 42 + Height = 13 + Caption = 'NIF/CIF:' + end + object Label1: TLabel + Left = 16 + Top = 32 + Width = 41 + Height = 13 + Caption = 'Nombre:' + end + object eNombre: TcxDBTextEdit + Left = 100 + Top = 28 + Anchors = [akLeft, akTop, akRight] + DataBinding.DataField = 'NOMBRE' + DataBinding.DataSource = DADataSource + Style.Color = 14745599 + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 0 + Width = 185 + end + object eNIFCIF: TcxDBTextEdit + Left = 100 + Top = 52 + Anchors = [akLeft, akTop, akRight] + DataBinding.DataField = 'NIFCIF' + DataBinding.DataSource = DADataSource + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 1 + Width = 185 + end + end + inline frViewTelefonos: TfrViewTelefonos + Left = 301 + Top = 128 + Width = 300 + Height = 140 + Constraints.MinHeight = 140 + Constraints.MinWidth = 300 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 3 + inherited eTlfParticular: TcxDBTextEdit + Width = 185 + end + inherited eTlfTrabajo: TcxDBTextEdit + Width = 185 + end + inherited eTlfMovil: TcxDBTextEdit + Width = 185 + end + inherited eFax: TcxDBTextEdit + Width = 185 + end + end + inline frViewInternet1: TfrViewInternet + Left = 301 + Top = 0 + Width = 300 + Height = 115 + Constraints.MinHeight = 115 + Constraints.MinWidth = 300 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 2 + inherited lblTrabajo: TLabel + Visible = False + end + inherited lblMovil: TLabel + Visible = False + end + inherited ePaginaWeb: TcxDBTextEdit + Visible = False + Width = 185 + end + inherited eMailTrabajo: TcxDBTextEdit + Visible = False + Width = 185 + end + inherited eMailParticular: TcxDBTextEdit + Width = 185 + end + end + inline frViewDireccion: TfrViewDireccion + Left = 0 + Top = 128 + Width = 300 + Height = 140 + Constraints.MinHeight = 140 + Constraints.MinWidth = 300 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 1 + inherited eCalle: TcxDBTextEdit + Width = 185 + end + inherited ePoblacion: TcxDBTextEdit + Width = 185 + end + inherited eProvincia: TcxDBTextEdit + Width = 185 + end + inherited eCodigoPostal: TcxDBTextEdit + Width = 185 + end + end + object DADataSource: TDADataSource + Left = 200 + Top = 16 + end +end diff --git a/Modulos/Contactos/Cliente/uViewContacto.pas b/Modulos/Contactos/Cliente/uViewContacto.pas new file mode 100644 index 0000000..17747a9 --- /dev/null +++ b/Modulos/Contactos/Cliente/uViewContacto.pas @@ -0,0 +1,102 @@ +unit uViewContacto; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, ExtCtrls, StdCtrls, Buttons, DB, uDADataTable, + DBCtrls, Grids, DBGrids, uBizContacto, Mask, ComCtrls, uCustomView, + uViewDireccion, uViewTelefonos, uViewInternet, uViewCategorias, + JvComponent, JvFormAutoSize, cxControls, cxContainer, cxEdit, cxTextEdit, + cxDBEdit; + +type + IViewContacto = interface(IViewBase) + ['{5FCFD172-5F8A-4639-B479-1CF0061526B5}'] + function GetContacto: IBizContacto; + procedure SetContacto(const Value: IBizContacto); + property Contacto: IBizContacto read GetContacto write SetContacto; + end; + + TfrViewContacto = class(TfrViewBase, IViewContacto) + Bevel1: TBevel; + DADataSource: TDADataSource; + frViewInternet1: TfrViewInternet; + frViewTelefonos: TfrViewTelefonos; + frViewDireccion: TfrViewDireccion; + Label1: TLabel; + Label2: TLabel; + Label5: TLabel; + pnlGeneral: TPanel; + eNombre: TcxDBTextEdit; + eNIFCIF: TcxDBTextEdit; + procedure FrameResize(Sender: TObject); + private + FContacto: IBizContacto; + protected + function GetContacto: IBizContacto; + procedure SetContacto(const Value: IBizContacto); + public + constructor Create(AOwner : TComponent); override; + property Contacto: IBizContacto read GetContacto write SetContacto; + end; + +implementation + +uses uDataModuleContactos; + +{$R *.dfm} + +{ TfrViewContactos } + +{ +******************************* TfrViewContacto ******************************** +} +constructor TfrViewContacto.Create(AOwner : TComponent); +begin + inherited; +end; + +procedure TfrViewContacto.FrameResize(Sender: TObject); +var + CalcWidth: Integer; +begin + { CalcWidth := Round(Width / (1.0 + WidthRatio)); + + DisableAlign; + try + pnlGeneral.Width := CalcWidth; + frViewDireccion.Width := CalcWidth; + frViewTelefonos.Left := pnlGeneral.Width + pnlGeneral.Left; + frViewTelefonos.Width := CalcWidth; + finally + EnableAlign; + end;} +end; + +function TfrViewContacto.GetContacto: IBizContacto; +begin + Result := FContacto; +end; + +procedure TfrViewContacto.SetContacto(const Value: IBizContacto); +begin + FContacto := Value; + if Assigned(FContacto) then + DADataSource.DataTable := FContacto.DataTable + else + DADataSource.DataTable := NIL; + + frViewDireccion.DADataSource.DataTable := DADataSource.DataTable; + frViewTelefonos.DADataSource.DataTable := DADataSource.DataTable; + frViewInternet1.DADataSource.DataTable := DADataSource.DataTable; +end; + +initialization + RegisterClass(TfrViewContacto); + +finalization + UnRegisterClass(TfrViewContacto); + +end. + diff --git a/Modulos/Contactos/Cliente/uViewContactos.ddp b/Modulos/Contactos/Cliente/uViewContactos.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Contactos/Cliente/uViewContactos.ddp differ diff --git a/Modulos/Contactos/Cliente/uViewContactos.dfm b/Modulos/Contactos/Cliente/uViewContactos.dfm new file mode 100644 index 0000000..778bab4 --- /dev/null +++ b/Modulos/Contactos/Cliente/uViewContactos.dfm @@ -0,0 +1,74 @@ +inherited frViewContactos: TfrViewContactos + inherited cxGrid: TcxGrid + inherited cxGridView: TcxGridDBTableView + DataController.KeyFieldNames = 'CODIGO' + DataController.Summary.FooterSummaryItems = < + item + Kind = skCount + Column = cxGrid1ViewNOMBRE + end> + OptionsBehavior.PullFocusing = True + object cxGridViewICONO: TcxGridDBColumn + OnCustomDrawCell = cxGridViewCODIGOCustomDrawCell + BestFitMaxWidth = 25 + Options.Sorting = False + Width = 20 + end + object cxGridViewCODIGO: TcxGridDBColumn + DataBinding.FieldName = 'CODIGO' + Visible = False + BestFitMaxWidth = 25 + Width = 25 + IsCaptionAssigned = True + end + object cxGrid1ViewNOMBRE: TcxGridDBColumn + DataBinding.FieldName = 'NOMBRE' + SortIndex = 0 + SortOrder = soAscending + Width = 195 + end + object cxGrid1ViewCALLE: TcxGridDBColumn + DataBinding.FieldName = 'CALLE' + Width = 75 + end + object cxGrid1ViewTELEFONO1: TcxGridDBColumn + DataBinding.FieldName = 'TELEFONO1' + BestFitMaxWidth = 64 + Width = 75 + end + object cxGrid1ViewMOVIL: TcxGridDBColumn + DataBinding.FieldName = 'MOVIL' + BestFitMaxWidth = 64 + Width = 76 + end + end + end + inherited frViewFiltroBase1: TfrViewFiltroBase + inherited TBXDock1: TTBXDock + inherited TBXDockablePanel1: TTBXDockablePanel + inherited dxLayoutControl1: TdxLayoutControl + inherited txtFiltroTodo: TcxTextEdit + Width = 273 + end + inherited edtFechaIniFiltro: TcxDateEdit + Width = 121 + end + inherited edtFechaFinFiltro: TcxDateEdit + Width = 121 + end + end + end + end + end + inherited dxComponentPrinter: TdxComponentPrinter + inherited dxComponentPrinterLink: TdxGridReportLink + ReportDocument.CreationDate = 38673.842406053240000000 + BuiltInReportLink = True + end + end + object PngImageList: TPngImageList + PngImages = <> + Left = 160 + Top = 32 + end +end diff --git a/Modulos/Contactos/Cliente/uViewContactos.pas b/Modulos/Contactos/Cliente/uViewContactos.pas new file mode 100644 index 0000000..5af9296 --- /dev/null +++ b/Modulos/Contactos/Cliente/uViewContactos.pas @@ -0,0 +1,85 @@ +unit uViewContactos; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewGrid, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, + cxDataStorage, cxEdit, DB, cxDBData, uDADataTable, cxGridLevel, + cxClasses, cxControls, cxGridCustomView, cxGridCustomTableView, + cxGridTableView, cxGridDBTableView, cxGrid, uBizContacto, ActnList, Menus, + cxGridBandedTableView, cxGridDBBandedTableView, JvComponent, + JvFormAutoSize, PngImageList, ImgList, dxPSGlbl, dxPSUtl, dxPSEngn, + dxPrnPg, dxBkgnd, dxWrap, dxPrnDev, dxPSCompsProvider, dxPSFillPatterns, + dxPSEdgePatterns, cxIntlPrintSys3, dxPSCore, dxPScxCommon, dxPScxGridLnk, + uViewFiltroBase; + +type + IViewContactos = interface(IViewGrid) + ['{5FCFD172-5F8A-4639-B479-1CF0061526B5}'] + function GetContactos: IBizContacto; + procedure SetContactos(const Value: IBizContacto); + property Contactos: IBizContacto read GetContactos write SetContactos; + end; + + TfrViewContactos = class(TfrViewGrid, IViewContactos) + cxGrid1ViewCALLE: TcxGridDBColumn; + cxGrid1ViewMOVIL: TcxGridDBColumn; + cxGrid1ViewNOMBRE: TcxGridDBColumn; + cxGrid1ViewTELEFONO1: TcxGridDBColumn; + cxGridViewCODIGO: TcxGridDBColumn; + PngImageList: TPngImageList; + cxGridViewICONO: TcxGridDBColumn; + procedure cxGridViewCODIGOCustomDrawCell( + Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; + AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); + protected + FContactos: IBizContacto; + function GetContactos: IBizContacto; virtual; + procedure SetContactos(const Value: IBizContacto); virtual; + public + property DataSet: IBizContacto read GetContactos write SetContactos; + end; + +var + frViewContactos: TfrViewContactos; + +implementation + +uses uDataModuleContactos; + + +{$R *.dfm} + +{ TfrViewClientes } + +{ +******************************* TfrViewContactos ******************************* +} +function TfrViewContactos.GetContactos: IBizContacto; +begin + Result := FContactos; +end; + +procedure TfrViewContactos.SetContactos(const Value: IBizContacto); +begin + FContactos := Value; + if Assigned(FContactos) then + DADataSource.DataTable := FContactos.DataTable; +end; + + +procedure TfrViewContactos.cxGridViewCODIGOCustomDrawCell( + Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; + AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); +var + R : TRect; +begin + inherited; + R := AViewInfo.ContentBounds; + ACanvas.FillRect(R); + ACanvas.DrawImage(PngImageList, R.Left, R.Top, 0); + ADone := True; +end; + +end. diff --git a/Modulos/Contactos/Cliente/uViewDatosYSeleccionContacto.dfm b/Modulos/Contactos/Cliente/uViewDatosYSeleccionContacto.dfm new file mode 100644 index 0000000..9295641 --- /dev/null +++ b/Modulos/Contactos/Cliente/uViewDatosYSeleccionContacto.dfm @@ -0,0 +1,367 @@ +inherited frViewDatosYSeleccionContacto: TfrViewDatosYSeleccionContacto + Width = 377 + Height = 214 + Constraints.MinHeight = 202 + Constraints.MinWidth = 350 + DesignSize = ( + 377 + 214) + object Label5: TLabel + Left = 8 + Top = 8 + Width = 52 + Height = 13 + Caption = 'Contacto' + Font.Charset = DEFAULT_CHARSET + Font.Color = clActiveCaption + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + ParentFont = False + end + object Bevel1: TBevel + Left = 64 + Top = 8 + Width = 299 + Height = 9 + Anchors = [akLeft, akTop, akRight] + Shape = bsBottomLine + end + object lblNombre: TLabel + Left = 16 + Top = 64 + Width = 41 + Height = 13 + Caption = 'Nombre:' + end + object lblNIFCIF: TLabel + Left = 16 + Top = 90 + Width = 42 + Height = 13 + Caption = 'NIF/CIF:' + end + object lblCalle: TLabel + Left = 16 + Top = 116 + Width = 27 + Height = 13 + Caption = 'Calle:' + end + object lblPoblacion: TLabel + Left = 16 + Top = 142 + Width = 49 + Height = 13 + Caption = 'Poblaci'#243'n:' + end + object lblProvincia: TLabel + Left = 16 + Top = 169 + Width = 47 + Height = 13 + Caption = 'Provincia:' + end + object lblCodigoPostal: TLabel + Left = 246 + Top = 169 + Width = 17 + Height = 13 + Caption = 'CP:' + end + object ToolBar1: TToolBar + Left = 8 + Top = 29 + Width = 355 + Height = 22 + Align = alNone + Anchors = [akLeft, akTop, akRight] + ButtonWidth = 140 + Caption = 'ToolBar1' + EdgeBorders = [] + EdgeInner = esNone + EdgeOuter = esNone + Flat = True + Images = PngImageList + List = True + ParentShowHint = False + ShowCaptions = True + ShowHint = True + TabOrder = 6 + Transparent = True + Wrapable = False + object ToolButton1: TToolButton + Left = 0 + Top = 0 + Action = actElegirContacto + AutoSize = True + end + object ToolButton3: TToolButton + Left = 117 + Top = 0 + Width = 8 + Caption = 'ToolButton3' + ImageIndex = 1 + Style = tbsSeparator + end + object ToolButton2: TToolButton + Left = 125 + Top = 0 + Action = actAnadirContacto + end + end + object edtlNombre: TcxDBTextEdit + Left = 81 + Top = 60 + Anchors = [akLeft, akTop, akRight] + AutoSize = False + DataBinding.DataField = 'NOMBRE' + DataBinding.DataSource = DADataSource + Enabled = False + ParentFont = False + Properties.ReadOnly = True + Properties.UseLeftAlignmentOnEditing = False + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clWindowText + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 0 + Height = 21 + Width = 282 + end + object edtPoblacion: TcxDBTextEdit + Left = 81 + Top = 138 + Anchors = [akLeft, akTop, akRight] + AutoSize = False + DataBinding.DataField = 'POBLACION' + DataBinding.DataSource = DADataSource + Enabled = False + ParentFont = False + Properties.ReadOnly = True + Properties.UseLeftAlignmentOnEditing = False + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clWindowText + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 3 + Height = 21 + Width = 282 + end + object edtProvincia: TcxDBTextEdit + Left = 81 + Top = 165 + Anchors = [akLeft, akTop, akRight] + AutoSize = False + DataBinding.DataField = 'PROVINCIA' + DataBinding.DataSource = DADataSource + Enabled = False + ParentFont = False + Properties.ReadOnly = True + Properties.UseLeftAlignmentOnEditing = False + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clWindowText + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 4 + Height = 21 + Width = 138 + end + object edtNIFCIF: TcxDBTextEdit + Left = 81 + Top = 86 + Anchors = [akLeft, akTop, akRight] + AutoSize = False + DataBinding.DataField = 'NIFCIF' + DataBinding.DataSource = DADataSource + Enabled = False + ParentFont = False + Properties.ReadOnly = True + Properties.UseLeftAlignmentOnEditing = False + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clWindowText + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 1 + Height = 21 + Width = 282 + end + object edtCalle: TcxDBTextEdit + Left = 81 + Top = 112 + Anchors = [akLeft, akTop, akRight] + AutoSize = False + DataBinding.DataField = 'CALLE' + DataBinding.DataSource = DADataSource + Enabled = False + ParentFont = False + Properties.ReadOnly = True + Properties.UseLeftAlignmentOnEditing = False + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clWindowText + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 2 + Height = 21 + Width = 282 + end + object ToolBar2: TToolBar + Left = 186 + Top = 192 + Width = 189 + Height = 22 + Align = alNone + Anchors = [akLeft, akTop, akRight] + AutoSize = True + ButtonWidth = 189 + Caption = 'ToolBar1' + EdgeBorders = [] + EdgeInner = esNone + EdgeOuter = esNone + Flat = True + Images = PngImageList + List = True + ParentShowHint = False + ShowCaptions = True + ShowHint = True + TabOrder = 7 + Transparent = True + Wrapable = False + object ToolButton4: TToolButton + Left = 0 + Top = 0 + Action = actVerContacto + AutoSize = True + end + end + object edtCodigoPostal: TcxDBTextEdit + Left = 272 + Top = 165 + Anchors = [akLeft, akTop, akRight] + AutoSize = False + DataBinding.DataField = 'CODIGOPOSTAL' + DataBinding.DataSource = DADataSource + Enabled = False + ParentFont = False + Properties.ReadOnly = True + Properties.UseLeftAlignmentOnEditing = False + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clWindowText + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 5 + Height = 21 + Width = 91 + end + object DADataSource: TDADataSource + Left = 80 + end + object ActionList1: TActionList + Images = PngImageList + Left = 120 + object actElegirContacto: TAction + Caption = 'Elegir un contacto' + ImageIndex = 1 + OnExecute = actElegirContactoExecute + end + object actAnadirContacto: TAction + Caption = 'Dar de alta un contacto' + ImageIndex = 0 + OnExecute = actAnadirContactoExecute + end + object actVerContacto: TAction + Caption = 'Ver ficha completa del contacto...' + ImageIndex = 2 + OnExecute = actVerContactoExecute + OnUpdate = actVerContactoUpdate + 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 = 152 + Bitmap = {} + end +end diff --git a/Modulos/Contactos/Cliente/uViewDatosYSeleccionContacto.pas b/Modulos/Contactos/Cliente/uViewDatosYSeleccionContacto.pas new file mode 100644 index 0000000..bba5462 --- /dev/null +++ b/Modulos/Contactos/Cliente/uViewDatosYSeleccionContacto.pas @@ -0,0 +1,183 @@ +unit uViewDatosYSeleccionContacto; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, StdCtrls, cxControls, cxContainer, cxEdit, cxLabel, + cxDBLabel, ExtCtrls, DB, uDADataTable, uBizContacto, + ComCtrls, ToolWin, ActnList, ImgList, PngImageList, cxTextEdit, cxDBEdit, + pngimage, JvExControls, JvComponent, JvButton, JvTransparentButton, Mask, + DBCtrls; + +type + IViewDatosYSeleccionContacto = interface(IViewBase) + ['{FCBC26C6-5B00-4985-B8AD-E91C79BE469B}'] + function GetContacto: IBizContacto; + procedure SetContacto(Value: IBizContacto); + property Contacto: IBizContacto read GetContacto write SetContacto; + + function GetOnContactoChanged : TNotifyEvent; + procedure SetOnContactoChanged (const Value : TNotifyEvent); + property OnContactoChanged : TNotifyEvent read GetOnContactoChanged + write SetOnContactoChanged; + end; + + TfrViewDatosYSeleccionContacto = class(TfrViewBase, IViewDatosYSeleccionContacto) + DADataSource: TDADataSource; + Label5: TLabel; + Bevel1: TBevel; + ToolBar1: TToolBar; + ToolButton1: TToolButton; + ActionList1: TActionList; + actElegirContacto: TAction; + ToolButton2: TToolButton; + actAnadirContacto: TAction; + actVerContacto: TAction; + PngImageList: TPngImageList; + edtlNombre: TcxDBTextEdit; + edtPoblacion: TcxDBTextEdit; + edtProvincia: TcxDBTextEdit; + edtNIFCIF: TcxDBTextEdit; + lblNombre: TLabel; + lblNIFCIF: TLabel; + edtCalle: TcxDBTextEdit; + lblCalle: TLabel; + lblPoblacion: TLabel; + lblProvincia: TLabel; + ToolButton3: TToolButton; + ToolBar2: TToolBar; + ToolButton4: TToolButton; + lblCodigoPostal: TLabel; + edtCodigoPostal: TcxDBTextEdit; + procedure actElegirContactoExecute(Sender: TObject); + procedure actAnadirContactoExecute(Sender: TObject); + procedure actVerContactoExecute(Sender: TObject); + procedure actVerContactoUpdate(Sender: TObject); + procedure cxLabel1Click(Sender: TObject); + private + FContacto : IBizContacto; + FOnContactoChanged : TNotifyEvent; + protected + function GetContacto: IBizContacto; + procedure SetContacto(Value: IBizContacto); + function GetOnContactoChanged : TNotifyEvent; + procedure SetOnContactoChanged (const Value : TNotifyEvent); + public + property Contacto: IBizContacto read GetContacto write SetContacto; + property OnContactoChanged : TNotifyEvent read GetOnContactoChanged + write SetOnContactoChanged; + end; + +var + frViewDatosYSeleccionContacto: TfrViewDatosYSeleccionContacto; + +implementation + +{$R *.dfm} + +uses + uDataModuleContactos, Math; + +procedure TfrViewDatosYSeleccionContacto.actElegirContactoExecute(Sender: TObject); +var + AContacto : IBizContacto; +begin + inherited; +{ case FContacto.Categorias.CODIGOCATEGORIA of + CLIENTE : AContacto := dmContactos.GetClientes; + PROVEEDOR : AContacto := dmContactos.GetProveedores; + INSTALADOR : AContacto := dmContactos.GetInstaladores; + end;} + + if Supports(FContacto, IBizInstalador) then + AContacto := dmContactos.GetInstaladores; + if Supports(FContacto, IBizCliente) then + AContacto := dmContactos.GetClientes; + if Supports(FContacto, IBizProveedor) then + AContacto := dmContactos.GetProveedores; + + try + if AContacto.ShowForSelect = mrOK then + begin + Contacto := dmContactos.GetItemsSeleccionados(AContacto); + end; + finally + AContacto := NIL; + end; +end; + +procedure TfrViewDatosYSeleccionContacto.actAnadirContactoExecute( + Sender: TObject); +var + AContactos : IBizContacto; +begin + inherited; +{ case FContacto.Categorias.CODIGOCATEGORIA of + CLIENTE : AContactos := dmContactos.GetCliente(-1); + PROVEEDOR : AContactos := dmContactos.GetProveedor(-1); + end;} + + if Supports(FContacto, IBizProveedor) then + AContactos := dmContactos.GetProveedor(-1); + if Supports(FContacto, IBizCliente) then + AContactos := dmContactos.GetCliente(-1); + + try + AContactos.DataTable.Active := True; + AContactos.Insert; + AContactos.Show; + if AContactos.DataTable.RecordCount > 0 then + Contacto := AContactos; + finally + AContactos := NIL; + end; +end; + +procedure TfrViewDatosYSeleccionContacto.actVerContactoExecute(Sender: TObject); +begin + inherited; + Contacto.Show; +end; + +procedure TfrViewDatosYSeleccionContacto.actVerContactoUpdate(Sender: TObject); +begin + inherited; + (Sender as TAction).Enabled := Length(edtlNombre.Text) > 0; +end; + +procedure TfrViewDatosYSeleccionContacto.cxLabel1Click(Sender: TObject); +begin + inherited; + actVerContacto.Execute; +end; + +function TfrViewDatosYSeleccionContacto.GetContacto: IBizContacto; +begin + Result := FContacto; +end; + +procedure TfrViewDatosYSeleccionContacto.SetContacto(Value: IBizContacto); +begin + FContacto := Value; + DADataSource.DataTable := FContacto.DataTable; + + if not FContacto.DataTable.Active then + FContacto.DataTable.Active := True; + + if Assigned(FOnContactoChanged) then + FOnContactoChanged(Self); +end; + +function TfrViewDatosYSeleccionContacto.GetOnContactoChanged: TNotifyEvent; +begin + Result := FOnContactoChanged; +end; + +procedure TfrViewDatosYSeleccionContacto.SetOnContactoChanged( + const Value: TNotifyEvent); +begin + FOnContactoChanged := Value; +end; + +end. diff --git a/Modulos/Contactos/Cliente/uViewInstalador.dfm b/Modulos/Contactos/Cliente/uViewInstalador.dfm new file mode 100644 index 0000000..39ac32d --- /dev/null +++ b/Modulos/Contactos/Cliente/uViewInstalador.dfm @@ -0,0 +1,49 @@ +inherited frViewInstalador: TfrViewInstalador + inherited pnlGeneral: TPanel + inherited eNombre: TcxDBTextEdit + Width = 185 + end + inherited eNIFCIF: TcxDBTextEdit + Width = 185 + end + end + inherited frViewTelefonos: TfrViewTelefonos + inherited eTlfParticular: TcxDBTextEdit + Width = 185 + end + inherited eTlfTrabajo: TcxDBTextEdit + Width = 185 + end + inherited eTlfMovil: TcxDBTextEdit + Width = 185 + end + inherited eFax: TcxDBTextEdit + Width = 185 + end + end + inherited frViewInternet1: TfrViewInternet + inherited ePaginaWeb: TcxDBTextEdit + Width = 185 + end + inherited eMailTrabajo: TcxDBTextEdit + Width = 185 + end + inherited eMailParticular: TcxDBTextEdit + Width = 185 + end + end + inherited frViewDireccion: TfrViewDireccion + inherited eCalle: TcxDBTextEdit + Width = 185 + end + inherited ePoblacion: TcxDBTextEdit + Width = 185 + end + inherited eProvincia: TcxDBTextEdit + Width = 185 + end + inherited eCodigoPostal: TcxDBTextEdit + Width = 185 + end + end +end diff --git a/Modulos/Contactos/Cliente/uViewInstalador.pas b/Modulos/Contactos/Cliente/uViewInstalador.pas new file mode 100644 index 0000000..4c21ea8 --- /dev/null +++ b/Modulos/Contactos/Cliente/uViewInstalador.pas @@ -0,0 +1,24 @@ +unit uViewInstalador; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewContacto, DB, uDADataTable, uViewDireccion, uViewInternet, + uCustomView, uViewBase, uViewTelefonos, cxControls, cxContainer, cxEdit, + cxTextEdit, cxDBEdit, ExtCtrls, StdCtrls; + +type + IViewInstalador = interface(IViewContacto) + ['{5916FB85-67B6-4EC2-A34B-0B57D477B652}'] + end; + + TfrViewInstalador = class(TfrViewContacto, IViewInstalador) + end; + +implementation + +{$R *.dfm} + +end. + \ No newline at end of file diff --git a/Modulos/Contactos/Cliente/uViewInstaladores.dfm b/Modulos/Contactos/Cliente/uViewInstaladores.dfm new file mode 100644 index 0000000..a9a250f --- /dev/null +++ b/Modulos/Contactos/Cliente/uViewInstaladores.dfm @@ -0,0 +1,52 @@ +inherited frViewInstaladores: TfrViewInstaladores + inherited cxGrid: TcxGrid + inherited cxGridView: TcxGridDBTableView + DataController.Summary.FooterSummaryItems = < + item + Format = '0 instaladores' + Kind = skCount + Column = cxGrid1ViewNOMBRE + end> + end + end + inherited dxComponentPrinter: TdxComponentPrinter + inherited dxComponentPrinterLink: TdxGridReportLink + ReportDocument.CreationDate = 38677.491482303240000000 + BuiltInReportLink = True + end + end + inherited PngImageList: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000AC400000AC401666D82D4000002B84944415478DA + 7DD25B4814511807F06FD61DC79DBDB8177577D9B23B4B2E3D84F6500F3D2542 + D20DE902F910FA105D84209F0C45A82048082A562C4DA3A4B21E7C0B12332168 + 438D7523D128D745DDCBAC7B9B9DD9B9CF342B289AAC7F989773BEEFC739F31D + 445114C807411058CBCCDBA64600E9762A4D56C4E2197FE06FF46EE7C08C0F36 + 64BDEF7F60FAE5E56687C3F22C976335C954065692698827C8DC989F38DBF731 + 38B22DF0A6A546E7AEDE17C2755839C70B90CDD21026D2200A3C8457D8D9D61E + FF11B5942A0CB41FAB7539AC9F8A3445C0B0022C1234386C2630EA00E61608E5 + DEE0AFBA60981A29088C3FAE6F4E64F95E4144C06A31817BA7191059049E6381 + 6618783838D5F4EAF3527F41C0E7AD6FD8E1B47FD0A2E8EA9A248A20A8C71738 + 0E588E55DA9F4F340FFB228581A1CEA3CE6AF7EE105A5CBC2AC8B2ACDE5F5845 + 489216CF748CD54653FC976DA730D973FA9DD9885F582DCA0352FE14027C9B5E + 9EBDFAE4C7717539BE2DD0D752E33AE4B14F1A30D421AB7BF96B24D314DFDAEB + BF35F53BD35D708CF9E8DA5ED88CA4CB8BEF92CF77C9FD8811D4374023D026D5 + 294CE2800FA102D788D777A6373EA875C0D4D167290D5ABE32065755AECC0937 + ABE6A1D16381813F08780336D027A250925ECE2AECF773E1F7F747B700FB2FF5 + 3E15A5F21B94D50E399B034AAC18347810E89F33813699528108E02A82318B8B + 11DF83C3742C94D8041C3CE90D7158792563B3036D2A03CE640111D783866501 + A349C05304E049F54BC5202E8F5E8C8F0D0D6D023C271ECD8BA8654FAE34DF6C + 05DE6804495B0C1AF527A25416302A05783A01BA4C1C086EFC7A7462B87B13E0 + 3ED57E45614ABB6483DDCA636644D0E901B45A005E02AD40032690A0A5E33C9F + 9909ACCC0D379189D8CF2D53309BCD658273AF1BAD705582466F4064492329AC + 20F15C0E2882449716226A5930AD66ADE71FDF3497F05E932988000000004945 + 4E44AE426082} + Name = 'PngImage1' + Background = clWindow + end> + Bitmap = {} + end +end diff --git a/Modulos/Contactos/Cliente/uViewInstaladores.pas b/Modulos/Contactos/Cliente/uViewInstaladores.pas new file mode 100644 index 0000000..688df17 --- /dev/null +++ b/Modulos/Contactos/Cliente/uViewInstaladores.pas @@ -0,0 +1,31 @@ +unit uViewInstaladores; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewContactos, cxStyles, cxCustomData, cxGraphics, cxFilter, + cxData, cxDataStorage, cxEdit, DB, cxDBData, dxPSGlbl, dxPSUtl, dxPSEngn, + dxPrnPg, dxBkgnd, dxWrap, dxPrnDev, dxPSCompsProvider, dxPSFillPatterns, + dxPSEdgePatterns, ImgList, PngImageList, cxIntlPrintSys3, dxPSCore, + dxPScxCommon, dxPScxGridLnk, ActnList, uDADataTable, cxGridLevel, + cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxClasses, + cxControls, cxGridCustomView, cxGrid; + +type + IViewInstaladores = interface(IViewContactos) + ['{8D10450B-B82E-4CB4-A7B9-67C0D5535F98}'] + end; + + TfrViewInstaladores = class(TfrViewContactos, IViewInstaladores) + private + { Private declarations } + public + { Public declarations } + end; + +implementation + +{$R *.dfm} + +end. diff --git a/Modulos/Contactos/Cliente/uViewProveedor.dfm b/Modulos/Contactos/Cliente/uViewProveedor.dfm new file mode 100644 index 0000000..b590a08 --- /dev/null +++ b/Modulos/Contactos/Cliente/uViewProveedor.dfm @@ -0,0 +1,75 @@ +inherited frViewProveedor: TfrViewProveedor + inherited pnlGeneral: TPanel + inherited eNombre: TcxDBTextEdit + Width = 185 + end + inherited eNIFCIF: TcxDBTextEdit + Width = 185 + end + end + inherited frViewTelefonos: TfrViewTelefonos + inherited lblParticular: TLabel + Top = 58 + end + inherited lblTrabajo: TLabel + Top = 34 + end + inherited eTlfParticular: TcxDBTextEdit + Top = 54 + DataBinding.DataField = 'TELEFONO2' + Width = 185 + end + inherited eTlfTrabajo: TcxDBTextEdit + Top = 30 + DataBinding.DataField = 'TELEFONO1' + Width = 185 + end + inherited eTlfMovil: TcxDBTextEdit + Width = 185 + end + inherited eFax: TcxDBTextEdit + Width = 185 + end + end + inherited frViewInternet1: TfrViewInternet + inherited lblParticular: TLabel + Top = 58 + end + inherited lblTrabajo: TLabel + Top = 34 + Visible = True + end + inherited lblMovil: TLabel + Visible = True + end + inherited ePaginaWeb: TcxDBTextEdit + Visible = True + Width = 185 + end + inherited eMailTrabajo: TcxDBTextEdit + Top = 30 + DataBinding.DataField = 'CORREO1' + Visible = True + Width = 185 + end + inherited eMailParticular: TcxDBTextEdit + Top = 54 + DataBinding.DataField = 'CORREO2' + Width = 185 + end + end + inherited frViewDireccion: TfrViewDireccion + inherited eCalle: TcxDBTextEdit + Width = 185 + end + inherited ePoblacion: TcxDBTextEdit + Width = 185 + end + inherited eProvincia: TcxDBTextEdit + Width = 185 + end + inherited eCodigoPostal: TcxDBTextEdit + Width = 185 + end + end +end diff --git a/Modulos/Contactos/Cliente/uViewProveedor.pas b/Modulos/Contactos/Cliente/uViewProveedor.pas new file mode 100644 index 0000000..83cc90e --- /dev/null +++ b/Modulos/Contactos/Cliente/uViewProveedor.pas @@ -0,0 +1,24 @@ +unit uViewProveedor; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewContacto, DB, uDADataTable, DBCtrls, uViewCategorias, + uViewInternet, uViewTelefonos, StdCtrls, Mask, ExtCtrls, uCustomView, + uViewBase, uViewDireccion, JvComponent, JvFormAutoSize, cxControls, + cxContainer, cxEdit, cxTextEdit, cxDBEdit; + +type + IViewProveedor = interface(IViewContacto) + ['{6A199FA2-EBDB-41EF-99D7-EE4DD32BDAC3}'] + end; + + TfrViewProveedor = class(TfrViewContacto, IViewProveedor) + end; + +implementation + +{$R *.dfm} + +end. diff --git a/Modulos/Contactos/Cliente/uViewProveedores.dfm b/Modulos/Contactos/Cliente/uViewProveedores.dfm new file mode 100644 index 0000000..f9c9bb6 --- /dev/null +++ b/Modulos/Contactos/Cliente/uViewProveedores.dfm @@ -0,0 +1,64 @@ +inherited frViewProveedores: TfrViewProveedores + inherited cxGrid: TcxGrid + inherited cxGridView: TcxGridDBTableView + DataController.Summary.FooterSummaryItems = < + item + Format = '0 proveedores' + Kind = skCount + Column = cxGrid1ViewNOMBRE + end> + inherited cxGridViewCODIGO: TcxGridDBColumn + IsCaptionAssigned = True + end + inherited cxGrid1ViewTELEFONO1: TcxGridDBColumn + Caption = 'Tel'#233'fono' + end + object cxGrid1ViewFAX: TcxGridDBColumn [5] + DataBinding.FieldName = 'FAX' + Width = 75 + end + inherited cxGrid1ViewMOVIL: TcxGridDBColumn + Width = 75 + end + end + end + inherited dxComponentPrinter: TdxComponentPrinter + inherited dxComponentPrinterLink: TdxGridReportLink + ReportDocument.CreationDate = 38677.470834513890000000 + BuiltInReportLink = True + end + end + inherited PngImageList: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000AC400000AC401666D82D4000002B14944415478DA + 7DD25B4893511C00F0FFF9BE7D6EDF74EA66CDA94BBAC1A89018DA4341BE8458 + 085DB0F4A11E421FA24228D2A00743A8B77CAA502CED8A68621408094A599034 + 49636A9945E5AD746EEEF6EDF25DF79DCE168A26F30FE7E59CFFFF772EFF8330 + C6100F84102CC74467D51980D8157F80332F7A82CEB19FAE1B0D8F261CB02A56 + EAFE07461F9FAEB6588CF7A25181F2F983B0E40B80C7CB45079CEEE36DBD53FD + 1B021D3545ACAD70C78C9ED56E16251942A108CCBB03A0C812CC2F0993B52DCE + 7D24359C1CA83F50926731F5D1140DBC20C39C3B0296AC7430B000DFA6DDF866 + FB97D2A9F9707F52E0DDEDB26A6F486A95150426633AD8B66402521590440122 + 3C0FB7DA47AA9EBEF9FD3029E0682A2BB7E664776B18263117531490C9F16551 + 04411470FDFD8FD52F1D0BC981AE86FD3985B6AD334C4A4A42505595DC5F4E20 + 1C17518E5D1F2871F9A5B71B7661B8E5E8B34C83BE2291140762F153C8F061F4 + CFE4B93B9F8AC9B46743A0ADA628AF604FF6709A96B1A8642D7E0D5F202CD5B6 + 3A2F8D7C0F36276D633CEA727666E5E6324D08679CB256E62303903F104130D4 + E5C35696733805FE7CC7D7D9D1D51F6A05A8B3EE329AB66BDE9BB1BADBC82B10 + 2AAF007BD94958E87E0E7C4F2704521970D354A857099D18189C7EBD0EB856BC + F7AE9145174D51198C82025AD081F9D06108BF7A019C06C0AF67C0A7D7804BC4 + 738D23E3761CC6DE35C0D552FB4C260DF9F1DD33089026C6401B5341A6104452 + 6808EA34E067C9D0D1F0C0335DE91EF476AD012E1FB1FF3268D0B60C52682043 + 2FA9A051C92392B7E5190A425A1A38DD3FE8C9DCEC85A5A1C5E63540E5C182B3 + 6606356631B4290DAB48A7A84093259500024D4104511050B1D4A38D8DFDE8FB + 5C85653CBEAE0BA4959BB479B42D359BCD0796260E505854644554A231AFCCF1 + 2E7581A44D919AC072CD5FBDC78FF098611F9A0000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end> + Bitmap = {} + end +end diff --git a/Modulos/Contactos/Cliente/uViewProveedores.pas b/Modulos/Contactos/Cliente/uViewProveedores.pas new file mode 100644 index 0000000..b82f03c --- /dev/null +++ b/Modulos/Contactos/Cliente/uViewProveedores.pas @@ -0,0 +1,28 @@ +unit uViewProveedores; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewContactos, cxStyles, cxCustomData, cxGraphics, cxFilter, + cxData, cxDataStorage, cxEdit, DB, cxDBData, ActnList, uDADataTable, + cxGridLevel, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, + cxClasses, cxControls, cxGridCustomView, cxGrid, JvComponent, + JvFormAutoSize, ImgList, PngImageList, dxPSGlbl, dxPSUtl, dxPSEngn, + dxPrnPg, dxBkgnd, dxWrap, dxPrnDev, dxPSCompsProvider, dxPSFillPatterns, + dxPSEdgePatterns, cxIntlPrintSys3, dxPSCore, dxPScxCommon, dxPScxGridLnk; + +type + IViewProveedores = interface(IViewContactos) + ['{C3E0BA52-4887-49B7-8FAA-8A47C861FC70}'] + end; + + TfrViewProveedores = class(TfrViewContactos, IViewProveedores) + cxGrid1ViewFAX: TcxGridDBColumn; + end; + +implementation + +{$R *.dfm} + +end. diff --git a/Modulos/Contactos/Cliente/uViewVendedor.dfm b/Modulos/Contactos/Cliente/uViewVendedor.dfm new file mode 100644 index 0000000..079a7d9 --- /dev/null +++ b/Modulos/Contactos/Cliente/uViewVendedor.dfm @@ -0,0 +1,58 @@ +inherited frViewVendedor: TfrViewVendedor + object Label3: TLabel [0] + Left = 16 + Top = 56 + Width = 42 + Height = 13 + Caption = 'NIF/CIF:' + end + inherited pnlGeneral: TPanel + Height = 81 + TabOrder = 2 + DesignSize = ( + 300 + 81) + end + inherited frViewInternet1: TfrViewInternet + TabOrder = 1 + end + inherited frViewDireccion: TfrViewDireccion + TabOrder = 0 + end + object Panel1: TPanel [5] + Left = -1 + Top = 78 + Width = 300 + Height = 27 + BevelOuter = bvNone + TabOrder = 4 + object Label4: TLabel + Left = 16 + Top = 3 + Width = 68 + Height = 13 + Caption = 'Comisi'#243'n (%):' + end + object eComision: TcxDBSpinEdit + Left = 100 + Top = 0 + DataBinding.DataField = 'COMISION' + DataBinding.DataSource = DADataSource + Properties.AssignedValues.MinValue = True + Properties.ImmediatePost = True + Properties.Increment = 0.100000000000000000 + Properties.LargeIncrement = 1.000000000000000000 + Properties.ValueType = vtFloat + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.Kind = lfStandard + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.Kind = lfStandard + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.Kind = lfStandard + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 0 + Width = 101 + end + end +end diff --git a/Modulos/Contactos/Cliente/uViewVendedor.pas b/Modulos/Contactos/Cliente/uViewVendedor.pas new file mode 100644 index 0000000..50ec98a --- /dev/null +++ b/Modulos/Contactos/Cliente/uViewVendedor.pas @@ -0,0 +1,28 @@ +unit uViewVendedor; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewContacto, DB, uDADataTable, uViewDireccion, uViewInternet, + uCustomView, uViewBase, uViewTelefonos, cxControls, cxContainer, cxEdit, + cxTextEdit, cxDBEdit, ExtCtrls, StdCtrls, cxMaskEdit, cxSpinEdit; + +type + IViewVendedor = interface(IViewContacto) + ['{5BCCD062-7B3C-4D93-AF37-EF0418DDA739}'] + end; + + TfrViewVendedor = class(TfrViewContacto, IViewVendedor) + Label3: TLabel; + Panel1: TPanel; + Label4: TLabel; + eComision: TcxDBSpinEdit; + end; + +implementation + +{$R *.dfm} + +end. + \ No newline at end of file diff --git a/Modulos/Contactos/Cliente/uViewVendedores.dfm b/Modulos/Contactos/Cliente/uViewVendedores.dfm new file mode 100644 index 0000000..15078b6 --- /dev/null +++ b/Modulos/Contactos/Cliente/uViewVendedores.dfm @@ -0,0 +1,51 @@ +inherited frViewVendedores: TfrViewVendedores + inherited cxGrid: TcxGrid + inherited cxGridView: TcxGridDBTableView + DataController.Summary.FooterSummaryItems = < + item + Format = '0 vendedores' + Kind = skCount + Column = cxGrid1ViewNOMBRE + end> + inherited cxGridViewCODIGO: TcxGridDBColumn + IsCaptionAssigned = True + end + end + end + inherited dxComponentPrinter: TdxComponentPrinter + inherited dxComponentPrinterLink: TdxGridReportLink + ReportDocument.CreationDate = 38677.491482303240000000 + BuiltInReportLink = True + end + end + inherited PngImageList: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000002444944415478DA + A5D25F4853711407F0EFFDB3CDEB9DE6367391418B98521ABEA4988619C508F6 + 30A9142A8C281B6188088DA850090A2A288408C47A721404816325E120514C61 + 8159F6070D7CB04599CB66CEFB77D7FBEBF61ABB3ED4F7F5C0E79CC339142104 + FF13EA6F405C5E1A9879DAD7303F3A00411090E61C283DD0800A5F335C1BDDD4 + BA80AA8853D3FD37E7F578349012252CAEAE624992911424541D0F62EFB1CECF + 2E9773AB29F07E344A120F2E835254A46405CB14015B988FE4C222922B32DA7B + 63F0945553A6C0506F17597AF1102A4D83D96087DB5B8C126F11523F7E2232F0 + 12FEE0555405CE9B03915B6D44FB350D6F9907CEBC5CF01C0D312DC042130C8F + 4C6173CD59EC6B6C3307C29DCDA4D0FA05B575E550041992B1BF6AACC3D2402C + F60A9E4321F89A5ACD81DB67EA09A439F803D5E02D399045058CD15D90D278F4 + 780C9547BB703878711D20D44C66C79FC357BF0B153B9DC8A819A87A06F1C904 + 26C667E1EFBE8BA623E7CC8189A1E1F677DDF77B1CBC0C6E4F0A8C434172CE18 + 2A5E004AE7B0BDAF237CB0B2EEA4293018BCD3E39AFCDA2E6969C8FB1790BF3B + 0369300FFC073708CDE263ADF57BCBBD1B9B4C8168E96952906B03A3D0203512 + F2CB09A8213BC46FC614D020ACA8F8D4EA45C7854B5456E049C92962CFB180A7 + 5810BB0EC606B0AB2C94CC1A044D03240AAFB7C8B83212CE0EF46F3B418A381E + 1CCBC04A33A0414137BE5159D3201A88A86A78B3C3866BCF7AB303D1FEC85822 + FE764649A55B605C40FF536268E88C01D9AC608A5D085D0F995FE15FF21B1558 + 1FF02CF09AE30000000049454E44AE426082} + Name = 'PngImage1' + Background = clWindow + end> + Bitmap = {} + end +end diff --git a/Modulos/Contactos/Cliente/uViewVendedores.pas b/Modulos/Contactos/Cliente/uViewVendedores.pas new file mode 100644 index 0000000..5d913bb --- /dev/null +++ b/Modulos/Contactos/Cliente/uViewVendedores.pas @@ -0,0 +1,31 @@ +unit uViewVendedores; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewContactos, cxStyles, cxCustomData, cxGraphics, cxFilter, + cxData, cxDataStorage, cxEdit, DB, cxDBData, dxPSGlbl, dxPSUtl, dxPSEngn, + dxPrnPg, dxBkgnd, dxWrap, dxPrnDev, dxPSCompsProvider, dxPSFillPatterns, + dxPSEdgePatterns, ImgList, PngImageList, cxIntlPrintSys3, dxPSCore, + dxPScxCommon, dxPScxGridLnk, ActnList, uDADataTable, cxGridLevel, + cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxClasses, + cxControls, cxGridCustomView, cxGrid; + +type + IViewVendedores = interface(IViewContactos) + ['{51F60691-47D8-4D53-AA22-9F7193BD9BCA}'] + end; + + TfrViewVendedores = class(TfrViewContactos, IViewVendedores) + private + { Private declarations } + public + { Public declarations } + end; + +implementation + +{$R *.dfm} + +end. diff --git a/Modulos/Contactos/Reglas/schComisionesClient_Intf.pas b/Modulos/Contactos/Reglas/schComisionesClient_Intf.pas new file mode 100644 index 0000000..5673375 --- /dev/null +++ b/Modulos/Contactos/Reglas/schComisionesClient_Intf.pas @@ -0,0 +1,418 @@ +unit schComisionesClient_Intf; + +interface + +uses + Classes, DB, SysUtils, uROClasses, uDADataTable; + +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_VENDEDORESCOMISION = '{1BC4C0DE-A875-4DF3-BD41-683A8C4F961F}'; + RID_COMISIONES = '{6B2BBEE4-C97B-44C0-9D4B-A66082B1A01F}'; + RID_COBROSCOMISION = '{766D9F94-5866-441D-A089-C4411C671E01}'; + + { Data table names } + nme_VENDEDORESCOMISION = 'VENDEDORESCOMISION'; + nme_COMISIONES = 'COMISIONES'; + nme_COBROSCOMISION = 'COBROSCOMISION'; + + { VENDEDORESCOMISION fields } + fld_VENDEDORESCOMISIONVENDEDOR = 'VENDEDOR'; + fld_VENDEDORESCOMISIONPORCENTAJE = 'PORCENTAJE'; + fld_VENDEDORESCOMISIONCOMISION = 'COMISION'; + + { VENDEDORESCOMISION field indexes } + idx_VENDEDORESCOMISIONVENDEDOR = 0; + idx_VENDEDORESCOMISIONPORCENTAJE = 1; + idx_VENDEDORESCOMISIONCOMISION = 2; + + { COMISIONES fields } + fld_COMISIONESCOMISION = 'COMISION'; + + { COMISIONES field indexes } + idx_COMISIONESCOMISION = 0; + + { COBROSCOMISION fields } + fld_COBROSCOMISIONSELECCION = 'SELECCION'; + fld_COBROSCOMISIONCODIGOEMPRESA = 'CODIGOEMPRESA'; + fld_COBROSCOMISIONCODIGO = 'CODIGO'; + fld_COBROSCOMISIONCODIGOCONTACTO = 'CODIGOCONTACTO'; + fld_COBROSCOMISIONNOMBRE = 'NOMBRE'; + fld_COBROSCOMISIONFECHAPAGO = 'FECHAPAGO'; + fld_COBROSCOMISIONIMPORTE = 'IMPORTE'; + fld_COBROSCOMISIONFORMAPAGO = 'FORMAPAGO'; + fld_COBROSCOMISIONDESCRIPCION = 'DESCRIPCION'; + fld_COBROSCOMISIONCODIGOCATEGORIA = 'CODIGOCATEGORIA'; + fld_COBROSCOMISIONCATEGORIA = 'CATEGORIA'; + + { COBROSCOMISION field indexes } + idx_COBROSCOMISIONSELECCION = 0; + idx_COBROSCOMISIONCODIGOEMPRESA = 1; + idx_COBROSCOMISIONCODIGO = 2; + idx_COBROSCOMISIONCODIGOCONTACTO = 3; + idx_COBROSCOMISIONNOMBRE = 4; + idx_COBROSCOMISIONFECHAPAGO = 5; + idx_COBROSCOMISIONIMPORTE = 6; + idx_COBROSCOMISIONFORMAPAGO = 7; + idx_COBROSCOMISIONDESCRIPCION = 8; + idx_COBROSCOMISIONCODIGOCATEGORIA = 9; + idx_COBROSCOMISIONCATEGORIA = 10; + +type + { IVENDEDORESCOMISION } + IVENDEDORESCOMISION = interface(IDAStronglyTypedDataTable) + ['{4B0EE488-AE5C-4F1B-907A-08A753A211FC}'] + { Property getters and setters } + function GetVENDEDORValue: String; + procedure SetVENDEDORValue(const aValue: String); + function GetPORCENTAJEValue: Float; + procedure SetPORCENTAJEValue(const aValue: Float); + function GetCOMISIONValue: Float; + procedure SetCOMISIONValue(const aValue: Float); + + + { Properties } + property VENDEDOR: String read GetVENDEDORValue write SetVENDEDORValue; + property PORCENTAJE: Float read GetPORCENTAJEValue write SetPORCENTAJEValue; + property COMISION: Float read GetCOMISIONValue write SetCOMISIONValue; + end; + + { TVENDEDORESCOMISIONDataTableRules } + TVENDEDORESCOMISIONDataTableRules = class(TDADataTableRules, IVENDEDORESCOMISION) + private + protected + { Property getters and setters } + function GetVENDEDORValue: String; virtual; + procedure SetVENDEDORValue(const aValue: String); virtual; + function GetPORCENTAJEValue: Float; virtual; + procedure SetPORCENTAJEValue(const aValue: Float); virtual; + function GetCOMISIONValue: Float; virtual; + procedure SetCOMISIONValue(const aValue: Float); virtual; + + { Properties } + property VENDEDOR: String read GetVENDEDORValue write SetVENDEDORValue; + property PORCENTAJE: Float read GetPORCENTAJEValue write SetPORCENTAJEValue; + property COMISION: Float read GetCOMISIONValue write SetCOMISIONValue; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + + { ICOMISIONES } + ICOMISIONES = interface(IDAStronglyTypedDataTable) + ['{16E451A9-2317-4BCF-A569-278333EEAB2C}'] + { Property getters and setters } + function GetCOMISIONValue: Float; + procedure SetCOMISIONValue(const aValue: Float); + + + { Properties } + property COMISION: Float read GetCOMISIONValue write SetCOMISIONValue; + end; + + { TCOMISIONESDataTableRules } + TCOMISIONESDataTableRules = class(TDADataTableRules, ICOMISIONES) + private + protected + { Property getters and setters } + function GetCOMISIONValue: Float; virtual; + procedure SetCOMISIONValue(const aValue: Float); virtual; + + { Properties } + property COMISION: Float read GetCOMISIONValue write SetCOMISIONValue; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + + { ICOBROSCOMISION } + ICOBROSCOMISION = interface(IDAStronglyTypedDataTable) + ['{3B95C673-4F15-449B-9757-2074539B57AC}'] + { Property getters and setters } + function GetSELECCIONValue: Integer; + procedure SetSELECCIONValue(const aValue: Integer); + function GetCODIGOEMPRESAValue: Integer; + procedure SetCODIGOEMPRESAValue(const aValue: Integer); + function GetCODIGOValue: Integer; + procedure SetCODIGOValue(const aValue: Integer); + function GetCODIGOCONTACTOValue: Integer; + procedure SetCODIGOCONTACTOValue(const aValue: Integer); + function GetNOMBREValue: String; + procedure SetNOMBREValue(const aValue: String); + function GetFECHAPAGOValue: DateTime; + procedure SetFECHAPAGOValue(const aValue: DateTime); + function GetIMPORTEValue: Float; + procedure SetIMPORTEValue(const aValue: Float); + function GetFORMAPAGOValue: String; + procedure SetFORMAPAGOValue(const aValue: String); + function GetDESCRIPCIONValue: String; + procedure SetDESCRIPCIONValue(const aValue: String); + function GetCODIGOCATEGORIAValue: Integer; + procedure SetCODIGOCATEGORIAValue(const aValue: Integer); + function GetCATEGORIAValue: String; + procedure SetCATEGORIAValue(const aValue: String); + + + { Properties } + property SELECCION: Integer read GetSELECCIONValue write SetSELECCIONValue; + property CODIGOEMPRESA: Integer read GetCODIGOEMPRESAValue write SetCODIGOEMPRESAValue; + property CODIGO: Integer read GetCODIGOValue write SetCODIGOValue; + property CODIGOCONTACTO: Integer read GetCODIGOCONTACTOValue write SetCODIGOCONTACTOValue; + property NOMBRE: String read GetNOMBREValue write SetNOMBREValue; + property FECHAPAGO: DateTime read GetFECHAPAGOValue write SetFECHAPAGOValue; + property IMPORTE: Float read GetIMPORTEValue write SetIMPORTEValue; + property FORMAPAGO: String read GetFORMAPAGOValue write SetFORMAPAGOValue; + property DESCRIPCION: String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + property CODIGOCATEGORIA: Integer read GetCODIGOCATEGORIAValue write SetCODIGOCATEGORIAValue; + property CATEGORIA: String read GetCATEGORIAValue write SetCATEGORIAValue; + end; + + { TCOBROSCOMISIONDataTableRules } + TCOBROSCOMISIONDataTableRules = class(TDADataTableRules, ICOBROSCOMISION) + private + protected + { Property getters and setters } + function GetSELECCIONValue: Integer; virtual; + procedure SetSELECCIONValue(const aValue: Integer); virtual; + function GetCODIGOEMPRESAValue: Integer; virtual; + procedure SetCODIGOEMPRESAValue(const aValue: Integer); virtual; + function GetCODIGOValue: Integer; virtual; + procedure SetCODIGOValue(const aValue: Integer); virtual; + function GetCODIGOCONTACTOValue: Integer; virtual; + procedure SetCODIGOCONTACTOValue(const aValue: Integer); virtual; + function GetNOMBREValue: String; virtual; + procedure SetNOMBREValue(const aValue: String); virtual; + function GetFECHAPAGOValue: DateTime; virtual; + procedure SetFECHAPAGOValue(const aValue: DateTime); virtual; + function GetIMPORTEValue: Float; virtual; + procedure SetIMPORTEValue(const aValue: Float); virtual; + function GetFORMAPAGOValue: String; virtual; + procedure SetFORMAPAGOValue(const aValue: String); virtual; + function GetDESCRIPCIONValue: String; virtual; + procedure SetDESCRIPCIONValue(const aValue: String); virtual; + function GetCODIGOCATEGORIAValue: Integer; virtual; + procedure SetCODIGOCATEGORIAValue(const aValue: Integer); virtual; + function GetCATEGORIAValue: String; virtual; + procedure SetCATEGORIAValue(const aValue: String); virtual; + + { Properties } + property SELECCION: Integer read GetSELECCIONValue write SetSELECCIONValue; + property CODIGOEMPRESA: Integer read GetCODIGOEMPRESAValue write SetCODIGOEMPRESAValue; + property CODIGO: Integer read GetCODIGOValue write SetCODIGOValue; + property CODIGOCONTACTO: Integer read GetCODIGOCONTACTOValue write SetCODIGOCONTACTOValue; + property NOMBRE: String read GetNOMBREValue write SetNOMBREValue; + property FECHAPAGO: DateTime read GetFECHAPAGOValue write SetFECHAPAGOValue; + property IMPORTE: Float read GetIMPORTEValue write SetIMPORTEValue; + property FORMAPAGO: String read GetFORMAPAGOValue write SetFORMAPAGOValue; + property DESCRIPCION: String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + property CODIGOCATEGORIA: Integer read GetCODIGOCATEGORIAValue write SetCODIGOCATEGORIAValue; + property CATEGORIA: String read GetCATEGORIAValue write SetCATEGORIAValue; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + +implementation + +uses Variants; + +{ TVENDEDORESCOMISIONDataTableRules } +constructor TVENDEDORESCOMISIONDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TVENDEDORESCOMISIONDataTableRules.Destroy; +begin + inherited; +end; + +function TVENDEDORESCOMISIONDataTableRules.GetVENDEDORValue: String; +begin + result := DataTable.Fields[idx_VENDEDORESCOMISIONVENDEDOR].AsString; +end; + +procedure TVENDEDORESCOMISIONDataTableRules.SetVENDEDORValue(const aValue: String); +begin + DataTable.Fields[idx_VENDEDORESCOMISIONVENDEDOR].AsString := aValue; +end; + +function TVENDEDORESCOMISIONDataTableRules.GetPORCENTAJEValue: Float; +begin + result := DataTable.Fields[idx_VENDEDORESCOMISIONPORCENTAJE].AsFloat; +end; + +procedure TVENDEDORESCOMISIONDataTableRules.SetPORCENTAJEValue(const aValue: Float); +begin + DataTable.Fields[idx_VENDEDORESCOMISIONPORCENTAJE].AsFloat := aValue; +end; + +function TVENDEDORESCOMISIONDataTableRules.GetCOMISIONValue: Float; +begin + result := DataTable.Fields[idx_VENDEDORESCOMISIONCOMISION].AsFloat; +end; + +procedure TVENDEDORESCOMISIONDataTableRules.SetCOMISIONValue(const aValue: Float); +begin + DataTable.Fields[idx_VENDEDORESCOMISIONCOMISION].AsFloat := aValue; +end; + + +{ TCOMISIONESDataTableRules } +constructor TCOMISIONESDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TCOMISIONESDataTableRules.Destroy; +begin + inherited; +end; + +function TCOMISIONESDataTableRules.GetCOMISIONValue: Float; +begin + result := DataTable.Fields[idx_COMISIONESCOMISION].AsFloat; +end; + +procedure TCOMISIONESDataTableRules.SetCOMISIONValue(const aValue: Float); +begin + DataTable.Fields[idx_COMISIONESCOMISION].AsFloat := aValue; +end; + + +{ TCOBROSCOMISIONDataTableRules } +constructor TCOBROSCOMISIONDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TCOBROSCOMISIONDataTableRules.Destroy; +begin + inherited; +end; + +function TCOBROSCOMISIONDataTableRules.GetSELECCIONValue: Integer; +begin + result := DataTable.Fields[idx_COBROSCOMISIONSELECCION].AsInteger; +end; + +procedure TCOBROSCOMISIONDataTableRules.SetSELECCIONValue(const aValue: Integer); +begin + DataTable.Fields[idx_COBROSCOMISIONSELECCION].AsInteger := aValue; +end; + +function TCOBROSCOMISIONDataTableRules.GetCODIGOEMPRESAValue: Integer; +begin + result := DataTable.Fields[idx_COBROSCOMISIONCODIGOEMPRESA].AsInteger; +end; + +procedure TCOBROSCOMISIONDataTableRules.SetCODIGOEMPRESAValue(const aValue: Integer); +begin + DataTable.Fields[idx_COBROSCOMISIONCODIGOEMPRESA].AsInteger := aValue; +end; + +function TCOBROSCOMISIONDataTableRules.GetCODIGOValue: Integer; +begin + result := DataTable.Fields[idx_COBROSCOMISIONCODIGO].AsInteger; +end; + +procedure TCOBROSCOMISIONDataTableRules.SetCODIGOValue(const aValue: Integer); +begin + DataTable.Fields[idx_COBROSCOMISIONCODIGO].AsInteger := aValue; +end; + +function TCOBROSCOMISIONDataTableRules.GetCODIGOCONTACTOValue: Integer; +begin + result := DataTable.Fields[idx_COBROSCOMISIONCODIGOCONTACTO].AsInteger; +end; + +procedure TCOBROSCOMISIONDataTableRules.SetCODIGOCONTACTOValue(const aValue: Integer); +begin + DataTable.Fields[idx_COBROSCOMISIONCODIGOCONTACTO].AsInteger := aValue; +end; + +function TCOBROSCOMISIONDataTableRules.GetNOMBREValue: String; +begin + result := DataTable.Fields[idx_COBROSCOMISIONNOMBRE].AsString; +end; + +procedure TCOBROSCOMISIONDataTableRules.SetNOMBREValue(const aValue: String); +begin + DataTable.Fields[idx_COBROSCOMISIONNOMBRE].AsString := aValue; +end; + +function TCOBROSCOMISIONDataTableRules.GetFECHAPAGOValue: DateTime; +begin + result := DataTable.Fields[idx_COBROSCOMISIONFECHAPAGO].AsDateTime; +end; + +procedure TCOBROSCOMISIONDataTableRules.SetFECHAPAGOValue(const aValue: DateTime); +begin + DataTable.Fields[idx_COBROSCOMISIONFECHAPAGO].AsDateTime := aValue; +end; + +function TCOBROSCOMISIONDataTableRules.GetIMPORTEValue: Float; +begin + result := DataTable.Fields[idx_COBROSCOMISIONIMPORTE].AsFloat; +end; + +procedure TCOBROSCOMISIONDataTableRules.SetIMPORTEValue(const aValue: Float); +begin + DataTable.Fields[idx_COBROSCOMISIONIMPORTE].AsFloat := aValue; +end; + +function TCOBROSCOMISIONDataTableRules.GetFORMAPAGOValue: String; +begin + result := DataTable.Fields[idx_COBROSCOMISIONFORMAPAGO].AsString; +end; + +procedure TCOBROSCOMISIONDataTableRules.SetFORMAPAGOValue(const aValue: String); +begin + DataTable.Fields[idx_COBROSCOMISIONFORMAPAGO].AsString := aValue; +end; + +function TCOBROSCOMISIONDataTableRules.GetDESCRIPCIONValue: String; +begin + result := DataTable.Fields[idx_COBROSCOMISIONDESCRIPCION].AsString; +end; + +procedure TCOBROSCOMISIONDataTableRules.SetDESCRIPCIONValue(const aValue: String); +begin + DataTable.Fields[idx_COBROSCOMISIONDESCRIPCION].AsString := aValue; +end; + +function TCOBROSCOMISIONDataTableRules.GetCODIGOCATEGORIAValue: Integer; +begin + result := DataTable.Fields[idx_COBROSCOMISIONCODIGOCATEGORIA].AsInteger; +end; + +procedure TCOBROSCOMISIONDataTableRules.SetCODIGOCATEGORIAValue(const aValue: Integer); +begin + DataTable.Fields[idx_COBROSCOMISIONCODIGOCATEGORIA].AsInteger := aValue; +end; + +function TCOBROSCOMISIONDataTableRules.GetCATEGORIAValue: String; +begin + result := DataTable.Fields[idx_COBROSCOMISIONCATEGORIA].AsString; +end; + +procedure TCOBROSCOMISIONDataTableRules.SetCATEGORIAValue(const aValue: String); +begin + DataTable.Fields[idx_COBROSCOMISIONCATEGORIA].AsString := aValue; +end; + + +initialization + RegisterDataTableRules(RID_VENDEDORESCOMISION, TVENDEDORESCOMISIONDataTableRules); + RegisterDataTableRules(RID_COMISIONES, TCOMISIONESDataTableRules); + RegisterDataTableRules(RID_COBROSCOMISION, TCOBROSCOMISIONDataTableRules); + +end. diff --git a/Modulos/Contactos/Reglas/schComisionesServer_Intf.pas b/Modulos/Contactos/Reglas/schComisionesServer_Intf.pas new file mode 100644 index 0000000..c0dbfdc --- /dev/null +++ b/Modulos/Contactos/Reglas/schComisionesServer_Intf.pas @@ -0,0 +1,459 @@ +unit schComisionesServer_Intf; + +interface + +uses + Classes, DB, SysUtils, uROClasses, uDADataTable, uDABusinessProcessor, schComisionesClient_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_VENDEDORESCOMISIONDelta = '{47FDF38D-3FF4-4F15-A4B1-212E3669BFAA}'; + RID_COMISIONESDelta = '{DCCDF3B3-6238-4524-80E8-5533335061DD}'; + RID_COBROSCOMISIONDelta = '{15955B4C-796B-49D4-8F2B-07BA91EECB3D}'; + +type + { IVENDEDORESCOMISIONDelta } + IVENDEDORESCOMISIONDelta = interface(IVENDEDORESCOMISION) + ['{47FDF38D-3FF4-4F15-A4B1-212E3669BFAA}'] + { Property getters and setters } + function GetOldVENDEDORValue : String; + function GetOldPORCENTAJEValue : Float; + function GetOldCOMISIONValue : Float; + + { Properties } + property OldVENDEDOR : String read GetOldVENDEDORValue; + property OldPORCENTAJE : Float read GetOldPORCENTAJEValue; + property OldCOMISION : Float read GetOldCOMISIONValue; + end; + + { TVENDEDORESCOMISIONBusinessProcessorRules } + TVENDEDORESCOMISIONBusinessProcessorRules = class(TDABusinessProcessorRules, IVENDEDORESCOMISION, IVENDEDORESCOMISIONDelta) + private + protected + { Property getters and setters } + function GetVENDEDORValue: String; virtual; + function GetOldVENDEDORValue: String; virtual; + procedure SetVENDEDORValue(const aValue: String); virtual; + function GetPORCENTAJEValue: Float; virtual; + function GetOldPORCENTAJEValue: Float; virtual; + procedure SetPORCENTAJEValue(const aValue: Float); virtual; + function GetCOMISIONValue: Float; virtual; + function GetOldCOMISIONValue: Float; virtual; + procedure SetCOMISIONValue(const aValue: Float); virtual; + + { Properties } + property VENDEDOR : String read GetVENDEDORValue write SetVENDEDORValue; + property OldVENDEDOR : String read GetOldVENDEDORValue; + property PORCENTAJE : Float read GetPORCENTAJEValue write SetPORCENTAJEValue; + property OldPORCENTAJE : Float read GetOldPORCENTAJEValue; + property COMISION : Float read GetCOMISIONValue write SetCOMISIONValue; + property OldCOMISION : Float read GetOldCOMISIONValue; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + + { ICOMISIONESDelta } + ICOMISIONESDelta = interface(ICOMISIONES) + ['{DCCDF3B3-6238-4524-80E8-5533335061DD}'] + { Property getters and setters } + function GetOldCOMISIONValue : Float; + + { Properties } + property OldCOMISION : Float read GetOldCOMISIONValue; + end; + + { TCOMISIONESBusinessProcessorRules } + TCOMISIONESBusinessProcessorRules = class(TDABusinessProcessorRules, ICOMISIONES, ICOMISIONESDelta) + private + protected + { Property getters and setters } + function GetCOMISIONValue: Float; virtual; + function GetOldCOMISIONValue: Float; virtual; + procedure SetCOMISIONValue(const aValue: Float); virtual; + + { Properties } + property COMISION : Float read GetCOMISIONValue write SetCOMISIONValue; + property OldCOMISION : Float read GetOldCOMISIONValue; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + + { ICOBROSCOMISIONDelta } + ICOBROSCOMISIONDelta = interface(ICOBROSCOMISION) + ['{15955B4C-796B-49D4-8F2B-07BA91EECB3D}'] + { Property getters and setters } + function GetOldSELECCIONValue : Integer; + function GetOldCODIGOEMPRESAValue : Integer; + function GetOldCODIGOValue : Integer; + function GetOldCODIGOCONTACTOValue : Integer; + function GetOldNOMBREValue : String; + function GetOldFECHAPAGOValue : DateTime; + function GetOldIMPORTEValue : Float; + function GetOldFORMAPAGOValue : String; + function GetOldDESCRIPCIONValue : String; + function GetOldCODIGOCATEGORIAValue : Integer; + function GetOldCATEGORIAValue : String; + + { Properties } + property OldSELECCION : Integer read GetOldSELECCIONValue; + property OldCODIGOEMPRESA : Integer read GetOldCODIGOEMPRESAValue; + property OldCODIGO : Integer read GetOldCODIGOValue; + property OldCODIGOCONTACTO : Integer read GetOldCODIGOCONTACTOValue; + property OldNOMBRE : String read GetOldNOMBREValue; + property OldFECHAPAGO : DateTime read GetOldFECHAPAGOValue; + property OldIMPORTE : Float read GetOldIMPORTEValue; + property OldFORMAPAGO : String read GetOldFORMAPAGOValue; + property OldDESCRIPCION : String read GetOldDESCRIPCIONValue; + property OldCODIGOCATEGORIA : Integer read GetOldCODIGOCATEGORIAValue; + property OldCATEGORIA : String read GetOldCATEGORIAValue; + end; + + { TCOBROSCOMISIONBusinessProcessorRules } + TCOBROSCOMISIONBusinessProcessorRules = class(TDABusinessProcessorRules, ICOBROSCOMISION, ICOBROSCOMISIONDelta) + private + protected + { Property getters and setters } + function GetSELECCIONValue: Integer; virtual; + function GetOldSELECCIONValue: Integer; virtual; + procedure SetSELECCIONValue(const aValue: Integer); virtual; + function GetCODIGOEMPRESAValue: Integer; virtual; + function GetOldCODIGOEMPRESAValue: Integer; virtual; + procedure SetCODIGOEMPRESAValue(const aValue: Integer); virtual; + function GetCODIGOValue: Integer; virtual; + function GetOldCODIGOValue: Integer; virtual; + procedure SetCODIGOValue(const aValue: Integer); virtual; + function GetCODIGOCONTACTOValue: Integer; virtual; + function GetOldCODIGOCONTACTOValue: Integer; virtual; + procedure SetCODIGOCONTACTOValue(const aValue: Integer); virtual; + function GetNOMBREValue: String; virtual; + function GetOldNOMBREValue: String; virtual; + procedure SetNOMBREValue(const aValue: String); virtual; + function GetFECHAPAGOValue: DateTime; virtual; + function GetOldFECHAPAGOValue: DateTime; virtual; + procedure SetFECHAPAGOValue(const aValue: DateTime); virtual; + function GetIMPORTEValue: Float; virtual; + function GetOldIMPORTEValue: Float; virtual; + procedure SetIMPORTEValue(const aValue: Float); virtual; + function GetFORMAPAGOValue: String; virtual; + function GetOldFORMAPAGOValue: String; virtual; + procedure SetFORMAPAGOValue(const aValue: String); virtual; + function GetDESCRIPCIONValue: String; virtual; + function GetOldDESCRIPCIONValue: String; virtual; + procedure SetDESCRIPCIONValue(const aValue: String); virtual; + function GetCODIGOCATEGORIAValue: Integer; virtual; + function GetOldCODIGOCATEGORIAValue: Integer; virtual; + procedure SetCODIGOCATEGORIAValue(const aValue: Integer); virtual; + function GetCATEGORIAValue: String; virtual; + function GetOldCATEGORIAValue: String; virtual; + procedure SetCATEGORIAValue(const aValue: String); virtual; + + { Properties } + property SELECCION : Integer read GetSELECCIONValue write SetSELECCIONValue; + property OldSELECCION : Integer read GetOldSELECCIONValue; + property CODIGOEMPRESA : Integer read GetCODIGOEMPRESAValue write SetCODIGOEMPRESAValue; + property OldCODIGOEMPRESA : Integer read GetOldCODIGOEMPRESAValue; + property CODIGO : Integer read GetCODIGOValue write SetCODIGOValue; + property OldCODIGO : Integer read GetOldCODIGOValue; + property CODIGOCONTACTO : Integer read GetCODIGOCONTACTOValue write SetCODIGOCONTACTOValue; + property OldCODIGOCONTACTO : Integer read GetOldCODIGOCONTACTOValue; + property NOMBRE : String read GetNOMBREValue write SetNOMBREValue; + property OldNOMBRE : String read GetOldNOMBREValue; + property FECHAPAGO : DateTime read GetFECHAPAGOValue write SetFECHAPAGOValue; + property OldFECHAPAGO : DateTime read GetOldFECHAPAGOValue; + property IMPORTE : Float read GetIMPORTEValue write SetIMPORTEValue; + property OldIMPORTE : Float read GetOldIMPORTEValue; + property FORMAPAGO : String read GetFORMAPAGOValue write SetFORMAPAGOValue; + property OldFORMAPAGO : String read GetOldFORMAPAGOValue; + property DESCRIPCION : String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + property OldDESCRIPCION : String read GetOldDESCRIPCIONValue; + property CODIGOCATEGORIA : Integer read GetCODIGOCATEGORIAValue write SetCODIGOCATEGORIAValue; + property OldCODIGOCATEGORIA : Integer read GetOldCODIGOCATEGORIAValue; + property CATEGORIA : String read GetCATEGORIAValue write SetCATEGORIAValue; + property OldCATEGORIA : String read GetOldCATEGORIAValue; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + +implementation + +uses + Variants, uROBinaryHelpers; + +{ TVENDEDORESCOMISIONBusinessProcessorRules } +constructor TVENDEDORESCOMISIONBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TVENDEDORESCOMISIONBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TVENDEDORESCOMISIONBusinessProcessorRules.GetVENDEDORValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_VENDEDORESCOMISIONVENDEDOR]; +end; + +function TVENDEDORESCOMISIONBusinessProcessorRules.GetOldVENDEDORValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_VENDEDORESCOMISIONVENDEDOR]; +end; + +procedure TVENDEDORESCOMISIONBusinessProcessorRules.SetVENDEDORValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_VENDEDORESCOMISIONVENDEDOR] := aValue; +end; + +function TVENDEDORESCOMISIONBusinessProcessorRules.GetPORCENTAJEValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_VENDEDORESCOMISIONPORCENTAJE]; +end; + +function TVENDEDORESCOMISIONBusinessProcessorRules.GetOldPORCENTAJEValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_VENDEDORESCOMISIONPORCENTAJE]; +end; + +procedure TVENDEDORESCOMISIONBusinessProcessorRules.SetPORCENTAJEValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_VENDEDORESCOMISIONPORCENTAJE] := aValue; +end; + +function TVENDEDORESCOMISIONBusinessProcessorRules.GetCOMISIONValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_VENDEDORESCOMISIONCOMISION]; +end; + +function TVENDEDORESCOMISIONBusinessProcessorRules.GetOldCOMISIONValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_VENDEDORESCOMISIONCOMISION]; +end; + +procedure TVENDEDORESCOMISIONBusinessProcessorRules.SetCOMISIONValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_VENDEDORESCOMISIONCOMISION] := aValue; +end; + + +{ TCOMISIONESBusinessProcessorRules } +constructor TCOMISIONESBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TCOMISIONESBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TCOMISIONESBusinessProcessorRules.GetCOMISIONValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_COMISIONESCOMISION]; +end; + +function TCOMISIONESBusinessProcessorRules.GetOldCOMISIONValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_COMISIONESCOMISION]; +end; + +procedure TCOMISIONESBusinessProcessorRules.SetCOMISIONValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_COMISIONESCOMISION] := aValue; +end; + + +{ TCOBROSCOMISIONBusinessProcessorRules } +constructor TCOBROSCOMISIONBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TCOBROSCOMISIONBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TCOBROSCOMISIONBusinessProcessorRules.GetSELECCIONValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_COBROSCOMISIONSELECCION]; +end; + +function TCOBROSCOMISIONBusinessProcessorRules.GetOldSELECCIONValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_COBROSCOMISIONSELECCION]; +end; + +procedure TCOBROSCOMISIONBusinessProcessorRules.SetSELECCIONValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_COBROSCOMISIONSELECCION] := aValue; +end; + +function TCOBROSCOMISIONBusinessProcessorRules.GetCODIGOEMPRESAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_COBROSCOMISIONCODIGOEMPRESA]; +end; + +function TCOBROSCOMISIONBusinessProcessorRules.GetOldCODIGOEMPRESAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_COBROSCOMISIONCODIGOEMPRESA]; +end; + +procedure TCOBROSCOMISIONBusinessProcessorRules.SetCODIGOEMPRESAValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_COBROSCOMISIONCODIGOEMPRESA] := aValue; +end; + +function TCOBROSCOMISIONBusinessProcessorRules.GetCODIGOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_COBROSCOMISIONCODIGO]; +end; + +function TCOBROSCOMISIONBusinessProcessorRules.GetOldCODIGOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_COBROSCOMISIONCODIGO]; +end; + +procedure TCOBROSCOMISIONBusinessProcessorRules.SetCODIGOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_COBROSCOMISIONCODIGO] := aValue; +end; + +function TCOBROSCOMISIONBusinessProcessorRules.GetCODIGOCONTACTOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_COBROSCOMISIONCODIGOCONTACTO]; +end; + +function TCOBROSCOMISIONBusinessProcessorRules.GetOldCODIGOCONTACTOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_COBROSCOMISIONCODIGOCONTACTO]; +end; + +procedure TCOBROSCOMISIONBusinessProcessorRules.SetCODIGOCONTACTOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_COBROSCOMISIONCODIGOCONTACTO] := aValue; +end; + +function TCOBROSCOMISIONBusinessProcessorRules.GetNOMBREValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_COBROSCOMISIONNOMBRE]; +end; + +function TCOBROSCOMISIONBusinessProcessorRules.GetOldNOMBREValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_COBROSCOMISIONNOMBRE]; +end; + +procedure TCOBROSCOMISIONBusinessProcessorRules.SetNOMBREValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_COBROSCOMISIONNOMBRE] := aValue; +end; + +function TCOBROSCOMISIONBusinessProcessorRules.GetFECHAPAGOValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_COBROSCOMISIONFECHAPAGO]; +end; + +function TCOBROSCOMISIONBusinessProcessorRules.GetOldFECHAPAGOValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_COBROSCOMISIONFECHAPAGO]; +end; + +procedure TCOBROSCOMISIONBusinessProcessorRules.SetFECHAPAGOValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_COBROSCOMISIONFECHAPAGO] := aValue; +end; + +function TCOBROSCOMISIONBusinessProcessorRules.GetIMPORTEValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_COBROSCOMISIONIMPORTE]; +end; + +function TCOBROSCOMISIONBusinessProcessorRules.GetOldIMPORTEValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_COBROSCOMISIONIMPORTE]; +end; + +procedure TCOBROSCOMISIONBusinessProcessorRules.SetIMPORTEValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_COBROSCOMISIONIMPORTE] := aValue; +end; + +function TCOBROSCOMISIONBusinessProcessorRules.GetFORMAPAGOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_COBROSCOMISIONFORMAPAGO]; +end; + +function TCOBROSCOMISIONBusinessProcessorRules.GetOldFORMAPAGOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_COBROSCOMISIONFORMAPAGO]; +end; + +procedure TCOBROSCOMISIONBusinessProcessorRules.SetFORMAPAGOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_COBROSCOMISIONFORMAPAGO] := aValue; +end; + +function TCOBROSCOMISIONBusinessProcessorRules.GetDESCRIPCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_COBROSCOMISIONDESCRIPCION]; +end; + +function TCOBROSCOMISIONBusinessProcessorRules.GetOldDESCRIPCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_COBROSCOMISIONDESCRIPCION]; +end; + +procedure TCOBROSCOMISIONBusinessProcessorRules.SetDESCRIPCIONValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_COBROSCOMISIONDESCRIPCION] := aValue; +end; + +function TCOBROSCOMISIONBusinessProcessorRules.GetCODIGOCATEGORIAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_COBROSCOMISIONCODIGOCATEGORIA]; +end; + +function TCOBROSCOMISIONBusinessProcessorRules.GetOldCODIGOCATEGORIAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_COBROSCOMISIONCODIGOCATEGORIA]; +end; + +procedure TCOBROSCOMISIONBusinessProcessorRules.SetCODIGOCATEGORIAValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_COBROSCOMISIONCODIGOCATEGORIA] := aValue; +end; + +function TCOBROSCOMISIONBusinessProcessorRules.GetCATEGORIAValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_COBROSCOMISIONCATEGORIA]; +end; + +function TCOBROSCOMISIONBusinessProcessorRules.GetOldCATEGORIAValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_COBROSCOMISIONCATEGORIA]; +end; + +procedure TCOBROSCOMISIONBusinessProcessorRules.SetCATEGORIAValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_COBROSCOMISIONCATEGORIA] := aValue; +end; + + +initialization + RegisterBusinessProcessorRules(RID_VENDEDORESCOMISIONDelta, TVENDEDORESCOMISIONBusinessProcessorRules); + RegisterBusinessProcessorRules(RID_COMISIONESDelta, TCOMISIONESBusinessProcessorRules); + RegisterBusinessProcessorRules(RID_COBROSCOMISIONDelta, TCOBROSCOMISIONBusinessProcessorRules); + +end. diff --git a/Modulos/Contactos/Reglas/schContactosClient_Intf.pas b/Modulos/Contactos/Reglas/schContactosClient_Intf.pas new file mode 100644 index 0000000..7cb0dbf --- /dev/null +++ b/Modulos/Contactos/Reglas/schContactosClient_Intf.pas @@ -0,0 +1,562 @@ +unit schContactosClient_Intf; + +interface + +uses + Classes, DB, SysUtils, uROClasses, uDADataTable; + +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 = '{8925540A-D98B-411B-ADAF-34E959549849}'; + RID_CategoriasContacto = '{1EC54DA1-7157-497C-B449-E2C538576AF7}'; + RID_Categorias = '{FC26550A-8EFE-47EE-A589-E7D1056A5ACF}'; + + { Data table names } + nme_Contactos = 'Contactos'; + nme_CategoriasContacto = 'CategoriasContacto'; + nme_Categorias = 'Categorias'; + + { Contactos fields } + fld_ContactosCODIGOEMPRESA = 'CODIGOEMPRESA'; + fld_ContactosCODIGO = 'CODIGO'; + fld_ContactosFECHAALTA = 'FECHAALTA'; + fld_ContactosUSUARIO = 'USUARIO'; + fld_ContactosNIFCIF = 'NIFCIF'; + fld_ContactosNOMBRE = 'NOMBRE'; + fld_ContactosNOTAS = 'NOTAS'; + fld_ContactosCALLE = 'CALLE'; + fld_ContactosPROVINCIA = 'PROVINCIA'; + fld_ContactosCODIGOPOSTAL = 'CODIGOPOSTAL'; + fld_ContactosPOBLACION = 'POBLACION'; + fld_ContactosTELEFONO1 = 'TELEFONO1'; + fld_ContactosTELEFONO2 = 'TELEFONO2'; + fld_ContactosMOVIL = 'MOVIL'; + fld_ContactosFAX = 'FAX'; + fld_ContactosCORREO1 = 'CORREO1'; + fld_ContactosCORREO2 = 'CORREO2'; + fld_ContactosPAGINAWEB = 'PAGINAWEB'; + fld_ContactosPERSONACONTACTO = 'PERSONACONTACTO'; + + { Contactos field indexes } + idx_ContactosCODIGOEMPRESA = 0; + idx_ContactosCODIGO = 1; + idx_ContactosFECHAALTA = 2; + idx_ContactosUSUARIO = 3; + idx_ContactosNIFCIF = 4; + idx_ContactosNOMBRE = 5; + idx_ContactosNOTAS = 6; + idx_ContactosCALLE = 7; + idx_ContactosPROVINCIA = 8; + idx_ContactosCODIGOPOSTAL = 9; + idx_ContactosPOBLACION = 10; + idx_ContactosTELEFONO1 = 11; + idx_ContactosTELEFONO2 = 12; + idx_ContactosMOVIL = 13; + idx_ContactosFAX = 14; + idx_ContactosCORREO1 = 15; + idx_ContactosCORREO2 = 16; + idx_ContactosPAGINAWEB = 17; + idx_ContactosPERSONACONTACTO = 18; + + { CategoriasContacto fields } + fld_CategoriasContactoCODIGOCONTACTO = 'CODIGOCONTACTO'; + fld_CategoriasContactoCODIGOCATEGORIA = 'CODIGOCATEGORIA'; + + { CategoriasContacto field indexes } + idx_CategoriasContactoCODIGOCONTACTO = 0; + idx_CategoriasContactoCODIGOCATEGORIA = 1; + + { Categorias fields } + fld_CategoriasCODIGO = 'CODIGO'; + fld_CategoriasDESCRIPCION = 'DESCRIPCION'; + + { Categorias field indexes } + idx_CategoriasCODIGO = 0; + idx_CategoriasDESCRIPCION = 1; + +type + { IContactos } + IContactos = interface(IDAStronglyTypedDataTable) + ['{7F8AA4B4-916C-4AFC-BB3C-66087F244F9A}'] + { Property getters and setters } + function GetCODIGOEMPRESAValue: Integer; + procedure SetCODIGOEMPRESAValue(const aValue: Integer); + function GetCODIGOValue: Integer; + procedure SetCODIGOValue(const aValue: Integer); + function GetFECHAALTAValue: DateTime; + procedure SetFECHAALTAValue(const aValue: DateTime); + function GetUSUARIOValue: String; + procedure SetUSUARIOValue(const aValue: String); + function GetNIFCIFValue: String; + procedure SetNIFCIFValue(const aValue: String); + function GetNOMBREValue: String; + procedure SetNOMBREValue(const aValue: String); + function GetNOTASValue: String; + procedure SetNOTASValue(const aValue: String); + function GetCALLEValue: String; + procedure SetCALLEValue(const aValue: String); + function GetPROVINCIAValue: String; + procedure SetPROVINCIAValue(const aValue: String); + function GetCODIGOPOSTALValue: String; + procedure SetCODIGOPOSTALValue(const aValue: String); + function GetPOBLACIONValue: String; + procedure SetPOBLACIONValue(const aValue: String); + function GetTELEFONO1Value: String; + procedure SetTELEFONO1Value(const aValue: String); + function GetTELEFONO2Value: String; + procedure SetTELEFONO2Value(const aValue: String); + function GetMOVILValue: String; + procedure SetMOVILValue(const aValue: String); + function GetFAXValue: String; + procedure SetFAXValue(const aValue: String); + function GetCORREO1Value: String; + procedure SetCORREO1Value(const aValue: String); + function GetCORREO2Value: String; + procedure SetCORREO2Value(const aValue: String); + function GetPAGINAWEBValue: String; + procedure SetPAGINAWEBValue(const aValue: String); + function GetPERSONACONTACTOValue: String; + procedure SetPERSONACONTACTOValue(const aValue: String); + + + { Properties } + property CODIGOEMPRESA: Integer read GetCODIGOEMPRESAValue write SetCODIGOEMPRESAValue; + property CODIGO: Integer read GetCODIGOValue write SetCODIGOValue; + property FECHAALTA: DateTime read GetFECHAALTAValue write SetFECHAALTAValue; + property USUARIO: String read GetUSUARIOValue write SetUSUARIOValue; + property NIFCIF: String read GetNIFCIFValue write SetNIFCIFValue; + property NOMBRE: String read GetNOMBREValue write SetNOMBREValue; + property NOTAS: String read GetNOTASValue write SetNOTASValue; + property CALLE: String read GetCALLEValue write SetCALLEValue; + property PROVINCIA: String read GetPROVINCIAValue write SetPROVINCIAValue; + property CODIGOPOSTAL: String read GetCODIGOPOSTALValue write SetCODIGOPOSTALValue; + property POBLACION: String read GetPOBLACIONValue write SetPOBLACIONValue; + property TELEFONO1: String read GetTELEFONO1Value write SetTELEFONO1Value; + property TELEFONO2: String read GetTELEFONO2Value write SetTELEFONO2Value; + property MOVIL: String read GetMOVILValue write SetMOVILValue; + property FAX: String read GetFAXValue write SetFAXValue; + property CORREO1: String read GetCORREO1Value write SetCORREO1Value; + property CORREO2: String read GetCORREO2Value write SetCORREO2Value; + property PAGINAWEB: String read GetPAGINAWEBValue write SetPAGINAWEBValue; + property PERSONACONTACTO: String read GetPERSONACONTACTOValue write SetPERSONACONTACTOValue; + end; + + { TContactosDataTableRules } + TContactosDataTableRules = class(TDADataTableRules, IContactos) + private + protected + { Property getters and setters } + function GetCODIGOEMPRESAValue: Integer; virtual; + procedure SetCODIGOEMPRESAValue(const aValue: Integer); virtual; + function GetCODIGOValue: Integer; virtual; + procedure SetCODIGOValue(const aValue: Integer); virtual; + function GetFECHAALTAValue: DateTime; virtual; + procedure SetFECHAALTAValue(const aValue: DateTime); virtual; + function GetUSUARIOValue: String; virtual; + procedure SetUSUARIOValue(const aValue: String); virtual; + function GetNIFCIFValue: String; virtual; + procedure SetNIFCIFValue(const aValue: String); virtual; + function GetNOMBREValue: String; virtual; + procedure SetNOMBREValue(const aValue: String); virtual; + function GetNOTASValue: String; virtual; + procedure SetNOTASValue(const aValue: String); virtual; + function GetCALLEValue: String; virtual; + procedure SetCALLEValue(const aValue: String); virtual; + function GetPROVINCIAValue: String; virtual; + procedure SetPROVINCIAValue(const aValue: String); virtual; + function GetCODIGOPOSTALValue: String; virtual; + procedure SetCODIGOPOSTALValue(const aValue: String); virtual; + function GetPOBLACIONValue: String; virtual; + procedure SetPOBLACIONValue(const aValue: String); virtual; + function GetTELEFONO1Value: String; virtual; + procedure SetTELEFONO1Value(const aValue: String); virtual; + function GetTELEFONO2Value: String; virtual; + procedure SetTELEFONO2Value(const aValue: String); virtual; + function GetMOVILValue: String; virtual; + procedure SetMOVILValue(const aValue: String); virtual; + function GetFAXValue: String; virtual; + procedure SetFAXValue(const aValue: String); virtual; + function GetCORREO1Value: String; virtual; + procedure SetCORREO1Value(const aValue: String); virtual; + function GetCORREO2Value: String; virtual; + procedure SetCORREO2Value(const aValue: String); virtual; + function GetPAGINAWEBValue: String; virtual; + procedure SetPAGINAWEBValue(const aValue: String); virtual; + function GetPERSONACONTACTOValue: String; virtual; + procedure SetPERSONACONTACTOValue(const aValue: String); virtual; + + { Properties } + property CODIGOEMPRESA: Integer read GetCODIGOEMPRESAValue write SetCODIGOEMPRESAValue; + property CODIGO: Integer read GetCODIGOValue write SetCODIGOValue; + property FECHAALTA: DateTime read GetFECHAALTAValue write SetFECHAALTAValue; + property USUARIO: String read GetUSUARIOValue write SetUSUARIOValue; + property NIFCIF: String read GetNIFCIFValue write SetNIFCIFValue; + property NOMBRE: String read GetNOMBREValue write SetNOMBREValue; + property NOTAS: String read GetNOTASValue write SetNOTASValue; + property CALLE: String read GetCALLEValue write SetCALLEValue; + property PROVINCIA: String read GetPROVINCIAValue write SetPROVINCIAValue; + property CODIGOPOSTAL: String read GetCODIGOPOSTALValue write SetCODIGOPOSTALValue; + property POBLACION: String read GetPOBLACIONValue write SetPOBLACIONValue; + property TELEFONO1: String read GetTELEFONO1Value write SetTELEFONO1Value; + property TELEFONO2: String read GetTELEFONO2Value write SetTELEFONO2Value; + property MOVIL: String read GetMOVILValue write SetMOVILValue; + property FAX: String read GetFAXValue write SetFAXValue; + property CORREO1: String read GetCORREO1Value write SetCORREO1Value; + property CORREO2: String read GetCORREO2Value write SetCORREO2Value; + property PAGINAWEB: String read GetPAGINAWEBValue write SetPAGINAWEBValue; + property PERSONACONTACTO: String read GetPERSONACONTACTOValue write SetPERSONACONTACTOValue; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + + { ICategoriasContacto } + ICategoriasContacto = interface(IDAStronglyTypedDataTable) + ['{D0F985CB-C37A-4254-87C4-ADC36BA9029A}'] + { Property getters and setters } + function GetCODIGOCONTACTOValue: Integer; + procedure SetCODIGOCONTACTOValue(const aValue: Integer); + function GetCODIGOCATEGORIAValue: Integer; + procedure SetCODIGOCATEGORIAValue(const aValue: Integer); + + + { Properties } + property CODIGOCONTACTO: Integer read GetCODIGOCONTACTOValue write SetCODIGOCONTACTOValue; + property CODIGOCATEGORIA: Integer read GetCODIGOCATEGORIAValue write SetCODIGOCATEGORIAValue; + end; + + { TCategoriasContactoDataTableRules } + TCategoriasContactoDataTableRules = class(TDADataTableRules, ICategoriasContacto) + private + protected + { Property getters and setters } + function GetCODIGOCONTACTOValue: Integer; virtual; + procedure SetCODIGOCONTACTOValue(const aValue: Integer); virtual; + function GetCODIGOCATEGORIAValue: Integer; virtual; + procedure SetCODIGOCATEGORIAValue(const aValue: Integer); virtual; + + { Properties } + property CODIGOCONTACTO: Integer read GetCODIGOCONTACTOValue write SetCODIGOCONTACTOValue; + property CODIGOCATEGORIA: Integer read GetCODIGOCATEGORIAValue write SetCODIGOCATEGORIAValue; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + + { ICategorias } + ICategorias = interface(IDAStronglyTypedDataTable) + ['{5FA38C8C-1ABE-42FC-AF5C-508D9E6AEF39}'] + { Property getters and setters } + function GetCODIGOValue: Integer; + procedure SetCODIGOValue(const aValue: Integer); + function GetDESCRIPCIONValue: String; + procedure SetDESCRIPCIONValue(const aValue: String); + + + { Properties } + property CODIGO: Integer read GetCODIGOValue write SetCODIGOValue; + property DESCRIPCION: String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + end; + + { TCategoriasDataTableRules } + TCategoriasDataTableRules = class(TDADataTableRules, ICategorias) + private + protected + { Property getters and setters } + function GetCODIGOValue: Integer; virtual; + procedure SetCODIGOValue(const aValue: Integer); virtual; + function GetDESCRIPCIONValue: String; virtual; + procedure SetDESCRIPCIONValue(const aValue: String); virtual; + + { Properties } + property CODIGO: Integer read GetCODIGOValue write SetCODIGOValue; + property DESCRIPCION: String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + +implementation + +uses Variants; + +{ TContactosDataTableRules } +constructor TContactosDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TContactosDataTableRules.Destroy; +begin + inherited; +end; + +function TContactosDataTableRules.GetCODIGOEMPRESAValue: Integer; +begin + result := DataTable.Fields[idx_ContactosCODIGOEMPRESA].AsInteger; +end; + +procedure TContactosDataTableRules.SetCODIGOEMPRESAValue(const aValue: Integer); +begin + DataTable.Fields[idx_ContactosCODIGOEMPRESA].AsInteger := aValue; +end; + +function TContactosDataTableRules.GetCODIGOValue: Integer; +begin + result := DataTable.Fields[idx_ContactosCODIGO].AsInteger; +end; + +procedure TContactosDataTableRules.SetCODIGOValue(const aValue: Integer); +begin + DataTable.Fields[idx_ContactosCODIGO].AsInteger := aValue; +end; + +function TContactosDataTableRules.GetFECHAALTAValue: DateTime; +begin + result := DataTable.Fields[idx_ContactosFECHAALTA].AsDateTime; +end; + +procedure TContactosDataTableRules.SetFECHAALTAValue(const aValue: DateTime); +begin + DataTable.Fields[idx_ContactosFECHAALTA].AsDateTime := aValue; +end; + +function TContactosDataTableRules.GetUSUARIOValue: String; +begin + result := DataTable.Fields[idx_ContactosUSUARIO].AsString; +end; + +procedure TContactosDataTableRules.SetUSUARIOValue(const aValue: String); +begin + DataTable.Fields[idx_ContactosUSUARIO].AsString := aValue; +end; + +function TContactosDataTableRules.GetNIFCIFValue: String; +begin + result := DataTable.Fields[idx_ContactosNIFCIF].AsString; +end; + +procedure TContactosDataTableRules.SetNIFCIFValue(const aValue: String); +begin + DataTable.Fields[idx_ContactosNIFCIF].AsString := aValue; +end; + +function TContactosDataTableRules.GetNOMBREValue: String; +begin + result := DataTable.Fields[idx_ContactosNOMBRE].AsString; +end; + +procedure TContactosDataTableRules.SetNOMBREValue(const aValue: String); +begin + DataTable.Fields[idx_ContactosNOMBRE].AsString := aValue; +end; + +function TContactosDataTableRules.GetNOTASValue: String; +begin + result := DataTable.Fields[idx_ContactosNOTAS].AsString; +end; + +procedure TContactosDataTableRules.SetNOTASValue(const aValue: String); +begin + DataTable.Fields[idx_ContactosNOTAS].AsString := aValue; +end; + +function TContactosDataTableRules.GetCALLEValue: String; +begin + result := DataTable.Fields[idx_ContactosCALLE].AsString; +end; + +procedure TContactosDataTableRules.SetCALLEValue(const aValue: String); +begin + DataTable.Fields[idx_ContactosCALLE].AsString := aValue; +end; + +function TContactosDataTableRules.GetPROVINCIAValue: String; +begin + result := DataTable.Fields[idx_ContactosPROVINCIA].AsString; +end; + +procedure TContactosDataTableRules.SetPROVINCIAValue(const aValue: String); +begin + DataTable.Fields[idx_ContactosPROVINCIA].AsString := aValue; +end; + +function TContactosDataTableRules.GetCODIGOPOSTALValue: String; +begin + result := DataTable.Fields[idx_ContactosCODIGOPOSTAL].AsString; +end; + +procedure TContactosDataTableRules.SetCODIGOPOSTALValue(const aValue: String); +begin + DataTable.Fields[idx_ContactosCODIGOPOSTAL].AsString := aValue; +end; + +function TContactosDataTableRules.GetPOBLACIONValue: String; +begin + result := DataTable.Fields[idx_ContactosPOBLACION].AsString; +end; + +procedure TContactosDataTableRules.SetPOBLACIONValue(const aValue: String); +begin + DataTable.Fields[idx_ContactosPOBLACION].AsString := aValue; +end; + +function TContactosDataTableRules.GetTELEFONO1Value: String; +begin + result := DataTable.Fields[idx_ContactosTELEFONO1].AsString; +end; + +procedure TContactosDataTableRules.SetTELEFONO1Value(const aValue: String); +begin + DataTable.Fields[idx_ContactosTELEFONO1].AsString := aValue; +end; + +function TContactosDataTableRules.GetTELEFONO2Value: String; +begin + result := DataTable.Fields[idx_ContactosTELEFONO2].AsString; +end; + +procedure TContactosDataTableRules.SetTELEFONO2Value(const aValue: String); +begin + DataTable.Fields[idx_ContactosTELEFONO2].AsString := aValue; +end; + +function TContactosDataTableRules.GetMOVILValue: String; +begin + result := DataTable.Fields[idx_ContactosMOVIL].AsString; +end; + +procedure TContactosDataTableRules.SetMOVILValue(const aValue: String); +begin + DataTable.Fields[idx_ContactosMOVIL].AsString := aValue; +end; + +function TContactosDataTableRules.GetFAXValue: String; +begin + result := DataTable.Fields[idx_ContactosFAX].AsString; +end; + +procedure TContactosDataTableRules.SetFAXValue(const aValue: String); +begin + DataTable.Fields[idx_ContactosFAX].AsString := aValue; +end; + +function TContactosDataTableRules.GetCORREO1Value: String; +begin + result := DataTable.Fields[idx_ContactosCORREO1].AsString; +end; + +procedure TContactosDataTableRules.SetCORREO1Value(const aValue: String); +begin + DataTable.Fields[idx_ContactosCORREO1].AsString := aValue; +end; + +function TContactosDataTableRules.GetCORREO2Value: String; +begin + result := DataTable.Fields[idx_ContactosCORREO2].AsString; +end; + +procedure TContactosDataTableRules.SetCORREO2Value(const aValue: String); +begin + DataTable.Fields[idx_ContactosCORREO2].AsString := aValue; +end; + +function TContactosDataTableRules.GetPAGINAWEBValue: String; +begin + result := DataTable.Fields[idx_ContactosPAGINAWEB].AsString; +end; + +procedure TContactosDataTableRules.SetPAGINAWEBValue(const aValue: String); +begin + DataTable.Fields[idx_ContactosPAGINAWEB].AsString := aValue; +end; + +function TContactosDataTableRules.GetPERSONACONTACTOValue: String; +begin + result := DataTable.Fields[idx_ContactosPERSONACONTACTO].AsString; +end; + +procedure TContactosDataTableRules.SetPERSONACONTACTOValue(const aValue: String); +begin + DataTable.Fields[idx_ContactosPERSONACONTACTO].AsString := aValue; +end; + + +{ TCategoriasContactoDataTableRules } +constructor TCategoriasContactoDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TCategoriasContactoDataTableRules.Destroy; +begin + inherited; +end; + +function TCategoriasContactoDataTableRules.GetCODIGOCONTACTOValue: Integer; +begin + result := DataTable.Fields[idx_CategoriasContactoCODIGOCONTACTO].AsInteger; +end; + +procedure TCategoriasContactoDataTableRules.SetCODIGOCONTACTOValue(const aValue: Integer); +begin + DataTable.Fields[idx_CategoriasContactoCODIGOCONTACTO].AsInteger := aValue; +end; + +function TCategoriasContactoDataTableRules.GetCODIGOCATEGORIAValue: Integer; +begin + result := DataTable.Fields[idx_CategoriasContactoCODIGOCATEGORIA].AsInteger; +end; + +procedure TCategoriasContactoDataTableRules.SetCODIGOCATEGORIAValue(const aValue: Integer); +begin + DataTable.Fields[idx_CategoriasContactoCODIGOCATEGORIA].AsInteger := aValue; +end; + + +{ TCategoriasDataTableRules } +constructor TCategoriasDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TCategoriasDataTableRules.Destroy; +begin + inherited; +end; + +function TCategoriasDataTableRules.GetCODIGOValue: Integer; +begin + result := DataTable.Fields[idx_CategoriasCODIGO].AsInteger; +end; + +procedure TCategoriasDataTableRules.SetCODIGOValue(const aValue: Integer); +begin + DataTable.Fields[idx_CategoriasCODIGO].AsInteger := aValue; +end; + +function TCategoriasDataTableRules.GetDESCRIPCIONValue: String; +begin + result := DataTable.Fields[idx_CategoriasDESCRIPCION].AsString; +end; + +procedure TCategoriasDataTableRules.SetDESCRIPCIONValue(const aValue: String); +begin + DataTable.Fields[idx_CategoriasDESCRIPCION].AsString := aValue; +end; + + +initialization + RegisterDataTableRules(RID_Contactos, TContactosDataTableRules); + RegisterDataTableRules(RID_CategoriasContacto, TCategoriasContactoDataTableRules); + RegisterDataTableRules(RID_Categorias, TCategoriasDataTableRules); + +end. diff --git a/Modulos/Contactos/Reglas/schContactosServer_Intf.pas b/Modulos/Contactos/Reglas/schContactosServer_Intf.pas new file mode 100644 index 0000000..1cf7398 --- /dev/null +++ b/Modulos/Contactos/Reglas/schContactosServer_Intf.pas @@ -0,0 +1,635 @@ +unit schContactosServer_Intf; + +interface + +uses + Classes, DB, SysUtils, uROClasses, uDADataTable, uDABusinessProcessor, schContactosClient_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_ContactosDelta = '{05C6FCA7-C4BD-4B10-AA2A-D3E1CBEA3100}'; + RID_CategoriasContactoDelta = '{85963D41-1B87-4A9E-ADB1-DCF05D4373C2}'; + RID_CategoriasDelta = '{08DBB9D1-D1A9-46C4-A113-AA7424C15849}'; + +type + { IContactosDelta } + IContactosDelta = interface(IContactos) + ['{05C6FCA7-C4BD-4B10-AA2A-D3E1CBEA3100}'] + { Property getters and setters } + function GetOldCODIGOEMPRESAValue : Integer; + function GetOldCODIGOValue : Integer; + function GetOldFECHAALTAValue : DateTime; + function GetOldUSUARIOValue : String; + function GetOldNIFCIFValue : String; + function GetOldNOMBREValue : String; + function GetOldNOTASValue : String; + function GetOldCALLEValue : String; + function GetOldPROVINCIAValue : String; + function GetOldCODIGOPOSTALValue : String; + function GetOldPOBLACIONValue : String; + function GetOldTELEFONO1Value : String; + function GetOldTELEFONO2Value : String; + function GetOldMOVILValue : String; + function GetOldFAXValue : String; + function GetOldCORREO1Value : String; + function GetOldCORREO2Value : String; + function GetOldPAGINAWEBValue : String; + function GetOldPERSONACONTACTOValue : String; + + { Properties } + property OldCODIGOEMPRESA : Integer read GetOldCODIGOEMPRESAValue; + property OldCODIGO : Integer read GetOldCODIGOValue; + property OldFECHAALTA : DateTime read GetOldFECHAALTAValue; + property OldUSUARIO : String read GetOldUSUARIOValue; + property OldNIFCIF : String read GetOldNIFCIFValue; + property OldNOMBRE : String read GetOldNOMBREValue; + property OldNOTAS : String read GetOldNOTASValue; + property OldCALLE : String read GetOldCALLEValue; + property OldPROVINCIA : String read GetOldPROVINCIAValue; + property OldCODIGOPOSTAL : String read GetOldCODIGOPOSTALValue; + property OldPOBLACION : String read GetOldPOBLACIONValue; + property OldTELEFONO1 : String read GetOldTELEFONO1Value; + property OldTELEFONO2 : String read GetOldTELEFONO2Value; + property OldMOVIL : String read GetOldMOVILValue; + property OldFAX : String read GetOldFAXValue; + property OldCORREO1 : String read GetOldCORREO1Value; + property OldCORREO2 : String read GetOldCORREO2Value; + property OldPAGINAWEB : String read GetOldPAGINAWEBValue; + property OldPERSONACONTACTO : String read GetOldPERSONACONTACTOValue; + end; + + { TContactosBusinessProcessorRules } + TContactosBusinessProcessorRules = class(TDABusinessProcessorRules, IContactos, IContactosDelta) + private + protected + { Property getters and setters } + function GetCODIGOEMPRESAValue: Integer; virtual; + function GetOldCODIGOEMPRESAValue: Integer; virtual; + procedure SetCODIGOEMPRESAValue(const aValue: Integer); virtual; + function GetCODIGOValue: Integer; virtual; + function GetOldCODIGOValue: Integer; virtual; + procedure SetCODIGOValue(const aValue: Integer); virtual; + function GetFECHAALTAValue: DateTime; virtual; + function GetOldFECHAALTAValue: DateTime; virtual; + procedure SetFECHAALTAValue(const aValue: DateTime); virtual; + function GetUSUARIOValue: String; virtual; + function GetOldUSUARIOValue: String; virtual; + procedure SetUSUARIOValue(const aValue: String); virtual; + function GetNIFCIFValue: String; virtual; + function GetOldNIFCIFValue: String; virtual; + procedure SetNIFCIFValue(const aValue: String); virtual; + function GetNOMBREValue: String; virtual; + function GetOldNOMBREValue: String; virtual; + procedure SetNOMBREValue(const aValue: String); virtual; + function GetNOTASValue: String; virtual; + function GetOldNOTASValue: String; virtual; + procedure SetNOTASValue(const aValue: String); virtual; + function GetCALLEValue: String; virtual; + function GetOldCALLEValue: String; virtual; + procedure SetCALLEValue(const aValue: String); virtual; + function GetPROVINCIAValue: String; virtual; + function GetOldPROVINCIAValue: String; virtual; + procedure SetPROVINCIAValue(const aValue: String); virtual; + function GetCODIGOPOSTALValue: String; virtual; + function GetOldCODIGOPOSTALValue: String; virtual; + procedure SetCODIGOPOSTALValue(const aValue: String); virtual; + function GetPOBLACIONValue: String; virtual; + function GetOldPOBLACIONValue: String; virtual; + procedure SetPOBLACIONValue(const aValue: String); virtual; + function GetTELEFONO1Value: String; virtual; + function GetOldTELEFONO1Value: String; virtual; + procedure SetTELEFONO1Value(const aValue: String); virtual; + function GetTELEFONO2Value: String; virtual; + function GetOldTELEFONO2Value: String; virtual; + procedure SetTELEFONO2Value(const aValue: String); virtual; + function GetMOVILValue: String; virtual; + function GetOldMOVILValue: String; virtual; + procedure SetMOVILValue(const aValue: String); virtual; + function GetFAXValue: String; virtual; + function GetOldFAXValue: String; virtual; + procedure SetFAXValue(const aValue: String); virtual; + function GetCORREO1Value: String; virtual; + function GetOldCORREO1Value: String; virtual; + procedure SetCORREO1Value(const aValue: String); virtual; + function GetCORREO2Value: String; virtual; + function GetOldCORREO2Value: String; virtual; + procedure SetCORREO2Value(const aValue: String); virtual; + function GetPAGINAWEBValue: String; virtual; + function GetOldPAGINAWEBValue: String; virtual; + procedure SetPAGINAWEBValue(const aValue: String); virtual; + function GetPERSONACONTACTOValue: String; virtual; + function GetOldPERSONACONTACTOValue: String; virtual; + procedure SetPERSONACONTACTOValue(const aValue: String); virtual; + + { Properties } + property CODIGOEMPRESA : Integer read GetCODIGOEMPRESAValue write SetCODIGOEMPRESAValue; + property OldCODIGOEMPRESA : Integer read GetOldCODIGOEMPRESAValue; + property CODIGO : Integer read GetCODIGOValue write SetCODIGOValue; + property OldCODIGO : Integer read GetOldCODIGOValue; + property FECHAALTA : DateTime read GetFECHAALTAValue write SetFECHAALTAValue; + property OldFECHAALTA : DateTime read GetOldFECHAALTAValue; + property USUARIO : String read GetUSUARIOValue write SetUSUARIOValue; + property OldUSUARIO : String read GetOldUSUARIOValue; + property NIFCIF : String read GetNIFCIFValue write SetNIFCIFValue; + property OldNIFCIF : String read GetOldNIFCIFValue; + property NOMBRE : String read GetNOMBREValue write SetNOMBREValue; + property OldNOMBRE : String read GetOldNOMBREValue; + property NOTAS : String read GetNOTASValue write SetNOTASValue; + property OldNOTAS : String read GetOldNOTASValue; + property CALLE : String read GetCALLEValue write SetCALLEValue; + property OldCALLE : String read GetOldCALLEValue; + property PROVINCIA : String read GetPROVINCIAValue write SetPROVINCIAValue; + property OldPROVINCIA : String read GetOldPROVINCIAValue; + property CODIGOPOSTAL : String read GetCODIGOPOSTALValue write SetCODIGOPOSTALValue; + property OldCODIGOPOSTAL : String read GetOldCODIGOPOSTALValue; + property POBLACION : String read GetPOBLACIONValue write SetPOBLACIONValue; + property OldPOBLACION : String read GetOldPOBLACIONValue; + property TELEFONO1 : String read GetTELEFONO1Value write SetTELEFONO1Value; + property OldTELEFONO1 : String read GetOldTELEFONO1Value; + property TELEFONO2 : String read GetTELEFONO2Value write SetTELEFONO2Value; + property OldTELEFONO2 : String read GetOldTELEFONO2Value; + property MOVIL : String read GetMOVILValue write SetMOVILValue; + property OldMOVIL : String read GetOldMOVILValue; + property FAX : String read GetFAXValue write SetFAXValue; + property OldFAX : String read GetOldFAXValue; + property CORREO1 : String read GetCORREO1Value write SetCORREO1Value; + property OldCORREO1 : String read GetOldCORREO1Value; + property CORREO2 : String read GetCORREO2Value write SetCORREO2Value; + property OldCORREO2 : String read GetOldCORREO2Value; + property PAGINAWEB : String read GetPAGINAWEBValue write SetPAGINAWEBValue; + property OldPAGINAWEB : String read GetOldPAGINAWEBValue; + property PERSONACONTACTO : String read GetPERSONACONTACTOValue write SetPERSONACONTACTOValue; + property OldPERSONACONTACTO : String read GetOldPERSONACONTACTOValue; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + + { ICategoriasContactoDelta } + ICategoriasContactoDelta = interface(ICategoriasContacto) + ['{85963D41-1B87-4A9E-ADB1-DCF05D4373C2}'] + { Property getters and setters } + function GetOldCODIGOCONTACTOValue : Integer; + function GetOldCODIGOCATEGORIAValue : Integer; + + { Properties } + property OldCODIGOCONTACTO : Integer read GetOldCODIGOCONTACTOValue; + property OldCODIGOCATEGORIA : Integer read GetOldCODIGOCATEGORIAValue; + end; + + { TCategoriasContactoBusinessProcessorRules } + TCategoriasContactoBusinessProcessorRules = class(TDABusinessProcessorRules, ICategoriasContacto, ICategoriasContactoDelta) + private + protected + { Property getters and setters } + function GetCODIGOCONTACTOValue: Integer; virtual; + function GetOldCODIGOCONTACTOValue: Integer; virtual; + procedure SetCODIGOCONTACTOValue(const aValue: Integer); virtual; + function GetCODIGOCATEGORIAValue: Integer; virtual; + function GetOldCODIGOCATEGORIAValue: Integer; virtual; + procedure SetCODIGOCATEGORIAValue(const aValue: Integer); virtual; + + { Properties } + property CODIGOCONTACTO : Integer read GetCODIGOCONTACTOValue write SetCODIGOCONTACTOValue; + property OldCODIGOCONTACTO : Integer read GetOldCODIGOCONTACTOValue; + property CODIGOCATEGORIA : Integer read GetCODIGOCATEGORIAValue write SetCODIGOCATEGORIAValue; + property OldCODIGOCATEGORIA : Integer read GetOldCODIGOCATEGORIAValue; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + + { ICategoriasDelta } + ICategoriasDelta = interface(ICategorias) + ['{08DBB9D1-D1A9-46C4-A113-AA7424C15849}'] + { Property getters and setters } + function GetOldCODIGOValue : Integer; + function GetOldDESCRIPCIONValue : String; + + { Properties } + property OldCODIGO : Integer read GetOldCODIGOValue; + property OldDESCRIPCION : String read GetOldDESCRIPCIONValue; + end; + + { TCategoriasBusinessProcessorRules } + TCategoriasBusinessProcessorRules = class(TDABusinessProcessorRules, ICategorias, ICategoriasDelta) + private + protected + { Property getters and setters } + function GetCODIGOValue: Integer; virtual; + function GetOldCODIGOValue: Integer; virtual; + procedure SetCODIGOValue(const aValue: Integer); virtual; + function GetDESCRIPCIONValue: String; virtual; + function GetOldDESCRIPCIONValue: String; virtual; + procedure SetDESCRIPCIONValue(const aValue: String); virtual; + + { Properties } + property CODIGO : Integer read GetCODIGOValue write SetCODIGOValue; + property OldCODIGO : Integer read GetOldCODIGOValue; + property DESCRIPCION : String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + property OldDESCRIPCION : String read GetOldDESCRIPCIONValue; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + +implementation + +uses + Variants, uROBinaryHelpers; + +{ TContactosBusinessProcessorRules } +constructor TContactosBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TContactosBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TContactosBusinessProcessorRules.GetCODIGOEMPRESAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosCODIGOEMPRESA]; +end; + +function TContactosBusinessProcessorRules.GetOldCODIGOEMPRESAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ContactosCODIGOEMPRESA]; +end; + +procedure TContactosBusinessProcessorRules.SetCODIGOEMPRESAValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosCODIGOEMPRESA] := aValue; +end; + +function TContactosBusinessProcessorRules.GetCODIGOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosCODIGO]; +end; + +function TContactosBusinessProcessorRules.GetOldCODIGOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ContactosCODIGO]; +end; + +procedure TContactosBusinessProcessorRules.SetCODIGOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosCODIGO] := aValue; +end; + +function TContactosBusinessProcessorRules.GetFECHAALTAValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosFECHAALTA]; +end; + +function TContactosBusinessProcessorRules.GetOldFECHAALTAValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ContactosFECHAALTA]; +end; + +procedure TContactosBusinessProcessorRules.SetFECHAALTAValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosFECHAALTA] := aValue; +end; + +function TContactosBusinessProcessorRules.GetUSUARIOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosUSUARIO]; +end; + +function TContactosBusinessProcessorRules.GetOldUSUARIOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ContactosUSUARIO]; +end; + +procedure TContactosBusinessProcessorRules.SetUSUARIOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosUSUARIO] := aValue; +end; + +function TContactosBusinessProcessorRules.GetNIFCIFValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosNIFCIF]; +end; + +function TContactosBusinessProcessorRules.GetOldNIFCIFValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ContactosNIFCIF]; +end; + +procedure TContactosBusinessProcessorRules.SetNIFCIFValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosNIFCIF] := aValue; +end; + +function TContactosBusinessProcessorRules.GetNOMBREValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosNOMBRE]; +end; + +function TContactosBusinessProcessorRules.GetOldNOMBREValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ContactosNOMBRE]; +end; + +procedure TContactosBusinessProcessorRules.SetNOMBREValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosNOMBRE] := aValue; +end; + +function TContactosBusinessProcessorRules.GetNOTASValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosNOTAS]; +end; + +function TContactosBusinessProcessorRules.GetOldNOTASValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ContactosNOTAS]; +end; + +procedure TContactosBusinessProcessorRules.SetNOTASValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosNOTAS] := aValue; +end; + +function TContactosBusinessProcessorRules.GetCALLEValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosCALLE]; +end; + +function TContactosBusinessProcessorRules.GetOldCALLEValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ContactosCALLE]; +end; + +procedure TContactosBusinessProcessorRules.SetCALLEValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosCALLE] := aValue; +end; + +function TContactosBusinessProcessorRules.GetPROVINCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosPROVINCIA]; +end; + +function TContactosBusinessProcessorRules.GetOldPROVINCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ContactosPROVINCIA]; +end; + +procedure TContactosBusinessProcessorRules.SetPROVINCIAValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosPROVINCIA] := aValue; +end; + +function TContactosBusinessProcessorRules.GetCODIGOPOSTALValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosCODIGOPOSTAL]; +end; + +function TContactosBusinessProcessorRules.GetOldCODIGOPOSTALValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ContactosCODIGOPOSTAL]; +end; + +procedure TContactosBusinessProcessorRules.SetCODIGOPOSTALValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosCODIGOPOSTAL] := aValue; +end; + +function TContactosBusinessProcessorRules.GetPOBLACIONValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosPOBLACION]; +end; + +function TContactosBusinessProcessorRules.GetOldPOBLACIONValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ContactosPOBLACION]; +end; + +procedure TContactosBusinessProcessorRules.SetPOBLACIONValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosPOBLACION] := aValue; +end; + +function TContactosBusinessProcessorRules.GetTELEFONO1Value: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosTELEFONO1]; +end; + +function TContactosBusinessProcessorRules.GetOldTELEFONO1Value: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ContactosTELEFONO1]; +end; + +procedure TContactosBusinessProcessorRules.SetTELEFONO1Value(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosTELEFONO1] := aValue; +end; + +function TContactosBusinessProcessorRules.GetTELEFONO2Value: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosTELEFONO2]; +end; + +function TContactosBusinessProcessorRules.GetOldTELEFONO2Value: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ContactosTELEFONO2]; +end; + +procedure TContactosBusinessProcessorRules.SetTELEFONO2Value(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosTELEFONO2] := aValue; +end; + +function TContactosBusinessProcessorRules.GetMOVILValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosMOVIL]; +end; + +function TContactosBusinessProcessorRules.GetOldMOVILValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ContactosMOVIL]; +end; + +procedure TContactosBusinessProcessorRules.SetMOVILValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosMOVIL] := aValue; +end; + +function TContactosBusinessProcessorRules.GetFAXValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosFAX]; +end; + +function TContactosBusinessProcessorRules.GetOldFAXValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ContactosFAX]; +end; + +procedure TContactosBusinessProcessorRules.SetFAXValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosFAX] := aValue; +end; + +function TContactosBusinessProcessorRules.GetCORREO1Value: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosCORREO1]; +end; + +function TContactosBusinessProcessorRules.GetOldCORREO1Value: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ContactosCORREO1]; +end; + +procedure TContactosBusinessProcessorRules.SetCORREO1Value(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosCORREO1] := aValue; +end; + +function TContactosBusinessProcessorRules.GetCORREO2Value: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosCORREO2]; +end; + +function TContactosBusinessProcessorRules.GetOldCORREO2Value: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ContactosCORREO2]; +end; + +procedure TContactosBusinessProcessorRules.SetCORREO2Value(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosCORREO2] := aValue; +end; + +function TContactosBusinessProcessorRules.GetPAGINAWEBValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosPAGINAWEB]; +end; + +function TContactosBusinessProcessorRules.GetOldPAGINAWEBValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ContactosPAGINAWEB]; +end; + +procedure TContactosBusinessProcessorRules.SetPAGINAWEBValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosPAGINAWEB] := aValue; +end; + +function TContactosBusinessProcessorRules.GetPERSONACONTACTOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosPERSONACONTACTO]; +end; + +function TContactosBusinessProcessorRules.GetOldPERSONACONTACTOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ContactosPERSONACONTACTO]; +end; + +procedure TContactosBusinessProcessorRules.SetPERSONACONTACTOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosPERSONACONTACTO] := aValue; +end; + + +{ TCategoriasContactoBusinessProcessorRules } +constructor TCategoriasContactoBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TCategoriasContactoBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TCategoriasContactoBusinessProcessorRules.GetCODIGOCONTACTOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_CategoriasContactoCODIGOCONTACTO]; +end; + +function TCategoriasContactoBusinessProcessorRules.GetOldCODIGOCONTACTOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_CategoriasContactoCODIGOCONTACTO]; +end; + +procedure TCategoriasContactoBusinessProcessorRules.SetCODIGOCONTACTOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_CategoriasContactoCODIGOCONTACTO] := aValue; +end; + +function TCategoriasContactoBusinessProcessorRules.GetCODIGOCATEGORIAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_CategoriasContactoCODIGOCATEGORIA]; +end; + +function TCategoriasContactoBusinessProcessorRules.GetOldCODIGOCATEGORIAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_CategoriasContactoCODIGOCATEGORIA]; +end; + +procedure TCategoriasContactoBusinessProcessorRules.SetCODIGOCATEGORIAValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_CategoriasContactoCODIGOCATEGORIA] := aValue; +end; + + +{ TCategoriasBusinessProcessorRules } +constructor TCategoriasBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TCategoriasBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TCategoriasBusinessProcessorRules.GetCODIGOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_CategoriasCODIGO]; +end; + +function TCategoriasBusinessProcessorRules.GetOldCODIGOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_CategoriasCODIGO]; +end; + +procedure TCategoriasBusinessProcessorRules.SetCODIGOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_CategoriasCODIGO] := aValue; +end; + +function TCategoriasBusinessProcessorRules.GetDESCRIPCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_CategoriasDESCRIPCION]; +end; + +function TCategoriasBusinessProcessorRules.GetOldDESCRIPCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_CategoriasDESCRIPCION]; +end; + +procedure TCategoriasBusinessProcessorRules.SetDESCRIPCIONValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_CategoriasDESCRIPCION] := aValue; +end; + + +initialization + RegisterBusinessProcessorRules(RID_ContactosDelta, TContactosBusinessProcessorRules); + RegisterBusinessProcessorRules(RID_CategoriasContactoDelta, TCategoriasContactoBusinessProcessorRules); + RegisterBusinessProcessorRules(RID_CategoriasDelta, TCategoriasBusinessProcessorRules); + +end. diff --git a/Modulos/Contactos/Reglas/uBizComisiones.pas b/Modulos/Contactos/Reglas/uBizComisiones.pas new file mode 100644 index 0000000..d38f025 --- /dev/null +++ b/Modulos/Contactos/Reglas/uBizComisiones.pas @@ -0,0 +1,206 @@ +unit uBizComisiones; + +interface + +uses + uDAInterfaces, uDADataTable, schComisionesClient_Intf, Classes, + DBGrids, uDBSelectionList, DB, uExceptions, Controls; + +const + + BIZ_SELECCION = 'Client.Field.Seleccion'; + BIZ_COBROSCOMISION = 'BizCobrosComision'; + BIZ_VENDEDORESCOMISION = 'BizVendedoresComision'; + +type + + IBizSeleccion = interface(IDAStronglyTypedDataTable) + ['{E4CB36C8-4A41-4DDB-92DB-211517EB60DB}'] + end; + + IBizVendedoresComision = interface(IVendedoresComision) + ['{4095FB35-E5FE-4C04-929A-480C29FC9436}'] + procedure calcularComisiones(Total: Double); + end; + + IBizCobrosComision = interface(ICobrosComision) + ['{1CC63E18-6230-4421-96E8-26C011993F5C}'] + + function getVendedoresComision: IBizVendedoresComision; + procedure setVendedoresComision(const Value: IBizVendedoresComision); + property VendedoresComision: IBizVendedoresComision read getVendedoresComision + write setVendedoresComision; + + function getTotal: Double; + procedure setTotal(const Value: Double); + property Total: Double read getTotal write setTotal; + + function GetOnTotalChanged : TNotifyEvent; + procedure SetOnTotalChanged (const Value : TNotifyEvent); + property OnTotalChanged : TNotifyEvent read GetOnTotalChanged + write SetOnTotalChanged; + end; + + + TBizSeleccionFieldRules = class(TDAFieldRules) + protected + procedure OnChange(Sender: TDACustomField); override; + end; + + TBizCobrosComisionDataTableRules = class(TCobrosComisionDataTableRules, IBizCobrosComision) + private + FVendedoresComision: IBizVendedoresComision; + FTotal: Double; + FOnTotalChanged : TNotifyEvent; + function getTotal: Double; + procedure setTotal(const Value: Double); + function GetOnTotalChanged: TNotifyEvent; + procedure SetOnTotalChanged(const Value: TNotifyEvent); + function getVendedoresComision: IBizVendedoresComision; + procedure setVendedoresComision(const Value: IBizVendedoresComision); + protected + procedure AfterOpen(Sender: TDADataTable); override; + public + property VendedoresComision: IBizVendedoresComision read getVendedoresComision + write setVendedoresComision; + property Total: Double read getTotal write setTotal; + property OnTotalChanged : TNotifyEvent read GetOnTotalChanged + write SetOnTotalChanged; + + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + end; + + TBizVendedoresComisionDataTableRules = class(TVendedoresComisionDataTableRules, IBizVendedoresComision) + public + procedure calcularComisiones(Total: Double); + end; + +implementation + +uses + Windows, Dialogs, uDACDSDataTable, SysUtils, uDataModuleBase, + uEditorUtils, uDataModuleComisiones, Variants; + + +{ TBizCobrosComisionDataTableRules } + +{ +************************** TBizCobrosComisionDataTableRules ************************** +} + +procedure TBizCobrosComisionDataTableRules.AfterOpen(Sender: TDADataTable); +var + ldTotal : Double; +begin + inherited; + + with (Sender as IBizCobrosComision) do + begin + DataTable.DisableControls; + ldTotal := 0; + First; + while not DataTable.Eof do + begin + ldTotal := ldTotal + IMPORTE; + Next; + end; + First; + Total := ldTotal; + DataTable.EnableControls; + end; +end; + +constructor TBizCobrosComisionDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; + FVendedoresComision := Nil; + aDataTable.AfterOpen := AfterOpen; +end; + +destructor TBizCobrosComisionDataTableRules.Destroy; +begin + FVendedoresComision := Nil; + inherited; +end; + +function TBizCobrosComisionDataTableRules.GetOnTotalChanged: TNotifyEvent; +begin + Result := FOnTotalChanged; +end; + +function TBizCobrosComisionDataTableRules.getTotal: Double; +begin + Result := FTotal; +end; + +function TBizCobrosComisionDataTableRules.getVendedoresComision: IBizVendedoresComision; +begin + Result := FVendedoresComision; +end; + +procedure TBizCobrosComisionDataTableRules.SetOnTotalChanged(const Value: TNotifyEvent); +begin + FOnTotalChanged := Value; +end; + +procedure TBizCobrosComisionDataTableRules.setTotal(const Value: Double); +begin + FTotal := Value; + + if Assigned(FOnTotalChanged) then + FOnTotalChanged(Self); + + FVendedoresComision.CalcularComisiones(FTotal); +end; + +{ TBizSeleccionFieldRules } + +procedure TBizSeleccionFieldRules.OnChange(Sender: TDACustomField); +var + ACobrosComision : IBizCobrosComision; +begin + if Supports(DataTable, IBizCobrosComision, ACobrosComision) then + begin + if ACobrosComision.SELECCION = 1 + then ACobrosComision.Total := ACobrosComision.Total + ACobrosComision.IMPORTE + else ACobrosComision.Total := ACobrosComision.Total - ACobrosComision.IMPORTE; + end; +end; + +procedure TBizCobrosComisionDataTableRules.setVendedoresComision(const Value: IBizVendedoresComision); +begin + if Assigned(FVendedoresComision) then + FVendedoresComision := Nil; + + FVendedoresComision := Value; +end; + +{ TBizVendedoresComisionDataTableRules } + +procedure TBizVendedoresComisionDataTableRules.calcularComisiones(Total: Double); +begin + with (Self as IBizVendedoresComision) do + begin + DataTable.DisableControls; + First; + while not DataTable.Eof do + begin + Edit; + COMISION := (Total * PORCENTAJE) / 100; + Post; + Next; + end; + First; + DataTable.EnableControls; + end; +end; + +initialization + RegisterFieldRules(BIZ_SELECCION, TBizSeleccionFieldRules); + RegisterDataTableRules(BIZ_CobrosCOMISION, TBizCobrosComisionDataTableRules); + RegisterDataTableRules(BIZ_VENDEDORESCOMISION, TBizVendedoresComisionDataTableRules); + +finalization + +end. diff --git a/Modulos/Contactos/Reglas/uBizContacto.pas b/Modulos/Contactos/Reglas/uBizContacto.pas new file mode 100644 index 0000000..b97b91e --- /dev/null +++ b/Modulos/Contactos/Reglas/uBizContacto.pas @@ -0,0 +1,497 @@ +unit uBizContacto; + +interface + +uses + uDAInterfaces, uDADataTable, schContactosClient_Intf, Classes, + DBGrids, uDBSelectionList, DB, uExceptions, Controls; + +const + CLIENTE = 1; + PROVEEDOR = 2; + INSTALADOR = 3; + VENDEDOR = 4; + + BIZ_CLIENTE = 'Client.Cliente'; + BIZ_PROVEEDOR = 'Client.Proveedor'; + BIZ_VENDEDOR = 'Client.Vendedor'; + BIZ_INSTALADOR = 'Client.Instalador'; + BIZ_CATEGORIACONTACTO = 'Client.CategoriaContacto'; + + { Contactos fields } + fld_ContactosCOMISION = 'COMISION'; + +type + IBizCategoriasContacto = interface(ICategoriasContacto) + ['{2E0F9809-1E14-4382-A313-44CD363B3450}'] + end; + + IBizContacto = interface(ICONTACTOS) + ['{800A68B8-8C95-4CEB-B12A-C3D039ACDC14}'] + function GetCategorias: IBizCategoriasContacto; + procedure SetCategorias(const Value: IBizCategoriasContacto); + property Categorias: IBizCategoriasContacto read GetCategorias write + SetCategorias; + + procedure Show; + procedure ShowAll; + procedure Preview; + function ShowForSelect : TModalResult; + procedure CopyFrom(AContacto : IBizContacto); + end; + + IBizProveedor = interface(IBizContacto) + ['{63B81D43-97D5-412F-99BF-891B5AC9920F}'] + end; + + IBizCliente = interface(IBizContacto) + ['{72BBFEB3-0315-4A8A-A9EA-BBC4CF20820E}'] + end; + + IBizInstalador = interface(IBizContacto) + ['{D70D7308-6A47-4D93-BAC4-FDC0CBD4CDB7}'] + end; + + IBizVendedor = interface(IBizContacto) + ['{A2B5FBCC-11C4-4723-A711-1EB413D2D1A4}'] + function GetCOMISIONValue: Float; + procedure SetCOMISIONValue(const aValue: Float); + property COMISION: Float read GetCOMISIONValue write SetCOMISIONValue; + procedure CalcularComisiones; + end; + + TBizCategoriasContacto = class(TCategoriasContactoDataTableRules, + IBizCategoriasContacto) + end; + + TBizContactoDataTableRules = class(TCONTACTOSDataTableRules, IBizContacto, + IApplyUpdateFailedException, ISelectedRowList) + private + FCategorias: IBizCategoriasContacto; + FCategoriasLink: TDADataSource; + FSelectedRows : TSelectedRowList; + procedure ShowToSelect; + function OnApplyUpdateFailed: Boolean; + protected + function GetCategorias: IBizCategoriasContacto; + procedure OnNewRecord(Sender: TDADataTable); override; + procedure SetCategorias(const Value: IBizCategoriasContacto); + function GetSelectedRows : TSelectedRowList; virtual; + procedure ShowApplyUpdateFailed (const Error: EDAApplyUpdateFailed); virtual; + procedure BeforeDelete(Sender: TDADataTable); override; + procedure BeforeApplyUpdates(Sender : TDADataTable; const Delta : IDADelta); + procedure OnPostError(DataTable: TDADataTable; Error: EDatabaseError; + var Action: TDataAction); override; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + procedure Show; virtual; + procedure ShowAll; virtual; + function ShowForSelect : TModalResult; virtual; + procedure CopyFrom(AContacto : IBizContacto); + procedure Preview; virtual; + property Categorias: IBizCategoriasContacto read GetCategorias write + SetCategorias; + + property SelectedRows : TSelectedRowList read GetSelectedRows; + end; + + TBizProveedor = class(TBizContactoDataTableRules, IBizProveedor) + protected + procedure AfterPost(Sender: TDADataTable); override; + public + procedure Show; override; + procedure ShowAll; override; + function ShowForSelect : TModalResult; override; + end; + + TBizCliente = class(TBizContactoDataTableRules, IBizCliente) + protected + procedure AfterPost(Sender: TDADataTable); override; + public + procedure ShowAll; override; + procedure Show; override; + function ShowForSelect : TModalResult; override; + end; + + TBizInstalador = class(TBizContactoDataTableRules, IBizInstalador) + protected + procedure AfterPost(Sender: TDADataTable); override; + public + procedure ShowAll; override; + procedure Show; override; + function ShowForSelect : TModalResult; override; + end; + + TBizVendedor = class(TBizContactoDataTableRules, IBizVendedor) + protected + procedure AfterApplyUpdates(Sender : TDADataTable); + procedure AfterPost(Sender: TDADataTable); override; + function GetCOMISIONValue: Float; + procedure SetCOMISIONValue(const aValue: Float); + procedure OnCalcFields(Sender: TDADataTable); override; + public + procedure ShowAll; override; + procedure Show; override; + function ShowForSelect : TModalResult; override; + procedure CalcularComisiones; + property COMISION: Float read GetCOMISIONValue write SetCOMISIONValue; + constructor Create(aDataTable: TDADataTable); override; + end; + + procedure ValidarContacto (const AContacto : IBizContacto); + +implementation + +uses + Windows, Dialogs, uDACDSDataTable, SysUtils, uEditorUtils, + uDataModuleContactos, uDataModuleBase, uDataModuleUsuarios, Variants, + uDataModuleComisiones; + + +procedure ValidarContacto (const AContacto : IBizContacto); +begin + if Length(AContacto.NOMBRE) = 0 then + raise Exception.Create('Debe indicar al menos el nombre'); +end; + + +{ +************************** TBizContactoDataTableRules ************************** +} +constructor TBizContactoDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; + FCategoriasLink := TDADataSource.Create(NIL); + FSelectedRows := TSelectedRowList.Create(aDataTable); + aDataTable.OnBeforeApplyUpdates := BeforeApplyUpdates; +end; + +destructor TBizContactoDataTableRules.Destroy; +begin + FCategorias := NIL; + FCategoriasLink.Free; + FSelectedRows.Free; + inherited; +end; + +function TBizContactoDataTableRules.GetCategorias: IBizCategoriasContacto; +begin + Result := FCategorias; +end; + +procedure TBizContactoDataTableRules.OnNewRecord(Sender: TDADataTable); +begin + inherited; + CODIGOEMPRESA := dmBase.CodigoEmpresa; + USUARIO := dmUsuarios.LoginInfo.UserID; + FECHAALTA := Date; + CODIGO := dmContactos.GetNextAutoinc; +end; + +procedure TBizContactoDataTableRules.SetCategorias(const Value: + IBizCategoriasContacto); +begin + FCategorias := Value; + FCategoriasLink.DataTable := Self.DataTable; + FCategorias.DataTable.MasterSource := FCategoriasLink; +end; + +procedure TBizContactoDataTableRules.Show; +begin + // +end; + +{ TBizCliente } + +{ +********************************* TBizCliente ********************************** +} +procedure TBizCliente.AfterPost(Sender: TDADataTable); +begin + inherited; + if (Categorias.RecordCount = 0) then + begin + with Categorias do + begin + Insert; + CODIGOCATEGORIA := CLIENTE; + Post; + end; + end; +end; + +procedure TBizCliente.Show; +begin + inherited; + ShowEditor(IBizCliente, Self, etItem); +end; + +{ TBizCategoriasContactoDataTableRules } + + +{ TBizProveedor } + +{ +******************************** TBizProveedor ********************************* +} +procedure TBizProveedor.AfterPost(Sender: TDADataTable); +begin + inherited; + if (Categorias.RecordCount = 0) then + begin + with Categorias do + begin + Insert; + CODIGOCATEGORIA := PROVEEDOR; + Post; + end; + end; +end; + +procedure TBizProveedor.Show; +begin + inherited; + ShowEditor(IBizProveedor, Self, etItem); +end; + +procedure TBizContactoDataTableRules.Preview; +begin + dmContactos.Preview; +end; + +procedure TBizContactoDataTableRules.ShowAll; +begin + // +end; + +procedure TBizCliente.ShowAll; +begin + inherited; + ShowEditor(IBizCliente, Self, etItems); +end; + +procedure TBizProveedor.ShowAll; +begin + inherited; + ShowEditor(IBizProveedor, Self, etItems); +end; + +function TBizContactoDataTableRules.GetSelectedRows: TSelectedRowList; +begin + Result := FSelectedRows; +end; + +procedure TBizContactoDataTableRules.ShowToSelect; +begin + // +end; + +function TBizCliente.ShowForSelect : TModalResult; +begin + Result := ShowEditor(IBizCliente, Self, etSelectItems); +end; + +function TBizContactoDataTableRules.ShowForSelect : TModalResult; +begin + // +end; + +function TBizProveedor.ShowForSelect : TModalResult; +begin + Result := ShowEditor(IBizProveedor, Self, etSelectItems); +end; + +{ TBizInstalador } + +procedure TBizInstalador.AfterPost(Sender: TDADataTable); +begin + inherited; + if (Categorias.RecordCount = 0) then + begin + with Categorias do + begin + Insert; + CODIGOCATEGORIA := INSTALADOR; + Post; + end; + end; +end; + +procedure TBizInstalador.Show; +begin + inherited; + ShowEditor(IBizInstalador, Self, etItem); +end; + +procedure TBizInstalador.ShowAll; +begin + inherited; + ShowEditor(IBizInstalador, Self, etItems); +end; + +function TBizInstalador.ShowForSelect : TModalResult; +begin + Result := ShowEditor(IBizInstalador, Self, etSelectItems); +end; + +function TBizContactoDataTableRules.OnApplyUpdateFailed: Boolean; +begin + // +end; + +procedure TBizContactoDataTableRules.ShowApplyUpdateFailed( + const Error: EDAApplyUpdateFailed); +begin + if (Pos(AUF_FKVIOLATION, Error.Message) > 0) then + MessageBox(0, 'No se puede borrar este contacto porque tiene documentos dados de alta (como presupuestos, facturas, etc)', 'Atención', MB_ICONWARNING or MB_OK); +end; + +procedure TBizContactoDataTableRules.BeforeDelete(Sender: TDADataTable); +begin + inherited; + if not dmContactos.PuedoEliminarContacto(CODIGO) then + raise Exception.Create('No se puede borrar este contacto porque tiene documentos dados de alta (como presupuestos, facturas, etc'); +end; + +{ TBizVendedor } + +procedure TBizVendedor.AfterApplyUpdates(Sender: TDADataTable); +begin + dmComisiones.SetComision(CODIGO, COMISION); +end; + +procedure TBizVendedor.AfterPost(Sender: TDADataTable); +begin + inherited; + if (Categorias.RecordCount = 0) then + begin + with Categorias do + begin + Insert; + CODIGOCATEGORIA := VENDEDOR; + Post; + end; + end; +end; + +procedure TBizVendedor.CalcularComisiones; +begin + dmComisiones.CalcularComisiones; +end; + +constructor TBizVendedor.Create(aDataTable: TDADataTable); +begin + inherited; + aDataTable.OnAfterApplyUpdates := AfterApplyUpdates; +end; + +function TBizVendedor.GetCOMISIONValue: Float; +begin + Result := DataTable.FieldByName(fld_ContactosCOMISION).AsFloat; +end; + +procedure TBizVendedor.OnCalcFields(Sender: TDADataTable); +begin + inherited; + if VarIsNull(DataTable.FieldByName(fld_ContactosCOMISION).AsVariant) and + not VarIsNull(DataTable.FieldByName(fld_ContactosCODIGO).AsVariant) then + COMISION := dmComisiones.GetComision(CODIGO); +end; + +procedure TBizVendedor.SetCOMISIONValue(const aValue: Float); +begin + DataTable.FieldByName(fld_ContactosCOMISION).AsFloat := aValue; +end; + +procedure TBizVendedor.Show; +begin + inherited; + ShowEditor(IBizVendedor, Self, etItem); +end; + +procedure TBizVendedor.ShowAll; +begin + inherited; + ShowEditor(IBizVendedor, Self, etItems); +end; + +function TBizVendedor.ShowForSelect: TModalResult; +begin + Result := ShowEditor(IBizVendedor, Self, etSelectItems); +end; + +procedure TBizContactoDataTableRules.CopyFrom(AContacto: IBizContacto); +begin + //DataTable.DisableEventHandlers; + try + if not AContacto.DataTable.Active then + AContacto.DataTable.Active := True; + CODIGOEMPRESA := AContacto.CODIGOEMPRESA; + NIFCIF := AContacto.NIFCIF; + NOMBRE := AContacto.NOMBRE; + CALLE := AContacto.CALLE; + PROVINCIA := AContacto.PROVINCIA; + POBLACION := AContacto.POBLACION; + CODIGOPOSTAL := AContacto.CODIGOPOSTAL; + CORREO1 := AContacto.CORREO1; + CORREO2 := AContacto.CORREO2; + TELEFONO1 := AContacto.TELEFONO1; + TELEFONO2 := AContacto.TELEFONO2; + MOVIL := AContacto.MOVIL; + FAX := AContacto.FAX; + NOTAS := AContacto.NOTAS; + PERSONACONTACTO := AContacto.PERSONACONTACTO; + PAGINAWEB := AContacto.PAGINAWEB; + finally + //DataTable.EnableEventHandlers; + end; + Post; + + with Categorias do + begin + Insert; + CODIGOCATEGORIA := AContacto.Categorias.CODIGOCATEGORIA; + Post; + end; +end; + +procedure TBizContactoDataTableRules.BeforeApplyUpdates( + Sender: TDADataTable; const Delta: IDADelta); +var + i : integer; +begin + for i := 0 to Delta.Count - 1 do + case Delta.Changes[i].ChangeType of + ctInsert, ctUpdate : ValidarContacto(Self); + //ctDelete : + end; +end; + +procedure TBizContactoDataTableRules.OnPostError(DataTable: TDADataTable; + Error: EDatabaseError; var Action: TDataAction); +begin + inherited; + Action := daAbort; + if (Pos(AUF_HAVEVALUE, Error.Message) > 0) then + begin + if (Pos('Nombre', Error.Message) > 0) then + MessageBox(0, 'Debe indicar al menos el nombre', 'Atención', MB_ICONWARNING or MB_OK) + else + raise Error; + end + else + raise Error; +end; + +initialization + RegisterDataTableRules(BIZ_CATEGORIACONTACTO, TBizCategoriasContacto); + RegisterDataTableRules(BIZ_CLIENTE, TBizCliente); + RegisterDataTableRules(BIZ_PROVEEDOR, TBizProveedor); + RegisterDataTableRules(BIZ_INSTALADOR, TBizInstalador); + RegisterDataTableRules(BIZ_VENDEDOR, TBizVendedor); + +finalization + +end. diff --git a/Modulos/Contactos/Servidor/schContactosServer_Intf.pas b/Modulos/Contactos/Servidor/schContactosServer_Intf.pas new file mode 100644 index 0000000..1853192 --- /dev/null +++ b/Modulos/Contactos/Servidor/schContactosServer_Intf.pas @@ -0,0 +1,650 @@ +unit schContactosServer_Intf; + +interface + +uses + Classes, DB, SysUtils, uROClasses, uDADataTable, uDABusinessProcessor, schContactosClient_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_ContactosDelta = '{180A19A6-D1CF-4681-BDC0-3B59C38D3AAC}'; + RID_CategoriasContactoDelta = '{3B1B6925-6451-43CC-90F7-5E115C229DD1}'; + RID_CategoriasDelta = '{63723E47-D160-486B-ADCD-16EF79B30E87}'; + +type + { IContactosDelta } + IContactosDelta = interface(ICONTACTOS) + ['{180A19A6-D1CF-4681-BDC0-3B59C38D3AAC}'] + function GetOldCALLEValue: string; + function GetOldCODIGOEMPRESAValue: Integer; + function GetOldCODIGOPOSTALValue: string; + function GetOldCODIGOValue: Integer; + function GetOldCORREO1Value: string; + function GetOldCORREO2Value: string; + function GetOldFAXValue: string; + function GetOldFECHAALTAValue: DateTime; + function GetOldMOVILValue: string; + function GetOldNIFCIFValue: string; + function GetOldNOMBREValue: string; + function GetOldNOTASValue: string; + function GetOldPAGINAWEBValue: string; + function GetOldPERSONACONTACTOValue: string; + function GetOldPOBLACIONValue: string; + function GetOldPROVINCIAValue: string; + function GetOldTELEFONO1Value: string; + function GetOldTELEFONO2Value: string; + function GetOldUSUARIOValue: string; + property OldCALLE: string read GetOldCALLEValue; + property OldCODIGO: Integer read GetOldCODIGOValue; + property OldCODIGOEMPRESA: Integer read GetOldCODIGOEMPRESAValue; + property OldCODIGOPOSTAL: string read GetOldCODIGOPOSTALValue; + property OldCORREO1: string read GetOldCORREO1Value; + property OldCORREO2: string read GetOldCORREO2Value; + property OldFAX: string read GetOldFAXValue; + property OldFECHAALTA: DateTime read GetOldFECHAALTAValue; + property OldMOVIL: string read GetOldMOVILValue; + property OldNIFCIF: string read GetOldNIFCIFValue; + property OldNOMBRE: string read GetOldNOMBREValue; + property OldNOTAS: string read GetOldNOTASValue; + property OldPAGINAWEB: string read GetOldPAGINAWEBValue; + property OldPERSONACONTACTO: string read GetOldPERSONACONTACTOValue; + property OldPOBLACION: string read GetOldPOBLACIONValue; + property OldPROVINCIA: string read GetOldPROVINCIAValue; + property OldTELEFONO1: string read GetOldTELEFONO1Value; + property OldTELEFONO2: string read GetOldTELEFONO2Value; + property OldUSUARIO: string read GetOldUSUARIOValue; + end; + + { TContactosBusinessProcessorRules } + TContactosBusinessProcessorRules = class(TDABusinessProcessorRules, + IContactos, IContactosDelta) + protected + function GetCALLEValue: string; virtual; + function GetCODIGOEMPRESAValue: Integer; virtual; + function GetCODIGOPOSTALValue: string; virtual; + function GetCODIGOValue: Integer; virtual; + function GetCORREO1Value: string; virtual; + function GetCORREO2Value: string; virtual; + function GetFAXValue: string; virtual; + function GetFECHAALTAValue: DateTime; virtual; + function GetMOVILValue: string; virtual; + function GetNIFCIFValue: string; virtual; + function GetNOMBREValue: string; virtual; + function GetNOTASValue: string; virtual; + function GetOldCALLEValue: string; virtual; + function GetOldCODIGOEMPRESAValue: Integer; virtual; + function GetOldCODIGOPOSTALValue: string; virtual; + function GetOldCODIGOValue: Integer; virtual; + function GetOldCORREO1Value: string; virtual; + function GetOldCORREO2Value: string; virtual; + function GetOldFAXValue: string; virtual; + function GetOldFECHAALTAValue: DateTime; virtual; + function GetOldMOVILValue: string; virtual; + function GetOldNIFCIFValue: string; virtual; + function GetOldNOMBREValue: string; virtual; + function GetOldNOTASValue: string; virtual; + function GetOldPAGINAWEBValue: string; virtual; + function GetOldPERSONACONTACTOValue: string; virtual; + function GetOldPOBLACIONValue: string; virtual; + function GetOldPROVINCIAValue: string; virtual; + function GetOldTELEFONO1Value: string; virtual; + function GetOldTELEFONO2Value: string; virtual; + function GetOldUSUARIOValue: string; virtual; + function GetPAGINAWEBValue: string; virtual; + function GetPERSONACONTACTOValue: string; virtual; + function GetPOBLACIONValue: string; virtual; + function GetPROVINCIAValue: string; virtual; + function GetTELEFONO1Value: string; virtual; + function GetTELEFONO2Value: string; virtual; + function GetUSUARIOValue: string; virtual; + procedure SetCALLEValue(const aValue: string); virtual; + procedure SetCODIGOEMPRESAValue(const aValue: Integer); virtual; + procedure SetCODIGOPOSTALValue(const aValue: string); virtual; + procedure SetCODIGOValue(const aValue: Integer); virtual; + procedure SetCORREO1Value(const aValue: string); virtual; + procedure SetCORREO2Value(const aValue: string); virtual; + procedure SetFAXValue(const aValue: string); virtual; + procedure SetFECHAALTAValue(const aValue: DateTime); virtual; + procedure SetMOVILValue(const aValue: string); virtual; + procedure SetNIFCIFValue(const aValue: string); virtual; + procedure SetNOMBREValue(const aValue: string); virtual; + procedure SetNOTASValue(const aValue: string); virtual; + procedure SetPAGINAWEBValue(const aValue: string); virtual; + procedure SetPERSONACONTACTOValue(const aValue: string); virtual; + procedure SetPOBLACIONValue(const aValue: string); virtual; + procedure SetPROVINCIAValue(const aValue: string); virtual; + procedure SetTELEFONO1Value(const aValue: string); virtual; + procedure SetTELEFONO2Value(const aValue: string); virtual; + procedure SetUSUARIOValue(const aValue: string); virtual; + property CALLE: string read GetCALLEValue write SetCALLEValue; + property CODIGO: Integer read GetCODIGOValue write SetCODIGOValue; + property CODIGOEMPRESA: Integer read GetCODIGOEMPRESAValue write + SetCODIGOEMPRESAValue; + property CODIGOPOSTAL: string read GetCODIGOPOSTALValue write + SetCODIGOPOSTALValue; + property CORREO1: string read GetCORREO1Value write SetCORREO1Value; + property CORREO2: string read GetCORREO2Value write SetCORREO2Value; + property FAX: string read GetFAXValue write SetFAXValue; + property FECHAALTA: DateTime read GetFECHAALTAValue write SetFECHAALTAValue; + property MOVIL: string read GetMOVILValue write SetMOVILValue; + property NIFCIF: string read GetNIFCIFValue write SetNIFCIFValue; + property NOMBRE: string read GetNOMBREValue write SetNOMBREValue; + property NOTAS: string read GetNOTASValue write SetNOTASValue; + property OldCALLE: string read GetOldCALLEValue; + property OldCODIGO: Integer read GetOldCODIGOValue; + property OldCODIGOEMPRESA: Integer read GetOldCODIGOEMPRESAValue; + property OldCODIGOPOSTAL: string read GetOldCODIGOPOSTALValue; + property OldCORREO1: string read GetOldCORREO1Value; + property OldCORREO2: string read GetOldCORREO2Value; + property OldFAX: string read GetOldFAXValue; + property OldFECHAALTA: DateTime read GetOldFECHAALTAValue; + property OldMOVIL: string read GetOldMOVILValue; + property OldNIFCIF: string read GetOldNIFCIFValue; + property OldNOMBRE: string read GetOldNOMBREValue; + property OldNOTAS: string read GetOldNOTASValue; + property OldPAGINAWEB: string read GetOldPAGINAWEBValue; + property OldPERSONACONTACTO: string read GetOldPERSONACONTACTOValue; + property OldPOBLACION: string read GetOldPOBLACIONValue; + property OldPROVINCIA: string read GetOldPROVINCIAValue; + property OldTELEFONO1: string read GetOldTELEFONO1Value; + property OldTELEFONO2: string read GetOldTELEFONO2Value; + property OldUSUARIO: string read GetOldUSUARIOValue; + property PAGINAWEB: string read GetPAGINAWEBValue write SetPAGINAWEBValue; + property PERSONACONTACTO: string read GetPERSONACONTACTOValue write + SetPERSONACONTACTOValue; + property POBLACION: string read GetPOBLACIONValue write SetPOBLACIONValue; + property PROVINCIA: string read GetPROVINCIAValue write SetPROVINCIAValue; + property TELEFONO1: string read GetTELEFONO1Value write SetTELEFONO1Value; + property TELEFONO2: string read GetTELEFONO2Value write SetTELEFONO2Value; + property USUARIO: string read GetUSUARIOValue write SetUSUARIOValue; + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + end; + + { ICategoriasContactoDelta } + ICategoriasContactoDelta = interface(ICategoriasContacto) + ['{3B1B6925-6451-43CC-90F7-5E115C229DD1}'] + function GetOldCODIGOCATEGORIAValue: Integer; + function GetOldCODIGOCONTACTOValue: Integer; + property OldCODIGOCATEGORIA: Integer read GetOldCODIGOCATEGORIAValue; + property OldCODIGOCONTACTO: Integer read GetOldCODIGOCONTACTOValue; + end; + + { TCategoriasContactoBusinessProcessorRules } + TCategoriasContactoBusinessProcessorRules = class(TDABusinessProcessorRules, + ICategoriasContacto, ICategoriasContactoDelta) + protected + function GetCODIGOCATEGORIAValue: Integer; virtual; + function GetCODIGOCONTACTOValue: Integer; virtual; + function GetOldCODIGOCATEGORIAValue: Integer; virtual; + function GetOldCODIGOCONTACTOValue: Integer; virtual; + procedure SetCODIGOCATEGORIAValue(const aValue: Integer); virtual; + procedure SetCODIGOCONTACTOValue(const aValue: Integer); virtual; + property CODIGOCATEGORIA: Integer read GetCODIGOCATEGORIAValue write + SetCODIGOCATEGORIAValue; + property CODIGOCONTACTO: Integer read GetCODIGOCONTACTOValue write + SetCODIGOCONTACTOValue; + property OldCODIGOCATEGORIA: Integer read GetOldCODIGOCATEGORIAValue; + property OldCODIGOCONTACTO: Integer read GetOldCODIGOCONTACTOValue; + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + end; + + { ICategoriasDelta } + ICategoriasDelta = interface(ICATEGORIAS) + ['{63723E47-D160-486B-ADCD-16EF79B30E87}'] + function GetOldCODIGOValue: Integer; + function GetOldDESCRIPCIONValue: string; + property OldCODIGO: Integer read GetOldCODIGOValue; + property OldDESCRIPCION: string read GetOldDESCRIPCIONValue; + end; + + { TCategoriasBusinessProcessorRules } + TCategoriasBusinessProcessorRules = class(TDABusinessProcessorRules, + ICategorias, ICategoriasDelta) + protected + function GetCODIGOValue: Integer; virtual; + function GetDESCRIPCIONValue: string; virtual; + function GetOldCODIGOValue: Integer; virtual; + function GetOldDESCRIPCIONValue: string; virtual; + procedure SetCODIGOValue(const aValue: Integer); virtual; + procedure SetDESCRIPCIONValue(const aValue: string); virtual; + property CODIGO: Integer read GetCODIGOValue write SetCODIGOValue; + property DESCRIPCION: string read GetDESCRIPCIONValue write + SetDESCRIPCIONValue; + property OldCODIGO: Integer read GetOldCODIGOValue; + property OldDESCRIPCION: string read GetOldDESCRIPCIONValue; + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + end; + +implementation + +uses + Variants, uROBinaryHelpers; + +{ TContactosBusinessProcessorRules } +{ +*********************** TContactosBusinessProcessorRules *********************** +} +constructor TContactosBusinessProcessorRules.Create(aBusinessProcessor: + TDABusinessProcessor); +begin + inherited; +end; + +destructor TContactosBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TContactosBusinessProcessorRules.GetCALLEValue: string; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosCALLE]; +end; + +function TContactosBusinessProcessorRules.GetCODIGOEMPRESAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosCODIGOEMPRESA]; +end; + +function TContactosBusinessProcessorRules.GetCODIGOPOSTALValue: string; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosCODIGOPOSTAL]; +end; + +function TContactosBusinessProcessorRules.GetCODIGOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosCODIGO]; +end; + +function TContactosBusinessProcessorRules.GetCORREO1Value: string; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosCORREO1]; +end; + +function TContactosBusinessProcessorRules.GetCORREO2Value: string; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosCORREO2]; +end; + +function TContactosBusinessProcessorRules.GetFAXValue: string; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosFAX]; +end; + +function TContactosBusinessProcessorRules.GetFECHAALTAValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosFECHAALTA]; +end; + +function TContactosBusinessProcessorRules.GetMOVILValue: string; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosMOVIL]; +end; + +function TContactosBusinessProcessorRules.GetNIFCIFValue: string; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosNIFCIF]; +end; + +function TContactosBusinessProcessorRules.GetNOMBREValue: string; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosNOMBRE]; +end; + +function TContactosBusinessProcessorRules.GetNOTASValue: string; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosNOTAS]; +end; + +function TContactosBusinessProcessorRules.GetOldCALLEValue: string; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ContactosCALLE]; +end; + +function TContactosBusinessProcessorRules.GetOldCODIGOEMPRESAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ContactosCODIGOEMPRESA]; +end; + +function TContactosBusinessProcessorRules.GetOldCODIGOPOSTALValue: string; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ContactosCODIGOPOSTAL]; +end; + +function TContactosBusinessProcessorRules.GetOldCODIGOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ContactosCODIGO]; +end; + +function TContactosBusinessProcessorRules.GetOldCORREO1Value: string; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ContactosCORREO1]; +end; + +function TContactosBusinessProcessorRules.GetOldCORREO2Value: string; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ContactosCORREO2]; +end; + +function TContactosBusinessProcessorRules.GetOldFAXValue: string; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ContactosFAX]; +end; + +function TContactosBusinessProcessorRules.GetOldFECHAALTAValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ContactosFECHAALTA]; +end; + +function TContactosBusinessProcessorRules.GetOldMOVILValue: string; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ContactosMOVIL]; +end; + +function TContactosBusinessProcessorRules.GetOldNIFCIFValue: string; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ContactosNIFCIF]; +end; + +function TContactosBusinessProcessorRules.GetOldNOMBREValue: string; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ContactosNOMBRE]; +end; + +function TContactosBusinessProcessorRules.GetOldNOTASValue: string; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ContactosNOTAS]; +end; + +function TContactosBusinessProcessorRules.GetOldPAGINAWEBValue: string; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ContactosPAGINAWEB]; +end; + +function TContactosBusinessProcessorRules.GetOldPERSONACONTACTOValue: string; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ContactosPERSONACONTACTO]; +end; + +function TContactosBusinessProcessorRules.GetOldPOBLACIONValue: string; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ContactosPOBLACION]; +end; + +function TContactosBusinessProcessorRules.GetOldPROVINCIAValue: string; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ContactosPROVINCIA]; +end; + +function TContactosBusinessProcessorRules.GetOldTELEFONO1Value: string; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ContactosTELEFONO1]; +end; + +function TContactosBusinessProcessorRules.GetOldTELEFONO2Value: string; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ContactosTELEFONO2]; +end; + +function TContactosBusinessProcessorRules.GetOldUSUARIOValue: string; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ContactosUSUARIO]; +end; + +function TContactosBusinessProcessorRules.GetPAGINAWEBValue: string; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosPAGINAWEB]; +end; + +function TContactosBusinessProcessorRules.GetPERSONACONTACTOValue: string; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosPERSONACONTACTO]; +end; + +function TContactosBusinessProcessorRules.GetPOBLACIONValue: string; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosPOBLACION]; +end; + +function TContactosBusinessProcessorRules.GetPROVINCIAValue: string; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosPROVINCIA]; +end; + +function TContactosBusinessProcessorRules.GetTELEFONO1Value: string; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosTELEFONO1]; +end; + +function TContactosBusinessProcessorRules.GetTELEFONO2Value: string; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosTELEFONO2]; +end; + +function TContactosBusinessProcessorRules.GetUSUARIOValue: string; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosUSUARIO]; +end; + +procedure TContactosBusinessProcessorRules.SetCALLEValue(const aValue: string); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosCALLE] := aValue; +end; + +procedure TContactosBusinessProcessorRules.SetCODIGOEMPRESAValue(const aValue: + Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosCODIGOEMPRESA] := aValue; +end; + +procedure TContactosBusinessProcessorRules.SetCODIGOPOSTALValue(const aValue: + string); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosCODIGOPOSTAL] := aValue; +end; + +procedure TContactosBusinessProcessorRules.SetCODIGOValue(const aValue: + Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosCODIGO] := aValue; +end; + +procedure TContactosBusinessProcessorRules.SetCORREO1Value(const aValue: + string); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosCORREO1] := aValue; +end; + +procedure TContactosBusinessProcessorRules.SetCORREO2Value(const aValue: + string); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosCORREO2] := aValue; +end; + +procedure TContactosBusinessProcessorRules.SetFAXValue(const aValue: string); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosFAX] := aValue; +end; + +procedure TContactosBusinessProcessorRules.SetFECHAALTAValue(const aValue: + DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosFECHAALTA] := aValue; +end; + +procedure TContactosBusinessProcessorRules.SetMOVILValue(const aValue: string); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosMOVIL] := aValue; +end; + +procedure TContactosBusinessProcessorRules.SetNIFCIFValue(const aValue: string); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosNIFCIF] := aValue; +end; + +procedure TContactosBusinessProcessorRules.SetNOMBREValue(const aValue: string); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosNOMBRE] := aValue; +end; + +procedure TContactosBusinessProcessorRules.SetNOTASValue(const aValue: string); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosNOTAS] := aValue; +end; + +procedure TContactosBusinessProcessorRules.SetPAGINAWEBValue(const aValue: + string); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosPAGINAWEB] := aValue; +end; + +procedure TContactosBusinessProcessorRules.SetPERSONACONTACTOValue(const + aValue: string); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosPERSONACONTACTO] := aValue; +end; + +procedure TContactosBusinessProcessorRules.SetPOBLACIONValue(const aValue: + string); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosPOBLACION] := aValue; +end; + +procedure TContactosBusinessProcessorRules.SetPROVINCIAValue(const aValue: + string); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosPROVINCIA] := aValue; +end; + +procedure TContactosBusinessProcessorRules.SetTELEFONO1Value(const aValue: + string); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosTELEFONO1] := aValue; +end; + +procedure TContactosBusinessProcessorRules.SetTELEFONO2Value(const aValue: + string); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosTELEFONO2] := aValue; +end; + +procedure TContactosBusinessProcessorRules.SetUSUARIOValue(const aValue: + string); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosUSUARIO] := aValue; +end; + + +{ TCategoriasContactoBusinessProcessorRules } +{ +****************** TCategoriasContactoBusinessProcessorRules ******************* +} +constructor TCategoriasContactoBusinessProcessorRules.Create( + aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TCategoriasContactoBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TCategoriasContactoBusinessProcessorRules.GetCODIGOCATEGORIAValue: + Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_CategoriasContactoCODIGOCATEGORIA]; +end; + +function TCategoriasContactoBusinessProcessorRules.GetCODIGOCONTACTOValue: + Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_CategoriasContactoCODIGOCONTACTO]; +end; + +function TCategoriasContactoBusinessProcessorRules.GetOldCODIGOCATEGORIAValue: + Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_CategoriasContactoCODIGOCATEGORIA]; +end; + +function TCategoriasContactoBusinessProcessorRules.GetOldCODIGOCONTACTOValue: + Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_CategoriasContactoCODIGOCONTACTO]; +end; + +procedure TCategoriasContactoBusinessProcessorRules.SetCODIGOCATEGORIAValue( + const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_CategoriasContactoCODIGOCATEGORIA] := aValue; +end; + +procedure TCategoriasContactoBusinessProcessorRules.SetCODIGOCONTACTOValue( + const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_CategoriasContactoCODIGOCONTACTO] := aValue; +end; + + +{ TCategoriasBusinessProcessorRules } +{ +********************** TCategoriasBusinessProcessorRules *********************** +} +constructor TCategoriasBusinessProcessorRules.Create(aBusinessProcessor: + TDABusinessProcessor); +begin + inherited; +end; + +destructor TCategoriasBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TCategoriasBusinessProcessorRules.GetCODIGOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_CategoriasCODIGO]; +end; + +function TCategoriasBusinessProcessorRules.GetDESCRIPCIONValue: string; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_CategoriasDESCRIPCION]; +end; + +function TCategoriasBusinessProcessorRules.GetOldCODIGOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_CategoriasCODIGO]; +end; + +function TCategoriasBusinessProcessorRules.GetOldDESCRIPCIONValue: string; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_CategoriasDESCRIPCION]; +end; + +procedure TCategoriasBusinessProcessorRules.SetCODIGOValue(const aValue: + Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_CategoriasCODIGO] := aValue; +end; + +procedure TCategoriasBusinessProcessorRules.SetDESCRIPCIONValue(const aValue: + string); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_CategoriasDESCRIPCION] := aValue; +end; + + +initialization + RegisterBusinessProcessorRules(RID_ContactosDelta, TContactosBusinessProcessorRules); + RegisterBusinessProcessorRules(RID_CategoriasContactoDelta, TCategoriasContactoBusinessProcessorRules); + RegisterBusinessProcessorRules(RID_CategoriasDelta, TCategoriasBusinessProcessorRules); + +end. diff --git a/Modulos/Contactos/Servidor/srvContactos_Impl.ddp b/Modulos/Contactos/Servidor/srvContactos_Impl.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Contactos/Servidor/srvContactos_Impl.ddp differ diff --git a/Modulos/Contactos/Servidor/srvContactos_Impl.dfm b/Modulos/Contactos/Servidor/srvContactos_Impl.dfm new file mode 100644 index 0000000..b5e3540 --- /dev/null +++ b/Modulos/Contactos/Servidor/srvContactos_Impl.dfm @@ -0,0 +1,837 @@ +object srvContactos: TsrvContactos + OldCreateOrder = True + OnCreate = DARemoteServiceCreate + RequiresSession = True + SessionManager = dmServer.SessionManager + OnActivate = DARemoteServiceActivate + AcquireConnection = True + ConnectionName = 'IBX' + ServiceSchema = schContactos + ServiceAdapter = DABINAdapter + Left = 617 + Top = 313 + Height = 354 + Width = 450 + object schContactos: TDASchema + ConnectionManager = dmServer.ConnectionManager + DataDictionary = dmServer.DataDictionary + Diagrams = dmServer.DADiagrams + Datasets = < + item + Params = <> + Statements = < + item + Connection = 'IBX' + TargetTable = 'CONTACTOS' + SQL = + 'SELECT DISTINCT CONTACTOS.CODIGOEMPRESA, CONTACTOS.CODIGO, CONTA' + + 'CTOS.FECHAALTA, CONTACTOS.USUARIO, CONTACTOS.NIFCIF, CONTACTOS.N' + + 'OMBRE, CONTACTOS.NOTAS, CONTACTOS.CALLE, CONTACTOS.PROVINCIA, CO' + + 'NTACTOS.CODIGOPOSTAL, CONTACTOS.POBLACION, CONTACTOS.TELEFONO1, ' + + 'CONTACTOS.TELEFONO2, CONTACTOS.MOVIL, CONTACTOS.FAX, CONTACTOS.C' + + 'ORREO1, CONTACTOS.CORREO2, CONTACTOS.PAGINAWEB, CONTACTOS.PERSON' + + 'ACONTACTO'#10'FROM CONTACTOSCATEGORIAS'#10' INNER JOIN CONTACTOS ON (C' + + 'ONTACTOSCATEGORIAS.CODIGOCONTACTO = CONTACTOS.CODIGO)' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'CODIGOEMPRESA' + TableField = 'CODIGOEMPRESA' + end + item + DatasetField = 'CODIGO' + TableField = 'CODIGO' + end + item + DatasetField = 'FECHAALTA' + TableField = 'FECHAALTA' + end + item + DatasetField = 'USUARIO' + TableField = 'USUARIO' + end + item + DatasetField = 'NIFCIF' + TableField = 'NIFCIF' + end + item + DatasetField = 'NOMBRE' + TableField = 'NOMBRE' + end + item + DatasetField = 'NOTAS' + TableField = 'NOTAS' + end + item + DatasetField = 'CALLE' + TableField = 'CALLE' + end + item + DatasetField = 'PROVINCIA' + TableField = 'PROVINCIA' + end + item + DatasetField = 'CODIGOPOSTAL' + TableField = 'CODIGOPOSTAL' + end + item + DatasetField = 'POBLACION' + TableField = 'POBLACION' + end + item + DatasetField = 'TELEFONO1' + TableField = 'TELEFONO1' + end + item + DatasetField = 'TELEFONO2' + TableField = 'TELEFONO2' + end + item + DatasetField = 'MOVIL' + TableField = 'MOVIL' + end + item + DatasetField = 'FAX' + TableField = 'FAX' + end + item + DatasetField = 'CORREO1' + TableField = 'CORREO1' + end + item + DatasetField = 'CORREO2' + TableField = 'CORREO2' + end + item + DatasetField = 'PAGINAWEB' + TableField = 'PAGINAWEB' + end + item + DatasetField = 'PERSONACONTACTO' + TableField = 'PERSONACONTACTO' + end> + end> + Name = 'Contactos' + Fields = < + item + Name = 'CODIGOEMPRESA' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'CODIGOEMPRESA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGO' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'CODIGOCONTACTO' + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHAALTA' + DataType = datDateTime + BlobType = dabtUnknown + DictionaryEntry = 'FECHAALTA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'USUARIO' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DictionaryEntry = 'USUARIO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NIFCIF' + DataType = datString + Size = 10 + BlobType = dabtUnknown + DictionaryEntry = 'NIFCIF' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NOMBRE' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DictionaryEntry = 'NOMBRE' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NOTAS' + DataType = datString + Size = 2000 + BlobType = dabtUnknown + DictionaryEntry = 'NOTAS' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CALLE' + DataType = datString + Size = 150 + BlobType = dabtUnknown + DictionaryEntry = 'CALLE' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PROVINCIA' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DictionaryEntry = 'PROVINCIA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOPOSTAL' + DataType = datString + Size = 5 + BlobType = dabtUnknown + DictionaryEntry = 'CODIGOPOSTAL' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'POBLACION' + DataType = datString + Size = 40 + BlobType = dabtUnknown + DictionaryEntry = 'POBLACION' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'TELEFONO1' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DictionaryEntry = 'TELEFONOPARTICULAR' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'TELEFONO2' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DictionaryEntry = 'TELEFONOTRABAJO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'MOVIL' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DictionaryEntry = 'MOVIL' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FAX' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DictionaryEntry = 'FAX' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CORREO1' + DataType = datString + Size = 60 + BlobType = dabtUnknown + DictionaryEntry = 'CORREO1' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CORREO2' + DataType = datString + Size = 60 + BlobType = dabtUnknown + DictionaryEntry = 'CORREO2' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PAGINAWEB' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DictionaryEntry = 'PAGINAWEB' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PERSONACONTACTO' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DictionaryEntry = 'PERSONACONTACTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end + item + Params = < + item + Name = 'CODIGOCONTACTO' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'CONTACTOSCATEGORIAS' + SQL = + 'SELECT '#10' CODIGOCONTACTO, CODIGOCATEGORIA'#10' FROM'#10' CONTACTOS' + + 'CATEGORIAS'#10' WHERE CODIGOCONTACTO = :CODIGOCONTACTO' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'CODIGOCONTACTO' + TableField = 'CODIGOCONTACTO' + end + item + DatasetField = 'CODIGOCATEGORIA' + TableField = 'CODIGOCATEGORIA' + end> + end> + Name = 'CategoriasContacto' + Fields = < + item + Name = 'CODIGOCONTACTO' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'CODIGOCONTACTO' + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOCATEGORIA' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'CODIGOCATEGORIA' + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end + item + Params = <> + Statements = < + item + Connection = 'IBX' + TargetTable = 'CATEGORIAS' + SQL = 'SELECT '#10' CODIGO, DESCRIPCION'#10' FROM'#10' CATEGORIAS' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'CODIGO' + TableField = 'CODIGO' + end + item + DatasetField = 'DESCRIPCION' + TableField = 'DESCRIPCION' + end> + end> + Name = 'Categorias' + Fields = < + item + Name = 'CODIGO' + DataType = datAutoInc + BlobType = dabtUnknown + GeneratorName = 'GEN_CATEGORIAS' + DictionaryEntry = 'CODIGOCATEGORIA_GEN' + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'DESCRIPCION' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end> + Commands = < + item + Params = < + item + Name = 'OLD_CODIGO' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'CONTACTOS' + SQL = 'DELETE '#10' FROM'#10' CONTACTOS'#10' WHERE'#10' (CODIGO = :OLD_CODIGO)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Delete_Contactos' + end> + RelationShips = < + item + Name = 'FK_CategoriasContacto_Contactos' + MasterDatasetName = 'Contactos' + MasterFields = 'CODIGO' + DetailDatasetName = 'CategoriasContacto' + DetailFields = 'CODIGOCONTACTO' + end> + UpdateRules = < + item + Name = 'Insert Contactos' + DoUpdate = False + DoInsert = True + DoDelete = False + DatasetName = 'Contactos' + FailureBehaviour = fbRaiseException + end + item + Name = 'Update Contactos' + DoUpdate = True + DoInsert = False + DoDelete = False + DatasetName = 'Contactos' + FailureBehaviour = fbRaiseException + end + item + Name = 'Delete CategoriasContacto' + DoUpdate = False + DoInsert = False + DoDelete = True + DatasetName = 'CategoriasContacto' + FailureBehaviour = fbRaiseException + end + item + Name = 'Insert CategoriasContacto' + DoUpdate = False + DoInsert = True + DoDelete = False + DatasetName = 'CategoriasContacto' + FailureBehaviour = fbRaiseException + end + item + Name = 'Update CategoriasContacto' + DoUpdate = True + DoInsert = False + DoDelete = False + DatasetName = 'CategoriasContacto' + FailureBehaviour = fbRaiseException + end + item + Name = 'Delete Contactos' + DoUpdate = False + DoInsert = False + DoDelete = True + DatasetName = 'Contactos' + FailureBehaviour = fbRaiseException + end> + Left = 40 + Top = 16 + end + object frxReport1: TfrxReport + Version = '3.15' + DotMatrixReport = False + EngineOptions.DoublePass = True + IniFile = '\Software\Fast Reports' + PreviewOptions.Buttons = [pbPrint, pbLoad, pbSave, pbExport, pbZoom, pbFind, pbOutline, pbPageSetup, pbTools, pbEdit, pbNavigator] + PreviewOptions.Zoom = 1.000000000000000000 + PrintOptions.Printer = 'Default' + ReportOptions.CreateDate = 38658.761816215280000000 + ReportOptions.LastChange = 38658.776815497690000000 + ScriptLanguage = 'PascalScript' + ScriptText.Strings = ( + 'begin' + '' + 'end.') + Left = 296 + Top = 16 + Datasets = < + item + DataSet = frxDBDataset1 + DataSetName = 'frxDBDataset1' + end> + Variables = <> + Style = <> + object Page1: TfrxReportPage + PaperWidth = 210.000000000000000000 + PaperHeight = 297.000000000000000000 + PaperSize = 9 + LeftMargin = 10.000000000000000000 + RightMargin = 10.000000000000000000 + TopMargin = 10.000000000000000000 + BottomMargin = 10.000000000000000000 + object MasterData1: TfrxMasterData + Height = 22.677180000000000000 + Top = 18.897650000000000000 + Width = 718.110700000000000000 + DataSet = frxDBDataset1 + DataSetName = 'frxDBDataset1' + RowCount = 0 + object Memo1: TfrxMemoView + Left = 3.779530000000000000 + Width = 79.370130000000000000 + Height = 18.897650000000000000 + DataSet = frxDBDataset1 + DataSetName = 'frxDBDataset1' + Memo.Strings = ( + '[frxDBDataset1."nombre"]') + end + end + end + end + object DACDSDataTable1: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'CODIGOEMPRESA' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + DictionaryEntry = 'CODIGOEMPRESA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGO' + DataType = datAutoInc + BlobType = dabtUnknown + GeneratorName = 'GEN_CONTACTOS' + DisplayWidth = 0 + Alignment = taLeftJustify + DictionaryEntry = 'CODIGOCONTACTO_GEN' + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHAALTA' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + DictionaryEntry = 'FECHAALTA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'USUARIO' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + DictionaryEntry = 'USUARIO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NIFCIF' + DataType = datString + Size = 10 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + DictionaryEntry = 'NIFCIF' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NOMBRE' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + DictionaryEntry = 'NOMBRE' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NOTAS' + DataType = datString + Size = 2000 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + DictionaryEntry = 'NOTAS' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CALLE' + DataType = datString + Size = 150 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + DictionaryEntry = 'CALLE' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PROVINCIA' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + DictionaryEntry = 'PROVINCIA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOPOSTAL' + DataType = datString + Size = 5 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + DictionaryEntry = 'CODIGOPOSTAL' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'POBLACION' + DataType = datString + Size = 40 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + DictionaryEntry = 'POBLACION' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'TELEFONO1' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + DictionaryEntry = 'TELEFONOPARTICULAR' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'TELEFONO2' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + DictionaryEntry = 'TELEFONOTRABAJO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'MOVIL' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + DictionaryEntry = 'MOVIL' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FAX' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + DictionaryEntry = 'FAX' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CORREO1' + DataType = datString + Size = 60 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + DictionaryEntry = 'CORREO1' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CORREO2' + DataType = datString + Size = 60 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + DictionaryEntry = 'CORREO2' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PAGINAWEB' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + DictionaryEntry = 'PAGINAWEB' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PERSONACONTACTO' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + DictionaryEntry = 'PERSONACONTACTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + Params = <> + MasterMappingMode = mmDataRequest + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteFetchEnabled = False + SchemaCall.Params = <> + DataRequestCall.Params = <> + DataUpdateCall.Params = <> + ScriptCall.Params = <> + ReadOnly = False + Adapter = DABINAdapter + LocalSchema = schContactos + LocalConnection = 'IBX' + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'Contactos' + IndexDefs = <> + Left = 296 + Top = 72 + end + object DADataSource1: TDADataSource + DataTable = DACDSDataTable1 + Left = 352 + Top = 72 + end + object frxDBDataset1: TfrxDBDataset + UserName = 'frxDBDataset1' + CloseDataSource = True + DataSource = DADataSource1 + Left = 352 + Top = 16 + end + object DABINAdapter: TDABINAdapter + Left = 40 + Top = 72 + end +end diff --git a/Modulos/Contactos/Servidor/srvContactos_Impl.pas b/Modulos/Contactos/Servidor/srvContactos_Impl.pas new file mode 100644 index 0000000..2e42260 --- /dev/null +++ b/Modulos/Contactos/Servidor/srvContactos_Impl.pas @@ -0,0 +1,113 @@ +unit srvContactos_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:} DARemoteService_Impl, + {Used RODLs:} DataAbstract_Intf, + {Generated:} FactuGES_Intf, uDAScriptingProvider, uDABusinessProcessor, + uDAClasses, uDADataTable, uDAInterfaces, uDAEngine, uDAIBXDriver, DB, + IBDatabase, frxClass, frxIBXComponents, uDACDSDataTable, uDABINAdapter, + frxDBSet, frxExportPDF; + +type + { TsrvContactos } + TsrvContactos = class(TDARemoteService, IsrvContactos) + DACDSDataTable1: TDACDSDataTable; + DADataSource1: TDADataSource; + frxDBDataset1: TfrxDBDataset; + frxReport1: TfrxReport; + schContactos: TDASchema; + DABINAdapter: TDABINAdapter; + procedure DARemoteServiceActivate(const aClientID: TGUID; aSession: + TROSession; const aMessage: IROMessage); + procedure DARemoteServiceCreate(Sender: TObject); + protected + function GenerateReport: Binary; + function GetNextAutoinc: Integer; + function PuedoEliminarContacto(const CodigoContacto: Integer): Boolean; + end; + +implementation + +{$R *.dfm} +uses + {Generated:} FactuGES_Invk, + Dialogs, schContactosClient_Intf, fServerForm, IB, + Variants, schContactosServer_Intf, uDataModuleServer; + +procedure Create_srvContactos(out anInstance : IUnknown); +begin + anInstance := TsrvContactos.Create(NIL); +end; + +{ srvContactos } +{ +******************************** TsrvContactos ********************************* +} +procedure TsrvContactos.DARemoteServiceActivate(const aClientID: TGUID; + aSession: TROSession; const aMessage: IROMessage); +begin + ((Connection as IDAConnectionObjectAccess).ConnectionObject as + TIBXConnection).Database.TraceFlags := [tfQPrepare, tfQExecute, tfQFetch, tfError, tfStmt, tfConnect, tfTransact, tfBlob, tfService, tfMisc]; +end; + +function TsrvContactos.GenerateReport: Binary; +var + AStream: TMemoryStream; +begin + AStream := TMemoryStream.Create; + Result := Binary.Create; + try + DACDSDataTable1.Active := True; + frxReport1.PrepareReport; + frxReport1.PreviewPages.SaveToStream(AStream); + Result.LoadFromStream(AStream); + finally + DACDSDataTable1.Active := False; + AStream.Free; + end; +end; + +procedure TsrvContactos.DARemoteServiceCreate(Sender: TObject); +begin + //RequiresSession := True; +end; + +function TsrvContactos.GetNextAutoinc: Integer; +begin + Result := uDataModuleServer.GetNextAutoinc(Connection, 'GEN_CONTACTOS'); +end; + +function TsrvContactos.PuedoEliminarContacto( + const CodigoContacto: Integer): Boolean; +var + dsContacto: IDASQLCommand; +begin + Result := True; + Connection.BeginTransaction; + try + dsContacto := schContactos.NewCommand(Connection, 'Delete_Contactos', ['OLD_CODIGO'], [CodigoContacto]); + except + on E: Exception do + Result := False; + end; + Connection.RollbackTransaction; +end; + +initialization + TROClassFactory.Create('srvContactos', Create_srvContactos, TsrvContactos_Invoker); + +finalization + +end. + diff --git a/Modulos/Cuentas/Cliente/Cuentas.bdsproj b/Modulos/Cuentas/Cliente/Cuentas.bdsproj new file mode 100644 index 0000000..5fa7ab6 --- /dev/null +++ b/Modulos/Cuentas/Cliente/Cuentas.bdsproj @@ -0,0 +1,492 @@ + + + + + + + + + + + + Cuentas.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 3 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + .\ + ..\..\..\Output\Cliente + .\ + $(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\Reglas + vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;IntrawebDB_50_70;Intraweb_50_70;Rave50CLX;Rave50VCL;dclOfficeXP;PluginSDK_D7R;DJcl;JvStdCtrlsD7R;JvAppFrmD7R;JvCoreD7R;JvBandsD7R;JvBDED7R;JvDBD7R;JvDlgsD7R;JvCmpD7R;JvCryptD7R;JvCtrlsD7R;JvCustomD7R;JvDockingD7R;JvDotNetCtrlsD7R;JvEDID7R;qrpt;JvGlobusD7R;JvHMID7R;JvInspectorD7R;JvInterpreterD7R;JvJansD7R;JvManagedThreadsD7R;JvMMD7R;JvNetD7R;JvPageCompsD7R;JvPluginD7R;JvPrintPreviewD7R;JvSystemD7R;JvTimeFrameworkD7R;JvUIBD7R;JvValidatorsD7R;JvWizardD7R;JvXPCtrlsD7R;GUISDK_D7;RemObjects_WebBroker_D7;RemObjects_Indy_D7;RemObjects_RODX_D7;RemObjects_BPDX_D7;PascalScript_RO_D7;DataAbstract_Core_D7;DataAbstract_IDE_D7;DataAbstract_DBXDriver_D7;DataAbstract_Scripting_D7;dxBarD7;dxComnD7;cxLibraryVCLD7;cxEditorsVCLD7;dxThemeD7;cxDataD7;cxExtEditorsVCLD7;cxGridVCLD7;cxPageControlVCLD7;cxSchedulerVCLD7;cxTreeListVCLD7;dxBarDBNavD7;dxBarExtDBItemsD7;dxBarExtItemsD7;dxDockingD7;dxNavBarD7;dxPSCoreD7;dxsbD7;dxPSLnksD7;dxPSTeeChartD7;EPCOTAUtils70;PNG_D7;PngComponentsD7;tb2k_d7;tbx_d7;UserControlD7_RT;fqb70;frx7;frxADO7;frxBDE7;frxcs7;frxDB7;frxDBX7;frxe7;frxIBX7;fs7;fsADO7;fsBDE7;fsDB7;fsIBX7;cxExportVCLD7;cxIntl5D7;cxIntlPrintSys3D7;dxPScxCommonD7;dxPScxExtCommonD7;dxPScxGridLnkD7;dxPScxPCProdD7;dxPScxSchedulerLnkD7;dxPScxTLLnkD7;dxPSDBTeeChartD7;dxPsPrVwAdvD7 + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + diff --git a/Modulos/Cuentas/Cliente/Cuentas.cfg b/Modulos/Cuentas/Cliente/Cuentas.cfg new file mode 100644 index 0000000..5ba1fcf --- /dev/null +++ b/Modulos/Cuentas/Cliente/Cuentas.cfg @@ -0,0 +1,45 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O- +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-GD +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N".\" +-LE"..\..\..\Output\Cliente" +-LN".\" +-U"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\Reglas" +-O"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\Reglas" +-I"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\Reglas" +-R"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\Reglas" +-Z +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/Modulos/Cuentas/Cliente/Cuentas.dcp b/Modulos/Cuentas/Cliente/Cuentas.dcp new file mode 100644 index 0000000..e9fce86 Binary files /dev/null and b/Modulos/Cuentas/Cliente/Cuentas.dcp differ diff --git a/Modulos/Cuentas/Cliente/Cuentas.dof b/Modulos/Cuentas/Cliente/Cuentas.dof new file mode 100644 index 0000000..442cfd0 --- /dev/null +++ b/Modulos/Cuentas/Cliente/Cuentas.dof @@ -0,0 +1,177 @@ +[FileVersion] +Version=7.0 +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=0 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=1 +SymbolLibrary=1 +SymbolPlatform=1 +UnitLibrary=1 +UnitPlatform=1 +UnitDeprecated=1 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 +[Linker] +MapFile=3 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription= +[Directories] +OutputDir= +UnitOutputDir=.\ +PackageDLLOutputDir=..\..\..\Output\Cliente +PackageDCPOutputDir=.\ +SearchPath=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\Reglas +Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;IntrawebDB_50_70;Intraweb_50_70;Rave50CLX;Rave50VCL;dclOfficeXP;PluginSDK_D7R;DJcl;JvStdCtrlsD7R;JvAppFrmD7R;JvCoreD7R;JvBandsD7R;JvBDED7R;JvDBD7R;JvDlgsD7R;JvCmpD7R;JvCryptD7R;JvCtrlsD7R;JvCustomD7R;JvDockingD7R;JvDotNetCtrlsD7R;JvEDID7R;qrpt;JvGlobusD7R;JvHMID7R;JvInspectorD7R;JvInterpreterD7R;JvJansD7R;JvManagedThreadsD7R;JvMMD7R;JvNetD7R;JvPageCompsD7R;JvPluginD7R;JvPrintPreviewD7R;JvSystemD7R;JvTimeFrameworkD7R;JvUIBD7R;JvValidatorsD7R;JvWizardD7R;JvXPCtrlsD7R;GUISDK_D7;RemObjects_WebBroker_D7;RemObjects_Indy_D7;RemObjects_RODX_D7;RemObjects_BPDX_D7;PascalScript_RO_D7;DataAbstract_Core_D7;DataAbstract_IDE_D7;DataAbstract_DBXDriver_D7;DataAbstract_Scripting_D7;dxBarD7;dxComnD7;cxLibraryVCLD7;cxEditorsVCLD7;dxThemeD7;cxDataD7;cxExtEditorsVCLD7;cxGridVCLD7;cxPageControlVCLD7;cxSchedulerVCLD7;cxTreeListVCLD7;dxBarDBNavD7;dxBarExtDBItemsD7;dxBarExtItemsD7;dxDockingD7;dxNavBarD7;dxPSCoreD7;dxsbD7;dxPSLnksD7;dxPSTeeChartD7;EPCOTAUtils70;PNG_D7;PngComponentsD7;tb2k_d7;tbx_d7;UserControlD7_RT;fqb70;frx7;frxADO7;frxBDE7;frxcs7;frxDB7;frxDBX7;frxe7;frxIBX7;fs7;fsADO7;fsBDE7;fsDB7;fsIBX7;cxExportVCLD7;cxIntl5D7;cxIntlPrintSys3D7;dxPScxCommonD7;dxPScxExtCommonD7;dxPScxGridLnkD7;dxPScxPCProdD7;dxPScxSchedulerLnkD7;dxPScxTLLnkD7;dxPSDBTeeChartD7;dxPsPrVwAdvD7 +Conditionals= +DebugSourceDirs= +UsePackages=0 +[Parameters] +RunParams= +HostApplication= +Launcher= +UseLauncher=0 +DebugCWD= +[Language] +ActiveLang= +ProjectLang= +RootDir= +[Version Info] +IncludeVerInfo=1 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=3082 +CodePage=1252 +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= +[Excluded Packages] +C:\Archivos de programa\Developer Express Inc\Lib\D7\dxPScxSchedulerLnkD7.bpl=ExpressPrinting System ReportLink for ExpressScheduler by Developer Express Inc. +[HistoryLists\hlDebugSourcePath] +Count=1 +Item0=D:\Proyectos\Componentes\GUISDK\Sources\;D:\Proyectos\Componentes\PluginSDK\Source\;D:\Proyectos\FactuGES (Estudio)\Codigo\Modulos\Contactos\Cliente;D:\Proyectos\FactuGES (Estudio)\Codigo\Modulos\Contactos\Reglas +[HistoryLists\hlUnitAliases] +Count=1 +Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +[HistoryLists\hlSearchPath] +Count=16 +Item0=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente;..\..\Asientos\Cliente;..\..\Cuentas\Cliente +Item1=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente;..\..\Asientos\Cliente +Item2=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente +Item3=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente +Item4=..\Modulos\Presupuestos\Reglas;..\Modulos\Contactos\Reglas;..\Base;..\Configuracion;..\Usuarios;..\Modulos\Albaranes de cliente\Reglas +Item5=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\Base;..\Configuracion;..\Usuarios;..\Modulos\Intervalos;..\Modulos\Documentos asociados;..\Modulos\Contactos\Cliente;..\Modulos\Contactos\Reglas;..\Modulos\Presupuestos\Cliente;..\Modulos\Presupuestos\Reglas;..\Modulos\Albaranes de cliente\Cliente;..\Modulos\Albaranes de cliente\Reglas;..\Modulos\Facturas de cliente\Cliente;..\Modulos\Facturas de cliente\Reglas;..\Modulos\Pedidos a proveedor\Cliente;..\Modulos\Pedidos a proveedor\Reglas;..\Modulos\Facturas de proveedor\Cliente;..\Modulos\Facturas de proveedor\Reglas;..\Modulos\Montajes\Reglas;..\Modulos\Montajes\Cliente;..\Modulos\Articulos\Cliente;..\Modulos\Articulos\Reglas;..\Modulos\Almacenes\Reglas;..\Modulos\Almacenes\Cliente;..\Modulos\Pagos\Reglas;..\Modulos\Pagos\Cliente;..\Modulos\Cuentas\Reglas;..\Modulos\Cuentas\Cliente;..\Modulos\Asientos\Reglas;..\Modulos\Asientos\Cliente;..\Modulos\Calendarios\Cliente;..\Modulos\Calendarios\Reglas +Item6=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente;..\..\Documentos asociados;..\..\Contactos\Cliente;..\..\Almacenes\Cliente +Item7=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados +Item8=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente;..\..\Documentos asociados;..\..\Contactos\Cliente +Item9=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente;..\..\Documentos asociados +Item10=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente +Item11=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados;..\..\Montajes\Cliente;..\..\Almacenes\Cliente +Item12=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados;..\..\Montajes\Cliente +Item13=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\Servidor +Item14=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\base;..\Modulos\Calendarios\Cliente;..\Modulos\Calendarios\Reglas +Item15=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\Base;..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios +[HistoryLists\hlUnitOutputDirectory] +Count=1 +Item0=.\ +[HistoryLists\hlOutputDirectorry] +Count=2 +Item0=..\Output\Servidor +Item1=..\Output\Cliente +[HistoryLists\hlBPLOutput] +Count=3 +Item0=..\..\..\Output\Cliente +Item1=..\Output\Cliente +Item2=..\..\Output\Cliente +[HistoryLists\hlDCPOutput] +Count=1 +Item0=.\ diff --git a/Modulos/Cuentas/Cliente/Cuentas.dpk b/Modulos/Cuentas/Cliente/Cuentas.dpk new file mode 100644 index 0000000..6eb0390 --- /dev/null +++ b/Modulos/Cuentas/Cliente/Cuentas.dpk @@ -0,0 +1,86 @@ +package Cuentas; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION OFF} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$IMPLICITBUILD OFF} + +requires + vcl, + rtl, + PluginSDK_D7R, + GUISDK_D7, + PNG_D7, + PngComponentsD7, + dbrtl, + vcldb, + dsnap, + adortl, + JvCoreD7R, + vclx, + vcljpg, + JvAppFrmD7R, + JvStdCtrlsD7R, + JvSystemD7R, + vclactnband, + designide, + cxLibraryVCLD7, + dxThemeD7, + cxEditorsVCLD7, + cxDataD7, + JvPageCompsD7R, + tb2k_d7, + tbx_d7, + BaseD7, + Usuarios, + dxPSCoreD7, + dxComnD7, + cxGridVCLD7, + cxPageControlVCLD7, + cxExtEditorsVCLD7, + cxExportVCLD7, + cxIntlPrintSys3D7, + dxPScxCommonD7, + dxPSLnksD7, + vclshlctrls, + dxPScxGridLnkD7, + dclcxLibraryVCLD7, + frx7, + fs7, + fqb70, + bdertl, + ccpack70, + cfpack; + +contains + uBizCuentas in '..\Reglas\uBizCuentas.pas', + uDataModuleCuentas in 'uDataModuleCuentas.pas' {dmCuentas: TDAClientDataModule}, + uPluginControllerCuentas in 'uPluginControllerCuentas.pas' {ModuleCuentas: TModuleController}, + uViewCuentas in 'uViewCuentas.pas' {frViewCuentas: TCustomView}, + uEditorCuentas in 'uEditorCuentas.pas' {fEditorCuentas: TCustomEditor}, + uViewCuenta in 'uViewCuenta.pas' {frViewCuenta: TCustomView}, + uEditorCuenta in 'uEditorCuenta.pas' {fEditorCuenta: TCustomEditor}, + uListaCuentas in 'uListaCuentas.pas' {frListaCuentas: TCustomView}, + schCuentasClient_Intf in '..\Reglas\schCuentasClient_Intf.pas', + schCuentasServer_Intf in '..\Reglas\schCuentasServer_Intf.pas'; + +end. diff --git a/Modulos/Cuentas/Cliente/Cuentas.drc b/Modulos/Cuentas/Cliente/Cuentas.drc new file mode 100644 index 0000000..a5d5271 --- /dev/null +++ b/Modulos/Cuentas/Cliente/Cuentas.drc @@ -0,0 +1,14 @@ +/* VER150 + Generated by the Borland Delphi Pascal Compiler + because -GD or --drc was supplied to the compiler. + + This file contains compiler-generated resources that + were bound to the executable. + If this file is empty, then no compiler-generated + resources were bound to the produced executable. +*/ + +STRINGTABLE +BEGIN +END + diff --git a/Modulos/Cuentas/Cliente/Cuentas.res b/Modulos/Cuentas/Cliente/Cuentas.res new file mode 100644 index 0000000..ec5f233 Binary files /dev/null and b/Modulos/Cuentas/Cliente/Cuentas.res differ diff --git a/Modulos/Cuentas/Cliente/uDataModuleCuentas.ddp b/Modulos/Cuentas/Cliente/uDataModuleCuentas.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Cuentas/Cliente/uDataModuleCuentas.ddp differ diff --git a/Modulos/Cuentas/Cliente/uDataModuleCuentas.dfm b/Modulos/Cuentas/Cliente/uDataModuleCuentas.dfm new file mode 100644 index 0000000..294f555 Binary files /dev/null and b/Modulos/Cuentas/Cliente/uDataModuleCuentas.dfm differ diff --git a/Modulos/Cuentas/Cliente/uDataModuleCuentas.pas b/Modulos/Cuentas/Cliente/uDataModuleCuentas.pas new file mode 100644 index 0000000..62f4414 --- /dev/null +++ b/Modulos/Cuentas/Cliente/uDataModuleCuentas.pas @@ -0,0 +1,88 @@ +unit uDataModuleCuentas; + +interface + +uses {vcl:} SysUtils, Classes, DB, DBClient, + {RemObjects:} uDAClientDataModule, uDADataTable, uDABINAdapter, + uROServiceComponent, uRORemoteService, uROClient, uROBinMessage, + uROWinInetHttpChannel, uDAScriptingProvider, uDACDSDataTable, + uBizCuentas; + +type + TdmCuentas = class(TDAClientDataModule) + DABINAdapter: TDABINAdapter; + RORemoteService: TRORemoteService; + tbl_Cuentas: TDACDSDataTable; + ds_Cuentas: TDADataSource; + procedure DAClientDataModuleCreate(Sender: TObject); + private + public + function GetItems: IBizCuenta; + function GetItem(Codigo : Integer): IBizCuenta; + function PuedoEliminarCuenta(Codigo : Integer) : Boolean; + end; + +var + dmCuentas: TdmCuentas; + +implementation + +{$R *.DFM} + +uses + Controls, Forms, uDAInterfaces, DataAbstract_Intf, FactuGES_Intf, + uDataTableUtils, uROTypes, uEditorPreview, + Dialogs, schCuentasClient_Intf, uDataModuleBase, uDBSelectionList; + + +procedure TdmCuentas.DAClientDataModuleCreate(Sender: TObject); +begin + RORemoteService.Channel := dmBase.Channel; + RORemoteService.Message := dmBase.Message; +end; + +function TdmCuentas.GetItems: IBizCuenta; +var + dtCuentas: TDACDSDataTable; + ACursor: TCursor; +begin + ACursor := Screen.Cursor; + Screen.Cursor := crHourGlass; + try + dtCuentas := TDACDSDataTable.Create(NIL); + CloneDataTable(tbl_Cuentas, dtCuentas); + dtCuentas.BusinessRulesID := BIZ_CUENTA; + Result := (dtCuentas as IBizCuenta); + finally + Screen.Cursor := ACursor; + end; +end; + +function TdmCuentas.GetItem(Codigo: Integer): IBizCuenta; +var + ACuenta: IBizCuenta; +begin + ACuenta := GetItems; + with ACuenta.DataTable do + begin + if Active then Active := False; + Where.Clear; + Where.AddCondition(fld_CuentasCODIGO, cEqual, Codigo); + Active := True; + end; + Result := ACuenta; +end; + +function TdmCuentas.PuedoEliminarCuenta(Codigo: Integer): Boolean; +begin + Result := (RORemoteService as IsrvCuentas).PuedoEliminarCuenta(Codigo); +end; + +initialization + dmCuentas := TdmCuentas.Create(nil); + +finalization + FreeAndNil(dmCuentas); + +end. + diff --git a/Modulos/Cuentas/Cliente/uEditorCuenta.ddp b/Modulos/Cuentas/Cliente/uEditorCuenta.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Cuentas/Cliente/uEditorCuenta.ddp differ diff --git a/Modulos/Cuentas/Cliente/uEditorCuenta.dfm b/Modulos/Cuentas/Cliente/uEditorCuenta.dfm new file mode 100644 index 0000000..d26400c --- /dev/null +++ b/Modulos/Cuentas/Cliente/uEditorCuenta.dfm @@ -0,0 +1,132 @@ +inherited fEditorCuenta: TfEditorCuenta + Left = 408 + Top = 316 + HorzScrollBar.Visible = False + VertScrollBar.Range = 0 + VertScrollBar.Visible = False + BorderStyle = bsDialog + Caption = 'Ficha de cuenta' + ClientHeight = 459 + ClientWidth = 630 + Scaled = False + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + Width = 630 + Caption = 'Cuenta' + inherited Image1: TImage + Left = 603 + Picture.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001800 + 0000180806000000E0773DF80000000970485973000017120000171201679FD2 + 520000000467414D410000B18E7CFB5193000002F14944415478DAB5960B4814 + 411CC6BFBD67E74964266260986447A8216A6686585964929251529410598969 + 709C65566A6826667948662565080549450749412F2AA21222148C42E8454660 + 6698A9F7DADB6B678E3D1F3BA517F687657761E6FBFDBF6F66D8E5DC6E37FE67 + 71D283E561D7A4A4ACD4686E2A632B6BCFA2E3EE396E14B0E99ADB92BF081B56 + 453127F40F0CE3DB8F21747FEAA3EF86B02004CDD663CE2C7FE6F8D8B4BDE8E8 + 35009D468E23E2F09F074B8E9E02F2DAECB2094D195AEFC4F6B606A8940AE4DF + 7630C5C9582F60C15CC80013ABBB1F303FB7A3719D1A09EB0BF1D4520FD30337 + 4C495A1802D911F90420E570BAE0E45D48CE32E2D17533542A05D42A2575A250 + 70BE015811995773E079012B379B70BFF5A428AC44F1638ED98C4F1191CE3BFB + 94687E654775328F355B0EE0CE951338FA4283DC382D22031CD069D532175302 + 08821B56BB9376CEBB484402D2B71FC4AD966A3122A51891823AD1CD50CBA2F2 + 39A28A650E11E442E68EC3B8D95C45058FBDD4FD5B44A473DE25D045B5890EDE + 8FE86944876287B131B714ADE72B50D73513654BACD4098968E2A2FF1190B922 + D22B4EA2F144E4C2AF11078D247B4F392E9F29A7621AB547D01391721C243EBD + 800D58BBDC00E33D4166BB287A9042730A2B71A9FE08153AFD36801951439A0A + 8919FBD880D4A511B463A7E882DC6D0E1EED3F03F1E4831DF911DFB1D3781C4D + A74A70F1633052C2B588D7F7C18F3818B3E8C409392F4C404A5CB8579C444400 + A473E9CADB5F83C69A626F1CE4D2EB343496B110725E9880A49830943D53CB6C + EF9ADF4B810525B5A8AF2AA2C22D3D21CC88A4F3C2042444857AF6BD20D0FB88 + CD8181412BAEF686625BC817184BEB60AE34D1F7ADC13DD0FB69C48834E3169D + 3821E7850958BC30840A4B91586D4E7A275B9794A9DC4C0152912D4976911497 + 0422DB9909201F8AE92A1980D46EFECDB4885F783DE87998084067FBB439404C + 2230F479F493F9D7C15203634B9C3C69DDC8E6B8C947311A78F7957E6FA73295 + FBDFBF2DBF01AB269FECD6A6E3080000000049454E44AE426082} + end + end + inherited TBXDock: TTBXDock + Width = 630 + inherited tbxMain: TTBXToolbar + inherited TBXItem2: TTBXItem + Visible = False + end + inherited TBXItem5: TTBXItem + Visible = False + end + inherited TBXItem23: TTBXItem + Visible = False + end + inherited TBXItem3: TTBXItem + Visible = False + end + end + inherited tbxMenu: TTBXToolbar + DockPos = 0 + inherited TBXSubmenuItem4: TTBXSubmenuItem + inherited TBXItem8: TTBXItem + Visible = False + end + inherited TBXSeparatorItem5: TTBXSeparatorItem + Visible = False + end + inherited TBXItem10: TTBXItem + Visible = False + end + inherited TBXSeparatorItem6: TTBXSeparatorItem + Visible = False + end + inherited TBXItem21: TTBXItem + Visible = False + end + inherited TBXItem22: TTBXItem + Visible = False + end + inherited TBXItem9: TTBXItem + Visible = False + end + end + inherited TBXSubmenuItem1: TTBXSubmenuItem + inherited TBXItem32: TTBXItem + Visible = False + end + inherited TBXItem31: TTBXItem + Visible = False + end + inherited TBXSeparatorItem13: TTBXSeparatorItem + Visible = False + end + end + end + end + inherited pgPaginas: TPageControl + Width = 630 + Height = 364 + inherited pagGeneral: TTabSheet + Constraints.MinHeight = 140 + end + end + inherited StatusBar: TStatusBar + Top = 440 + Width = 630 + end + inherited EditorActionList: TActionList + Top = 128 + end + inherited SmallImages: TPngImageList + Top = 112 + end + inherited dsDataTable: TDADataSource [6] + OnDataChange = dsDataTableDataChange + Left = 168 + Top = 120 + end + inherited LargeImages: TPngImageList [7] + Top = 112 + end + inherited JvFormStorage: TJvFormStorage [8] + end + inherited JvAppRegistryStorage: TJvAppRegistryStorage [9] + end +end diff --git a/Modulos/Cuentas/Cliente/uEditorCuenta.pas b/Modulos/Cuentas/Cliente/uEditorCuenta.pas new file mode 100644 index 0000000..535fb6b --- /dev/null +++ b/Modulos/Cuentas/Cliente/uEditorCuenta.pas @@ -0,0 +1,149 @@ +unit uEditorCuenta; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uEditorDBItem, ToolWin, ComCtrls, JvExControls, JvComponent, + JvNavigationPane, ActnList, uEditorBase, StdActns, TB2Dock, TB2Toolbar, + TBX, ImgList, PngImageList, TB2Item, uEditorItem, DB, uDADataTable, + uEditorDBBase, JvFormAutoSize, uDAScriptingProvider, uDACDSDataTable, + StdCtrls, pngimage, ExtCtrls, TBXDkPanels, JvButton, AppEvnts, uCustomView, + uViewBase, JvAppStorage, JvAppRegistryStorage, JvFormPlacement, + + uViewCuenta, uBizCuentas; + +type + IEditorCuenta = interface(IEditorDBItem) + ['{BADE8E8B-B0BC-4759-B2EE-4B4082827BE0}'] + function GetCuenta: IBizCuenta; + procedure SetCuenta(const Value: IBizCuenta); + property Cuenta: IBizCuenta read GetCuenta write SetCuenta; + end; + + TfEditorCuenta = class(TfEditorDBItem, IEditorCuenta) + + procedure FormShow(Sender: TObject); + procedure dsDataTableDataChange(Sender: TObject; Field: TField); + procedure actEliminarExecute(Sender: TObject); + private + FCuenta: IBizCuenta; + FViewCuenta : IViewCuenta; + protected + function GetCuenta: IBizCuenta; virtual; + procedure SetCuenta(const Value: IBizCuenta); virtual; + + function GetViewCuenta: IViewCuenta; + procedure SetViewCuenta(const Value: IViewCuenta); + property ViewCuenta: IViewCuenta read GetViewCuenta write + SetViewCuenta; + public + property Cuenta: IBizCuenta read GetCuenta write SetCuenta; + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + end; + +implementation + +{$R *.dfm} + +uses + uEditorUtils; + +function ShowEditorCuenta (ABizObject : TDADataTableRules): TModalResult; +var + AEditor: TfEditorCuenta; +begin + AEditor := TfEditorCuenta.Create(Application); + try + AEditor.Cuenta := (ABizObject as IBizCuenta); + Result := AEditor.ShowModal; + finally + AEditor.Release; + end; +end; + +{ +******************************* TfEditorCuenta ******************************* +} +function TfEditorCuenta.GetCuenta: IBizCuenta; +begin + Result := FCuenta; +end; + +function TfEditorCuenta.GetViewCuenta: IViewCuenta; +begin + Result := FViewCuenta; +end; + +procedure TfEditorCuenta.SetCuenta(const Value: IBizCuenta); +begin + FCuenta := Value; + dsDataTable.DataTable := FCuenta.DataTable; + + if Assigned(FViewCuenta) and Assigned(Cuenta) then + FViewCuenta.Cuenta := Cuenta; +end; + +procedure TfEditorCuenta.SetViewCuenta(const Value: IViewCuenta); +begin + FViewCuenta := Value; + + if Assigned(FViewCuenta) and Assigned(Cuenta) then + FViewCuenta.Cuenta := Cuenta; +end; + +procedure TfEditorCuenta.FormShow(Sender: TObject); +begin + inherited; + + if not Assigned(FViewCuenta) then + raise Exception.Create('No hay ninguna vista asignada'); + + if not Assigned(Cuenta) then + raise Exception.Create('No hay ninguna cuenta asignado'); + + Cuenta.DataTable.Active := True; + FViewCuenta.ShowEmbedded(pagGeneral); + FViewCuenta.SetFocus; +end; + +destructor TfEditorCuenta.Destroy; +begin + FViewCuenta := NIL; + FCuenta := NIL; + inherited; +end; + +constructor TfEditorCuenta.Create(AOwner: TComponent); +begin + inherited; + ViewCuenta := CreateView(TfrViewCuenta) as IViewCuenta; +end; + +procedure TfEditorCuenta.dsDataTableDataChange(Sender: TObject; + Field: TField); +begin + inherited; + if Assigned(FCuenta) and (not (FCuenta.DataTable.Fetching) or + not (FCuenta.DataTable.Opening) or not (FCuenta.DataTable.Closing)) then + begin + if Length(FCuenta.NOMBRE) = 0 then + JvNavPanelHeader.Caption := 'Nueva cuenta' + else + JvNavPanelHeader.Caption := 'Cuenta - ' + FCuenta.Nombre; + Caption := JvNavPanelHeader.Caption; + end; +end; + +procedure TfEditorCuenta.actEliminarExecute(Sender: TObject); +begin + if (Application.MessageBox('¿Está seguro que desea borrar esta cuenta?, se borrarán todos sus asientos.', 'Atención', MB_YESNO) = IDYES) then + inherited; +end; + +initialization + RegisterEditor(IBizCuenta, ShowEditorCuenta, etItem); + +end. + diff --git a/Modulos/Cuentas/Cliente/uEditorCuentas.ddp b/Modulos/Cuentas/Cliente/uEditorCuentas.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Cuentas/Cliente/uEditorCuentas.ddp differ diff --git a/Modulos/Cuentas/Cliente/uEditorCuentas.dfm b/Modulos/Cuentas/Cliente/uEditorCuentas.dfm new file mode 100644 index 0000000..64ade64 --- /dev/null +++ b/Modulos/Cuentas/Cliente/uEditorCuentas.dfm @@ -0,0 +1,1435 @@ +inherited fEditorCuentas: TfEditorCuentas + Left = 247 + Top = 222 + Caption = 'Lista de cuentas' + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + Caption = 'Lista de cuentas' + inherited Image1: TImage + Picture.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001800 + 0000180806000000E0773DF80000000970485973000017120000171201679FD2 + 520000000467414D410000B18E7CFB5193000004184944415478DAB5956D6C53 + 5518C7FFB51DAC5DDD708C1637E858BACD4DB7B0E150E30BA27C40067C923895 + 2FCA07256498A841488C41741247B0716FBE2C324894619097958EB1267B6163 + 5BE7EA149DA3AC0912DC24A332D8FA7EDBDE5BCF39B5775C486F3F719AF3E13E + E79EDFEF3ECF737BAE221A8DE27E0EC59D0285422159ACAEFE8D2D3636962BEE + 8EE7AAAA9093FD205EFF6054B2B66E7551B46BC4A1482AA090479E984659B101 + A90B552CF6AF4B40475B10149EBAAA0E46830E4B32B56CCD757D12A68FAAA154 + 02565B12411CFEE44A234A0A0D2C3662BF8113C76F89F0FC5C1D1E2F31225DAB + 817D64181FBFF716F6EF5E81DAAF2671B2FBCFC48238FCA9B27C3C9ABF1C51F2 + B3D95C309F9E8717ACD0A382C0B5696A0C0F0EE0D3DD3BF0C9FBB958AA5B805D + 357F2516ECDC7991C19F5E558062E33208421483432E58CCF3F0C2BCA5585D6A + 84469D0A1B81D710F83E027F98C0E9482AC8C80C63EE568AA4D9149E68740E3E + 80E6DA02F13AA960CD9A5C09A0A9A90E9BCA8F6163551532753AC9DAF090030D + F53DA22012E6B1A7F61A4EC9093656164A209FD71E6082D7B6BF0D7D4E8E64AD + A37D14F5260BBED96F04CF47112282BDA6299CEA9111BCB0D6001A8BF0118438 + 0E875A5A6219BC5A85C524037A7B84C0829C80DEEE71FC78F4021AF6E5211C11 + 1026829A86EB38DD3B9E585054A421CD15E0F5BA61B576B038151497AD8446AB + 65823977187F4FF96169BFC4D60F7E6860703A0F34BBD02627A025A2211AA769 + 7F613A2829118DD3CCFC5E2FAC9D1771A465009FEDCA26F5175889EA0ECFA0ED + BC8CA07243217B3D293C4C3635349A24022E1864703ABBBBC6D1DA6AC7DE77F4 + A4443C1108F8FA87DB30F75D4A2C78697D0101C7E01152D76F9BBF14058BB2B2 + E0F37844417F9F13274EFE813DDBB3C41E7C77DC8D337282752FE62314E29984 + 0A0E1FA9678297DF7C03DA8C8C7981C78BA1A1AB38737602EF6E7BE8FF3D02BE + 37FB60E997113CF76C1EB959886540E6D1634D4C5059F50AD24893BD62063E72 + 3E4DC2DA750D3BB6A6830BC59AFCD3B9202C171C8905A5258B193C148A204C36 + 7574B63241F933CF439D96C6C05E8F9F4C1F1C976FE2E7D19BD8B645038EE349 + C63CCC3D11B4CB0952525CE0C98D01D24CA7F377F1351516E8214495080478CC + CE72989DE3F0CF34C7D6B76E5E2866D03910C5D9011941C963D9E4C9E34D2637 + 9F6B6682D28A0A28552A04FC7E04C9A4657238DDF8652C882DEB552483082CE7 + 816EFB65E9097DCF61971E60A9068321F2B4014C38ED4CA05EB48C65E0F771F0 + 7839B8E78298B91DC68D19019BD74284538EAC80E3AE8AD7779668EC8A1A778F + 7889E888C3930A96E72C210D8EFDD1E8E8ED3BC404597A3DE94D841C215E84B9 + 1878721AB832A520359F907C97650563636DF73C2915F4FFAA8C6D16A2EC2B47 + 07CF93EF814D0A9715DC8FF11FAABDDDEF79CA04C30000000049454E44AE4260 + 82} + end + end + inherited TBXDock: TTBXDock + inherited tbxFiltro: TTBXToolbar + Left = 411 + inherited tbxEditFiltro: TTBXEditItem + EditOptions = [tboUseEditWhenVertical] + end + inherited TBXItem37: TTBXItem + Visible = False + end + end + end + inline frViewBarraSeleccion: TfrViewBarraSeleccion [3] + Left = 0 + Top = 395 + Width = 885 + Height = 37 + Align = alBottom + AutoScroll = False + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 3 + Visible = False + ReadOnly = False + inherited pnlSeleccion: TPanel + Top = 0 + Width = 885 + inherited bSeleccionar: TButton + Left = 546 + end + inherited bCancelar: TButton + Left = 625 + end + end + inherited ActionListSeleccion: TActionList + inherited actSeleccionar: TAction + OnExecute = frViewBarraSeleccionactSeleccionarExecute + end + end + end + inherited EditorActionList: TActionList [4] + inherited actNuevo: TAction + ImageIndex = 22 + OnExecute = actNuevoExecute + end + inherited actDuplicar: TAction + Visible = False + end + end + inherited SmallImages: TPngImageList [5] + 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 + 610000000970485973000017120000171201679FD252000002194944415478DA + 63FCFFFF3F03232323030CE4E49CFF0FA2A74C31840BDADBD7FFF7315CCE503A + E116422110389B6AFC67443600A459DDEC05B21A8635734F30803473184D4411 + DF30B9104CC30D8069F6B4D363509697024B3A3834C0353B99CA3168696881C5 + 5DCC34196675AA32A495DF8618909B7BE1BFB7971A5872EBB65B60FAF2E50D60 + CD05CD4D0C136AEBE036EF38CA04D6FCFBF73F86EC9ABB9806C040476717DC00 + 64E0E1D4C030B54599E1D7AFBF0C854D0F1006484AFE030A7E63F8F39B89E1E3 + A7CF40171C071B202E2D0DD6F8E1E36F86074F7E305CBCFA85A1B352166C406D + EF334C17FCF9F39FE1C78FBF0C53A6F6A1B8E0C7F71F0C1FDEBE6548889BCDD0 + 5C2C0536A079F24B5403609A4178CEDC897003609A41B8A0701D4379BA08C3AF + DF7F19FAE7BD4718E0EEA60AD70CC24B964E011B90515505D70CC20D2D07190A + 9304C12E98BAE413C2007B3B25B8E69F3FFF31AC5E330D6C40447A3A5CF3A70F + 1F18FAA65C644809E566F8093460F1C61F9881F8EDEB4F864F9F3F33DCB87101 + 6CC0F30F7CE03078F1EA17C3CBD7BFC0EC587F0EA0257F1856EDF88330405F4F + 066CF3CF9F1017ECDC351B6C8085A323D8E64FEFDF83E9555B3F31F83B32825D + 004A13282E78FEFC2630C07E317CF9FA15C87E85D3051ED6FFC09AF79EBEC108 + 374051411C6CF32F200681FD07E7820D90515080B8008861291104409AE17901 + 64002CF922039001300DC800A6196E0025000048B3879138758C930000000049 + 454E44AE426082} + Name = 'PngImage22' + Background = clWindow + end> + Bitmap = {} + end + inherited LargeImages: TPngImageList [6] + 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 + F80000000970485973000017120000171201679FD252000002F14944415478DA + B5960B4814411CC6BFBD67E74964266260986447A8216A668658596492925152 + 9410598969709C65566A6826667948662565080549450749412F2AA21222148C + 42E84546606698A9F7DADB6B678E3D1F3BA517F687657761E6FBFDBF6F66D8E5 + DC6E37FE6771D283E561D7A4A4ACD4686E2A632B6BCFA2E3EE396E14B0E99ADB + 92BF081B56453127F40F0CE3DB8F21747FEAA3EF86B02004CDD663CE2C7FE6F8 + D8B4BDE8E835009D468E23E2F09F074B8E9E02F2DAECB2094D195AEFC4F6B606 + A8940AE4DF7630C5C9582F60C15CC80013ABBB1F303FB7A3719D1A09EB0BF1D4 + 520FD303374C495A1802D911F90420E570BAE0E45D48CE32E2D17533542A05D4 + 2A2575A25070BE015811995773E079012B379B70BFF5A428AC44F1638ED98C4F + 1191CE3BFB94687E654775328F355B0EE0CE951338FA4283DC382D22031CD069 + D53217530208821B56BB9376CEBB484402D2B71FC4AD966A3122A51891823AD1 + CD50CBA2F239A28A650E11E442E68EC3B8D95C45058FBDD4FD5B44A473DE25D0 + 45B5890EDE8FE86944876287B131B714ADE72B50D73513654BACD4098968E2A2 + FF1190B922D22B4EA2F144E4C2AF11078D247B4F392E9F29A7621AB547D01391 + 721C243EBD800D58BBDC00E33D4166BB287A9042730A2B71A9FE08153AFD3680 + 1951439A0A8919FBD880D4A511B463A7E882DC6D0E1EED3F03F1E4831DF911DF + B1D3781C4DA74A70F1633052C2B588D7F7C18F3818B3E8C409392F4C404A5CB8 + 579C444400A473E9CADB5F83C69A626F1CE4D2EB343496B110725E9880A49830 + 943D53CB6CEF9ADF4B810525B5A8AF2AA2C22D3D21CC88A4F3C2042444857AF6 + BD20D0FB88CD8181412BAEF686625BC817184BEB60AE34D1F7ADC13DD0FB69C4 + 8834E3169D3821E7850958BC30840A4B91586D4E7A275B9794A9DC4C0152912D + 49769114970422DB9909201F8AE92A1980D46EFECDB4885F783DE87998084067 + FBB439404C2230F479F493F9D7C15203634B9C3C69DDC8E6B8C947311A78F795 + 7E6FA73295FBDFBF2DBF01AB269FECD6A6E3080000000049454E44AE426082} + Name = 'PngImage21' + Background = clWindow + end> + Bitmap = {} + end + inherited JvFormStorage: TJvFormStorage [7] + end + inherited JvAppRegistryStorage: TJvAppRegistryStorage [8] + end + inherited dsDataTable: TDADataSource [9] + end +end diff --git a/Modulos/Cuentas/Cliente/uEditorCuentas.pas b/Modulos/Cuentas/Cliente/uEditorCuentas.pas new file mode 100644 index 0000000..dc9650b --- /dev/null +++ b/Modulos/Cuentas/Cliente/uEditorCuentas.pas @@ -0,0 +1,169 @@ +unit uEditorCuentas; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uEditorBase, uEditorGrid, ToolWin, ComCtrls, JvExControls, JvComponent, + JvNavigationPane, ActnList, DBActns, uViewGrid, Menus, ImgList, PngImageList, + TB2Dock, TB2Toolbar, TBX, TB2Item, StdActns, TB2ExtItems, TBXExtItems, + TB2MRU, DB, uDADataTable, JvFormAutoSize, uDAScriptingProvider, uDACDSDataTable, + JvAppStorage, JvAppRegistryStorage, JvFormPlacement, ExtCtrls, uCustomView, + uViewBase, uViewBarraSeleccion, pngimage, + + uViewCuentas, uBizCuentas, JvComponentBase; + +type + IEditorCuentas = interface(IEditorGrid) + ['{F1DCDA99-2E02-43FC-A2D0-43BF7C3C1FD1}'] + function GetCuentas: IBizCuenta; + procedure SetCuentas(const Value: IBizCuenta); + property Cuentas: IBizCuenta read GetCuentas write SetCuentas; + + function GetSelectionBarVisible: Boolean; + procedure SetSelectionBarVisible(const Value: Boolean); + property SelectionBarVisible : Boolean read GetSelectionBarVisible write + SetSelectionBarVisible; + end; + + TfEditorCuentas = class(TfEditorGrid, IEditorCuentas) + frViewBarraSeleccion: TfrViewBarraSeleccion; + procedure FormShow(Sender: TObject); + procedure actNuevoExecute(Sender: TObject); + procedure actModificarExecute(Sender: TObject); + procedure actEliminarExecute(Sender: TObject); + procedure frViewBarraSeleccionactSeleccionarExecute(Sender: TObject); + private + FCuentas: IBizCuenta; + protected + function GetCuentas: IBizCuenta; virtual; + procedure SetCuentas(const Value: IBizCuenta); virtual; + procedure SetViewGrid(const Value: IViewGrid); override; + function GetSelectionBarVisible: Boolean; virtual; + procedure SetSelectionBarVisible(const Value: Boolean); virtual; + public + property SelectionBarVisible : Boolean read GetSelectionBarVisible write + SetSelectionBarVisible; + property Cuentas: IBizCuenta read GetCuentas write SetCuentas; + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + end; + +implementation + +uses + uEditorUtils, uDataModuleCuentas; + +{$R *.dfm} + +function ShowEditorCuentas (ABizObject : TDADataTableRules): TModalResult; +var + AEditor: TfEditorCuentas; +begin + AEditor := TfEditorCuentas.Create(Application); + try + AEditor.Cuentas := (ABizObject as IBizCuenta); + Result := AEditor.ShowModal; + finally + AEditor.Release; + end; +end; + +{ +****************************** TfEditorCuentas ******************************* +} +procedure TfEditorCuentas.FormShow(Sender: TObject); +begin + inherited; + + if not Assigned(ViewGrid) then + raise Exception.Create('No hay ninguna vista asignada'); + + if not Assigned(Cuentas) then + raise Exception.Create('No hay ningún Cuenta asignado'); + + Cuentas.DataTable.Active := True; +end; + +function TfEditorCuentas.GetCuentas: IBizCuenta; +begin + Result := FCuentas; +end; + +procedure TfEditorCuentas.SetCuentas(const Value: IBizCuenta); +begin + FCuentas := Value; + dsDataTable.DataTable := FCuentas.DataTable; + if Assigned(ViewGrid) then + (ViewGrid as IViewCuentas).Cuentas := Cuentas; +end; + +procedure TfEditorCuentas.actNuevoExecute(Sender: TObject); +begin + inherited; + Cuentas.Insert; + Cuentas.Show; + ViewGrid.RefreshGrid; + ViewGrid.SyncFocusedRecordsFromDataSet; +end; + +procedure TfEditorCuentas.actModificarExecute(Sender: TObject); +begin + inherited; + Cuentas.Show; + ViewGrid.RefreshGrid; + ViewGrid.SyncFocusedRecordsFromDataSet; +end; + +procedure TfEditorCuentas.SetViewGrid(const Value: IViewGrid); +begin + inherited; + if Assigned(ViewGrid) and Assigned(Cuentas) then + (ViewGrid as IViewCuentas).Cuentas := Cuentas; +end; + +destructor TfEditorCuentas.Destroy; +begin + FCuentas := NIL; + inherited; +end; + +function TfEditorCuentas.GetSelectionBarVisible: Boolean; +begin + Result := frViewBarraSeleccion.Visible +end; + +procedure TfEditorCuentas.SetSelectionBarVisible(const Value: Boolean); +begin + frViewBarraSeleccion.Visible := True; + ViewGrid.OnDblClick := frViewBarraSeleccion.actSeleccionar.OnExecute; +end; + +procedure TfEditorCuentas.frViewBarraSeleccionactSeleccionarExecute( + Sender: TObject); +begin + inherited; + ViewGrid.SyncFocusedRecordsFromGrid; + ModalResult := mrOK; +end; + +constructor TfEditorCuentas.Create(AOwner: TComponent); +begin + inherited; + ViewGrid := CreateView(TfrViewCuentas) as IViewCuentas; +end; + +procedure TfEditorCuentas.actEliminarExecute(Sender: TObject); +begin + if (Application.MessageBox('¿Está seguro que desea borrar esta cuenta?'+#10#13+'(Se borrarán todos sus asientos)', 'Atención', MB_YESNO) = IDYES) then + begin + inherited; + ViewGrid.RefreshGrid; + end; +end; + +initialization + RegisterEditor(IBizCuenta, ShowEditorCuentas, etItems); + +end. + diff --git a/Modulos/Cuentas/Cliente/uListaAlmacenes.ddp b/Modulos/Cuentas/Cliente/uListaAlmacenes.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Cuentas/Cliente/uListaAlmacenes.ddp differ diff --git a/Modulos/Cuentas/Cliente/uListaAlmacenes.dfm b/Modulos/Cuentas/Cliente/uListaAlmacenes.dfm new file mode 100644 index 0000000..66f8ea4 --- /dev/null +++ b/Modulos/Cuentas/Cliente/uListaAlmacenes.dfm @@ -0,0 +1,104 @@ +object fListaAlmacenes: TfListaAlmacenes + Left = 356 + Top = 461 + Width = 363 + Height = 150 + ActiveControl = cxAlmacenes + Caption = 'fListaAlmacenes' + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + PixelsPerInch = 96 + TextHeight = 13 + object Label1: TLabel + Left = 21 + Top = 42 + Width = 100 + Height = 13 + Caption = 'Nombre del almac'#233'n:' + end + object Label5: TLabel + Left = 9 + Top = 9 + Width = 84 + Height = 13 + Caption = 'Elegir almac'#233'n' + Font.Charset = DEFAULT_CHARSET + Font.Color = clActiveCaption + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + ParentFont = False + end + object Bevel1: TBevel + Left = 108 + Top = 9 + Width = 237 + Height = 9 + Shape = bsBottomLine + end + object cxAlmacenes: TcxLookupComboBox + Left = 128 + Top = 38 + Properties.KeyFieldNames = 'CODIGO' + Properties.ListColumns = < + item + SortOrder = soAscending + FieldName = 'NOMBRE' + end> + Properties.ListOptions.AnsiSort = True + Properties.ListOptions.GridLines = glNone + Properties.ListOptions.ShowHeader = False + Properties.ListSource = DADataSource + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 0 + Width = 217 + end + object pnlSeleccion: TPanel + Left = 0 + Top = 79 + Width = 355 + Height = 37 + Align = alBottom + BevelOuter = bvNone + ParentBackground = True + TabOrder = 1 + DesignSize = ( + 355 + 37) + object bSeleccionar: TButton + Left = 192 + Top = 7 + Width = 74 + Height = 23 + Anchors = [akRight] + Caption = '&Seleccionar' + Default = True + ModalResult = 1 + TabOrder = 0 + OnClick = bSeleccionarClick + end + object bCancelar: TButton + Left = 273 + Top = 7 + Width = 74 + Height = 23 + Anchors = [akRight] + Cancel = True + Caption = '&Cancelar' + ModalResult = 2 + TabOrder = 1 + end + end + object DADataSource: TDADataSource + Left = 84 + Top = 68 + end +end diff --git a/Modulos/Cuentas/Cliente/uListaAlmacenes.pas b/Modulos/Cuentas/Cliente/uListaAlmacenes.pas new file mode 100644 index 0000000..17fd6f0 --- /dev/null +++ b/Modulos/Cuentas/Cliente/uListaAlmacenes.pas @@ -0,0 +1,79 @@ +unit uListaAlmacenes; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, cxGraphics, cxControls, cxContainer, cxEdit, cxTextEdit, + cxMaskEdit, cxDropDownEdit, cxLookupEdit, cxDBLookupEdit, + cxDBLookupComboBox, DB, uDADataTable, uCustomView, uViewBase, + uViewBarraSeleccion, uBizAlmacenes, ExtCtrls, StdCtrls, + Grids, DBGrids; + +type + TfListaAlmacenes = class(TForm) + DADataSource: TDADataSource; + Label1: TLabel; + Label5: TLabel; + Bevel1: TBevel; + cxAlmacenes: TcxLookupComboBox; + pnlSeleccion: TPanel; + bSeleccionar: TButton; + bCancelar: TButton; + procedure bSeleccionarClick(Sender: TObject); + private + FAlmacenes: IBizAlmacen; + function GetAlmacenes: IBizAlmacen; + procedure SetAlmacen(const Value: IBizAlmacen); + public + property Almacenes: IBizAlmacen read GetAlmacenes write SetAlmacen; + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + end; + +var + fListaAlmacenes: TfListaAlmacenes; + +implementation +{$R *.dfm} + +uses uDataModuleAlmacenes, schAlmacenesClient_Intf; + +{ TfListaAlmacenes } + +constructor TfListaAlmacenes.Create(AOwner: TComponent); +begin + inherited; +end; + +destructor TfListaAlmacenes.Destroy; +begin + FAlmacenes := Nil; + inherited; +end; + +function TfListaAlmacenes.GetAlmacenes: IBizAlmacen; +begin + Result := FAlmacenes; +end; + +procedure TfListaAlmacenes.SetAlmacen(const Value: IBizAlmacen); +begin + FAlmacenes := Value; + if Assigned(FAlmacenes) then + begin + DADataSource.DataTable := FAlmacenes.DataTable; + FAlmacenes.DataTable.Active := True; + cxAlmacenes.ItemIndex := 0; + end + else + DADataSource.DataTable := Nil; +end; + +procedure TfListaAlmacenes.bSeleccionarClick(Sender: TObject); +begin + FAlmacenes.First; + FAlmacenes.Locate(fld_ALMACENESNOMBRE, cxAlmacenes.Text); +end; + +end. diff --git a/Modulos/Cuentas/Cliente/uListaCuentas.ddp b/Modulos/Cuentas/Cliente/uListaCuentas.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Cuentas/Cliente/uListaCuentas.ddp differ diff --git a/Modulos/Cuentas/Cliente/uListaCuentas.dfm b/Modulos/Cuentas/Cliente/uListaCuentas.dfm new file mode 100644 index 0000000..2d07742 --- /dev/null +++ b/Modulos/Cuentas/Cliente/uListaCuentas.dfm @@ -0,0 +1,36 @@ +inherited frListaCuentas: TfrListaCuentas + Width = 461 + Height = 35 + object Label3: TLabel + Left = 23 + Top = 10 + Width = 39 + Height = 13 + Caption = 'Cuenta:' + end + object cxCuenta: TcxDBLookupComboBox + Left = 72 + Top = 7 + Properties.KeyFieldNames = 'CODIGO' + Properties.ListColumns = < + item + FieldName = 'NOMBRE' + end> + Properties.ListOptions.ShowHeader = False + Properties.ListSource = DADataSource + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.Kind = lfStandard + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.Kind = lfStandard + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.Kind = lfStandard + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 0 + Width = 369 + end + object DADataSource: TDADataSource + Left = 439 + Top = 65533 + end +end diff --git a/Modulos/Cuentas/Cliente/uListaCuentas.pas b/Modulos/Cuentas/Cliente/uListaCuentas.pas new file mode 100644 index 0000000..cf28796 --- /dev/null +++ b/Modulos/Cuentas/Cliente/uListaCuentas.pas @@ -0,0 +1,80 @@ +unit uListaCuentas; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, uBizCuentas, cxGraphics, StdCtrls, DB, uDADataTable, + cxControls, cxContainer, cxEdit, cxTextEdit, cxMaskEdit, cxDropDownEdit, + cxLookupEdit, cxDBLookupEdit, cxDBExtLookupComboBox, cxDBLookupComboBox; + +type + IListaCuentas = interface(IViewBase) + ['{292056C8-4993-460A-A071-705E0D64D31C}'] + function GetCuenta: IBizCuenta; + property Cuenta: IBizCuenta read GetCuenta; + + function GetOnCuentaChanged : TNotifyEvent; + procedure SetOncuentaChanged (const Value : TNotifyEvent); + property OnCuentaChanged : TNotifyEvent read GetOnCuentaChanged + write SetOnCuentaChanged; + end; + + TfrListaCuentas = class(TfrViewBase, IListaCuentas) + DADataSource: TDADataSource; + Label3: TLabel; + cxCuenta: TcxDBLookupComboBox; + private + FCuentas: IBizCuenta; + FOnCuentaChanged: TNotifyEvent; + function GetCuenta: IBizCuenta; + function GetOnCuentaChanged : TNotifyEvent; + procedure SetOncuentaChanged (const Value : TNotifyEvent); + public + property Cuenta: IBizCuenta read GetCuenta; + property OnCuentaChanged : TNotifyEvent read GetOnCuentaChanged + write SetOnCuentaChanged; + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + end; + +var + frListaCuentas: TfrListaCuentas; + +implementation + +{$R *.dfm} +{ TfListaCuentas } + +uses uDataModuleCuentas; + +constructor TfrListaCuentas.Create(AOwner: TComponent); +begin + inherited; + FCuentas := dmCuentas.GetItems; + DADataSource.DataTable := FCuentas.DataTable; + FCuentas.DataTable.Active := True; +end; + +destructor TfrListaCuentas.Destroy; +begin + FCuentas := Nil; + inherited; +end; + +function TfrListaCuentas.GetCuenta: IBizCuenta; +begin + Result := FCuentas; +end; + +function TfrListaCuentas.GetOnCuentaChanged: TNotifyEvent; +begin + Result := FOnCuentaChanged; +end; + +procedure TfrListaCuentas.SetOnCuentaChanged(const Value: TNotifyEvent); +begin + FOnCuentaChanged := Value; +end; + +end. diff --git a/Modulos/Cuentas/Cliente/uPluginControllerCuentas.ddp b/Modulos/Cuentas/Cliente/uPluginControllerCuentas.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Cuentas/Cliente/uPluginControllerCuentas.ddp differ diff --git a/Modulos/Cuentas/Cliente/uPluginControllerCuentas.dfm b/Modulos/Cuentas/Cliente/uPluginControllerCuentas.dfm new file mode 100644 index 0000000..050beb9 --- /dev/null +++ b/Modulos/Cuentas/Cliente/uPluginControllerCuentas.dfm @@ -0,0 +1,167 @@ +object ModuleCuentas: TModuleCuentas + OldCreateOrder = True + Description = 'Cuentas' + ModuleMenu = MainMenu + ModuleName = 'Cuentas' + SmallImages = SmallImages + LargeImages = LargeImages + Author = 'Rodax Software' + Version = '1.0.0' + Left = 497 + Top = 391 + Height = 248 + Width = 397 + object LargeImages: TPngImageList + Height = 24 + Width = 24 + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD252000004184944415478DA + B5956D6C535518C7FFB51DAC5DDD708C1637E858BACD4DB7B0E150E30BA27C40 + 067C9238952FCA07256498A841488C41741247B0716FBE2C324894619097958E + B1267B61635BE7EA149DA3AC0912DC24A332D8FA7EDBDE5BCF39B5775C486F3F + 719AF3E13EE79EDFEF3ECF737BAE221A8DE27E0EC59D0285422159ACAEFE8D2D + 3636962BEE8EE7AAAA9093FD205EFF6054B2B66E7551B46BC4A1482AA090479E + 984659B101A90B552CF6AF4B40475B10149EBAAA0E46830E4B32B56CCD757D12 + A68FAAA15402565B12411CFEE44A234A0A0D2C3662BF8113C76F89F0FC5C1D1E + 2F31225DAB817D64181FBFF716F6EF5E81DAAF2671B2FBCFC48238FCA9B27C3C + 9ABF1C51F2B3D95C309F9E8717ACD0A382C0B5696A0C0F0EE0D3DD3BF0C9FBB9 + 58AA5B805D357F2516ECDC7991C19F5E558062E33208421483432E58CCF3F0C2 + BCA5585D6A84469D0A1B81D710F83E027F98C0E9482AC8C80C63EE568AA4D914 + 9E68740E3E80E6DA02F13AA960CD9A5C09A0A9A90E9BCA8F6163551532753AC9 + DAF090030DF53DA22012E6B1A7F61A4EC9093656164A209FD71E6082D7B6BF0D + 7D4E8E64ADA37D14F5260BBED96F04CF47112282BDA6299CEA9111BCB0D6001A + 8BF01184380E875A5A6219BC5A85C524037A7B84C0829C80DEEE71FC78F4021A + F6E5211C111026829A86EB38DD3B9E585054A421CD15E0F5BA61B576B0381514 + 97AD8446AB65823977187F4FF96169BFC4D60F7E6860703A0F34BBD02627A025 + A2211AA7697F613A2829118DD3CCFC5E2FAC9D1771A465009FEDCA26F5175889 + EA0ECFA0EDBC8CA07243217B3D293C4C3635349A24022E1864703ABBBBC6D1DA + 6AC7DE77F4A4443C1108F8FA87DB30F75D4A2C78697D0101C7E01152D76F9BBF + 14058BB2B2E0F37844417F9F13274EFE813DDBB3C41E7C77DC8D337282752FE6 + 2314E299840A0E1FA9678297DF7C03DA8C8C7981C78BA1A1AB38737602EF6E7B + E8FF3D02BE37FB60E997113CF76C1EB959886540E6D1634D4C5059F50AD24893 + BD62063E723E4DC2DA750D3BB6A6830BC59AFCD3B9202C171C8905A5258B193C + 148A204C367574B63241F933CF439D96C6C05E8F9F4C1F1C976FE2E7D19BD8B6 + 45038EE349C63CCC3D11B4CB0952525CE0C98D01D24CA7F377F1351516E82144 + 95080478CCCE72989DE3F0CF34C7D6B76E5E2866D03910C5D9011941C963D9E4 + C9E34D26379F6B6682D28A0A28552A04FC7E04C9A4657238DDF8652C882DEB55 + 2483082CE7816EFB65E9097DCF61971E60A9068321F2B4014C38ED4CA05EB48C + 65E0F771F07839B8E78298B91DC68D19019BD74284538EAC80E3AE8AD7779668 + EC8A1A778F7889E888C3930A96E72C210D8EFDD1E8E8ED3BC404597A3DE94D84 + 1C215E84B91878721AB832A520359F907C97650563636DF73C2915F4FFAA8C6D + 16A2EC2B4707CF93EF814D0A9715DC8FF11FAABDDDEF79CA04C3000000004945 + 4E44AE426082} + Name = 'PngImage0' + Background = clWindow + end> + Left = 232 + Top = 16 + Bitmap = {} + end + object ModuleActionList: TActionList + Images = LargeImages + Left = 40 + Top = 72 + object actCuentas: TAction + Category = 'Contabilidad' + Caption = 'Cuentas' + ImageIndex = 0 + OnExecute = actCuentasExecute + end + end + object MainMenu: TMainMenu + Images = LargeImages + Left = 40 + Top = 16 + object menu: TMenuItem + Tag = 500 + Caption = '&Contabilidad' + GroupIndex = 1 + ImageIndex = 0 + OnClick = actCuentasExecute + object Contabilidad1: TMenuItem + Tag = 100 + Action = actCuentas + end + object N1: TMenuItem + Tag = 101 + Caption = '-' + end + end + end + object SmallImages: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000002194944415478DA + 63FCFFFF3F03232323030CE4E49CFF0FA2A74C31840BDADBD7FFF7315CCE503A + E116422110389B6AFC67443600A459DDEC05B21A8635734F30803473184D4411 + DF30B9104CC30D8069F6B4D363509697024B3A3834C0353B99CA3168696881C5 + 5DCC34196675AA32A495DF8618909B7BE1BFB7971A5872EBB65B60FAF2E50D60 + CD05CD4D0C136AEBE036EF38CA04D6FCFBF73F86EC9ABB9806C040476717DC00 + 64E0E1D4C030B54599E1D7AFBF0C854D0F1006484AFE030A7E63F8F39B89E1E3 + A7CF40171C071B202E2D0DD6F8E1E36F86074F7E305CBCFA85A1B352166C406D + EF334C17FCF9F39FE1C78FBF0C53A6F6A1B8E0C7F71F0C1FDEBE6548889BCDD0 + 5C2C0536A079F24B5403609A4178CEDC897003609A41B8A0701D4379BA08C3AF + DF7F19FAE7BD4718E0EEA60AD70CC24B964E011B90515505D70CC20D2D07190A + 9304C12E98BAE413C2007B3B25B8E69F3FFF31AC5E330D6C40447A3A5CF3A70F + 1F18FAA65C644809E566F8093460F1C61F9881F8EDEB4F864F9F3F33DCB87101 + 6CC0F30F7CE03078F1EA17C3CBD7BFC0EC587F0EA0257F1856EDF88330405F4F + 066CF3CF9F1017ECDC351B6C8085A323D8E64FEFDF83E9555B3F31F83B32825D + 004A13282E78FEFC2630C07E317CF9FA15C87E85D3051ED6FFC09AF79EBEC108 + 374051411C6CF32F200681FD07E7820D90515080B8008861291104409AE17901 + 64002CF922039001300DC800A6196E0025000048B3879138758C930000000049 + 454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end> + PngOptions = [pngBlendOnDisabled, pngGrayscaleOnDisabled] + Left = 308 + Top = 16 + Bitmap = {} + end + object ExtraImages: TPngImageList + Height = 28 + Width = 28 + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D494844520000001C0000001C0806000000720DDF + 940000000970485973000017120000171201679FD2520000031F4944415478DA + C5D67B4814411800F06F23E84591F6303D33D3BA8A48B317862998629A957F54 + 5068442816F9E082E4AC104C433CDF7A6A76A5A0858908FA4799941106FD5341 + 86843D301244D310CDBC47BB7BBBCDCCB5DBEDDD49639CF6C130B33337FBE3FB + 66F75846144598CF60FE2BC8308C62313DFD4D30EA7AABAB4318C78D684DC4F3 + C51AB59855F1D1693D6AEF56B1FB653F430D4AD8967D5F217467806253A3C104 + 7D7D1D7024E43E2CDE55E9B49E9D9C407A6AD01E8B8B0882C00D3E647E607018 + 2A4AC660B5E72A5836152D637B76A8E5F5F327A34097ED0BDAC2213AD01D9887 + C71248D57EFA3B9891D1EB160C072D28BA039B15082E42C2668AC8703F05362B + 30FEB0DAE98685BA22F2446AF2F35C82B10773C1A0DB2C5F73AC15D2723ECF3D + 285805B05A4560392B5CCA1B9C5BB0AE201041181480451952BD1618F4F616C8 + 787AFA078C8E0EC3C0C007728D412F954AFEEDE4770EBE0C59E0EDBB69725D75 + 7D23812430A76CE4DF32E438114ACB8A5D6668321AC18C5AE2A95A28B9E6F707 + 4425CDD78FCD0E1450A2F83C3854A62A7DA9132861B8A524374241968A405286 + BA5BE3F420C6384E90C19B75E50AD01EC3E3CCCC36C8D5ACB3CB5080F286093A + 302E564D109615102C92BEBEA152061D31DC6BAF3C82AB17D7D840B2C70A35F7 + A6E8C0E8A84D04B1CFB0E9AE9E80A9D95A27CC6C3441EE8D1EB89CE24932C318 + 8FB2BCD36AA40323C20308223501A1CD2D35043C9391EE84E17151F96BC83CBB + 92603F7F97B5A9C34207EE0FF597311E83E83C5BDB6A0998909484E6590586C7 + 7A433F5C38BD9C60D239B6747274A0C9D44FC666B389B4898971F93D1C995C41 + C6168B0093533C8C7E63E5BDE78E2F5564D8DE2DD081C141BE2433FCFEF1BCED + 1C1F741A087820268664C4719CE22C9B3BC621F1E82245860F9F3374E0F66D3E + 32867BFCA4763DBE4DC0DD61616036D94AC9B3AC5CD2F6271638716821C170EB + 7AB1009EBE7AEFF203CD6D253D16C928303C470506F87B91CCC843C3DBD69EF5 + D413D05FAD56949247A5C58191D83041815183EB556B15983D88FFBC1D3109C4 + 618FD18269E8F3AF1A5C040235E8C6153043386254E07CC42F741D70F6B59175 + 350000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end> + Left = 232 + Top = 80 + Bitmap = {} + end +end diff --git a/Modulos/Cuentas/Cliente/uPluginControllerCuentas.pas b/Modulos/Cuentas/Cliente/uPluginControllerCuentas.pas new file mode 100644 index 0000000..8da6fc7 --- /dev/null +++ b/Modulos/Cuentas/Cliente/uPluginControllerCuentas.pas @@ -0,0 +1,73 @@ +unit uPluginControllerCuentas; + +interface + +uses + uModuleController, uInterfaces, uHostManager, Menus, Classes, ActnList, + ImgList, Controls, PngImageList; + +type + IMCCuentas = interface(IInterface) + ['{269979BB-DCF8-41FD-8F46-57022242FE86}'] + end; + + TModuleCuentas = class(TModuleController, IMCCuentas) + actCuentas: TAction; + menu: TMenuItem; + ExtraImages: TPngImageList; + LargeImages: TPngImageList; + MainMenu: TMainMenu; + ModuleActionList: TActionList; + Contabilidad1: TMenuItem; + SmallImages: TPngImageList; + N1: TMenuItem; + procedure actCuentasExecute(Sender: TObject); + public + end; + +implementation + +{$R *.dfm} + +uses + Forms, Dialogs, uGUIBase, SysUtils, uDataModuleCuentas, uBizCuentas, + uEditorCuentas; + +function GetModule : TModuleController; +begin + Result := TModuleCuentas.Create(NIL); +end; + +exports + GetModule name GET_MODULE_FUNC; + +{ +******************************* TModuleContactos ******************************* +} + +procedure TModuleCuentas.actCuentasExecute(Sender: TObject); +var + aObj: IEditorCuentas; + ACuentas : IBizCuenta; +begin + ACuentas := dmCuentas.GetItems; + aObj := TfEditorCuentas.Create(Application); + try + with aObj do + begin + Cuentas := ACuentas; + ShowEmbedded; + end; + finally + ACuentas := NIL; + aObj := NIL; + end; +end; + +initialization + RegisterModuleClass(TModuleCuentas); + +finalization + UnRegisterModuleClass(TModuleCuentas); + +end. diff --git a/Modulos/Cuentas/Cliente/uViewCuenta.ddp b/Modulos/Cuentas/Cliente/uViewCuenta.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Cuentas/Cliente/uViewCuenta.ddp differ diff --git a/Modulos/Cuentas/Cliente/uViewCuenta.dfm b/Modulos/Cuentas/Cliente/uViewCuenta.dfm new file mode 100644 index 0000000..ace1b8e --- /dev/null +++ b/Modulos/Cuentas/Cliente/uViewCuenta.dfm @@ -0,0 +1,89 @@ +inherited frViewCuenta: TfrViewCuenta + Width = 600 + Height = 270 + Align = alClient + AutoSize = True + Constraints.MinHeight = 245 + Constraints.MinWidth = 600 + object pnlGeneral: TPanel + Left = 0 + Top = 0 + Width = 601 + Height = 161 + BevelOuter = bvNone + Constraints.MinWidth = 300 + ParentBackground = True + ParentColor = True + TabOrder = 0 + DesignSize = ( + 601 + 161) + object Label5: TLabel + Left = 8 + Top = 8 + Width = 109 + Height = 13 + Caption = 'Datos de la cuenta' + Font.Charset = DEFAULT_CHARSET + Font.Color = clActiveCaption + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + ParentFont = False + end + object Bevel1: TBevel + Left = 128 + Top = 8 + Width = 465 + Height = 9 + Anchors = [akLeft, akTop, akRight] + Shape = bsBottomLine + end + object Label2: TLabel + Left = 16 + Top = 56 + Width = 61 + Height = 13 + Caption = 'Otros datos:' + end + object Label1: TLabel + Left = 16 + Top = 32 + Width = 41 + Height = 13 + Caption = 'Nombre:' + end + object eNombre: TcxDBTextEdit + Left = 93 + Top = 28 + DataBinding.DataField = 'NOMBRE' + DataBinding.DataSource = DADataSource + Style.Color = 14745599 + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 0 + Width = 492 + end + object memOtrosDatos: TcxDBMemo + Left = 93 + Top = 56 + Anchors = [akLeft, akTop, akRight, akBottom] + DataBinding.DataField = 'OTROSDATOS' + DataBinding.DataSource = DADataSource + Properties.ScrollBars = ssVertical + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 1 + Height = 81 + Width = 492 + end + end + object DADataSource: TDADataSource + Left = 16 + Top = 80 + end +end diff --git a/Modulos/Cuentas/Cliente/uViewCuenta.pas b/Modulos/Cuentas/Cliente/uViewCuenta.pas new file mode 100644 index 0000000..e98bb62 --- /dev/null +++ b/Modulos/Cuentas/Cliente/uViewCuenta.pas @@ -0,0 +1,71 @@ +unit uViewCuenta; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, ExtCtrls, StdCtrls, Buttons, DB, uDADataTable, + DBCtrls, Grids, DBGrids, uBizCuentas, Mask, ComCtrls, uCustomView, + uViewDireccion, uViewTelefonos, uViewInternet, uViewCategorias, + JvComponent, JvFormAutoSize, cxControls, cxContainer, cxEdit, cxTextEdit, + cxDBEdit, cxMemo; + +type + IViewCuenta = interface(IViewBase) + ['{076DB0D0-0E2C-49DE-861E-C8405DB35175}'] + function GetCuenta: IBizCuenta; + procedure SetCuenta(const Value: IBizCuenta); + property Cuenta: IBizCuenta read GetCuenta write SetCuenta; + end; + + TfrViewCuenta = class(TfrViewBase, IViewCuenta) + Bevel1: TBevel; + DADataSource: TDADataSource; + Label1: TLabel; + Label2: TLabel; + Label5: TLabel; + pnlGeneral: TPanel; + eNombre: TcxDBTextEdit; + memOtrosDatos: TcxDBMemo; + private + FCuenta: IBizCuenta; + protected + function GetCuenta: IBizCuenta; + procedure SetCuenta(const Value: IBizCuenta); + public + property Cuenta: IBizCuenta read GetCuenta write SetCuenta; + end; + +implementation + +uses uDataModuleCuentas; + +{$R *.dfm} + +{ TfrViewCuentas } + +{ +******************************* TfrViewCuentas ******************************** +} +function TfrViewCuenta.GetCuenta: IBizCuenta; +begin + Result := FCuenta; +end; + +procedure TfrViewCuenta.SetCuenta(const Value: IBizCuenta); +begin + FCuenta := Value; + if Assigned(FCuenta) then + DADataSource.DataTable := FCuenta.DataTable + else + DADataSource.DataTable := NIL; +end; + +initialization + RegisterClass(TfrViewCuenta); + +finalization + UnRegisterClass(TfrViewCuenta); + +end. + diff --git a/Modulos/Cuentas/Cliente/uViewCuentas.ddp b/Modulos/Cuentas/Cliente/uViewCuentas.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Cuentas/Cliente/uViewCuentas.ddp differ diff --git a/Modulos/Cuentas/Cliente/uViewCuentas.dfm b/Modulos/Cuentas/Cliente/uViewCuentas.dfm new file mode 100644 index 0000000..da97b65 --- /dev/null +++ b/Modulos/Cuentas/Cliente/uViewCuentas.dfm @@ -0,0 +1,92 @@ +inherited frViewCuentas: TfrViewCuentas + inherited cxGrid: TcxGrid + inherited cxGridView: TcxGridDBTableView + DataController.KeyFieldNames = 'CODIGO' + DataController.Summary.FooterSummaryItems = < + item + Format = '0 almacenes' + Kind = skCount + end> + OptionsBehavior.PullFocusing = True + object cxGridViewRecID: TcxGridDBColumn + DataBinding.FieldName = 'RecID' + Visible = False + end + object cxGridViewCODIGOEMPRESA: TcxGridDBColumn + DataBinding.FieldName = 'CODIGOEMPRESA' + Visible = False + end + object cxGridViewICONO: TcxGridDBColumn + OnCustomDrawCell = cxGridViewICONOCustomDrawCell + Options.Sorting = False + Width = 20 + end + object cxGridViewCODIGO: TcxGridDBColumn + DataBinding.FieldName = 'CODIGO' + Visible = False + end + object cxGridViewFECHAALTA: TcxGridDBColumn + DataBinding.FieldName = 'FECHAALTA' + Visible = False + end + object cxGridViewUSUARIO: TcxGridDBColumn + DataBinding.FieldName = 'USUARIO' + Visible = False + end + object cxGridViewNOMBRE: TcxGridDBColumn + DataBinding.FieldName = 'NOMBRE' + end + object cxGridViewOTROSDATOS: TcxGridDBColumn + DataBinding.FieldName = 'OTROSDATOS' + Visible = False + end + end + end + inherited frViewFiltroBase1: TfrViewFiltroBase + inherited TBXDock1: TTBXDock + inherited TBXDockablePanel1: TTBXDockablePanel + inherited dxLayoutControl1: TdxLayoutControl + inherited txtFiltroTodo: TcxTextEdit + Width = 273 + end + inherited edtFechaIniFiltro: TcxDateEdit + Width = 121 + end + inherited edtFechaFinFiltro: TcxDateEdit + Width = 121 + end + end + end + end + end + inherited dxComponentPrinter: TdxComponentPrinter + inherited dxComponentPrinterLink: TdxGridReportLink + ReportDocument.CreationDate = 38673.842406053240000000 + BuiltInReportLink = True + end + end + object PngImageList: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD2520000013A4944415478DA + 63FCFFFF3F03258091620340C4FABD97B19A12E8ACCB884F0E64392343C8AAFF + EB333519029C7430146DD87705ABB8914716C3795E4786FFAB4319F11A005278 + 6EC734E20D48DFFC13AE68821B1383B57F3EC3D18D13190A76FD838BCFF465C7 + EF823F7FFF317CFFF19BE1F79FBF0C2EE1250C7B56F6307072B03270B2B392E6 + 825AB3EF0C7EF1550C9B16B631349FE224EC021F7B2DB0CDDF7EFC02D3BF802E + 8848AF675831B391810BE8022E0E36B84BB01AE06CAECA50B20F115099AA6F18 + 920A5A19E64DA866987E5B04236C300CB0D49707DBFCF5FB2F30FEFDFB2F436E + 5537C3E4B652066E2E36062E4E36B84B406183618081BA145CF337200681A2BA + 3E86BEA62206561666144340618361405317667CE30328066055C12387607F79 + 845509C4005C00D9E0356158D581F302A5B911006305C5E10A57158000000000 + 49454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end> + Left = 160 + Top = 32 + Bitmap = {} + end +end diff --git a/Modulos/Cuentas/Cliente/uViewCuentas.pas b/Modulos/Cuentas/Cliente/uViewCuentas.pas new file mode 100644 index 0000000..4cb241a --- /dev/null +++ b/Modulos/Cuentas/Cliente/uViewCuentas.pas @@ -0,0 +1,87 @@ +unit uViewCuentas; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewGrid, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, + cxDataStorage, cxEdit, DB, cxDBData, uDADataTable, cxGridLevel, + cxClasses, cxControls, cxGridCustomView, cxGridCustomTableView, + cxGridTableView, cxGridDBTableView, cxGrid, uBizCuentas, ActnList, Menus, + cxGridBandedTableView, cxGridDBBandedTableView, JvComponent, + JvFormAutoSize, PngImageList, ImgList, dxPSGlbl, dxPSUtl, dxPSEngn, + dxPrnPg, dxBkgnd, dxWrap, dxPrnDev, dxPSCompsProvider, dxPSFillPatterns, + dxPSEdgePatterns, cxIntlPrintSys3, dxPSCore, dxPScxCommon, dxPScxGridLnk, + uViewFiltroBase; + +type + IViewCuentas = interface(IViewGrid) + ['{14CA2FE9-4B42-47EE-AEF0-60F759C1755A}'] + function GetCuentas: IBizCuenta; + procedure SetCuentas(const Value: IBizCuenta); + property Cuentas: IBizCuenta read GetCuentas write SetCuentas; + end; + + TfrViewCuentas = class(TfrViewGrid, IViewCuentas) + PngImageList: TPngImageList; + cxGridViewRecID: TcxGridDBColumn; + cxGridViewCODIGOEMPRESA: TcxGridDBColumn; + cxGridViewCODIGO: TcxGridDBColumn; + cxGridViewFECHAALTA: TcxGridDBColumn; + cxGridViewUSUARIO: TcxGridDBColumn; + cxGridViewNOMBRE: TcxGridDBColumn; + cxGridViewOTROSDATOS: TcxGridDBColumn; + cxGridViewICONO: TcxGridDBColumn; + procedure cxGridViewICONOCustomDrawCell( + Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; + AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); + protected + FCuentas: IBizCuenta; + function GetCuentas: IBizCuenta; virtual; + procedure SetCuentas(const Value: IBizCuenta); virtual; + public + property DataSet: IBizCuenta read GetCuentas write SetCuentas; + end; + +var + frViewCuentas: TfrViewCuentas; + +implementation + +uses uDataModuleCuentas; + + +{$R *.dfm} + +{ TfrViewClientes } + +{ +******************************* TfrViewCuentas ******************************* +} +function TfrViewCuentas.GetCuentas: IBizCuenta; +begin + Result := FCuentas; +end; + +procedure TfrViewCuentas.SetCuentas(const Value: IBizCuenta); +begin + FCuentas := Value; + if Assigned(FCuentas) then + DADataSource.DataTable := FCuentas.DataTable; +end; + + +procedure TfrViewCuentas.cxGridViewICONOCustomDrawCell( + Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; + AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); +var + R : TRect; +begin + inherited; + R := AViewInfo.ContentBounds; + ACanvas.FillRect(R); + ACanvas.DrawImage(PngImageList, R.Left, R.Top, 0); + ADone := True; +end; + +end. diff --git a/Modulos/Cuentas/Reglas/schCuentasClient_Intf.pas b/Modulos/Cuentas/Reglas/schCuentasClient_Intf.pas new file mode 100644 index 0000000..eef12ae --- /dev/null +++ b/Modulos/Cuentas/Reglas/schCuentasClient_Intf.pas @@ -0,0 +1,209 @@ +unit schCuentasClient_Intf; + +interface + +uses + Classes, DB, SysUtils, uROClasses, uDADataTable; + +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_Cuentas = '{FD2A065D-876F-41F3-A883-9B5E665718B4}'; + + { Data table names } + nme_Cuentas = 'Cuentas'; + + { Cuentas fields } + fld_CuentasCODIGOEMPRESA = 'CODIGOEMPRESA'; + fld_CuentasCODIGO = 'CODIGO'; + fld_CuentasFECHAALTA = 'FECHAALTA'; + fld_CuentasUSUARIO = 'USUARIO'; + fld_CuentasNOMBRE = 'NOMBRE'; + fld_CuentasOTROSDATOS = 'OTROSDATOS'; + fld_CuentasULTIMOCIERRE = 'ULTIMOCIERRE'; + fld_CuentasPENULTIMOCIERRE = 'PENULTIMOCIERRE'; + + { Cuentas field indexes } + idx_CuentasCODIGOEMPRESA = 0; + idx_CuentasCODIGO = 1; + idx_CuentasFECHAALTA = 2; + idx_CuentasUSUARIO = 3; + idx_CuentasNOMBRE = 4; + idx_CuentasOTROSDATOS = 5; + idx_CuentasULTIMOCIERRE = 6; + idx_CuentasPENULTIMOCIERRE = 7; + +type + { ICuentas } + ICuentas = interface(IDAStronglyTypedDataTable) + ['{81148F99-BE98-4AAA-9572-9D985476978F}'] + { Property getters and setters } + function GetCODIGOEMPRESAValue: Integer; + procedure SetCODIGOEMPRESAValue(const aValue: Integer); + function GetCODIGOValue: Integer; + procedure SetCODIGOValue(const aValue: Integer); + function GetFECHAALTAValue: DateTime; + procedure SetFECHAALTAValue(const aValue: DateTime); + function GetUSUARIOValue: String; + procedure SetUSUARIOValue(const aValue: String); + function GetNOMBREValue: String; + procedure SetNOMBREValue(const aValue: String); + function GetOTROSDATOSValue: IROStrings; + procedure SetOTROSDATOSValue(const aValue: IROStrings); + function GetULTIMOCIERREValue: DateTime; + procedure SetULTIMOCIERREValue(const aValue: DateTime); + function GetPENULTIMOCIERREValue: DateTime; + procedure SetPENULTIMOCIERREValue(const aValue: DateTime); + + + { Properties } + property CODIGOEMPRESA: Integer read GetCODIGOEMPRESAValue write SetCODIGOEMPRESAValue; + property CODIGO: Integer read GetCODIGOValue write SetCODIGOValue; + property FECHAALTA: DateTime read GetFECHAALTAValue write SetFECHAALTAValue; + property USUARIO: String read GetUSUARIOValue write SetUSUARIOValue; + property NOMBRE: String read GetNOMBREValue write SetNOMBREValue; + property OTROSDATOS: IROStrings read GetOTROSDATOSValue write SetOTROSDATOSValue; + property ULTIMOCIERRE: DateTime read GetULTIMOCIERREValue write SetULTIMOCIERREValue; + property PENULTIMOCIERRE: DateTime read GetPENULTIMOCIERREValue write SetPENULTIMOCIERREValue; + end; + + { TCuentasDataTableRules } + TCuentasDataTableRules = class(TDADataTableRules, ICuentas) + private + protected + { Property getters and setters } + function GetCODIGOEMPRESAValue: Integer; virtual; + procedure SetCODIGOEMPRESAValue(const aValue: Integer); virtual; + function GetCODIGOValue: Integer; virtual; + procedure SetCODIGOValue(const aValue: Integer); virtual; + function GetFECHAALTAValue: DateTime; virtual; + procedure SetFECHAALTAValue(const aValue: DateTime); virtual; + function GetUSUARIOValue: String; virtual; + procedure SetUSUARIOValue(const aValue: String); virtual; + function GetNOMBREValue: String; virtual; + procedure SetNOMBREValue(const aValue: String); virtual; + function GetOTROSDATOSValue: IROStrings; virtual; + procedure SetOTROSDATOSValue(const aValue: IROStrings); virtual; + function GetULTIMOCIERREValue: DateTime; virtual; + procedure SetULTIMOCIERREValue(const aValue: DateTime); virtual; + function GetPENULTIMOCIERREValue: DateTime; virtual; + procedure SetPENULTIMOCIERREValue(const aValue: DateTime); virtual; + + { Properties } + property CODIGOEMPRESA: Integer read GetCODIGOEMPRESAValue write SetCODIGOEMPRESAValue; + property CODIGO: Integer read GetCODIGOValue write SetCODIGOValue; + property FECHAALTA: DateTime read GetFECHAALTAValue write SetFECHAALTAValue; + property USUARIO: String read GetUSUARIOValue write SetUSUARIOValue; + property NOMBRE: String read GetNOMBREValue write SetNOMBREValue; + property OTROSDATOS: IROStrings read GetOTROSDATOSValue write SetOTROSDATOSValue; + property ULTIMOCIERRE: DateTime read GetULTIMOCIERREValue write SetULTIMOCIERREValue; + property PENULTIMOCIERRE: DateTime read GetPENULTIMOCIERREValue write SetPENULTIMOCIERREValue; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + +implementation + +uses Variants; + +{ TCuentasDataTableRules } +constructor TCuentasDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TCuentasDataTableRules.Destroy; +begin + inherited; +end; + +function TCuentasDataTableRules.GetCODIGOEMPRESAValue: Integer; +begin + result := DataTable.Fields[idx_CuentasCODIGOEMPRESA].AsInteger; +end; + +procedure TCuentasDataTableRules.SetCODIGOEMPRESAValue(const aValue: Integer); +begin + DataTable.Fields[idx_CuentasCODIGOEMPRESA].AsInteger := aValue; +end; + +function TCuentasDataTableRules.GetCODIGOValue: Integer; +begin + result := DataTable.Fields[idx_CuentasCODIGO].AsInteger; +end; + +procedure TCuentasDataTableRules.SetCODIGOValue(const aValue: Integer); +begin + DataTable.Fields[idx_CuentasCODIGO].AsInteger := aValue; +end; + +function TCuentasDataTableRules.GetFECHAALTAValue: DateTime; +begin + result := DataTable.Fields[idx_CuentasFECHAALTA].AsDateTime; +end; + +procedure TCuentasDataTableRules.SetFECHAALTAValue(const aValue: DateTime); +begin + DataTable.Fields[idx_CuentasFECHAALTA].AsDateTime := aValue; +end; + +function TCuentasDataTableRules.GetUSUARIOValue: String; +begin + result := DataTable.Fields[idx_CuentasUSUARIO].AsString; +end; + +procedure TCuentasDataTableRules.SetUSUARIOValue(const aValue: String); +begin + DataTable.Fields[idx_CuentasUSUARIO].AsString := aValue; +end; + +function TCuentasDataTableRules.GetNOMBREValue: String; +begin + result := DataTable.Fields[idx_CuentasNOMBRE].AsString; +end; + +procedure TCuentasDataTableRules.SetNOMBREValue(const aValue: String); +begin + DataTable.Fields[idx_CuentasNOMBRE].AsString := aValue; +end; + +function TCuentasDataTableRules.GetOTROSDATOSValue: IROStrings; +begin + result := NewROStrings(); + result.Text := DataTable.Fields[idx_CuentasOTROSDATOS].AsString; +end; + +procedure TCuentasDataTableRules.SetOTROSDATOSValue(const aValue: IROStrings); +begin + DataTable.Fields[idx_CuentasOTROSDATOS].AsString := aValue.Text; +end; + +function TCuentasDataTableRules.GetULTIMOCIERREValue: DateTime; +begin + result := DataTable.Fields[idx_CuentasULTIMOCIERRE].AsDateTime; +end; + +procedure TCuentasDataTableRules.SetULTIMOCIERREValue(const aValue: DateTime); +begin + DataTable.Fields[idx_CuentasULTIMOCIERRE].AsDateTime := aValue; +end; + +function TCuentasDataTableRules.GetPENULTIMOCIERREValue: DateTime; +begin + result := DataTable.Fields[idx_CuentasPENULTIMOCIERRE].AsDateTime; +end; + +procedure TCuentasDataTableRules.SetPENULTIMOCIERREValue(const aValue: DateTime); +begin + DataTable.Fields[idx_CuentasPENULTIMOCIERRE].AsDateTime := aValue; +end; + + +initialization + RegisterDataTableRules(RID_Cuentas, TCuentasDataTableRules); + +end. diff --git a/Modulos/Cuentas/Reglas/schCuentasServer_Intf.pas b/Modulos/Cuentas/Reglas/schCuentasServer_Intf.pas new file mode 100644 index 0000000..6424cf1 --- /dev/null +++ b/Modulos/Cuentas/Reglas/schCuentasServer_Intf.pas @@ -0,0 +1,235 @@ +unit schCuentasServer_Intf; + +interface + +uses + Classes, DB, SysUtils, uROClasses, uDADataTable, uDABusinessProcessor, schCuentasClient_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_CuentasDelta = '{E2548CDF-39FB-4108-AED9-015ADCB51AD5}'; + +type + { ICuentasDelta } + ICuentasDelta = interface(ICuentas) + ['{E2548CDF-39FB-4108-AED9-015ADCB51AD5}'] + { Property getters and setters } + function GetOldCODIGOEMPRESAValue : Integer; + function GetOldCODIGOValue : Integer; + function GetOldFECHAALTAValue : DateTime; + function GetOldUSUARIOValue : String; + function GetOldNOMBREValue : String; + function GetOldOTROSDATOSValue : IROStrings; + function GetOldULTIMOCIERREValue : DateTime; + function GetOldPENULTIMOCIERREValue : DateTime; + + { Properties } + property OldCODIGOEMPRESA : Integer read GetOldCODIGOEMPRESAValue; + property OldCODIGO : Integer read GetOldCODIGOValue; + property OldFECHAALTA : DateTime read GetOldFECHAALTAValue; + property OldUSUARIO : String read GetOldUSUARIOValue; + property OldNOMBRE : String read GetOldNOMBREValue; + property OldOTROSDATOS : IROStrings read GetOldOTROSDATOSValue; + property OldULTIMOCIERRE : DateTime read GetOldULTIMOCIERREValue; + property OldPENULTIMOCIERRE : DateTime read GetOldPENULTIMOCIERREValue; + end; + + { TCuentasBusinessProcessorRules } + TCuentasBusinessProcessorRules = class(TDABusinessProcessorRules, ICuentas, ICuentasDelta) + private + protected + { Property getters and setters } + function GetCODIGOEMPRESAValue: Integer; virtual; + function GetOldCODIGOEMPRESAValue: Integer; virtual; + procedure SetCODIGOEMPRESAValue(const aValue: Integer); virtual; + function GetCODIGOValue: Integer; virtual; + function GetOldCODIGOValue: Integer; virtual; + procedure SetCODIGOValue(const aValue: Integer); virtual; + function GetFECHAALTAValue: DateTime; virtual; + function GetOldFECHAALTAValue: DateTime; virtual; + procedure SetFECHAALTAValue(const aValue: DateTime); virtual; + function GetUSUARIOValue: String; virtual; + function GetOldUSUARIOValue: String; virtual; + procedure SetUSUARIOValue(const aValue: String); virtual; + function GetNOMBREValue: String; virtual; + function GetOldNOMBREValue: String; virtual; + procedure SetNOMBREValue(const aValue: String); virtual; + function GetOTROSDATOSValue: IROStrings; virtual; + function GetOldOTROSDATOSValue: IROStrings; virtual; + procedure SetOTROSDATOSValue(const aValue: IROStrings); virtual; + function GetULTIMOCIERREValue: DateTime; virtual; + function GetOldULTIMOCIERREValue: DateTime; virtual; + procedure SetULTIMOCIERREValue(const aValue: DateTime); virtual; + function GetPENULTIMOCIERREValue: DateTime; virtual; + function GetOldPENULTIMOCIERREValue: DateTime; virtual; + procedure SetPENULTIMOCIERREValue(const aValue: DateTime); virtual; + + { Properties } + property CODIGOEMPRESA : Integer read GetCODIGOEMPRESAValue write SetCODIGOEMPRESAValue; + property OldCODIGOEMPRESA : Integer read GetOldCODIGOEMPRESAValue; + property CODIGO : Integer read GetCODIGOValue write SetCODIGOValue; + property OldCODIGO : Integer read GetOldCODIGOValue; + property FECHAALTA : DateTime read GetFECHAALTAValue write SetFECHAALTAValue; + property OldFECHAALTA : DateTime read GetOldFECHAALTAValue; + property USUARIO : String read GetUSUARIOValue write SetUSUARIOValue; + property OldUSUARIO : String read GetOldUSUARIOValue; + property NOMBRE : String read GetNOMBREValue write SetNOMBREValue; + property OldNOMBRE : String read GetOldNOMBREValue; + property OTROSDATOS : IROStrings read GetOTROSDATOSValue write SetOTROSDATOSValue; + property OldOTROSDATOS : IROStrings read GetOldOTROSDATOSValue; + property ULTIMOCIERRE : DateTime read GetULTIMOCIERREValue write SetULTIMOCIERREValue; + property OldULTIMOCIERRE : DateTime read GetOldULTIMOCIERREValue; + property PENULTIMOCIERRE : DateTime read GetPENULTIMOCIERREValue write SetPENULTIMOCIERREValue; + property OldPENULTIMOCIERRE : DateTime read GetOldPENULTIMOCIERREValue; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + +implementation + +uses + Variants, uROBinaryHelpers; + +{ TCuentasBusinessProcessorRules } +constructor TCuentasBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TCuentasBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TCuentasBusinessProcessorRules.GetCODIGOEMPRESAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_CuentasCODIGOEMPRESA]; +end; + +function TCuentasBusinessProcessorRules.GetOldCODIGOEMPRESAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_CuentasCODIGOEMPRESA]; +end; + +procedure TCuentasBusinessProcessorRules.SetCODIGOEMPRESAValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_CuentasCODIGOEMPRESA] := aValue; +end; + +function TCuentasBusinessProcessorRules.GetCODIGOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_CuentasCODIGO]; +end; + +function TCuentasBusinessProcessorRules.GetOldCODIGOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_CuentasCODIGO]; +end; + +procedure TCuentasBusinessProcessorRules.SetCODIGOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_CuentasCODIGO] := aValue; +end; + +function TCuentasBusinessProcessorRules.GetFECHAALTAValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_CuentasFECHAALTA]; +end; + +function TCuentasBusinessProcessorRules.GetOldFECHAALTAValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_CuentasFECHAALTA]; +end; + +procedure TCuentasBusinessProcessorRules.SetFECHAALTAValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_CuentasFECHAALTA] := aValue; +end; + +function TCuentasBusinessProcessorRules.GetUSUARIOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_CuentasUSUARIO]; +end; + +function TCuentasBusinessProcessorRules.GetOldUSUARIOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_CuentasUSUARIO]; +end; + +procedure TCuentasBusinessProcessorRules.SetUSUARIOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_CuentasUSUARIO] := aValue; +end; + +function TCuentasBusinessProcessorRules.GetNOMBREValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_CuentasNOMBRE]; +end; + +function TCuentasBusinessProcessorRules.GetOldNOMBREValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_CuentasNOMBRE]; +end; + +procedure TCuentasBusinessProcessorRules.SetNOMBREValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_CuentasNOMBRE] := aValue; +end; + +function TCuentasBusinessProcessorRules.GetOTROSDATOSValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.NewValueByName[fld_CuentasOTROSDATOS]; +end; + +function TCuentasBusinessProcessorRules.GetOldOTROSDATOSValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.OldValueByName[fld_CuentasOTROSDATOS]; +end; + +procedure TCuentasBusinessProcessorRules.SetOTROSDATOSValue(const aValue: IROStrings); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_CuentasOTROSDATOS] := aValue.Text; +end; + +function TCuentasBusinessProcessorRules.GetULTIMOCIERREValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_CuentasULTIMOCIERRE]; +end; + +function TCuentasBusinessProcessorRules.GetOldULTIMOCIERREValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_CuentasULTIMOCIERRE]; +end; + +procedure TCuentasBusinessProcessorRules.SetULTIMOCIERREValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_CuentasULTIMOCIERRE] := aValue; +end; + +function TCuentasBusinessProcessorRules.GetPENULTIMOCIERREValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_CuentasPENULTIMOCIERRE]; +end; + +function TCuentasBusinessProcessorRules.GetOldPENULTIMOCIERREValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_CuentasPENULTIMOCIERRE]; +end; + +procedure TCuentasBusinessProcessorRules.SetPENULTIMOCIERREValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_CuentasPENULTIMOCIERRE] := aValue; +end; + + +initialization + RegisterBusinessProcessorRules(RID_CuentasDelta, TCuentasBusinessProcessorRules); + +end. diff --git a/Modulos/Cuentas/Reglas/uBizCuentas.pas b/Modulos/Cuentas/Reglas/uBizCuentas.pas new file mode 100644 index 0000000..f722eda --- /dev/null +++ b/Modulos/Cuentas/Reglas/uBizCuentas.pas @@ -0,0 +1,172 @@ +unit uBizCuentas; + +interface + +uses + uDAInterfaces, uDADataTable, schCuentasClient_Intf, Classes, + DBGrids, uDBSelectionList, DB, uExceptions, Controls; + +const + BIZ_CUENTA = 'BizCuenta'; + +type + IBizCuenta = interface(ICuentas) + ['{6A535FAA-01A9-42E1-A6F5-6DB630306ACC}'] + procedure Show; + function ShowForSelect : TModalResult; + + function GetOnCuentaChanged : TNotifyEvent; + procedure SetOnCuentaChanged (const Value : TNotifyEvent); + property OnCuentaChanged : TNotifyEvent read GetOnCuentaChanged + write SetOnCuentaChanged; + + function LocalizarCuenta(Codigo: Integer): Boolean; + end; + + TBizCuentaDataTableRules = class(TCuentasDataTableRules, IBizCuenta, + IApplyUpdateFailedException, ISelectedRowList) + private + FOnCuentaChanged: TNotifyEvent; + FSelectedRows : TSelectedRowList; + procedure ShowToSelect; + procedure BeforeApplyUpdates(Sender: TDADataTable; const Delta: IDADelta); + procedure OnPostError(DataTable: TDADataTable; Error: EDatabaseError; + var Action: TDataAction); override; + function GetOnCuentaChanged: TNotifyEvent; + procedure SetOnCuentaChanged(const Value: TNotifyEvent); + protected + procedure OnNewRecord(Sender: TDADataTable); override; + function GetSelectedRows : TSelectedRowList; virtual; + procedure ShowApplyUpdateFailed (const Error: EDAApplyUpdateFailed); virtual; + public + property OnCuentaChanged : TNotifyEvent read GetOnCuentaChanged write SetOnCuentaChanged; + property SelectedRows : TSelectedRowList read GetSelectedRows; + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + procedure Show; virtual; + function ShowForSelect : TModalResult; virtual; + function LocalizarCuenta(Codigo: Integer): Boolean; + end; + + procedure ValidarCuenta (const ACuenta : IBizCuenta); + +implementation + +uses + Windows, Dialogs, uDACDSDataTable, SysUtils, uDataModuleBase, uDataModuleUsuarios, + uEditorUtils, uDataModuleCuentas, Variants; + + +procedure ValidarCuenta (const ACuenta : IBizCuenta); +begin +// +end; + + +{ TBizCuentaDataTableRules } + +{ +************************** TBizCuentaDataTableRules ************************** +} + +procedure TBizCuentaDataTableRules.OnNewRecord(Sender: TDADataTable); +begin + inherited; + CODIGOEMPRESA := dmBase.CodigoEmpresa; + USUARIO := dmUsuarios.LoginInfo.UserID; + FECHAALTA := Date; + ULTIMOCIERRE := MinDateTime; + PENULTIMOCIERRE := MinDateTime; +end; + +procedure TBizCuentaDataTableRules.Show; +begin + ShowEditor(IBizCuenta, Self, etItem); +end; + +procedure TBizCuentaDataTableRules.ShowApplyUpdateFailed(const Error: EDAApplyUpdateFailed); +begin +// if (Pos(AUF_FKVIOLATION, Error.Message) > 0) then +// MessageBox(0, 'No se puede borrar esta cuenta porque tiene pagos asociados', 'Atención', MB_ICONWARNING or MB_OK); +end; + +function TBizCuentaDataTableRules.GetSelectedRows: TSelectedRowList; +begin + Result := FSelectedRows; +end; + +procedure TBizCuentaDataTableRules.ShowToSelect; +begin +// +end; + +constructor TBizCuentaDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; + FSelectedRows := TSelectedRowList.Create(aDataTable); + aDataTable.OnBeforeApplyUpdates := BeforeApplyUpdates; +end; + +destructor TBizCuentaDataTableRules.Destroy; +begin + FSelectedRows.Free; + inherited; +end; + +function TBizCuentaDataTableRules.ShowForSelect: TModalResult; +begin + Result := ShowEditor(IBizCuenta, Self, etItems); +end; + +procedure TBizCuentaDataTableRules.BeforeApplyUpdates( + Sender: TDADataTable; const Delta: IDADelta); +var + i: Integer; +begin + for i := 0 to Delta.Count - 1 do + case Delta.Changes[i].ChangeType of + ctInsert, ctUpdate : ValidarCuenta(Self); +// ctDelete : + end; +end; + +procedure TBizCuentaDataTableRules.OnPostError(DataTable: TDADataTable; + Error: EDatabaseError; var Action: TDataAction); +begin + inherited; + Action := daAbort; + if (Pos(AUF_HAVEVALUE, Error.Message) > 0) then + begin + if (Pos('Nombre', Error.Message) > 0) then + MessageBox(0, 'Debe indicar al menos el nombre', 'Atención', MB_ICONWARNING or MB_OK) + else + raise Error; + end + else + raise Error; +end; + +function TBizCuentaDataTableRules.LocalizarCuenta(Codigo: Integer): Boolean; +begin + Result := Locate(fld_CuentasCODIGO,Codigo); + + if Assigned(FOnCuentaChanged) then + FOnCuentaChanged(Self); +end; + +function TBizCuentaDataTableRules.GetOnCuentaChanged: TNotifyEvent; +begin + Result := FOnCuentaChanged; +end; + +procedure TBizCuentaDataTableRules.SetOnCuentaChanged(const Value: TNotifyEvent); +begin + FOnCuentaChanged := Value; +end; + +initialization + RegisterDataTableRules(BIZ_CUENTA, TBizCuentaDataTableRules); + +finalization + +end. diff --git a/Modulos/Cuentas/Servidor/srvCuentas_Impl.ddp b/Modulos/Cuentas/Servidor/srvCuentas_Impl.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Cuentas/Servidor/srvCuentas_Impl.ddp differ diff --git a/Modulos/Cuentas/Servidor/srvCuentas_Impl.dfm b/Modulos/Cuentas/Servidor/srvCuentas_Impl.dfm new file mode 100644 index 0000000..fcd38b0 --- /dev/null +++ b/Modulos/Cuentas/Servidor/srvCuentas_Impl.dfm @@ -0,0 +1,186 @@ +object srvCuentas: TsrvCuentas + OldCreateOrder = True + RequiresSession = True + SessionManager = dmServer.SessionManager + AcquireConnection = True + ConnectionName = 'IBX' + ServiceSchema = schCuentas + ServiceAdapter = DABINAdapter + Left = 555 + Top = 179 + Height = 300 + Width = 300 + object schCuentas: TDASchema + ConnectionManager = dmServer.ConnectionManager + DataDictionary = dmServer.DataDictionary + Diagrams = dmServer.DADiagrams + Datasets = < + item + Params = <> + Statements = < + item + Connection = 'IBX' + TargetTable = 'CUENTAS' + SQL = + 'SELECT '#10' CODIGOEMPRESA, CODIGO, FECHAALTA, USUARIO, NOMBRE, '#10 + + ' OTROSDATOS, ULTIMOCIERRE, PENULTIMOCIERRE'#10' FROM'#10' CUENTAS' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'CODIGOEMPRESA' + TableField = 'CODIGOEMPRESA' + end + item + DatasetField = 'CODIGO' + TableField = 'CODIGO' + end + item + DatasetField = 'FECHAALTA' + TableField = 'FECHAALTA' + end + item + DatasetField = 'USUARIO' + TableField = 'USUARIO' + end + item + DatasetField = 'NOMBRE' + TableField = 'NOMBRE' + end + item + DatasetField = 'OTROSDATOS' + TableField = 'OTROSDATOS' + end + item + DatasetField = 'ULTIMOCIERRE' + TableField = 'ULTIMOCIERRE' + end + item + DatasetField = 'PENULTIMOCIERRE' + TableField = 'PENULTIMOCIERRE' + end> + end> + Name = 'Cuentas' + Fields = < + item + Name = 'CODIGOEMPRESA' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'CODIGOEMPRESA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGO' + DataType = datAutoInc + BlobType = dabtUnknown + GeneratorName = 'GEN_CUENTAS' + DictionaryEntry = 'CODIGOCUENTA_GEN' + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHAALTA' + DataType = datDateTime + BlobType = dabtUnknown + DictionaryEntry = 'FECHAALTA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'USUARIO' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DictionaryEntry = 'USUARIO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NOMBRE' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DictionaryEntry = 'NOMBRE' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'OTROSDATOS' + DataType = datMemo + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ULTIMOCIERRE' + DataType = datDateTime + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = #218'ltimo cierre' + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PENULTIMOCIERRE' + DataType = datDateTime + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'Penultimo cierre' + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end> + Commands = < + item + Params = < + item + Name = 'OLD_CODIGO' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'CUENTAS' + SQL = 'DELETE '#10' FROM'#10' CUENTAS'#10' WHERE'#10' (CODIGO = :OLD_CODIGO)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Delete_Cuentas' + end> + RelationShips = <> + UpdateRules = <> + Left = 40 + Top = 16 + end + object DABINAdapter: TDABINAdapter + Left = 40 + Top = 80 + end +end diff --git a/Modulos/Cuentas/Servidor/srvCuentas_Impl.pas b/Modulos/Cuentas/Servidor/srvCuentas_Impl.pas new file mode 100644 index 0000000..773f435 --- /dev/null +++ b/Modulos/Cuentas/Servidor/srvCuentas_Impl.pas @@ -0,0 +1,68 @@ +unit srvCuentas_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:} DARemoteService_Impl, + {Used RODLs:} DataAbstract_Intf, + {Generated:} FactuGES_Intf, uDAClasses, uDADataTable, uDABINAdapter; + +type + { TsrvCuentas } + TsrvCuentas = class(TDARemoteService, IsrvCuentas) + schCuentas: TDASchema; + DABINAdapter: TDABINAdapter; + private + protected + { IsrvCuentas methods } + function GenerateReport: Binary; + function PuedoEliminarCuenta(const Codigo: Integer): Boolean; + end; + +implementation + +{$R *.dfm} +uses + {Generated:} FactuGES_Invk, uDataModuleServer, uDAInterfaces; + +procedure Create_srvCuentas(out anInstance : IUnknown); +begin + anInstance := TsrvCuentas.Create(NIL); +end; + +{ srvCuentas } +function TsrvCuentas.GenerateReport: Binary; +begin +// +end; + +function TsrvCuentas.PuedoEliminarCuenta(const Codigo: Integer): Boolean; +var + dsData: IDASQLCommand; +begin + Result := True; + Connection.BeginTransaction; + try + dsData := schCuentas.NewCommand(Connection, 'Delete_Cuentas', ['OLD_CODIGO'], [Codigo]); + except + on E: Exception do + Result := False; + end; + Connection.RollbackTransaction; +end; + +initialization + TROClassFactory.Create('srvCuentas', Create_srvCuentas, TsrvCuentas_Invoker); + +finalization + +end. diff --git a/Modulos/Documentos asociados/DocumentosAsociados.bdsproj b/Modulos/Documentos asociados/DocumentosAsociados.bdsproj new file mode 100644 index 0000000..7d06a5b --- /dev/null +++ b/Modulos/Documentos asociados/DocumentosAsociados.bdsproj @@ -0,0 +1,492 @@ + + + + + + + + + + + + DocumentosAsociados.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 3 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + .\ + ..\..\Output\Cliente + .\ + $(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\Base;..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios + vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;IntrawebDB_50_70;Intraweb_50_70;Rave50CLX;Rave50VCL;dclOfficeXP;PluginSDK_D7R;DJcl;JvStdCtrlsD7R;JvAppFrmD7R;JvCoreD7R;JvBandsD7R;JvBDED7R;JvDBD7R;JvDlgsD7R;JvCmpD7R;JvCryptD7R;JvCtrlsD7R;JvCustomD7R;JvDockingD7R;JvDotNetCtrlsD7R;JvEDID7R;qrpt;JvGlobusD7R;JvHMID7R;JvInspectorD7R;JvInterpreterD7R;JvJansD7R;JvManagedThreadsD7R;JvMMD7R;JvNetD7R;JvPageCompsD7R;JvPluginD7R;JvPrintPreviewD7R;JvSystemD7R;JvTimeFrameworkD7R;JvUIBD7R;JvValidatorsD7R;JvWizardD7R;JvXPCtrlsD7R;GUISDK_D7;RemObjects_WebBroker_D7;RemObjects_Indy_D7;RemObjects_RODX_D7;RemObjects_BPDX_D7;PascalScript_RO_D7;DataAbstract_Core_D7;DataAbstract_IDE_D7;DataAbstract_DBXDriver_D7;DataAbstract_Scripting_D7;dxBarD7;dxComnD7;cxLibraryVCLD7;cxEditorsVCLD7;dxThemeD7;cxDataD7;cxExtEditorsVCLD7;cxGridVCLD7;cxPageControlVCLD7;cxSchedulerVCLD7;cxTreeListVCLD7;dxBarDBNavD7;dxBarExtDBItemsD7;dxBarExtItemsD7;dxDockingD7;dxNavBarD7;dxPSCoreD7;dxsbD7;dxPSLnksD7;dxPSTeeChartD7;EPCOTAUtils70;PNG_D7;PngComponentsD7;tb2k_d7;tbx_d7;UserControlD7_RT;fqb70;frx7;frxADO7;frxBDE7;frxcs7;frxDB7;frxDBX7;frxe7;frxIBX7;fs7;fsADO7;fsBDE7;fsDB7;fsIBX7;cxExportVCLD7;cxIntl5D7;cxIntlPrintSys3D7;dxPScxCommonD7;dxPScxExtCommonD7;dxPScxGridLnkD7;dxPScxPCProdD7;dxPScxTLLnkD7;dxPSDBTeeChartD7;dxPsPrVwAdvD7;TMSD7;FR7;FRIBX7;cxIntlSchedulerD7;dxLayoutControlD7 + + + False + + + + + + False + + + True + False + + + + $00000000 + C:\Archivos de programa\Borland\Delphi7\Bin\ + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + diff --git a/Modulos/Documentos asociados/DocumentosAsociados.cfg b/Modulos/Documentos asociados/DocumentosAsociados.cfg new file mode 100644 index 0000000..fde67f0 --- /dev/null +++ b/Modulos/Documentos asociados/DocumentosAsociados.cfg @@ -0,0 +1,45 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-GD +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N".\" +-LE"..\..\Output\Cliente" +-LN".\" +-U"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\Base;..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios" +-O"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\Base;..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios" +-I"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\Base;..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios" +-R"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\Base;..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios" +-Z +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/Modulos/Documentos asociados/DocumentosAsociados.dcp b/Modulos/Documentos asociados/DocumentosAsociados.dcp new file mode 100644 index 0000000..aea9067 Binary files /dev/null and b/Modulos/Documentos asociados/DocumentosAsociados.dcp differ diff --git a/Modulos/Documentos asociados/DocumentosAsociados.dof b/Modulos/Documentos asociados/DocumentosAsociados.dof new file mode 100644 index 0000000..d109aeb --- /dev/null +++ b/Modulos/Documentos asociados/DocumentosAsociados.dof @@ -0,0 +1,178 @@ +[FileVersion] +Version=7.0 +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=1 +SymbolLibrary=1 +SymbolPlatform=1 +UnitLibrary=1 +UnitPlatform=1 +UnitDeprecated=1 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 +[Linker] +MapFile=3 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription= +[Directories] +OutputDir= +UnitOutputDir=.\ +PackageDLLOutputDir=..\..\Output\Cliente +PackageDCPOutputDir=.\ +SearchPath=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\Base;..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios +Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;IntrawebDB_50_70;Intraweb_50_70;Rave50CLX;Rave50VCL;dclOfficeXP;PluginSDK_D7R;DJcl;JvStdCtrlsD7R;JvAppFrmD7R;JvCoreD7R;JvBandsD7R;JvBDED7R;JvDBD7R;JvDlgsD7R;JvCmpD7R;JvCryptD7R;JvCtrlsD7R;JvCustomD7R;JvDockingD7R;JvDotNetCtrlsD7R;JvEDID7R;qrpt;JvGlobusD7R;JvHMID7R;JvInspectorD7R;JvInterpreterD7R;JvJansD7R;JvManagedThreadsD7R;JvMMD7R;JvNetD7R;JvPageCompsD7R;JvPluginD7R;JvPrintPreviewD7R;JvSystemD7R;JvTimeFrameworkD7R;JvUIBD7R;JvValidatorsD7R;JvWizardD7R;JvXPCtrlsD7R;GUISDK_D7;RemObjects_WebBroker_D7;RemObjects_Indy_D7;RemObjects_RODX_D7;RemObjects_BPDX_D7;PascalScript_RO_D7;DataAbstract_Core_D7;DataAbstract_IDE_D7;DataAbstract_DBXDriver_D7;DataAbstract_Scripting_D7;dxBarD7;dxComnD7;cxLibraryVCLD7;cxEditorsVCLD7;dxThemeD7;cxDataD7;cxExtEditorsVCLD7;cxGridVCLD7;cxPageControlVCLD7;cxSchedulerVCLD7;cxTreeListVCLD7;dxBarDBNavD7;dxBarExtDBItemsD7;dxBarExtItemsD7;dxDockingD7;dxNavBarD7;dxPSCoreD7;dxsbD7;dxPSLnksD7;dxPSTeeChartD7;EPCOTAUtils70;PNG_D7;PngComponentsD7;tb2k_d7;tbx_d7;UserControlD7_RT;fqb70;frx7;frxADO7;frxBDE7;frxcs7;frxDB7;frxDBX7;frxe7;frxIBX7;fs7;fsADO7;fsBDE7;fsDB7;fsIBX7;cxExportVCLD7;cxIntl5D7;cxIntlPrintSys3D7;dxPScxCommonD7;dxPScxExtCommonD7;dxPScxGridLnkD7;dxPScxPCProdD7;dxPScxTLLnkD7;dxPSDBTeeChartD7;dxPsPrVwAdvD7;TMSD7;FR7;FRIBX7;cxIntlSchedulerD7;dxLayoutControlD7 +Conditionals= +DebugSourceDirs= +UsePackages=0 +[Parameters] +RunParams= +HostApplication= +Launcher= +UseLauncher=0 +DebugCWD= +[Language] +ActiveLang= +ProjectLang= +RootDir=C:\Archivos de programa\Borland\Delphi7\Bin\ +[Version Info] +IncludeVerInfo=1 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=3082 +CodePage=1252 +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= +[Excluded Packages] +C:\Archivos de programa\Developer Express Inc\Lib\D7\dxPScxSchedulerLnkD7.bpl=ExpressPrinting System ReportLink for ExpressScheduler by Developer Express Inc. +C:\Archivos de programa\Developer Express Inc\Lib\D7\dxLayoutControlcxEditAdaptersD7.bpl=ExpressLayoutControl Adapters for ExpressEditors Library 5 by Developer Express Inc. +[HistoryLists\hlDebugSourcePath] +Count=1 +Item0=D:\Proyectos\Componentes\GUISDK\Sources\;D:\Proyectos\Componentes\PluginSDK\Source\;D:\Proyectos\FactuGES (Estudio)\Codigo\Modulos\Contactos\Cliente;D:\Proyectos\FactuGES (Estudio)\Codigo\Modulos\Contactos\Reglas +[HistoryLists\hlUnitAliases] +Count=1 +Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +[HistoryLists\hlSearchPath] +Count=16 +Item0=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente;..\..\Asientos\Cliente;..\..\Cuentas\Cliente +Item1=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente;..\..\Asientos\Cliente +Item2=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente +Item3=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente +Item4=..\Modulos\Presupuestos\Reglas;..\Modulos\Contactos\Reglas;..\Base;..\Configuracion;..\Usuarios;..\Modulos\Albaranes de cliente\Reglas +Item5=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\Base;..\Configuracion;..\Usuarios;..\Modulos\Intervalos;..\Modulos\Documentos asociados;..\Modulos\Contactos\Cliente;..\Modulos\Contactos\Reglas;..\Modulos\Presupuestos\Cliente;..\Modulos\Presupuestos\Reglas;..\Modulos\Albaranes de cliente\Cliente;..\Modulos\Albaranes de cliente\Reglas;..\Modulos\Facturas de cliente\Cliente;..\Modulos\Facturas de cliente\Reglas;..\Modulos\Pedidos a proveedor\Cliente;..\Modulos\Pedidos a proveedor\Reglas;..\Modulos\Facturas de proveedor\Cliente;..\Modulos\Facturas de proveedor\Reglas;..\Modulos\Montajes\Reglas;..\Modulos\Montajes\Cliente;..\Modulos\Articulos\Cliente;..\Modulos\Articulos\Reglas;..\Modulos\Almacenes\Reglas;..\Modulos\Almacenes\Cliente;..\Modulos\Pagos\Reglas;..\Modulos\Pagos\Cliente;..\Modulos\Cuentas\Reglas;..\Modulos\Cuentas\Cliente;..\Modulos\Asientos\Reglas;..\Modulos\Asientos\Cliente;..\Modulos\Calendarios\Cliente;..\Modulos\Calendarios\Reglas +Item6=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente;..\..\Documentos asociados;..\..\Contactos\Cliente;..\..\Almacenes\Cliente +Item7=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados +Item8=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente;..\..\Documentos asociados;..\..\Contactos\Cliente +Item9=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente;..\..\Documentos asociados +Item10=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente +Item11=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados;..\..\Montajes\Cliente;..\..\Almacenes\Cliente +Item12=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados;..\..\Montajes\Cliente +Item13=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\Servidor +Item14=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\base;..\Modulos\Calendarios\Cliente;..\Modulos\Calendarios\Reglas +Item15=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\Base;..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios +[HistoryLists\hlUnitOutputDirectory] +Count=1 +Item0=.\ +[HistoryLists\hlOutputDirectorry] +Count=2 +Item0=..\Output\Servidor +Item1=..\Output\Cliente +[HistoryLists\hlBPLOutput] +Count=3 +Item0=..\..\..\Output\Cliente +Item1=..\Output\Cliente +Item2=..\..\Output\Cliente +[HistoryLists\hlDCPOutput] +Count=1 +Item0=.\ diff --git a/Modulos/Documentos asociados/DocumentosAsociados.dpk b/Modulos/Documentos asociados/DocumentosAsociados.dpk new file mode 100644 index 0000000..14114b4 --- /dev/null +++ b/Modulos/Documentos asociados/DocumentosAsociados.dpk @@ -0,0 +1,34 @@ +package DocumentosAsociados; + +{$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 + BaseD7; + +contains + uViewDocumentosAsociados in 'uViewDocumentosAsociados.pas' {frViewDocumentosAsociados: TCustomView}, + uBizDocumentosAsociados in 'uBizDocumentosAsociados.pas'; + +end. diff --git a/Modulos/Documentos asociados/DocumentosAsociados.drc b/Modulos/Documentos asociados/DocumentosAsociados.drc new file mode 100644 index 0000000..a5d5271 --- /dev/null +++ b/Modulos/Documentos asociados/DocumentosAsociados.drc @@ -0,0 +1,14 @@ +/* VER150 + Generated by the Borland Delphi Pascal Compiler + because -GD or --drc was supplied to the compiler. + + This file contains compiler-generated resources that + were bound to the executable. + If this file is empty, then no compiler-generated + resources were bound to the produced executable. +*/ + +STRINGTABLE +BEGIN +END + diff --git a/Modulos/Documentos asociados/DocumentosAsociados.res b/Modulos/Documentos asociados/DocumentosAsociados.res new file mode 100644 index 0000000..ec5f233 Binary files /dev/null and b/Modulos/Documentos asociados/DocumentosAsociados.res differ diff --git a/Modulos/Documentos asociados/uBizDocumentosAsociados.pas b/Modulos/Documentos asociados/uBizDocumentosAsociados.pas new file mode 100644 index 0000000..b2655b2 --- /dev/null +++ b/Modulos/Documentos asociados/uBizDocumentosAsociados.pas @@ -0,0 +1,136 @@ +unit uBizDocumentosAsociados; + +interface + +type + + TGestorDocumentos = class(TObject) + private + FRootDocumentos: Variant; + FDirectorio: Variant; + FModoInsert: Boolean; + + function CrearDirDocumentos: Boolean; + function EliminarDirDocumentos : Boolean; + + function getDirectorio: Variant; + function getModoInsert: Boolean; + function getRootDocumentos: Variant; + procedure setDirectorio(const Value: Variant); + procedure setModoInsert(const Value: Boolean); + procedure setRootDocumentos(const Value: Variant); + public + property RootDocumentos: Variant read getRootDocumentos write setRootDocumentos; + property Directorio: Variant read getDirectorio write setDirectorio; + property ModoInsert: Boolean read getModoInsert write setModoInsert; + function AnadirDocumento(RutaDocumento: String): Boolean; + procedure HabilitarDirectorio; + function darRutaDocumentos: Variant; + procedure procesarDeleteTable; + procedure procesarCancelTable; + end; + + IBizDocumentosAsociados = interface + ['{60F86497-AA60-4322-878C-A63ECC78B36B}'] + function GetGestorDocumentos: TGestorDocumentos; + procedure SetGestorDocumentos(Value: TGestorDocumentos); + property GestorDocumentos: TGestorDocumentos read GetGestorDocumentos write SetGestorDocumentos; + end; + +implementation + +uses SysUtils, uSysFunc, Variants, Forms; + +function TGestorDocumentos.AnadirDocumento(RutaDocumento: String): Boolean; +var + DireccionDestino: String; +begin + try + Result := False; + DireccionDestino := darRutaDocumentos + PathDelim + ExtractFileName(RutaDocumento); + CopiarFichero(RutaDocumento, DireccionDestino); + Result := True; + finally + end; +end; + +procedure TGestorDocumentos.HabilitarDirectorio; +begin + if not DirectoryExists(darRutaDocumentos) then + CrearDirDocumentos; +end; + +function TGestorDocumentos.darRutaDocumentos: Variant; +begin + Result := FRootDocumentos + PathDelim + VarToStr(FDirectorio); +end; + +function TGestorDocumentos.CrearDirDocumentos: Boolean; +var + DireccionDestino: String; +begin + Result := False; + DireccionDestino := darRutaDocumentos; + if not DirectoryExists(DireccionDestino) then + CreateDir(DireccionDestino); + Result := True; +end; + +function TGestorDocumentos.EliminarDirDocumentos: Boolean; +begin + Result := False; + Application.ProcessMessages; + if DirectoryExists(darRutaDocumentos) then + begin + Deltree(darRutaDocumentos, True); + Application.ProcessMessages; + Result := DirectoryExists(darRutaDocumentos); + end; +end; + +procedure TGestorDocumentos.ProcesarDeleteTable; +begin + EliminarDirDocumentos; +end; + +procedure TGestorDocumentos.ProcesarCancelTable; +begin + if FModoInsert then + EliminarDirDocumentos + else + //Eliminaremos el directorio si no tiene documentos, solo tendremos direcctorios + //en el caso que el presupuesto tenga documentos asociados + RemoveDir(darRutaDocumentos); + Application.ProcessMessages; +end; + +function TGestorDocumentos.getDirectorio: Variant; +begin + Result := FDirectorio; +end; + +function TGestorDocumentos.getModoInsert: Boolean; +begin + Result := FModoInsert; +end; + +function TGestorDocumentos.getRootDocumentos: Variant; +begin + Result := FRootDocumentos; +end; + +procedure TGestorDocumentos.setDirectorio(const Value: Variant); +begin + FDirectorio := Value; +end; + +procedure TGestorDocumentos.setModoInsert(const Value: Boolean); +begin + FModoInsert := Value; +end; + +procedure TGestorDocumentos.setRootDocumentos(const Value: Variant); +begin + FRootDocumentos := Value; +end; +end. diff --git a/Modulos/Documentos asociados/uViewDocumentosAsociados.ddp b/Modulos/Documentos asociados/uViewDocumentosAsociados.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Documentos asociados/uViewDocumentosAsociados.ddp differ diff --git a/Modulos/Documentos asociados/uViewDocumentosAsociados.dfm b/Modulos/Documentos asociados/uViewDocumentosAsociados.dfm new file mode 100644 index 0000000..709dadc --- /dev/null +++ b/Modulos/Documentos asociados/uViewDocumentosAsociados.dfm @@ -0,0 +1,137 @@ +inherited frViewDocumentosAsociados: TfrViewDocumentosAsociados + Width = 721 + Height = 487 + ParentFont = True + OnDestroy = CustomViewDestroy + object Panel10: TPanel + Left = 0 + Top = 0 + Width = 721 + Height = 487 + Align = alClient + BevelOuter = bvNone + BorderWidth = 10 + Caption = ' ' + Color = clWhite + ParentBackground = True + TabOrder = 0 + object Panel11: TPanel + Left = 10 + Top = 40 + Width = 701 + Height = 437 + Align = alClient + BevelOuter = bvNone + BorderWidth = 5 + Caption = ' ' + ParentBackground = True + ParentColor = True + TabOrder = 0 + object explo: TcxShellListView + Left = 5 + Top = 5 + Width = 691 + Height = 427 + Align = alClient + DragDropSettings.DefaultDropEffect = deCopy + DragDropSettings.DropEffect = [] + IconOptions.WrapText = False + MultiSelect = True + Options.ShowFolders = False + Options.ContextMenus = False + Options.TrackShellChanges = False + Options.ShowToolTip = False + Options.AutoNavigate = False + ParentFont = False + PopupMenu = GridPopupMenu + Root.BrowseFolder = bfCustomPath + Style.Font.Charset = DEFAULT_CHARSET + Style.Font.Color = clBlack + Style.Font.Height = -11 + Style.Font.Name = 'Tahoma' + Style.Font.Style = [] + Style.IsFontAssigned = True + TabOrder = 0 + OnDblClick = exploDblClick + end + end + object pnlBarraDocumentos: TPanel + Left = 10 + Top = 10 + Width = 701 + Height = 30 + Align = alTop + AutoSize = True + BevelOuter = bvNone + BorderWidth = 5 + Caption = ' ' + ParentBackground = True + ParentColor = True + TabOrder = 1 + object Button1: TButton + Left = 8 + Top = 5 + Width = 116 + Height = 20 + Action = actAnadirDocumento + TabOrder = 0 + end + object Button2: TButton + Left = 129 + Top = 5 + Width = 116 + Height = 20 + Action = actElliminarDocumento + TabOrder = 1 + end + end + end + object OpenDialog1: TOpenDialog + Options = [ofHideReadOnly, ofAllowMultiSelect, ofPathMustExist, ofFileMustExist, ofEnableSizing] + Left = 392 + Top = 8 + end + object ActionList1: TActionList + Left = 312 + Top = 8 + object actAnadirDocumento: TAction + Caption = 'A'#241'adir documento' + OnExecute = actAnadirDocumentoExecute + end + object actElliminarDocumento: TAction + Caption = 'Eliminar documento' + OnExecute = actElliminarDocumentoExecute + OnUpdate = actElliminarDocumentoUpdate + end + object actAbrirDocumento: TAction + Caption = 'Abrir' + OnExecute = actAbrirDocumentoExecute + OnUpdate = actAbrirDocumentoUpdate + end + end + object GridPopupMenu: TPopupMenu + Left = 432 + Top = 8 + object Modificar1: TMenuItem + Action = actAbrirDocumento + end + object N1: TMenuItem + Caption = '-' + end + object Nuevo1: TMenuItem + Action = actAnadirDocumento + end + object Previsualizar1: TMenuItem + Action = actElliminarDocumento + end + end + object JvChangeNotify1: TJvChangeNotify + Notifications = < + item + end> + FreeOnTerminate = False + OnChangeNotify = JvChangeNotify1ChangeNotify + Left = 352 + Top = 8 + end +end diff --git a/Modulos/Documentos asociados/uViewDocumentosAsociados.pas b/Modulos/Documentos asociados/uViewDocumentosAsociados.pas new file mode 100644 index 0000000..7df36f6 --- /dev/null +++ b/Modulos/Documentos asociados/uViewDocumentosAsociados.pas @@ -0,0 +1,192 @@ +unit uViewDocumentosAsociados; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, ComCtrls, ShlObj, cxShellCommon, Menus, cxControls, DB, + cxContainer, cxShellListView, ExtCtrls, ActnList, StdCtrls, + JvComponent, JvChangeNotify, uBizDocumentosAsociados, JvComponentBase; + +type + + IViewDocumentosAsociados = interface(IViewBase) + ['{38C44437-BAC5-4155-A737-4A448062653C}'] + function GetGestorDocumentos: TGestorDocumentos; + procedure SetGestorDocumentos(const Value: TGestorDocumentos); + property GestorDocumentos: TGestorDocumentos read GetGestorDocumentos write + SetGestorDocumentos; + end; + + TfrViewDocumentosAsociados = class(TfrViewBase, IViewDocumentosAsociados) + Panel10: TPanel; + Panel11: TPanel; + explo: TcxShellListView; + pnlBarraDocumentos: TPanel; + OpenDialog1: TOpenDialog; + ActionList1: TActionList; + actAnadirDocumento: TAction; + actElliminarDocumento: TAction; + actAbrirDocumento: TAction; + Button1: TButton; + Button2: TButton; + GridPopupMenu: TPopupMenu; + Modificar1: TMenuItem; + N1: TMenuItem; + Nuevo1: TMenuItem; + Previsualizar1: TMenuItem; + JvChangeNotify1: TJvChangeNotify; + procedure actAnadirDocumentoExecute(Sender: TObject); + procedure actElliminarDocumentoExecute(Sender: TObject); + procedure actAbrirDocumentoExecute(Sender: TObject); + procedure actAbrirDocumentoUpdate(Sender: TObject); + procedure actElliminarDocumentoUpdate(Sender: TObject); + procedure JvChangeNotify1ChangeNotify(Sender: TObject; Dir: String; + Actions: TJvChangeActions); + procedure CustomViewDestroy(Sender: TObject); + procedure exploDblClick(Sender: TObject); + private + FGestorDocumentos: TGestorDocumentos; + function GetGestorDocumentos: TGestorDocumentos; + procedure SetGestorDocumentos(const Value: TGestorDocumentos); + + procedure HabilitarDocumentos; + procedure DeshabilitarDocumentos; + + public + property GestorDocumentos: TGestorDocumentos read GetGestorDocumentos write SetGestorDocumentos; + end; + +var + frViewDocumentosAsociados: TfrViewDocumentosAsociados; + +implementation +{$R *.dfm} + +uses ShellApi, uSysFunc; + +procedure TfrViewDocumentosAsociados.actAnadirDocumentoExecute(Sender: TObject); +var + FicheroOrigen : String; + i : Integer; +begin + if OpenDialog1.Execute then + begin + for i:=0 to OpenDialog1.Files.Count - 1 do + begin + FicheroOrigen := OpenDialog1.Files.Strings[i]; + if not (length(trim(FicheroOrigen))=0) then + if not FGestorDocumentos.AnadirDocumento(FicheroOrigen) then + raise Exception.Create('Error al añadir el documento'); + end; + end; + + Explo.Root.CustomPath := Explo.Root.CustomPath; +end; + +procedure TfrViewDocumentosAsociados.actElliminarDocumentoExecute(Sender: TObject); +var + i : Integer; + cadena: String; +begin + if (Application.MessageBox('¿Desea eliminar los documentos seleccionados?', 'Atención', MB_YESNO) = IDYES) then + begin + for i:=0 to explo.InnerListView.Items.Count - 1 do + begin + if explo.InnerListView.Items[i].Selected then + begin + cadena := GetPidlName(explo.GetItemAbsolutePIDL(i)); + if not SysUtils.DeleteFile(cadena) then + raise Exception.Create('Error al eliminar el documento'); + end; + end; + end; + + Explo.Root.CustomPath := Explo.Root.CustomPath; +end; + +procedure TfrViewDocumentosAsociados.actAbrirDocumentoExecute(Sender: TObject); +var + FileHandle : Integer; + cadena : String; +begin + if explo.InnerListView.SelCount <> 0 then + begin + cadena := GetPidlName(explo.GetItemAbsolutePIDL(explo.InnerListView.ItemFocused.Index)); + ShellExecute(Handle, 'open', PAnsiChar(cadena), nil, nil, SW_SHOWNORMAL); + end; +end; + +procedure TfrViewDocumentosAsociados.actAbrirDocumentoUpdate(Sender: TObject); +begin + (Sender as TAction).Enabled := explo.InnerListView.SelCount <> 0; +end; + +procedure TfrViewDocumentosAsociados.actElliminarDocumentoUpdate(Sender: TObject); +begin + (Sender as TAction).Enabled := explo.InnerListView.SelCount <> 0; +end; + +function TfrViewDocumentosAsociados.GetGestorDocumentos: TGestorDocumentos; +begin + Result := FGestorDocumentos; +end; + +procedure TfrViewDocumentosAsociados.SetGestorDocumentos(const Value: TGestorDocumentos); +begin + FGestorDocumentos := Value; + + if Assigned(FGestorDocumentos) then + begin + DeshabilitarDocumentos; + FGestorDocumentos.HabilitarDirectorio; + HabilitarDocumentos; + end; +end; + +procedure TfrViewDocumentosAsociados.DeshabilitarDocumentos; +begin + JvChangeNotify1.Active := False; + JvChangeNotify1.Notifications.Clear; + explo.Enabled := False; + explo.Options.ShowNonFolders := False; + explo.Root.CustomPath := FGestorDocumentos.RootDocumentos; +end; + +procedure TfrViewDocumentosAsociados.HabilitarDocumentos; +begin + explo.Options.ShowNonFolders := True; + explo.Root.CustomPath := FGestorDocumentos.darRutaDocumentos; + JvChangeNotify1.Notifications.Clear; + with JvChangeNotify1.Notifications.Add do + begin + Actions := [caChangeFileName, caChangeDirName]; + Directory := explo.Root.CustomPath; + end; + JvChangeNotify1.Active := True; + explo.Enabled := True; +end; + +procedure TfrViewDocumentosAsociados.JvChangeNotify1ChangeNotify( + Sender: TObject; Dir: String; Actions: TJvChangeActions); +begin + Explo.Root.CustomPath := Explo.Root.CustomPath; +end; + +procedure TfrViewDocumentosAsociados.CustomViewDestroy(Sender: TObject); +begin + //Eliminaremos el directorio si no tiene documentos, solo tendremos direcctorios + //en el caso que el presupuesto tenga documentos asociados + RemoveDir(FGestorDocumentos.darRutaDocumentos); + FGestorDocumentos := NIL; + + inherited; +end; + +procedure TfrViewDocumentosAsociados.exploDblClick(Sender: TObject); +begin + inherited; + actAbrirDocumento.Execute; +end; + +end. diff --git a/Modulos/Facturas de cliente/Cliente/FacturasCliente.bdsproj b/Modulos/Facturas de cliente/Cliente/FacturasCliente.bdsproj new file mode 100644 index 0000000..b986ba2 --- /dev/null +++ b/Modulos/Facturas de cliente/Cliente/FacturasCliente.bdsproj @@ -0,0 +1,492 @@ + + + + + + + + + + + + FacturasCliente.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 3 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + Albaranes de cliente + + + + .\ + ..\..\..\Output\Cliente + .\ + $(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente;..\..\Asientos\Cliente;..\..\Cuentas\Cliente;..\..\Almacenes\Cliente + vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;CEToolsPkgd7;FR7;FRIBX7;Hydra_Core_D7;Hydra_RO_D7;fqb70;frx7;frxADO7;frxBDE7;frxDB7;frxDBX7;frxe7;frxIBX7;fs7;fsADO7;fsBDE7;fsDB7;fsIBX7;DataAbstract_Core_D7;DataAbstract_IDE_D7 + + + False + + + + + + False + + + True + False + + + + $00000000 + C:\Archivos de programa\Borland\Delphi7\Bin\ + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + diff --git a/Modulos/Facturas de cliente/Cliente/FacturasCliente.cfg b/Modulos/Facturas de cliente/Cliente/FacturasCliente.cfg new file mode 100644 index 0000000..4d5e525 --- /dev/null +++ b/Modulos/Facturas de cliente/Cliente/FacturasCliente.cfg @@ -0,0 +1,45 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O- +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-GD +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N".\" +-LE"..\..\..\Output\Cliente" +-LN".\" +-U"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente;..\..\Asientos\Cliente;..\..\Cuentas\Cliente;..\..\Almacenes\Cliente;..\..\Montajes\Cliente" +-O"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente;..\..\Asientos\Cliente;..\..\Cuentas\Cliente;..\..\Almacenes\Cliente;..\..\Montajes\Cliente" +-I"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente;..\..\Asientos\Cliente;..\..\Cuentas\Cliente;..\..\Almacenes\Cliente;..\..\Montajes\Cliente" +-R"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente;..\..\Asientos\Cliente;..\..\Cuentas\Cliente;..\..\Almacenes\Cliente;..\..\Montajes\Cliente" +-Z +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/Modulos/Facturas de cliente/Cliente/FacturasCliente.dcp b/Modulos/Facturas de cliente/Cliente/FacturasCliente.dcp new file mode 100644 index 0000000..bdaec2c Binary files /dev/null and b/Modulos/Facturas de cliente/Cliente/FacturasCliente.dcp differ diff --git a/Modulos/Facturas de cliente/Cliente/FacturasCliente.dof b/Modulos/Facturas de cliente/Cliente/FacturasCliente.dof new file mode 100644 index 0000000..447d48c --- /dev/null +++ b/Modulos/Facturas de cliente/Cliente/FacturasCliente.dof @@ -0,0 +1,209 @@ +[FileVersion] +Version=7.0 +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=0 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=1 +SymbolLibrary=1 +SymbolPlatform=1 +UnitLibrary=1 +UnitPlatform=1 +UnitDeprecated=1 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 +[Linker] +MapFile=3 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=Albaranes de cliente +[Directories] +OutputDir= +UnitOutputDir=.\ +PackageDLLOutputDir=..\..\..\Output\Cliente +PackageDCPOutputDir=.\ +SearchPath=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente;..\..\Asientos\Cliente;..\..\Cuentas\Cliente;..\..\Almacenes\Cliente;..\..\Montajes\Cliente +Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;CEToolsPkgd7;FR7;FRIBX7;Hydra_Core_D7;Hydra_RO_D7;fqb70;frx7;frxADO7;frxBDE7;frxDB7;frxDBX7;frxe7;frxIBX7;fs7;fsADO7;fsBDE7;fsDB7;fsIBX7;DataAbstract_Core_D7;DataAbstract_IDE_D7 +Conditionals= +DebugSourceDirs= +UsePackages=0 +[Parameters] +RunParams= +HostApplication= +Launcher= +UseLauncher=0 +DebugCWD= +[Language] +ActiveLang= +ProjectLang= +RootDir=C:\Archivos de programa\Borland\Delphi7\Bin\ +[Version Info] +IncludeVerInfo=1 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=3082 +CodePage=1252 +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= +[Excluded Packages] +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\cxTreeListVCLD7.bpl=ExpressQuantumTreeList 4 (VCL Edition) by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxThemeD7.bpl=Express XP Theme Manager by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\cxLibraryVCLD7.bpl=Express Cross Platform Library (VCL Edition) by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\cxExportVCLD7.bpl=Express Cross Platform Export Library (VCL Edition) by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\cxEditorsVCLD7.bpl=ExpressEditors Library 5 (VCL Edition) by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\cxDataD7.bpl=ExpressDataController by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\cxExtEditorsVCLD7.bpl=ExpressExtendedEditors Library 5 (VCL Edition) by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\cxGridVCLD7.bpl=ExpressQuantumGrid 5 (VCL Edition) by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\cxPageControlVCLD7.bpl=Express Cross Platform PageControl (VCL Edition) by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\cxSchedulerVCLD7.bpl=ExpressScheduler 2 (VCL Edition) by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxsbD7.bpl=ExpressSideBar by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxComnD7.bpl=ExpressCommonLibrary by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxBarD7.bpl=ExpressBars by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxBarDBNavD7.bpl=ExpressBars DBNavigator by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxBarExtDBItemsD7.bpl=ExpressBars extended DB items by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxBarExtItemsD7.bpl=ExpressBars extended items by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxDockingD7.bpl=ExpressDocking Library by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxLayoutControlD7.bpl=ExpressLayout Control by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxNavBarD7.bpl=ExpressNavBar by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxGDIPlusD7.bpl=ExpressGDI+ Library by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxPSCoreD7.bpl=ExpressPrinting System by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\cxVerticalGridVCLD7.bpl=ExpressVerticalGrid (VCL Edition) by Developer Express Inc. +C:\Archivos de programa\Clever Components\Database Comparer\Delphi 7\Lib\ComparerD7.bpl=Database Comparer VCL +C:\Archivos de programa\Clever Components\Database Comparer\Delphi 7\Lib\ComparerBdeD7.bpl=Database Comparer VCL BDE +C:\Archivos de programa\Clever Components\Database Comparer\Delphi 7\Lib\ComparerDBXD7.bpl=Database Comparer VCL DBX +C:\Archivos de programa\Clever Components\Database Comparer\Delphi 7\Lib\ComparerIbxD7.bpl=Database Comparer VCL IBX +C:\Archivos de programa\Clever Components\Database Comparer\Delphi 7\Lib\ComparerAdoD7.bpl=Database Comparer VCL ADO +C:\Archivos de programa\EurekaLog 5\Delphi7\ExceptionExpert7.bpl=EurekaLog 5.1.9 +C:\WINDOWS\system32\dclShX_Namespace_V3D7.bpl=(untitled) +C:\WINDOWS\system32\vclShX_Namespace_v3D7.bpl=(untitled) +[HistoryLists\hlDebugSourcePath] +Count=1 +Item0=D:\Proyectos\Componentes\GUISDK\Sources\;D:\Proyectos\Componentes\PluginSDK\Source\;D:\Proyectos\FactuGES (Estudio)\Codigo\Modulos\Contactos\Cliente;D:\Proyectos\FactuGES (Estudio)\Codigo\Modulos\Contactos\Reglas +[HistoryLists\hlUnitAliases] +Count=1 +Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +[HistoryLists\hlSearchPath] +Count=19 +Item0=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\Reglas;..\..\Cuentas\Cliente;..\..\Asientos\Cliente;..\..\Intervalos\Cliente;..\..\Documentos asociados;..\..\Almacenes\Cliente;..\..\Montajes\Cliente +Item1=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente;..\..\Asientos\Cliente;..\..\Cuentas\Cliente;..\..\Almacenes\Cliente;..\..\Montajes\Cliente +Item2=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente;..\..\Asientos\Cliente;..\..\Cuentas\Cliente;..\..\Almacenes\Cliente;..\..\Montajes\Cliente +Item3=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente;..\..\Asientos\Cliente;..\..\Cuentas\Cliente +Item4=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente;..\..\Asientos\Cliente +Item5=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente +Item6=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente +Item7=..\Modulos\Presupuestos\Reglas;..\Modulos\Contactos\Reglas;..\Base;..\Configuracion;..\Usuarios;..\Modulos\Albaranes de cliente\Reglas +Item8=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\Base;..\Configuracion;..\Usuarios;..\Modulos\Intervalos;..\Modulos\Documentos asociados;..\Modulos\Contactos\Cliente;..\Modulos\Contactos\Reglas;..\Modulos\Presupuestos\Cliente;..\Modulos\Presupuestos\Reglas;..\Modulos\Albaranes de cliente\Cliente;..\Modulos\Albaranes de cliente\Reglas;..\Modulos\Facturas de cliente\Cliente;..\Modulos\Facturas de cliente\Reglas;..\Modulos\Pedidos a proveedor\Cliente;..\Modulos\Pedidos a proveedor\Reglas;..\Modulos\Facturas de proveedor\Cliente;..\Modulos\Facturas de proveedor\Reglas;..\Modulos\Montajes\Reglas;..\Modulos\Montajes\Cliente;..\Modulos\Articulos\Cliente;..\Modulos\Articulos\Reglas;..\Modulos\Almacenes\Reglas;..\Modulos\Almacenes\Cliente;..\Modulos\Pagos\Reglas;..\Modulos\Pagos\Cliente;..\Modulos\Cuentas\Reglas;..\Modulos\Cuentas\Cliente;..\Modulos\Asientos\Reglas;..\Modulos\Asientos\Cliente;..\Modulos\Calendarios\Cliente;..\Modulos\Calendarios\Reglas +Item9=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente;..\..\Documentos asociados;..\..\Contactos\Cliente;..\..\Almacenes\Cliente +Item10=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados +Item11=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente;..\..\Documentos asociados;..\..\Contactos\Cliente +Item12=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente;..\..\Documentos asociados +Item13=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente +Item14=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados;..\..\Montajes\Cliente;..\..\Almacenes\Cliente +Item15=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados;..\..\Montajes\Cliente +Item16=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\Servidor +Item17=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\base;..\Modulos\Calendarios\Cliente;..\Modulos\Calendarios\Reglas +Item18=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\Base;..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios +[HistoryLists\hlUnitOutputDirectory] +Count=1 +Item0=.\ +[HistoryLists\hlOutputDirectorry] +Count=2 +Item0=..\Output\Servidor +Item1=..\Output\Cliente +[HistoryLists\hlBPLOutput] +Count=3 +Item0=..\..\..\Output\Cliente +Item1=..\Output\Cliente +Item2=..\..\Output\Cliente +[HistoryLists\hlDCPOutput] +Count=1 +Item0=.\ diff --git a/Modulos/Facturas de cliente/Cliente/FacturasCliente.dpk b/Modulos/Facturas de cliente/Cliente/FacturasCliente.dpk new file mode 100644 index 0000000..f7d4153 --- /dev/null +++ b/Modulos/Facturas de cliente/Cliente/FacturasCliente.dpk @@ -0,0 +1,99 @@ +package FacturasCliente; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION OFF} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'Albaranes de cliente'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + vcldb, + PluginSDK_D7R, + GUISDK_D7, + PngComponentsD7, + PNG_D7, + vclactnband, + vclx, + BaseD7, + Contactos, + DataAbstract_D7, + dbrtl, + dsnap, + adortl, + AlbaranesCliente, + JvAppFrmD7R, + JvStdCtrlsD7R, + vcljpg, + JvCoreD7R, + JvSystemD7R, + designide, + JvPageCompsD7R, + tb2k_d7, + tbx_d7, + cxLibraryVCLD7, + dxThemeD7, + cxEditorsVCLD7, + cxDataD7, + cxExtEditorsVCLD7, + cxGridVCLD7, + cxPageControlVCLD7, + cxExportVCLD7, + dxPSCoreD7, + dxComnD7, + dxPScxCommonD7, + dxPSLnksD7, + vclshlctrls, + dxPScxGridLnkD7, + dclcxLibraryVCLD7, + Presupuestos_Intf, + Jcl, + JclVcl, + frxTee7, + frx7, + fs7, + fqb70, + bdertl, + fsTee7, + tee, + teeui, + teedb, + frxe7; + +contains + uDataModuleFacturasCliente in 'uDataModuleFacturasCliente.pas' {dmFacturasCliente: TDAClientDataModule}, + schFacturasClienteServer_Intf in '..\Reglas\schFacturasClienteServer_Intf.pas', + schFacturasClienteClient_Intf in '..\Reglas\schFacturasClienteClient_Intf.pas', + uBizFacturasCliente in '..\Reglas\uBizFacturasCliente.pas', + uPluginControllerFacturasCliente in 'uPluginControllerFacturasCliente.pas' {ModuleFacturasCliente: TModuleController}, + uEditorFacturasCliente in 'uEditorFacturasCliente.pas' {fEditorFacturasCliente: TCustomEditor}, + uViewFacturasCliente in 'uViewFacturasCliente.pas' {frViewFacturasCliente: TFrame}, + uViewDatosFacturaCliente in 'uViewDatosFacturaCliente.pas' {frViewDatosFacturaCliente: TFrame}, + uViewFacturaCliente in 'uViewFacturaCliente.pas' {frViewFacturaCliente: TFrame}, + uEditorFacturaCliente in 'uEditorFacturaCliente.pas' {fEditorFacturaCliente: TCustomEditor}, + uViewAlbaranFactura in 'uViewAlbaranFactura.pas' {frViewAlbaranFactura: TCustomView}, + uViewDetallesFacturaCliente in 'uViewDetallesFacturaCliente.pas' {frViewDetallesFacturaCliente: TCustomView}, + uEditarPreguntarIVA in 'uEditarPreguntarIVA.pas' {fEditorPreguntarIVA}, + uEditorPreviewFacturaCliente in 'uEditorPreviewFacturaCliente.pas' {fEditorPreviewFacturaCliente: TCustomEditor}; + +end. diff --git a/Modulos/Facturas de cliente/Cliente/FacturasCliente.drc b/Modulos/Facturas de cliente/Cliente/FacturasCliente.drc new file mode 100644 index 0000000..a5d5271 --- /dev/null +++ b/Modulos/Facturas de cliente/Cliente/FacturasCliente.drc @@ -0,0 +1,14 @@ +/* VER150 + Generated by the Borland Delphi Pascal Compiler + because -GD or --drc was supplied to the compiler. + + This file contains compiler-generated resources that + were bound to the executable. + If this file is empty, then no compiler-generated + resources were bound to the produced executable. +*/ + +STRINGTABLE +BEGIN +END + diff --git a/Modulos/Facturas de cliente/Cliente/FacturasCliente.res b/Modulos/Facturas de cliente/Cliente/FacturasCliente.res new file mode 100644 index 0000000..ec5f233 Binary files /dev/null and b/Modulos/Facturas de cliente/Cliente/FacturasCliente.res differ diff --git a/Modulos/Facturas de cliente/Cliente/serverlog.txt b/Modulos/Facturas de cliente/Cliente/serverlog.txt new file mode 100644 index 0000000..e69de29 diff --git a/Modulos/Facturas de cliente/Cliente/uDataModuleFacturasCliente.ddp b/Modulos/Facturas de cliente/Cliente/uDataModuleFacturasCliente.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Facturas de cliente/Cliente/uDataModuleFacturasCliente.ddp differ diff --git a/Modulos/Facturas de cliente/Cliente/uDataModuleFacturasCliente.dfm b/Modulos/Facturas de cliente/Cliente/uDataModuleFacturasCliente.dfm new file mode 100644 index 0000000..8b5d9a3 --- /dev/null +++ b/Modulos/Facturas de cliente/Cliente/uDataModuleFacturasCliente.dfm @@ -0,0 +1,683 @@ +object dmFacturasCliente: TdmFacturasCliente + OldCreateOrder = True + OnCreate = DAClientDataModuleCreate + RemoteService = RORemoteService + Adapter = dmBase.DABINAdapter + SchemaCall.MethodName = 'GetSchemaAsXML' + SchemaCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtString + end> + Left = 444 + Top = 330 + Height = 443 + Width = 638 + object RORemoteService: TRORemoteService + ServiceName = 'srvFacturasCliente' + Message = dmBase.ROMessage + Channel = dmBase.ROChannel + Left = 48 + Top = 32 + end + object tbl_FacturasCliente: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'CODIGOEMPRESA' + DataType = datInteger + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'C'#243'd. empresa' + Alignment = taLeftJustify + DictionaryEntry = 'CODIGOEMPRESA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGO' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + DictionaryEntry = 'CODIGOFACTURACLIENTE' + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHAALTA' + DataType = datDateTime + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'Fecha de alta' + Alignment = taLeftJustify + DictionaryEntry = 'FECHAALTA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'USUARIO' + DataType = datString + Size = 100 + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'Usuario de alta' + Alignment = taLeftJustify + DictionaryEntry = 'USUARIO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHAFACTURA' + DataType = datDateTime + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'Fecha' + Alignment = taLeftJustify + DictionaryEntry = 'FECHAFACTURA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'REFERENCIA' + DataType = datString + Size = 20 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Referencia' + Alignment = taLeftJustify + DictionaryEntry = 'REFERENCIA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'BASEIMPONIBLE' + DataType = datCurrency + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Base imponible' + Alignment = taLeftJustify + DictionaryEntry = 'BASEIMPONIBLE' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'DESCUENTO' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Descuento' + Alignment = taLeftJustify + DictionaryEntry = 'DESCUENTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTEDESCUENTO' + DataType = datCurrency + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Importe dto.' + Alignment = taLeftJustify + DictionaryEntry = 'IMPORTEDESCUENTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IVA' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + DictionaryEntry = 'IVA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTEIVA' + DataType = datCurrency + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Importe IVA' + Alignment = taLeftJustify + DictionaryEntry = 'IMPORTEIVA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTETOTAL' + DataType = datCurrency + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Importe total' + Alignment = taLeftJustify + DictionaryEntry = 'IMPORTETOTAL' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'OBSERVACIONES' + DataType = datMemo + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Observaciones' + Alignment = taLeftJustify + DictionaryEntry = 'OBSERVACIONES' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FORMAPAGO' + DataType = datMemo + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Forma de pago' + Alignment = taLeftJustify + DictionaryEntry = 'FORMAPAGO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOCONTACTO' + DataType = datInteger + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'C'#243'd. contacto' + Alignment = taLeftJustify + DictionaryEntry = 'CODIGOCONTACTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NIFCIF' + DataType = datString + Size = 10 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'NIF/CIF' + Alignment = taLeftJustify + DictionaryEntry = 'NIFCIF' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NOMBRE' + DataType = datString + Size = 100 + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'Nombre' + Alignment = taLeftJustify + DictionaryEntry = 'NOMBRE' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CALLE' + DataType = datString + Size = 150 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Calle' + Alignment = taLeftJustify + DictionaryEntry = 'CALLE' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PROVINCIA' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Provincia' + Alignment = taLeftJustify + DictionaryEntry = 'PROVINCIA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOPOSTAL' + DataType = datString + Size = 5 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'C'#243'd. postal' + Alignment = taLeftJustify + DictionaryEntry = 'CODIGOPOSTAL' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'POBLACION' + DataType = datString + Size = 40 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Poblaci'#243'n' + Alignment = taLeftJustify + DictionaryEntry = 'POBLACION' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOALBARAN' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + Params = <> + MasterMappingMode = mmDataRequest + LogChanges = False + StreamingOptions = [soDisableEventsWhileStreaming] + SchemaCall.MethodName = 'GetDatasetSchema' + SchemaCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBinary + end + item + Name = 'aDatasetName' + ParamType = fIn + DataType = rtString + Value = 'FacturasCliente' + end> + DataRequestCall.MethodName = 'GetDatasetDataEx' + DataRequestCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBinary + end + item + Name = 'DatasetName' + ParamType = fIn + DataType = rtString + Value = 'FacturasCliente' + end + item + Name = 'Params' + ParamType = fIn + DataType = rtUserDefined + UserClassName = 'TDADatasetParamArray' + end + item + Name = 'UserFilter' + ParamType = fIn + DataType = rtString + Value = '' + end + item + Name = 'IncludeSchema' + ParamType = fIn + DataType = rtBoolean + Value = False + end + item + Name = 'MaxRecords' + ParamType = fIn + DataType = rtInteger + Value = -1 + end> + DataUpdateCall.MethodName = 'UpdateData' + DataUpdateCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBinary + end + item + Name = 'Delta' + ParamType = fIn + DataType = rtBinary + end> + ScriptCall.MethodName = 'GetDatasetScripts' + ScriptCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtString + Value = '' + end + item + Name = 'DatasetNames' + ParamType = fIn + DataType = rtString + Value = 'FacturasCliente' + end> + ReadOnly = False + RemoteService = RORemoteService + Adapter = dmBase.DABINAdapter + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'FacturasCliente' + IndexDefs = <> + Left = 144 + Top = 32 + end + object ds_FacturasCliente: TDADataSource + DataTable = tbl_FacturasCliente + Left = 240 + Top = 32 + end + object tbl_DetallesFacturasCliente: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'CODIGOFACTURA' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + DictionaryEntry = 'CODIGOFACTURACLIENTE' + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NUMCONCEPTO' + DataType = datInteger + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'Num. concepto' + Alignment = taLeftJustify + DictionaryEntry = 'NUMCONCEPTO' + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'POSICION' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Posici'#243'n' + Alignment = taLeftJustify + DictionaryEntry = 'POSICIONCONCEPTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'TIPO' + DataType = datString + Size = 1 + Description = 'Cap'#237'tulo, etc' + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + DictionaryEntry = 'TIPODETALLESFACTURACLIENTE' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'DESCRIPCION' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Descripci'#243'n' + Alignment = taLeftJustify + DictionaryEntry = 'DESCRIPCION' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CANTIDAD' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Cantidad' + Alignment = taLeftJustify + DictionaryEntry = 'CANTIDAD' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTEUNIDAD' + DataType = datCurrency + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Importe unitario' + Alignment = taLeftJustify + DictionaryEntry = 'IMPORTEUNIDAD' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTETOTAL' + DataType = datCurrency + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Importe total' + Alignment = taLeftJustify + DictionaryEntry = 'IMPORTETOTAL' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'VISIBLE' + DataType = datString + Size = 1 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + DictionaryEntry = 'DetallesFacturasCliente_VISIBLE' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + Params = < + item + Name = 'CODIGOFACTURA' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end> + MasterMappingMode = mmParams + MasterParamsMappings.Strings = ( + 'CODIGOFACTURA=CODIGO') + StreamingOptions = [soDisableEventsWhileStreaming] + SchemaCall.MethodName = 'GetDatasetSchema' + SchemaCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBinary + end + item + Name = 'aDatasetName' + ParamType = fIn + DataType = rtString + Value = 'DetallesFacturasCliente' + end> + DataRequestCall.MethodName = 'GetDatasetDataEx' + DataRequestCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBinary + end + item + Name = 'DatasetName' + ParamType = fIn + DataType = rtString + Value = 'DetallesFacturasCliente' + end + item + Name = 'Params' + ParamType = fIn + DataType = rtUserDefined + UserClassName = 'TDADatasetParamArray' + end + item + Name = 'UserFilter' + ParamType = fIn + DataType = rtString + Value = '' + end + item + Name = 'IncludeSchema' + ParamType = fIn + DataType = rtBoolean + Value = False + end + item + Name = 'MaxRecords' + ParamType = fIn + DataType = rtInteger + Value = -1 + end> + DataUpdateCall.MethodName = 'UpdateData' + DataUpdateCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBinary + end + item + Name = 'Delta' + ParamType = fIn + DataType = rtBinary + end> + ScriptCall.MethodName = 'GetDatasetScripts' + ScriptCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtString + Value = '' + end + item + Name = 'DatasetNames' + ParamType = fIn + DataType = rtString + Value = 'DetallesFacturasCliente' + end> + ReadOnly = False + RemoteService = RORemoteService + Adapter = dmBase.DABINAdapter + MasterSource = ds_FacturasCliente + MasterFields = 'CODIGO' + DetailFields = 'CODIGOFACTURA' + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'DetallesFacturasCliente' + IndexDefs = <> + Left = 144 + Top = 88 + end + object ds_DetallesFacturasCliente: TDADataSource + DataTable = tbl_DetallesFacturasCliente + Left = 240 + Top = 88 + end + object DADesigntimeCall1: TDADesigntimeCall + RemoteRequest.MethodName = 'Login' + RemoteRequest.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBoolean + end + item + Name = 'UserID' + ParamType = fIn + DataType = rtString + Value = '1' + end + item + Name = 'Password' + ParamType = fIn + DataType = rtString + Value = '1' + end + item + Name = 'LoginInfo' + ParamType = fOut + DataType = rtUserDefined + UserClassName = 'TLoginInfo' + end> + RemoteService = RORemoteService2 + Left = 48 + Top = 88 + end + object RORemoteService2: TRORemoteService + ServiceName = 'srvLogin' + Message = dmBase.ROMessage + Channel = dmBase.ROChannel + Left = 48 + Top = 152 + end +end diff --git a/Modulos/Facturas de cliente/Cliente/uDataModuleFacturasCliente.pas b/Modulos/Facturas de cliente/Cliente/uDataModuleFacturasCliente.pas new file mode 100644 index 0000000..36f905d --- /dev/null +++ b/Modulos/Facturas de cliente/Cliente/uDataModuleFacturasCliente.pas @@ -0,0 +1,203 @@ +unit uDataModuleFacturasCliente; + +interface + +uses {vcl:} SysUtils, Classes, DB, DBClient, + {RemObjects:} uDAClientDataModule, uDADataTable, uDABINAdapter, + uROServiceComponent, uRORemoteService, uROClient, uROBinMessage, + uROWinInetHttpChannel, uDAScriptingProvider, uDACDSDataTable, + uDADesigntimeCall, uBizFacturasCliente, + + frxExportImage, frxExportPDF, frxDCtrl, + frxClass, frxDMPExport, frxGradient, frxChBox, frxCross, frxRich, + frxChart, frxOLE, frxBarcode; + +type + TdmFacturasCliente = class(TDAClientDataModule) + RORemoteService: TRORemoteService; + tbl_FacturasCliente: TDACDSDataTable; + ds_FacturasCliente: TDADataSource; + tbl_DetallesFacturasCliente: TDACDSDataTable; + ds_DetallesFacturasCliente: TDADataSource; + DADesigntimeCall1: TDADesigntimeCall; + RORemoteService2: TRORemoteService; + procedure DAClientDataModuleCreate(Sender: TObject); + private + { Private declarations } + public + function GetNextAutoinc : integer; + function GetItem: IBizFacturasCliente; + function GetItems: IBizFacturasCliente; + procedure Print(Const Codigo: Integer); + procedure Preview(Const Codigo: Integer); + function DarNuevaReferencia : String; + function PuedoEliminarFactura (CodigoFactura : Integer) : Boolean; + procedure Refrescar(lReport: TfrxReport; Const Codigo: Integer; const TamLetra: Integer); + end; + +var + dmFacturasCliente: TdmFacturasCliente; + +implementation + +{$R *.DFM} + +uses + Forms, Controls, uDataTableUtils, uBizContacto, + uDataModuleContactos, uDataModuleBase, + FactuGES_Intf, uEditorPreviewFacturaCliente, uEditorPreview, + uROTypes, schFacturasClienteClient_Intf; + +{ TDAClientDataModule1 } + +function TdmFacturasCliente.GetItems: IBizFacturasCliente; +var + dtCabecera: TDACDSDataTable; + dtDetalles: TDACDSDataTable; + ACursor: TCursor; +begin + ACursor := Screen.Cursor; + Screen.Cursor := crHourGlass; + try + dtCabecera := TDACDSDataTable.Create(NIL); + CloneDataTable(tbl_FacturasCliente, dtCabecera); + with dtCabecera do + begin + BusinessRulesID := BIZ_FACTURASCLIENTE; + FieldByName(fld_FacturasClienteDESCUENTO).BusinessRulesID := 'Client.Field.Descuento'; + FieldByName(fld_FacturasClienteIVA).BusinessRulesID := 'Client.Field.IVA'; + end; + + dtDetalles := TDACDSDataTable.Create(NIL); + CloneDataTable(tbl_DetallesFacturasCliente, dtDetalles); + with dtDetalles do + begin + BusinessRulesID := BIZ_DETALLESFACTURASCLIENTE; + DetailOptions := DetailOptions - [dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates]; + + FieldByName(fld_DetallesFacturasClienteCANTIDAD).BusinessRulesID := 'Client.Field.Cantidad'; + FieldByName(fld_DetallesFacturasClienteIMPORTEUNIDAD).BusinessRulesID := 'Client.Field.ImporteUnidad'; + FieldByName(fld_DetallesFacturasClienteTIPO).BusinessRulesID := 'Client.Field.TipoDetalle'; + FieldByName(fld_DetallesFacturasClienteVISIBLE).BusinessRulesID := 'Client.Field.Visible'; + end; + (dtCabecera as IBizFacturasCliente).Detalles := (dtDetalles as IBizDetallesFacturasCliente); + + Result := (dtCabecera as IBizFacturasCliente); + finally + Screen.Cursor := ACursor; + end; +end; + +procedure TdmFacturasCliente.DAClientDataModuleCreate(Sender: TObject); +begin + RORemoteService.Channel := dmBase.Channel; + RORemoteService.Message := dmBase.Message; + Adapter := dmBase.Adapter; +end; + + +function TdmFacturasCliente.GetItem: IBizFacturasCliente; +var + dtCabecera: TDACDSDataTable; + dtDetalles: TDACDSDataTable; + ACursor: TCursor; +begin +{ ACursor := Screen.Cursor; + Screen.Cursor := crHourGlass; + try + dtCabecera := TDACDSDataTable.Create(NIL); + CloneDataTable(tbl_AlbaranCliente, dtCabecera); + with dtCabecera do + begin + BusinessRulesID := BIZ_ALBARANCLIENTE; + FieldByName(fld_AlbaranClienteDESCUENTO).BusinessRulesID := 'Client.Field.Descuento'; + FieldByName(fld_AlbaranClienteIVA).BusinessRulesID := 'Client.Field.IVA'; + end; + + dtDetalles := TDACDSDataTable.Create(NIL); + CloneDataTable(tbl_DetallesAlbaranCliente, dtDetalles); + with dtDetalles do + begin + BusinessRulesID := BIZ_DETALLESALBARANCLIENTE; + DetailOptions := DetailOptions - [dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates]; + + FieldByName(fld_DetallesAlbaranClienteCANTIDAD).BusinessRulesID := 'Client.Field.Cantidad'; + FieldByName(fld_DetallesAlbaranClienteIMPORTEUNIDAD).BusinessRulesID := 'Client.Field.ImporteUnidad'; + FieldByName(fld_DetallesAlbaranClienteTIPO).BusinessRulesID := 'Client.Field.TipoDetalle'; + end; + + with (dtAlbaranes as IBizAlbaranesCliente) do + begin + Detalles := (dtDetalles as IBizDetallesAlbaranCliente); + end; + + Result := (dtAlbaranes as IBizAlbaranesCliente); + finally + Screen.Cursor := ACursor; + end;} +end; + +function TdmFacturasCliente.GetNextAutoinc: integer; +begin + Result := (RORemoteService as IsrvFacturasCliente).GetNextAutoinc; +end; + +procedure TdmFacturasCliente.Preview(const Codigo: Integer); +var + AStream: TROBinaryMemoryStream; + AEditorPreviewFacturaCliente : TfEditorPreviewFacturaCliente; +begin + AEditorPreviewFacturaCliente := TfEditorPreviewFacturaCliente.Create(Application); + try + AStream := (RORemoteService as IsrvFacturasCliente).GenerateReport(Codigo, 0); + AEditorPreviewFacturaCliente.Report.PreviewPages.LoadFromStream(AStream); + AEditorPreviewFacturaCliente.Codigo := Codigo; + AEditorPreviewFacturaCliente.ShowModal; + finally + AEditorPreviewFacturaCliente.Release; + AStream.Free; + end; +end; + +function TdmFacturasCliente.DarNuevaReferencia: String; +begin + Result := (RORemoteService as IsrvFacturasCliente).DarNuevaReferencia; +end; + +function TdmFacturasCliente.PuedoEliminarFactura(CodigoFactura: Integer): Boolean; +begin + Result := (RORemoteService as IsrvFacturasCliente).PuedoEliminarFactura(CodigoFactura); +end; + +procedure TdmFacturasCliente.Print(const Codigo: Integer); +var + AStream: TROBinaryMemoryStream; + AEditorPreview : TfEditorPreview; +begin + AEditorPreview := TfEditorPreview.Create(Application); + try + AStream := (RORemoteService as IsrvFacturasCliente).GenerateReport(Codigo, 0); + AEditorPreview.Report.PreviewPages.LoadFromStream(AStream); + AEditorPreview.Print; + finally + AEditorPreview.Release; + AStream.Free; + end; +end; + +procedure TdmFacturasCliente.Refrescar(lReport: TfrxReport; const Codigo, TamLetra: Integer); +var + AStream: TROBinaryMemoryStream; +begin + AStream := (RORemoteService as IsrvFacturasCliente).GenerateReport(Codigo, TamLetra); + lReport.PreviewPages.LoadFromStream(AStream); + lReport.ShowPreparedReport; +end; + +initialization + dmFacturasCliente := TdmFacturasCliente.Create(nil); + +finalization + FreeAndNil(dmFacturasCliente); + +end. diff --git a/Modulos/Facturas de cliente/Cliente/uEditarPreguntarIVA.dfm b/Modulos/Facturas de cliente/Cliente/uEditarPreguntarIVA.dfm new file mode 100644 index 0000000..b11bbe6 --- /dev/null +++ b/Modulos/Facturas de cliente/Cliente/uEditarPreguntarIVA.dfm @@ -0,0 +1,83 @@ +object fEditorPreguntarIVA: TfEditorPreguntarIVA + Left = 562 + Top = 449 + BorderStyle = bsDialog + Caption = 'Desglose de IVA' + ClientHeight = 129 + ClientWidth = 266 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + Position = poOwnerFormCenter + PixelsPerInch = 96 + TextHeight = 13 + object Label1: TLabel + Left = 56 + Top = 56 + Width = 40 + Height = 13 + Caption = 'IVA (%) :' + end + object Label2: TLabel + Left = 8 + Top = 8 + Width = 250 + Height = 26 + Caption = + 'Por favor, antes de realizar el desglose de la factura, '#13#10'confir' + + 'me el IVA que quiere utilizar:' + end + object pnlSeleccion: TPanel + Left = 0 + Top = 92 + Width = 266 + Height = 37 + Align = alBottom + BevelOuter = bvNone + ParentBackground = True + TabOrder = 0 + DesignSize = ( + 266 + 37) + object bSeleccionar: TButton + Left = 103 + Top = 7 + Width = 74 + Height = 23 + Anchors = [akRight] + Caption = '&Aceptar' + Default = True + ModalResult = 1 + TabOrder = 0 + end + object bCancelar: TButton + Left = 184 + Top = 7 + Width = 74 + Height = 23 + Anchors = [akRight] + Cancel = True + Caption = '&Cancelar' + ModalResult = 2 + TabOrder = 1 + end + end + object edtIVA: TcxSpinEdit + Left = 104 + Top = 52 + Properties.DisplayFormat = '0.00' + Properties.ImmediatePost = True + Properties.MaxValue = 100.000000000000000000 + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 1 + Value = 16 + Width = 121 + end +end diff --git a/Modulos/Facturas de cliente/Cliente/uEditarPreguntarIVA.pas b/Modulos/Facturas de cliente/Cliente/uEditarPreguntarIVA.pas new file mode 100644 index 0000000..89e226e --- /dev/null +++ b/Modulos/Facturas de cliente/Cliente/uEditarPreguntarIVA.pas @@ -0,0 +1,61 @@ +unit uEditarPreguntarIVA; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, StdCtrls, cxControls, cxContainer, cxEdit, cxTextEdit, + cxMaskEdit, ExtCtrls, cxSpinEdit; + +type + TfEditorPreguntarIVA = class(TForm) + pnlSeleccion: TPanel; + bSeleccionar: TButton; + bCancelar: TButton; + Label1: TLabel; + Label2: TLabel; + edtIVA: TcxSpinEdit; + private + function GetIVA: Double; + procedure SetIVA(const Value: Double); + { Private declarations } + public + property IVA : Double read GetIVA write SetIVA; + end; + +var + fEditorPreguntarIVA: TfEditorPreguntarIVA; + +function PreguntarIVA(var IVA : Double) : Boolean; + + +implementation + +{$R *.dfm} + +function PreguntarIVA(var IVA : Double) : Boolean; +begin + fEditorPreguntarIVA := TfEditorPreguntarIVA.Create(Application); + try + fEditorPreguntarIVA.IVA := IVA; + Result := (fEditorPreguntarIVA.ShowModal = mrOk); + finally + IVA := fEditorPreguntarIVA.IVA; + FreeAndNIL(fEditorPreguntarIVA); + end; +end; + + +{ TForm2 } + +function TfEditorPreguntarIVA.GetIVA: Double; +begin + Result := edtIVA.Value; +end; + +procedure TfEditorPreguntarIVA.SetIVA(const Value: Double); +begin + edtIVA.Value := Value; +end; + +end. diff --git a/Modulos/Facturas de cliente/Cliente/uEditorFacturaCliente.ddp b/Modulos/Facturas de cliente/Cliente/uEditorFacturaCliente.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Facturas de cliente/Cliente/uEditorFacturaCliente.ddp differ diff --git a/Modulos/Facturas de cliente/Cliente/uEditorFacturaCliente.dfm b/Modulos/Facturas de cliente/Cliente/uEditorFacturaCliente.dfm new file mode 100644 index 0000000..96525b7 --- /dev/null +++ b/Modulos/Facturas de cliente/Cliente/uEditorFacturaCliente.dfm @@ -0,0 +1,224 @@ +inherited fEditorFacturaCliente: TfEditorFacturaCliente + Left = 454 + Top = 208 + Width = 777 + Height = 615 + Caption = 'Nueva factura de cliente' + Constraints.MinHeight = 615 + Constraints.MinWidth = 766 + Position = poScreenCenter + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + Width = 769 + Caption = 'Nueva factura de cliente' + inherited Image1: TImage + Left = 742 + Picture.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001800 + 0000180806000000E0773DF80000000970485973000017120000171201679FD2 + 520000000467414D410000B18E7CFB5193000001BE4944415478DA63FCFFFF3F + 032D0123B2054BB79CA49A6DD13EE68C582D004A906CD8DFBFFF80F83F980601 + EBC07C86733BA6E1B6C0B6683F8A0187FB1C711A8EAC765BB315C3C275FB19E6 + 2DDD84DF02525CEE507A9081455D89E1C08C1D0CEF0FC6312CD97890B005D87C + 802E06027B3BEC189C2B0E311CD97F0BCC7FB32F8661F996C394F9E0FF3F6058 + 03F11FA0EB41EC3FFFFE41E3E01F98BD7ADB51D27D400C00F9E2F18E70860DBB + 4E106701CCDBA480075B431936EF3D459C05F8520E3600D2B3A8508F61EB81D3 + C45B802BA86096C3E4616AE7E7EB32EC387486763E989DA3CDB0E7E839DAF960 + 46A626C3FE131768E783A969EA0C874E5FC26F4184A729387792E3838929AA0C + C7CE5EC16F41A89B09387792E3839E042586D317AFE3B720C8D988C1ADFA0859 + 1674C62A309CBB7213BF057E8E060C5EB5C7F01A06B27CC1913F707E820D0BD8 + 82B62839868BD76FE3B7C0DB4E0F5EAEC0CA1850D9032BF393275FC1881F18BF + 394296E1CACD3BF82DF0B0D6C16938884E9B760D6BF0116D818BA5164EC34116 + 67CDB88133E888B2C0DE541D6CD8BFBF88621966E1BFFFFFB1061F322068818D + 912AB844A404E0B5A077CA428A0C8701980500619929EF09CFCE420000000049 + 454E44AE426082} + end + end + inherited TBXDock: TTBXDock + Width = 769 + inherited tbxMain: TTBXToolbar + inherited TBXItem2: TTBXItem + Visible = False + end + inherited TBXSeparatorItem1: TTBXSeparatorItem + Visible = False + end + inherited TBXItem5: TTBXItem + Visible = False + end + object TBXSeparatorItem14: TTBXSeparatorItem [11] + end + object TBXItem7: TTBXItem [12] + Action = actDesglosarIVA + end + end + inherited tbxMenu: TTBXToolbar + object TBXSubmenuItem2: TTBXSubmenuItem [3] + Caption = '&Herramientas' + object TBXItem33: TTBXItem + Action = actDesglosarIVA + end + end + end + end + inherited pgPaginas: TPageControl + Width = 769 + Height = 364 + inherited pagGeneral: TTabSheet + inline frViewFacturaCliente1: TfrViewFacturaCliente + Left = 0 + Top = 0 + Width = 761 + Height = 336 + Align = alClient + AutoSize = True + Constraints.MinHeight = 300 + Constraints.MinWidth = 761 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 0 + ReadOnly = False + inherited frViewDatosYSeleccionContacto1: TfrViewDatosYSeleccionContacto + inherited Bevel1: TBevel + Width = 313 + end + inherited ToolBar1: TToolBar + Width = 369 + end + inherited edtlNombre: TcxDBTextEdit + DataBinding.DataSource = frViewFacturaCliente1.DADataSource + Properties.OnChange = frViewDatosYSeleccionContacto1edtlNombrePropertiesChange + end + inherited edtPoblacion: TcxDBTextEdit + DataBinding.DataSource = frViewFacturaCliente1.DADataSource + end + inherited edtProvincia: TcxDBTextEdit + DataBinding.DataSource = frViewFacturaCliente1.DADataSource + end + inherited edtNIFCIF: TcxDBTextEdit + DataBinding.DataSource = frViewFacturaCliente1.DADataSource + end + inherited edtCalle: TcxDBTextEdit + DataBinding.DataSource = frViewFacturaCliente1.DADataSource + end + inherited edtCodigoPostal: TcxDBTextEdit + DataBinding.DataSource = frViewFacturaCliente1.DADataSource + end + end + inherited frViewFormaPago1: TfrViewFormaPago + Top = 215 + TabOrder = 2 + inherited memFormaPago: TcxDBMemo + Height = 78 + end + end + inherited frViewObservaciones1: TfrViewObservaciones + Top = 215 + TabOrder = 1 + inherited memObservaciones: TcxDBMemo + Height = 78 + end + end + inherited frViewDatosFacturaCliente1: TfrViewDatosFacturaCliente + inherited eReferencia: TcxDBTextEdit + StyleDisabled.TextColor = clActiveCaption + end + end + end + end + object pagContenido: TTabSheet + Caption = 'Contenido' + ImageIndex = 1 + inline frViewDetallesFacturaCliente1: TfrViewDetallesFacturaCliente + Left = 0 + Top = 0 + Width = 761 + Height = 336 + Align = alClient + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 0 + ReadOnly = False + inherited cxGrid: TcxGrid + Width = 761 + Height = 314 + end + inherited ToolBar1: TToolBar + Width = 761 + end + end + end + end + inherited StatusBar: TStatusBar + Top = 562 + Width = 769 + end + inline frViewTotales1: TfrViewTotales [4] + Left = 0 + Top = 440 + Width = 769 + Height = 122 + Align = alBottom + Constraints.MaxHeight = 122 + Constraints.MinHeight = 122 + Constraints.MinWidth = 730 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 4 + ReadOnly = False + inherited TabControl1: TTabControl + Width = 769 + inherited GroupBox1: TGroupBox + inherited lblBase: TcxDBCurrencyEdit + Style.IsFontAssigned = True + end + inherited cxCurrencyEdit3: TcxDBCurrencyEdit + Style.IsFontAssigned = True + end + inherited cxCurrencyEdit4: TcxDBCurrencyEdit + Style.IsFontAssigned = True + end + inherited cxCurrencyEdit5: TcxDBCurrencyEdit + Style.IsFontAssigned = True + end + inherited cxCurrencyEdit1: TcxDBSpinEdit + Style.IsFontAssigned = True + end + inherited cxCurrencyEdit2: TcxDBSpinEdit + Style.IsFontAssigned = True + end + end + end + end + inherited EditorActionList: TActionList [5] + object actDesglosarIVA: TAction + Category = 'Herramientas' + Caption = 'Desglosar IVA' + OnExecute = actDesglosarIVAExecute + end + end + inherited SmallImages: TPngImageList [6] + end + inherited LargeImages: TPngImageList [7] + end + inherited JvFormStorage: TJvFormStorage [8] + end + inherited JvAppRegistryStorage: TJvAppRegistryStorage [9] + end + inherited dsDataTable: TDADataSource + OnDataChange = dsDataTableDataChange + end +end diff --git a/Modulos/Facturas de cliente/Cliente/uEditorFacturaCliente.pas b/Modulos/Facturas de cliente/Cliente/uEditorFacturaCliente.pas new file mode 100644 index 0000000..d203dbf --- /dev/null +++ b/Modulos/Facturas de cliente/Cliente/uEditorFacturaCliente.pas @@ -0,0 +1,189 @@ +unit uEditorFacturaCliente; + +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, uViewContenido, uViewTotales, + StdCtrls, pngimage, AppEvnts, + uBizFacturasCliente, uViewDetallesNormales, uViewDetallesFacturaCliente, + uViewDetallesFamilias, JvComponentBase; + +type + IEditorFacturaCliente = interface(IEditorDBItem) + ['{6989A930-FB5B-47E7-A836-7EEB8108128F}'] + function GetFacturaCliente: IBizFacturasCliente; + procedure SetFacturaCliente(const Value: IBizFacturasCliente); + property FacturaCliente: IBizFacturasCliente read GetFacturaCliente write + SetFacturaCliente; + end; + + TfEditorFacturaCliente = class(TfEditorDBItem, IEditorFacturaCliente) + frViewTotales1: TfrViewTotales; + pagContenido: TTabSheet; + frViewDetallesFacturaCliente1: TfrViewDetallesFacturaCliente; + frViewFacturaCliente1: TfrViewFacturaCliente; + actDesglosarIVA: TAction; + TBXSeparatorItem14: TTBXSeparatorItem; + TBXItem7: TTBXItem; + TBXSubmenuItem2: TTBXSubmenuItem; + TBXItem33: TTBXItem; + procedure actEliminarExecute(Sender: TObject); + procedure dsDataTableDataChange(Sender: TObject; Field: TField); + procedure FormShow(Sender: TObject); override; + procedure frViewDatosYSeleccionContacto1edtlNombrePropertiesChange( + Sender: TObject); + procedure actDesglosarIVAExecute(Sender: TObject); + private + FFacturaCliente: IBizFacturasCliente; + FViewFacturaCliente: IViewFacturaCliente; + protected + function GetFacturaCliente: IBizFacturasCliente; + function GetViewFactura: IViewFacturaCliente; + procedure SetFacturaCliente(const Value: IBizFacturasCliente); + procedure SetViewFactura(const Value: IViewFacturaCliente); + property ViewFacturaCliente: IViewFacturaCliente read GetViewFactura write + SetViewFactura; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + property FacturaCliente: IBizFacturasCliente read GetFacturaCliente write + SetFacturaCliente; + end; + +var + fEditorFacturaCliente: TfEditorFacturaCliente; + +implementation + +uses uEditorUtils, uDataModuleFacturasCliente, uBizImportesDetalleBase, + uDataModulePresupuestos, schFacturasClienteClient_Intf, uExceptions; + +{$R *.dfm} + +function ShowEditorFacturaCliente (ABizObject : TDADataTableRules) : TModalResult; +var + AEditor: TfEditorFacturaCliente; +begin + AEditor := TfEditorFacturaCliente.Create(Application); + try + AEditor.FacturaCliente := (ABizObject as IBizFacturasCliente); + Result := AEditor.ShowModal; + finally + AEditor.Release; + end; +end; + +{ TfEditorFacturaCliente } + +{ +**************************** TfEditorFacturaCliente **************************** +} +constructor TfEditorFacturaCliente.Create(AOwner: TComponent); +begin + inherited; +// ViewFacturaCliente := CreateView(TfrViewFacturaCliente) as IViewFacturaCliente; + pgPaginas.ActivePageIndex := 0; + ViewFacturaCliente := frViewFacturaCliente1; +end; + +destructor TfEditorFacturaCliente.Destroy; +begin + FViewFacturaCliente := NIL; + FFacturaCliente := NIL; + inherited; +end; + +procedure TfEditorFacturaCliente.actEliminarExecute(Sender: TObject); +begin + if (Application.MessageBox('¿Desea borrar este albarán de cliente?', 'Atención', MB_YESNO) = IDYES) then + inherited; +end; + +procedure TfEditorFacturaCliente.dsDataTableDataChange(Sender: TObject; Field: + TField); +begin + inherited; + if Assigned(FFacturaCliente) and (not (FFacturaCliente.DataTable.Fetching) or + not (FFacturaCliente.DataTable.Opening) or not (FFacturaCliente.DataTable.Closing)) then + begin + end; +end; + +procedure TfEditorFacturaCliente.FormShow(Sender: TObject); +begin + inherited; + + if not Assigned(FViewFacturaCliente) then + raise Exception.Create('No hay ninguna vista asignada'); + + if not Assigned(FacturaCliente) then + raise Exception.Create('No hay ningún albarán asignado'); + + FacturaCliente.DataTable.Active := True; +// FViewFacturaCliente.ShowEmbedded(pagGeneral); +// FViewFacturaCliente.SetFocus; +end; + +function TfEditorFacturaCliente.GetFacturaCliente: IBizFacturasCliente; +begin + Result := FFacturaCliente; +end; + +function TfEditorFacturaCliente.GetViewFactura: IViewFacturaCliente; +begin + Result := FViewFacturaCliente; +end; + +procedure TfEditorFacturaCliente.SetFacturaCliente(const Value: + IBizFacturasCliente); +begin + FFacturaCliente := Value; + + if Assigned(FFacturaCliente) then + begin + dsDataTable.DataTable := FFacturaCliente.DataTable; + frViewTotales1.DADataSource.DataTable := FFacturaCliente.DataTable; + frViewDetallesFacturaCliente1.DADataSource.DataTable := FFacturaCliente.Detalles.DataTable; + + if Assigned(FViewFacturaCliente) then + FViewFacturaCliente.FacturaCliente := FFacturaCliente; + end; +end; + +procedure TfEditorFacturaCliente.SetViewFactura(const Value: + IViewFacturaCliente); +begin + FViewFacturaCliente := Value; + + if Assigned(FViewFacturaCliente) and Assigned(FacturaCliente) then + FViewFacturaCliente.FacturaCliente := FacturaCliente; +end; + +procedure TfEditorFacturaCliente.frViewDatosYSeleccionContacto1edtlNombrePropertiesChange( + Sender: TObject); +begin + inherited; + if Length(frViewFacturaCliente1.frViewDatosYSeleccionContacto1.edtlNombre.Text) = 0 then + JvNavPanelHeader.Caption := 'Nueva factura de cliente' + else + JvNavPanelHeader.Caption := 'Factura de ' + frViewFacturaCliente1.frViewDatosYSeleccionContacto1.edtlNombre.Text; + Caption := JvNavPanelHeader.Caption; +end; + +procedure TfEditorFacturaCliente.actDesglosarIVAExecute(Sender: TObject); +begin + inherited; + FFacturaCliente.DesglosarIVA +end; + +initialization + RegisterEditor(IBizFacturasCliente, ShowEditorFacturaCliente, etItem); + +finalization + +end. diff --git a/Modulos/Facturas de cliente/Cliente/uEditorFacturasCliente.ddp b/Modulos/Facturas de cliente/Cliente/uEditorFacturasCliente.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Facturas de cliente/Cliente/uEditorFacturasCliente.ddp differ diff --git a/Modulos/Facturas de cliente/Cliente/uEditorFacturasCliente.dfm b/Modulos/Facturas de cliente/Cliente/uEditorFacturasCliente.dfm new file mode 100644 index 0000000..287944f --- /dev/null +++ b/Modulos/Facturas de cliente/Cliente/uEditorFacturasCliente.dfm @@ -0,0 +1,1392 @@ +inherited fEditorFacturasCliente: TfEditorFacturasCliente + Left = 238 + Top = 281 + Width = 705 + Caption = 'Lista de facturas de cliente' + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + Width = 697 + Caption = 'Lista de facturas de cliente' + inherited Image1: TImage + Left = 670 + Picture.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001800 + 0000180806000000E0773DF80000000970485973000017120000171201679FD2 + 520000000467414D410000B18E7CFB5193000001BE4944415478DA63FCFFFF3F + 032D0123B2054BB79CA49A6DD13EE68C582D004A906CD8DFBFFF80F83F980601 + EBC07C86733BA6E1B6C0B6683F8A0187FB1C711A8EAC765BB315C3C275FB19E6 + 2DDD84DF02525CEE507A9081455D89E1C08C1D0CEF0FC6312CD97890B005D87C + 802E06027B3BEC189C2B0E311CD97F0BCC7FB32F8661F996C394F9E0FF3F6058 + 03F11FA0EB41EC3FFFFE41E3E01F98BD7ADB51D27D400C00F9E2F18E70860DBB + 4E106701CCDBA480075B431936EF3D459C05F8520E3600D2B3A8508F61EB81D3 + C45B802BA86096C3E4616AE7E7EB32EC387486763E989DA3CDB0E7E839DAF960 + 46A626C3FE131768E783A969EA0C874E5FC26F4184A729387792E3838929AA0C + C7CE5EC16F41A89B09387792E3839E042586D317AFE3B720C8D988C1ADFA0859 + 1674C62A309CBB7213BF057E8E060C5EB5C7F01A06B27CC1913F707E820D0BD8 + 82B62839868BD76FE3B7C0DB4E0F5EAEC0CA1850D9032BF393275FC1881F18BF + 394296E1CACD3BF82DF0B0D6C16938884E9B760D6BF0116D818BA5164EC34116 + 67CDB88133E888B2C0DE541D6CD8BFBF88621966E1BFFFFFB1061F322068818D + 912AB844A404E0B5A077CA428A0C8701980500619929EF09CFCE420000000049 + 454E44AE426082} + end + end + inherited TBXDock: TTBXDock + Width = 697 + inherited tbxMain: TTBXToolbar + inherited TBXSeparatorItem14: TTBXSeparatorItem + Visible = False + end + inherited TBXItem33: TTBXItem + Visible = False + end + end + inherited tbxFiltro: TTBXToolbar + Left = 395 + end + end + inherited StatusBar: TStatusBar + Width = 697 + end + inherited EditorActionList: TActionList + Left = 136 + Top = 200 + inherited actNuevo: TAction + ImageIndex = 22 + OnExecute = actNuevoExecute + 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> + Left = 507 + 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 + F80000000970485973000017120000171201679FD252000001BE4944415478DA + 63FCFFFF3F032D0123B2054BB79CA49A6DD13EE68C582D004A906CD8DFBFFF80 + F83F980601EBC07C86733BA6E1B6C0B6683F8A0187FB1C711A8EAC765BB315C3 + C275FB19E62DDD84DF02525CEE507A9081455D89E1C08C1D0CEF0FC6312CD978 + 90B005D87C802E06027B3BEC189C2B0E311CD97F0BCC7FB32F8661F996C394F9 + E0FF3F605803F11FA0EB41EC3FFFFE41E3E01F98BD7ADB51D27D400C00F9E2F1 + 8E70860DBB4E106701CCDBA480075B431936EF3D459C05F8520E3600D2B3A850 + 8F61EB81D3C45B802BA86096C3E4616AE7E7EB32EC387486763E989DA3CDB0E7 + E839DAF96046A626C3FE131768E783A969EA0C874E5FC26F4184A729387792E3 + 838929AA0CC7CE5EC16F41A89B09387792E3839E042586D317AFE3B720C8D988 + C1ADFA08591674C62A309CBB7213BF057E8E060C5EB5C7F01A06B27CC1913F70 + 7E820D0BD882B62839868BD76FE3B7C0DB4E0F5EAEC0CA1850D9032BF393275F + C1881F18BF394296E1CACD3BF82DF0B0D6C16938884E9B760D6BF0116D818BA5 + 164EC3411667CDB88133E888B2C0DE541D6CD8BFBF88621966E1BFFFFFB1061F + 322068818D912AB844A404E0B5A077CA428A0C8701980500619929EF09CFCE42 + 0000000049454E44AE426082} + Name = 'PngImage21' + Background = clWindow + end> + Left = 547 + Bitmap = {} + end + inherited JvFormStorage: TJvFormStorage + Left = 584 + Top = 80 + end + inherited JvAppRegistryStorage: TJvAppRegistryStorage + Left = 616 + Top = 80 + end + inherited dsDataTable: TDADataSource + Left = 56 + Top = 200 + end + inherited GridPopupMenu: TPopupMenu + Left = 96 + Top = 200 + inherited Duplicar1: TMenuItem + Visible = False + end + end +end diff --git a/Modulos/Facturas de cliente/Cliente/uEditorFacturasCliente.pas b/Modulos/Facturas de cliente/Cliente/uEditorFacturasCliente.pas new file mode 100644 index 0000000..a6ca782 --- /dev/null +++ b/Modulos/Facturas de cliente/Cliente/uEditorFacturasCliente.pas @@ -0,0 +1,147 @@ +unit uEditorFacturasCliente; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uEditorGrid, Menus, DB, uDADataTable, JvAppStorage, + JvAppRegistryStorage, JvComponent, JvFormPlacement, ImgList, + PngImageList, StdActns, ActnList, ComCtrls, TB2ExtItems, TBXExtItems, + TBX, TB2Item, TB2Dock, TB2Toolbar, ExtCtrls, JvExControls, + JvNavigationPane, uViewGrid, pngimage, uBizFacturasCliente, + JvComponentBase, StdCtrls, cxControls, cxContainer, cxEdit, cxTextEdit, + cxMaskEdit, cxDropDownEdit, cxCalendar, cxDBEdit, TBXDkPanels, + dxLayoutControl, JvButton, cxRadioGroup, Buttons; + +type + IEditorFacturasCliente = interface(IEditorGrid) + ['{597BF875-BD19-4B68-898F-B09982B3360A}'] + function GetFacturasCliente: IBizFacturasCliente; + procedure SetFacturasCliente(const Value: IBizFacturasCliente); + property FacturasCliente: IBizFacturasCliente read GetFacturasCliente + write SetFacturasCliente; + end; + + TfEditorFacturasCliente = class(TfEditorGrid, IEditorFacturasCliente) + procedure actEliminarExecute(Sender: TObject); + procedure actModificarExecute(Sender: TObject); + procedure actNuevoExecute(Sender: TObject); + private + FFacturasCliente: IBizFacturasCliente; + protected + function GetFacturasCliente: IBizFacturasCliente; + procedure SetFacturasCliente(const Value: IBizFacturasCliente); + procedure SetViewGrid(const Value: IViewGrid); override; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + property FacturasCliente: IBizFacturasCliente read GetFacturasCliente write SetFacturasCliente; + end; + +var + fEditorFacturasCliente: TfEditorFacturasCliente; + +implementation + +uses + uDataModuleFacturasCliente, uViewFacturasCliente, + uEditorUtils; + +{$R *.dfm} + +function ShowEditorFacturasCliente (ABizObject : TDADataTableRules) : TModalResult; +var + AEditor: TfEditorFacturasCliente; +begin + AEditor := TfEditorFacturasCliente.Create(Application); + try + AEditor.FacturasCliente := (ABizObject as IBizFacturasCliente); + Result := AEditor.ShowModal; + finally + AEditor.Release; + end; +end; + +function ShowSelectEditorFacturasCliente (ABizObject : TDADataTableRules) : TModalResult; +var + AEditor: TfEditorFacturasCliente; +begin + AEditor := TfEditorFacturasCliente.Create(Application); + try + AEditor.FacturasCliente := (ABizObject as IBizFacturasCliente); +// AEditor.SelectionBarVisible := True; + Result := AEditor.ShowModal; + finally + AEditor.Release; + end; +end; + +{ +*************************** TfEditorFacturasCliente *************************** +} +constructor TfEditorFacturasCliente.Create(AOwner: TComponent); +begin + inherited; + ViewGrid := CreateView(TfrViewFacturasCliente) as IViewFacturasCliente; +end; + +destructor TfEditorFacturasCliente.Destroy; +begin + FFacturasCliente := NIL; + inherited; +end; + +procedure TfEditorFacturasCliente.actEliminarExecute(Sender: TObject); +begin + if (Application.MessageBox('¿Desea borrar esta factura de cliente?', 'Atención', MB_YESNO) = IDYES) then + begin + inherited; + ViewGrid.RefreshGrid; + end; +end; + +procedure TfEditorFacturasCliente.actModificarExecute(Sender: TObject); +begin + inherited; + FacturasCliente.Show; + ViewGrid.RefreshGrid; + ViewGrid.SyncFocusedRecordsFromDataSet; +end; + +procedure TfEditorFacturasCliente.actNuevoExecute(Sender: TObject); +begin + inherited; + FacturasCliente.Insert; + FacturasCliente.Show; + ViewGrid.RefreshGrid; + ViewGrid.SyncFocusedRecordsFromDataSet; +end; + +function TfEditorFacturasCliente.GetFacturasCliente: IBizFacturasCliente; +begin + Result := FFacturasCliente; +end; + +procedure TfEditorFacturasCliente.SetFacturasCliente(const Value: + IBizFacturasCliente); +begin + FFacturasCliente := Value; + dsDataTable.DataTable := FFacturasCliente.DataTable; + if Assigned(ViewGrid) then + (ViewGrid as IViewFacturasCliente).FacturasCliente := FacturasCliente; +end; + +procedure TfEditorFacturasCliente.SetViewGrid(const Value: IViewGrid); +begin + inherited; + if Assigned(ViewGrid) and Assigned(FacturasCliente) then + (ViewGrid as IViewFacturasCliente).FacturasCliente := FFacturasCliente; +end; + +initialization + RegisterEditor(IBizFacturasCliente, ShowEditorFacturasCliente, etItems); + RegisterEditor(IBizFacturasCliente, ShowSelectEditorFacturasCliente, etSelectItems); + +finalization + +end. diff --git a/Modulos/Facturas de cliente/Cliente/uEditorPreviewFacturaCliente.ddp b/Modulos/Facturas de cliente/Cliente/uEditorPreviewFacturaCliente.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Facturas de cliente/Cliente/uEditorPreviewFacturaCliente.ddp differ diff --git a/Modulos/Facturas de cliente/Cliente/uEditorPreviewFacturaCliente.dfm b/Modulos/Facturas de cliente/Cliente/uEditorPreviewFacturaCliente.dfm new file mode 100644 index 0000000..f86464a --- /dev/null +++ b/Modulos/Facturas de cliente/Cliente/uEditorPreviewFacturaCliente.dfm @@ -0,0 +1,440 @@ +inherited fEditorPreviewFacturaCliente: TfEditorPreviewFacturaCliente + OnCreate = CustomEditorCreate + PixelsPerInch = 96 + TextHeight = 13 + inherited TBXDock: TTBXDock + inherited TBXToolbar1: TTBXToolbar + object TBXItem38: TTBXItem + Action = actAumentarTamLetra + Images = PreviewSmallImageList + end + object TBXItem43: TTBXItem + Action = actDisminuirTamLetra + Images = PreviewSmallImageList + end + end + end + inherited PreviewActionList: TActionList + object actAumentarTamLetra: TAction + Category = 'Tools' + ImageIndex = 11 + OnExecute = actAumentarTamLetraExecute + end + object actDisminuirTamLetra: TAction + Category = 'Tools' + ImageIndex = 12 + OnExecute = actDisminuirTamLetraExecute + end + end + inherited PreviewSmallImageList: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000000F14944415478DA + C5D2A10EC2301006E01B4F30893C39C59619EC70937B843D014C829B0339DEA0 + 1289638EC9C9E1160C9553A43882A0B45DC80223A30112CE346DFA7F697A6770 + CEE19B327E0A8C663BB5A14506348D8CE7CBDEB4E0DBB96D7402518010C5A405 + C8B0840F9B493710FA08F1E21190E1D0B7C5F9F23D10780849D200F7705102AC + D73A8023005203F73065A08022D3003C0B81AC08A0E3810C33115600156BAE01 + 3888E2A9F50BDC71CE07EE105875025A01B09268007D01A4CD1F48E4DAB3809D + 657F35001440963E764122C78BA50798268ACF6ACF8142F6F97B400E8B9AC617 + 93887EC23B814FEAFFC00D0E3CD3E1153EE1F30000000049454E44AE426082} + Name = 'PngImage1' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000000A34944415478DA + 63FCFFFF3F032580912606303232628839545CF8BFBF5D9F912C03409A1F5C38 + C0707F7B3EE90680342778E83334744C24DD0098E60B371818366C20D10098E6 + 071F18C0065C384082018E9517C19A3F0035830D7800A44F90E802A3BC13FFF5 + 8CCC193EBCF8C8F0E00503C3871B0B480F039021FF9834183EFC00721E906100 + CC9077BF34C837006EC8AD13E41B00020A1E13FE136D002960E00D000045F48A + E13771044B0000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000000A44944415478DA + 63FCFFFF3F03258091260638565EFC7FA0C380115D1C9B5A9C067CFAF683E1DC + 240B46B20D48F0D06798B4EE248A21241BF0E10703C3A26D0843483220C0419F + E1C10706860F407CE91AC410920C70B0506078F0829FE1C2838F0C1F1E3C009A + 7480E1FEF67C46A20D30D0506038708301AEF9C18E02D25C202020C070E1C207 + B86692C3800118800F6E2034936CC0830BA89A493680A294480A18780300CF22 + A8E18A4EF6A30000000049454E44AE426082} + Name = 'PngImage3' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000000EC4944415478DA + C5D2A10EC2301405D0DB2FA012F9246E95C8E290FB04FE8049703890842F5850 + 2882021CB5185210044725B220086E74908D40C252020937A97BF7A479792C49 + 127C13F673A0D65E27AA27D8EBA06CE97C70D10D5821703A5FB01A54D92B1085 + 84A813633F6B16038D7A80C178F984A440A34EE8F43C017B0186D3079202A124 + F4FB1E402803180B58F736DB3B72038403620F405609E65082364758639CA440 + 42425608F1C803106E50ED9097CD3CBAFD40106132F10038E7D0DAE6E56C07A2 + EC80B90700B740B37B9433801CA07C00A39FCB19C039412B0FE0DD25A6709A42 + E0D3FC1FB8020318D0E1923D9C4B0000000049454E44AE426082} + Name = 'PngImage2' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD2520000017E4944415478DA + 630C9B1C9ACFC0C03081813C50C00834E07F7E400E51AAFFFEFBC3F0EBDF7786 + 9F7F2138C9268F01C58073FBBF113444C9EA0B58F38469B3192E2DBB8C69404E + AC07568DBFFE303058F86431D44EB264F8053460DACC25B80DA89FBC1FC38092 + 144706FBC02C86F27E03B00BE6CE594B9C0B4036FFFC0DA15D43B31872BB95C0 + 062C5FB09B341764C4383278476631A4754882BDB076F111FC2E40B619860363 + B318125A05187E026362CBD2B3A4B92036D491212C218B21B2999DE1C7DF6F0C + 7B565CC76E4072B807D8E6BFFF1036FFFE0BA16352B218021BFE82C3E0F0EA07 + 080372FC3218FEFEFFCD70E5D07F8698200F86FE79982E08F4756448CAC862F0 + AA05A5836F0CA7D6BD421890E6130F36F5DE311E86303F0F145B616C1048C9CC + 6270AE7A05567B71E3678401F19E6160C1A7274519E62DDD843725DA943F04BB + E0C696BF080322DC7CC151034BE390F4FE0DCA47D07FFEFF01D37F81F4EDAD8C + 0803829C5DC04993540033207F57D36EB2B2B35B9D6B0100103839527F8C36D7 + 0000000049454E44AE426082} + Name = 'PngImage5' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001714944415478DA + 630C9B1C9ACFC0C03081813C50C00834E07F7E400E51AAFFFEFBC3F0EBDF7786 + 9F7F2138C9268F016EC099973B18F253E4198E6ED6C4A9D9CEFF36C3C4390F19 + 64793519264C9BCD7069D9658801D6962A60CDC40290216B171F411880CF05BF + A0CE05D17E619FC09A05D8C519E6CE598B6AC0B9FDDF8876018BEE6986E50B76 + 631A9013EB8153D3AF3F0C0C3F7F3330D807663124B40A607A016640FDE4FD58 + 0D2849716458B86607C3BCA59B18229BD919B62C3D4B9C0B603683E8E51B2006 + 0436FC65D8B3E23A692EC888716458BB05628057ED1786C3AB1F200CC8F1CB60 + B878F0178A0B906D86E1CD3B20063857BD6238B5EE15C280349F7886EB8799F1 + BA2036D49161C76E880136E50F192E6EFC8C3020DE338CE1DE311EB001D86CFE + FD1742EFDB0F31C0B4E43AC38D2D7F110644B8F9323C3D29CA901CEE81A219A6 + 11C63E7604628051F16586DB5B1911060439BB304C9BB984E88404033003F277 + 35ED262B3BBBD5B9160000C8E01B524AB937870000000049454E44AE426082} + Name = 'PngImage4' + 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 = 'PngImage6' + 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 = 'PngImage7' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000000E14944415478DA + 63FCFFFF3F032580717019C0C8C8086787B4DDF8FFEBD76F869F3F7F33EC6C37 + 824BA05B88D300BF86CBFFA3A35419A6CFB8C870A0CF9C7403DC2BCFFD8F88D4 + 66983DEB34C3B12936C41910DA7E13EE6C100E0D37609837E7180358EC0708FF + 6278B0218011A701FE8D57C0CEFEF68391E1DB770630FD1D88BF7C07E26F8C0C + 6B17AE6178B1230CB7011E55E7FF836C86B9C23FC48661C9BC5D609B7F40F187 + 0331B80D400E03DDF85DFF3D039D1856CEDFCCF0706320E981A816BEF5BF8BBF + 07D8D92F7786936E80BCFFFAFF30677F3C184B9C01E480616000007F3BB6E1E0 + 0AF3B40000000049454E44AE426082} + Name = 'PngImage8' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000000714944415478DA + 63FCFFFF3F03258071D4002A1B10DA7E13CC01897DFDFA83E1DBB71F60FAFBB7 + 9F0C9F3F7F03E3F7FBA219F11A1013A500E77FFCCCC8F0EA1D23C38BB74C0CCF + 5E3131AC9E3397E1F7E914DC0684B4DDF88FCBE62F9FBF33FCF9F397E1FFF974 + DC060C7C208E1A401E0000EFE473E127272ED00000000049454E44AE426082} + Name = 'PngImage9' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001C74944415478DA + A5934D4B5B411885CF5D9982288874EB0F306E5CBA9A646514E33536264AE456 + 5184528AE0424A043751FCC08228E24788894631D5D6D12C5C08EA2A74512AD8 + E4070822EE44A3E255CC386F24264AAE5978609881B9E739EFCCBC571142E03D + 5208A0284ADECDA08FB9E4342087EFF3C04124772F139C1790319614C3DCE456 + B116E2D0EF11CF051502FCD7BA54F37A98C3E951110E70783A5584FC3C2E0155 + 0501DB534C34389F92DD9A342E7068DD2A96FC1CD296AE44F3EE470C019B934C + A8AE6CF2E29C9C3B6C5809EEC0EEA84194C7E212506508D8F8C144735B36D93F + 232B69B72212DE43BDBD1A5BBFFFA1C7B7AF3C03424396C6B252F08714709184 + F94311E22DEDD9E4C0FC0E9CEE1AFC8AC4505B5789E876025F867300D1694BFA + CCA49FCB1C046AD5B2C94B813D383E3D25334B0576778FF17524074047C8944D + A2B3BB3C36E8BA8E3BFD363DEEEF74DC5C5F2179718ED89F4B7C1B7B0520AD8E + 3241C9F4B191F93A798943F90EBDE37900A4908F0987CB6A6826FD3D02FA260C + 0024FF201374DBF9CCA767B7F28E4CF07C7F03409AF532411796319391747266 + C2C77298651F240AFE4C53FD4CA4E48BA464FBD1CBD09ACCB29D132F5AF93D7A + 04D7A238F0C903C3480000000049454E44AE426082} + Name = 'PngImage10' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300004E2000004E2001167D99DE00000A4D694343505068 + 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 + F73EE77CFEFC2FF784F3FB25D29F330000010A4944415478DA63FCFFFF3F0325 + 8071F019C06838930548B503710C104B00F117203E02C4B9FFCFA7DF4151CBC8 + 88D50090E60A2C969D001A60498C01CFA136870235AC01F27580ECCB40FC07C8 + 67256800D4101E20E502C4D650DA00240E34809118177800A9E5402C806E30B1 + 06DC06522A403C0188F702F105207E4C8A0130014BA8E614209E4C8A01BBA1FE + 46062FA001ABF88321E3FEFBEF40CE8DFF8CB80C00299C0FC40EA09007E22540 + 3C151A130B9E7FCF4878033440E7210E0370819F868CFF41368334BF0426AD47 + 1F19187EFD252129BFD060FC8FAE19EC622C5E900352CF8001F607C8D607B21F + 01D9EF61F2F35918FF8334A7FF27D10BB0509F018C0C103B03C805D1009D9F97 + 36069839440000000049454E44AE426082} + Name = 'PngImage11' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300004E2000004E2001167D99DE00000A4D694343505068 + 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 + F73EE77CFEFC2FF784F3FB25D29F33000000EC4944415478DA63FCFFFF3F0325 + 8071F019C06838930548B503710C104B00F117203E02C4B9FFCFA7DF4151CBC8 + 88D50090E60A2C969D001A60498C01CFA136870235AC01F27580ECCB40FC07C8 + 67256800D4101E20E502C4D650DA00240E34809118177800A9E5402C806E30B1 + 06DC06522A403C0188F702F105207E4C8A0130014BA8E614209E4C8A01BBA1FE + 46062FA001AB0834E4012103400AE703B10328E4817809104F85C6C402A00189 + 0463011BF869C8F8FFFD7706863740FC1298B41E7D6460F8F59784A4FC4283F1 + 3FBA66B02BB078410E483D033AF50F90AD0F643F02B2DF633394242FE00200A6 + 308833CD7332EF0000000049454E44AE426082} + Name = 'PngImage12' + Background = clWindow + end> + Bitmap = {} + end + inherited frxReport1: TfrxReport + Datasets = <> + Variables = <> + Style = <> + end +end diff --git a/Modulos/Facturas de cliente/Cliente/uEditorPreviewFacturaCliente.pas b/Modulos/Facturas de cliente/Cliente/uEditorPreviewFacturaCliente.pas new file mode 100644 index 0000000..b44bd29 --- /dev/null +++ b/Modulos/Facturas de cliente/Cliente/uEditorPreviewFacturaCliente.pas @@ -0,0 +1,72 @@ +unit uEditorPreviewFacturaCliente; + +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; + +const + CTE_TamLetraIni = 10; + CTE_TamLetraMin = 5; + CTE_TamLetraMax = 30; + CTE_Aumento = 2; + +type + TfEditorPreviewFacturaCliente = class(TfEditorPreview) + TBXItem38: TTBXItem; + actAumentarTamLetra: TAction; + TBXItem43: TTBXItem; + actDisminuirTamLetra: TAction; + procedure CustomEditorCreate(Sender: TObject); + + procedure actAumentarTamLetraExecute(Sender: TObject); + procedure actDisminuirTamLetraExecute(Sender: TObject); + private + FCodigo: Integer; + TamLetra: Integer; + public + property Codigo: Integer read FCodigo write FCodigo; + end; + +var + fEditorPreviewFacturaCliente: TfEditorPreviewFacturaCliente; + +implementation +{$R *.dfm} + +uses uDataModuleFacturasCliente; + +procedure TfEditorPreviewFacturaCliente.actAumentarTamLetraExecute(Sender: TObject); +begin + //Si sale de los límites de tamaño de letra no hacemos nada + if (TamLetra >= CTE_TamLetraMax) then + Exit; + + TamLetra := TamLetra + CTE_Aumento; + dmFacturasCliente.Refrescar(Self.Report, Codigo, TamLetra); +end; + +procedure TfEditorPreviewFacturaCliente.CustomEditorCreate(Sender: TObject); +begin + inherited; + TamLetra := CTE_TamLetraIni; +end; + +procedure TfEditorPreviewFacturaCliente.actDisminuirTamLetraExecute(Sender: TObject); +begin + //Si sale de los límites de tamaño de letra no hacemos nada + if (TamLetra <= CTE_TamLetraMin) then + Exit; + + TamLetra := TamLetra - CTE_Aumento; + dmFacturasCliente.Refrescar(Self.Report, Codigo, TamLetra); +end; + +end. diff --git a/Modulos/Facturas de cliente/Cliente/uPluginControllerFacturasCliente.dfm b/Modulos/Facturas de cliente/Cliente/uPluginControllerFacturasCliente.dfm new file mode 100644 index 0000000..c01ada8 --- /dev/null +++ b/Modulos/Facturas de cliente/Cliente/uPluginControllerFacturasCliente.dfm @@ -0,0 +1,209 @@ +object ModuleFacturasCliente: TModuleFacturasCliente + OldCreateOrder = True + DefaultAction = actFacturasCliente + Description = 'Facturas de cliente' + ModuleMenu = MainMenu + ModuleName = 'Facturas de cliente' + SmallImages = SmallImages + LargeImages = LargeImages + Author = 'Rodax Software' + Version = '1.0.0' + Left = 693 + Top = 665 + Height = 252 + Width = 401 + object LargeImages: TPngImageList + Height = 24 + Width = 24 + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD252000002744944415478DA + 63FCFFFF3F032D01E3F0B060F9D6D334B3056E41A4B729491AFFFCFDCFF0F7EF + 3F869FBFFE80E93FFFFE8169301B887FFDFECB109E5E876A41E249438206FF05 + AAFFF5F72FC3AF3F7FC0F4975FBF207C10065A02932BFAB59C61DED24D9816CC + 373F8F6291F45B6F8626CF660C8BFE010D0361CFD5F60C1F791E800DBF14F082 + 4169A520D8928ABFAB705B00022036B2E11718CF33189F346660B809E4A83330 + 9C353FCBA0F9438BE117D007415B3C189EB2DF66B811FC1AAC566C3137431DC3 + 5AFC3E8019CE7C8A89E1AFD93F300D32FC6CDC5906E379408BB419183EEB7C61 + E0BDC2C3F05AE50D43F84E5F86BD51C718841771817DD0CEB211BB05E841C3BC + 1C684124D082C54C10C39719339C8D02D2B38C193E447C6410D8C2CFF0C2E525 + 43D49E00860B7F2EC0E3A3977D0B911620FBE02A508203887F30807DF056ED1D + 83F02D218627324F18E20E86329CFA79166EC164AEEDF82D40B6E42F50C36596 + 4B9038B80894D087C481DC5B79869F3F7E60180E02382D404E4520C58A1FFC18 + 6A9C6BC196FC03A7F5BF700CE247EF0D841BFE33E50F03E34C46FC16C0003C6D + 03B1CCB31F0C5325B4B1E60BDE877B505C0E03582D40CFA57FA039F3EA444D06 + 09A7200645CB1E86FBC74BC06A5EDC0726E7FBF719E6EE7BCE30A7DA09C3E229 + 4F73312D98B2780756570A7E3BC7A0F4660ED8307450DD928DD3E273AC89080B + BA27CF27584C9C2B7B88553CA5751FA65AA0E12000B680919191A0E1C75A14FF + 93124C404BC3E6EEFBB19A140B4281D42A6CC13467EF77AC96022D6024CA0290 + E196969AABB0C91D3F7E1D6BDC008101D0828BC45A803778402EC5A597681FE0 + 0A1E200087355E0B6809686E0100FA3E2AAB1481BE0E0000000049454E44AE42 + 6082} + Name = 'PngImage1' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD252000001BE4944415478DA + 63FCFFFF3F032D0123B2054BB79CA49A6DD13EE68C582D004A906CD8DFBFFF80 + F83F980601EBC07C86733BA6E1B6C0B6683F8A0187FB1C711A8EAC765BB315C3 + C275FB19E62DDD84DF02525CEE507A9081455D89E1C08C1D0CEF0FC6312CD978 + 90B005D87C802E06027B3BEC189C2B0E311CD97F0BCC7FB32F8661F996C394F9 + E0FF3F605803F11FA0EB41EC3FFFFE41E3E01F98BD7ADB51D27D400C00F9E2F1 + 8E70860DBB4E106701CCDBA480075B431936EF3D459C05F8520E3600D2B3A850 + 8F61EB81D3C45B802BA86096C3E4616AE7E7EB32EC387486763E989DA3CDB0E7 + E839DAF96046A626C3FE131768E783A969EA0C874E5FC26F4184A729387792E3 + 838929AA0CC7CE5EC16F41A89B09387792E3839E042586D317AFE3B720C8D988 + C1ADFA08591674C62A309CBB7213BF057E8E060C5EB5C7F01A06B27CC1913F70 + 7E820D0BD882B62839868BD76FE3B7C0DB4E0F5EAEC0CA1850D9032BF393275F + C1881F18BF394296E1CACD3BF82DF0B0D6C16938884E9B760D6BF0116D818BA5 + 164EC3411667CDB88133E888B2C0DE541D6CD8BFBF88621966E1BFFFFFB1061F + 322068818D912AB844A404E0B5A077CA428A0C8701980500619929EF09CFCE42 + 0000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end> + Left = 232 + Top = 16 + Bitmap = {} + end + object ModuleActionList: TActionList + Images = LargeImages + Left = 40 + Top = 72 + object actFacturasCliente: TAction + Category = 'Ventas' + Caption = 'Facturas de cliente' + ImageIndex = 1 + OnExecute = actFacturasClienteExecute + end + end + object MainMenu: TMainMenu + Images = LargeImages + Left = 40 + Top = 16 + object Ventas1: TMenuItem + Tag = 200 + Caption = '&Ventas' + GroupIndex = 1 + ImageIndex = 0 + object MenuItem2: TMenuItem + Tag = 4000 + Action = actFacturasCliente + end + end + end + object SmallImages: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD2520000011A4944415478DA + 63FCFFFF3F032580916203966D3945B60991DEA68C6003D4BD9919269F4CC6AA + E8F7DFBF0CDFFFFC61F8F6FB37C3C71F3FC0ECB9FE5B19523CE6309CDB310D61 + 0008C00C996B760EC3209B6D7270CD208062C02E9134B8429866E6534C1081AB + 0C0C7F13FF81999A6B4519BE035D02728DDCB204220CB80A118319A0B04200AC + 19843556A762370024B9DCFA328617903583BC62B83E13350C40FE074B421581 + 70EF05569C31907DD8036140F7E4F9180AA6DAEE60B04CAE6660905064F8717C + 2AC3F97DE719E6EE7BCE30A5C50BCE9EB3F73B23232E1B8EB528861E7CADB6EA + CEE58358E5939D24C32CABEFADC667C07F8A5D00A456811452D505208D5635F7 + 5783D480F211C92E98BBEF075C0FD8004A73230074DEE0E1BE54FBD500000000 + 49454E44AE426082} + Name = 'PngImage1' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001684944415478DA + 63FCFFFF3FC394C53BFE33900172623D1819610600394469FAF3F71FC3EF3F7F + 19ACFDF319CEED98866A806DD17E14C587FB1CC134B2F8AE761B86B9ABF632CC + 5BBA09D3007CE0D7EFBF609B4178C98683D80D40770136B0AED69461E59623B8 + 0D80391B04FE01E5FEFCF907B7D9B7FE04C3AA4A6386B53B8EE13700E692BD9D + 760CCEE587E03607359F66585A6AC0B069CF49FC06A0DB0CC2207E58FB598685 + 85BA0CDB0E9CC16DC0C15E0706FBE203605B37375A809D0D02209BA3BB2F30CC + C9D566D87DE41C6E0340CE46B7F9E7AF3F6076D2C42B0C53D2D4180E9FBE8C69 + 4046941B8363E94194105F5E6EC810D9791ECC9E99A5C9903EED3A437F920AC3 + 89F357310D480E7386DB08A2435ACF302C2ED687B8049A067266DD62E88A5364 + 387BF906A60171410E280107B3191DB446C9315CBA7E1BD380283F3B147F23DB + FC1BC9E07FFFFE335CB97907D380502F6B86D5DB8E129D13310C0009900A4006 + 00004B6D80F047EC10D30000000049454E44AE426082} + Name = 'PngImage1' + Background = clWindow + end> + PngOptions = [pngBlendOnDisabled, pngGrayscaleOnDisabled] + Left = 308 + Top = 16 + Bitmap = {} + end + object ExtraImages: TPngImageList + Height = 28 + Width = 28 + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D494844520000001C0000001C0806000000720DDF + 940000000970485973000017120000171201679FD252000002D84944415478DA + ED946D48535118C7FF57855EB4171542B01756516845C868B63E4A1F2A7B1996 + 990B845008EA637DD2A828F34BF521D220C98484C28232B24C302329456D380D + A99C75035FB6A5B3E9ACAEBA7BD773CF4D9BEE6E6E23F6217AE0F09C73EE73CE + EF79CEFF9CCB793C1E44D2B8FFC07F0378EF697BC4A833C0DCCC6D616DE0163D + 104589BCC43CEB4B5E7DE62986E6728E9F9D0D3CD69A163448A47593A28849B7 + 5BF1731B01A6BFD7E97AC0F70DA0B0A4DC175899DE310B9CECC8C485DD17FD82 + 25DA58621589D8FB3003A3715F18ACCB60C3DAEA7806ADD759D03768F50F944D + EEABC1CC5C07B4AD5AE0230D3602A6741352845406945B56ED2E0C2CB0E0C3C1 + 2116BFA22A160DBA5E0CDAED812BF48645B745013C1D638EA4F40966CA33417B + 9BC09B00D7E6712C791C07AC0386D60F23A77E1F5E189B91786731ABB029FD33 + ECC343EA40B5A38CAE268844C05C02564529B0BB5A988CE4CBB5701E19C5F2DA + 652CD6B6D30E63830166B77946CFD7DB7938461C2100E5AA2C043CFABBC26E9A + 5C484D00ABD0B16104897509ACC2FE95FDC87B958DB609D30CF08D8EC798CB19 + 18A87661648DDEC574291A76D2C45645C3D58E35EC9B7B6ACA07265B93F613BE + FF189BFF96CA0B34CEFD0C2A6F386EEB467C4F61C0E7B2CADC80AF4B454C14B8 + C1DDE4D8DCCB340B04613C70856A6FABB81DD0E71701491A128B677102FF8C79 + 276F65FE4C45076E1565CC4AE291EB0416C527FB02E7FB7BF4DED882A48C2C68 + F457C0B79C562E09AF3C23F04A02158D569416EFF149E2D0B9165FE0F32673C0 + E31AB0BC45AAAD846DAA66D66F024ACB4EA9262103CBAE5DFD03BC7CBD12C158 + 72AC0B4F4E8E048C29B8D4E83DAC791F73C0F0934B600306E4382E28986CCDC5 + 1A4FA83A5202872B1A8507610383D5D13B010272E102B3694323750D7E426AF2 + F37718E62610165086E9F529F743D08F2540ED3C013BC30106A5DF74356A1632 + 3018FDFE26705EFDBC8FCF2F30921671E02FBE648AC22CC7AE57000000004945 + 4E44AE426082} + Name = 'PngImage0' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D494844520000001C0000001C0806000000720DDF + 940000000970485973000017120000171201679FD252000002834944415478DA + BDD6ED4F52511800F087ECDFA8B5D6CB2A8550FC525862BC28B56966F9B2D658 + 5B7373D69ABDACF5A12FADD6875EB6968DD922299C1481888680C0E555485494 + 20B2FADCFAD6565FE53EDD7B0B86099C6BD7F970D9E53CDC7B7EE73907388810 + 11363344C5A023F0916BB0B9FC73559B7970C7DFD7DCFBDC8150B5A5AA24705A + 23159505C7A90CB62A0EFCF7E869A62F9A46C8E568C8D134C8DB2EC382EB6979 + D0EE4F635B5335340C506B3A0B3F549485FEBDDE7DF730182C7E308C38F881EB + 0D1654CBF680FFD70A04F42EF819D181D14691C131DF073C79ACA66C85A5F2C1 + 078D70F44A0022D4E742EE47E81C98EC413268F3A6B05D29E65D19BB4EB91C72 + E7E2B56373E6C93019B47A97F0945252B212BEC156FADDDB031667940738CD80 + AA3F60F114AD37BE79BAC1EA9A21836F3D8BD8A13EC881953E959582BD77F4BA + 14ECD3713268712791F9A20A064D572530E19B25836FDC0B7846535B002BAD65 + 7E40C5D7E4EF310E88C14925C8E06BD73C7636D709AEF0F9A56AF084E7798053 + 0CD8221C1CEADF0FBE68920C9AA7E6B0AB4526784AF57DFB808A2D92C1516702 + BBB5F5822B1CECDD0BA1D9140FF05D023BB532EEA74A08F8F8C26E88CEA5C9E0 + C8E47B660DEB41712D28684A1F9DDF05F164861FD8A1AE03E58DB0A00AEFEB76 + 4262294B064D13716C57D582E666541078EFEC0E486696C9E02B470C5B9BA470 + FC568C57E7ECA086232B85B64EBE9503EFF46C8754F60B3FF044A3A4F49643AF + FEFBD03B985DB3CEF9F6EDAE6D905EFE4A065F8ECFA0F6888488B103EAD37F2A + 39EDEB028DF62836378889187BBE38547EFBE20D0E8F4550231713B172B9E2E0 + 05BEB0855175A886DBCB362288A0C11AC227CFCC1B82E5A322B819F11BFB7D9A + E74CD9D0710000000049454E44AE426082} + Name = 'PngImage1' + Background = clWindow + end> + Left = 232 + Top = 80 + Bitmap = {} + end +end diff --git a/Modulos/Facturas de cliente/Cliente/uPluginControllerFacturasCliente.pas b/Modulos/Facturas de cliente/Cliente/uPluginControllerFacturasCliente.pas new file mode 100644 index 0000000..21293a2 --- /dev/null +++ b/Modulos/Facturas de cliente/Cliente/uPluginControllerFacturasCliente.pas @@ -0,0 +1,68 @@ +unit uPluginControllerFacturasCliente; + +interface + +uses + uModuleController, uInterfaces, uHostManager, Menus, Classes, ActnList, + ImgList, Controls, PngImageList; + +type + IMCFacturasCliente = interface(IInterface) + ['{ECAE56F7-4DC8-4912-AC2C-CC64B65D4517}'] + end; + + TModuleFacturasCliente = class(TModuleController, IMCFacturasCliente) + actFacturasCliente: TAction; + ExtraImages: TPngImageList; + LargeImages: TPngImageList; + MainMenu: TMainMenu; + ModuleActionList: TActionList; + SmallImages: TPngImageList; + Ventas1: TMenuItem; + MenuItem2: TMenuItem; + procedure actFacturasClienteExecute(Sender: TObject); + public + end; + +implementation + +{$R *.dfm} + +uses + Forms, Dialogs, uGUIBase, uCustomEditor, SysUtils, uBizFacturasCliente, + uDataModuleFacturasCliente, uEditorFacturasCliente; + +function GetModule : TModuleController; +begin + Result := TModuleFacturasCliente.Create(NIL); +end; + +exports + GetModule name GET_MODULE_FUNC; + +procedure TModuleFacturasCliente.actFacturasClienteExecute(Sender: TObject); +var + aObj: IEditorFacturasCliente; + AFacturasCliente : IBizFacturasCliente; +begin + AFacturasCliente := dmFacturasCliente.GetItems; + aObj := TfEditorFacturasCliente.Create(Application); + try + with aObj do + begin + FacturasCliente := AFacturasCliente; + ShowEmbedded; + end; + finally + AFacturasCliente := NIL; + aObj := NIL; + end; +end; + +initialization + RegisterModuleClass(TModuleFacturasCliente); + +finalization + UnRegisterModuleClass(TModuleFacturasCliente); + +end. diff --git a/Modulos/Facturas de cliente/Cliente/uViewAlbaranFactura.dfm b/Modulos/Facturas de cliente/Cliente/uViewAlbaranFactura.dfm new file mode 100644 index 0000000..4fb76c6 --- /dev/null +++ b/Modulos/Facturas de cliente/Cliente/uViewAlbaranFactura.dfm @@ -0,0 +1,11 @@ +inherited frViewAlbaranFactura: TfrViewAlbaranFactura + inherited edtlReferencia: TcxDBTextEdit + Height = 21 + Width = 245 + end + inherited ActionList1: TActionList + inherited actElegirAlbaran: TAction + OnExecute = actElegirAlbaranExecute + end + end +end diff --git a/Modulos/Facturas de cliente/Cliente/uViewAlbaranFactura.pas b/Modulos/Facturas de cliente/Cliente/uViewAlbaranFactura.pas new file mode 100644 index 0000000..73e3fb6 --- /dev/null +++ b/Modulos/Facturas de cliente/Cliente/uViewAlbaranFactura.pas @@ -0,0 +1,52 @@ +unit uViewAlbaranFactura; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewAlbaranRelacionado, DB, uDADataTable, ImgList, + PngImageList, ActnList, cxControls, cxContainer, cxEdit, cxTextEdit, + cxDBEdit, ComCtrls, ToolWin, ExtCtrls, StdCtrls; + +type + TfrViewAlbaranFactura = class(TfrViewAlbaranRelacionado) + procedure actElegirAlbaranExecute(Sender: TObject); + private + { Private declarations } + public + { Public declarations } + end; + +var + frViewAlbaranFactura: TfrViewAlbaranFactura; + +implementation +{$R *.dfm} + +uses uBizAlbaranesCliente, uDataModuleAlbaranesCliente; + +procedure TfrViewAlbaranFactura.actElegirAlbaranExecute(Sender: TObject); +var + AAlbaran : IBizAlbaranesCliente; +begin + inherited; + + if Length(edtlReferencia.Text) > 0 then + if (MessageBox(0, 'Esta factura ya tiene asociado un albarán. '+#13+#10+ + 'Si elige otro albarán, se cambiará en esta factura el cliente y los conceptos '+#13+#10+ + 'para hacerlos coincidir con el albarán elegido. '+#13+#10+ + '¿Desea continuar?', 'Confirmación', MB_ICONQUESTION or MB_YESNO) = idNo) then + Exit; + + AAlbaran := dmAlbaranesCliente.GetItems; + try + if AAlbaran.ShowForSelect = mrOK then + begin + Self.Albaran := dmAlbaranesCliente.GetItemsSeleccionados(AAlbaran) + end; + finally + AAlbaran := NIL; + end; +end; + +end. diff --git a/Modulos/Facturas de cliente/Cliente/uViewDatosFacturaCliente.dfm b/Modulos/Facturas de cliente/Cliente/uViewDatosFacturaCliente.dfm new file mode 100644 index 0000000..60a218c --- /dev/null +++ b/Modulos/Facturas de cliente/Cliente/uViewDatosFacturaCliente.dfm @@ -0,0 +1,99 @@ +inherited frViewDatosFacturaCliente: TfrViewDatosFacturaCliente + Width = 360 + Height = 112 + Constraints.MinHeight = 110 + Constraints.MinWidth = 360 + DesignSize = ( + 360 + 112) + object Bevel1: TBevel + Left = 184 + Top = 8 + Width = 165 + Height = 9 + Anchors = [akLeft, akTop, akRight] + Shape = bsBottomLine + end + object Label5: TLabel + Left = 8 + Top = 8 + Width = 170 + Height = 13 + Caption = 'Datos de la factura de cliente' + Font.Charset = DEFAULT_CHARSET + Font.Color = clActiveCaption + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + ParentFont = False + end + object Label1: TLabel + Left = 16 + Top = 32 + Width = 56 + Height = 13 + Caption = 'Referencia:' + end + object Label2: TLabel + Left = 16 + Top = 56 + Width = 69 + Height = 13 + Caption = 'Fecha de alta:' + end + object Label3: TLabel + Left = 16 + Top = 80 + Width = 61 + Height = 13 + Caption = 'Vencimiento:' + end + object edtFecha: TcxDBDateEdit + Left = 100 + Top = 52 + Anchors = [akLeft, akTop, akRight] + DataBinding.DataField = 'FECHAFACTURA' + DataBinding.DataSource = DADataSource + Style.Color = clInfoBk + Style.LookAndFeel.NativeStyle = True + Style.Shadow = False + Style.ButtonTransparency = ebtNone + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 1 + Width = 245 + end + object edtVencimiento: TcxDBDateEdit + Left = 100 + Top = 76 + Anchors = [akLeft, akTop, akRight] + DataBinding.DataSource = DADataSource + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 2 + Width = 245 + end + object eReferencia: TcxDBTextEdit + Left = 100 + Top = 28 + Anchors = [akLeft, akTop, akRight] + DataBinding.DataField = 'REFERENCIA' + DataBinding.DataSource = DADataSource + Properties.ReadOnly = False + Style.Color = clInfoBk + Style.LookAndFeel.NativeStyle = True + StyleDisabled.Color = clMenuBar + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clWindowText + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 0 + Width = 245 + end + object DADataSource: TDADataSource + Left = 192 + end +end diff --git a/Modulos/Facturas de cliente/Cliente/uViewDatosFacturaCliente.pas b/Modulos/Facturas de cliente/Cliente/uViewDatosFacturaCliente.pas new file mode 100644 index 0000000..4fca27e --- /dev/null +++ b/Modulos/Facturas de cliente/Cliente/uViewDatosFacturaCliente.pas @@ -0,0 +1,35 @@ +unit uViewDatosFacturaCliente; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, DB, uDADataTable, cxControls, cxContainer, cxEdit, + cxTextEdit, cxMaskEdit, cxDropDownEdit, cxCalendar, cxDBEdit, StdCtrls, + Mask, DBCtrls, ExtCtrls, cxMemo, cxRichEdit, cxDBRichEdit; + +type + TfrViewDatosFacturaCliente = class(TfrViewBase) + Bevel1: TBevel; + Label5: TLabel; + Label1: TLabel; + Label2: TLabel; + edtFecha: TcxDBDateEdit; + Label3: TLabel; + edtVencimiento: TcxDBDateEdit; + DADataSource: TDADataSource; + eReferencia: TcxDBTextEdit; + private + { Private declarations } + public + { Public declarations } + end; + +var + frViewDatosFacturaCliente: TfrViewDatosFacturaCliente; + +implementation + +{$R *.dfm} + +end. diff --git a/Modulos/Facturas de cliente/Cliente/uViewDetallesAlbaranCliente.dfm b/Modulos/Facturas de cliente/Cliente/uViewDetallesAlbaranCliente.dfm new file mode 100644 index 0000000..59080a4 --- /dev/null +++ b/Modulos/Facturas de cliente/Cliente/uViewDetallesAlbaranCliente.dfm @@ -0,0 +1,52 @@ +inherited frViewDetallesAlbaranCliente: TfrViewDetallesAlbaranCliente + inherited cxGrid: TcxGrid + inherited cxGridView: TcxGridDBTableView + inherited cxGridViewTIPO: TcxGridDBColumn + Width = 69 + end + inherited cxGridViewDESCRIPCION: TcxGridDBColumn + Width = 526 + end + object cxGridViewPUNTOS: TcxGridDBColumn [3] + DataBinding.FieldName = 'PUNTOS' + PropertiesClassName = 'TcxMaskEditProperties' + Properties.Alignment.Horz = taRightJustify + Styles.OnGetContentStyle = cxGridViewPUNTOSStylesGetContentStyle + Width = 74 + end + object cxGridViewIMPORTEPUNTOS: TcxGridDBColumn [4] + DataBinding.FieldName = 'IMPORTEPUNTOS' + PropertiesClassName = 'TcxCurrencyEditProperties' + Properties.Alignment.Horz = taRightJustify + Styles.OnGetContentStyle = cxGridViewPUNTOSStylesGetContentStyle + Width = 124 + end + inherited cxGridViewCANTIDAD: TcxGridDBColumn + Properties.Alignment.Horz = taRightJustify + Width = 83 + end + inherited cxGridViewIMPORTEUNIDAD: TcxGridDBColumn + Width = 157 + end + inherited cxGridViewIMPORTETOTAL: TcxGridDBColumn + Width = 157 + end + inherited cxGridViewVISIBLE: TcxGridDBColumn + Styles.OnGetContentStyle = cxGridViewVISIBLEStylesGetContentStyle + Width = 76 + end + end + end + inherited cxStyleRepository1: TcxStyleRepository + object cxStyle_PUNTOS: TcxStyle + AssignedValues = [svColor, svFont, svTextColor] + Color = 16053492 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + TextColor = clWindowText + end + end +end diff --git a/Modulos/Facturas de cliente/Cliente/uViewDetallesAlbaranCliente.pas b/Modulos/Facturas de cliente/Cliente/uViewDetallesAlbaranCliente.pas new file mode 100644 index 0000000..93b796c --- /dev/null +++ b/Modulos/Facturas de cliente/Cliente/uViewDetallesAlbaranCliente.pas @@ -0,0 +1,94 @@ +unit uViewDetallesAlbaranCliente; + +interface + +uses + Windows, Messages, cxImageComboBox, + cxTextEdit, cxSpinEdit, cxStyles, cxCustomData, cxGraphics, cxFilter, + cxData, cxDataStorage, cxEdit, DB, cxDBData, ImgList, Controls, + PngImageList, uDADataTable, Classes, ActnList, ComCtrls, ToolWin, + cxGridLevel, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, + cxClasses, cxControls, cxGridCustomView, cxGrid, uViewDetallesFamilias, + cxCheckBox, cxMaskEdit, cxCurrencyEdit; + +type + TfrViewDetallesAlbaranCliente = class(TfrViewDetallesFamilias) + cxGridViewPUNTOS: TcxGridDBColumn; + cxGridViewIMPORTEPUNTOS: TcxGridDBColumn; + cxStyle_PUNTOS: TcxStyle; + procedure cxGridViewPUNTOSStylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); + procedure cxGridViewEditing(Sender: TcxCustomGridTableView; + AItem: TcxCustomGridTableItem; var AAllow: Boolean); + procedure cxGridViewVISIBLEStylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); + end; + + +implementation + +uses + Variants, uBizImportesDetalleBase, SysUtils; + +{$R *.dfm} + +procedure TfrViewDetallesAlbaranCliente.cxGridViewPUNTOSStylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); +var + IndiceCol : Integer; + ATipo : String; +begin + if Assigned(ARecord) then + begin + IndiceCol := (Sender as TcxGridDBTableView).GetColumnByFieldName(fld_TIPODETALLE).Index; + ATipo := VarToStr(ARecord.Values[IndiceCol]); + if ATipo = TIPODETALLE_CONCEPTO then + AStyle := cxStyle_PUNTOS; + if ATipo = TIPODETALLE_SUBTOTAL then + AStyle := cxStyle_SUBTOTAL; + if ATipo = TIPODETALLE_TITULO then + AStyle := cxStyle_TITULO; + end; +end; + +procedure TfrViewDetallesAlbaranCliente.cxGridViewEditing( + Sender: TcxCustomGridTableView; AItem: TcxCustomGridTableItem; + var AAllow: Boolean); +var + IndiceCol : Integer; +begin + IndiceCol := (Sender as TcxGridDBTableView).GetColumnByFieldName(fld_IMPORTEPUNTOS).Index; + if AItem.Index = IndiceCol then + begin + IndiceCol := (Sender as TcxGridDBTableView).GetColumnByFieldName(fld_TIPODETALLE).Index; + if (UpperCase(AItem.GridView.Items[IndiceCol].EditValue) = TIPODETALLE_SUBTOTAL) then + AAllow := False + else + AAllow := True + end + else + inherited; +end; + +procedure TfrViewDetallesAlbaranCliente.cxGridViewVISIBLEStylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); +var + IndiceCol : Integer; + ATipo : String; +begin + if Assigned(ARecord) then + begin + IndiceCol := (Sender as TcxGridDBTableView).GetColumnByFieldName(fld_TIPODETALLE).Index; + ATipo := VarToStr(ARecord.Values[IndiceCol]); + if ATipo = TIPODETALLE_SUBTOTAL then + AStyle := cxStyle_SUBTOTAL; + if ATipo = TIPODETALLE_TITULO then + AStyle := cxStyle_TITULO; + end; +end; + +end. diff --git a/Modulos/Facturas de cliente/Cliente/uViewDetallesFacturaCliente.ddp b/Modulos/Facturas de cliente/Cliente/uViewDetallesFacturaCliente.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Facturas de cliente/Cliente/uViewDetallesFacturaCliente.ddp differ diff --git a/Modulos/Facturas de cliente/Cliente/uViewDetallesFacturaCliente.dfm b/Modulos/Facturas de cliente/Cliente/uViewDetallesFacturaCliente.dfm new file mode 100644 index 0000000..f635cff --- /dev/null +++ b/Modulos/Facturas de cliente/Cliente/uViewDetallesFacturaCliente.dfm @@ -0,0 +1,54 @@ +inherited frViewDetallesFacturaCliente: TfrViewDetallesFacturaCliente + inherited cxGrid: TcxGrid + inherited cxGridView: TcxGridDBTableView + inherited cxGridViewTIPO: TcxGridDBColumn + Width = 69 + end + inherited cxGridViewDESCRIPCION: TcxGridDBColumn + Width = 526 + end + object cxGridViewPUNTOS: TcxGridDBColumn [3] + DataBinding.FieldName = 'PUNTOS' + PropertiesClassName = 'TcxMaskEditProperties' + Properties.Alignment.Horz = taRightJustify + Visible = False + Styles.OnGetContentStyle = cxGridViewPUNTOSStylesGetContentStyle + Width = 74 + end + object cxGridViewIMPORTEPUNTOS: TcxGridDBColumn [4] + DataBinding.FieldName = 'IMPORTEPUNTOS' + PropertiesClassName = 'TcxCurrencyEditProperties' + Properties.Alignment.Horz = taRightJustify + Visible = False + Styles.OnGetContentStyle = cxGridViewPUNTOSStylesGetContentStyle + Width = 124 + end + inherited cxGridViewCANTIDAD: TcxGridDBColumn + Properties.Alignment.Horz = taRightJustify + Width = 83 + end + inherited cxGridViewIMPORTEUNIDAD: TcxGridDBColumn + Width = 157 + end + inherited cxGridViewIMPORTETOTAL: TcxGridDBColumn + Width = 157 + end + inherited cxGridViewVISIBLE: TcxGridDBColumn + Styles.OnGetContentStyle = cxGridViewVISIBLEStylesGetContentStyle + Width = 76 + end + end + end + inherited cxStyleRepository1: TcxStyleRepository + object cxStyle_PUNTOS: TcxStyle + AssignedValues = [svColor, svFont, svTextColor] + Color = 16053492 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + TextColor = clWindowText + end + end +end diff --git a/Modulos/Facturas de cliente/Cliente/uViewDetallesFacturaCliente.pas b/Modulos/Facturas de cliente/Cliente/uViewDetallesFacturaCliente.pas new file mode 100644 index 0000000..29be932 --- /dev/null +++ b/Modulos/Facturas de cliente/Cliente/uViewDetallesFacturaCliente.pas @@ -0,0 +1,94 @@ +unit uViewDetallesFacturaCliente; + +interface + +uses + Windows, Messages, cxImageComboBox, + cxTextEdit, cxSpinEdit, cxStyles, cxCustomData, cxGraphics, cxFilter, + cxData, cxDataStorage, cxEdit, DB, cxDBData, ImgList, Controls, + PngImageList, uDADataTable, Classes, ActnList, ComCtrls, ToolWin, + cxGridLevel, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, + cxClasses, cxControls, cxGridCustomView, cxGrid, uViewDetallesFamilias, + cxCheckBox, cxMaskEdit, cxCurrencyEdit; + +type + TfrViewDetallesFacturaCliente = class(TfrViewDetallesFamilias) + cxGridViewPUNTOS: TcxGridDBColumn; + cxGridViewIMPORTEPUNTOS: TcxGridDBColumn; + cxStyle_PUNTOS: TcxStyle; + procedure cxGridViewPUNTOSStylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); + procedure cxGridViewEditing(Sender: TcxCustomGridTableView; + AItem: TcxCustomGridTableItem; var AAllow: Boolean); + procedure cxGridViewVISIBLEStylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); + end; + + +implementation + +uses + Variants, uBizImportesDetalleBase, SysUtils; + +{$R *.dfm} + +procedure TfrViewDetallesFacturaCliente.cxGridViewPUNTOSStylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); +var + IndiceCol : Integer; + ATipo : String; +begin + if Assigned(ARecord) then + begin + IndiceCol := (Sender as TcxGridDBTableView).GetColumnByFieldName(fld_TIPODETALLE).Index; + ATipo := VarToStr(ARecord.Values[IndiceCol]); + if ATipo = TIPODETALLE_CONCEPTO then + AStyle := cxStyle_PUNTOS; + if ATipo = TIPODETALLE_SUBTOTAL then + AStyle := cxStyle_SUBTOTAL; + if ATipo = TIPODETALLE_TITULO then + AStyle := cxStyle_TITULO; + end; +end; + +procedure TfrViewDetallesFacturaCliente.cxGridViewEditing( + Sender: TcxCustomGridTableView; AItem: TcxCustomGridTableItem; + var AAllow: Boolean); +var + IndiceCol : Integer; +begin + IndiceCol := (Sender as TcxGridDBTableView).GetColumnByFieldName(fld_IMPORTEPUNTOS).Index; + if AItem.Index = IndiceCol then + begin + IndiceCol := (Sender as TcxGridDBTableView).GetColumnByFieldName(fld_TIPODETALLE).Index; + if (UpperCase(AItem.GridView.Items[IndiceCol].EditValue) = TIPODETALLE_SUBTOTAL) then + AAllow := False + else + AAllow := True + end + else + inherited; +end; + +procedure TfrViewDetallesFacturaCliente.cxGridViewVISIBLEStylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); +var + IndiceCol : Integer; + ATipo : String; +begin + if Assigned(ARecord) then + begin + IndiceCol := (Sender as TcxGridDBTableView).GetColumnByFieldName(fld_TIPODETALLE).Index; + ATipo := VarToStr(ARecord.Values[IndiceCol]); + if ATipo = TIPODETALLE_SUBTOTAL then + AStyle := cxStyle_SUBTOTAL; + if ATipo = TIPODETALLE_TITULO then + AStyle := cxStyle_TITULO; + end; +end; + +end. diff --git a/Modulos/Facturas de cliente/Cliente/uViewDetallesFacturaCliente2.dfm b/Modulos/Facturas de cliente/Cliente/uViewDetallesFacturaCliente2.dfm new file mode 100644 index 0000000..61f7862 --- /dev/null +++ b/Modulos/Facturas de cliente/Cliente/uViewDetallesFacturaCliente2.dfm @@ -0,0 +1,55 @@ +inherited frViewDetallesFacturaCliente: TfrViewDetallesFacturaCliente + inherited cxGrid: TcxGrid + inherited cxGridView: TcxGridDBTableView + object cxGridViewPOSICION: TcxGridDBColumn + DataBinding.FieldName = 'POSICION' + Visible = False + SortIndex = 0 + SortOrder = soAscending + end + object cxGridViewTIPO: TcxGridDBColumn + DataBinding.FieldName = 'TIPO' + end + object cxGridViewDESCRIPCION: TcxGridDBColumn + DataBinding.FieldName = 'DESCRIPCION' + PropertiesClassName = 'TcxTextEditProperties' + Width = 831 + end + object cxGridViewCANTIDAD: TcxGridDBColumn + DataBinding.FieldName = 'CANTIDAD' + PropertiesClassName = 'TcxMaskEditProperties' + Properties.Alignment.Horz = taRightJustify + BestFitMaxWidth = 64 + HeaderAlignmentHorz = taRightJustify + Width = 75 + end + object cxGridViewIMPORTEUNIDAD: TcxGridDBColumn + DataBinding.FieldName = 'IMPORTEUNIDAD' + PropertiesClassName = 'TcxTextEditProperties' + Properties.Alignment.Horz = taRightJustify + BestFitMaxWidth = 120 + HeaderAlignmentHorz = taRightJustify + Width = 179 + end + object cxGridViewIMPORTETOTAL: TcxGridDBColumn + DataBinding.FieldName = 'IMPORTETOTAL' + PropertiesClassName = 'TcxTextEditProperties' + Properties.Alignment.Horz = taRightJustify + Properties.ReadOnly = True + BestFitMaxWidth = 120 + HeaderAlignmentHorz = taRightJustify + Options.Editing = False + Width = 181 + end + object cxGridViewPUNTOS: TcxGridDBColumn + DataBinding.FieldName = 'PUNTOS' + end + object cxGridViewIMPORTEPUNTOS: TcxGridDBColumn + DataBinding.FieldName = 'IMPORTEPUNTOS' + end + object cxGridViewVISIBLE: TcxGridDBColumn + DataBinding.FieldName = 'VISIBLE' + end + end + end +end diff --git a/Modulos/Facturas de cliente/Cliente/uViewDetallesFacturaCliente2.pas b/Modulos/Facturas de cliente/Cliente/uViewDetallesFacturaCliente2.pas new file mode 100644 index 0000000..9090e92 --- /dev/null +++ b/Modulos/Facturas de cliente/Cliente/uViewDetallesFacturaCliente2.pas @@ -0,0 +1,100 @@ +unit uViewDetallesFacturaCliente; + +interface + +uses + Windows, Messages, cxImageComboBox, + cxTextEdit, cxSpinEdit, cxStyles, cxCustomData, cxGraphics, cxFilter, + cxData, cxDataStorage, cxEdit, DB, cxDBData, ImgList, Controls, + PngImageList, uDADataTable, Classes, ActnList, ComCtrls, ToolWin, + cxGridLevel, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, + cxClasses, cxControls, cxGridCustomView, cxGrid, uViewDetallesFamilias, + cxCheckBox, cxMaskEdit, cxCurrencyEdit, uViewDetallesNormales; + +type + TfrViewDetallesFacturaCliente = class(TfrViewDetallesFamilias) + cxGridViewDESCRIPCION: TcxGridDBColumn; + cxGridViewCANTIDAD: TcxGridDBColumn; + cxGridViewIMPORTEUNIDAD: TcxGridDBColumn; + cxGridViewIMPORTETOTAL: TcxGridDBColumn; + cxGridViewPOSICION: TcxGridDBColumn; + cxGridViewTIPO: TcxGridDBColumn; + cxGridViewPUNTOS: TcxGridDBColumn; + cxGridViewIMPORTEPUNTOS: TcxGridDBColumn; + cxGridViewVISIBLE: TcxGridDBColumn; + procedure cxGridViewPUNTOSStylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); + procedure cxGridViewEditing(Sender: TcxCustomGridTableView; + AItem: TcxCustomGridTableItem; var AAllow: Boolean); + procedure cxGridViewVISIBLEStylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); + end; + + +implementation + +uses + Variants, uBizImportesDetalleBase, SysUtils; + +{$R *.dfm} + +procedure TfrViewDetallesFacturaCliente.cxGridViewPUNTOSStylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); +var + IndiceCol : Integer; + ATipo : String; +begin +{ if Assigned(ARecord) then + begin + IndiceCol := (Sender as TcxGridDBTableView).GetColumnByFieldName(fld_TIPODETALLE).Index; + ATipo := VarToStr(ARecord.Values[IndiceCol]); + if ATipo = TIPODETALLE_CONCEPTO then + AStyle := cxStyle_PUNTOS; + if ATipo = TIPODETALLE_SUBTOTAL then + AStyle := cxStyle_SUBTOTAL; + if ATipo = TIPODETALLE_TITULO then + AStyle := cxStyle_TITULO; + end;} +end; + +procedure TfrViewDetallesFacturaCliente.cxGridViewEditing( + Sender: TcxCustomGridTableView; AItem: TcxCustomGridTableItem; + var AAllow: Boolean); +var + IndiceCol : Integer; +begin + IndiceCol := (Sender as TcxGridDBTableView).GetColumnByFieldName(fld_IMPORTEPUNTOS).Index; + if AItem.Index = IndiceCol then + begin + IndiceCol := (Sender as TcxGridDBTableView).GetColumnByFieldName(fld_TIPODETALLE).Index; + if (UpperCase(AItem.GridView.Items[IndiceCol].EditValue) = TIPODETALLE_SUBTOTAL) then + AAllow := False + else + AAllow := True + end + else + inherited; +end; + +procedure TfrViewDetallesFacturaCliente.cxGridViewVISIBLEStylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); +var + IndiceCol : Integer; + ATipo : String; +begin +{ if Assigned(ARecord) then + begin + IndiceCol := (Sender as TcxGridDBTableView).GetColumnByFieldName(fld_TIPODETALLE).Index; + ATipo := VarToStr(ARecord.Values[IndiceCol]); + if ATipo = TIPODETALLE_SUBTOTAL then + AStyle := cxStyle_SUBTOTAL; + if ATipo = TIPODETALLE_TITULO then + AStyle := cxStyle_TITULO; + end;} +end; + +end. diff --git a/Modulos/Facturas de cliente/Cliente/uViewFacturaCliente.dfm b/Modulos/Facturas de cliente/Cliente/uViewFacturaCliente.dfm new file mode 100644 index 0000000..f7fadf6 --- /dev/null +++ b/Modulos/Facturas de cliente/Cliente/uViewFacturaCliente.dfm @@ -0,0 +1,196 @@ +inherited frViewFacturaCliente: TfrViewFacturaCliente + Width = 761 + Height = 310 + Align = alClient + Constraints.MinHeight = 310 + Constraints.MinWidth = 761 + inline frViewDatosYSeleccionContacto1: TfrViewDatosYSeleccionContacto + Left = 362 + Top = 0 + Width = 391 + Height = 228 + Constraints.MinHeight = 202 + Constraints.MinWidth = 350 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 0 + ReadOnly = False + inherited Label5: TLabel + Width = 97 + Caption = 'Datos del cliente' + end + inherited Bevel1: TBevel + Left = 112 + Width = 265 + end + inherited ToolBar1: TToolBar + ButtonWidth = 129 + inherited ToolButton3: TToolButton + Left = 106 + end + inherited ToolButton2: TToolButton + Left = 114 + Caption = 'Dar de alta un cliente' + end + end + inherited edtlNombre: TcxDBTextEdit + DataBinding.DataSource = DADataSource + Properties.ReadOnly = False + Properties.OnEditValueChanged = frViewDatosYSeleccionContacto1edtlNombrePropertiesEditValueChanged + Style.Color = clInfoBk + Width = 296 + end + inherited edtPoblacion: TcxDBTextEdit + DataBinding.DataSource = DADataSource + Properties.ReadOnly = False + Properties.OnEditValueChanged = frViewDatosYSeleccionContacto1edtlNombrePropertiesEditValueChanged + Style.Color = clInfoBk + TabOrder = 4 + Width = 296 + end + inherited edtProvincia: TcxDBTextEdit + DataBinding.DataSource = DADataSource + Properties.ReadOnly = False + Properties.OnEditValueChanged = frViewDatosYSeleccionContacto1edtlNombrePropertiesEditValueChanged + Style.Color = clInfoBk + TabOrder = 3 + Width = 152 + end + inherited edtNIFCIF: TcxDBTextEdit + DataBinding.DataSource = DADataSource + Properties.ReadOnly = False + Properties.OnEditValueChanged = frViewDatosYSeleccionContacto1edtlNombrePropertiesEditValueChanged + Style.Color = clInfoBk + Width = 296 + end + inherited edtCalle: TcxDBTextEdit + DataBinding.DataSource = DADataSource + Properties.ReadOnly = False + Properties.OnEditValueChanged = frViewDatosYSeleccionContacto1edtlNombrePropertiesEditValueChanged + Style.Color = clInfoBk + Width = 296 + end + inherited ToolBar2: TToolBar + Left = 181 + Width = 182 + ButtonWidth = 178 + inherited ToolButton4: TToolButton + Caption = 'Ver ficha completa del cliente...' + end + end + inherited edtCodigoPostal: TcxDBTextEdit + DataBinding.DataSource = DADataSource + Properties.ReadOnly = False + Properties.OnEditValueChanged = frViewDatosYSeleccionContacto1edtlNombrePropertiesEditValueChanged + Style.Color = clInfoBk + Width = 105 + end + inherited DADataSource: TDADataSource + Left = 64 + Top = 32 + end + inherited ActionList1: TActionList + inherited actElegirContacto: TAction + Caption = 'Elegir un cliente' + OnExecute = frViewDatosYSeleccionContacto1actElegirContactoExecute + end + inherited actAnadirContacto: TAction + OnExecute = frViewDatosYSeleccionContacto1actAnadirContactoExecute + end + inherited actVerContacto: TAction + OnExecute = frViewDatosYSeleccionContacto1actVerContactoExecute + end + end + end + inline frViewFormaPago1: TfrViewFormaPago + Left = 8 + Top = 229 + Width = 360 + Height = 125 + Constraints.MinWidth = 300 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 1 + ReadOnly = False + inherited Bevel1: TBevel + Width = 252 + end + inherited memFormaPago: TcxDBMemo + Height = 86 + Width = 329 + end + end + inline frViewObservaciones1: TfrViewObservaciones + Left = 376 + Top = 229 + Width = 380 + Height = 125 + Constraints.MinWidth = 300 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 2 + ReadOnly = False + inherited Bevel1: TBevel + Width = 272 + end + inherited memObservaciones: TcxDBMemo + Height = 90 + Width = 349 + end + end + inline frViewDatosFacturaCliente1: TfrViewDatosFacturaCliente + Left = 0 + Top = 0 + Width = 360 + Height = 110 + Constraints.MinHeight = 110 + Constraints.MinWidth = 360 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 3 + ReadOnly = False + inherited Label3: TLabel + Visible = False + end + inherited edtVencimiento: TcxDBDateEdit + Visible = False + end + end + inline frViewAlbaranFactura1: TfrViewAlbaranFactura + Left = 8 + Top = 107 + Width = 360 + Height = 90 + Constraints.MinHeight = 90 + Constraints.MinWidth = 360 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 4 + ReadOnly = False + inherited ToolBar1: TToolBar + Left = 0 + end + end + object DADataSource: TDADataSource + end +end diff --git a/Modulos/Facturas de cliente/Cliente/uViewFacturaCliente.pas b/Modulos/Facturas de cliente/Cliente/uViewFacturaCliente.pas new file mode 100644 index 0000000..0adb86b --- /dev/null +++ b/Modulos/Facturas de cliente/Cliente/uViewFacturaCliente.pas @@ -0,0 +1,152 @@ +unit uViewFacturaCliente; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, DB, uDADataTable, uCustomView, + uViewDatosYSeleccionContacto, uViewDatosFacturaCliente, + uViewObservaciones, uViewFormaPago, AppEvnts, uBizFacturasCliente, + cxControls, cxContainer, cxEdit, cxTextEdit, cxDBEdit, + uViewAlbaranRelacionado, uViewAlbaranFactura; + +type + IViewFacturaCliente = interface(IViewBase) + ['{3A95930C-20B3-41E9-93CB-21138ADB5B70}'] + function GetFacturaCliente: IBizFacturasCliente; + procedure SetFacturaCliente(const Value: IBizFacturasCliente); + property FacturaCliente: IBizFacturasCliente read GetFacturaCliente + write SetFacturaCliente; + end; + + TfrViewFacturaCliente = class(TfrViewBase, IViewFacturaCliente) + DADataSource: TDADataSource; + frViewDatosYSeleccionContacto1: TfrViewDatosYSeleccionContacto; + frViewObservaciones1: TfrViewObservaciones; + frViewFormaPago1: TfrViewFormaPago; + frViewDatosFacturaCliente1: TfrViewDatosFacturaCliente; + frViewAlbaranFactura1: TfrViewAlbaranFactura; + procedure frViewDatosYSeleccionContacto1actElegirContactoExecute( + Sender: TObject); + procedure frViewDatosYSeleccionContacto1actAnadirContactoExecute( + Sender: TObject); + procedure frViewDatosYSeleccionContacto1actVerContactoExecute( + Sender: TObject); + procedure frViewDatosYSeleccionContacto1edtlNombrePropertiesEditValueChanged( + Sender: TObject); + private + FFacturaCliente : IBizFacturasCliente; + procedure OnContactoChanged (Sender : TObject); + procedure OnAlbaranChanged(Sender : TObject); + protected + function GetFacturaCliente: IBizFacturasCliente; + procedure SetFacturaCliente(const Value: IBizFacturasCliente); + public + property FacturaCliente: IBizFacturasCliente read GetFacturaCliente + write SetFacturaCliente; + end; + +var + frViewFacturaCliente: TfrViewFacturaCliente; + +implementation + +uses uBizContacto, uExceptions, uDataModuleContactos, + schFacturasClienteClient_Intf, uDataModuleAlbaranesCliente; + +{$R *.dfm} + +{ TfrViewFacturaCliente } + +function TfrViewFacturaCliente.GetFacturaCliente: IBizFacturasCliente; +begin + Result := FFacturaCliente; +end; + +procedure TfrViewFacturaCliente.OnContactoChanged(Sender: TObject); +begin + FFacturaCliente.Cliente := (frViewDatosYSeleccionContacto1.Contacto as IBizCliente); +end; + +procedure TfrViewFacturaCliente.SetFacturaCliente( + const Value: IBizFacturasCliente); +begin + FFacturaCliente := Value; + if Assigned(FFacturaCliente) then + begin + DADataSource.DataTable := FFacturaCliente.DataTable; + + //Solo se deshabilita al insertar, luego la referencia será modificable + if FFacturaCliente.DataTable.State = dsInsert then + frViewDatosFacturaCliente1.eReferencia.Enabled := False; + end + else + DADataSource.DataTable := NIL; + + frViewDatosFacturaCliente1.DADataSource.DataTable := DADataSource.DataTable; + frViewObservaciones1.DADataSource.DataTable := DADataSource.DataTable; + frViewFormaPago1.DADataSource.DataTable := DADataSource.DataTable; + + frViewDatosYSeleccionContacto1.Contacto := FFacturaCliente.Cliente; + frViewDatosYSeleccionContacto1.OnContactoChanged := OnContactoChanged; + + frViewAlbaranFactura1.Albaran := dmAlbaranesCliente.GetItem(FFacturaCliente.CODIGOALBARAN); + frViewAlbaranFactura1.OnAlbaranChanged := OnAlbaranChanged; +end; + +procedure TfrViewFacturaCliente.frViewDatosYSeleccionContacto1actElegirContactoExecute( + Sender: TObject); +begin + inherited; + frViewDatosYSeleccionContacto1.actElegirContactoExecute(Sender); + +end; + +procedure TfrViewFacturaCliente.frViewDatosYSeleccionContacto1actAnadirContactoExecute( + Sender: TObject); +begin + inherited; + frViewDatosYSeleccionContacto1.actAnadirContactoExecute(Sender); + +end; + +procedure TfrViewFacturaCliente.frViewDatosYSeleccionContacto1actVerContactoExecute( + Sender: TObject); +var + AContacto : IBizCliente; +begin + inherited; + AContacto := dmContactos.GetCliente(FFacturaCliente.CODIGOCONTACTO); + try + AContacto.Show; + finally + AContacto := NIL; + end; +end; + +procedure TfrViewFacturaCliente.frViewDatosYSeleccionContacto1edtlNombrePropertiesEditValueChanged( + Sender: TObject); +begin + inherited; + with (Sender as TcxDBTextEdit) do + Enabled := (FFacturaCliente.CODIGOCONTACTO <> 0) +end; + +procedure TfrViewFacturaCliente.OnAlbaranChanged(Sender: TObject); +var + DesglosarIVA : Boolean; +begin + if not (FFacturaCliente.DataTable.State in dsEditModes) then + FFacturaCliente.Edit; + + FFacturaCliente.CopyFrom(frViewAlbaranFactura1.Albaran); + frViewDatosYSeleccionContacto1.Contacto := FFacturaCliente.Cliente; + + // ¿Desglosar el IVA? + if Application.MessageBox('¿Desea desglosar el IVA a partir del albarán?', 'Atención', MB_YESNO) = IDYES then + FFacturaCliente.DesglosarIVA + else + MessageBox(0, 'Se ha copiado correctamente el albarán elegido en esta factura.', 'Albarán copiado', MB_ICONWARNING or MB_OK); +end; + +end. diff --git a/Modulos/Facturas de cliente/Cliente/uViewFacturasCliente.ddp b/Modulos/Facturas de cliente/Cliente/uViewFacturasCliente.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Facturas de cliente/Cliente/uViewFacturasCliente.ddp differ diff --git a/Modulos/Facturas de cliente/Cliente/uViewFacturasCliente.dfm b/Modulos/Facturas de cliente/Cliente/uViewFacturasCliente.dfm new file mode 100644 index 0000000..2ba42c4 --- /dev/null +++ b/Modulos/Facturas de cliente/Cliente/uViewFacturasCliente.dfm @@ -0,0 +1,160 @@ +inherited frViewFacturasCliente: TfrViewFacturasCliente + inherited cxGrid: TcxGrid + inherited cxGridView: TcxGridDBTableView + DataController.KeyFieldNames = 'CODIGO' + DataController.Summary.FooterSummaryItems = < + item + Format = '0 Facturas' + Kind = skCount + Column = cxGridViewNOMBRE + end + item + Format = ',0.00 '#8364';-,0.00 '#8364 + Kind = skSum + Column = cxGridViewIMPORTETOTAL + end> + object cxGridViewICONO: TcxGridDBColumn + OnCustomDrawCell = cxGridViewCODIGOCustomDrawCell + BestFitMaxWidth = 25 + Options.Sorting = False + Width = 25 + end + object cxGridViewCODIGO: TcxGridDBColumn + DataBinding.FieldName = 'CODIGO' + Visible = False + BestFitMaxWidth = 25 + Width = 21 + IsCaptionAssigned = True + end + object cxGridViewREFERENCIA: TcxGridDBColumn + DataBinding.FieldName = 'REFERENCIA' + PropertiesClassName = 'TcxTextEditProperties' + SortIndex = 0 + SortOrder = soDescending + Width = 51 + end + object cxGridViewFECHAFACTURA: TcxGridDBColumn + DataBinding.FieldName = 'FECHAFACTURA' + SortIndex = 1 + SortOrder = soDescending + Width = 74 + end + object cxGridViewNOMBRE: TcxGridDBColumn + DataBinding.FieldName = 'NOMBRE' + Width = 134 + end + object cxGridViewNIFCIF: TcxGridDBColumn + DataBinding.FieldName = 'NIFCIF' + Width = 48 + end + object cxGridViewIMPORTETOTAL: TcxGridDBColumn + DataBinding.FieldName = 'IMPORTETOTAL' + PropertiesClassName = 'TcxCurrencyEditProperties' + Properties.Alignment.Horz = taRightJustify + FooterAlignmentHorz = taRightJustify + HeaderAlignmentHorz = taRightJustify + Width = 67 + end + end + end + inherited frViewFiltroBase1: TfrViewFiltroBase + inherited TBXDock1: TTBXDock + inherited TBXDockablePanel1: TTBXDockablePanel + inherited dxLayoutControl1: TdxLayoutControl + inherited txtFiltroTodo: TcxTextEdit + Width = 273 + end + inherited edtFechaIniFiltro: TcxDateEdit + Width = 121 + end + inherited edtFechaFinFiltro: TcxDateEdit + Width = 121 + end + end + end + end + end + inherited dxComponentPrinter: TdxComponentPrinter + inherited dxComponentPrinterLink: TdxGridReportLink + ReportDocument.CreationDate = 38673.741107951390000000 + BuiltInReportLink = True + end + 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 + 610000000970485973000017120000171201679FD252000001684944415478DA + 63FCFFFF3FC394C53BFE33900172623D1819610600394469FAF3F71FC3EF3F7F + 19ACFDF319CEED98866A806DD17E14C587FB1CC134B2F8AE761B86B9ABF632CC + 5BBA09D3007CE0D7EFBF609B4178C98683D80D40770136B0AED69461E59623B8 + 0D80391B04FE01E5FEFCF907B7D9B7FE04C3AA4A6386B53B8EE13700E692BD9D + 760CCEE587E03607359F66585A6AC0B069CF49FC06A0DB0CC2207E58FB598685 + 85BA0CDB0E9CC16DC0C15E0706FBE203605B37375A809D0D02209BA3BB2F30CC + C9D566D87DE41C6E0340CE46B7F9E7AF3F6076D2C42B0C53D2D4180E9FBE8C69 + 4046941B8363E94194105F5E6EC810D9791ECC9E99A5C9903EED3A437F920AC3 + 89F357310D480E7386DB08A2435ACF302C2ED687B8049A067266DD62E88A5364 + 387BF906A60171410E280107B3191DB446C9315CBA7E1BD380283F3B147F23DB + FC1BC9E07FFFFE335CB97907D380502F6B86D5DB8E129D13310C0009900A4006 + 00004B6D80F047EC10D30000000049454E44AE426082} + Name = 'PngImage2' + Background = clWindow + end> + Left = 56 + Top = 48 + Bitmap = {} + end +end diff --git a/Modulos/Facturas de cliente/Cliente/uViewFacturasCliente.pas b/Modulos/Facturas de cliente/Cliente/uViewFacturasCliente.pas new file mode 100644 index 0000000..e439833 --- /dev/null +++ b/Modulos/Facturas de cliente/Cliente/uViewFacturasCliente.pas @@ -0,0 +1,130 @@ +unit uViewFacturasCliente; + +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, dxPScxGridLnk, ActnList, uDADataTable, + cxGridLevel, cxClasses, cxControls, cxGridCustomView, cxGrid, + cxImage, Grids, DBGrids, uBizFacturasCliente, cxCurrencyEdit, + uViewFiltroBase; + +type + IViewFacturasCliente = interface(IViewGrid) + ['{0B893BAC-967F-45BD-BD74-B1B78662FCFC}'] + procedure SyncFocusedRecord; + function GetFacturasCliente: IBizFacturasCliente; + procedure SetFacturasCliente(const Value: IBizFacturasCliente); + property FacturasCliente: IBizFacturasCliente read GetFacturasCliente write SetFacturasCliente; + end; + + TfrViewFacturasCliente = class(TfrViewGrid, IViewFacturasCliente) + PngImageList: TPngImageList; + cxGridViewNOMBRE: TcxGridDBColumn; + cxGridViewFECHAFACTURA: TcxGridDBColumn; + cxGridViewNIFCIF: TcxGridDBColumn; + cxGridViewIMPORTETOTAL: TcxGridDBColumn; + cxGridViewREFERENCIA: TcxGridDBColumn; + cxGridViewCODIGO: TcxGridDBColumn; + cxGridViewICONO: TcxGridDBColumn; + procedure cxGridViewCODIGOCustomDrawCell( + Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; + AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); + + private + //Filtros relativos a la vista + procedure AnadirFiltroFechas; + + protected + FFacturasCliente: IBizFacturasCliente; + function GetFacturasCliente: IBizFacturasCliente; + procedure SetFacturasCliente(const Value: IBizFacturasCliente); + procedure AnadirOtrosFiltros; override; + + public + procedure SyncFocusedRecord; + property FacturasCliente: IBizFacturasCliente read GetFacturasCliente write SetFacturasCliente; + end; + +var + frViewFacturasCliente: TfrViewFacturasCliente; + +implementation + +uses + uDataModuleFacturasCliente; + +{$R *.dfm} + +{ TfrViewFacturasCliente } + +function TfrViewFacturasCliente.GetFacturasCliente: IBizFacturasCliente; +begin + Result := FFacturasCliente; +end; + +procedure TfrViewFacturasCliente.SetFacturasCliente( + const Value: IBizFacturasCliente); +begin + FFacturasCliente := Value; + if Assigned(FFacturasCliente) then + DADataSource.DataTable := FFacturasCliente.DataTable; +end; + +procedure TfrViewFacturasCliente.cxGridViewCODIGOCustomDrawCell( + Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; + AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); +var + R : TRect; +begin + inherited; + R := AViewInfo.ContentBounds; + ACanvas.FillRect(R); + ACanvas.DrawImage(PngImageList, R.Left, R.Top, 2); + ADone := True; +end; + +procedure TfrViewFacturasCliente.SyncFocusedRecord; +begin +// +end; + +procedure TfrViewFacturasCliente.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('FECHAFACTURA'); + FFiltro.AddItem(Columna, foBetween, varArrayOf([Fecha1, Fecha2]), VarToStr(Fecha1) + ' and ' + VarToStr(Fecha2)); + end; +end; + +procedure TfrViewFacturasCliente.AnadirOtrosFiltros; +begin + inherited; + + 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; + +end. diff --git a/Modulos/Facturas de cliente/Reglas/schFacturasClienteClient_Intf.pas b/Modulos/Facturas de cliente/Reglas/schFacturasClienteClient_Intf.pas new file mode 100644 index 0000000..6884e8f --- /dev/null +++ b/Modulos/Facturas de cliente/Reglas/schFacturasClienteClient_Intf.pas @@ -0,0 +1,1334 @@ +unit schFacturasClienteClient_Intf; + +interface + +uses + Classes, DB, SysUtils, uROClasses, uDADataTable; + +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_DarReferenciaFactura = '{0A0311FE-E619-4E86-8FB5-DF8D223B48EA}'; + RID_FacturasCliente = '{896C2481-665F-4006-88F1-3C08F7AE938C}'; + RID_DetallesFacturasCliente = '{A966AEEF-FB48-42DA-A290-C9AD58B38E48}'; + RID_InformeCabeceraFacturaCliente = '{6652332A-E17A-44E7-9833-7CD70E9458C1}'; + RID_InformeDetallesFacturaCliente = '{D240F619-DD60-4E7F-AB3F-E2B401E3236D}'; + + { Data table names } + nme_DarReferenciaFactura = 'DarReferenciaFactura'; + nme_FacturasCliente = 'FacturasCliente'; + nme_DetallesFacturasCliente = 'DetallesFacturasCliente'; + nme_InformeCabeceraFacturaCliente = 'InformeCabeceraFacturaCliente'; + nme_InformeDetallesFacturaCliente = 'InformeDetallesFacturaCliente'; + + { DarReferenciaFactura fields } + fld_DarReferenciaFacturaREFERENCIA = 'REFERENCIA'; + + { DarReferenciaFactura field indexes } + idx_DarReferenciaFacturaREFERENCIA = 0; + + { FacturasCliente fields } + fld_FacturasClienteCODIGOEMPRESA = 'CODIGOEMPRESA'; + fld_FacturasClienteCODIGO = 'CODIGO'; + fld_FacturasClienteFECHAALTA = 'FECHAALTA'; + fld_FacturasClienteUSUARIO = 'USUARIO'; + fld_FacturasClienteFECHAFACTURA = 'FECHAFACTURA'; + fld_FacturasClienteREFERENCIA = 'REFERENCIA'; + fld_FacturasClienteBASEIMPONIBLE = 'BASEIMPONIBLE'; + fld_FacturasClienteDESCUENTO = 'DESCUENTO'; + fld_FacturasClienteIMPORTEDESCUENTO = 'IMPORTEDESCUENTO'; + fld_FacturasClienteIVA = 'IVA'; + fld_FacturasClienteIMPORTEIVA = 'IMPORTEIVA'; + fld_FacturasClienteIMPORTETOTAL = 'IMPORTETOTAL'; + fld_FacturasClienteOBSERVACIONES = 'OBSERVACIONES'; + fld_FacturasClienteFORMAPAGO = 'FORMAPAGO'; + fld_FacturasClienteCODIGOCONTACTO = 'CODIGOCONTACTO'; + fld_FacturasClienteNIFCIF = 'NIFCIF'; + fld_FacturasClienteNOMBRE = 'NOMBRE'; + fld_FacturasClienteCALLE = 'CALLE'; + fld_FacturasClientePROVINCIA = 'PROVINCIA'; + fld_FacturasClienteCODIGOPOSTAL = 'CODIGOPOSTAL'; + fld_FacturasClientePOBLACION = 'POBLACION'; + fld_FacturasClienteCODIGOALBARAN = 'CODIGOALBARAN'; + + { FacturasCliente field indexes } + idx_FacturasClienteCODIGOEMPRESA = 0; + idx_FacturasClienteCODIGO = 1; + idx_FacturasClienteFECHAALTA = 2; + idx_FacturasClienteUSUARIO = 3; + idx_FacturasClienteFECHAFACTURA = 4; + idx_FacturasClienteREFERENCIA = 5; + idx_FacturasClienteBASEIMPONIBLE = 6; + idx_FacturasClienteDESCUENTO = 7; + idx_FacturasClienteIMPORTEDESCUENTO = 8; + idx_FacturasClienteIVA = 9; + idx_FacturasClienteIMPORTEIVA = 10; + idx_FacturasClienteIMPORTETOTAL = 11; + idx_FacturasClienteOBSERVACIONES = 12; + idx_FacturasClienteFORMAPAGO = 13; + idx_FacturasClienteCODIGOCONTACTO = 14; + idx_FacturasClienteNIFCIF = 15; + idx_FacturasClienteNOMBRE = 16; + idx_FacturasClienteCALLE = 17; + idx_FacturasClientePROVINCIA = 18; + idx_FacturasClienteCODIGOPOSTAL = 19; + idx_FacturasClientePOBLACION = 20; + idx_FacturasClienteCODIGOALBARAN = 21; + + { DetallesFacturasCliente fields } + fld_DetallesFacturasClienteCODIGOFACTURA = 'CODIGOFACTURA'; + fld_DetallesFacturasClienteNUMCONCEPTO = 'NUMCONCEPTO'; + fld_DetallesFacturasClientePOSICION = 'POSICION'; + fld_DetallesFacturasClienteTIPO = 'TIPO'; + fld_DetallesFacturasClienteDESCRIPCION = 'DESCRIPCION'; + fld_DetallesFacturasClienteCANTIDAD = 'CANTIDAD'; + fld_DetallesFacturasClienteIMPORTEUNIDAD = 'IMPORTEUNIDAD'; + fld_DetallesFacturasClienteIMPORTETOTAL = 'IMPORTETOTAL'; + fld_DetallesFacturasClienteVISIBLE = 'VISIBLE'; + + { DetallesFacturasCliente field indexes } + idx_DetallesFacturasClienteCODIGOFACTURA = 0; + idx_DetallesFacturasClienteNUMCONCEPTO = 1; + idx_DetallesFacturasClientePOSICION = 2; + idx_DetallesFacturasClienteTIPO = 3; + idx_DetallesFacturasClienteDESCRIPCION = 4; + idx_DetallesFacturasClienteCANTIDAD = 5; + idx_DetallesFacturasClienteIMPORTEUNIDAD = 6; + idx_DetallesFacturasClienteIMPORTETOTAL = 7; + idx_DetallesFacturasClienteVISIBLE = 8; + + { InformeCabeceraFacturaCliente fields } + fld_InformeCabeceraFacturaClienteCODIGOEMPRESA = 'CODIGOEMPRESA'; + fld_InformeCabeceraFacturaClienteCODIGO = 'CODIGO'; + fld_InformeCabeceraFacturaClienteFECHAALTA = 'FECHAALTA'; + fld_InformeCabeceraFacturaClienteUSUARIO = 'USUARIO'; + fld_InformeCabeceraFacturaClienteFECHAFACTURA = 'FECHAFACTURA'; + fld_InformeCabeceraFacturaClienteREFERENCIA = 'REFERENCIA'; + fld_InformeCabeceraFacturaClienteCODIGOCONTACTO = 'CODIGOCONTACTO'; + fld_InformeCabeceraFacturaClienteBASEIMPONIBLE = 'BASEIMPONIBLE'; + fld_InformeCabeceraFacturaClienteDESCUENTO = 'DESCUENTO'; + fld_InformeCabeceraFacturaClienteIMPORTEDESCUENTO = 'IMPORTEDESCUENTO'; + fld_InformeCabeceraFacturaClienteIVA = 'IVA'; + fld_InformeCabeceraFacturaClienteIMPORTEIVA = 'IMPORTEIVA'; + fld_InformeCabeceraFacturaClienteIMPORTETOTAL = 'IMPORTETOTAL'; + fld_InformeCabeceraFacturaClienteOBSERVACIONES = 'OBSERVACIONES'; + fld_InformeCabeceraFacturaClienteFORMAPAGO = 'FORMAPAGO'; + fld_InformeCabeceraFacturaClienteNIFCIF = 'NIFCIF'; + fld_InformeCabeceraFacturaClienteNOMBRE = 'NOMBRE'; + fld_InformeCabeceraFacturaClienteCALLE = 'CALLE'; + fld_InformeCabeceraFacturaClientePROVINCIA = 'PROVINCIA'; + fld_InformeCabeceraFacturaClienteCODIGOPOSTAL = 'CODIGOPOSTAL'; + fld_InformeCabeceraFacturaClientePOBLACION = 'POBLACION'; + + { InformeCabeceraFacturaCliente field indexes } + idx_InformeCabeceraFacturaClienteCODIGOEMPRESA = 0; + idx_InformeCabeceraFacturaClienteCODIGO = 1; + idx_InformeCabeceraFacturaClienteFECHAALTA = 2; + idx_InformeCabeceraFacturaClienteUSUARIO = 3; + idx_InformeCabeceraFacturaClienteFECHAFACTURA = 4; + idx_InformeCabeceraFacturaClienteREFERENCIA = 5; + idx_InformeCabeceraFacturaClienteCODIGOCONTACTO = 6; + idx_InformeCabeceraFacturaClienteBASEIMPONIBLE = 7; + idx_InformeCabeceraFacturaClienteDESCUENTO = 8; + idx_InformeCabeceraFacturaClienteIMPORTEDESCUENTO = 9; + idx_InformeCabeceraFacturaClienteIVA = 10; + idx_InformeCabeceraFacturaClienteIMPORTEIVA = 11; + idx_InformeCabeceraFacturaClienteIMPORTETOTAL = 12; + idx_InformeCabeceraFacturaClienteOBSERVACIONES = 13; + idx_InformeCabeceraFacturaClienteFORMAPAGO = 14; + idx_InformeCabeceraFacturaClienteNIFCIF = 15; + idx_InformeCabeceraFacturaClienteNOMBRE = 16; + idx_InformeCabeceraFacturaClienteCALLE = 17; + idx_InformeCabeceraFacturaClientePROVINCIA = 18; + idx_InformeCabeceraFacturaClienteCODIGOPOSTAL = 19; + idx_InformeCabeceraFacturaClientePOBLACION = 20; + + { InformeDetallesFacturaCliente fields } + fld_InformeDetallesFacturaClienteCODIGOFACTURA = 'CODIGOFACTURA'; + fld_InformeDetallesFacturaClienteNUMCONCEPTO = 'NUMCONCEPTO'; + fld_InformeDetallesFacturaClienteDESCRIPCION = 'DESCRIPCION'; + fld_InformeDetallesFacturaClienteCANTIDAD = 'CANTIDAD'; + fld_InformeDetallesFacturaClienteIMPORTEUNIDAD = 'IMPORTEUNIDAD'; + fld_InformeDetallesFacturaClienteIMPORTETOTAL = 'IMPORTETOTAL'; + fld_InformeDetallesFacturaClienteTIPO = 'TIPO'; + fld_InformeDetallesFacturaClientePOSICION = 'POSICION'; + + { InformeDetallesFacturaCliente field indexes } + idx_InformeDetallesFacturaClienteCODIGOFACTURA = 0; + idx_InformeDetallesFacturaClienteNUMCONCEPTO = 1; + idx_InformeDetallesFacturaClienteDESCRIPCION = 2; + idx_InformeDetallesFacturaClienteCANTIDAD = 3; + idx_InformeDetallesFacturaClienteIMPORTEUNIDAD = 4; + idx_InformeDetallesFacturaClienteIMPORTETOTAL = 5; + idx_InformeDetallesFacturaClienteTIPO = 6; + idx_InformeDetallesFacturaClientePOSICION = 7; + +type + { IDarReferenciaFactura } + IDarReferenciaFactura = interface(IDAStronglyTypedDataTable) + ['{3780860F-0689-4DB4-87ED-879E5E0974B9}'] + { Property getters and setters } + function GetREFERENCIAValue: String; + procedure SetREFERENCIAValue(const aValue: String); + + + { Properties } + property REFERENCIA: String read GetREFERENCIAValue write SetREFERENCIAValue; + end; + + { TDarReferenciaFacturaDataTableRules } + TDarReferenciaFacturaDataTableRules = class(TDADataTableRules, IDarReferenciaFactura) + private + protected + { Property getters and setters } + function GetREFERENCIAValue: String; virtual; + procedure SetREFERENCIAValue(const aValue: String); virtual; + + { Properties } + property REFERENCIA: String read GetREFERENCIAValue write SetREFERENCIAValue; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + + { IFacturasCliente } + IFacturasCliente = interface(IDAStronglyTypedDataTable) + ['{9AB55416-5EBD-4913-9D16-DFB75478A091}'] + { Property getters and setters } + function GetCODIGOEMPRESAValue: Integer; + procedure SetCODIGOEMPRESAValue(const aValue: Integer); + function GetCODIGOValue: Integer; + procedure SetCODIGOValue(const aValue: Integer); + function GetFECHAALTAValue: DateTime; + procedure SetFECHAALTAValue(const aValue: DateTime); + function GetUSUARIOValue: String; + procedure SetUSUARIOValue(const aValue: String); + function GetFECHAFACTURAValue: DateTime; + procedure SetFECHAFACTURAValue(const aValue: DateTime); + function GetREFERENCIAValue: String; + procedure SetREFERENCIAValue(const aValue: String); + function GetBASEIMPONIBLEValue: Currency; + procedure SetBASEIMPONIBLEValue(const aValue: Currency); + function GetDESCUENTOValue: Float; + procedure SetDESCUENTOValue(const aValue: Float); + function GetIMPORTEDESCUENTOValue: Currency; + procedure SetIMPORTEDESCUENTOValue(const aValue: Currency); + function GetIVAValue: Float; + procedure SetIVAValue(const aValue: Float); + function GetIMPORTEIVAValue: Currency; + procedure SetIMPORTEIVAValue(const aValue: Currency); + function GetIMPORTETOTALValue: Currency; + procedure SetIMPORTETOTALValue(const aValue: Currency); + function GetOBSERVACIONESValue: IROStrings; + procedure SetOBSERVACIONESValue(const aValue: IROStrings); + function GetFORMAPAGOValue: IROStrings; + procedure SetFORMAPAGOValue(const aValue: IROStrings); + function GetCODIGOCONTACTOValue: Integer; + procedure SetCODIGOCONTACTOValue(const aValue: Integer); + function GetNIFCIFValue: String; + procedure SetNIFCIFValue(const aValue: String); + function GetNOMBREValue: String; + procedure SetNOMBREValue(const aValue: String); + function GetCALLEValue: String; + procedure SetCALLEValue(const aValue: String); + function GetPROVINCIAValue: String; + procedure SetPROVINCIAValue(const aValue: String); + function GetCODIGOPOSTALValue: String; + procedure SetCODIGOPOSTALValue(const aValue: String); + function GetPOBLACIONValue: String; + procedure SetPOBLACIONValue(const aValue: String); + function GetCODIGOALBARANValue: Integer; + procedure SetCODIGOALBARANValue(const aValue: Integer); + + + { Properties } + property CODIGOEMPRESA: Integer read GetCODIGOEMPRESAValue write SetCODIGOEMPRESAValue; + property CODIGO: Integer read GetCODIGOValue write SetCODIGOValue; + property FECHAALTA: DateTime read GetFECHAALTAValue write SetFECHAALTAValue; + property USUARIO: String read GetUSUARIOValue write SetUSUARIOValue; + property FECHAFACTURA: DateTime read GetFECHAFACTURAValue write SetFECHAFACTURAValue; + property REFERENCIA: String read GetREFERENCIAValue write SetREFERENCIAValue; + property BASEIMPONIBLE: Currency read GetBASEIMPONIBLEValue write SetBASEIMPONIBLEValue; + property DESCUENTO: Float read GetDESCUENTOValue write SetDESCUENTOValue; + property IMPORTEDESCUENTO: Currency read GetIMPORTEDESCUENTOValue write SetIMPORTEDESCUENTOValue; + property IVA: Float read GetIVAValue write SetIVAValue; + property IMPORTEIVA: Currency read GetIMPORTEIVAValue write SetIMPORTEIVAValue; + property IMPORTETOTAL: Currency read GetIMPORTETOTALValue write SetIMPORTETOTALValue; + property OBSERVACIONES: IROStrings read GetOBSERVACIONESValue write SetOBSERVACIONESValue; + property FORMAPAGO: IROStrings read GetFORMAPAGOValue write SetFORMAPAGOValue; + property CODIGOCONTACTO: Integer read GetCODIGOCONTACTOValue write SetCODIGOCONTACTOValue; + property NIFCIF: String read GetNIFCIFValue write SetNIFCIFValue; + property NOMBRE: String read GetNOMBREValue write SetNOMBREValue; + property CALLE: String read GetCALLEValue write SetCALLEValue; + property PROVINCIA: String read GetPROVINCIAValue write SetPROVINCIAValue; + property CODIGOPOSTAL: String read GetCODIGOPOSTALValue write SetCODIGOPOSTALValue; + property POBLACION: String read GetPOBLACIONValue write SetPOBLACIONValue; + property CODIGOALBARAN: Integer read GetCODIGOALBARANValue write SetCODIGOALBARANValue; + end; + + { TFacturasClienteDataTableRules } + TFacturasClienteDataTableRules = class(TDADataTableRules, IFacturasCliente) + private + protected + { Property getters and setters } + function GetCODIGOEMPRESAValue: Integer; virtual; + procedure SetCODIGOEMPRESAValue(const aValue: Integer); virtual; + function GetCODIGOValue: Integer; virtual; + procedure SetCODIGOValue(const aValue: Integer); virtual; + function GetFECHAALTAValue: DateTime; virtual; + procedure SetFECHAALTAValue(const aValue: DateTime); virtual; + function GetUSUARIOValue: String; virtual; + procedure SetUSUARIOValue(const aValue: String); virtual; + function GetFECHAFACTURAValue: DateTime; virtual; + procedure SetFECHAFACTURAValue(const aValue: DateTime); virtual; + function GetREFERENCIAValue: String; virtual; + procedure SetREFERENCIAValue(const aValue: String); virtual; + function GetBASEIMPONIBLEValue: Currency; virtual; + procedure SetBASEIMPONIBLEValue(const aValue: Currency); virtual; + function GetDESCUENTOValue: Float; virtual; + procedure SetDESCUENTOValue(const aValue: Float); virtual; + function GetIMPORTEDESCUENTOValue: Currency; virtual; + procedure SetIMPORTEDESCUENTOValue(const aValue: Currency); virtual; + function GetIVAValue: Float; virtual; + procedure SetIVAValue(const aValue: Float); virtual; + function GetIMPORTEIVAValue: Currency; virtual; + procedure SetIMPORTEIVAValue(const aValue: Currency); virtual; + function GetIMPORTETOTALValue: Currency; virtual; + procedure SetIMPORTETOTALValue(const aValue: Currency); virtual; + function GetOBSERVACIONESValue: IROStrings; virtual; + procedure SetOBSERVACIONESValue(const aValue: IROStrings); virtual; + function GetFORMAPAGOValue: IROStrings; virtual; + procedure SetFORMAPAGOValue(const aValue: IROStrings); virtual; + function GetCODIGOCONTACTOValue: Integer; virtual; + procedure SetCODIGOCONTACTOValue(const aValue: Integer); virtual; + function GetNIFCIFValue: String; virtual; + procedure SetNIFCIFValue(const aValue: String); virtual; + function GetNOMBREValue: String; virtual; + procedure SetNOMBREValue(const aValue: String); virtual; + function GetCALLEValue: String; virtual; + procedure SetCALLEValue(const aValue: String); virtual; + function GetPROVINCIAValue: String; virtual; + procedure SetPROVINCIAValue(const aValue: String); virtual; + function GetCODIGOPOSTALValue: String; virtual; + procedure SetCODIGOPOSTALValue(const aValue: String); virtual; + function GetPOBLACIONValue: String; virtual; + procedure SetPOBLACIONValue(const aValue: String); virtual; + function GetCODIGOALBARANValue: Integer; virtual; + procedure SetCODIGOALBARANValue(const aValue: Integer); virtual; + + { Properties } + property CODIGOEMPRESA: Integer read GetCODIGOEMPRESAValue write SetCODIGOEMPRESAValue; + property CODIGO: Integer read GetCODIGOValue write SetCODIGOValue; + property FECHAALTA: DateTime read GetFECHAALTAValue write SetFECHAALTAValue; + property USUARIO: String read GetUSUARIOValue write SetUSUARIOValue; + property FECHAFACTURA: DateTime read GetFECHAFACTURAValue write SetFECHAFACTURAValue; + property REFERENCIA: String read GetREFERENCIAValue write SetREFERENCIAValue; + property BASEIMPONIBLE: Currency read GetBASEIMPONIBLEValue write SetBASEIMPONIBLEValue; + property DESCUENTO: Float read GetDESCUENTOValue write SetDESCUENTOValue; + property IMPORTEDESCUENTO: Currency read GetIMPORTEDESCUENTOValue write SetIMPORTEDESCUENTOValue; + property IVA: Float read GetIVAValue write SetIVAValue; + property IMPORTEIVA: Currency read GetIMPORTEIVAValue write SetIMPORTEIVAValue; + property IMPORTETOTAL: Currency read GetIMPORTETOTALValue write SetIMPORTETOTALValue; + property OBSERVACIONES: IROStrings read GetOBSERVACIONESValue write SetOBSERVACIONESValue; + property FORMAPAGO: IROStrings read GetFORMAPAGOValue write SetFORMAPAGOValue; + property CODIGOCONTACTO: Integer read GetCODIGOCONTACTOValue write SetCODIGOCONTACTOValue; + property NIFCIF: String read GetNIFCIFValue write SetNIFCIFValue; + property NOMBRE: String read GetNOMBREValue write SetNOMBREValue; + property CALLE: String read GetCALLEValue write SetCALLEValue; + property PROVINCIA: String read GetPROVINCIAValue write SetPROVINCIAValue; + property CODIGOPOSTAL: String read GetCODIGOPOSTALValue write SetCODIGOPOSTALValue; + property POBLACION: String read GetPOBLACIONValue write SetPOBLACIONValue; + property CODIGOALBARAN: Integer read GetCODIGOALBARANValue write SetCODIGOALBARANValue; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + + { IDetallesFacturasCliente } + IDetallesFacturasCliente = interface(IDAStronglyTypedDataTable) + ['{BF49E552-D331-4DD7-A1E9-6C246BE51E99}'] + { Property getters and setters } + function GetCODIGOFACTURAValue: Integer; + procedure SetCODIGOFACTURAValue(const aValue: Integer); + function GetNUMCONCEPTOValue: Integer; + procedure SetNUMCONCEPTOValue(const aValue: Integer); + function GetPOSICIONValue: Integer; + procedure SetPOSICIONValue(const aValue: Integer); + function GetTIPOValue: String; + procedure SetTIPOValue(const aValue: String); + function GetDESCRIPCIONValue: String; + procedure SetDESCRIPCIONValue(const aValue: String); + function GetCANTIDADValue: Integer; + procedure SetCANTIDADValue(const aValue: Integer); + function GetIMPORTEUNIDADValue: Currency; + procedure SetIMPORTEUNIDADValue(const aValue: Currency); + function GetIMPORTETOTALValue: Currency; + procedure SetIMPORTETOTALValue(const aValue: Currency); + function GetVISIBLEValue: String; + procedure SetVISIBLEValue(const aValue: String); + + + { Properties } + property CODIGOFACTURA: Integer read GetCODIGOFACTURAValue write SetCODIGOFACTURAValue; + property NUMCONCEPTO: Integer read GetNUMCONCEPTOValue write SetNUMCONCEPTOValue; + property POSICION: Integer read GetPOSICIONValue write SetPOSICIONValue; + property TIPO: String read GetTIPOValue write SetTIPOValue; + property DESCRIPCION: String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + property CANTIDAD: Integer read GetCANTIDADValue write SetCANTIDADValue; + property IMPORTEUNIDAD: Currency read GetIMPORTEUNIDADValue write SetIMPORTEUNIDADValue; + property IMPORTETOTAL: Currency read GetIMPORTETOTALValue write SetIMPORTETOTALValue; + property VISIBLE: String read GetVISIBLEValue write SetVISIBLEValue; + end; + + { TDetallesFacturasClienteDataTableRules } + TDetallesFacturasClienteDataTableRules = class(TDADataTableRules, IDetallesFacturasCliente) + private + protected + { Property getters and setters } + function GetCODIGOFACTURAValue: Integer; virtual; + procedure SetCODIGOFACTURAValue(const aValue: Integer); virtual; + function GetNUMCONCEPTOValue: Integer; virtual; + procedure SetNUMCONCEPTOValue(const aValue: Integer); virtual; + function GetPOSICIONValue: Integer; virtual; + procedure SetPOSICIONValue(const aValue: Integer); virtual; + function GetTIPOValue: String; virtual; + procedure SetTIPOValue(const aValue: String); virtual; + function GetDESCRIPCIONValue: String; virtual; + procedure SetDESCRIPCIONValue(const aValue: String); virtual; + function GetCANTIDADValue: Integer; virtual; + procedure SetCANTIDADValue(const aValue: Integer); virtual; + function GetIMPORTEUNIDADValue: Currency; virtual; + procedure SetIMPORTEUNIDADValue(const aValue: Currency); virtual; + function GetIMPORTETOTALValue: Currency; virtual; + procedure SetIMPORTETOTALValue(const aValue: Currency); virtual; + function GetVISIBLEValue: String; virtual; + procedure SetVISIBLEValue(const aValue: String); virtual; + + { Properties } + property CODIGOFACTURA: Integer read GetCODIGOFACTURAValue write SetCODIGOFACTURAValue; + property NUMCONCEPTO: Integer read GetNUMCONCEPTOValue write SetNUMCONCEPTOValue; + property POSICION: Integer read GetPOSICIONValue write SetPOSICIONValue; + property TIPO: String read GetTIPOValue write SetTIPOValue; + property DESCRIPCION: String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + property CANTIDAD: Integer read GetCANTIDADValue write SetCANTIDADValue; + property IMPORTEUNIDAD: Currency read GetIMPORTEUNIDADValue write SetIMPORTEUNIDADValue; + property IMPORTETOTAL: Currency read GetIMPORTETOTALValue write SetIMPORTETOTALValue; + property VISIBLE: String read GetVISIBLEValue write SetVISIBLEValue; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + + { IInformeCabeceraFacturaCliente } + IInformeCabeceraFacturaCliente = interface(IDAStronglyTypedDataTable) + ['{3C1DD3E9-BFEC-479A-91BE-9703C511AA3B}'] + { Property getters and setters } + function GetCODIGOEMPRESAValue: Integer; + procedure SetCODIGOEMPRESAValue(const aValue: Integer); + function GetCODIGOValue: Integer; + procedure SetCODIGOValue(const aValue: Integer); + function GetFECHAALTAValue: DateTime; + procedure SetFECHAALTAValue(const aValue: DateTime); + function GetUSUARIOValue: String; + procedure SetUSUARIOValue(const aValue: String); + function GetFECHAFACTURAValue: DateTime; + procedure SetFECHAFACTURAValue(const aValue: DateTime); + function GetREFERENCIAValue: String; + procedure SetREFERENCIAValue(const aValue: String); + function GetCODIGOCONTACTOValue: Integer; + procedure SetCODIGOCONTACTOValue(const aValue: Integer); + function GetBASEIMPONIBLEValue: Currency; + procedure SetBASEIMPONIBLEValue(const aValue: Currency); + function GetDESCUENTOValue: Float; + procedure SetDESCUENTOValue(const aValue: Float); + function GetIMPORTEDESCUENTOValue: Currency; + procedure SetIMPORTEDESCUENTOValue(const aValue: Currency); + function GetIVAValue: Float; + procedure SetIVAValue(const aValue: Float); + function GetIMPORTEIVAValue: Currency; + procedure SetIMPORTEIVAValue(const aValue: Currency); + function GetIMPORTETOTALValue: Currency; + procedure SetIMPORTETOTALValue(const aValue: Currency); + function GetOBSERVACIONESValue: IROStrings; + procedure SetOBSERVACIONESValue(const aValue: IROStrings); + function GetFORMAPAGOValue: IROStrings; + procedure SetFORMAPAGOValue(const aValue: IROStrings); + function GetNIFCIFValue: String; + procedure SetNIFCIFValue(const aValue: String); + function GetNOMBREValue: String; + procedure SetNOMBREValue(const aValue: String); + function GetCALLEValue: String; + procedure SetCALLEValue(const aValue: String); + function GetPROVINCIAValue: String; + procedure SetPROVINCIAValue(const aValue: String); + function GetCODIGOPOSTALValue: String; + procedure SetCODIGOPOSTALValue(const aValue: String); + function GetPOBLACIONValue: String; + procedure SetPOBLACIONValue(const aValue: String); + + + { Properties } + property CODIGOEMPRESA: Integer read GetCODIGOEMPRESAValue write SetCODIGOEMPRESAValue; + property CODIGO: Integer read GetCODIGOValue write SetCODIGOValue; + property FECHAALTA: DateTime read GetFECHAALTAValue write SetFECHAALTAValue; + property USUARIO: String read GetUSUARIOValue write SetUSUARIOValue; + property FECHAFACTURA: DateTime read GetFECHAFACTURAValue write SetFECHAFACTURAValue; + property REFERENCIA: String read GetREFERENCIAValue write SetREFERENCIAValue; + property CODIGOCONTACTO: Integer read GetCODIGOCONTACTOValue write SetCODIGOCONTACTOValue; + property BASEIMPONIBLE: Currency read GetBASEIMPONIBLEValue write SetBASEIMPONIBLEValue; + property DESCUENTO: Float read GetDESCUENTOValue write SetDESCUENTOValue; + property IMPORTEDESCUENTO: Currency read GetIMPORTEDESCUENTOValue write SetIMPORTEDESCUENTOValue; + property IVA: Float read GetIVAValue write SetIVAValue; + property IMPORTEIVA: Currency read GetIMPORTEIVAValue write SetIMPORTEIVAValue; + property IMPORTETOTAL: Currency read GetIMPORTETOTALValue write SetIMPORTETOTALValue; + property OBSERVACIONES: IROStrings read GetOBSERVACIONESValue write SetOBSERVACIONESValue; + property FORMAPAGO: IROStrings read GetFORMAPAGOValue write SetFORMAPAGOValue; + property NIFCIF: String read GetNIFCIFValue write SetNIFCIFValue; + property NOMBRE: String read GetNOMBREValue write SetNOMBREValue; + property CALLE: String read GetCALLEValue write SetCALLEValue; + property PROVINCIA: String read GetPROVINCIAValue write SetPROVINCIAValue; + property CODIGOPOSTAL: String read GetCODIGOPOSTALValue write SetCODIGOPOSTALValue; + property POBLACION: String read GetPOBLACIONValue write SetPOBLACIONValue; + end; + + { TInformeCabeceraFacturaClienteDataTableRules } + TInformeCabeceraFacturaClienteDataTableRules = class(TDADataTableRules, IInformeCabeceraFacturaCliente) + private + protected + { Property getters and setters } + function GetCODIGOEMPRESAValue: Integer; virtual; + procedure SetCODIGOEMPRESAValue(const aValue: Integer); virtual; + function GetCODIGOValue: Integer; virtual; + procedure SetCODIGOValue(const aValue: Integer); virtual; + function GetFECHAALTAValue: DateTime; virtual; + procedure SetFECHAALTAValue(const aValue: DateTime); virtual; + function GetUSUARIOValue: String; virtual; + procedure SetUSUARIOValue(const aValue: String); virtual; + function GetFECHAFACTURAValue: DateTime; virtual; + procedure SetFECHAFACTURAValue(const aValue: DateTime); virtual; + function GetREFERENCIAValue: String; virtual; + procedure SetREFERENCIAValue(const aValue: String); virtual; + function GetCODIGOCONTACTOValue: Integer; virtual; + procedure SetCODIGOCONTACTOValue(const aValue: Integer); virtual; + function GetBASEIMPONIBLEValue: Currency; virtual; + procedure SetBASEIMPONIBLEValue(const aValue: Currency); virtual; + function GetDESCUENTOValue: Float; virtual; + procedure SetDESCUENTOValue(const aValue: Float); virtual; + function GetIMPORTEDESCUENTOValue: Currency; virtual; + procedure SetIMPORTEDESCUENTOValue(const aValue: Currency); virtual; + function GetIVAValue: Float; virtual; + procedure SetIVAValue(const aValue: Float); virtual; + function GetIMPORTEIVAValue: Currency; virtual; + procedure SetIMPORTEIVAValue(const aValue: Currency); virtual; + function GetIMPORTETOTALValue: Currency; virtual; + procedure SetIMPORTETOTALValue(const aValue: Currency); virtual; + function GetOBSERVACIONESValue: IROStrings; virtual; + procedure SetOBSERVACIONESValue(const aValue: IROStrings); virtual; + function GetFORMAPAGOValue: IROStrings; virtual; + procedure SetFORMAPAGOValue(const aValue: IROStrings); virtual; + function GetNIFCIFValue: String; virtual; + procedure SetNIFCIFValue(const aValue: String); virtual; + function GetNOMBREValue: String; virtual; + procedure SetNOMBREValue(const aValue: String); virtual; + function GetCALLEValue: String; virtual; + procedure SetCALLEValue(const aValue: String); virtual; + function GetPROVINCIAValue: String; virtual; + procedure SetPROVINCIAValue(const aValue: String); virtual; + function GetCODIGOPOSTALValue: String; virtual; + procedure SetCODIGOPOSTALValue(const aValue: String); virtual; + function GetPOBLACIONValue: String; virtual; + procedure SetPOBLACIONValue(const aValue: String); virtual; + + { Properties } + property CODIGOEMPRESA: Integer read GetCODIGOEMPRESAValue write SetCODIGOEMPRESAValue; + property CODIGO: Integer read GetCODIGOValue write SetCODIGOValue; + property FECHAALTA: DateTime read GetFECHAALTAValue write SetFECHAALTAValue; + property USUARIO: String read GetUSUARIOValue write SetUSUARIOValue; + property FECHAFACTURA: DateTime read GetFECHAFACTURAValue write SetFECHAFACTURAValue; + property REFERENCIA: String read GetREFERENCIAValue write SetREFERENCIAValue; + property CODIGOCONTACTO: Integer read GetCODIGOCONTACTOValue write SetCODIGOCONTACTOValue; + property BASEIMPONIBLE: Currency read GetBASEIMPONIBLEValue write SetBASEIMPONIBLEValue; + property DESCUENTO: Float read GetDESCUENTOValue write SetDESCUENTOValue; + property IMPORTEDESCUENTO: Currency read GetIMPORTEDESCUENTOValue write SetIMPORTEDESCUENTOValue; + property IVA: Float read GetIVAValue write SetIVAValue; + property IMPORTEIVA: Currency read GetIMPORTEIVAValue write SetIMPORTEIVAValue; + property IMPORTETOTAL: Currency read GetIMPORTETOTALValue write SetIMPORTETOTALValue; + property OBSERVACIONES: IROStrings read GetOBSERVACIONESValue write SetOBSERVACIONESValue; + property FORMAPAGO: IROStrings read GetFORMAPAGOValue write SetFORMAPAGOValue; + property NIFCIF: String read GetNIFCIFValue write SetNIFCIFValue; + property NOMBRE: String read GetNOMBREValue write SetNOMBREValue; + property CALLE: String read GetCALLEValue write SetCALLEValue; + property PROVINCIA: String read GetPROVINCIAValue write SetPROVINCIAValue; + property CODIGOPOSTAL: String read GetCODIGOPOSTALValue write SetCODIGOPOSTALValue; + property POBLACION: String read GetPOBLACIONValue write SetPOBLACIONValue; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + + { IInformeDetallesFacturaCliente } + IInformeDetallesFacturaCliente = interface(IDAStronglyTypedDataTable) + ['{8A9BE448-C659-4CA5-8C7C-B916FBF7E9C1}'] + { Property getters and setters } + function GetCODIGOFACTURAValue: Integer; + procedure SetCODIGOFACTURAValue(const aValue: Integer); + function GetNUMCONCEPTOValue: Integer; + procedure SetNUMCONCEPTOValue(const aValue: Integer); + function GetDESCRIPCIONValue: String; + procedure SetDESCRIPCIONValue(const aValue: String); + function GetCANTIDADValue: Integer; + procedure SetCANTIDADValue(const aValue: Integer); + function GetIMPORTEUNIDADValue: Currency; + procedure SetIMPORTEUNIDADValue(const aValue: Currency); + function GetIMPORTETOTALValue: Currency; + procedure SetIMPORTETOTALValue(const aValue: Currency); + function GetTIPOValue: String; + procedure SetTIPOValue(const aValue: String); + function GetPOSICIONValue: Integer; + procedure SetPOSICIONValue(const aValue: Integer); + + + { Properties } + property CODIGOFACTURA: Integer read GetCODIGOFACTURAValue write SetCODIGOFACTURAValue; + property NUMCONCEPTO: Integer read GetNUMCONCEPTOValue write SetNUMCONCEPTOValue; + property DESCRIPCION: String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + property CANTIDAD: Integer read GetCANTIDADValue write SetCANTIDADValue; + property IMPORTEUNIDAD: Currency read GetIMPORTEUNIDADValue write SetIMPORTEUNIDADValue; + property IMPORTETOTAL: Currency read GetIMPORTETOTALValue write SetIMPORTETOTALValue; + property TIPO: String read GetTIPOValue write SetTIPOValue; + property POSICION: Integer read GetPOSICIONValue write SetPOSICIONValue; + end; + + { TInformeDetallesFacturaClienteDataTableRules } + TInformeDetallesFacturaClienteDataTableRules = class(TDADataTableRules, IInformeDetallesFacturaCliente) + private + protected + { Property getters and setters } + function GetCODIGOFACTURAValue: Integer; virtual; + procedure SetCODIGOFACTURAValue(const aValue: Integer); virtual; + function GetNUMCONCEPTOValue: Integer; virtual; + procedure SetNUMCONCEPTOValue(const aValue: Integer); virtual; + function GetDESCRIPCIONValue: String; virtual; + procedure SetDESCRIPCIONValue(const aValue: String); virtual; + function GetCANTIDADValue: Integer; virtual; + procedure SetCANTIDADValue(const aValue: Integer); virtual; + function GetIMPORTEUNIDADValue: Currency; virtual; + procedure SetIMPORTEUNIDADValue(const aValue: Currency); virtual; + function GetIMPORTETOTALValue: Currency; virtual; + procedure SetIMPORTETOTALValue(const aValue: Currency); virtual; + function GetTIPOValue: String; virtual; + procedure SetTIPOValue(const aValue: String); virtual; + function GetPOSICIONValue: Integer; virtual; + procedure SetPOSICIONValue(const aValue: Integer); virtual; + + { Properties } + property CODIGOFACTURA: Integer read GetCODIGOFACTURAValue write SetCODIGOFACTURAValue; + property NUMCONCEPTO: Integer read GetNUMCONCEPTOValue write SetNUMCONCEPTOValue; + property DESCRIPCION: String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + property CANTIDAD: Integer read GetCANTIDADValue write SetCANTIDADValue; + property IMPORTEUNIDAD: Currency read GetIMPORTEUNIDADValue write SetIMPORTEUNIDADValue; + property IMPORTETOTAL: Currency read GetIMPORTETOTALValue write SetIMPORTETOTALValue; + property TIPO: String read GetTIPOValue write SetTIPOValue; + property POSICION: Integer read GetPOSICIONValue write SetPOSICIONValue; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + +implementation + +uses Variants; + +{ TDarReferenciaFacturaDataTableRules } +constructor TDarReferenciaFacturaDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TDarReferenciaFacturaDataTableRules.Destroy; +begin + inherited; +end; + +function TDarReferenciaFacturaDataTableRules.GetREFERENCIAValue: String; +begin + result := DataTable.Fields[idx_DarReferenciaFacturaREFERENCIA].AsString; +end; + +procedure TDarReferenciaFacturaDataTableRules.SetREFERENCIAValue(const aValue: String); +begin + DataTable.Fields[idx_DarReferenciaFacturaREFERENCIA].AsString := aValue; +end; + + +{ TFacturasClienteDataTableRules } +constructor TFacturasClienteDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TFacturasClienteDataTableRules.Destroy; +begin + inherited; +end; + +function TFacturasClienteDataTableRules.GetCODIGOEMPRESAValue: Integer; +begin + result := DataTable.Fields[idx_FacturasClienteCODIGOEMPRESA].AsInteger; +end; + +procedure TFacturasClienteDataTableRules.SetCODIGOEMPRESAValue(const aValue: Integer); +begin + DataTable.Fields[idx_FacturasClienteCODIGOEMPRESA].AsInteger := aValue; +end; + +function TFacturasClienteDataTableRules.GetCODIGOValue: Integer; +begin + result := DataTable.Fields[idx_FacturasClienteCODIGO].AsInteger; +end; + +procedure TFacturasClienteDataTableRules.SetCODIGOValue(const aValue: Integer); +begin + DataTable.Fields[idx_FacturasClienteCODIGO].AsInteger := aValue; +end; + +function TFacturasClienteDataTableRules.GetFECHAALTAValue: DateTime; +begin + result := DataTable.Fields[idx_FacturasClienteFECHAALTA].AsDateTime; +end; + +procedure TFacturasClienteDataTableRules.SetFECHAALTAValue(const aValue: DateTime); +begin + DataTable.Fields[idx_FacturasClienteFECHAALTA].AsDateTime := aValue; +end; + +function TFacturasClienteDataTableRules.GetUSUARIOValue: String; +begin + result := DataTable.Fields[idx_FacturasClienteUSUARIO].AsString; +end; + +procedure TFacturasClienteDataTableRules.SetUSUARIOValue(const aValue: String); +begin + DataTable.Fields[idx_FacturasClienteUSUARIO].AsString := aValue; +end; + +function TFacturasClienteDataTableRules.GetFECHAFACTURAValue: DateTime; +begin + result := DataTable.Fields[idx_FacturasClienteFECHAFACTURA].AsDateTime; +end; + +procedure TFacturasClienteDataTableRules.SetFECHAFACTURAValue(const aValue: DateTime); +begin + DataTable.Fields[idx_FacturasClienteFECHAFACTURA].AsDateTime := aValue; +end; + +function TFacturasClienteDataTableRules.GetREFERENCIAValue: String; +begin + result := DataTable.Fields[idx_FacturasClienteREFERENCIA].AsString; +end; + +procedure TFacturasClienteDataTableRules.SetREFERENCIAValue(const aValue: String); +begin + DataTable.Fields[idx_FacturasClienteREFERENCIA].AsString := aValue; +end; + +function TFacturasClienteDataTableRules.GetBASEIMPONIBLEValue: Currency; +begin + result := DataTable.Fields[idx_FacturasClienteBASEIMPONIBLE].AsCurrency; +end; + +procedure TFacturasClienteDataTableRules.SetBASEIMPONIBLEValue(const aValue: Currency); +begin + DataTable.Fields[idx_FacturasClienteBASEIMPONIBLE].AsCurrency := aValue; +end; + +function TFacturasClienteDataTableRules.GetDESCUENTOValue: Float; +begin + result := DataTable.Fields[idx_FacturasClienteDESCUENTO].AsFloat; +end; + +procedure TFacturasClienteDataTableRules.SetDESCUENTOValue(const aValue: Float); +begin + DataTable.Fields[idx_FacturasClienteDESCUENTO].AsFloat := aValue; +end; + +function TFacturasClienteDataTableRules.GetIMPORTEDESCUENTOValue: Currency; +begin + result := DataTable.Fields[idx_FacturasClienteIMPORTEDESCUENTO].AsCurrency; +end; + +procedure TFacturasClienteDataTableRules.SetIMPORTEDESCUENTOValue(const aValue: Currency); +begin + DataTable.Fields[idx_FacturasClienteIMPORTEDESCUENTO].AsCurrency := aValue; +end; + +function TFacturasClienteDataTableRules.GetIVAValue: Float; +begin + result := DataTable.Fields[idx_FacturasClienteIVA].AsFloat; +end; + +procedure TFacturasClienteDataTableRules.SetIVAValue(const aValue: Float); +begin + DataTable.Fields[idx_FacturasClienteIVA].AsFloat := aValue; +end; + +function TFacturasClienteDataTableRules.GetIMPORTEIVAValue: Currency; +begin + result := DataTable.Fields[idx_FacturasClienteIMPORTEIVA].AsCurrency; +end; + +procedure TFacturasClienteDataTableRules.SetIMPORTEIVAValue(const aValue: Currency); +begin + DataTable.Fields[idx_FacturasClienteIMPORTEIVA].AsCurrency := aValue; +end; + +function TFacturasClienteDataTableRules.GetIMPORTETOTALValue: Currency; +begin + result := DataTable.Fields[idx_FacturasClienteIMPORTETOTAL].AsCurrency; +end; + +procedure TFacturasClienteDataTableRules.SetIMPORTETOTALValue(const aValue: Currency); +begin + DataTable.Fields[idx_FacturasClienteIMPORTETOTAL].AsCurrency := aValue; +end; + +function TFacturasClienteDataTableRules.GetOBSERVACIONESValue: IROStrings; +begin + result := NewROStrings(); + result.Text := DataTable.Fields[idx_FacturasClienteOBSERVACIONES].AsString; +end; + +procedure TFacturasClienteDataTableRules.SetOBSERVACIONESValue(const aValue: IROStrings); +begin + DataTable.Fields[idx_FacturasClienteOBSERVACIONES].AsString := aValue.Text; +end; + +function TFacturasClienteDataTableRules.GetFORMAPAGOValue: IROStrings; +begin + result := NewROStrings(); + result.Text := DataTable.Fields[idx_FacturasClienteFORMAPAGO].AsString; +end; + +procedure TFacturasClienteDataTableRules.SetFORMAPAGOValue(const aValue: IROStrings); +begin + DataTable.Fields[idx_FacturasClienteFORMAPAGO].AsString := aValue.Text; +end; + +function TFacturasClienteDataTableRules.GetCODIGOCONTACTOValue: Integer; +begin + result := DataTable.Fields[idx_FacturasClienteCODIGOCONTACTO].AsInteger; +end; + +procedure TFacturasClienteDataTableRules.SetCODIGOCONTACTOValue(const aValue: Integer); +begin + DataTable.Fields[idx_FacturasClienteCODIGOCONTACTO].AsInteger := aValue; +end; + +function TFacturasClienteDataTableRules.GetNIFCIFValue: String; +begin + result := DataTable.Fields[idx_FacturasClienteNIFCIF].AsString; +end; + +procedure TFacturasClienteDataTableRules.SetNIFCIFValue(const aValue: String); +begin + DataTable.Fields[idx_FacturasClienteNIFCIF].AsString := aValue; +end; + +function TFacturasClienteDataTableRules.GetNOMBREValue: String; +begin + result := DataTable.Fields[idx_FacturasClienteNOMBRE].AsString; +end; + +procedure TFacturasClienteDataTableRules.SetNOMBREValue(const aValue: String); +begin + DataTable.Fields[idx_FacturasClienteNOMBRE].AsString := aValue; +end; + +function TFacturasClienteDataTableRules.GetCALLEValue: String; +begin + result := DataTable.Fields[idx_FacturasClienteCALLE].AsString; +end; + +procedure TFacturasClienteDataTableRules.SetCALLEValue(const aValue: String); +begin + DataTable.Fields[idx_FacturasClienteCALLE].AsString := aValue; +end; + +function TFacturasClienteDataTableRules.GetPROVINCIAValue: String; +begin + result := DataTable.Fields[idx_FacturasClientePROVINCIA].AsString; +end; + +procedure TFacturasClienteDataTableRules.SetPROVINCIAValue(const aValue: String); +begin + DataTable.Fields[idx_FacturasClientePROVINCIA].AsString := aValue; +end; + +function TFacturasClienteDataTableRules.GetCODIGOPOSTALValue: String; +begin + result := DataTable.Fields[idx_FacturasClienteCODIGOPOSTAL].AsString; +end; + +procedure TFacturasClienteDataTableRules.SetCODIGOPOSTALValue(const aValue: String); +begin + DataTable.Fields[idx_FacturasClienteCODIGOPOSTAL].AsString := aValue; +end; + +function TFacturasClienteDataTableRules.GetPOBLACIONValue: String; +begin + result := DataTable.Fields[idx_FacturasClientePOBLACION].AsString; +end; + +procedure TFacturasClienteDataTableRules.SetPOBLACIONValue(const aValue: String); +begin + DataTable.Fields[idx_FacturasClientePOBLACION].AsString := aValue; +end; + +function TFacturasClienteDataTableRules.GetCODIGOALBARANValue: Integer; +begin + result := DataTable.Fields[idx_FacturasClienteCODIGOALBARAN].AsInteger; +end; + +procedure TFacturasClienteDataTableRules.SetCODIGOALBARANValue(const aValue: Integer); +begin + DataTable.Fields[idx_FacturasClienteCODIGOALBARAN].AsInteger := aValue; +end; + + +{ TDetallesFacturasClienteDataTableRules } +constructor TDetallesFacturasClienteDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TDetallesFacturasClienteDataTableRules.Destroy; +begin + inherited; +end; + +function TDetallesFacturasClienteDataTableRules.GetCODIGOFACTURAValue: Integer; +begin + result := DataTable.Fields[idx_DetallesFacturasClienteCODIGOFACTURA].AsInteger; +end; + +procedure TDetallesFacturasClienteDataTableRules.SetCODIGOFACTURAValue(const aValue: Integer); +begin + DataTable.Fields[idx_DetallesFacturasClienteCODIGOFACTURA].AsInteger := aValue; +end; + +function TDetallesFacturasClienteDataTableRules.GetNUMCONCEPTOValue: Integer; +begin + result := DataTable.Fields[idx_DetallesFacturasClienteNUMCONCEPTO].AsInteger; +end; + +procedure TDetallesFacturasClienteDataTableRules.SetNUMCONCEPTOValue(const aValue: Integer); +begin + DataTable.Fields[idx_DetallesFacturasClienteNUMCONCEPTO].AsInteger := aValue; +end; + +function TDetallesFacturasClienteDataTableRules.GetPOSICIONValue: Integer; +begin + result := DataTable.Fields[idx_DetallesFacturasClientePOSICION].AsInteger; +end; + +procedure TDetallesFacturasClienteDataTableRules.SetPOSICIONValue(const aValue: Integer); +begin + DataTable.Fields[idx_DetallesFacturasClientePOSICION].AsInteger := aValue; +end; + +function TDetallesFacturasClienteDataTableRules.GetTIPOValue: String; +begin + result := DataTable.Fields[idx_DetallesFacturasClienteTIPO].AsString; +end; + +procedure TDetallesFacturasClienteDataTableRules.SetTIPOValue(const aValue: String); +begin + DataTable.Fields[idx_DetallesFacturasClienteTIPO].AsString := aValue; +end; + +function TDetallesFacturasClienteDataTableRules.GetDESCRIPCIONValue: String; +begin + result := DataTable.Fields[idx_DetallesFacturasClienteDESCRIPCION].AsString; +end; + +procedure TDetallesFacturasClienteDataTableRules.SetDESCRIPCIONValue(const aValue: String); +begin + DataTable.Fields[idx_DetallesFacturasClienteDESCRIPCION].AsString := aValue; +end; + +function TDetallesFacturasClienteDataTableRules.GetCANTIDADValue: Integer; +begin + result := DataTable.Fields[idx_DetallesFacturasClienteCANTIDAD].AsInteger; +end; + +procedure TDetallesFacturasClienteDataTableRules.SetCANTIDADValue(const aValue: Integer); +begin + DataTable.Fields[idx_DetallesFacturasClienteCANTIDAD].AsInteger := aValue; +end; + +function TDetallesFacturasClienteDataTableRules.GetIMPORTEUNIDADValue: Currency; +begin + result := DataTable.Fields[idx_DetallesFacturasClienteIMPORTEUNIDAD].AsCurrency; +end; + +procedure TDetallesFacturasClienteDataTableRules.SetIMPORTEUNIDADValue(const aValue: Currency); +begin + DataTable.Fields[idx_DetallesFacturasClienteIMPORTEUNIDAD].AsCurrency := aValue; +end; + +function TDetallesFacturasClienteDataTableRules.GetIMPORTETOTALValue: Currency; +begin + result := DataTable.Fields[idx_DetallesFacturasClienteIMPORTETOTAL].AsCurrency; +end; + +procedure TDetallesFacturasClienteDataTableRules.SetIMPORTETOTALValue(const aValue: Currency); +begin + DataTable.Fields[idx_DetallesFacturasClienteIMPORTETOTAL].AsCurrency := aValue; +end; + +function TDetallesFacturasClienteDataTableRules.GetVISIBLEValue: String; +begin + result := DataTable.Fields[idx_DetallesFacturasClienteVISIBLE].AsString; +end; + +procedure TDetallesFacturasClienteDataTableRules.SetVISIBLEValue(const aValue: String); +begin + DataTable.Fields[idx_DetallesFacturasClienteVISIBLE].AsString := aValue; +end; + + +{ TInformeCabeceraFacturaClienteDataTableRules } +constructor TInformeCabeceraFacturaClienteDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TInformeCabeceraFacturaClienteDataTableRules.Destroy; +begin + inherited; +end; + +function TInformeCabeceraFacturaClienteDataTableRules.GetCODIGOEMPRESAValue: Integer; +begin + result := DataTable.Fields[idx_InformeCabeceraFacturaClienteCODIGOEMPRESA].AsInteger; +end; + +procedure TInformeCabeceraFacturaClienteDataTableRules.SetCODIGOEMPRESAValue(const aValue: Integer); +begin + DataTable.Fields[idx_InformeCabeceraFacturaClienteCODIGOEMPRESA].AsInteger := aValue; +end; + +function TInformeCabeceraFacturaClienteDataTableRules.GetCODIGOValue: Integer; +begin + result := DataTable.Fields[idx_InformeCabeceraFacturaClienteCODIGO].AsInteger; +end; + +procedure TInformeCabeceraFacturaClienteDataTableRules.SetCODIGOValue(const aValue: Integer); +begin + DataTable.Fields[idx_InformeCabeceraFacturaClienteCODIGO].AsInteger := aValue; +end; + +function TInformeCabeceraFacturaClienteDataTableRules.GetFECHAALTAValue: DateTime; +begin + result := DataTable.Fields[idx_InformeCabeceraFacturaClienteFECHAALTA].AsDateTime; +end; + +procedure TInformeCabeceraFacturaClienteDataTableRules.SetFECHAALTAValue(const aValue: DateTime); +begin + DataTable.Fields[idx_InformeCabeceraFacturaClienteFECHAALTA].AsDateTime := aValue; +end; + +function TInformeCabeceraFacturaClienteDataTableRules.GetUSUARIOValue: String; +begin + result := DataTable.Fields[idx_InformeCabeceraFacturaClienteUSUARIO].AsString; +end; + +procedure TInformeCabeceraFacturaClienteDataTableRules.SetUSUARIOValue(const aValue: String); +begin + DataTable.Fields[idx_InformeCabeceraFacturaClienteUSUARIO].AsString := aValue; +end; + +function TInformeCabeceraFacturaClienteDataTableRules.GetFECHAFACTURAValue: DateTime; +begin + result := DataTable.Fields[idx_InformeCabeceraFacturaClienteFECHAFACTURA].AsDateTime; +end; + +procedure TInformeCabeceraFacturaClienteDataTableRules.SetFECHAFACTURAValue(const aValue: DateTime); +begin + DataTable.Fields[idx_InformeCabeceraFacturaClienteFECHAFACTURA].AsDateTime := aValue; +end; + +function TInformeCabeceraFacturaClienteDataTableRules.GetREFERENCIAValue: String; +begin + result := DataTable.Fields[idx_InformeCabeceraFacturaClienteREFERENCIA].AsString; +end; + +procedure TInformeCabeceraFacturaClienteDataTableRules.SetREFERENCIAValue(const aValue: String); +begin + DataTable.Fields[idx_InformeCabeceraFacturaClienteREFERENCIA].AsString := aValue; +end; + +function TInformeCabeceraFacturaClienteDataTableRules.GetCODIGOCONTACTOValue: Integer; +begin + result := DataTable.Fields[idx_InformeCabeceraFacturaClienteCODIGOCONTACTO].AsInteger; +end; + +procedure TInformeCabeceraFacturaClienteDataTableRules.SetCODIGOCONTACTOValue(const aValue: Integer); +begin + DataTable.Fields[idx_InformeCabeceraFacturaClienteCODIGOCONTACTO].AsInteger := aValue; +end; + +function TInformeCabeceraFacturaClienteDataTableRules.GetBASEIMPONIBLEValue: Currency; +begin + result := DataTable.Fields[idx_InformeCabeceraFacturaClienteBASEIMPONIBLE].AsCurrency; +end; + +procedure TInformeCabeceraFacturaClienteDataTableRules.SetBASEIMPONIBLEValue(const aValue: Currency); +begin + DataTable.Fields[idx_InformeCabeceraFacturaClienteBASEIMPONIBLE].AsCurrency := aValue; +end; + +function TInformeCabeceraFacturaClienteDataTableRules.GetDESCUENTOValue: Float; +begin + result := DataTable.Fields[idx_InformeCabeceraFacturaClienteDESCUENTO].AsFloat; +end; + +procedure TInformeCabeceraFacturaClienteDataTableRules.SetDESCUENTOValue(const aValue: Float); +begin + DataTable.Fields[idx_InformeCabeceraFacturaClienteDESCUENTO].AsFloat := aValue; +end; + +function TInformeCabeceraFacturaClienteDataTableRules.GetIMPORTEDESCUENTOValue: Currency; +begin + result := DataTable.Fields[idx_InformeCabeceraFacturaClienteIMPORTEDESCUENTO].AsCurrency; +end; + +procedure TInformeCabeceraFacturaClienteDataTableRules.SetIMPORTEDESCUENTOValue(const aValue: Currency); +begin + DataTable.Fields[idx_InformeCabeceraFacturaClienteIMPORTEDESCUENTO].AsCurrency := aValue; +end; + +function TInformeCabeceraFacturaClienteDataTableRules.GetIVAValue: Float; +begin + result := DataTable.Fields[idx_InformeCabeceraFacturaClienteIVA].AsFloat; +end; + +procedure TInformeCabeceraFacturaClienteDataTableRules.SetIVAValue(const aValue: Float); +begin + DataTable.Fields[idx_InformeCabeceraFacturaClienteIVA].AsFloat := aValue; +end; + +function TInformeCabeceraFacturaClienteDataTableRules.GetIMPORTEIVAValue: Currency; +begin + result := DataTable.Fields[idx_InformeCabeceraFacturaClienteIMPORTEIVA].AsCurrency; +end; + +procedure TInformeCabeceraFacturaClienteDataTableRules.SetIMPORTEIVAValue(const aValue: Currency); +begin + DataTable.Fields[idx_InformeCabeceraFacturaClienteIMPORTEIVA].AsCurrency := aValue; +end; + +function TInformeCabeceraFacturaClienteDataTableRules.GetIMPORTETOTALValue: Currency; +begin + result := DataTable.Fields[idx_InformeCabeceraFacturaClienteIMPORTETOTAL].AsCurrency; +end; + +procedure TInformeCabeceraFacturaClienteDataTableRules.SetIMPORTETOTALValue(const aValue: Currency); +begin + DataTable.Fields[idx_InformeCabeceraFacturaClienteIMPORTETOTAL].AsCurrency := aValue; +end; + +function TInformeCabeceraFacturaClienteDataTableRules.GetOBSERVACIONESValue: IROStrings; +begin + result := NewROStrings(); + result.Text := DataTable.Fields[idx_InformeCabeceraFacturaClienteOBSERVACIONES].AsString; +end; + +procedure TInformeCabeceraFacturaClienteDataTableRules.SetOBSERVACIONESValue(const aValue: IROStrings); +begin + DataTable.Fields[idx_InformeCabeceraFacturaClienteOBSERVACIONES].AsString := aValue.Text; +end; + +function TInformeCabeceraFacturaClienteDataTableRules.GetFORMAPAGOValue: IROStrings; +begin + result := NewROStrings(); + result.Text := DataTable.Fields[idx_InformeCabeceraFacturaClienteFORMAPAGO].AsString; +end; + +procedure TInformeCabeceraFacturaClienteDataTableRules.SetFORMAPAGOValue(const aValue: IROStrings); +begin + DataTable.Fields[idx_InformeCabeceraFacturaClienteFORMAPAGO].AsString := aValue.Text; +end; + +function TInformeCabeceraFacturaClienteDataTableRules.GetNIFCIFValue: String; +begin + result := DataTable.Fields[idx_InformeCabeceraFacturaClienteNIFCIF].AsString; +end; + +procedure TInformeCabeceraFacturaClienteDataTableRules.SetNIFCIFValue(const aValue: String); +begin + DataTable.Fields[idx_InformeCabeceraFacturaClienteNIFCIF].AsString := aValue; +end; + +function TInformeCabeceraFacturaClienteDataTableRules.GetNOMBREValue: String; +begin + result := DataTable.Fields[idx_InformeCabeceraFacturaClienteNOMBRE].AsString; +end; + +procedure TInformeCabeceraFacturaClienteDataTableRules.SetNOMBREValue(const aValue: String); +begin + DataTable.Fields[idx_InformeCabeceraFacturaClienteNOMBRE].AsString := aValue; +end; + +function TInformeCabeceraFacturaClienteDataTableRules.GetCALLEValue: String; +begin + result := DataTable.Fields[idx_InformeCabeceraFacturaClienteCALLE].AsString; +end; + +procedure TInformeCabeceraFacturaClienteDataTableRules.SetCALLEValue(const aValue: String); +begin + DataTable.Fields[idx_InformeCabeceraFacturaClienteCALLE].AsString := aValue; +end; + +function TInformeCabeceraFacturaClienteDataTableRules.GetPROVINCIAValue: String; +begin + result := DataTable.Fields[idx_InformeCabeceraFacturaClientePROVINCIA].AsString; +end; + +procedure TInformeCabeceraFacturaClienteDataTableRules.SetPROVINCIAValue(const aValue: String); +begin + DataTable.Fields[idx_InformeCabeceraFacturaClientePROVINCIA].AsString := aValue; +end; + +function TInformeCabeceraFacturaClienteDataTableRules.GetCODIGOPOSTALValue: String; +begin + result := DataTable.Fields[idx_InformeCabeceraFacturaClienteCODIGOPOSTAL].AsString; +end; + +procedure TInformeCabeceraFacturaClienteDataTableRules.SetCODIGOPOSTALValue(const aValue: String); +begin + DataTable.Fields[idx_InformeCabeceraFacturaClienteCODIGOPOSTAL].AsString := aValue; +end; + +function TInformeCabeceraFacturaClienteDataTableRules.GetPOBLACIONValue: String; +begin + result := DataTable.Fields[idx_InformeCabeceraFacturaClientePOBLACION].AsString; +end; + +procedure TInformeCabeceraFacturaClienteDataTableRules.SetPOBLACIONValue(const aValue: String); +begin + DataTable.Fields[idx_InformeCabeceraFacturaClientePOBLACION].AsString := aValue; +end; + + +{ TInformeDetallesFacturaClienteDataTableRules } +constructor TInformeDetallesFacturaClienteDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TInformeDetallesFacturaClienteDataTableRules.Destroy; +begin + inherited; +end; + +function TInformeDetallesFacturaClienteDataTableRules.GetCODIGOFACTURAValue: Integer; +begin + result := DataTable.Fields[idx_InformeDetallesFacturaClienteCODIGOFACTURA].AsInteger; +end; + +procedure TInformeDetallesFacturaClienteDataTableRules.SetCODIGOFACTURAValue(const aValue: Integer); +begin + DataTable.Fields[idx_InformeDetallesFacturaClienteCODIGOFACTURA].AsInteger := aValue; +end; + +function TInformeDetallesFacturaClienteDataTableRules.GetNUMCONCEPTOValue: Integer; +begin + result := DataTable.Fields[idx_InformeDetallesFacturaClienteNUMCONCEPTO].AsInteger; +end; + +procedure TInformeDetallesFacturaClienteDataTableRules.SetNUMCONCEPTOValue(const aValue: Integer); +begin + DataTable.Fields[idx_InformeDetallesFacturaClienteNUMCONCEPTO].AsInteger := aValue; +end; + +function TInformeDetallesFacturaClienteDataTableRules.GetDESCRIPCIONValue: String; +begin + result := DataTable.Fields[idx_InformeDetallesFacturaClienteDESCRIPCION].AsString; +end; + +procedure TInformeDetallesFacturaClienteDataTableRules.SetDESCRIPCIONValue(const aValue: String); +begin + DataTable.Fields[idx_InformeDetallesFacturaClienteDESCRIPCION].AsString := aValue; +end; + +function TInformeDetallesFacturaClienteDataTableRules.GetCANTIDADValue: Integer; +begin + result := DataTable.Fields[idx_InformeDetallesFacturaClienteCANTIDAD].AsInteger; +end; + +procedure TInformeDetallesFacturaClienteDataTableRules.SetCANTIDADValue(const aValue: Integer); +begin + DataTable.Fields[idx_InformeDetallesFacturaClienteCANTIDAD].AsInteger := aValue; +end; + +function TInformeDetallesFacturaClienteDataTableRules.GetIMPORTEUNIDADValue: Currency; +begin + result := DataTable.Fields[idx_InformeDetallesFacturaClienteIMPORTEUNIDAD].AsCurrency; +end; + +procedure TInformeDetallesFacturaClienteDataTableRules.SetIMPORTEUNIDADValue(const aValue: Currency); +begin + DataTable.Fields[idx_InformeDetallesFacturaClienteIMPORTEUNIDAD].AsCurrency := aValue; +end; + +function TInformeDetallesFacturaClienteDataTableRules.GetIMPORTETOTALValue: Currency; +begin + result := DataTable.Fields[idx_InformeDetallesFacturaClienteIMPORTETOTAL].AsCurrency; +end; + +procedure TInformeDetallesFacturaClienteDataTableRules.SetIMPORTETOTALValue(const aValue: Currency); +begin + DataTable.Fields[idx_InformeDetallesFacturaClienteIMPORTETOTAL].AsCurrency := aValue; +end; + +function TInformeDetallesFacturaClienteDataTableRules.GetTIPOValue: String; +begin + result := DataTable.Fields[idx_InformeDetallesFacturaClienteTIPO].AsString; +end; + +procedure TInformeDetallesFacturaClienteDataTableRules.SetTIPOValue(const aValue: String); +begin + DataTable.Fields[idx_InformeDetallesFacturaClienteTIPO].AsString := aValue; +end; + +function TInformeDetallesFacturaClienteDataTableRules.GetPOSICIONValue: Integer; +begin + result := DataTable.Fields[idx_InformeDetallesFacturaClientePOSICION].AsInteger; +end; + +procedure TInformeDetallesFacturaClienteDataTableRules.SetPOSICIONValue(const aValue: Integer); +begin + DataTable.Fields[idx_InformeDetallesFacturaClientePOSICION].AsInteger := aValue; +end; + + +initialization + RegisterDataTableRules(RID_DarReferenciaFactura, TDarReferenciaFacturaDataTableRules); + RegisterDataTableRules(RID_FacturasCliente, TFacturasClienteDataTableRules); + RegisterDataTableRules(RID_DetallesFacturasCliente, TDetallesFacturasClienteDataTableRules); + RegisterDataTableRules(RID_InformeCabeceraFacturaCliente, TInformeCabeceraFacturaClienteDataTableRules); + RegisterDataTableRules(RID_InformeDetallesFacturaCliente, TInformeDetallesFacturaClienteDataTableRules); + +end. diff --git a/Modulos/Facturas de cliente/Reglas/schFacturasClienteServer_Intf.pas b/Modulos/Facturas de cliente/Reglas/schFacturasClienteServer_Intf.pas new file mode 100644 index 0000000..337e7ca --- /dev/null +++ b/Modulos/Facturas de cliente/Reglas/schFacturasClienteServer_Intf.pas @@ -0,0 +1,1551 @@ +unit schFacturasClienteServer_Intf; + +interface + +uses + Classes, DB, SysUtils, uROClasses, uDADataTable, uDABusinessProcessor, schFacturasClienteClient_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_DarReferenciaFacturaDelta = '{F2A5D10C-55BF-43D0-BEE6-3712ED9D6EF7}'; + RID_FacturasClienteDelta = '{E5E319FF-A856-43F4-A936-9BEA61505D26}'; + RID_DetallesFacturasClienteDelta = '{7BDC4CEC-780B-4254-8D31-10F7DBDC2641}'; + RID_InformeCabeceraFacturaClienteDelta = '{4EB09950-01DA-4E9E-A3A2-DECCB3A7812F}'; + RID_InformeDetallesFacturaClienteDelta = '{6666A20D-5DCA-4D7C-9AAE-46BE7FEF57F6}'; + +type + { IDarReferenciaFacturaDelta } + IDarReferenciaFacturaDelta = interface(IDarReferenciaFactura) + ['{F2A5D10C-55BF-43D0-BEE6-3712ED9D6EF7}'] + { Property getters and setters } + function GetOldREFERENCIAValue : String; + + { Properties } + property OldREFERENCIA : String read GetOldREFERENCIAValue; + end; + + { TDarReferenciaFacturaBusinessProcessorRules } + TDarReferenciaFacturaBusinessProcessorRules = class(TDABusinessProcessorRules, IDarReferenciaFactura, IDarReferenciaFacturaDelta) + private + protected + { Property getters and setters } + function GetREFERENCIAValue: String; virtual; + function GetOldREFERENCIAValue: String; virtual; + procedure SetREFERENCIAValue(const aValue: String); virtual; + + { Properties } + property REFERENCIA : String read GetREFERENCIAValue write SetREFERENCIAValue; + property OldREFERENCIA : String read GetOldREFERENCIAValue; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + + { IFacturasClienteDelta } + IFacturasClienteDelta = interface(IFacturasCliente) + ['{E5E319FF-A856-43F4-A936-9BEA61505D26}'] + { Property getters and setters } + function GetOldCODIGOEMPRESAValue : Integer; + function GetOldCODIGOValue : Integer; + function GetOldFECHAALTAValue : DateTime; + function GetOldUSUARIOValue : String; + function GetOldFECHAFACTURAValue : DateTime; + function GetOldREFERENCIAValue : String; + function GetOldBASEIMPONIBLEValue : Currency; + function GetOldDESCUENTOValue : Float; + function GetOldIMPORTEDESCUENTOValue : Currency; + function GetOldIVAValue : Float; + function GetOldIMPORTEIVAValue : Currency; + function GetOldIMPORTETOTALValue : Currency; + function GetOldOBSERVACIONESValue : IROStrings; + function GetOldFORMAPAGOValue : IROStrings; + function GetOldCODIGOCONTACTOValue : Integer; + function GetOldNIFCIFValue : String; + function GetOldNOMBREValue : String; + function GetOldCALLEValue : String; + function GetOldPROVINCIAValue : String; + function GetOldCODIGOPOSTALValue : String; + function GetOldPOBLACIONValue : String; + function GetOldCODIGOALBARANValue : Integer; + + { Properties } + property OldCODIGOEMPRESA : Integer read GetOldCODIGOEMPRESAValue; + property OldCODIGO : Integer read GetOldCODIGOValue; + property OldFECHAALTA : DateTime read GetOldFECHAALTAValue; + property OldUSUARIO : String read GetOldUSUARIOValue; + property OldFECHAFACTURA : DateTime read GetOldFECHAFACTURAValue; + property OldREFERENCIA : String read GetOldREFERENCIAValue; + property OldBASEIMPONIBLE : Currency read GetOldBASEIMPONIBLEValue; + property OldDESCUENTO : Float read GetOldDESCUENTOValue; + property OldIMPORTEDESCUENTO : Currency read GetOldIMPORTEDESCUENTOValue; + property OldIVA : Float read GetOldIVAValue; + property OldIMPORTEIVA : Currency read GetOldIMPORTEIVAValue; + property OldIMPORTETOTAL : Currency read GetOldIMPORTETOTALValue; + property OldOBSERVACIONES : IROStrings read GetOldOBSERVACIONESValue; + property OldFORMAPAGO : IROStrings read GetOldFORMAPAGOValue; + property OldCODIGOCONTACTO : Integer read GetOldCODIGOCONTACTOValue; + property OldNIFCIF : String read GetOldNIFCIFValue; + property OldNOMBRE : String read GetOldNOMBREValue; + property OldCALLE : String read GetOldCALLEValue; + property OldPROVINCIA : String read GetOldPROVINCIAValue; + property OldCODIGOPOSTAL : String read GetOldCODIGOPOSTALValue; + property OldPOBLACION : String read GetOldPOBLACIONValue; + property OldCODIGOALBARAN : Integer read GetOldCODIGOALBARANValue; + end; + + { TFacturasClienteBusinessProcessorRules } + TFacturasClienteBusinessProcessorRules = class(TDABusinessProcessorRules, IFacturasCliente, IFacturasClienteDelta) + private + protected + { Property getters and setters } + function GetCODIGOEMPRESAValue: Integer; virtual; + function GetOldCODIGOEMPRESAValue: Integer; virtual; + procedure SetCODIGOEMPRESAValue(const aValue: Integer); virtual; + function GetCODIGOValue: Integer; virtual; + function GetOldCODIGOValue: Integer; virtual; + procedure SetCODIGOValue(const aValue: Integer); virtual; + function GetFECHAALTAValue: DateTime; virtual; + function GetOldFECHAALTAValue: DateTime; virtual; + procedure SetFECHAALTAValue(const aValue: DateTime); virtual; + function GetUSUARIOValue: String; virtual; + function GetOldUSUARIOValue: String; virtual; + procedure SetUSUARIOValue(const aValue: String); virtual; + function GetFECHAFACTURAValue: DateTime; virtual; + function GetOldFECHAFACTURAValue: DateTime; virtual; + procedure SetFECHAFACTURAValue(const aValue: DateTime); virtual; + function GetREFERENCIAValue: String; virtual; + function GetOldREFERENCIAValue: String; virtual; + procedure SetREFERENCIAValue(const aValue: String); virtual; + function GetBASEIMPONIBLEValue: Currency; virtual; + function GetOldBASEIMPONIBLEValue: Currency; virtual; + procedure SetBASEIMPONIBLEValue(const aValue: Currency); virtual; + function GetDESCUENTOValue: Float; virtual; + function GetOldDESCUENTOValue: Float; virtual; + procedure SetDESCUENTOValue(const aValue: Float); virtual; + function GetIMPORTEDESCUENTOValue: Currency; virtual; + function GetOldIMPORTEDESCUENTOValue: Currency; virtual; + procedure SetIMPORTEDESCUENTOValue(const aValue: Currency); virtual; + function GetIVAValue: Float; virtual; + function GetOldIVAValue: Float; virtual; + procedure SetIVAValue(const aValue: Float); virtual; + function GetIMPORTEIVAValue: Currency; virtual; + function GetOldIMPORTEIVAValue: Currency; virtual; + procedure SetIMPORTEIVAValue(const aValue: Currency); virtual; + function GetIMPORTETOTALValue: Currency; virtual; + function GetOldIMPORTETOTALValue: Currency; virtual; + procedure SetIMPORTETOTALValue(const aValue: Currency); virtual; + function GetOBSERVACIONESValue: IROStrings; virtual; + function GetOldOBSERVACIONESValue: IROStrings; virtual; + procedure SetOBSERVACIONESValue(const aValue: IROStrings); virtual; + function GetFORMAPAGOValue: IROStrings; virtual; + function GetOldFORMAPAGOValue: IROStrings; virtual; + procedure SetFORMAPAGOValue(const aValue: IROStrings); virtual; + function GetCODIGOCONTACTOValue: Integer; virtual; + function GetOldCODIGOCONTACTOValue: Integer; virtual; + procedure SetCODIGOCONTACTOValue(const aValue: Integer); virtual; + function GetNIFCIFValue: String; virtual; + function GetOldNIFCIFValue: String; virtual; + procedure SetNIFCIFValue(const aValue: String); virtual; + function GetNOMBREValue: String; virtual; + function GetOldNOMBREValue: String; virtual; + procedure SetNOMBREValue(const aValue: String); virtual; + function GetCALLEValue: String; virtual; + function GetOldCALLEValue: String; virtual; + procedure SetCALLEValue(const aValue: String); virtual; + function GetPROVINCIAValue: String; virtual; + function GetOldPROVINCIAValue: String; virtual; + procedure SetPROVINCIAValue(const aValue: String); virtual; + function GetCODIGOPOSTALValue: String; virtual; + function GetOldCODIGOPOSTALValue: String; virtual; + procedure SetCODIGOPOSTALValue(const aValue: String); virtual; + function GetPOBLACIONValue: String; virtual; + function GetOldPOBLACIONValue: String; virtual; + procedure SetPOBLACIONValue(const aValue: String); virtual; + function GetCODIGOALBARANValue: Integer; virtual; + function GetOldCODIGOALBARANValue: Integer; virtual; + procedure SetCODIGOALBARANValue(const aValue: Integer); virtual; + + { Properties } + property CODIGOEMPRESA : Integer read GetCODIGOEMPRESAValue write SetCODIGOEMPRESAValue; + property OldCODIGOEMPRESA : Integer read GetOldCODIGOEMPRESAValue; + property CODIGO : Integer read GetCODIGOValue write SetCODIGOValue; + property OldCODIGO : Integer read GetOldCODIGOValue; + property FECHAALTA : DateTime read GetFECHAALTAValue write SetFECHAALTAValue; + property OldFECHAALTA : DateTime read GetOldFECHAALTAValue; + property USUARIO : String read GetUSUARIOValue write SetUSUARIOValue; + property OldUSUARIO : String read GetOldUSUARIOValue; + property FECHAFACTURA : DateTime read GetFECHAFACTURAValue write SetFECHAFACTURAValue; + property OldFECHAFACTURA : DateTime read GetOldFECHAFACTURAValue; + property REFERENCIA : String read GetREFERENCIAValue write SetREFERENCIAValue; + property OldREFERENCIA : String read GetOldREFERENCIAValue; + property BASEIMPONIBLE : Currency read GetBASEIMPONIBLEValue write SetBASEIMPONIBLEValue; + property OldBASEIMPONIBLE : Currency read GetOldBASEIMPONIBLEValue; + property DESCUENTO : Float read GetDESCUENTOValue write SetDESCUENTOValue; + property OldDESCUENTO : Float read GetOldDESCUENTOValue; + property IMPORTEDESCUENTO : Currency read GetIMPORTEDESCUENTOValue write SetIMPORTEDESCUENTOValue; + property OldIMPORTEDESCUENTO : Currency read GetOldIMPORTEDESCUENTOValue; + property IVA : Float read GetIVAValue write SetIVAValue; + property OldIVA : Float read GetOldIVAValue; + property IMPORTEIVA : Currency read GetIMPORTEIVAValue write SetIMPORTEIVAValue; + property OldIMPORTEIVA : Currency read GetOldIMPORTEIVAValue; + property IMPORTETOTAL : Currency read GetIMPORTETOTALValue write SetIMPORTETOTALValue; + property OldIMPORTETOTAL : Currency read GetOldIMPORTETOTALValue; + property OBSERVACIONES : IROStrings read GetOBSERVACIONESValue write SetOBSERVACIONESValue; + property OldOBSERVACIONES : IROStrings read GetOldOBSERVACIONESValue; + property FORMAPAGO : IROStrings read GetFORMAPAGOValue write SetFORMAPAGOValue; + property OldFORMAPAGO : IROStrings read GetOldFORMAPAGOValue; + property CODIGOCONTACTO : Integer read GetCODIGOCONTACTOValue write SetCODIGOCONTACTOValue; + property OldCODIGOCONTACTO : Integer read GetOldCODIGOCONTACTOValue; + property NIFCIF : String read GetNIFCIFValue write SetNIFCIFValue; + property OldNIFCIF : String read GetOldNIFCIFValue; + property NOMBRE : String read GetNOMBREValue write SetNOMBREValue; + property OldNOMBRE : String read GetOldNOMBREValue; + property CALLE : String read GetCALLEValue write SetCALLEValue; + property OldCALLE : String read GetOldCALLEValue; + property PROVINCIA : String read GetPROVINCIAValue write SetPROVINCIAValue; + property OldPROVINCIA : String read GetOldPROVINCIAValue; + property CODIGOPOSTAL : String read GetCODIGOPOSTALValue write SetCODIGOPOSTALValue; + property OldCODIGOPOSTAL : String read GetOldCODIGOPOSTALValue; + property POBLACION : String read GetPOBLACIONValue write SetPOBLACIONValue; + property OldPOBLACION : String read GetOldPOBLACIONValue; + property CODIGOALBARAN : Integer read GetCODIGOALBARANValue write SetCODIGOALBARANValue; + property OldCODIGOALBARAN : Integer read GetOldCODIGOALBARANValue; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + + { IDetallesFacturasClienteDelta } + IDetallesFacturasClienteDelta = interface(IDetallesFacturasCliente) + ['{7BDC4CEC-780B-4254-8D31-10F7DBDC2641}'] + { Property getters and setters } + function GetOldCODIGOFACTURAValue : Integer; + function GetOldNUMCONCEPTOValue : Integer; + function GetOldPOSICIONValue : Integer; + function GetOldTIPOValue : String; + function GetOldDESCRIPCIONValue : String; + function GetOldCANTIDADValue : Integer; + function GetOldIMPORTEUNIDADValue : Currency; + function GetOldIMPORTETOTALValue : Currency; + function GetOldVISIBLEValue : String; + + { Properties } + property OldCODIGOFACTURA : Integer read GetOldCODIGOFACTURAValue; + property OldNUMCONCEPTO : Integer read GetOldNUMCONCEPTOValue; + property OldPOSICION : Integer read GetOldPOSICIONValue; + property OldTIPO : String read GetOldTIPOValue; + property OldDESCRIPCION : String read GetOldDESCRIPCIONValue; + property OldCANTIDAD : Integer read GetOldCANTIDADValue; + property OldIMPORTEUNIDAD : Currency read GetOldIMPORTEUNIDADValue; + property OldIMPORTETOTAL : Currency read GetOldIMPORTETOTALValue; + property OldVISIBLE : String read GetOldVISIBLEValue; + end; + + { TDetallesFacturasClienteBusinessProcessorRules } + TDetallesFacturasClienteBusinessProcessorRules = class(TDABusinessProcessorRules, IDetallesFacturasCliente, IDetallesFacturasClienteDelta) + private + protected + { Property getters and setters } + function GetCODIGOFACTURAValue: Integer; virtual; + function GetOldCODIGOFACTURAValue: Integer; virtual; + procedure SetCODIGOFACTURAValue(const aValue: Integer); virtual; + function GetNUMCONCEPTOValue: Integer; virtual; + function GetOldNUMCONCEPTOValue: Integer; virtual; + procedure SetNUMCONCEPTOValue(const aValue: Integer); virtual; + function GetPOSICIONValue: Integer; virtual; + function GetOldPOSICIONValue: Integer; virtual; + procedure SetPOSICIONValue(const aValue: Integer); virtual; + function GetTIPOValue: String; virtual; + function GetOldTIPOValue: String; virtual; + procedure SetTIPOValue(const aValue: String); virtual; + function GetDESCRIPCIONValue: String; virtual; + function GetOldDESCRIPCIONValue: String; virtual; + procedure SetDESCRIPCIONValue(const aValue: String); virtual; + function GetCANTIDADValue: Integer; virtual; + function GetOldCANTIDADValue: Integer; virtual; + procedure SetCANTIDADValue(const aValue: Integer); virtual; + function GetIMPORTEUNIDADValue: Currency; virtual; + function GetOldIMPORTEUNIDADValue: Currency; virtual; + procedure SetIMPORTEUNIDADValue(const aValue: Currency); virtual; + function GetIMPORTETOTALValue: Currency; virtual; + function GetOldIMPORTETOTALValue: Currency; virtual; + procedure SetIMPORTETOTALValue(const aValue: Currency); virtual; + function GetVISIBLEValue: String; virtual; + function GetOldVISIBLEValue: String; virtual; + procedure SetVISIBLEValue(const aValue: String); virtual; + + { Properties } + property CODIGOFACTURA : Integer read GetCODIGOFACTURAValue write SetCODIGOFACTURAValue; + property OldCODIGOFACTURA : Integer read GetOldCODIGOFACTURAValue; + property NUMCONCEPTO : Integer read GetNUMCONCEPTOValue write SetNUMCONCEPTOValue; + property OldNUMCONCEPTO : Integer read GetOldNUMCONCEPTOValue; + property POSICION : Integer read GetPOSICIONValue write SetPOSICIONValue; + property OldPOSICION : Integer read GetOldPOSICIONValue; + property TIPO : String read GetTIPOValue write SetTIPOValue; + property OldTIPO : String read GetOldTIPOValue; + property DESCRIPCION : String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + property OldDESCRIPCION : String read GetOldDESCRIPCIONValue; + property CANTIDAD : Integer read GetCANTIDADValue write SetCANTIDADValue; + property OldCANTIDAD : Integer read GetOldCANTIDADValue; + property IMPORTEUNIDAD : Currency read GetIMPORTEUNIDADValue write SetIMPORTEUNIDADValue; + property OldIMPORTEUNIDAD : Currency read GetOldIMPORTEUNIDADValue; + property IMPORTETOTAL : Currency read GetIMPORTETOTALValue write SetIMPORTETOTALValue; + property OldIMPORTETOTAL : Currency read GetOldIMPORTETOTALValue; + property VISIBLE : String read GetVISIBLEValue write SetVISIBLEValue; + property OldVISIBLE : String read GetOldVISIBLEValue; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + + { IInformeCabeceraFacturaClienteDelta } + IInformeCabeceraFacturaClienteDelta = interface(IInformeCabeceraFacturaCliente) + ['{4EB09950-01DA-4E9E-A3A2-DECCB3A7812F}'] + { Property getters and setters } + function GetOldCODIGOEMPRESAValue : Integer; + function GetOldCODIGOValue : Integer; + function GetOldFECHAALTAValue : DateTime; + function GetOldUSUARIOValue : String; + function GetOldFECHAFACTURAValue : DateTime; + function GetOldREFERENCIAValue : String; + function GetOldCODIGOCONTACTOValue : Integer; + function GetOldBASEIMPONIBLEValue : Currency; + function GetOldDESCUENTOValue : Float; + function GetOldIMPORTEDESCUENTOValue : Currency; + function GetOldIVAValue : Float; + function GetOldIMPORTEIVAValue : Currency; + function GetOldIMPORTETOTALValue : Currency; + function GetOldOBSERVACIONESValue : IROStrings; + function GetOldFORMAPAGOValue : IROStrings; + function GetOldNIFCIFValue : String; + function GetOldNOMBREValue : String; + function GetOldCALLEValue : String; + function GetOldPROVINCIAValue : String; + function GetOldCODIGOPOSTALValue : String; + function GetOldPOBLACIONValue : String; + + { Properties } + property OldCODIGOEMPRESA : Integer read GetOldCODIGOEMPRESAValue; + property OldCODIGO : Integer read GetOldCODIGOValue; + property OldFECHAALTA : DateTime read GetOldFECHAALTAValue; + property OldUSUARIO : String read GetOldUSUARIOValue; + property OldFECHAFACTURA : DateTime read GetOldFECHAFACTURAValue; + property OldREFERENCIA : String read GetOldREFERENCIAValue; + property OldCODIGOCONTACTO : Integer read GetOldCODIGOCONTACTOValue; + property OldBASEIMPONIBLE : Currency read GetOldBASEIMPONIBLEValue; + property OldDESCUENTO : Float read GetOldDESCUENTOValue; + property OldIMPORTEDESCUENTO : Currency read GetOldIMPORTEDESCUENTOValue; + property OldIVA : Float read GetOldIVAValue; + property OldIMPORTEIVA : Currency read GetOldIMPORTEIVAValue; + property OldIMPORTETOTAL : Currency read GetOldIMPORTETOTALValue; + property OldOBSERVACIONES : IROStrings read GetOldOBSERVACIONESValue; + property OldFORMAPAGO : IROStrings read GetOldFORMAPAGOValue; + property OldNIFCIF : String read GetOldNIFCIFValue; + property OldNOMBRE : String read GetOldNOMBREValue; + property OldCALLE : String read GetOldCALLEValue; + property OldPROVINCIA : String read GetOldPROVINCIAValue; + property OldCODIGOPOSTAL : String read GetOldCODIGOPOSTALValue; + property OldPOBLACION : String read GetOldPOBLACIONValue; + end; + + { TInformeCabeceraFacturaClienteBusinessProcessorRules } + TInformeCabeceraFacturaClienteBusinessProcessorRules = class(TDABusinessProcessorRules, IInformeCabeceraFacturaCliente, IInformeCabeceraFacturaClienteDelta) + private + protected + { Property getters and setters } + function GetCODIGOEMPRESAValue: Integer; virtual; + function GetOldCODIGOEMPRESAValue: Integer; virtual; + procedure SetCODIGOEMPRESAValue(const aValue: Integer); virtual; + function GetCODIGOValue: Integer; virtual; + function GetOldCODIGOValue: Integer; virtual; + procedure SetCODIGOValue(const aValue: Integer); virtual; + function GetFECHAALTAValue: DateTime; virtual; + function GetOldFECHAALTAValue: DateTime; virtual; + procedure SetFECHAALTAValue(const aValue: DateTime); virtual; + function GetUSUARIOValue: String; virtual; + function GetOldUSUARIOValue: String; virtual; + procedure SetUSUARIOValue(const aValue: String); virtual; + function GetFECHAFACTURAValue: DateTime; virtual; + function GetOldFECHAFACTURAValue: DateTime; virtual; + procedure SetFECHAFACTURAValue(const aValue: DateTime); virtual; + function GetREFERENCIAValue: String; virtual; + function GetOldREFERENCIAValue: String; virtual; + procedure SetREFERENCIAValue(const aValue: String); virtual; + function GetCODIGOCONTACTOValue: Integer; virtual; + function GetOldCODIGOCONTACTOValue: Integer; virtual; + procedure SetCODIGOCONTACTOValue(const aValue: Integer); virtual; + function GetBASEIMPONIBLEValue: Currency; virtual; + function GetOldBASEIMPONIBLEValue: Currency; virtual; + procedure SetBASEIMPONIBLEValue(const aValue: Currency); virtual; + function GetDESCUENTOValue: Float; virtual; + function GetOldDESCUENTOValue: Float; virtual; + procedure SetDESCUENTOValue(const aValue: Float); virtual; + function GetIMPORTEDESCUENTOValue: Currency; virtual; + function GetOldIMPORTEDESCUENTOValue: Currency; virtual; + procedure SetIMPORTEDESCUENTOValue(const aValue: Currency); virtual; + function GetIVAValue: Float; virtual; + function GetOldIVAValue: Float; virtual; + procedure SetIVAValue(const aValue: Float); virtual; + function GetIMPORTEIVAValue: Currency; virtual; + function GetOldIMPORTEIVAValue: Currency; virtual; + procedure SetIMPORTEIVAValue(const aValue: Currency); virtual; + function GetIMPORTETOTALValue: Currency; virtual; + function GetOldIMPORTETOTALValue: Currency; virtual; + procedure SetIMPORTETOTALValue(const aValue: Currency); virtual; + function GetOBSERVACIONESValue: IROStrings; virtual; + function GetOldOBSERVACIONESValue: IROStrings; virtual; + procedure SetOBSERVACIONESValue(const aValue: IROStrings); virtual; + function GetFORMAPAGOValue: IROStrings; virtual; + function GetOldFORMAPAGOValue: IROStrings; virtual; + procedure SetFORMAPAGOValue(const aValue: IROStrings); virtual; + function GetNIFCIFValue: String; virtual; + function GetOldNIFCIFValue: String; virtual; + procedure SetNIFCIFValue(const aValue: String); virtual; + function GetNOMBREValue: String; virtual; + function GetOldNOMBREValue: String; virtual; + procedure SetNOMBREValue(const aValue: String); virtual; + function GetCALLEValue: String; virtual; + function GetOldCALLEValue: String; virtual; + procedure SetCALLEValue(const aValue: String); virtual; + function GetPROVINCIAValue: String; virtual; + function GetOldPROVINCIAValue: String; virtual; + procedure SetPROVINCIAValue(const aValue: String); virtual; + function GetCODIGOPOSTALValue: String; virtual; + function GetOldCODIGOPOSTALValue: String; virtual; + procedure SetCODIGOPOSTALValue(const aValue: String); virtual; + function GetPOBLACIONValue: String; virtual; + function GetOldPOBLACIONValue: String; virtual; + procedure SetPOBLACIONValue(const aValue: String); virtual; + + { Properties } + property CODIGOEMPRESA : Integer read GetCODIGOEMPRESAValue write SetCODIGOEMPRESAValue; + property OldCODIGOEMPRESA : Integer read GetOldCODIGOEMPRESAValue; + property CODIGO : Integer read GetCODIGOValue write SetCODIGOValue; + property OldCODIGO : Integer read GetOldCODIGOValue; + property FECHAALTA : DateTime read GetFECHAALTAValue write SetFECHAALTAValue; + property OldFECHAALTA : DateTime read GetOldFECHAALTAValue; + property USUARIO : String read GetUSUARIOValue write SetUSUARIOValue; + property OldUSUARIO : String read GetOldUSUARIOValue; + property FECHAFACTURA : DateTime read GetFECHAFACTURAValue write SetFECHAFACTURAValue; + property OldFECHAFACTURA : DateTime read GetOldFECHAFACTURAValue; + property REFERENCIA : String read GetREFERENCIAValue write SetREFERENCIAValue; + property OldREFERENCIA : String read GetOldREFERENCIAValue; + property CODIGOCONTACTO : Integer read GetCODIGOCONTACTOValue write SetCODIGOCONTACTOValue; + property OldCODIGOCONTACTO : Integer read GetOldCODIGOCONTACTOValue; + property BASEIMPONIBLE : Currency read GetBASEIMPONIBLEValue write SetBASEIMPONIBLEValue; + property OldBASEIMPONIBLE : Currency read GetOldBASEIMPONIBLEValue; + property DESCUENTO : Float read GetDESCUENTOValue write SetDESCUENTOValue; + property OldDESCUENTO : Float read GetOldDESCUENTOValue; + property IMPORTEDESCUENTO : Currency read GetIMPORTEDESCUENTOValue write SetIMPORTEDESCUENTOValue; + property OldIMPORTEDESCUENTO : Currency read GetOldIMPORTEDESCUENTOValue; + property IVA : Float read GetIVAValue write SetIVAValue; + property OldIVA : Float read GetOldIVAValue; + property IMPORTEIVA : Currency read GetIMPORTEIVAValue write SetIMPORTEIVAValue; + property OldIMPORTEIVA : Currency read GetOldIMPORTEIVAValue; + property IMPORTETOTAL : Currency read GetIMPORTETOTALValue write SetIMPORTETOTALValue; + property OldIMPORTETOTAL : Currency read GetOldIMPORTETOTALValue; + property OBSERVACIONES : IROStrings read GetOBSERVACIONESValue write SetOBSERVACIONESValue; + property OldOBSERVACIONES : IROStrings read GetOldOBSERVACIONESValue; + property FORMAPAGO : IROStrings read GetFORMAPAGOValue write SetFORMAPAGOValue; + property OldFORMAPAGO : IROStrings read GetOldFORMAPAGOValue; + property NIFCIF : String read GetNIFCIFValue write SetNIFCIFValue; + property OldNIFCIF : String read GetOldNIFCIFValue; + property NOMBRE : String read GetNOMBREValue write SetNOMBREValue; + property OldNOMBRE : String read GetOldNOMBREValue; + property CALLE : String read GetCALLEValue write SetCALLEValue; + property OldCALLE : String read GetOldCALLEValue; + property PROVINCIA : String read GetPROVINCIAValue write SetPROVINCIAValue; + property OldPROVINCIA : String read GetOldPROVINCIAValue; + property CODIGOPOSTAL : String read GetCODIGOPOSTALValue write SetCODIGOPOSTALValue; + property OldCODIGOPOSTAL : String read GetOldCODIGOPOSTALValue; + property POBLACION : String read GetPOBLACIONValue write SetPOBLACIONValue; + property OldPOBLACION : String read GetOldPOBLACIONValue; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + + { IInformeDetallesFacturaClienteDelta } + IInformeDetallesFacturaClienteDelta = interface(IInformeDetallesFacturaCliente) + ['{6666A20D-5DCA-4D7C-9AAE-46BE7FEF57F6}'] + { Property getters and setters } + function GetOldCODIGOFACTURAValue : Integer; + function GetOldNUMCONCEPTOValue : Integer; + function GetOldDESCRIPCIONValue : String; + function GetOldCANTIDADValue : Integer; + function GetOldIMPORTEUNIDADValue : Currency; + function GetOldIMPORTETOTALValue : Currency; + function GetOldTIPOValue : String; + function GetOldPOSICIONValue : Integer; + + { Properties } + property OldCODIGOFACTURA : Integer read GetOldCODIGOFACTURAValue; + property OldNUMCONCEPTO : Integer read GetOldNUMCONCEPTOValue; + property OldDESCRIPCION : String read GetOldDESCRIPCIONValue; + property OldCANTIDAD : Integer read GetOldCANTIDADValue; + property OldIMPORTEUNIDAD : Currency read GetOldIMPORTEUNIDADValue; + property OldIMPORTETOTAL : Currency read GetOldIMPORTETOTALValue; + property OldTIPO : String read GetOldTIPOValue; + property OldPOSICION : Integer read GetOldPOSICIONValue; + end; + + { TInformeDetallesFacturaClienteBusinessProcessorRules } + TInformeDetallesFacturaClienteBusinessProcessorRules = class(TDABusinessProcessorRules, IInformeDetallesFacturaCliente, IInformeDetallesFacturaClienteDelta) + private + protected + { Property getters and setters } + function GetCODIGOFACTURAValue: Integer; virtual; + function GetOldCODIGOFACTURAValue: Integer; virtual; + procedure SetCODIGOFACTURAValue(const aValue: Integer); virtual; + function GetNUMCONCEPTOValue: Integer; virtual; + function GetOldNUMCONCEPTOValue: Integer; virtual; + procedure SetNUMCONCEPTOValue(const aValue: Integer); virtual; + function GetDESCRIPCIONValue: String; virtual; + function GetOldDESCRIPCIONValue: String; virtual; + procedure SetDESCRIPCIONValue(const aValue: String); virtual; + function GetCANTIDADValue: Integer; virtual; + function GetOldCANTIDADValue: Integer; virtual; + procedure SetCANTIDADValue(const aValue: Integer); virtual; + function GetIMPORTEUNIDADValue: Currency; virtual; + function GetOldIMPORTEUNIDADValue: Currency; virtual; + procedure SetIMPORTEUNIDADValue(const aValue: Currency); virtual; + function GetIMPORTETOTALValue: Currency; virtual; + function GetOldIMPORTETOTALValue: Currency; virtual; + procedure SetIMPORTETOTALValue(const aValue: Currency); virtual; + function GetTIPOValue: String; virtual; + function GetOldTIPOValue: String; virtual; + procedure SetTIPOValue(const aValue: String); virtual; + function GetPOSICIONValue: Integer; virtual; + function GetOldPOSICIONValue: Integer; virtual; + procedure SetPOSICIONValue(const aValue: Integer); virtual; + + { Properties } + property CODIGOFACTURA : Integer read GetCODIGOFACTURAValue write SetCODIGOFACTURAValue; + property OldCODIGOFACTURA : Integer read GetOldCODIGOFACTURAValue; + property NUMCONCEPTO : Integer read GetNUMCONCEPTOValue write SetNUMCONCEPTOValue; + property OldNUMCONCEPTO : Integer read GetOldNUMCONCEPTOValue; + property DESCRIPCION : String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + property OldDESCRIPCION : String read GetOldDESCRIPCIONValue; + property CANTIDAD : Integer read GetCANTIDADValue write SetCANTIDADValue; + property OldCANTIDAD : Integer read GetOldCANTIDADValue; + property IMPORTEUNIDAD : Currency read GetIMPORTEUNIDADValue write SetIMPORTEUNIDADValue; + property OldIMPORTEUNIDAD : Currency read GetOldIMPORTEUNIDADValue; + property IMPORTETOTAL : Currency read GetIMPORTETOTALValue write SetIMPORTETOTALValue; + property OldIMPORTETOTAL : Currency read GetOldIMPORTETOTALValue; + property TIPO : String read GetTIPOValue write SetTIPOValue; + property OldTIPO : String read GetOldTIPOValue; + property POSICION : Integer read GetPOSICIONValue write SetPOSICIONValue; + property OldPOSICION : Integer read GetOldPOSICIONValue; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + +implementation + +uses + Variants, uROBinaryHelpers; + +{ TDarReferenciaFacturaBusinessProcessorRules } +constructor TDarReferenciaFacturaBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TDarReferenciaFacturaBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TDarReferenciaFacturaBusinessProcessorRules.GetREFERENCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_DarReferenciaFacturaREFERENCIA]; +end; + +function TDarReferenciaFacturaBusinessProcessorRules.GetOldREFERENCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_DarReferenciaFacturaREFERENCIA]; +end; + +procedure TDarReferenciaFacturaBusinessProcessorRules.SetREFERENCIAValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_DarReferenciaFacturaREFERENCIA] := aValue; +end; + + +{ TFacturasClienteBusinessProcessorRules } +constructor TFacturasClienteBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TFacturasClienteBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TFacturasClienteBusinessProcessorRules.GetCODIGOEMPRESAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasClienteCODIGOEMPRESA]; +end; + +function TFacturasClienteBusinessProcessorRules.GetOldCODIGOEMPRESAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasClienteCODIGOEMPRESA]; +end; + +procedure TFacturasClienteBusinessProcessorRules.SetCODIGOEMPRESAValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasClienteCODIGOEMPRESA] := aValue; +end; + +function TFacturasClienteBusinessProcessorRules.GetCODIGOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasClienteCODIGO]; +end; + +function TFacturasClienteBusinessProcessorRules.GetOldCODIGOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasClienteCODIGO]; +end; + +procedure TFacturasClienteBusinessProcessorRules.SetCODIGOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasClienteCODIGO] := aValue; +end; + +function TFacturasClienteBusinessProcessorRules.GetFECHAALTAValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasClienteFECHAALTA]; +end; + +function TFacturasClienteBusinessProcessorRules.GetOldFECHAALTAValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasClienteFECHAALTA]; +end; + +procedure TFacturasClienteBusinessProcessorRules.SetFECHAALTAValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasClienteFECHAALTA] := aValue; +end; + +function TFacturasClienteBusinessProcessorRules.GetUSUARIOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasClienteUSUARIO]; +end; + +function TFacturasClienteBusinessProcessorRules.GetOldUSUARIOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasClienteUSUARIO]; +end; + +procedure TFacturasClienteBusinessProcessorRules.SetUSUARIOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasClienteUSUARIO] := aValue; +end; + +function TFacturasClienteBusinessProcessorRules.GetFECHAFACTURAValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasClienteFECHAFACTURA]; +end; + +function TFacturasClienteBusinessProcessorRules.GetOldFECHAFACTURAValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasClienteFECHAFACTURA]; +end; + +procedure TFacturasClienteBusinessProcessorRules.SetFECHAFACTURAValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasClienteFECHAFACTURA] := aValue; +end; + +function TFacturasClienteBusinessProcessorRules.GetREFERENCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasClienteREFERENCIA]; +end; + +function TFacturasClienteBusinessProcessorRules.GetOldREFERENCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasClienteREFERENCIA]; +end; + +procedure TFacturasClienteBusinessProcessorRules.SetREFERENCIAValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasClienteREFERENCIA] := aValue; +end; + +function TFacturasClienteBusinessProcessorRules.GetBASEIMPONIBLEValue: Currency; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasClienteBASEIMPONIBLE]; +end; + +function TFacturasClienteBusinessProcessorRules.GetOldBASEIMPONIBLEValue: Currency; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasClienteBASEIMPONIBLE]; +end; + +procedure TFacturasClienteBusinessProcessorRules.SetBASEIMPONIBLEValue(const aValue: Currency); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasClienteBASEIMPONIBLE] := aValue; +end; + +function TFacturasClienteBusinessProcessorRules.GetDESCUENTOValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasClienteDESCUENTO]; +end; + +function TFacturasClienteBusinessProcessorRules.GetOldDESCUENTOValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasClienteDESCUENTO]; +end; + +procedure TFacturasClienteBusinessProcessorRules.SetDESCUENTOValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasClienteDESCUENTO] := aValue; +end; + +function TFacturasClienteBusinessProcessorRules.GetIMPORTEDESCUENTOValue: Currency; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasClienteIMPORTEDESCUENTO]; +end; + +function TFacturasClienteBusinessProcessorRules.GetOldIMPORTEDESCUENTOValue: Currency; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasClienteIMPORTEDESCUENTO]; +end; + +procedure TFacturasClienteBusinessProcessorRules.SetIMPORTEDESCUENTOValue(const aValue: Currency); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasClienteIMPORTEDESCUENTO] := aValue; +end; + +function TFacturasClienteBusinessProcessorRules.GetIVAValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasClienteIVA]; +end; + +function TFacturasClienteBusinessProcessorRules.GetOldIVAValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasClienteIVA]; +end; + +procedure TFacturasClienteBusinessProcessorRules.SetIVAValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasClienteIVA] := aValue; +end; + +function TFacturasClienteBusinessProcessorRules.GetIMPORTEIVAValue: Currency; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasClienteIMPORTEIVA]; +end; + +function TFacturasClienteBusinessProcessorRules.GetOldIMPORTEIVAValue: Currency; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasClienteIMPORTEIVA]; +end; + +procedure TFacturasClienteBusinessProcessorRules.SetIMPORTEIVAValue(const aValue: Currency); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasClienteIMPORTEIVA] := aValue; +end; + +function TFacturasClienteBusinessProcessorRules.GetIMPORTETOTALValue: Currency; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasClienteIMPORTETOTAL]; +end; + +function TFacturasClienteBusinessProcessorRules.GetOldIMPORTETOTALValue: Currency; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasClienteIMPORTETOTAL]; +end; + +procedure TFacturasClienteBusinessProcessorRules.SetIMPORTETOTALValue(const aValue: Currency); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasClienteIMPORTETOTAL] := aValue; +end; + +function TFacturasClienteBusinessProcessorRules.GetOBSERVACIONESValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasClienteOBSERVACIONES]; +end; + +function TFacturasClienteBusinessProcessorRules.GetOldOBSERVACIONESValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasClienteOBSERVACIONES]; +end; + +procedure TFacturasClienteBusinessProcessorRules.SetOBSERVACIONESValue(const aValue: IROStrings); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasClienteOBSERVACIONES] := aValue.Text; +end; + +function TFacturasClienteBusinessProcessorRules.GetFORMAPAGOValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasClienteFORMAPAGO]; +end; + +function TFacturasClienteBusinessProcessorRules.GetOldFORMAPAGOValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasClienteFORMAPAGO]; +end; + +procedure TFacturasClienteBusinessProcessorRules.SetFORMAPAGOValue(const aValue: IROStrings); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasClienteFORMAPAGO] := aValue.Text; +end; + +function TFacturasClienteBusinessProcessorRules.GetCODIGOCONTACTOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasClienteCODIGOCONTACTO]; +end; + +function TFacturasClienteBusinessProcessorRules.GetOldCODIGOCONTACTOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasClienteCODIGOCONTACTO]; +end; + +procedure TFacturasClienteBusinessProcessorRules.SetCODIGOCONTACTOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasClienteCODIGOCONTACTO] := aValue; +end; + +function TFacturasClienteBusinessProcessorRules.GetNIFCIFValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasClienteNIFCIF]; +end; + +function TFacturasClienteBusinessProcessorRules.GetOldNIFCIFValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasClienteNIFCIF]; +end; + +procedure TFacturasClienteBusinessProcessorRules.SetNIFCIFValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasClienteNIFCIF] := aValue; +end; + +function TFacturasClienteBusinessProcessorRules.GetNOMBREValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasClienteNOMBRE]; +end; + +function TFacturasClienteBusinessProcessorRules.GetOldNOMBREValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasClienteNOMBRE]; +end; + +procedure TFacturasClienteBusinessProcessorRules.SetNOMBREValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasClienteNOMBRE] := aValue; +end; + +function TFacturasClienteBusinessProcessorRules.GetCALLEValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasClienteCALLE]; +end; + +function TFacturasClienteBusinessProcessorRules.GetOldCALLEValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasClienteCALLE]; +end; + +procedure TFacturasClienteBusinessProcessorRules.SetCALLEValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasClienteCALLE] := aValue; +end; + +function TFacturasClienteBusinessProcessorRules.GetPROVINCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasClientePROVINCIA]; +end; + +function TFacturasClienteBusinessProcessorRules.GetOldPROVINCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasClientePROVINCIA]; +end; + +procedure TFacturasClienteBusinessProcessorRules.SetPROVINCIAValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasClientePROVINCIA] := aValue; +end; + +function TFacturasClienteBusinessProcessorRules.GetCODIGOPOSTALValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasClienteCODIGOPOSTAL]; +end; + +function TFacturasClienteBusinessProcessorRules.GetOldCODIGOPOSTALValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasClienteCODIGOPOSTAL]; +end; + +procedure TFacturasClienteBusinessProcessorRules.SetCODIGOPOSTALValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasClienteCODIGOPOSTAL] := aValue; +end; + +function TFacturasClienteBusinessProcessorRules.GetPOBLACIONValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasClientePOBLACION]; +end; + +function TFacturasClienteBusinessProcessorRules.GetOldPOBLACIONValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasClientePOBLACION]; +end; + +procedure TFacturasClienteBusinessProcessorRules.SetPOBLACIONValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasClientePOBLACION] := aValue; +end; + +function TFacturasClienteBusinessProcessorRules.GetCODIGOALBARANValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasClienteCODIGOALBARAN]; +end; + +function TFacturasClienteBusinessProcessorRules.GetOldCODIGOALBARANValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasClienteCODIGOALBARAN]; +end; + +procedure TFacturasClienteBusinessProcessorRules.SetCODIGOALBARANValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasClienteCODIGOALBARAN] := aValue; +end; + + +{ TDetallesFacturasClienteBusinessProcessorRules } +constructor TDetallesFacturasClienteBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TDetallesFacturasClienteBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TDetallesFacturasClienteBusinessProcessorRules.GetCODIGOFACTURAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesFacturasClienteCODIGOFACTURA]; +end; + +function TDetallesFacturasClienteBusinessProcessorRules.GetOldCODIGOFACTURAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_DetallesFacturasClienteCODIGOFACTURA]; +end; + +procedure TDetallesFacturasClienteBusinessProcessorRules.SetCODIGOFACTURAValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesFacturasClienteCODIGOFACTURA] := aValue; +end; + +function TDetallesFacturasClienteBusinessProcessorRules.GetNUMCONCEPTOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesFacturasClienteNUMCONCEPTO]; +end; + +function TDetallesFacturasClienteBusinessProcessorRules.GetOldNUMCONCEPTOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_DetallesFacturasClienteNUMCONCEPTO]; +end; + +procedure TDetallesFacturasClienteBusinessProcessorRules.SetNUMCONCEPTOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesFacturasClienteNUMCONCEPTO] := aValue; +end; + +function TDetallesFacturasClienteBusinessProcessorRules.GetPOSICIONValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesFacturasClientePOSICION]; +end; + +function TDetallesFacturasClienteBusinessProcessorRules.GetOldPOSICIONValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_DetallesFacturasClientePOSICION]; +end; + +procedure TDetallesFacturasClienteBusinessProcessorRules.SetPOSICIONValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesFacturasClientePOSICION] := aValue; +end; + +function TDetallesFacturasClienteBusinessProcessorRules.GetTIPOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesFacturasClienteTIPO]; +end; + +function TDetallesFacturasClienteBusinessProcessorRules.GetOldTIPOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_DetallesFacturasClienteTIPO]; +end; + +procedure TDetallesFacturasClienteBusinessProcessorRules.SetTIPOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesFacturasClienteTIPO] := aValue; +end; + +function TDetallesFacturasClienteBusinessProcessorRules.GetDESCRIPCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesFacturasClienteDESCRIPCION]; +end; + +function TDetallesFacturasClienteBusinessProcessorRules.GetOldDESCRIPCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_DetallesFacturasClienteDESCRIPCION]; +end; + +procedure TDetallesFacturasClienteBusinessProcessorRules.SetDESCRIPCIONValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesFacturasClienteDESCRIPCION] := aValue; +end; + +function TDetallesFacturasClienteBusinessProcessorRules.GetCANTIDADValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesFacturasClienteCANTIDAD]; +end; + +function TDetallesFacturasClienteBusinessProcessorRules.GetOldCANTIDADValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_DetallesFacturasClienteCANTIDAD]; +end; + +procedure TDetallesFacturasClienteBusinessProcessorRules.SetCANTIDADValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesFacturasClienteCANTIDAD] := aValue; +end; + +function TDetallesFacturasClienteBusinessProcessorRules.GetIMPORTEUNIDADValue: Currency; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesFacturasClienteIMPORTEUNIDAD]; +end; + +function TDetallesFacturasClienteBusinessProcessorRules.GetOldIMPORTEUNIDADValue: Currency; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_DetallesFacturasClienteIMPORTEUNIDAD]; +end; + +procedure TDetallesFacturasClienteBusinessProcessorRules.SetIMPORTEUNIDADValue(const aValue: Currency); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesFacturasClienteIMPORTEUNIDAD] := aValue; +end; + +function TDetallesFacturasClienteBusinessProcessorRules.GetIMPORTETOTALValue: Currency; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesFacturasClienteIMPORTETOTAL]; +end; + +function TDetallesFacturasClienteBusinessProcessorRules.GetOldIMPORTETOTALValue: Currency; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_DetallesFacturasClienteIMPORTETOTAL]; +end; + +procedure TDetallesFacturasClienteBusinessProcessorRules.SetIMPORTETOTALValue(const aValue: Currency); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesFacturasClienteIMPORTETOTAL] := aValue; +end; + +function TDetallesFacturasClienteBusinessProcessorRules.GetVISIBLEValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesFacturasClienteVISIBLE]; +end; + +function TDetallesFacturasClienteBusinessProcessorRules.GetOldVISIBLEValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_DetallesFacturasClienteVISIBLE]; +end; + +procedure TDetallesFacturasClienteBusinessProcessorRules.SetVISIBLEValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesFacturasClienteVISIBLE] := aValue; +end; + + +{ TInformeCabeceraFacturaClienteBusinessProcessorRules } +constructor TInformeCabeceraFacturaClienteBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TInformeCabeceraFacturaClienteBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TInformeCabeceraFacturaClienteBusinessProcessorRules.GetCODIGOEMPRESAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraFacturaClienteCODIGOEMPRESA]; +end; + +function TInformeCabeceraFacturaClienteBusinessProcessorRules.GetOldCODIGOEMPRESAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraFacturaClienteCODIGOEMPRESA]; +end; + +procedure TInformeCabeceraFacturaClienteBusinessProcessorRules.SetCODIGOEMPRESAValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraFacturaClienteCODIGOEMPRESA] := aValue; +end; + +function TInformeCabeceraFacturaClienteBusinessProcessorRules.GetCODIGOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraFacturaClienteCODIGO]; +end; + +function TInformeCabeceraFacturaClienteBusinessProcessorRules.GetOldCODIGOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraFacturaClienteCODIGO]; +end; + +procedure TInformeCabeceraFacturaClienteBusinessProcessorRules.SetCODIGOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraFacturaClienteCODIGO] := aValue; +end; + +function TInformeCabeceraFacturaClienteBusinessProcessorRules.GetFECHAALTAValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraFacturaClienteFECHAALTA]; +end; + +function TInformeCabeceraFacturaClienteBusinessProcessorRules.GetOldFECHAALTAValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraFacturaClienteFECHAALTA]; +end; + +procedure TInformeCabeceraFacturaClienteBusinessProcessorRules.SetFECHAALTAValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraFacturaClienteFECHAALTA] := aValue; +end; + +function TInformeCabeceraFacturaClienteBusinessProcessorRules.GetUSUARIOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraFacturaClienteUSUARIO]; +end; + +function TInformeCabeceraFacturaClienteBusinessProcessorRules.GetOldUSUARIOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraFacturaClienteUSUARIO]; +end; + +procedure TInformeCabeceraFacturaClienteBusinessProcessorRules.SetUSUARIOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraFacturaClienteUSUARIO] := aValue; +end; + +function TInformeCabeceraFacturaClienteBusinessProcessorRules.GetFECHAFACTURAValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraFacturaClienteFECHAFACTURA]; +end; + +function TInformeCabeceraFacturaClienteBusinessProcessorRules.GetOldFECHAFACTURAValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraFacturaClienteFECHAFACTURA]; +end; + +procedure TInformeCabeceraFacturaClienteBusinessProcessorRules.SetFECHAFACTURAValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraFacturaClienteFECHAFACTURA] := aValue; +end; + +function TInformeCabeceraFacturaClienteBusinessProcessorRules.GetREFERENCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraFacturaClienteREFERENCIA]; +end; + +function TInformeCabeceraFacturaClienteBusinessProcessorRules.GetOldREFERENCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraFacturaClienteREFERENCIA]; +end; + +procedure TInformeCabeceraFacturaClienteBusinessProcessorRules.SetREFERENCIAValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraFacturaClienteREFERENCIA] := aValue; +end; + +function TInformeCabeceraFacturaClienteBusinessProcessorRules.GetCODIGOCONTACTOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraFacturaClienteCODIGOCONTACTO]; +end; + +function TInformeCabeceraFacturaClienteBusinessProcessorRules.GetOldCODIGOCONTACTOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraFacturaClienteCODIGOCONTACTO]; +end; + +procedure TInformeCabeceraFacturaClienteBusinessProcessorRules.SetCODIGOCONTACTOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraFacturaClienteCODIGOCONTACTO] := aValue; +end; + +function TInformeCabeceraFacturaClienteBusinessProcessorRules.GetBASEIMPONIBLEValue: Currency; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraFacturaClienteBASEIMPONIBLE]; +end; + +function TInformeCabeceraFacturaClienteBusinessProcessorRules.GetOldBASEIMPONIBLEValue: Currency; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraFacturaClienteBASEIMPONIBLE]; +end; + +procedure TInformeCabeceraFacturaClienteBusinessProcessorRules.SetBASEIMPONIBLEValue(const aValue: Currency); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraFacturaClienteBASEIMPONIBLE] := aValue; +end; + +function TInformeCabeceraFacturaClienteBusinessProcessorRules.GetDESCUENTOValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraFacturaClienteDESCUENTO]; +end; + +function TInformeCabeceraFacturaClienteBusinessProcessorRules.GetOldDESCUENTOValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraFacturaClienteDESCUENTO]; +end; + +procedure TInformeCabeceraFacturaClienteBusinessProcessorRules.SetDESCUENTOValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraFacturaClienteDESCUENTO] := aValue; +end; + +function TInformeCabeceraFacturaClienteBusinessProcessorRules.GetIMPORTEDESCUENTOValue: Currency; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraFacturaClienteIMPORTEDESCUENTO]; +end; + +function TInformeCabeceraFacturaClienteBusinessProcessorRules.GetOldIMPORTEDESCUENTOValue: Currency; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraFacturaClienteIMPORTEDESCUENTO]; +end; + +procedure TInformeCabeceraFacturaClienteBusinessProcessorRules.SetIMPORTEDESCUENTOValue(const aValue: Currency); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraFacturaClienteIMPORTEDESCUENTO] := aValue; +end; + +function TInformeCabeceraFacturaClienteBusinessProcessorRules.GetIVAValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraFacturaClienteIVA]; +end; + +function TInformeCabeceraFacturaClienteBusinessProcessorRules.GetOldIVAValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraFacturaClienteIVA]; +end; + +procedure TInformeCabeceraFacturaClienteBusinessProcessorRules.SetIVAValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraFacturaClienteIVA] := aValue; +end; + +function TInformeCabeceraFacturaClienteBusinessProcessorRules.GetIMPORTEIVAValue: Currency; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraFacturaClienteIMPORTEIVA]; +end; + +function TInformeCabeceraFacturaClienteBusinessProcessorRules.GetOldIMPORTEIVAValue: Currency; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraFacturaClienteIMPORTEIVA]; +end; + +procedure TInformeCabeceraFacturaClienteBusinessProcessorRules.SetIMPORTEIVAValue(const aValue: Currency); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraFacturaClienteIMPORTEIVA] := aValue; +end; + +function TInformeCabeceraFacturaClienteBusinessProcessorRules.GetIMPORTETOTALValue: Currency; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraFacturaClienteIMPORTETOTAL]; +end; + +function TInformeCabeceraFacturaClienteBusinessProcessorRules.GetOldIMPORTETOTALValue: Currency; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraFacturaClienteIMPORTETOTAL]; +end; + +procedure TInformeCabeceraFacturaClienteBusinessProcessorRules.SetIMPORTETOTALValue(const aValue: Currency); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraFacturaClienteIMPORTETOTAL] := aValue; +end; + +function TInformeCabeceraFacturaClienteBusinessProcessorRules.GetOBSERVACIONESValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraFacturaClienteOBSERVACIONES]; +end; + +function TInformeCabeceraFacturaClienteBusinessProcessorRules.GetOldOBSERVACIONESValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraFacturaClienteOBSERVACIONES]; +end; + +procedure TInformeCabeceraFacturaClienteBusinessProcessorRules.SetOBSERVACIONESValue(const aValue: IROStrings); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraFacturaClienteOBSERVACIONES] := aValue.Text; +end; + +function TInformeCabeceraFacturaClienteBusinessProcessorRules.GetFORMAPAGOValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraFacturaClienteFORMAPAGO]; +end; + +function TInformeCabeceraFacturaClienteBusinessProcessorRules.GetOldFORMAPAGOValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraFacturaClienteFORMAPAGO]; +end; + +procedure TInformeCabeceraFacturaClienteBusinessProcessorRules.SetFORMAPAGOValue(const aValue: IROStrings); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraFacturaClienteFORMAPAGO] := aValue.Text; +end; + +function TInformeCabeceraFacturaClienteBusinessProcessorRules.GetNIFCIFValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraFacturaClienteNIFCIF]; +end; + +function TInformeCabeceraFacturaClienteBusinessProcessorRules.GetOldNIFCIFValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraFacturaClienteNIFCIF]; +end; + +procedure TInformeCabeceraFacturaClienteBusinessProcessorRules.SetNIFCIFValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraFacturaClienteNIFCIF] := aValue; +end; + +function TInformeCabeceraFacturaClienteBusinessProcessorRules.GetNOMBREValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraFacturaClienteNOMBRE]; +end; + +function TInformeCabeceraFacturaClienteBusinessProcessorRules.GetOldNOMBREValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraFacturaClienteNOMBRE]; +end; + +procedure TInformeCabeceraFacturaClienteBusinessProcessorRules.SetNOMBREValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraFacturaClienteNOMBRE] := aValue; +end; + +function TInformeCabeceraFacturaClienteBusinessProcessorRules.GetCALLEValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraFacturaClienteCALLE]; +end; + +function TInformeCabeceraFacturaClienteBusinessProcessorRules.GetOldCALLEValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraFacturaClienteCALLE]; +end; + +procedure TInformeCabeceraFacturaClienteBusinessProcessorRules.SetCALLEValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraFacturaClienteCALLE] := aValue; +end; + +function TInformeCabeceraFacturaClienteBusinessProcessorRules.GetPROVINCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraFacturaClientePROVINCIA]; +end; + +function TInformeCabeceraFacturaClienteBusinessProcessorRules.GetOldPROVINCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraFacturaClientePROVINCIA]; +end; + +procedure TInformeCabeceraFacturaClienteBusinessProcessorRules.SetPROVINCIAValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraFacturaClientePROVINCIA] := aValue; +end; + +function TInformeCabeceraFacturaClienteBusinessProcessorRules.GetCODIGOPOSTALValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraFacturaClienteCODIGOPOSTAL]; +end; + +function TInformeCabeceraFacturaClienteBusinessProcessorRules.GetOldCODIGOPOSTALValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraFacturaClienteCODIGOPOSTAL]; +end; + +procedure TInformeCabeceraFacturaClienteBusinessProcessorRules.SetCODIGOPOSTALValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraFacturaClienteCODIGOPOSTAL] := aValue; +end; + +function TInformeCabeceraFacturaClienteBusinessProcessorRules.GetPOBLACIONValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraFacturaClientePOBLACION]; +end; + +function TInformeCabeceraFacturaClienteBusinessProcessorRules.GetOldPOBLACIONValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraFacturaClientePOBLACION]; +end; + +procedure TInformeCabeceraFacturaClienteBusinessProcessorRules.SetPOBLACIONValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraFacturaClientePOBLACION] := aValue; +end; + + +{ TInformeDetallesFacturaClienteBusinessProcessorRules } +constructor TInformeDetallesFacturaClienteBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TInformeDetallesFacturaClienteBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TInformeDetallesFacturaClienteBusinessProcessorRules.GetCODIGOFACTURAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesFacturaClienteCODIGOFACTURA]; +end; + +function TInformeDetallesFacturaClienteBusinessProcessorRules.GetOldCODIGOFACTURAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeDetallesFacturaClienteCODIGOFACTURA]; +end; + +procedure TInformeDetallesFacturaClienteBusinessProcessorRules.SetCODIGOFACTURAValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesFacturaClienteCODIGOFACTURA] := aValue; +end; + +function TInformeDetallesFacturaClienteBusinessProcessorRules.GetNUMCONCEPTOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesFacturaClienteNUMCONCEPTO]; +end; + +function TInformeDetallesFacturaClienteBusinessProcessorRules.GetOldNUMCONCEPTOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeDetallesFacturaClienteNUMCONCEPTO]; +end; + +procedure TInformeDetallesFacturaClienteBusinessProcessorRules.SetNUMCONCEPTOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesFacturaClienteNUMCONCEPTO] := aValue; +end; + +function TInformeDetallesFacturaClienteBusinessProcessorRules.GetDESCRIPCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesFacturaClienteDESCRIPCION]; +end; + +function TInformeDetallesFacturaClienteBusinessProcessorRules.GetOldDESCRIPCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeDetallesFacturaClienteDESCRIPCION]; +end; + +procedure TInformeDetallesFacturaClienteBusinessProcessorRules.SetDESCRIPCIONValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesFacturaClienteDESCRIPCION] := aValue; +end; + +function TInformeDetallesFacturaClienteBusinessProcessorRules.GetCANTIDADValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesFacturaClienteCANTIDAD]; +end; + +function TInformeDetallesFacturaClienteBusinessProcessorRules.GetOldCANTIDADValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeDetallesFacturaClienteCANTIDAD]; +end; + +procedure TInformeDetallesFacturaClienteBusinessProcessorRules.SetCANTIDADValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesFacturaClienteCANTIDAD] := aValue; +end; + +function TInformeDetallesFacturaClienteBusinessProcessorRules.GetIMPORTEUNIDADValue: Currency; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesFacturaClienteIMPORTEUNIDAD]; +end; + +function TInformeDetallesFacturaClienteBusinessProcessorRules.GetOldIMPORTEUNIDADValue: Currency; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeDetallesFacturaClienteIMPORTEUNIDAD]; +end; + +procedure TInformeDetallesFacturaClienteBusinessProcessorRules.SetIMPORTEUNIDADValue(const aValue: Currency); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesFacturaClienteIMPORTEUNIDAD] := aValue; +end; + +function TInformeDetallesFacturaClienteBusinessProcessorRules.GetIMPORTETOTALValue: Currency; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesFacturaClienteIMPORTETOTAL]; +end; + +function TInformeDetallesFacturaClienteBusinessProcessorRules.GetOldIMPORTETOTALValue: Currency; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeDetallesFacturaClienteIMPORTETOTAL]; +end; + +procedure TInformeDetallesFacturaClienteBusinessProcessorRules.SetIMPORTETOTALValue(const aValue: Currency); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesFacturaClienteIMPORTETOTAL] := aValue; +end; + +function TInformeDetallesFacturaClienteBusinessProcessorRules.GetTIPOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesFacturaClienteTIPO]; +end; + +function TInformeDetallesFacturaClienteBusinessProcessorRules.GetOldTIPOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeDetallesFacturaClienteTIPO]; +end; + +procedure TInformeDetallesFacturaClienteBusinessProcessorRules.SetTIPOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesFacturaClienteTIPO] := aValue; +end; + +function TInformeDetallesFacturaClienteBusinessProcessorRules.GetPOSICIONValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesFacturaClientePOSICION]; +end; + +function TInformeDetallesFacturaClienteBusinessProcessorRules.GetOldPOSICIONValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeDetallesFacturaClientePOSICION]; +end; + +procedure TInformeDetallesFacturaClienteBusinessProcessorRules.SetPOSICIONValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesFacturaClientePOSICION] := aValue; +end; + + +initialization + RegisterBusinessProcessorRules(RID_DarReferenciaFacturaDelta, TDarReferenciaFacturaBusinessProcessorRules); + RegisterBusinessProcessorRules(RID_FacturasClienteDelta, TFacturasClienteBusinessProcessorRules); + RegisterBusinessProcessorRules(RID_DetallesFacturasClienteDelta, TDetallesFacturasClienteBusinessProcessorRules); + RegisterBusinessProcessorRules(RID_InformeCabeceraFacturaClienteDelta, TInformeCabeceraFacturaClienteBusinessProcessorRules); + RegisterBusinessProcessorRules(RID_InformeDetallesFacturaClienteDelta, TInformeDetallesFacturaClienteBusinessProcessorRules); + +end. diff --git a/Modulos/Facturas de cliente/Reglas/serverlog.txt b/Modulos/Facturas de cliente/Reglas/serverlog.txt new file mode 100644 index 0000000..e69de29 diff --git a/Modulos/Facturas de cliente/Reglas/uBizFacturasCliente.pas b/Modulos/Facturas de cliente/Reglas/uBizFacturasCliente.pas new file mode 100644 index 0000000..946a8c3 --- /dev/null +++ b/Modulos/Facturas de cliente/Reglas/uBizFacturasCliente.pas @@ -0,0 +1,666 @@ +unit uBizFacturasCliente; + +interface + +uses + uDAInterfaces, uDADataTable, Classes, uBizContacto, DB, + uBizImportesDetalleBase, + uBizImportesCabeceraBase, uBizPresupuestosCliente, uDBSelectionList, + uExceptions, uBizInformesBase, schFacturasClienteClient_Intf, + uBizAlbaranesCliente; + +const + BIZ_FACTURASCLIENTE = 'Client.FacturasCliente'; + BIZ_DETALLESFACTURASCLIENTE = 'Client.DetallesFacturasCliente'; + + SITUACION_PENDIENTE = 'Pendiente'; + SITUACION_PAGADO = 'Pagado'; + + CTE_IVA1 = 16; + CTE_IVA2 = 1.16; + +type + IBizDetallesFacturasCliente = interface(IDetallesFacturasCliente) + ['{A628B3DE-2EF0-4A6E-AAFD-8BE582BDEE9A}'] + procedure CopyFrom(ADetallesAlbaranes : IBizDetallesAlbaranCliente); overload; + procedure CopyFrom(ADetallesFacturas : IBizDetallesFacturasCliente); overload; + procedure DesglosarIVA(IVA : Double); + end; + + IBizFacturasCliente = interface(IFacturasCliente) + ['{CE8B2685-0FA5-404C-B8FA-90618A815BFF}'] + function GetDetalles: IBizDetallesFacturasCliente; + procedure SetDetalles(Value: IBizDetallesFacturasCliente); + property Detalles: IBizDetallesFacturasCliente read GetDetalles write + SetDetalles; + + function GetCliente: IBizCliente; + procedure SetCliente(Value: IBizCliente); + property Cliente: IBizCliente read GetCliente write SetCliente; + + procedure Show; + + procedure CopyFrom(AFacturaCliente : IBizFacturasCliente); overload; + procedure CopyFrom(AAlbaranCliente : IBizAlbaranesCliente); overload; + procedure DesglosarIVA; + end; + + TBizDetallesFacturasCliente = class(TDetallesFacturasClienteDataTableRules, + IBizDetallesFacturasCliente, + IBizImportesDetalle, + IBizPuntosDetalle, + IBizVisibleDetalle, + IParche) // PARCHE *********************** + private + FIsAppend : Boolean; + FPosicionNueva : Integer; + FPuedoLanzarEvento : Boolean; // PARCHE *********************** + + procedure SetCANTIDADValue(const aValue: Integer); override; + procedure SetIMPORTEUNIDADValue(const aValue: Currency); override; + procedure SetIMPORTETOTALValue(const aValue: Currency); override; + + protected + procedure OnNewRecord(Sender: TDADataTable); override; + procedure BeforeInsert(Sender: TDADataTable); override; + procedure AfterPost(Sender: TDADataTable); override; + procedure AfterInsert(Sender: TDADataTable); override; + procedure AfterDelete(Sender: TDADataTable); override; + procedure BeforeDelete(Sender: TDADataTable); override; + + // PARCHE *********************** + procedure ActivarEventos; + procedure DesactivarEventos; + procedure Refrescar; + function PuedoLanzarEvento : Boolean; + public + procedure RecalcularImporte; + function DarSumaTotalImportes : Currency; + constructor Create(aDataTable: TDADataTable); override; + procedure CopyFrom(ADetallesAlbaranes : IBizDetallesAlbaranCliente); overload; + procedure CopyFrom(ADetallesFacturas : IBizDetallesFacturasCliente); overload; + procedure DesglosarIVA(IVA : Double); + end; + + + TBizFacturasCliente = class(TFacturasClienteDataTableRules, IBizFacturasCliente, + IBizImportesCabecera, ISelectedRowList, + IApplyUpdateFailedException, IBizInformesAware) + private + FCliente : IBizCliente; + FDetalles: IBizDetallesFacturasCliente; + FDetallesLink: TDADataSource; + FSelectedRows : TSelectedRowList; + protected + procedure ShowApplyUpdateFailed (const Error: EDAApplyUpdateFailed); + function GetDetalles: IBizDetallesFacturasCliente; + procedure SetDetalles(Value: IBizDetallesFacturasCliente); + + function GetCliente: IBizCliente; + procedure SetCliente(Value: IBizCliente); + + procedure OnNewRecord(Sender: TDADataTable); override; + + function GetSelectedRows : TSelectedRowList; + procedure BeforeDelete(Sender: TDADataTable); override; + procedure AfterDelete(Sender: TDADataTable); override; + procedure OnPostError(DataTable: TDADataTable; Error: EDatabaseError; + var Action: TDataAction); override; + procedure BeforeApplyUpdates(Sender : TDADataTable; const Delta : IDADelta); + public + procedure RecalcularImporte; + property Cliente: IBizCliente read GetCliente write SetCliente; + property Detalles: IBizDetallesFacturasCliente read GetDetalles write + SetDetalles; + procedure Show; + procedure Preview; + procedure Print; + procedure CopyFrom(AFacturaCliente : IBizFacturasCliente); overload; + procedure CopyFrom(AAlbaranCliente : IBizAlbaranesCliente); overload; + procedure DesglosarIVA; + + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + property SelectedRows : TSelectedRowList read GetSelectedRows; + end; + + procedure ValidarFacturaCliente (const AFacturaCliente : IBizFacturasCliente); + + +implementation + +uses + Windows, Dialogs, uDACDSDataTable, SysUtils, uEditorUtils, Variants, Math, + uDataModuleContactos, Controls, Forms, + uDataModuleBase, uDataModuleUsuarios, + uDataTableUtils, uDataModuleFacturasCliente, uEditarPreguntarIVA; + +var + FMasterDeleting : Boolean; + FCancelInsert : Boolean; + +procedure ValidarFacturaCliente (const AFacturaCliente : IBizFacturasCliente); +begin + if (FloatToStr(AFacturaCliente.FECHAFACTURA) = '0') then + raise Exception.Create('Debe indicar la fecha de esta factura'); + + if not Assigned(AFacturaCliente.Cliente) or + (AFacturaCliente.Cliente.DataTable.IsEmpty) then + raise Exception.Create('Debe indicar el cliente de esta factura'); + +{ AFacturaCliente.Edit; + if (FloatToStr(AFacturaCliente.FECHAPAGO) = '0') then + AFacturaCliente.SITUACION := SITUACION_PENDIENTE + else + AFacturaCliente.SITUACION := SITUACION_PAGADO; + AFacturaCliente.Post;} + + + if (Length(AFacturaCliente.REFERENCIA) = 0) then + begin + AFacturaCliente.Edit; + AFacturaCliente.REFERENCIA := dmFacturasCliente.DarNuevaReferencia; + AFacturaCliente.Post; + ShowMessage('A esta factura se le ha asignado la referencia ' + AFacturaCliente.REFERENCIA); + end; +end; + +constructor TBizFacturasCliente.Create(aDataTable: TDADataTable); +begin + inherited; + FCliente := NIL; + FDetallesLink := TDADataSource.Create(NIL); + FSelectedRows := TSelectedRowList.Create(aDataTable); + aDataTable.OnBeforeApplyUpdates := BeforeApplyUpdates; +end; + +destructor TBizFacturasCliente.Destroy; +begin + FCliente := NIL; + FDetalles := NIL; + FDetallesLink.Free; + FSelectedRows.Free; + inherited; +end; + +function TBizFacturasCliente.GetCliente: IBizCliente; +begin + if not Assigned(FCliente) or + ((CODIGOCONTACTO <> FCliente.Codigo) and + not (FCliente.DataTable.State in dsEditModes)) then + begin + FCliente := dmContactos.GetCliente(CODIGOCONTACTO); + if not FCliente.DataTable.Active then + FCliente.DataTable.Active := True; + if not FCliente.DataTable.IsEmpty then // Está vacío si la factura es nueva y no tiene cliente + begin + FCliente.Edit; + FCliente.NOMBRE := NOMBRE; + FCliente.NIFCIF := NIFCIF; + FCliente.CALLE := CALLE; + FCliente.CODIGOPOSTAL := CODIGOPOSTAL; + FCliente.PROVINCIA := PROVINCIA; + FCliente.POBLACION := POBLACION; + FCliente.Post; + end; + end; + Result := FCliente; +end; + +function TBizFacturasCliente.GetDetalles: IBizDetallesFacturasCliente; +begin + Result := FDetalles; +end; + +procedure TBizFacturasCliente.CopyFrom(AFacturaCliente : IBizFacturasCliente); +var + ACursor: TCursor; +begin +{ if not (State in dsEditModes) then + Edit; + ACursor := Screen.Cursor; + Screen.Cursor := crHourGlass; + Application.ProcessMessages; + try + CODIGOEMPRESA := APresupuesto.CODIGOEMPRESA; + CODIGOCONTACTO := APresupuesto.CODIGOCONTACTO; + BASEIMPONIBLE := APresupuesto.BASEIMPONIBLE; + DESCUENTO := APresupuesto.DESCUENTO; + IVA := APresupuesto.IVA; + OBSERVACIONES := APresupuesto.OBSERVACIONES; + FORMAPAGO := APresupuesto.FORMAPAGO; + CODIGOPRESUPUESTO := APresupuesto.CODIGO; + Cliente := APresupuesto.Cliente; + Detalles.CopyFrom(APresupuesto.Detalles); + RecalcularImporte; + + MessageBox(0, 'Se ha copiado correctamente el presupuesto elegido en este albarán.', 'Presupuesto copiado', MB_ICONWARNING or MB_OK); + + finally + Screen.Cursor := ACursor; + end;} +end; + +procedure TBizFacturasCliente.OnNewRecord(Sender: TDADataTable); +begin + inherited; + CODIGOEMPRESA := dmBase.CodigoEmpresa; + USUARIO := dmUsuarios.LoginInfo.UserID; + FECHAALTA := Date; + FECHAFACTURA := Date; + CODIGO := dmFacturasCliente.GetNextAutoinc; +end; + +procedure TBizFacturasCliente.Preview; +begin + dmFacturasCliente.Preview(Self.CODIGO); +end; + +procedure TBizFacturasCliente.SetCliente(Value: IBizCliente); +var + bEnEdicion : Boolean; +begin + bEnEdicion := (DataTable.State in dsEditModes); + if not bEnEdicion then + Edit; + FCliente := Value; + if Assigned(FCliente) then + begin + CODIGOCONTACTO := FCliente.CODIGO; + NOMBRE := FCliente.NOMBRE; + NIFCIF := FCliente.NIFCIF; + CALLE := FCliente.CALLE; + CODIGOPOSTAL := FCliente.CODIGOPOSTAL; + PROVINCIA := FCliente.PROVINCIA; + POBLACION := FCliente.POBLACION; + if not bEnEdicion then + Post; + end +end; + +procedure TBizFacturasCliente.SetDetalles(Value: IBizDetallesFacturasCliente); +begin + FDetalles := Value; + FDetallesLink.DataTable := Self.DataTable; + FDetalles.DataTable.MasterSource := FDetallesLink; +end; + +procedure TBizFacturasCliente.Show; +begin + ShowEditor(IBizFacturasCliente, Self, etItem); +end; + +procedure TBizDetallesFacturasCliente.ActivarEventos; +begin + FPuedoLanzarEvento := True; +end; + +procedure TBizDetallesFacturasCliente.AfterDelete(Sender: TDADataTable); +var + ACabecera : IBizImportesCabecera; +begin + inherited; + + // PARCHE ******************* + if not PuedoLanzarEvento then + Exit; + + if (not FMasterDeleting) and (not FCancelInsert) then + begin + ReasignarPosiciones(Self.DataTable); + if Assigned(DataTable.MasterSource) and + Supports(DataTable.MasterSource.DataTable, IBizImportesCabecera, ACabecera) then + ACabecera.RecalcularImporte; + end; + FCancelInsert := False; +end; + +procedure TBizDetallesFacturasCliente.AfterInsert(Sender: TDADataTable); +begin + inherited; + + // PARCHE ******************* + if not PuedoLanzarEvento then + Exit; + + FIsAppend := DataTable.EOF; + Post; + Edit; // Para volver a dejarlo en modo de edición +end; + +procedure TBizDetallesFacturasCliente.AfterPost(Sender: TDADataTable); +begin + inherited; + + // PARCHE ******************* + if not PuedoLanzarEvento then + Exit; + + if POSICION < 0 then + AsignarPosicion(Self.DataTable, FIsAppend); + + if NUMCONCEPTO < 0 then + AsignarNumConcepto(Self.DataTable); + + FIsAppend := False; +end; + +procedure TBizDetallesFacturasCliente.BeforeDelete(Sender: TDADataTable); +begin + inherited; + + // PARCHE ******************* + if not PuedoLanzarEvento then + Exit; + + if (DataTable.State in dsEditModes) then + DataTable.Cancel; + + if not FMasterDeleting then + FCancelInsert := not (DataTable.MasterSource.DataTable.FieldByName('CODIGO').AsInteger = CODIGOFACTURA); +end; + +procedure TBizDetallesFacturasCliente.BeforeInsert(Sender: TDADataTable); +begin + inherited; + + // PARCHE ******************* + if not PuedoLanzarEvento then + Exit; + + if Assigned(DataTable.MasterSource) and + (DataTable.MasterSource.DataTable.State in dsEditModes) then + DataTable.MasterSource.DataTable.Post; + + if GetRecordCount = 0 then + FPosicionNueva := -1 + else + FPosicionNueva := POSICION * (-1); +end; + +procedure TBizDetallesFacturasCliente.CopyFrom(ADetallesFacturas : IBizDetallesFacturasCliente); +begin + // +end; + +procedure TBizDetallesFacturasCliente.CopyFrom(ADetallesAlbaranes : IBizDetallesAlbaranCliente); +var + ImporteSinIva : Double; + AcumulaSobrante : Double; + ImporteSinIvaRedondeado : Currency; + +begin + DeleteAllTable(Self.DataTable); + + AcumulaSobrante := 0; + ADetallesAlbaranes.First; + while not ADetallesAlbaranes.EOF do + begin + Append; + DataTable.DisableControls; + DataTable.DisableEventHandlers; + try + TIPO := ADetallesAlbaranes.TIPO; + DESCRIPCION := ADetallesAlbaranes.DESCRIPCION; + CANTIDAD := ADetallesAlbaranes.CANTIDAD; + IMPORTEUNIDAD := ADetallesAlbaranes.IMPORTEUNIDAD; + VISIBLE := ADetallesAlbaranes.VISIBLE; + finally + DataTable.EnableControls; + DataTable.EnableEventHandlers; + end; + + RecalcularImporte; + Post; + ADetallesAlbaranes.Next; + end; + RecalcularSubtotales(DataTable); +end; + +constructor TBizDetallesFacturasCliente.Create(aDataTable: TDADataTable); +begin + inherited; + FPosicionNueva := 1; // Los conceptos empiezan a contar en 1 + + // PARCHE ******************* + FPuedoLanzarEvento := True; +end; + +function TBizDetallesFacturasCliente.DarSumaTotalImportes: Currency; +begin + Result := DarTotalDetalles(Self.DataTable, True, False); +end; + +procedure TBizDetallesFacturasCliente.DesactivarEventos; +begin + FPuedoLanzarEvento := False; +end; + +procedure TBizDetallesFacturasCliente.DesglosarIVA(IVA : Double); +var + ImporteSinIva : Double; + AcumulaSobrante : Double; + ImporteSinIvaRedondeado : Currency; +begin + AcumulaSobrante := 0; + + if DataTable.IsEmpty then + Exit; + + DataTable.First; + while not DataTable.EOF do + begin + DataTable.Edit; + DataTable.DisableControls; + DataTable.DisableEventHandlers; + try + ImporteSinIva := IMPORTEUNIDAD / (1 + IVA/100); + ImporteSinIvaRedondeado := RoundTo(ImporteSinIva, -2); + if ImporteSinIva < ImporteSinIvaRedondeado then + AcumulaSobrante := AcumulaSobrante - (CANTIDAD*(ImporteSinIvaRedondeado - ImporteSinIva)) + else + AcumulaSobrante := AcumulaSobrante + (CANTIDAD*(ImporteSinIva - ImporteSinIvaRedondeado)); + IMPORTEUNIDAD := ImporteSinIvaRedondeado; + finally + DataTable.EnableControls; + DataTable.EnableEventHandlers; + end; + RecalcularImporte; + DataTable.Post; + DataTable.Next; + end; + + // Agregamos al último concepto de los detalles los decimales + // que hemos ido acumulando + while (not DataTable.BOF) and (TIPO <> TIPODETALLE_CONCEPTO) do + DataTable.Prior; + Edit; + IMPORTEUNIDAD := IMPORTEUNIDAD + AcumulaSobrante; + RecalcularSubtotales(DataTable); +end; + +procedure TBizDetallesFacturasCliente.OnNewRecord(Sender: TDADataTable); +begin + inherited; + + // PARCHE ******************* + if not PuedoLanzarEvento then + Exit; + + POSICION := FPosicionNueva; + NUMCONCEPTO := -1; + TIPO := TIPODETALLE_CONCEPTO; + VISIBLE := VISIBLE_TRUE; +end; + + +function TBizFacturasCliente.GetSelectedRows: TSelectedRowList; +begin + Result := FSelectedRows; +end; + +procedure TBizFacturasCliente.ShowApplyUpdateFailed( + const Error: EDAApplyUpdateFailed); +begin + if (Pos(AUF_FKVIOLATION, Error.Message) > 0) then + MessageBox(0, 'No se puede borrar esta factura porque...', 'Atención', MB_ICONWARNING or MB_OK); +end; + + +procedure TBizFacturasCliente.BeforeDelete(Sender: TDADataTable); +begin + inherited; + if not dmFacturasCliente.PuedoEliminarFactura(CODIGO) then + raise Exception.Create('No se puede borrar esta factura porque...'); + FMasterDeleting := True; // Para que los detalles de borren de golpe y no recalcule posiciones ni totales +end; + +procedure TBizFacturasCliente.AfterDelete(Sender: TDADataTable); +begin + inherited; + FMasterDeleting := False; +end; + +procedure TBizFacturasCliente.Print; +begin + dmFacturasCliente.Print(Self.CODIGO); +end; + +procedure TBizFacturasCliente.OnPostError(DataTable: TDADataTable; + Error: EDatabaseError; var Action: TDataAction); +begin + inherited; + Action := daAbort; + if (Pos(AUF_HAVEVALUE, Error.Message) > 0) then + begin + if (Pos('contacto', Error.Message) > 0) then + MessageBox(0, 'Debe indicar el cliente de esta factura', 'Atención', MB_ICONWARNING or MB_OK) + else + if (Pos('Fecha', Error.Message) > 0) then + MessageBox(0, 'Debe indicar la fecha de esta factura', 'Atención', MB_ICONWARNING or MB_OK) + else + raise Error; + end + else + raise Error; +end; + +procedure TBizFacturasCliente.BeforeApplyUpdates(Sender: TDADataTable; + const Delta: IDADelta); +var + i : integer; +begin + for i := 0 to Delta.Count - 1 do + case Delta.Changes[i].ChangeType of + ctInsert, ctUpdate : ValidarFacturaCliente(Self); + //ctDelete : + end; +end; + +function TBizDetallesFacturasCliente.PuedoLanzarEvento: Boolean; +begin + Result := FPuedoLanzarEvento; +end; + +procedure TBizDetallesFacturasCliente.RecalcularImporte; +begin + RecalcularImporteDetalle(Self.DataTable, True, False); +end; + +procedure TBizFacturasCliente.RecalcularImporte; +begin + RecalcularImportesCabecera(Self.DataTable, Detalles.DataTable); +end; + +procedure TBizFacturasCliente.CopyFrom(AAlbaranCliente: IBizAlbaranesCliente); +var + ACursor: TCursor; +begin + if not (State in dsEditModes) then + Edit; + if not (AAlbaranCliente.DataTable.Active) then + AAlbaranCliente.DataTable.Active := True; + + ACursor := Screen.Cursor; + Screen.Cursor := crHourGlass; + Application.ProcessMessages; + try + CODIGOEMPRESA := AAlbaranCliente.CODIGOEMPRESA; + CODIGOCONTACTO := AAlbaranCliente.CODIGOCONTACTO; + NOMBRE := AAlbaranCliente.Cliente.NOMBRE; + BASEIMPONIBLE := AAlbaranCliente.BASEIMPONIBLE; + DESCUENTO := AAlbaranCliente.DESCUENTO; + IVA := AAlbaranCliente.IVA; + OBSERVACIONES := AAlbaranCliente.OBSERVACIONES; + FORMAPAGO := AAlbaranCliente.FORMAPAGO; + CODIGOALBARAN := AAlbaranCliente.CODIGO; + Cliente := AAlbaranCliente.Cliente; + + Detalles.CopyFrom(AAlbaranCliente.Detalles); + + RecalcularImporte; + finally + Screen.Cursor := ACursor; + end; +end; + +procedure TBizDetallesFacturasCliente.Refrescar; +begin + DataTable.Refresh; +end; + +procedure TBizDetallesFacturasCliente.SetCANTIDADValue(const aValue: Integer); +begin + if aValue = 0 + then DataTable.Fields[idx_DetallesFacturasClienteCANTIDAD].AsVariant := Null + else inherited; +end; + +procedure TBizDetallesFacturasCliente.SetIMPORTETOTALValue(const aValue: Currency); +begin + if aValue = 0 + then DataTable.Fields[idx_DetallesFacturasClienteIMPORTETOTAL].AsVariant := Null + else inherited; +end; + +procedure TBizDetallesFacturasCliente.SetIMPORTEUNIDADValue(const aValue: Currency); +begin + if aValue = 0 then + DataTable.Fields[idx_DetallesFacturasClienteIMPORTEUNIDAD].AsVariant := Null + else + inherited; +end; + +procedure TBizFacturasCliente.DesglosarIVA; +var + aIVA : Double; + ACursor: TCursor; +begin + aIVA := Self.IVA; + + if PreguntarIVA(aIVA) then + begin + ACursor := Screen.Cursor; + Screen.Cursor := crHourGlass; + Application.ProcessMessages; + try + DataTable.Edit; + Self.IVA := aIVA; + Detalles.DesglosarIVA(aIVA); + RecalcularImporte; + finally + Screen.Cursor := ACursor; + end; + MessageBox(0, 'Se ha desglosado el IVA de la factura', 'Información', MB_ICONINFORMATION or MB_OK) + end; +end; + +initialization + FMasterDeleting := False; + RegisterDataTableRules(BIZ_DETALLESFACTURASCLIENTE, TBizDetallesFacturasCliente); + RegisterDataTableRules(BIZ_FACTURASCLIENTE, TBizFacturasCliente); + +finalization + +end. diff --git a/Modulos/Facturas de cliente/Servidor/srvFacturasCliente_Impl.ddp b/Modulos/Facturas de cliente/Servidor/srvFacturasCliente_Impl.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Facturas de cliente/Servidor/srvFacturasCliente_Impl.ddp differ diff --git a/Modulos/Facturas de cliente/Servidor/srvFacturasCliente_Impl.dfm b/Modulos/Facturas de cliente/Servidor/srvFacturasCliente_Impl.dfm new file mode 100644 index 0000000..b180c54 --- /dev/null +++ b/Modulos/Facturas de cliente/Servidor/srvFacturasCliente_Impl.dfm @@ -0,0 +1,1353 @@ +object srvFacturasCliente: TsrvFacturasCliente + OldCreateOrder = True + RequiresSession = True + SessionManager = dmServer.SessionManager + AcquireConnection = True + ConnectionName = 'IBX' + ServiceSchema = schFacturasCliente + ServiceAdapter = DABINAdapter + Left = 711 + Top = 310 + Height = 490 + Width = 347 + object schFacturasCliente: TDASchema + ConnectionManager = dmServer.ConnectionManager + DataDictionary = dmServer.DataDictionary + Diagrams = dmServer.DADiagrams + Datasets = < + item + Params = <> + Statements = < + item + Connection = 'IBX' + TargetTable = 'FACTURASCLIENTE' + SQL = 'SELECT * FROM DAR_REFERENCIA_FACTURACLIENTE' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'REFERENCIA' + TableField = 'REFERENCIA' + end> + end> + Name = 'DarReferenciaFactura' + Fields = < + item + Name = 'REFERENCIA' + DataType = datString + Size = 20 + BlobType = dabtUnknown + DictionaryEntry = 'REFERENCIA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end + item + Params = <> + Statements = < + item + Connection = 'IBX' + TargetTable = 'FACTURASCLIENTE' + SQL = + 'SELECT '#10' CODIGOEMPRESA, CODIGO, FECHAALTA, USUARIO, FECHAFACT' + + 'URA, REFERENCIA,'#10' BASEIMPONIBLE, DESCUENTO, IMPORTEDESCUENTO,' + + ' IVA, IMPORTEIVA, '#10' IMPORTETOTAL, OBSERVACIONES, FORMAPAGO, C' + + 'ODIGOCONTACTO, '#10' NIFCIF, NOMBRE, CALLE, PROVINCIA, CODIGOPOST' + + 'AL, POBLACION, CODIGOALBARAN'#10' FROM'#10' FACTURASCLIENTE' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'CODIGOEMPRESA' + TableField = 'CODIGOEMPRESA' + end + item + DatasetField = 'CODIGO' + TableField = 'CODIGO' + end + item + DatasetField = 'FECHAALTA' + TableField = 'FECHAALTA' + end + item + DatasetField = 'USUARIO' + TableField = 'USUARIO' + end + item + DatasetField = 'FECHAFACTURA' + TableField = 'FECHAFACTURA' + end + item + DatasetField = 'BASEIMPONIBLE' + TableField = 'BASEIMPONIBLE' + end + item + DatasetField = 'DESCUENTO' + TableField = 'DESCUENTO' + end + item + DatasetField = 'IMPORTEDESCUENTO' + TableField = 'IMPORTEDESCUENTO' + end + item + DatasetField = 'IVA' + TableField = 'IVA' + end + item + DatasetField = 'IMPORTEIVA' + TableField = 'IMPORTEIVA' + end + item + DatasetField = 'IMPORTETOTAL' + TableField = 'IMPORTETOTAL' + end + item + DatasetField = 'OBSERVACIONES' + TableField = 'OBSERVACIONES' + end + item + DatasetField = 'FORMAPAGO' + TableField = 'FORMAPAGO' + end + item + DatasetField = 'CODIGOCONTACTO' + TableField = 'CODIGOCONTACTO' + end + item + DatasetField = 'NIFCIF' + TableField = 'NIFCIF' + end + item + DatasetField = 'NOMBRE' + TableField = 'NOMBRE' + end + item + DatasetField = 'CALLE' + TableField = 'CALLE' + end + item + DatasetField = 'PROVINCIA' + TableField = 'PROVINCIA' + end + item + DatasetField = 'CODIGOPOSTAL' + TableField = 'CODIGOPOSTAL' + end + item + DatasetField = 'POBLACION' + TableField = 'POBLACION' + end + item + DatasetField = 'REFERENCIA' + TableField = 'REFERENCIA' + end + item + DatasetField = 'CODIGOALBARAN' + TableField = 'CODIGOALBARAN' + end> + end> + Name = 'FacturasCliente' + Fields = < + item + Name = 'CODIGOEMPRESA' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'CODIGOEMPRESA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGO' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'CODIGOFACTURACLIENTE' + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHAALTA' + DataType = datDateTime + BlobType = dabtUnknown + DictionaryEntry = 'FECHAALTA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'USUARIO' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DictionaryEntry = 'USUARIO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHAFACTURA' + DataType = datDateTime + BlobType = dabtUnknown + DictionaryEntry = 'FECHAFACTURA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'REFERENCIA' + DataType = datString + Size = 20 + BlobType = dabtUnknown + DictionaryEntry = 'REFERENCIA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'BASEIMPONIBLE' + DataType = datCurrency + BlobType = dabtUnknown + DictionaryEntry = 'BASEIMPONIBLE' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'DESCUENTO' + DataType = datFloat + BlobType = dabtUnknown + DictionaryEntry = 'DESCUENTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTEDESCUENTO' + DataType = datCurrency + BlobType = dabtUnknown + DictionaryEntry = 'IMPORTEDESCUENTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IVA' + DataType = datFloat + BlobType = dabtUnknown + DictionaryEntry = 'IVA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTEIVA' + DataType = datCurrency + BlobType = dabtUnknown + DictionaryEntry = 'IMPORTEIVA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTETOTAL' + DataType = datCurrency + BlobType = dabtUnknown + DictionaryEntry = 'IMPORTETOTAL' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'OBSERVACIONES' + DataType = datMemo + BlobType = dabtUnknown + DictionaryEntry = 'OBSERVACIONES' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FORMAPAGO' + DataType = datMemo + BlobType = dabtUnknown + DictionaryEntry = 'FORMAPAGO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOCONTACTO' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'CODIGOCONTACTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NIFCIF' + DataType = datString + Size = 10 + BlobType = dabtUnknown + DictionaryEntry = 'NIFCIF' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NOMBRE' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DictionaryEntry = 'NOMBRE' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CALLE' + DataType = datString + Size = 150 + BlobType = dabtUnknown + DictionaryEntry = 'CALLE' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PROVINCIA' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DictionaryEntry = 'PROVINCIA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOPOSTAL' + DataType = datString + Size = 5 + BlobType = dabtUnknown + DictionaryEntry = 'CODIGOPOSTAL' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'POBLACION' + DataType = datString + Size = 40 + BlobType = dabtUnknown + DictionaryEntry = 'POBLACION' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOALBARAN' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end + item + Params = < + item + Name = 'CODIGOFACTURA' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'DETALLESFACTURASCLIENTE' + SQL = + 'SELECT '#10' CODIGOFACTURA, NUMCONCEPTO, DESCRIPCION, CANTIDAD, '#10 + + ' IMPORTEUNIDAD, IMPORTETOTAL, POSICION, TIPO, VISIBLE'#10' FROM'#10 + + ' DETALLESFACTURASCLIENTE'#10' WHERE CODIGOFACTURA = :CODIGOFACTU' + + 'RA'#10' ORDER BY POSICION;' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'NUMCONCEPTO' + TableField = 'NUMCONCEPTO' + end + item + DatasetField = 'DESCRIPCION' + TableField = 'DESCRIPCION' + end + item + DatasetField = 'CANTIDAD' + TableField = 'CANTIDAD' + end + item + DatasetField = 'IMPORTEUNIDAD' + TableField = 'IMPORTEUNIDAD' + end + item + DatasetField = 'IMPORTETOTAL' + TableField = 'IMPORTETOTAL' + end + item + DatasetField = 'POSICION' + TableField = 'POSICION' + end + item + DatasetField = 'TIPO' + TableField = 'TIPO' + end + item + DatasetField = 'CODIGOFACTURA' + TableField = 'CODIGOFACTURA' + end + item + DatasetField = 'VISIBLE' + TableField = 'VISIBLE' + end> + end> + Name = 'DetallesFacturasCliente' + Fields = < + item + Name = 'CODIGOFACTURA' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'CODIGOFACTURACLIENTE' + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NUMCONCEPTO' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'NUMCONCEPTO' + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'POSICION' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'POSICIONCONCEPTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'TIPO' + DataType = datString + Size = 1 + Description = 'Cap'#237'tulo, etc' + BlobType = dabtUnknown + DictionaryEntry = 'TIPODETALLESFACTURACLIENTE' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'DESCRIPCION' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DictionaryEntry = 'DESCRIPCION' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CANTIDAD' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'CANTIDAD' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTEUNIDAD' + DataType = datCurrency + BlobType = dabtUnknown + DictionaryEntry = 'IMPORTEUNIDAD' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTETOTAL' + DataType = datCurrency + BlobType = dabtUnknown + DictionaryEntry = 'IMPORTETOTAL' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'VISIBLE' + DataType = datString + Size = 1 + BlobType = dabtUnknown + DictionaryEntry = 'DetallesFacturasCliente_VISIBLE' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end + item + Params = < + item + Name = 'CODIGO' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'FACTURASCLIENTE' + SQL = + 'SELECT '#10' CODIGOEMPRESA, CODIGO, FECHAALTA, USUARIO, FECHAFACT' + + 'URA, REFERENCIA,'#10' BASEIMPONIBLE, DESCUENTO, IMPORTEDESCUENTO,' + + ' IVA, IMPORTEIVA, '#10' IMPORTETOTAL, OBSERVACIONES, FORMAPAGO, C' + + 'ODIGOCONTACTO, '#10' NIFCIF, NOMBRE, CALLE, PROVINCIA, CODIGOPOST' + + 'AL, POBLACION'#10' FROM'#10' FACTURASCLIENTE'#10' WHERE CODIGO = :CODIG' + + 'O' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'CODIGOEMPRESA' + TableField = 'CODIGOEMPRESA' + end + item + DatasetField = 'CODIGO' + TableField = 'CODIGO' + end + item + DatasetField = 'FECHAALTA' + TableField = 'FECHAALTA' + end + item + DatasetField = 'USUARIO' + TableField = 'USUARIO' + end + item + DatasetField = 'CODIGOCONTACTO' + TableField = 'CODIGOCONTACTO' + end + item + DatasetField = 'BASEIMPONIBLE' + TableField = 'BASEIMPONIBLE' + end + item + DatasetField = 'DESCUENTO' + TableField = 'DESCUENTO' + end + item + DatasetField = 'IMPORTEDESCUENTO' + TableField = 'IMPORTEDESCUENTO' + end + item + DatasetField = 'IVA' + TableField = 'IVA' + end + item + DatasetField = 'IMPORTEIVA' + TableField = 'IMPORTEIVA' + end + item + DatasetField = 'IMPORTETOTAL' + TableField = 'IMPORTETOTAL' + end + item + DatasetField = 'OBSERVACIONES' + TableField = 'OBSERVACIONES' + end + item + DatasetField = 'FORMAPAGO' + TableField = 'FORMAPAGO' + end + item + DatasetField = 'NOMBRE' + TableField = 'NOMBRE' + end + item + DatasetField = 'NIFCIF' + TableField = 'NIFCIF' + end + item + DatasetField = 'CALLE' + TableField = 'CALLE' + end + item + DatasetField = 'CODIGOPOSTAL' + TableField = 'CODIGOPOSTAL' + end + item + DatasetField = 'POBLACION' + TableField = 'POBLACION' + end + item + DatasetField = 'FECHAFACTURA' + TableField = 'FECHAFACTURA' + end + item + DatasetField = 'PROVINCIA' + TableField = 'PROVINCIA' + end + item + DatasetField = 'REFERENCIA' + TableField = 'REFERENCIA' + end> + end> + Name = 'InformeCabeceraFacturaCliente' + Fields = < + item + Name = 'CODIGOEMPRESA' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'CODIGOEMPRESA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGO' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'CODIGOFACTURACLIENTE' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHAALTA' + DataType = datDateTime + BlobType = dabtUnknown + DictionaryEntry = 'FECHAALTA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'USUARIO' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DictionaryEntry = 'USUARIO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHAFACTURA' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + DictionaryEntry = 'FECHAFACTURACLIENTE' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'REFERENCIA' + DataType = datString + Size = 20 + BlobType = dabtUnknown + DictionaryEntry = 'REFERENCIA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOCONTACTO' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'CODIGOCONTACTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'BASEIMPONIBLE' + DataType = datCurrency + BlobType = dabtUnknown + DictionaryEntry = 'BASEIMPONIBLE' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'DESCUENTO' + DataType = datFloat + BlobType = dabtUnknown + DictionaryEntry = 'DESCUENTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTEDESCUENTO' + DataType = datCurrency + BlobType = dabtUnknown + DictionaryEntry = 'IMPORTEDESCUENTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IVA' + DataType = datFloat + BlobType = dabtUnknown + DictionaryEntry = 'IVA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTEIVA' + DataType = datCurrency + BlobType = dabtUnknown + DictionaryEntry = 'IMPORTEIVA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTETOTAL' + DataType = datCurrency + BlobType = dabtUnknown + DictionaryEntry = 'IMPORTETOTAL' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'OBSERVACIONES' + DataType = datMemo + BlobType = dabtUnknown + DictionaryEntry = 'OBSERVACIONES' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FORMAPAGO' + DataType = datMemo + BlobType = dabtUnknown + DictionaryEntry = 'FORMAPAGO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NIFCIF' + DataType = datString + Size = 10 + BlobType = dabtUnknown + DictionaryEntry = 'NIFCIF' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NOMBRE' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DictionaryEntry = 'NOMBRE' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CALLE' + DataType = datString + Size = 150 + BlobType = dabtUnknown + DictionaryEntry = 'CALLE' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PROVINCIA' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DictionaryEntry = 'PROVINCIA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOPOSTAL' + DataType = datString + Size = 5 + BlobType = dabtUnknown + DictionaryEntry = 'CODIGOPOSTAL' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'POBLACION' + DataType = datString + Size = 40 + BlobType = dabtUnknown + DictionaryEntry = 'POBLACION' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end + item + Params = < + item + Name = 'CODIGOFACTURA' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'DETALLESFACTURASCLIENTE' + SQL = + 'SELECT '#10' CODIGOFACTURA, NUMCONCEPTO, DESCRIPCION, CANTIDAD, '#10 + + ' IMPORTEUNIDAD, IMPORTETOTAL, POSICION, TIPO'#10'FROM DETALLESFAC' + + 'TURASCLIENTE'#10'WHERE CODIGOFACTURA = :CODIGOFACTURA AND'#10'VISIBLE = ' + + #39'S'#39#10'ORDER BY POSICION' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'NUMCONCEPTO' + TableField = 'NUMCONCEPTO' + end + item + DatasetField = 'DESCRIPCION' + TableField = 'DESCRIPCION' + end + item + DatasetField = 'CANTIDAD' + TableField = 'CANTIDAD' + end + item + DatasetField = 'IMPORTEUNIDAD' + TableField = 'IMPORTEUNIDAD' + end + item + DatasetField = 'IMPORTETOTAL' + TableField = 'IMPORTETOTAL' + end + item + DatasetField = 'TIPO' + TableField = 'TIPO' + end + item + DatasetField = 'POSICION' + TableField = 'POSICION' + end + item + DatasetField = 'CODIGOFACTURA' + TableField = 'CODIGOFACTURA' + end> + end> + Name = 'InformeDetallesFacturaCliente' + Fields = < + item + Name = 'CODIGOFACTURA' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'CODIGOFACTURACLIENTE' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NUMCONCEPTO' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'NUMCONCEPTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'DESCRIPCION' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DictionaryEntry = 'DESCRIPCION' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CANTIDAD' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'CANTIDAD' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTEUNIDAD' + DataType = datCurrency + BlobType = dabtUnknown + DictionaryEntry = 'IMPORTEUNIDAD' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTETOTAL' + DataType = datCurrency + BlobType = dabtUnknown + DictionaryEntry = 'IMPORTETOTAL' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'TIPO' + DataType = datString + Size = 1 + Description = 'Cap'#237'tulo, etc' + BlobType = dabtUnknown + DictionaryEntry = 'TIPODETALLESFACTURACLIENTE' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'POSICION' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'POSICIONCONCEPTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end> + Commands = <> + RelationShips = < + item + Name = 'FK_DetallesFacturasCliente_FacturasCliente' + MasterDatasetName = 'FacturasCliente' + MasterFields = 'CODIGO' + DetailDatasetName = 'DetallesFacturasCliente' + DetailFields = 'CODIGOFACTURA' + end + item + Name = 'FK_InformeDetallesFacturaCliente_InformeCabeceraFacturaCliente' + MasterDatasetName = 'InformeCabeceraFacturaCliente' + MasterFields = 'CODIGO' + DetailDatasetName = 'InformeDetallesFacturaCliente' + DetailFields = 'CODIGOFACTURA' + end> + UpdateRules = < + item + Name = 'Insert FacturasCliente' + DoUpdate = False + DoInsert = True + DoDelete = False + DatasetName = 'FacturasCliente' + FailureBehaviour = fbRaiseException + end + item + Name = 'Update FacturasCliente' + DoUpdate = True + DoInsert = False + DoDelete = False + DatasetName = 'FacturasCliente' + FailureBehaviour = fbRaiseException + end + item + Name = 'Delete DetallesFacturasCliente' + DoUpdate = False + DoInsert = False + DoDelete = True + DatasetName = 'DetallesFacturasCliente' + FailureBehaviour = fbRaiseException + end + item + Name = 'Insert DetallesFacturasCliente' + DoUpdate = False + DoInsert = True + DoDelete = False + DatasetName = 'DetallesFacturasCliente' + FailureBehaviour = fbRaiseException + end + item + Name = 'Update DetallesFacturasCliente' + DoUpdate = True + DoInsert = False + DoDelete = False + DatasetName = 'DetallesFacturasCliente' + FailureBehaviour = fbRaiseException + end + item + Name = 'Delete FacturasCliente' + DoUpdate = False + DoInsert = False + DoDelete = True + DatasetName = 'FacturasCliente' + FailureBehaviour = fbRaiseException + end> + Left = 48 + Top = 24 + end + object frxDBDetalles: TfrxDBDataset + UserName = 'frxDBDetalles' + CloseDataSource = False + DataSource = DADataDetalles + Left = 200 + Top = 128 + end + object frxDBCabecera: TfrxDBDataset + UserName = 'frxDBCabecera' + CloseDataSource = False + DataSource = DADataCabecera + Left = 120 + Top = 128 + end + object DADataCabecera: TDADataSource + DataTable = tbl_FacturaCliente + Left = 120 + Top = 176 + end + object DADataDetalles: TDADataSource + DataTable = tbl_DetallesFacturaCliente + Left = 200 + Top = 176 + end + object frxReport1: TfrxReport + Version = '3.23.7' + DotMatrixReport = False + EngineOptions.DoublePass = True + IniFile = '\Software\Fast Reports' + PreviewOptions.Buttons = [pbPrint, pbLoad, pbSave, pbExport, pbZoom, pbFind, pbOutline, pbPageSetup, pbTools, pbEdit, pbNavigator] + PreviewOptions.OutlineWidth = 180 + PreviewOptions.Zoom = 1.000000000000000000 + PrintOptions.Printer = 'Default' + ReportOptions.CreateDate = 37871.995398692100000000 + ReportOptions.Description.Strings = ( + 'Demonstrates how to create simple list report.') + ReportOptions.LastChange = 38763.819912650500000000 + ReportOptions.VersionBuild = '1' + ReportOptions.VersionMajor = '12' + ReportOptions.VersionMinor = '13' + ReportOptions.VersionRelease = '1' + ScriptLanguage = 'PascalScript' + ScriptText.Strings = ( + 'procedure PresupuestoRelOnBeforePrint(Sender: TfrxComponent);' + 'begin' + ' PresupuestoRel.Lines.Clear;' + ' if = '#39#39' then' + ' PresupuestoRel.Lines.Add('#39'-'#39')' + ' else' + + ' PresupuestoRel.Lines.Add();' + 'end;' + '' + 'procedure DatosClienteOnBeforePrint(Sender: TfrxComponent);' + 'var' + ' cadenaAux: String;' + 'begin' + ' DatosCliente.Lines.Clear;' + ' DatosCliente.Lines.Add();' + '' + ' if ( <> '#39#39')' + ' or ( <> '#39#39') then' + + ' DatosCliente.Lines.Add( + );' + '' + ' CadenaAux := '#39#39';' + ' if <> '#39#39' then' + ' if CadenaAux = '#39#39' then' + + ' CadenaAux := CadenaAux + '#39'Telf:'#39' + ' + ' else' + + ' CadenaAux := CadenaAux + '#39' / '#39' + ;' + '' + ' if <> '#39#39' then' + ' if CadenaAux = '#39#39' then' + + ' CadenaAux := CadenaAux + '#39'Telf:'#39' + ' + ' else' + + ' CadenaAux := CadenaAux + '#39' / '#39' + ;' + '' + ' if <> '#39#39' then' + ' if CadenaAux = '#39#39' then' + + ' CadenaAux := CadenaAux + '#39'Telf:'#39' + ' + ' else' + + ' CadenaAux := CadenaAux + '#39' / '#39' + ' + + ';' + '' + ' DatosCliente.Lines.Add(CadenaAux);' + 'end;' + '' + 'procedure BandaDetallesOnBeforePrint(Sender: TfrxComponent);' + 'begin' + ' case of' + ' '#39'C'#39': begin' + ' MemoCampo12.Style := '#39'Concepto normal'#39';' + ' MemoCampo2.Style := '#39'Concepto normal'#39';' + ' MemoCampo3.Style := '#39'Concepto normal'#39';' + ' MemoCampo4.Style := '#39'Concepto normal'#39';' + ' end;' + ' '#39'S'#39': begin' + ' MemoCampo12.Style := '#39'Concepto subtotal'#39';' + ' MemoCampo2.Style := '#39'Concepto subtotal'#39';' + ' MemoCampo3.Style := '#39'Concepto subtotal'#39';' + ' MemoCampo4.Style := '#39'Concepto subtotal'#39';' + ' end;' + ' '#39'T'#39': begin' + ' MemoCampo12.Style := '#39'Concepto titulo'#39';' + ' MemoCampo2.Style := '#39'Concepto titulo'#39';' + ' MemoCampo3.Style := '#39'Concepto titulo'#39';' + ' MemoCampo4.Style := '#39'Concepto titulo'#39';' + ' end;' + ' end;' + 'end;' + '' + 'procedure ReportSummary1OnBeforePrint(Sender: TfrxComponent);' + 'begin' + + ' Engine.CurY := Engine.CurY + Engine.FreeSpace - ReportSum' + + 'mary1.Height - 1;' + 'end;' + '' + 'begin' + '' + 'end.') + StoreInDFM = False + Left = 40 + Top = 128 + Datasets = < + item + DataSet = frxDBCabecera + DataSetName = 'frxDBCabecera' + end + item + DataSet = frxDBDetalles + DataSetName = 'frxDBDetalles' + end> + Variables = <> + Style = < + item + Name = 'Concepto normal' + Color = clNone + Font.Charset = ANSI_CHARSET + Font.Color = clWindowText + Font.Height = -13 + Font.Name = 'Tahoma' + Font.Style = [] + end + item + Name = 'Concepto subtotal' + Color = 15790320 + Font.Charset = ANSI_CHARSET + Font.Color = clWindowText + Font.Height = -13 + Font.Name = 'Tahoma' + Font.Style = [fsBold] + end + item + Name = 'Cabecera de columna' + Color = 15790320 + Font.Charset = ANSI_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Tahoma' + Font.Style = [fsBold] + Frame.Typ = [ftLeft, ftRight, ftTop, ftBottom] + end + item + Name = 'Concepto titulo' + Color = clNone + Font.Charset = ANSI_CHARSET + Font.Color = clWindowText + Font.Height = -13 + Font.Name = 'Tahoma' + Font.Style = [fsBold] + end> + end + object tbl_FacturaCliente: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = <> + Params = <> + MasterMappingMode = mmDataRequest + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteFetchEnabled = False + SchemaCall.Params = <> + DataRequestCall.Params = <> + DataUpdateCall.Params = <> + ScriptCall.Params = <> + ReadOnly = False + Adapter = DABINAdapter + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + IndexDefs = <> + Left = 120 + Top = 232 + end + object tbl_DetallesFacturaCliente: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = <> + Params = <> + MasterMappingMode = mmDataRequest + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteFetchEnabled = False + SchemaCall.Params = <> + DataRequestCall.Params = <> + DataUpdateCall.Params = <> + ScriptCall.Params = <> + ReadOnly = False + Adapter = DABINAdapter + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + IndexDefs = <> + Left = 200 + Top = 232 + end + object frxBarCodeObject1: TfrxBarCodeObject + Left = 24 + Top = 296 + end + object frxOLEObject1: TfrxOLEObject + Left = 56 + Top = 296 + end + object frxChartObject1: TfrxChartObject + Left = 24 + Top = 328 + end + object frxRichObject1: TfrxRichObject + Left = 56 + Top = 328 + end + object frxCrossObject1: TfrxCrossObject + Left = 88 + Top = 296 + end + object frxCheckBoxObject1: TfrxCheckBoxObject + Left = 88 + Top = 328 + end + object frxGradientObject1: TfrxGradientObject + Left = 24 + Top = 360 + end + object frxDotMatrixExport1: TfrxDotMatrixExport + UseFileCache = True + ShowProgress = True + EscModel = 0 + GraphicFrames = False + SaveToFile = False + UseIniSettings = True + Left = 56 + Top = 360 + end + object frxDialogControls1: TfrxDialogControls + Left = 88 + Top = 360 + end + object DABINAdapter: TDABINAdapter + Left = 48 + Top = 72 + end +end diff --git a/Modulos/Facturas de cliente/Servidor/srvFacturasCliente_Impl.pas b/Modulos/Facturas de cliente/Servidor/srvFacturasCliente_Impl.pas new file mode 100644 index 0000000..bb8f0bf --- /dev/null +++ b/Modulos/Facturas de cliente/Servidor/srvFacturasCliente_Impl.pas @@ -0,0 +1,132 @@ +unit srvFacturasCliente_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:} DARemoteService_Impl, + {Used RODLs:} DataAbstract_Intf, + {Generated:} FactuGES_Intf, uDADataTable, uDACDSDataTable, frxClass, DB, + frxDBSet, uDAScriptingProvider, uDABusinessProcessor, uDAClasses, + uDataModuleServer, uDAInterfaces, frxDCtrl, frxDMPExport, frxGradient, + frxChBox, frxCross, frxRich, frxChart, frxOLE, frxBarcode, uDABINAdapter; + +type + { TsrvFacturasCliente } + TsrvFacturasCliente = class(TDARemoteService, IsrvFacturasCliente) + frxDBDetalles: TfrxDBDataset; + frxDBCabecera: TfrxDBDataset; + DADataCabecera: TDADataSource; + DADataDetalles: TDADataSource; + tbl_FacturaCliente: TDACDSDataTable; + tbl_DetallesFacturaCliente: TDACDSDataTable; + frxBarCodeObject1: TfrxBarCodeObject; + frxOLEObject1: TfrxOLEObject; + frxChartObject1: TfrxChartObject; + frxRichObject1: TfrxRichObject; + frxCrossObject1: TfrxCrossObject; + frxCheckBoxObject1: TfrxCheckBoxObject; + frxGradientObject1: TfrxGradientObject; + frxDotMatrixExport1: TfrxDotMatrixExport; + frxDialogControls1: TfrxDialogControls; + DABINAdapter: TDABINAdapter; + frxReport1: TfrxReport; + schFacturasCliente: TDASchema; + private + protected + { IsrvFacturasCliente methods } + function GetNextAutoinc: Integer; + function PuedoEliminarFactura(const CodigoFactura: Integer): Boolean; + function ExisteFacturaDeAlbaran(const CodigoAlbaran: Integer; out CodigoFactura: Integer): Boolean; + function GenerateReport(const Codigo: Integer; const TamLetra: Integer): Binary; + function DarNuevaReferencia: String; + end; + +implementation + +{$R *.dfm} +uses + Dialogs, + {Generated:} FactuGES_Invk, uRORemoteDataModule, + fServerForm, Variants, IB, schFacturasClienteClient_Intf; + +procedure Create_srvFacturasCliente(out anInstance : IUnknown); +begin + anInstance := TsrvFacturasCliente.Create(NIL); +end; + +{ srvFacturasCliente } +function TsrvFacturasCliente.DarNuevaReferencia: String; +var + dsReferencia: IDADataset; +begin + dsReferencia := schFacturasCliente.NewDataset(Connection, 'DarReferenciaFactura'); + dsReferencia.Active := True; + Result := dsReferencia.FieldByName('REFERENCIA').AsString; +end; + +function TsrvFacturasCliente.ExisteFacturaDeAlbaran( + const CodigoAlbaran: Integer; out CodigoFactura: Integer): Boolean; +begin + +end; + +function TsrvFacturasCliente.GenerateReport(const Codigo: Integer; const TamLetra: Integer): Binary; +var + dsMaster: IDADataset; + dsDetail: IDADataset; + AStream: TMemoryStream; +begin + AStream := TMemoryStream.Create; + Result := Binary.Create; + try + dsMaster := schFacturasCliente.NewDataset(Connection, 'InformeCabeceraFacturaCliente', ['CODIGO'], [Codigo]); + dsDetail := schFacturasCliente.NewDataset(Connection, 'InformeDetallesFacturaCliente', ['CODIGOFACTURA'], [Codigo], False); + dsDetail.Active := True; + + AStream.Clear; + ServiceAdapter.WriteDataset(AStream, dsMaster, [woRows, woSchema], -1); + ServiceAdapter.ReadDataset(AStream, tbl_FacturaCliente, TRUE, '', TRUE, TRUE); + + AStream.Clear; + ServiceAdapter.WriteDataset(AStream, dsDetail, [woRows, woSchema], -1); + ServiceAdapter.ReadDataset(AStream, tbl_DetallesFacturaCliente, TRUE, '', TRUE, TRUE); + + frxReport1.LoadFromFile(DarRutaInformes + 'InfFacturaCliente.fr3', True); + + //Tamaño de letra + if TamLetra <> 0 then + frxReport1.Styles.Find('Concepto normal').Font.Size := TamLetra; + + frxReport1.PrepareReport; + frxReport1.PreviewPages.SaveToStream(Result); + finally + AStream.Free; + end; +end; + +function TsrvFacturasCliente.GetNextAutoinc: Integer; +begin + Result := uDataModuleServer.GetNextAutoinc(Connection, 'GEN_FACTURASCLIENTE'); +end; + +function TsrvFacturasCliente.PuedoEliminarFactura( + const CodigoFactura: Integer): Boolean; +begin + // ? +end; + +initialization + TROClassFactory.Create('srvFacturasCliente', Create_srvFacturasCliente, TsrvFacturasCliente_Invoker); + +finalization + +end. diff --git a/Modulos/Facturas de proveedor/Cliente/FacturasProveedor.bdsproj b/Modulos/Facturas de proveedor/Cliente/FacturasProveedor.bdsproj new file mode 100644 index 0000000..d6d2228 --- /dev/null +++ b/Modulos/Facturas de proveedor/Cliente/FacturasProveedor.bdsproj @@ -0,0 +1,492 @@ + + + + + + + + + + + + FacturasProveedor.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 3 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + Albaranes de cliente + + + + .\ + ..\..\..\Output\Cliente + .\ + $(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente + vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;CEToolsPkgd7;FR7;FRIBX7;Hydra_Core_D7;Hydra_RO_D7;fqb70;frx7;frxADO7;frxBDE7;frxDB7;frxDBX7;frxe7;frxIBX7;fs7;fsADO7;fsBDE7;fsDB7;fsIBX7;DataAbstract_Core_D7;DataAbstract_IDE_D7 + + + False + + + + + + False + + + True + False + + + + $00000000 + C:\Archivos de programa\Borland\Delphi7\Bin\ + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + diff --git a/Modulos/Facturas de proveedor/Cliente/FacturasProveedor.cfg b/Modulos/Facturas de proveedor/Cliente/FacturasProveedor.cfg new file mode 100644 index 0000000..b972060 --- /dev/null +++ b/Modulos/Facturas de proveedor/Cliente/FacturasProveedor.cfg @@ -0,0 +1,45 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O- +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-GD +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N".\" +-LE"..\..\..\Output\Cliente" +-LN".\" +-U"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente" +-O"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente" +-I"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente" +-R"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente" +-Z +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/Modulos/Facturas de proveedor/Cliente/FacturasProveedor.dcp b/Modulos/Facturas de proveedor/Cliente/FacturasProveedor.dcp new file mode 100644 index 0000000..da62760 Binary files /dev/null and b/Modulos/Facturas de proveedor/Cliente/FacturasProveedor.dcp differ diff --git a/Modulos/Facturas de proveedor/Cliente/FacturasProveedor.dof b/Modulos/Facturas de proveedor/Cliente/FacturasProveedor.dof new file mode 100644 index 0000000..00a60d9 --- /dev/null +++ b/Modulos/Facturas de proveedor/Cliente/FacturasProveedor.dof @@ -0,0 +1,175 @@ +[FileVersion] +Version=7.0 +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=0 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=1 +SymbolLibrary=1 +SymbolPlatform=1 +UnitLibrary=1 +UnitPlatform=1 +UnitDeprecated=1 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 +[Linker] +MapFile=3 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=Albaranes de cliente +[Directories] +OutputDir= +UnitOutputDir=.\ +PackageDLLOutputDir=..\..\..\Output\Cliente +PackageDCPOutputDir=.\ +SearchPath=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente +Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;CEToolsPkgd7;FR7;FRIBX7;Hydra_Core_D7;Hydra_RO_D7;fqb70;frx7;frxADO7;frxBDE7;frxDB7;frxDBX7;frxe7;frxIBX7;fs7;fsADO7;fsBDE7;fsDB7;fsIBX7;DataAbstract_Core_D7;DataAbstract_IDE_D7 +Conditionals= +DebugSourceDirs= +UsePackages=0 +[Parameters] +RunParams= +HostApplication= +Launcher= +UseLauncher=0 +DebugCWD= +[Language] +ActiveLang= +ProjectLang= +RootDir=C:\Archivos de programa\Borland\Delphi7\Bin\ +[Version Info] +IncludeVerInfo=1 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=3082 +CodePage=1252 +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= +[HistoryLists\hlDebugSourcePath] +Count=1 +Item0=D:\Proyectos\Componentes\GUISDK\Sources\;D:\Proyectos\Componentes\PluginSDK\Source\;D:\Proyectos\FactuGES (Estudio)\Codigo\Modulos\Contactos\Cliente;D:\Proyectos\FactuGES (Estudio)\Codigo\Modulos\Contactos\Reglas +[HistoryLists\hlUnitAliases] +Count=1 +Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +[HistoryLists\hlSearchPath] +Count=16 +Item0=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente;..\..\Asientos\Cliente;..\..\Cuentas\Cliente +Item1=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente;..\..\Asientos\Cliente +Item2=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente +Item3=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente +Item4=..\Modulos\Presupuestos\Reglas;..\Modulos\Contactos\Reglas;..\Base;..\Configuracion;..\Usuarios;..\Modulos\Albaranes de cliente\Reglas +Item5=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\Base;..\Configuracion;..\Usuarios;..\Modulos\Intervalos;..\Modulos\Documentos asociados;..\Modulos\Contactos\Cliente;..\Modulos\Contactos\Reglas;..\Modulos\Presupuestos\Cliente;..\Modulos\Presupuestos\Reglas;..\Modulos\Albaranes de cliente\Cliente;..\Modulos\Albaranes de cliente\Reglas;..\Modulos\Facturas de cliente\Cliente;..\Modulos\Facturas de cliente\Reglas;..\Modulos\Pedidos a proveedor\Cliente;..\Modulos\Pedidos a proveedor\Reglas;..\Modulos\Facturas de proveedor\Cliente;..\Modulos\Facturas de proveedor\Reglas;..\Modulos\Montajes\Reglas;..\Modulos\Montajes\Cliente;..\Modulos\Articulos\Cliente;..\Modulos\Articulos\Reglas;..\Modulos\Almacenes\Reglas;..\Modulos\Almacenes\Cliente;..\Modulos\Pagos\Reglas;..\Modulos\Pagos\Cliente;..\Modulos\Cuentas\Reglas;..\Modulos\Cuentas\Cliente;..\Modulos\Asientos\Reglas;..\Modulos\Asientos\Cliente;..\Modulos\Calendarios\Cliente;..\Modulos\Calendarios\Reglas +Item6=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente;..\..\Documentos asociados;..\..\Contactos\Cliente;..\..\Almacenes\Cliente +Item7=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados +Item8=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente;..\..\Documentos asociados;..\..\Contactos\Cliente +Item9=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente;..\..\Documentos asociados +Item10=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente +Item11=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados;..\..\Montajes\Cliente;..\..\Almacenes\Cliente +Item12=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados;..\..\Montajes\Cliente +Item13=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\Servidor +Item14=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\base;..\Modulos\Calendarios\Cliente;..\Modulos\Calendarios\Reglas +Item15=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\Base;..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios +[HistoryLists\hlUnitOutputDirectory] +Count=1 +Item0=.\ +[HistoryLists\hlOutputDirectorry] +Count=2 +Item0=..\Output\Servidor +Item1=..\Output\Cliente +[HistoryLists\hlBPLOutput] +Count=3 +Item0=..\..\..\Output\Cliente +Item1=..\Output\Cliente +Item2=..\..\Output\Cliente +[HistoryLists\hlDCPOutput] +Count=1 +Item0=.\ diff --git a/Modulos/Facturas de proveedor/Cliente/FacturasProveedor.dpk b/Modulos/Facturas de proveedor/Cliente/FacturasProveedor.dpk new file mode 100644 index 0000000..90b68fb --- /dev/null +++ b/Modulos/Facturas de proveedor/Cliente/FacturasProveedor.dpk @@ -0,0 +1,82 @@ +package FacturasProveedor; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION OFF} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'Albaranes de cliente'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + vcldb, + PluginSDK_D7R, + GUISDK_D7, + PngComponentsD7, + PNG_D7, + vclactnband, + vclx, + BaseD7, + Contactos, + DataAbstract_D7, + dbrtl, + dsnap, + adortl, + JvAppFrmD7R, + JvStdCtrlsD7R, + vcljpg, + JvCoreD7R, + JvSystemD7R, + designide, + JvPageCompsD7R, + tb2k_d7, + tbx_d7, + cxLibraryVCLD7, + dxThemeD7, + cxEditorsVCLD7, + cxDataD7, + cxExtEditorsVCLD7, + cxGridVCLD7, + cxPageControlVCLD7, + cxExportVCLD7, + dxPSCoreD7, + dxComnD7, + dxPScxCommonD7, + dxPSLnksD7, + vclshlctrls, + dxPScxGridLnkD7, + dclcxLibraryVCLD7, + ccpack70; + +contains + uPluginControllerFacturasProveedor in 'uPluginControllerFacturasProveedor.pas' {ModuleFacturasProveedor: TModuleController}, + uDataModuleFacturasProveedor in 'uDataModuleFacturasProveedor.pas' {dmFacturasProveedor: TDAClientDataModule}, + uEditorFacturaProveedor in 'uEditorFacturaProveedor.pas' {fEditorFacturaProveedor: TCustomEditor}, + uEditorFacturasProveedor in 'uEditorFacturasProveedor.pas' {fEditorFacturasProveedor: TCustomEditor}, + uBizFacturasProveedor in '..\Reglas\uBizFacturasProveedor.pas', + schFacturasProveedorServer_Intf in '..\Reglas\schFacturasProveedorServer_Intf.pas', + schFacturasProveedorClient_Intf in '..\Reglas\schFacturasProveedorClient_Intf.pas', + uViewDatosFacturaProveedor in 'uViewDatosFacturaProveedor.pas' {frViewDatosFacturaProveedor: TCustomView}, + uViewFacturaProveedor in 'uViewFacturaProveedor.pas' {frViewFacturaProveedor: TCustomView}, + uViewFacturasProveedor in 'uViewFacturasProveedor.pas' {frViewFacturasProveedor: TCustomView}; + +end. diff --git a/Modulos/Facturas de proveedor/Cliente/FacturasProveedor.drc b/Modulos/Facturas de proveedor/Cliente/FacturasProveedor.drc new file mode 100644 index 0000000..a5d5271 --- /dev/null +++ b/Modulos/Facturas de proveedor/Cliente/FacturasProveedor.drc @@ -0,0 +1,14 @@ +/* VER150 + Generated by the Borland Delphi Pascal Compiler + because -GD or --drc was supplied to the compiler. + + This file contains compiler-generated resources that + were bound to the executable. + If this file is empty, then no compiler-generated + resources were bound to the produced executable. +*/ + +STRINGTABLE +BEGIN +END + diff --git a/Modulos/Facturas de proveedor/Cliente/FacturasProveedor.res b/Modulos/Facturas de proveedor/Cliente/FacturasProveedor.res new file mode 100644 index 0000000..ec5f233 Binary files /dev/null and b/Modulos/Facturas de proveedor/Cliente/FacturasProveedor.res differ diff --git a/Modulos/Facturas de proveedor/Cliente/uDataModuleFacturasProveedor.ddp b/Modulos/Facturas de proveedor/Cliente/uDataModuleFacturasProveedor.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Facturas de proveedor/Cliente/uDataModuleFacturasProveedor.ddp differ diff --git a/Modulos/Facturas de proveedor/Cliente/uDataModuleFacturasProveedor.dfm b/Modulos/Facturas de proveedor/Cliente/uDataModuleFacturasProveedor.dfm new file mode 100644 index 0000000..bf7eed8 --- /dev/null +++ b/Modulos/Facturas de proveedor/Cliente/uDataModuleFacturasProveedor.dfm @@ -0,0 +1,451 @@ +object dmFacturasProveedor: TdmFacturasProveedor + OldCreateOrder = True + OnCreate = DAClientDataModuleCreate + RemoteService = RORemoteService + Adapter = dmBase.DABINAdapter + SchemaCall.MethodName = 'GetSchemaAsXML' + SchemaCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtString + end> + Left = 519 + Top = 404 + Height = 443 + Width = 638 + object RORemoteService: TRORemoteService + ServiceName = 'srvFacturasProveedor' + Message = dmBase.ROMessage + Channel = dmBase.ROChannel + Left = 48 + Top = 32 + end + object tbl_FacturasProveedor: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'CODIGOEMPRESA' + DataType = datInteger + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'C'#243'd. empresa' + Alignment = taLeftJustify + DictionaryEntry = 'CODIGOEMPRESA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGO' + DataType = datInteger + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'C'#243'd. factura' + Alignment = taLeftJustify + DictionaryEntry = 'CODIGOFACTURA' + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHAALTA' + DataType = datDateTime + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'Fecha de alta' + Alignment = taLeftJustify + DictionaryEntry = 'FECHAALTA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'USUARIO' + DataType = datString + Size = 100 + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'Usuario de alta' + Alignment = taLeftJustify + DictionaryEntry = 'USUARIO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHAFACTURA' + DataType = datDateTime + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'Fecha factura' + Alignment = taLeftJustify + DictionaryEntry = 'FECHAFACTURA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'REFERENCIA' + DataType = datString + Size = 20 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Referencia' + Alignment = taLeftJustify + DictionaryEntry = 'REFERENCIA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'VENCIMIENTO' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Vencimiento' + Alignment = taLeftJustify + DictionaryEntry = 'FECHAVENCIMIENTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CONCEPTO' + DataType = datMemo + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Observaciones' + Alignment = taLeftJustify + DictionaryEntry = 'OBSERVACIONES' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'BASEIMPONIBLE' + DataType = datCurrency + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Base imponible' + Alignment = taLeftJustify + DictionaryEntry = 'BASEIMPONIBLE' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'DESCUENTO' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Descuento' + Alignment = taLeftJustify + DictionaryEntry = 'DESCUENTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTEDESCUENTO' + DataType = datCurrency + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Importe dto.' + Alignment = taLeftJustify + DictionaryEntry = 'IMPORTEDESCUENTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IVA' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + DictionaryEntry = 'IVA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTEIVA' + DataType = datCurrency + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Importe IVA' + Alignment = taLeftJustify + DictionaryEntry = 'IMPORTEIVA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTETOTAL' + DataType = datCurrency + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Importe total' + Alignment = taLeftJustify + DictionaryEntry = 'IMPORTETOTAL' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FORMAPAGO' + DataType = datMemo + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Forma de pago' + Alignment = taLeftJustify + DictionaryEntry = 'FORMAPAGO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOPROVEEDOR' + DataType = datInteger + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'C'#243'd. contacto' + Alignment = taLeftJustify + DictionaryEntry = 'CODIGOCONTACTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NIFCIF' + DataType = datString + Size = 10 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'NIF/CIF' + Alignment = taLeftJustify + DictionaryEntry = 'NIFCIF' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NOMBRE' + DataType = datString + Size = 100 + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'Nombre' + Alignment = taLeftJustify + DictionaryEntry = 'NOMBRE' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CALLE' + DataType = datString + Size = 150 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Calle' + Alignment = taLeftJustify + DictionaryEntry = 'CALLE' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PROVINCIA' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Provincia' + Alignment = taLeftJustify + DictionaryEntry = 'PROVINCIA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOPOSTAL' + DataType = datString + Size = 5 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'C'#243'd. postal' + Alignment = taLeftJustify + DictionaryEntry = 'CODIGOPOSTAL' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'POBLACION' + DataType = datString + Size = 40 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Poblaci'#243'n' + Alignment = taLeftJustify + DictionaryEntry = 'POBLACION' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + Params = <> + MasterMappingMode = mmDataRequest + LogChanges = False + StreamingOptions = [soDisableEventsWhileStreaming] + SchemaCall.MethodName = 'GetDatasetSchema' + SchemaCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBinary + end + item + Name = 'aDatasetName' + ParamType = fIn + DataType = rtString + Value = 'FacturasProveedor' + end> + DataRequestCall.MethodName = 'GetDatasetDataEx' + DataRequestCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBinary + end + item + Name = 'DatasetName' + ParamType = fIn + DataType = rtString + Value = 'FacturasProveedor' + end + item + Name = 'Params' + ParamType = fIn + DataType = rtUserDefined + UserClassName = 'TDADatasetParamArray' + end + item + Name = 'UserFilter' + ParamType = fIn + DataType = rtString + Value = '' + end + item + Name = 'IncludeSchema' + ParamType = fIn + DataType = rtBoolean + Value = False + end + item + Name = 'MaxRecords' + ParamType = fIn + DataType = rtInteger + Value = -1 + end> + DataUpdateCall.MethodName = 'UpdateData' + DataUpdateCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBinary + end + item + Name = 'Delta' + ParamType = fIn + DataType = rtBinary + end> + ScriptCall.MethodName = 'GetDatasetScripts' + ScriptCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtString + Value = '' + end + item + Name = 'DatasetNames' + ParamType = fIn + DataType = rtString + Value = 'FacturasProveedor' + end> + ReadOnly = False + RemoteService = RORemoteService + Adapter = dmBase.DABINAdapter + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'FacturasProveedor' + IndexDefs = <> + Left = 152 + Top = 32 + end + object ds_FacturasProveedor: TDADataSource + DataTable = tbl_FacturasProveedor + Left = 248 + Top = 32 + end + object DADesigntimeCall1: TDADesigntimeCall + RemoteRequest.MethodName = 'Login' + RemoteRequest.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBoolean + end + item + Name = 'UserID' + ParamType = fIn + DataType = rtString + Value = '1' + end + item + Name = 'Password' + ParamType = fIn + DataType = rtString + Value = '1' + end + item + Name = 'LoginInfo' + ParamType = fOut + DataType = rtUserDefined + UserClassName = 'TLoginInfo' + end> + Left = 48 + Top = 88 + end +end diff --git a/Modulos/Facturas de proveedor/Cliente/uDataModuleFacturasProveedor.pas b/Modulos/Facturas de proveedor/Cliente/uDataModuleFacturasProveedor.pas new file mode 100644 index 0000000..7be506f --- /dev/null +++ b/Modulos/Facturas de proveedor/Cliente/uDataModuleFacturasProveedor.pas @@ -0,0 +1,130 @@ +unit uDataModuleFacturasProveedor; + +interface + +uses {vcl:} SysUtils, Classes, DB, DBClient, + {RemObjects:} uDAClientDataModule, uDADataTable, uDABINAdapter, + uROServiceComponent, uRORemoteService, uROClient, uROBinMessage, + uROWinInetHttpChannel, uDAScriptingProvider, uDACDSDataTable, + uDADesigntimeCall, uBizFacturasProveedor; + +type + TdmFacturasProveedor = class(TDAClientDataModule) + RORemoteService: TRORemoteService; + tbl_FacturasProveedor: TDACDSDataTable; + ds_FacturasProveedor: TDADataSource; + DADesigntimeCall1: TDADesigntimeCall; + procedure DAClientDataModuleCreate(Sender: TObject); + private + { Private declarations } + public + function GetNextAutoinc : integer; + function GetItem: IBizFacturasProveedor; + function GetItems: IBizFacturasProveedor; + function PuedoEliminarFactura (CodigoFactura : Integer) : Boolean; + end; + +var + dmFacturasProveedor: TdmFacturasProveedor; + +implementation + +{$R *.DFM} + +uses + Forms, Controls, uDataTableUtils, uBizContacto, + uDataModuleContactos, uDataModuleBase, + FactuGES_Intf, uEditorPreview, uROTypes, schFacturasProveedorClient_Intf; + +{ TDAClientDataModule1 } + +function TdmFacturasProveedor.GetItems: IBizFacturasProveedor; +var + dtCabecera: TDACDSDataTable; + ACursor: TCursor; +begin + ACursor := Screen.Cursor; + Screen.Cursor := crHourGlass; + try + dtCabecera := TDACDSDataTable.Create(NIL); + CloneDataTable(tbl_FacturasProveedor, dtCabecera); + with dtCabecera do + begin + BusinessRulesID := BIZ_FACTURASPROVEEDOR; + FieldByName(fld_FacturasProveedorDESCUENTO).BusinessRulesID := 'Client.Field.Descuento'; + FieldByName(fld_FacturasProveedorIVA).BusinessRulesID := 'Client.Field.IVA'; + FieldByName(fld_FacturasProveedorBASEIMPONIBLE).BusinessRulesID := 'Client.Field.BaseImponible'; + end; + + Result := (dtCabecera as IBizFacturasProveedor); + finally + Screen.Cursor := ACursor; + end; +end; + +procedure TdmFacturasProveedor.DAClientDataModuleCreate(Sender: TObject); +begin + RORemoteService.Channel := dmBase.Channel; + RORemoteService.Message := dmBase.Message; + Adapter := dmBase.Adapter; +end; + + +function TdmFacturasProveedor.GetItem: IBizFacturasProveedor; +var + dtCabecera: TDACDSDataTable; + dtDetalles: TDACDSDataTable; + ACursor: TCursor; +begin +{ ACursor := Screen.Cursor; + Screen.Cursor := crHourGlass; + try + dtCabecera := TDACDSDataTable.Create(NIL); + CloneDataTable(tbl_AlbaranCliente, dtCabecera); + with dtCabecera do + begin + BusinessRulesID := BIZ_ALBARANCLIENTE; + FieldByName(fld_AlbaranClienteDESCUENTO).BusinessRulesID := 'Client.Field.Descuento'; + FieldByName(fld_AlbaranClienteIVA).BusinessRulesID := 'Client.Field.IVA'; + end; + + dtDetalles := TDACDSDataTable.Create(NIL); + CloneDataTable(tbl_DetallesAlbaranProveedor, dtDetalles); + with dtDetalles do + begin + BusinessRulesID := BIZ_DETALLESALBARANCLIENTE; + DetailOptions := DetailOptions - [dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates]; + + FieldByName(fld_DetallesAlbaranClienteCANTIDAD).BusinessRulesID := 'Client.Field.Cantidad'; + FieldByName(fld_DetallesAlbaranClienteIMPORTEUNIDAD).BusinessRulesID := 'Client.Field.ImporteUnidad'; + FieldByName(fld_DetallesAlbaranClienteTIPO).BusinessRulesID := 'Client.Field.TipoDetalle'; + end; + + with (dtAlbaranes as IBizAlbaranesCliente) do + begin + Detalles := (dtDetalles as IBizDetallesAlbaranCliente); + end; + + Result := (dtAlbaranes as IBizAlbaranesCliente); + finally + Screen.Cursor := ACursor; + end;} +end; + +function TdmFacturasProveedor.GetNextAutoinc: integer; +begin + Result := (RORemoteService as IsrvFacturasProveedor).GetNextAutoinc; +end; + +function TdmFacturasProveedor.PuedoEliminarFactura(CodigoFactura: Integer): Boolean; +begin + Result := (RORemoteService as IsrvFacturasProveedor).PuedoEliminarFactura(CodigoFactura); +end; + +initialization + dmFacturasProveedor := TdmFacturasProveedor.Create(nil); + +finalization + FreeAndNil(dmFacturasProveedor); + +end. diff --git a/Modulos/Facturas de proveedor/Cliente/uEditorFacturaProveedor.ddp b/Modulos/Facturas de proveedor/Cliente/uEditorFacturaProveedor.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Facturas de proveedor/Cliente/uEditorFacturaProveedor.ddp differ diff --git a/Modulos/Facturas de proveedor/Cliente/uEditorFacturaProveedor.dfm b/Modulos/Facturas de proveedor/Cliente/uEditorFacturaProveedor.dfm new file mode 100644 index 0000000..967e391 --- /dev/null +++ b/Modulos/Facturas de proveedor/Cliente/uEditorFacturaProveedor.dfm @@ -0,0 +1,212 @@ +inherited fEditorFacturaProveedor: TfEditorFacturaProveedor + Left = 166 + Top = 59 + Width = 777 + Height = 544 + Caption = 'Nueva factura de proveedor' + Constraints.MinWidth = 770 + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + Width = 769 + Caption = 'Nueva factura de proveedor' + inherited Image1: TImage + Left = 742 + Picture.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001800 + 0000180806000000E0773DF80000000970485973000017120000171201679FD2 + 520000000467414D410000B18E7CFB5193000001BE4944415478DA63FCFFFF3F + 032D0123B2054BB79CA49A6DD13EE68C582D004A906CD8DFBFFF80F83F980601 + EBC07C86733BA6E1B6C0B6683F8A0187FB1C711A8EAC765BB315C3C275FB19E6 + 2DDD84DF02525CEE507A9081455D89E1C08C1D0CEF0FC6312CD97890B005D87C + 802E06027B3BEC189C2B0E311CD97F0BCC7FB32F8661F996C394F9E0FF3F6058 + 03F11FA0EB41EC3FFFFE41E3E01F98BD7ADB51D27D400C00F9E2F18E70860DBB + 4E106701CCDBA480075B431936EF3D459C05F8520E3600D2B3A8508F61EB81D3 + C45B802BA86096C3E4616AE7E7EB32EC387486763E989DA3CDB0E7E839DAF960 + 46A626C3FE131768E783A969EA0C874E5FC26F4184A729387792E3838929AA0C + C7CE5EC16F41A89B09387792E3839E042586D317AFE3B720C8D988C1ADFA0859 + 1674C62A309CBB7213BF057E8E060C5EB5C7F01A06B27CC1913F707E820D0BD8 + 82B62839868BD76FE3B7C0DB4E0F5EAEC0CA1850D9032BF393275FC1881F18BF + 394296E1CACD3BF82DF0B0D6C16938884E9B760D6BF0116D818BA5164EC34116 + 67CDB88133E888B2C0DE541D6CD8BFBF88621966E1BFFFFFB1061F322068818D + 912AB844A404E0B5A077CA428A0C8701980500619929EF09CFCE420000000049 + 454E44AE426082} + end + end + inherited TBXDock: TTBXDock + Width = 769 + inherited tbxMain: TTBXToolbar + inherited TBXItem2: TTBXItem + Visible = False + end + inherited TBXSeparatorItem1: TTBXSeparatorItem + Visible = False + end + inherited TBXItem5: TTBXItem + Visible = False + end + inherited TBXItem23: TTBXItem + Visible = False + end + inherited TBXItem3: TTBXItem + Visible = False + end + inherited TBXSeparatorItem10: TTBXSeparatorItem + Visible = False + end + end + end + inherited pgPaginas: TPageControl + Width = 769 + Height = 293 + inherited pagGeneral: TTabSheet + inline frViewFacturaProveedor1: TfrViewFacturaProveedor + Left = 0 + Top = 0 + Width = 761 + Height = 265 + Align = alClient + AutoSize = True + Constraints.MinHeight = 265 + Constraints.MinWidth = 761 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 0 + ReadOnly = False + inherited frViewDatosYSeleccionContacto1: TfrViewDatosYSeleccionContacto + inherited Bevel1: TBevel + Width = 299 + end + inherited edtlNombre: TcxDBTextEdit + DataBinding.DataSource = frViewFacturaProveedor1.DADataSource + Properties.OnChange = frViewDatosYSeleccionContacto1edtlNombrePropertiesChange + Height = 21 + Width = 282 + end + inherited edtPoblacion: TcxDBTextEdit + DataBinding.DataSource = frViewFacturaProveedor1.DADataSource + Height = 21 + Width = 282 + end + inherited edtProvincia: TcxDBTextEdit + DataBinding.DataSource = frViewFacturaProveedor1.DADataSource + Height = 21 + Width = 138 + end + inherited edtNIFCIF: TcxDBTextEdit + DataBinding.DataSource = frViewFacturaProveedor1.DADataSource + Height = 21 + Width = 282 + end + inherited edtCalle: TcxDBTextEdit + DataBinding.DataSource = frViewFacturaProveedor1.DADataSource + Height = 21 + Width = 282 + end + inherited edtCodigoPostal: TcxDBTextEdit + DataBinding.DataSource = frViewFacturaProveedor1.DADataSource + Height = 21 + Width = 91 + end + end + inherited frViewFormaPago1: TfrViewFormaPago + Top = 178 + Height = 77 + inherited memFormaPago: TcxDBMemo + Top = 29 + Height = 46 + Width = 329 + end + end + inherited frViewObservaciones1: TfrViewObservaciones + inherited memObservaciones: TcxDBMemo + Top = 28 + Height = 47 + Width = 329 + end + end + inherited frViewDatosFacturaProveedor1: TfrViewDatosFacturaProveedor + inherited edtFecha: TcxDBDateEdit + Width = 245 + end + inherited edtVencimiento: TcxDBDateEdit + Width = 245 + end + inherited eReferencia: TcxDBTextEdit + Width = 245 + end + end + end + end + end + inherited StatusBar: TStatusBar + Top = 491 + Width = 769 + end + inline frViewTotales1: TfrViewTotales [4] + Left = 0 + Top = 369 + Width = 769 + Height = 122 + Align = alBottom + Constraints.MaxHeight = 122 + Constraints.MinHeight = 122 + Constraints.MinWidth = 730 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 4 + ReadOnly = False + inherited TabControl1: TTabControl + Width = 769 + inherited GroupBox1: TGroupBox + inherited lblBase: TcxDBCurrencyEdit + Enabled = True + Properties.ReadOnly = False + Height = 21 + Width = 137 + end + inherited cxCurrencyEdit3: TcxDBCurrencyEdit + Height = 21 + Width = 137 + end + inherited cxCurrencyEdit4: TcxDBCurrencyEdit + Height = 21 + Width = 137 + end + inherited cxCurrencyEdit5: TcxDBCurrencyEdit + Height = 21 + Width = 137 + end + inherited cxCurrencyEdit1: TcxDBSpinEdit + Height = 21 + Width = 137 + end + inherited cxCurrencyEdit2: TcxDBSpinEdit + Height = 21 + Width = 137 + end + end + end + end + inherited EditorActionList: TActionList [5] + end + inherited SmallImages: TPngImageList [6] + end + inherited LargeImages: TPngImageList [7] + end + inherited JvFormStorage: TJvFormStorage [8] + end + inherited JvAppRegistryStorage: TJvAppRegistryStorage [9] + end + inherited dsDataTable: TDADataSource + OnDataChange = dsDataTableDataChange + end +end diff --git a/Modulos/Facturas de proveedor/Cliente/uEditorFacturaProveedor.pas b/Modulos/Facturas de proveedor/Cliente/uEditorFacturaProveedor.pas new file mode 100644 index 0000000..3b5453d --- /dev/null +++ b/Modulos/Facturas de proveedor/Cliente/uEditorFacturaProveedor.pas @@ -0,0 +1,178 @@ +unit uEditorFacturaProveedor; + +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, + uViewFacturaProveedor, uCustomView, uViewBase, uViewContenido, uViewTotales, + StdCtrls, pngimage, AppEvnts, + uBizFacturasProveedor; + +type + IEditorFacturaProveedor = interface(IEditorDBItem) + ['{22C02CC0-035C-4405-A610-C5734B09BB9F}'] + function GetFacturaProveedor: IBizFacturasProveedor; + procedure SetFacturaProveedor(const Value: IBizFacturasProveedor); + property FacturaProveedor: IBizFacturasProveedor read GetFacturaProveedor write + SetFacturaProveedor; + end; + + TfEditorFacturaProveedor = class(TfEditorDBItem, IEditorFacturaProveedor) + frViewTotales1: TfrViewTotales; + frViewFacturaProveedor1: TfrViewFacturaProveedor; + procedure actEliminarExecute(Sender: TObject); + procedure dsDataTableDataChange(Sender: TObject; Field: TField); + procedure FormShow(Sender: TObject); override; + procedure frViewDatosYSeleccionContacto1edtlNombrePropertiesChange( + Sender: TObject); + private + FFacturaProveedor: IBizFacturasProveedor; + FViewFacturaProveedor: IViewFacturaProveedor; + protected + function GetFacturaProveedor: IBizFacturasProveedor; + function GetViewFactura: IViewFacturaProveedor; + procedure SetFacturaProveedor(const Value: IBizFacturasProveedor); + procedure SetViewFactura(const Value: IViewFacturaProveedor); + property ViewFacturaProveedor: IViewFacturaProveedor read GetViewFactura write + SetViewFactura; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + property FacturaProveedor: IBizFacturasProveedor read GetFacturaProveedor write + SetFacturaProveedor; + end; + +var + fEditorFacturaProveedor: TfEditorFacturaProveedor; + +implementation + +uses uEditorUtils, uDataModuleFacturasProveedor, uBizImportesDetalleBase, + schFacturasProveedorClient_Intf, uExceptions; + +{$R *.dfm} + +function ShowEditorFacturaProveedor (ABizObject : TDADataTableRules) : TModalResult; +var + AEditor: TfEditorFacturaProveedor; +begin + AEditor := TfEditorFacturaProveedor.Create(Application); + try + AEditor.FacturaProveedor := (ABizObject as IBizFacturasProveedor); + Result := AEditor.ShowModal; + finally + AEditor.Release; + end; +end; + +{ TfEditorFacturaProveedor } + +{ +**************************** TfEditorFacturaProveedor **************************** +} +constructor TfEditorFacturaProveedor.Create(AOwner: TComponent); +begin + inherited; +// ViewFacturaProveedor := CreateView(TfrViewFacturaProveedor) as IViewFacturaProveedor; + pgPaginas.ActivePageIndex := 0; + ViewFacturaProveedor := frViewFacturaProveedor1; +end; + +destructor TfEditorFacturaProveedor.Destroy; +begin + FViewFacturaProveedor := NIL; + FFacturaProveedor := NIL; + inherited; +end; + +procedure TfEditorFacturaProveedor.actEliminarExecute(Sender: TObject); +begin + if (Application.MessageBox('¿Desea borrar este albarán de proveedor?', 'Atención', MB_YESNO) = IDYES) then + inherited; +end; + +procedure TfEditorFacturaProveedor.dsDataTableDataChange(Sender: TObject; Field: + TField); +begin + inherited; + if Assigned(FFacturaProveedor) and (not (FFacturaProveedor.DataTable.Fetching) or + not (FFacturaProveedor.DataTable.Opening) or not (FFacturaProveedor.DataTable.Closing)) then + begin + if Length(FFacturaProveedor.NOMBRE) = 0 then + JvNavPanelHeader.Caption := 'Nueva factura de proveedor' + else + JvNavPanelHeader.Caption := 'Factura de ' + FFacturaProveedor.NOMBRE; + Caption := JvNavPanelHeader.Caption; + end; +end; + +procedure TfEditorFacturaProveedor.FormShow(Sender: TObject); +begin + inherited; + + if not Assigned(FViewFacturaProveedor) then + raise Exception.Create('No hay ninguna vista asignada'); + + if not Assigned(FacturaProveedor) then + raise Exception.Create('No hay ninguna factura asignada'); + + FacturaProveedor.DataTable.Active := True; +// FViewFacturaProveedor.ShowEmbedded(pagGeneral); +// FViewFacturaProveedor.SetFocus; +end; + +function TfEditorFacturaProveedor.GetFacturaProveedor: IBizFacturasProveedor; +begin + Result := FFacturaProveedor; +end; + +function TfEditorFacturaProveedor.GetViewFactura: IViewFacturaProveedor; +begin + Result := FViewFacturaProveedor; +end; + +procedure TfEditorFacturaProveedor.SetFacturaProveedor(const Value: + IBizFacturasProveedor); +begin + FFacturaProveedor := Value; + + if Assigned(FFacturaProveedor) then + begin + dsDataTable.DataTable := FFacturaProveedor.DataTable; + frViewTotales1.DADataSource.DataTable := FFacturaProveedor.DataTable; + + if Assigned(FViewFacturaProveedor) then + FViewFacturaProveedor.FacturaProveedor := FFacturaProveedor; + end; +end; + +procedure TfEditorFacturaProveedor.SetViewFactura(const Value: + IViewFacturaProveedor); +begin + FViewFacturaProveedor := Value; + + if Assigned(FViewFacturaProveedor) and Assigned(FacturaProveedor) then + FViewFacturaProveedor.FacturaProveedor := FacturaProveedor; +end; + +procedure TfEditorFacturaProveedor.frViewDatosYSeleccionContacto1edtlNombrePropertiesChange( + Sender: TObject); +begin + inherited; + if Length(frViewFacturaProveedor1.frViewDatosYSeleccionContacto1.edtlNombre.Text) = 0 then + JvNavPanelHeader.Caption := 'Nueva factura de proveedor' + else + JvNavPanelHeader.Caption := 'Factura de ' + frViewFacturaProveedor1.frViewDatosYSeleccionContacto1.edtlNombre.Text; + Caption := JvNavPanelHeader.Caption; +end; + +initialization + RegisterEditor(IBizFacturasProveedor, ShowEditorFacturaProveedor, etItem); + +finalization + +end. diff --git a/Modulos/Facturas de proveedor/Cliente/uEditorFacturasProveedor.ddp b/Modulos/Facturas de proveedor/Cliente/uEditorFacturasProveedor.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Facturas de proveedor/Cliente/uEditorFacturasProveedor.ddp differ diff --git a/Modulos/Facturas de proveedor/Cliente/uEditorFacturasProveedor.dfm b/Modulos/Facturas de proveedor/Cliente/uEditorFacturasProveedor.dfm new file mode 100644 index 0000000..be04361 --- /dev/null +++ b/Modulos/Facturas de proveedor/Cliente/uEditorFacturasProveedor.dfm @@ -0,0 +1,1365 @@ +inherited fEditorFacturasProveedor: TfEditorFacturasProveedor + Caption = 'Lista de facturas de proveedor' + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + Caption = 'Lista de facturas de proveedor' + inherited Image1: TImage + Picture.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001800 + 0000180806000000E0773DF80000000970485973000017120000171201679FD2 + 520000000467414D410000B18E7CFB5193000001BE4944415478DA63FCFFFF3F + 032D0123B2054BB79CA49A6DD13EE68C582D004A906CD8DFBFFF80F83F980601 + EBC07C86733BA6E1B6C0B6683F8A0187FB1C711A8EAC765BB315C3C275FB19E6 + 2DDD84DF02525CEE507A9081455D89E1C08C1D0CEF0FC6312CD97890B005D87C + 802E06027B3BEC189C2B0E311CD97F0BCC7FB32F8661F996C394F9E0FF3F6058 + 03F11FA0EB41EC3FFFFE41E3E01F98BD7ADB51D27D400C00F9E2F18E70860DBB + 4E106701CCDBA480075B431936EF3D459C05F8520E3600D2B3A8508F61EB81D3 + C45B802BA86096C3E4616AE7E7EB32EC387486763E989DA3CDB0E7E839DAF960 + 46A626C3FE131768E783A969EA0C874E5FC26F4184A729387792E3838929AA0C + C7CE5EC16F41A89B09387792E3839E042586D317AFE3B720C8D988C1ADFA0859 + 1674C62A309CBB7213BF057E8E060C5EB5C7F01A06B27CC1913F707E820D0BD8 + 82B62839868BD76FE3B7C0DB4E0F5EAEC0CA1850D9032BF393275FC1881F18BF + 394296E1CACD3BF82DF0B0D6C16938884E9B760D6BF0116D818BA5164EC34116 + 67CDB88133E888B2C0DE541D6CD8BFBF88621966E1BFFFFFB1061F322068818D + 912AB844A404E0B5A077CA428A0C8701980500619929EF09CFCE420000000049 + 454E44AE426082} + end + end + inherited TBXDock: TTBXDock + inherited tbxMain: TTBXToolbar + inherited TBXSeparatorItem14: TTBXSeparatorItem + Visible = False + end + inherited TBXItem33: TTBXItem + Visible = False + end + end + inherited tbxFiltro: TTBXToolbar + Left = 411 + end + end + inherited EditorActionList: TActionList + inherited actNuevo: TAction + ImageIndex = 22 + OnExecute = actNuevoExecute + 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> + 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 + F80000000970485973000017120000171201679FD252000001BE4944415478DA + 63FCFFFF3F032D0123B2054BB79CA49A6DD13EE68C582D004A906CD8DFBFFF80 + F83F980601EBC07C86733BA6E1B6C0B6683F8A0187FB1C711A8EAC765BB315C3 + C275FB19E62DDD84DF02525CEE507A9081455D89E1C08C1D0CEF0FC6312CD978 + 90B005D87C802E06027B3BEC189C2B0E311CD97F0BCC7FB32F8661F996C394F9 + E0FF3F605803F11FA0EB41EC3FFFFE41E3E01F98BD7ADB51D27D400C00F9E2F1 + 8E70860DBB4E106701CCDBA480075B431936EF3D459C05F8520E3600D2B3A850 + 8F61EB81D3C45B802BA86096C3E4616AE7E7EB32EC387486763E989DA3CDB0E7 + E839DAF96046A626C3FE131768E783A969EA0C874E5FC26F4184A729387792E3 + 838929AA0CC7CE5EC16F41A89B09387792E3839E042586D317AFE3B720C8D988 + C1ADFA08591674C62A309CBB7213BF057E8E060C5EB5C7F01A06B27CC1913F70 + 7E820D0BD882B62839868BD76FE3B7C0DB4E0F5EAEC0CA1850D9032BF393275F + C1881F18BF394296E1CACD3BF82DF0B0D6C16938884E9B760D6BF0116D818BA5 + 164EC3411667CDB88133E888B2C0DE541D6CD8BFBF88621966E1BFFFFFB1061F + 322068818D912AB844A404E0B5A077CA428A0C8701980500619929EF09CFCE42 + 0000000049454E44AE426082} + Name = 'PngImage21' + Background = clWindow + end> + Bitmap = {} + end + inherited GridPopupMenu: TPopupMenu + inherited Duplicar1: TMenuItem + Visible = False + end + end +end diff --git a/Modulos/Facturas de proveedor/Cliente/uEditorFacturasProveedor.pas b/Modulos/Facturas de proveedor/Cliente/uEditorFacturasProveedor.pas new file mode 100644 index 0000000..35434fd --- /dev/null +++ b/Modulos/Facturas de proveedor/Cliente/uEditorFacturasProveedor.pas @@ -0,0 +1,146 @@ +unit uEditorFacturasProveedor; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uEditorGrid, Menus, DB, uDADataTable, JvAppStorage, + JvAppRegistryStorage, JvComponent, JvFormPlacement, ImgList, + PngImageList, StdActns, ActnList, ComCtrls, TB2ExtItems, TBXExtItems, + TBX, TB2Item, TB2Dock, TB2Toolbar, ExtCtrls, JvExControls, + JvNavigationPane, uViewGrid, pngimage, uBizFacturasProveedor, + JvComponentBase; + +type + IEditorFacturasProveedor = interface(IEditorGrid) + ['{B055B7F3-5A99-4BAC-8D70-A954A6BC288D}'] + function GetFacturasProveedor: IBizFacturasProveedor; + procedure SetFacturasProveedor(const Value: IBizFacturasProveedor); + property FacturasProveedor: IBizFacturasProveedor read GetFacturasProveedor + write SetFacturasProveedor; + end; + + TfEditorFacturasProveedor = class(TfEditorGrid, IEditorFacturasProveedor) + procedure actEliminarExecute(Sender: TObject); + procedure actModificarExecute(Sender: TObject); + procedure actNuevoExecute(Sender: TObject); + private + FFacturasProveedor: IBizFacturasProveedor; + protected + function GetFacturasProveedor: IBizFacturasProveedor; + procedure SetFacturasProveedor(const Value: IBizFacturasProveedor); + procedure SetViewGrid(const Value: IViewGrid); override; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + property FacturasProveedor: IBizFacturasProveedor read GetFacturasProveedor + write SetFacturasProveedor; + end; + +var + fEditorFacturasProveedor: TfEditorFacturasProveedor; + +implementation + +uses + uDataModuleFacturasProveedor, uViewFacturasProveedor, + uEditorUtils; + +{$R *.dfm} + +function ShowEditorFacturasProveedor (ABizObject : TDADataTableRules) : TModalResult; +var + AEditor: TfEditorFacturasProveedor; +begin + AEditor := TfEditorFacturasProveedor.Create(Application); + try + AEditor.FacturasProveedor := (ABizObject as IBizFacturasProveedor); + Result := AEditor.ShowModal; + finally + AEditor.Release; + end; +end; + +function ShowSelectEditorFacturasProveedor (ABizObject : TDADataTableRules) : TModalResult; +var + AEditor: TfEditorFacturasProveedor; +begin + AEditor := TfEditorFacturasProveedor.Create(Application); + try + AEditor.FacturasProveedor := (ABizObject as IBizFacturasProveedor); +// AEditor.SelectionBarVisible := True; + Result := AEditor.ShowModal; + finally + AEditor.Release; + end; +end; + +{ +*************************** TfEditorFacturasProveedor *************************** +} +constructor TfEditorFacturasProveedor.Create(AOwner: TComponent); +begin + inherited; + ViewGrid := CreateView(TfrViewFacturasProveedor) as IViewFacturasProveedor; +end; + +destructor TfEditorFacturasProveedor.Destroy; +begin + FFacturasProveedor := NIL; + inherited; +end; + +procedure TfEditorFacturasProveedor.actEliminarExecute(Sender: TObject); +begin + if (Application.MessageBox('¿Desea borrar esta factura de proveedor?', 'Atención', MB_YESNO) = IDYES) then + begin + inherited; + ViewGrid.RefreshGrid; + end; +end; + +procedure TfEditorFacturasProveedor.actModificarExecute(Sender: TObject); +begin + inherited; + FacturasProveedor.Show; + ViewGrid.RefreshGrid; + ViewGrid.SyncFocusedRecordsFromDataSet; +end; + +procedure TfEditorFacturasProveedor.actNuevoExecute(Sender: TObject); +begin + inherited; + FacturasProveedor.Insert; + FacturasProveedor.Show; + ViewGrid.RefreshGrid; + ViewGrid.SyncFocusedRecordsFromDataSet; +end; + +function TfEditorFacturasProveedor.GetFacturasProveedor: IBizFacturasProveedor; +begin + Result := FFacturasProveedor; +end; + +procedure TfEditorFacturasProveedor.SetFacturasProveedor(const Value: + IBizFacturasProveedor); +begin + FFacturasProveedor := Value; + dsDataTable.DataTable := FFacturasProveedor.DataTable; + if Assigned(ViewGrid) then + (ViewGrid as IViewFacturasProveedor).FacturasProveedor := FacturasProveedor; +end; + +procedure TfEditorFacturasProveedor.SetViewGrid(const Value: IViewGrid); +begin + inherited; + if Assigned(ViewGrid) and Assigned(FacturasProveedor) then + (ViewGrid as IViewFacturasProveedor).FacturasProveedor := FFacturasProveedor; +end; + +initialization + RegisterEditor(IBizFacturasProveedor, ShowEditorFacturasProveedor, etItems); + RegisterEditor(IBizFacturasProveedor, ShowSelectEditorFacturasProveedor, etSelectItems); + +finalization + +end. diff --git a/Modulos/Facturas de proveedor/Cliente/uPluginControllerFacturasProveedor.ddp b/Modulos/Facturas de proveedor/Cliente/uPluginControllerFacturasProveedor.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Facturas de proveedor/Cliente/uPluginControllerFacturasProveedor.ddp differ diff --git a/Modulos/Facturas de proveedor/Cliente/uPluginControllerFacturasProveedor.dfm b/Modulos/Facturas de proveedor/Cliente/uPluginControllerFacturasProveedor.dfm new file mode 100644 index 0000000..3445364 --- /dev/null +++ b/Modulos/Facturas de proveedor/Cliente/uPluginControllerFacturasProveedor.dfm @@ -0,0 +1,462 @@ +object ModuleFacturasProveedor: TModuleFacturasProveedor + OldCreateOrder = True + DefaultAction = actFacturasProveedor + Description = 'Compras' + ModuleMenu = MainMenu + ModuleName = 'Facturas de proveedor' + SmallImages = SmallImages + LargeImages = LargeImages + Author = 'Rodax Software' + Version = '1.0.0' + Left = 693 + Top = 665 + Height = 252 + Width = 401 + object LargeImages: TPngImageList + Height = 24 + Width = 24 + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD25200000A4D694343505068 + 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 + F73EE77CFEFC2FF784F3FB25D29F330000028C4944415478DADD945F4853511C + C7BF77646942ABE9A061F6BF8690D443427B88A2321123166EDAA21E122308EA + B184407DC887E8A932F0611A3542325F0A0729B432A849CA68CA1CA2B86C0C4B + 43A428EFEEEE9FCE39E8DA9FBB7F0F7BE9073F7EE7DE7BCEF7737EBFF33B9753 + 1405F934EEFF00F43A47F34689026C7555392D1425059224232C882C8AB2CC22 + 1B131722121AAFB6C6030E5BDE6514964540126444C2448CB8F0538448C78204 + 99BC672E8A687FA045CFB357C980B1FEE371A033B53EB4365D4B06911D53AFAE + 71603A50C284BF85CEA174CB73709284B647BAD4006A741C2B3EBEFC05756573 + 88AC7C4541D17638433B602C324010049C35F7C33FA1C5C2623D9B5B5AEC407B + 973E7D066BE2E5C5C308FE3EC622151F5A3A8AD3BAB704B21B538B5530EA47E1 + 0D56A2DEFA12C3AE26E8373E25352419D80DEA80C4D21834BD98976DD8AA7130 + F11A9D1B834B2654970C6166D986FDDA018C7F3F8586F303981C59C7C4E941B5 + F594670788CF60161C0AA18067194C840EA2B2CC8B4FD3FB70E1D220263F70AB + 5D403278B2333D2016229105BE5F417606023F85F585467606DBE44D08F37C92 + 38B59480D82EA2ED6736FBD172B1994164D6EB52D4E973A3CD19155F8C5C815E + D3951E10BD48B4B77985C50D073CF86C79AF7A2FF4B596B89DAF992A20F1968A + AB37D377BF02FA9356EC3D72173323B7D89C85D931708100BA5DF3B0DF3E9104 + EE0C5D4F06743A5EABEE72F31F0FF6FCB033B1446BE9B89112EC29B8FC0F70EF + E1E38CBF09CFCD39D5F7CD1DAEE4B9449C1A03701C9751FCE39D5D4A2E6522D0 + 866E17FF22178095843EB532D9DFACA8420980CB0A40C54DA68A3EB56F6EB75F + F56C881D22006FB680B4E5A13B4DB536EB0C52958718AB755A403E2DEF80BF27 + 2521AB920B52530000000049454E44AE426082} + Name = 'PngImage1' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD252000001BE4944415478DA + 63FCFFFF3F032D0123B2054BB79CA49A6DD13EE68C582D004A906CD8DFBFFF80 + F83F980601EBC07C86733BA6E1B6C0B6683F8A0187FB1C711A8EAC765BB315C3 + C275FB19E62DDD84DF02525CEE507A9081455D89E1C08C1D0CEF0FC6312CD978 + 90B005D87C802E06027B3BEC189C2B0E311CD97F0BCC7FB32F8661F996C394F9 + E0FF3F605803F11FA0EB41EC3FFFFE41E3E01F98BD7ADB51D27D400C00F9E2F1 + 8E70860DBB4E106701CCDBA480075B431936EF3D459C05F8520E3600D2B3A850 + 8F61EB81D3C45B802BA86096C3E4616AE7E7EB32EC387486763E989DA3CDB0E7 + E839DAF96046A626C3FE131768E783A969EA0C874E5FC26F4184A729387792E3 + 838929AA0CC7CE5EC16F41A89B09387792E3839E042586D317AFE3B720C8D988 + C1ADFA08591674C62A309CBB7213BF057E8E060C5EB5C7F01A06B27CC1913F70 + 7E820D0BD882B62839868BD76FE3B7C0DB4E0F5EAEC0CA1850D9032BF393275F + C1881F18BF394296E1CACD3BF82DF0B0D6C16938884E9B760D6BF0116D818BA5 + 164EC3411667CDB88133E888B2C0DE541D6CD8BFBF88621966E1BFFFFFB1061F + 322068818D912AB844A404E0B5A077CA428A0C8701980500619929EF09CFCE42 + 0000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end> + Left = 232 + Top = 16 + Bitmap = {} + end + object ModuleActionList: TActionList + Images = LargeImages + Left = 40 + Top = 72 + object actFacturasProveedor: TAction + Category = 'Compras' + Caption = 'Facturas de proveedor' + ImageIndex = 1 + OnExecute = actFacturasProveedorExecute + end + end + object MainMenu: TMainMenu + Images = LargeImages + Left = 40 + Top = 16 + object Ventas1: TMenuItem + Tag = 200 + Caption = '&Compras' + GroupIndex = 1 + ImageIndex = 0 + object N1: TMenuItem + Tag = 4001 + Caption = '-' + end + object MenuItem2: TMenuItem + Tag = 4000 + Action = actFacturasProveedor + end + end + end + object SmallImages: TPngImageList + PngImages = < + 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 + F73EE77CFEFC2FF784F3FB25D29F330000012D4944415478DA63FCFFFF3F0325 + 80916203966D3945B60991DEA68C6003B42CC41852B26F6355F4E7E77F86DFDF + FE31FCFEFC97E1FBFBDF60F68E73460C89D19D0CE7764C4318000230434E2E77 + C63048416B135C3308A018D0B7F8235C214CB30CFF5E880B3E3F6278F12F11CC + 16175BC3F0FFF76F06865F7F18E4EC4E103600A41904600688092E076B66001A + 22E77C16BB01BFBEFC6338BFD915C30BC89A19FFFC619075BF881A0620FF8334 + FFFAF297E1D75760A07DF9C3B032A610670C641FF64018D03D793E8682A9B63B + 184C53EA197E89A933309DE86638BFEF3CC3DC7DCF19A6B478C1D973F67E6764 + C465C3B116C5D003AFD556DDBD7C10AB7CB293649865F5BDD5F80CF84FB10B80 + D42A9042AABA00A4D1AAE6FE6A901A503E22D90573F7FD80EB011B40696E0400 + A0BEE1E16734A0290000000049454E44AE426082} + Name = 'PngImage1' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001684944415478DA + 63FCFFFF3FC394C53BFE33900172623D1819610600394469FAF3F71FC3EF3F7F + 19ACFDF319CEED98866A806DD17E14C587FB1CC134B2F8AE761B86B9ABF632CC + 5BBA09D3007CE0D7EFBF609B4178C98683D80D40770136B0AED69461E59623B8 + 0D80391B04FE01E5FEFCF907B7D9B7FE04C3AA4A6386B53B8EE13700E692BD9D + 760CCEE587E03607359F66585A6AC0B069CF49FC06A0DB0CC2207E58FB598685 + 85BA0CDB0E9CC16DC0C15E0706FBE203605B37375A809D0D02209BA3BB2F30CC + C9D566D87DE41C6E0340CE46B7F9E7AF3F6076D2C42B0C53D2D4180E9FBE8C69 + 4046941B8363E94194105F5E6EC810D9791ECC9E99A5C9903EED3A437F920AC3 + 89F357310D480E7386DB08A2435ACF302C2ED687B8049A067266DD62E88A5364 + 387BF906A60171410E280107B3191DB446C9315CBA7E1BD380283F3B147F23DB + FC1BC9E07FFFFE335CB97907D380502F6B86D5DB8E129D13310C0009900A4006 + 00004B6D80F047EC10D30000000049454E44AE426082} + Name = 'PngImage1' + Background = clWindow + end> + PngOptions = [pngBlendOnDisabled, pngGrayscaleOnDisabled] + Left = 308 + Top = 16 + Bitmap = {} + end + object ExtraImages: TPngImageList + Height = 28 + Width = 28 + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D494844520000001C0000001C0806000000720DDF + 940000000970485973000017120000171201679FD25200000A4D694343505068 + 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 + F73EE77CFEFC2FF784F3FB25D29F33000002F94944415478DAED946B48936114 + C7FFAFDA55CD5CD32E46609161D087082129E8B2794B50495B5EBE140C83A2CF + 5DD13E9804111195502441068D04D32C2DCD6181592D2F594CF2B291A6DB9C9A + 3AB3E9DE4BCFFB583ADBC539621FA2030FE7BCCF7B38BF739EFFF3BE8C2008F0 + A531FF81FF06F0C1538DCFA833C0ACE418AF0AB09C008EE389E7A9A7316F1753 + 4F72C8DEE16379738131992F3C06092C814D0AB05949C1499EC6A2E726391AF3 + 53FCF462593434C9A0EFEDC3D9C2DB8E408D4A3E079CBCAF1B79B9B92EC13CE9 + 9CA71371484C54A1B367250519BF1E8454A202C3F2A86F96A1B7DFE01A289A18 + 3B837D1CEE41526427584B3F0282D7A15ABF195181AB29505C29296568D70661 + 602083E64B034BA06E96A3DF64723FA13D6C7D481DB871330C5C268D4558EDE0 + 1EC449EB0874033A0CB1D8145401FFE070B4E9B7233DBD122FEB8F206CF93D90 + 2E50D3120FD3A0D939D0D951AEF55711D10418F82CACF12BA1B07869036A0677 + 412E7D8EAED14C44853CA1B96D2639148A2A68DFF95198B8AA5A1330343CE439 + 904E68311260CEAF097BC060290458E9849FBEEC40B4A49A4EA8698F46764E2D + B48DC20CB0A23901639611F740671746D4483BDA4735B459745814BC916A1881 + 20FA8EB5D91C60A29569E2F07D626CFE5BCA5A05A426E928542C68316A21E938 + E3F6735992B6172B264261669508636ED1BDD2B73258ADE3EE2714619C75F6FB + 12FDFD832711A3CCC754F8162C1EF83C9DA77B4CFD88DE40FDF9E216DC39B77F + 4E138F2CC7B12C34C21138DFDFA3AB681B56C91488DA79091D6F4ED35CB3BE89 + 7A3F5D37F5C56A036E141C70682223BFD111F8EC55ABDBE3EAEB7C8FADC6425A + D49919BE5971B5E894D32644E0CD6B57668197AFDF852716116841E58961B739 + CA8B6AFBC7F2F680D4B41F8C843E5020C3301EC1447B5D10292C5447D280A258 + 6D2DF51AE8A98EF60D1020E32DF01029984DC2341729E54795BBD3FE6CC02BA0 + 088B8D8D7EB800FD6803645D20C00FDE003DD2EFF734CE6CC1404FF4FB9BC079 + F5B33F3E97405F9ACF813F01DF078FC2BAE18F2B0000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D494844520000001C0000001C0806000000720DDF + 940000000970485973000017120000171201679FD252000002834944415478DA + BDD6ED4F52511800F087ECDFA8B5D6CB2A8550FC525862BC28B56966F9B2D658 + 5B7373D69ABDACF5A12FADD6875EB6968DD922299C1481888680C0E555485494 + 20B2FADCFAD6565FE53EDD7B0B86099C6BD7F970D9E53CDC7B7EE73907388810 + 11363344C5A023F0916BB0B9FC73559B7970C7DFD7DCFBDC8150B5A5AA24705A + 23159505C7A90CB62A0EFCF7E869A62F9A46C8E568C8D134C8DB2EC382EB6979 + D0EE4F635B5335340C506B3A0B3F549485FEBDDE7DF730182C7E308C38F881EB + 0D1654CBF680FFD70A04F42EF819D181D14691C131DF073C79ACA66C85A5F2C1 + 078D70F44A0022D4E742EE47E81C98EC413268F3A6B05D29E65D19BB4EB91C72 + E7E2B56373E6C93019B47A97F0945252B212BEC156FADDDB031667940738CD80 + AA3F60F114AD37BE79BAC1EA9A21836F3D8BD8A13EC881953E959582BD77F4BA + 14ECD3713268712791F9A20A064D572530E19B25836FDC0B7846535B002BAD65 + 7E40C5D7E4EF310E88C14925C8E06BD73C7636D709AEF0F9A56AF084E7798053 + 0CD8221C1CEADF0FBE68920C9AA7E6B0AB4526784AF57DFB808A2D92C1516702 + BBB5F5822B1CECDD0BA1D9140FF05D023BB532EEA74A08F8F8C26E88CEA5C9E0 + C8E47B660DEB41712D28684A1F9DDF05F164861FD8A1AE03E58DB0A00AEFEB76 + 4262294B064D13716C57D582E666541078EFEC0E486696C9E02B470C5B9BA470 + FC568C57E7ECA086232B85B64EBE9503EFF46C8754F60B3FF044A3A4F49643AF + FEFBD03B985DB3CEF9F6EDAE6D905EFE4A065F8ECFA0F6888488B103EAD37F2A + 39EDEB028DF62836378889187BBE38547EFBE20D0E8F4550231713B172B9E2E0 + 05BEB0855175A886DBCB362288A0C11AC227CFCC1B82E5A322B819F11BFB7D9A + E74CD9D0710000000049454E44AE426082} + Name = 'PngImage1' + Background = clWindow + end> + Left = 232 + Top = 80 + Bitmap = {} + end +end diff --git a/Modulos/Facturas de proveedor/Cliente/uPluginControllerFacturasProveedor.pas b/Modulos/Facturas de proveedor/Cliente/uPluginControllerFacturasProveedor.pas new file mode 100644 index 0000000..8f793ce --- /dev/null +++ b/Modulos/Facturas de proveedor/Cliente/uPluginControllerFacturasProveedor.pas @@ -0,0 +1,69 @@ +unit uPluginControllerFacturasProveedor; + +interface + +uses + uModuleController, uInterfaces, uHostManager, Menus, Classes, ActnList, + ImgList, Controls, PngImageList; + +type + IMCFacturasProveedor = interface(IInterface) + ['{6AA0FD19-518A-40D2-BF3F-2E2FACA7C29F}'] + end; + + TModuleFacturasProveedor = class(TModuleController, IMCFacturasProveedor) + actFacturasProveedor: TAction; + ExtraImages: TPngImageList; + LargeImages: TPngImageList; + MainMenu: TMainMenu; + ModuleActionList: TActionList; + SmallImages: TPngImageList; + Ventas1: TMenuItem; + MenuItem2: TMenuItem; + N1: TMenuItem; + procedure actFacturasProveedorExecute(Sender: TObject); + public + end; + +implementation + +{$R *.dfm} + +uses + Forms, Dialogs, uGUIBase, uCustomEditor, SysUtils, uBizFacturasProveedor, + uDataModuleFacturasProveedor, uEditorFacturasProveedor; + +function GetModule : TModuleController; +begin + Result := TModuleFacturasProveedor.Create(NIL); +end; + +exports + GetModule name GET_MODULE_FUNC; + +procedure TModuleFacturasProveedor.actFacturasProveedorExecute(Sender: TObject); +var + aObj: IEditorFacturasProveedor; + AFacturasProveedor : IBizFacturasProveedor; +begin + AFacturasProveedor := dmFacturasProveedor.GetItems; + aObj := TfEditorFacturasProveedor.Create(Application); + try + with aObj do + begin + FacturasProveedor := AFacturasProveedor; + ShowEmbedded; + end; + finally + AFacturasProveedor := NIL; + aObj := NIL; + end; +end; + +initialization + RegisterModuleClass(TModuleFacturasProveedor); + +finalization + UnRegisterModuleClass(TModuleFacturasProveedor); + +end. diff --git a/Modulos/Facturas de proveedor/Cliente/uViewDatosFacturaProveedor.ddp b/Modulos/Facturas de proveedor/Cliente/uViewDatosFacturaProveedor.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Facturas de proveedor/Cliente/uViewDatosFacturaProveedor.ddp differ diff --git a/Modulos/Facturas de proveedor/Cliente/uViewDatosFacturaProveedor.dfm b/Modulos/Facturas de proveedor/Cliente/uViewDatosFacturaProveedor.dfm new file mode 100644 index 0000000..636b32c --- /dev/null +++ b/Modulos/Facturas de proveedor/Cliente/uViewDatosFacturaProveedor.dfm @@ -0,0 +1,100 @@ +inherited frViewDatosFacturaProveedor: TfrViewDatosFacturaProveedor + Width = 360 + Height = 110 + Constraints.MinHeight = 110 + Constraints.MinWidth = 360 + DesignSize = ( + 360 + 110) + object Bevel1: TBevel + Left = 208 + Top = 8 + Width = 141 + Height = 9 + Anchors = [akLeft, akTop, akRight] + Shape = bsBottomLine + end + object Label5: TLabel + Left = 8 + Top = 8 + Width = 189 + Height = 13 + Caption = 'Datos de la factura de proveedor' + Font.Charset = DEFAULT_CHARSET + Font.Color = clActiveCaption + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + ParentFont = False + end + object Label1: TLabel + Left = 16 + Top = 32 + Width = 56 + Height = 13 + Caption = 'Referencia:' + end + object Label2: TLabel + Left = 16 + Top = 56 + Width = 71 + Height = 13 + Caption = 'Fecha factura:' + end + object Label3: TLabel + Left = 16 + Top = 80 + Width = 61 + Height = 13 + Caption = 'Vencimiento:' + end + object edtFecha: TcxDBDateEdit + Left = 100 + Top = 52 + Anchors = [akLeft, akTop, akRight] + DataBinding.DataField = 'FECHAFACTURA' + DataBinding.DataSource = DADataSource + Style.Color = clInfoBk + Style.LookAndFeel.NativeStyle = True + Style.Shadow = False + Style.ButtonTransparency = ebtNone + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 1 + Width = 245 + end + object edtVencimiento: TcxDBDateEdit + Left = 100 + Top = 76 + Anchors = [akLeft, akTop, akRight] + DataBinding.DataField = 'VENCIMIENTO' + DataBinding.DataSource = DADataSource + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 2 + Width = 245 + end + object eReferencia: TcxDBTextEdit + Left = 100 + Top = 28 + Anchors = [akLeft, akTop, akRight] + DataBinding.DataField = 'REFERENCIA' + DataBinding.DataSource = DADataSource + Properties.ReadOnly = False + Style.Color = clInfoBk + Style.LookAndFeel.NativeStyle = True + StyleDisabled.Color = clMenuBar + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clWindowText + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 0 + Width = 245 + end + object DADataSource: TDADataSource + Left = 88 + end +end diff --git a/Modulos/Facturas de proveedor/Cliente/uViewDatosFacturaProveedor.pas b/Modulos/Facturas de proveedor/Cliente/uViewDatosFacturaProveedor.pas new file mode 100644 index 0000000..42e5c4a --- /dev/null +++ b/Modulos/Facturas de proveedor/Cliente/uViewDatosFacturaProveedor.pas @@ -0,0 +1,35 @@ +unit uViewDatosFacturaProveedor; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, DB, uDADataTable, cxControls, cxContainer, cxEdit, + cxTextEdit, cxMaskEdit, cxDropDownEdit, cxCalendar, cxDBEdit, StdCtrls, + Mask, DBCtrls, ExtCtrls, cxMemo, cxRichEdit, cxDBRichEdit; + +type + TfrViewDatosFacturaProveedor = class(TfrViewBase) + Bevel1: TBevel; + Label5: TLabel; + Label1: TLabel; + Label2: TLabel; + edtFecha: TcxDBDateEdit; + Label3: TLabel; + edtVencimiento: TcxDBDateEdit; + DADataSource: TDADataSource; + eReferencia: TcxDBTextEdit; + private + { Private declarations } + public + { Public declarations } + end; + +var + frViewDatosFacturaProveedor: TfrViewDatosFacturaProveedor; + +implementation + +{$R *.dfm} + +end. diff --git a/Modulos/Facturas de proveedor/Cliente/uViewFacturaProveedor.ddp b/Modulos/Facturas de proveedor/Cliente/uViewFacturaProveedor.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Facturas de proveedor/Cliente/uViewFacturaProveedor.ddp differ diff --git a/Modulos/Facturas de proveedor/Cliente/uViewFacturaProveedor.dfm b/Modulos/Facturas de proveedor/Cliente/uViewFacturaProveedor.dfm new file mode 100644 index 0000000..4486a6d --- /dev/null +++ b/Modulos/Facturas de proveedor/Cliente/uViewFacturaProveedor.dfm @@ -0,0 +1,197 @@ +inherited frViewFacturaProveedor: TfrViewFacturaProveedor + Width = 761 + Height = 280 + Align = alClient + Constraints.MinHeight = 280 + Constraints.MinWidth = 761 + inline frViewDatosYSeleccionContacto1: TfrViewDatosYSeleccionContacto + Left = 362 + Top = 0 + Width = 377 + Height = 214 + Constraints.MinHeight = 202 + Constraints.MinWidth = 350 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 0 + ReadOnly = False + inherited Label5: TLabel + Width = 116 + Caption = 'Datos del proveedor' + end + inherited Bevel1: TBevel + Left = 128 + Width = 235 + end + inherited ToolBar1: TToolBar + ButtonWidth = 148 + inherited ToolButton3: TToolButton + Left = 125 + end + inherited ToolButton2: TToolButton + Left = 133 + end + end + inherited edtlNombre: TcxDBTextEdit + DataBinding.DataSource = DADataSource + Properties.ReadOnly = False + Properties.OnEditValueChanged = frViewDatosYSeleccionContacto1edtlNombrePropertiesEditValueChanged + Style.Color = clInfoBk + Height = 21 + Width = 282 + end + inherited edtPoblacion: TcxDBTextEdit + DataBinding.DataSource = DADataSource + Properties.ReadOnly = False + Properties.OnEditValueChanged = frViewDatosYSeleccionContacto1edtlNombrePropertiesEditValueChanged + Style.Color = clInfoBk + Height = 21 + Width = 282 + end + inherited edtProvincia: TcxDBTextEdit + DataBinding.DataSource = DADataSource + Properties.ReadOnly = False + Properties.OnEditValueChanged = frViewDatosYSeleccionContacto1edtlNombrePropertiesEditValueChanged + Style.Color = clInfoBk + Height = 21 + Width = 138 + end + inherited edtNIFCIF: TcxDBTextEdit + DataBinding.DataSource = DADataSource + Properties.ReadOnly = False + Properties.OnEditValueChanged = frViewDatosYSeleccionContacto1edtlNombrePropertiesEditValueChanged + Style.Color = clInfoBk + Height = 21 + Width = 282 + end + inherited edtCalle: TcxDBTextEdit + DataBinding.DataSource = DADataSource + Properties.ReadOnly = False + Properties.OnEditValueChanged = frViewDatosYSeleccionContacto1edtlNombrePropertiesEditValueChanged + Style.Color = clInfoBk + Height = 21 + Width = 282 + end + inherited ToolBar2: TToolBar + Left = 181 + Width = 201 + ButtonWidth = 197 + end + inherited edtCodigoPostal: TcxDBTextEdit + DataBinding.DataSource = DADataSource + Properties.ReadOnly = False + Properties.OnEditValueChanged = frViewDatosYSeleccionContacto1edtlNombrePropertiesEditValueChanged + Style.Color = clInfoBk + Height = 21 + Width = 91 + end + inherited DADataSource: TDADataSource + Left = 88 + Top = 48 + end + inherited ActionList1: TActionList + Top = 40 + inherited actElegirContacto: TAction + Caption = 'Elegir un proveedor' + OnExecute = frViewDatosYSeleccionContacto1actElegirContactoExecute + end + inherited actAnadirContacto: TAction + Caption = 'Dar de alta un proveedor' + OnExecute = frViewDatosYSeleccionContacto1actAnadirContactoExecute + end + inherited actVerContacto: TAction + Caption = 'Ver ficha completa del proveedor...' + OnExecute = frViewDatosYSeleccionContacto1actVerContactoExecute + end + end + inherited PngImageList: TPngImageList + Left = 160 + Top = 56 + end + end + inline frViewFormaPago1: TfrViewFormaPago + Left = 2 + Top = 175 + Width = 360 + Height = 76 + Constraints.MinWidth = 300 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 1 + ReadOnly = False + inherited Bevel1: TBevel + Width = 252 + end + inherited memFormaPago: TcxDBMemo + Height = 40 + Width = 329 + end + end + inline frViewObservaciones1: TfrViewObservaciones + Left = 0 + Top = 102 + Width = 360 + Height = 80 + Constraints.MinWidth = 300 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 2 + ReadOnly = False + inherited Label5: TLabel + Width = 131 + Caption = 'Concepto de la factura' + end + inherited Bevel1: TBevel + Left = 144 + Width = 204 + end + inherited memObservaciones: TcxDBMemo + DataBinding.DataField = 'CONCEPTO' + Height = 39 + Width = 329 + end + inherited DADataSource: TDADataSource + Left = 8 + Top = 32 + end + end + inline frViewDatosFacturaProveedor1: TfrViewDatosFacturaProveedor + Left = 0 + Top = 0 + Width = 360 + Height = 110 + Constraints.MinHeight = 110 + Constraints.MinWidth = 360 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 3 + ReadOnly = False + inherited edtFecha: TcxDBDateEdit + Width = 245 + end + inherited edtVencimiento: TcxDBDateEdit + Width = 245 + end + inherited eReferencia: TcxDBTextEdit + Width = 245 + end + end + object DADataSource: TDADataSource + end +end diff --git a/Modulos/Facturas de proveedor/Cliente/uViewFacturaProveedor.pas b/Modulos/Facturas de proveedor/Cliente/uViewFacturaProveedor.pas new file mode 100644 index 0000000..8467a8b --- /dev/null +++ b/Modulos/Facturas de proveedor/Cliente/uViewFacturaProveedor.pas @@ -0,0 +1,124 @@ +unit uViewFacturaProveedor; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, DB, uDADataTable, uCustomView, + uViewDatosYSeleccionContacto, uViewDatosFacturaProveedor, + uViewObservaciones, uViewFormaPago, AppEvnts, uBizFacturasProveedor, + cxControls, cxContainer, cxEdit, cxTextEdit, cxDBEdit; + +type + IViewFacturaProveedor = interface(IViewBase) + ['{B3E29576-9318-4EA7-B778-AFDA6CA3A716}'] + function GetFacturaProveedor: IBizFacturasProveedor; + procedure SetFacturaProveedor(const Value: IBizFacturasProveedor); + property FacturaProveedor: IBizFacturasProveedor read GetFacturaProveedor + write SetFacturaProveedor; + end; + + TfrViewFacturaProveedor = class(TfrViewBase, IViewFacturaProveedor) + DADataSource: TDADataSource; + frViewDatosYSeleccionContacto1: TfrViewDatosYSeleccionContacto; + frViewObservaciones1: TfrViewObservaciones; + frViewFormaPago1: TfrViewFormaPago; + frViewDatosFacturaProveedor1: TfrViewDatosFacturaProveedor; + procedure frViewDatosYSeleccionContacto1actElegirContactoExecute( + Sender: TObject); + procedure frViewDatosYSeleccionContacto1actAnadirContactoExecute( + Sender: TObject); + procedure frViewDatosYSeleccionContacto1actVerContactoExecute( + Sender: TObject); + procedure frViewDatosYSeleccionContacto1edtlNombrePropertiesEditValueChanged( + Sender: TObject); + private + FFacturaProveedor : IBizFacturasProveedor; + procedure OnContactoChanged (Sender : TObject); + protected + function GetFacturaProveedor: IBizFacturasProveedor; + procedure SetFacturaProveedor(const Value: IBizFacturasProveedor); + public + property FacturaProveedor: IBizFacturasProveedor read GetFacturaProveedor + write SetFacturaProveedor; + end; + +var + frViewFacturaProveedor: TfrViewFacturaProveedor; + +implementation + +uses uBizContacto, uExceptions, uDataModuleContactos; + +{$R *.dfm} + +{ TfrViewFacturaProveedor } + +function TfrViewFacturaProveedor.GetFacturaProveedor: IBizFacturasProveedor; +begin + Result := FFacturaProveedor; +end; + +procedure TfrViewFacturaProveedor.OnContactoChanged(Sender: TObject); +begin + FFacturaProveedor.Proveedor := (frViewDatosYSeleccionContacto1.Contacto as IBizProveedor); +end; + +procedure TfrViewFacturaProveedor.SetFacturaProveedor( + const Value: IBizFacturasProveedor); +begin + FFacturaProveedor := Value; + if Assigned(FFacturaProveedor) then + DADataSource.DataTable := FFacturaProveedor.DataTable + else + DADataSource.DataTable := NIL; + + frViewDatosFacturaProveedor1.DADataSource.DataTable := DADataSource.DataTable; + frViewObservaciones1.DADataSource.DataTable := DADataSource.DataTable; + frViewFormaPago1.DADataSource.DataTable := DADataSource.DataTable; + + frViewDatosYSeleccionContacto1.Contacto := FFacturaProveedor.Proveedor; + frViewDatosYSeleccionContacto1.OnContactoChanged := OnContactoChanged; + +// frViewPresupuestoFactura1.FacturaProveedor := FFacturaProveedor; +end; + +procedure TfrViewFacturaProveedor.frViewDatosYSeleccionContacto1actElegirContactoExecute( + Sender: TObject); +begin + inherited; + frViewDatosYSeleccionContacto1.actElegirContactoExecute(Sender); + +end; + +procedure TfrViewFacturaProveedor.frViewDatosYSeleccionContacto1actAnadirContactoExecute( + Sender: TObject); +begin + inherited; + frViewDatosYSeleccionContacto1.actAnadirContactoExecute(Sender); + +end; + +procedure TfrViewFacturaProveedor.frViewDatosYSeleccionContacto1actVerContactoExecute( + Sender: TObject); +var + AContacto : IBizProveedor; +begin + inherited; + AContacto := dmContactos.GetProveedor(FFacturaProveedor.CODIGOPROVEEDOR); + try + AContacto.Show; + finally + AContacto := NIL; + end; +end; + +procedure TfrViewFacturaProveedor.frViewDatosYSeleccionContacto1edtlNombrePropertiesEditValueChanged( + Sender: TObject); +begin + inherited; + with (Sender as TcxDBTextEdit) do + Enabled := (FFacturaProveedor.CODIGOPROVEEDOR <> 0) +end; + +end. diff --git a/Modulos/Facturas de proveedor/Cliente/uViewFacturasProveedor.ddp b/Modulos/Facturas de proveedor/Cliente/uViewFacturasProveedor.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Facturas de proveedor/Cliente/uViewFacturasProveedor.ddp differ diff --git a/Modulos/Facturas de proveedor/Cliente/uViewFacturasProveedor.dfm b/Modulos/Facturas de proveedor/Cliente/uViewFacturasProveedor.dfm new file mode 100644 index 0000000..c6edde8 --- /dev/null +++ b/Modulos/Facturas de proveedor/Cliente/uViewFacturasProveedor.dfm @@ -0,0 +1,158 @@ +inherited frViewFacturasProveedor: TfrViewFacturasProveedor + inherited cxGrid: TcxGrid + inherited cxGridView: TcxGridDBTableView + DataController.KeyFieldNames = 'CODIGO' + DataController.Summary.FooterSummaryItems = < + item + Format = '0 Facturas' + Kind = skCount + Column = cxGridViewNOMBRE + end + item + Format = ',0.00 '#8364';-,0.00 '#8364 + Kind = skSum + Column = cxGridViewIMPORTETOTAL + end> + object cxGridViewICONO: TcxGridDBColumn + OnCustomDrawCell = cxGridViewCODIGOCustomDrawCell + BestFitMaxWidth = 25 + Options.Sorting = False + Width = 25 + end + object cxGridViewCODIGO: TcxGridDBColumn + DataBinding.FieldName = 'CODIGO' + Visible = False + BestFitMaxWidth = 25 + Width = 21 + IsCaptionAssigned = True + end + object cxGridViewFECHAFACTURA: TcxGridDBColumn + DataBinding.FieldName = 'FECHAFACTURA' + SortIndex = 0 + SortOrder = soDescending + Width = 74 + end + object cxGridViewREFERENCIA: TcxGridDBColumn + DataBinding.FieldName = 'REFERENCIA' + PropertiesClassName = 'TcxTextEditProperties' + Width = 51 + end + object cxGridViewNOMBRE: TcxGridDBColumn + DataBinding.FieldName = 'NOMBRE' + Width = 134 + end + object cxGridViewVENCIMIENTO: TcxGridDBColumn + DataBinding.FieldName = 'VENCIMIENTO' + Width = 48 + end + object cxGridViewIMPORTETOTAL: TcxGridDBColumn + DataBinding.FieldName = 'IMPORTETOTAL' + PropertiesClassName = 'TcxCurrencyEditProperties' + Properties.Alignment.Horz = taRightJustify + FooterAlignmentHorz = taRightJustify + HeaderAlignmentHorz = taRightJustify + Width = 67 + end + end + end + inherited frViewFiltroBase1: TfrViewFiltroBase + inherited TBXDock1: TTBXDock + inherited TBXDockablePanel1: TTBXDockablePanel + inherited dxLayoutControl1: TdxLayoutControl + inherited txtFiltroTodo: TcxTextEdit + Width = 273 + end + inherited edtFechaIniFiltro: TcxDateEdit + Width = 121 + end + inherited edtFechaFinFiltro: TcxDateEdit + Width = 121 + end + end + end + end + end + inherited dxComponentPrinter: TdxComponentPrinter + inherited dxComponentPrinterLink: TdxGridReportLink + ReportDocument.CreationDate = 38673.741107951390000000 + BuiltInReportLink = True + end + 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 + 610000000970485973000017120000171201679FD252000001684944415478DA + 63FCFFFF3FC394C53BFE33900172623D1819610600394469FAF3F71FC3EF3F7F + 19ACFDF319CEED98866A806DD17E14C587FB1CC134B2F8AE761B86B9ABF632CC + 5BBA09D3007CE0D7EFBF609B4178C98683D80D40770136B0AED69461E59623B8 + 0D80391B04FE01E5FEFCF907B7D9B7FE04C3AA4A6386B53B8EE13700E692BD9D + 760CCEE587E03607359F66585A6AC0B069CF49FC06A0DB0CC2207E58FB598685 + 85BA0CDB0E9CC16DC0C15E0706FBE203605B37375A809D0D02209BA3BB2F30CC + C9D566D87DE41C6E0340CE46B7F9E7AF3F6076D2C42B0C53D2D4180E9FBE8C69 + 4046941B8363E94194105F5E6EC810D9791ECC9E99A5C9903EED3A437F920AC3 + 89F357310D480E7386DB08A2435ACF302C2ED687B8049A067266DD62E88A5364 + 387BF906A60171410E280107B3191DB446C9315CBA7E1BD380283F3B147F23DB + FC1BC9E07FFFFE335CB97907D380502F6B86D5DB8E129D13310C0009900A4006 + 00004B6D80F047EC10D30000000049454E44AE426082} + Name = 'PngImage2' + Background = clWindow + end> + Left = 56 + Top = 48 + Bitmap = {} + end +end diff --git a/Modulos/Facturas de proveedor/Cliente/uViewFacturasProveedor.pas b/Modulos/Facturas de proveedor/Cliente/uViewFacturasProveedor.pas new file mode 100644 index 0000000..e768cf6 --- /dev/null +++ b/Modulos/Facturas de proveedor/Cliente/uViewFacturasProveedor.pas @@ -0,0 +1,132 @@ +unit uViewFacturasProveedor; + +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, dxPScxGridLnk, ActnList, uDADataTable, + cxGridLevel, cxClasses, cxControls, cxGridCustomView, cxGrid, + cxImage, Grids, DBGrids, uBizFacturasProveedor, cxCurrencyEdit, + uViewFiltroBase; + +type + IViewFacturasProveedor = interface(IViewGrid) + ['{82E4A231-1B52-4C90-8E10-D485E8A13C49}'] + procedure SyncFocusedRecord; + function GetFacturasProveedor: IBizFacturasProveedor; + procedure SetFacturasProveedor(const Value: IBizFacturasProveedor); + property FacturasProveedor: IBizFacturasProveedor read GetFacturasProveedor + write SetFacturasProveedor; + end; + + TfrViewFacturasProveedor = class(TfrViewGrid, IViewFacturasProveedor) + PngImageList: TPngImageList; + cxGridViewNOMBRE: TcxGridDBColumn; + cxGridViewFECHAFACTURA: TcxGridDBColumn; + cxGridViewVENCIMIENTO: TcxGridDBColumn; + cxGridViewIMPORTETOTAL: TcxGridDBColumn; + cxGridViewREFERENCIA: TcxGridDBColumn; + cxGridViewCODIGO: TcxGridDBColumn; + cxGridViewICONO: TcxGridDBColumn; + procedure cxGridViewCODIGOCustomDrawCell( + Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; + AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); + + private + //Filtros relativos a la vista + procedure AnadirFiltroFechas; + + protected + FFacturasProveedor: IBizFacturasProveedor; + function GetFacturasProveedor: IBizFacturasProveedor; + procedure SetFacturasProveedor(const Value: IBizFacturasProveedor); + procedure AnadirOtrosFiltros; override; + + public + procedure SyncFocusedRecord; + property FacturasProveedor: IBizFacturasProveedor read GetFacturasProveedor + write SetFacturasProveedor; + end; + +var + frViewFacturasProveedor: TfrViewFacturasProveedor; + +implementation + +uses + uDataModuleFacturasProveedor; + +{$R *.dfm} + +{ TfrViewFacturasProveedor } + +function TfrViewFacturasProveedor.GetFacturasProveedor: IBizFacturasProveedor; +begin + Result := FFacturasProveedor; +end; + +procedure TfrViewFacturasProveedor.SetFacturasProveedor( + const Value: IBizFacturasProveedor); +begin + FFacturasProveedor := Value; + if Assigned(FFacturasProveedor) then + DADataSource.DataTable := FFacturasProveedor.DataTable; +end; + +procedure TfrViewFacturasProveedor.cxGridViewCODIGOCustomDrawCell( + Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; + AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); +var + R : TRect; +begin + inherited; + R := AViewInfo.ContentBounds; + ACanvas.FillRect(R); + ACanvas.DrawImage(PngImageList, R.Left, R.Top, 2); + ADone := True; +end; + +procedure TfrViewFacturasProveedor.SyncFocusedRecord; +begin +// +end; + +procedure TfrViewFacturasProveedor.AnadirFiltroFechas; +var + Columna1, Columna2: 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); + Columna1 := (cxGridView as TcxGridDBTableView).GetColumnByFieldName('FECHAFACTURA'); + FFiltro.AddItem(Columna1, foBetween, varArrayOf([Fecha1, Fecha2]), VarToStr(Fecha1) + ' and ' + VarToStr(Fecha2)); + end; +end; + +procedure TfrViewFacturasProveedor.AnadirOtrosFiltros; +begin + inherited; + + 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; + +end. diff --git a/Modulos/Facturas de proveedor/Reglas/schFacturasProveedorClient_Intf.pas b/Modulos/Facturas de proveedor/Reglas/schFacturasProveedorClient_Intf.pas new file mode 100644 index 0000000..a4f3aea --- /dev/null +++ b/Modulos/Facturas de proveedor/Reglas/schFacturasProveedorClient_Intf.pas @@ -0,0 +1,462 @@ +unit schFacturasProveedorClient_Intf; + +interface + +uses + Classes, DB, SysUtils, uROClasses, uDADataTable; + +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_FacturasProveedor = '{3F8DC163-805B-44BC-9D8A-90A0A6527F1B}'; + + { Data table names } + nme_FacturasProveedor = 'FacturasProveedor'; + + { FacturasProveedor fields } + fld_FacturasProveedorCODIGOEMPRESA = 'CODIGOEMPRESA'; + fld_FacturasProveedorCODIGO = 'CODIGO'; + fld_FacturasProveedorFECHAALTA = 'FECHAALTA'; + fld_FacturasProveedorUSUARIO = 'USUARIO'; + fld_FacturasProveedorFECHAFACTURA = 'FECHAFACTURA'; + fld_FacturasProveedorREFERENCIA = 'REFERENCIA'; + fld_FacturasProveedorVENCIMIENTO = 'VENCIMIENTO'; + fld_FacturasProveedorCONCEPTO = 'CONCEPTO'; + fld_FacturasProveedorBASEIMPONIBLE = 'BASEIMPONIBLE'; + fld_FacturasProveedorDESCUENTO = 'DESCUENTO'; + fld_FacturasProveedorIMPORTEDESCUENTO = 'IMPORTEDESCUENTO'; + fld_FacturasProveedorIVA = 'IVA'; + fld_FacturasProveedorIMPORTEIVA = 'IMPORTEIVA'; + fld_FacturasProveedorIMPORTETOTAL = 'IMPORTETOTAL'; + fld_FacturasProveedorFORMAPAGO = 'FORMAPAGO'; + fld_FacturasProveedorCODIGOPROVEEDOR = 'CODIGOPROVEEDOR'; + fld_FacturasProveedorNIFCIF = 'NIFCIF'; + fld_FacturasProveedorNOMBRE = 'NOMBRE'; + fld_FacturasProveedorCALLE = 'CALLE'; + fld_FacturasProveedorPROVINCIA = 'PROVINCIA'; + fld_FacturasProveedorCODIGOPOSTAL = 'CODIGOPOSTAL'; + fld_FacturasProveedorPOBLACION = 'POBLACION'; + + { FacturasProveedor field indexes } + idx_FacturasProveedorCODIGOEMPRESA = 0; + idx_FacturasProveedorCODIGO = 1; + idx_FacturasProveedorFECHAALTA = 2; + idx_FacturasProveedorUSUARIO = 3; + idx_FacturasProveedorFECHAFACTURA = 4; + idx_FacturasProveedorREFERENCIA = 5; + idx_FacturasProveedorVENCIMIENTO = 6; + idx_FacturasProveedorCONCEPTO = 7; + idx_FacturasProveedorBASEIMPONIBLE = 8; + idx_FacturasProveedorDESCUENTO = 9; + idx_FacturasProveedorIMPORTEDESCUENTO = 10; + idx_FacturasProveedorIVA = 11; + idx_FacturasProveedorIMPORTEIVA = 12; + idx_FacturasProveedorIMPORTETOTAL = 13; + idx_FacturasProveedorFORMAPAGO = 14; + idx_FacturasProveedorCODIGOPROVEEDOR = 15; + idx_FacturasProveedorNIFCIF = 16; + idx_FacturasProveedorNOMBRE = 17; + idx_FacturasProveedorCALLE = 18; + idx_FacturasProveedorPROVINCIA = 19; + idx_FacturasProveedorCODIGOPOSTAL = 20; + idx_FacturasProveedorPOBLACION = 21; + +type + { IFacturasProveedor } + IFacturasProveedor = interface(IDAStronglyTypedDataTable) + ['{B8F57619-27F5-4D11-A277-5F3873F0A4E8}'] + { Property getters and setters } + function GetCODIGOEMPRESAValue: Integer; + procedure SetCODIGOEMPRESAValue(const aValue: Integer); + function GetCODIGOValue: Integer; + procedure SetCODIGOValue(const aValue: Integer); + function GetFECHAALTAValue: DateTime; + procedure SetFECHAALTAValue(const aValue: DateTime); + function GetUSUARIOValue: String; + procedure SetUSUARIOValue(const aValue: String); + function GetFECHAFACTURAValue: DateTime; + procedure SetFECHAFACTURAValue(const aValue: DateTime); + function GetREFERENCIAValue: String; + procedure SetREFERENCIAValue(const aValue: String); + function GetVENCIMIENTOValue: DateTime; + procedure SetVENCIMIENTOValue(const aValue: DateTime); + function GetCONCEPTOValue: IROStrings; + procedure SetCONCEPTOValue(const aValue: IROStrings); + function GetBASEIMPONIBLEValue: Currency; + procedure SetBASEIMPONIBLEValue(const aValue: Currency); + function GetDESCUENTOValue: Float; + procedure SetDESCUENTOValue(const aValue: Float); + function GetIMPORTEDESCUENTOValue: Currency; + procedure SetIMPORTEDESCUENTOValue(const aValue: Currency); + function GetIVAValue: Float; + procedure SetIVAValue(const aValue: Float); + function GetIMPORTEIVAValue: Currency; + procedure SetIMPORTEIVAValue(const aValue: Currency); + function GetIMPORTETOTALValue: Currency; + procedure SetIMPORTETOTALValue(const aValue: Currency); + function GetFORMAPAGOValue: IROStrings; + procedure SetFORMAPAGOValue(const aValue: IROStrings); + function GetCODIGOPROVEEDORValue: Integer; + procedure SetCODIGOPROVEEDORValue(const aValue: Integer); + function GetNIFCIFValue: String; + procedure SetNIFCIFValue(const aValue: String); + function GetNOMBREValue: String; + procedure SetNOMBREValue(const aValue: String); + function GetCALLEValue: String; + procedure SetCALLEValue(const aValue: String); + function GetPROVINCIAValue: String; + procedure SetPROVINCIAValue(const aValue: String); + function GetCODIGOPOSTALValue: String; + procedure SetCODIGOPOSTALValue(const aValue: String); + function GetPOBLACIONValue: String; + procedure SetPOBLACIONValue(const aValue: String); + + + { Properties } + property CODIGOEMPRESA: Integer read GetCODIGOEMPRESAValue write SetCODIGOEMPRESAValue; + property CODIGO: Integer read GetCODIGOValue write SetCODIGOValue; + property FECHAALTA: DateTime read GetFECHAALTAValue write SetFECHAALTAValue; + property USUARIO: String read GetUSUARIOValue write SetUSUARIOValue; + property FECHAFACTURA: DateTime read GetFECHAFACTURAValue write SetFECHAFACTURAValue; + property REFERENCIA: String read GetREFERENCIAValue write SetREFERENCIAValue; + property VENCIMIENTO: DateTime read GetVENCIMIENTOValue write SetVENCIMIENTOValue; + property CONCEPTO: IROStrings read GetCONCEPTOValue write SetCONCEPTOValue; + property BASEIMPONIBLE: Currency read GetBASEIMPONIBLEValue write SetBASEIMPONIBLEValue; + property DESCUENTO: Float read GetDESCUENTOValue write SetDESCUENTOValue; + property IMPORTEDESCUENTO: Currency read GetIMPORTEDESCUENTOValue write SetIMPORTEDESCUENTOValue; + property IVA: Float read GetIVAValue write SetIVAValue; + property IMPORTEIVA: Currency read GetIMPORTEIVAValue write SetIMPORTEIVAValue; + property IMPORTETOTAL: Currency read GetIMPORTETOTALValue write SetIMPORTETOTALValue; + property FORMAPAGO: IROStrings read GetFORMAPAGOValue write SetFORMAPAGOValue; + property CODIGOPROVEEDOR: Integer read GetCODIGOPROVEEDORValue write SetCODIGOPROVEEDORValue; + property NIFCIF: String read GetNIFCIFValue write SetNIFCIFValue; + property NOMBRE: String read GetNOMBREValue write SetNOMBREValue; + property CALLE: String read GetCALLEValue write SetCALLEValue; + property PROVINCIA: String read GetPROVINCIAValue write SetPROVINCIAValue; + property CODIGOPOSTAL: String read GetCODIGOPOSTALValue write SetCODIGOPOSTALValue; + property POBLACION: String read GetPOBLACIONValue write SetPOBLACIONValue; + end; + + { TFacturasProveedorDataTableRules } + TFacturasProveedorDataTableRules = class(TDADataTableRules, IFacturasProveedor) + private + protected + { Property getters and setters } + function GetCODIGOEMPRESAValue: Integer; virtual; + procedure SetCODIGOEMPRESAValue(const aValue: Integer); virtual; + function GetCODIGOValue: Integer; virtual; + procedure SetCODIGOValue(const aValue: Integer); virtual; + function GetFECHAALTAValue: DateTime; virtual; + procedure SetFECHAALTAValue(const aValue: DateTime); virtual; + function GetUSUARIOValue: String; virtual; + procedure SetUSUARIOValue(const aValue: String); virtual; + function GetFECHAFACTURAValue: DateTime; virtual; + procedure SetFECHAFACTURAValue(const aValue: DateTime); virtual; + function GetREFERENCIAValue: String; virtual; + procedure SetREFERENCIAValue(const aValue: String); virtual; + function GetVENCIMIENTOValue: DateTime; virtual; + procedure SetVENCIMIENTOValue(const aValue: DateTime); virtual; + function GetCONCEPTOValue: IROStrings; virtual; + procedure SetCONCEPTOValue(const aValue: IROStrings); virtual; + function GetBASEIMPONIBLEValue: Currency; virtual; + procedure SetBASEIMPONIBLEValue(const aValue: Currency); virtual; + function GetDESCUENTOValue: Float; virtual; + procedure SetDESCUENTOValue(const aValue: Float); virtual; + function GetIMPORTEDESCUENTOValue: Currency; virtual; + procedure SetIMPORTEDESCUENTOValue(const aValue: Currency); virtual; + function GetIVAValue: Float; virtual; + procedure SetIVAValue(const aValue: Float); virtual; + function GetIMPORTEIVAValue: Currency; virtual; + procedure SetIMPORTEIVAValue(const aValue: Currency); virtual; + function GetIMPORTETOTALValue: Currency; virtual; + procedure SetIMPORTETOTALValue(const aValue: Currency); virtual; + function GetFORMAPAGOValue: IROStrings; virtual; + procedure SetFORMAPAGOValue(const aValue: IROStrings); virtual; + function GetCODIGOPROVEEDORValue: Integer; virtual; + procedure SetCODIGOPROVEEDORValue(const aValue: Integer); virtual; + function GetNIFCIFValue: String; virtual; + procedure SetNIFCIFValue(const aValue: String); virtual; + function GetNOMBREValue: String; virtual; + procedure SetNOMBREValue(const aValue: String); virtual; + function GetCALLEValue: String; virtual; + procedure SetCALLEValue(const aValue: String); virtual; + function GetPROVINCIAValue: String; virtual; + procedure SetPROVINCIAValue(const aValue: String); virtual; + function GetCODIGOPOSTALValue: String; virtual; + procedure SetCODIGOPOSTALValue(const aValue: String); virtual; + function GetPOBLACIONValue: String; virtual; + procedure SetPOBLACIONValue(const aValue: String); virtual; + + { Properties } + property CODIGOEMPRESA: Integer read GetCODIGOEMPRESAValue write SetCODIGOEMPRESAValue; + property CODIGO: Integer read GetCODIGOValue write SetCODIGOValue; + property FECHAALTA: DateTime read GetFECHAALTAValue write SetFECHAALTAValue; + property USUARIO: String read GetUSUARIOValue write SetUSUARIOValue; + property FECHAFACTURA: DateTime read GetFECHAFACTURAValue write SetFECHAFACTURAValue; + property REFERENCIA: String read GetREFERENCIAValue write SetREFERENCIAValue; + property VENCIMIENTO: DateTime read GetVENCIMIENTOValue write SetVENCIMIENTOValue; + property CONCEPTO: IROStrings read GetCONCEPTOValue write SetCONCEPTOValue; + property BASEIMPONIBLE: Currency read GetBASEIMPONIBLEValue write SetBASEIMPONIBLEValue; + property DESCUENTO: Float read GetDESCUENTOValue write SetDESCUENTOValue; + property IMPORTEDESCUENTO: Currency read GetIMPORTEDESCUENTOValue write SetIMPORTEDESCUENTOValue; + property IVA: Float read GetIVAValue write SetIVAValue; + property IMPORTEIVA: Currency read GetIMPORTEIVAValue write SetIMPORTEIVAValue; + property IMPORTETOTAL: Currency read GetIMPORTETOTALValue write SetIMPORTETOTALValue; + property FORMAPAGO: IROStrings read GetFORMAPAGOValue write SetFORMAPAGOValue; + property CODIGOPROVEEDOR: Integer read GetCODIGOPROVEEDORValue write SetCODIGOPROVEEDORValue; + property NIFCIF: String read GetNIFCIFValue write SetNIFCIFValue; + property NOMBRE: String read GetNOMBREValue write SetNOMBREValue; + property CALLE: String read GetCALLEValue write SetCALLEValue; + property PROVINCIA: String read GetPROVINCIAValue write SetPROVINCIAValue; + property CODIGOPOSTAL: String read GetCODIGOPOSTALValue write SetCODIGOPOSTALValue; + property POBLACION: String read GetPOBLACIONValue write SetPOBLACIONValue; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + +implementation + +uses Variants; + +{ TFacturasProveedorDataTableRules } +constructor TFacturasProveedorDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TFacturasProveedorDataTableRules.Destroy; +begin + inherited; +end; + +function TFacturasProveedorDataTableRules.GetCODIGOEMPRESAValue: Integer; +begin + result := DataTable.Fields[idx_FacturasProveedorCODIGOEMPRESA].AsInteger; +end; + +procedure TFacturasProveedorDataTableRules.SetCODIGOEMPRESAValue(const aValue: Integer); +begin + DataTable.Fields[idx_FacturasProveedorCODIGOEMPRESA].AsInteger := aValue; +end; + +function TFacturasProveedorDataTableRules.GetCODIGOValue: Integer; +begin + result := DataTable.Fields[idx_FacturasProveedorCODIGO].AsInteger; +end; + +procedure TFacturasProveedorDataTableRules.SetCODIGOValue(const aValue: Integer); +begin + DataTable.Fields[idx_FacturasProveedorCODIGO].AsInteger := aValue; +end; + +function TFacturasProveedorDataTableRules.GetFECHAALTAValue: DateTime; +begin + result := DataTable.Fields[idx_FacturasProveedorFECHAALTA].AsDateTime; +end; + +procedure TFacturasProveedorDataTableRules.SetFECHAALTAValue(const aValue: DateTime); +begin + DataTable.Fields[idx_FacturasProveedorFECHAALTA].AsDateTime := aValue; +end; + +function TFacturasProveedorDataTableRules.GetUSUARIOValue: String; +begin + result := DataTable.Fields[idx_FacturasProveedorUSUARIO].AsString; +end; + +procedure TFacturasProveedorDataTableRules.SetUSUARIOValue(const aValue: String); +begin + DataTable.Fields[idx_FacturasProveedorUSUARIO].AsString := aValue; +end; + +function TFacturasProveedorDataTableRules.GetFECHAFACTURAValue: DateTime; +begin + result := DataTable.Fields[idx_FacturasProveedorFECHAFACTURA].AsDateTime; +end; + +procedure TFacturasProveedorDataTableRules.SetFECHAFACTURAValue(const aValue: DateTime); +begin + DataTable.Fields[idx_FacturasProveedorFECHAFACTURA].AsDateTime := aValue; +end; + +function TFacturasProveedorDataTableRules.GetREFERENCIAValue: String; +begin + result := DataTable.Fields[idx_FacturasProveedorREFERENCIA].AsString; +end; + +procedure TFacturasProveedorDataTableRules.SetREFERENCIAValue(const aValue: String); +begin + DataTable.Fields[idx_FacturasProveedorREFERENCIA].AsString := aValue; +end; + +function TFacturasProveedorDataTableRules.GetVENCIMIENTOValue: DateTime; +begin + result := DataTable.Fields[idx_FacturasProveedorVENCIMIENTO].AsDateTime; +end; + +procedure TFacturasProveedorDataTableRules.SetVENCIMIENTOValue(const aValue: DateTime); +begin + DataTable.Fields[idx_FacturasProveedorVENCIMIENTO].AsDateTime := aValue; +end; + +function TFacturasProveedorDataTableRules.GetCONCEPTOValue: IROStrings; +begin + result := NewROStrings(); + result.Text := DataTable.Fields[idx_FacturasProveedorCONCEPTO].AsString; +end; + +procedure TFacturasProveedorDataTableRules.SetCONCEPTOValue(const aValue: IROStrings); +begin + DataTable.Fields[idx_FacturasProveedorCONCEPTO].AsString := aValue.Text; +end; + +function TFacturasProveedorDataTableRules.GetBASEIMPONIBLEValue: Currency; +begin + result := DataTable.Fields[idx_FacturasProveedorBASEIMPONIBLE].AsCurrency; +end; + +procedure TFacturasProveedorDataTableRules.SetBASEIMPONIBLEValue(const aValue: Currency); +begin + DataTable.Fields[idx_FacturasProveedorBASEIMPONIBLE].AsCurrency := aValue; +end; + +function TFacturasProveedorDataTableRules.GetDESCUENTOValue: Float; +begin + result := DataTable.Fields[idx_FacturasProveedorDESCUENTO].AsFloat; +end; + +procedure TFacturasProveedorDataTableRules.SetDESCUENTOValue(const aValue: Float); +begin + DataTable.Fields[idx_FacturasProveedorDESCUENTO].AsFloat := aValue; +end; + +function TFacturasProveedorDataTableRules.GetIMPORTEDESCUENTOValue: Currency; +begin + result := DataTable.Fields[idx_FacturasProveedorIMPORTEDESCUENTO].AsCurrency; +end; + +procedure TFacturasProveedorDataTableRules.SetIMPORTEDESCUENTOValue(const aValue: Currency); +begin + DataTable.Fields[idx_FacturasProveedorIMPORTEDESCUENTO].AsCurrency := aValue; +end; + +function TFacturasProveedorDataTableRules.GetIVAValue: Float; +begin + result := DataTable.Fields[idx_FacturasProveedorIVA].AsFloat; +end; + +procedure TFacturasProveedorDataTableRules.SetIVAValue(const aValue: Float); +begin + DataTable.Fields[idx_FacturasProveedorIVA].AsFloat := aValue; +end; + +function TFacturasProveedorDataTableRules.GetIMPORTEIVAValue: Currency; +begin + result := DataTable.Fields[idx_FacturasProveedorIMPORTEIVA].AsCurrency; +end; + +procedure TFacturasProveedorDataTableRules.SetIMPORTEIVAValue(const aValue: Currency); +begin + DataTable.Fields[idx_FacturasProveedorIMPORTEIVA].AsCurrency := aValue; +end; + +function TFacturasProveedorDataTableRules.GetIMPORTETOTALValue: Currency; +begin + result := DataTable.Fields[idx_FacturasProveedorIMPORTETOTAL].AsCurrency; +end; + +procedure TFacturasProveedorDataTableRules.SetIMPORTETOTALValue(const aValue: Currency); +begin + DataTable.Fields[idx_FacturasProveedorIMPORTETOTAL].AsCurrency := aValue; +end; + +function TFacturasProveedorDataTableRules.GetFORMAPAGOValue: IROStrings; +begin + result := NewROStrings(); + result.Text := DataTable.Fields[idx_FacturasProveedorFORMAPAGO].AsString; +end; + +procedure TFacturasProveedorDataTableRules.SetFORMAPAGOValue(const aValue: IROStrings); +begin + DataTable.Fields[idx_FacturasProveedorFORMAPAGO].AsString := aValue.Text; +end; + +function TFacturasProveedorDataTableRules.GetCODIGOPROVEEDORValue: Integer; +begin + result := DataTable.Fields[idx_FacturasProveedorCODIGOPROVEEDOR].AsInteger; +end; + +procedure TFacturasProveedorDataTableRules.SetCODIGOPROVEEDORValue(const aValue: Integer); +begin + DataTable.Fields[idx_FacturasProveedorCODIGOPROVEEDOR].AsInteger := aValue; +end; + +function TFacturasProveedorDataTableRules.GetNIFCIFValue: String; +begin + result := DataTable.Fields[idx_FacturasProveedorNIFCIF].AsString; +end; + +procedure TFacturasProveedorDataTableRules.SetNIFCIFValue(const aValue: String); +begin + DataTable.Fields[idx_FacturasProveedorNIFCIF].AsString := aValue; +end; + +function TFacturasProveedorDataTableRules.GetNOMBREValue: String; +begin + result := DataTable.Fields[idx_FacturasProveedorNOMBRE].AsString; +end; + +procedure TFacturasProveedorDataTableRules.SetNOMBREValue(const aValue: String); +begin + DataTable.Fields[idx_FacturasProveedorNOMBRE].AsString := aValue; +end; + +function TFacturasProveedorDataTableRules.GetCALLEValue: String; +begin + result := DataTable.Fields[idx_FacturasProveedorCALLE].AsString; +end; + +procedure TFacturasProveedorDataTableRules.SetCALLEValue(const aValue: String); +begin + DataTable.Fields[idx_FacturasProveedorCALLE].AsString := aValue; +end; + +function TFacturasProveedorDataTableRules.GetPROVINCIAValue: String; +begin + result := DataTable.Fields[idx_FacturasProveedorPROVINCIA].AsString; +end; + +procedure TFacturasProveedorDataTableRules.SetPROVINCIAValue(const aValue: String); +begin + DataTable.Fields[idx_FacturasProveedorPROVINCIA].AsString := aValue; +end; + +function TFacturasProveedorDataTableRules.GetCODIGOPOSTALValue: String; +begin + result := DataTable.Fields[idx_FacturasProveedorCODIGOPOSTAL].AsString; +end; + +procedure TFacturasProveedorDataTableRules.SetCODIGOPOSTALValue(const aValue: String); +begin + DataTable.Fields[idx_FacturasProveedorCODIGOPOSTAL].AsString := aValue; +end; + +function TFacturasProveedorDataTableRules.GetPOBLACIONValue: String; +begin + result := DataTable.Fields[idx_FacturasProveedorPOBLACION].AsString; +end; + +procedure TFacturasProveedorDataTableRules.SetPOBLACIONValue(const aValue: String); +begin + DataTable.Fields[idx_FacturasProveedorPOBLACION].AsString := aValue; +end; + + +initialization + RegisterDataTableRules(RID_FacturasProveedor, TFacturasProveedorDataTableRules); + +end. diff --git a/Modulos/Facturas de proveedor/Reglas/schFacturasProveedorServer_Intf.pas b/Modulos/Facturas de proveedor/Reglas/schFacturasProveedorServer_Intf.pas new file mode 100644 index 0000000..aec1e42 --- /dev/null +++ b/Modulos/Facturas de proveedor/Reglas/schFacturasProveedorServer_Intf.pas @@ -0,0 +1,545 @@ +unit schFacturasProveedorServer_Intf; + +interface + +uses + Classes, DB, SysUtils, uROClasses, uDADataTable, uDABusinessProcessor, schFacturasProveedorClient_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_FacturasProveedorDelta = '{F350F1F7-81A3-49B7-BD15-015F6A05A808}'; + +type + { IFacturasProveedorDelta } + IFacturasProveedorDelta = interface(IFacturasProveedor) + ['{F350F1F7-81A3-49B7-BD15-015F6A05A808}'] + { Property getters and setters } + function GetOldCODIGOEMPRESAValue : Integer; + function GetOldCODIGOValue : Integer; + function GetOldFECHAALTAValue : DateTime; + function GetOldUSUARIOValue : String; + function GetOldFECHAFACTURAValue : DateTime; + function GetOldREFERENCIAValue : String; + function GetOldVENCIMIENTOValue : DateTime; + function GetOldCONCEPTOValue : IROStrings; + function GetOldBASEIMPONIBLEValue : Currency; + function GetOldDESCUENTOValue : Float; + function GetOldIMPORTEDESCUENTOValue : Currency; + function GetOldIVAValue : Float; + function GetOldIMPORTEIVAValue : Currency; + function GetOldIMPORTETOTALValue : Currency; + function GetOldFORMAPAGOValue : IROStrings; + function GetOldCODIGOPROVEEDORValue : Integer; + function GetOldNIFCIFValue : String; + function GetOldNOMBREValue : String; + function GetOldCALLEValue : String; + function GetOldPROVINCIAValue : String; + function GetOldCODIGOPOSTALValue : String; + function GetOldPOBLACIONValue : String; + + { Properties } + property OldCODIGOEMPRESA : Integer read GetOldCODIGOEMPRESAValue; + property OldCODIGO : Integer read GetOldCODIGOValue; + property OldFECHAALTA : DateTime read GetOldFECHAALTAValue; + property OldUSUARIO : String read GetOldUSUARIOValue; + property OldFECHAFACTURA : DateTime read GetOldFECHAFACTURAValue; + property OldREFERENCIA : String read GetOldREFERENCIAValue; + property OldVENCIMIENTO : DateTime read GetOldVENCIMIENTOValue; + property OldCONCEPTO : IROStrings read GetOldCONCEPTOValue; + property OldBASEIMPONIBLE : Currency read GetOldBASEIMPONIBLEValue; + property OldDESCUENTO : Float read GetOldDESCUENTOValue; + property OldIMPORTEDESCUENTO : Currency read GetOldIMPORTEDESCUENTOValue; + property OldIVA : Float read GetOldIVAValue; + property OldIMPORTEIVA : Currency read GetOldIMPORTEIVAValue; + property OldIMPORTETOTAL : Currency read GetOldIMPORTETOTALValue; + property OldFORMAPAGO : IROStrings read GetOldFORMAPAGOValue; + property OldCODIGOPROVEEDOR : Integer read GetOldCODIGOPROVEEDORValue; + property OldNIFCIF : String read GetOldNIFCIFValue; + property OldNOMBRE : String read GetOldNOMBREValue; + property OldCALLE : String read GetOldCALLEValue; + property OldPROVINCIA : String read GetOldPROVINCIAValue; + property OldCODIGOPOSTAL : String read GetOldCODIGOPOSTALValue; + property OldPOBLACION : String read GetOldPOBLACIONValue; + end; + + { TFacturasProveedorBusinessProcessorRules } + TFacturasProveedorBusinessProcessorRules = class(TDABusinessProcessorRules, IFacturasProveedor, IFacturasProveedorDelta) + private + protected + { Property getters and setters } + function GetCODIGOEMPRESAValue: Integer; virtual; + function GetOldCODIGOEMPRESAValue: Integer; virtual; + procedure SetCODIGOEMPRESAValue(const aValue: Integer); virtual; + function GetCODIGOValue: Integer; virtual; + function GetOldCODIGOValue: Integer; virtual; + procedure SetCODIGOValue(const aValue: Integer); virtual; + function GetFECHAALTAValue: DateTime; virtual; + function GetOldFECHAALTAValue: DateTime; virtual; + procedure SetFECHAALTAValue(const aValue: DateTime); virtual; + function GetUSUARIOValue: String; virtual; + function GetOldUSUARIOValue: String; virtual; + procedure SetUSUARIOValue(const aValue: String); virtual; + function GetFECHAFACTURAValue: DateTime; virtual; + function GetOldFECHAFACTURAValue: DateTime; virtual; + procedure SetFECHAFACTURAValue(const aValue: DateTime); virtual; + function GetREFERENCIAValue: String; virtual; + function GetOldREFERENCIAValue: String; virtual; + procedure SetREFERENCIAValue(const aValue: String); virtual; + function GetVENCIMIENTOValue: DateTime; virtual; + function GetOldVENCIMIENTOValue: DateTime; virtual; + procedure SetVENCIMIENTOValue(const aValue: DateTime); virtual; + function GetCONCEPTOValue: IROStrings; virtual; + function GetOldCONCEPTOValue: IROStrings; virtual; + procedure SetCONCEPTOValue(const aValue: IROStrings); virtual; + function GetBASEIMPONIBLEValue: Currency; virtual; + function GetOldBASEIMPONIBLEValue: Currency; virtual; + procedure SetBASEIMPONIBLEValue(const aValue: Currency); virtual; + function GetDESCUENTOValue: Float; virtual; + function GetOldDESCUENTOValue: Float; virtual; + procedure SetDESCUENTOValue(const aValue: Float); virtual; + function GetIMPORTEDESCUENTOValue: Currency; virtual; + function GetOldIMPORTEDESCUENTOValue: Currency; virtual; + procedure SetIMPORTEDESCUENTOValue(const aValue: Currency); virtual; + function GetIVAValue: Float; virtual; + function GetOldIVAValue: Float; virtual; + procedure SetIVAValue(const aValue: Float); virtual; + function GetIMPORTEIVAValue: Currency; virtual; + function GetOldIMPORTEIVAValue: Currency; virtual; + procedure SetIMPORTEIVAValue(const aValue: Currency); virtual; + function GetIMPORTETOTALValue: Currency; virtual; + function GetOldIMPORTETOTALValue: Currency; virtual; + procedure SetIMPORTETOTALValue(const aValue: Currency); virtual; + function GetFORMAPAGOValue: IROStrings; virtual; + function GetOldFORMAPAGOValue: IROStrings; virtual; + procedure SetFORMAPAGOValue(const aValue: IROStrings); virtual; + function GetCODIGOPROVEEDORValue: Integer; virtual; + function GetOldCODIGOPROVEEDORValue: Integer; virtual; + procedure SetCODIGOPROVEEDORValue(const aValue: Integer); virtual; + function GetNIFCIFValue: String; virtual; + function GetOldNIFCIFValue: String; virtual; + procedure SetNIFCIFValue(const aValue: String); virtual; + function GetNOMBREValue: String; virtual; + function GetOldNOMBREValue: String; virtual; + procedure SetNOMBREValue(const aValue: String); virtual; + function GetCALLEValue: String; virtual; + function GetOldCALLEValue: String; virtual; + procedure SetCALLEValue(const aValue: String); virtual; + function GetPROVINCIAValue: String; virtual; + function GetOldPROVINCIAValue: String; virtual; + procedure SetPROVINCIAValue(const aValue: String); virtual; + function GetCODIGOPOSTALValue: String; virtual; + function GetOldCODIGOPOSTALValue: String; virtual; + procedure SetCODIGOPOSTALValue(const aValue: String); virtual; + function GetPOBLACIONValue: String; virtual; + function GetOldPOBLACIONValue: String; virtual; + procedure SetPOBLACIONValue(const aValue: String); virtual; + + { Properties } + property CODIGOEMPRESA : Integer read GetCODIGOEMPRESAValue write SetCODIGOEMPRESAValue; + property OldCODIGOEMPRESA : Integer read GetOldCODIGOEMPRESAValue; + property CODIGO : Integer read GetCODIGOValue write SetCODIGOValue; + property OldCODIGO : Integer read GetOldCODIGOValue; + property FECHAALTA : DateTime read GetFECHAALTAValue write SetFECHAALTAValue; + property OldFECHAALTA : DateTime read GetOldFECHAALTAValue; + property USUARIO : String read GetUSUARIOValue write SetUSUARIOValue; + property OldUSUARIO : String read GetOldUSUARIOValue; + property FECHAFACTURA : DateTime read GetFECHAFACTURAValue write SetFECHAFACTURAValue; + property OldFECHAFACTURA : DateTime read GetOldFECHAFACTURAValue; + property REFERENCIA : String read GetREFERENCIAValue write SetREFERENCIAValue; + property OldREFERENCIA : String read GetOldREFERENCIAValue; + property VENCIMIENTO : DateTime read GetVENCIMIENTOValue write SetVENCIMIENTOValue; + property OldVENCIMIENTO : DateTime read GetOldVENCIMIENTOValue; + property CONCEPTO : IROStrings read GetCONCEPTOValue write SetCONCEPTOValue; + property OldCONCEPTO : IROStrings read GetOldCONCEPTOValue; + property BASEIMPONIBLE : Currency read GetBASEIMPONIBLEValue write SetBASEIMPONIBLEValue; + property OldBASEIMPONIBLE : Currency read GetOldBASEIMPONIBLEValue; + property DESCUENTO : Float read GetDESCUENTOValue write SetDESCUENTOValue; + property OldDESCUENTO : Float read GetOldDESCUENTOValue; + property IMPORTEDESCUENTO : Currency read GetIMPORTEDESCUENTOValue write SetIMPORTEDESCUENTOValue; + property OldIMPORTEDESCUENTO : Currency read GetOldIMPORTEDESCUENTOValue; + property IVA : Float read GetIVAValue write SetIVAValue; + property OldIVA : Float read GetOldIVAValue; + property IMPORTEIVA : Currency read GetIMPORTEIVAValue write SetIMPORTEIVAValue; + property OldIMPORTEIVA : Currency read GetOldIMPORTEIVAValue; + property IMPORTETOTAL : Currency read GetIMPORTETOTALValue write SetIMPORTETOTALValue; + property OldIMPORTETOTAL : Currency read GetOldIMPORTETOTALValue; + property FORMAPAGO : IROStrings read GetFORMAPAGOValue write SetFORMAPAGOValue; + property OldFORMAPAGO : IROStrings read GetOldFORMAPAGOValue; + property CODIGOPROVEEDOR : Integer read GetCODIGOPROVEEDORValue write SetCODIGOPROVEEDORValue; + property OldCODIGOPROVEEDOR : Integer read GetOldCODIGOPROVEEDORValue; + property NIFCIF : String read GetNIFCIFValue write SetNIFCIFValue; + property OldNIFCIF : String read GetOldNIFCIFValue; + property NOMBRE : String read GetNOMBREValue write SetNOMBREValue; + property OldNOMBRE : String read GetOldNOMBREValue; + property CALLE : String read GetCALLEValue write SetCALLEValue; + property OldCALLE : String read GetOldCALLEValue; + property PROVINCIA : String read GetPROVINCIAValue write SetPROVINCIAValue; + property OldPROVINCIA : String read GetOldPROVINCIAValue; + property CODIGOPOSTAL : String read GetCODIGOPOSTALValue write SetCODIGOPOSTALValue; + property OldCODIGOPOSTAL : String read GetOldCODIGOPOSTALValue; + property POBLACION : String read GetPOBLACIONValue write SetPOBLACIONValue; + property OldPOBLACION : String read GetOldPOBLACIONValue; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + +implementation + +uses + Variants, uROBinaryHelpers; + +{ TFacturasProveedorBusinessProcessorRules } +constructor TFacturasProveedorBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TFacturasProveedorBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TFacturasProveedorBusinessProcessorRules.GetCODIGOEMPRESAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProveedorCODIGOEMPRESA]; +end; + +function TFacturasProveedorBusinessProcessorRules.GetOldCODIGOEMPRESAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProveedorCODIGOEMPRESA]; +end; + +procedure TFacturasProveedorBusinessProcessorRules.SetCODIGOEMPRESAValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProveedorCODIGOEMPRESA] := aValue; +end; + +function TFacturasProveedorBusinessProcessorRules.GetCODIGOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProveedorCODIGO]; +end; + +function TFacturasProveedorBusinessProcessorRules.GetOldCODIGOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProveedorCODIGO]; +end; + +procedure TFacturasProveedorBusinessProcessorRules.SetCODIGOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProveedorCODIGO] := aValue; +end; + +function TFacturasProveedorBusinessProcessorRules.GetFECHAALTAValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProveedorFECHAALTA]; +end; + +function TFacturasProveedorBusinessProcessorRules.GetOldFECHAALTAValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProveedorFECHAALTA]; +end; + +procedure TFacturasProveedorBusinessProcessorRules.SetFECHAALTAValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProveedorFECHAALTA] := aValue; +end; + +function TFacturasProveedorBusinessProcessorRules.GetUSUARIOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProveedorUSUARIO]; +end; + +function TFacturasProveedorBusinessProcessorRules.GetOldUSUARIOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProveedorUSUARIO]; +end; + +procedure TFacturasProveedorBusinessProcessorRules.SetUSUARIOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProveedorUSUARIO] := aValue; +end; + +function TFacturasProveedorBusinessProcessorRules.GetFECHAFACTURAValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProveedorFECHAFACTURA]; +end; + +function TFacturasProveedorBusinessProcessorRules.GetOldFECHAFACTURAValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProveedorFECHAFACTURA]; +end; + +procedure TFacturasProveedorBusinessProcessorRules.SetFECHAFACTURAValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProveedorFECHAFACTURA] := aValue; +end; + +function TFacturasProveedorBusinessProcessorRules.GetREFERENCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProveedorREFERENCIA]; +end; + +function TFacturasProveedorBusinessProcessorRules.GetOldREFERENCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProveedorREFERENCIA]; +end; + +procedure TFacturasProveedorBusinessProcessorRules.SetREFERENCIAValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProveedorREFERENCIA] := aValue; +end; + +function TFacturasProveedorBusinessProcessorRules.GetVENCIMIENTOValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProveedorVENCIMIENTO]; +end; + +function TFacturasProveedorBusinessProcessorRules.GetOldVENCIMIENTOValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProveedorVENCIMIENTO]; +end; + +procedure TFacturasProveedorBusinessProcessorRules.SetVENCIMIENTOValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProveedorVENCIMIENTO] := aValue; +end; + +function TFacturasProveedorBusinessProcessorRules.GetCONCEPTOValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProveedorCONCEPTO]; +end; + +function TFacturasProveedorBusinessProcessorRules.GetOldCONCEPTOValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProveedorCONCEPTO]; +end; + +procedure TFacturasProveedorBusinessProcessorRules.SetCONCEPTOValue(const aValue: IROStrings); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProveedorCONCEPTO] := aValue.Text; +end; + +function TFacturasProveedorBusinessProcessorRules.GetBASEIMPONIBLEValue: Currency; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProveedorBASEIMPONIBLE]; +end; + +function TFacturasProveedorBusinessProcessorRules.GetOldBASEIMPONIBLEValue: Currency; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProveedorBASEIMPONIBLE]; +end; + +procedure TFacturasProveedorBusinessProcessorRules.SetBASEIMPONIBLEValue(const aValue: Currency); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProveedorBASEIMPONIBLE] := aValue; +end; + +function TFacturasProveedorBusinessProcessorRules.GetDESCUENTOValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProveedorDESCUENTO]; +end; + +function TFacturasProveedorBusinessProcessorRules.GetOldDESCUENTOValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProveedorDESCUENTO]; +end; + +procedure TFacturasProveedorBusinessProcessorRules.SetDESCUENTOValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProveedorDESCUENTO] := aValue; +end; + +function TFacturasProveedorBusinessProcessorRules.GetIMPORTEDESCUENTOValue: Currency; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProveedorIMPORTEDESCUENTO]; +end; + +function TFacturasProveedorBusinessProcessorRules.GetOldIMPORTEDESCUENTOValue: Currency; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProveedorIMPORTEDESCUENTO]; +end; + +procedure TFacturasProveedorBusinessProcessorRules.SetIMPORTEDESCUENTOValue(const aValue: Currency); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProveedorIMPORTEDESCUENTO] := aValue; +end; + +function TFacturasProveedorBusinessProcessorRules.GetIVAValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProveedorIVA]; +end; + +function TFacturasProveedorBusinessProcessorRules.GetOldIVAValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProveedorIVA]; +end; + +procedure TFacturasProveedorBusinessProcessorRules.SetIVAValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProveedorIVA] := aValue; +end; + +function TFacturasProveedorBusinessProcessorRules.GetIMPORTEIVAValue: Currency; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProveedorIMPORTEIVA]; +end; + +function TFacturasProveedorBusinessProcessorRules.GetOldIMPORTEIVAValue: Currency; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProveedorIMPORTEIVA]; +end; + +procedure TFacturasProveedorBusinessProcessorRules.SetIMPORTEIVAValue(const aValue: Currency); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProveedorIMPORTEIVA] := aValue; +end; + +function TFacturasProveedorBusinessProcessorRules.GetIMPORTETOTALValue: Currency; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProveedorIMPORTETOTAL]; +end; + +function TFacturasProveedorBusinessProcessorRules.GetOldIMPORTETOTALValue: Currency; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProveedorIMPORTETOTAL]; +end; + +procedure TFacturasProveedorBusinessProcessorRules.SetIMPORTETOTALValue(const aValue: Currency); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProveedorIMPORTETOTAL] := aValue; +end; + +function TFacturasProveedorBusinessProcessorRules.GetFORMAPAGOValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProveedorFORMAPAGO]; +end; + +function TFacturasProveedorBusinessProcessorRules.GetOldFORMAPAGOValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProveedorFORMAPAGO]; +end; + +procedure TFacturasProveedorBusinessProcessorRules.SetFORMAPAGOValue(const aValue: IROStrings); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProveedorFORMAPAGO] := aValue.Text; +end; + +function TFacturasProveedorBusinessProcessorRules.GetCODIGOPROVEEDORValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProveedorCODIGOPROVEEDOR]; +end; + +function TFacturasProveedorBusinessProcessorRules.GetOldCODIGOPROVEEDORValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProveedorCODIGOPROVEEDOR]; +end; + +procedure TFacturasProveedorBusinessProcessorRules.SetCODIGOPROVEEDORValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProveedorCODIGOPROVEEDOR] := aValue; +end; + +function TFacturasProveedorBusinessProcessorRules.GetNIFCIFValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProveedorNIFCIF]; +end; + +function TFacturasProveedorBusinessProcessorRules.GetOldNIFCIFValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProveedorNIFCIF]; +end; + +procedure TFacturasProveedorBusinessProcessorRules.SetNIFCIFValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProveedorNIFCIF] := aValue; +end; + +function TFacturasProveedorBusinessProcessorRules.GetNOMBREValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProveedorNOMBRE]; +end; + +function TFacturasProveedorBusinessProcessorRules.GetOldNOMBREValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProveedorNOMBRE]; +end; + +procedure TFacturasProveedorBusinessProcessorRules.SetNOMBREValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProveedorNOMBRE] := aValue; +end; + +function TFacturasProveedorBusinessProcessorRules.GetCALLEValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProveedorCALLE]; +end; + +function TFacturasProveedorBusinessProcessorRules.GetOldCALLEValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProveedorCALLE]; +end; + +procedure TFacturasProveedorBusinessProcessorRules.SetCALLEValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProveedorCALLE] := aValue; +end; + +function TFacturasProveedorBusinessProcessorRules.GetPROVINCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProveedorPROVINCIA]; +end; + +function TFacturasProveedorBusinessProcessorRules.GetOldPROVINCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProveedorPROVINCIA]; +end; + +procedure TFacturasProveedorBusinessProcessorRules.SetPROVINCIAValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProveedorPROVINCIA] := aValue; +end; + +function TFacturasProveedorBusinessProcessorRules.GetCODIGOPOSTALValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProveedorCODIGOPOSTAL]; +end; + +function TFacturasProveedorBusinessProcessorRules.GetOldCODIGOPOSTALValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProveedorCODIGOPOSTAL]; +end; + +procedure TFacturasProveedorBusinessProcessorRules.SetCODIGOPOSTALValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProveedorCODIGOPOSTAL] := aValue; +end; + +function TFacturasProveedorBusinessProcessorRules.GetPOBLACIONValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProveedorPOBLACION]; +end; + +function TFacturasProveedorBusinessProcessorRules.GetOldPOBLACIONValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_FacturasProveedorPOBLACION]; +end; + +procedure TFacturasProveedorBusinessProcessorRules.SetPOBLACIONValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_FacturasProveedorPOBLACION] := aValue; +end; + + +initialization + RegisterBusinessProcessorRules(RID_FacturasProveedorDelta, TFacturasProveedorBusinessProcessorRules); + +end. diff --git a/Modulos/Facturas de proveedor/Reglas/uBizFacturasProveedor.pas b/Modulos/Facturas de proveedor/Reglas/uBizFacturasProveedor.pas new file mode 100644 index 0000000..04069e7 --- /dev/null +++ b/Modulos/Facturas de proveedor/Reglas/uBizFacturasProveedor.pas @@ -0,0 +1,249 @@ +unit uBizFacturasProveedor; + +interface + +uses + uDAInterfaces, uDADataTable, Classes, uBizContacto, DB, + uBizImportesDetalleBase, + uBizImportesCabeceraBase, uDBSelectionList, + uExceptions, uBizInformesBase, schFacturasProveedorClient_Intf; + +const + BIZ_FACTURASPROVEEDOR = 'Client.FacturasProveedor'; + + SITUACION_PENDIENTE = 'Pendiente'; + SITUACION_PAGADO = 'Pagado'; + +type + IBizFacturasProveedor = interface(IFacturasProveedor) + ['{1D9E1949-8CC3-4776-BA2C-7E1F4A73A432}'] + function GetProveedor: IBizProveedor; + procedure SetProveedor(Value: IBizProveedor); + property Proveedor: IBizProveedor read GetProveedor write SetProveedor; + + procedure Show; + + procedure CopyFrom(AFacturaProveedor : IBizFacturasProveedor); + end; + + TBizFacturasProveedor = class(TFacturasProveedorDataTableRules, IBizFacturasProveedor, + IBizImportesCabecera, ISelectedRowList, + IApplyUpdateFailedException) + private + FProveedor : IBizProveedor; + FSelectedRows : TSelectedRowList; + protected + procedure ShowApplyUpdateFailed (const Error: EDAApplyUpdateFailed); + + function GetProveedor: IBizProveedor; + procedure SetProveedor(Value: IBizProveedor); + + procedure OnNewRecord(Sender: TDADataTable); override; + + function GetSelectedRows : TSelectedRowList; + procedure BeforeDelete(Sender: TDADataTable); override; + procedure OnPostError(DataTable: TDADataTable; Error: EDatabaseError; + var Action: TDataAction); override; + procedure BeforeApplyUpdates(Sender : TDADataTable; const Delta : IDADelta); + public + procedure RecalcularImporte; + property Proveedor: IBizProveedor read GetProveedor write SetProveedor; + procedure Show; + procedure CopyFrom(AFacturaProveedor : IBizFacturasProveedor); overload; + + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + property SelectedRows : TSelectedRowList read GetSelectedRows; + end; + + procedure ValidarFacturaProveedor (const AFacturaProveedor : IBizFacturasProveedor); + + +implementation + +uses + Windows, Dialogs, uDACDSDataTable, SysUtils, uEditorUtils, Variants, Math, + uDataModuleContactos, Controls, Forms, + uDataModuleBase, uDataModuleUsuarios, + uDataTableUtils, uDataModuleFacturasProveedor; + +var + FCancelInsert : Boolean; + +procedure ValidarFacturaProveedor (const AFacturaProveedor : IBizFacturasProveedor); +begin + if (FloatToStr(AFacturaProveedor.FECHAFACTURA) = '0') then + raise Exception.Create('Debe indicar la fecha de esta factura'); + + if not Assigned(AFacturaProveedor.Proveedor) or + (AFacturaProveedor.Proveedor.DataTable.IsEmpty) then + raise Exception.Create('Debe indicar el proveedor de esta factura'); +end; + +constructor TBizFacturasProveedor.Create(aDataTable: TDADataTable); +begin + inherited; + FProveedor := NIL; + FSelectedRows := TSelectedRowList.Create(aDataTable); + aDataTable.OnBeforeApplyUpdates := BeforeApplyUpdates; +end; + +destructor TBizFacturasProveedor.Destroy; +begin + FProveedor := NIL; + FSelectedRows.Free; + inherited; +end; + +function TBizFacturasProveedor.GetProveedor: IBizProveedor; +begin + if not Assigned(FProveedor) or + (CODIGOPROVEEDOR <> FProveedor.Codigo) and + not (FProveedor.DataTable.State in dsEditModes) then + begin + FProveedor := dmContactos.GetProveedor(CODIGOPROVEEDOR); + if not FProveedor.DataTable.Active then + FProveedor.DataTable.Active := True; + if not FProveedor.DataTable.IsEmpty then // Está vacío si la factura es nueva y no tiene proveedor + begin + FProveedor.Edit; + FProveedor.NOMBRE := NOMBRE; + FProveedor.NIFCIF := NIFCIF; + FProveedor.CALLE := CALLE; + FProveedor.CODIGOPOSTAL := CODIGOPOSTAL; + FProveedor.PROVINCIA := PROVINCIA; + FProveedor.POBLACION := POBLACION; + FProveedor.Post; + end; + end; + Result := FProveedor; +end; + +procedure TBizFacturasProveedor.CopyFrom(AFacturaProveedor : IBizFacturasProveedor); +var + ACursor: TCursor; +begin +{ if not (State in dsEditModes) then + Edit; + ACursor := Screen.Cursor; + Screen.Cursor := crHourGlass; + Application.ProcessMessages; + try + CODIGOEMPRESA := APresupuesto.CODIGOEMPRESA; + CODIGOCONTACTO := APresupuesto.CODIGOCONTACTO; + BASEIMPONIBLE := APresupuesto.BASEIMPONIBLE; + DESCUENTO := APresupuesto.DESCUENTO; + IVA := APresupuesto.IVA; + OBSERVACIONES := APresupuesto.OBSERVACIONES; + FORMAPAGO := APresupuesto.FORMAPAGO; + CODIGOPRESUPUESTO := APresupuesto.CODIGO; + Proveedor := APresupuesto.Proveedor; + Detalles.CopyFrom(APresupuesto.Detalles); + RecalcularImporte; + + MessageBox(0, 'Se ha copiado correctamente el presupuesto elegido en este albarán.', 'Presupuesto copiado', MB_ICONWARNING or MB_OK); + + finally + Screen.Cursor := ACursor; + end;} +end; + +procedure TBizFacturasProveedor.OnNewRecord(Sender: TDADataTable); +begin + inherited; + CODIGOEMPRESA := dmBase.CodigoEmpresa; + USUARIO := dmUsuarios.LoginInfo.UserID; + FECHAALTA := Date; + FECHAFACTURA := Date; + CODIGO := dmFacturasProveedor.GetNextAutoinc; +end; + +procedure TBizFacturasProveedor.SetProveedor(Value: IBizProveedor); +var + bEnEdicion : Boolean; +begin + bEnEdicion := (DataTable.State in dsEditModes); + if not bEnEdicion then + Edit; + FProveedor := Value; + if Assigned(FProveedor) then + begin + CODIGOPROVEEDOR := FProveedor.CODIGO; + NOMBRE := FProveedor.NOMBRE; + NIFCIF := FProveedor.NIFCIF; + CALLE := FProveedor.CALLE; + CODIGOPOSTAL := FProveedor.CODIGOPOSTAL; + PROVINCIA := FProveedor.PROVINCIA; + POBLACION := FProveedor.POBLACION; + if not bEnEdicion then + Post; + end +end; + +procedure TBizFacturasProveedor.Show; +begin + ShowEditor(IBizFacturasProveedor, Self, etItem); +end; + +function TBizFacturasProveedor.GetSelectedRows: TSelectedRowList; +begin + Result := FSelectedRows; +end; + +procedure TBizFacturasProveedor.ShowApplyUpdateFailed( + const Error: EDAApplyUpdateFailed); +begin + if (Pos(AUF_FKVIOLATION, Error.Message) > 0) then + MessageBox(0, 'No se puede borrar este albarán porque tiene una factura asociada', 'Atención', MB_ICONWARNING or MB_OK); +end; + +procedure TBizFacturasProveedor.BeforeDelete(Sender: TDADataTable); +begin + inherited; + if not dmFacturasProveedor.PuedoEliminarFactura(CODIGO) then + raise Exception.Create('No se puede borrar esta factura porque...'); +end; + +procedure TBizFacturasProveedor.OnPostError(DataTable: TDADataTable; + Error: EDatabaseError; var Action: TDataAction); +begin + inherited; + Action := daAbort; + if (Pos(AUF_HAVEVALUE, Error.Message) > 0) then + begin + if (Pos('contacto', Error.Message) > 0) then + MessageBox(0, 'Debe indicar el proveedor de esta factura', 'Atención', MB_ICONWARNING or MB_OK) + else + if (Pos('Fecha albarán', Error.Message) > 0) then + MessageBox(0, 'Debe indicar la fecha de esta factura', 'Atención', MB_ICONWARNING or MB_OK) + else + raise Error; + end + else + raise Error; +end; + +procedure TBizFacturasProveedor.BeforeApplyUpdates(Sender: TDADataTable; + const Delta: IDADelta); +var + i : integer; +begin + for i := 0 to Delta.Count - 1 do + case Delta.Changes[i].ChangeType of + ctInsert, ctUpdate : ValidarFacturaProveedor(Self); + //ctDelete : + end; +end; + +procedure TBizFacturasProveedor.RecalcularImporte; +begin + RecalcularImportesCabecera(Self.DataTable); +end; + +initialization + RegisterDataTableRules(BIZ_FACTURASPROVEEDOR, TBizFacturasProveedor); + +finalization + +end. diff --git a/Modulos/Facturas de proveedor/Servidor/srvFacturasProveedor_Impl.ddp b/Modulos/Facturas de proveedor/Servidor/srvFacturasProveedor_Impl.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Facturas de proveedor/Servidor/srvFacturasProveedor_Impl.ddp differ diff --git a/Modulos/Facturas de proveedor/Servidor/srvFacturasProveedor_Impl.dfm b/Modulos/Facturas de proveedor/Servidor/srvFacturasProveedor_Impl.dfm new file mode 100644 index 0000000..f9b96ca --- /dev/null +++ b/Modulos/Facturas de proveedor/Servidor/srvFacturasProveedor_Impl.dfm @@ -0,0 +1,364 @@ +object srvFacturasProveedor: TsrvFacturasProveedor + OldCreateOrder = True + RequiresSession = True + SessionManager = dmServer.SessionManager + AcquireConnection = True + ConnectionName = 'IBX' + ServiceSchema = schFacturasProveedor + ServiceAdapter = DABINAdapter + Left = 477 + Top = 382 + Height = 392 + Width = 369 + object schFacturasProveedor: TDASchema + ConnectionManager = dmServer.ConnectionManager + DataDictionary = dmServer.DataDictionary + Diagrams = dmServer.DADiagrams + Datasets = < + item + Params = <> + Statements = < + item + Connection = 'IBX' + TargetTable = 'FACTURASPROVEEDOR' + SQL = + 'SELECT '#10' CODIGOEMPRESA, CODIGO, FECHAALTA, USUARIO, REFERENCI' + + 'A, '#10' FECHAFACTURA, VENCIMIENTO, CONCEPTO, BASEIMPONIBLE, '#10' ' + + ' DESCUENTO, IMPORTEDESCUENTO, IVA, IMPORTEIVA, IMPORTETOTAL, '#10' ' + + ' FORMAPAGO, CODIGOPROVEEDOR, NIFCIF, NOMBRE, CALLE, '#10' PROVIN' + + 'CIA, CODIGOPOSTAL, POBLACION'#10' FROM'#10' FACTURASPROVEEDOR' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'CODIGOEMPRESA' + TableField = 'CODIGOEMPRESA' + end + item + DatasetField = 'CODIGO' + TableField = 'CODIGO' + end + item + DatasetField = 'FECHAALTA' + TableField = 'FECHAALTA' + end + item + DatasetField = 'USUARIO' + TableField = 'USUARIO' + end + item + DatasetField = 'FECHAFACTURA' + TableField = 'FECHAFACTURA' + end + item + DatasetField = 'BASEIMPONIBLE' + TableField = 'BASEIMPONIBLE' + end + item + DatasetField = 'DESCUENTO' + TableField = 'DESCUENTO' + end + item + DatasetField = 'IMPORTEDESCUENTO' + TableField = 'IMPORTEDESCUENTO' + end + item + DatasetField = 'IVA' + TableField = 'IVA' + end + item + DatasetField = 'IMPORTEIVA' + TableField = 'IMPORTEIVA' + end + item + DatasetField = 'IMPORTETOTAL' + TableField = 'IMPORTETOTAL' + end + item + DatasetField = 'FORMAPAGO' + TableField = 'FORMAPAGO' + end + item + DatasetField = 'NIFCIF' + TableField = 'NIFCIF' + end + item + DatasetField = 'NOMBRE' + TableField = 'NOMBRE' + end + item + DatasetField = 'CALLE' + TableField = 'CALLE' + end + item + DatasetField = 'PROVINCIA' + TableField = 'PROVINCIA' + end + item + DatasetField = 'CODIGOPOSTAL' + TableField = 'CODIGOPOSTAL' + end + item + DatasetField = 'POBLACION' + TableField = 'POBLACION' + end + item + DatasetField = 'REFERENCIA' + TableField = 'REFERENCIA' + end + item + DatasetField = 'VENCIMIENTO' + TableField = 'VENCIMIENTO' + end + item + DatasetField = 'CONCEPTO' + TableField = 'CONCEPTO' + end + item + DatasetField = 'CODIGOPROVEEDOR' + TableField = 'CODIGOPROVEEDOR' + end> + end> + Name = 'FacturasProveedor' + Fields = < + item + Name = 'CODIGOEMPRESA' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'CODIGOEMPRESA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGO' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'CODIGOFACTURA' + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHAALTA' + DataType = datDateTime + BlobType = dabtUnknown + DictionaryEntry = 'FECHAALTA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'USUARIO' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DictionaryEntry = 'USUARIO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHAFACTURA' + DataType = datDateTime + BlobType = dabtUnknown + DictionaryEntry = 'FECHAFACTURA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'REFERENCIA' + DataType = datString + Size = 20 + BlobType = dabtUnknown + DictionaryEntry = 'REFERENCIA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'VENCIMIENTO' + DataType = datDateTime + BlobType = dabtUnknown + DictionaryEntry = 'FECHAVENCIMIENTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CONCEPTO' + DataType = datMemo + BlobType = dabtUnknown + DictionaryEntry = 'OBSERVACIONES' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'BASEIMPONIBLE' + DataType = datCurrency + BlobType = dabtUnknown + DictionaryEntry = 'BASEIMPONIBLE' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'DESCUENTO' + DataType = datFloat + BlobType = dabtUnknown + DictionaryEntry = 'DESCUENTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTEDESCUENTO' + DataType = datCurrency + BlobType = dabtUnknown + DictionaryEntry = 'IMPORTEDESCUENTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IVA' + DataType = datFloat + BlobType = dabtUnknown + DictionaryEntry = 'IVA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTEIVA' + DataType = datCurrency + BlobType = dabtUnknown + DictionaryEntry = 'IMPORTEIVA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTETOTAL' + DataType = datCurrency + BlobType = dabtUnknown + DictionaryEntry = 'IMPORTETOTAL' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FORMAPAGO' + DataType = datMemo + BlobType = dabtUnknown + DictionaryEntry = 'FORMAPAGO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOPROVEEDOR' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'CODIGOCONTACTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NIFCIF' + DataType = datString + Size = 10 + BlobType = dabtUnknown + DictionaryEntry = 'NIFCIF' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NOMBRE' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DictionaryEntry = 'NOMBRE' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CALLE' + DataType = datString + Size = 150 + BlobType = dabtUnknown + DictionaryEntry = 'CALLE' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PROVINCIA' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DictionaryEntry = 'PROVINCIA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOPOSTAL' + DataType = datString + Size = 5 + BlobType = dabtUnknown + DictionaryEntry = 'CODIGOPOSTAL' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'POBLACION' + DataType = datString + Size = 40 + BlobType = dabtUnknown + DictionaryEntry = 'POBLACION' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end> + Commands = <> + RelationShips = <> + UpdateRules = <> + Left = 48 + Top = 24 + end + object DABINAdapter: TDABINAdapter + Left = 48 + Top = 88 + end +end diff --git a/Modulos/Facturas de proveedor/Servidor/srvFacturasProveedor_Impl.pas b/Modulos/Facturas de proveedor/Servidor/srvFacturasProveedor_Impl.pas new file mode 100644 index 0000000..d470d8f --- /dev/null +++ b/Modulos/Facturas de proveedor/Servidor/srvFacturasProveedor_Impl.pas @@ -0,0 +1,59 @@ +unit srvFacturasProveedor_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:} DARemoteService_Impl, + {Used RODLs:} DataAbstract_Intf, + {Generated:} FactuGES_Intf, uDAScriptingProvider, uDADataTable, + uDACDSDataTable, frxClass, DB, frxDBSet, uDAClasses, uDABINAdapter; + +type + { TsrvFacturasProveedor } + TsrvFacturasProveedor = class(TDARemoteService, IsrvFacturasProveedor) + schFacturasProveedor: TDASchema; + DABINAdapter: TDABINAdapter; + private + protected + { IsrvFacturasProveedor methods } + function GetNextAutoinc: Integer; + function PuedoEliminarFactura(const CodigoFactura: Integer): Boolean; + end; + +implementation + +{$R *.dfm} +uses + {Generated:} FactuGES_Invk, uDataModuleServer; + +procedure Create_srvFacturasProveedor(out anInstance : IUnknown); +begin + anInstance := TsrvFacturasProveedor.Create(NIL); +end; + +{ srvFacturasProveedor } +function TsrvFacturasProveedor.GetNextAutoinc: Integer; +begin + Result := uDataModuleServer.GetNextAutoinc(Connection, 'GEN_FACTURASPROVEEDOR'); +end; + +function TsrvFacturasProveedor.PuedoEliminarFactura(const CodigoFactura: Integer): Boolean; +begin + // ? +end; + +initialization + TROClassFactory.Create('srvFacturasProveedor', Create_srvFacturasProveedor, TsrvFacturasProveedor_Invoker); + +finalization + +end. diff --git a/Modulos/Intervalos/Cliente/Intervalos.bdsproj b/Modulos/Intervalos/Cliente/Intervalos.bdsproj new file mode 100644 index 0000000..aa3064e --- /dev/null +++ b/Modulos/Intervalos/Cliente/Intervalos.bdsproj @@ -0,0 +1,492 @@ + + + + + + + + + + + + Intervalos.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 3 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + .\ + ..\..\..\Output\Cliente + .\ + $(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\Reglas + vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;IntrawebDB_50_70;Intraweb_50_70;Rave50CLX;Rave50VCL;dclOfficeXP;PluginSDK_D7R;DJcl;JvStdCtrlsD7R;JvAppFrmD7R;JvCoreD7R;JvBandsD7R;JvBDED7R;JvDBD7R;JvDlgsD7R;JvCmpD7R;JvCryptD7R;JvCtrlsD7R;JvCustomD7R;JvDockingD7R;JvDotNetCtrlsD7R;JvEDID7R;qrpt;JvGlobusD7R;JvHMID7R;JvInspectorD7R;JvInterpreterD7R;JvJansD7R;JvManagedThreadsD7R;JvMMD7R;JvNetD7R;JvPageCompsD7R;JvPluginD7R;JvPrintPreviewD7R;JvSystemD7R;JvTimeFrameworkD7R;JvUIBD7R;JvValidatorsD7R;JvWizardD7R;JvXPCtrlsD7R;GUISDK_D7;RemObjects_WebBroker_D7;RemObjects_Indy_D7;RemObjects_RODX_D7;RemObjects_BPDX_D7;PascalScript_RO_D7;DataAbstract_Core_D7;DataAbstract_IDE_D7;DataAbstract_DBXDriver_D7;DataAbstract_Scripting_D7;dxBarD7;dxComnD7;cxLibraryVCLD7;cxEditorsVCLD7;dxThemeD7;cxDataD7;cxExtEditorsVCLD7;cxGridVCLD7;cxPageControlVCLD7;cxSchedulerVCLD7;cxTreeListVCLD7;dxBarDBNavD7;dxBarExtDBItemsD7;dxBarExtItemsD7;dxDockingD7;dxNavBarD7;dxPSCoreD7;dxsbD7;dxPSLnksD7;dxPSTeeChartD7;EPCOTAUtils70;PNG_D7;PngComponentsD7;tb2k_d7;tbx_d7;UserControlD7_RT;fqb70;frx7;frxADO7;frxBDE7;frxcs7;frxDB7;frxDBX7;frxe7;frxIBX7;fs7;fsADO7;fsBDE7;fsDB7;fsIBX7;cxExportVCLD7;cxIntl5D7;cxIntlPrintSys3D7;dxPScxCommonD7;dxPScxExtCommonD7;dxPScxGridLnkD7;dxPScxPCProdD7;dxPScxTLLnkD7;dxPSDBTeeChartD7;dxPsPrVwAdvD7 + + + False + + + + + + False + + + True + False + + + + $00000000 + C:\Archivos de programa\Borland\Delphi7\Bin\ + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + diff --git a/Modulos/Intervalos/Cliente/Intervalos.cfg b/Modulos/Intervalos/Cliente/Intervalos.cfg new file mode 100644 index 0000000..0693de8 --- /dev/null +++ b/Modulos/Intervalos/Cliente/Intervalos.cfg @@ -0,0 +1,45 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-GD +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N".\" +-LE"..\..\..\Output\Cliente" +-LN".\" +-U"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\Reglas" +-O"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\Reglas" +-I"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\Reglas" +-R"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\Reglas" +-Z +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/Modulos/Intervalos/Cliente/Intervalos.dcp b/Modulos/Intervalos/Cliente/Intervalos.dcp new file mode 100644 index 0000000..95da464 Binary files /dev/null and b/Modulos/Intervalos/Cliente/Intervalos.dcp differ diff --git a/Modulos/Intervalos/Cliente/Intervalos.dof b/Modulos/Intervalos/Cliente/Intervalos.dof new file mode 100644 index 0000000..c3360f9 --- /dev/null +++ b/Modulos/Intervalos/Cliente/Intervalos.dof @@ -0,0 +1,177 @@ +[FileVersion] +Version=7.0 +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=1 +SymbolLibrary=1 +SymbolPlatform=1 +UnitLibrary=1 +UnitPlatform=1 +UnitDeprecated=1 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 +[Linker] +MapFile=3 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription= +[Directories] +OutputDir= +UnitOutputDir=.\ +PackageDLLOutputDir=..\..\..\Output\Cliente +PackageDCPOutputDir=.\ +SearchPath=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\Reglas +Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;IntrawebDB_50_70;Intraweb_50_70;Rave50CLX;Rave50VCL;dclOfficeXP;PluginSDK_D7R;DJcl;JvStdCtrlsD7R;JvAppFrmD7R;JvCoreD7R;JvBandsD7R;JvBDED7R;JvDBD7R;JvDlgsD7R;JvCmpD7R;JvCryptD7R;JvCtrlsD7R;JvCustomD7R;JvDockingD7R;JvDotNetCtrlsD7R;JvEDID7R;qrpt;JvGlobusD7R;JvHMID7R;JvInspectorD7R;JvInterpreterD7R;JvJansD7R;JvManagedThreadsD7R;JvMMD7R;JvNetD7R;JvPageCompsD7R;JvPluginD7R;JvPrintPreviewD7R;JvSystemD7R;JvTimeFrameworkD7R;JvUIBD7R;JvValidatorsD7R;JvWizardD7R;JvXPCtrlsD7R;GUISDK_D7;RemObjects_WebBroker_D7;RemObjects_Indy_D7;RemObjects_RODX_D7;RemObjects_BPDX_D7;PascalScript_RO_D7;DataAbstract_Core_D7;DataAbstract_IDE_D7;DataAbstract_DBXDriver_D7;DataAbstract_Scripting_D7;dxBarD7;dxComnD7;cxLibraryVCLD7;cxEditorsVCLD7;dxThemeD7;cxDataD7;cxExtEditorsVCLD7;cxGridVCLD7;cxPageControlVCLD7;cxSchedulerVCLD7;cxTreeListVCLD7;dxBarDBNavD7;dxBarExtDBItemsD7;dxBarExtItemsD7;dxDockingD7;dxNavBarD7;dxPSCoreD7;dxsbD7;dxPSLnksD7;dxPSTeeChartD7;EPCOTAUtils70;PNG_D7;PngComponentsD7;tb2k_d7;tbx_d7;UserControlD7_RT;fqb70;frx7;frxADO7;frxBDE7;frxcs7;frxDB7;frxDBX7;frxe7;frxIBX7;fs7;fsADO7;fsBDE7;fsDB7;fsIBX7;cxExportVCLD7;cxIntl5D7;cxIntlPrintSys3D7;dxPScxCommonD7;dxPScxExtCommonD7;dxPScxGridLnkD7;dxPScxPCProdD7;dxPScxTLLnkD7;dxPSDBTeeChartD7;dxPsPrVwAdvD7 +Conditionals= +DebugSourceDirs= +UsePackages=0 +[Parameters] +RunParams= +HostApplication= +Launcher= +UseLauncher=0 +DebugCWD= +[Language] +ActiveLang= +ProjectLang= +RootDir=C:\Archivos de programa\Borland\Delphi7\Bin\ +[Version Info] +IncludeVerInfo=1 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=3082 +CodePage=1252 +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= +[Excluded Packages] +C:\Archivos de programa\Developer Express Inc\Lib\D7\dxPScxSchedulerLnkD7.bpl=ExpressPrinting System ReportLink for ExpressScheduler by Developer Express Inc. +[HistoryLists\hlDebugSourcePath] +Count=1 +Item0=D:\Proyectos\Componentes\GUISDK\Sources\;D:\Proyectos\Componentes\PluginSDK\Source\;D:\Proyectos\FactuGES (Estudio)\Codigo\Modulos\Contactos\Cliente;D:\Proyectos\FactuGES (Estudio)\Codigo\Modulos\Contactos\Reglas +[HistoryLists\hlUnitAliases] +Count=1 +Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +[HistoryLists\hlSearchPath] +Count=16 +Item0=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente;..\..\Asientos\Cliente;..\..\Cuentas\Cliente +Item1=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente;..\..\Asientos\Cliente +Item2=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente +Item3=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente +Item4=..\Modulos\Presupuestos\Reglas;..\Modulos\Contactos\Reglas;..\Base;..\Configuracion;..\Usuarios;..\Modulos\Albaranes de cliente\Reglas +Item5=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\Base;..\Configuracion;..\Usuarios;..\Modulos\Intervalos;..\Modulos\Documentos asociados;..\Modulos\Contactos\Cliente;..\Modulos\Contactos\Reglas;..\Modulos\Presupuestos\Cliente;..\Modulos\Presupuestos\Reglas;..\Modulos\Albaranes de cliente\Cliente;..\Modulos\Albaranes de cliente\Reglas;..\Modulos\Facturas de cliente\Cliente;..\Modulos\Facturas de cliente\Reglas;..\Modulos\Pedidos a proveedor\Cliente;..\Modulos\Pedidos a proveedor\Reglas;..\Modulos\Facturas de proveedor\Cliente;..\Modulos\Facturas de proveedor\Reglas;..\Modulos\Montajes\Reglas;..\Modulos\Montajes\Cliente;..\Modulos\Articulos\Cliente;..\Modulos\Articulos\Reglas;..\Modulos\Almacenes\Reglas;..\Modulos\Almacenes\Cliente;..\Modulos\Pagos\Reglas;..\Modulos\Pagos\Cliente;..\Modulos\Cuentas\Reglas;..\Modulos\Cuentas\Cliente;..\Modulos\Asientos\Reglas;..\Modulos\Asientos\Cliente;..\Modulos\Calendarios\Cliente;..\Modulos\Calendarios\Reglas +Item6=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente;..\..\Documentos asociados;..\..\Contactos\Cliente;..\..\Almacenes\Cliente +Item7=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados +Item8=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente;..\..\Documentos asociados;..\..\Contactos\Cliente +Item9=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente;..\..\Documentos asociados +Item10=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente +Item11=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados;..\..\Montajes\Cliente;..\..\Almacenes\Cliente +Item12=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados;..\..\Montajes\Cliente +Item13=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\Servidor +Item14=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\base;..\Modulos\Calendarios\Cliente;..\Modulos\Calendarios\Reglas +Item15=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\Base;..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios +[HistoryLists\hlUnitOutputDirectory] +Count=1 +Item0=.\ +[HistoryLists\hlOutputDirectorry] +Count=2 +Item0=..\Output\Servidor +Item1=..\Output\Cliente +[HistoryLists\hlBPLOutput] +Count=3 +Item0=..\..\..\Output\Cliente +Item1=..\Output\Cliente +Item2=..\..\Output\Cliente +[HistoryLists\hlDCPOutput] +Count=1 +Item0=.\ diff --git a/Modulos/Intervalos/Cliente/Intervalos.dpk b/Modulos/Intervalos/Cliente/Intervalos.dpk new file mode 100644 index 0000000..b943d84 --- /dev/null +++ b/Modulos/Intervalos/Cliente/Intervalos.dpk @@ -0,0 +1,41 @@ +package Intervalos; + +{$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 + rtl, + vcl, + dbrtl, + dsnap, + adortl, + vcldb, + BaseD7; + +contains + uDataModuleIntervalos in 'uDataModuleIntervalos.pas' {dmIntervalos: TDAClientDataModule}, + uBizIntervalos in '..\Reglas\uBizIntervalos.pas', + uListaIntervalos in 'uListaIntervalos.pas' {frListaIntervalos: TCustomView}; + +end. diff --git a/Modulos/Intervalos/Cliente/Intervalos.drc b/Modulos/Intervalos/Cliente/Intervalos.drc new file mode 100644 index 0000000..a5d5271 --- /dev/null +++ b/Modulos/Intervalos/Cliente/Intervalos.drc @@ -0,0 +1,14 @@ +/* VER150 + Generated by the Borland Delphi Pascal Compiler + because -GD or --drc was supplied to the compiler. + + This file contains compiler-generated resources that + were bound to the executable. + If this file is empty, then no compiler-generated + resources were bound to the produced executable. +*/ + +STRINGTABLE +BEGIN +END + diff --git a/Modulos/Intervalos/Cliente/Intervalos.res b/Modulos/Intervalos/Cliente/Intervalos.res new file mode 100644 index 0000000..ec5f233 Binary files /dev/null and b/Modulos/Intervalos/Cliente/Intervalos.res differ diff --git a/Modulos/Intervalos/Cliente/uDataModuleIntervalos.ddp b/Modulos/Intervalos/Cliente/uDataModuleIntervalos.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Intervalos/Cliente/uDataModuleIntervalos.ddp differ diff --git a/Modulos/Intervalos/Cliente/uDataModuleIntervalos.dfm b/Modulos/Intervalos/Cliente/uDataModuleIntervalos.dfm new file mode 100644 index 0000000..958256b Binary files /dev/null and b/Modulos/Intervalos/Cliente/uDataModuleIntervalos.dfm differ diff --git a/Modulos/Intervalos/Cliente/uDataModuleIntervalos.pas b/Modulos/Intervalos/Cliente/uDataModuleIntervalos.pas new file mode 100644 index 0000000..d431e81 --- /dev/null +++ b/Modulos/Intervalos/Cliente/uDataModuleIntervalos.pas @@ -0,0 +1,85 @@ +unit uDataModuleIntervalos; + +interface + +uses {vcl:} SysUtils, Classes, DB, DBClient, + {RemObjects:} uDAClientDataModule, uDADataTable, uDABINAdapter, + uROServiceComponent, uRORemoteService, uROClient, uROBinMessage, + uROWinInetHttpChannel, uDAScriptingProvider, uDACDSDataTable, + uBizIntervalos; + +type + TdmIntervalos = class(TDAClientDataModule) + DABINAdapter: TDABINAdapter; + RORemoteService: TRORemoteService; + tbl_Intervalos: TDACDSDataTable; + ds_Intervalos: TDADataSource; + procedure DAClientDataModuleCreate(Sender: TObject); + private + public + function GetItems: IBizIntervalos; + function GetItem(Codigo : Integer): IBizIntervalos; + end; + +var + dmIntervalos: TdmIntervalos; + +implementation + +{$R *.DFM} + +uses + Controls, Forms, uDAInterfaces, DataAbstract_Intf, FactuGES_Intf, + uDataTableUtils, uROTypes, uEditorPreview, + Dialogs, schIntervalosClient_Intf, uDataModuleBase, uDBSelectionList; + +const + MAX_RECORDS = 100; + + +procedure TdmIntervalos.DAClientDataModuleCreate(Sender: TObject); +begin + RORemoteService.Channel := dmBase.Channel; + RORemoteService.Message := dmBase.Message; +end; + +function TdmIntervalos.GetItems: IBizIntervalos; +var + dtIntervalos: TDACDSDataTable; + ACursor: TCursor; +begin + ACursor := Screen.Cursor; + Screen.Cursor := crHourGlass; + try + dtIntervalos := TDACDSDataTable.Create(NIL); + CloneDataTable(tbl_Intervalos, dtIntervalos); + dtIntervalos.BusinessRulesID := 'BizIntervalos'; + Result := (dtIntervalos as IBizIntervalos); + finally + Screen.Cursor := ACursor; + end; +end; + +function TdmIntervalos.GetItem(Codigo: Integer): IBizIntervalos; +var + AIntervalo: IBizIntervalos; +begin + AIntervalo := GetItems; + with AIntervalo.DataTable do + begin + if Active then Active := False; + Where.Clear; + Where.AddCondition(fld_IntervalosCODIGO, cEqual, Codigo); + Active := True; + end; + Result := AIntervalo; +end; + +initialization + dmIntervalos := TdmIntervalos.Create(nil); + +finalization + FreeAndNil(dmIntervalos); + +end. + diff --git a/Modulos/Intervalos/Cliente/uIntervaloFechas.dfm b/Modulos/Intervalos/Cliente/uIntervaloFechas.dfm new file mode 100644 index 0000000..1dac875 --- /dev/null +++ b/Modulos/Intervalos/Cliente/uIntervaloFechas.dfm @@ -0,0 +1,15 @@ +inherited frViewBase1: TfrViewBase1 + object dxLayoutControl1: TdxLayoutControl + Left = 0 + Top = 0 + Width = 306 + Height = 226 + Align = alClient + TabOrder = 0 + object dxLayoutControl1Group_Root: TdxLayoutGroup + ShowCaption = False + Hidden = True + ShowBorder = False + end + end +end diff --git a/Modulos/Intervalos/Cliente/uIntervaloFechas.pas b/Modulos/Intervalos/Cliente/uIntervaloFechas.pas new file mode 100644 index 0000000..1dbdb16 --- /dev/null +++ b/Modulos/Intervalos/Cliente/uIntervaloFechas.pas @@ -0,0 +1,26 @@ +unit uIntervaloFechas; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, dxLayoutControl, cxControls; + +type + TfrViewBase1 = class(TfrViewBase) + dxLayoutControl1Group_Root: TdxLayoutGroup; + dxLayoutControl1: TdxLayoutControl; + private + { Private declarations } + public + { Public declarations } + end; + +var + frViewBase1: TfrViewBase1; + +implementation + +{$R *.dfm} + +end. diff --git a/Modulos/Intervalos/Cliente/uListaIntervalos.ddp b/Modulos/Intervalos/Cliente/uListaIntervalos.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Intervalos/Cliente/uListaIntervalos.ddp differ diff --git a/Modulos/Intervalos/Cliente/uListaIntervalos.dfm b/Modulos/Intervalos/Cliente/uListaIntervalos.dfm new file mode 100644 index 0000000..a954ffc --- /dev/null +++ b/Modulos/Intervalos/Cliente/uListaIntervalos.dfm @@ -0,0 +1,40 @@ +inherited frListaIntervalos: TfrListaIntervalos + Width = 478 + Height = 44 + object Label3: TLabel + Left = 15 + Top = 18 + Width = 53 + Height = 13 + Caption = 'Intervalos:' + end + object cxIntervalos: TcxLookupComboBox + Left = 72 + Top = 15 + Properties.DropDownAutoSize = True + Properties.DropDownListStyle = lsFixedList + Properties.KeyFieldNames = 'CODIGO' + Properties.ListColumns = < + item + FieldName = 'NOMBRE' + end> + Properties.ListOptions.GridLines = glNone + Properties.ListOptions.ShowHeader = False + Properties.ListSource = DADataSource + Properties.OnChange = cxIntervalosPropertiesChange + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.Kind = lfStandard + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.Kind = lfStandard + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.Kind = lfStandard + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 0 + Width = 353 + end + object DADataSource: TDADataSource + Left = 439 + Top = 65533 + end +end diff --git a/Modulos/Intervalos/Cliente/uListaIntervalos.pas b/Modulos/Intervalos/Cliente/uListaIntervalos.pas new file mode 100644 index 0000000..53b05da --- /dev/null +++ b/Modulos/Intervalos/Cliente/uListaIntervalos.pas @@ -0,0 +1,80 @@ +unit uListaIntervalos; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, uBizIntervalos, cxGraphics, StdCtrls, DB, + uDADataTable, cxControls, cxContainer, cxEdit, cxTextEdit, cxMaskEdit, + cxDropDownEdit, cxLookupEdit, cxDBLookupEdit, cxDBLookupComboBox; + +type + IListaIntervalos = interface(IViewBase) + ['{EDFEA07F-84ED-4D37-8622-569E87824BA1}'] + end; + + TfrListaIntervalos = class(TfrViewBase, IListaIntervalos) + DADataSource: TDADataSource; + Label3: TLabel; + cxIntervalos: TcxLookupComboBox; + procedure cxIntervalosPropertiesChange(Sender: TObject); + private + FIntervalo: IBizIntervalos; +// FOnIntervaloChanged : TNotifyEvent; + function GetIntervalo: IBizIntervalos; +// function GetOnIntervaloChanged : TNotifyEvent; +// procedure SetOnIntervaloChanged (const Value : TNotifyEvent); + public + property Intervalo: IBizIntervalos read GetIntervalo; +// property OnIntervaloChanged : TNotifyEvent read GetOnIntervaloChanged write SetOnIntervaloChanged; + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + end; + +var + frListaIntervalos: TfrListaIntervalos; + +implementation + +{$R *.dfm} +{ TfrViewIntervalos } + +uses uDataModuleIntervalos; + +constructor TfrListaIntervalos.Create(AOwner: TComponent); +begin + inherited; + FIntervalo := dmIntervalos.GetItems; + DADataSource.DataTable := FIntervalo.DataTable; + FIntervalo.DataTable.Active := True; + cxIntervalos.ItemIndex := 0; +end; + +destructor TfrListaIntervalos.Destroy; +begin + FIntervalo := Nil; + inherited; +end; + +function TfrListaIntervalos.GetIntervalo: IBizIntervalos; +begin + Result := FIntervalo; +end; + +procedure TfrListaIntervalos.cxIntervalosPropertiesChange(Sender: TObject); +begin + inherited; + Intervalo.LocalizarIntervalo(cxIntervalos.Text); +end; +{ +function TfrListaIntervalos.GetOnIntervaloChanged: TNotifyEvent; +begin + Result := FOnIntervaloChanged; +end; + +procedure TfrListaIntervalos.SetOnIntervaloChanged(const Value: TNotifyEvent); +begin + FOnIntervaloChanged := Value; +end; +} +end. diff --git a/Modulos/Intervalos/Reglas/schIntervalosClient_Intf.pas b/Modulos/Intervalos/Reglas/schIntervalosClient_Intf.pas new file mode 100644 index 0000000..1663e42 --- /dev/null +++ b/Modulos/Intervalos/Reglas/schIntervalosClient_Intf.pas @@ -0,0 +1,154 @@ +unit schIntervalosClient_Intf; + +interface + +uses + Classes, DB, SysUtils, uROClasses, uDADataTable; + +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_Intervalos = '{52D19107-1090-40B1-8819-96B88AB560ED}'; + + { Data table names } + nme_Intervalos = 'Intervalos'; + + { Intervalos fields } + fld_IntervalosCODIGO = 'CODIGO'; + fld_IntervalosNOMBRE = 'NOMBRE'; + fld_IntervalosDIAS = 'DIAS'; + fld_IntervalosMESES = 'MESES'; + fld_IntervalosANOS = 'ANOS'; + + { Intervalos field indexes } + idx_IntervalosCODIGO = 0; + idx_IntervalosNOMBRE = 1; + idx_IntervalosDIAS = 2; + idx_IntervalosMESES = 3; + idx_IntervalosANOS = 4; + +type + { IIntervalos } + IIntervalos = interface(IDAStronglyTypedDataTable) + ['{FEF7AB7C-76CC-42F2-B97A-556495EE2EA1}'] + { Property getters and setters } + function GetCODIGOValue: Integer; + procedure SetCODIGOValue(const aValue: Integer); + function GetNOMBREValue: String; + procedure SetNOMBREValue(const aValue: String); + function GetDIASValue: Integer; + procedure SetDIASValue(const aValue: Integer); + function GetMESESValue: Integer; + procedure SetMESESValue(const aValue: Integer); + function GetANOSValue: Integer; + procedure SetANOSValue(const aValue: Integer); + + + { Properties } + property CODIGO: Integer read GetCODIGOValue write SetCODIGOValue; + property NOMBRE: String read GetNOMBREValue write SetNOMBREValue; + property DIAS: Integer read GetDIASValue write SetDIASValue; + property MESES: Integer read GetMESESValue write SetMESESValue; + property ANOS: Integer read GetANOSValue write SetANOSValue; + end; + + { TIntervalosDataTableRules } + TIntervalosDataTableRules = class(TDADataTableRules, IIntervalos) + private + protected + { Property getters and setters } + function GetCODIGOValue: Integer; virtual; + procedure SetCODIGOValue(const aValue: Integer); virtual; + function GetNOMBREValue: String; virtual; + procedure SetNOMBREValue(const aValue: String); virtual; + function GetDIASValue: Integer; virtual; + procedure SetDIASValue(const aValue: Integer); virtual; + function GetMESESValue: Integer; virtual; + procedure SetMESESValue(const aValue: Integer); virtual; + function GetANOSValue: Integer; virtual; + procedure SetANOSValue(const aValue: Integer); virtual; + + { Properties } + property CODIGO: Integer read GetCODIGOValue write SetCODIGOValue; + property NOMBRE: String read GetNOMBREValue write SetNOMBREValue; + property DIAS: Integer read GetDIASValue write SetDIASValue; + property MESES: Integer read GetMESESValue write SetMESESValue; + property ANOS: Integer read GetANOSValue write SetANOSValue; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + +implementation + +uses Variants; + +{ TIntervalosDataTableRules } +constructor TIntervalosDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TIntervalosDataTableRules.Destroy; +begin + inherited; +end; + +function TIntervalosDataTableRules.GetCODIGOValue: Integer; +begin + result := DataTable.Fields[idx_IntervalosCODIGO].AsInteger; +end; + +procedure TIntervalosDataTableRules.SetCODIGOValue(const aValue: Integer); +begin + DataTable.Fields[idx_IntervalosCODIGO].AsInteger := aValue; +end; + +function TIntervalosDataTableRules.GetNOMBREValue: String; +begin + result := DataTable.Fields[idx_IntervalosNOMBRE].AsString; +end; + +procedure TIntervalosDataTableRules.SetNOMBREValue(const aValue: String); +begin + DataTable.Fields[idx_IntervalosNOMBRE].AsString := aValue; +end; + +function TIntervalosDataTableRules.GetDIASValue: Integer; +begin + result := DataTable.Fields[idx_IntervalosDIAS].AsInteger; +end; + +procedure TIntervalosDataTableRules.SetDIASValue(const aValue: Integer); +begin + DataTable.Fields[idx_IntervalosDIAS].AsInteger := aValue; +end; + +function TIntervalosDataTableRules.GetMESESValue: Integer; +begin + result := DataTable.Fields[idx_IntervalosMESES].AsInteger; +end; + +procedure TIntervalosDataTableRules.SetMESESValue(const aValue: Integer); +begin + DataTable.Fields[idx_IntervalosMESES].AsInteger := aValue; +end; + +function TIntervalosDataTableRules.GetANOSValue: Integer; +begin + result := DataTable.Fields[idx_IntervalosANOS].AsInteger; +end; + +procedure TIntervalosDataTableRules.SetANOSValue(const aValue: Integer); +begin + DataTable.Fields[idx_IntervalosANOS].AsInteger := aValue; +end; + + +initialization + RegisterDataTableRules(RID_Intervalos, TIntervalosDataTableRules); + +end. diff --git a/Modulos/Intervalos/Reglas/schIntervalosServer_Intf.pas b/Modulos/Intervalos/Reglas/schIntervalosServer_Intf.pas new file mode 100644 index 0000000..4cdfda5 --- /dev/null +++ b/Modulos/Intervalos/Reglas/schIntervalosServer_Intf.pas @@ -0,0 +1,167 @@ +unit schIntervalosServer_Intf; + +interface + +uses + Classes, DB, SysUtils, uROClasses, uDADataTable, uDABusinessProcessor, schIntervalosClient_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_IntervalosDelta = '{F0E5C34F-94F5-4D82-B94C-E6D04402B872}'; + +type + { IIntervalosDelta } + IIntervalosDelta = interface(IIntervalos) + ['{F0E5C34F-94F5-4D82-B94C-E6D04402B872}'] + { Property getters and setters } + function GetOldCODIGOValue : Integer; + function GetOldNOMBREValue : String; + function GetOldDIASValue : Integer; + function GetOldMESESValue : Integer; + function GetOldANOSValue : Integer; + + { Properties } + property OldCODIGO : Integer read GetOldCODIGOValue; + property OldNOMBRE : String read GetOldNOMBREValue; + property OldDIAS : Integer read GetOldDIASValue; + property OldMESES : Integer read GetOldMESESValue; + property OldANOS : Integer read GetOldANOSValue; + end; + + { TIntervalosBusinessProcessorRules } + TIntervalosBusinessProcessorRules = class(TDABusinessProcessorRules, IIntervalos, IIntervalosDelta) + private + protected + { Property getters and setters } + function GetCODIGOValue: Integer; virtual; + function GetOldCODIGOValue: Integer; virtual; + procedure SetCODIGOValue(const aValue: Integer); virtual; + function GetNOMBREValue: String; virtual; + function GetOldNOMBREValue: String; virtual; + procedure SetNOMBREValue(const aValue: String); virtual; + function GetDIASValue: Integer; virtual; + function GetOldDIASValue: Integer; virtual; + procedure SetDIASValue(const aValue: Integer); virtual; + function GetMESESValue: Integer; virtual; + function GetOldMESESValue: Integer; virtual; + procedure SetMESESValue(const aValue: Integer); virtual; + function GetANOSValue: Integer; virtual; + function GetOldANOSValue: Integer; virtual; + procedure SetANOSValue(const aValue: Integer); virtual; + + { Properties } + property CODIGO : Integer read GetCODIGOValue write SetCODIGOValue; + property OldCODIGO : Integer read GetOldCODIGOValue; + property NOMBRE : String read GetNOMBREValue write SetNOMBREValue; + property OldNOMBRE : String read GetOldNOMBREValue; + property DIAS : Integer read GetDIASValue write SetDIASValue; + property OldDIAS : Integer read GetOldDIASValue; + property MESES : Integer read GetMESESValue write SetMESESValue; + property OldMESES : Integer read GetOldMESESValue; + property ANOS : Integer read GetANOSValue write SetANOSValue; + property OldANOS : Integer read GetOldANOSValue; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + +implementation + +uses + Variants, uROBinaryHelpers; + +{ TIntervalosBusinessProcessorRules } +constructor TIntervalosBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TIntervalosBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TIntervalosBusinessProcessorRules.GetCODIGOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_IntervalosCODIGO]; +end; + +function TIntervalosBusinessProcessorRules.GetOldCODIGOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_IntervalosCODIGO]; +end; + +procedure TIntervalosBusinessProcessorRules.SetCODIGOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_IntervalosCODIGO] := aValue; +end; + +function TIntervalosBusinessProcessorRules.GetNOMBREValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_IntervalosNOMBRE]; +end; + +function TIntervalosBusinessProcessorRules.GetOldNOMBREValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_IntervalosNOMBRE]; +end; + +procedure TIntervalosBusinessProcessorRules.SetNOMBREValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_IntervalosNOMBRE] := aValue; +end; + +function TIntervalosBusinessProcessorRules.GetDIASValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_IntervalosDIAS]; +end; + +function TIntervalosBusinessProcessorRules.GetOldDIASValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_IntervalosDIAS]; +end; + +procedure TIntervalosBusinessProcessorRules.SetDIASValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_IntervalosDIAS] := aValue; +end; + +function TIntervalosBusinessProcessorRules.GetMESESValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_IntervalosMESES]; +end; + +function TIntervalosBusinessProcessorRules.GetOldMESESValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_IntervalosMESES]; +end; + +procedure TIntervalosBusinessProcessorRules.SetMESESValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_IntervalosMESES] := aValue; +end; + +function TIntervalosBusinessProcessorRules.GetANOSValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_IntervalosANOS]; +end; + +function TIntervalosBusinessProcessorRules.GetOldANOSValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_IntervalosANOS]; +end; + +procedure TIntervalosBusinessProcessorRules.SetANOSValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_IntervalosANOS] := aValue; +end; + + +initialization + RegisterBusinessProcessorRules(RID_IntervalosDelta, TIntervalosBusinessProcessorRules); + +end. diff --git a/Modulos/Intervalos/Reglas/uBizIntervalos.pas b/Modulos/Intervalos/Reglas/uBizIntervalos.pas new file mode 100644 index 0000000..0115525 --- /dev/null +++ b/Modulos/Intervalos/Reglas/uBizIntervalos.pas @@ -0,0 +1,77 @@ +unit uBizIntervalos; + +interface + +uses + uDAInterfaces, uDADataTable, schIntervalosClient_Intf, Classes, + DBGrids, uDBSelectionList, DB, uExceptions, Controls; + +type + + IBizIntervalos = interface(IIntervalos) + ['{534B5822-BD1C-4E40-B291-ECCEA5D18E5D}'] + + function GetOnIntervaloChanged : TNotifyEvent; + procedure SetOnIntervaloChanged (const Value : TNotifyEvent); + property OnIntervaloChanged : TNotifyEvent read GetOnIntervaloChanged + write SetOnIntervaloChanged; + + procedure LocalizarIntervalo(const Nombre: String); + end; + + TBizIntervalosDataTableRules = class(TIntervalosDataTableRules, IBizIntervalos) + private + FOnIntervaloChanged : TNotifyEvent; + function GetOnIntervaloChanged : TNotifyEvent; + procedure SetOnIntervaloChanged (const Value : TNotifyEvent); + protected + public + property OnIntervaloChanged : TNotifyEvent read GetOnIntervaloChanged write SetOnIntervaloChanged; + procedure LocalizarIntervalo(const Nombre: String); + end; + + procedure ValidarIntervalo (const AIntervalo : IBizIntervalos); + +implementation + +uses + Windows, Dialogs, uDACDSDataTable, SysUtils, uDataModuleBase, + uEditorUtils, uDataModuleIntervalos, Variants; + + +procedure ValidarIntervalo (const AIntervalo : IBizIntervalos); +begin +// +end; + + +{ TBizIntervalosDataTableRules } + +{ +************************** TBizIntervalosDataTableRules ************************** +} + +function TBizIntervalosDataTableRules.GetOnIntervaloChanged: TNotifyEvent; +begin + Result := FOnIntervaloChanged; +end; + +procedure TBizIntervalosDataTableRules.LocalizarIntervalo(const Nombre: String); +begin + Locate(fld_IntervalosNOMBRE, Nombre); + + if Assigned(FOnIntervaloChanged) then + FOnIntervaloChanged(Self); +end; + +procedure TBizIntervalosDataTableRules.SetOnIntervaloChanged(const Value: TNotifyEvent); +begin + FOnIntervaloChanged := Value; +end; + +initialization + RegisterDataTableRules('BizIntervalos', TBizIntervalosDataTableRules); + +finalization + +end. diff --git a/Modulos/Intervalos/Servidor/srvIntervalos_Impl.ddp b/Modulos/Intervalos/Servidor/srvIntervalos_Impl.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Intervalos/Servidor/srvIntervalos_Impl.ddp differ diff --git a/Modulos/Intervalos/Servidor/srvIntervalos_Impl.dfm b/Modulos/Intervalos/Servidor/srvIntervalos_Impl.dfm new file mode 100644 index 0000000..7127f06 --- /dev/null +++ b/Modulos/Intervalos/Servidor/srvIntervalos_Impl.dfm @@ -0,0 +1,120 @@ +object srvIntervalos: TsrvIntervalos + OldCreateOrder = True + RequiresSession = True + SessionManager = dmServer.SessionManager + AcquireConnection = True + ConnectionName = 'IBX' + ServiceSchema = schIntervalos + ServiceAdapter = DABINAdapter + Left = 444 + Top = 205 + Height = 300 + Width = 300 + object schIntervalos: TDASchema + ConnectionManager = dmServer.ConnectionManager + DataDictionary = dmServer.DataDictionary + Diagrams = dmServer.DADiagrams + Datasets = < + item + Params = <> + Statements = < + item + Connection = 'IBX' + TargetTable = 'INTERVALOS' + SQL = + 'SELECT '#10' CODIGO, NOMBRE, DIAS, MESES, ANOS'#10' FROM'#10' INTERVA' + + 'LOS' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'CODIGO' + TableField = 'CODIGO' + end + item + DatasetField = 'NOMBRE' + TableField = 'NOMBRE' + end + item + DatasetField = 'DIAS' + TableField = 'DIAS' + end + item + DatasetField = 'MESES' + TableField = 'MESES' + end + item + DatasetField = 'ANOS' + TableField = 'ANOS' + end> + end> + Name = 'Intervalos' + Fields = < + item + Name = 'CODIGO' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'CODIGO' + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NOMBRE' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'DIAS' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'MESES' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ANOS' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end> + Commands = <> + RelationShips = <> + UpdateRules = <> + Left = 24 + Top = 16 + end + object DABINAdapter: TDABINAdapter + Left = 24 + Top = 72 + end +end diff --git a/Modulos/Intervalos/Servidor/srvIntervalos_Impl.pas b/Modulos/Intervalos/Servidor/srvIntervalos_Impl.pas new file mode 100644 index 0000000..c274bbd --- /dev/null +++ b/Modulos/Intervalos/Servidor/srvIntervalos_Impl.pas @@ -0,0 +1,46 @@ +unit srvIntervalos_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:} DARemoteService_Impl, + {Used RODLs:} DataAbstract_Intf, + {Generated:} FactuGES_Intf, uDAClasses, uDADataTable, uDABINAdapter; + +type + { TsrvIntervalos } + TsrvIntervalos = class(TDARemoteService, IsrvIntervalos) + schIntervalos: TDASchema; + DABINAdapter: TDABINAdapter; + private + protected + { IsrvIntervalos methods } + end; + +implementation + +{$R *.dfm} +uses + {Generated:} FactuGES_Invk, uDataModuleServer; + +procedure Create_srvIntervalos(out anInstance : IUnknown); +begin + anInstance := TsrvIntervalos.Create(NIL); +end; + +{ srvIntervalos } +initialization + TROClassFactory.Create('srvIntervalos', Create_srvIntervalos, TsrvIntervalos_Invoker); + +finalization + +end. diff --git a/Modulos/Montajes/Cliente/ArticulosMontaje.bdsproj b/Modulos/Montajes/Cliente/ArticulosMontaje.bdsproj new file mode 100644 index 0000000..771d3d6 --- /dev/null +++ b/Modulos/Montajes/Cliente/ArticulosMontaje.bdsproj @@ -0,0 +1,492 @@ + + + + + + + + + + + + ArticulosMontaje.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 3 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + .\ + ..\..\..\Output\Cliente + .\ + $(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\Reglas;..\..\..\Modulos\Articulos\Cliente;..\..\..\Modulos\Almacenes\Cliente;..\..\..\Modulos\Contactos\Cliente;..\..\..\Modulos\Presupuestos\Cliente;..\..\..\Modulos\Pedidos a proveedor\Cliente;..\..\Documentos asociados + vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;IntrawebDB_50_70;Intraweb_50_70;Rave50CLX;Rave50VCL;dclOfficeXP;PluginSDK_D7R;DJcl;JvStdCtrlsD7R;JvAppFrmD7R;JvCoreD7R;JvBandsD7R;JvBDED7R;JvDBD7R;JvDlgsD7R;JvCmpD7R;JvCryptD7R;JvCtrlsD7R;JvCustomD7R;JvDockingD7R;JvDotNetCtrlsD7R;JvEDID7R;qrpt;JvGlobusD7R;JvHMID7R;JvInspectorD7R;JvInterpreterD7R;JvJansD7R;JvManagedThreadsD7R;JvMMD7R;JvNetD7R;JvPageCompsD7R;JvPluginD7R;JvPrintPreviewD7R;JvSystemD7R;JvTimeFrameworkD7R;JvUIBD7R;JvValidatorsD7R;JvWizardD7R;JvXPCtrlsD7R;GUISDK_D7;RemObjects_WebBroker_D7;RemObjects_Indy_D7;RemObjects_RODX_D7;RemObjects_BPDX_D7;PascalScript_RO_D7;DataAbstract_Core_D7;DataAbstract_IDE_D7;DataAbstract_DBXDriver_D7;DataAbstract_Scripting_D7;dxBarD7;dxComnD7;cxLibraryVCLD7;cxEditorsVCLD7;dxThemeD7;cxDataD7;cxExtEditorsVCLD7;cxGridVCLD7;cxPageControlVCLD7;cxSchedulerVCLD7;cxTreeListVCLD7;dxBarDBNavD7;dxBarExtDBItemsD7;dxBarExtItemsD7;dxDockingD7;dxNavBarD7;dxPSCoreD7;dxsbD7;dxPSLnksD7;dxPSTeeChartD7;EPCOTAUtils70;PNG_D7;PngComponentsD7;tb2k_d7;tbx_d7;UserControlD7_RT;fqb70;frx7;frxADO7;frxBDE7;frxcs7;frxDB7;frxDBX7;frxe7;frxIBX7;fs7;fsADO7;fsBDE7;fsDB7;fsIBX7;cxExportVCLD7;cxIntl5D7;cxIntlPrintSys3D7;dxPScxCommonD7;dxPScxExtCommonD7;dxPScxGridLnkD7;dxPScxPCProdD7;dxPScxSchedulerLnkD7;dxPScxTLLnkD7;dxPSDBTeeChartD7;dxPsPrVwAdvD7 + + + False + + + + + + False + + + True + False + + + + $00000000 + C:\Archivos de programa\Borland\Delphi7\Bin\ + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + diff --git a/Modulos/Montajes/Cliente/ArticulosMontaje.cfg b/Modulos/Montajes/Cliente/ArticulosMontaje.cfg new file mode 100644 index 0000000..4b9711f --- /dev/null +++ b/Modulos/Montajes/Cliente/ArticulosMontaje.cfg @@ -0,0 +1,45 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-GD +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N".\" +-LE"..\..\..\Output\Cliente" +-LN".\" +-U"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\Reglas;..\..\..\Modulos\Articulos\Cliente;..\..\..\Modulos\Almacenes\Cliente;..\..\..\Modulos\Contactos\Cliente;..\..\..\Modulos\Presupuestos\Cliente;..\..\..\Modulos\Pedidos a proveedor\Cliente;..\..\Documentos asociados" +-O"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\Reglas;..\..\..\Modulos\Articulos\Cliente;..\..\..\Modulos\Almacenes\Cliente;..\..\..\Modulos\Contactos\Cliente;..\..\..\Modulos\Presupuestos\Cliente;..\..\..\Modulos\Pedidos a proveedor\Cliente;..\..\Documentos asociados" +-I"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\Reglas;..\..\..\Modulos\Articulos\Cliente;..\..\..\Modulos\Almacenes\Cliente;..\..\..\Modulos\Contactos\Cliente;..\..\..\Modulos\Presupuestos\Cliente;..\..\..\Modulos\Pedidos a proveedor\Cliente;..\..\Documentos asociados" +-R"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\Reglas;..\..\..\Modulos\Articulos\Cliente;..\..\..\Modulos\Almacenes\Cliente;..\..\..\Modulos\Contactos\Cliente;..\..\..\Modulos\Presupuestos\Cliente;..\..\..\Modulos\Pedidos a proveedor\Cliente;..\..\Documentos asociados" +-Z +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/Modulos/Montajes/Cliente/ArticulosMontaje.dcp b/Modulos/Montajes/Cliente/ArticulosMontaje.dcp new file mode 100644 index 0000000..dc1043d Binary files /dev/null and b/Modulos/Montajes/Cliente/ArticulosMontaje.dcp differ diff --git a/Modulos/Montajes/Cliente/ArticulosMontaje.dof b/Modulos/Montajes/Cliente/ArticulosMontaje.dof new file mode 100644 index 0000000..bbb02f7 --- /dev/null +++ b/Modulos/Montajes/Cliente/ArticulosMontaje.dof @@ -0,0 +1,175 @@ +[FileVersion] +Version=7.0 +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=1 +SymbolLibrary=1 +SymbolPlatform=1 +UnitLibrary=1 +UnitPlatform=1 +UnitDeprecated=1 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 +[Linker] +MapFile=3 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription= +[Directories] +OutputDir= +UnitOutputDir=.\ +PackageDLLOutputDir=..\..\..\Output\Cliente +PackageDCPOutputDir=.\ +SearchPath=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\Reglas;..\..\..\Modulos\Articulos\Cliente;..\..\..\Modulos\Almacenes\Cliente;..\..\..\Modulos\Contactos\Cliente;..\..\..\Modulos\Presupuestos\Cliente;..\..\..\Modulos\Pedidos a proveedor\Cliente;..\..\Documentos asociados +Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;IntrawebDB_50_70;Intraweb_50_70;Rave50CLX;Rave50VCL;dclOfficeXP;PluginSDK_D7R;DJcl;JvStdCtrlsD7R;JvAppFrmD7R;JvCoreD7R;JvBandsD7R;JvBDED7R;JvDBD7R;JvDlgsD7R;JvCmpD7R;JvCryptD7R;JvCtrlsD7R;JvCustomD7R;JvDockingD7R;JvDotNetCtrlsD7R;JvEDID7R;qrpt;JvGlobusD7R;JvHMID7R;JvInspectorD7R;JvInterpreterD7R;JvJansD7R;JvManagedThreadsD7R;JvMMD7R;JvNetD7R;JvPageCompsD7R;JvPluginD7R;JvPrintPreviewD7R;JvSystemD7R;JvTimeFrameworkD7R;JvUIBD7R;JvValidatorsD7R;JvWizardD7R;JvXPCtrlsD7R;GUISDK_D7;RemObjects_WebBroker_D7;RemObjects_Indy_D7;RemObjects_RODX_D7;RemObjects_BPDX_D7;PascalScript_RO_D7;DataAbstract_Core_D7;DataAbstract_IDE_D7;DataAbstract_DBXDriver_D7;DataAbstract_Scripting_D7;dxBarD7;dxComnD7;cxLibraryVCLD7;cxEditorsVCLD7;dxThemeD7;cxDataD7;cxExtEditorsVCLD7;cxGridVCLD7;cxPageControlVCLD7;cxSchedulerVCLD7;cxTreeListVCLD7;dxBarDBNavD7;dxBarExtDBItemsD7;dxBarExtItemsD7;dxDockingD7;dxNavBarD7;dxPSCoreD7;dxsbD7;dxPSLnksD7;dxPSTeeChartD7;EPCOTAUtils70;PNG_D7;PngComponentsD7;tb2k_d7;tbx_d7;UserControlD7_RT;fqb70;frx7;frxADO7;frxBDE7;frxcs7;frxDB7;frxDBX7;frxe7;frxIBX7;fs7;fsADO7;fsBDE7;fsDB7;fsIBX7;cxExportVCLD7;cxIntl5D7;cxIntlPrintSys3D7;dxPScxCommonD7;dxPScxExtCommonD7;dxPScxGridLnkD7;dxPScxPCProdD7;dxPScxSchedulerLnkD7;dxPScxTLLnkD7;dxPSDBTeeChartD7;dxPsPrVwAdvD7 +Conditionals= +DebugSourceDirs= +UsePackages=0 +[Parameters] +RunParams= +HostApplication= +Launcher= +UseLauncher=0 +DebugCWD= +[Language] +ActiveLang= +ProjectLang= +RootDir=C:\Archivos de programa\Borland\Delphi7\Bin\ +[Version Info] +IncludeVerInfo=1 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=3082 +CodePage=1252 +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= +[HistoryLists\hlDebugSourcePath] +Count=1 +Item0=D:\Proyectos\Componentes\GUISDK\Sources\;D:\Proyectos\Componentes\PluginSDK\Source\;D:\Proyectos\FactuGES (Estudio)\Codigo\Modulos\Contactos\Cliente;D:\Proyectos\FactuGES (Estudio)\Codigo\Modulos\Contactos\Reglas +[HistoryLists\hlUnitAliases] +Count=1 +Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +[HistoryLists\hlSearchPath] +Count=16 +Item0=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente;..\..\Asientos\Cliente;..\..\Cuentas\Cliente +Item1=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente;..\..\Asientos\Cliente +Item2=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente +Item3=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente +Item4=..\Modulos\Presupuestos\Reglas;..\Modulos\Contactos\Reglas;..\Base;..\Configuracion;..\Usuarios;..\Modulos\Albaranes de cliente\Reglas +Item5=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\Base;..\Configuracion;..\Usuarios;..\Modulos\Intervalos;..\Modulos\Documentos asociados;..\Modulos\Contactos\Cliente;..\Modulos\Contactos\Reglas;..\Modulos\Presupuestos\Cliente;..\Modulos\Presupuestos\Reglas;..\Modulos\Albaranes de cliente\Cliente;..\Modulos\Albaranes de cliente\Reglas;..\Modulos\Facturas de cliente\Cliente;..\Modulos\Facturas de cliente\Reglas;..\Modulos\Pedidos a proveedor\Cliente;..\Modulos\Pedidos a proveedor\Reglas;..\Modulos\Facturas de proveedor\Cliente;..\Modulos\Facturas de proveedor\Reglas;..\Modulos\Montajes\Reglas;..\Modulos\Montajes\Cliente;..\Modulos\Articulos\Cliente;..\Modulos\Articulos\Reglas;..\Modulos\Almacenes\Reglas;..\Modulos\Almacenes\Cliente;..\Modulos\Pagos\Reglas;..\Modulos\Pagos\Cliente;..\Modulos\Cuentas\Reglas;..\Modulos\Cuentas\Cliente;..\Modulos\Asientos\Reglas;..\Modulos\Asientos\Cliente;..\Modulos\Calendarios\Cliente;..\Modulos\Calendarios\Reglas +Item6=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente;..\..\Documentos asociados;..\..\Contactos\Cliente;..\..\Almacenes\Cliente +Item7=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados +Item8=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente;..\..\Documentos asociados;..\..\Contactos\Cliente +Item9=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente;..\..\Documentos asociados +Item10=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente +Item11=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados;..\..\Montajes\Cliente;..\..\Almacenes\Cliente +Item12=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados;..\..\Montajes\Cliente +Item13=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\Servidor +Item14=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\base;..\Modulos\Calendarios\Cliente;..\Modulos\Calendarios\Reglas +Item15=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\Base;..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios +[HistoryLists\hlUnitOutputDirectory] +Count=1 +Item0=.\ +[HistoryLists\hlOutputDirectorry] +Count=2 +Item0=..\Output\Servidor +Item1=..\Output\Cliente +[HistoryLists\hlBPLOutput] +Count=3 +Item0=..\..\..\Output\Cliente +Item1=..\Output\Cliente +Item2=..\..\Output\Cliente +[HistoryLists\hlDCPOutput] +Count=1 +Item0=.\ diff --git a/Modulos/Montajes/Cliente/ArticulosMontaje.dpk b/Modulos/Montajes/Cliente/ArticulosMontaje.dpk new file mode 100644 index 0000000..6418660 --- /dev/null +++ b/Modulos/Montajes/Cliente/ArticulosMontaje.dpk @@ -0,0 +1,71 @@ +package ArticulosMontaje; + +{$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 + rtl, + vcl, + dbrtl, + dsnap, + adortl, + BaseD7, + Articulos, + Almacenes, + Contactos, + Presupuestos, + PedidosProveedor, + JvCoreD7R, + vclx, + vcljpg, + JvAppFrmD7R, + JvStdCtrlsD7R, + JvSystemD7R, + cxLibraryVCLD7, + dxThemeD7, + dxPSCoreD7, + dxComnD7, + PngComponentsD7, + PNG_D7, + vclactnband, + cxDataD7, + cxEditorsVCLD7, + vcldb, + cxGridVCLD7, + cxPageControlVCLD7, + cxExtEditorsVCLD7, + cxExportVCLD7, + cxIntlPrintSys3D7, + designide, + dxPScxCommonD7, + dxPSLnksD7, + vclshlctrls, + dxPScxGridLnkD7, + dclcxLibraryVCLD7; + +contains + uBizArticulosMontaje in '..\Reglas\uBizArticulosMontaje.pas', + uViewArticulosMontaje in 'uViewArticulosMontaje.pas' {frViewArticulosMontaje: TCustomView}; + +end. diff --git a/Modulos/Montajes/Cliente/ArticulosMontaje.drc b/Modulos/Montajes/Cliente/ArticulosMontaje.drc new file mode 100644 index 0000000..a5d5271 --- /dev/null +++ b/Modulos/Montajes/Cliente/ArticulosMontaje.drc @@ -0,0 +1,14 @@ +/* VER150 + Generated by the Borland Delphi Pascal Compiler + because -GD or --drc was supplied to the compiler. + + This file contains compiler-generated resources that + were bound to the executable. + If this file is empty, then no compiler-generated + resources were bound to the produced executable. +*/ + +STRINGTABLE +BEGIN +END + diff --git a/Modulos/Montajes/Cliente/ArticulosMontaje.res b/Modulos/Montajes/Cliente/ArticulosMontaje.res new file mode 100644 index 0000000..ec5f233 Binary files /dev/null and b/Modulos/Montajes/Cliente/ArticulosMontaje.res differ diff --git a/Modulos/Montajes/Cliente/Copia de uViewPedidosMontaje.dfm b/Modulos/Montajes/Cliente/Copia de uViewPedidosMontaje.dfm new file mode 100644 index 0000000..7a875b6 --- /dev/null +++ b/Modulos/Montajes/Cliente/Copia de uViewPedidosMontaje.dfm @@ -0,0 +1,110 @@ +inherited frViewPedidosMontaje: TfrViewPedidosMontaje + inherited cxGrid: TcxGrid + Top = 25 + Height = 245 + inherited cxGridView: TcxGridDBTableView + DataController.KeyFieldNames = 'CODIGO' + DataController.Summary.FooterSummaryItems = < + item + Kind = skCount + end> + OptionsBehavior.PullFocusing = True + object cxGridViewRecID: TcxGridDBColumn + DataBinding.FieldName = 'RecID' + Visible = False + end + object cxGridViewCODIGOEMPRESA: TcxGridDBColumn + DataBinding.FieldName = 'CODIGOEMPRESA' + Visible = False + end + object cxGridViewCODIGO: TcxGridDBColumn + DataBinding.FieldName = 'CODIGO' + Visible = False + end + object cxGridViewREFERENCIA: TcxGridDBColumn + DataBinding.FieldName = 'REFERENCIA' + end + object cxGridViewNOMBRE: TcxGridDBColumn + DataBinding.FieldName = 'NOMBRE' + end + object cxGridViewSITUACION: TcxGridDBColumn + DataBinding.FieldName = 'SITUACION' + end + object cxGridViewFECHAALTA: TcxGridDBColumn + DataBinding.FieldName = 'FECHAALTA' + Visible = False + end + object cxGridViewUSUARIO: TcxGridDBColumn + DataBinding.FieldName = 'USUARIO' + Visible = False + end + object cxGridViewFECHACONFIRMACION: TcxGridDBColumn + DataBinding.FieldName = 'FECHACONFIRMACION' + end + object cxGridViewFECHAENTREGA: TcxGridDBColumn + DataBinding.FieldName = 'FECHAENTREGA' + end + end + inherited cxGridLevel: TcxGridLevel + Caption = 'Todos' + end + end + object ToolBar1: TToolBar [1] + Left = 0 + Top = 0 + Width = 443 + Height = 25 + ButtonHeight = 19 + ButtonWidth = 90 + Caption = 'ToolBar1' + EdgeBorders = [] + EdgeInner = esNone + EdgeOuter = esNone + Flat = True + List = True + ShowCaptions = True + TabOrder = 1 + object ToolButton1: TToolButton + Left = 0 + Top = 0 + Action = actAnadir + end + object ToolButton2: TToolButton + Left = 90 + Top = 0 + Action = actModificar + end + object ToolButton4: TToolButton + Left = 180 + Top = 0 + Action = actEliminar + end + end + inherited ActionList1: TActionList + Left = 8 + Top = 32 + object actAnadir: TAction + Caption = 'A'#241'adir pedido' + OnExecute = actAnadirExecute + end + object actModificar: TAction + Caption = 'Modificar pedido' + OnExecute = actModificarExecute + end + object actEliminar: TAction + Caption = 'Eliminar pedido' + OnExecute = actEliminarExecute + end + end + inherited dxComponentPrinter: TdxComponentPrinter + inherited dxComponentPrinterLink: TdxGridReportLink + ReportDocument.CreationDate = 38673.842406053240000000 + BuiltInReportLink = True + end + end + object PngImageList: TPngImageList + PngImages = <> + Left = 40 + Top = 32 + end +end diff --git a/Modulos/Montajes/Cliente/Copia de uViewPedidosMontaje.pas b/Modulos/Montajes/Cliente/Copia de uViewPedidosMontaje.pas new file mode 100644 index 0000000..e23f7fe --- /dev/null +++ b/Modulos/Montajes/Cliente/Copia de uViewPedidosMontaje.pas @@ -0,0 +1,126 @@ +unit uViewPedidosMontaje; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewGrid, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, + cxDataStorage, cxEdit, DB, cxDBData, uDADataTable, cxGridLevel, + cxClasses, cxControls, cxGridCustomView, cxGridCustomTableView, + cxGridTableView, cxGridDBTableView, cxGrid, ActnList, Menus, + cxGridBandedTableView, cxGridDBBandedTableView, uBizPedidosMontaje, JvComponent, + JvFormAutoSize, PngImageList, ImgList, dxPSGlbl, dxPSUtl, dxPSEngn, + dxPrnPg, dxBkgnd, dxWrap, dxPrnDev, dxPSCompsProvider, dxPSFillPatterns, + dxPSEdgePatterns, cxIntlPrintSys3, dxPSCore, dxPScxCommon, dxPScxGridLnk, + ComCtrls, ToolWin; + +type + IViewPedidosMontaje = interface(IViewGrid) + ['{E6A3B3B7-7663-46D6-9B84-7B689D9B2461}'] + function GetMontajes: IBizPedidosMontaje; + procedure SetMontajes(const Value: IBizPedidosMontaje); + property Montajes: IBizPedidosMontaje read GetMontajes write SetMontajes; + end; + + TfrViewPedidosMontaje = class(TfrViewGrid, IViewPedidosMontaje) + PngImageList: TPngImageList; + cxGridViewRecID: TcxGridDBColumn; + cxGridViewCODIGOEMPRESA: TcxGridDBColumn; + cxGridViewCODIGO: TcxGridDBColumn; + cxGridViewFECHAALTA: TcxGridDBColumn; + cxGridViewUSUARIO: TcxGridDBColumn; + cxGridViewFECHACONFIRMACION: TcxGridDBColumn; + cxGridViewFECHAENTREGA: TcxGridDBColumn; + cxGridViewSITUACION: TcxGridDBColumn; + cxGridViewREFERENCIA: TcxGridDBColumn; + cxGridViewNOMBRE: TcxGridDBColumn; + ToolBar1: TToolBar; + ToolButton1: TToolButton; + ToolButton2: TToolButton; + ToolButton4: TToolButton; + actAnadir: TAction; + actModificar: TAction; + actEliminar: TAction; + procedure cxGridViewCODIGOCustomDrawCell( + Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; + AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); + procedure actAnadirExecute(Sender: TObject); + procedure actModificarExecute(Sender: TObject); + procedure actEliminarExecute(Sender: TObject); + protected + FMontajes: IBizPedidosMontaje; + function GetMontajes: IBizPedidosMontaje; + procedure SetMontajes(const Value: IBizPedidosMontaje); + public + property Montajes: IBizPedidosMontaje read GetMontajes write SetMontajes; + end; + +var + frViewPedidosMontaje: TfrViewPedidosMontaje; + +implementation + +uses uDataModuleMontajes; + + +{$R *.dfm} + +{ TfrViewPedidosMontaje } + +{ +******************************* TfrViewPedidosMontaje ******************************* +} +function TfrViewPedidosMontaje.GetMontajes: IBizPedidosMontaje; +begin + Result := FMontajes; +end; + +procedure TfrViewPedidosMontaje.SetMontajes(const Value: IBizPedidosMontaje); +begin + FMontajes := Value; + if Assigned(FMontajes) then + DADataSource.DataTable := FMontajes.DataTable; +end; + + +procedure TfrViewPedidosMontaje.cxGridViewCODIGOCustomDrawCell( + Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; + AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); +var + R : TRect; +begin + inherited; + R := AViewInfo.ContentBounds; + ACanvas.FillRect(R); + ACanvas.DrawImage(PngImageList, R.Left, R.Top, 0); + ADone := True; +end; + +procedure TfrViewPedidosMontaje.actAnadirExecute(Sender: TObject); +begin + FMontajes.AnadirPedido; + Self.RefreshGrid; + Self.SyncFocusedRecordsFromDataSet; +end; + +procedure TfrViewPedidosMontaje.actModificarExecute(Sender: TObject); +begin + Self.SyncFocusedRecordsFromGrid; + FMontajes.Show; + Self.RefreshGrid; + Self.SyncFocusedRecordsFromDataSet; +end; + +procedure TfrViewPedidosMontaje.actEliminarExecute(Sender: TObject); +begin + Self.SyncFocusedRecordsFromGrid; + try + FMontajes.Delete; + FMontajes.DataTable.ApplyUpdates; + finally + Self.RefreshGrid; + Self.SyncFocusedRecordsFromDataSet; + end; +end; + +end. diff --git a/Modulos/Montajes/Cliente/Montajes_Impl.bdsproj b/Modulos/Montajes/Cliente/Montajes_Impl.bdsproj new file mode 100644 index 0000000..90dbb71 --- /dev/null +++ b/Modulos/Montajes/Cliente/Montajes_Impl.bdsproj @@ -0,0 +1,492 @@ + + + + + + + + + + + + Montajes_Impl.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 3 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + .\ + ..\..\..\Output\Cliente + .\ + $(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\Reglas;..\..\..\Modulos\Almacenes\Cliente;..\..\..\Modulos\Contactos\Cliente;..\..\..\Modulos\Presupuestos\Cliente;..\..\..\Modulos\Pedidos a proveedor\Cliente;..\..\..\Modulos\Articulos\Cliente;..\..\Documentos asociados + vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;IntrawebDB_50_70;Intraweb_50_70;Rave50CLX;Rave50VCL;dclOfficeXP;PluginSDK_D7R;DJcl;JvStdCtrlsD7R;JvAppFrmD7R;JvCoreD7R;JvBandsD7R;JvBDED7R;JvDBD7R;JvDlgsD7R;JvCmpD7R;JvCryptD7R;JvCtrlsD7R;JvCustomD7R;JvDockingD7R;JvDotNetCtrlsD7R;JvEDID7R;qrpt;JvGlobusD7R;JvHMID7R;JvInspectorD7R;JvInterpreterD7R;JvJansD7R;JvManagedThreadsD7R;JvMMD7R;JvNetD7R;JvPageCompsD7R;JvPluginD7R;JvPrintPreviewD7R;JvSystemD7R;JvTimeFrameworkD7R;JvUIBD7R;JvValidatorsD7R;JvWizardD7R;JvXPCtrlsD7R;GUISDK_D7;RemObjects_WebBroker_D7;RemObjects_Indy_D7;RemObjects_RODX_D7;RemObjects_BPDX_D7;PascalScript_RO_D7;DataAbstract_Core_D7;DataAbstract_IDE_D7;DataAbstract_DBXDriver_D7;DataAbstract_Scripting_D7;dxBarD7;dxComnD7;cxLibraryVCLD7;cxEditorsVCLD7;dxThemeD7;cxDataD7;cxExtEditorsVCLD7;cxGridVCLD7;cxPageControlVCLD7;cxSchedulerVCLD7;cxTreeListVCLD7;dxBarDBNavD7;dxBarExtDBItemsD7;dxBarExtItemsD7;dxDockingD7;dxNavBarD7;dxPSCoreD7;dxsbD7;dxPSLnksD7;dxPSTeeChartD7;EPCOTAUtils70;PNG_D7;PngComponentsD7;tb2k_d7;tbx_d7;UserControlD7_RT;fqb70;frx7;frxADO7;frxBDE7;frxcs7;frxDB7;frxDBX7;frxe7;frxIBX7;fs7;fsADO7;fsBDE7;fsDB7;fsIBX7;cxExportVCLD7;cxIntl5D7;cxIntlPrintSys3D7;dxPScxCommonD7;dxPScxExtCommonD7;dxPScxGridLnkD7;dxPScxPCProdD7;dxPScxSchedulerLnkD7;dxPScxTLLnkD7;dxPSDBTeeChartD7;dxPsPrVwAdvD7 + + + False + + + + + + False + + + True + False + + + + $00000000 + C:\Archivos de programa\Borland\Delphi7\Bin\ + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + diff --git a/Modulos/Montajes/Cliente/Montajes_Impl.cfg b/Modulos/Montajes/Cliente/Montajes_Impl.cfg new file mode 100644 index 0000000..1d28829 --- /dev/null +++ b/Modulos/Montajes/Cliente/Montajes_Impl.cfg @@ -0,0 +1,45 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-GD +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N".\" +-LE"..\..\..\Output\Cliente" +-LN".\" +-U"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\Reglas;..\..\..\Modulos\Almacenes\Cliente;..\..\..\Modulos\Contactos\Cliente;..\..\..\Modulos\Presupuestos\Cliente;..\..\..\Modulos\Pedidos a proveedor\Cliente;..\..\..\Modulos\Articulos\Cliente;..\..\Documentos asociados" +-O"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\Reglas;..\..\..\Modulos\Almacenes\Cliente;..\..\..\Modulos\Contactos\Cliente;..\..\..\Modulos\Presupuestos\Cliente;..\..\..\Modulos\Pedidos a proveedor\Cliente;..\..\..\Modulos\Articulos\Cliente;..\..\Documentos asociados" +-I"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\Reglas;..\..\..\Modulos\Almacenes\Cliente;..\..\..\Modulos\Contactos\Cliente;..\..\..\Modulos\Presupuestos\Cliente;..\..\..\Modulos\Pedidos a proveedor\Cliente;..\..\..\Modulos\Articulos\Cliente;..\..\Documentos asociados" +-R"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\Reglas;..\..\..\Modulos\Almacenes\Cliente;..\..\..\Modulos\Contactos\Cliente;..\..\..\Modulos\Presupuestos\Cliente;..\..\..\Modulos\Pedidos a proveedor\Cliente;..\..\..\Modulos\Articulos\Cliente;..\..\Documentos asociados" +-Z +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/Modulos/Montajes/Cliente/Montajes_Impl.dcp b/Modulos/Montajes/Cliente/Montajes_Impl.dcp new file mode 100644 index 0000000..02aef2f Binary files /dev/null and b/Modulos/Montajes/Cliente/Montajes_Impl.dcp differ diff --git a/Modulos/Montajes/Cliente/Montajes_Impl.dof b/Modulos/Montajes/Cliente/Montajes_Impl.dof new file mode 100644 index 0000000..6e49027 --- /dev/null +++ b/Modulos/Montajes/Cliente/Montajes_Impl.dof @@ -0,0 +1,175 @@ +[FileVersion] +Version=7.0 +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=1 +SymbolLibrary=1 +SymbolPlatform=1 +UnitLibrary=1 +UnitPlatform=1 +UnitDeprecated=1 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 +[Linker] +MapFile=3 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription= +[Directories] +OutputDir= +UnitOutputDir=.\ +PackageDLLOutputDir=..\..\..\Output\Cliente +PackageDCPOutputDir=.\ +SearchPath=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\Reglas;..\..\..\Modulos\Almacenes\Cliente;..\..\..\Modulos\Contactos\Cliente;..\..\..\Modulos\Presupuestos\Cliente;..\..\..\Modulos\Pedidos a proveedor\Cliente;..\..\..\Modulos\Articulos\Cliente;..\..\Documentos asociados +Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;IntrawebDB_50_70;Intraweb_50_70;Rave50CLX;Rave50VCL;dclOfficeXP;PluginSDK_D7R;DJcl;JvStdCtrlsD7R;JvAppFrmD7R;JvCoreD7R;JvBandsD7R;JvBDED7R;JvDBD7R;JvDlgsD7R;JvCmpD7R;JvCryptD7R;JvCtrlsD7R;JvCustomD7R;JvDockingD7R;JvDotNetCtrlsD7R;JvEDID7R;qrpt;JvGlobusD7R;JvHMID7R;JvInspectorD7R;JvInterpreterD7R;JvJansD7R;JvManagedThreadsD7R;JvMMD7R;JvNetD7R;JvPageCompsD7R;JvPluginD7R;JvPrintPreviewD7R;JvSystemD7R;JvTimeFrameworkD7R;JvUIBD7R;JvValidatorsD7R;JvWizardD7R;JvXPCtrlsD7R;GUISDK_D7;RemObjects_WebBroker_D7;RemObjects_Indy_D7;RemObjects_RODX_D7;RemObjects_BPDX_D7;PascalScript_RO_D7;DataAbstract_Core_D7;DataAbstract_IDE_D7;DataAbstract_DBXDriver_D7;DataAbstract_Scripting_D7;dxBarD7;dxComnD7;cxLibraryVCLD7;cxEditorsVCLD7;dxThemeD7;cxDataD7;cxExtEditorsVCLD7;cxGridVCLD7;cxPageControlVCLD7;cxSchedulerVCLD7;cxTreeListVCLD7;dxBarDBNavD7;dxBarExtDBItemsD7;dxBarExtItemsD7;dxDockingD7;dxNavBarD7;dxPSCoreD7;dxsbD7;dxPSLnksD7;dxPSTeeChartD7;EPCOTAUtils70;PNG_D7;PngComponentsD7;tb2k_d7;tbx_d7;UserControlD7_RT;fqb70;frx7;frxADO7;frxBDE7;frxcs7;frxDB7;frxDBX7;frxe7;frxIBX7;fs7;fsADO7;fsBDE7;fsDB7;fsIBX7;cxExportVCLD7;cxIntl5D7;cxIntlPrintSys3D7;dxPScxCommonD7;dxPScxExtCommonD7;dxPScxGridLnkD7;dxPScxPCProdD7;dxPScxSchedulerLnkD7;dxPScxTLLnkD7;dxPSDBTeeChartD7;dxPsPrVwAdvD7 +Conditionals= +DebugSourceDirs= +UsePackages=0 +[Parameters] +RunParams= +HostApplication= +Launcher= +UseLauncher=0 +DebugCWD= +[Language] +ActiveLang= +ProjectLang= +RootDir=C:\Archivos de programa\Borland\Delphi7\Bin\ +[Version Info] +IncludeVerInfo=1 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=3082 +CodePage=1252 +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= +[HistoryLists\hlDebugSourcePath] +Count=1 +Item0=D:\Proyectos\Componentes\GUISDK\Sources\;D:\Proyectos\Componentes\PluginSDK\Source\;D:\Proyectos\FactuGES (Estudio)\Codigo\Modulos\Contactos\Cliente;D:\Proyectos\FactuGES (Estudio)\Codigo\Modulos\Contactos\Reglas +[HistoryLists\hlUnitAliases] +Count=1 +Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +[HistoryLists\hlSearchPath] +Count=16 +Item0=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente;..\..\Asientos\Cliente;..\..\Cuentas\Cliente +Item1=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente;..\..\Asientos\Cliente +Item2=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente +Item3=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente +Item4=..\Modulos\Presupuestos\Reglas;..\Modulos\Contactos\Reglas;..\Base;..\Configuracion;..\Usuarios;..\Modulos\Albaranes de cliente\Reglas +Item5=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\Base;..\Configuracion;..\Usuarios;..\Modulos\Intervalos;..\Modulos\Documentos asociados;..\Modulos\Contactos\Cliente;..\Modulos\Contactos\Reglas;..\Modulos\Presupuestos\Cliente;..\Modulos\Presupuestos\Reglas;..\Modulos\Albaranes de cliente\Cliente;..\Modulos\Albaranes de cliente\Reglas;..\Modulos\Facturas de cliente\Cliente;..\Modulos\Facturas de cliente\Reglas;..\Modulos\Pedidos a proveedor\Cliente;..\Modulos\Pedidos a proveedor\Reglas;..\Modulos\Facturas de proveedor\Cliente;..\Modulos\Facturas de proveedor\Reglas;..\Modulos\Montajes\Reglas;..\Modulos\Montajes\Cliente;..\Modulos\Articulos\Cliente;..\Modulos\Articulos\Reglas;..\Modulos\Almacenes\Reglas;..\Modulos\Almacenes\Cliente;..\Modulos\Pagos\Reglas;..\Modulos\Pagos\Cliente;..\Modulos\Cuentas\Reglas;..\Modulos\Cuentas\Cliente;..\Modulos\Asientos\Reglas;..\Modulos\Asientos\Cliente;..\Modulos\Calendarios\Cliente;..\Modulos\Calendarios\Reglas +Item6=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente;..\..\Documentos asociados;..\..\Contactos\Cliente;..\..\Almacenes\Cliente +Item7=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados +Item8=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente;..\..\Documentos asociados;..\..\Contactos\Cliente +Item9=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente;..\..\Documentos asociados +Item10=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente +Item11=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados;..\..\Montajes\Cliente;..\..\Almacenes\Cliente +Item12=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados;..\..\Montajes\Cliente +Item13=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\Servidor +Item14=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\base;..\Modulos\Calendarios\Cliente;..\Modulos\Calendarios\Reglas +Item15=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\Base;..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios +[HistoryLists\hlUnitOutputDirectory] +Count=1 +Item0=.\ +[HistoryLists\hlOutputDirectorry] +Count=2 +Item0=..\Output\Servidor +Item1=..\Output\Cliente +[HistoryLists\hlBPLOutput] +Count=3 +Item0=..\..\..\Output\Cliente +Item1=..\Output\Cliente +Item2=..\..\Output\Cliente +[HistoryLists\hlDCPOutput] +Count=1 +Item0=.\ diff --git a/Modulos/Montajes/Cliente/Montajes_Impl.dpk b/Modulos/Montajes/Cliente/Montajes_Impl.dpk new file mode 100644 index 0000000..18be8b7 --- /dev/null +++ b/Modulos/Montajes/Cliente/Montajes_Impl.dpk @@ -0,0 +1,75 @@ +package Montajes_Impl; + +{$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 + rtl, + vcl, + PluginSDK_D7R, + GUISDK_D7, + ccpack70, + designide, + vclactnband, + vclx, + cfpack, + JvAppFrmD7R, + JvStdCtrlsD7R, + vcljpg, + JvCoreD7R, + JvSystemD7R, + PngComponentsD7, + PNG_D7, + dbrtl, + vcldb, + JvPageCompsD7R, + tb2k_d7, + tbx_d7, + dsnap, + adortl, + Montajes_Intf, + PedidosMontaje, + Almacenes, + Contactos, + Presupuestos, + PedidosProveedor, + cxGridVCLD7, + cxPageControlVCLD7, + cxLibraryVCLD7, + dxThemeD7, + cxExtEditorsVCLD7, + cxDataD7, + cxEditorsVCLD7, + cxExportVCLD7, + ArticulosMontaje, + Articulos, + JvWizardD7R; + +contains + uPluginControllerMontajes in 'uPluginControllerMontajes.pas' {ModuleMontajes: TModuleController}, + uEditorMontajes in 'uEditorMontajes.pas' {fEditorMontajes: TCustomEditor}, + uEditorMontaje in 'uEditorMontaje.pas' {fEditorMontaje: TCustomEditor}, + uAsistenteEtiquetasMontajes in 'uAsistenteEtiquetasMontajes.pas' {fAsistenteEtiquetasMontajes}; + +end. diff --git a/Modulos/Montajes/Cliente/Montajes_Impl.drc b/Modulos/Montajes/Cliente/Montajes_Impl.drc new file mode 100644 index 0000000..a5d5271 --- /dev/null +++ b/Modulos/Montajes/Cliente/Montajes_Impl.drc @@ -0,0 +1,14 @@ +/* VER150 + Generated by the Borland Delphi Pascal Compiler + because -GD or --drc was supplied to the compiler. + + This file contains compiler-generated resources that + were bound to the executable. + If this file is empty, then no compiler-generated + resources were bound to the produced executable. +*/ + +STRINGTABLE +BEGIN +END + diff --git a/Modulos/Montajes/Cliente/Montajes_Impl.res b/Modulos/Montajes/Cliente/Montajes_Impl.res new file mode 100644 index 0000000..ec5f233 Binary files /dev/null and b/Modulos/Montajes/Cliente/Montajes_Impl.res differ diff --git a/Modulos/Montajes/Cliente/Montajes_Intf.bdsproj b/Modulos/Montajes/Cliente/Montajes_Intf.bdsproj new file mode 100644 index 0000000..f98295f --- /dev/null +++ b/Modulos/Montajes/Cliente/Montajes_Intf.bdsproj @@ -0,0 +1,492 @@ + + + + + + + + + + + + Montajes_Intf.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 3 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + .\ + ..\..\..\Output\Cliente + .\ + $(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\Reglas;..\..\..\Modulos\Presupuestos\Cliente;..\..\..\Modulos\Contactos\Cliente;.\;..\..\..\Modulos\Almacenes\Cliente;..\..\Documentos asociados + vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;IntrawebDB_50_70;Intraweb_50_70;Rave50CLX;Rave50VCL;dclOfficeXP;PluginSDK_D7R;DJcl;JvStdCtrlsD7R;JvAppFrmD7R;JvCoreD7R;JvBandsD7R;JvBDED7R;JvDBD7R;JvDlgsD7R;JvCmpD7R;JvCryptD7R;JvCtrlsD7R;JvCustomD7R;JvDockingD7R;JvDotNetCtrlsD7R;JvEDID7R;qrpt;JvGlobusD7R;JvHMID7R;JvInspectorD7R;JvInterpreterD7R;JvJansD7R;JvManagedThreadsD7R;JvMMD7R;JvNetD7R;JvPageCompsD7R;JvPluginD7R;JvPrintPreviewD7R;JvSystemD7R;JvTimeFrameworkD7R;JvUIBD7R;JvValidatorsD7R;JvWizardD7R;JvXPCtrlsD7R;GUISDK_D7;RemObjects_WebBroker_D7;RemObjects_Indy_D7;RemObjects_RODX_D7;RemObjects_BPDX_D7;PascalScript_RO_D7;DataAbstract_Core_D7;DataAbstract_IDE_D7;DataAbstract_DBXDriver_D7;DataAbstract_Scripting_D7;dxBarD7;dxComnD7;cxLibraryVCLD7;cxEditorsVCLD7;dxThemeD7;cxDataD7;cxExtEditorsVCLD7;cxGridVCLD7;cxPageControlVCLD7;cxSchedulerVCLD7;cxTreeListVCLD7;dxBarDBNavD7;dxBarExtDBItemsD7;dxBarExtItemsD7;dxDockingD7;dxNavBarD7;dxPSCoreD7;dxsbD7;dxPSLnksD7;dxPSTeeChartD7;EPCOTAUtils70;PNG_D7;PngComponentsD7;tb2k_d7;tbx_d7;UserControlD7_RT;fqb70;frx7;frxADO7;frxBDE7;frxcs7;frxDB7;frxDBX7;frxe7;frxIBX7;fs7;fsADO7;fsBDE7;fsDB7;fsIBX7;cxExportVCLD7;cxIntl5D7;cxIntlPrintSys3D7;dxPScxCommonD7;dxPScxExtCommonD7;dxPScxGridLnkD7;dxPScxPCProdD7;dxPScxSchedulerLnkD7;dxPScxTLLnkD7;dxPSDBTeeChartD7;dxPsPrVwAdvD7 + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + diff --git a/Modulos/Montajes/Cliente/Montajes_Intf.cfg b/Modulos/Montajes/Cliente/Montajes_Intf.cfg new file mode 100644 index 0000000..f3639e9 --- /dev/null +++ b/Modulos/Montajes/Cliente/Montajes_Intf.cfg @@ -0,0 +1,45 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O- +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-GD +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N".\" +-LE"..\..\..\Output\Cliente" +-LN".\" +-U"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\Reglas;..\..\..\Modulos\Presupuestos\Cliente;..\..\..\Modulos\Contactos\Cliente;.\;..\..\..\Modulos\Almacenes\Cliente;..\..\Documentos asociados" +-O"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\Reglas;..\..\..\Modulos\Presupuestos\Cliente;..\..\..\Modulos\Contactos\Cliente;.\;..\..\..\Modulos\Almacenes\Cliente;..\..\Documentos asociados" +-I"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\Reglas;..\..\..\Modulos\Presupuestos\Cliente;..\..\..\Modulos\Contactos\Cliente;.\;..\..\..\Modulos\Almacenes\Cliente;..\..\Documentos asociados" +-R"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\Reglas;..\..\..\Modulos\Presupuestos\Cliente;..\..\..\Modulos\Contactos\Cliente;.\;..\..\..\Modulos\Almacenes\Cliente;..\..\Documentos asociados" +-Z +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/Modulos/Montajes/Cliente/Montajes_Intf.dcp b/Modulos/Montajes/Cliente/Montajes_Intf.dcp new file mode 100644 index 0000000..b02bc7f Binary files /dev/null and b/Modulos/Montajes/Cliente/Montajes_Intf.dcp differ diff --git a/Modulos/Montajes/Cliente/Montajes_Intf.dof b/Modulos/Montajes/Cliente/Montajes_Intf.dof new file mode 100644 index 0000000..90eed51 --- /dev/null +++ b/Modulos/Montajes/Cliente/Montajes_Intf.dof @@ -0,0 +1,175 @@ +[FileVersion] +Version=7.0 +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=0 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=1 +SymbolLibrary=1 +SymbolPlatform=1 +UnitLibrary=1 +UnitPlatform=1 +UnitDeprecated=1 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 +[Linker] +MapFile=3 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription= +[Directories] +OutputDir= +UnitOutputDir=.\ +PackageDLLOutputDir=..\..\..\Output\Cliente +PackageDCPOutputDir=.\ +SearchPath=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\Reglas;..\..\..\Modulos\Presupuestos\Cliente;..\..\..\Modulos\Contactos\Cliente;.\;..\..\..\Modulos\Almacenes\Cliente;..\..\Documentos asociados +Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;IntrawebDB_50_70;Intraweb_50_70;Rave50CLX;Rave50VCL;dclOfficeXP;PluginSDK_D7R;DJcl;JvStdCtrlsD7R;JvAppFrmD7R;JvCoreD7R;JvBandsD7R;JvBDED7R;JvDBD7R;JvDlgsD7R;JvCmpD7R;JvCryptD7R;JvCtrlsD7R;JvCustomD7R;JvDockingD7R;JvDotNetCtrlsD7R;JvEDID7R;qrpt;JvGlobusD7R;JvHMID7R;JvInspectorD7R;JvInterpreterD7R;JvJansD7R;JvManagedThreadsD7R;JvMMD7R;JvNetD7R;JvPageCompsD7R;JvPluginD7R;JvPrintPreviewD7R;JvSystemD7R;JvTimeFrameworkD7R;JvUIBD7R;JvValidatorsD7R;JvWizardD7R;JvXPCtrlsD7R;GUISDK_D7;RemObjects_WebBroker_D7;RemObjects_Indy_D7;RemObjects_RODX_D7;RemObjects_BPDX_D7;PascalScript_RO_D7;DataAbstract_Core_D7;DataAbstract_IDE_D7;DataAbstract_DBXDriver_D7;DataAbstract_Scripting_D7;dxBarD7;dxComnD7;cxLibraryVCLD7;cxEditorsVCLD7;dxThemeD7;cxDataD7;cxExtEditorsVCLD7;cxGridVCLD7;cxPageControlVCLD7;cxSchedulerVCLD7;cxTreeListVCLD7;dxBarDBNavD7;dxBarExtDBItemsD7;dxBarExtItemsD7;dxDockingD7;dxNavBarD7;dxPSCoreD7;dxsbD7;dxPSLnksD7;dxPSTeeChartD7;EPCOTAUtils70;PNG_D7;PngComponentsD7;tb2k_d7;tbx_d7;UserControlD7_RT;fqb70;frx7;frxADO7;frxBDE7;frxcs7;frxDB7;frxDBX7;frxe7;frxIBX7;fs7;fsADO7;fsBDE7;fsDB7;fsIBX7;cxExportVCLD7;cxIntl5D7;cxIntlPrintSys3D7;dxPScxCommonD7;dxPScxExtCommonD7;dxPScxGridLnkD7;dxPScxPCProdD7;dxPScxSchedulerLnkD7;dxPScxTLLnkD7;dxPSDBTeeChartD7;dxPsPrVwAdvD7 +Conditionals= +DebugSourceDirs= +UsePackages=0 +[Parameters] +RunParams= +HostApplication= +Launcher= +UseLauncher=0 +DebugCWD= +[Language] +ActiveLang= +ProjectLang= +RootDir= +[Version Info] +IncludeVerInfo=1 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=3082 +CodePage=1252 +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= +[HistoryLists\hlDebugSourcePath] +Count=1 +Item0=D:\Proyectos\Componentes\GUISDK\Sources\;D:\Proyectos\Componentes\PluginSDK\Source\;D:\Proyectos\FactuGES (Estudio)\Codigo\Modulos\Contactos\Cliente;D:\Proyectos\FactuGES (Estudio)\Codigo\Modulos\Contactos\Reglas +[HistoryLists\hlUnitAliases] +Count=1 +Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +[HistoryLists\hlSearchPath] +Count=16 +Item0=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente;..\..\Asientos\Cliente;..\..\Cuentas\Cliente +Item1=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente;..\..\Asientos\Cliente +Item2=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente +Item3=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente +Item4=..\Modulos\Presupuestos\Reglas;..\Modulos\Contactos\Reglas;..\Base;..\Configuracion;..\Usuarios;..\Modulos\Albaranes de cliente\Reglas +Item5=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\Base;..\Configuracion;..\Usuarios;..\Modulos\Intervalos;..\Modulos\Documentos asociados;..\Modulos\Contactos\Cliente;..\Modulos\Contactos\Reglas;..\Modulos\Presupuestos\Cliente;..\Modulos\Presupuestos\Reglas;..\Modulos\Albaranes de cliente\Cliente;..\Modulos\Albaranes de cliente\Reglas;..\Modulos\Facturas de cliente\Cliente;..\Modulos\Facturas de cliente\Reglas;..\Modulos\Pedidos a proveedor\Cliente;..\Modulos\Pedidos a proveedor\Reglas;..\Modulos\Facturas de proveedor\Cliente;..\Modulos\Facturas de proveedor\Reglas;..\Modulos\Montajes\Reglas;..\Modulos\Montajes\Cliente;..\Modulos\Articulos\Cliente;..\Modulos\Articulos\Reglas;..\Modulos\Almacenes\Reglas;..\Modulos\Almacenes\Cliente;..\Modulos\Pagos\Reglas;..\Modulos\Pagos\Cliente;..\Modulos\Cuentas\Reglas;..\Modulos\Cuentas\Cliente;..\Modulos\Asientos\Reglas;..\Modulos\Asientos\Cliente;..\Modulos\Calendarios\Cliente;..\Modulos\Calendarios\Reglas +Item6=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente;..\..\Documentos asociados;..\..\Contactos\Cliente;..\..\Almacenes\Cliente +Item7=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados +Item8=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente;..\..\Documentos asociados;..\..\Contactos\Cliente +Item9=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente;..\..\Documentos asociados +Item10=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente +Item11=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados;..\..\Montajes\Cliente;..\..\Almacenes\Cliente +Item12=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados;..\..\Montajes\Cliente +Item13=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\Servidor +Item14=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\base;..\Modulos\Calendarios\Cliente;..\Modulos\Calendarios\Reglas +Item15=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\Base;..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios +[HistoryLists\hlUnitOutputDirectory] +Count=1 +Item0=.\ +[HistoryLists\hlOutputDirectorry] +Count=2 +Item0=..\Output\Servidor +Item1=..\Output\Cliente +[HistoryLists\hlBPLOutput] +Count=3 +Item0=..\..\..\Output\Cliente +Item1=..\Output\Cliente +Item2=..\..\Output\Cliente +[HistoryLists\hlDCPOutput] +Count=1 +Item0=.\ diff --git a/Modulos/Montajes/Cliente/Montajes_Intf.dpk b/Modulos/Montajes/Cliente/Montajes_Intf.dpk new file mode 100644 index 0000000..439ac04 --- /dev/null +++ b/Modulos/Montajes/Cliente/Montajes_Intf.dpk @@ -0,0 +1,85 @@ +package Montajes_Intf; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION OFF} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$IMPLICITBUILD OFF} + +requires + vcl, + rtl, + PluginSDK_D7R, + GUISDK_D7, + PNG_D7, + PngComponentsD7, + dbrtl, + vcldb, + dsnap, + adortl, + JvCoreD7R, + vclx, + vcljpg, + JvAppFrmD7R, + JvStdCtrlsD7R, + JvSystemD7R, + vclactnband, + designide, + cxLibraryVCLD7, + dxThemeD7, + cxEditorsVCLD7, + cxDataD7, + JvPageCompsD7R, + tb2k_d7, + tbx_d7, + BaseD7, + Usuarios, + dxPSCoreD7, + dxComnD7, + cxGridVCLD7, + cxPageControlVCLD7, + cxExtEditorsVCLD7, + cxExportVCLD7, + cxIntlPrintSys3D7, + dxPScxCommonD7, + dxPSLnksD7, + vclshlctrls, + dxPScxGridLnkD7, + dclcxLibraryVCLD7, + frx7, + fs7, + tee, + fqb70, + bdertl, + Contactos, + Almacenes, + Presupuestos_Intf; + +contains + uDataModuleMontajes in 'uDataModuleMontajes.pas' {dmMontajes: TDAClientDataModule}, + uBizMontajes in '..\Reglas\uBizMontajes.pas', + uViewMontaje in 'uViewMontaje.pas' {frViewMontaje: TFrame}, + uViewMontajes in 'uViewMontajes.pas' {frViewMontajes: TFrame}, + uViewMontajeRelacionado in 'uViewMontajeRelacionado.pas' {frViewMontajeRelacionado: TCustomView}, + uViewFichaBeneficiosMontaje in 'uViewFichaBeneficiosMontaje.pas' {frViewFichaBeneficiosMontaje: TCustomView}, + uViewPresupuestoMontaje in 'uViewPresupuestoMontaje.pas' {frViewPresupuestoMontaje: TCustomView}; + +end. diff --git a/Modulos/Montajes/Cliente/Montajes_Intf.drc b/Modulos/Montajes/Cliente/Montajes_Intf.drc new file mode 100644 index 0000000..a5d5271 --- /dev/null +++ b/Modulos/Montajes/Cliente/Montajes_Intf.drc @@ -0,0 +1,14 @@ +/* VER150 + Generated by the Borland Delphi Pascal Compiler + because -GD or --drc was supplied to the compiler. + + This file contains compiler-generated resources that + were bound to the executable. + If this file is empty, then no compiler-generated + resources were bound to the produced executable. +*/ + +STRINGTABLE +BEGIN +END + diff --git a/Modulos/Montajes/Cliente/Montajes_Intf.res b/Modulos/Montajes/Cliente/Montajes_Intf.res new file mode 100644 index 0000000..ec5f233 Binary files /dev/null and b/Modulos/Montajes/Cliente/Montajes_Intf.res differ diff --git a/Modulos/Montajes/Cliente/PedidosMontaje.bdsproj b/Modulos/Montajes/Cliente/PedidosMontaje.bdsproj new file mode 100644 index 0000000..648cf0e --- /dev/null +++ b/Modulos/Montajes/Cliente/PedidosMontaje.bdsproj @@ -0,0 +1,492 @@ + + + + + + + + + + + + PedidosMontaje.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 3 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + .\ + ..\..\..\Output\Cliente + .\ + $(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\Reglas;..\..\..\Modulos\Presupuestos\Cliente;..\..\..\Modulos\Contactos\Cliente;..\..\..\Modulos\Pedidos a proveedor\Cliente;..\..\..\Modulos\Almacenes\Cliente;..\..\Documentos asociados + vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;CEToolsPkgd7;FR7;FRIBX7;fqb70;frx7;frxADO7;frxBDE7;frxDB7;frxDBX7;frxe7;frxIBX7;fs7;fsADO7;fsBDE7;fsDB7;fsIBX7;DataAbstract_Core_D7;DataAbstract_IDE_D7;dxComnD7;dxsbD7;dxBarD7;dxBarDBNavD7;dxBarExtDBItemsD7;dxBarExtItemsD7;dxDockingD7;cxEditorsVCLD7;cxLibraryVCLD7;dxThemeD7;cxDataD7;cxExtEditorsVCLD7;cxGridVCLD7;cxPageControlVCLD7;cxSchedulerVCLD7;cxTreeListVCLD7;dxPSCoreD7;PluginSDK_D7R + + + False + + + + + + False + + + True + False + + + + $00000000 + C:\Archivos de programa\Borland\Delphi7\Bin\ + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + diff --git a/Modulos/Montajes/Cliente/PedidosMontaje.cfg b/Modulos/Montajes/Cliente/PedidosMontaje.cfg new file mode 100644 index 0000000..5fba46c --- /dev/null +++ b/Modulos/Montajes/Cliente/PedidosMontaje.cfg @@ -0,0 +1,45 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-GD +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N".\" +-LE"..\..\..\Output\Cliente" +-LN".\" +-U"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\Reglas;..\..\..\Modulos\Presupuestos\Cliente;..\..\..\Modulos\Contactos\Cliente;..\..\..\Modulos\Pedidos a proveedor\Cliente;..\..\..\Modulos\Almacenes\Cliente;..\..\Documentos asociados" +-O"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\Reglas;..\..\..\Modulos\Presupuestos\Cliente;..\..\..\Modulos\Contactos\Cliente;..\..\..\Modulos\Pedidos a proveedor\Cliente;..\..\..\Modulos\Almacenes\Cliente;..\..\Documentos asociados" +-I"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\Reglas;..\..\..\Modulos\Presupuestos\Cliente;..\..\..\Modulos\Contactos\Cliente;..\..\..\Modulos\Pedidos a proveedor\Cliente;..\..\..\Modulos\Almacenes\Cliente;..\..\Documentos asociados" +-R"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\Reglas;..\..\..\Modulos\Presupuestos\Cliente;..\..\..\Modulos\Contactos\Cliente;..\..\..\Modulos\Pedidos a proveedor\Cliente;..\..\..\Modulos\Almacenes\Cliente;..\..\Documentos asociados" +-Z +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/Modulos/Montajes/Cliente/PedidosMontaje.dcp b/Modulos/Montajes/Cliente/PedidosMontaje.dcp new file mode 100644 index 0000000..3eebe67 Binary files /dev/null and b/Modulos/Montajes/Cliente/PedidosMontaje.dcp differ diff --git a/Modulos/Montajes/Cliente/PedidosMontaje.dof b/Modulos/Montajes/Cliente/PedidosMontaje.dof new file mode 100644 index 0000000..e117ae2 --- /dev/null +++ b/Modulos/Montajes/Cliente/PedidosMontaje.dof @@ -0,0 +1,175 @@ +[FileVersion] +Version=7.0 +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=1 +SymbolLibrary=1 +SymbolPlatform=1 +UnitLibrary=1 +UnitPlatform=1 +UnitDeprecated=1 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 +[Linker] +MapFile=3 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription= +[Directories] +OutputDir= +UnitOutputDir=.\ +PackageDLLOutputDir=..\..\..\Output\Cliente +PackageDCPOutputDir=.\ +SearchPath=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\Reglas;..\..\..\Modulos\Presupuestos\Cliente;..\..\..\Modulos\Contactos\Cliente;..\..\..\Modulos\Pedidos a proveedor\Cliente;..\..\..\Modulos\Almacenes\Cliente;..\..\Documentos asociados +Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;CEToolsPkgd7;FR7;FRIBX7;fqb70;frx7;frxADO7;frxBDE7;frxDB7;frxDBX7;frxe7;frxIBX7;fs7;fsADO7;fsBDE7;fsDB7;fsIBX7;DataAbstract_Core_D7;DataAbstract_IDE_D7;dxComnD7;dxsbD7;dxBarD7;dxBarDBNavD7;dxBarExtDBItemsD7;dxBarExtItemsD7;dxDockingD7;cxEditorsVCLD7;cxLibraryVCLD7;dxThemeD7;cxDataD7;cxExtEditorsVCLD7;cxGridVCLD7;cxPageControlVCLD7;cxSchedulerVCLD7;cxTreeListVCLD7;dxPSCoreD7;PluginSDK_D7R +Conditionals= +DebugSourceDirs= +UsePackages=0 +[Parameters] +RunParams= +HostApplication= +Launcher= +UseLauncher=0 +DebugCWD= +[Language] +ActiveLang= +ProjectLang= +RootDir=C:\Archivos de programa\Borland\Delphi7\Bin\ +[Version Info] +IncludeVerInfo=1 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=3082 +CodePage=1252 +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= +[HistoryLists\hlDebugSourcePath] +Count=1 +Item0=D:\Proyectos\Componentes\GUISDK\Sources\;D:\Proyectos\Componentes\PluginSDK\Source\;D:\Proyectos\FactuGES (Estudio)\Codigo\Modulos\Contactos\Cliente;D:\Proyectos\FactuGES (Estudio)\Codigo\Modulos\Contactos\Reglas +[HistoryLists\hlUnitAliases] +Count=1 +Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +[HistoryLists\hlSearchPath] +Count=16 +Item0=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente;..\..\Asientos\Cliente;..\..\Cuentas\Cliente +Item1=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente;..\..\Asientos\Cliente +Item2=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente +Item3=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente +Item4=..\Modulos\Presupuestos\Reglas;..\Modulos\Contactos\Reglas;..\Base;..\Configuracion;..\Usuarios;..\Modulos\Albaranes de cliente\Reglas +Item5=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\Base;..\Configuracion;..\Usuarios;..\Modulos\Intervalos;..\Modulos\Documentos asociados;..\Modulos\Contactos\Cliente;..\Modulos\Contactos\Reglas;..\Modulos\Presupuestos\Cliente;..\Modulos\Presupuestos\Reglas;..\Modulos\Albaranes de cliente\Cliente;..\Modulos\Albaranes de cliente\Reglas;..\Modulos\Facturas de cliente\Cliente;..\Modulos\Facturas de cliente\Reglas;..\Modulos\Pedidos a proveedor\Cliente;..\Modulos\Pedidos a proveedor\Reglas;..\Modulos\Facturas de proveedor\Cliente;..\Modulos\Facturas de proveedor\Reglas;..\Modulos\Montajes\Reglas;..\Modulos\Montajes\Cliente;..\Modulos\Articulos\Cliente;..\Modulos\Articulos\Reglas;..\Modulos\Almacenes\Reglas;..\Modulos\Almacenes\Cliente;..\Modulos\Pagos\Reglas;..\Modulos\Pagos\Cliente;..\Modulos\Cuentas\Reglas;..\Modulos\Cuentas\Cliente;..\Modulos\Asientos\Reglas;..\Modulos\Asientos\Cliente;..\Modulos\Calendarios\Cliente;..\Modulos\Calendarios\Reglas +Item6=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente;..\..\Documentos asociados;..\..\Contactos\Cliente;..\..\Almacenes\Cliente +Item7=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados +Item8=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente;..\..\Documentos asociados;..\..\Contactos\Cliente +Item9=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente;..\..\Documentos asociados +Item10=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente +Item11=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados;..\..\Montajes\Cliente;..\..\Almacenes\Cliente +Item12=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados;..\..\Montajes\Cliente +Item13=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\Servidor +Item14=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\base;..\Modulos\Calendarios\Cliente;..\Modulos\Calendarios\Reglas +Item15=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\Base;..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios +[HistoryLists\hlUnitOutputDirectory] +Count=1 +Item0=.\ +[HistoryLists\hlOutputDirectorry] +Count=2 +Item0=..\Output\Servidor +Item1=..\Output\Cliente +[HistoryLists\hlBPLOutput] +Count=3 +Item0=..\..\..\Output\Cliente +Item1=..\Output\Cliente +Item2=..\..\Output\Cliente +[HistoryLists\hlDCPOutput] +Count=1 +Item0=.\ diff --git a/Modulos/Montajes/Cliente/PedidosMontaje.dpk b/Modulos/Montajes/Cliente/PedidosMontaje.dpk new file mode 100644 index 0000000..cff0a46 --- /dev/null +++ b/Modulos/Montajes/Cliente/PedidosMontaje.dpk @@ -0,0 +1,71 @@ +package PedidosMontaje; + +{$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 + rtl, + PedidosProveedor, + BaseD7, + Contactos, + Usuarios, + Presupuestos, + Almacenes, + vcl, + dbrtl, + JvCoreD7R, + vclx, + vcljpg, + JvAppFrmD7R, + JvStdCtrlsD7R, + JvSystemD7R, + cxLibraryVCLD7, + dxThemeD7, + dxPSCoreD7, + dxComnD7, + PngComponentsD7, + PNG_D7, + vclactnband, + cxDataD7, + cxEditorsVCLD7, + vcldb, + cxGridVCLD7, + cxPageControlVCLD7, + cxExtEditorsVCLD7, + cxExportVCLD7, + cxIntlPrintSys3D7, + designide, + dxPScxCommonD7, + dxPSLnksD7, + vclshlctrls, + dxPScxGridLnkD7, + dclcxLibraryVCLD7, + dsnap, + adortl; + +contains + uBizPedidosMontaje in '..\Reglas\uBizPedidosMontaje.pas', + uViewPedidosMontaje in 'uViewPedidosMontaje.pas' {frViewPedidosMontaje: TCustomView}; + +end. diff --git a/Modulos/Montajes/Cliente/PedidosMontaje.drc b/Modulos/Montajes/Cliente/PedidosMontaje.drc new file mode 100644 index 0000000..a5d5271 --- /dev/null +++ b/Modulos/Montajes/Cliente/PedidosMontaje.drc @@ -0,0 +1,14 @@ +/* VER150 + Generated by the Borland Delphi Pascal Compiler + because -GD or --drc was supplied to the compiler. + + This file contains compiler-generated resources that + were bound to the executable. + If this file is empty, then no compiler-generated + resources were bound to the produced executable. +*/ + +STRINGTABLE +BEGIN +END + diff --git a/Modulos/Montajes/Cliente/PedidosMontaje.res b/Modulos/Montajes/Cliente/PedidosMontaje.res new file mode 100644 index 0000000..ec5f233 Binary files /dev/null and b/Modulos/Montajes/Cliente/PedidosMontaje.res differ diff --git a/Modulos/Montajes/Cliente/uAsistenteEtiquetasMontajes.ddp b/Modulos/Montajes/Cliente/uAsistenteEtiquetasMontajes.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Montajes/Cliente/uAsistenteEtiquetasMontajes.ddp differ diff --git a/Modulos/Montajes/Cliente/uAsistenteEtiquetasMontajes.dfm b/Modulos/Montajes/Cliente/uAsistenteEtiquetasMontajes.dfm new file mode 100644 index 0000000..cd43bed --- /dev/null +++ b/Modulos/Montajes/Cliente/uAsistenteEtiquetasMontajes.dfm @@ -0,0 +1,6759 @@ +object fAsistenteEtiquetasMontajes: TfAsistenteEtiquetasMontajes + Left = 159 + Top = 496 + ActiveControl = bImprimir + BorderStyle = bsDialog + Caption = 'Asistente para la impresi'#243'n de etiquetas' + ClientHeight = 376 + ClientWidth = 520 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + Position = poScreenCenter + OnCreate = FormCreate + PixelsPerInch = 96 + TextHeight = 13 + object JvWizard1: TJvWizard + Left = 0 + Top = 0 + Width = 520 + Height = 376 + ActivePage = JvWizardWelcomePage2 + ButtonBarHeight = 42 + ButtonStart.Caption = 'To &Start Page' + ButtonStart.NumGlyphs = 1 + ButtonStart.Width = 85 + ButtonLast.Caption = 'To &Last Page' + ButtonLast.NumGlyphs = 1 + ButtonLast.Width = 85 + ButtonBack.Caption = '< &Atr'#225's' + ButtonBack.NumGlyphs = 1 + ButtonBack.Width = 75 + ButtonNext.Caption = '&Siguiente >' + ButtonNext.NumGlyphs = 1 + ButtonNext.Width = 75 + ButtonFinish.Caption = '&Finalizar' + ButtonFinish.NumGlyphs = 1 + ButtonFinish.Width = 75 + ButtonCancel.Caption = 'Cancelar' + ButtonCancel.NumGlyphs = 1 + ButtonCancel.ModalResult = 2 + ButtonCancel.Width = 75 + ButtonHelp.Caption = '&Ayuda' + ButtonHelp.NumGlyphs = 1 + ButtonHelp.Width = 75 + ShowRouteMap = False + OnFinishButtonClick = JvWizard1FinishButtonClick + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + DesignSize = ( + 520 + 376) + object JvWizardWelcomePage1: TJvWizardWelcomePage + Header.Height = 80 + Header.Title.Color = clNone + Header.Title.Text = 'Impresi'#243'n de etiquetas' + Header.Title.Anchors = [akLeft, akTop, akRight] + Header.Title.Font.Charset = DEFAULT_CHARSET + Header.Title.Font.Color = clWindowText + Header.Title.Font.Height = -19 + Header.Title.Font.Name = 'Tahoma' + Header.Title.Font.Style = [fsBold] + Header.Subtitle.Color = clNone + Header.Subtitle.Text = 'Bienvenido al asistente de impresi'#243'n de etiquetas para montajes.' + Header.Subtitle.Anchors = [akLeft, akTop, akRight, akBottom] + Header.Subtitle.Font.Charset = DEFAULT_CHARSET + Header.Subtitle.Font.Color = clWindowText + Header.Subtitle.Font.Height = -13 + Header.Subtitle.Font.Name = 'Tahoma' + Header.Subtitle.Font.Style = [] + Header.ShowDivider = False + WaterMark.Image.Picture.Data = { + 07544269746D617082960100424D82960100000000003204000028000000A400 + 000074020000010008000000000050920100120B0000120B0000FF000000FF00 + 000000000000FFFFFF005320060057230800F6E7E900AD9B9C003F3838006B68 + 6800615E5E0058565600E7DEDD00483D3A0041312B0057230B00552107005321 + 07005B2509005923090057230900552309005D270B005B250B0059250B005222 + 0A0055230B004D210A005F290D005D270D0053250D004F240E0087411D007C3C + 1C009147210087411F0085411F0083411F0089432100813F1F007E3F1F008643 + 2100753B1D0082422100502A17004427180038201400623D2B005B4032004E37 + 2B0057230700552307005925090061290B0056250A005B270B00652C0D005927 + 0C00622B0E00652D0F00632D0F00683011005A290F006C331300763816005528 + 1000723616005D2C12006E3516007E3E1A007A3B190082401B00733918006431 + 150087431D007A3D1A0085411D0085431D00954B210083411D00763A1A00924A + 21008A461F007038190087431F0080411D008F4921008E47210085431F008343 + 1F00924B23008A462100793D1D0080411F0086462100804320007C411F008947 + 2300723B1D0083482600532F1C005A3623006A48360073503D007A564300825F + 4C00926E5A00652D0A006A300B00793B160085421B00924A1F008E491F009A4F + 220083431D00964D2200773D1B009E52250086451F00A255260083451F00723C + 1B00924D23008F4C2300763E1D00A5582900965025008A49220079401E00AB5D + 2C00A85B2B008D4B2400723D1D00924F2600824622006B3A1C0068381B006436 + 1A006E3B1D00965228008E4D2600A25A2C009A552A008A4D26008A4B26008649 + 2500925129007D452400AF6233008C4E2900884C280090512B0095542D00A35E + 320098583000B46839009D5B3200C2734100A05F3600A5623900AB673C007D4F + 3300CEC4BE00672F0B006D340C00AE602D00B3632F009E582A00B8693300B366 + 3200A25E2E00BB6D3600A86030009D592D00AC643300C0713A00B76D3A00BB6F + 3C00C6774200CB7A4600B16D40009276640074390E007B411500864A1C008A4F + 220097592A00B56C3600A5633100B0683500CA7A3F00C4763D00BE733C00C77A + 4000CD7E4300D1814600A76B3E007F400E0083451100884914008B4D18008146 + 18008D501C0090552300A2673800B0764700B57B4D00BC825300D3B8A100FFE0 + C600BAA390009E8B7C00826D5B00FFDBBB00EAD0B900FFE7D200B6A99D00FFED + DD00C1B6AC00FFF7F000FFF3E7004E4D4C00FBFAF900FEFBF5007E7E7D00FCFC + FB0090908F00E8E9E800D0D1D000BFC0BF00BBBCBB00B7B8B700B1B2B100DCDF + DD00CBCECC00D1D6D300D6DAD800E2E4E30072797600C6C9C800C2C5C400F0F1 + F100EDEEEE00ACADAD0097989800F9F9F900F7F7F700F5F5F500F3F3F300B4B4 + B400AFAFAF00AAAAAA00A6A6A600A2A2A2009D9D9D0087878700434343000202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020203110311110303030303030303030303030303030303030303 + 0303030303030303030303030303030303111103111111111111111111321132 + 3232321132111111111111111111111111111111111111111111111111111111 + 1111111111111111321616161616321111111103030303030E0E0E0E0E0E0E0E + 300E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E6969A2C302030303110303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303031111111111111111 + 1111111111111111111111111111111111111111111111111111111111111111 + 111111031111111111111111321616161616321111111103030303030E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E6969B4C3020303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303111111 + 1111111111111111111111111111111111111111111111111111111111111111 + 1111111103031111111111111111111111321616161632111111110303030303 + 0E0E0E0E0E0E0E0E300E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E6969B4C30203030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0311111111111111111111111111111111111111111111111110111111111111 + 1111111111111111030311111103111111111111113216161616321111110303 + 030303030E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E6969B4C302030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303111111111111111111111111111111111111111111111111111111 + 1111111111111111111111111111110303111111111111111132161616163211 + 111103030303030E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E6969A2C3020303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303031111111111111111111111111111111111111111111111 + 1111111111111111111111111111111111110311030311111111111111323216 + 1616321111110303030303030E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E6969B4C30203 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303031111111111111111111111111111111111111111 + 1111111111111111111111111111111111110311110303031111111111111111 + 111132161632111111110303030303030E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E6969 + B4C3020303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303031111111111111111111111111111 + 1111111111111111111111111111111111111111111103110303030303031111 + 11111111113232323232111111110303030303030E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E6969B4C30203030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303031111111111111111111111 + 1111111111111111111111111111111111111111111111111111110303030303 + 0311031111111111111132323232111111110303030303030E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E6969A2C302030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030311111111111111 + 1111111111111111111111111111111111111111111111111111111111111103 + 0303030303030311111111111111113232111111111103030303030E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E6969B4C3020303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030311 + 1111111111111111111111111111111111111111111111111111111111111111 + 111111030303030303030311111111111111113232111111111103030303030E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E6969B4C30203030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030311111111111111111111111111111111111111111111111111111111 + 1111111111031103030303030303111111111111111111323211111111110303 + 0303030E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E6969B4C302030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303031111111111111111111111111111111111111111111111111111 + 1111111111111111110303030303030303030303111111111111111111111111 + 111103030303030E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E69A1B4C3020303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303111111111111111111111111111111111111111111 + 1111111111111111111111111103030303030303030303031111111111111111 + 11111111110303030303030E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E69A1B4C30203 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303031103111111111111111111111111111111 + 1111111111111111111111111111031111030303030303030303030311111111 + 111111111111111111030303030303030E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E69A1 + B4C3020303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030311111111111111111111111111 + 1111111111111111111111111111111111111103030303030303030303030303 + 111111111111111111111111110303030303030E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E6969B4C30203030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303111111111111111111 + 1111111111111111111111111111111111111111111111031103030303030303 + 03030303031111111111111111111111110303030303030E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E69A1B4C302030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303111111 + 1111111111111111111111111111111111111111111111111103031103030303 + 0303030303030303031111111111111111111111110303030303030E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E69A1B4C3020303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0311111111111111111111111111111111111111111111111111111111110303 + 030303030303030303030303031111111111111111111111110303030303030E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E6969B4C30203030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303111111111111111111111111111111111111111111111111111111 + 1111030303030303030303030303030303031111111111111111111111030303 + 0303030E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E6969B4C302030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303031111111111111111111111111111111111111111111111 + 1111111103030303030303030303030303030303030311111111111111111111 + 110303030303030E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E69A1B4C3020303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303111111111111111111111111111111111111 + 1111111111111111030303030303030303030303030303030303111111111111 + 111111110303030303030E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E69A1B4C30203 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303031111111111111111111111111111 + 1111111111111111110311030303030303030303030303030303030303031111 + 1111111111111111030303030303030E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E69A1 + B4C3020303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303031111111111111111111111 + 1111111111111111111111111111030303030303030303030303030303030303 + 0303111111111111111111110303030303030E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E6969B4C30203030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030311111111111111 + 1111111111111111111111111111111111110303030303030303030303030303 + 03030303030303111111111111111111030303030303030E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E69A1B4C302030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030311 + 1111111111111111111111111111111111111111111103030303030303030303 + 03030303030303030303031111111111111111110303030303030E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E69A1B4C3020303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303111111111111111111111111111111111111111111110303030303030303 + 0303030303030303030303030303031111111111111111110303030303030E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E69A1B4C30203030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303031111111111111111111111111111111111110311030303 + 0303030303030303030303030303030303030311111111111111110303030303 + 0303030E0E0E0E0E0E0E0E0E300E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E69A1B4C302030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030311110303111111111111111111111111111111111103 + 0303030303030303030303030303030303030303030303031111111111110303 + 030303030303030E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E69A1B4C3020303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303031111111111111111111111111111 + 0311110303030303030303030303030303030303030303030303030303111111 + 111103030303030303030E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E69A1B4C30203 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303030311111111111111111111 + 1111111111111103030303030303030303030303030303030303030303030303 + 03031111111103030303030303030E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E69A1 + B4C3020303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303031103111111111111 + 1111111111111111111111030303030303030303030303030303030303030303 + 030303030303111111110303030303030303030E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E69A1B4C30203030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030311031111 + 0311111111111111031103110303030303030303030303030303030303030303 + 0303030303030303030303110303030303030303030E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E69A1B4C302030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030303110303030303 + 0303111111111111111111111111111103030303030303030303030303030303 + 03030303030303030303030303030303030303030303030303030E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E69A1B4C3020303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303110311110311110311111111111103110303030303030303030303 + 03030303030303030303030303030303030303030303030303030303030E0E0E + 0E0E0E0E0E0E0E0E0E0E300E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E696AB4C30203030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303031111111111111111111111030303030303030303 + 0303030303030303030303030303030303030303030311110303030303030303 + 0303030E0E0E0E030E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0EA16AB4C302030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030311111111110311111103110303030303 + 0303030303030303030303030303030303030303030303030311111111110303 + 030303030303030E0E0E030E0E03030E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0EA16AB4C3020303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303030311111103111103111103 + 0303030303030303030303030303030303030303030303030303030303031111 + 11110303030303030303030E030E0E030E0E03030E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0EA16AB4C30203 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303110303031111111111 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303031111111103030303030303030E0E030E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0EA16A + B4C3020303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 1111031103030303030303030303030303030303030303030303030303030303 + 03030303030311111111030303030303030303030E0E0E0E0E030E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0EA16AB4C30203030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030311030303030303030303030303030303030303030303030303030303 + 03030303030303030303111103030303030303030303030E0E03030E030E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0EA16AB4C302030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303110311030303030303030303030303 + 030E03300E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0EA16AB4C3020303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030311111111111111110303030303030303 + 0303030303030303030E030E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0EA16AB4C30203030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030311030311110303030303030303 + 0303030303030303030303030303030303030303031111111111111103030303 + 03030303030303030303030303030E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E030EA16AB4C302030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303110303031103110303030303 + 0303030303030303030303030303030303030303030303030311111111111103 + 0303030303030303030303030303030303030E0E030E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E030E0E6A6AB4C3020303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303031111031103030303111111111111 + 0303030303030303030303030303030303030303030303030303030303031111 + 11111111030303030303030303030303030303030303030E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E6A6AB4C30203 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303030311111103111111110311 + 1111031103030303030303030303030303030303030303030303030303030311 + 111111111111111103030303030303030303030303030303030303030303030E + 03030E0E0E0E0E0E0E0E0E0E03030E0E030E0E0E0E030E0E03030303030E6A6A + B4C3020303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303031103030303030303030311110311 + 1103111111030303030303030303030303030303030303030303030303030303 + 0303031111111111111111110303030303030303030303030303030303030303 + 0303030E0303030E0E0E0E0E0E0E0E0E0E030E0E0303030E0E0E0E0E03030303 + 03036A6AB4C30203030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0311110311110311031103031103111111030303030303030303030303030303 + 0311030303111111111111111111111111110303030303030303030303030303 + 0303030303030303030303030303030E030E0E0E0E030E0E030E0E0E0303030E + 0303030303036A6AB4C302030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303110303030303111103110303031111111103030303030303030303030303 + 0303030303030303030311111111111111111111111103030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 030303030303030303036A6AB4C3020303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030311110303111111111103030303030303030303 + 0303030303030303030303030303111111111111111111111103030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 03030303030303030303030303036A6AB4C30203030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303031111111111111111110303110311111111 + 0303111111030303030303030303030303110311111111111111111111110303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303036AA2B4C302030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303031111111111111111111111111111 + 1111111111111111030311030303030303030303111111111111111111111111 + 1103030303030303030303030303030303030303030303030303030303030303 + 030303030303030303030303030303030303030303036A6AB4C3020303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030311111111111111111111111111 + 1111111111111111111111110303031103030303030303031111111111111111 + 1111111111030303030303030303030303030303030303030303030303030303 + 03030303030303030303030303030303030303030303030303036A6AB4C30203 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030311031111111111111111111111111111 + 1111111111111111111111111111111111111103031103030311031103111111 + 1111113211111111111111030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303036A6A + B4C3020303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030311111111111111111111111111 + 1111111111111111111111111111111111111111111103111103031103031111 + 1111111111111132111111111111110303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 03036AA2B4C40203030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030311111111111111 + 1111111111111111111111111111111111111111111111111111111111111111 + 1103111111111111111111113211111111111103030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303036AA2B4C402030303030303030303030303030303030303030303 + 0303030303030303110303030303030303030303030303030303030303111111 + 1111111111111111111110113232111110111132111111111010111111111111 + 1111111111111111111111113232113210321011111111111111030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 030303030303030303036AA2B4C3020303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030303031103111111 + 1111111111111110111111101010103210101111111010111010101032111111 + 1111111111111111111111111111111111323210101010321111111103030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303A2A2B4C40203030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303111111 + 1111111111111111111110101010101010321010101010101010101010101010 + 1010101010111111111111111111111111111111113210321010101111111111 + 1103030303030303030303030303030303030303030303030303030303030303 + 030303030303030303030303030303031230A2A2B4C402030303030303030303 + 0303030303030303030303030303030303030303030303030303030303031111 + 1111111111111111101111111010101010101010101010101010101010101010 + 10101010101010111010101011111111111110111110113211110D1111113232 + 1011111111110311111111111103110303030303030303030303030303030303 + 03030303030303030303030303030303030303030303A2A2B4C4020303030303 + 0303030303030303030303030303030303030303030303030303111111111111 + 1111111111111111111111111010111010101010101010101010101010101010 + 1032321111113232101010101010101010101010113210323211111112121313 + 0D340D1111111111111111111111111111111103030303030303030303030303 + 0303030303030303030303030303030303030303030311110311A2A2B4C40203 + 0303030303030303030303030303030303030303030303030303031111111111 + 1111111111111111111111111111111011111010101010101010101010101010 + 10101032101112120D0D11111111321010101010101010321010103211111213 + 0F0F0F171713130D121111111111111111111111111111111111110303030303 + 030303030303030303030303030303030303030303030303030311111111A2A2 + B4C4020303030303030303030303030303030303030303110311111111111111 + 1111111111111111111111111111111110101010101010101010101010101010 + 10101010101010160D121213130E13130D0D1111323210101010101010321111 + 12130F0F17021917191717171313121212111111111111111111111111111111 + 1103030303030303030303030303030303030303030303031103030311111111 + 1111A2B4B4C40203030303030303030303030303030303111111111111111111 + 1111111111111111111111111111111010101010101010101010101010101010 + 1010101010101010101616121317170F1719170F0F1312121111113232101032 + 111112130F0F1919192A2A2A2A191917170F0F13121112111111111111111111 + 1111111111110311111103030303110311110303030303030311030311111111 + 111111111111A2A2B4C402030303030303030303030303030303111111111111 + 1111111111111111111111111011101010101010101010101010101010101010 + 101010101010101010101016160D13171719192A2A1D19190F17171313120D11 + 1111111112130E0F0F19192A2A622A2A2A622A1D1919170F0F31121211113210 + 1011101011111111111111111111110303111111111111031111111111110311 + 11111111111111111132A2A2C3C4020303030303030303031103030303111111 + 1111111111111111111111111111113210101010101010101010101010101010 + 1010101010101010101010101010160D12131719192A62626262622A1D191919 + 170F1330121212130E0F0219191D2A2A622D6565412A62622A1D191917170F13 + 1212111132101010111011111111111111111111111111111111111111111111 + 1111111111111111111111113232A2A2C3C40203030303030303030311111111 + 1111111111111111111111111011101010101010101010101010101010101010 + 10101010101010101010101010101010161612131717191D6262622D66626262 + 62622A1D191919170F0F0F170219191D2A2A2A2D656667B3B367632A2A622A1D + 190219020F0F1312111132101010103232323211111111111111111111111111 + 111111111111111111111111111132323216A2A2C3C402030303030303030311 + 1111111111111111111111111132111010101010101010101010101010101010 + 101010101010101010101010101010101010101012121317191D6262622D67D2 + 6766666463626262622A191919191919191D2A2A2A636566666668B3B3B3B368 + 6441622A2A2A191902020F131312111132101010103211111111111111111111 + 11111111111111111111111111111111323232161616A2A2C3C4020303030303 + 0303031111111111111111321132321032101010101010101010101010101010 + 1010101010101010101010101010101014141414101532121317171962626263 + 666868686767666666652E636262622A2A19191D2A2A2A62646666656566B3B3 + B3B3B3B3B3B366632A2A2A2A1719190F0F0E120D121132321010101032321111 + 1111111111111111111111111111111111113232323216101010A2B4B4C40203 + 0303030303031111111111111111113210101010101010101010101010101010 + 1010101010101010101010101010101010101414141010101634131717192A62 + 626265D2686868686766666666666666652D63626262622A622A6465669F6566 + 666465D2B3B3B3B3B3B3B3B3682D62622A2A1D1919170F131212321111321010 + 101032323232323232323232321132113211323232321010101010101010A2A2 + C3C4020303030303031111111111111132101010101010101010101010101010 + 101010101010101010101010101410101010141414141414101515160D131719 + 1D62636264D268686868D26867666666666666666666666563622A622D656566 + 65666565642D2D2D646768B3B3B368B3B3B36864622A2A2A1D19190F1713130D + 1611113210101010101010101010103232323211321616101010101010101010 + 1010A2A2C3C40203030303031111111111113232321010101010101010101010 + 1010101010101010101010101410101010141414141414141414141515160D13 + 17171D6262632D676868686868686868676766666666666666666666662D2D65 + 9F66669F6665642D632D2D2D2D642D66D268B3B3B368B3B3B367632A2A623F19 + 1919171713120D0D0D1610101010101010101010323216103210101010101010 + 101010101010A2B4C3C402030303031103111111113210321010101010101010 + 1010101010101010101010101014141414141414141414141414141414141516 + 0D0D17171D6262622D6668686868686868686868676666666666666666666666 + 662D2D6665666565642D632D2D2D2D2D2D2D2D642D656768B3B368B3B368B368 + 2D2A62622A1D19171717131234160D1032101010101010101010101010101010 + 10101010101010101010A2B4B5C4020303031111111111321110101010101010 + 1010101010101010101010101414141414141414141414141414141414141414 + 151016341317172A6262636668686868686868686868D2686766666666666666 + 66666666662D2D666665642D63632D632D2D2D2D2D2D642D642D64646668B3B3 + B3B3B3B3B3686462622A2A1D1719171713120D0D161616101010101010101010 + 1010101010101010101010101515A2B4C3C40203030311111111113210101010 + 1010101010101010101010101414141414141414141414141414141414141414 + 1414141516161317172A62626265686868686868686868686868686867676666 + 6666666666666666662D2D65642D636363632D2D2D2D2D2D2D2D642D64646464 + 646465676868B368B368B3686663622A2A1D1919171713120D16111010101010 + 101010101010101010101010151015153515B4A2C3C402030311111111321010 + 1010101010101010101010101414141414141414141414141414141414141414 + 14141414141515163417173F626263646868B368686868686868686868686868 + 676666666666666666666666652D2D2D636363632D632D632D2D2D2D642D2D64 + 2D64646464646465656768B3B3B3B3B368B3662D622A621D1919171713121616 + 10101010101010101010101010101010351414141414B4B4C3C4020311111111 + 1110101010101010101010101014141414141414141414141414141414141414 + 1414141414141414151634180F1C6262622D6768686868686868686868686868 + 68D26868666666666666666666666666652D2D636363636363632D2D2D2D2D2D + 2D2D642D6464646464646564656565666768B368B368B36867642A2A621D1919 + 1717121616101010101010101010101010101014351414141414A2B4B5C50203 + 0311111011101010101010101010101014141414141414141414141414141414 + 1A1A14141A1A1414141435153418171C62626263676868B36868686868686868 + 6868686868686868676666666666666666666666652D6363636363632D632D63 + 2D2D2D2D2D642D642D646464646465646565656565666768B3B368B368686864 + 6262622A1D17171216101010101010101010151510101414141414141414B4B4 + C3C4020311111111101010101010101010101014141414141414141414141414 + 141A1A1A1A1A1A1A1A1414141415163417182A626263666868B3686868686868 + 686868686868686868686868676666666666666666666666652D2D6363636363 + 63632D2D2D2D2D2D2D2D642D642D6464656465656565656565666666666868B3 + B3B3B3B36865622A622A17123410101510101510151415141514141414141414 + 1414B4B4C3C50211111110101010101010101010101414141414141414141414 + 141A1A1A1A1A1A1A1A1A1A1A14141415163434173F6262626568686868686868 + 68686868686868686868686868686868676666666666666666666666652D2D62 + 62626363632D632D632D632D2D2D2D6464646464646464646565656565656666 + 666666676868686868B36866636263130D151415151515101514151414141414 + 141414141414B4B4B5C502111111101010101010101010141414141414141414 + 141A141A1A1A1A1A1A1A1A1A1A1A1A14143516340D173F62626364686868B368 + 68686868686868686868686868686868686867D2666666656666666666666666 + 66652D6262622A6263636363632F2F6363632E2D2D6464646464656565656565 + 66666666666666676667D268B368B368682A62130D1015101514101515141414 + 14141414141414141414B4B4B5C5021111101010101010101010141414141414 + 14141A141A1A1A1A1A1A1A1A1A1A1A1A1A1A1414351634133F6262632D676868 + 686868686868686868686868686868686868686867D267676565646565656566 + 66666666666666666463622A2A2A2B2A6262622F2F63632D2E2D646464646465 + 6565656566656666666666666766676767686868682A2A130D10101414101414 + 141414141414141414141414141AB4B4B5C50211111010101010101010141414 + 1414141414141A1A1A1A1A1A1A1A1A1A1A3838381A1A1437370D3F6262636366 + B368B368B36868686868686868686868686868686868D2D26767666664646464 + 6464656565666666666666666666662E622B2B2C2C2C2C2B2B0C2F62632D2D2E + 64646464656565656566656666666666666766666766676868622A1316151414 + 141414141414141414141414141414141414B4B4B5C502111010101010101010 + 141414141414141A1A141A1A1A1A1A1A1A1A1A38383838381A1A14373F626362 + 636568686868686868686868686868686868686868686868D267676666656464 + 2E2E2F2E2E646464656565656666666666656564642E2F2C2C0C0C060C2C2B0C + 2F2F632D2D646464656565656566666666666667666667676767676665622A34 + 161514141414141414141414141414141414141A1A1AB4B4B5C5023210101010 + 10101014141414141414141A1A1A1A1A1A1A1A1A383838383838381A1A1A353F + 6362626468686868686868686868686868686868686868686868686767676665 + 642E2E0B06060C2F2F2F2E2E64646465656565656464642E2E2F0C0C0606060C + 06060C2C2C2B2F2F2E2D2E646464656565666566666666666667666666652D62 + 622A3F1615141414141414141414141414141414141414141A1AB4B4C4C50210 + 10101010101010141414141414141A1A1A1A1A1A1A1A38383838383838383838 + 1A1A3C3F2D64686868686868686868686868686868686868686868686867D267 + 6665652E2F0BFEFEFEFEFE060C0C2F2F632E2E6464646464642E2E2F0C0C0606 + 060705F20B0C0606062C2C2C2B2F2E2D6464646565656666666666666666652D + 62622A622A3F16151414141414141414141414141414141414141A1A1A1AB4B4 + B5C502101010101010101014141414141A1A1A1A1A1A38383838383838383838 + 383838381A143C632D6868686868686868686868686868686868686868686867 + D2676665642E2F0BFEFEFEECFBFEFEFEFEFE060C0C2F2F632E2E2E2E2E2F0C0C + 06060B070505A00101ED080C06060C0C2C2C2C2F2F2D64646465656666666664 + 2D622A626262621C131615141414141414141414141414141414141414141A1A + 1A1AB46BC4C5021010101010101014141414141A1A1A1A1A1A38383838383838 + 3838383838383838381A3C622D68686868686868686868686868686868686868 + 6867D267666664642E0B0BFEFE08EEEBE3E5FBDE09FEFEFEFE060C0C2F2F2F0C + 0C0C0C060CDBD1050505E101010101F0FD0B0606060C2C2C2C2B2F2E64646565 + 656464622A622D656763621C3416351414141414141414141414141414141A14 + 1A1A1A1A1A1AB4B4C7C50210101010101414141414141A1A1A1A1A1A38383838 + 383838383838383836363838381A3C632D686868686868686868686868686868 + 686868686767676665642E2F0BFEFE09F9E1E1EBE3F7F9F9F9FCECDBFEFEFE06 + 0C0C2B0C0C06060BFD05050505D8DF01010101010101F7DB0606060C2C2C2C2C + 2B63646464632D2D65676767672D621C0D151414141414141414141414141414 + 1414141A1A1A1A1A1A1AB46BC4C502101010101010141414141A1A1A1A1A1A38 + 38383838383838383838363836363638381A3C632D6868686868686868686868 + 686868686768D267676665642E2F0BFEFEDBFCEBE1E1E1EBE3F7F9F9F9F9F9F1 + E007DBFEFE0B0606060BDE050505050505FDF2E901010101010101010A070606 + 06062C2C2C2C2C2B2D636366676767676763621C161514141414141414141414 + 141414141414141A1A1A1A1A1A1A6BB4C4C602101010101414141414141A1A1A + 1A38383838383838383836383939393639393938381A3C638568686868686868 + 68686868686868686867676665642E2E0BFEFEFEFDEAE1E1E1E1E1E1E3E5F9F9 + F9F9F9F1F1F1F9E00806060B0705050505050505DE070707DEE5EF0101010101 + 0101F4E00B06060C0C2C2C2C2C622F65666666676763621C1635141414141414 + 14141414141414141414141A1A1A1A1A1A1AB4B5C4C602101010141014141414 + 1A1A1A383838383838383839363939393939393939393939381A3C632D686868 + 686868686868686868686767676666642E2E0B0BFEFEECE8F0E1E1E1E1E1E1EB + E3E5F9F9F9F9F9F9F1F1F1F8F1080705050505050505DE080807080707ECEC05 + EA0101010101010101E4DB0606060C2C2C2B2E64646566666663621C34151414 + 14141414141414141414141414141A1A1A1A1A1A1A1A6BB4C4C6021010101414 + 1414141A1A1A1A3838383838383839393939393939393939393939393A1A4163 + 2D68686868686868686867686767676765652E2E2F0BFEFE08F7F0E1F0E1E1E1 + E1E1E1E1E3F7F9F9F9F9F9F1F1F1F1F8FA07070505050505FD08080808080707 + 0707ECECDEFDE3F501010101010101EA070B06060C0C2F2E2E64646565632A1C + 3415141414141414141414141414141414141A1A1A1A1A1A1A1AB46BC4C60210 + 101414141414141A1A1A33383838383836393939393939393939393939393939 + 3A1A3C872D686868686868686868686767676565642E2F0BFEFEDBFAF0F0F0F0 + F0E1E1E1E1E1E1EBE3F7F9F9F9F9F9F1F1F1F1F1F90807050505FD0809090808 + 0807070707EC07ECECDEDEFDF1E701010101010101E1FD0B06060C0C2F2F2E2E + 64622A1902123714141414141414141414141414141A1A1A1A1A1A1A1A1A6BB5 + C7C602101010141414141A1A1A1A383838383838363939393939393939393939 + 393939393A383C638568676867686868686767676665642E2F0BFEFEFEE0E1EF + F0F0F0F0F0F0E1E1E1E1E1E1E3E5F9F9F9F9F9F1F1F1F1F8FA070705FD080909 + 09090808080807070707ECECDEDEDEDEFDFDF2E8F4010101010101F5F9DB0606 + 060C2F2F2E2B2C19190F1635141414141414141414141414141A1A1A1A1A1A1A + 1A38B4B5C7C602101414141414141A1A33383838383838393939393939393939 + 39393939393939393A1A41872D6868686868676767676665642E2F0BFEFEFEDE + EAEFEFEFF0F0F0F0F0E1E1E1E1E1E1EBE3E5F9F9F9F9F9F9F1F1F1F1FC080708 + DB090909090808080807070707EC07DEECDEDEFDFDFDE0E0F2E4EB0101010101 + 01DFE5080606060C0C2C2C2C1919020D3714141414141414141414141A1A1A1A + 1A1A1A1A38386BB5C4C602101414141414141A1A383838383838363939393939 + 393939393939393939393B39393841632D676867686767676665642E2E2FFEFE + FE08E8F5F6F6EFEFF0F0F0F0E1E1E1E1E1E1E1EBE3F7F9F9F9F9F9F1F1F1F1F8 + E00708DB090909090809080807080707EC07ECECDEDEDEFDFDFDE0E0E0F2FCF1 + E9F3010101010101E2EC0606060C2C2C2C19191716151414141414141414141A + 1A1A1A1A1A1A1A383838B4B5C7C6021414141414141A1A1A3838383838363939 + 3939393939393939393B393939393939393841872D6868676767666564642E2F + 0BFEFE09E6F5F5F5F6EFEFEFF0F0F0E1F0E1E1E1E1E1E1E1E3F7F9F9F9F9F9F9 + F1F1F8F8F2080809DB090909090808080807070707ECECECDEDEDEFDFDE0E0E0 + F2F2FCFCFBFAEDE10101010101010AFD0B06060C2C2C19171837141414141414 + 141414141A1A1A1A1A1A1A1A381AB5B5C7C60214141414141A1A1A1A38383838 + 383939393939393939393B3B393B3B393B393B3939381A638867676766656564 + 2E2F06FEFEDBFBEFF4F4F5F5F6EFEFEFEFF0F0F0F0E1E1E1E1E1E1EBE3E5F9F9 + F9F9F9F1F1F1F1F8E00708DB0909090909090808080707070707ECECDEDEDEFD + FDFDE0E0F2F2FCFCFBFAF9F1E4E7F30101010101EFFBDB06060C2C1917161414 + 14141414141414141A1A1A1A1A1A1A3838386BB5C7C6021414141414141A3338 + 3838383836393939393939393939393B3B3B3B3B3B3B39393938416363676665 + 65642E2F0CFEFEFEFDEBF3F4F4F5F5F6F6F6EFEFF0F0F0F0E1F0E1E1E1E1E1EB + E3E5F9F9F9F9F9F9F1F1F1F8F207070606FEDB090908080808070707ECECECEC + DEDEDEFDFDFDE0E0F2F2FCFCFBFAF9F1F8E6E5E2F00101010101F3F8090BDB19 + 19161414141414141414141A1A1A1A1A1A1A383838386BB5C7C6021414141414 + 1A1A383838383836363939393939393B3B3B3B3B3B3B3B3B3B3B3B3939384162 + 636564642E2F0C06FEFEECEAF3F3F4F4F4F5F5F6F6EFEFEFF0F0F0F0F0E1E1E1 + E1E1E1E1E3F7F9F9F9F9F9F1F1F1F1F8F8F207FE06060606DB09080807070707 + 0707ECDEDEDEDEFDFDE0E0E0F2F2FCFBFBFAF9F1F8E6E5E5E4EDEBDC01010101 + F0060619193414141414141414141A1A1A1A1A1A1A383838383A6BB5C7C60214 + 1414141A1A1A383838383636393939393939393B3B3B3B3B3B3B3B3B3B3B3B39 + 391A3C6262642E2F2B06FEFE08E3DFDCF3F3F4F4F4F5F5F6F6F6EFEFEFF0F0F0 + E1E1E1E1E1E1E1EBE3F7F9F9F9F9F9F9F1F1F1F8F8F8E6F1FDDB0606060606DB + 09070707ECECECECDEDEFDFDFDFDE0F2F2F2FCFBFBFAF9F1F8F7F7E5E4E4E3EE + EAEF0101F0060C191716141A14141414141A1A1A1A1A1A1A1A3838383838B5B5 + C7C602141414141A1A333838383836363939393939393B3B3B3B3B3B3B3B3B3B + 3B3B3B39383C3F2B2B2F0C06FEFEDBF8F3DFDFDCF3F3F4F4F4F5F5F6F6EFEFEF + F0F0F0F0E1F0E1E1E1E1E1E1E3E5F9F9F9F9F9F1F1F1F1F1F8F8E6E6F7F7E6FD + DB06060606FEDB0807ECECDEDEDEDEFDFDE0E0E0F2FCFCFBFAFAF9F1F8F7E5E5 + E4E3E3E3EEEEE2E1E10606191716141414141414141A1A1A1A1A1A1A38383838 + 3A386BB5C7C602141414141A1A333838383636393939393939393B3B3B3B3B3B + 3B3B3B3B3B3B3B39383C1D2B2B06FEFEFEF2F6DFDFDFDFDCF3F3F3F4F4F5F5F5 + F6EFEFEFEFF0F0F0F0E1E1E1E1E1E1EBE3E5F9F9F9F9F9F1F1F1F1F8F8F8E6E6 + E6F7F7F7E5E5FD0906060606FEDB07ECDEDEFDFDFDE0E0E0F2FCFCFBFAFAF9F8 + E6F7E5E5E4E4E3E3EEEDEDEEF2060C19181514141414141A1A1A1A1A1A1A1A38 + 383838383A3AB5B5C7C8021414141A1A1A33383838363639393939393B3B3B3B + 3B3B3B3B3B3B3B3B3B3B3B39383F192BFEFEFEDEEB01DFDFDFDFDCDCF3F3F3F4 + F4F5F5F6F6F6EFEFF0F0F0F0E1E1E1E1E1E1E1E1E3F7F9F9F9F9F9F9F1F1F1F8 + F8E6E6E6E6F7F7E5E5E5E5E4E4FD0906060606FEDBECDEFDFDE0E0F2F2F2FCFB + FAFAF1F8E6F7E5E4E4E3E3EEE3F2070B060C0C173435141A141A1A1A1A1A1A1A + 1A1A1A383838383A3A3AB5B5C7C802143314331A33333838383636393939393B + 3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B391A1C2B0C09FDEA01DF01DFDFDFDFDCDC + F3F3F3F4F4F5F5F6F6EFEFEFEFF0F0F0F0E1E1E1E1E1E1EBE3F7F9F9F9F9F9F9 + F1F1F1F8F8F8E6E6E6F7F7E5E5E5E5E4E4E4E4E3FD0906060606FE09ECE0E0F2 + F2FCFCFBFAF9F9F1E6F7E5E5E4E5F2080B0606060C2B1734351A141A1A1A1A1A + 1A1A1A1A1A38383838383A3A3939B5B5C5C8021414141A1A3333383838363939 + 3939393B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B393C1C2BFE070101010101DFDF + DFDFDCDCF3F3F4F4F4F5F5F6F6F6EFEFF0F0F0F0E1F0E1E1E1E1E1E1E3E5F9F9 + F9F9F9F9F1F1F1F8F8F8E6E6E6F7F7F7E5E5E5E5E4E4E4E3E3E3E3E009060606 + 06FE09DEF2FCFCFBFAFAF1F8E6F7F1E00806060606FE062C2C1918351B1A1A1A + 1A1A1A1A1A1A1A1A1A383838383A39393939B5B5B6C802141A1A1A3338383838 + 3636393939393B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B391A1D2BFE07010101 + 010101DFDFDFDFDCF3F3F3F4F4F5F5F6F6EFEFEFF0F0F0F0F0E1E1E1E1E1EBE1 + FBFCFBFAF9F9F9F9F1F1F1F8F8F8E6E6F7F7F7E5E5E5E5E4E4E4E4E3E3E3EEEE + EEEEE00906060606FE09FDFBFAF1F1F8F1F2FD06060607FCE808FE2C19193714 + 1A1A1A1A1A1A1A1A1A1A1A1A383838383A3A39393939B5B5C5C80214331A1A33 + 3338383836393939393B3B3B3B3B3B3B3B3B3B3B3B3B3D3B3B3B3B39411C2BFE + 070101010101DFDFDFDFDFF3F3F3F4F4F4F5F5F6F6F6EFEFEFF0F0F0E1E1E1E1 + E1E7FB08FEDBFE08DEFBF9F1F1F1F8F8F8E6E6E6E6F7F7E5E5E5E4E4E4E4E3E3 + E3E3EEEEEEEDEDEDEEE00906060606FE09FDF9F1F1070707FBE8E7EAE708FE2C + 1917351A1A1A1A1A1A1A1A1A1A383838383838383A3939393939B5B5B6C80214 + 1A1A1A333338383836393939393B3B3B3B3B3B3B3B3B3D3B3D3B3B3D3B3D3B39 + 3C1C2BFE0801010101DFDFDFDFDFDFDCDCF3F4F4F4F5F5F6F6F6EFEFF0F0F0F0 + F0E1E1E8FDDBFEFEDB07FEFEFEFE08DEFBF1F1F8F8E6E6E6F7F7F7E5E5E5E5E4 + E4E4E4E3E3E3EEEEEEEEEDEDEDE8E8EDF20906060606FE08FD08ECEAEAEAE7EA + E708FE2C1934351A1A1A1A1A1A1A1A1A1A3838383838383A39393939393BB5B5 + B6C8021A1A1A33333838383636393939393B3B3B3B3B3B3B3B3B3B3B3B3D3B3D + 3B3B3B391A1D2BFE07010101010101DFDFDFDCDCF3F3F4F4F4F5F5F6F6EFEFEF + EFF0F0F0F0F7ECFEFEFE07E4E3E5F2DE08FEFEFEFE08FDFAF8F8E6E6F7F7F7F7 + E5E5E5E4E4E4E4E3E3E3EEEEEEEDEDEDE8EDE8E8E8E2EDF209060606060807EA + EAEAEAE7EA08FE2C1934141A1A1A1A1A1A1A1A383838383838383A3939393939 + 3B3BB5B5B6C8021A1A1A333338383836363939393B3B3B3B3B3B3B3B3D3D3D3D + 3D3D3D3D3D3D3D3B411C2BFE070101010101DFDFDFDFDCDCF3F3F3F4F4F5F5F6 + F6EFEFEFF0F0EBFB09FEFEDBFDE8E1E1E3F7FCF2F2E0DE08FEFEFEFE08FDF9F7 + E6F7F7E5E5E5E4E4E4E4E4E3E3E3EEEEEEEEEDEDEDEDE8E8E8E8E2E2E9EDF208 + DBDEEEEAEAEAE7EAE708FE2B191C14381A3838383838383838383838383A3A39 + 39393B3B3B3BB5B5B6C8021A1A333333383838363939393B3B3B3B3B3B3D3B3D + 3D3D3D3D3D3D3D3D3D3D3D3B411C2BFE070101010101DFDFDFDFDCDCF3F3F3F4 + F4F5F5F6F6F6EFEFE9FDDBFEFE09FBE7E1E1E1E1E3F7FCF2F2F2F2F2E0DE08FE + FEFEFE08FDF8F7F7E5E5E5E5E4E4E3E3E3E3EEEEEEEDEDEDEDE8E8E8E8E2E2E2 + E9E9E9E9EAEAEAEAEAEAEAE7E708FE2C19341B38383838383838383838383838 + 3A3A3939393B3B3B3B3BB5B5B6C8021A1A333833383836363939393B3B3B3B3B + 3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3B411C2BFE0801010101DF01DFDFDFDCDC + F3F3F4F4F4F5F5F6F6EFE407FEFEFE07E4E1E1E1E1E1E1E1E3F7FCF2F2F2F2F2 + F2F2F2F2EC08FEFEFEFE07E0F7E5E4E4E4E4E4E3E3EEEEEEEEEDEDEDEDE8E8E8 + E8E8E2E2E9E9E9EAE9EAEAEAEAE7EAE7EA08FE2C19341A383838383838383838 + 38383A3A393939393B3B3B3B3B3BB5C7B6C8021A333333383836363939393B3B + 3B3B3B3B3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3B3A1C2BFE070101010101DFDF + DFDFDCDCF3F3F3F4F4F5F5E1FC09FEFEDBFDE2E1E1E1E1E1E1E1E1E1E3E5FCF2 + F2F2F2F2F2F2F2F2FCF2F2EC09FEFEFEFE07E0E5E4E4E3E3E3E3EEEEEEEEEDED + EDEDE8E8E8E2E2E2E9E9E9E9E9EAEAEAEAEAEAEAE708FE2B19341A3838383838 + 383838383A3A393A3939393B3B3B3B3B3B3DB5C7C6C902333333333838363639 + 39393B3B3B3B3B3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3B3A3F2BFE07010101 + 01DF01DFDFDFDFDCF3F3F4F4F4E9FDDBFEFE08FCE7E1E1E1E1E1E1E1E1E1E1E1 + E3F7FCF2F2F2F2F2F2F2FCF2F2FCFCFCFCF2EC09FEFEFEDB07F2E4E4E3E3EEEE + EEEDEDEDEDE8E8E8E8E8E8E2E9E9E9E9E9E9EAEAEAEAE7E7EA08FE2B19371A38 + 383A3838383A3A3A3939393939393B3B3B3B3B3D3D3DB5C7B6C8021A33333838 + 38363639393B3B3B3B3B3D3D3D3D3D3D3D3D3D423D423D423D3D3D3D3A3F2BFE + 08010101010101DFDFDFDFDCF3F3F4E407FEFEFE07E4E1E1E1E1E1E1E1E1E1E1 + E1E1E1E1E3F7FCF2F2F2F2F2F2F2F2F2FCF2FCFCFCFCFCFCF2EC09FEFEFEDBEC + F2E3E3EEEEEDEDEDEDEDE8E8E8E2E9E2E9E9E9E9EAEAEAEAEAEAE7EAE708FE2C + 19371A3A3A3A383A3A3A39393939393939393B3B3B3B3D3D3D3DC7C7B6C90233 + 3338383836363939393B3B3B3B3D3D3D3D3D3D42423D423D423D423D423D423D + 3A3F2BFE0701010101DFDFDFDFDFDCF3E1FB09FEFEDBFDE2E1E1E1E1E1E1E1E1 + E1E1E1E1E1E1E1E1E2FCFAF2F2F2F2F2F2F2FCF2FCFCFCFCFCFCFCFCFBFBFBF2 + EC09FEFEFEDBECFCEEEDEDEDE8EDE8E8E8E8E2E2E9E9E9EAE9EAEAEAEAEAE7EA + E708FE2B17371A393939393A393A3939393939393B3B3B3B3D3D3D3D4242C7C7 + C6C9023333383636363639393B3B3B3B3D3D3D3D3D3D3D3D4242424242424240 + 4242423D473C2AFE07010101010101DFDFDFEAFDDBFEFE08FBE7E1E1E1E1E1E1 + E1E1E1E1E1E1E1E1E1E1E1E1E2E5F9F2F2F2F2F2F2F2F2F2F2FCFCFCFCFCFCFB + FCFBFBFBFBFBF2EC09FEFEFEDBECFBEDEDEDE8E8E2E8E2E2E9E9E9E9EAE9EAEA + EAEAE7EAEA08FE2B1D371A3939393939393939393939393B3B3B3B3B3D3D3D42 + 4242C7C7C6C90233383836363639393B3B3B3B3B3D3D3D3D3D42424242404240 + 404040404040403D3B3F2BFE080101010101DFF4E407FEFEFEECE4E1E1E1E1E1 + E1E1E1EBE1E1E1EBE1E1E1E1E1EBE1E1E2F7E4E4F7FAF2F2F2F2FCF2FCFCFCFC + FCFCFCFCFBFBFBFBFBFAFAFAFAF2ECDBFEFEFEDBDEFAE8E8E8E8E2E2E9E9E9E9 + E9EAEAEAEAEAEAE7E708FE2B173C38393939393939393939393B3B3B3B3B3B3D + 3D3D42424242C7C7B7C90238383836363939393B3B3B3D3D3D3D3D4242424242 + 4040404040404040404040423B412AFE0701010101F0FA09FEFEDBFDE2E1EBE1 + E1EBE1EBE1EBE1E1E1EBE1E1E1E1EBE1E1E1E1E1DEDED8EBE1E7EDE6FAFCF2F2 + FCF2FCFCFCFCFCFBFCFBFBFBFBFAFBFAFAFAF9F9F2ECDBFEFEFEDBDEF1E2E2E2 + E9E9E9E9EAEAEAEAEAE7EAE7EA08FE2B1C3C3839393939393939393B3B3B3B3B + 3B3D3D3D424242425140C7C7B7C90238383836363939393B3B3D3D3D3D3D4242 + 4242404040404046404040403E4640423B412BFE070101EAFDFEFEFE08FAE7EB + E1EBE1EBEBE1EBE1EBE1EBE1EBE1EBE1EBEBE1EBE1EBEBE1EBE7E1EFEFF0E1EB + E7E8E5F9FCFCFCFCFCFCFCFCFBFBFBFBFBFAFAFAFAFAF9F9F9F9F1F2ECDBFEFE + FEDBFDE6E2E9E9E9E9E9EAEAEAEAEAE7E708FE2B1C3C38393939393939393B3B + 3B3B3B3B3B3D3D3D424242514051C7C7C8C902383836363939393B3B3B3D3D3D + 42424242404040404646464646463E3E463E3E423D412AFE08E407FEFEFEECE5 + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBF0F6EFEFF6 + F6EFF6F6EFE1EBE1E2E4F9FBFCFCFCFCFBFBFBFBFBFBFAFAFAFAFAF9F9F9F1F1 + F1F8F2ECDBFEFEFE09FDE5E9EAEAEAEAEAEAE7EAEA08FE2B1C3C3A3939393939 + 393B3B3B3B3B3B3B3D3D3D4242514051464676B6B7C902383636393936393B3B + 3B3D3D3D3D424040464046464646463E3E3E3E3E3E3E3E403D412AFEFEFEFEDB + FDE2EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBE1EB + EFF6F0E4EDE1EFEFEFF6F6F6F0EBEAEAE4F1FBFBFCFBFBFBFBFBFAFAFAFAF9F9 + F9F9F1F1F1F8F8F8E6F2ECDBFEFEFE09FDE4EAEAEAEAEAE7E708FE2B1C3C3A3B + 3B3B393B3B3B3B3B3B3B3B3D3D3D424251515146464676B6C8C9023636363936 + 3B3B3B3B3D3D3D42424040404646464646464E3E4E4E4E4E4E4E4E463D4162FE + FE08FBEAEBEBEBEBEBEBEBEBE7EBEBEBEBEBEBEBEBEBEBEBEBEBEBE7EBEBEBEB + EBEBF0F6EFF00508F2E3E2EAEBF0EFF6EFEFEFF0E1E1E7EDF8FAFBFBFBFAFAFA + FAFAF9FAF9F9F1F1F1F8F8F8F8E6E6F7F2ECDBFEFEFE09E0E3E7EAE7EA08FE2B + 1C41393B3B3B3B3B3B3B3B3B3B3B3D3D3D424242514646464E46B6B6B7B80236 + 3639363B393B3B3B3D3DA2424040404646463E4E3E4E4E444444444444444446 + 42412AFE08E7EBEBEBE7EBE7EBE7E7EBEBE7E7EBE7E7E7E7E7EBE7EBE7E7EBEB + E7EBE7EBE7E1EBEFF6EB07FCFAE5FBFAE4E2EAE7EFF6F6EFF6EFF0E1E1EBE8E6 + FAFAFAFAFAFAF9F9F9F9F1F1F1F8F8F8E6E6E6E6F7F7F7F207DBFEFEFE09E0EE + E708FE2B1C1A393B3B3B3B3B3B3B3B3B3D3D3D3D3D4242514646464E4E4EB6B6 + C9C9023639393B363B3B3B3D3D3D424040403E3E4E4E4E724472494949494949 + 4943494E42472AFE08E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7 + E7E7E7E7E7E7E7E7E7F0F6EFF005FDFCEDDFF6EAE4FBFAF7E8E9EBF0EFF6EFEF + F6EFE1E1E8E2E5FAFAFAF9F9F9F9F1F1F1F8F8F8E6E6E6E6F7F7F7F7E5F7F207 + DBFEFEFE08DBFE2B1C41393B3B3B3B3B3B3B3B3B3B3D3D3D4242404646464E4E + 7272B6B6C9B802363939393B3B3BA23D3D404040403E464E4E4E72724949491F + 4949434949434349514762FE08E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7 + E7E7E7E7E7E7E7E7E7E7E7E7E1F0EFF0E8ECFCF9F4DCDCDFF3F6EAE4FAFAF7ED + EAEBF0EFF6EFEFF6EFE1EBEAE9E4F1F9F9F9F1F1F1F8F8F8E6E6E6E6F7F7F7F7 + E5E5E5E5E5F207DBFEFEFE2B3F41393B3B3B3B3B3B3D3B3D3D3D3D4242425146 + 464E72727272B6B6C9B8023939393B6A3B3B3D3D3D424040463E4E4E49494949 + 49431F494343435353434349464762FE08E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7 + E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7EBE2F6F6E1E0F2FCE7DFDFDFDCDFF3F3F3 + F4E7E4FAFAF8EEEAEBF0EFEFF6F6F6F6F0E1E7E7EEF8F1F1F1F1F8F8E6E6E6E6 + F7F7F7E5E5E5E5E5E5E4E4F7F2DBFE2B3441393B3B3B3B3D3B3D3B3D3D3D4242 + 405146464E72725A5A5AB6B7C9B802393939363B3B3D3D3D4040403E3E4E4444 + 4949491F434326535353535353535349464762FE08EAEAEAEAEAEAEAEAE7EAEA + EAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAE7E1F6F6EFA0E0FCE4DFDFDFDCDC + DCDCF3F3F3F3F3F5E7EEF9FAF1E3EAE1EFF6F6F6F6F6F6F0F0F0E7EDF7F8F8F8 + E6E6E6F7F7F7F7F7E5E5E5E5E4E5E4E4E409FE2B3F413B3D3B3D3B3B3D3D3D3D + 3D3D4242404646464E725A5A5A5A7DB7C9B80239393B3B3B6A3DA23D40403E3E + 46444949491F43432653535353535353234D53264E4762FE08EAEAEAEAEAEAEA + EAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEBE1F6EF0AE0FCFAF6DF + DFDCDCDFDCF3F3F3F3F3F3F3F4F4F4E7EEF9FBFAE4E2E1F6F6F6F6F6F6EFEFF0 + E1EBE2E5E6E6E6F7F7F7F7F7E5E5E5E5E5E5E4E4E409FE2B3F413B3D3D3B3D3B + 3D3D3D3D3D42424246464E4E727E5A5E7E7EB7B7C9B8023B3B3B6A3B3D3D3D42 + 40403E46444949491F2626535D5353234D4D5757575757264E8662FE08EAEAEA + EAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAE7E2F6EFEFF9F2 + FBEADCDFDFDCDCDCDCDCDCF3F3F3F3F3F4F4F4F4F5F5EBEDF9FBFBE5E8E1EFEF + EFF6F6EFF6EFF0F0EBE9E3F7F7F7F7F7E5E5E5E5E5E4E5E4E409FE2B3F3A3B3D + 3D3D3D3D3D3D3D3D4242424046464E725A5A7E7E5E5EB7B7C9B8023B3B3B3D3B + 3D3D3D40403E3E4444491F1F2653535357235757565676745674565D724262FE + 08E9E9EAEAE9E9EAE9E9E9E9EAEAE9E9E9E9EAE9EAE9E9EAEAE9EAE9E7E1F6F0 + F6EEFAFCEDDFDFDFDFDCDFDCDCDCF3F3F3F3F3F3F4F4F4F4F5F5F5F5F5EBEDF8 + FBFBE6E8EBEFEFF6EFEFF6F6EFF0E1EBEAEEE5E5E5E5E5E5E5E4E4E4E409FE2B + 3C3A3B3D3D3D3D3D3D3D3D424242405146464E725A5A5E5E5E5EB78AB8A8023B + 3B3B6A3D3DA242403E3E44444943435353535D29575656767474745C74567657 + 7E5162FE08E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9EA + E1F6EFF6E2F7FCE4F3DFDFDFDFDCDCDCDCDCDCF3F3F3F3F3F4F4F4F4F4F5F5F5 + F6F6F6EFE1E8F7FBFBF8EEE7EFF6EFF6F6EFF6F6EFE1E1EAE8E4E5E5E5E5E4E4 + E409FE2A3C3A3B3D3D3D3D3D3D423D4242424046464E725A7E5E5E5B5B5EC9B7 + B8B8023B3B3B3D3D3D4040403E46444949435353535D57745C565C5C74745C5C + 595C50577E5163FE08EBE9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9 + E9E9E9EBF0F6EFE1E4FBF7F3DFDFDFDFDFDFDCDCDCDCF3F3F3F3F3F3F4F4F4F4 + F5F5F5F5F6F6F6F6F6F6EFE1E8E5FBFAF1EEEAF0F6F6EFF6F6EFF6EFE1E1E7E2 + E3E5E5E4F8DBFE2A41473B3D3D3D3D3D3D42424242424046464E725A5E5E265E + 5B5EB7C9B8A8023B3B3B3D3DA23D403E3E44444953265353575676745C5C5C59 + 595F7D7D597D7D565D2887FEDBEFEBE9E9E9E9E9E2E9E9E9E9E9E9E9E9E9E9E9 + E9E9E2E9E2E9EBEAF6F6F0EEFAF7F3DFDFF3DFF3DFDCDCDCDCF3DCF3F3F3F3F4 + F4F4F4F4F5F5F5F5F6F6F6F6F6EFEFEFEFEFE1E2E5FAFAF1E3E9F0EFF6F6F6F6 + EFEFF0F0EBE9E3E4ECFE0B2A413B3D3D3D3D3D3D3D3D4242424040464E725A5A + 5E5E5E5D5D5DC995B8A8023B3B3D3D3D4040403E3E4444435353575756745C5C + 5F5F7D7D7D7D7D7D7D7D7D50577E85FEFEE2EFEBE9E9E2E9E9E9E2E9E2E2E9E8 + E9E9E9E2E2E9E9E9E7E1EBEFF6E7EEF9E5F4DFF3DFDFDFDFDFF3DFDCDCDCF3F3 + F3F3F3F3F4F4F4F4F4F5F5F5F6F6F6F6F6EFEFEFEFEFEFEFEFE1E9E5FAFAF1E3 + E8F0F6F6F6F6EFF6F6F0E1E3DBFE2A3C3A3B3D3D3D3D3D3D4242424240405146 + 4E725A7E5E265D5D5D5D9595B8BA023D3D6A3D403D40403E6B44494353235774 + 5C5C5C5F5F7D7D7D7D7D817D7D7D7D5F5C5E772FFE09F0F0F0EAE2E2E2E2E2E2 + E2E9E2E9E2E2E2E9E2E9EAE1EAEFEFEFE5E6FBE3F4DFDFDFDFF3DFDFDFF3DFDC + DCDCF3F3F3F3F3F3F4F4F4F4F5F5F5F5F5F5F6F6F6EFF6EFEFEFEFEFF0EFF0F0 + F0EAE4FAFAF1E5E8EBEFF6F6F6EFEFE0FE063F413B3D3D3D3D3D3D423D424242 + 4040464E4E725A7E265D5D5D5D5DC9C9B8BA023B3D3D3D3DB4403E3E44444353 + 5357565C5C5F5F7D7D7D7D818181818181817D7D5C767E2DFEFE64EAF6EFE1EA + E9E2E2E2E2E2E2E2E2E2E2E2EAEBF0F0F6F6EDFCFAFCE2F3DFDFF3DFDFDFDFF3 + DFDFDFDCDCDCF3F3F3F3F3F3F4F4F4F4F4F5F5F5F6F6F6F6EFF6EFEFEFEFEFEF + EFF0F0F0F0F0F0F0EAE3FAFAF1FAEEEFF6EFE709FE623C3A3B3D3D3D3D3D3D3D + 3D42424240404646725A5A5E265D5D5D5D8495B8B8A8023D3D3D403D403E3E3E + 4449435357565C5C5F5F7D81818181818A81818181817979815C5D7A2EFEFE2F + F20AF6E1F0EBE7E9E2E2E2E2E9E9E7E1F0EFF6F0E4FDECDEFD09EBDFF3F3DFF3 + DFF3DFDFDFDCDFDCDCDCF3F3F3F3F3F4F4F4F4F4F5F5F5F6F5F5F6F6F6F6EFEF + EFEFEFEFF0EFF0F0F0F0F0F0F0F0F0E7F2E5E7EFEFF0FAFE0B3F41473D423D42 + 3D3D4242424242425146464E725A7E5E5B5D8484295D95B89ACA023D3D3D3DB4 + 403E3E444443435357745C5F5F5F8181818A8A7979798A797979797979815C5D + 722EFEFE07FAFAE8F0F60AF0E1EBE7E7EBE1EFF6F0EDE0ECECECECEC07ECECEC + F2F8E8E1DFDFDFDFF3DFDCDCDCDCDCF3F3F3F3F3F4F4F4F4F4F5F5F5F5F6F6F6 + EFEFEFEFEFEFEFF0EFF0F0F0F0F0F0F0F0F0F0E9FBE8EFF6EF0506FE2F3C473B + 3D3D3D3D3D3D3D3D424242404046464E725A5E5E5D298484848496B89ACA023D + 3D404040403E3E44444353574B5C597D7D818181798A8A838383787879837978 + 798A7D5C5D722EFEFE09F2FAFBF8E8EFF6EFE1EFEFF0EDE0ECECECECE0E40AFB + ECFDDEECECECECECDEF2E5E2EFF3F3F3DCDCF3F3F3F3F3F4F4F4F4F4F5F5F5F5 + F6F6F6F6F6EFEFEFEFEFEFEFF0EFF0F0F0F0F0F0F0F0F0F8E5EBF6F60A09FEFE + 2A41473D42423D3D423D3D424242425140464672725A265D5D848484848496B8 + 9CCA023D3DA23D403E3E6B6B43434D4B745C5F7D81818A8A8A838A8383838383 + 83838383787981815C5D722DFEFEFE08ECE0FAF1E5E3F7FCDEECECECECF2E50A + 040404FBECFCF7E6FAF2FDDEECECECECECFDFBE3EAF5F3F3F3F3F3F4F4F4F4F4 + F5F5F5F5F5F6F6F6F6F6EFEFEFEFEFEFEFF0F0F0F0F0F0F0F0F0E9FAE8EFF6E1 + DEFEFE6241473D3D423D3D423D424242424242405146464E497E5E5D5D848484 + 8484B8B8A8CA023D3D4040403E3E6B6B4345534B5C597D81818A8A8383838383 + 838383838383838378787879545C577E880B0BFEFEFEFEDB08ECECECECECF2E4 + 0A040404040404FBECFCE6F7F7F7E5E5F7FAF2FDECECECECECECE0FAEEE7F3F3 + F4F4F5F5F5F5F5F5F6F6F6F6F6EFEFEFEFEFEFF0EFEFF0F0F0F0F0F0F0F0F8EE + F0EFF0FBFEFE2F41473D424242423D423D3D42424242404246464672497E5D5D + 84845C848484B8B89CCA023D4040B4403E3E6B44434570745C7D7D818A8A8383 + 838383838990838383838383838378797981505C535A882D2F0BFEFEFE07ECF2 + E40A040404040404040404FBECFCE6F7F7E5E5E5E5E4E4E3E3E5FAF2FDECECEC + ECECECE0F1EDEBF4F5F5F5F5F5F6F6F6F6F6EFEFEFEFEFEFEFF0F0F0F0F0F0F0 + F0EDF7E7F6F6E5FEFE2F41473D3D4242423D3D3D424242424240405146464E72 + 7E5E5D5D848461848484989ACACA02403D40403E3E3E6B4443534B5C5F7D8181 + 8A8383838383908390837C9083837C7C83838378787981505C56534372518762 + 2FECEC0A040404E104040404040404FBECFCF7F7F7F7E5E5E4E4E4E3E3E3EEEE + EEEDE5FAF2FDECECECECECDEF2F7E8E1EFEFF5EFEFEFEFEFEFEFEFF0EFF0F0F0 + F0F0F0F0E7F1EAF6F6E5FEFE2F41473D42424242424242424242424242424051 + 46464E5A7E5E5D84848F8F8F8F8F98B8CACA023D4040B43E3E6B4449454D4B5C + 5F7D8179798383839089908989897C9089907C7C7C838383787979795050744B + 704346473F07EC0A0A04040404040404040404FBECFCE6F7F7F7E5E5E4E4E4E3 + E3E3EEA0EDEDEDE8E8E2E8E4F9F2DEECECECECECFDFCE5E9F0EFEFEFEFEFEFEF + F0F0F0F0F0F0F0EDFAEDF0F0FDFEFE2F413B3D42424242424242424242424242 + 42404046464E725A7E265D848F8F8F8F8F849A98BACA02404040403E3E6B4443 + 454556747D818A8A83838390899089898989898989897C907C83838379585858 + 79547D50504D494241ECEC0A0404E10404040404040404FCECF2E6F7F7E5E5E5 + E5E4E4E3E3E3EEEEEDEDE8E8E8E2E2E2E9E9EAE2E4F9E0DEECECECECECFDFBEE + EBEFEFF0EFEFF0F0F0EBF7FCE5EBE208FEFE2E41473D42424042424242424242 + 4242424240404046464E727E5E5D845C8F8F8F8F8F8F9A9ACACA0240B440403E + 3E6B4443454D4B597D81818A83838989899089898989898989897C7C7C837C83 + 8378787954546E55554843514707EC0AE104040404040404E2F8FDECECECECEC + DEE0F9F7E4E4E4E3E3E3EEEEEEEDEDE8E8E2E2E9E9EAEAEAE7EAE7E7E2E4FAE0 + ECECECECE0F0EFEFF0F0F0F0E3FCFBE4EAF9DBFE096447474242404040424240 + 4242424242424240424040464E4E725A5E5D84618F8E8E8E8E8F9A9ACACA0240 + 40403E3E3E6B4443434D74507D818A8383838989898989898989898989898989 + 8989837C83787879795454505048534647ECEC0A0404040404E8FADEECECECDE + FBE0ECECECECECECECDEF2F9E4EEEEEEEDEDEDE8E8E2E2E2E9E9EAEAEAE7E7E7 + EB0AEBEBEBE2FCECECEBEFEFEFF0EBF9FBE3EAEBDEFEFEDE67473D4240404040 + 404042424242424242425140404046464E725A5E5B5D848F948D94948E8F9A9A + CAC2024040B43E3E3E6B4343454A747D7D818A83839089898989898989898989 + 89898989897C7C83838378795479545555484D4E4707EC0A040AA0F2DEECECEC + DEF9E9D9DDDDDDEBEDF1F2ECECECECECECECDEF2F1E3E8E8E8E2E2E9E9EAEAEA + EAE7E7E7E7E7EBEBEBEBE7DEECEBEFEFE7E3FBFBF8F8DEFEFEDBDE6885424046 + 3E463E40404040404242424240424040404046464E495A5E5D84848F8E8D9394 + 8E949A9CCAC2024040403E3E6B6B4343454B5C7D7D818A838389898989898C89 + 898C898989898989897C897C7C78787879546E6E505045443DECECF7F2ECECEC + B3D1D4D4D7DDDDDDDDDDDDDDDDDDDDDDEBE8E6F2DEECECECECECECDEFCE6EEE2 + E9E9EAEAEAE7E7E7EBE7EBEBEBEBEBDEECEDEAE6FCFCDEDBFEFEFEFEE0D86651 + 51463E463E46463E4040405142424240424040404640464E72495A265D848F8E + 8D9393938E8E9C9CCAC20240403E3E3E6B444443454A747D7D8A838389898989 + 898C898C8C89898C898C898989897C7C8383835858796E6E55504B4342ECECEC + ECEC0708B3D0D3D3D3D3CFCFCFD5D7DADDDDDDDDDDDDDDDDDDE1E8E5FCFDECEC + ECECECECFDF2F7EDEAEAE7E7E7EBE7EBEBEBEBDEEC09ECEC09FEFEFEFE09FAA0 + D19F604E4444443E3E46464040404040514042425140515146464E4E725A5E53 + 848F8F8D93939393938D9C9CCAC2024040403E3E6B6B4443454B507D818A8383 + 898989898C898C89898C8C898989898989897C7C7C8378787979545555504843 + 442D07ECEC07DBD2B3CED3D3D3D3D3D3D3D3D3CFCFD5D5D7DAD9D9DDDDDDDDDD + DDDDF0E9E4FCFDECECECECECECFDFCF7EDEBEBEBEBEBEBF8EC07FEFEFEFE0B2E + 8867D19F7E72491F1F49443E4E46463E46404040405151404040404046464E72 + 497E5E5D848F8E939395959593949CCACAC20240403E3E3E3E4443434D4B507D + 818A83908989898C8C898C8C898C8C898C898C898989897C838378787979546E + 6E50746C433E0707ECECECD2B3D4D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3CFD5D5 + D7DADAD9DDDDDDDDDDDDDDF6EAE4FAE0ECECECECECECFDFCF7EDE7E4EC080B2F + 2D827E5D5D5D5D5B53532653434949443E4E4E46464646514051514051464646 + 464E4E72492653845C8F9493959595959593CA9CC2C20240403E3E3E6B44B543 + 4D4B507D818A838389898989898C8C898C8C8C8C8C898989897C898983838378 + 58796E556E50504845434642872EDBB3B3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3 + D3D3D3D3D3D3CFCFD5D7DADAD9D9DDDDDDDDDDDDF6E7E3F9E0ECECECECECECEC + EC0842725B5C5F817D8159507457234D43434949444E4E464646464651404040 + 464646464E4E4E495A5E5D848F8E8A959595969595959C9CC2C202403E3E3E3E + 6B4443434D74507D798A83898989898C8C8C8C8C8C8C8C8C8C89898989897C7C + 7C7C785858796E54505050486C4543463D4163B3D1D3D3D3D3D3D3D3D3D3D3D3 + D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3CFD5D7DAD9D9D9D9DDDDDDDDDDDDE72F + 08ECECEC076449748158837C8383797D50504B4D45434949444E4E3E4E464646 + 46464046464646464E4E72497E5B5D618E8D9395969696969595CACACAC20240 + 3E3E3E3E6B4443434D48507D8183838989898C8C8C8C8C8C8C8C8C8C8C8C8C89 + 8989897C838383785854546E505050481E6C4544424764B3D0D3D3D3D3D3D3D3 + D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3CFD5D7DAD9D9D9 + DDE1E407ECECEC07825E565458898989898378797D50744D53531F4944444E4E + 3E464E4646464646463E464E4E72721F5E5D848F8E9395969696969696959CCA + C2C20240403E3E3E6B6B43454D74507D81838389898996968C8C8C8C8C8C8C8C + 8C8C898C8989897C7C8383785879546E6E505050486C4549516265B3CED3D3D3 + D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3 + D3D3CFD5D4F2ECECEC086472265255587C738C8C8C898379815974564D534349 + 4949724E4E4E4E4646464646464E4E4E72725A7E5357848E9395969698989896 + 96909CCAC2B202403E3E3E6B6B6B43454D74507D798383898989898C8C8C8C8C + 8C8C8C8C8C8C8C8C8989897C7C7C83787979546E556E5048484B45494241D2B3 + CECFD3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3 + D3D3D3D3D3D3D3D3D4D1D264474244535055587C898C8CA58C898358817D744B + 7053431F1F4949444E4E4E464E4E46464E4E4E72725A7E535D295C8E93959698 + 989898989696CACAC2C202403E3E3E3E6B4443454548507D7983839089898C8C + 8C8C8C8C8C8C8C8C8C8C8C898989897C7C837878587954545550504848484549 + 3D41D2B3D4D3D3D3CFD3D3D3D3D3D3D3CFD3D3D3CFD3D3D3D3D3D3D3D3D3D3D3 + D3D3D3D3D3D3D3CFD3D3D3D3D4B3D28786444A50544F71898CA5ABAB8C8C8983 + 817D5074224D53431F1F4949444E4E4E4E4646464E4E725A725A5A265D848F8E + 95969698989A989898969DCAC2CB0240403E3E3E6B4443454D74507D79838389 + 8989898C8C8C8C8C8C8C8C8C8C8C8C898989897C7C7C8378584F6E6E55505050 + 504B454E3D63B3D1CFCFD3CFD3CFD3CFD3CFD3CFD3CFD3CFD3CFD3CFD3CFD3CF + D3CFD3CFD3CFD3CFD3CFD3D3D3CFD3CFD4D2D23A465350554F58718C738B8B8B + A58C898958547D50564D4343435A1F494E4E724E4E4E4E4E4E72725A495A5E53 + 5D5C8E939596989A9A9A9A989896C2CAC2B20240403E3E3E6B6B43454D74507D + 7983838989898C8C8C8C8C8C8C8C8C8C8C8C8C8C8C898989837C8378794F4F6E + 6E505050504B2646472EB3D1CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCF + CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFD3D4D2D247724D5554584C6F8C + 8B8B8B8B8B8C897C78817D50744B5343431F4949724E4E4E4E4E4E4E7272725A + 5A5A265D848F8E939596989A9A9A9A9A9898CACAC2B202403E3E3E3E6B6B4343 + 4D4850548183838989898C8C8C8C8C8C8C8C8C8C8C8C8C898989897C7C7C7C78 + 7858546E6E505050484B53464765B3D6CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCF + CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFD3CED26686491E2058 + 587C8C758B8B97978BA58C8983587D595C4B70532643261F5A5A72724E5A7272 + 72285A5A7E26535D848F8E9096989A9A9C9C9A9A9A989DC2C2CB0240403E3E3E + 6B4443434D74507D7983838989898C8C8C8C8C8C8C8C8C8C8C8C8C8C8989897C + 7C7C7C787858586E556E5050507443514167B3CED5CFCFCFCFCFCFCFCFCFCFCF + CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFD0D26540 + 4350544C716F73A57BAAAAAA808B8C897C588150744B4D534326431F49497272 + 5A72727272725A1F265E5B5D5C8E8A9596989A9C9C9C9C9A9A98C2CAB2CB0240 + 403E3E3E6B4443434D4B507D7983838989898C8C8C8C8C8C8C8C8C8C8C8C8C8C + 8C89897C7C837883785854546E505550554B5A4241D2B3D4CFCFCFCFD5CFCFCF + D5CFD5CFCFCFD5CFD5CFCFCFCFCFCFCFD5CFCFCFCFCFCFCFCFD5CFCFCFCFCFCF + D1D22D4E4D504F717173737B977FAAAA978BA5897C78817D5074705353264349 + 1F5A72725A727272725A7E7E43265D848F8E9395989A9C9C9C9D9C9C9A98C2C2 + C2CB0240403E3E3E6B6B4343454B507D81838389898C8C8C8C8C8C8C8C8C8C8C + 8C8C8C8C8C898989897C7C8378584F5854546E55594B4E8662B3B3D5D5CFD5D5 + CFD5CFD5CFD5CFD5CFD5CFD5CFD5CFD5CFD5CFD5CFD5CFD5CFD5CFD5CFCFCFD5 + CFCFD5D4B3D286494A554F717173A57BAA92AC92AA8BA58C7C838A7D50744B23 + 53264326495A5A5A727A725A5A5A495E5E535D848F8D9596989A9C9C9D9D9C9C + 9C98C2C2B2CB0240403E3E3E6B4443434D4B507D8183838989898C8C8C8C8C8C + 8C8C8C8C8C8C8C8C8C8989897C7C7C7878585854546E6E6E4853464764B3D1D5 + D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5 + D5D5D5D5D5D5D5D4D2D23D49484F4C716F737B8BAA929292AA978B8C8983797D + 7D505723535326261F1F495A5A727272725A5A5A535B84848F8D9596989A9C9D + 9D9D9D9C9A9AC2C2CBCB02403E3E3E3E6B6B43434D74507D79837C8989898C8C + 8C8C8CA58C8C8C8C8C8C8C8C897389897C7C7C837878584F5455545548435147 + D2B3A0D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5 + D5D5D5D5D5D5D5D5D5D5D5CED266514350584C6F6F737B8092929292AC808B8C + 897C7954595C56702353261F5E1F5A7E5A725A725A5A7E535B5D845C8F8A9596 + 9A9C9D9D9D9D9D97979AC2C2CBCB0240403E3E3E6B4449434D4B507D79839089 + 89898C8C8CA58C8C8C8C8C8C8C8C8C8C8C898989897C7C7C787858584F6E6E50 + 48494241B3D2D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5 + D5D5D5D5D5D5D5D5D7D5D5D5D5D50AD0D265464D554C716F73737B7F92999292 + ACAA8BA5897C79797D5C4B57235326267E5A5A7E5A5A5A7E5A7E5E5E5E5D845C + 8E8A96989A9C9D9D9D9D9D9D9C9AC2C2CBCB0240403E3E3E6B6B44434D48507D + 8A839089898C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C7C897C897C7C7878584C + 4F546D6E48494263D2D1D7D5D7D5D7D5D7D5D7D5D7D5D7D5D7D5D7D5D7D5D7D5 + D7D5D7D5D5D7D5D5D5D7D5D5D5D5D5D5D5D5CFD1D288491E204C6F6F73A57B7F + 9299999992AA8BA5898358797D5C4B56575B2626261F5A5A7E5A7E5A1F7E7E26 + 295D5C8F8D9596989A9C9D9E9D9D9D9D979ACBC2CBCC0240403E3E3E6B6B4343 + 4548507D79839089898C8C8C8C8C8C8CA58CA58C8C8C8C8C8C8C8C8989897C7C + 7C7878584F4F4F504A493D64B3D0D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7 + D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D4D2D24243246D716F7C + 737580A39299999992AAA8AB8C7C83797D74744B295B26267E7E5A495A7E7A7E + 7E7E7E5E5B5D848F8D9396989C9C9D9E9E9E9D9D979AC2CBCBCC0240403E3E3E + 3E4444434D4B507D8A838389898C8C8C8C8C8C8CA5A58CA5A58C8C8C8C8C8C89 + 7389897C7C7C7178584F4F6E706B8765B3D8D7D7D7D7D7D7D7D7D7D7D7D7D7D7 + D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D5D6D266515354 + 4C716F73737580929299999992928BA5898983817D50745657535326261F5A7E + 7E7E7A7E7E7E5E265D27847D8A9596989C9D9D9E9E9E9D9D9C97CBC2CCCC0240 + 403E3E3E3E6B4443454B507D8A8390898C8C8C8C8C8C8CAB8C8C8CA58CA5A58C + 8C8C8C8C897C897C7C7C71714C4C54554D7741D2B3D4D7D7D7D7D7D7D7D7DAD7 + D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7DAD7D7D7D70AD1D2 + 82494B6E4C716F73738B7F929999A999BB92808B8C7C838A7D597429235B2626 + 5A495E7E7E7E7E7E7E7E5E5E29295C8E8A95989A9C9D9E9E9E9E9E9D979ACBCB + CBCC0240403E3E3E3E6B43434548507D79838989898C8C8C8CAB8CABABABA5AB + A5A5A5A58CA58C8C8C8C8C89897C7C7C714C4F50534263B3D2D7DAD7DADAD7DA + D7DAD7DAD7DAD7DAD7DADAD7DAD7D7DAD7DAD7D7DAD7D7DAD7D7DAD7D7D7D7DA + D7D4D2D2421F484F4C6F7373737B7F9299AEAE999292808B8C8983797D505C56 + 575326265E5E7E5E7E7E7A7E5E7E5E5D5D848F8E9395989A9C9E9E9E9E9E9E9D + 9C9ACBCBCBCC0240403E3E3E6B6B4343457450548A839089898C8C8CAB8CABAB + A5ABABABABA5A5A5A5A58CA58C8C8C89737C7C7C7C714F74438664B3D1D9DADA + DADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADA + DADADADAD7D6D266464D554F6F6F6F73757B7F929999AFAE9992AA8B8C898379 + 7D7D745656535B53535E7E7E7E7E7E7E7E5E5E5D5D845C8E8A96989A9D9E9E9E + 9E9E9D9D9C9ACBCBCCCC0240403E3E3E3E6B4443454B7D81798389898C8C8C8C + ABABABA5A5ABA5ABA5A5A5A5ABA5A5A58C8C8C738C8C89736F6F4F50728767B3 + D8DADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADA + DADADADADADADADA0AD1D2827A744F4C716F737373807F9299AFAF999992AA8B + 8C89838A817D5C56575D5B2626267E7E7E7E7E7E7E5E5E5D575C8F8D9096989C + 9D9E9EB2B29E9E9D9C97CBCBCCCC0240403E3E3E3E444943454B7D7D79838989 + 8C8C8CABABA5ABABABAB8BABABABAB8BABABA58BA5A5A58C737373737C717957 + 4687D2B304D9DADAD9DADADADADADADADADAD9DADADADADADADADADADADADADA + DADADADADADADADADADADADAA0D2D25143504F71716F6F73757B7F92A9AFAFAE + 9992978B8C8983797D5F5C56575B5B26265E7E7E7E7E7E7E7E5E5E5B845C8F8A + 9596989C9D9E9EB29E9E9E9D979ACCCBCCCD024040403E3E3E6B6B434D74507D + 8A8389898C8C8CABABAB8BAB8BABAB8B8B8B8B8B8B8BA5AB8BA5A5A5A5A57389 + 7378555E8664B3D1D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9 + D9D9D9D9DAD9D9D9D9DAD9D9DAD9D9D705D2654E4A504F4C6F6F7373757B7FA7 + 99AFAFAE9992AAA58C89838A7D7D7474575B265E267E7E7E7E7E7E7E7E5E5E5B + 298F8F8D95969A9C9D9EB2B29E9E9E9D979ACCCBCCCC024040B43E3E3E6B4443 + 454B50818383898C8C8CA5ABABABAB8B8B8B8B8BA88B8BA88B8B8B8B8B8B8B8B + A5A573757C78745A8767D2D8D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9 + D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D90AD2D2881F486E4F71716F7373 + 757B7FA799ADAFAF9992AA8B8C7C83797D597656575B2626267E7E7E7E7E7E7E + 7E7E5E5D5D848F8D95969A9C9D9E9EB2B29E9D9D979ACCCCCCCD0240403E3E3E + 3E6B444345745081838389898C8CA5ABAB8B8B8BA8A8A8A8A88BA8A8A88B8B8B + 8B8B8B8B8B7B75737C5453852DB3D2D9DDD9DDD9D9D9D9D9D9D9D9D9D9D9D9D9 + D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9DDDAD6D267465350204C4C + 71716F73758092A7AFAFAF999992AA8B8C8983797D505C74295B5B267E5E7E7E + 7E7E7E7E7E7E265D765C8F8A95969A9C9E9EB2B29E9E9E9D979ACCCCCDCD0240 + 40403E3E6B6B444345747D818383898C8CABABAB8BA8A8A8A897A8A89797AAAA + A8AAA8A8808B8B808B8BA58978747A47D2B3D8DDDDDDDDDDDDDDDDDDDDDDDDDD + DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD9DDDDD9DD04D1D264494B + 55204C4C4C6F7373757BA39999AFAFAF9992978B8C8983797D595C76575B265E + 5E7E7E7E7E7E7E7E7E7E5E5D295C8F8A90989A9C9E9E9EB29E9E9E9D979ACCCC + CDCD0240403E3E3E3E6BB54370747D798389898C8CABAB8BA8A88B9797AA97AA + AAAAAAAAAAAAAAAAAAAA7F8B8BA58C7C7D7E8564D2D2D9DDDDDDDDDDDDDDDDDD + DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDE2D2 + D251265255204C4C716F7373757BA392AFAFAFAE9992AA8B8C8983817D5C7457 + 575D265E265E7E7A7E5A7E7E7E5E5E5D848F8F9395989A9D9E9EB2B2B29E9D9D + 979ACCCCCDCD0240403E3E3E6B44434370507D798389898CABAB8B8B97979797 + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA80A57C795D8863D2B3E8DDDFDFDDDFDF + DDDFDDDDDFDDDDDDDFDDDFDDDFDDDFDDDFDFDDDFDDDDDFDDDDDFDDDDDDDDDDDD + DFDAD1D2654E4D50554F4C4C716F73737580A399A9AFAFAE9992808B8C89838A + 505074575B5B26267E7E7E7E5A5A7E7E7E5E5E5D845C7D8A90989A9D9EB2B2B2 + B29E9E97979ACDCCCDCD0240403E3E6B6B6B43436C50548A7C898CABAB8BA8A8 + 97AAAAAAAAAAAAACACACACACAC92ACACACAAAAAA80A5898F7A2DD2B3F8DDDFDF + DFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDF + DFDFDFDDDCE9D2D2421F5255204F4F4C716F6F7375809299AFADAFAF9992AAA5 + 8C8958797D5C27575B26265E7E7E7E5A7E7E7E7E7E5E5E5D848F8E8A90989A9D + 9E9EB2B29E9E9D9D979ACCCCCDCD0240403E3E6B446B43454B50547889898CAB + 8B8B9797AAAAAAAAACACACACACACAC9292ACACACACA3A3AA8BA5838482D2B366 + DD01DF01DFDFDF01DF01DFDFDFDFDFDFDFDF01DFDFDFDFDFDFDFDF01DFDFDFDF + DFDFDFDFDFDFDF01DA05D2654E45505520204C4C6F6F7373757B92A6999BAFAF + 9992AA8B8C8978797D5C5C575353265E5E7E7E7E7E5A7E7E7E5E265B848F8E93 + 96989C9D9E9EB2B29E9E9D9D979ACDCCCDCD02403E3E3E6B446B434548507983 + 898CABAB8B97AAAABAACACACACACBBBB92BBBBBBBBBBA7929292A39280A590D2 + B3D2D1E7F0E1DFDFDFDF01010101010101010101010101010101DF010101DF01 + 01DF01DFDFDF01DFDF010101E7D2D2881F746E544F4F4F4C716F7373757BA399 + A99BADAE999280A58C8978817D505C57575B265E7E7E7E5A7E5A7E7E7E7E5E5D + 298F8E9396989C9D9EB2B2B29E9E9D979AABCCCCCDCD02403E3E3E446B6B4345 + 48557983898CAB8BA897AAAAACACACBBBBBBBBBBBB99BB99A7BBA7BB92A7AC92 + 7F8B89B3B3B3B3B3B3DED1D1D105D6D6E6A0A0A0E7EBEBEFF4F4DF0101010101 + DF0101010101010101010101010101F0D1B3655A23506E4F4F4F4C4C716F7373 + 75809299AFAD9BAE999297A58C7C78815F2456575B265E5E7E7E7E7A7E7E7E7E + 7E5E5E5D848F8E9396989C9D9EB2B2B2B29E9D979A9ACDCDCDCD02403E3E6B6B + 44434345747D797C8CA58BA8A8AAAAACACACBBBBBBBB9999B9B999B99999A6A7 + A7A7A7A7AC80A5676767D2D2D2D1B3B3D2B3B3B3B3D1B3D1D1D1D1D1050505D8 + D6D8A0E8E2EA0AEBEBEFF6EFF3DFDF0101DFD9D6D2D251534850542020204C4C + 716F6F73758092A6AFAD9BAF999297A58C7C83817D7456235B265E7E7E7E7E7E + 7A5A7E7E7E5E5B29848F8E9596989C9E9EB2B2B29E9E9D979A9ACDCCCDCD023E + 3E3E446B4343456C505478898CAB8B97AAAAACACBBBB999999B9B9AEAEB9AEB9 + B9A69999B999A7A792AA80A589898A8A8E946161619F9F9F6666666767D267D2 + D2D2B3D2D2D2B3B3B3DED1D1D10505D6D8E3A0E8EAE7E3D2D2911F4B50542020 + 204C4F4C716F6F73758092A6AD9BAFAF999280AB899083817D7474235B261F7E + 7E7E7E5A7E5A7E7E7E7E5E5D848F8E95969A9C9D9EB2B2B29E9E9D979AABCDCC + CDCD023E3E3E444443436C6C50798389A58B97AAAAACACBBBBB9B999B9AEAEAE + AEAEA9A9AEAEA9B9A6A699A6A792A37F8075A5736F71784F546E5050745C7676 + 619161919F9F66669F66666666676767D267D267D2D2D2D2D2D2D2D29F494A50 + 55544F54206D4C4C716F6F7375809299AF9B9BAF999297A58C8378815F5C5629 + 53435E7E7E5A7E7E7A7A7E7E7E7E5E5D848F9495969A9C9EB2B2B2B29E9E9D97 + 9A98CDCDCDCD023E3E4444434345454B5079838CA58B97AAACACBBBBB9AEAEAE + AEAEAEAEAFAFAFA9A9A9A9AEA699A6A6A6A4A4A3A37F807B757573736F6F4C6D + 6D6D6E50504848486C4D5345434326265A919191919F9F9F666666B367D2689F + 436C5050204F4F4F204F4C4C716F6F73758092A9AF9B9BAF99AC97AB897C8A7D + 7D5C56295B265E7E7A7E7E7E7A7A7E7E7E7E5E5D848F9495969A9C9EB2B2B2B2 + 9E9E9D979AABCDCDCDCD023E3E6B444343456C4850797C8CABA8AAACACBB9999 + AEAEAEAEAEAFAFAFBEBEAFAFAFAFA9A9A9A9A6A6A6A6A7A4A3A37F7F7B7B7575 + 73736F6F6F4C4C4C6D6D6D6E505550505050481E4B4B2370232653262649495A + 491F43534824506E204F54206D4C4C4C716F737375809299AD9BADAF999280AB + 8C83797D7D74565B5B267E7E7E7A7E7E7A7A7A7E7E5E5E5D848F8D95969A9D9E + B2B2B2B29E9E97979A98CDCDCDCD026B44441F43434548487D78898C8BAAAA92 + BB99B9AEAEAEAFAFBEBEBEAFBEBEBEBEAFADA9AFA9A9A9A6A6A6A7A4A4A3A37F + 807B75757573736F6F6F4C4C4C6D4C6D6D4C6D2020556E6E5050505050525252 + 2452484B564B48745055556E55204F204F20204C6F6F6F73758092AFAD9B9BAF + 99AC97AB89838A7D5C5C56295B5E265E7E7A7A7E7E7A7A7A7E7E5E5D848F8D95 + 969A9D9EB2B2B2B29E9E9D979A98CDCDCDCD024E44441F4345454850547C89A5 + A8AAAC929999AEAEAFAFAFBEBEBEBEBDBEBEBEADADADADA9AFA9A9A9A6A6A7A4 + A4A3A37F7F807B7575736F6F6F6F6F6F4C4C4C6D204C204C4F6D20206E205455 + 5555555555505550555059556E55556E206E4F6D4F4F4C4C716F6F737580A799 + AD9B9BAF999297A58C838A7D505C295B535E7E7E7E7A7E7A7E7A7A7E7E7E5E5D + 848F9395989A9D9EB2B2B2B29E9E9D9AABABCDCDCDCD0244441F4343456C4850 + 547C8CA5A8AAACBBB9AEAEAEBEBEBEBEBEBEBDBDBE9BBEBDADADADADADA9A9A9 + A6A6A6A7A4A4A37F7F7B75757373736F6F6F6F6F4C4C4C4C6D4F4F4C4F6D2055 + 6D6E555554542055556E5455555554555555206E206E4F20204F6D4C716F7373 + 757F9299AD9B9BAF99928BA5897C797D5C5C295B5B7E7E7E5A5A7E7A727A7A7E + 7E7E5E5D848F9390989C9D9EB2B2B2B29E9D9C9A9A98CDCDCDCD024444434343 + 454A4850797C8C8BAAACBBBBAEAEAFBEBEBEBEBDBEBD9BB0BD9BB0BD9BADBDAD + ADADA9A9A9A6A6A7A4A4A3A38080757575736F6F6F6F6F6F4C4C4C6D6D4C4F6D + 6D2020555420556E6E5520555454546E6E555555542055545420544F204F4F4C + 716F6F737B8092A99B9B9BAF999297A58983797D595C575B265E7E7E5A7A7A7A + 7A7A7A7E7E5E5E5D848F9390989C9D9EB2B2B2B29E9D9D9AAB98CDCDCDCD0249 + 441F43456C1E506E787CA58BAA92BB99B9AFBEBEBEBEBE9BBDBDB0BDB0B0BDBD + BDBDADADADADADA9A9A9A6A6A7A4A47F807B7B7573736F6F6F6F4C4C4C4C4C4C + 4F20204F204F2054556E55555520556E54545455555555555554552054546D6E + 6D4F4F4C4C6F7373757FA4AEAD9B9BAF99928BAB8983797D5074565D267E7E7E + 5A7E7A7A7A7A7A7E7E7E5E5D848F8D95989C9E9EB2B2B29E9E9D979A988CCDCD + CDCD021F1F43534D4A48506E787CA58BAABB99AEAEBEBEBEBD9B9BB0B0BFBFBF + B0B0BDBFBDBDBDBDBDADADADA9A9A6A6A6A4A3A37F80757575736F6F6F6F6F6F + 4C4C4C4C4F204C4F6D202055555454556E54555420542054545555546E205454 + 20544F4F4F6D4C4C4C6F6F73757F92A99B9B9BAF9992978C8983795F5027295B + 267E7E5A7A7A7A7A7A7A7A7E7E5E5E5D5C8F9396989C9DB2B2B2B29E9E9D9C9A + 9898CDCDCDCD021F4343454D4B48506E788CA58092BBA7AEBEBEBE9BBD9BBFBF + BFBFB1BFBFBFBFB0BDBDBDBDBDADADADADA9A9A6A4A4A47F7F7B7B7573736F6F + 6F6F6F4C4C4C6D4C4C4C20204F202020546E6E6E545455555555556E55555555 + 205454545554546D4F4F4C4C716F6F737B7FA7AEAD9B9BAF99928BAB8983797D + 5C57575B5E5E7E7E7E7A727A727A7A7E7E7E5E84848E9396989C9EB2B2B2B2B2 + 9E9D9CAB988CCDCDCDCD021F4343456C48486E6E788C8BAAAC99AEAEAFBEBD9B + B0B0B0BFBFBFBFBCBCBFB0BCBFB0BDBDBDBDADADADA9A6A6A6A4A3A380807575 + 75736F6F6F6F6F4C4C4C4C4C4C4C204F4F2054204F5455555555555554555555 + 5555555455552020556E5420206D4C4C716F6F73757F92A99B9B9BAF9992A88C + 8983817D5C57575B7E7E7E7E7E7A7A7A7E7A7A7A7E5E5E5D848E9396989C9EB2 + B2B2B2B29E97979A9896CDCDCDCD021F4345454A48506E797C738BAAACA7AEAF + BE9B9BB0BFBFBFB1BCBCBCC0B1BCBCBCBCBCB0BDBDBDADADADADA6A6A4A4A47F + 7F7B7B7573736F6F6F6F4C4C4C4C4C4C4C6D20202055546E2055555455555420 + 55555554556E5555556E555520555420204F4F4C4C6F73737B7FA7AF9B9B9BAF + 99928BA58983817D5C56295B267E5E7E7A7A7A7A7A7A7A5A7E7E5D84848E9596 + 989C9EB2B2B2B29E9E9D97AB988CCDCDCDCD021F4345457448506E58718C8BAA + BB99AEBEBEBDB0BFBFBFC0BCC0C0B1C0C0C0C0B1C0BCBCBCBCBDBDADADA9A9A6 + A6A4A3A38080757575736F6F6F6F6F4C4C4C4C4F4F6D4F204F20202055556E55 + 555555555555555555555555556E6E556E54204F6D4F4F4C4C6F6F73757FA7AF + 9BB09BAF99AC8B8C8983817D5C565B53267E7E7E7A7A7A7A7A7A7A5A7E5E5E5D + 848E93969A9D9EB2B2B2B29E9E9D9A9A9896CDCDCDCD02435345534B50506E4C + 7CA580AABB99AFAFBEBDB0BFB1B1B1C0C0C0C0C0C0C0C0C0BCC0BCBCBCBDADBD + ADA9A9A6A4A4A3A3807B757573736F6F6F6F4C4C4C4C6D4F6D4C204F6E202055 + 556E5555546E55555555555555556E55556E55555420204F206D4C4C716F7373 + 7B7FA7AF9B9B9BAF99928B8C898381595C235B535E7E7E7E7A725A7A7A7A7A7A + 7E5E5E5D8F9493969A9D9EB2B2B2B29E9D9D9AAB8C96CDCDCDCD021F43454D4B + 505054587CA580AA99AEAFBEBDB0BFBFBFC0C0C0C0C0C0C0C0C0C0C0C0BCC0BC + B0BDBDADADA9A9A6A7A4A4A37F7B7B75736F736F6F6F4C4C4C4C6D4C4F204F4F + 202054205455546E556E55555555555555556E55556E5520546E2020204F4C4C + 4C7173737B7F99AF9BB09BAF99928B8C8978815027565B267E7E7E7A7A7A7A7A + 7A7A7A7A7E5E5E848F8E95969A9D9EB2B2B2B29E9E979AAB9696CDCDCDCD0226 + 53456C48505054587CA58092A7AEAFBEBDB0BFBFC0C0C0C0C0C1C1C1C1C0C0C0 + C0C0BCBCBDBDBDADADA9A6A6A6A4A37F807B757573736F6F6F6F4C4C4C4C4C4C + 6D6D4F206D2020545455545555555555556E5555555555555555555555542020 + 54204C4C716F6F75757F99AF9BB09BAF99AC8B8C89838159742953267E7E7E7A + 727A7A7A7A7A727A7E5E5E848F8D93989A9D9EB2B2B2B29E9E9C9AAB8C96CDCD + CDCD024325534B74506E4F4C7CA5809299AEBEBEB0B0BFC0B1C0C0C1C0C1C1C1 + C1C1C0C0C0C0BCBCBCBDBDADADADA6A6A6A4A3A37F7B757573736F6F6F6F6F4C + 4C4C4C6D4F4F4F20542054542055555454555550556E6E555555555555505555 + 552020204F4F4C4C717173737B7FA7AD9BB09BAF99AC8B8C8979815F74295326 + 7E7E7E7A7A7A7A7A7A7A7A7A7E5E5E5D8F9495969A9D9EB2B2B2B29E9D979A98 + 9889CDCDCDCD0226454D4A74506E5471738B7F92A6A9ADBEBDB0BFB1C0C0C1C1 + C1C1C1C1C1C1C1C0C0C0BCBCBCBDBDADADA9A9A6A6A4A47F8080757573736F6F + 6F6F4C4C6D4C4C4C4C20204F2020205420555455555555555555555555505555 + 55505555542020544F6D4F4C716F73737BA399AF9BB09BAF99928B8C908A7D5F + 565729265E7E727A7A7A287A7A287A7A7E5E5E848F8D90969C9DB2B2B2B2B29E + 9D979AB89696CDCDCDCD0226454D4B74506E547889A5AA9299A9ADBDB0BCBCC0 + C0C1C1C1C1C1C1C1C1C1C0C0C0B1BCBCBCBDBDADADA9A9A6A4A4A3A3807B7575 + 736F6F6F6F4C6F4C4C4C4C4F6D20204F20555455555454556E55555555505555 + 505055555555555554206E204F4F6D4C716F6F737B7F99AD9BB09BAF92AA8B8C + 898A815F565726267E7E7E7A7A7A727A7A7A7A7A7E7E5D848F9395989C9E9EB2 + B2B2B29E9D979A989690CDCCCDCD0225534A4A74506E4F71898B7F9299AFAD9B + BFBFC0C0C0C1C1C1C1C1C1C1C1C1C1C0C0C0BCBCBCBDBDBDADA9A9A6A6A4A37F + 807B7B7573736F6F6F6F714C4C4C4C4F4F4F4F20206E6E556E20545455555555 + 55555555555055505555505454542020204F6D4C4C6F6F737BA3A6AF9BB09BAF + 99AC8B8C7C8A7D5F5629535E7E7E7A727A7A282872287A7A7E7E91848F8D9598 + 9C9DB2B2B2B29E9E9D9A9A988C90CDCDCDCD02532545707450554F7873A5AA92 + B9AFBEBDBFB0C0C0C1C1C1C1C1C1C1C1C1C1C0C1C0BCC0BCBDBCBDADADA9A6A6 + A6A4A47F7F7B7575736F6F6F6F6F6F4C4C4C4F4F204F4F20206E555554545554 + 5455555055555055555050505555555555555520206D4C4C716F6F757BA3A6AD + B0B09BAF99AA8B8C838A7D50272953537E7E5A727A7A282828287A7A7E5E5E84 + 8F9395989C9EB2B2B2B29E9E9D9C9A8C9689CDCDCDCD025353221E50506E7971 + 6F8BAA92B9AFADBDBFC0C0C1C1C0C1C1C1C1C1C1C1C1C1C0C0C0BCBCBCBDBDAD + ADA9A9A6A4A4A3A3807B7B7573736F6F6F4C4C4C6D6D4C4C4F4F4F20206E5454 + 545554545555505055595555505550505559555554205420206D4C4C716F7375 + 7BA399ADB0B0B0AF99AA8B8983817D5C57235B5E5A7E7A7A7A7A7A28287A7A7A + 7E5E5D848F8A95989C9EB2B2B2B29E9D9DABAB969690CDCDCDCD0226234D225C + 59554F71738BAA92AEADADBDBFBCC0C0C1C1C1C1C1C1C1C1C1C1C0C1C0C0BCBC + BCBDADBDADADA9A6A6A4A3A3807B7575736F6F6F6F4C6F4C4C4C4C4C20202020 + 202054545454556E6E555055505550505055555055505555555554204F4F4F4C + 716F6F737BA3A6AD9BB09BAF99AA8B8C83815F5C5623537E7E7E7A7A7A827A28 + 2882287A5A5E5D848F93959A9C9EB2B2B2B29E9E9C9AAB969690CDCCCDCD0253 + 23234B7450545878738BAA92B9AFBEB0BCB1C0C0C0C1C1C1C1C1C1C1C1C1C1C0 + C0BCBCBCBCBCBDADADA9A9A6A6A4A37F7F7B757373736F6F6F6F4C4C4C6D4C20 + 6D4F6D20205454555454545555555550505550505055505055506E5555545420 + 204F4F4C716F73737BA399ADB0B19BAF99AA8B8983797D5C575D265E7E7E7A28 + 7A7A282828287A727E7E5D848F8D96989D9EB2B2B2B29E9D9C9A98B89090CDCC + CDCD022523234B5055545871737BAABBB9ADBEB0BFBFC0C0C1C1C1C1C1C1C1C1 + C1C1C1C0C0C0BCBCBCBDBDBDADA9A9A6A7A4A3A37F80757573736F6F716F4C4C + 4C6D6D4C204F6D6E20206E2020556E5550555550505550505955555055555555 + 55545420204F6D4C4C6F6F757B92A6ADB0B09BAF99AAA58C83817D74575D267E + 7E7A7A827A7A282828287A7A7E5E5D848E9396989D9EB2B2B2B29E9D979A9896 + 8983CDCDCDCD02264D224B50506E78718CA5AAA7AEAFBEBDBFC0C0C0C1C1C1C1 + C1C1C1C1C1C1C0C0C0C0BCBCBCBDBDADADA9A9A6A6A4A37F7F7B7575736F6F6F + 6F6F4C4C6D4C6D4C20202054546E546E6E555555555550505050505055505955 + 55505555552055544F4F4C4C716F73737B92999BB0B09BAF92AAAB8983817D74 + 575B265E7E7E7A282828287A2828827A5A5E5D848E93969A9D9EB2B2B29E9E9D + 9CAB98968990CDCCCDCD025325224B7450554F7C738BAAA7B9ADBDBDBFBFC0C0 + C0C1C1C1C1C1C1C1C1C1C0C1C0C0BCBCBCBCBDADADA9A9A6A6A4A3A3807B7575 + 736F6F6F714C4C4C4C6D4F204F4F20556E545455556E55555555505959505950 + 505050555050556E556E2055206D4F4C716F73757BA3A69BB1B19BAF9997AB89 + 83795F5C575B5E7E7E7E7A28772828282828287A7E7E5D848F93969A9D9EB2B2 + B2B29E9D97AB98969090CDCCCDCD025353231E48507D587C898BAAA7B9AFBDBD + BCC0C0C0C0C1C1C1C1C1C1C1C1C1C0C0C0C0BCBCBDBCBDBDADA9A6A6A7A4A3A3 + 807B7575736F6F6F6F4C4C6D4C4C4F4F6D2020202054555454546E5059555050 + 505050505050595950505555556E6E206D6D6D4C6F6F6F737B92A9ADB0B1B0AE + 99978B898A817D5C575B5E5A5A7A7A82727A282828287A7A7E5E5D848F93969A + 9D9EB2B2B29E9E9D9A9A8C969083CDCDCDCD025B5B23487450544F7C738BAA92 + B9AFBEBDBFB1C0C0C1C1C1C1C1C1C1C1C1C1C0C0C0C0BCBCBCBDBDADADA9A9A6 + A6A4A37F807B7573736F6F6F6F6F4C4C4C4C4F4F4F4F6E204F20555454555555 + 555550505050505050505050555555505555546E206D4F71716F6F758092AE9B + B0B19BAF92AAAB8983817D76535B265A5A727282282828287A777A7A7E5E5D84 + 9495969A9D9EB2B2B29E9E9D97ABB8968983CDCCCDCD022623234B4850555871 + 7C7BAABBAEAFBEBDBFC0C0C0C1C1C1C1C1C1C1C1C1C1C0C0C0BCBCBCBCBCBDAD + ADA9A6A6A6A4A37F807B7575736F6F6F714C4C4C4C4C6D204F205454206E2055 + 6E5555555050505050505050505050505055555555555420204F4F4C716F7375 + 7BA4A99BB0B19BAEBB97A58983815976575B5E7E7E7A7272282828282877287A + 7E7E5D848D93969A9D9EB2B2B29E9D9D9AAB96909090CDCCCDCD022625234B48 + 50554F7C898BAAA7B9AFBDBDBFBCC0C0C0C1C1C1C1C1C1C1C1C0C0C0C0C0BCBC + BCBDBDADADADA9A6A4A4A4A380757573736F6F6F6F4C4C6D4C4C6D4F4F4F5454 + 4F5520555555555550505050505059505050505950555055555554546E6D4F4C + 716F737580A4999BB1B19BAF9997A589587D5F275B5B5E7E7A5A287728282828 + 4E28287A7E7E5D618E95969C9DB2B2B2B29E9D979A9896898383CDCCCDCD0253 + 254D4A52506E5471898BAAA7AEAFBEB0BCC0C0C0C0C1C1C1C1C1C1C1C1C0C0C0 + BCC0BCBCBCBDBDBDADA9A9A6A7A4A37F807B7575736F6F6F4C4C4C6D4C6D6D6D + 4F2020546E5555555455505555505950505050505050505050505550556E5554 + 20204C4C4C6F6F758092AD9BB1B19BAF9297A589837D5C74295B5E7A7A727A7A + 28284E287A28287A7E7E5D848E95989C9DB2B2B2B29E9D9CAB989690908ACDCC + CDCD0226534B4B48505479718CA5A8A7B9AFBEBDBFC0BFC0C0C1C1C1C1C1C1C1 + C0C1C0C0C0BCBCBCBCBDBDADADA9A6A6A7A4A37F7F7B7575736F6F6F71714C6D + 4C4C6D4C6D202020542055556E55505955505050505050505050595050505955 + 555555546E4F4C4C4C6F73758092A9BDB1B19BAFACAAAB898A7D5C765D5E5E7E + 7A727A7A287777827A287A7A7A5E5D848E95989C9DB2B2B2B29E9D9C9A989690 + 908ACDCCCDCD0226252356485055547889A5AAACB9AFBEBDBCB1C0C0C0C1C1C1 + C1C1C1C1C0C0C0C0C0C0BCBCBCBDBDADADA9A9A6A7A4A37F807B7575736F6F6F + 71714C4C6D4F4F4F4F206E202055555455555555505055505050505050505059 + 505955555555556E6D4F4F4C716F737580A4A99BB1B19BAF92978C89587D5957 + 5D267E5A7A7A2828282828288228827A7E5E5D8F8D95989C9E9EB2B29E9E9D97 + AB8C96909083CDCCCDCD022653234A74506E4F787C7B7FA7B9AFBEBDBFBCC0C0 + C0C1C0C1C1C1C1C1C1C0C0C0C0BCBCBCBDBCBDBDADA9A9A6A4A4A3A380757573 + 6F6F6F6F4C4C4C4C4C4C206D2020552054556E6E555555555050505050505074 + 5250505059595550555454204F4F4C4C716F737580A4A9B0B1B1B0AE92978C89 + 837D59575D267E7A7A28287777827A607728827A7E5E5D619495989C9E9EB2B2 + B29E9D9A98988990838ACCCDCDCD022653232348505054786FA5AAACB9BEBEBD + BFBFC0C0C1C0C1C1C1C1C1C1C1C0C0C0C0BCBCBCBCBDBDADADA9A6A6A7A4A37F + 807B7575736F6F6F714C4C4C4F4F206D2054546E6E5454545555595050595050 + 50505050505024505050505555556E546E4F4C4C6F6F6F7580A4AD9BB1B19BAE + 9297AB898A7D5C765D5E7E7A7A282882822882828260287A7E5E5D8F8D95989C + 9EB2B2B29E9E9D9AAB968990838ACCCCCDCD025E265322525055547889A5AAAC + B9AFADBDBFBFC0C0C0C0C1C1C1C1C1C0C0C1C0BCC0C0BCBCBDBCBDADADA9A9A6 + A4A4A37F807B7575736F6F6F714C4C4F6D4F6D20202020206E5454546E555055 + 505050595050242450595059505059555055546E204F4C716F6F73757FA4A9B0 + B1B19BAEAC978C7C7959275D5B5E7E5A7A7A2882772860828228827A7E5E848F + 9395989C9EB2B2B29E9E9D9AAB969683838ACCCCCDCD02262653224848505478 + 7C75AA92B9AFADBDBFBFC0C0C0C1C0C1C0C1C1C0C1C0C0C0C0BCBCBCBCBDBDBD + ADA9A6A6A4A4A37F807B75736F6F6F71714C4C6D4C4F4F6D545420556E545555 + 556E55505050505924502450595074505050505055555555204F4C4C6F6F7375 + 7FA7ADB0B1B19BAEAC978C838A7D7457535E7E7A7A2828607760826060287A7A + 7E5E84619395989DC2B2B29E9E9D979A98968990838ACDCCCDCD022653532348 + 24506E7889A5AAACB9AFBEBDBFC0C0C0C0C0C1C1C1C1C1C1C0C1C0C0BCBCBCBC + BCBDADADA9A9A6A6A7A4A37F807B7575736F6F6F4C4C4C4C4F4F204F20542054 + 54205455555555595059595050502450525050505050505555556E54204F6D4C + 716F737580A7ADB0B1B19BAEAC978C9081505C5B265E5A5A7A7A778282606077 + 6060827A7E5E5D8F93959A9C9EB2B2B29E9D979A968990838A8ACCCCCDCD0226 + 53534A48525054787CA58092B9AFBEBDBFBFC0C0C0C0C0C1C1C1C1C0C1C0C0C0 + C0BCBCBCBCBDBDADADA9A6A6A4A3A37F807B7573736F6F6F4C4C4C6D6D4F4F20 + 2054545455555554555050595950505052507452742448505959505055556E54 + 204F4C4C6F6F6F757FA4ADB0B1B19BAE928B8C83815F5C57267E7E7A7A282882 + 828282608282287A7E5E848F93969A9D9EB2B2B29E9D979A989690838A8ACDCC + CDCD022626534D4B485054587CA5AAACB9AFBEBDBFBFBFC0C0C0C1C1C1C1C1C0 + C0C0C0C0BCBCBCBDBCBDBDADADA9A6A6A4A4A37F807B7573736F6F714C6D4C4C + 4C2020205555545454546E555555555059505050247450272424245024595050 + 595555204F6D4C71716F737580A7ADB0B1B19B99ACA88C83817D745B5E7E5A7A + 7A282828606060606060827A7E7E848F93969A9D9EB2B29E9E9D97AB96968983 + 8A81CCCCCDCD02265B53234B745054587CA5A8ACB9AFBEBDBFBFC0C0C0C0C0C1 + C0C1C0C1C0C0C0C0C0BCBCBCBCBDBDADADA9A9A6A4A4A37F807B7573736F6F6F + 4C4C4C4C204F204F202055545454555550555050502424245974745274522450 + 5924505050556E55206D4C716F6F737B7FA7ADB0B1B19BAEAC978C83815F565B + 5E7E7E727A8277776060606060607A7A7E5E848F93969A9D9EB2B29E9E9D9AAB + 969690838A81CCCCCCCD021F265B534B485054587CA580ACB9AFBEBDBFBFC0C0 + C0C0C0C0C1C1C0C0C1C0C0BCC0BCBCBCBDBDADADADA9A6A6A4A4A37F7B7B7573 + 736F6F6F4C4C6D4F4C6D4F20546E545555555555555550555059745250747424 + 527424745950505055555454204F4C4C716F73757FA7ADB0B1B19BAE928B8C83 + 815029535E7E7A72777782778260606060287A7A7E5E848F93969A9D9EB2B29E + 9E9C97AB9689908A8A8ACCCCCDCD021F2653234B485054787CA580ACA6AFBEBD + B0BFBCC0C0C0C0C0C1C1C0C0C0C0C0C0BCBCBCBCBDBDBDADA9A9A6A6A4A3A37F + 807B75736F6F6F714C4C4C4C20204F2055205455555555555555505050595052 + 50242424242452745050505055555520204F6D4C716F73757FA6ADB0B1B19B99 + AC8B8C837D5F7653267E7E7A82287777608260606028827A7E5E848F93969A9D + 9EB2B29E9D9D9A989689908A8A81CCCCCDCD022626255B4B745055787C73A8AC + B9AFBEBDBFBFBCC0C0C0C0C1C0C1C0C1C0C0C0C0C0BCBCBCBDBDBDADADA9A6A6 + A4A4A37F80757573736F6F4C4C6D4C4C4F206E20545520556E557D5555505050 + 505050507424245252242424505050505055556E6E6D6D4C716F737B7FA6ADB1 + B1B19BAEAA8B8C837D5C565B5E7E7E7228777760607760608260827A7E5E848F + 93989A9D9EB2B29E9D9CAB98968990838A81CCCCCDCD02262653232274505478 + 71A580ACB9A9ADBDB0BFC0C0BFC0C0C0C1C0C0C0C0C0C0C0BCBCBCBCBDBDADAD + ADA9A6A6A4A4A37F7B7B7573736F6F714C4C4C6D4C2020205420205555556E55 + 505050505959502474242424247452242424505059555454204F4C4C716F7375 + A3A6ADB0B1B19B99ACAB8C8A815C7653267E5A7277777760606060828260287A + 7E5E848F95969C9D9EB2B29E9D9C9A8C9690838A8A81CCCCCCCD0226265B2322 + 52507D587CA580ACB9AFBEBDBDBFBCC0C0C0C0C0C0C1C1C0C0C0C0C0BCBCBCBC + BDBDADADADA9A6A6A7A3A37F807575736F6F6F714C6D6D6D4F4F202020205554 + 55505555505050505050245924525224242424745250505050555554204F4C4C + 6F6F737B7FA6ADB1B1B19B9992AB89837D5C5753265A5A287728607760776060 + 82827A7A7E5E619493969C9D9EB29E9E9D97AB988990838A8181CCCCCCCD0249 + 265B534B2774555871A5A8AC99A9BEBDBDBFBFC0C0C0C0C0C0C0C0C0C0C0C0C0 + BCBCBCBCBDBDADADA9A9A6A4A4A4A37F7B7B75736F6F6F4C4C4C4F4C204F4F20 + 20205554556E5555595959502450505924245224502452522448245050505555 + 546D4F4C6F6F737BA3A6ADBCB1B1AF99AA9A89837D5C575B5E7E7A7A7A826060 + 827760606082827A7E5E849495969C9D9EB29E9E9D97988C9690838A818ECCCC + CDCD02262626234B745055797C73A8ACB9AFBEBDBDBFBCC0BFC0C0C0C1C0C0C0 + C0C0C0C0BCBCBCBCBDADADADA9A9A6A6A4A4A3807B7575736F6F71714C4C4C4F + 6D6D205420205420555455555050505024747424242424525252522424505050 + 505555554F4F4F4C716F737BA3A6BDB1B1B19B99ACAB898A7D5C57537E5A727A + 28776060827760826082825A7E5E848F95989C9E9EB29E9D9D9A98969090838A + 8181CCCCCCCD027E5E2625224B507D587C8CA8ACA7A9BEBEBDB0BCBFC0C0C0C0 + C0C0C0C0C0C0C0C0BCBCBCBCBDBDADADA9A9A6A4A4A3A37F7B757573736F6F71 + 4C4C4C4F4F4F5420206E55545555556E50555924592459272424241E52215224 + 522450507D555555206D6D4C6F6F757BA3A6ADB1B1B1AF99AAAB898A7D5C5753 + 7E5A7A7A28776060828260826082827A7E5E849495989C9D9EB29E9E9D9A9896 + 90908A81818ECCCCCDCC027E26535B234B507D587173A8A3B9AFADBDBDBFBCC0 + C0B1C0C0C0C0C0C0C0BCC0C0BCBCBCBDBDBDADADA9A9A6A6A4A47F7F7B7B7573 + 6F6F6F4C4C4C4F4F4F4F20202020556E6E555555505950505059242724245252 + 2121485224245050505055544F4F4C4C716F737BA3A6ADB1B1B19B9997AB8979 + 7D745B267E5A727A776060776060886077607A7A7E5E849495989C9EB29E9E9D + 9C9A988990838A8A8181CCCCCCCD025A262625234B505079718C8BACBBA9BEBE + BDBFBCBCC0BFC0C0C0C0C0C0C0C0C0BCBCBCBCBDBDADADADA9A6A6A6A4A47F80 + 7B7575736F6F71714C4C4F206D206E55556E206E54505055505950505C592424 + 2452524827211E522452505050505554544F4C4C6F6F737BA3A6BDB1B1B0AF99 + AAAB89795F5C5D5E7E7A7A77286060777760608860607A7A7E5E849495989C9E + C29E9E9D979A9896908A8A817D81CCCCCDCD025A1F535B4B48507D79718C8BAC + B9AEBEBDBDBFBFBFBFC0C0C0C0C0C0C0C0C0C0C0BCBCBCBDBDBDADA9A9A9A6A4 + A4A37F7F7B7B75736F6F71714C4C4F6D202020546E5555555055555050505074 + 7452242452525252521E52482474505050555554546D6D4C716F737BA3A69BB1 + B1B1AF99AAAB898A7D5C5D5E7E7A282877606060607760778260827A7E5E8494 + 95989C9E9E9E9E9D97AB969690838A81817DCCCCCCCD027E2653254D4B527D4F + 7C738BAAA7A9ADBEBDBFBFBFC0BFC0C0C0C0C0C0C0C0C0BCBCBCBCBDBDBDADAD + A9A6A6A6A4A4A3807B7575736F6F4C4C4C4C6D2054546E20556E545555555550 + 505059505052522448521E214821522724242450505555544F204C4C6F6F737B + 92A9ADB1B1B0AF99AA8C898A7D5C5D267E72828277776060608860608260777A + 7E5E849395989CC2C29E9E979CAB9690908381818E7DCCCCCCCD025A5E5B5323 + 4A5C50547C8C8BAAA7AEADBEBDBFBFBCBCC0C0C0C0C0C0BCC0C0C0BCBCBCBFBD + BDADADA9A9A9A6A7A4A3A3807B7575736F6F71714C4F4F4F4F206E5520545555 + 55555055505050245024244848521E52481E48524852505050505555204F6D4C + 716F737BA3A69BB1B1B09BBB97AB89815F765B267E7A28607760828288608860 + 7782287A7E5D618D95989DCA9E9E9E9D97AB9690908A81818E7DCCCBCCCD025A + 5E26535B4B745954788C8BAABBA9ADBDBDB0BFBFBCC0C0BFC0BCC0C0BCBCC0BC + BCBCBDBDBDADADADA9A9A6A4A4A37F807B75756F6F6F714C4C4F6D4F6D20206E + 6E556E555050505050505059272424522748212752481E521E74245050555555 + 6E4F4F4C716F757BA3A6BDB1B1B0AF99978C83815C765D5E5A7A286060828288 + 6088607760607A7A7E5E618D95989DC29E9E9D9D9A989690838A8A81817DCCCC + CCCD025A5A26262356485079718C8BA3BBB9AFBDBDBDBFBFBFBCC0C0C0C0C0C0 + C0C0BCBCBCBCBDBDBDADADA9A9A6A6A7A4A3A3807B7573736F6F714C4C6D4F4F + 202054546E555555555555505050507424242427522152525221525248525C59 + 50595555204F4F4C6F6F737BA3A6BDB1B1B0AF92978C83815C295D5E7E722877 + 60606060888288608260827A7E5D6194969A9C9D9E9E9D9C9A989690838A8181 + 7D8FCCCCCCCD025A5A2653234B747D54838C8BAABBB9ADBEBDBDBFBFBFBFBFC0 + BFC0BCBCC0BCC0BCBCBCBDBDBDADADA9A9A9A6A7A4A37F807B7573736F6F4C4C + 6D4C4F4F206E545454206E555050505050507474502448482421525248485252 + 52272474505555546E4F4F4C716F737BA3A99BB1B1B1AF998B8C90815C295B26 + 5A7A827777606088828288607760827A7E91618D96989D9E9E9E9D9C9A8C9690 + 8381817D7D7DCCCCCCCC025A7E4353532274505478898BAABBB9AFBEBDBDBFBF + BFBFBFBFC0C0C0C0C0BCBCBCBCBDBDBDADADADA9A9A6A6A4A4A37F807B75736F + 6F6F4C4C6D4C4F4F205454556E545555555050505024597452524852241E5227 + 7452521E52522424505055556E4F4F4C716F757BA3A99BB1B1B0AFBB978C8381 + 5C765B5E5A82772882886088888860778860287A7E5D6193969ACAC29E9E9D9C + 9A9689908A81817D7D7DCCCCCCCD027E7E2653235674506E7C898BAABBB9BEBE + BDBDBDBFBFBFB1BCBCBCC0C0BCBCBCBFBFBCBDBDADADADA9A9A6A6A7A4A37F80 + 7B7573736F716F4C4C6D204F205554556E6E556E555050595024507424521E74 + 48525621747421485248242450595055204F4F4C6F6F737BA4A9B0B1B1B0AF92 + 978C837D5C575B7E7E7A288277608288888860778282287A7E5D8F8D969A9D9D + CA9E9D9798989090838A8E7D7D5FCCCCCCCD025A5A265323565250817873ABAA + BBB9A9BEBDBDBDBFBFBFBCBFC0BCBCBCC0BCBCBCBFBDBDBDBDADADA9A9A6A6A4 + A4A37F807B75736F6F714C4C4F4F204F55545455556E55555559595050507424 + 24521E1E242756567448214821212424505055556E4F6D4C716F757BA3A9B0B1 + B19BAFBBA88C837D5C29537E7A28827782777777888888608282827A7E918F93 + 969A9DC29E9D9D9A989690838A818E7D5F59CCCCCCCC025A5A26265323485081 + 78898BAABBB9AFBEBDBDBFBFBFBFBCB1BFBCC0BCBCBCBCBCBCBDBDBDADADA9A9 + A9A6A7A4A4A37F807B7573736F714C4C4F20206D202055545454555555595050 + 505024745252212174481E5622527452525274242450555555544F4C716F737B + 92A99BB1B1B0AE928B96837D745D267E7A28778277608888888877607782827A + 7E5D8F93969A9D9D9E9D9C9AAB9690838A817D7D7D5FCCCCCCCD025A7E262653 + 234B50818389A5AABBB9AFBEBDBDB0BFBFBFBFBCBFBFC0BCBCBCBCBCBDBDBDBD + ADADA9A9A9A6A6A4A3A37F7B7B75736F6F71714C6D4F204F2054545454555555 + 555050505274242424522121564B524852522224212124245950555554204F4C + 716F7380A4A6B0B1B19BAFAC9A8C837D765D5B7E7A2882606060888588888888 + 8877827A5E918F93969A9D9EC29D9C9A9889908A817D7D5F7D5FCCCBCCCD0272 + 5A2626535774597D7889A5AABBB9AFBEBDBDBDBDBFBFBFBFBFBCBFBFBCBFBCBD + BFBDBDBDADADADA9A9A6A7A4A4A37F80757573736F714C4C4F6D202054205520 + 205555555950502424242452245252272752487474272152521E522424505555 + 55544F4C4C6F737BA4A9BDB1B1B0AFAC8B898A5F5C5D5E7E5A82826088888888 + 888888886060777A7E848F93989A9D9D9D9D9C9A9896908A8A817D7D7D5FCCCC + CCCD02727249265B4D56596E787CA5AABBB9A9BEBEBDBFBDBDBFBFBFBFBFBFBC + BCBFBFBFBDBDBDBDADADA9A9A9A6A6A4A3A37F807B75736F6F714C4C4F6D204F + 545555545555555050505024502424521E5274564848562752212152521E5224 + 5050555555544F4C6F6F737BA4A9B0B1B1B0AEAC8B898A7D765D5E7E7A7A8277 + 77607788858888886060827A7E918F93969C9D9D9D9D9C9A9690908A81817D5F + 5F74CCCCCCCC025A7E5A26535722507D7889A5AA92B9AFBEBDBEBDBDBFBFBFBF + BFBFBFBFBFBFBFBFBDBDBDADADADA9A9A6A6A4A4A4A3807B7B75736F6F714C4C + 6D4F20206E545455555550505024245050747452747448564B744856524B5622 + 212452242450505554206D4C716F738092A9B0B1B19BAEAC9A89795F5C5B265A + 8277777777888888858888606060287A7E848F93989C9D9D9D9C9C989690838A + 817D7D5F5F5CCCCCCCCC025A497E26535D56747D7889A5AABBB9AFBEBEBDBDBF + BDBFBDBFBFBFBFBFBFBFBFBFBDBDBDBDADADA9A9A9A6A6A4A3A380807575736F + 6F4C4C4F4F204F2020545555556E505050245074742474522152522756524874 + 2227485252525224505055552054544C716F737BA4A99BB1B19BAEACAB89795C + 565B5E7E7228608288518888888888888882827A7E918F93989ACA9D9D9C9A98 + 9690838A817D8F5F5F5FCCCBCCCC027A5A7E265B235750545889A5AAACB9AEBE + BEBEBDBDBFBDBFBFBFB0BFBFBFBDBFBDBDBDADADADADA9A9A6A6A7A7A37F7F7B + 7575736F714C4C4C6D6D54545455555455555550505024592424525227527448 + 2748524852274856277452525250506E55204F4F716F738092A9B0B1B19B99AC + AB89815957535E492877777760888888515188886060827A5E919495989C9D9D + 9D9C9A989690838A8E7D5F5C595CCCCCCCCC027A5A5A2653234B527D7989A5AA + 92B9A9BEBEBDBDBDBDBDBFBFBFBFBDBFBFBDBDBDBDBDBDADADADA9A9A6A6A7A4 + A3A3807B7B756F6F714C4F4F6D4F6E2055555555555555555959485024524848 + 5221564B2227522221524822275252522459505554544F4F6F6F7580A4A9B0B1 + B19BAEAAAB89815C575E5E5A7282607788888888888888886082827A5E848F95 + 989C9D9D9D9C9A9896908A8A8E7D7D5F5C5CCBCCCCCC027A727E26532356747D + 787CA5A8ACB9AEBEBEBDBDBDBDBFBDBDBFBFBFBFBFBFBFBDBDBDBDADADA9A9A9 + A6A6A7A4A3A3807B7B73736F6F4C4C4C20205420545455555550505050507424 + 27484821484856527452222174484B524852487424505055556D4F4C716F757B + A4A9B0B1B19B99AAAB90795C575D5E7A7A826077888888518588518888827A7A + 7E849495989C9DCA9D9C9A9890908A817D5F5F5C5C5CCCCCCCCC027A725A1F26 + 5356747D5889A5A8ACB9A9AFBEBEBDBDBDBDBDBFBDBFB0BFBDBDBDBDBDBDADAD + ADADA9A9A6A6A4A4A37F807B75736F6F714C4C4F20206E6E5555555555555050 + 50502424245227525652525248484B22224B5674522148742424505555544F4C + 716F7580A4A9B0B1B19B99AAAB90795C575B5E72827777888888888885888888 + 88607A7A5E849495989C9C9D9D9A9A98908A8A8E7D7D5F5C5C5CCCCCCCCC0228 + 5A5A1F265357747D587CA5A8ACB9AEBEBEBDBEBDBDBDBDBDBDBDBFBDBDBFBDBD + BDBDBDADADA9A9A6A6A7A4A3A37F807B75756F6F714C4C4F204F546E55556E55 + 5559505024747424525221485221214B22214A22224822275648525252505555 + 55544F4C716F7380A4A9B0B1B09B99AAAB90815C295E7E7A8277777788888888 + 888888888882827A5E848E95989C9D9D9C9A9896908A8A817D5F5F595C5CCCCC + CCCC025A725A1F2653297450797CA5A8ACB9A9AFBEBEBDBDBDBDBDBDBDBDBDBD + BFBDBDBEBDBDADADADA9A9A9A6A6A7A4A37F7B7B75736F6F714C4F4F20542055 + 55556E555555555059745024274848272148214B221E4A224B2222274B4B5224 + 2450505555204F4C716F7380A4A9B0B1B19B99AAAB907D5C76265A7228777788 + 778888858888888860827A7A7E849495989C9D9D9C9A9896908A8D8E7D5F5C59 + 5C5CCCCCCCCC0272725A7E2653577450797C8CA8ACA7A9AFBEBEBDBEBEBDBDBD + BDBDBDBDBDBDBDBDBDADBEADA9A9A9A9A6A6A7A3A37F807B75736F6F714C4C4F + 4F6E54546E6E5555555050505050242452527456274821224B1E22224A221E22 + 2752525224595050554F6D6D716F7580A7ADB0B1B1AF99AA8C837D5C5D5E7E7A + 2860888888888885858888886060827A5E849495989C9C9C9C9A9896908A8A7D + 7D5F5F595C5CCCCCCCCC027A7A5A7E2653237459797C8CA8ACBBAEAFBEBEBDBE + BDBDBDBDBDBDBDBEBDBDBDBDBEBDADADA9ADA9B9A6A4A4A3A37F807B75736F6F + 714C4F6D4F205554545555555050505052242452525274565648481E4A224B22 + 4A4A2248275252522450505555544F4C6F6F7380A4A9B0B1B09BBB978C837D5C + 5D5E7E728277778888858885858888858877827A5E619495989C9D9C9C9A9696 + 907981817D5F5F5C5C5CCCCCCCCC0228725A7E265B23567D79838C8BACBBB9AF + BEBEBEBDBDBDBEBEBDBDBDBDBDBDBEBDBDADADADA9A9A9A6A6A4A7A37F7F7B75 + 75736F714C4C6D4F205455555555555555505050242474521E521E4B561E211E + 1E4B4A2222562221214821212459505055204F4C716F7580A4A9B0B1B09B9997 + 8C835F765D5E5A7A8277888888858585858588886082607A5E619396989C9C9C + 9A9A9690838A817D5F5F5C5F5C5CCCCCCCCC02287A727E265323747D797C8CA8 + AABBB9AEAFBEBEBEBEBDBDBDBDBDBDBDBDBDBDBEADADADADADA9A6A6A6A7A4A3 + A380807575736F6F4C4C4F4F4F5454546E55555550505950502448742156481E + 4B1E2222561E1E4A22222222224848485250505555204F4F4C6F7580A4A9B0B1 + B0AF99978C8A7D745D7E7E7A7777778888858585858588888882827A5E849495 + 989C9C9C9A9896908A8A8E7D5F5F5C5F5C5CCCCCCCCC0228285A5A26264D565C + 81788C8BBABBB9AFAFBEBEBDBEBDBEBDBDBEBDBDBDBDBEADBDBEADA9A9A9A9A6 + A6A4A4A37F807B7575736F714C4F6D6D545455556E5550555050745024525252 + 52225248214A1E1E4A22524B2222224A2252275252595055556E204F716F7580 + A4ADB0B1B0AFBB978C837D765B265A7277607788858888858585858588827A7A + 5E849396989C9C9A9A9896908A8A815F5F5F5F5F5C5CCCCCCCCC022828724926 + 535B575079838C8BAABBB9AEAFBEBEBEBDBEBEBDBDBEBDBEADBEBDADBEADBEAF + ADA9B9A6A7A4A4A37F807B75756F6F714C4C4F4F545454545455505050594874 + 522452482727221E224A1E4B4822234D22224A4A225256564859505055546D4F + 4C6F7580A4ADB0BCB0AF9E97968A5F5C5B7E7A60826088888885858585858588 + 88827A7A5E619395989C9C9A989896908A817D5F7D5F5C5C5C74CCCBCCCC0228 + 827A5A26265B56597D788C8BAABBB9AFAFBEBEBEBEBEBDBEBEBDBEBDBEBEADAD + AFADA9A9A9A9B9A6A7A7A4A37F807B7573736F714F4C4F4F2054205555555055 + 5024507424525252522127524B222223224B4B22234D222222484B4852505050 + 55544F4F716F757FA4ADB0B1B0AF92978C8A5C295B7E72827760778888888586 + 858588888882827A5E619396989C9C9A989696908A817D5F5C5C5C747474CCCC + CCCC022828725A1F535B57506E838C8BAABBB9AEAFBEBEBEBEBDBEBDBEBEBDBE + BDBEAFADADAFADA9A9A9A6A6A7A4ACA37F807B75736F71714C6D6D4F4F206E55 + 5555505559505050244852485622272122221E4A575722222257222256224B1E + 482459555555544F4C6F757FA4A9BDB1B0AFBB8B89795C575E7E7A7760608885 + 858585858585858888827A7A5E8F9396989A9C9A989690938A8E7D7D5C5C5C5C + 5C5CCCCCCCCC022872285A7E265B5750817889A5AABBB9AEAFBEBEBEBEBEBEBE + BEBEBEBEBEADBEBEADADA9A9A9A9B9B9A7A7A3A37F807B7573736F714C6D4F6E + 545454555555555050502424745252524822221E22224A22224A234A4B232222 + 2256561E2450505055204F4F4C6F7580A7ADB0B19BAFACA8968A5F295E7E7A77 + 7777888885858585858585856082827A5E619396989A9C989896908A8A817D5C + 5F5C5C745C5CCCCCCCCC0228287A5A5A2625575C7D838C8BAABBB9AEAFAFBEBE + BEBEBEBEBEBEBEBEBEBEADA9AFADA9A9A9B9A6A7A7A7A3A380807B75736F6F71 + 4C4F6D206E545555505550505024505974245252521E52574A4A574B4A4A2322 + 4A23224B4A221E527450505055544F4F716F757FA7A9BCB1B0AFAC8B89795F57 + 267E7A2860888585858585858585858588827A7A91619396989C9A9A9896958A + 81817D5F5F5C5C5C5C74CCCCCCCC027728285A5A265B575C7D78B8A5AAACB9AE + AEAFAFBEBEBEBEBEBEBEBEADBEADAFA9ADA9AFA9A9B9A6A6A7A4A37F7F7B7B75 + 736F71714F4F4F545454556E50555050505274245248484B561E211E4B22224A + 4B2222224A22234D221E48271E4850505555204F4C6F757FA7ADB0B09BAFAC8B + 89815C575E7E7A6060888885858585868585858888607A7E5E8F9396989A9A98 + 9696838A8E7D5F5F5C5C5C5C7674CCCCCCCC0228287A727E265B575C7D7889A5 + AAACBBB9AEAFAFAFBEBEBEBEBEBEBEAFADAFBEBEA9A9AEA9A9A6A6A7A4ACA3A3 + 807B75A5736F714C4C4F4F545454545555505050505052525252527456222222 + 23224A4A2223234B5722574A4B4A4A5648485059552020204C6F757FA7ADB0B1 + 9BAFACAB89815C5D5E7A7A286077888586858585868585886060827A918F9396 + 989A9A9896908A8A8E8E5F5C5C5C5C5C7476CCCCCCCC027772285A7E1F5B5774 + 7D8389A5A8ACBBB9AFAEAFAFBEBEAFBEBEBEBEA9BEADA9A9A9A9A9A9A6A6B9A7 + A7A4A37F807B7B73736F6F4F4F4F4F6E55546E50555550502474505248485274 + 224A4A22225622222323226C7023232223564A48482450505555204F716F757F + A4ADB0B19BAEACAB90815C5D5E5A7A7777888585858586858686858888607A7E + 5E8F9396989A989896908A81817D5C5C5F5C5C275627CBCCCCCC024E77285A5A + 265323567D7989A5A8ACBBAEAEAFAFBEAFBEBEA9BEBEAFBEBEA9AFA9AFA9A9B9 + B9A6A7A7A7A3A3AA807B7573736F71714C4F4F4F55556E6E5055505924242452 + 484B2756221E22564A4B2270704B4B562223224A4B224B5674245050506E6E4F + 4C6F757FA7ADB0B09BAEACAB90815C575E7A8260778885858585858685858585 + 88607A7E91619398989A9A9895908A8D817D5F5C5C5C5C575657CCCBCCCC0277 + 77287A5A262623747D8A89A597ACBBB9AEAEBEAEAFAFBEAEBEAFBEA9A9AFA9A9 + A9AEB9A9A6B9A7A7A3A7AA7F808B75736F6F714F4F6D4F54556E6E5555505050 + 50525248485652486C4A4B221E4B4A2323224B5622222222234A225648522450 + 5055204F4C6F757FA7ADB0B09BAEAAAB897D5C535E7A77608288888585868686 + 858585858860827E916195969A9A989896908A8E7D5F5F5C745C5C567684CCCC + CCCC026028285A5A1F2653767D797CABA8ACBBB9B9AFAEBEAFBEAFAFBEA9AFBE + AFAFAEA9B9A9A9B9B9A7A7ACA7A3A3AA807B758C736F714C4F4F54546E555550 + 55505059505252525221524B4A23234A4A22224A222223295656574B224A4A27 + 522450505555206D4C6F757FA7ADB0B09BAEAAAB907D5C5B495A827760888585 + 858586868585858888827A7E919493989898989690838A8D8E5F5F5C5C275629 + 5657CBCCCCCC02607728285A5A265B76507989A5A8AABBB9AEAEAFA9AFB9AEBE + AEBEAEA9A9A9A9A9B9A9B9B9A6A6A7A7A3A3AA80807BA5736F6F784C4F546E6E + 545555555550505024244821221E52564A2256232222232323235723564B5723 + 23232248525224245555204F4C6F757FA7ADB0B09B99AAAB837D5C5B7E5A7A82 + 88858585858686868686858588607A7E919495969898989690958A8E8F5F5C5C + 5C7476575629CCCBCCCC0260282828725A265B565979838CA8ACBBBBB9AEAEAE + AFAFBEAEBEAEA9AEAEAEA9B9A9B9A6B9A7B9BBA7ACA37F808B7575736F71714F + 4F6D546E555555555050505250527474745222224B222222224A4D2322572223 + 232322232223221E272724505055206D4C6F757FA7ADB0B09B99AA98907D7626 + 7E7A827788888585868686868685868888607A7E918F959698989896908A8A8E + 7D5F5C5C5C5656575729CCCBCCCC026060287A5A5A265356507989A5A8ACBBBB + B9B9B9AEAFAEAFA9AFA9AFAFA9A9AEA9B9B9A6B9B9A7A7A792A3AA807B8B7373 + 6F6F4C4C4F4F5454555559505050502424485274524822564B222256234A4D23 + 22225623232323234A224B1E215224505555544F4C6F757FA7ADB0B09B99978C + 835F27267E7A777788888585858686868685868588827A7E9194959898989896 + 908A817D5F5F5C5C842757575729CCCCCCCC02606060285A1F2653575C7983A5 + A8BAACBBB9B9AEAEAEAEA9AEAEAEAEAEAEA9A9B9B9B9B9B9BBA7A7ACA3A38080 + 8B75A5736F71714C4F545455555555505050747474482756524A222222224B4D + 4A56232323222323232229574A22224A52527450555554204C6F757FA7ADB0B0 + BE99978C837D295E7E7A77608885858586868686868685858882827E848F9596 + 98989695908A8E7D5C5C5C5C5C2757222323CBCBCCCC02607777285A5A265B57 + 5C81838C8BAABBBBB9B9B9AEAEAEAEAEAEAEAEAEA9AEAEB9B9B9B9B9B9BBA4A7 + A3AA7F807B75736F7C71714F4F206E5555555550505074747448274B524B2223 + 4B2322234D23232322232323222223232222561E522774505055544F4C6F757F + A6ADBDB09B99978C838F575E7E72606051858586868686868686858560607A7E + 9194959698989696908A8E8F5F5C5C5C5C5757232329CBCCCCCC026028827A72 + 5A5E53575C797C8CA8BAACBBBBB9AEB9B9AEAEAEAEB9B9B9B9B9B9B9B9B9A7BB + A4A4ACA3AC7FAA8BA5A573736F714C4F6D4F546E555550505074247452485248 + 564A56232356564D232329232323575D572257222223221E74524850556E544F + 4C6F757FA7ADB0B0AF99978C8A5C575E5A7A6088888586868686868686868685 + 60827A7E9194959696989695908A8E5F5F5C5C5C565729232929CBCBCCCC0277 + 60777A7A5A2653575C81838CA5BAACBBBBB9B9B9B9B9B9AEAEAEB9AEB9B9B9B9 + B9B9BBA7BBA7A7ACA37F807B7B75A57C6F71714F6E54556E5550505050502452 + 52565648224A22232322222323572323232323572323292223224A224B482450 + 5555556D4C6F757FA6ADBDB0AF99978C8A5C5B5E5A7A82888885858586868686 + 8686868888827A7E84949596989696958A8A8E8F5C5C8456562729292329CBCB + CCCC0260602828725A1F26575C7D838CABBAACBBBBB9B9B9B9B9B9B9B9B9B9B9 + B9B9B9B9A7B9A7B9A7BBA3ACA3AAA880A575736F71714C4F5454545550555050 + 505252522722272221224D57574A2323235723292323235B5B29232357572222 + 4B4824505555554F4C6F757FA6ADBD9BAF999A968A5C5D5E7228775188868686 + 868686868686868588607A7E61949596969696958A8E7D5F5C5C277657562729 + 2929CBCBCCCC02606060285A7A5A26235C7D83B8ABBABAACB9BBB9B9B9B9B9B9 + B9B9B9B9B9B9B9B9B9BBBBA7ACA7ACA3AA7F808B75A56F6F6F71584F546E6E55 + 5050595950247474222152224B4A225622232223232325235323252323232329 + 23574A221E52245050556E6D4C6F757FA6ADBD9BAFBB97968A5C5D7E7E287760 + 88858686868687868686868588827A7E61949596989695958A8D8F5C5C747627 + 275657292929CBCBCCCC0260606082725A5A265B5C7D8389ABBAACBBBBBBBBB9 + B9B9B9B9B9B9B9BBB9B9BBBBA7BBA4BBA7A3ACAAAA80A87BA573897371784F4F + 6E545555505050597452485652524B2221224B22222223572323234D5B5B2325 + 2323235723232323482724595055204F4C6F75A3A6ADBD9BAFBB9789815C5B7E + 7A82828885858686868786878786868588827A5E84949596969690938A8E5F5C + 5C842956572923235B57CBCBCCCC0260606077287A5A7E535C7D838CA5A8BAAC + BBBBB9B9BBB9B9BBB9B9BBB9B9B9BBBBBBA7ACA7ACACACA37FA8807BA573736F + 7178784F5454555555505050245274275248481E4B4B222323235757235B2323 + 5B29232553235B232323224A48224850505555204C6F757FA6ADBD9BAFAC9A89 + 815C535E7A82608885858686868787868686868888827A918494959696959090 + 8A7D5F5C5C272756572929295B5BCBCBCCCC0260606077285A5A2653767D8389 + ABA8BAACBBBBBBBBB9BBB9B9BBB9B9BBBBBBBBBBA7BBA7ACA3ACAA7FBA808B7B + 758C736F7171584F545550555050597452527474524B2222704D22222357235B + 5B2323235B5B232323232329232323221E4852245055554F4C6F75A3A6ADBD9B + AFAC8B90815C5D7E7A60778885868686868687878686858888827A7E61949596 + 969695958D8E5F5C5C565656292929295B5BCBCBCBCC027760777728725A5E53 + 765F7989A5A8AAACACBBBBBBBBBBB9BBBBBBBBBBBBBBA7BBBBACA7ACACA3AAAA + 7F808BA5A573897C71784F545455555550592474745252522222222222222323 + 2323235B23235B53235B5B5B295B235B23234B224A5252245055544F4C6F75A3 + A6AD9B9BAE929A89815C5B7E8282778585868686878787868686868588827A5E + 619395969595958A8D7D5C5C5C845C57572329235B5BCBCBCCCC028877606028 + 7A5A7E535C5C8A89ABA8BABAACACBBBBBBBBBBBBBBBBBBBBBBBBBBA7ACA7ACAC + A3ACAAAA80A87BA573737C7C71784F4F6E545550507474745227524B1E212222 + 4D23234D2323232325535B53535B5B5B5B26235B29224D22222152505055544F + 4C6F75A3A6AD9B9BAEACAB898D5C5E7E28778851858686868787878787868685 + 88827A91619495959695938A8D5F5F5C27275757292929535B29CBCBCCCC0288 + 776077287A721F5B567D8189B8A8BAACBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB + A7ACACA3ACAAAA80A87B8BA5A5737C7171784F5454555550505048747456564B + 4B48224B6C4B222323292323535B5B29535B25255B5B5B5B23234D6C21524850 + 505555204C6F75A3A6ADBDBEAE9DAB907D765B7E7A7760858586868687878787 + 8786868588827A91619395959695958A8E5F5C5C8427575723295B255B5BCBCB + CCCC02886060772828724926575F8A89ABABBABABAACBBBBBBBBBBBBBBACBBBB + ACBBACACACACACACA3AAAAAA808BA5A5738C7C7C785879546E6E505050507474 + 52215222564A234B4A4D2323235B23535B5B25252525255B255B532323232323 + 225624595055546D4C6F75A3A6ADBD9BAEACAB908E765E5A8260608886868686 + 878787878786868588827A5E6194959595958A8D7D5F5C5C2756225729295B25 + 5B5BCBCBCCCC028888606028287A5A5E765C8A898CA8A8BAACACACBBACBBACBB + ACBBBBACBBACACACACACA3AAAABAAAA88B8BA5B873897C714C4F795455555550 + 7450522452521E22224A4A5757235323292525255B255B2625255B5B255B5B23 + 23232323224B525250556E4F4F6F75A3A6AD9B9B99AC98907D295E7E7A778885 + 85868687878787878687868588827A91619495959595938A8E5F5C5C27575757 + 29295B5B235BCBCBCCCB0288606077777A7A7E5E5D5C81908CA8A8BABAACACAC + BBACACACBBACACACACACACACACACAABAAA7FAAA88B8BA5A5737C7C7C78786E6E + 6E5550505074525652274A4D224A1E23232329235B2353255B535B53265B5B5B + 2626255B5B23234D4B2252745059544F4C6F75A3A6AD9BBE99AAAB837D765E72 + 7777888585868787878787878786868588827A91619395959593938D8F5F5C27 + 5757235B292925292329CBCBCBCC02886077777772725A26575C8190B8A8A8BA + BABAACACACACBBACACACACACACACBAACACAABAAAAAA8A88B8B8BA5738C7C7C78 + 714F796E6E505059747452212756224A22222223232229252353235B5B53535B + 2625255B53265B53535B2357702221245059556D4C6F75A3A6AD9BBE99AA988A + 5F575E7A286088858686878787878787878686858860825E6193939595938A8D + 5F5C5C27575D29295B23295D5B29CBCBCBCC02888860776028725A7E5D5C7D83 + B8ABA8BABAACBAACBAACACACBAACACACBAACACAAACAAAABAAAA88BA88BA5A5A5 + 6F7C6F717879546E5550505074525656225622225623235723232323535B535B + 255B5B26532626265326255B5B2323234A1E21745050546D4C6F75A3A6AD9BBE + 99978C8A5F297E7A8277888586868787878787878786868588827A9161949595 + 95938D8E5F5C5C7657292929295B25235B5BCBCBCBCC02888877608282285A5E + 5B5C8183B8ABA8BABABAACBAACACACACACACACBAACBAAABAAAAAAAAA80A88BA8 + 7BA5A5A5897C7C78584F54545059507452524B524B224B222222564D575B2325 + 53255B252626262625532626265B265B232323234A1E48745055556D4C6F75A3 + A6AD9BBE99978C8A5C5D5E7A7777888586868787878787878786868588827E91 + 6193959595938D8E5F5C5C76232929235B5B255B5B29CBCBCBCC028888606077 + 287A7A7E5B5C8190B8ABABA8BABABABABABABABAACBAACBAAAAAAAAAAABABAA8 + A8A8A88BA5A5A58C6F7C7C78784F81557D50745C52525252222222564B4D2323 + 5729235B5B5B5B53262626262626262626265326252323234B48484850555420 + 4C6F75A3A6AD9BAF99978C8A5C5D5A7A77888586868787878787878787878685 + 88827A918F939395938A8D5F5F745C272729295B5B235B295B5BCBCBCBCC0285 + 88886060287A5A7E5D847D8389ABA8A897BABABABABABABABABABABABABABABA + AABAA8A8A88B8B8BA5B873898C7C7178784F6E55505950527456525652222323 + 56234B2323235B5B5B5B5326265B2626262626265B2653255B2329234D4A7448 + 5050554F4C6F75A3A6ADBEAF99978C815C5D7E7A776085858687878787878787 + 8787868588827E918F949395938A8D5F5C5C5629292329255B295B265B5BCBCB + CCCB028588886060287A727E5D5C7D8A96B8A8A8BABABABABABABABABABABABA + BAAABAA8AAA8A8A88BA8A8A5A5A5A5B87C7C837879547D555074507456744B22 + 23224B2223235723235B5B5B5B5B5B2626262626262626262626265B25532923 + 4D4B52525055554F4C6F75A3A6ADADAF929789815C5E7E7A7751888586878787 + 874787878786868588827A9161949395938D8F8F5C2729292329295D5B255B5B + 2526CBCBCBCC0285885188606077727E5E847D8AB8ABA8A8A8BABABABABABABA + BAA8BABABABABAAAAAA8A8A8A8A88BABA5A5B8737C7C787878546E7D59244874 + 5674222223224B572357235B5B295B53535B2626262626252626262626262626 + 25232323222221527455556E4C6F75A3A6ADBEAFBB9796795C5D7E7A77888586 + 86878787878787878786868588827E9161949393938D8E5C5C27272723295B29 + 295B26252525CBCBCBCB0285858860606028725A26767D8A90B8ABA8BAA8BABA + BABABAA8BABABAA8BABAA8BAA8A8A8A88BA8A5A5A58C73897C7C785879547D7D + 50747452525222224A4B232323232323535B5B5B262626262626262626262626 + 2626262625252322704A22245050556E4C6F7BA3A6ADADAFBB9789815C5D7E82 + 7760858686878787878787878787868588827E9161939393938E7D8F5C5C2729 + 292925295B53535B265BCBCBCBCC02858885606060827A5A26765F8A90B8ABA8 + A8A89CBABABABA97BAA897BAA8A8BAA8A8A8A8A8A8A5ABA5A58C8C897C837879 + 5454505050747456564B4A226C57234D2323295B5B25255B2626262626262626 + 26262626262626265B5B232223225252485055204C6F75A3A6A9ADAE92A8898E + 765E7A827788858687878787878787878787868588827E918F949393938F8F5C + 5C7657292923235B25535B535B25CBCBCBCB0285888860606082285A5E767D8A + 90B8AB9AA8A8A8A8A8BAA8BABAA8A8A8A8A8A8A8A8A8A8AB8BABA5A58C8C8C7C + 7C837879797D55595C745656564B704A2223234D5B255B5B25255B2626262626 + 262626262626262626262626262529294D4B2152505055544F6F75A3A6ADADAE + AC8B897D765E7E827788858687878787878787878787868560827E916194938D + 8D8E8F5C84275723295B5B5B255B26535B26CBCBCBCB0285518888887782285A + 5E5D5C8D90B8B8ABA8A8A8A8A89AA8A8A8A8A8A8A89AA8A8ABA8ABA8ABABA5A5 + B88C7C897C787879545450507448485648222323235753535B5B23255B262626 + 262626262626265E262626262626262526255B5B574D1E245250554F4C6F75A3 + A6AFAFAE929A908D845E7A777785868686878787876287878787868588827E91 + 8F9494938D8F8F5C5C292929295B265B255B265B5B26CBCBCBCC028585856060 + 7728827A5E5D8F8D90B8ABA8ABA8A8A8A8A8A8A8A89CA8A8A8A8ABA8A8ABA8AB + A5ABA5B88C8C897C837878797D7D5074745648562222222223232323535B2325 + 5B5B2626262626267E26265E5E5A26262626262626532329234D565224505554 + 6D6F75A3A6A9AFAEACAB907D845E7A6060858686878787878747878787878685 + 88827E918F9494938D8F8F5C7457295B29255B5B25255B265B26CBCBCBCB0285 + 8588886060777A5A7E5D5C819096ABABA89AA89AA8A8A8A8A8A8A8A8ABA8A8AB + A8ABABABABB8A5A58C8C89897C7879796E7D5C507456565656222223235B2323 + 5B5B255B5B26262626262626265E7E2626261F261F2626262625232323221E52 + 74505554786F7BA3A6A9AF99ACAB905F5D5E7A82608586868787878787878787 + 8787868588827E91619494948E8F8F5C5629295B295B5326262526535326CBCB + CBCB0285858588606077725A7E5D848D8396B898A8A89AA8A8A89A9AA89AA8A8 + A8A8A89AABA8ABABABA5B8B88C898989837878796E505050742756271E224B23 + 2323295B5B5B255B26262626262626267E26265A267E7E2626262626265B2523 + 2322215274505554586F7BA3A6AFAF99ACAB908E295E7A776085868687878762 + 878762878787868588827E916194948D8F8F845C57295725235B5B5B5B262626 + 265ECBCBCBCB0285858888887760287A5E5D5CB79590B8ABA8AB9AABA8A8A8A8 + 9AA8ABA8ABA8ABA8ABABABABB8A5A58C8C897C83837879547D505074744B5622 + 4A5623232329235B5B535B262526262626267E26262649267E5A267E265E2626 + 2626532522572252505055544C6F7BA3A7A9AF99AAAB905F5D5E7A8288858687 + 87878787876287878787868588827E91619494948E5C5C5C2757295B5B5B265B + 26265B5B2626CBCBCBCC0285858588887760287A7E5D848D9096B8ABABA89AA8 + 9A9A9A9AA8A8A8A8A8ABA8ABABABABABABAB8C8C8C898983837879547D7D5C74 + 744B224A222223234D2323535B25262626262626262626267E5E1F5E5E7E5A26 + 26262626265B5B2323222248505055544C6F7BA3A7A9AF99AAAB908F5D5E7A60 + 8885868687878787478787878786868588827E91618F94948E8F5C5C5757295B + 5B5B5B5B2626265B2626C2CBCBCB} + WaterMark.Image.Layout = ilTile + object Label1: TLabel + Left = 176 + Top = 312 + Width = 186 + Height = 13 + Caption = 'Haga click en Siguiente para continuar.' + end + object Label3: TLabel + Left = 168 + Top = 72 + Width = 346 + Height = 32 + Caption = + 'Este asistente le ayudar'#225' a imprimir el n'#250'mero de etiquetas '#13#10'qu' + + 'e desee para el montaje de:' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -13 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + end + object lblNombreCliente: TLabel + Left = 169 + Top = 112 + Width = 353 + Height = 49 + Alignment = taCenter + AutoSize = False + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -13 + Font.Name = 'Tahoma' + Font.Style = [fsBold] + ParentFont = False + Transparent = True + Layout = tlCenter + end + end + object JvWizardInteriorPage1: TJvWizardInteriorPage + Header.Title.Color = clNone + Header.Title.Text = 'Opciones de impresi'#243'n' + Header.Title.Anchors = [akLeft, akTop, akRight] + Header.Title.Font.Charset = DEFAULT_CHARSET + Header.Title.Font.Color = clWindowText + Header.Title.Font.Height = -16 + Header.Title.Font.Name = 'Tahoma' + Header.Title.Font.Style = [fsBold] + Header.Subtitle.Color = clNone + Header.Subtitle.Text = + 'Indique el n'#250'mero de etiquetas a imprimir y la impresora a utili' + + 'zar.' + Header.Subtitle.Anchors = [akLeft, akTop, akRight, akBottom] + Header.Subtitle.AnchorPlacement = 8 + Header.Subtitle.Font.Charset = DEFAULT_CHARSET + Header.Subtitle.Font.Color = clWindowText + Header.Subtitle.Font.Height = -11 + Header.Subtitle.Font.Name = 'Tahoma' + Header.Subtitle.Font.Style = [] + object Label2: TLabel + Left = 24 + Top = 96 + Width = 152 + Height = 13 + Caption = 'N'#250'mero de etiquetas a imprimir:' + end + object Label4: TLabel + Left = 24 + Top = 144 + Width = 146 + Height = 13 + Caption = #191'Qu'#233' impresora desea utilizar?' + end + object Label5: TLabel + Left = 248 + Top = 96 + Width = 259 + Height = 13 + Caption = '(En cada hoja se imprimir'#225'n como m'#225'ximo 4 etiquetas)' + end + object edtLabelCount: TcxSpinEdit + Left = 182 + Top = 92 + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.Kind = lfStandard + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.Kind = lfStandard + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.Kind = lfStandard + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 0 + Value = 4 + Width = 57 + end + object cbImpresoras: TcxComboBox + Left = 24 + Top = 161 + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.Kind = lfStandard + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.Kind = lfStandard + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.Kind = lfStandard + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 1 + Text = 'cbImpresoras' + Width = 273 + end + end + object JvWizardWelcomePage2: TJvWizardWelcomePage + Header.Height = 80 + Header.Title.Color = clNone + Header.Title.Text = 'Fin del asistente de impresi'#243'n' + Header.Title.Anchors = [akLeft, akTop, akRight] + Header.Title.Font.Charset = DEFAULT_CHARSET + Header.Title.Font.Color = clWindowText + Header.Title.Font.Height = -19 + Header.Title.Font.Name = 'Tahoma' + Header.Title.Font.Style = [fsBold] + Header.Subtitle.Color = clNone + Header.Subtitle.Text = ' ' + Header.Subtitle.Anchors = [akLeft, akTop, akRight, akBottom] + Header.Subtitle.Font.Charset = DEFAULT_CHARSET + Header.Subtitle.Font.Color = clWindowText + Header.Subtitle.Font.Height = -13 + Header.Subtitle.Font.Name = 'Tahoma' + Header.Subtitle.Font.Style = [] + Header.ShowDivider = False + VisibleButtons = [bkBack, bkFinish] + WaterMark.Image.Picture.Data = { + 07544269746D617082960100424D82960100000000003204000028000000A400 + 000074020000010008000000000050920100120B0000120B0000FF000000FF00 + 000000000000FFFFFF005320060057230800F6E7E900AD9B9C003F3838006B68 + 6800615E5E0058565600E7DEDD00483D3A0041312B0057230B00552107005321 + 07005B2509005923090057230900552309005D270B005B250B0059250B005222 + 0A0055230B004D210A005F290D005D270D0053250D004F240E0087411D007C3C + 1C009147210087411F0085411F0083411F0089432100813F1F007E3F1F008643 + 2100753B1D0082422100502A17004427180038201400623D2B005B4032004E37 + 2B0057230700552307005925090061290B0056250A005B270B00652C0D005927 + 0C00622B0E00652D0F00632D0F00683011005A290F006C331300763816005528 + 1000723616005D2C12006E3516007E3E1A007A3B190082401B00733918006431 + 150087431D007A3D1A0085411D0085431D00954B210083411D00763A1A00924A + 21008A461F007038190087431F0080411D008F4921008E47210085431F008343 + 1F00924B23008A462100793D1D0080411F0086462100804320007C411F008947 + 2300723B1D0083482600532F1C005A3623006A48360073503D007A564300825F + 4C00926E5A00652D0A006A300B00793B160085421B00924A1F008E491F009A4F + 220083431D00964D2200773D1B009E52250086451F00A255260083451F00723C + 1B00924D23008F4C2300763E1D00A5582900965025008A49220079401E00AB5D + 2C00A85B2B008D4B2400723D1D00924F2600824622006B3A1C0068381B006436 + 1A006E3B1D00965228008E4D2600A25A2C009A552A008A4D26008A4B26008649 + 2500925129007D452400AF6233008C4E2900884C280090512B0095542D00A35E + 320098583000B46839009D5B3200C2734100A05F3600A5623900AB673C007D4F + 3300CEC4BE00672F0B006D340C00AE602D00B3632F009E582A00B8693300B366 + 3200A25E2E00BB6D3600A86030009D592D00AC643300C0713A00B76D3A00BB6F + 3C00C6774200CB7A4600B16D40009276640074390E007B411500864A1C008A4F + 220097592A00B56C3600A5633100B0683500CA7A3F00C4763D00BE733C00C77A + 4000CD7E4300D1814600A76B3E007F400E0083451100884914008B4D18008146 + 18008D501C0090552300A2673800B0764700B57B4D00BC825300D3B8A100FFE0 + C600BAA390009E8B7C00826D5B00FFDBBB00EAD0B900FFE7D200B6A99D00FFED + DD00C1B6AC00FFF7F000FFF3E7004E4D4C00FBFAF900FEFBF5007E7E7D00FCFC + FB0090908F00E8E9E800D0D1D000BFC0BF00BBBCBB00B7B8B700B1B2B100DCDF + DD00CBCECC00D1D6D300D6DAD800E2E4E30072797600C6C9C800C2C5C400F0F1 + F100EDEEEE00ACADAD0097989800F9F9F900F7F7F700F5F5F500F3F3F300B4B4 + B400AFAFAF00AAAAAA00A6A6A600A2A2A2009D9D9D0087878700434343000202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020203110311110303030303030303030303030303030303030303 + 0303030303030303030303030303030303111103111111111111111111321132 + 3232321132111111111111111111111111111111111111111111111111111111 + 1111111111111111321616161616321111111103030303030E0E0E0E0E0E0E0E + 300E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E6969A2C302030303110303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303031111111111111111 + 1111111111111111111111111111111111111111111111111111111111111111 + 111111031111111111111111321616161616321111111103030303030E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E6969B4C3020303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303111111 + 1111111111111111111111111111111111111111111111111111111111111111 + 1111111103031111111111111111111111321616161632111111110303030303 + 0E0E0E0E0E0E0E0E300E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E6969B4C30203030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0311111111111111111111111111111111111111111111111110111111111111 + 1111111111111111030311111103111111111111113216161616321111110303 + 030303030E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E6969B4C302030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303111111111111111111111111111111111111111111111111111111 + 1111111111111111111111111111110303111111111111111132161616163211 + 111103030303030E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E6969A2C3020303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303031111111111111111111111111111111111111111111111 + 1111111111111111111111111111111111110311030311111111111111323216 + 1616321111110303030303030E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E6969B4C30203 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303031111111111111111111111111111111111111111 + 1111111111111111111111111111111111110311110303031111111111111111 + 111132161632111111110303030303030E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E6969 + B4C3020303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303031111111111111111111111111111 + 1111111111111111111111111111111111111111111103110303030303031111 + 11111111113232323232111111110303030303030E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E6969B4C30203030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303031111111111111111111111 + 1111111111111111111111111111111111111111111111111111110303030303 + 0311031111111111111132323232111111110303030303030E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E6969A2C302030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030311111111111111 + 1111111111111111111111111111111111111111111111111111111111111103 + 0303030303030311111111111111113232111111111103030303030E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E6969B4C3020303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030311 + 1111111111111111111111111111111111111111111111111111111111111111 + 111111030303030303030311111111111111113232111111111103030303030E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E6969B4C30203030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030311111111111111111111111111111111111111111111111111111111 + 1111111111031103030303030303111111111111111111323211111111110303 + 0303030E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E6969B4C302030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303031111111111111111111111111111111111111111111111111111 + 1111111111111111110303030303030303030303111111111111111111111111 + 111103030303030E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E69A1B4C3020303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303111111111111111111111111111111111111111111 + 1111111111111111111111111103030303030303030303031111111111111111 + 11111111110303030303030E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E69A1B4C30203 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303031103111111111111111111111111111111 + 1111111111111111111111111111031111030303030303030303030311111111 + 111111111111111111030303030303030E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E69A1 + B4C3020303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030311111111111111111111111111 + 1111111111111111111111111111111111111103030303030303030303030303 + 111111111111111111111111110303030303030E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E6969B4C30203030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303111111111111111111 + 1111111111111111111111111111111111111111111111031103030303030303 + 03030303031111111111111111111111110303030303030E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E69A1B4C302030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303111111 + 1111111111111111111111111111111111111111111111111103031103030303 + 0303030303030303031111111111111111111111110303030303030E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E69A1B4C3020303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0311111111111111111111111111111111111111111111111111111111110303 + 030303030303030303030303031111111111111111111111110303030303030E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E6969B4C30203030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303111111111111111111111111111111111111111111111111111111 + 1111030303030303030303030303030303031111111111111111111111030303 + 0303030E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E6969B4C302030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303031111111111111111111111111111111111111111111111 + 1111111103030303030303030303030303030303030311111111111111111111 + 110303030303030E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E69A1B4C3020303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303111111111111111111111111111111111111 + 1111111111111111030303030303030303030303030303030303111111111111 + 111111110303030303030E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E69A1B4C30203 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303031111111111111111111111111111 + 1111111111111111110311030303030303030303030303030303030303031111 + 1111111111111111030303030303030E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E69A1 + B4C3020303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303031111111111111111111111 + 1111111111111111111111111111030303030303030303030303030303030303 + 0303111111111111111111110303030303030E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E6969B4C30203030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030311111111111111 + 1111111111111111111111111111111111110303030303030303030303030303 + 03030303030303111111111111111111030303030303030E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E69A1B4C302030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030311 + 1111111111111111111111111111111111111111111103030303030303030303 + 03030303030303030303031111111111111111110303030303030E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E69A1B4C3020303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303111111111111111111111111111111111111111111110303030303030303 + 0303030303030303030303030303031111111111111111110303030303030E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E69A1B4C30203030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303031111111111111111111111111111111111110311030303 + 0303030303030303030303030303030303030311111111111111110303030303 + 0303030E0E0E0E0E0E0E0E0E300E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E69A1B4C302030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030311110303111111111111111111111111111111111103 + 0303030303030303030303030303030303030303030303031111111111110303 + 030303030303030E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E69A1B4C3020303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303031111111111111111111111111111 + 0311110303030303030303030303030303030303030303030303030303111111 + 111103030303030303030E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E69A1B4C30203 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303030311111111111111111111 + 1111111111111103030303030303030303030303030303030303030303030303 + 03031111111103030303030303030E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E69A1 + B4C3020303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303031103111111111111 + 1111111111111111111111030303030303030303030303030303030303030303 + 030303030303111111110303030303030303030E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E69A1B4C30203030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030311031111 + 0311111111111111031103110303030303030303030303030303030303030303 + 0303030303030303030303110303030303030303030E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E69A1B4C302030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030303110303030303 + 0303111111111111111111111111111103030303030303030303030303030303 + 03030303030303030303030303030303030303030303030303030E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E69A1B4C3020303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303110311110311110311111111111103110303030303030303030303 + 03030303030303030303030303030303030303030303030303030303030E0E0E + 0E0E0E0E0E0E0E0E0E0E300E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E696AB4C30203030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303031111111111111111111111030303030303030303 + 0303030303030303030303030303030303030303030311110303030303030303 + 0303030E0E0E0E030E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0EA16AB4C302030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030311111111110311111103110303030303 + 0303030303030303030303030303030303030303030303030311111111110303 + 030303030303030E0E0E030E0E03030E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0EA16AB4C3020303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303030311111103111103111103 + 0303030303030303030303030303030303030303030303030303030303031111 + 11110303030303030303030E030E0E030E0E03030E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0EA16AB4C30203 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303110303031111111111 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303031111111103030303030303030E0E030E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0EA16A + B4C3020303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 1111031103030303030303030303030303030303030303030303030303030303 + 03030303030311111111030303030303030303030E0E0E0E0E030E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0EA16AB4C30203030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030311030303030303030303030303030303030303030303030303030303 + 03030303030303030303111103030303030303030303030E0E03030E030E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0EA16AB4C302030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303110311030303030303030303030303 + 030E03300E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0EA16AB4C3020303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030311111111111111110303030303030303 + 0303030303030303030E030E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0EA16AB4C30203030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030311030311110303030303030303 + 0303030303030303030303030303030303030303031111111111111103030303 + 03030303030303030303030303030E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E030EA16AB4C302030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303110303031103110303030303 + 0303030303030303030303030303030303030303030303030311111111111103 + 0303030303030303030303030303030303030E0E030E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E030E0E6A6AB4C3020303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303031111031103030303111111111111 + 0303030303030303030303030303030303030303030303030303030303031111 + 11111111030303030303030303030303030303030303030E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E6A6AB4C30203 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303030311111103111111110311 + 1111031103030303030303030303030303030303030303030303030303030311 + 111111111111111103030303030303030303030303030303030303030303030E + 03030E0E0E0E0E0E0E0E0E0E03030E0E030E0E0E0E030E0E03030303030E6A6A + B4C3020303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303031103030303030303030311110311 + 1103111111030303030303030303030303030303030303030303030303030303 + 0303031111111111111111110303030303030303030303030303030303030303 + 0303030E0303030E0E0E0E0E0E0E0E0E0E030E0E0303030E0E0E0E0E03030303 + 03036A6AB4C30203030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0311110311110311031103031103111111030303030303030303030303030303 + 0311030303111111111111111111111111110303030303030303030303030303 + 0303030303030303030303030303030E030E0E0E0E030E0E030E0E0E0303030E + 0303030303036A6AB4C302030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303110303030303111103110303031111111103030303030303030303030303 + 0303030303030303030311111111111111111111111103030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 030303030303030303036A6AB4C3020303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030311110303111111111103030303030303030303 + 0303030303030303030303030303111111111111111111111103030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 03030303030303030303030303036A6AB4C30203030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303031111111111111111110303110311111111 + 0303111111030303030303030303030303110311111111111111111111110303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303036AA2B4C302030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303031111111111111111111111111111 + 1111111111111111030311030303030303030303111111111111111111111111 + 1103030303030303030303030303030303030303030303030303030303030303 + 030303030303030303030303030303030303030303036A6AB4C3020303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030311111111111111111111111111 + 1111111111111111111111110303031103030303030303031111111111111111 + 1111111111030303030303030303030303030303030303030303030303030303 + 03030303030303030303030303030303030303030303030303036A6AB4C30203 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030311031111111111111111111111111111 + 1111111111111111111111111111111111111103031103030311031103111111 + 1111113211111111111111030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303036A6A + B4C3020303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030311111111111111111111111111 + 1111111111111111111111111111111111111111111103111103031103031111 + 1111111111111132111111111111110303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 03036AA2B4C40203030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030311111111111111 + 1111111111111111111111111111111111111111111111111111111111111111 + 1103111111111111111111113211111111111103030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303036AA2B4C402030303030303030303030303030303030303030303 + 0303030303030303110303030303030303030303030303030303030303111111 + 1111111111111111111110113232111110111132111111111010111111111111 + 1111111111111111111111113232113210321011111111111111030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 030303030303030303036AA2B4C3020303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030303031103111111 + 1111111111111110111111101010103210101111111010111010101032111111 + 1111111111111111111111111111111111323210101010321111111103030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303A2A2B4C40203030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303111111 + 1111111111111111111110101010101010321010101010101010101010101010 + 1010101010111111111111111111111111111111113210321010101111111111 + 1103030303030303030303030303030303030303030303030303030303030303 + 030303030303030303030303030303031230A2A2B4C402030303030303030303 + 0303030303030303030303030303030303030303030303030303030303031111 + 1111111111111111101111111010101010101010101010101010101010101010 + 10101010101010111010101011111111111110111110113211110D1111113232 + 1011111111110311111111111103110303030303030303030303030303030303 + 03030303030303030303030303030303030303030303A2A2B4C4020303030303 + 0303030303030303030303030303030303030303030303030303111111111111 + 1111111111111111111111111010111010101010101010101010101010101010 + 1032321111113232101010101010101010101010113210323211111112121313 + 0D340D1111111111111111111111111111111103030303030303030303030303 + 0303030303030303030303030303030303030303030311110311A2A2B4C40203 + 0303030303030303030303030303030303030303030303030303031111111111 + 1111111111111111111111111111111011111010101010101010101010101010 + 10101032101112120D0D11111111321010101010101010321010103211111213 + 0F0F0F171713130D121111111111111111111111111111111111110303030303 + 030303030303030303030303030303030303030303030303030311111111A2A2 + B4C4020303030303030303030303030303030303030303110311111111111111 + 1111111111111111111111111111111110101010101010101010101010101010 + 10101010101010160D121213130E13130D0D1111323210101010101010321111 + 12130F0F17021917191717171313121212111111111111111111111111111111 + 1103030303030303030303030303030303030303030303031103030311111111 + 1111A2B4B4C40203030303030303030303030303030303111111111111111111 + 1111111111111111111111111111111010101010101010101010101010101010 + 1010101010101010101616121317170F1719170F0F1312121111113232101032 + 111112130F0F1919192A2A2A2A191917170F0F13121112111111111111111111 + 1111111111110311111103030303110311110303030303030311030311111111 + 111111111111A2A2B4C402030303030303030303030303030303111111111111 + 1111111111111111111111111011101010101010101010101010101010101010 + 101010101010101010101016160D13171719192A2A1D19190F17171313120D11 + 1111111112130E0F0F19192A2A622A2A2A622A1D1919170F0F31121211113210 + 1011101011111111111111111111110303111111111111031111111111110311 + 11111111111111111132A2A2C3C4020303030303030303031103030303111111 + 1111111111111111111111111111113210101010101010101010101010101010 + 1010101010101010101010101010160D12131719192A62626262622A1D191919 + 170F1330121212130E0F0219191D2A2A622D6565412A62622A1D191917170F13 + 1212111132101010111011111111111111111111111111111111111111111111 + 1111111111111111111111113232A2A2C3C40203030303030303030311111111 + 1111111111111111111111111011101010101010101010101010101010101010 + 10101010101010101010101010101010161612131717191D6262622D66626262 + 62622A1D191919170F0F0F170219191D2A2A2A2D656667B3B367632A2A622A1D + 190219020F0F1312111132101010103232323211111111111111111111111111 + 111111111111111111111111111132323216A2A2C3C402030303030303030311 + 1111111111111111111111111132111010101010101010101010101010101010 + 101010101010101010101010101010101010101012121317191D6262622D67D2 + 6766666463626262622A191919191919191D2A2A2A636566666668B3B3B3B368 + 6441622A2A2A191902020F131312111132101010103211111111111111111111 + 11111111111111111111111111111111323232161616A2A2C3C4020303030303 + 0303031111111111111111321132321032101010101010101010101010101010 + 1010101010101010101010101010101014141414101532121317171962626263 + 666868686767666666652E636262622A2A19191D2A2A2A62646666656566B3B3 + B3B3B3B3B3B366632A2A2A2A1719190F0F0E120D121132321010101032321111 + 1111111111111111111111111111111111113232323216101010A2B4B4C40203 + 0303030303031111111111111111113210101010101010101010101010101010 + 1010101010101010101010101010101010101414141010101634131717192A62 + 626265D2686868686766666666666666652D63626262622A622A6465669F6566 + 666465D2B3B3B3B3B3B3B3B3682D62622A2A1D1919170F131212321111321010 + 101032323232323232323232321132113211323232321010101010101010A2A2 + C3C4020303030303031111111111111132101010101010101010101010101010 + 101010101010101010101010101410101010141414141414101515160D131719 + 1D62636264D268686868D26867666666666666666666666563622A622D656566 + 65666565642D2D2D646768B3B3B368B3B3B36864622A2A2A1D19190F1713130D + 1611113210101010101010101010103232323211321616101010101010101010 + 1010A2A2C3C40203030303031111111111113232321010101010101010101010 + 1010101010101010101010101410101010141414141414141414141515160D13 + 17171D6262632D676868686868686868676766666666666666666666662D2D65 + 9F66669F6665642D632D2D2D2D642D66D268B3B3B368B3B3B367632A2A623F19 + 1919171713120D0D0D1610101010101010101010323216103210101010101010 + 101010101010A2B4C3C402030303031103111111113210321010101010101010 + 1010101010101010101010101014141414141414141414141414141414141516 + 0D0D17171D6262622D6668686868686868686868676666666666666666666666 + 662D2D6665666565642D632D2D2D2D2D2D2D2D642D656768B3B368B3B368B368 + 2D2A62622A1D19171717131234160D1032101010101010101010101010101010 + 10101010101010101010A2B4B5C4020303031111111111321110101010101010 + 1010101010101010101010101414141414141414141414141414141414141414 + 151016341317172A6262636668686868686868686868D2686766666666666666 + 66666666662D2D666665642D63632D632D2D2D2D2D2D642D642D64646668B3B3 + B3B3B3B3B3686462622A2A1D1719171713120D0D161616101010101010101010 + 1010101010101010101010101515A2B4C3C40203030311111111113210101010 + 1010101010101010101010101414141414141414141414141414141414141414 + 1414141516161317172A62626265686868686868686868686868686867676666 + 6666666666666666662D2D65642D636363632D2D2D2D2D2D2D2D642D64646464 + 646465676868B368B368B3686663622A2A1D1919171713120D16111010101010 + 101010101010101010101010151015153515B4A2C3C402030311111111321010 + 1010101010101010101010101414141414141414141414141414141414141414 + 14141414141515163417173F626263646868B368686868686868686868686868 + 676666666666666666666666652D2D2D636363632D632D632D2D2D2D642D2D64 + 2D64646464646465656768B3B3B3B3B368B3662D622A621D1919171713121616 + 10101010101010101010101010101010351414141414B4B4C3C4020311111111 + 1110101010101010101010101014141414141414141414141414141414141414 + 1414141414141414151634180F1C6262622D6768686868686868686868686868 + 68D26868666666666666666666666666652D2D636363636363632D2D2D2D2D2D + 2D2D642D6464646464646564656565666768B368B368B36867642A2A621D1919 + 1717121616101010101010101010101010101014351414141414A2B4B5C50203 + 0311111011101010101010101010101014141414141414141414141414141414 + 1A1A14141A1A1414141435153418171C62626263676868B36868686868686868 + 6868686868686868676666666666666666666666652D6363636363632D632D63 + 2D2D2D2D2D642D642D646464646465646565656565666768B3B368B368686864 + 6262622A1D17171216101010101010101010151510101414141414141414B4B4 + C3C4020311111111101010101010101010101014141414141414141414141414 + 141A1A1A1A1A1A1A1A1414141415163417182A626263666868B3686868686868 + 686868686868686868686868676666666666666666666666652D2D6363636363 + 63632D2D2D2D2D2D2D2D642D642D6464656465656565656565666666666868B3 + B3B3B3B36865622A622A17123410101510101510151415141514141414141414 + 1414B4B4C3C50211111110101010101010101010101414141414141414141414 + 141A1A1A1A1A1A1A1A1A1A1A14141415163434173F6262626568686868686868 + 68686868686868686868686868686868676666666666666666666666652D2D62 + 62626363632D632D632D632D2D2D2D6464646464646464646565656565656666 + 666666676868686868B36866636263130D151415151515101514151414141414 + 141414141414B4B4B5C502111111101010101010101010141414141414141414 + 141A141A1A1A1A1A1A1A1A1A1A1A1A14143516340D173F62626364686868B368 + 68686868686868686868686868686868686867D2666666656666666666666666 + 66652D6262622A6263636363632F2F6363632E2D2D6464646464656565656565 + 66666666666666676667D268B368B368682A62130D1015101514101515141414 + 14141414141414141414B4B4B5C5021111101010101010101010141414141414 + 14141A141A1A1A1A1A1A1A1A1A1A1A1A1A1A1414351634133F6262632D676868 + 686868686868686868686868686868686868686867D267676565646565656566 + 66666666666666666463622A2A2A2B2A6262622F2F63632D2E2D646464646465 + 6565656566656666666666666766676767686868682A2A130D10101414101414 + 141414141414141414141414141AB4B4B5C50211111010101010101010141414 + 1414141414141A1A1A1A1A1A1A1A1A1A1A3838381A1A1437370D3F6262636366 + B368B368B36868686868686868686868686868686868D2D26767666664646464 + 6464656565666666666666666666662E622B2B2C2C2C2C2B2B0C2F62632D2D2E + 64646464656565656566656666666666666766666766676868622A1316151414 + 141414141414141414141414141414141414B4B4B5C502111010101010101010 + 141414141414141A1A141A1A1A1A1A1A1A1A1A38383838381A1A14373F626362 + 636568686868686868686868686868686868686868686868D267676666656464 + 2E2E2F2E2E646464656565656666666666656564642E2F2C2C0C0C060C2C2B0C + 2F2F632D2D646464656565656566666666666667666667676767676665622A34 + 161514141414141414141414141414141414141A1A1AB4B4B5C5023210101010 + 10101014141414141414141A1A1A1A1A1A1A1A1A383838383838381A1A1A353F + 6362626468686868686868686868686868686868686868686868686767676665 + 642E2E0B06060C2F2F2F2E2E64646465656565656464642E2E2F0C0C0606060C + 06060C2C2C2B2F2F2E2D2E646464656565666566666666666667666666652D62 + 622A3F1615141414141414141414141414141414141414141A1AB4B4C4C50210 + 10101010101010141414141414141A1A1A1A1A1A1A1A38383838383838383838 + 1A1A3C3F2D64686868686868686868686868686868686868686868686867D267 + 6665652E2F0BFEFEFEFEFE060C0C2F2F632E2E6464646464642E2E2F0C0C0606 + 060705F20B0C0606062C2C2C2B2F2E2D6464646565656666666666666666652D + 62622A622A3F16151414141414141414141414141414141414141A1A1A1AB4B4 + B5C502101010101010101014141414141A1A1A1A1A1A38383838383838383838 + 383838381A143C632D6868686868686868686868686868686868686868686867 + D2676665642E2F0BFEFEFEECFBFEFEFEFEFE060C0C2F2F632E2E2E2E2E2F0C0C + 06060B070505A00101ED080C06060C0C2C2C2C2F2F2D64646465656666666664 + 2D622A626262621C131615141414141414141414141414141414141414141A1A + 1A1AB46BC4C5021010101010101014141414141A1A1A1A1A1A38383838383838 + 3838383838383838381A3C622D68686868686868686868686868686868686868 + 6867D267666664642E0B0BFEFE08EEEBE3E5FBDE09FEFEFEFE060C0C2F2F2F0C + 0C0C0C060CDBD1050505E101010101F0FD0B0606060C2C2C2C2B2F2E64646565 + 656464622A622D656763621C3416351414141414141414141414141414141A14 + 1A1A1A1A1A1AB4B4C7C50210101010101414141414141A1A1A1A1A1A38383838 + 383838383838383836363838381A3C632D686868686868686868686868686868 + 686868686767676665642E2F0BFEFE09F9E1E1EBE3F7F9F9F9FCECDBFEFEFE06 + 0C0C2B0C0C06060BFD05050505D8DF01010101010101F7DB0606060C2C2C2C2C + 2B63646464632D2D65676767672D621C0D151414141414141414141414141414 + 1414141A1A1A1A1A1A1AB46BC4C502101010101010141414141A1A1A1A1A1A38 + 38383838383838383838363836363638381A3C632D6868686868686868686868 + 686868686768D267676665642E2F0BFEFEDBFCEBE1E1E1EBE3F7F9F9F9F9F9F1 + E007DBFEFE0B0606060BDE050505050505FDF2E901010101010101010A070606 + 06062C2C2C2C2C2B2D636366676767676763621C161514141414141414141414 + 141414141414141A1A1A1A1A1A1A6BB4C4C602101010101414141414141A1A1A + 1A38383838383838383836383939393639393938381A3C638568686868686868 + 68686868686868686867676665642E2E0BFEFEFEFDEAE1E1E1E1E1E1E3E5F9F9 + F9F9F9F1F1F1F9E00806060B0705050505050505DE070707DEE5EF0101010101 + 0101F4E00B06060C0C2C2C2C2C622F65666666676763621C1635141414141414 + 14141414141414141414141A1A1A1A1A1A1AB4B5C4C602101010141014141414 + 1A1A1A383838383838383839363939393939393939393939381A3C632D686868 + 686868686868686868686767676666642E2E0B0BFEFEECE8F0E1E1E1E1E1E1EB + E3E5F9F9F9F9F9F9F1F1F1F8F1080705050505050505DE080807080707ECEC05 + EA0101010101010101E4DB0606060C2C2C2B2E64646566666663621C34151414 + 14141414141414141414141414141A1A1A1A1A1A1A1A6BB4C4C6021010101414 + 1414141A1A1A1A3838383838383839393939393939393939393939393A1A4163 + 2D68686868686868686867686767676765652E2E2F0BFEFE08F7F0E1F0E1E1E1 + E1E1E1E1E3F7F9F9F9F9F9F1F1F1F1F8FA07070505050505FD08080808080707 + 0707ECECDEFDE3F501010101010101EA070B06060C0C2F2E2E64646565632A1C + 3415141414141414141414141414141414141A1A1A1A1A1A1A1AB46BC4C60210 + 101414141414141A1A1A33383838383836393939393939393939393939393939 + 3A1A3C872D686868686868686868686767676565642E2F0BFEFEDBFAF0F0F0F0 + F0E1E1E1E1E1E1EBE3F7F9F9F9F9F9F1F1F1F1F1F90807050505FD0809090808 + 0807070707EC07ECECDEDEFDF1E701010101010101E1FD0B06060C0C2F2F2E2E + 64622A1902123714141414141414141414141414141A1A1A1A1A1A1A1A1A6BB5 + C7C602101010141414141A1A1A1A383838383838363939393939393939393939 + 393939393A383C638568676867686868686767676665642E2F0BFEFEFEE0E1EF + F0F0F0F0F0F0E1E1E1E1E1E1E3E5F9F9F9F9F9F1F1F1F1F8FA070705FD080909 + 09090808080807070707ECECDEDEDEDEFDFDF2E8F4010101010101F5F9DB0606 + 060C2F2F2E2B2C19190F1635141414141414141414141414141A1A1A1A1A1A1A + 1A38B4B5C7C602101414141414141A1A33383838383838393939393939393939 + 39393939393939393A1A41872D6868686868676767676665642E2F0BFEFEFEDE + EAEFEFEFF0F0F0F0F0E1E1E1E1E1E1EBE3E5F9F9F9F9F9F9F1F1F1F1FC080708 + DB090909090808080807070707EC07DEECDEDEFDFDFDE0E0F2E4EB0101010101 + 01DFE5080606060C0C2C2C2C1919020D3714141414141414141414141A1A1A1A + 1A1A1A1A38386BB5C4C602101414141414141A1A383838383838363939393939 + 393939393939393939393B39393841632D676867686767676665642E2E2FFEFE + FE08E8F5F6F6EFEFF0F0F0F0E1E1E1E1E1E1E1EBE3F7F9F9F9F9F9F1F1F1F1F8 + E00708DB090909090809080807080707EC07ECECDEDEDEFDFDFDE0E0E0F2FCF1 + E9F3010101010101E2EC0606060C2C2C2C19191716151414141414141414141A + 1A1A1A1A1A1A1A383838B4B5C7C6021414141414141A1A1A3838383838363939 + 3939393939393939393B393939393939393841872D6868676767666564642E2F + 0BFEFE09E6F5F5F5F6EFEFEFF0F0F0E1F0E1E1E1E1E1E1E1E3F7F9F9F9F9F9F9 + F1F1F8F8F2080809DB090909090808080807070707ECECECDEDEDEFDFDE0E0E0 + F2F2FCFCFBFAEDE10101010101010AFD0B06060C2C2C19171837141414141414 + 141414141A1A1A1A1A1A1A1A381AB5B5C7C60214141414141A1A1A1A38383838 + 383939393939393939393B3B393B3B393B393B3939381A638867676766656564 + 2E2F06FEFEDBFBEFF4F4F5F5F6EFEFEFEFF0F0F0F0E1E1E1E1E1E1EBE3E5F9F9 + F9F9F9F1F1F1F1F8E00708DB0909090909090808080707070707ECECDEDEDEFD + FDFDE0E0F2F2FCFCFBFAF9F1E4E7F30101010101EFFBDB06060C2C1917161414 + 14141414141414141A1A1A1A1A1A1A3838386BB5C7C6021414141414141A3338 + 3838383836393939393939393939393B3B3B3B3B3B3B39393938416363676665 + 65642E2F0CFEFEFEFDEBF3F4F4F5F5F6F6F6EFEFF0F0F0F0E1F0E1E1E1E1E1EB + E3E5F9F9F9F9F9F9F1F1F1F8F207070606FEDB090908080808070707ECECECEC + DEDEDEFDFDFDE0E0F2F2FCFCFBFAF9F1F8E6E5E2F00101010101F3F8090BDB19 + 19161414141414141414141A1A1A1A1A1A1A383838386BB5C7C6021414141414 + 1A1A383838383836363939393939393B3B3B3B3B3B3B3B3B3B3B3B3939384162 + 636564642E2F0C06FEFEECEAF3F3F4F4F4F5F5F6F6EFEFEFF0F0F0F0F0E1E1E1 + E1E1E1E1E3F7F9F9F9F9F9F1F1F1F1F8F8F207FE06060606DB09080807070707 + 0707ECDEDEDEDEFDFDE0E0E0F2F2FCFBFBFAF9F1F8E6E5E5E4EDEBDC01010101 + F0060619193414141414141414141A1A1A1A1A1A1A383838383A6BB5C7C60214 + 1414141A1A1A383838383636393939393939393B3B3B3B3B3B3B3B3B3B3B3B39 + 391A3C6262642E2F2B06FEFE08E3DFDCF3F3F4F4F4F5F5F6F6F6EFEFEFF0F0F0 + E1E1E1E1E1E1E1EBE3F7F9F9F9F9F9F9F1F1F1F8F8F8E6F1FDDB0606060606DB + 09070707ECECECECDEDEFDFDFDFDE0F2F2F2FCFBFBFAF9F1F8F7F7E5E4E4E3EE + EAEF0101F0060C191716141A14141414141A1A1A1A1A1A1A1A3838383838B5B5 + C7C602141414141A1A333838383836363939393939393B3B3B3B3B3B3B3B3B3B + 3B3B3B39383C3F2B2B2F0C06FEFEDBF8F3DFDFDCF3F3F4F4F4F5F5F6F6EFEFEF + F0F0F0F0E1F0E1E1E1E1E1E1E3E5F9F9F9F9F9F1F1F1F1F1F8F8E6E6F7F7E6FD + DB06060606FEDB0807ECECDEDEDEDEFDFDE0E0E0F2FCFCFBFAFAF9F1F8F7E5E5 + E4E3E3E3EEEEE2E1E10606191716141414141414141A1A1A1A1A1A1A38383838 + 3A386BB5C7C602141414141A1A333838383636393939393939393B3B3B3B3B3B + 3B3B3B3B3B3B3B39383C1D2B2B06FEFEFEF2F6DFDFDFDFDCF3F3F3F4F4F5F5F5 + F6EFEFEFEFF0F0F0F0E1E1E1E1E1E1EBE3E5F9F9F9F9F9F1F1F1F1F8F8F8E6E6 + E6F7F7F7E5E5FD0906060606FEDB07ECDEDEFDFDFDE0E0E0F2FCFCFBFAFAF9F8 + E6F7E5E5E4E4E3E3EEEDEDEEF2060C19181514141414141A1A1A1A1A1A1A1A38 + 383838383A3AB5B5C7C8021414141A1A1A33383838363639393939393B3B3B3B + 3B3B3B3B3B3B3B3B3B3B3B39383F192BFEFEFEDEEB01DFDFDFDFDCDCF3F3F3F4 + F4F5F5F6F6F6EFEFF0F0F0F0E1E1E1E1E1E1E1E1E3F7F9F9F9F9F9F9F1F1F1F8 + F8E6E6E6E6F7F7E5E5E5E5E4E4FD0906060606FEDBECDEFDFDE0E0F2F2F2FCFB + FAFAF1F8E6F7E5E4E4E3E3EEE3F2070B060C0C173435141A141A1A1A1A1A1A1A + 1A1A1A383838383A3A3AB5B5C7C802143314331A33333838383636393939393B + 3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B391A1C2B0C09FDEA01DF01DFDFDFDFDCDC + F3F3F3F4F4F5F5F6F6EFEFEFEFF0F0F0F0E1E1E1E1E1E1EBE3F7F9F9F9F9F9F9 + F1F1F1F8F8F8E6E6E6F7F7E5E5E5E5E4E4E4E4E3FD0906060606FE09ECE0E0F2 + F2FCFCFBFAF9F9F1E6F7E5E5E4E5F2080B0606060C2B1734351A141A1A1A1A1A + 1A1A1A1A1A38383838383A3A3939B5B5C5C8021414141A1A3333383838363939 + 3939393B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B393C1C2BFE070101010101DFDF + DFDFDCDCF3F3F4F4F4F5F5F6F6F6EFEFF0F0F0F0E1F0E1E1E1E1E1E1E3E5F9F9 + F9F9F9F9F1F1F1F8F8F8E6E6E6F7F7F7E5E5E5E5E4E4E4E3E3E3E3E009060606 + 06FE09DEF2FCFCFBFAFAF1F8E6F7F1E00806060606FE062C2C1918351B1A1A1A + 1A1A1A1A1A1A1A1A1A383838383A39393939B5B5B6C802141A1A1A3338383838 + 3636393939393B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B391A1D2BFE07010101 + 010101DFDFDFDFDCF3F3F3F4F4F5F5F6F6EFEFEFF0F0F0F0F0E1E1E1E1E1EBE1 + FBFCFBFAF9F9F9F9F1F1F1F8F8F8E6E6F7F7F7E5E5E5E5E4E4E4E4E3E3E3EEEE + EEEEE00906060606FE09FDFBFAF1F1F8F1F2FD06060607FCE808FE2C19193714 + 1A1A1A1A1A1A1A1A1A1A1A1A383838383A3A39393939B5B5C5C80214331A1A33 + 3338383836393939393B3B3B3B3B3B3B3B3B3B3B3B3B3D3B3B3B3B39411C2BFE + 070101010101DFDFDFDFDFF3F3F3F4F4F4F5F5F6F6F6EFEFEFF0F0F0E1E1E1E1 + E1E7FB08FEDBFE08DEFBF9F1F1F1F8F8F8E6E6E6E6F7F7E5E5E5E4E4E4E4E3E3 + E3E3EEEEEEEDEDEDEEE00906060606FE09FDF9F1F1070707FBE8E7EAE708FE2C + 1917351A1A1A1A1A1A1A1A1A1A383838383838383A3939393939B5B5B6C80214 + 1A1A1A333338383836393939393B3B3B3B3B3B3B3B3B3D3B3D3B3B3D3B3D3B39 + 3C1C2BFE0801010101DFDFDFDFDFDFDCDCF3F4F4F4F5F5F6F6F6EFEFF0F0F0F0 + F0E1E1E8FDDBFEFEDB07FEFEFEFE08DEFBF1F1F8F8E6E6E6F7F7F7E5E5E5E5E4 + E4E4E4E3E3E3EEEEEEEEEDEDEDE8E8EDF20906060606FE08FD08ECEAEAEAE7EA + E708FE2C1934351A1A1A1A1A1A1A1A1A1A3838383838383A39393939393BB5B5 + B6C8021A1A1A33333838383636393939393B3B3B3B3B3B3B3B3B3B3B3B3D3B3D + 3B3B3B391A1D2BFE07010101010101DFDFDFDCDCF3F3F4F4F4F5F5F6F6EFEFEF + EFF0F0F0F0F7ECFEFEFE07E4E3E5F2DE08FEFEFEFE08FDFAF8F8E6E6F7F7F7F7 + E5E5E5E4E4E4E4E3E3E3EEEEEEEDEDEDE8EDE8E8E8E2EDF209060606060807EA + EAEAEAE7EA08FE2C1934141A1A1A1A1A1A1A1A383838383838383A3939393939 + 3B3BB5B5B6C8021A1A1A333338383836363939393B3B3B3B3B3B3B3B3D3D3D3D + 3D3D3D3D3D3D3D3B411C2BFE070101010101DFDFDFDFDCDCF3F3F3F4F4F5F5F6 + F6EFEFEFF0F0EBFB09FEFEDBFDE8E1E1E3F7FCF2F2E0DE08FEFEFEFE08FDF9F7 + E6F7F7E5E5E5E4E4E4E4E4E3E3E3EEEEEEEEEDEDEDEDE8E8E8E8E2E2E9EDF208 + DBDEEEEAEAEAE7EAE708FE2B191C14381A3838383838383838383838383A3A39 + 39393B3B3B3BB5B5B6C8021A1A333333383838363939393B3B3B3B3B3B3D3B3D + 3D3D3D3D3D3D3D3D3D3D3D3B411C2BFE070101010101DFDFDFDFDCDCF3F3F3F4 + F4F5F5F6F6F6EFEFE9FDDBFEFE09FBE7E1E1E1E1E3F7FCF2F2F2F2F2E0DE08FE + FEFEFE08FDF8F7F7E5E5E5E5E4E4E3E3E3E3EEEEEEEDEDEDEDE8E8E8E8E2E2E2 + E9E9E9E9EAEAEAEAEAEAEAE7E708FE2C19341B38383838383838383838383838 + 3A3A3939393B3B3B3B3BB5B5B6C8021A1A333833383836363939393B3B3B3B3B + 3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3B411C2BFE0801010101DF01DFDFDFDCDC + F3F3F4F4F4F5F5F6F6EFE407FEFEFE07E4E1E1E1E1E1E1E1E3F7FCF2F2F2F2F2 + F2F2F2F2EC08FEFEFEFE07E0F7E5E4E4E4E4E4E3E3EEEEEEEEEDEDEDEDE8E8E8 + E8E8E2E2E9E9E9EAE9EAEAEAEAE7EAE7EA08FE2C19341A383838383838383838 + 38383A3A393939393B3B3B3B3B3BB5C7B6C8021A333333383836363939393B3B + 3B3B3B3B3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3B3A1C2BFE070101010101DFDF + DFDFDCDCF3F3F3F4F4F5F5E1FC09FEFEDBFDE2E1E1E1E1E1E1E1E1E1E3E5FCF2 + F2F2F2F2F2F2F2F2FCF2F2EC09FEFEFEFE07E0E5E4E4E3E3E3E3EEEEEEEEEDED + EDEDE8E8E8E2E2E2E9E9E9E9E9EAEAEAEAEAEAEAE708FE2B19341A3838383838 + 383838383A3A393A3939393B3B3B3B3B3B3DB5C7C6C902333333333838363639 + 39393B3B3B3B3B3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3B3A3F2BFE07010101 + 01DF01DFDFDFDFDCF3F3F4F4F4E9FDDBFEFE08FCE7E1E1E1E1E1E1E1E1E1E1E1 + E3F7FCF2F2F2F2F2F2F2FCF2F2FCFCFCFCF2EC09FEFEFEDB07F2E4E4E3E3EEEE + EEEDEDEDEDE8E8E8E8E8E8E2E9E9E9E9E9E9EAEAEAEAE7E7EA08FE2B19371A38 + 383A3838383A3A3A3939393939393B3B3B3B3B3D3D3DB5C7B6C8021A33333838 + 38363639393B3B3B3B3B3D3D3D3D3D3D3D3D3D423D423D423D3D3D3D3A3F2BFE + 08010101010101DFDFDFDFDCF3F3F4E407FEFEFE07E4E1E1E1E1E1E1E1E1E1E1 + E1E1E1E1E3F7FCF2F2F2F2F2F2F2F2F2FCF2FCFCFCFCFCFCF2EC09FEFEFEDBEC + F2E3E3EEEEEDEDEDEDEDE8E8E8E2E9E2E9E9E9E9EAEAEAEAEAEAE7EAE708FE2C + 19371A3A3A3A383A3A3A39393939393939393B3B3B3B3D3D3D3DC7C7B6C90233 + 3338383836363939393B3B3B3B3D3D3D3D3D3D42423D423D423D423D423D423D + 3A3F2BFE0701010101DFDFDFDFDFDCF3E1FB09FEFEDBFDE2E1E1E1E1E1E1E1E1 + E1E1E1E1E1E1E1E1E2FCFAF2F2F2F2F2F2F2FCF2FCFCFCFCFCFCFCFCFBFBFBF2 + EC09FEFEFEDBECFCEEEDEDEDE8EDE8E8E8E8E2E2E9E9E9EAE9EAEAEAEAEAE7EA + E708FE2B17371A393939393A393A3939393939393B3B3B3B3D3D3D3D4242C7C7 + C6C9023333383636363639393B3B3B3B3D3D3D3D3D3D3D3D4242424242424240 + 4242423D473C2AFE07010101010101DFDFDFEAFDDBFEFE08FBE7E1E1E1E1E1E1 + E1E1E1E1E1E1E1E1E1E1E1E1E2E5F9F2F2F2F2F2F2F2F2F2F2FCFCFCFCFCFCFB + FCFBFBFBFBFBF2EC09FEFEFEDBECFBEDEDEDE8E8E2E8E2E2E9E9E9E9EAE9EAEA + EAEAE7EAEA08FE2B1D371A3939393939393939393939393B3B3B3B3B3D3D3D42 + 4242C7C7C6C90233383836363639393B3B3B3B3B3D3D3D3D3D42424242404240 + 404040404040403D3B3F2BFE080101010101DFF4E407FEFEFEECE4E1E1E1E1E1 + E1E1E1EBE1E1E1EBE1E1E1E1E1EBE1E1E2F7E4E4F7FAF2F2F2F2FCF2FCFCFCFC + FCFCFCFCFBFBFBFBFBFAFAFAFAF2ECDBFEFEFEDBDEFAE8E8E8E8E2E2E9E9E9E9 + E9EAEAEAEAEAEAE7E708FE2B173C38393939393939393939393B3B3B3B3B3B3D + 3D3D42424242C7C7B7C90238383836363939393B3B3B3D3D3D3D3D4242424242 + 4040404040404040404040423B412AFE0701010101F0FA09FEFEDBFDE2E1EBE1 + E1EBE1EBE1EBE1E1E1EBE1E1E1E1EBE1E1E1E1E1DEDED8EBE1E7EDE6FAFCF2F2 + FCF2FCFCFCFCFCFBFCFBFBFBFBFAFBFAFAFAF9F9F2ECDBFEFEFEDBDEF1E2E2E2 + E9E9E9E9EAEAEAEAEAE7EAE7EA08FE2B1C3C3839393939393939393B3B3B3B3B + 3B3D3D3D424242425140C7C7B7C90238383836363939393B3B3D3D3D3D3D4242 + 4242404040404046404040403E4640423B412BFE070101EAFDFEFEFE08FAE7EB + E1EBE1EBEBE1EBE1EBE1EBE1EBE1EBE1EBEBE1EBE1EBEBE1EBE7E1EFEFF0E1EB + E7E8E5F9FCFCFCFCFCFCFCFCFBFBFBFBFBFAFAFAFAFAF9F9F9F9F1F2ECDBFEFE + FEDBFDE6E2E9E9E9E9E9EAEAEAEAEAE7E708FE2B1C3C38393939393939393B3B + 3B3B3B3B3B3D3D3D424242514051C7C7C8C902383836363939393B3B3B3D3D3D + 42424242404040404646464646463E3E463E3E423D412AFE08E407FEFEFEECE5 + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBF0F6EFEFF6 + F6EFF6F6EFE1EBE1E2E4F9FBFCFCFCFCFBFBFBFBFBFBFAFAFAFAFAF9F9F9F1F1 + F1F8F2ECDBFEFEFE09FDE5E9EAEAEAEAEAEAE7EAEA08FE2B1C3C3A3939393939 + 393B3B3B3B3B3B3B3D3D3D4242514051464676B6B7C902383636393936393B3B + 3B3D3D3D3D424040464046464646463E3E3E3E3E3E3E3E403D412AFEFEFEFEDB + FDE2EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBE1EB + EFF6F0E4EDE1EFEFEFF6F6F6F0EBEAEAE4F1FBFBFCFBFBFBFBFBFAFAFAFAF9F9 + F9F9F1F1F1F8F8F8E6F2ECDBFEFEFE09FDE4EAEAEAEAEAE7E708FE2B1C3C3A3B + 3B3B393B3B3B3B3B3B3B3B3D3D3D424251515146464676B6C8C9023636363936 + 3B3B3B3B3D3D3D42424040404646464646464E3E4E4E4E4E4E4E4E463D4162FE + FE08FBEAEBEBEBEBEBEBEBEBE7EBEBEBEBEBEBEBEBEBEBEBEBEBEBE7EBEBEBEB + EBEBF0F6EFF00508F2E3E2EAEBF0EFF6EFEFEFF0E1E1E7EDF8FAFBFBFBFAFAFA + FAFAF9FAF9F9F1F1F1F8F8F8F8E6E6F7F2ECDBFEFEFE09E0E3E7EAE7EA08FE2B + 1C41393B3B3B3B3B3B3B3B3B3B3B3D3D3D424242514646464E46B6B6B7B80236 + 3639363B393B3B3B3D3DA2424040404646463E4E3E4E4E444444444444444446 + 42412AFE08E7EBEBEBE7EBE7EBE7E7EBEBE7E7EBE7E7E7E7E7EBE7EBE7E7EBEB + E7EBE7EBE7E1EBEFF6EB07FCFAE5FBFAE4E2EAE7EFF6F6EFF6EFF0E1E1EBE8E6 + FAFAFAFAFAFAF9F9F9F9F1F1F1F8F8F8E6E6E6E6F7F7F7F207DBFEFEFE09E0EE + E708FE2B1C1A393B3B3B3B3B3B3B3B3B3D3D3D3D3D4242514646464E4E4EB6B6 + C9C9023639393B363B3B3B3D3D3D424040403E3E4E4E4E724472494949494949 + 4943494E42472AFE08E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7 + E7E7E7E7E7E7E7E7E7F0F6EFF005FDFCEDDFF6EAE4FBFAF7E8E9EBF0EFF6EFEF + F6EFE1E1E8E2E5FAFAFAF9F9F9F9F1F1F1F8F8F8E6E6E6E6F7F7F7F7E5F7F207 + DBFEFEFE08DBFE2B1C41393B3B3B3B3B3B3B3B3B3B3D3D3D4242404646464E4E + 7272B6B6C9B802363939393B3B3BA23D3D404040403E464E4E4E72724949491F + 4949434949434349514762FE08E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7 + E7E7E7E7E7E7E7E7E7E7E7E7E1F0EFF0E8ECFCF9F4DCDCDFF3F6EAE4FAFAF7ED + EAEBF0EFF6EFEFF6EFE1EBEAE9E4F1F9F9F9F1F1F1F8F8F8E6E6E6E6F7F7F7F7 + E5E5E5E5E5F207DBFEFEFE2B3F41393B3B3B3B3B3B3D3B3D3D3D3D4242425146 + 464E72727272B6B6C9B8023939393B6A3B3B3D3D3D424040463E4E4E49494949 + 49431F494343435353434349464762FE08E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7 + E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7EBE2F6F6E1E0F2FCE7DFDFDFDCDFF3F3F3 + F4E7E4FAFAF8EEEAEBF0EFEFF6F6F6F6F0E1E7E7EEF8F1F1F1F1F8F8E6E6E6E6 + F7F7F7E5E5E5E5E5E5E4E4F7F2DBFE2B3441393B3B3B3B3D3B3D3B3D3D3D4242 + 405146464E72725A5A5AB6B7C9B802393939363B3B3D3D3D4040403E3E4E4444 + 4949491F434326535353535353535349464762FE08EAEAEAEAEAEAEAEAE7EAEA + EAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAE7E1F6F6EFA0E0FCE4DFDFDFDCDC + DCDCF3F3F3F3F3F5E7EEF9FAF1E3EAE1EFF6F6F6F6F6F6F0F0F0E7EDF7F8F8F8 + E6E6E6F7F7F7F7F7E5E5E5E5E4E5E4E4E409FE2B3F413B3D3B3D3B3B3D3D3D3D + 3D3D4242404646464E725A5A5A5A7DB7C9B80239393B3B3B6A3DA23D40403E3E + 46444949491F43432653535353535353234D53264E4762FE08EAEAEAEAEAEAEA + EAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEBE1F6EF0AE0FCFAF6DF + DFDCDCDFDCF3F3F3F3F3F3F3F4F4F4E7EEF9FBFAE4E2E1F6F6F6F6F6F6EFEFF0 + E1EBE2E5E6E6E6F7F7F7F7F7E5E5E5E5E5E5E4E4E409FE2B3F413B3D3D3B3D3B + 3D3D3D3D3D42424246464E4E727E5A5E7E7EB7B7C9B8023B3B3B6A3B3D3D3D42 + 40403E46444949491F2626535D5353234D4D5757575757264E8662FE08EAEAEA + EAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAE7E2F6EFEFF9F2 + FBEADCDFDFDCDCDCDCDCDCF3F3F3F3F3F4F4F4F4F5F5EBEDF9FBFBE5E8E1EFEF + EFF6F6EFF6EFF0F0EBE9E3F7F7F7F7F7E5E5E5E5E5E4E5E4E409FE2B3F3A3B3D + 3D3D3D3D3D3D3D3D4242424046464E725A5A7E7E5E5EB7B7C9B8023B3B3B3D3B + 3D3D3D40403E3E4444491F1F2653535357235757565676745674565D724262FE + 08E9E9EAEAE9E9EAE9E9E9E9EAEAE9E9E9E9EAE9EAE9E9EAEAE9EAE9E7E1F6F0 + F6EEFAFCEDDFDFDFDFDCDFDCDCDCF3F3F3F3F3F3F4F4F4F4F5F5F5F5F5EBEDF8 + FBFBE6E8EBEFEFF6EFEFF6F6EFF0E1EBEAEEE5E5E5E5E5E5E5E4E4E4E409FE2B + 3C3A3B3D3D3D3D3D3D3D3D424242405146464E725A5A5E5E5E5EB78AB8A8023B + 3B3B6A3D3DA242403E3E44444943435353535D29575656767474745C74567657 + 7E5162FE08E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9EA + E1F6EFF6E2F7FCE4F3DFDFDFDFDCDCDCDCDCDCF3F3F3F3F3F4F4F4F4F4F5F5F5 + F6F6F6EFE1E8F7FBFBF8EEE7EFF6EFF6F6EFF6F6EFE1E1EAE8E4E5E5E5E5E4E4 + E409FE2A3C3A3B3D3D3D3D3D3D423D4242424046464E725A7E5E5E5B5B5EC9B7 + B8B8023B3B3B3D3D3D4040403E46444949435353535D57745C565C5C74745C5C + 595C50577E5163FE08EBE9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9 + E9E9E9EBF0F6EFE1E4FBF7F3DFDFDFDFDFDFDCDCDCDCF3F3F3F3F3F3F4F4F4F4 + F5F5F5F5F6F6F6F6F6F6EFE1E8E5FBFAF1EEEAF0F6F6EFF6F6EFF6EFE1E1E7E2 + E3E5E5E4F8DBFE2A41473B3D3D3D3D3D3D42424242424046464E725A5E5E265E + 5B5EB7C9B8A8023B3B3B3D3DA23D403E3E44444953265353575676745C5C5C59 + 595F7D7D597D7D565D2887FEDBEFEBE9E9E9E9E9E2E9E9E9E9E9E9E9E9E9E9E9 + E9E9E2E9E2E9EBEAF6F6F0EEFAF7F3DFDFF3DFF3DFDCDCDCDCF3DCF3F3F3F3F4 + F4F4F4F4F5F5F5F5F6F6F6F6F6EFEFEFEFEFE1E2E5FAFAF1E3E9F0EFF6F6F6F6 + EFEFF0F0EBE9E3E4ECFE0B2A413B3D3D3D3D3D3D3D3D4242424040464E725A5A + 5E5E5E5D5D5DC995B8A8023B3B3D3D3D4040403E3E4444435353575756745C5C + 5F5F7D7D7D7D7D7D7D7D7D50577E85FEFEE2EFEBE9E9E2E9E9E9E2E9E2E2E9E8 + E9E9E9E2E2E9E9E9E7E1EBEFF6E7EEF9E5F4DFF3DFDFDFDFDFF3DFDCDCDCF3F3 + F3F3F3F3F4F4F4F4F4F5F5F5F6F6F6F6F6EFEFEFEFEFEFEFEFE1E9E5FAFAF1E3 + E8F0F6F6F6F6EFF6F6F0E1E3DBFE2A3C3A3B3D3D3D3D3D3D4242424240405146 + 4E725A7E5E265D5D5D5D9595B8BA023D3D6A3D403D40403E6B44494353235774 + 5C5C5C5F5F7D7D7D7D7D817D7D7D7D5F5C5E772FFE09F0F0F0EAE2E2E2E2E2E2 + E2E9E2E9E2E2E2E9E2E9EAE1EAEFEFEFE5E6FBE3F4DFDFDFDFF3DFDFDFF3DFDC + DCDCF3F3F3F3F3F3F4F4F4F4F5F5F5F5F5F5F6F6F6EFF6EFEFEFEFEFF0EFF0F0 + F0EAE4FAFAF1E5E8EBEFF6F6F6EFEFE0FE063F413B3D3D3D3D3D3D423D424242 + 4040464E4E725A7E265D5D5D5D5DC9C9B8BA023B3D3D3D3DB4403E3E44444353 + 5357565C5C5F5F7D7D7D7D818181818181817D7D5C767E2DFEFE64EAF6EFE1EA + E9E2E2E2E2E2E2E2E2E2E2E2EAEBF0F0F6F6EDFCFAFCE2F3DFDFF3DFDFDFDFF3 + DFDFDFDCDCDCF3F3F3F3F3F3F4F4F4F4F4F5F5F5F6F6F6F6EFF6EFEFEFEFEFEF + EFF0F0F0F0F0F0F0EAE3FAFAF1FAEEEFF6EFE709FE623C3A3B3D3D3D3D3D3D3D + 3D42424240404646725A5A5E265D5D5D5D8495B8B8A8023D3D3D403D403E3E3E + 4449435357565C5C5F5F7D81818181818A81818181817979815C5D7A2EFEFE2F + F20AF6E1F0EBE7E9E2E2E2E2E9E9E7E1F0EFF6F0E4FDECDEFD09EBDFF3F3DFF3 + DFF3DFDFDFDCDFDCDCDCF3F3F3F3F3F4F4F4F4F4F5F5F5F6F5F5F6F6F6F6EFEF + EFEFEFEFF0EFF0F0F0F0F0F0F0F0F0E7F2E5E7EFEFF0FAFE0B3F41473D423D42 + 3D3D4242424242425146464E725A7E5E5B5D8484295D95B89ACA023D3D3D3DB4 + 403E3E444443435357745C5F5F5F8181818A8A7979798A797979797979815C5D + 722EFEFE07FAFAE8F0F60AF0E1EBE7E7EBE1EFF6F0EDE0ECECECECEC07ECECEC + F2F8E8E1DFDFDFDFF3DFDCDCDCDCDCF3F3F3F3F3F4F4F4F4F4F5F5F5F5F6F6F6 + EFEFEFEFEFEFEFF0EFF0F0F0F0F0F0F0F0F0F0E9FBE8EFF6EF0506FE2F3C473B + 3D3D3D3D3D3D3D3D424242404046464E725A5E5E5D298484848496B89ACA023D + 3D404040403E3E44444353574B5C597D7D818181798A8A838383787879837978 + 798A7D5C5D722EFEFE09F2FAFBF8E8EFF6EFE1EFEFF0EDE0ECECECECE0E40AFB + ECFDDEECECECECECDEF2E5E2EFF3F3F3DCDCF3F3F3F3F3F4F4F4F4F4F5F5F5F5 + F6F6F6F6F6EFEFEFEFEFEFEFF0EFF0F0F0F0F0F0F0F0F0F8E5EBF6F60A09FEFE + 2A41473D42423D3D423D3D424242425140464672725A265D5D848484848496B8 + 9CCA023D3DA23D403E3E6B6B43434D4B745C5F7D81818A8A8A838A8383838383 + 83838383787981815C5D722DFEFEFE08ECE0FAF1E5E3F7FCDEECECECECF2E50A + 040404FBECFCF7E6FAF2FDDEECECECECECFDFBE3EAF5F3F3F3F3F3F4F4F4F4F4 + F5F5F5F5F5F6F6F6F6F6EFEFEFEFEFEFEFF0F0F0F0F0F0F0F0F0E9FAE8EFF6E1 + DEFEFE6241473D3D423D3D423D424242424242405146464E497E5E5D5D848484 + 8484B8B8A8CA023D3D4040403E3E6B6B4345534B5C597D81818A8A8383838383 + 838383838383838378787879545C577E880B0BFEFEFEFEDB08ECECECECECF2E4 + 0A040404040404FBECFCE6F7F7F7E5E5F7FAF2FDECECECECECECE0FAEEE7F3F3 + F4F4F5F5F5F5F5F5F6F6F6F6F6EFEFEFEFEFEFF0EFEFF0F0F0F0F0F0F0F0F8EE + F0EFF0FBFEFE2F41473D424242423D423D3D42424242404246464672497E5D5D + 84845C848484B8B89CCA023D4040B4403E3E6B44434570745C7D7D818A8A8383 + 838383838990838383838383838378797981505C535A882D2F0BFEFEFE07ECF2 + E40A040404040404040404FBECFCE6F7F7E5E5E5E5E4E4E3E3E5FAF2FDECECEC + ECECECE0F1EDEBF4F5F5F5F5F5F6F6F6F6F6EFEFEFEFEFEFEFF0F0F0F0F0F0F0 + F0EDF7E7F6F6E5FEFE2F41473D3D4242423D3D3D424242424240405146464E72 + 7E5E5D5D848461848484989ACACA02403D40403E3E3E6B4443534B5C5F7D8181 + 8A8383838383908390837C9083837C7C83838378787981505C56534372518762 + 2FECEC0A040404E104040404040404FBECFCF7F7F7F7E5E5E4E4E4E3E3E3EEEE + EEEDE5FAF2FDECECECECECDEF2F7E8E1EFEFF5EFEFEFEFEFEFEFEFF0EFF0F0F0 + F0F0F0F0E7F1EAF6F6E5FEFE2F41473D42424242424242424242424242424051 + 46464E5A7E5E5D84848F8F8F8F8F98B8CACA023D4040B43E3E6B4449454D4B5C + 5F7D8179798383839089908989897C9089907C7C7C838383787979795050744B + 704346473F07EC0A0A04040404040404040404FBECFCE6F7F7F7E5E5E4E4E4E3 + E3E3EEA0EDEDEDE8E8E2E8E4F9F2DEECECECECECFDFCE5E9F0EFEFEFEFEFEFEF + F0F0F0F0F0F0F0EDFAEDF0F0FDFEFE2F413B3D42424242424242424242424242 + 42404046464E725A7E265D848F8F8F8F8F849A98BACA02404040403E3E6B4443 + 454556747D818A8A83838390899089898989898989897C907C83838379585858 + 79547D50504D494241ECEC0A0404E10404040404040404FCECF2E6F7F7E5E5E5 + E5E4E4E3E3E3EEEEEDEDE8E8E8E2E2E2E9E9EAE2E4F9E0DEECECECECECFDFBEE + EBEFEFF0EFEFF0F0F0EBF7FCE5EBE208FEFE2E41473D42424042424242424242 + 4242424240404046464E727E5E5D845C8F8F8F8F8F8F9A9ACACA0240B440403E + 3E6B4443454D4B597D81818A83838989899089898989898989897C7C7C837C83 + 8378787954546E55554843514707EC0AE104040404040404E2F8FDECECECECEC + DEE0F9F7E4E4E4E3E3E3EEEEEEEDEDE8E8E2E2E9E9EAEAEAE7EAE7E7E2E4FAE0 + ECECECECE0F0EFEFF0F0F0F0E3FCFBE4EAF9DBFE096447474242404040424240 + 4242424242424240424040464E4E725A5E5D84618F8E8E8E8E8F9A9ACACA0240 + 40403E3E3E6B4443434D74507D818A8383838989898989898989898989898989 + 8989837C83787879795454505048534647ECEC0A0404040404E8FADEECECECDE + FBE0ECECECECECECECDEF2F9E4EEEEEEEDEDEDE8E8E2E2E2E9E9EAEAEAE7E7E7 + EB0AEBEBEBE2FCECECEBEFEFEFF0EBF9FBE3EAEBDEFEFEDE67473D4240404040 + 404042424242424242425140404046464E725A5E5B5D848F948D94948E8F9A9A + CAC2024040B43E3E3E6B4343454A747D7D818A83839089898989898989898989 + 89898989897C7C83838378795479545555484D4E4707EC0A040AA0F2DEECECEC + DEF9E9D9DDDDDDEBEDF1F2ECECECECECECECDEF2F1E3E8E8E8E2E2E9E9EAEAEA + EAE7E7E7E7E7EBEBEBEBE7DEECEBEFEFE7E3FBFBF8F8DEFEFEDBDE6885424046 + 3E463E40404040404242424240424040404046464E495A5E5D84848F8E8D9394 + 8E949A9CCAC2024040403E3E6B6B4343454B5C7D7D818A838389898989898C89 + 898C898989898989897C897C7C78787879546E6E505045443DECECF7F2ECECEC + B3D1D4D4D7DDDDDDDDDDDDDDDDDDDDDDEBE8E6F2DEECECECECECECDEFCE6EEE2 + E9E9EAEAEAE7E7E7EBE7EBEBEBEBEBDEECEDEAE6FCFCDEDBFEFEFEFEE0D86651 + 51463E463E46463E4040405142424240424040404640464E72495A265D848F8E + 8D9393938E8E9C9CCAC20240403E3E3E6B444443454A747D7D8A838389898989 + 898C898C8C89898C898C898989897C7C8383835858796E6E55504B4342ECECEC + ECEC0708B3D0D3D3D3D3CFCFCFD5D7DADDDDDDDDDDDDDDDDDDE1E8E5FCFDECEC + ECECECECFDF2F7EDEAEAE7E7E7EBE7EBEBEBEBDEEC09ECEC09FEFEFEFE09FAA0 + D19F604E4444443E3E46464040404040514042425140515146464E4E725A5E53 + 848F8F8D93939393938D9C9CCAC2024040403E3E6B6B4443454B507D818A8383 + 898989898C898C89898C8C898989898989897C7C7C8378787979545555504843 + 442D07ECEC07DBD2B3CED3D3D3D3D3D3D3D3D3CFCFD5D5D7DAD9D9DDDDDDDDDD + DDDDF0E9E4FCFDECECECECECECFDFCF7EDEBEBEBEBEBEBF8EC07FEFEFEFE0B2E + 8867D19F7E72491F1F49443E4E46463E46404040405151404040404046464E72 + 497E5E5D848F8E939395959593949CCACAC20240403E3E3E3E4443434D4B507D + 818A83908989898C8C898C8C898C8C898C898C898989897C838378787979546E + 6E50746C433E0707ECECECD2B3D4D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3CFD5D5 + D7DADAD9DDDDDDDDDDDDDDF6EAE4FAE0ECECECECECECFDFCF7EDE7E4EC080B2F + 2D827E5D5D5D5D5B53532653434949443E4E4E46464646514051514051464646 + 464E4E72492653845C8F9493959595959593CA9CC2C20240403E3E3E6B44B543 + 4D4B507D818A838389898989898C8C898C8C8C8C8C898989897C898983838378 + 58796E556E50504845434642872EDBB3B3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3 + D3D3D3D3D3D3CFCFD5D7DADAD9D9DDDDDDDDDDDDF6E7E3F9E0ECECECECECECEC + EC0842725B5C5F817D8159507457234D43434949444E4E464646464651404040 + 464646464E4E4E495A5E5D848F8E8A959595969595959C9CC2C202403E3E3E3E + 6B4443434D74507D798A83898989898C8C8C8C8C8C8C8C8C8C89898989897C7C + 7C7C785858796E54505050486C4543463D4163B3D1D3D3D3D3D3D3D3D3D3D3D3 + D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3CFD5D7DAD9D9D9D9DDDDDDDDDDDDE72F + 08ECECEC076449748158837C8383797D50504B4D45434949444E4E3E4E464646 + 46464046464646464E4E72497E5B5D618E8D9395969696969595CACACAC20240 + 3E3E3E3E6B4443434D48507D8183838989898C8C8C8C8C8C8C8C8C8C8C8C8C89 + 8989897C838383785854546E505050481E6C4544424764B3D0D3D3D3D3D3D3D3 + D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3CFD5D7DAD9D9D9 + DDE1E407ECECEC07825E565458898989898378797D50744D53531F4944444E4E + 3E464E4646464646463E464E4E72721F5E5D848F8E9395969696969696959CCA + C2C20240403E3E3E6B6B43454D74507D81838389898996968C8C8C8C8C8C8C8C + 8C8C898C8989897C7C8383785879546E6E505050486C4549516265B3CED3D3D3 + D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3 + D3D3CFD5D4F2ECECEC086472265255587C738C8C8C898379815974564D534349 + 4949724E4E4E4E4646464646464E4E4E72725A7E5357848E9395969698989896 + 96909CCAC2B202403E3E3E6B6B6B43454D74507D798383898989898C8C8C8C8C + 8C8C8C8C8C8C8C8C8989897C7C7C83787979546E556E5048484B45494241D2B3 + CECFD3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3 + D3D3D3D3D3D3D3D3D4D1D264474244535055587C898C8CA58C898358817D744B + 7053431F1F4949444E4E4E464E4E46464E4E4E72725A7E535D295C8E93959698 + 989898989696CACAC2C202403E3E3E3E6B4443454548507D7983839089898C8C + 8C8C8C8C8C8C8C8C8C8C8C898989897C7C837878587954545550504848484549 + 3D41D2B3D4D3D3D3CFD3D3D3D3D3D3D3CFD3D3D3CFD3D3D3D3D3D3D3D3D3D3D3 + D3D3D3D3D3D3D3CFD3D3D3D3D4B3D28786444A50544F71898CA5ABAB8C8C8983 + 817D5074224D53431F1F4949444E4E4E4E4646464E4E725A725A5A265D848F8E + 95969698989A989898969DCAC2CB0240403E3E3E6B4443454D74507D79838389 + 8989898C8C8C8C8C8C8C8C8C8C8C8C898989897C7C7C8378584F6E6E55505050 + 504B454E3D63B3D1CFCFD3CFD3CFD3CFD3CFD3CFD3CFD3CFD3CFD3CFD3CFD3CF + D3CFD3CFD3CFD3CFD3CFD3D3D3CFD3CFD4D2D23A465350554F58718C738B8B8B + A58C898958547D50564D4343435A1F494E4E724E4E4E4E4E4E72725A495A5E53 + 5D5C8E939596989A9A9A9A989896C2CAC2B20240403E3E3E6B6B43454D74507D + 7983838989898C8C8C8C8C8C8C8C8C8C8C8C8C8C8C898989837C8378794F4F6E + 6E505050504B2646472EB3D1CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCF + CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFD3D4D2D247724D5554584C6F8C + 8B8B8B8B8B8C897C78817D50744B5343431F4949724E4E4E4E4E4E4E7272725A + 5A5A265D848F8E939596989A9A9A9A9A9898CACAC2B202403E3E3E3E6B6B4343 + 4D4850548183838989898C8C8C8C8C8C8C8C8C8C8C8C8C898989897C7C7C7C78 + 7858546E6E505050484B53464765B3D6CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCF + CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFD3CED26686491E2058 + 587C8C758B8B97978BA58C8983587D595C4B70532643261F5A5A72724E5A7272 + 72285A5A7E26535D848F8E9096989A9A9C9C9A9A9A989DC2C2CB0240403E3E3E + 6B4443434D74507D7983838989898C8C8C8C8C8C8C8C8C8C8C8C8C8C8989897C + 7C7C7C787858586E556E5050507443514167B3CED5CFCFCFCFCFCFCFCFCFCFCF + CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFD0D26540 + 4350544C716F73A57BAAAAAA808B8C897C588150744B4D534326431F49497272 + 5A72727272725A1F265E5B5D5C8E8A9596989A9C9C9C9C9A9A98C2CAB2CB0240 + 403E3E3E6B4443434D4B507D7983838989898C8C8C8C8C8C8C8C8C8C8C8C8C8C + 8C89897C7C837883785854546E505550554B5A4241D2B3D4CFCFCFCFD5CFCFCF + D5CFD5CFCFCFD5CFD5CFCFCFCFCFCFCFD5CFCFCFCFCFCFCFCFD5CFCFCFCFCFCF + D1D22D4E4D504F717173737B977FAAAA978BA5897C78817D5074705353264349 + 1F5A72725A727272725A7E7E43265D848F8E9395989A9C9C9C9D9C9C9A98C2C2 + C2CB0240403E3E3E6B6B4343454B507D81838389898C8C8C8C8C8C8C8C8C8C8C + 8C8C8C8C8C898989897C7C8378584F5854546E55594B4E8662B3B3D5D5CFD5D5 + CFD5CFD5CFD5CFD5CFD5CFD5CFD5CFD5CFD5CFD5CFD5CFD5CFD5CFD5CFCFCFD5 + CFCFD5D4B3D286494A554F717173A57BAA92AC92AA8BA58C7C838A7D50744B23 + 53264326495A5A5A727A725A5A5A495E5E535D848F8D9596989A9C9C9D9D9C9C + 9C98C2C2B2CB0240403E3E3E6B4443434D4B507D8183838989898C8C8C8C8C8C + 8C8C8C8C8C8C8C8C8C8989897C7C7C7878585854546E6E6E4853464764B3D1D5 + D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5 + D5D5D5D5D5D5D5D4D2D23D49484F4C716F737B8BAA929292AA978B8C8983797D + 7D505723535326261F1F495A5A727272725A5A5A535B84848F8D9596989A9C9D + 9D9D9D9C9A9AC2C2CBCB02403E3E3E3E6B6B43434D74507D79837C8989898C8C + 8C8C8CA58C8C8C8C8C8C8C8C897389897C7C7C837878584F5455545548435147 + D2B3A0D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5 + D5D5D5D5D5D5D5D5D5D5D5CED266514350584C6F6F737B8092929292AC808B8C + 897C7954595C56702353261F5E1F5A7E5A725A725A5A7E535B5D845C8F8A9596 + 9A9C9D9D9D9D9D97979AC2C2CBCB0240403E3E3E6B4449434D4B507D79839089 + 89898C8C8CA58C8C8C8C8C8C8C8C8C8C8C898989897C7C7C787858584F6E6E50 + 48494241B3D2D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5 + D5D5D5D5D5D5D5D5D7D5D5D5D5D50AD0D265464D554C716F73737B7F92999292 + ACAA8BA5897C79797D5C4B57235326267E5A5A7E5A5A5A7E5A7E5E5E5E5D845C + 8E8A96989A9C9D9D9D9D9D9D9C9AC2C2CBCB0240403E3E3E6B6B44434D48507D + 8A839089898C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C7C897C897C7C7878584C + 4F546D6E48494263D2D1D7D5D7D5D7D5D7D5D7D5D7D5D7D5D7D5D7D5D7D5D7D5 + D7D5D7D5D5D7D5D5D5D7D5D5D5D5D5D5D5D5CFD1D288491E204C6F6F73A57B7F + 9299999992AA8BA5898358797D5C4B56575B2626261F5A5A7E5A7E5A1F7E7E26 + 295D5C8F8D9596989A9C9D9E9D9D9D9D979ACBC2CBCC0240403E3E3E6B6B4343 + 4548507D79839089898C8C8C8C8C8C8CA58CA58C8C8C8C8C8C8C8C8989897C7C + 7C7878584F4F4F504A493D64B3D0D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7 + D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D4D2D24243246D716F7C + 737580A39299999992AAA8AB8C7C83797D74744B295B26267E7E5A495A7E7A7E + 7E7E7E5E5B5D848F8D9396989C9C9D9E9E9E9D9D979AC2CBCBCC0240403E3E3E + 3E4444434D4B507D8A838389898C8C8C8C8C8C8CA5A58CA5A58C8C8C8C8C8C89 + 7389897C7C7C7178584F4F6E706B8765B3D8D7D7D7D7D7D7D7D7D7D7D7D7D7D7 + D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D5D6D266515354 + 4C716F73737580929299999992928BA5898983817D50745657535326261F5A7E + 7E7E7A7E7E7E5E265D27847D8A9596989C9D9D9E9E9E9D9D9C97CBC2CCCC0240 + 403E3E3E3E6B4443454B507D8A8390898C8C8C8C8C8C8CAB8C8C8CA58CA5A58C + 8C8C8C8C897C897C7C7C71714C4C54554D7741D2B3D4D7D7D7D7D7D7D7D7DAD7 + D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7DAD7D7D7D70AD1D2 + 82494B6E4C716F73738B7F929999A999BB92808B8C7C838A7D597429235B2626 + 5A495E7E7E7E7E7E7E7E5E5E29295C8E8A95989A9C9D9E9E9E9E9E9D979ACBCB + CBCC0240403E3E3E3E6B43434548507D79838989898C8C8C8CAB8CABABABA5AB + A5A5A5A58CA58C8C8C8C8C89897C7C7C714C4F50534263B3D2D7DAD7DADAD7DA + D7DAD7DAD7DAD7DAD7DADAD7DAD7D7DAD7DAD7D7DAD7D7DAD7D7DAD7D7D7D7DA + D7D4D2D2421F484F4C6F7373737B7F9299AEAE999292808B8C8983797D505C56 + 575326265E5E7E5E7E7E7A7E5E7E5E5D5D848F8E9395989A9C9E9E9E9E9E9E9D + 9C9ACBCBCBCC0240403E3E3E6B6B4343457450548A839089898C8C8CAB8CABAB + A5ABABABABA5A5A5A5A58CA58C8C8C89737C7C7C7C714F74438664B3D1D9DADA + DADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADA + DADADADAD7D6D266464D554F6F6F6F73757B7F929999AFAE9992AA8B8C898379 + 7D7D745656535B53535E7E7E7E7E7E7E7E5E5E5D5D845C8E8A96989A9D9E9E9E + 9E9E9D9D9C9ACBCBCCCC0240403E3E3E3E6B4443454B7D81798389898C8C8C8C + ABABABA5A5ABA5ABA5A5A5A5ABA5A5A58C8C8C738C8C89736F6F4F50728767B3 + D8DADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADA + DADADADADADADADA0AD1D2827A744F4C716F737373807F9299AFAF999992AA8B + 8C89838A817D5C56575D5B2626267E7E7E7E7E7E7E5E5E5D575C8F8D9096989C + 9D9E9EB2B29E9E9D9C97CBCBCCCC0240403E3E3E3E444943454B7D7D79838989 + 8C8C8CABABA5ABABABAB8BABABABAB8BABABA58BA5A5A58C737373737C717957 + 4687D2B304D9DADAD9DADADADADADADADADAD9DADADADADADADADADADADADADA + DADADADADADADADADADADADAA0D2D25143504F71716F6F73757B7F92A9AFAFAE + 9992978B8C8983797D5F5C56575B5B26265E7E7E7E7E7E7E7E5E5E5B845C8F8A + 9596989C9D9E9EB29E9E9E9D979ACCCBCCCD024040403E3E3E6B6B434D74507D + 8A8389898C8C8CABABAB8BAB8BABAB8B8B8B8B8B8B8BA5AB8BA5A5A5A5A57389 + 7378555E8664B3D1D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9 + D9D9D9D9DAD9D9D9D9DAD9D9DAD9D9D705D2654E4A504F4C6F6F7373757B7FA7 + 99AFAFAE9992AAA58C89838A7D7D7474575B265E267E7E7E7E7E7E7E7E5E5E5B + 298F8F8D95969A9C9D9EB2B29E9E9E9D979ACCCBCCCC024040B43E3E3E6B4443 + 454B50818383898C8C8CA5ABABABAB8B8B8B8B8BA88B8BA88B8B8B8B8B8B8B8B + A5A573757C78745A8767D2D8D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9 + D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D90AD2D2881F486E4F71716F7373 + 757B7FA799ADAFAF9992AA8B8C7C83797D597656575B2626267E7E7E7E7E7E7E + 7E7E5E5D5D848F8D95969A9C9D9E9EB2B29E9D9D979ACCCCCCCD0240403E3E3E + 3E6B444345745081838389898C8CA5ABAB8B8B8BA8A8A8A8A88BA8A8A88B8B8B + 8B8B8B8B8B7B75737C5453852DB3D2D9DDD9DDD9D9D9D9D9D9D9D9D9D9D9D9D9 + D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9DDDAD6D267465350204C4C + 71716F73758092A7AFAFAF999992AA8B8C8983797D505C74295B5B267E5E7E7E + 7E7E7E7E7E7E265D765C8F8A95969A9C9E9EB2B29E9E9E9D979ACCCCCDCD0240 + 40403E3E6B6B444345747D818383898C8CABABAB8BA8A8A8A897A8A89797AAAA + A8AAA8A8808B8B808B8BA58978747A47D2B3D8DDDDDDDDDDDDDDDDDDDDDDDDDD + DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD9DDDDD9DD04D1D264494B + 55204C4C4C6F7373757BA39999AFAFAF9992978B8C8983797D595C76575B265E + 5E7E7E7E7E7E7E7E7E7E5E5D295C8F8A90989A9C9E9E9EB29E9E9E9D979ACCCC + CDCD0240403E3E3E3E6BB54370747D798389898C8CABAB8BA8A88B9797AA97AA + AAAAAAAAAAAAAAAAAAAA7F8B8BA58C7C7D7E8564D2D2D9DDDDDDDDDDDDDDDDDD + DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDE2D2 + D251265255204C4C716F7373757BA392AFAFAFAE9992AA8B8C8983817D5C7457 + 575D265E265E7E7A7E5A7E7E7E5E5E5D848F8F9395989A9D9E9EB2B2B29E9D9D + 979ACCCCCDCD0240403E3E3E6B44434370507D798389898CABAB8B8B97979797 + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA80A57C795D8863D2B3E8DDDFDFDDDFDF + DDDFDDDDDFDDDDDDDFDDDFDDDFDDDFDDDFDFDDDFDDDDDFDDDDDFDDDDDDDDDDDD + DFDAD1D2654E4D50554F4C4C716F73737580A399A9AFAFAE9992808B8C89838A + 505074575B5B26267E7E7E7E5A5A7E7E7E5E5E5D845C7D8A90989A9D9EB2B2B2 + B29E9E97979ACDCCCDCD0240403E3E6B6B6B43436C50548A7C898CABAB8BA8A8 + 97AAAAAAAAAAAAACACACACACAC92ACACACAAAAAA80A5898F7A2DD2B3F8DDDFDF + DFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDF + DFDFDFDDDCE9D2D2421F5255204F4F4C716F6F7375809299AFADAFAF9992AAA5 + 8C8958797D5C27575B26265E7E7E7E5A7E7E7E7E7E5E5E5D848F8E8A90989A9D + 9E9EB2B29E9E9D9D979ACCCCCDCD0240403E3E6B446B43454B50547889898CAB + 8B8B9797AAAAAAAAACACACACACACAC9292ACACACACA3A3AA8BA5838482D2B366 + DD01DF01DFDFDF01DF01DFDFDFDFDFDFDFDF01DFDFDFDFDFDFDFDF01DFDFDFDF + DFDFDFDFDFDFDF01DA05D2654E45505520204C4C6F6F7373757B92A6999BAFAF + 9992AA8B8C8978797D5C5C575353265E5E7E7E7E7E5A7E7E7E5E265B848F8E93 + 96989C9D9E9EB2B29E9E9D9D979ACDCCCDCD02403E3E3E6B446B434548507983 + 898CABAB8B97AAAABAACACACACACBBBB92BBBBBBBBBBA7929292A39280A590D2 + B3D2D1E7F0E1DFDFDFDF01010101010101010101010101010101DF010101DF01 + 01DF01DFDFDF01DFDF010101E7D2D2881F746E544F4F4F4C716F7373757BA399 + A99BADAE999280A58C8978817D505C57575B265E7E7E7E5A7E5A7E7E7E7E5E5D + 298F8E9396989C9D9EB2B2B29E9E9D979AABCCCCCDCD02403E3E3E446B6B4345 + 48557983898CAB8BA897AAAAACACACBBBBBBBBBBBB99BB99A7BBA7BB92A7AC92 + 7F8B89B3B3B3B3B3B3DED1D1D105D6D6E6A0A0A0E7EBEBEFF4F4DF0101010101 + DF0101010101010101010101010101F0D1B3655A23506E4F4F4F4C4C716F7373 + 75809299AFAD9BAE999297A58C7C78815F2456575B265E5E7E7E7E7A7E7E7E7E + 7E5E5E5D848F8E9396989C9D9EB2B2B2B29E9D979A9ACDCDCDCD02403E3E6B6B + 44434345747D797C8CA58BA8A8AAAAACACACBBBBBBBB9999B9B999B99999A6A7 + A7A7A7A7AC80A5676767D2D2D2D1B3B3D2B3B3B3B3D1B3D1D1D1D1D1050505D8 + D6D8A0E8E2EA0AEBEBEFF6EFF3DFDF0101DFD9D6D2D251534850542020204C4C + 716F6F73758092A6AFAD9BAF999297A58C7C83817D7456235B265E7E7E7E7E7E + 7A5A7E7E7E5E5B29848F8E9596989C9E9EB2B2B29E9E9D979A9ACDCCCDCD023E + 3E3E446B4343456C505478898CAB8B97AAAAACACBBBB999999B9B9AEAEB9AEB9 + B9A69999B999A7A792AA80A589898A8A8E946161619F9F9F6666666767D267D2 + D2D2B3D2D2D2B3B3B3DED1D1D10505D6D8E3A0E8EAE7E3D2D2911F4B50542020 + 204C4F4C716F6F73758092A6AD9BAFAF999280AB899083817D7474235B261F7E + 7E7E7E5A7E5A7E7E7E7E5E5D848F8E95969A9C9D9EB2B2B29E9E9D979AABCDCC + CDCD023E3E3E444443436C6C50798389A58B97AAAAACACBBBBB9B999B9AEAEAE + AEAEA9A9AEAEA9B9A6A699A6A792A37F8075A5736F71784F546E5050745C7676 + 619161919F9F66669F66666666676767D267D267D2D2D2D2D2D2D2D29F494A50 + 55544F54206D4C4C716F6F7375809299AF9B9BAF999297A58C8378815F5C5629 + 53435E7E7E5A7E7E7A7A7E7E7E7E5E5D848F9495969A9C9EB2B2B2B29E9E9D97 + 9A98CDCDCDCD023E3E4444434345454B5079838CA58B97AAACACBBBBB9AEAEAE + AEAEAEAEAFAFAFA9A9A9A9AEA699A6A6A6A4A4A3A37F807B757573736F6F4C6D + 6D6D6E50504848486C4D5345434326265A919191919F9F9F666666B367D2689F + 436C5050204F4F4F204F4C4C716F6F73758092A9AF9B9BAF99AC97AB897C8A7D + 7D5C56295B265E7E7A7E7E7E7A7A7E7E7E7E5E5D848F9495969A9C9EB2B2B2B2 + 9E9E9D979AABCDCDCDCD023E3E6B444343456C4850797C8CABA8AAACACBB9999 + AEAEAEAEAEAFAFAFBEBEAFAFAFAFA9A9A9A9A6A6A6A6A7A4A3A37F7F7B7B7575 + 73736F6F6F4C4C4C6D6D6D6E505550505050481E4B4B2370232653262649495A + 491F43534824506E204F54206D4C4C4C716F737375809299AD9BADAF999280AB + 8C83797D7D74565B5B267E7E7E7A7E7E7A7A7A7E7E5E5E5D848F8D95969A9D9E + B2B2B2B29E9E97979A98CDCDCDCD026B44441F43434548487D78898C8BAAAA92 + BB99B9AEAEAEAFAFBEBEBEAFBEBEBEBEAFADA9AFA9A9A9A6A6A6A7A4A4A3A37F + 807B75757573736F6F6F4C4C4C6D4C6D6D4C6D2020556E6E5050505050525252 + 2452484B564B48745055556E55204F204F20204C6F6F6F73758092AFAD9B9BAF + 99AC97AB89838A7D5C5C56295B5E265E7E7A7A7E7E7A7A7A7E7E5E5D848F8D95 + 969A9D9EB2B2B2B29E9E9D979A98CDCDCDCD024E44441F4345454850547C89A5 + A8AAAC929999AEAEAFAFAFBEBEBEBEBDBEBEBEADADADADA9AFA9A9A9A6A6A7A4 + A4A3A37F7F807B7575736F6F6F6F6F6F4C4C4C6D204C204C4F6D20206E205455 + 5555555555505550555059556E55556E206E4F6D4F4F4C4C716F6F737580A799 + AD9B9BAF999297A58C838A7D505C295B535E7E7E7E7A7E7A7E7A7A7E7E7E5E5D + 848F9395989A9D9EB2B2B2B29E9E9D9AABABCDCDCDCD0244441F4343456C4850 + 547C8CA5A8AAACBBB9AEAEAEBEBEBEBEBEBEBDBDBE9BBEBDADADADADADA9A9A9 + A6A6A6A7A4A4A37F7F7B75757373736F6F6F6F6F4C4C4C4C6D4F4F4C4F6D2055 + 6D6E555554542055556E5455555554555555206E206E4F20204F6D4C716F7373 + 757F9299AD9B9BAF99928BA5897C797D5C5C295B5B7E7E7E5A5A7E7A727A7A7E + 7E7E5E5D848F9390989C9D9EB2B2B2B29E9D9C9A9A98CDCDCDCD024444434343 + 454A4850797C8C8BAAACBBBBAEAEAFBEBEBEBEBDBEBD9BB0BD9BB0BD9BADBDAD + ADADA9A9A9A6A6A7A4A4A3A38080757575736F6F6F6F6F6F4C4C4C6D6D4C4F6D + 6D2020555420556E6E5520555454546E6E555555542055545420544F204F4F4C + 716F6F737B8092A99B9B9BAF999297A58983797D595C575B265E7E7E5A7A7A7A + 7A7A7A7E7E5E5E5D848F9390989C9D9EB2B2B2B29E9D9D9AAB98CDCDCDCD0249 + 441F43456C1E506E787CA58BAA92BB99B9AFBEBEBEBEBE9BBDBDB0BDB0B0BDBD + BDBDADADADADADA9A9A9A6A6A7A4A47F807B7B7573736F6F6F6F4C4C4C4C4C4C + 4F20204F204F2054556E55555520556E54545455555555555554552054546D6E + 6D4F4F4C4C6F7373757FA4AEAD9B9BAF99928BAB8983797D5074565D267E7E7E + 5A7E7A7A7A7A7A7E7E7E5E5D848F8D95989C9E9EB2B2B29E9E9D979A988CCDCD + CDCD021F1F43534D4A48506E787CA58BAABB99AEAEBEBEBEBD9B9BB0B0BFBFBF + B0B0BDBFBDBDBDBDBDADADADA9A9A6A6A6A4A3A37F80757575736F6F6F6F6F6F + 4C4C4C4C4F204C4F6D202055555454556E54555420542054545555546E205454 + 20544F4F4F6D4C4C4C6F6F73757F92A99B9B9BAF9992978C8983795F5027295B + 267E7E5A7A7A7A7A7A7A7A7E7E5E5E5D5C8F9396989C9DB2B2B2B29E9E9D9C9A + 9898CDCDCDCD021F4343454D4B48506E788CA58092BBA7AEBEBEBE9BBD9BBFBF + BFBFB1BFBFBFBFB0BDBDBDBDBDADADADADA9A9A6A4A4A47F7F7B7B7573736F6F + 6F6F6F4C4C4C6D4C4C4C20204F202020546E6E6E545455555555556E55555555 + 205454545554546D4F4F4C4C716F6F737B7FA7AEAD9B9BAF99928BAB8983797D + 5C57575B5E5E7E7E7E7A727A727A7A7E7E7E5E84848E9396989C9EB2B2B2B2B2 + 9E9D9CAB988CCDCDCDCD021F4343456C48486E6E788C8BAAAC99AEAEAFBEBD9B + B0B0B0BFBFBFBFBCBCBFB0BCBFB0BDBDBDBDADADADA9A6A6A6A4A3A380807575 + 75736F6F6F6F6F4C4C4C4C4C4C4C204F4F2054204F5455555555555554555555 + 5555555455552020556E5420206D4C4C716F6F73757F92A99B9B9BAF9992A88C + 8983817D5C57575B7E7E7E7E7E7A7A7A7E7A7A7A7E5E5E5D848E9396989C9EB2 + B2B2B2B29E97979A9896CDCDCDCD021F4345454A48506E797C738BAAACA7AEAF + BE9B9BB0BFBFBFB1BCBCBCC0B1BCBCBCBCBCB0BDBDBDADADADADA6A6A4A4A47F + 7F7B7B7573736F6F6F6F4C4C4C4C4C4C4C6D20202055546E2055555455555420 + 55555554556E5555556E555520555420204F4F4C4C6F73737B7FA7AF9B9B9BAF + 99928BA58983817D5C56295B267E5E7E7A7A7A7A7A7A7A5A7E7E5D84848E9596 + 989C9EB2B2B2B29E9E9D97AB988CCDCDCDCD021F4345457448506E58718C8BAA + BB99AEBEBEBDB0BFBFBFC0BCC0C0B1C0C0C0C0B1C0BCBCBCBCBDBDADADA9A9A6 + A6A4A3A38080757575736F6F6F6F6F4C4C4C4C4F4F6D4F204F20202055556E55 + 555555555555555555555555556E6E556E54204F6D4F4F4C4C6F6F73757FA7AF + 9BB09BAF99AC8B8C8983817D5C565B53267E7E7E7A7A7A7A7A7A7A5A7E5E5E5D + 848E93969A9D9EB2B2B2B29E9E9D9A9A9896CDCDCDCD02435345534B50506E4C + 7CA580AABB99AFAFBEBDB0BFB1B1B1C0C0C0C0C0C0C0C0C0BCC0BCBCBCBDADBD + ADA9A9A6A4A4A3A3807B757573736F6F6F6F4C4C4C4C6D4F6D4C204F6E202055 + 556E5555546E55555555555555556E55556E55555420204F206D4C4C716F7373 + 7B7FA7AF9B9B9BAF99928B8C898381595C235B535E7E7E7E7A725A7A7A7A7A7A + 7E5E5E5D8F9493969A9D9EB2B2B2B29E9D9D9AAB8C96CDCDCDCD021F43454D4B + 505054587CA580AA99AEAFBEBDB0BFBFBFC0C0C0C0C0C0C0C0C0C0C0C0BCC0BC + B0BDBDADADA9A9A6A7A4A4A37F7B7B75736F736F6F6F4C4C4C4C6D4C4F204F4F + 202054205455546E556E55555555555555556E55556E5520546E2020204F4C4C + 4C7173737B7F99AF9BB09BAF99928B8C8978815027565B267E7E7E7A7A7A7A7A + 7A7A7A7A7E5E5E848F8E95969A9D9EB2B2B2B29E9E979AAB9696CDCDCDCD0226 + 53456C48505054587CA58092A7AEAFBEBDB0BFBFC0C0C0C0C0C1C1C1C1C0C0C0 + C0C0BCBCBDBDBDADADA9A6A6A6A4A37F807B757573736F6F6F6F4C4C4C4C4C4C + 6D6D4F206D2020545455545555555555556E5555555555555555555555542020 + 54204C4C716F6F75757F99AF9BB09BAF99AC8B8C89838159742953267E7E7E7A + 727A7A7A7A7A727A7E5E5E848F8D93989A9D9EB2B2B2B29E9E9C9AAB8C96CDCD + CDCD024325534B74506E4F4C7CA5809299AEBEBEB0B0BFC0B1C0C0C1C0C1C1C1 + C1C1C0C0C0C0BCBCBCBDBDADADADA6A6A6A4A3A37F7B757573736F6F6F6F6F4C + 4C4C4C6D4F4F4F20542054542055555454555550556E6E555555555555505555 + 552020204F4F4C4C717173737B7FA7AD9BB09BAF99AC8B8C8979815F74295326 + 7E7E7E7A7A7A7A7A7A7A7A7A7E5E5E5D8F9495969A9D9EB2B2B2B29E9D979A98 + 9889CDCDCDCD0226454D4A74506E5471738B7F92A6A9ADBEBDB0BFB1C0C0C1C1 + C1C1C1C1C1C1C1C0C0C0BCBCBCBDBDADADA9A9A6A6A4A47F8080757573736F6F + 6F6F4C4C6D4C4C4C4C20204F2020205420555455555555555555555555505555 + 55505555542020544F6D4F4C716F73737BA399AF9BB09BAF99928B8C908A7D5F + 565729265E7E727A7A7A287A7A287A7A7E5E5E848F8D90969C9DB2B2B2B2B29E + 9D979AB89696CDCDCDCD0226454D4B74506E547889A5AA9299A9ADBDB0BCBCC0 + C0C1C1C1C1C1C1C1C1C1C0C0C0B1BCBCBCBDBDADADA9A9A6A4A4A3A3807B7575 + 736F6F6F6F4C6F4C4C4C4C4F6D20204F20555455555454556E55555555505555 + 505055555555555554206E204F4F6D4C716F6F737B7F99AD9BB09BAF92AA8B8C + 898A815F565726267E7E7E7A7A7A727A7A7A7A7A7E7E5D848F9395989C9E9EB2 + B2B2B29E9D979A989690CDCCCDCD0225534A4A74506E4F71898B7F9299AFAD9B + BFBFC0C0C0C1C1C1C1C1C1C1C1C1C1C0C0C0BCBCBCBDBDBDADA9A9A6A6A4A37F + 807B7B7573736F6F6F6F714C4C4C4C4F4F4F4F20206E6E556E20545455555555 + 55555555555055505555505454542020204F6D4C4C6F6F737BA3A6AF9BB09BAF + 99AC8B8C7C8A7D5F5629535E7E7E7A727A7A282872287A7A7E7E91848F8D9598 + 9C9DB2B2B2B29E9E9D9A9A988C90CDCDCDCD02532545707450554F7873A5AA92 + B9AFBEBDBFB0C0C0C1C1C1C1C1C1C1C1C1C1C0C1C0BCC0BCBDBCBDADADA9A6A6 + A6A4A47F7F7B7575736F6F6F6F6F6F4C4C4C4F4F204F4F20206E555554545554 + 5455555055555055555050505555555555555520206D4C4C716F6F757BA3A6AD + B0B09BAF99AA8B8C838A7D50272953537E7E5A727A7A282828287A7A7E5E5E84 + 8F9395989C9EB2B2B2B29E9E9D9C9A8C9689CDCDCDCD025353221E50506E7971 + 6F8BAA92B9AFADBDBFC0C0C1C1C0C1C1C1C1C1C1C1C1C1C0C0C0BCBCBCBDBDAD + ADA9A9A6A4A4A3A3807B7B7573736F6F6F4C4C4C6D6D4C4C4F4F4F20206E5454 + 545554545555505055595555505550505559555554205420206D4C4C716F7375 + 7BA399ADB0B0B0AF99AA8B8983817D5C57235B5E5A7E7A7A7A7A7A28287A7A7A + 7E5E5D848F8A95989C9EB2B2B2B29E9D9DABAB969690CDCDCDCD0226234D225C + 59554F71738BAA92AEADADBDBFBCC0C0C1C1C1C1C1C1C1C1C1C1C0C1C0C0BCBC + BCBDADBDADADA9A6A6A4A3A3807B7575736F6F6F6F4C6F4C4C4C4C4C20202020 + 202054545454556E6E555055505550505055555055505555555554204F4F4F4C + 716F6F737BA3A6AD9BB09BAF99AA8B8C83815F5C5623537E7E7E7A7A7A827A28 + 2882287A5A5E5D848F93959A9C9EB2B2B2B29E9E9C9AAB969690CDCCCDCD0253 + 23234B7450545878738BAA92B9AFBEB0BCB1C0C0C0C1C1C1C1C1C1C1C1C1C1C0 + C0BCBCBCBCBCBDADADA9A9A6A6A4A37F7F7B757373736F6F6F6F4C4C4C6D4C20 + 6D4F6D20205454555454545555555550505550505055505055506E5555545420 + 204F4F4C716F73737BA399ADB0B19BAF99AA8B8983797D5C575D265E7E7E7A28 + 7A7A282828287A727E7E5D848F8D96989D9EB2B2B2B29E9D9C9A98B89090CDCC + CDCD022523234B5055545871737BAABBB9ADBEB0BFBFC0C0C1C1C1C1C1C1C1C1 + C1C1C1C0C0C0BCBCBCBDBDBDADA9A9A6A7A4A3A37F80757573736F6F716F4C4C + 4C6D6D4C204F6D6E20206E2020556E5550555550505550505955555055555555 + 55545420204F6D4C4C6F6F757B92A6ADB0B09BAF99AAA58C83817D74575D267E + 7E7A7A827A7A282828287A7A7E5E5D848E9396989D9EB2B2B2B29E9D979A9896 + 8983CDCDCDCD02264D224B50506E78718CA5AAA7AEAFBEBDBFC0C0C0C1C1C1C1 + C1C1C1C1C1C1C0C0C0C0BCBCBCBDBDADADA9A9A6A6A4A37F7F7B7575736F6F6F + 6F6F4C4C6D4C6D4C20202054546E546E6E555555555550505050505055505955 + 55505555552055544F4F4C4C716F73737B92999BB0B09BAF92AAAB8983817D74 + 575B265E7E7E7A282828287A2828827A5A5E5D848E93969A9D9EB2B2B29E9E9D + 9CAB98968990CDCCCDCD025325224B7450554F7C738BAAA7B9ADBDBDBFBFC0C0 + C0C1C1C1C1C1C1C1C1C1C0C1C0C0BCBCBCBCBDADADA9A9A6A6A4A3A3807B7575 + 736F6F6F714C4C4C4C6D4F204F4F20556E545455556E55555555505959505950 + 505050555050556E556E2055206D4F4C716F73757BA3A69BB1B19BAF9997AB89 + 83795F5C575B5E7E7E7E7A28772828282828287A7E7E5D848F93969A9D9EB2B2 + B2B29E9D97AB98969090CDCCCDCD025353231E48507D587C898BAAA7B9AFBDBD + BCC0C0C0C0C1C1C1C1C1C1C1C1C1C0C0C0C0BCBCBDBCBDBDADA9A6A6A7A4A3A3 + 807B7575736F6F6F6F4C4C6D4C4C4F4F6D2020202054555454546E5059555050 + 505050505050595950505555556E6E206D6D6D4C6F6F6F737B92A9ADB0B1B0AE + 99978B898A817D5C575B5E5A5A7A7A82727A282828287A7A7E5E5D848F93969A + 9D9EB2B2B29E9E9D9A9A8C969083CDCDCDCD025B5B23487450544F7C738BAA92 + B9AFBEBDBFB1C0C0C1C1C1C1C1C1C1C1C1C1C0C0C0C0BCBCBCBDBDADADA9A9A6 + A6A4A37F807B7573736F6F6F6F6F4C4C4C4C4F4F4F4F6E204F20555454555555 + 555550505050505050505050555555505555546E206D4F71716F6F758092AE9B + B0B19BAF92AAAB8983817D76535B265A5A727282282828287A777A7A7E5E5D84 + 9495969A9D9EB2B2B29E9E9D97ABB8968983CDCCCDCD022623234B4850555871 + 7C7BAABBAEAFBEBDBFC0C0C0C1C1C1C1C1C1C1C1C1C1C0C0C0BCBCBCBCBCBDAD + ADA9A6A6A6A4A37F807B7575736F6F6F714C4C4C4C4C6D204F205454206E2055 + 6E5555555050505050505050505050505055555555555420204F4F4C716F7375 + 7BA4A99BB0B19BAEBB97A58983815976575B5E7E7E7A7272282828282877287A + 7E7E5D848D93969A9D9EB2B2B29E9D9D9AAB96909090CDCCCDCD022625234B48 + 50554F7C898BAAA7B9AFBDBDBFBCC0C0C0C1C1C1C1C1C1C1C1C0C0C0C0C0BCBC + BCBDBDADADADA9A6A4A4A4A380757573736F6F6F6F4C4C6D4C4C6D4F4F4F5454 + 4F5520555555555550505050505059505050505950555055555554546E6D4F4C + 716F737580A4999BB1B19BAF9997A589587D5F275B5B5E7E7A5A287728282828 + 4E28287A7E7E5D618E95969C9DB2B2B2B29E9D979A9896898383CDCCCDCD0253 + 254D4A52506E5471898BAAA7AEAFBEB0BCC0C0C0C0C1C1C1C1C1C1C1C1C0C0C0 + BCC0BCBCBCBDBDBDADA9A9A6A7A4A37F807B7575736F6F6F4C4C4C6D4C6D6D6D + 4F2020546E5555555455505555505950505050505050505050505550556E5554 + 20204C4C4C6F6F758092AD9BB1B19BAF9297A589837D5C74295B5E7A7A727A7A + 28284E287A28287A7E7E5D848E95989C9DB2B2B2B29E9D9CAB989690908ACDCC + CDCD0226534B4B48505479718CA5A8A7B9AFBEBDBFC0BFC0C0C1C1C1C1C1C1C1 + C0C1C0C0C0BCBCBCBCBDBDADADA9A6A6A7A4A37F7F7B7575736F6F6F71714C6D + 4C4C6D4C6D202020542055556E55505955505050505050505050595050505955 + 555555546E4F4C4C4C6F73758092A9BDB1B19BAFACAAAB898A7D5C765D5E5E7E + 7A727A7A287777827A287A7A7A5E5D848E95989C9DB2B2B2B29E9D9C9A989690 + 908ACDCCCDCD0226252356485055547889A5AAACB9AFBEBDBCB1C0C0C0C1C1C1 + C1C1C1C1C0C0C0C0C0C0BCBCBCBDBDADADA9A9A6A7A4A37F807B7575736F6F6F + 71714C4C6D4F4F4F4F206E202055555455555555505055505050505050505059 + 505955555555556E6D4F4F4C716F737580A4A99BB1B19BAF92978C89587D5957 + 5D267E5A7A7A2828282828288228827A7E5E5D8F8D95989C9E9EB2B29E9E9D97 + AB8C96909083CDCCCDCD022653234A74506E4F787C7B7FA7B9AFBEBDBFBCC0C0 + C0C1C0C1C1C1C1C1C1C0C0C0C0BCBCBCBDBCBDBDADA9A9A6A4A4A3A380757573 + 6F6F6F6F4C4C4C4C4C4C206D2020552054556E6E555555555050505050505074 + 5250505059595550555454204F4F4C4C716F737580A4A9B0B1B1B0AE92978C89 + 837D59575D267E7A7A28287777827A607728827A7E5E5D619495989C9E9EB2B2 + B29E9D9A98988990838ACCCDCDCD022653232348505054786FA5AAACB9BEBEBD + BFBFC0C0C1C0C1C1C1C1C1C1C1C0C0C0C0BCBCBCBCBDBDADADA9A6A6A7A4A37F + 807B7575736F6F6F714C4C4C4F4F206D2054546E6E5454545555595050595050 + 50505050505024505050505555556E546E4F4C4C6F6F6F7580A4AD9BB1B19BAE + 9297AB898A7D5C765D5E7E7A7A282882822882828260287A7E5E5D8F8D95989C + 9EB2B2B29E9E9D9AAB968990838ACCCCCDCD025E265322525055547889A5AAAC + B9AFADBDBFBFC0C0C0C0C1C1C1C1C1C0C0C1C0BCC0C0BCBCBDBCBDADADA9A9A6 + A4A4A37F807B7575736F6F6F714C4C4F6D4F6D20202020206E5454546E555055 + 505050595050242450595059505059555055546E204F4C716F6F73757FA4A9B0 + B1B19BAEAC978C7C7959275D5B5E7E5A7A7A2882772860828228827A7E5E848F + 9395989C9EB2B2B29E9E9D9AAB969683838ACCCCCDCD02262653224848505478 + 7C75AA92B9AFADBDBFBFC0C0C0C1C0C1C0C1C1C0C1C0C0C0C0BCBCBCBCBDBDBD + ADA9A6A6A4A4A37F807B75736F6F6F71714C4C6D4C4F4F6D545420556E545555 + 556E55505050505924502450595074505050505055555555204F4C4C6F6F7375 + 7FA7ADB0B1B19BAEAC978C838A7D7457535E7E7A7A2828607760826060287A7A + 7E5E84619395989DC2B2B29E9E9D979A98968990838ACDCCCDCD022653532348 + 24506E7889A5AAACB9AFBEBDBFC0C0C0C0C0C1C1C1C1C1C1C0C1C0C0BCBCBCBC + BCBDADADA9A9A6A6A7A4A37F807B7575736F6F6F4C4C4C4C4F4F204F20542054 + 54205455555555595059595050502450525050505050505555556E54204F6D4C + 716F737580A7ADB0B1B19BAEAC978C9081505C5B265E5A5A7A7A778282606077 + 6060827A7E5E5D8F93959A9C9EB2B2B29E9D979A968990838A8ACCCCCDCD0226 + 53534A48525054787CA58092B9AFBEBDBFBFC0C0C0C0C0C1C1C1C1C0C1C0C0C0 + C0BCBCBCBCBDBDADADA9A6A6A4A3A37F807B7573736F6F6F4C4C4C6D6D4F4F20 + 2054545455555554555050595950505052507452742448505959505055556E54 + 204F4C4C6F6F6F757FA4ADB0B1B19BAE928B8C83815F5C57267E7E7A7A282882 + 828282608282287A7E5E848F93969A9D9EB2B2B29E9D979A989690838A8ACDCC + CDCD022626534D4B485054587CA5AAACB9AFBEBDBFBFBFC0C0C0C1C1C1C1C1C0 + C0C0C0C0BCBCBCBDBCBDBDADADA9A6A6A4A4A37F807B7573736F6F714C6D4C4C + 4C2020205555545454546E555555555059505050247450272424245024595050 + 595555204F6D4C71716F737580A7ADB0B1B19B99ACA88C83817D745B5E7E5A7A + 7A282828606060606060827A7E7E848F93969A9D9EB2B29E9E9D97AB96968983 + 8A81CCCCCDCD02265B53234B745054587CA5A8ACB9AFBEBDBFBFC0C0C0C0C0C1 + C0C1C0C1C0C0C0C0C0BCBCBCBCBDBDADADA9A9A6A4A4A37F807B7573736F6F6F + 4C4C4C4C204F204F202055545454555550555050502424245974745274522450 + 5924505050556E55206D4C716F6F737B7FA7ADB0B1B19BAEAC978C83815F565B + 5E7E7E727A8277776060606060607A7A7E5E848F93969A9D9EB2B29E9E9D9AAB + 969690838A81CCCCCCCD021F265B534B485054587CA580ACB9AFBEBDBFBFC0C0 + C0C0C0C0C1C1C0C0C1C0C0BCC0BCBCBCBDBDADADADA9A6A6A4A4A37F7B7B7573 + 736F6F6F4C4C6D4F4C6D4F20546E545555555555555550555059745250747424 + 527424745950505055555454204F4C4C716F73757FA7ADB0B1B19BAE928B8C83 + 815029535E7E7A72777782778260606060287A7A7E5E848F93969A9D9EB2B29E + 9E9C97AB9689908A8A8ACCCCCDCD021F2653234B485054787CA580ACA6AFBEBD + B0BFBCC0C0C0C0C0C1C1C0C0C0C0C0C0BCBCBCBCBDBDBDADA9A9A6A6A4A3A37F + 807B75736F6F6F714C4C4C4C20204F2055205455555555555555505050595052 + 50242424242452745050505055555520204F6D4C716F73757FA6ADB0B1B19B99 + AC8B8C837D5F7653267E7E7A82287777608260606028827A7E5E848F93969A9D + 9EB2B29E9D9D9A989689908A8A81CCCCCDCD022626255B4B745055787C73A8AC + B9AFBEBDBFBFBCC0C0C0C0C1C0C1C0C1C0C0C0C0C0BCBCBCBDBDBDADADA9A6A6 + A4A4A37F80757573736F6F4C4C6D4C4C4F206E20545520556E557D5555505050 + 505050507424245252242424505050505055556E6E6D6D4C716F737B7FA6ADB1 + B1B19BAEAA8B8C837D5C565B5E7E7E7228777760607760608260827A7E5E848F + 93989A9D9EB2B29E9D9CAB98968990838A81CCCCCDCD02262653232274505478 + 71A580ACB9A9ADBDB0BFC0C0BFC0C0C0C1C0C0C0C0C0C0C0BCBCBCBCBDBDADAD + ADA9A6A6A4A4A37F7B7B7573736F6F714C4C4C6D4C2020205420205555556E55 + 505050505959502474242424247452242424505059555454204F4C4C716F7375 + A3A6ADB0B1B19B99ACAB8C8A815C7653267E5A7277777760606060828260287A + 7E5E848F95969C9D9EB2B29E9D9C9A8C9690838A8A81CCCCCCCD0226265B2322 + 52507D587CA580ACB9AFBEBDBDBFBCC0C0C0C0C0C0C1C1C0C0C0C0C0BCBCBCBC + BDBDADADADA9A6A6A7A3A37F807575736F6F6F714C6D6D6D4F4F202020205554 + 55505555505050505050245924525224242424745250505050555554204F4C4C + 6F6F737B7FA6ADB1B1B19B9992AB89837D5C5753265A5A287728607760776060 + 82827A7A7E5E619493969C9D9EB29E9E9D97AB988990838A8181CCCCCCCD0249 + 265B534B2774555871A5A8AC99A9BEBDBDBFBFC0C0C0C0C0C0C0C0C0C0C0C0C0 + BCBCBCBCBDBDADADA9A9A6A4A4A4A37F7B7B75736F6F6F4C4C4C4F4C204F4F20 + 20205554556E5555595959502450505924245224502452522448245050505555 + 546D4F4C6F6F737BA3A6ADBCB1B1AF99AA9A89837D5C575B5E7E7A7A7A826060 + 827760606082827A7E5E849495969C9D9EB29E9E9D97988C9690838A818ECCCC + CDCD02262626234B745055797C73A8ACB9AFBEBDBDBFBCC0BFC0C0C0C1C0C0C0 + C0C0C0C0BCBCBCBCBDADADADA9A9A6A6A4A4A3807B7575736F6F71714C4C4C4F + 6D6D205420205420555455555050505024747424242424525252522424505050 + 505555554F4F4F4C716F737BA3A6BDB1B1B19B99ACAB898A7D5C57537E5A727A + 28776060827760826082825A7E5E848F95989C9E9EB29E9D9D9A98969090838A + 8181CCCCCCCD027E5E2625224B507D587C8CA8ACA7A9BEBEBDB0BCBFC0C0C0C0 + C0C0C0C0C0C0C0C0BCBCBCBCBDBDADADA9A9A6A4A4A3A37F7B757573736F6F71 + 4C4C4C4F4F4F5420206E55545555556E50555924592459272424241E52215224 + 522450507D555555206D6D4C6F6F757BA3A6ADB1B1B1AF99AAAB898A7D5C5753 + 7E5A7A7A28776060828260826082827A7E5E849495989C9D9EB29E9E9D9A9896 + 90908A81818ECCCCCDCC027E26535B234B507D587173A8A3B9AFADBDBDBFBCC0 + C0B1C0C0C0C0C0C0C0BCC0C0BCBCBCBDBDBDADADA9A9A6A6A4A47F7F7B7B7573 + 6F6F6F4C4C4C4F4F4F4F20202020556E6E555555505950505059242724245252 + 2121485224245050505055544F4F4C4C716F737BA3A6ADB1B1B19B9997AB8979 + 7D745B267E5A727A776060776060886077607A7A7E5E849495989C9EB29E9E9D + 9C9A988990838A8A8181CCCCCCCD025A262625234B505079718C8BACBBA9BEBE + BDBFBCBCC0BFC0C0C0C0C0C0C0C0C0BCBCBCBCBDBDADADADA9A6A6A6A4A47F80 + 7B7575736F6F71714C4C4F206D206E55556E206E54505055505950505C592424 + 2452524827211E522452505050505554544F4C4C6F6F737BA3A6BDB1B1B0AF99 + AAAB89795F5C5D5E7E7A7A77286060777760608860607A7A7E5E849495989C9E + C29E9E9D979A9896908A8A817D81CCCCCDCD025A1F535B4B48507D79718C8BAC + B9AEBEBDBDBFBFBFBFC0C0C0C0C0C0C0C0C0C0C0BCBCBCBDBDBDADA9A9A9A6A4 + A4A37F7F7B7B75736F6F71714C4C4F6D202020546E5555555055555050505074 + 7452242452525252521E52482474505050555554546D6D4C716F737BA3A69BB1 + B1B1AF99AAAB898A7D5C5D5E7E7A282877606060607760778260827A7E5E8494 + 95989C9E9E9E9E9D97AB969690838A81817DCCCCCCCD027E2653254D4B527D4F + 7C738BAAA7A9ADBEBDBFBFBFC0BFC0C0C0C0C0C0C0C0C0BCBCBCBCBDBDBDADAD + A9A6A6A6A4A4A3807B7575736F6F4C4C4C4C6D2054546E20556E545555555550 + 505059505052522448521E214821522724242450505555544F204C4C6F6F737B + 92A9ADB1B1B0AF99AA8C898A7D5C5D267E72828277776060608860608260777A + 7E5E849395989CC2C29E9E979CAB9690908381818E7DCCCCCCCD025A5E5B5323 + 4A5C50547C8C8BAAA7AEADBEBDBFBFBCBCC0C0C0C0C0C0BCC0C0C0BCBCBCBFBD + BDADADA9A9A9A6A7A4A3A3807B7575736F6F71714C4F4F4F4F206E5520545555 + 55555055505050245024244848521E52481E48524852505050505555204F6D4C + 716F737BA3A69BB1B1B09BBB97AB89815F765B267E7A28607760828288608860 + 7782287A7E5D618D95989DCA9E9E9E9D97AB9690908A81818E7DCCCBCCCD025A + 5E26535B4B745954788C8BAABBA9ADBDBDB0BFBFBCC0C0BFC0BCC0C0BCBCC0BC + BCBCBDBDBDADADADA9A9A6A4A4A37F807B75756F6F6F714C4C4F6D4F6D20206E + 6E556E555050505050505059272424522748212752481E521E74245050555555 + 6E4F4F4C716F757BA3A6BDB1B1B0AF99978C83815C765D5E5A7A286060828288 + 6088607760607A7A7E5E618D95989DC29E9E9D9D9A989690838A8A81817DCCCC + CCCD025A5A26262356485079718C8BA3BBB9AFBDBDBDBFBFBFBCC0C0C0C0C0C0 + C0C0BCBCBCBCBDBDBDADADA9A9A6A6A7A4A3A3807B7573736F6F714C4C6D4F4F + 202054546E555555555555505050507424242427522152525221525248525C59 + 50595555204F4F4C6F6F737BA3A6BDB1B1B0AF92978C83815C295D5E7E722877 + 60606060888288608260827A7E5D6194969A9C9D9E9E9D9C9A989690838A8181 + 7D8FCCCCCCCD025A5A2653234B747D54838C8BAABBB9ADBEBDBDBFBFBFBFBFC0 + BFC0BCBCC0BCC0BCBCBCBDBDBDADADA9A9A9A6A7A4A37F807B7573736F6F4C4C + 6D4C4F4F206E545454206E555050505050507474502448482421525248485252 + 52272474505555546E4F4F4C716F737BA3A99BB1B1B1AF998B8C90815C295B26 + 5A7A827777606088828288607760827A7E91618D96989D9E9E9E9D9C9A8C9690 + 8381817D7D7DCCCCCCCC025A7E4353532274505478898BAABBB9AFBEBDBDBFBF + BFBFBFBFC0C0C0C0C0BCBCBCBCBDBDBDADADADA9A9A6A6A4A4A37F807B75736F + 6F6F4C4C6D4C4F4F205454556E545555555050505024597452524852241E5227 + 7452521E52522424505055556E4F4F4C716F757BA3A99BB1B1B0AFBB978C8381 + 5C765B5E5A82772882886088888860778860287A7E5D6193969ACAC29E9E9D9C + 9A9689908A81817D7D7DCCCCCCCD027E7E2653235674506E7C898BAABBB9BEBE + BDBDBDBFBFBFB1BCBCBCC0C0BCBCBCBFBFBCBDBDADADADA9A9A6A6A7A4A37F80 + 7B7573736F716F4C4C6D204F205554556E6E556E555050595024507424521E74 + 48525621747421485248242450595055204F4F4C6F6F737BA4A9B0B1B1B0AF92 + 978C837D5C575B7E7E7A288277608288888860778282287A7E5D8F8D969A9D9D + CA9E9D9798989090838A8E7D7D5FCCCCCCCD025A5A265323565250817873ABAA + BBB9A9BEBDBDBDBFBFBFBCBFC0BCBCBCC0BCBCBCBFBDBDBDBDADADA9A9A6A6A4 + A4A37F807B75736F6F714C4C4F4F204F55545455556E55555559595050507424 + 24521E1E242756567448214821212424505055556E4F6D4C716F757BA3A9B0B1 + B19BAFBBA88C837D5C29537E7A28827782777777888888608282827A7E918F93 + 969A9DC29E9D9D9A989690838A818E7D5F59CCCCCCCC025A5A26265323485081 + 78898BAABBB9AFBEBDBDBFBFBFBFBCB1BFBCC0BCBCBCBCBCBCBDBDBDADADA9A9 + A9A6A7A4A4A37F807B7573736F714C4C4F20206D202055545454555555595050 + 505024745252212174481E5622527452525274242450555555544F4C716F737B + 92A99BB1B1B0AE928B96837D745D267E7A28778277608888888877607782827A + 7E5D8F93969A9D9D9E9D9C9AAB9690838A817D7D7D5FCCCCCCCD025A7E262653 + 234B50818389A5AABBB9AFBEBDBDB0BFBFBFBFBCBFBFC0BCBCBCBCBCBDBDBDBD + ADADA9A9A9A6A6A4A3A37F7B7B75736F6F71714C6D4F204F2054545454555555 + 555050505274242424522121564B524852522224212124245950555554204F4C + 716F7380A4A6B0B1B19BAFAC9A8C837D765D5B7E7A2882606060888588888888 + 8877827A5E918F93969A9D9EC29D9C9A9889908A817D7D5F7D5FCCCBCCCD0272 + 5A2626535774597D7889A5AABBB9AFBEBDBDBDBDBFBFBFBFBFBCBFBFBCBFBCBD + BFBDBDBDADADADA9A9A6A7A4A4A37F80757573736F714C4C4F6D202054205520 + 205555555950502424242452245252272752487474272152521E522424505555 + 55544F4C4C6F737BA4A9BDB1B1B0AFAC8B898A5F5C5D5E7E5A82826088888888 + 888888886060777A7E848F93989A9D9D9D9D9C9A9896908A8A817D7D7D5FCCCC + CCCD02727249265B4D56596E787CA5AABBB9A9BEBEBDBFBDBDBFBFBFBFBFBFBC + BCBFBFBFBDBDBDBDADADA9A9A9A6A6A4A3A37F807B75736F6F714C4C4F6D204F + 545555545555555050505024502424521E5274564848562752212152521E5224 + 5050555555544F4C6F6F737BA4A9B0B1B1B0AEAC8B898A7D765D5E7E7A7A8277 + 77607788858888886060827A7E918F93969C9D9D9D9D9C9A9690908A81817D5F + 5F74CCCCCCCC025A7E5A26535722507D7889A5AA92B9AFBEBDBEBDBDBFBFBFBF + BFBFBFBFBFBFBFBFBDBDBDADADADA9A9A6A6A4A4A4A3807B7B75736F6F714C4C + 6D4F20206E545455555550505024245050747452747448564B744856524B5622 + 212452242450505554206D4C716F738092A9B0B1B19BAEAC9A89795F5C5B265A + 8277777777888888858888606060287A7E848F93989C9D9D9D9C9C989690838A + 817D7D5F5F5CCCCCCCCC025A497E26535D56747D7889A5AABBB9AFBEBEBDBDBF + BDBFBDBFBFBFBFBFBFBFBFBFBDBDBDBDADADA9A9A9A6A6A4A3A380807575736F + 6F4C4C4F4F204F2020545555556E505050245074742474522152522756524874 + 2227485252525224505055552054544C716F737BA4A99BB1B19BAEACAB89795C + 565B5E7E7228608288518888888888888882827A7E918F93989ACA9D9D9C9A98 + 9690838A817D8F5F5F5FCCCBCCCC027A5A7E265B235750545889A5AAACB9AEBE + BEBEBDBDBFBDBFBFBFB0BFBFBFBDBFBDBDBDADADADADA9A9A6A6A7A7A37F7F7B + 7575736F714C4C4C6D6D54545455555455555550505024592424525227527448 + 2748524852274856277452525250506E55204F4F716F738092A9B0B1B19B99AC + AB89815957535E492877777760888888515188886060827A5E919495989C9D9D + 9D9C9A989690838A8E7D5F5C595CCCCCCCCC027A5A5A2653234B527D7989A5AA + 92B9A9BEBEBDBDBDBDBDBFBFBFBFBDBFBFBDBDBDBDBDBDADADADA9A9A6A6A7A4 + A3A3807B7B756F6F714C4F4F6D4F6E2055555555555555555959485024524848 + 5221564B2227522221524822275252522459505554544F4F6F6F7580A4A9B0B1 + B19BAEAAAB89815C575E5E5A7282607788888888888888886082827A5E848F95 + 989C9D9D9D9C9A9896908A8A8E7D7D5F5C5CCBCCCCCC027A727E26532356747D + 787CA5A8ACB9AEBEBEBDBDBDBDBFBDBDBFBFBFBFBFBFBFBDBDBDBDADADA9A9A9 + A6A6A7A4A3A3807B7B73736F6F4C4C4C20205420545455555550505050507424 + 27484821484856527452222174484B524852487424505055556D4F4C716F757B + A4A9B0B1B19B99AAAB90795C575D5E7A7A826077888888518588518888827A7A + 7E849495989C9DCA9D9C9A9890908A817D5F5F5C5C5CCCCCCCCC027A725A1F26 + 5356747D5889A5A8ACB9A9AFBEBEBDBDBDBDBDBFBDBFB0BFBDBDBDBDBDBDADAD + ADADA9A9A6A6A4A4A37F807B75736F6F714C4C4F20206E6E5555555555555050 + 50502424245227525652525248484B22224B5674522148742424505555544F4C + 716F7580A4A9B0B1B19B99AAAB90795C575B5E72827777888888888885888888 + 88607A7A5E849495989C9C9D9D9A9A98908A8A8E7D7D5F5C5C5CCCCCCCCC0228 + 5A5A1F265357747D587CA5A8ACB9AEBEBEBDBEBDBDBDBDBDBDBDBFBDBDBFBDBD + BDBDBDADADA9A9A6A6A7A4A3A37F807B75756F6F714C4C4F204F546E55556E55 + 5559505024747424525221485221214B22214A22224822275648525252505555 + 55544F4C716F7380A4A9B0B1B09B99AAAB90815C295E7E7A8277777788888888 + 888888888882827A5E848E95989C9D9D9C9A9896908A8A817D5F5F595C5CCCCC + CCCC025A725A1F2653297450797CA5A8ACB9A9AFBEBEBDBDBDBDBDBDBDBDBDBD + BFBDBDBEBDBDADADADA9A9A9A6A6A7A4A37F7B7B75736F6F714C4F4F20542055 + 55556E555555555059745024274848272148214B221E4A224B2222274B4B5224 + 2450505555204F4C716F7380A4A9B0B1B19B99AAAB907D5C76265A7228777788 + 778888858888888860827A7A7E849495989C9D9D9C9A9896908A8D8E7D5F5C59 + 5C5CCCCCCCCC0272725A7E2653577450797C8CA8ACA7A9AFBEBEBDBEBEBDBDBD + BDBDBDBDBDBDBDBDBDADBEADA9A9A9A9A6A6A7A3A37F807B75736F6F714C4C4F + 4F6E54546E6E5555555050505050242452527456274821224B1E22224A221E22 + 2752525224595050554F6D6D716F7580A7ADB0B1B1AF99AA8C837D5C5D5E7E7A + 2860888888888885858888886060827A5E849495989C9C9C9C9A9896908A8A7D + 7D5F5F595C5CCCCCCCCC027A7A5A7E2653237459797C8CA8ACBBAEAFBEBEBDBE + BDBDBDBDBDBDBDBEBDBDBDBDBEBDADADA9ADA9B9A6A4A4A3A37F807B75736F6F + 714C4F6D4F205554545555555050505052242452525274565648481E4A224B22 + 4A4A2248275252522450505555544F4C6F6F7380A4A9B0B1B09BBB978C837D5C + 5D5E7E728277778888858885858888858877827A5E619495989C9D9C9C9A9696 + 907981817D5F5F5C5C5CCCCCCCCC0228725A7E265B23567D79838C8BACBBB9AF + BEBEBEBDBDBDBEBEBDBDBDBDBDBDBEBDBDADADADA9A9A9A6A6A4A7A37F7F7B75 + 75736F714C4C6D4F205455555555555555505050242474521E521E4B561E211E + 1E4B4A2222562221214821212459505055204F4C716F7580A4A9B0B1B09B9997 + 8C835F765D5E5A7A8277888888858585858588886082607A5E619396989C9C9C + 9A9A9690838A817D5F5F5C5F5C5CCCCCCCCC02287A727E265323747D797C8CA8 + AABBB9AEAFBEBEBEBEBDBDBDBDBDBDBDBDBDBDBEADADADADADA9A6A6A6A7A4A3 + A380807575736F6F4C4C4F4F4F5454546E55555550505950502448742156481E + 4B1E2222561E1E4A22222222224848485250505555204F4F4C6F7580A4A9B0B1 + B0AF99978C8A7D745D7E7E7A7777778888858585858588888882827A5E849495 + 989C9C9C9A9896908A8A8E7D5F5F5C5F5C5CCCCCCCCC0228285A5A26264D565C + 81788C8BBABBB9AFAFBEBEBDBEBDBEBDBDBEBDBDBDBDBEADBDBEADA9A9A9A9A6 + A6A4A4A37F807B7575736F714C4F6D6D545455556E5550555050745024525252 + 52225248214A1E1E4A22524B2222224A2252275252595055556E204F716F7580 + A4ADB0B1B0AFBB978C837D765B265A7277607788858888858585858588827A7A + 5E849396989C9C9A9A9896908A8A815F5F5F5F5F5C5CCCCCCCCC022828724926 + 535B575079838C8BAABBB9AEAFBEBEBEBDBEBEBDBDBEBDBEADBEBDADBEADBEAF + ADA9B9A6A7A4A4A37F807B75756F6F714C4C4F4F545454545455505050594874 + 522452482727221E224A1E4B4822234D22224A4A225256564859505055546D4F + 4C6F7580A4ADB0BCB0AF9E97968A5F5C5B7E7A60826088888885858585858588 + 88827A7A5E619395989C9C9A989896908A817D5F7D5F5C5C5C74CCCBCCCC0228 + 827A5A26265B56597D788C8BAABBB9AFAFBEBEBEBEBEBDBEBEBDBEBDBEBEADAD + AFADA9A9A9A9B9A6A7A7A4A37F807B7573736F714F4C4F4F2054205555555055 + 5024507424525252522127524B222223224B4B22234D222222484B4852505050 + 55544F4F716F757FA4ADB0B1B0AF92978C8A5C295B7E72827760778888888586 + 858588888882827A5E619396989C9C9A989696908A817D5F5C5C5C747474CCCC + CCCC022828725A1F535B57506E838C8BAABBB9AEAFBEBEBEBEBDBEBDBEBEBDBE + BDBEAFADADAFADA9A9A9A6A6A7A4ACA37F807B75736F71714C6D6D4F4F206E55 + 5555505559505050244852485622272122221E4A575722222257222256224B1E + 482459555555544F4C6F757FA4A9BDB1B0AFBB8B89795C575E7E7A7760608885 + 858585858585858888827A7A5E8F9396989A9C9A989690938A8E7D7D5C5C5C5C + 5C5CCCCCCCCC022872285A7E265B5750817889A5AABBB9AEAFBEBEBEBEBEBEBE + BEBEBEBEBEADBEBEADADA9A9A9A9B9B9A7A7A3A37F807B7573736F714C6D4F6E + 545454555555555050502424745252524822221E22224A22224A234A4B232222 + 2256561E2450505055204F4F4C6F7580A7ADB0B19BAFACA8968A5F295E7E7A77 + 7777888885858585858585856082827A5E619396989A9C989896908A8A817D5C + 5F5C5C745C5CCCCCCCCC0228287A5A5A2625575C7D838C8BAABBB9AEAFAFBEBE + BEBEBEBEBEBEBEBEBEBEADA9AFADA9A9A9B9A6A7A7A7A3A380807B75736F6F71 + 4C4F6D206E545555505550505024505974245252521E52574A4A574B4A4A2322 + 4A23224B4A221E527450505055544F4F716F757FA7A9BCB1B0AFAC8B89795F57 + 267E7A2860888585858585858585858588827A7A91619396989C9A9A9896958A + 81817D5F5F5C5C5C5C74CCCCCCCC027728285A5A265B575C7D78B8A5AAACB9AE + AEAFAFBEBEBEBEBEBEBEBEADBEADAFA9ADA9AFA9A9B9A6A6A7A4A37F7F7B7B75 + 736F71714F4F4F545454556E50555050505274245248484B561E211E4B22224A + 4B2222224A22234D221E48271E4850505555204F4C6F757FA7ADB0B09BAFAC8B + 89815C575E7E7A6060888885858585868585858888607A7E5E8F9396989A9A98 + 9696838A8E7D5F5F5C5C5C5C7674CCCCCCCC0228287A727E265B575C7D7889A5 + AAACBBB9AEAFAFAFBEBEBEBEBEBEBEAFADAFBEBEA9A9AEA9A9A6A6A7A4ACA3A3 + 807B75A5736F714C4C4F4F545454545555505050505052525252527456222222 + 23224A4A2223234B5722574A4B4A4A5648485059552020204C6F757FA7ADB0B1 + 9BAFACAB89815C5D5E7A7A286077888586858585868585886060827A918F9396 + 989A9A9896908A8A8E8E5F5C5C5C5C5C7476CCCCCCCC027772285A7E1F5B5774 + 7D8389A5A8ACBBB9AFAEAFAFBEBEAFBEBEBEBEA9BEADA9A9A9A9A9A9A6A6B9A7 + A7A4A37F807B7B73736F6F4F4F4F4F6E55546E50555550502474505248485274 + 224A4A22225622222323226C7023232223564A48482450505555204F716F757F + A4ADB0B19BAEACAB90815C5D5E5A7A7777888585858586858686858888607A7E + 5E8F9396989A989896908A81817D5C5C5F5C5C275627CBCCCCCC024E77285A5A + 265323567D7989A5A8ACBBAEAEAFAFBEAFBEBEA9BEBEAFBEBEA9AFA9AFA9A9B9 + B9A6A7A7A7A3A3AA807B7573736F71714C4F4F4F55556E6E5055505924242452 + 484B2756221E22564A4B2270704B4B562223224A4B224B5674245050506E6E4F + 4C6F757FA7ADB0B09BAEACAB90815C575E7A8260778885858585858685858585 + 88607A7E91619398989A9A9895908A8D817D5F5C5C5C5C575657CCCBCCCC0277 + 77287A5A262623747D8A89A597ACBBB9AEAEBEAEAFAFBEAEBEAFBEA9A9AFA9A9 + A9AEB9A9A6B9A7A7A3A7AA7F808B75736F6F714F4F6D4F54556E6E5555505050 + 50525248485652486C4A4B221E4B4A2323224B5622222222234A225648522450 + 5055204F4C6F757FA7ADB0B09BAEAAAB897D5C535E7A77608288888585868686 + 858585858860827E916195969A9A989896908A8E7D5F5F5C745C5C567684CCCC + CCCC026028285A5A1F2653767D797CABA8ACBBB9B9AFAEBEAFBEAFAFBEA9AFBE + AFAFAEA9B9A9A9B9B9A7A7ACA7A3A3AA807B758C736F714C4F4F54546E555550 + 55505059505252525221524B4A23234A4A22224A222223295656574B224A4A27 + 522450505555206D4C6F757FA7ADB0B09BAEAAAB907D5C5B495A827760888585 + 858586868585858888827A7E919493989898989690838A8D8E5F5F5C5C275629 + 5657CBCCCCCC02607728285A5A265B76507989A5A8AABBB9AEAEAFA9AFB9AEBE + AEBEAEA9A9A9A9A9B9A9B9B9A6A6A7A7A3A3AA80807BA5736F6F784C4F546E6E + 545555555550505024244821221E52564A2256232222232323235723564B5723 + 23232248525224245555204F4C6F757FA7ADB0B09B99AAAB837D5C5B7E5A7A82 + 88858585858686868686858588607A7E919495969898989690958A8E8F5F5C5C + 5C7476575629CCCBCCCC0260282828725A265B565979838CA8ACBBBBB9AEAEAE + AFAFBEAEBEAEA9AEAEAEA9B9A9B9A6B9A7B9BBA7ACA37F808B7575736F71714F + 4F6D546E555555555050505250527474745222224B222222224A4D2322572223 + 232322232223221E272724505055206D4C6F757FA7ADB0B09B99AA98907D7626 + 7E7A827788888585868686868685868888607A7E918F959698989896908A8A8E + 7D5F5C5C5C5656575729CCCBCCCC026060287A5A5A265356507989A5A8ACBBBB + B9B9B9AEAFAEAFA9AFA9AFAFA9A9AEA9B9B9A6B9B9A7A7A792A3AA807B8B7373 + 6F6F4C4C4F4F5454555559505050502424485274524822564B222256234A4D23 + 22225623232323234A224B1E215224505555544F4C6F757FA7ADB0B09B99978C + 835F27267E7A777788888585858686868685868588827A7E9194959898989896 + 908A817D5F5F5C5C842757575729CCCCCCCC02606060285A1F2653575C7983A5 + A8BAACBBB9B9AEAEAEAEA9AEAEAEAEAEAEA9A9B9B9B9B9B9BBA7A7ACA3A38080 + 8B75A5736F71714C4F545455555555505050747474482756524A222222224B4D + 4A56232323222323232229574A22224A52527450555554204C6F757FA7ADB0B0 + BE99978C837D295E7E7A77608885858586868686868685858882827E848F9596 + 98989695908A8E7D5C5C5C5C5C2757222323CBCBCCCC02607777285A5A265B57 + 5C81838C8BAABBBBB9B9B9AEAEAEAEAEAEAEAEAEA9AEAEB9B9B9B9B9B9BBA4A7 + A3AA7F807B75736F7C71714F4F206E5555555550505074747448274B524B2223 + 4B2322234D23232322232323222223232222561E522774505055544F4C6F757F + A6ADBDB09B99978C838F575E7E72606051858586868686868686858560607A7E + 9194959698989696908A8E8F5F5C5C5C5C5757232329CBCCCCCC026028827A72 + 5A5E53575C797C8CA8BAACBBBBB9AEB9B9AEAEAEAEB9B9B9B9B9B9B9B9B9A7BB + A4A4ACA3AC7FAA8BA5A573736F714C4F6D4F546E555550505074247452485248 + 564A56232356564D232329232323575D572257222223221E74524850556E544F + 4C6F757FA7ADB0B0AF99978C8A5C575E5A7A6088888586868686868686868685 + 60827A7E9194959696989695908A8E5F5F5C5C5C565729232929CBCBCCCC0277 + 60777A7A5A2653575C81838CA5BAACBBBBB9B9B9B9B9B9AEAEAEB9AEB9B9B9B9 + B9B9BBA7BBA7A7ACA37F807B7B75A57C6F71714F6E54556E5550505050502452 + 52565648224A22232322222323572323232323572323292223224A224B482450 + 5555556D4C6F757FA6ADBDB0AF99978C8A5C5B5E5A7A82888885858586868686 + 8686868888827A7E84949596989696958A8A8E8F5C5C8456562729292329CBCB + CCCC0260602828725A1F26575C7D838CABBAACBBBBB9B9B9B9B9B9B9B9B9B9B9 + B9B9B9B9A7B9A7B9A7BBA3ACA3AAA880A575736F71714C4F5454545550555050 + 505252522722272221224D57574A2323235723292323235B5B29232357572222 + 4B4824505555554F4C6F757FA6ADBD9BAF999A968A5C5D5E7228775188868686 + 868686868686868588607A7E61949596969696958A8E7D5F5C5C277657562729 + 2929CBCBCCCC02606060285A7A5A26235C7D83B8ABBABAACB9BBB9B9B9B9B9B9 + B9B9B9B9B9B9B9B9B9BBBBA7ACA7ACA3AA7F808B75A56F6F6F71584F546E6E55 + 5050595950247474222152224B4A225622232223232325235323252323232329 + 23574A221E52245050556E6D4C6F757FA6ADBD9BAFBB97968A5C5D7E7E287760 + 88858686868687868686868588827A7E61949596989695958A8D8F5C5C747627 + 275657292929CBCBCCCC0260606082725A5A265B5C7D8389ABBAACBBBBBBBBB9 + B9B9B9B9B9B9B9BBB9B9BBBBA7BBA4BBA7A3ACAAAA80A87BA573897371784F4F + 6E545555505050597452485652524B2221224B22222223572323234D5B5B2325 + 2323235723232323482724595055204F4C6F75A3A6ADBD9BAFBB9789815C5B7E + 7A82828885858686868786878786868588827A5E84949596969690938A8E5F5C + 5C842956572923235B57CBCBCCCC0260606077287A5A7E535C7D838CA5A8BAAC + BBBBB9B9BBB9B9BBB9B9BBB9B9B9BBBBBBA7ACA7ACACACA37FA8807BA573736F + 7178784F5454555555505050245274275248481E4B4B222323235757235B2323 + 5B29232553235B232323224A48224850505555204C6F757FA6ADBD9BAFAC9A89 + 815C535E7A82608885858686868787868686868888827A918494959696959090 + 8A7D5F5C5C272756572929295B5BCBCBCCCC0260606077285A5A2653767D8389 + ABA8BAACBBBBBBBBB9BBB9B9BBB9B9BBBBBBBBBBA7BBA7ACA3ACAA7FBA808B7B + 758C736F7171584F545550555050597452527474524B2222704D22222357235B + 5B2323235B5B232323232329232323221E4852245055554F4C6F75A3A6ADBD9B + AFAC8B90815C5D7E7A60778885868686868687878686858888827A7E61949596 + 969695958D8E5F5C5C565656292929295B5BCBCBCBCC027760777728725A5E53 + 765F7989A5A8AAACACBBBBBBBBBBB9BBBBBBBBBBBBBBA7BBBBACA7ACACA3AAAA + 7F808BA5A573897C71784F545455555550592474745252522222222222222323 + 2323235B23235B53235B5B5B295B235B23234B224A5252245055544F4C6F75A3 + A6AD9B9BAE929A89815C5B7E8282778585868686878787868686868588827A5E + 619395969595958A8D7D5C5C5C845C57572329235B5BCBCBCCCC028877606028 + 7A5A7E535C5C8A89ABA8BABAACACBBBBBBBBBBBBBBBBBBBBBBBBBBA7ACA7ACAC + A3ACAAAA80A87BA573737C7C71784F4F6E545550507474745227524B1E212222 + 4D23234D2323232325535B53535B5B5B5B26235B29224D22222152505055544F + 4C6F75A3A6AD9B9BAEACAB898D5C5E7E28778851858686868787878787868685 + 88827A91619495959695938A8D5F5F5C27275757292929535B29CBCBCCCC0288 + 776077287A721F5B567D8189B8A8BAACBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB + A7ACACA3ACAAAA80A87B8BA5A5737C7171784F5454555550505048747456564B + 4B48224B6C4B222323292323535B5B29535B25255B5B5B5B23234D6C21524850 + 505555204C6F75A3A6ADBDBEAE9DAB907D765B7E7A7760858586868687878787 + 8786868588827A91619395959695958A8E5F5C5C8427575723295B255B5BCBCB + CCCC02886060772828724926575F8A89ABABBABABAACBBBBBBBBBBBBBBACBBBB + ACBBACACACACACACA3AAAAAA808BA5A5738C7C7C785879546E6E505050507474 + 52215222564A234B4A4D2323235B23535B5B25252525255B255B532323232323 + 225624595055546D4C6F75A3A6ADBD9BAEACAB908E765E5A8260608886868686 + 878787878786868588827A5E6194959595958A8D7D5F5C5C2756225729295B25 + 5B5BCBCBCCCC028888606028287A5A5E765C8A898CA8A8BAACACACBBACBBACBB + ACBBBBACBBACACACACACA3AAAABAAAA88B8BA5B873897C714C4F795455555550 + 7450522452521E22224A4A5757235323292525255B255B2625255B5B255B5B23 + 23232323224B525250556E4F4F6F75A3A6AD9B9B99AC98907D295E7E7A778885 + 85868687878787878687868588827A91619495959595938A8E5F5C5C27575757 + 29295B5B235BCBCBCCCB0288606077777A7A7E5E5D5C81908CA8A8BABAACACAC + BBACACACBBACACACACACACACACACAABAAA7FAAA88B8BA5A5737C7C7C78786E6E + 6E5550505074525652274A4D224A1E23232329235B2353255B535B53265B5B5B + 2626255B5B23234D4B2252745059544F4C6F75A3A6AD9BBE99AAAB837D765E72 + 7777888585868787878787878786868588827A91619395959593938D8F5F5C27 + 5757235B292925292329CBCBCBCC02886077777772725A26575C8190B8A8A8BA + BABAACACACACBBACACACACACACACBAACACAABAAAAAA8A88B8B8BA5738C7C7C78 + 714F796E6E505059747452212756224A22222223232229252353235B5B53535B + 2625255B53265B53535B2357702221245059556D4C6F75A3A6AD9BBE99AA988A + 5F575E7A286088858686878787878787878686858860825E6193939595938A8D + 5F5C5C27575D29295B23295D5B29CBCBCBCC02888860776028725A7E5D5C7D83 + B8ABA8BABAACBAACBAACACACBAACACACBAACACAAACAAAABAAAA88BA88BA5A5A5 + 6F7C6F717879546E5550505074525656225622225623235723232323535B535B + 255B5B26532626265326255B5B2323234A1E21745050546D4C6F75A3A6AD9BBE + 99978C8A5F297E7A8277888586868787878787878786868588827A9161949595 + 95938D8E5F5C5C7657292929295B25235B5BCBCBCBCC02888877608282285A5E + 5B5C8183B8ABA8BABABAACBAACACACACACACACBAACBAAABAAAAAAAAA80A88BA8 + 7BA5A5A5897C7C78584F54545059507452524B524B224B222222564D575B2325 + 53255B252626262625532626265B265B232323234A1E48745055556D4C6F75A3 + A6AD9BBE99978C8A5C5D5E7A7777888586868787878787878786868588827E91 + 6193959595938D8E5F5C5C76232929235B5B255B5B29CBCBCBCC028888606077 + 287A7A7E5B5C8190B8ABABA8BABABABABABABABAACBAACBAAAAAAAAAAABABAA8 + A8A8A88BA5A5A58C6F7C7C78784F81557D50745C52525252222222564B4D2323 + 5729235B5B5B5B53262626262626262626265326252323234B48484850555420 + 4C6F75A3A6AD9BAF99978C8A5C5D5A7A77888586868787878787878787878685 + 88827A918F939395938A8D5F5F745C272729295B5B235B295B5BCBCBCBCC0285 + 88886060287A5A7E5D847D8389ABA8A897BABABABABABABABABABABABABABABA + AABAA8A8A88B8B8BA5B873898C7C7178784F6E55505950527456525652222323 + 56234B2323235B5B5B5B5326265B2626262626265B2653255B2329234D4A7448 + 5050554F4C6F75A3A6ADBEAF99978C815C5D7E7A776085858687878787878787 + 8787868588827E918F949395938A8D5F5C5C5629292329255B295B265B5BCBCB + CCCB028588886060287A727E5D5C7D8A96B8A8A8BABABABABABABABABABABABA + BAAABAA8AAA8A8A88BA8A8A5A5A5A5B87C7C837879547D555074507456744B22 + 23224B2223235723235B5B5B5B5B5B2626262626262626262626265B25532923 + 4D4B52525055554F4C6F75A3A6ADADAF929789815C5E7E7A7751888586878787 + 874787878786868588827A9161949395938D8F8F5C2729292329295D5B255B5B + 2526CBCBCBCC0285885188606077727E5E847D8AB8ABA8A8A8BABABABABABABA + BAA8BABABABABAAAAAA8A8A8A8A88BABA5A5B8737C7C787878546E7D59244874 + 5674222223224B572357235B5B295B53535B2626262626252626262626262626 + 25232323222221527455556E4C6F75A3A6ADBEAFBB9796795C5D7E7A77888586 + 86878787878787878786868588827E9161949393938D8E5C5C27272723295B29 + 295B26252525CBCBCBCB0285858860606028725A26767D8A90B8ABA8BAA8BABA + BABABAA8BABABAA8BABAA8BAA8A8A8A88BA8A5A5A58C73897C7C785879547D7D + 50747452525222224A4B232323232323535B5B5B262626262626262626262626 + 2626262625252322704A22245050556E4C6F7BA3A6ADADAFBB9789815C5D7E82 + 7760858686878787878787878787868588827E9161939393938E7D8F5C5C2729 + 292925295B53535B265BCBCBCBCC02858885606060827A5A26765F8A90B8ABA8 + A8A89CBABABABA97BAA897BAA8A8BAA8A8A8A8A8A8A5ABA5A58C8C897C837879 + 5454505050747456564B4A226C57234D2323295B5B25255B2626262626262626 + 26262626262626265B5B232223225252485055204C6F75A3A6A9ADAE92A8898E + 765E7A827788858687878787878787878787868588827E918F949393938F8F5C + 5C7657292923235B25535B535B25CBCBCBCB0285888860606082285A5E767D8A + 90B8AB9AA8A8A8A8A8BAA8BABAA8A8A8A8A8A8A8A8A8A8AB8BABA5A58C8C8C7C + 7C837879797D55595C745656564B704A2223234D5B255B5B25255B2626262626 + 262626262626262626262626262529294D4B2152505055544F6F75A3A6ADADAE + AC8B897D765E7E827788858687878787878787878787868560827E916194938D + 8D8E8F5C84275723295B5B5B255B26535B26CBCBCBCB0285518888887782285A + 5E5D5C8D90B8B8ABA8A8A8A8A89AA8A8A8A8A8A8A89AA8A8ABA8ABA8ABABA5A5 + B88C7C897C787879545450507448485648222323235753535B5B23255B262626 + 262626262626265E262626262626262526255B5B574D1E245250554F4C6F75A3 + A6AFAFAE929A908D845E7A777785868686878787876287878787868588827E91 + 8F9494938D8F8F5C5C292929295B265B255B265B5B26CBCBCBCC028585856060 + 7728827A5E5D8F8D90B8ABA8ABA8A8A8A8A8A8A8A89CA8A8A8A8ABA8A8ABA8AB + A5ABA5B88C8C897C837878797D7D5074745648562222222223232323535B2325 + 5B5B2626262626267E26265E5E5A26262626262626532329234D565224505554 + 6D6F75A3A6A9AFAEACAB907D845E7A6060858686878787878747878787878685 + 88827E918F9494938D8F8F5C7457295B29255B5B25255B265B26CBCBCBCB0285 + 8588886060777A5A7E5D5C819096ABABA89AA89AA8A8A8A8A8A8A8A8ABA8A8AB + A8ABABABABB8A5A58C8C89897C7879796E7D5C507456565656222223235B2323 + 5B5B255B5B26262626262626265E7E2626261F261F2626262625232323221E52 + 74505554786F7BA3A6A9AF99ACAB905F5D5E7A82608586868787878787878787 + 8787868588827E91619494948E8F8F5C5629295B295B5326262526535326CBCB + CBCB0285858588606077725A7E5D848D8396B898A8A89AA8A8A89A9AA89AA8A8 + A8A8A89AABA8ABABABA5B8B88C898989837878796E505050742756271E224B23 + 2323295B5B5B255B26262626262626267E26265A267E7E2626262626265B2523 + 2322215274505554586F7BA3A6AFAF99ACAB908E295E7A776085868687878762 + 878762878787868588827E916194948D8F8F845C57295725235B5B5B5B262626 + 265ECBCBCBCB0285858888887760287A5E5D5CB79590B8ABA8AB9AABA8A8A8A8 + 9AA8ABA8ABA8ABA8ABABABABB8A5A58C8C897C83837879547D505074744B5622 + 4A5623232329235B5B535B262526262626267E26262649267E5A267E265E2626 + 2626532522572252505055544C6F7BA3A7A9AF99AAAB905F5D5E7A8288858687 + 87878787876287878787868588827E91619494948E5C5C5C2757295B5B5B265B + 26265B5B2626CBCBCBCC0285858588887760287A7E5D848D9096B8ABABA89AA8 + 9A9A9A9AA8A8A8A8A8ABA8ABABABABABABAB8C8C8C898983837879547D7D5C74 + 744B224A222223234D2323535B25262626262626262626267E5E1F5E5E7E5A26 + 26262626265B5B2323222248505055544C6F7BA3A7A9AF99AAAB908F5D5E7A60 + 8885868687878787478787878786868588827E91618F94948E8F5C5C5757295B + 5B5B5B5B2626265B2626C2CBCBCB} + WaterMark.Image.Layout = ilTile + object Label6: TLabel + Left = 176 + Top = 312 + Width = 219 + Height = 13 + Caption = 'Haga click en Finalizar para salir del asistente.' + end + object Label7: TLabel + Left = 168 + Top = 88 + Width = 155 + Height = 16 + Caption = 'Por favor, elija una opci'#243'n:' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -13 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + end + object bImprimir: TButton + Left = 352 + Top = 112 + Width = 150 + Height = 25 + Caption = '&Imprimir las etiquetas' + TabOrder = 0 + OnClick = bImprimirClick + end + object Button2: TButton + Left = 184 + Top = 112 + Width = 150 + Height = 25 + Caption = '&Vista previa de las etiquetas' + TabOrder = 1 + OnClick = Button2Click + end + end + end +end diff --git a/Modulos/Montajes/Cliente/uAsistenteEtiquetasMontajes.pas b/Modulos/Montajes/Cliente/uAsistenteEtiquetasMontajes.pas new file mode 100644 index 0000000..cdd1671 --- /dev/null +++ b/Modulos/Montajes/Cliente/uAsistenteEtiquetasMontajes.pas @@ -0,0 +1,99 @@ +unit uAsistenteEtiquetasMontajes; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, JvWizard, JvExControls, JvComponent, StdCtrls, cxControls, + cxContainer, cxEdit, cxTextEdit, cxMaskEdit, cxSpinEdit, + uBizMontajes, cxGraphics, cxDropDownEdit, uCustomView, uViewBase, + uViewPreview; + +type + TfAsistenteEtiquetasMontajes = class(TForm) + JvWizard1: TJvWizard; + JvWizardWelcomePage1: TJvWizardWelcomePage; + Label1: TLabel; + JvWizardInteriorPage1: TJvWizardInteriorPage; + edtLabelCount: TcxSpinEdit; + Label2: TLabel; + Label3: TLabel; + lblNombreCliente: TLabel; + Label4: TLabel; + cbImpresoras: TcxComboBox; + Label5: TLabel; + JvWizardWelcomePage2: TJvWizardWelcomePage; + Label6: TLabel; + Label7: TLabel; + bImprimir: TButton; + Button2: TButton; + procedure FormCreate(Sender: TObject); + procedure bImprimirClick(Sender: TObject); + procedure Button2Click(Sender: TObject); + procedure JvWizard1FinishButtonClick(Sender: TObject); + private + FMontaje : IBizMontaje; + procedure SetMontaje(const Value: IBizMontaje); + public + property Montaje : IBizMontaje read FMontaje write SetMontaje; + end; + + procedure VerAsistenteEtiquetasMontajes(AMontaje : IBizMontaje); + +implementation + +uses Printers; + +{$R *.dfm} + +procedure VerAsistenteEtiquetasMontajes(AMontaje : IBizMontaje); +var + fAsistenteEtiquetasMontajes: TfAsistenteEtiquetasMontajes; +begin + if not Assigned(AMontaje) then + raise Exception.Create('Montaje no asignado (VerAsistenteEtiquetasMontajes)'); + + with TfAsistenteEtiquetasMontajes.Create(NIL) do + try + Montaje := AMontaje; + ShowModal; + finally + Free; + end; +end; + + +procedure TfAsistenteEtiquetasMontajes.FormCreate(Sender: TObject); +begin + cbImpresoras.Properties.Items := Printer.Printers; + Printer.PrinterIndex := -1; + cbImpresoras.Text := Printer.Printers.Strings[Printer.PrinterIndex]; +end; + +procedure TfAsistenteEtiquetasMontajes.bImprimirClick(Sender: TObject); +begin + FMontaje.LabelCount := edtLabelCount.Value; + FMontaje.PrintLabels; +end; + +procedure TfAsistenteEtiquetasMontajes.SetMontaje( + const Value: IBizMontaje); +begin + FMontaje := Value; + if Assigned(FMontaje) then + lblNombreCliente.Caption := FMontaje.Cliente.NOMBRE; +end; + +procedure TfAsistenteEtiquetasMontajes.Button2Click(Sender: TObject); +begin + FMontaje.LabelCount := edtLabelCount.Value; + FMontaje.PreviewLabels; +end; + +procedure TfAsistenteEtiquetasMontajes.JvWizard1FinishButtonClick( + Sender: TObject); +begin + Close; +end; + +end. diff --git a/Modulos/Montajes/Cliente/uDataModuleMontajes.ddp b/Modulos/Montajes/Cliente/uDataModuleMontajes.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Montajes/Cliente/uDataModuleMontajes.ddp differ diff --git a/Modulos/Montajes/Cliente/uDataModuleMontajes.dfm b/Modulos/Montajes/Cliente/uDataModuleMontajes.dfm new file mode 100644 index 0000000..79bf094 --- /dev/null +++ b/Modulos/Montajes/Cliente/uDataModuleMontajes.dfm @@ -0,0 +1,619 @@ +object dmMontajes: TdmMontajes + OldCreateOrder = True + OnCreate = DAClientDataModuleCreate + RemoteService = RORemoteService + Adapter = DABINAdapter + SchemaCall.MethodName = 'GetSchemaAsXML' + SchemaCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtString + end> + Left = 564 + Top = 347 + Height = 335 + Width = 343 + object RORemoteService: TRORemoteService + ServiceName = 'srvMontajes' + Message = dmBase.ROMessage + Channel = dmBase.ROChannel + Left = 48 + Top = 20 + end + object DABINAdapter: TDABINAdapter + Left = 48 + Top = 88 + end + object tbl_Montajes: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'CODIGOEMPRESA' + DataType = datInteger + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'C'#243'd. empresa' + Alignment = taLeftJustify + DictionaryEntry = 'CODIGOEMPRESA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGO' + DataType = datInteger + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'C'#243'd. montaje' + Alignment = taLeftJustify + DictionaryEntry = 'CODIGOMONTAJE' + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHAALTA' + DataType = datDateTime + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'Fecha de alta' + Alignment = taLeftJustify + DictionaryEntry = 'FECHAALTA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'USUARIO' + DataType = datString + Size = 100 + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'Usuario de alta' + Alignment = taLeftJustify + DictionaryEntry = 'USUARIO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHAINICIO' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Inicio' + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHAFIN' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Finalizaci'#243'n' + Alignment = taLeftJustify + DictionaryEntry = 'FECHAFIN' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'SITUACION' + DataType = datString + Size = 30 + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'Situaci'#243'n' + Alignment = taLeftJustify + DictionaryEntry = 'SITUACIONMONTAJE' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'OBSERVACIONES' + DataType = datMemo + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Observaciones' + Alignment = taLeftJustify + DictionaryEntry = 'OBSERVACIONES' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOPRESUPUESTO' + DataType = datInteger + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'C'#243'd. presupuesto' + Alignment = taLeftJustify + DictionaryEntry = 'CODIGOPRESUPUESTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'REFERENCIA' + DataType = datString + Size = 20 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Referencia' + Alignment = taLeftJustify + DictionaryEntry = 'REFERENCIA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOCONTACTO' + DataType = datInteger + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'C'#243'd. contacto' + Alignment = taLeftJustify + DictionaryEntry = 'CODIGOCONTACTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NOMBRE' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Nombre' + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'OPCION' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + Params = <> + MasterMappingMode = mmDataRequest + StreamingOptions = [soDisableEventsWhileStreaming] + SchemaCall.MethodName = 'GetDatasetSchema' + SchemaCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBinary + end + item + Name = 'aDatasetName' + ParamType = fIn + DataType = rtString + Value = 'Montajes' + end> + DataRequestCall.MethodName = 'GetDatasetDataEx' + DataRequestCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBinary + end + item + Name = 'DatasetName' + ParamType = fIn + DataType = rtString + Value = 'Montajes' + end + item + Name = 'Params' + ParamType = fIn + DataType = rtUserDefined + UserClassName = 'TDADatasetParamArray' + end + item + Name = 'UserFilter' + ParamType = fIn + DataType = rtString + Value = '' + end + item + Name = 'IncludeSchema' + ParamType = fIn + DataType = rtBoolean + Value = False + end + item + Name = 'MaxRecords' + ParamType = fIn + DataType = rtInteger + Value = -1 + end> + DataUpdateCall.MethodName = 'UpdateData' + DataUpdateCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBinary + end + item + Name = 'Delta' + ParamType = fIn + DataType = rtBinary + end> + ScriptCall.MethodName = 'GetDatasetScripts' + ScriptCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtString + Value = '' + end + item + Name = 'DatasetNames' + ParamType = fIn + DataType = rtString + Value = 'Montajes' + end> + ReadOnly = False + RemoteService = RORemoteService + Adapter = DABINAdapter + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'Montajes' + IndexDefs = <> + Left = 128 + Top = 32 + end + object ds_Montajes: TDADataSource + DataTable = tbl_Montajes + Left = 240 + Top = 32 + end + object tbl_FichaBeneficios: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'CODIGOMONTAJE' + DataType = datInteger + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'C'#243'd. montaje' + Alignment = taLeftJustify + DictionaryEntry = 'CODIGOMONTAJE' + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NUMCONCEPTO' + DataType = datInteger + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'Num. concepto' + Alignment = taLeftJustify + DictionaryEntry = 'NUMCONCEPTO' + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'DESCRIPCION' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Descripci'#243'n' + Alignment = taLeftJustify + DictionaryEntry = 'DESCRIPCION' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'MODELO' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PROVEEDOR' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'COMPRA' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'VENTA' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + Params = < + item + Name = 'CODIGOMONTAJE' + DataType = datInteger + BlobType = dabtUnknown + Value = 77 + ParamType = daptInput + end> + MasterMappingMode = mmParams + MasterParamsMappings.Strings = ( + 'CODIGOMONTAJE=CODIGO') + StreamingOptions = [soDisableEventsWhileStreaming] + SchemaCall.MethodName = 'GetDatasetSchema' + SchemaCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBinary + end + item + Name = 'aDatasetName' + ParamType = fIn + DataType = rtString + Value = 'FichaBeneficios' + end> + DataRequestCall.MethodName = 'GetDatasetDataEx' + DataRequestCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBinary + end + item + Name = 'DatasetName' + ParamType = fIn + DataType = rtString + Value = 'FichaBeneficios' + end + item + Name = 'Params' + ParamType = fIn + DataType = rtUserDefined + UserClassName = 'TDADatasetParamArray' + end + item + Name = 'UserFilter' + ParamType = fIn + DataType = rtString + Value = '' + end + item + Name = 'IncludeSchema' + ParamType = fIn + DataType = rtBoolean + Value = False + end + item + Name = 'MaxRecords' + ParamType = fIn + DataType = rtInteger + Value = -1 + end> + DataUpdateCall.MethodName = 'UpdateData' + DataUpdateCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBinary + end + item + Name = 'Delta' + ParamType = fIn + DataType = rtBinary + end> + ScriptCall.MethodName = 'GetDatasetScripts' + ScriptCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtString + Value = '' + end + item + Name = 'DatasetNames' + ParamType = fIn + DataType = rtString + Value = 'FichaBeneficios' + end> + ReadOnly = False + RemoteService = RORemoteService + Adapter = DABINAdapter + MasterSource = ds_Montajes + MasterFields = 'CODIGO' + DetailFields = 'CODIGOMONTAJE' + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'FichaBeneficios' + IndexDefs = <> + Left = 128 + Top = 120 + end + object ds_FichaBeneficios: TDADataSource + DataTable = tbl_FichaBeneficios + Left = 240 + Top = 120 + end + object tbl_FichaBeneficios_Aux: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'NUMCONCEPTO' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'DESCRIPCION' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + Params = <> + MasterMappingMode = mmDataRequest + StreamingOptions = [soDisableEventsWhileStreaming] + SchemaCall.MethodName = 'GetDatasetSchema' + SchemaCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBinary + end + item + Name = 'aDatasetName' + ParamType = fIn + DataType = rtString + Value = 'FichaBeneficios_Aux' + end> + DataRequestCall.MethodName = 'GetDatasetDataEx' + DataRequestCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBinary + end + item + Name = 'DatasetName' + ParamType = fIn + DataType = rtString + Value = 'FichaBeneficios_Aux' + end + item + Name = 'Params' + ParamType = fIn + DataType = rtUserDefined + UserClassName = 'TDADatasetParamArray' + end + item + Name = 'UserFilter' + ParamType = fIn + DataType = rtString + Value = '' + end + item + Name = 'IncludeSchema' + ParamType = fIn + DataType = rtBoolean + Value = False + end + item + Name = 'MaxRecords' + ParamType = fIn + DataType = rtInteger + Value = -1 + end> + DataUpdateCall.MethodName = 'UpdateData' + DataUpdateCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBinary + end + item + Name = 'Delta' + ParamType = fIn + DataType = rtBinary + end> + ScriptCall.MethodName = 'GetDatasetScripts' + ScriptCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtString + Value = '' + end + item + Name = 'DatasetNames' + ParamType = fIn + DataType = rtString + Value = 'FichaBeneficios_Aux' + end> + ReadOnly = False + RemoteService = RORemoteService + Adapter = DABINAdapter + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'FichaBeneficios_Aux' + IndexDefs = <> + Left = 128 + Top = 200 + end + object ds_FichaBeneficios_Aux: TDADataSource + DataTable = tbl_FichaBeneficios_Aux + Left = 240 + Top = 200 + end +end diff --git a/Modulos/Montajes/Cliente/uDataModuleMontajes.pas b/Modulos/Montajes/Cliente/uDataModuleMontajes.pas new file mode 100644 index 0000000..bdd04b4 --- /dev/null +++ b/Modulos/Montajes/Cliente/uDataModuleMontajes.pas @@ -0,0 +1,374 @@ +unit uDataModuleMontajes; + +interface + +uses {vcl:} SysUtils, Classes, DB, DBClient, + {RemObjects:} uDAClientDataModule, uDADataTable, uDABINAdapter, + uROServiceComponent, uRORemoteService, uROClient, uROBinMessage, + uROWinInetHttpChannel, uDAScriptingProvider, uDACDSDataTable, + uBizMontajes, uBizPresupuestosCliente, schMontajesClient_Intf; + +type + TdmMontajes = class(TDAClientDataModule) + DABINAdapter: TDABINAdapter; + RORemoteService: TRORemoteService; + tbl_Montajes: TDACDSDataTable; + ds_Montajes: TDADataSource; + tbl_FichaBeneficios: TDACDSDataTable; + ds_FichaBeneficios: TDADataSource; + tbl_FichaBeneficios_Aux: TDACDSDataTable; + ds_FichaBeneficios_Aux: TDADataSource; + procedure DAClientDataModuleCreate(Sender: TObject); + public + function GetItems: IBizMontaje; overload; + function GetItemsPendientes(Situacion: TEnumSituacion): IBizMontaje; + function GetItemsSeleccionados(ASource : IBizMontaje): IBizMontaje; + function GetItem(Codigo : Integer): IBizMontaje; + function GetItems(CodigoPresupuesto : Integer): IBizMontaje; overload; + function GetNextAutoinc(const Generador: String): integer; + procedure PreviewFicha(const Codigo:Integer); + procedure PrintFicha(const Codigo:Integer); + procedure PreviewEtiquetas(const Codigo : Integer; const NumEtiquetas : Integer); + procedure PrintEtiquetas(const Codigo : Integer; const NumEtiquetas : Integer); + function PuedoEliminarMontaje(Codigo : Integer) : Boolean; + function darFichaBeneficiosAux: IFichaBeneficios_Aux; + procedure NuevoMontaje(AMontaje: IBizMontaje; APresupuesto: IBizPresupuestos); + function CambiarSituacion(CodigoPresupuesto: Integer; Situacion: TEnumSituacion): String; + function DarNuevaReferencia (TipoMontaje : String) : String; + end; + +var + dmMontajes: TdmMontajes; + +implementation + +{$R *.DFM} + +uses + Controls, Forms, uDAInterfaces, DataAbstract_Intf, FactuGES_Intf, + uDataTableUtils, uROTypes, uEditorPreview, + Dialogs, uDataModuleBase, uDBSelectionList, + uDataModuleContactos, uDataModulePresupuestos; + +const + MAX_RECORDS = 100; + + +procedure TdmMontajes.DAClientDataModuleCreate(Sender: TObject); +begin + RORemoteService.Channel := dmBase.Channel; + RORemoteService.Message := dmBase.Message; +end; + +function TdmMontajes.GetItems: IBizMontaje; +var + dtMontajes: TDACDSDataTable; + dtFichaBeneficiosMontaje: TDACDSDataTable; + ACursor: TCursor; +begin + ACursor := Screen.Cursor; + Screen.Cursor := crHourGlass; + try + dtMontajes := TDACDSDataTable.Create(NIL); + CloneDataTable(tbl_Montajes, dtMontajes); + dtMontajes.BusinessRulesID := 'BizMontaje'; + + dtFichaBeneficiosMontaje := TDACDSDataTable.Create(NIL); + CloneDataTable(tbl_FichaBeneficios, dtFichaBeneficiosMontaje); + with dtFichaBeneficiosMontaje do + begin + BusinessRulesID := 'BizFichaBeneficiosMontaje'; + DetailOptions := DetailOptions - [dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates]; + end; + (dtMontajes as IBizMontaje).FichaBeneficios := (dtFichaBeneficiosMontaje as IBizFichaBeneficiosMontaje); + + Result := (dtMontajes as IBizMontaje); + finally + Screen.Cursor := ACursor; + end; +end; + +{function TdmAlmacenes.GetCliente(Codigo: Integer): IBizCliente; +var +// dtContactos: TDACDSDataTable; +// dtCategorias: TDACDSDataTable; +// ACursor: TCursor; +begin +{ ACursor := Screen.Cursor; + Screen.Cursor := crHourGlass; + try + dtContactos := TDACDSDataTable.Create(NIL); + CloneDataTable(tbl_Contactos, dtContactos); + dtContactos.BusinessRulesID := 'BizCliente'; + + dtCategorias := TDACDSDataTable.Create(NIL); + CloneDataTable(tbl_CategoriasContacto, dtCategorias); + dtCategorias.BusinessRulesID := 'BizCategoria'; + (dtContactos as IBizContacto).Categorias := (dtCategorias as IBizCategoriasContacto); + + Result := (dtContactos as IBizCliente); + GetCliente(Result, Codigo); + finally + Screen.Cursor := ACursor; + end; +end; +} + +function TdmMontajes.GetItem(Codigo: Integer): IBizMontaje; +var + AMontaje: IBizMontaje; +begin + AMontaje := GetItems; + with AMontaje.DataTable do + begin + if Active then + Active := False; + Where.Clear; + Where.OpenBraket; + Where.AddText('MON.' + fld_MONTAJESCODIGO + ' = ' + IntToStr(Codigo), False); + Where.CloseBraket; + end; + Result := AMontaje; +end; + +function TdmMontajes.GetNextAutoinc(const Generador: String): integer; +begin + Result := (RORemoteService as IsrvMontajes).GetNextAutoinc(Generador); +end; + +function TdmMontajes.GetItemsSeleccionados(ASource: IBizMontaje): IBizMontaje; +var + aObj : ISelectedRowList; + dtMontaje : IBizMontaje; + i : integer; +begin + if Supports(ASource, ISelectedRowList, aObj) then + begin + if (aObj.SelectedRows.Count = 1) then + begin + ASource.DataTable.GotoBookmark(aObj.SelectedRows[0]); + Result := GetItem(ASource.CODIGO); + Exit; + end + else + dtMontaje := GetItems; + end + else + raise Exception.Create('Interface no soportada (GetItemsSeleccionados)'); + + if dtMontaje.DataTable.Active then + dtMontaje.DataTable.Active := False; + with dtMontaje.DataTable.Where do + begin + Clear; + for i := 0 to aObj.SelectedRows.Count - 1 do + begin + ASource.DataTable.GotoBookmark(aObj.SelectedRows[i]); + if i > 0 then + AddOperator(opAND); + AddCondition(fld_MontajesCODIGO, cEqual, ASource.CODIGO); + end; + end; + + Result := dtMontaje; +end; + +function TdmMontajes.GetItemsPendientes(Situacion: TEnumSituacion): IBizMontaje; +var + dsMontajes : IBizMontaje; +begin + dsMontajes := GetItems; + with dsMontajes.DataTable.Where do + begin + if not Empty then + AddOperator(opAND); + Clear; + OpenBraket; + case Situacion of + sitPendientes: begin + AddText('MONTAJES.' + fld_MontajesSITUACION + '=' + '''' + SITUACION_PENDIENTERECEPCION + '''', False); + AddText('OR MONTAJES.' + fld_MontajesSITUACION + '=' + '''' + SITUACION_PENDIENTEMONTAJE + '''', False); + AddText('OR MONTAJES.' + fld_MontajesSITUACION + '=' + '''' + SITUACION_PENDIENTEPAGO + '''', False); + end; + sitPendienteRecepcion: AddText('MONTAJES.' + fld_MontajesSITUACION + '=' + '''' + SITUACION_PENDIENTERECEPCION + '''', False); + sitPendienteMontaje: AddText('MONTAJES.' + fld_MontajesSITUACION + '=' + '''' + SITUACION_PENDIENTEMONTAJE + '''', False); + sitPendientePago: AddText('MONTAJES.' + fld_MontajesSITUACION + '=' + '''' + SITUACION_PENDIENTEPAGO + '''', False); + sitPagado: AddText('MONTAJES.' + fld_MontajesSITUACION + '=' + '''' + SITUACION_PAGADO + '''', False); + end; + CloseBraket; + end; + Result := dsMontajes; +end; + +function TdmMontajes.PuedoEliminarMontaje(Codigo: Integer): Boolean; +begin + Result := (RORemoteService as IsrvMontajes).PuedoEliminarMontaje(Codigo); +end; + +procedure TdmMontajes.PreviewFicha(Const Codigo:Integer); +var + AStream: TMemoryStream; + AEditorPreview : TfEditorPreview; +begin + AStream := Binary.Create; + AEditorPreview := TfEditorPreview.Create(Application); + try + AStream := (RemoteService as ISrvMontajes).GenerateReportFicha(Codigo); + AEditorPreview.Report.PreviewPages.LoadFromStream(AStream); + AEditorPreview.ShowModal; + finally + AEditorPreview.Release; + AStream.Free; + end; +end; + +procedure TdmMontajes.PrintFicha(Const Codigo:Integer); +var + AStream: TMemoryStream; + AEditorPreview : TfEditorPreview; +begin + AStream := Binary.Create; + AEditorPreview := TfEditorPreview.Create(Application); + try + AStream := (RemoteService as ISrvMontajes).GenerateReportFicha(Codigo); + AEditorPreview.Report.PreviewPages.LoadFromStream(AStream); + AEditorPreview.Print; + finally + AEditorPreview.Release; + AStream.Free; + end; +end; + +procedure TdmMontajes.PreviewEtiquetas(const Codigo : Integer; + const NumEtiquetas : Integer); +var + AStream: TMemoryStream; + AEditorPreview : TfEditorPreview; +begin + AStream := Binary.Create; + AEditorPreview := TfEditorPreview.Create(Application); + try + AStream := (RemoteService as ISrvMontajes).GenerateReportEtiquetas(Codigo, NumEtiquetas); + AEditorPreview.Report.PreviewPages.LoadFromStream(AStream); + AEditorPreview.ShowModal; + finally + AEditorPreview.Release; + AStream.Free; + end; +end; + +procedure TdmMontajes.PrintEtiquetas(const Codigo : Integer; + const NumEtiquetas : Integer); +var + AStream: TMemoryStream; + AEditorPreview : TfEditorPreview; +begin + AStream := Binary.Create; + AEditorPreview := TfEditorPreview.Create(Application); + try + AStream := (RemoteService as ISrvMontajes).GenerateReportEtiquetas(Codigo, NumEtiquetas); + AEditorPreview.Report.PreviewPages.LoadFromStream(AStream); + AEditorPreview.Print; + finally + AEditorPreview.Release; + AStream.Free; + end; +end; + +procedure TdmMontajes.NuevoMontaje(AMontaje: IBizMontaje; APresupuesto: IBizPresupuestos); +begin + if not Assigned(AMontaje) then + begin + AMontaje := getItem(-1); + AMontaje.DataTable.Active := True; + end; + + AMontaje.Insert; + AMontaje.Presupuesto := APresupuesto; + AMontaje.Post; + AMontaje.DataTable.ApplyUpdates; + +// if not AnadirFichaBeneficios(AMontaje.CODIGO) then +// raise Exception.Create('Error al crear ficha de beneficios'); +end; + +function TdmMontajes.darFichaBeneficiosAux: IFichaBeneficios_Aux; +var + dtFichaBeneficiosAux: TDACDSDataTable; + ACursor: TCursor; +begin + ACursor := Screen.Cursor; + Screen.Cursor := crHourGlass; + try + dtFichaBeneficiosAux := TDACDSDataTable.Create(NIL); + CloneDataTable(tbl_FichaBeneficios_Aux, dtFichaBeneficiosAux); + dtFichaBeneficiosAux.BusinessRulesID := 'BizFichaBeneficiosAux'; + Result := (dtFichaBeneficiosAux as IFichaBeneficios_Aux); + finally + Screen.Cursor := ACursor; + end; +end; + +function TdmMontajes.CambiarSituacion(CodigoPresupuesto: Integer; Situacion: TEnumSituacion): String; +var + AMontaje: IBizMontaje; +begin + Result := ''; + AMontaje := GetItems(CodigoPresupuesto); + AMontaje.DataTable.Active := True; + + AMontaje.DataTable.First; + while not AMontaje.DataTable.EOF do + begin + AMontaje.DataTable.Edit; + Case Situacion of + sitPendientes: AMontaje.SITUACION := SITUACION_PENDIENTE; + sitPendienteRecepcion: AMontaje.SITUACION := SITUACION_PENDIENTERECEPCION; + sitPendienteMontaje: AMontaje.SITUACION := SITUACION_PENDIENTEMONTAJE; + sitPendientePago: AMontaje.SITUACION := SITUACION_PENDIENTEPAGO; + sitPagado: AMontaje.SITUACION := SITUACION_PAGADO; + end; + + if (Length(Result) > 0) then + Result := Result + ', '; + Result := Result + AMontaje.REFERENCIA; + + AMontaje.DataTable.Post; + AMontaje.DataTable.Next; + end; + + //Solo si se han hecho cambios + if (Length(Result) > 0) then + AMontaje.DataTable.ApplyUpdates; +end; + +function TdmMontajes.GetItems(CodigoPresupuesto: Integer): IBizMontaje; +var + AMontaje: IBizMontaje; +begin + AMontaje := GetItems; + with AMontaje.DataTable do + begin + if Active then + Active := False; + Where.Clear; + Where.OpenBraket; + Where.AddText('MON.' + fld_MONTAJESCODIGOPRESUPUESTO + ' = ' + IntToStr(CodigoPresupuesto), False); + Where.CloseBraket; + end; + Result := AMontaje; +end; + +function TdmMontajes.DarNuevaReferencia(TipoMontaje: String): String; +begin + Result := (RORemoteService as IsrvMontajes).DarNuevaReferencia(TipoMontaje); +end; + +initialization + dmMontajes := TdmMontajes.Create(nil); + +finalization + FreeAndNil(dmMontajes); + +end. + diff --git a/Modulos/Montajes/Cliente/uEditorMontaje.ddp b/Modulos/Montajes/Cliente/uEditorMontaje.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Montajes/Cliente/uEditorMontaje.ddp differ diff --git a/Modulos/Montajes/Cliente/uEditorMontaje.dfm b/Modulos/Montajes/Cliente/uEditorMontaje.dfm new file mode 100644 index 0000000..9f8b961 --- /dev/null +++ b/Modulos/Montajes/Cliente/uEditorMontaje.dfm @@ -0,0 +1,1551 @@ +inherited fEditorMontaje: TfEditorMontaje + Left = 337 + Top = 203 + Width = 766 + Height = 497 + HorzScrollBar.Visible = False + VertScrollBar.Visible = False + Caption = 'Ficha de montaje' + Scaled = False + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + Width = 758 + Caption = 'Montaje' + inherited Image1: TImage + Left = 731 + end + end + inherited TBXDock: TTBXDock + Width = 758 + inherited tbxMain: TTBXToolbar + inherited TBXItem2: TTBXItem + Visible = False + end + inherited TBXItem5: TTBXItem + Visible = False + end + object TBXSeparatorItem14: TTBXSeparatorItem [15] + end + object TBXItem7: TTBXItem [16] + Action = actEtiquetas + DisplayMode = nbdmImageAndText + end + end + inherited tbxMenu: TTBXToolbar + DockPos = 0 + inherited TBXSubmenuItem4: TTBXSubmenuItem + inherited TBXItem8: TTBXItem + Visible = False + end + inherited TBXSeparatorItem5: TTBXSeparatorItem + Visible = False + end + inherited TBXItem10: TTBXItem + Visible = False + end + inherited TBXSeparatorItem6: TTBXSeparatorItem + Visible = False + end + inherited TBXItem21: TTBXItem + Visible = False + end + inherited TBXItem22: TTBXItem + Visible = False + end + inherited TBXItem9: TTBXItem + Visible = False + end + end + inherited TBXSubmenuItem1: TTBXSubmenuItem + inherited TBXItem32: TTBXItem + Visible = False + end + inherited TBXItem31: TTBXItem + Visible = False + end + inherited TBXSeparatorItem13: TTBXSeparatorItem + Visible = False + end + end + end + end + inherited pgPaginas: TPageControl + Width = 758 + Height = 368 + inherited pagGeneral: TTabSheet + inline frViewMontaje1: TfrViewMontaje + Left = 0 + Top = 0 + Width = 750 + Height = 340 + Align = alClient + Anchors = [] + Constraints.MinHeight = 300 + Constraints.MinWidth = 750 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 0 + ReadOnly = False + inherited frViewDatosYSeleccionContacto: TfrViewDatosYSeleccionContacto + inherited Bevel1: TBevel + Width = 313 + end + inherited ToolBar1: TToolBar + Width = 369 + end + inherited edtlNombre: TcxDBTextEdit + Properties.OnChange = frViewDatosYSeleccionContactoedtlNombrePropertiesChange + Width = 296 + end + inherited edtPoblacion: TcxDBTextEdit + Width = 296 + end + inherited edtProvincia: TcxDBTextEdit + Width = 152 + end + inherited edtNIFCIF: TcxDBTextEdit + Width = 296 + end + inherited edtCalle: TcxDBTextEdit + Width = 296 + end + inherited ToolBar2: TToolBar + Width = 182 + end + inherited edtCodigoPostal: TcxDBTextEdit + Width = 105 + end + end + end + end + object pagPedidos: TTabSheet + Caption = 'Pedidos' + ImageIndex = 1 + inline frViewPedidosMontaje: TfrViewPedidosMontaje + Left = 0 + Top = 0 + Width = 750 + Height = 340 + Align = alClient + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 0 + ReadOnly = False + inherited cxGrid: TcxGrid + Width = 750 + Height = 315 + TabOrder = 1 + inherited cxGridView: TcxGridDBTableView + inherited cxGridViewINCIDENCIASACTIVAS: TcxGridDBColumn + IsCaptionAssigned = True + end + inherited cxGridViewSITUACION: TcxGridDBColumn + IsCaptionAssigned = True + end + end + end + inherited ToolBar1: TToolBar + Width = 750 + TabOrder = 0 + end + inherited dxComponentPrinter: TdxComponentPrinter [3] + inherited dxComponentPrinterLink: TdxGridReportLink + Active = False + Component = nil + ReportDocument.CreationDate = 38749.410466388890000000 + BuiltInReportLink = True + end + end + inherited dxPSEngineController1: TdxPSEngineController [4] + end + inherited cxStyleRepository1: TcxStyleRepository [5] + end + inherited PngImageList: TPngImageList [6] + end + inherited PngImageList2: TPngImageList [7] + end + inherited ActionList1: TActionList [8] + inherited actRecibirPedido: TAction + OnExecute = frViewPedidosMontajeactRecibirPedidoExecute + OnUpdate = frViewPedidosMontajeactRecibirPedidoUpdate + end + end + end + end + object pagArticulos: TTabSheet + Caption = 'Art'#237'culos' + ImageIndex = 2 + inline frViewArticulosMontaje: TfrViewArticulosMontaje + Left = 0 + Top = 0 + Width = 750 + Height = 340 + Align = alClient + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 0 + ReadOnly = False + inherited cxGrid: TcxGrid + Width = 750 + Height = 315 + end + inherited ToolBar1: TToolBar + Width = 750 + end + inherited dxComponentPrinter: TdxComponentPrinter + inherited dxComponentPrinterLink: TdxGridReportLink + ReportDocument.CreationDate = 38751.760538553240000000 + BuiltInReportLink = True + end + end + end + end + object pagFichaBeneficios: TTabSheet + Caption = 'Ficha de beneficios' + ImageIndex = 3 + inline frViewFichaBeneficiosMontaje: TfrViewFichaBeneficiosMontaje + Left = 0 + Top = 0 + Width = 750 + Height = 340 + Align = alClient + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 0 + ReadOnly = False + inherited cxGrid: TcxGrid + Width = 750 + Height = 315 + TabOrder = 1 + inherited cxGridView: TcxGridDBTableView + DataController.Summary.FooterSummaryItems = < + item + Format = '0 MONTAJES' + Kind = skCount + Column = frViewFichaBeneficiosMontaje.cxGridViewDESCRIPCION + end + item + Format = '0' + Kind = skSum + Column = frViewFichaBeneficiosMontaje.cxGridViewCOMPRA + end + item + Format = '0' + Kind = skSum + Column = frViewFichaBeneficiosMontaje.cxGridViewVENTA + end> + inherited cxGridViewDESCRIPCION: TcxGridDBColumn + IsCaptionAssigned = True + end + end + end + inherited ToolBar1: TToolBar + Width = 750 + TabOrder = 0 + end + inherited dxComponentPrinter: TdxComponentPrinter + inherited dxComponentPrinterLink: TdxGridReportLink + Active = False + Component = nil + ReportDocument.CreationDate = 38752.598733356490000000 + BuiltInReportLink = True + end + end + end + end + end + inherited StatusBar: TStatusBar + Top = 444 + Width = 758 + end + inherited EditorActionList: TActionList + Left = 264 + Top = 32 + object actEtiquetas: TAction + Category = 'Archivo' + Caption = 'Etiquetas...' + ImageIndex = 20 + OnExecute = actEtiquetasExecute + 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 + 610000000970485973000017120000171201679FD2520000008D4944415478DA + 63FCFFFF3F03084C59BC03C22001E4C47A3032221B6066A0C570EDF63D14455A + AA4A58C5324A3B18CEED98866A000F3707434290035CE1A9CB8FC09A6162203E + 0880C426CD5A85DF0090E26FDF7F313C78F2042C06E38300480CAB01A35E18F5 + 025DBDE064A9CF1090588D69809F8B39C3D5DB2F188801D56D93310D98B77413 + 519A6100640000C16C35F0D0FF08AC0000000049454E44AE426082} + Name = 'PngImage20' + Background = clWindow + end> + Top = 112 + Bitmap = {} + end + inherited dsDataTable: TDADataSource [6] + Left = 216 + Top = 32 + 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 + F80000000970485973000017120000171201679FD252000001D24944415478DA + B5956B4BC2501CC6FF7E8F8AA27B9888B64A142F195D28858C40A8177D833E49 + EFA2975174854834334A2CCD4B6933D310428AF0859FA0B034746BE7D44A5D4E + 9BED81C360CFD9F383FFB39D49689A06312529056C1F45FE8D363F3D24F915C0 + 187F0E2B162966D1F88AA49E5982D8C9EAFF004AC30B14051B362FAC6D1FD606 + ACDB7C9CB0458BBEAA373BAEC2902DC7456D000A60C372F90264DFF2907D7D87 + F370A20C54E9990C04EC1E05EA0358A734DF0FBF64F3F09CCD41EA298DF755F3 + 26754AD83F0ED507308D106501F9F702A43319BCAF9A37AA9683DD1D16DEC182 + 590B0566CE7BAE20C743E1A803E7D9B5781DE8887E70F948F13AD028A570E28F + 8AD7C1B0BC0F3CA198F00ECCC6413C67972FCAF15038F2BCE1B8781D28FABAC0 + 4FDEF103AC93046C3AFC823A90F574C0E54D921F303736003BCCD728A483DE8E + 362013F7FC008B51810FAD83D32BCE9CF543323CE74034C9F15038F262C9143F + C06C90E370211DB4B73443E2FE811F30A59581DD1311D4416B531324538FFC80 + 09B5149C5E525007750146559FEFB33B78CB99B352DA8DBD3833864AA170A49A + 001DF11942A1BF1445E3C3ADF8B528FAE7CFC5DE437B4A5513A05174E213B111 + F1029657361A0A67C5023E005FB10AFEE73DE6CD0000000049454E44AE426082} + Name = 'PngImage20' + Background = clWindow + end> + Top = 112 + Bitmap = {} + end + inherited JvFormStorage: TJvFormStorage [8] + Top = 152 + end + inherited JvAppRegistryStorage: TJvAppRegistryStorage [9] + Top = 152 + end +end diff --git a/Modulos/Montajes/Cliente/uEditorMontaje.pas b/Modulos/Montajes/Cliente/uEditorMontaje.pas new file mode 100644 index 0000000..a7dddb7 --- /dev/null +++ b/Modulos/Montajes/Cliente/uEditorMontaje.pas @@ -0,0 +1,235 @@ +unit uEditorMontaje; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uEditorDBItem, ToolWin, ComCtrls, JvExControls, JvComponent, + uViewMontaje, uBizMontajes, JvNavigationPane, ActnList, + uEditorBase, StdActns, TB2Dock, TB2Toolbar, TBX, ImgList, PngImageList, + TB2Item, uEditorItem, DB, uDADataTable, uEditorDBBase, JvFormAutoSize, + uDAScriptingProvider, uDACDSDataTable, StdCtrls, pngimage, ExtCtrls, + TBXDkPanels, JvButton, AppEvnts, uCustomView, uViewBase, uViewMensaje, + JvAppStorage, JvAppRegistryStorage, JvFormPlacement, + uViewMontajes, Grids, DBGrids, uViewGrid, + uBizPedidosMontaje, uViewPedidosMontaje, + uBizArticulosMontaje, uViewArticulosMontaje, uViewFichaBeneficiosMontaje, + JvComponentBase; + +type + IEditorMontaje = interface(IEditorDBItem) + ['{FDE5A2F2-8C68-49CA-917B-C97E618CF9E9}'] + function GetMontaje: IBizMontaje; + procedure SetMontaje(const Value: IBizMontaje); + property Montaje: IBizMontaje read GetMontaje write SetMontaje; + end; + + TfEditorMontaje = class(TfEditorDBItem, IEditorMontaje) + pagPedidos: TTabSheet; + frViewPedidosMontaje: TfrViewPedidosMontaje; + pagArticulos: TTabSheet; + frViewArticulosMontaje: TfrViewArticulosMontaje; + pagFichaBeneficios: TTabSheet; + frViewFichaBeneficiosMontaje: TfrViewFichaBeneficiosMontaje; + frViewMontaje1: TfrViewMontaje; + TBXSeparatorItem14: TTBXSeparatorItem; + TBXItem7: TTBXItem; + actEtiquetas: TAction; + procedure FormShow(Sender: TObject); + procedure frViewDatosYSeleccionContactoedtlNombrePropertiesChange( + Sender: TObject); + procedure frViewPedidosMontajeactRecibirPedidoExecute(Sender: TObject); + procedure frViewPedidosMontajeactRecibirPedidoUpdate(Sender: TObject); + procedure actEtiquetasExecute(Sender: TObject); + private + FMontaje: IBizMontaje; + FViewMontaje : IViewMontaje; + FPedidosMontaje : IBizPedidosMontaje; + FArticulosMontaje : IBizArticulosMontaje; + FFichaBeneficiosMontaje : IBizFichaBeneficiosMontaje; + protected + function GetModified: Boolean; override; + function GetMontaje: IBizMontaje; virtual; + procedure SetMontaje(const Value: IBizMontaje); virtual; + + function GetViewMontaje: IViewMontaje; + procedure SetViewMontaje(const Value: IViewMontaje); + property ViewMontaje: IViewMontaje read GetViewMontaje write + SetViewMontaje; + public + property Montaje: IBizMontaje read GetMontaje write SetMontaje; + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + end; + +implementation + +{$R *.dfm} + +uses + uCustomEditor, uDataModuleMontajes, uDataModuleBase, uEditorUtils, + uBizPedidosProveedor, uDataTableUtils, uAsistenteEtiquetasMontajes; + +function ShowEditorMontaje (ABizObject : TDADataTableRules): TModalResult; +var + AEditor: TfEditorMontaje; +begin + AEditor := TfEditorMontaje.Create(Application); + try + AEditor.Montaje := (ABizObject as IBizMontaje); + Result := AEditor.ShowModal; + finally + AEditor.Release; + end; +end; + +{ +******************************* TfEditorMontaje ******************************* +} +function TfEditorMontaje.GetMontaje: IBizMontaje; +begin + Result := FMontaje; +end; + +function TfEditorMontaje.GetViewMontaje: IViewMontaje; +begin + Result := FViewMontaje; +end; + +procedure TfEditorMontaje.SetMontaje(const Value: IBizMontaje); +begin + FMontaje := Value; + dsDataTable.DataTable := FMontaje.DataTable; + + if Assigned(FViewMontaje) and Assigned(Montaje) then + begin + FViewMontaje.Montaje := Montaje; + frViewFichaBeneficiosMontaje.FichaBeneficiosMontaje := Montaje.FichaBeneficios; + end; + + FPedidosMontaje := DarPedidosMontaje(FMontaje.CODIGO); + FPedidosMontaje.DataTable.Active := True; + frViewPedidosMontaje.CodigoMontaje := FMontaje.CODIGO; + frViewPedidosMontaje.PedidosMontaje := FPedidosMontaje; + + FArticulosMontaje := DarArticulosMontaje(FMontaje.CODIGO); + FArticulosMontaje.DataTable.Active := True; + frViewArticulosMontaje.CodigoMontaje := FMontaje.CODIGO; + frViewArticulosMontaje.ArticulosMontaje := FArticulosMontaje; + +// FFichaBeneficiosMontaje := dmMontajes.GetFichaBeneficios(FMontaje.CODIGO); +// FFichaBeneficiosMontaje.DataTable.Active := True; +// frViewFichaBeneficiosMontaje.FichaBeneficiosMontaje := FFichaBeneficiosMontaje; +end; + +procedure TfEditorMontaje.SetViewMontaje(const Value: IViewMontaje); +begin + FViewMontaje := Value; + + if Assigned(FViewMontaje) and Assigned(Montaje) then + FViewMontaje.Montaje := Montaje; +end; + +procedure TfEditorMontaje.FormShow(Sender: TObject); +begin + inherited; + + if not Assigned(FViewMontaje) then + raise Exception.Create('No hay ninguna vista asignada'); + + if not Assigned(Montaje) then + raise Exception.Create('No hay ningún almacén asignado'); + + Montaje.DataTable.Active := True; +{ FViewMontaje.ShowEmbedded(pagGeneral); + FViewMontaje.SetFocus;} +end; + +destructor TfEditorMontaje.Destroy; +begin + FViewMontaje := NIL; + FMontaje := NIL; + + FPedidosMontaje := NIL; + FArticulosMontaje := NIL; +// FFichaBeneficiosMontaje := NIL; + + inherited; +end; + +constructor TfEditorMontaje.Create(AOwner: TComponent); +begin + inherited; +// ViewMontaje := CreateView(TfrViewMontaje) as IViewMontaje; + ViewMontaje := frViewMontaje1; +end; + +procedure TfEditorMontaje.frViewDatosYSeleccionContactoedtlNombrePropertiesChange( + Sender: TObject); +begin + inherited; + if Length(frViewMontaje1.frViewDatosYSeleccionContacto.edtlNombre.Text) = 0 then + JvNavPanelHeader.Caption := 'Nuevo montaje' + else + JvNavPanelHeader.Caption := 'Montaje para ' + + frViewMontaje1.frViewDatosYSeleccionContacto.edtlNombre.Text; + Caption := JvNavPanelHeader.Caption; +end; + +procedure TfEditorMontaje.frViewPedidosMontajeactRecibirPedidoExecute(Sender: TObject); +var + APedido: IBizPedidosMontaje; +begin + inherited; + + (frViewPedidosMontaje as IViewPedidosMontaje).SyncFocusedRecordsFromGrid; + + if FPedidosMontaje.SITUACION = SITUACION_RECIBIDO then + begin + showmessage('El pedido seleccionado ya esta totalmente recibido'); + exit; + end; + + try + FArticulosMontaje.RecibirArticulos(FPedidosMontaje, 0); + finally + (frViewPedidosMontaje as IViewPedidosMontaje).RefreshGrid; + (frViewPedidosMontaje as IViewPedidosMontaje).SyncFocusedRecordsFromDataSet; + end; +end; + +procedure TfEditorMontaje.frViewPedidosMontajeactRecibirPedidoUpdate(Sender: TObject); +begin + inherited; + if Assigned(FPedidosMontaje.DataTable) then + (Sender as TAction).Enabled := (not FPedidosMontaje.DataTable.IsEmpty) + else + (Sender as TAction).Enabled := False; +end; + +function TfEditorMontaje.GetModified: Boolean; +var + bCambiado : Boolean; +begin + bCambiado := inherited GetModified; + + if not bCambiado then + begin + bCambiado := (frViewFichaBeneficiosMontaje.DADataSource.DataTable.State = dsEdit) or + DeltaValuesAreDifferent(frViewFichaBeneficiosMontaje.DADataSource.DataTable.Delta); + end; + + Result := bCambiado; +end; + +procedure TfEditorMontaje.actEtiquetasExecute(Sender: TObject); +begin + inherited; + VerAsistenteEtiquetasMontajes(FMontaje); +end; + +initialization + RegisterEditor(IBizMontaje, ShowEditorMontaje, etItem); + +end. + diff --git a/Modulos/Montajes/Cliente/uEditorMontajes.ddp b/Modulos/Montajes/Cliente/uEditorMontajes.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Montajes/Cliente/uEditorMontajes.ddp differ diff --git a/Modulos/Montajes/Cliente/uEditorMontajes.dfm b/Modulos/Montajes/Cliente/uEditorMontajes.dfm new file mode 100644 index 0000000..428eb4e --- /dev/null +++ b/Modulos/Montajes/Cliente/uEditorMontajes.dfm @@ -0,0 +1,1402 @@ +inherited fEditorMontajes: TfEditorMontajes + Left = 309 + Top = 226 + Width = 750 + Height = 500 + Caption = 'Lista de montajes' + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + Width = 742 + Caption = 'Lista de montajes' + inherited Image1: TImage + Left = 715 + Picture.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001800 + 0000180806000000E0773DF8000000097048597300000B3A00000B3A01647F57 + 0D0000000467414D410000B18E7CFB5193000002874944415478DAB5944D6813 + 4114C7DF50C47E585BA2D0B095924095A51E4CA5CA2208D58BE9AD154F06CA56 + 5452A1A224E736F4165088F45222480881DE6C901EA4274F122FC90A3DE45068 + 4C2FA188C4A6F9EA6EB2CE5BBBC36E13936CA40F1E339999FC7FFBE63F334455 + 5538CB20670EE864D1FA7AC2471B81E6384DD7C9B044739766C2EB15DE760C08 + 04246349F18101A53438A83CE6790EC6C62E82D339C4268B451962B1644B5053 + C0CACA0DF63B184C42A5D20399CC1736B6BC2C6A2004E8B9BD9DC629FF690831 + 7E7520E022B4EFA1DD18428E8E6428148E211CDE8DD3B9B993B5DABCDF3F6102 + 944A0AA4523F1A20C4F8D50B0BEF2012798510D5E79BD0C4313736B21ADC58E5 + E2E2559378B9FCB7CD660F80024853000642D6D65E3071CCADAD1C033C7BFE44 + 1DE55EC2FCBCA3411C7367A704767B85556102C8721DAAD59A49DC66EB856834 + A301425E507F2AD7A176E91E9CEF7B0A333323267145A9433E9F6F345914439B + 3E9F6796E32E306104A1389AB9B7F75B83B8875D50EBE761F36B11F2E7EEC395 + D1D726F31D8E69AD32FD3FABAB115681872E7C8490C3C3636DF1FE7E8196DACF + 8EA60E79303205A4AA40F0130797C7DDF03EFC81E8772597EB7D83000C141704 + C16F344E83D0EEAC3EE676BB9B4286732E887EE321994A9B8E396E35027471F4 + A1E54DA65BA7FE0B623C5546006E992EDEF4A2E981860A3C2D5D0A811548DB9B + 6C14770922A43312843E8B5D43483BF14A4E82047D05A44A7795904EC47543AD + 7A6202B413EFD6786245BC1B08B12A6E1542961EDAD4E93BD7A047FE0EF6BE72 + 47E2ED2078D1F055665B74739257EFF2BFC03974D0B1782B087D91E314306732 + 79EAF62DB52E172C89378344221F9978C331FD9F40086D4CE2187F00FADE10E2 + 8785B5A40000000049454E44AE426082} + end + end + inherited TBXDock: TTBXDock + Width = 742 + inherited tbxFiltro: TTBXToolbar + Left = 411 + inherited tbxEditFiltro: TTBXEditItem + EditOptions = [tboUseEditWhenVertical] + end + end + end + inherited StatusBar: TStatusBar + Top = 447 + Width = 742 + end + inline frViewBarraSeleccion: TfrViewBarraSeleccion [3] + Left = 0 + Top = 410 + Width = 742 + Height = 37 + Align = alBottom + AutoScroll = False + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 3 + Visible = False + ReadOnly = False + inherited pnlSeleccion: TPanel + Top = 0 + Width = 742 + inherited bSeleccionar: TButton + Left = 581 + end + inherited bCancelar: TButton + Left = 660 + end + end + inherited ActionListSeleccion: TActionList + inherited actSeleccionar: TAction + OnExecute = frViewBarraSeleccionactSeleccionarExecute + end + end + end + inherited EditorActionList: TActionList [4] + inherited actNuevo: TAction + ImageIndex = 22 + OnExecute = actNuevoExecute + end + inherited actDuplicar: TAction + Visible = False + end + end + inherited SmallImages: TPngImageList [5] + 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 + 61000000097048597300000B1300000B1301009A9C18000001604944415478DA + A5923F48C34014C6DF81B838A88B145DD22D20D8E8505737330A5D9CE4BA650C + 34739BEE0AE7E658B277A8939364B5A0C6A19231500417A14D177539EF1D5EB8 + E64F1D3C7821B9F7BE1FDFFB08E19CC37F0E512FBE1FE9244FD465C9BCE7FBD6 + 5529000FA58C33E60063B1005A04BFF1BEDBA550AF6F42BFFF5280C8A1C1C025 + CA45ABB507C3E19B04FCDE75D04DAFD780F9FC4BC275880418C649E6220F5060 + D735613A5DC81A8FD3AC4F946D6C4C261FD06CD62008926C40B4F8AC164930CE + A4E937DC3F8E6077E354BA4040470FCCB66D5186B4BAF56E814329C44904EC8E + CAFE6C6D013BDBEB08280D51C274C89949210C23081E4C787A8E899E49BB7DBD + 0CA882DC8ECEA558CF244942C0F00B00DC196D3B37D6D23A7AA895FF8112E3CE + 683BFA647F42489518773E68385E7E9D3C845489D5CE6599E810B24A5C166CFE + 3F918FA343935F1CC7A5E23C44D4AB487FBF900142AAC4ABCE0F9C32EE2C4B99 + 4F200000000049454E44AE426082} + Name = 'PngImage22' + Background = clWindow + end> + Bitmap = {} + end + inherited LargeImages: TPngImageList [6] + 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 + F80000000970485973000017120000171201679FD2520000033B4944415478DA + DD957F68565518C73F77EF0FDFBDB9B94DC1214D5BB2FD61A3B0399236D66424 + 96A32874A1329D2D322C7F24686C0D539318FE964419E29F6AFF5810D982821C + BA0D57292846A4AD36B7D770BEEFF6FEBA7BEF3DF7DEB773A72EDFDE3BD71FEE + 1F0F3CDC7378CEF97E9EE73CE79CAB24934926B3298F07E0EB73BF4E0AE5B5AA + 79CA18400EC61C86162270F93043033D986692E9454B99337F459A80695AA37E + FB6B58D6BDF1DDFE2BAB3EE2D277479D01033FED440FFC4E389C60381263C474 + 31B7BC9EE205B5FF4BDCFED6AC6E7406F47535A1057AE5242FD1689C585C9516 + 27AA06A9ACFB9C278B5F1A136F3A2D1CB766D3E2115E5FFB713A203E78893F2F + 1C401D1A91C571CBA9493C2E055DE80C066F93F55429E5CB0F3D34F251B392BC + D9D09C0E08F67C457FF7492CCD853FD38FCFEB41C142681AAAAA72FD763F351F + 768E8A08C364D797CEC57DAF2A46EDBAEDCE80E16B67F0E1C7E3F64821032104 + 42D7D125E47AD8A2BAE1F4B8D15B7666327A43F657AEDF910E880C7413BAF205 + 198961321419BB5C681806868444E30922D32B295DBC7E42717B5CB761977391 + FBBB5AD16E76CAED37B17DA66167A13310715358BD8D1905CF4C286E5BFDE6DD + CE806B7D17E8ED68656622814716591882802AB893534259453D3373674F286E + FBDED9F2593AE07C7F072DDDFBE9BBF51BCBF4222AF29F261009D13674836EF3 + 0ED5854B787FE106F29E98312AD47CF01BC7226F5C5DC5BAAD2DA980E7E64F65 + 5FE711DA035DA8DE30B9A129AC29A9E5AFE19B7C1B6C079F0F821994E79552B7 + E06D0AB2E7A4446E9FAA0733FBA0716F2A80593DECF9F118514610D3E2E8468C + BC58169A5710F70B7C46164AC84B70B097A5C5AFB2B5E2133E3DDAE698C1BB6F + 95B3A9797F2A2090DDC1DE1F5AC9F6E5626427107E699ABC702E175E251377DC + 872BECE3EF500F453905B4BE71EAA1176DCBF603A90033FF0F769FDD879600F7 + 340F56A620E936E569525074372ED5432C1C269618A4A6A4868D658DEC39FEBD + 63060DCB5F4C07BCFC4211576F5DE5F8C513FC7CE3171991B0B5EDD7027999A5 + 2964E678D95CD6C4B3F9A5E3467EBFA5011695CD1D77D1442FE77FC51D0195CF + 173E327147C08E96238FFA87F62F6032DBA403FE011B7940FEE55D65A3000000 + 0049454E44AE426082} + Name = 'PngImage20' + Background = clWindow + end> + end + inherited JvFormStorage: TJvFormStorage [7] + end + inherited JvAppRegistryStorage: TJvAppRegistryStorage [8] + end + inherited dsDataTable: TDADataSource [9] + end +end diff --git a/Modulos/Montajes/Cliente/uEditorMontajes.pas b/Modulos/Montajes/Cliente/uEditorMontajes.pas new file mode 100644 index 0000000..7055204 --- /dev/null +++ b/Modulos/Montajes/Cliente/uEditorMontajes.pas @@ -0,0 +1,199 @@ +unit uEditorMontajes; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uEditorBase, uEditorGrid, ToolWin, ComCtrls, JvExControls, JvComponent, + JvNavigationPane, uViewMontajes, uBizMontajes, ActnList, DBActns, uViewGrid, + Menus, uDataModuleBase, ImgList, PngImageList, TB2Dock, TB2Toolbar, TBX, + TB2Item, StdActns, TB2ExtItems, TBXExtItems, TB2MRU, DB, uDADataTable, + JvFormAutoSize, uDAScriptingProvider, uDACDSDataTable, JvAppStorage, + JvAppRegistryStorage, JvFormPlacement, ExtCtrls, uCustomView, uViewBase, + uViewBarraSeleccion, JvComponentBase, pngimage; + +type + IEditorMontajes = interface(IEditorGrid) + ['{607F821D-E790-4F80-B095-CE1C34B42E3A}'] + function GetMontajes: IBizMontaje; + procedure SetMontajes(const Value: IBizMontaje); + property Montajes: IBizMontaje read GetMontajes write SetMontajes; + + function GetSelectionBarVisible: Boolean; + procedure SetSelectionBarVisible(const Value: Boolean); + property SelectionBarVisible : Boolean read GetSelectionBarVisible write + SetSelectionBarVisible; + end; + + TfEditorMontajes = class(TfEditorGrid, IEditorMontajes) + frViewBarraSeleccion: TfrViewBarraSeleccion; + procedure FormShow(Sender: TObject); + procedure actNuevoExecute(Sender: TObject); + procedure actModificarExecute(Sender: TObject); + procedure actEliminarExecute(Sender: TObject); + procedure frViewBarraSeleccionactSeleccionarExecute(Sender: TObject); + private + FMontajes: IBizMontaje; + protected + function GetMontajes: IBizMontaje; virtual; + procedure SetMontajes(const Value: IBizMontaje); virtual; + procedure SetViewGrid(const Value: IViewGrid); override; + function GetSelectionBarVisible: Boolean; virtual; + procedure SetSelectionBarVisible(const Value: Boolean); virtual; + public + property SelectionBarVisible : Boolean read GetSelectionBarVisible write + SetSelectionBarVisible; + property Montajes: IBizMontaje read GetMontajes write SetMontajes; + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + end; + +implementation + +uses + uCustomEditor, uDataModuleMontajes, + uEditorMontaje, uEditorDBBase, uEditorUtils, + cxGrid, cxGridCustomTableView, uDBSelectionList, uBizPresupuestosCliente, + uDataModulePresupuestos; + +{$R *.dfm} + +function ShowEditorMontajes (ABizObject : TDADataTableRules): TModalResult; +var + AEditor: TfEditorMontajes; +begin + AEditor := TfEditorMontajes.Create(Application); + try + AEditor.Montajes := (ABizObject as IBizMontaje); + Result := AEditor.ShowModal; + finally + AEditor.Release; + end; +end; + +function ShowSelectEditorMontajes (ABizObject : TDADataTableRules) : TModalResult; +var + AEditor: TfEditorMontajes; +begin + AEditor := TfEditorMontajes.Create(Application); + try + AEditor.Montajes := (ABizObject as IBizMontaje); + AEditor.SelectionBarVisible := True; + Result := AEditor.ShowModal; + finally + AEditor.Release; + end; +end; + +{ +****************************** TfEditorMontajes ******************************* +} +procedure TfEditorMontajes.FormShow(Sender: TObject); +begin + inherited; + + if not Assigned(ViewGrid) then + raise Exception.Create('No hay ninguna vista asignada'); + + if not Assigned(Montajes) then + raise Exception.Create('No hay ningún Montaje asignado'); + + Montajes.DataTable.Active := True; +end; + +function TfEditorMontajes.GetMontajes: IBizMontaje; +begin + Result := FMontajes; +end; + +procedure TfEditorMontajes.SetMontajes(const Value: IBizMontaje); +begin + FMontajes := Value; + dsDataTable.DataTable := FMontajes.DataTable; + if Assigned(ViewGrid) then + (ViewGrid as IViewMontajes).Montajes := Montajes; +end; + +procedure TfEditorMontajes.actNuevoExecute(Sender: TObject); +var + APresupuesto : IBizPresupuestos; +begin + inherited; + + APresupuesto := dmPresupuestos.GetPresupuestosSinMontaje; + try + if APresupuesto.ShowForSelect = mrOK then + begin + APresupuesto := dmPresupuestos.GetItemsSeleccionados(APresupuesto); + APresupuesto.DataTable.Active := True; + dmMontajes.NuevoMontaje(Montajes, APresupuesto); + Montajes.Show; + end; + finally + APresupuesto := NIL; + ViewGrid.RefreshGrid; + ViewGrid.SyncFocusedRecordsFromDataSet; + end; +end; + +procedure TfEditorMontajes.actModificarExecute(Sender: TObject); +begin + inherited; + Montajes.Show; + ViewGrid.RefreshGrid; + ViewGrid.SyncFocusedRecordsFromDataSet; +end; + +procedure TfEditorMontajes.SetViewGrid(const Value: IViewGrid); +begin + inherited; + if Assigned(ViewGrid) and Assigned(Montajes) then + (ViewGrid as IViewMontajes).Montajes := Montajes; +end; + +destructor TfEditorMontajes.Destroy; +begin + FMontajes := NIL; + inherited; +end; + +function TfEditorMontajes.GetSelectionBarVisible: Boolean; +begin + Result := frViewBarraSeleccion.Visible +end; + +procedure TfEditorMontajes.SetSelectionBarVisible(const Value: Boolean); +begin + frViewBarraSeleccion.Visible := True; + ViewGrid.OnDblClick := frViewBarraSeleccion.actSeleccionar.OnExecute; +end; + +procedure TfEditorMontajes.frViewBarraSeleccionactSeleccionarExecute( + Sender: TObject); +begin + inherited; + ViewGrid.SyncFocusedRecordsFromGrid; + ModalResult := mrOK; +end; + +constructor TfEditorMontajes.Create(AOwner: TComponent); +begin + inherited; + ViewGrid := CreateView(TfrViewMontajes) as IViewMontajes; +end; + +procedure TfEditorMontajes.actEliminarExecute(Sender: TObject); +begin + if (MessageDlg('¿Desea borrar este montaje?', mtConfirmation, [mbYes, mbNo], 0) = mrYes) then + begin + inherited; + ViewGrid.RefreshGrid; + end; +end; + +initialization + RegisterEditor(IBizMontaje, ShowEditorMontajes, etItems); + RegisterEditor(IBizMontaje, ShowSelectEditorMontajes, etSelectItems); + +end. + diff --git a/Modulos/Montajes/Cliente/uPluginControllerMontajes.dfm b/Modulos/Montajes/Cliente/uPluginControllerMontajes.dfm new file mode 100644 index 0000000..acd6345 --- /dev/null +++ b/Modulos/Montajes/Cliente/uPluginControllerMontajes.dfm @@ -0,0 +1,141 @@ +object ModuleMontajes: TModuleMontajes + OldCreateOrder = True + Description = 'Montajes' + ModuleMenu = MainMenu + ModuleName = 'Montajes' + SmallImages = SmallImages + LargeImages = LargeImages + Author = 'Rodax Software' + Version = '1.0.0' + Left = 691 + Top = 507 + Height = 252 + Width = 401 + object LargeImages: TPngImageList + Height = 24 + Width = 24 + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F8000000097048597300000B3A00000B3A01647F570D000002874944415478DA + B5944D68134114C7DF50C47E585BA2D0B095924095A51E4CA5CA2208D58BE9AD + 154F06CA565452A1A224E736F4165088F45222480881DE6C901EA4274F122FC9 + 0A3DE450684C2FA188C4A6F9EA6EB2CE5BBBC36E13936CA40F1E339999FC7FFB + E63F3344555538CB20670EE864D1FA7AC2471B81E6384DD7C9B044739766C2EB + 15DE760C0804246349F18101A53438A83CE6790EC6C62E82D339C4268B451962 + B1644B5053C0CACA0DF63B184C42A5D20399CC1736B6BC2C6A2004E8B9BD9DC6 + 29FF6908317E7520E022B4EFA1DD18428E8E6428148E211CDE8DD3B9B993B5DA + BCDF3F6102944A0AA4523F1A20C4F8D50B0BEF2012798510D5E79BD0C4313736 + B21ADC58E5E2E2559378B9FCB7CD660F80024853000642D6D65E3071CCADAD1C + 033C7BFE441DE55EC2FCBCA3411C7367A704767B85556102C8721DAAD59A49DC + 66EB856834A301425E507F2AD7A176E91E9CEF7B0A333323267145A9433E9F6F + 345914439B3E9F6796E32E306104A1389AB9B7F75B83B8875D50EBE761F36B11 + F2E7EEC395D1D726F31D8E69AD32FD3FABAB115681872E7C8490C3C3636DF1FE + 7E8196DACF8EA60E79303205A4AA40F0130797C7DDF03EFC81E8772597EB7D83 + 000C141704C16F344E83D0EEAC3EE676BB9B4286732E887EE321994A9B8E396E + 35027471F4A1E54DA65BA7FE0B623C5546006E992EDEF4A2E981860A3C2D5D0A + 811548DB9B6C14770922A43312843E8B5D43483BF14A4E82047D05A44A779590 + 4EC47543AD7A6202B413EFD6786245BC1B08B12A6E1542961EDAD4E93BD7A047 + FE0EF6BE7247E2ED2078D1F055665B74739257EFF2BFC03974D0B1782B087D91 + E31430673279EAF62DB52E172C89378344221F9978C331FD9F40086D4CE2187F + 00FADE10E28785B5A40000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end> + Left = 232 + Top = 16 + Bitmap = {} + end + object ModuleActionList: TActionList + Images = LargeImages + Left = 40 + Top = 72 + object actMontajes: TAction + Category = 'Montajes' + Caption = 'Montajes' + ImageIndex = 0 + OnExecute = actMontajesExecute + end + end + object MainMenu: TMainMenu + Images = LargeImages + Left = 40 + Top = 16 + object menu: TMenuItem + Tag = 300 + Caption = '&Montajes' + GroupIndex = 1 + ImageIndex = 0 + OnClick = actMontajesExecute + object Almacenes1: TMenuItem + Tag = 1000 + Action = actMontajes + end + end + end + object SmallImages: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000B1300000B1301009A9C18000001604944415478DA + A5923F48C34014C6DF81B838A88B145DD22D20D8E8505737330A5D9CE4BA650C + 34739BEE0AE7E658B277A8939364B5A0C6A19231500417A14D177539EF1D5EB8 + E64F1D3C7821B9F7BE1FDFFB08E19CC37F0E512FBE1FE9244FD465C9BCE7FBD6 + 5529000FA58C33E60063B1005A04BFF1BEDBA550AF6F42BFFF5280C8A1C1C025 + CA45ABB507C3E19B04FCDE75D04DAFD780F9FC4BC275880418C649E6220F5060 + D735613A5DC81A8FD3AC4F946D6C4C261FD06CD62008926C40B4F8AC164930CE + A4E937DC3F8E6077E354BA4040470FCCB66D5186B4BAF56E814329C44904EC8E + CAFE6C6D013BDBEB08280D51C274C89949210C23081E4C787A8E899E49BB7DBD + 0CA882DC8ECEA558CF244942C0F00B00DC196D3B37D6D23A7AA895FF8112E3CE + 683BFA647F42489518773E68385E7E9D3C845489D5CE6599E810B24A5C166CFE + 3F918FA343935F1CC7A5E23C44D4AB487FBF900142AAC4ABCE0F9C32EE2C4B99 + 4F200000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end> + PngOptions = [pngBlendOnDisabled, pngGrayscaleOnDisabled] + Left = 308 + Top = 16 + Bitmap = {} + end + object ExtraImages: TPngImageList + Height = 28 + Width = 28 + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D494844520000001C0000001C0806000000720DDF + 94000000097048597300004E2000004E2001167D99DE000002C04944415478DA + E5D54D6813411400E0B788D816B1A5150CA99404AA2CF5E02AFE2C82503DA5B7 + 14BD054A2A6A130F5549CE6DDA9BD0424A2F69041B42A517B1417A909E3C497A + 3129F49043A131BD8422129BE6A7CDCF3A6F935932C96E9AB0928B0F1E43B233 + FBCD4CDE4C384992A093C1FD1F20C7712D0FF0F9C22ED2882487490AD5AFA324 + F748861D0E71516BAC6CB50356B1059E37C2D0D025309B7B99E72B2BDB4D6155 + D0E389D6EE7188E4278F47F85805A564B20BE2F16F4A879919BB0C67320525B7 + B662F8C85D8F6A82B3B33795CF73733B0C5A1BA4AF8D346B6EF7080366B34588 + 447E36A00A485E2A555E2070F425881E1F17209D3E05BF7F2F449E8DAB6D334E + D0E9BCC660B95CA54D240E81809C2A88C0E4E41204026F10955CAE1119C35C5F + 4FC893A9C75EBC7C260D1AA76162C2D48061EEEE66C160C82BAB6C0031105D5E + 7EA560989B9BC906D0EB00E957F10694061EC185EEE730367685C18AC532A452 + 2966825353F739062C14CA70725262B0FEFE2E0806E30C8898C803947A78D8F8 + 9E81D4F9C77075F02D534C26D3A8BC722CA8FDFD3F303F1F80D5D5D71590AC6A + C3E5B2598DC68B0A8430627400452926887652186BC09D14E1DD17235C1EB6C0 + 7BFF078E1E1F52CD0B086220268AA29BAC7091AED04666F714D1A3A353B9D3C1 + 419AEC7F8F72DE286AE913642C168F423E1985303901C16D1E7E4462CC96631D + 204831FC1D996381D58928E96BA5832C168B2A6AE5ED4D310AE216534CF31CD6 + 86DDEE95B4D0BEA4A08969454B575B3354EDA8E8026981F8A25EF8176853B0B6 + 1AB140BC5FEDBA514DB01EA30512CDEB5BA92AA885D102D1F39B368067617A0B + 89015BC5F4A00AB8E4E4DAC2CE42F176C17F1D4D70FAC98034FAE03A9C2BEC80 + A13BD712D60C2577738880E39A206EE9ED5BBCF490FF0DE6DEC3B66F905A3410 + F8AC8AA916CD9D7B77A57221DD16568B92461363C04E46C7C1BF0E73BFE74CCD + 6AD20000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end> + Left = 232 + Top = 80 + Bitmap = {} + end +end diff --git a/Modulos/Montajes/Cliente/uPluginControllerMontajes.pas b/Modulos/Montajes/Cliente/uPluginControllerMontajes.pas new file mode 100644 index 0000000..063d72e --- /dev/null +++ b/Modulos/Montajes/Cliente/uPluginControllerMontajes.pas @@ -0,0 +1,71 @@ +unit uPluginControllerMontajes; + +interface + +uses + uModuleController, uInterfaces, uHostManager, Menus, Classes, ActnList, + ImgList, Controls, PngImageList; + +type + IMCMontajes = interface(IInterface) + ['{A0E73296-EAE8-4528-93EB-953484D484EB}'] + end; + + TModuleMontajes = class(TModuleController, IMCMontajes) + actMontajes: TAction; + menu: TMenuItem; + ExtraImages: TPngImageList; + LargeImages: TPngImageList; + MainMenu: TMainMenu; + ModuleActionList: TActionList; + SmallImages: TPngImageList; + procedure actMontajesExecute(Sender: TObject); + public + end; + +implementation + +{$R *.dfm} + +uses + Forms, Dialogs, uGUIBase, SysUtils, uDataModuleMontajes, + uBizMontajes, uEditorMontajes; + +function GetModule : TModuleController; +begin + Result := TModuleMontajes.Create(NIL); +end; + +exports + GetModule name GET_MODULE_FUNC; + +{ +******************************* TModuleContactos ******************************* +} + +procedure TModuleMontajes.actMontajesExecute(Sender: TObject); +var + aObj: IEditorMontajes; + AMontajes : IBizMontaje; +begin + AMontajes := dmMontajes.GetItems; + aObj := TfEditorMontajes.Create(Application); + try + with aObj do + begin + Montajes := AMontajes; + ShowEmbedded; + end; + finally + AMontajes := NIL; + aObj := NIL; + end; +end; + +initialization + RegisterModuleClass(TModuleMontajes); + +finalization + UnRegisterModuleClass(TModuleMontajes); + +end. diff --git a/Modulos/Montajes/Cliente/uViewArticulosMontaje.ddp b/Modulos/Montajes/Cliente/uViewArticulosMontaje.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Montajes/Cliente/uViewArticulosMontaje.ddp differ diff --git a/Modulos/Montajes/Cliente/uViewArticulosMontaje.dfm b/Modulos/Montajes/Cliente/uViewArticulosMontaje.dfm new file mode 100644 index 0000000..ca00372 --- /dev/null +++ b/Modulos/Montajes/Cliente/uViewArticulosMontaje.dfm @@ -0,0 +1,135 @@ +inherited frViewArticulosMontaje: TfrViewArticulosMontaje + inherited cxGrid: TcxGrid + Top = 25 + Height = 245 + inherited cxGridView: TcxGridDBTableView + OnSelectionChanged = cxGridViewSelectionChanged + DataController.KeyFieldNames = 'CODIGO' + DataController.Summary.FooterSummaryItems = < + item + Kind = skCount + end> + OptionsBehavior.PullFocusing = True + OptionsSelection.MultiSelect = True + object cxGridViewRecID: TcxGridDBColumn + DataBinding.FieldName = 'RecID' + Visible = False + end + object cxGridViewCODIGO: TcxGridDBColumn + DataBinding.FieldName = 'CODIGO' + Visible = False + end + object cxGridViewCODIGOALMACEN: TcxGridDBColumn + DataBinding.FieldName = 'CODIGOALMACEN' + Visible = False + end + object cxGridViewCODIGOPEDIDO: TcxGridDBColumn + DataBinding.FieldName = 'CODIGOPEDIDO' + Visible = False + end + object cxGridViewCODIGOMONTAJE: TcxGridDBColumn + DataBinding.FieldName = 'CODIGOMONTAJE' + Visible = False + end + object cxGridViewDESCRIPCION: TcxGridDBColumn + DataBinding.FieldName = 'DESCRIPCION' + end + object cxGridViewREFERENCIAMONTAJE: TcxGridDBColumn + DataBinding.FieldName = 'REFERENCIAMONTAJE' + Visible = False + end + object cxGridViewALMACEN: TcxGridDBColumn + DataBinding.FieldName = 'ALMACEN' + end + end + inherited cxGridLevel: TcxGridLevel + Caption = 'Todos' + end + end + object ToolBar1: TToolBar [1] + Left = 0 + Top = 0 + Width = 443 + Height = 25 + ButtonWidth = 96 + Caption = 'ToolBar1' + EdgeBorders = [] + EdgeInner = esNone + EdgeOuter = esNone + Flat = True + Images = PngImageList + List = True + ShowCaptions = True + TabOrder = 1 + object ToolButton1: TToolButton + Left = 0 + Top = 0 + Action = actAnadir + end + object ToolButton4: TToolButton + Left = 96 + Top = 0 + Action = actQuitar + end + end + inherited ActionList1: TActionList + Images = PngImageList + Left = 8 + Top = 32 + object actAnadir: TAction + Caption = 'Añadir artículo' + ImageIndex = 0 + OnExecute = actAnadirExecute + end + object actQuitar: TAction + Caption = 'Quitar artículo' + ImageIndex = 1 + OnExecute = actQuitarExecute + OnUpdate = actQuitarUpdate + end + end + inherited dxComponentPrinter: TdxComponentPrinter + inherited dxComponentPrinterLink: TdxGridReportLink + ReportDocument.CreationDate = 38673.842406053240000000 + BuiltInReportLink = True + end + end + object PngImageList: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000000F54944415478DA + 6364C002AE56C8FC67201230E23240B9A106C2F9F18381E1C11D86799D1B1892 + E6638AE13700AA70F6256F06E6EDA91003D0C4701B50510256C870E32AC3EC5F + 651003A6638AE1362022006C0B0C800D28C714C369C0C1871404222901CB88AE + 089B66ED8E278CB8029691185BB296430DA82014880633FEFF38C180610BDC80 + 080281689C7EFDFFD99307197E2CB882620BCC006C01CB08D204E3E4C5AA30BC + FBF88DA1B07A39C3E42279B82D200370C602C8009046100069BEF7E42D985EBA + EC08C334CD16B038410340CE0681DC4C3786BB8FDF306CDB728E81E142065151 + 8C1188609A48CDD80D20413308000018D5C3DDD8008BA70000000049454E44AE + 426082} + Name = 'PngImage0' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000000F64944415478DA + 63BC5A21F39F8148A0DDF184115D8C11648072430D84F7E30703C3833B0CF33A + 373024CDC714CB5A8ECF00A8C2D997BC1998B7A7420C4013C36D4045095821C3 + 8DAB0CB37F95410C988E2986DB808800B02D300036A01C530CA701071F121788 + F8C3808800C306700622C8005C518C1C9D380311660021D7E10C441403905C97 + DB070CB00B19A806600B44B80168AE5B705481E1ECC9837043F00614CC75D6D3 + B3E16279B12A0CEF3E7E6328AC5E0E3684A00120D7CDE5DB0DD6080220CDF79E + BC05D34B971D61202AAA8CD3AFFF073B1B087233DD18EE3E7EC3B06DCB39C22E + C00A0C6640A2969830C06900522C0000AF7FD7D8678509020000000049454E44 + AE426082} + Name = 'PngImage1' + Background = clWindow + end> + Left = 40 + Top = 32 + Bitmap = {} + end +end diff --git a/Modulos/Montajes/Cliente/uViewArticulosMontaje.pas b/Modulos/Montajes/Cliente/uViewArticulosMontaje.pas new file mode 100644 index 0000000..52704a8 --- /dev/null +++ b/Modulos/Montajes/Cliente/uViewArticulosMontaje.pas @@ -0,0 +1,178 @@ +unit uViewArticulosMontaje; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewGrid, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, + cxDataStorage, cxEdit, DB, cxDBData, uDADataTable, cxGridLevel, + cxClasses, cxControls, cxGridCustomView, cxGridCustomTableView, + cxGridTableView, cxGridDBTableView, cxGrid, ActnList, Menus, + cxGridBandedTableView, cxGridDBBandedTableView, uBizArticulosMontaje, JvComponent, + JvFormAutoSize, PngImageList, ImgList, dxPSGlbl, dxPSUtl, dxPSEngn, + dxPrnPg, dxBkgnd, dxWrap, dxPrnDev, dxPSCompsProvider, dxPSFillPatterns, + dxPSEdgePatterns, cxIntlPrintSys3, dxPSCore, dxPScxCommon, dxPScxGridLnk, + ComCtrls, ToolWin; + +type + IViewArticulosMontaje = interface(IViewGrid) + ['{64DE44DE-2F59-43E5-88D6-C958F3997A45}'] + function GetCodigoMontaje: Integer; + procedure SetCodigoMontaje(const Value: Integer); + property CodigoMontaje: Integer read GetCodigoMontaje write SetCodigoMontaje; + + function GetArticulosMontaje: IBizArticulosMontaje; + procedure SetArticulosMontaje(const Value: IBizArticulosMontaje); + property ArticulosMontaje: IBizArticulosMontaje read GetArticulosMontaje write SetArticulosMontaje; + end; + + TfrViewArticulosMontaje = class(TfrViewGrid, IViewArticulosMontaje) + PngImageList: TPngImageList; + cxGridViewRecID: TcxGridDBColumn; + cxGridViewCODIGO: TcxGridDBColumn; + cxGridViewDESCRIPCION: TcxGridDBColumn; + cxGridViewREFERENCIAMONTAJE: TcxGridDBColumn; + cxGridViewALMACEN: TcxGridDBColumn; + cxGridViewCODIGOMONTAJE: TcxGridDBColumn; + cxGridViewCODIGOPEDIDO: TcxGridDBColumn; + cxGridViewCODIGOALMACEN: TcxGridDBColumn; + ToolBar1: TToolBar; + ToolButton1: TToolButton; + ToolButton4: TToolButton; + actAnadir: TAction; + actQuitar: TAction; + procedure cxGridViewCODIGOCustomDrawCell( + Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; + AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); + procedure actAnadirExecute(Sender: TObject); + procedure actQuitarExecute(Sender: TObject); + procedure cxGridViewSelectionChanged(Sender: TcxCustomGridTableView); + procedure actQuitarUpdate(Sender: TObject); + protected + FCodigoMontaje: Integer; + FArticulosMontaje: IBizArticulosMontaje; + function GetCodigoMontaje: Integer; + procedure SetCodigoMontaje(const Value: Integer); + function GetArticulosMontaje: IBizArticulosMontaje; + procedure SetArticulosMontaje(const Value: IBizArticulosMontaje); + public + property ArticulosMontaje: IBizArticulosMontaje read GetArticulosMontaje write SetArticulosMontaje; + property CodigoMontaje: Integer read GetCodigoMontaje write SetCodigoMontaje; + end; + +var + frViewArticulosMontaje: TfrViewArticulosMontaje; + +implementation + +uses uBizArticulos, uDataModuleArticulos, uDBSelectionList; + + +{$R *.dfm} + +{ TfrViewArticulosMontaje } + +{ +******************************* TfrViewArticulosMontaje ******************************* +} +function TfrViewArticulosMontaje.GetArticulosMontaje: IBizArticulosMontaje; +begin + Result := FArticulosMontaje; +end; + +procedure TfrViewArticulosMontaje.SetArticulosMontaje(const Value: IBizArticulosMontaje); +begin + FArticulosMontaje := Value; + if Assigned(FArticulosMontaje) then + DADataSource.DataTable := FArticulosMontaje.DataTable; +end; + +procedure TfrViewArticulosMontaje.cxGridViewCODIGOCustomDrawCell( + Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; + AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); +var + R : TRect; +begin + inherited; + R := AViewInfo.ContentBounds; + ACanvas.FillRect(R); + ACanvas.DrawImage(PngImageList, R.Left, R.Top, 0); + ADone := True; +end; + +procedure TfrViewArticulosMontaje.actAnadirExecute(Sender: TObject); +var + AArticulos: IBizArticulosAlmacen; +begin + try + AArticulos:= dmArticulos.GetItemsLibres; + if AArticulos.ShowForSelect = mrOK then + begin + AArticulos.Reservar(CodigoMontaje); + FArticulosMontaje.DataTable.Refresh; + end; + finally + AArticulos := Nil; + Self.RefreshGrid; + Self.SyncFocusedRecordsFromDataSet; + end; +end; + +procedure TfrViewArticulosMontaje.actQuitarExecute(Sender: TObject); +begin + Self.SyncFocusedRecordsFromGrid; + try + FArticulosMontaje.Liberar; + FArticulosMontaje.DataTable.Refresh; + finally + Self.RefreshGrid; + Self.SyncFocusedRecordsFromDataSet; + end; +end; + +procedure TfrViewArticulosMontaje.cxGridViewSelectionChanged(Sender: TcxCustomGridTableView); +var + ABookmark : Pointer; + i, pos: Integer; + +begin + inherited; + + pos := (Sender as TcxGridDBTableView).GetColumnByFieldName('CODIGO').Index; + if FArticulosMontaje <> NIL then + begin + FArticulosMontaje.DataTable.DisableControls; + ABookmark := FArticulosMontaje.DataTable.GetBookMark; + (FArticulosMontaje as ISelectedRowList).SelectedRows.Clear; + for i:=0 to Sender.Controller.SelectedRecordCount-1 do + begin + FArticulosMontaje.DataTable.Locate('CODIGO', Sender.Controller.SelectedRecords[i].Values[pos],[]); + (FArticulosMontaje as ISelectedRowList).SelectedRows.CurrentRowSelected := True; + end; + (FArticulosMontaje as ISelectedRowList).SelectedRows.Count; + FArticulosMontaje.DataTable.GotoBookmark(ABookmark); + FArticulosMontaje.DataTable.FreeBookmark(ABookmark); + FArticulosMontaje.DataTable.EnableControls; + end; +end; + +function TfrViewArticulosMontaje.GetCodigoMontaje: Integer; +begin + Result := FCodigoMontaje; +end; + +procedure TfrViewArticulosMontaje.SetCodigoMontaje(const Value: Integer); +begin + FCodigoMontaje := Value; +end; + +procedure TfrViewArticulosMontaje.actQuitarUpdate(Sender: TObject); +begin + inherited; + if Assigned(DADataSource.DataTable) then + (Sender as TAction).Enabled := (not DADataSource.DataTable.IsEmpty) + else + (Sender as TAction).Enabled := False; +end; + +end. diff --git a/Modulos/Montajes/Cliente/uViewFichaBeneficiosMontaje.ddp b/Modulos/Montajes/Cliente/uViewFichaBeneficiosMontaje.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Montajes/Cliente/uViewFichaBeneficiosMontaje.ddp differ diff --git a/Modulos/Montajes/Cliente/uViewFichaBeneficiosMontaje.dfm b/Modulos/Montajes/Cliente/uViewFichaBeneficiosMontaje.dfm new file mode 100644 index 0000000..c5c34cd --- /dev/null +++ b/Modulos/Montajes/Cliente/uViewFichaBeneficiosMontaje.dfm @@ -0,0 +1,192 @@ +inherited frViewFichaBeneficiosMontaje: TfrViewFichaBeneficiosMontaje + Width = 582 + Height = 437 + inherited cxGrid: TcxGrid + Top = 25 + Width = 582 + Height = 412 + inherited cxGridView: TcxGridDBTableView + DataController.DataModeController.SmartRefresh = False + DataController.DataModeController.SyncMode = True + DataController.KeyFieldNames = 'RecID' + DataController.Options = [dcoAnsiSort, dcoAssignGroupingValues, dcoAssignMasterDetailKeys, dcoSaveExpanding, dcoSortByDisplayText, dcoFocusTopRowAfterSorting, dcoImmediatePost] + DataController.Summary.FooterSummaryItems = < + item + Format = '0 Apartados' + Kind = skCount + Column = cxGridViewDESCRIPCION + end + item + Format = ',0.00 '#8364';-,0.00 '#8364 + Kind = skSum + Column = cxGridViewCOMPRA + end + item + Format = ',0.00 '#8364';-,0.00 '#8364 + Kind = skSum + Column = cxGridViewVENTA + end> + OptionsBehavior.GoToNextCellOnEnter = True + OptionsCustomize.ColumnMoving = False + OptionsCustomize.ColumnSorting = False + OptionsData.Appending = True + OptionsData.CancelOnExit = False + OptionsData.Deleting = True + OptionsData.Editing = True + OptionsData.Inserting = True + OptionsSelection.CellSelect = True + object cxGridViewRecID: TcxGridDBColumn + DataBinding.FieldName = 'RecID' + Visible = False + end + object cxGridViewCODIGOMONTAJE: TcxGridDBColumn + DataBinding.FieldName = 'CODIGOMONTAJE' + Visible = False + end + object cxGridViewNUMCONCEPTO: TcxGridDBColumn + DataBinding.FieldName = 'NUMCONCEPTO' + Visible = False + end + object cxGridViewDESCRIPCION: TcxGridDBColumn + DataBinding.FieldName = 'DESCRIPCION' + Styles.Content = cxStyleOdd + Width = 98 + IsCaptionAssigned = True + end + object cxGridViewMODELO: TcxGridDBColumn + Caption = 'Modelo' + DataBinding.FieldName = 'MODELO' + Width = 98 + end + object cxGridViewPROVEEDOR: TcxGridDBColumn + Caption = 'Proveedor' + DataBinding.FieldName = 'PROVEEDOR' + Width = 90 + end + object cxGridViewCOMPRA: TcxGridDBColumn + Caption = 'Compra' + DataBinding.FieldName = 'COMPRA' + PropertiesClassName = 'TcxCurrencyEditProperties' + Properties.Alignment.Horz = taRightJustify + FooterAlignmentHorz = taRightJustify + HeaderAlignmentHorz = taRightJustify + Width = 78 + end + object cxGridViewVENTA: TcxGridDBColumn + Caption = 'Venta' + DataBinding.FieldName = 'VENTA' + PropertiesClassName = 'TcxCurrencyEditProperties' + Properties.Alignment.Horz = taRightJustify + FooterAlignmentHorz = taRightJustify + HeaderAlignmentHorz = taRightJustify + Width = 77 + end + end + inherited cxGridLevel: TcxGridLevel + Caption = 'Todos' + end + end + object ToolBar1: TToolBar [1] + Left = 0 + Top = 0 + Width = 582 + Height = 25 + ButtonWidth = 63 + Caption = 'ToolBar1' + EdgeBorders = [] + EdgeInner = esNone + EdgeOuter = esNone + Flat = True + Images = PngImageList + List = True + ShowCaptions = True + TabOrder = 1 + object ToolButton1: TToolButton + Left = 0 + Top = 0 + Action = actAnadir + end + object ToolButton2: TToolButton + Left = 63 + Top = 0 + Action = actEliminar + end + object ToolButton7: TToolButton + Left = 126 + Top = 0 + Width = 8 + Caption = 'ToolButton7' + ImageIndex = 5 + Style = tbsSeparator + end + end + inherited ActionList1: TActionList + Images = PngImageList + Left = 8 + Top = 32 + object actAnadir: TAction + Caption = 'A'#241'adir' + ImageIndex = 0 + OnExecute = actAnadirExecute + end + object actEliminar: TAction + Caption = 'Eliminar' + ImageIndex = 1 + OnExecute = actEliminarExecute + end + end + inherited dxComponentPrinter: TdxComponentPrinter + inherited dxComponentPrinterLink: TdxGridReportLink + ReportDocument.CreationDate = 38673.842406053240000000 + BuiltInReportLink = True + end + end + object PngImageList: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000000D04944415478DA + 6364C0062630FCC72A5EC0C0882EC488CB80191909706EDDBA750CAF767D6260 + 5830240DF8F9FB3743EBE6CD780CC011602003409A7F0071EF8E1D10030C30D5 + 31A23B1706609AB1E23F7FC0F4FA2967B01B408CE6A3B76E815D856100319ABF + FFFAC570EEC103540340218D0C92EDECE01AD79E398335ACE106305CC0942CAC + 77871BB0F5E2454820620138A331D3CB09EEECBD57AF929E0E629DADC106FCF9 + F70F1E602419106A67C6F01DE40260805D7AFC9874037C2C0D194EDDBD8B1260 + 241900A6D103178B01000648ED7B1FCA93F30000000049454E44AE426082} + Name = 'PngImage0' + 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 = 'PngImage1' + Background = clWindow + end> + Left = 40 + Top = 32 + Bitmap = {} + end +end diff --git a/Modulos/Montajes/Cliente/uViewFichaBeneficiosMontaje.pas b/Modulos/Montajes/Cliente/uViewFichaBeneficiosMontaje.pas new file mode 100644 index 0000000..9d5daf1 --- /dev/null +++ b/Modulos/Montajes/Cliente/uViewFichaBeneficiosMontaje.pas @@ -0,0 +1,125 @@ +unit uViewFichaBeneficiosMontaje; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewGrid, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, + cxDataStorage, cxEdit, DB, cxDBData, uDADataTable, cxGridLevel, + cxClasses, cxControls, cxGridCustomView, cxGridCustomTableView, + cxGridTableView, cxGridDBTableView, cxGrid, ActnList, Menus, + cxGridBandedTableView, cxGridDBBandedTableView, uBizMontajes, JvComponent, + JvFormAutoSize, PngImageList, ImgList, dxPSGlbl, dxPSUtl, dxPSEngn, + dxPrnPg, dxBkgnd, dxWrap, dxPrnDev, dxPSCompsProvider, dxPSFillPatterns, + dxPSEdgePatterns, cxIntlPrintSys3, dxPSCore, dxPScxCommon, dxPScxGridLnk, + ComCtrls, ToolWin, cxCurrencyEdit, Grids, DBGrids; + +type + IViewFichaBeneficiosMontaje = interface(IViewGrid) + ['{1395A065-A16D-485A-98A9-C27F19290F64}'] + function GetFichaBeneficiosMontaje: IBizFichaBeneficiosMontaje; + procedure SetFichaBeneficiosMontaje(const Value: IBizFichaBeneficiosMontaje); + property FichaBeneficiosMontaje: IBizFichaBeneficiosMontaje read GetFichaBeneficiosMontaje write SetFichaBeneficiosMontaje; + end; + + TfrViewFichaBeneficiosMontaje = class(TfrViewGrid, IViewFichaBeneficiosMontaje) + PngImageList: TPngImageList; + cxGridViewRecID: TcxGridDBColumn; + cxGridViewCODIGOMONTAJE: TcxGridDBColumn; + cxGridViewNUMCONCEPTO: TcxGridDBColumn; + cxGridViewVENTA: TcxGridDBColumn; + cxGridViewCOMPRA: TcxGridDBColumn; + cxGridViewMODELO: TcxGridDBColumn; + cxGridViewPROVEEDOR: TcxGridDBColumn; + cxGridViewDESCRIPCION: TcxGridDBColumn; + ToolBar1: TToolBar; + ToolButton1: TToolButton; + ToolButton2: TToolButton; + ToolButton7: TToolButton; + actAnadir: TAction; + actEliminar: TAction; + procedure cxGridViewCODIGOCustomDrawCell( + Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; + AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); + procedure cxGridViewTcxGridDBDataControllerTcxDataSummaryFooterSummaryItems0GetText( + Sender: TcxDataSummaryItem; const AValue: Variant; + AIsFooter: Boolean; var AText: String); + + procedure actAnadirExecute(Sender: TObject); + procedure actEliminarExecute(Sender: TObject); + protected + FFichaBeneficiosMontaje: IBizFichaBeneficiosMontaje; + function GetFichaBeneficiosMontaje: IBizFichaBeneficiosMontaje; + procedure SetFichaBeneficiosMontaje(const Value: IBizFichaBeneficiosMontaje); + public + property FichaBeneficiosMontaje: IBizFichaBeneficiosMontaje read GetFichaBeneficiosMontaje write SetFichaBeneficiosMontaje; + end; + +var + frViewFichaBeneficiosMontaje: TfrViewFichaBeneficiosMontaje; + +implementation + +uses uBizInformesBase; + + +{$R *.dfm} + +{ TfrViewFichaBeneficiosMontaje } + +{ +******************************* TfrViewFichaBeneficiosMontaje ******************************* +} +function TfrViewFichaBeneficiosMontaje.GetFichaBeneficiosMontaje: IBizFichaBeneficiosMontaje; +begin + Result := FFichaBeneficiosMontaje; +end; + +procedure TfrViewFichaBeneficiosMontaje.SetFichaBeneficiosMontaje(const Value: IBizFichaBeneficiosMontaje); +begin + FFichaBeneficiosMontaje := Value; + if Assigned(FFichaBeneficiosMontaje) then + DADataSource.DataTable := FFichaBeneficiosMontaje.DataTable; +end; + +procedure TfrViewFichaBeneficiosMontaje.cxGridViewCODIGOCustomDrawCell( + Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; + AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); +var + R : TRect; +begin + inherited; + R := AViewInfo.ContentBounds; + ACanvas.FillRect(R); + ACanvas.DrawImage(PngImageList, R.Left, R.Top, 0); + ADone := True; +end; + +procedure TfrViewFichaBeneficiosMontaje.cxGridViewTcxGridDBDataControllerTcxDataSummaryFooterSummaryItems0GetText( + Sender: TcxDataSummaryItem; const AValue: Variant; AIsFooter: Boolean; + var AText: String); +begin + inherited; + AText := 'Beneficio total = '; +end; + +procedure TfrViewFichaBeneficiosMontaje.actAnadirExecute(Sender: TObject); +begin + inherited; + if Assigned(FichaBeneficiosMontaje) then + begin + if FichaBeneficiosMontaje.DataTable.Editing then + FichaBeneficiosMontaje.DataTable.Post; + FichaBeneficiosMontaje.Append; + end; +end; + +procedure TfrViewFichaBeneficiosMontaje.actEliminarExecute( + Sender: TObject); +begin + inherited; + if Assigned(FichaBeneficiosMontaje) then + FichaBeneficiosMontaje.Delete; +end; + +end. diff --git a/Modulos/Montajes/Cliente/uViewMontaje.ddp b/Modulos/Montajes/Cliente/uViewMontaje.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Montajes/Cliente/uViewMontaje.ddp differ diff --git a/Modulos/Montajes/Cliente/uViewMontaje.dfm b/Modulos/Montajes/Cliente/uViewMontaje.dfm new file mode 100644 index 0000000..3f87175 --- /dev/null +++ b/Modulos/Montajes/Cliente/uViewMontaje.dfm @@ -0,0 +1,242 @@ +inherited frViewMontaje: TfrViewMontaje + Width = 750 + Height = 300 + Align = alClient + Anchors = [] + Constraints.MinHeight = 300 + Constraints.MinWidth = 750 + object pnlGeneral: TPanel + Left = 0 + Top = 0 + Width = 345 + Height = 105 + BevelOuter = bvNone + Constraints.MinWidth = 300 + ParentBackground = True + ParentColor = True + TabOrder = 0 + DesignSize = ( + 345 + 105) + object Label5: TLabel + Left = 8 + Top = 8 + Width = 103 + Height = 13 + Caption = 'Datos del montaje' + Font.Charset = DEFAULT_CHARSET + Font.Color = clActiveCaption + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + ParentFont = False + end + object Bevel1: TBevel + Left = 120 + Top = 8 + Width = 215 + Height = 9 + Anchors = [akLeft, akTop, akRight] + Shape = bsBottomLine + end + object Label2: TLabel + Left = 16 + Top = 55 + Width = 59 + Height = 13 + Caption = 'Fecha inicio:' + end + object Label3: TLabel + Left = 16 + Top = 30 + Width = 47 + Height = 13 + Caption = 'Situaci'#243'n:' + end + object Label4: TLabel + Left = 16 + Top = 80 + Width = 88 + Height = 13 + Caption = 'Fecha finalizaci'#243'n:' + end + object cbSituacion: TcxDBImageComboBox + Left = 111 + Top = 27 + DataBinding.DataField = 'SITUACION' + DataBinding.DataSource = DADataSource + Properties.ImmediatePost = True + Properties.Items = < + item + Description = 'Pendiente recepci'#243'n' + Value = 'Pendiente recepci'#243'n' + end + item + Description = 'Pendiente montaje' + ImageIndex = 0 + Value = 'Pendiente montaje' + end + item + Description = 'Pendiente pago' + ImageIndex = 1 + Value = 'Pendiente pago' + end + item + Description = 'Pagado y terminado' + Value = 'Pagado y terminado' + end> + Style.Color = clInfoBk + Style.LookAndFeel.Kind = lfUltraFlat + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.Kind = lfUltraFlat + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.Kind = lfUltraFlat + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.Kind = lfUltraFlat + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 0 + Width = 225 + end + object edtFechaIni: TcxDBDateEdit + Left = 111 + Top = 51 + Anchors = [akLeft, akTop, akRight] + DataBinding.DataField = 'FECHAINICIO' + DataBinding.DataSource = DADataSource + Style.LookAndFeel.NativeStyle = True + Style.Shadow = False + Style.ButtonTransparency = ebtNone + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 1 + Width = 225 + end + object edtFechaFin: TcxDBDateEdit + Left = 111 + Top = 75 + Anchors = [akLeft, akTop, akRight] + DataBinding.DataField = 'FECHAFIN' + DataBinding.DataSource = DADataSource + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 2 + Width = 225 + end + end + inline frViewDatosYSeleccionContacto: TfrViewDatosYSeleccionContacto + Left = 356 + Top = 2 + Width = 391 + Height = 202 + Constraints.MinHeight = 202 + Constraints.MinWidth = 350 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 1 + ReadOnly = False + inherited Label5: TLabel + Width = 97 + Caption = 'Datos del cliente' + end + inherited Bevel1: TBevel + Left = 112 + Width = 251 + end + inherited lblNombre: TLabel + Top = 33 + end + inherited lblNIFCIF: TLabel + Top = 59 + end + inherited lblCalle: TLabel + Top = 85 + end + inherited lblPoblacion: TLabel + Top = 111 + end + inherited lblProvincia: TLabel + Top = 138 + end + inherited lblCodigoPostal: TLabel + Top = 138 + end + inherited ToolBar1: TToolBar + ButtonWidth = 129 + Visible = False + inherited ToolButton1: TToolButton + Caption = 'Elegir un cliente' + end + inherited ToolButton3: TToolButton + Left = 106 + end + inherited ToolButton2: TToolButton + Left = 114 + Caption = 'Dar de alta un cliente' + end + end + inherited edtlNombre: TcxDBTextEdit + Top = 29 + StyleDisabled.TextColor = clActiveCaption + end + inherited edtPoblacion: TcxDBTextEdit + Top = 107 + StyleDisabled.TextColor = clActiveCaption + end + inherited edtProvincia: TcxDBTextEdit + Top = 134 + StyleDisabled.TextColor = clActiveCaption + end + inherited edtNIFCIF: TcxDBTextEdit + Top = 55 + StyleDisabled.TextColor = clActiveCaption + end + inherited edtCalle: TcxDBTextEdit + Top = 81 + StyleDisabled.TextColor = clActiveCaption + end + inherited ToolBar2: TToolBar + Left = 187 + Top = 161 + Width = 182 + ButtonWidth = 178 + inherited ToolButton4: TToolButton + Caption = 'Ver ficha completa del cliente...' + end + end + inherited edtCodigoPostal: TcxDBTextEdit + Top = 134 + StyleDisabled.TextColor = clActiveCaption + end + inherited DADataSource: TDADataSource + Left = 72 + Top = 40 + end + end + inline frViewPresupuestoMontaje: TfrViewPresupuestoMontaje + Left = 0 + Top = 105 + Width = 360 + Height = 90 + Constraints.MinHeight = 90 + Constraints.MinWidth = 360 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 2 + ReadOnly = False + end + object DADataSource: TDADataSource + Left = 64 + Top = 8 + end +end diff --git a/Modulos/Montajes/Cliente/uViewMontaje.pas b/Modulos/Montajes/Cliente/uViewMontaje.pas new file mode 100644 index 0000000..20fa088 --- /dev/null +++ b/Modulos/Montajes/Cliente/uViewMontaje.pas @@ -0,0 +1,99 @@ +unit uViewMontaje; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, ExtCtrls, StdCtrls, Buttons, DB, uDADataTable, + DBCtrls, Grids, DBGrids, uBizMontajes, Mask, ComCtrls, uCustomView, + uViewDireccion, uViewTelefonos, uViewInternet, uViewCategorias, + JvComponent, JvFormAutoSize, cxControls, cxContainer, cxEdit, cxTextEdit, + cxDBEdit, cxGraphics, uViewDatosYSeleccionContacto, cxMaskEdit, + cxDropDownEdit, cxImageComboBox, cxCalendar, uViewPresupuestoRelacionado, + uViewPresupuestoMontaje; + +type + IViewMontaje = interface(IViewBase) + ['{A9189F38-9832-4919-9B98-56F345C2AACA}'] + function GetMontaje: IBizMontaje; + procedure SetMontaje(const Value: IBizMontaje); + property Montaje: IBizMontaje read GetMontaje write SetMontaje; + end; + + TfrViewMontaje = class(TfrViewBase, IViewMontaje) + Bevel1: TBevel; + DADataSource: TDADataSource; + Label5: TLabel; + pnlGeneral: TPanel; + Label3: TLabel; + Label4: TLabel; + frViewDatosYSeleccionContacto: TfrViewDatosYSeleccionContacto; + cbSituacion: TcxDBImageComboBox; + edtFechaIni: TcxDBDateEdit; + edtFechaFin: TcxDBDateEdit; + frViewPresupuestoMontaje: TfrViewPresupuestoMontaje; + private + FMontaje: IBizMontaje; + protected + procedure OnPresupuestoChanged(Sender : TObject); + procedure OnContactoChanged (Sender : TObject); + function GetMontaje: IBizMontaje; + procedure SetMontaje(const Value: IBizMontaje); + public + property Montaje: IBizMontaje read GetMontaje write SetMontaje; + end; + +implementation + +uses uDataModuleMontajes, uBizContacto, uDataModuleContactos, uDataModulePresupuestos, + uBizPresupuestosCliente; + +{$R *.dfm} +{ TfrViewMontajes } + +{ +******************************* TfrViewMontajes ******************************** +} + +function TfrViewMontaje.GetMontaje: IBizMontaje; +begin + Result := FMontaje; +end; + +procedure TfrViewMontaje.OnContactoChanged(Sender: TObject); +begin + FMontaje.Cliente := (frViewDatosYSeleccionContacto.Contacto as IBizCliente); +end; + +procedure TfrViewMontaje.OnPresupuestoChanged(Sender: TObject); +begin + if not (FMontaje.DataTable.State in dsEditModes) then + FMontaje.Edit; + + FMontaje.Presupuesto := frViewPresupuestoMontaje.Presupuesto; + frViewDatosYSeleccionContacto.Contacto := Montaje.Cliente; +end; + +procedure TfrViewMontaje.SetMontaje(const Value: IBizMontaje); +begin + FMontaje := Value; + if Assigned(FMontaje) then + DADataSource.DataTable := FMontaje.DataTable + else + DADataSource.DataTable := NIL; + + frViewDatosYSeleccionContacto.Contacto := FMontaje.Cliente; + frViewDatosYSeleccionContacto.OnContactoChanged := OnContactoChanged; + + frViewPresupuestoMontaje.Presupuesto := FMontaje.Presupuesto; + frViewPresupuestoMontaje.OnPresupuestoChanged := OnPresupuestoChanged; +end; + +initialization + RegisterClass(TfrViewMontaje); + +finalization + UnRegisterClass(TfrViewMontaje); + +end. + diff --git a/Modulos/Montajes/Cliente/uViewMontajeRelacionado.ddp b/Modulos/Montajes/Cliente/uViewMontajeRelacionado.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Montajes/Cliente/uViewMontajeRelacionado.ddp differ diff --git a/Modulos/Montajes/Cliente/uViewMontajeRelacionado.dfm b/Modulos/Montajes/Cliente/uViewMontajeRelacionado.dfm new file mode 100644 index 0000000..16ad505 --- /dev/null +++ b/Modulos/Montajes/Cliente/uViewMontajeRelacionado.dfm @@ -0,0 +1,163 @@ +inherited frViewMontajeRelacionado: TfrViewMontajeRelacionado + Width = 360 + Height = 90 + Constraints.MinHeight = 90 + Constraints.MinWidth = 360 + DesignSize = ( + 360 + 90) + object Label5: TLabel + Left = 8 + Top = 8 + Width = 116 + Height = 13 + Caption = 'Montaje relacionado' + Font.Charset = DEFAULT_CHARSET + Font.Color = clActiveCaption + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + ParentFont = False + end + object Bevel1: TBevel + Left = 128 + Top = 8 + Width = 221 + Height = 9 + Anchors = [akLeft, akTop, akRight] + Shape = bsBottomLine + end + object lblNombre: TLabel + Left = 16 + Top = 64 + Width = 56 + Height = 13 + Caption = 'Referencia:' + end + object edtlReferencia: TcxDBTextEdit + Left = 101 + Top = 60 + Anchors = [akLeft, akTop, akRight] + AutoSize = False + DataBinding.DataField = 'REFERENCIA' + DataBinding.DataSource = DADataSource + Enabled = False + ParentFont = False + Style.Font.Charset = DEFAULT_CHARSET + Style.Font.Color = clWindowText + Style.Font.Height = -11 + Style.Font.Name = 'Tahoma' + Style.Font.Style = [] + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clActiveCaption + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 1 + Height = 21 + Width = 245 + end + object ToolBar1: TToolBar + Left = 8 + Top = 29 + Width = 338 + Height = 22 + Align = alNone + Anchors = [akLeft, akTop, akRight] + ButtonWidth = 110 + Caption = 'ToolBar1' + EdgeBorders = [] + EdgeInner = esNone + EdgeOuter = esNone + Flat = True + Images = PngImageList + List = True + ParentShowHint = False + ShowCaptions = True + ShowHint = True + TabOrder = 0 + Transparent = True + Wrapable = False + object ToolButton1: TToolButton + Left = 0 + Top = 0 + Action = actElegirMontaje + AutoSize = True + end + object ToolButton3: TToolButton + Left = 114 + Top = 0 + Width = 8 + Caption = 'ToolButton3' + ImageIndex = 1 + Style = tbsSeparator + end + object ToolButton2: TToolButton + Left = 122 + Top = 0 + Action = actVerMontaje + end + end + object ActionList1: TActionList + Images = PngImageList + Left = 256 + object actElegirMontaje: TAction + Caption = 'Elegir un montaje' + ImageIndex = 1 + end + object actVerMontaje: TAction + Caption = 'Ver el montaje...' + ImageIndex = 1 + OnExecute = actVerMontajeExecute + OnUpdate = actVerMontajeUpdate + end + end + object PngImageList: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001774944415478DA + 63FCFFFF3FC384055BFF3390010A12BC1919610600394469FAF3F71FC3EF3F7F + 192CBCB3192EEE99856A80C35E4B14C5079C8F836964F1ED368718662EDFC530 + 7FC9464C03F0815FBFFF826D06D10BD7EDC36E00BA0BB0815586BB18966D3A84 + DB0098B341E01F50EECF9F7F709B034F3B312CD3DDC1B06ADB11FC06C05CB2CB + EE0883DB211BB8CD61E7DD18166A6E6558BFEB387E03D06DFEFDE70F981F75D9 + 8361AEEA2686CDFB4EE136609FD33106A77D56605BD79BEE033B1B044036C75F + F76698AEB88161E7A133B80D00391BDDE69FBFFE30FC028AA5DFF567E8975CCD + 70F0D4454C0372623D195C0E58A384F862ED6D0CB157BDC0EC2972EB18721E05 + 317489AE643876EE32A601E9916E605BFEFCFE07B639E2A23BC37CF52D60B1DF + BF21B8F0792843ABE03286D397AE611A9018EA0CD70CF202CC6674D0C0BB98E1 + C2B59B9806C40638C23583FC8D6CF36F688C80F0BF7FFF192EDDB8856940848F + 2DC38A2D8789CE89180680044805200300115980F04CC063740000000049454E + 44AE426082} + Name = 'PngImage1' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001774944415478DA + 63FCFFFF3FC384055BFF3390010A12BC1919610600394469FAF3F71FC3EF3F7F + 192CBCB3192EEE99856A80C35E4B14C5079C8F836964F1ED368718662EDFC530 + 7FC9464C03F0815FBFFF826D06D10BD7EDC36E00BA0BB0815586BB18966D3A84 + DB0098B341E01F50EECF9F7F709B034F3B312CD3DDC1B06ADB11FC06C05CB2CB + EE0883DB211BB8CD61E7DD18166A6E6558BFEB387E03D06DFEFDE70F981F75D9 + 8361AEEA2686CDFB4EE136609FD33106A77D56605BD79BEE033B1B044036C75F + F76698AEB88161E7A133B80D00391BDDE69FBFFE30FC028AA5DFF567E8975CCD + 70F0D4454C0372623D195C0E58A384F862ED6D0CB157BDC0EC2972EB18721E05 + 317489AE643876EE32A601E9916E605BFEFCFE07B639E2A23BC37CF52D60B1DF + BF21B8F0792843ABE03286D397AE611A9018EA0CD70CF202CC6674D0C0BB98E1 + C2B59B9806C40638C23583FC8D6CF36F688C80F0BF7FFF192EDDB8856940848F + 2DC38A2D8789CE89180680044805200300115980F04CC063740000000049454E + 44AE426082} + Name = 'PngImage2' + Background = clWindow + end> + Left = 288 + Bitmap = {} + end + object DADataSource: TDADataSource + Left = 320 + end +end diff --git a/Modulos/Montajes/Cliente/uViewMontajeRelacionado.pas b/Modulos/Montajes/Cliente/uViewMontajeRelacionado.pas new file mode 100644 index 0000000..db4f7bb --- /dev/null +++ b/Modulos/Montajes/Cliente/uViewMontajeRelacionado.pas @@ -0,0 +1,105 @@ +unit uViewMontajeRelacionado; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, ExtCtrls, StdCtrls, cxControls, cxContainer, cxEdit, + cxTextEdit, cxDBEdit, ComCtrls, ToolWin, ImgList, PngImageList, ActnList, + DB, uDADataTable, uBizMontajes; + +type + IViewMontajeRelacionado = interface(IViewBase) + ['{202B0654-733C-403B-8795-4E8CF61A428E}'] + + function GetMontaje: IBizMontaje; + procedure SetMontaje(const Value: IBizMontaje); + property Montaje: IBizMontaje read GetMontaje write SetMontaje; + + function GetOnMontajeChanged : TNotifyEvent; + procedure SetOnMontajeChanged (const Value : TNotifyEvent); + property OnMontajeChanged : TNotifyEvent read GetOnMontajeChanged + write SetOnMontajeChanged; + end; + + TfrViewMontajeRelacionado = class(TfrViewBase, IViewMontajeRelacionado) + Label5: TLabel; + Bevel1: TBevel; + ActionList1: TActionList; + actElegirMontaje: TAction; + actVerMontaje: TAction; + PngImageList: TPngImageList; + ToolBar1: TToolBar; + ToolButton1: TToolButton; + ToolButton3: TToolButton; + ToolButton2: TToolButton; + lblNombre: TLabel; + DADataSource: TDADataSource; + edtlReferencia: TcxDBTextEdit; + procedure actVerMontajeExecute(Sender: TObject); + procedure actVerMontajeUpdate(Sender: TObject); + private + FMontaje : IBizMontaje; + FOnMontajeChanged : TNotifyEvent; + protected + function GetMontaje: IBizMontaje; + procedure SetMontaje(const Value: IBizMontaje); + function GetOnMontajeChanged : TNotifyEvent; + procedure SetOnMontajeChanged (const Value : TNotifyEvent); + public + property Montaje: IBizMontaje read GetMontaje write SetMontaje; + property OnMontajeChanged : TNotifyEvent read GetOnMontajeChanged + write SetOnMontajeChanged; + end; + +var + frViewMontajeRelacionado: TfrViewMontajeRelacionado; + +implementation + +uses + uDataModuleMontajes, schMontajesClient_Intf; + +{$R *.dfm} + +{ TfrViewMontajeAlbaran } + +procedure TfrViewMontajeRelacionado.actVerMontajeExecute( + Sender: TObject); +begin + FMontaje.Show; +end; + +procedure TfrViewMontajeRelacionado.actVerMontajeUpdate( + Sender: TObject); +begin + inherited; + (Sender as TAction).Enabled := (Length(edtlReferencia.Text) > 0); +end; + +function TfrViewMontajeRelacionado.GetMontaje: IBizMontaje; +begin + Result := FMontaje; +end; + +procedure TfrViewMontajeRelacionado.SetMontaje(const Value: IBizMontaje); +begin + FMontaje := Value; + DADataSource.DataTable := FMontaje.DataTable; + + if Assigned(FOnMontajeChanged) then + FOnMontajeChanged(Self); +end; + +function TfrViewMontajeRelacionado.GetOnMontajeChanged: TNotifyEvent; +begin + Result := FOnMontajeChanged; +end; + +procedure TfrViewMontajeRelacionado.SetOnMontajeChanged( + const Value: TNotifyEvent); +begin + FOnMontajeChanged := Value; +end; + +end. diff --git a/Modulos/Montajes/Cliente/uViewMontajes.ddp b/Modulos/Montajes/Cliente/uViewMontajes.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Montajes/Cliente/uViewMontajes.ddp differ diff --git a/Modulos/Montajes/Cliente/uViewMontajes.dfm b/Modulos/Montajes/Cliente/uViewMontajes.dfm new file mode 100644 index 0000000..374fc5b --- /dev/null +++ b/Modulos/Montajes/Cliente/uViewMontajes.dfm @@ -0,0 +1,105 @@ +inherited frViewMontajes: TfrViewMontajes + inherited cxGrid: TcxGrid + RootLevelOptions.DetailTabsPosition = dtpTop + OnActiveTabChanged = cxGridActiveTabChanged + inherited cxGridView: TcxGridDBTableView + DataController.KeyFieldNames = 'CODIGO' + DataController.Summary.FooterSummaryItems = < + item + Kind = skCount + end + item + Format = '0 Montajes' + Kind = skCount + Column = cxGridViewNOMBRE + end> + OptionsBehavior.PullFocusing = True + object cxGridViewRecID: TcxGridDBColumn + DataBinding.FieldName = 'RecID' + Visible = False + end + object cxGridViewCODIGOEMPRESA: TcxGridDBColumn + DataBinding.FieldName = 'CODIGOEMPRESA' + Visible = False + end + object cxGridViewCODIGO: TcxGridDBColumn + DataBinding.FieldName = 'CODIGO' + Visible = False + end + object cxGridViewREFERENCIA: TcxGridDBColumn + DataBinding.FieldName = 'REFERENCIA' + end + object cxGridViewSITUACION: TcxGridDBColumn + DataBinding.FieldName = 'SITUACION' + end + object cxGridViewFECHAINICIO: TcxGridDBColumn + DataBinding.FieldName = 'FECHAINICIO' + end + object cxGridViewNOMBRE: TcxGridDBColumn + DataBinding.FieldName = 'NOMBRE' + end + object cxGridViewOPCION: TcxGridDBColumn + Caption = 'Opci'#243'n' + DataBinding.FieldName = 'OPCION' + end + object cxGridViewFECHAALTA: TcxGridDBColumn + DataBinding.FieldName = 'FECHAALTA' + Visible = False + end + object cxGridViewUSUARIO: TcxGridDBColumn + DataBinding.FieldName = 'USUARIO' + Visible = False + end + object cxGridViewFECHAFIN: TcxGridDBColumn + DataBinding.FieldName = 'FECHAFIN' + end + object cxGridViewOBSERVACIONES: TcxGridDBColumn + DataBinding.FieldName = 'OBSERVACIONES' + Visible = False + end + object cxGridViewCODIGOPRESUPUESTO: TcxGridDBColumn + DataBinding.FieldName = 'CODIGOPRESUPUESTO' + Visible = False + end + object cxGridViewCODIGOCONTACTO: TcxGridDBColumn + DataBinding.FieldName = 'CODIGOCONTACTO' + Visible = False + end + end + inherited cxGridLevel: TcxGridLevel + Caption = 'Todos' + end + object cxGridLevel1: TcxGridLevel + Caption = 'Pendientes' + end + object cxGridLevel2: TcxGridLevel + Caption = 'Finalizados' + end + end + inherited frViewFiltroBase1: TfrViewFiltroBase + inherited TBXDock1: TTBXDock + inherited TBXDockablePanel1: TTBXDockablePanel + inherited dxLayoutControl1: TdxLayoutControl + inherited dxLayoutControl1Group_Root: TdxLayoutGroup + inherited dxLayoutControl1Group1: TdxLayoutGroup + inherited dxLayoutControl1Item2: TdxLayoutItem + Caption = 'Inicio entre la fecha:' + end + end + end + end + end + end + end + inherited dxComponentPrinter: TdxComponentPrinter + inherited dxComponentPrinterLink: TdxGridReportLink + ReportDocument.CreationDate = 38673.842406053240000000 + BuiltInReportLink = True + end + end + object PngImageList: TPngImageList + PngImages = <> + Left = 160 + Top = 32 + end +end diff --git a/Modulos/Montajes/Cliente/uViewMontajes.pas b/Modulos/Montajes/Cliente/uViewMontajes.pas new file mode 100644 index 0000000..b6326d0 --- /dev/null +++ b/Modulos/Montajes/Cliente/uViewMontajes.pas @@ -0,0 +1,156 @@ +unit uViewMontajes; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewGrid, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, + cxDataStorage, cxEdit, DB, cxDBData, uDADataTable, cxGridLevel, + cxClasses, cxControls, cxGridCustomView, cxGridCustomTableView, + cxGridTableView, cxGridDBTableView, cxGrid, uBizMontajes, ActnList, Menus, + cxGridBandedTableView, cxGridDBBandedTableView, JvComponent, + JvFormAutoSize, PngImageList, ImgList, dxPSGlbl, dxPSUtl, dxPSEngn, + dxPrnPg, dxBkgnd, dxWrap, dxPrnDev, dxPSCompsProvider, dxPSFillPatterns, + dxPSEdgePatterns, cxIntlPrintSys3, dxPSCore, dxPScxCommon, dxPScxGridLnk, + uViewFiltroBase; + +type + IViewMontajes = interface(IViewGrid) + ['{78CB7E94-7AE3-4445-9A9C-C4CE27A8A21F}'] + function GetMontajes: IBizMontaje; + procedure SetMontajes(const Value: IBizMontaje); + property Montajes: IBizMontaje read GetMontajes write SetMontajes; + end; + + TfrViewMontajes = class(TfrViewGrid, IViewMontajes) + PngImageList: TPngImageList; + cxGridViewRecID: TcxGridDBColumn; + cxGridViewCODIGOEMPRESA: TcxGridDBColumn; + cxGridViewCODIGO: TcxGridDBColumn; + cxGridViewFECHAALTA: TcxGridDBColumn; + cxGridViewUSUARIO: TcxGridDBColumn; + cxGridViewFECHAINICIO: TcxGridDBColumn; + cxGridViewFECHAFIN: TcxGridDBColumn; + cxGridViewSITUACION: TcxGridDBColumn; + cxGridViewOBSERVACIONES: TcxGridDBColumn; + cxGridViewCODIGOPRESUPUESTO: TcxGridDBColumn; + cxGridViewREFERENCIA: TcxGridDBColumn; + cxGridViewCODIGOCONTACTO: TcxGridDBColumn; + cxGridViewNOMBRE: TcxGridDBColumn; + cxGridLevel1: TcxGridLevel; + cxGridLevel2: TcxGridLevel; + cxGridViewOPCION: TcxGridDBColumn; + procedure cxGridViewCODIGOCustomDrawCell( + Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; + AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); + procedure cxGridActiveTabChanged(Sender: TcxCustomGrid; ALevel: TcxGridLevel); + + private + //Filtros relativos a la vista + procedure AnadirFiltroSituaciones; + procedure AnadirFiltroFechas; + + protected + FMontajes: IBizMontaje; + function GetMontajes: IBizMontaje; virtual; + procedure SetMontajes(const Value: IBizMontaje); virtual; + procedure AnadirOtrosFiltros; override; + + public + property DataSet: IBizMontaje read GetMontajes write SetMontajes; + end; + +var + frViewMontajes: TfrViewMontajes; + +implementation + +uses uDataModuleMontajes; + + +{$R *.dfm} + +{ TfrViewClientes } + +{ +******************************* TfrViewMontajes ******************************* +} +function TfrViewMontajes.GetMontajes: IBizMontaje; +begin + Result := FMontajes; +end; + +procedure TfrViewMontajes.SetMontajes(const Value: IBizMontaje); +begin + FMontajes := Value; + if Assigned(FMontajes) then + DADataSource.DataTable := FMontajes.DataTable; +end; + + +procedure TfrViewMontajes.cxGridViewCODIGOCustomDrawCell( + Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; + AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); +var + R : TRect; +begin + inherited; + R := AViewInfo.ContentBounds; + ACanvas.FillRect(R); + ACanvas.DrawImage(PngImageList, R.Left, R.Top, 0); + ADone := True; +end; + +procedure TfrViewMontajes.cxGridActiveTabChanged(Sender: TcxCustomGrid; ALevel: TcxGridLevel); +begin + inherited; + RefrescarFiltro; +end; + +procedure TfrViewMontajes.AnadirFiltroSituaciones; +var + FFiltro : TcxFilterCriteriaItemList; +begin + FFiltro := AddFilterGrid(fboAnd); + + case cxGrid.ActiveLevel.Index of + 1 : FFiltro.AddItem(cxGridViewSITUACION, foNotEqual, SITUACION_PAGADO, SITUACION_PAGADO); + 2 : FFiltro.AddItem(cxGridViewSITUACION, foEqual, SITUACION_PAGADO, SITUACION_PAGADO); + end; +end; + +procedure TfrViewMontajes.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 TfrViewMontajes.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('FECHAINICIO'); + FFiltro.AddItem(Columna, foBetween, varArrayOf([Fecha1, Fecha2]), VarToStr(Fecha1) + ' and ' + VarToStr(Fecha2)); + end; +end; + +end. diff --git a/Modulos/Montajes/Cliente/uViewPedidosMontaje.ddp b/Modulos/Montajes/Cliente/uViewPedidosMontaje.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Montajes/Cliente/uViewPedidosMontaje.ddp differ diff --git a/Modulos/Montajes/Cliente/uViewPedidosMontaje.dfm b/Modulos/Montajes/Cliente/uViewPedidosMontaje.dfm new file mode 100644 index 0000000..fee2a14 --- /dev/null +++ b/Modulos/Montajes/Cliente/uViewPedidosMontaje.dfm @@ -0,0 +1,345 @@ +inherited frViewPedidosMontaje: TfrViewPedidosMontaje + Width = 605 + inherited cxGrid: TcxGrid + Top = 25 + Width = 605 + Height = 245 + inherited cxGridView: TcxGridDBTableView + OnDblClick = actModificarExecute + DataController.KeyFieldNames = 'CODIGO' + DataController.Summary.FooterSummaryItems = < + item + Kind = skCount + end> + OptionsBehavior.PullFocusing = True + object cxGridViewRecID: TcxGridDBColumn + DataBinding.FieldName = 'RecID' + Visible = False + end + object cxGridViewCODIGOEMPRESA: TcxGridDBColumn + DataBinding.FieldName = 'CODIGOEMPRESA' + Visible = False + end + object cxGridViewCODIGO: TcxGridDBColumn + DataBinding.FieldName = 'CODIGO' + Visible = False + end + object cxGridViewINCIDENCIASACTIVAS: TcxGridDBColumn + DataBinding.FieldName = 'INCIDENCIASACTIVAS' + PropertiesClassName = 'TcxImageComboBoxProperties' + Properties.Images = PngImageList2 + Properties.Items = < + item + Description = 'Sin incidencias' + Value = 0 + end + item + Description = 'Con incidencias' + ImageIndex = 3 + Value = 1 + end> + Properties.ShowDescriptions = False + Width = 30 + IsCaptionAssigned = True + end + object cxGridViewREFERENCIA: TcxGridDBColumn + DataBinding.FieldName = 'REFERENCIA' + Visible = False + end + object cxGridViewSITUACION: TcxGridDBColumn + DataBinding.FieldName = 'SITUACION' + PropertiesClassName = 'TcxImageComboBoxProperties' + Properties.Images = PngImageList2 + Properties.Items = < + item + Description = 'Pendiente' + ImageIndex = 0 + Value = 'Pendiente' + end + item + Description = 'Parcialmente recibido' + ImageIndex = 1 + Tag = 1 + Value = 'Parcialmente recibido' + end + item + Description = 'Recibido' + ImageIndex = 2 + Tag = 2 + Value = 'Recibido' + end> + Properties.ShowDescriptions = False + Width = 25 + IsCaptionAssigned = True + end + object cxGridViewNOMBRE: TcxGridDBColumn + Caption = 'Nombre proveedor' + DataBinding.FieldName = 'NOMBRE' + end + object cxGridViewFECHAALTA: TcxGridDBColumn + DataBinding.FieldName = 'FECHAALTA' + Visible = False + end + object cxGridViewUSUARIO: TcxGridDBColumn + DataBinding.FieldName = 'USUARIO' + Visible = False + end + object cxGridViewFECHACONFIRMACION: TcxGridDBColumn + DataBinding.FieldName = 'FECHACONFIRMACION' + end + object cxGridViewFECHAENTREGA: TcxGridDBColumn + DataBinding.FieldName = 'FECHAENTREGA' + end + end + inherited cxGridLevel: TcxGridLevel + Caption = 'Todos' + end + end + object ToolBar1: TToolBar [1] + Left = 0 + Top = 0 + Width = 605 + Height = 25 + ButtonWidth = 129 + Caption = 'ToolBar1' + EdgeBorders = [] + EdgeInner = esNone + EdgeOuter = esNone + Flat = True + Images = PngImageList + List = True + ShowCaptions = True + TabOrder = 1 + object ToolButton1: TToolButton + Left = 0 + Top = 0 + Action = actAnadir + end + object ToolButton2: TToolButton + Left = 129 + Top = 0 + Action = actModificar + end + object ToolButton4: TToolButton + Left = 258 + Top = 0 + Action = actEliminar + end + object ToolButton3: TToolButton + Left = 387 + Top = 0 + Action = actRecibirPedido + end + end + inherited ActionList1: TActionList + Images = PngImageList + Left = 8 + Top = 32 + object actAnadir: TAction + Caption = 'Nuevo pedido' + ImageIndex = 0 + OnExecute = actAnadirExecute + end + object actModificar: TAction + Caption = 'Modificar este pedido' + ImageIndex = 1 + OnExecute = actModificarExecute + OnUpdate = actModificarUpdate + end + object actEliminar: TAction + Caption = 'Eliminar este pedido' + ImageIndex = 2 + OnExecute = actEliminarExecute + OnUpdate = actEliminarUpdate + end + object actRecibirPedido: TAction + Caption = 'Recibir pedido' + ImageIndex = 3 + end + end + inherited dxComponentPrinter: TdxComponentPrinter + inherited dxComponentPrinterLink: TdxGridReportLink + ReportDocument.CreationDate = 38673.842406053240000000 + BuiltInReportLink = True + end + end + object PngImageList: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001864944415478DA + 63FCFFFF3FC384055BFF3390010A12BC1919610600394469FAF3F71FC3EF3F7F + 192CBCB3192EEE99856AC05E4B2B14C5CEC78F81696471AB030719662EDFC530 + 7FC9464C03F0815FBFFF826D06D10BD7EDC36E00BA0BB001DDAD3B19966D3A84 + DB0098B341E01F50EECF9F7F709BCFB93B33686EDCCEB06ADB11FC06C05C627B + E830C3613B5BB8CD97BDDD1954D66E6158BFEB387E0360367FBA7990E1C5C218 + 7C3E72C130C0F1D85186FD56D66059719B070CAA2D350CECEC59183A7FFE9CC6 + 303BB68501C30090B3617E7EDAACCCA0D3FD0CAC180EBE7F6760F8F19D61FA0E + 4306966DA9080372623D190EDAD8A0D80272018A0120CD1FDE81E9E9279D510D + 488F7463F805B4F9CF6F50A8FF61B8EAEB816A004CF37B20FEF19361FACD6054 + 0312439DE19A415EB815E88D30E0432F42F3870F1017BC4A45352036C011AE19 + 140320D7FC9E6A0031E041354233D80540037E95A31A10E163CBB062CB61D438 + BA9A0A8E85E9CBE5B1C6218A01A084810EB478DF3058B39EC099081CE4195C00 + 45135E518E0B4E380000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD2520000015D4944415478DA + 63FCFFFF3F03082CDD7212C22000627C2D1891F98CC80644FB98E3D50C54C3D0 + 3B6521C3F99DD3194936E0DFBF7F0CCBB79D6690161366B04C57058B715C6060 + 24CA0090E6DF7FFE31ACD9759621A4D68281352A97E1F7B2C90C8B2E10E10298 + E6DFBFFF325C5DC2C1F044E912C39B4B4B19984A3AB17BC171E64DACAEE860D0 + 60D0F399C2F0F2D636868587CC18A41A1A18D218F07801DD669866100E699161 + 10D5F6050726411720DB0CD35CDE369B61DED24DD80DF8FDE72FD856107D6319 + 1786E6ED7B4F311C387911BB01611E260C6E73EF80F9110C1F180C182C18C4D5 + BC5034830C3E7AF60A7603029D0D212E00FA7DEDAA2B0C2D2D210C6B6A9EA068 + 06E15317AF6337C0C75E8F2160D92330FF4E8B0B838B4B0D985D5CE907D70CC2 + E7AFDEC26E80BBB50E5CD11FA84B60E181C0FF18AEDCBC83DD0027734D829A41 + 00A701B6C66A0C9BF69C24265362370094D348012003002CB76B52FA97B19500 + 00000049454E44AE426082} + Name = 'PngImage1' + 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 = 'PngImage2' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000B3A00000B3A01647F570D000001BD4944415478DA + 63FCFFFF3F03258011D980BE9612BCA615D5F43012342037D71F43E3D7774F18 + 0C6D0B18EE3F7989DD80E9FD4DC140F69AEF5F3F31A01B00D27C6A511543FAEC + 6F0C0F9EBEC269C0FFA4747E86A97D8FE106FCFEFE89E117107F7DF384E1EAB6 + 69A41900D2FCF5ED53207ECCF0FBDB6786FB2737820D282BCE866BCC2AAA67C4 + 6A40468A235C3388FEF6EE1983D9443FB8C61F277E33CC9BF911B701B1816A0C + 171FBC63B87DEB17C4A6F9220C160EEA0C2FD6453148042D633871E026C3B4C4 + 3760F15707E2310DD033146160F8FE9EC1D6E02D0323D00E75FBCD70DB2F6C30 + 61F05854043604047AF4B37FA018F0E9E33F861D5BFF337898DE62E0E7F9C3F0 + FFDF5F867FBF7E32FCF9FD83E1DF1F20FEFD9341283D98A1AED48FA1A97B13C8 + 002714030EEFFF0EB6DDCEF02DC3FFFFFF18FEFDFC01D5FC13A8F90758330AB8 + 9CCD0837202482176E3B2FC70F86FF7F7F31FCF985B01966C89FAF9F1996ADBA + F503A8DDAB6409C37EB801AA6A6C60DB6D749F8335FCFDF38BE12FD480FF6003 + 7E01BDF38BE1F1F51B0C07CFFFBE03D4AC8A120BDA4A9F19D8DEEC6160F97815 + 6FE6016A86DB8E62C0B773F5C4643E14CD1899891C000039F251E625517D8200 + 00000049454E44AE426082} + Name = 'PngImage3' + Background = clWindow + end> + Left = 40 + Top = 32 + Bitmap = {} + end + object PngImageList2: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD2520000014B4944415478DA + 6364C007F47A8C9999FE9F6162FCCFF0FB2F9309C3A592B31CC61DFF7F9CAD60 + 0449F398B6FF67C4A79FD9A0FBFFDF0BA56035EC469DFF7F9E2B87AB0769FE72 + BA9211AF01AC865DFF7F9F2F03AB41B719A419C4C66B001BD0805F5003B84C3A + FE7F3B53C188AC59D0A20DBF17909DCD6DD2FEFFEB994A0CF5780D00052217DB + 9F338C0CFF19BEFE620507226906100118B327BDFCFFE7EF6F86BF7F20F80F8C + FEFB07C14762FFF9FD0B48FF82D2BF1918D3FB9FFCB734944631F5CFDF7F0CBF + 7EFF65F809C67FE0EC5F403688FEF1EB0F185F3AB2938131A5FBFE7F1B530592 + 35FFF8F597E1DAB16D0C8C89EDB7FEDB5BAA92AC1944DF3ABE858131B6F9EA7F + 675B2D923583F0BD139B1918A3EA2FFC77B2D32559F3AF3F7F191E9CD8C0C018 + 5673E6BF838D1EC99A41006C4070C5F1FF84A2EA3732FFF76F301B9E0EFEFFFF + 4F514202003F5091819E0016AB0000000049454E44AE426082} + Name = 'PngImage1' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD2520000010E4944415478DA + 63648001BD9EFF0CC8E052092350CC18C83A031531018A9D05AB03C941F530A2 + 180093C026862E0FE5230B10B40D1B1BD546749BB16922CA0BF80C400384BC80 + 2986D300320163F0AC3BFFFFFEFECBF0E70F100369301BCA87B1FFFE81F2FFFC + 63F8FDEB0FC31F20FE0D9203D28C01536FFE6F705663F80033F20784FA00657F + 4016FB815003129F367B3503A3CFC46BFF4BDC3549D208634F9CB79C81D1A3E7 + F2FF4375E638FDD8B6EE2B8646984573672C6660746DBFF0FF68B3154E03CA96 + 7DC56A3B08CC98BD8081D1B1E9ECFF783B23BC4E45D7080353A6CE6160B4AD3B + F53FD8CA94248D303061C24C0646ABCAE3FF0945D59F5F7F816C3431200D4E07 + FFFFFF67A00400007E51EECD81D1728E0000000049454E44AE426082} + Name = 'PngImage2' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000000F54944415478DA + 6364D0EBF9CF70A98411481B3330309C61800013A0D8591C6210F52000643322 + 19802281530C06A07CF20C4062936E00D5BC00058C24072286011402C6EC492F + FFFFF9FB9BE1EF1F08FE03A3FFFE41F091D87F7EFF02D2BFA0F46F06C6F4FE27 + FF2D0DA5514CFDF3F71FC3AFDF7F197E82F11F38FB17900DA27FFCFA03C6978E + EC64604CE9BEFFDFC6548164CD3F7EFD65B8766C1B036362FBADFF2B9B0DC8F2 + BF9C7D2303636CF3D5FF6BDB4DC93240CAAA868131AAFEC27F273B5DA29D0D63 + FFFAF397E1C1890D0C8C613567FE3BD8E891AC1904C00604571CFF4F28AA7E23 + F37FFF06B3E1E9E0FFFFFF1425240089FD645E7C3F344D0000000049454E44AE + 426082} + Name = 'PngImage0' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000AEB00000AEB01828B0D5A0000027F4944415478DA + 95926D48535118C79FDB268AA54485D62C4C50962CDC87F5416D9AB966CEA440 + A4E84D828C304C89B217DB87D00F65252B69422F9A4161D6A0507C6D595A6450 + 83CC55787129CE19949B6DD3DDEDDE9D73BABB561835D3030FCF39E739FFDFF3 + C2A1608EF5A1467A415632783A589C100254B0A0EB5A623A9392DCD365B89DBE + FF3CBC5830C0DD9DD726922B34EFDAEB5B53F75972170470D4C8E461DB724D78 + 091139AC66F4FC5E9BA24007FDF3064C75E6DE7DE94BD8DBDC4A834615014B5D + BD8D6985E37BE6056074D2B544934357DCFA1CD2FBEA1B6C908742E96EAFBFFB + 7E5FE2A15A18FA2FC0F978B35E9CBAE94895EE2DB474D82053B918CA4BA2A1BF + D37823B3D879784E80BB36298ADA98368C97937043F3185CACA1E164F12AD89E + 1509132316E659BB39A14807B6A000E74365A5282D43EB67BFC020FD1D76159A + C0502785D8984580B8691830BEA9561F634EFC1340AAA4111E55C60817859611 + E4038EF34256FE6BE86C5A0F807D4010035F2DA3EE1EA32DEEA81EEC7F0126EF + 288E87A8D597389F8DC28280858ACB9FE06C690CBFF702E60DB153E463EF70C5 + D632EEDC1F00FA6A7CA824397D888B46AB671EF300CC826DDC092B5710411CB0 + 406C62D86EEFEA72C69DAA07F76FC0645DD241B15A7D93E3C6A85FE2471D5E68 + 6872C1CE1C2FE46BF0AC2A1842F7B9CBB2CFF8AB05007900A26949819995E075 + 184D43A0FF400B95575CD0FED4010A9907AAB5E1BC9801EC9FA9C261656D0346 + 7FFC8106E2A55C7A591EA551197CC84A1121BB4FC8346AF540CB1307A8950462 + 25E8670B8CD01E6611B198C445D9E5DC75EABD7E4DA32B322C05630F3F15BE54 + 82788F788FF9E9FB679D9110C781FBC077B753433BB478CB0F7C3B8CF0987D51 + CF0000000049454E44AE426082} + Name = 'PngImage3' + Background = clWindow + end> + Left = 40 + Top = 64 + Bitmap = {} + end +end diff --git a/Modulos/Montajes/Cliente/uViewPedidosMontaje.pas b/Modulos/Montajes/Cliente/uViewPedidosMontaje.pas new file mode 100644 index 0000000..41e0b48 --- /dev/null +++ b/Modulos/Montajes/Cliente/uViewPedidosMontaje.pas @@ -0,0 +1,168 @@ +unit uViewPedidosMontaje; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewGrid, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, + cxDataStorage, cxEdit, DB, cxDBData, uDADataTable, cxGridLevel, + cxClasses, cxControls, cxGridCustomView, cxGridCustomTableView, + cxGridTableView, cxGridDBTableView, cxGrid, ActnList, Menus, + cxGridBandedTableView, cxGridDBBandedTableView, uBizPedidosMontaje, JvComponent, + JvFormAutoSize, PngImageList, ImgList, dxPSGlbl, dxPSUtl, dxPSEngn, + dxPrnPg, dxBkgnd, dxWrap, dxPrnDev, dxPSCompsProvider, dxPSFillPatterns, + dxPSEdgePatterns, cxIntlPrintSys3, dxPSCore, dxPScxCommon, dxPScxGridLnk, + ComCtrls, ToolWin, cxImageComboBox; + +type + IViewPedidosMontaje = interface(IViewGrid) + ['{E6A3B3B7-7663-46D6-9B84-7B689D9B2461}'] + function GetCodigoMontaje: Integer; + procedure SetCodigoMontaje(const Value: Integer); + property CodigoMontaje: Integer read GetCodigoMontaje write SetCodigoMontaje; + + function GetPedidosMontaje: IBizPedidosMontaje; + procedure SetPedidosMontaje(const Value: IBizPedidosMontaje); + property PedidosMontaje: IBizPedidosMontaje read GetPedidosMontaje write SetPedidosMontaje; + end; + + TfrViewPedidosMontaje = class(TfrViewGrid, IViewPedidosMontaje) + PngImageList: TPngImageList; + cxGridViewRecID: TcxGridDBColumn; + cxGridViewCODIGOEMPRESA: TcxGridDBColumn; + cxGridViewCODIGO: TcxGridDBColumn; + cxGridViewFECHAALTA: TcxGridDBColumn; + cxGridViewUSUARIO: TcxGridDBColumn; + cxGridViewFECHACONFIRMACION: TcxGridDBColumn; + cxGridViewFECHAENTREGA: TcxGridDBColumn; + cxGridViewSITUACION: TcxGridDBColumn; + cxGridViewREFERENCIA: TcxGridDBColumn; + cxGridViewNOMBRE: TcxGridDBColumn; + ToolBar1: TToolBar; + ToolButton1: TToolButton; + ToolButton2: TToolButton; + ToolButton4: TToolButton; + actAnadir: TAction; + actModificar: TAction; + actEliminar: TAction; + actRecibirPedido: TAction; + ToolButton3: TToolButton; + PngImageList2: TPngImageList; + cxGridViewINCIDENCIASACTIVAS: TcxGridDBColumn; + procedure cxGridViewCODIGOCustomDrawCell( + Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; + AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); + procedure actAnadirExecute(Sender: TObject); + procedure actModificarExecute(Sender: TObject); + procedure actEliminarExecute(Sender: TObject); + procedure actEliminarUpdate(Sender: TObject); + procedure actModificarUpdate(Sender: TObject); + protected + FCodigoMontaje: Integer; + FPedidosMontaje: IBizPedidosMontaje; + function GetCodigoMontaje: Integer; + procedure SetCodigoMontaje(const Value: Integer); + function GetPedidosMontaje: IBizPedidosMontaje; + procedure SetPedidosMontaje(const Value: IBizPedidosMontaje); + public + property PedidosMontaje: IBizPedidosMontaje read GetPedidosMontaje write SetPedidosMontaje; + property CodigoMontaje: Integer read GetCodigoMontaje write SetCodigoMontaje; + end; + +var + frViewPedidosMontaje: TfrViewPedidosMontaje; + +implementation + +uses uDataModuleMontajes; + + +{$R *.dfm} + +{ TfrViewPedidosMontaje } + +{ +******************************* TfrViewPedidosMontaje ******************************* +} +function TfrViewPedidosMontaje.GetPedidosMontaje: IBizPedidosMontaje; +begin + Result := FPedidosMontaje; +end; + +procedure TfrViewPedidosMontaje.SetPedidosMontaje(const Value: IBizPedidosMontaje); +begin + FPedidosMontaje := Value; + if Assigned(FPedidosMontaje) then + DADataSource.DataTable := FPedidosMontaje.DataTable; +end; + + +procedure TfrViewPedidosMontaje.cxGridViewCODIGOCustomDrawCell( + Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; + AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); +var + R : TRect; +begin + inherited; + R := AViewInfo.ContentBounds; + ACanvas.FillRect(R); + ACanvas.DrawImage(PngImageList, R.Left, R.Top, 0); + ADone := True; +end; + +procedure TfrViewPedidosMontaje.actAnadirExecute(Sender: TObject); +begin + FPedidosMontaje.AnadirPedido(CodigoMontaje); + Self.RefreshGrid; + Self.SyncFocusedRecordsFromDataSet; +end; + +procedure TfrViewPedidosMontaje.actModificarExecute(Sender: TObject); +begin + Self.SyncFocusedRecordsFromGrid; + FPedidosMontaje.Show; + Self.RefreshGrid; + Self.SyncFocusedRecordsFromDataSet; +end; + +procedure TfrViewPedidosMontaje.actEliminarExecute(Sender: TObject); +begin + Self.SyncFocusedRecordsFromGrid; + try + FPedidosMontaje.Delete; + FPedidosMontaje.DataTable.ApplyUpdates; + finally + Self.RefreshGrid; + Self.SyncFocusedRecordsFromDataSet; + end; +end; + +function TfrViewPedidosMontaje.GetCodigoMontaje: Integer; +begin + Result := FCodigoMontaje; +end; + +procedure TfrViewPedidosMontaje.SetCodigoMontaje(const Value: Integer); +begin + FCodigoMontaje := Value; +end; + +procedure TfrViewPedidosMontaje.actEliminarUpdate(Sender: TObject); +begin + inherited; + if Assigned(DADataSource.DataTable) then + (Sender as TAction).Enabled := (not DADataSource.DataTable.IsEmpty) + else + (Sender as TAction).Enabled := False; +end; + +procedure TfrViewPedidosMontaje.actModificarUpdate(Sender: TObject); +begin + inherited; + if Assigned(DADataSource.DataTable) then + (Sender as TAction).Enabled := (not DADataSource.DataTable.IsEmpty) + else + (Sender as TAction).Enabled := False; +end; + +end. diff --git a/Modulos/Montajes/Cliente/uViewPresupuestoMontaje.ddp b/Modulos/Montajes/Cliente/uViewPresupuestoMontaje.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Montajes/Cliente/uViewPresupuestoMontaje.ddp differ diff --git a/Modulos/Montajes/Cliente/uViewPresupuestoMontaje.dfm b/Modulos/Montajes/Cliente/uViewPresupuestoMontaje.dfm new file mode 100644 index 0000000..a9438a7 --- /dev/null +++ b/Modulos/Montajes/Cliente/uViewPresupuestoMontaje.dfm @@ -0,0 +1,7 @@ +inherited frViewPresupuestoMontaje: TfrViewPresupuestoMontaje + inherited ActionList1: TActionList + inherited actElegirPresupuesto: TAction + OnExecute = actElegirPresupuestoExecute + end + end +end diff --git a/Modulos/Montajes/Cliente/uViewPresupuestoMontaje.pas b/Modulos/Montajes/Cliente/uViewPresupuestoMontaje.pas new file mode 100644 index 0000000..ec721c8 --- /dev/null +++ b/Modulos/Montajes/Cliente/uViewPresupuestoMontaje.pas @@ -0,0 +1,53 @@ +unit uViewPresupuestoMontaje; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewPresupuestoRelacionado, ImgList, PngImageList, ActnList, + cxControls, cxContainer, cxEdit, cxTextEdit, ComCtrls, ToolWin, ExtCtrls, + StdCtrls, cxDBEdit, DB, uDADataTable; + +type + TfrViewPresupuestoMontaje = class(TfrViewPresupuestoRelacionado) + procedure actElegirPresupuestoExecute(Sender: TObject); + private + public + end; + +var + frViewPresupuestoMontaje: TfrViewPresupuestoMontaje; + +implementation +{$R *.dfm} + +uses + uBizPresupuestosCliente, uDataModulePresupuestos; + +procedure TfrViewPresupuestoMontaje.actElegirPresupuestoExecute(Sender: TObject); +var + APresupuesto : IBizPresupuestos; +begin + inherited; + + if Length(edtlReferencia.Text) > 0 then + if (MessageBox(0, 'Este montaje ya tiene asociado un presupuesto. '+#13+#10+ + 'Si elige otro presupuesto, se cambiará en este montaje el cliente para '+ + 'hacerlo coincidir con el presupuesto elegido. '+#13+#10+ + '¿Desea continuar?', 'Confirmación', MB_ICONQUESTION or MB_YESNO) = idNo) then + Exit; + + APresupuesto := dmPresupuestos.GetPresupuestosSinMontaje; + try + if APresupuesto.ShowForSelect = mrOK then + begin + APresupuesto := dmPresupuestos.GetItemsSeleccionados(APresupuesto); + APresupuesto.DataTable.Active := True; + Self.Presupuesto := APresupuesto; + end; + finally + APresupuesto := NIL; + end; +end; + +end. diff --git a/Modulos/Montajes/Reglas/schMontajesClient_Intf.pas b/Modulos/Montajes/Reglas/schMontajesClient_Intf.pas new file mode 100644 index 0000000..52c6c65 --- /dev/null +++ b/Modulos/Montajes/Reglas/schMontajesClient_Intf.pas @@ -0,0 +1,1327 @@ +unit schMontajesClient_Intf; + +interface + +uses + Classes, DB, SysUtils, uROClasses, uDADataTable; + +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_darNuevaReferencia = '{6547ACA4-805B-4EE7-9499-2D0196BEFC6F}'; + RID_InformeCabeceraFicha = '{F09A7509-40A9-480E-8E43-F05EF537125E}'; + RID_Montajes = '{C70762DB-3285-4C26-888D-63B20160927C}'; + RID_Refresh_Montajes = '{40108B41-7E49-4883-9528-3FBD57B56703}'; + RID_FichaBeneficios = '{573182C2-5168-428D-99A9-5BFBA9E74705}'; + RID_InformeDetallesFicha = '{BA1E0ABA-559C-4A1A-B028-32382BB3111A}'; + RID_FichaBeneficios_Aux = '{706C0AC4-9532-4640-AAF4-BFA1DCD52D26}'; + + { Data table names } + nme_darNuevaReferencia = 'darNuevaReferencia'; + nme_InformeCabeceraFicha = 'InformeCabeceraFicha'; + nme_Montajes = 'Montajes'; + nme_Refresh_Montajes = 'Refresh_Montajes'; + nme_FichaBeneficios = 'FichaBeneficios'; + nme_InformeDetallesFicha = 'InformeDetallesFicha'; + nme_FichaBeneficios_Aux = 'FichaBeneficios_Aux'; + + { darNuevaReferencia fields } + fld_darNuevaReferenciaREFERENCIA = 'REFERENCIA'; + + { darNuevaReferencia field indexes } + idx_darNuevaReferenciaREFERENCIA = 0; + + { InformeCabeceraFicha fields } + fld_InformeCabeceraFichaREFERENCIA = 'REFERENCIA'; + fld_InformeCabeceraFichaFECHAINICIO = 'FECHAINICIO'; + fld_InformeCabeceraFichaFECHAFIN = 'FECHAFIN'; + fld_InformeCabeceraFichaSITUACION = 'SITUACION'; + fld_InformeCabeceraFichaOBSERVACIONES = 'OBSERVACIONES'; + fld_InformeCabeceraFichaCODIGOCONTACTO = 'CODIGOCONTACTO'; + fld_InformeCabeceraFichaNOMBRE = 'NOMBRE'; + fld_InformeCabeceraFichaNIFCIF = 'NIFCIF'; + fld_InformeCabeceraFichaCALLE = 'CALLE'; + fld_InformeCabeceraFichaCODIGOPOSTAL = 'CODIGOPOSTAL'; + fld_InformeCabeceraFichaPOBLACION = 'POBLACION'; + fld_InformeCabeceraFichaPROVINCIA = 'PROVINCIA'; + fld_InformeCabeceraFichaTELEFONO1 = 'TELEFONO1'; + fld_InformeCabeceraFichaTELEFONO2 = 'TELEFONO2'; + fld_InformeCabeceraFichaMOVIL = 'MOVIL'; + + { InformeCabeceraFicha field indexes } + idx_InformeCabeceraFichaREFERENCIA = 0; + idx_InformeCabeceraFichaFECHAINICIO = 1; + idx_InformeCabeceraFichaFECHAFIN = 2; + idx_InformeCabeceraFichaSITUACION = 3; + idx_InformeCabeceraFichaOBSERVACIONES = 4; + idx_InformeCabeceraFichaCODIGOCONTACTO = 5; + idx_InformeCabeceraFichaNOMBRE = 6; + idx_InformeCabeceraFichaNIFCIF = 7; + idx_InformeCabeceraFichaCALLE = 8; + idx_InformeCabeceraFichaCODIGOPOSTAL = 9; + idx_InformeCabeceraFichaPOBLACION = 10; + idx_InformeCabeceraFichaPROVINCIA = 11; + idx_InformeCabeceraFichaTELEFONO1 = 12; + idx_InformeCabeceraFichaTELEFONO2 = 13; + idx_InformeCabeceraFichaMOVIL = 14; + + { Montajes fields } + fld_MontajesCODIGOEMPRESA = 'CODIGOEMPRESA'; + fld_MontajesCODIGO = 'CODIGO'; + fld_MontajesFECHAALTA = 'FECHAALTA'; + fld_MontajesUSUARIO = 'USUARIO'; + fld_MontajesFECHAINICIO = 'FECHAINICIO'; + fld_MontajesFECHAFIN = 'FECHAFIN'; + fld_MontajesSITUACION = 'SITUACION'; + fld_MontajesOBSERVACIONES = 'OBSERVACIONES'; + fld_MontajesCODIGOPRESUPUESTO = 'CODIGOPRESUPUESTO'; + fld_MontajesREFERENCIA = 'REFERENCIA'; + fld_MontajesCODIGOCONTACTO = 'CODIGOCONTACTO'; + fld_MontajesNOMBRE = 'NOMBRE'; + fld_MontajesOPCION = 'OPCION'; + + { Montajes field indexes } + idx_MontajesCODIGOEMPRESA = 0; + idx_MontajesCODIGO = 1; + idx_MontajesFECHAALTA = 2; + idx_MontajesUSUARIO = 3; + idx_MontajesFECHAINICIO = 4; + idx_MontajesFECHAFIN = 5; + idx_MontajesSITUACION = 6; + idx_MontajesOBSERVACIONES = 7; + idx_MontajesCODIGOPRESUPUESTO = 8; + idx_MontajesREFERENCIA = 9; + idx_MontajesCODIGOCONTACTO = 10; + idx_MontajesNOMBRE = 11; + idx_MontajesOPCION = 12; + + { Refresh_Montajes fields } + fld_Refresh_MontajesCODIGOEMPRESA = 'CODIGOEMPRESA'; + fld_Refresh_MontajesCODIGO = 'CODIGO'; + fld_Refresh_MontajesFECHAALTA = 'FECHAALTA'; + fld_Refresh_MontajesUSUARIO = 'USUARIO'; + fld_Refresh_MontajesFECHAINICIO = 'FECHAINICIO'; + fld_Refresh_MontajesFECHAFIN = 'FECHAFIN'; + fld_Refresh_MontajesSITUACION = 'SITUACION'; + fld_Refresh_MontajesOBSERVACIONES = 'OBSERVACIONES'; + fld_Refresh_MontajesCODIGOPRESUPUESTO = 'CODIGOPRESUPUESTO'; + fld_Refresh_MontajesREFERENCIA = 'REFERENCIA'; + fld_Refresh_MontajesCODIGOCONTACTO = 'CODIGOCONTACTO'; + fld_Refresh_MontajesNOMBRE = 'NOMBRE'; + fld_Refresh_MontajesOPCION = 'OPCION'; + + { Refresh_Montajes field indexes } + idx_Refresh_MontajesCODIGOEMPRESA = 0; + idx_Refresh_MontajesCODIGO = 1; + idx_Refresh_MontajesFECHAALTA = 2; + idx_Refresh_MontajesUSUARIO = 3; + idx_Refresh_MontajesFECHAINICIO = 4; + idx_Refresh_MontajesFECHAFIN = 5; + idx_Refresh_MontajesSITUACION = 6; + idx_Refresh_MontajesOBSERVACIONES = 7; + idx_Refresh_MontajesCODIGOPRESUPUESTO = 8; + idx_Refresh_MontajesREFERENCIA = 9; + idx_Refresh_MontajesCODIGOCONTACTO = 10; + idx_Refresh_MontajesNOMBRE = 11; + idx_Refresh_MontajesOPCION = 12; + + { FichaBeneficios fields } + fld_FichaBeneficiosCODIGOMONTAJE = 'CODIGOMONTAJE'; + fld_FichaBeneficiosNUMCONCEPTO = 'NUMCONCEPTO'; + fld_FichaBeneficiosDESCRIPCION = 'DESCRIPCION'; + fld_FichaBeneficiosMODELO = 'MODELO'; + fld_FichaBeneficiosPROVEEDOR = 'PROVEEDOR'; + fld_FichaBeneficiosCOMPRA = 'COMPRA'; + fld_FichaBeneficiosVENTA = 'VENTA'; + + { FichaBeneficios field indexes } + idx_FichaBeneficiosCODIGOMONTAJE = 0; + idx_FichaBeneficiosNUMCONCEPTO = 1; + idx_FichaBeneficiosDESCRIPCION = 2; + idx_FichaBeneficiosMODELO = 3; + idx_FichaBeneficiosPROVEEDOR = 4; + idx_FichaBeneficiosCOMPRA = 5; + idx_FichaBeneficiosVENTA = 6; + + { InformeDetallesFicha fields } + fld_InformeDetallesFichaDESCRIPCION = 'DESCRIPCION'; + fld_InformeDetallesFichaMODELO = 'MODELO'; + fld_InformeDetallesFichaPROVEEDOR = 'PROVEEDOR'; + fld_InformeDetallesFichaCOMPRA = 'COMPRA'; + fld_InformeDetallesFichaVENTA = 'VENTA'; + + { InformeDetallesFicha field indexes } + idx_InformeDetallesFichaDESCRIPCION = 0; + idx_InformeDetallesFichaMODELO = 1; + idx_InformeDetallesFichaPROVEEDOR = 2; + idx_InformeDetallesFichaCOMPRA = 3; + idx_InformeDetallesFichaVENTA = 4; + + { FichaBeneficios_Aux fields } + fld_FichaBeneficios_AuxNUMCONCEPTO = 'NUMCONCEPTO'; + fld_FichaBeneficios_AuxDESCRIPCION = 'DESCRIPCION'; + + { FichaBeneficios_Aux field indexes } + idx_FichaBeneficios_AuxNUMCONCEPTO = 0; + idx_FichaBeneficios_AuxDESCRIPCION = 1; + +type + { IdarNuevaReferencia } + IdarNuevaReferencia = interface(IDAStronglyTypedDataTable) + ['{1D96C64B-6FB2-4AAF-8444-A92600498486}'] + { Property getters and setters } + function GetREFERENCIAValue: String; + procedure SetREFERENCIAValue(const aValue: String); + + + { Properties } + property REFERENCIA: String read GetREFERENCIAValue write SetREFERENCIAValue; + end; + + { TdarNuevaReferenciaDataTableRules } + TdarNuevaReferenciaDataTableRules = class(TDADataTableRules, IdarNuevaReferencia) + private + protected + { Property getters and setters } + function GetREFERENCIAValue: String; virtual; + procedure SetREFERENCIAValue(const aValue: String); virtual; + + { Properties } + property REFERENCIA: String read GetREFERENCIAValue write SetREFERENCIAValue; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + + { IInformeCabeceraFicha } + IInformeCabeceraFicha = interface(IDAStronglyTypedDataTable) + ['{72D2A87F-6179-41A5-84D9-22060DEE9727}'] + { Property getters and setters } + function GetREFERENCIAValue: String; + procedure SetREFERENCIAValue(const aValue: String); + function GetFECHAINICIOValue: DateTime; + procedure SetFECHAINICIOValue(const aValue: DateTime); + function GetFECHAFINValue: DateTime; + procedure SetFECHAFINValue(const aValue: DateTime); + function GetSITUACIONValue: String; + procedure SetSITUACIONValue(const aValue: String); + function GetOBSERVACIONESValue: IROStrings; + procedure SetOBSERVACIONESValue(const aValue: IROStrings); + function GetCODIGOCONTACTOValue: Integer; + procedure SetCODIGOCONTACTOValue(const aValue: Integer); + function GetNOMBREValue: String; + procedure SetNOMBREValue(const aValue: String); + function GetNIFCIFValue: String; + procedure SetNIFCIFValue(const aValue: String); + function GetCALLEValue: String; + procedure SetCALLEValue(const aValue: String); + function GetCODIGOPOSTALValue: String; + procedure SetCODIGOPOSTALValue(const aValue: String); + function GetPOBLACIONValue: String; + procedure SetPOBLACIONValue(const aValue: String); + function GetPROVINCIAValue: String; + procedure SetPROVINCIAValue(const aValue: String); + function GetTELEFONO1Value: String; + procedure SetTELEFONO1Value(const aValue: String); + function GetTELEFONO2Value: String; + procedure SetTELEFONO2Value(const aValue: String); + function GetMOVILValue: String; + procedure SetMOVILValue(const aValue: String); + + + { Properties } + property REFERENCIA: String read GetREFERENCIAValue write SetREFERENCIAValue; + property FECHAINICIO: DateTime read GetFECHAINICIOValue write SetFECHAINICIOValue; + property FECHAFIN: DateTime read GetFECHAFINValue write SetFECHAFINValue; + property SITUACION: String read GetSITUACIONValue write SetSITUACIONValue; + property OBSERVACIONES: IROStrings read GetOBSERVACIONESValue write SetOBSERVACIONESValue; + property CODIGOCONTACTO: Integer read GetCODIGOCONTACTOValue write SetCODIGOCONTACTOValue; + property NOMBRE: String read GetNOMBREValue write SetNOMBREValue; + property NIFCIF: String read GetNIFCIFValue write SetNIFCIFValue; + property CALLE: String read GetCALLEValue write SetCALLEValue; + property CODIGOPOSTAL: String read GetCODIGOPOSTALValue write SetCODIGOPOSTALValue; + property POBLACION: String read GetPOBLACIONValue write SetPOBLACIONValue; + property PROVINCIA: String read GetPROVINCIAValue write SetPROVINCIAValue; + property TELEFONO1: String read GetTELEFONO1Value write SetTELEFONO1Value; + property TELEFONO2: String read GetTELEFONO2Value write SetTELEFONO2Value; + property MOVIL: String read GetMOVILValue write SetMOVILValue; + end; + + { TInformeCabeceraFichaDataTableRules } + TInformeCabeceraFichaDataTableRules = class(TDADataTableRules, IInformeCabeceraFicha) + private + protected + { Property getters and setters } + function GetREFERENCIAValue: String; virtual; + procedure SetREFERENCIAValue(const aValue: String); virtual; + function GetFECHAINICIOValue: DateTime; virtual; + procedure SetFECHAINICIOValue(const aValue: DateTime); virtual; + function GetFECHAFINValue: DateTime; virtual; + procedure SetFECHAFINValue(const aValue: DateTime); virtual; + function GetSITUACIONValue: String; virtual; + procedure SetSITUACIONValue(const aValue: String); virtual; + function GetOBSERVACIONESValue: IROStrings; virtual; + procedure SetOBSERVACIONESValue(const aValue: IROStrings); virtual; + function GetCODIGOCONTACTOValue: Integer; virtual; + procedure SetCODIGOCONTACTOValue(const aValue: Integer); virtual; + function GetNOMBREValue: String; virtual; + procedure SetNOMBREValue(const aValue: String); virtual; + function GetNIFCIFValue: String; virtual; + procedure SetNIFCIFValue(const aValue: String); virtual; + function GetCALLEValue: String; virtual; + procedure SetCALLEValue(const aValue: String); virtual; + function GetCODIGOPOSTALValue: String; virtual; + procedure SetCODIGOPOSTALValue(const aValue: String); virtual; + function GetPOBLACIONValue: String; virtual; + procedure SetPOBLACIONValue(const aValue: String); virtual; + function GetPROVINCIAValue: String; virtual; + procedure SetPROVINCIAValue(const aValue: String); virtual; + function GetTELEFONO1Value: String; virtual; + procedure SetTELEFONO1Value(const aValue: String); virtual; + function GetTELEFONO2Value: String; virtual; + procedure SetTELEFONO2Value(const aValue: String); virtual; + function GetMOVILValue: String; virtual; + procedure SetMOVILValue(const aValue: String); virtual; + + { Properties } + property REFERENCIA: String read GetREFERENCIAValue write SetREFERENCIAValue; + property FECHAINICIO: DateTime read GetFECHAINICIOValue write SetFECHAINICIOValue; + property FECHAFIN: DateTime read GetFECHAFINValue write SetFECHAFINValue; + property SITUACION: String read GetSITUACIONValue write SetSITUACIONValue; + property OBSERVACIONES: IROStrings read GetOBSERVACIONESValue write SetOBSERVACIONESValue; + property CODIGOCONTACTO: Integer read GetCODIGOCONTACTOValue write SetCODIGOCONTACTOValue; + property NOMBRE: String read GetNOMBREValue write SetNOMBREValue; + property NIFCIF: String read GetNIFCIFValue write SetNIFCIFValue; + property CALLE: String read GetCALLEValue write SetCALLEValue; + property CODIGOPOSTAL: String read GetCODIGOPOSTALValue write SetCODIGOPOSTALValue; + property POBLACION: String read GetPOBLACIONValue write SetPOBLACIONValue; + property PROVINCIA: String read GetPROVINCIAValue write SetPROVINCIAValue; + property TELEFONO1: String read GetTELEFONO1Value write SetTELEFONO1Value; + property TELEFONO2: String read GetTELEFONO2Value write SetTELEFONO2Value; + property MOVIL: String read GetMOVILValue write SetMOVILValue; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + + { IMontajes } + IMontajes = interface(IDAStronglyTypedDataTable) + ['{ECCCC9FA-E3EF-4F98-9B46-795A66D964DB}'] + { Property getters and setters } + function GetCODIGOEMPRESAValue: Integer; + procedure SetCODIGOEMPRESAValue(const aValue: Integer); + function GetCODIGOValue: Integer; + procedure SetCODIGOValue(const aValue: Integer); + function GetFECHAALTAValue: DateTime; + procedure SetFECHAALTAValue(const aValue: DateTime); + function GetUSUARIOValue: String; + procedure SetUSUARIOValue(const aValue: String); + function GetFECHAINICIOValue: DateTime; + procedure SetFECHAINICIOValue(const aValue: DateTime); + function GetFECHAFINValue: DateTime; + procedure SetFECHAFINValue(const aValue: DateTime); + function GetSITUACIONValue: String; + procedure SetSITUACIONValue(const aValue: String); + function GetOBSERVACIONESValue: IROStrings; + procedure SetOBSERVACIONESValue(const aValue: IROStrings); + function GetCODIGOPRESUPUESTOValue: Integer; + procedure SetCODIGOPRESUPUESTOValue(const aValue: Integer); + function GetREFERENCIAValue: String; + procedure SetREFERENCIAValue(const aValue: String); + function GetCODIGOCONTACTOValue: Integer; + procedure SetCODIGOCONTACTOValue(const aValue: Integer); + function GetNOMBREValue: String; + procedure SetNOMBREValue(const aValue: String); + function GetOPCIONValue: String; + procedure SetOPCIONValue(const aValue: String); + + + { Properties } + property CODIGOEMPRESA: Integer read GetCODIGOEMPRESAValue write SetCODIGOEMPRESAValue; + property CODIGO: Integer read GetCODIGOValue write SetCODIGOValue; + property FECHAALTA: DateTime read GetFECHAALTAValue write SetFECHAALTAValue; + property USUARIO: String read GetUSUARIOValue write SetUSUARIOValue; + property FECHAINICIO: DateTime read GetFECHAINICIOValue write SetFECHAINICIOValue; + property FECHAFIN: DateTime read GetFECHAFINValue write SetFECHAFINValue; + property SITUACION: String read GetSITUACIONValue write SetSITUACIONValue; + property OBSERVACIONES: IROStrings read GetOBSERVACIONESValue write SetOBSERVACIONESValue; + property CODIGOPRESUPUESTO: Integer read GetCODIGOPRESUPUESTOValue write SetCODIGOPRESUPUESTOValue; + property REFERENCIA: String read GetREFERENCIAValue write SetREFERENCIAValue; + property CODIGOCONTACTO: Integer read GetCODIGOCONTACTOValue write SetCODIGOCONTACTOValue; + property NOMBRE: String read GetNOMBREValue write SetNOMBREValue; + property OPCION: String read GetOPCIONValue write SetOPCIONValue; + end; + + { TMontajesDataTableRules } + TMontajesDataTableRules = class(TDADataTableRules, IMontajes) + private + protected + { Property getters and setters } + function GetCODIGOEMPRESAValue: Integer; virtual; + procedure SetCODIGOEMPRESAValue(const aValue: Integer); virtual; + function GetCODIGOValue: Integer; virtual; + procedure SetCODIGOValue(const aValue: Integer); virtual; + function GetFECHAALTAValue: DateTime; virtual; + procedure SetFECHAALTAValue(const aValue: DateTime); virtual; + function GetUSUARIOValue: String; virtual; + procedure SetUSUARIOValue(const aValue: String); virtual; + function GetFECHAINICIOValue: DateTime; virtual; + procedure SetFECHAINICIOValue(const aValue: DateTime); virtual; + function GetFECHAFINValue: DateTime; virtual; + procedure SetFECHAFINValue(const aValue: DateTime); virtual; + function GetSITUACIONValue: String; virtual; + procedure SetSITUACIONValue(const aValue: String); virtual; + function GetOBSERVACIONESValue: IROStrings; virtual; + procedure SetOBSERVACIONESValue(const aValue: IROStrings); virtual; + function GetCODIGOPRESUPUESTOValue: Integer; virtual; + procedure SetCODIGOPRESUPUESTOValue(const aValue: Integer); virtual; + function GetREFERENCIAValue: String; virtual; + procedure SetREFERENCIAValue(const aValue: String); virtual; + function GetCODIGOCONTACTOValue: Integer; virtual; + procedure SetCODIGOCONTACTOValue(const aValue: Integer); virtual; + function GetNOMBREValue: String; virtual; + procedure SetNOMBREValue(const aValue: String); virtual; + function GetOPCIONValue: String; virtual; + procedure SetOPCIONValue(const aValue: String); virtual; + + { Properties } + property CODIGOEMPRESA: Integer read GetCODIGOEMPRESAValue write SetCODIGOEMPRESAValue; + property CODIGO: Integer read GetCODIGOValue write SetCODIGOValue; + property FECHAALTA: DateTime read GetFECHAALTAValue write SetFECHAALTAValue; + property USUARIO: String read GetUSUARIOValue write SetUSUARIOValue; + property FECHAINICIO: DateTime read GetFECHAINICIOValue write SetFECHAINICIOValue; + property FECHAFIN: DateTime read GetFECHAFINValue write SetFECHAFINValue; + property SITUACION: String read GetSITUACIONValue write SetSITUACIONValue; + property OBSERVACIONES: IROStrings read GetOBSERVACIONESValue write SetOBSERVACIONESValue; + property CODIGOPRESUPUESTO: Integer read GetCODIGOPRESUPUESTOValue write SetCODIGOPRESUPUESTOValue; + property REFERENCIA: String read GetREFERENCIAValue write SetREFERENCIAValue; + property CODIGOCONTACTO: Integer read GetCODIGOCONTACTOValue write SetCODIGOCONTACTOValue; + property NOMBRE: String read GetNOMBREValue write SetNOMBREValue; + property OPCION: String read GetOPCIONValue write SetOPCIONValue; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + + { IRefresh_Montajes } + IRefresh_Montajes = interface(IDAStronglyTypedDataTable) + ['{FAB2B839-6970-4AB2-A8BC-088A8B74FDCC}'] + { Property getters and setters } + function GetCODIGOEMPRESAValue: Integer; + procedure SetCODIGOEMPRESAValue(const aValue: Integer); + function GetCODIGOValue: Integer; + procedure SetCODIGOValue(const aValue: Integer); + function GetFECHAALTAValue: DateTime; + procedure SetFECHAALTAValue(const aValue: DateTime); + function GetUSUARIOValue: String; + procedure SetUSUARIOValue(const aValue: String); + function GetFECHAINICIOValue: DateTime; + procedure SetFECHAINICIOValue(const aValue: DateTime); + function GetFECHAFINValue: DateTime; + procedure SetFECHAFINValue(const aValue: DateTime); + function GetSITUACIONValue: String; + procedure SetSITUACIONValue(const aValue: String); + function GetOBSERVACIONESValue: IROStrings; + procedure SetOBSERVACIONESValue(const aValue: IROStrings); + function GetCODIGOPRESUPUESTOValue: Integer; + procedure SetCODIGOPRESUPUESTOValue(const aValue: Integer); + function GetREFERENCIAValue: String; + procedure SetREFERENCIAValue(const aValue: String); + function GetCODIGOCONTACTOValue: Integer; + procedure SetCODIGOCONTACTOValue(const aValue: Integer); + function GetNOMBREValue: String; + procedure SetNOMBREValue(const aValue: String); + function GetOPCIONValue: String; + procedure SetOPCIONValue(const aValue: String); + + + { Properties } + property CODIGOEMPRESA: Integer read GetCODIGOEMPRESAValue write SetCODIGOEMPRESAValue; + property CODIGO: Integer read GetCODIGOValue write SetCODIGOValue; + property FECHAALTA: DateTime read GetFECHAALTAValue write SetFECHAALTAValue; + property USUARIO: String read GetUSUARIOValue write SetUSUARIOValue; + property FECHAINICIO: DateTime read GetFECHAINICIOValue write SetFECHAINICIOValue; + property FECHAFIN: DateTime read GetFECHAFINValue write SetFECHAFINValue; + property SITUACION: String read GetSITUACIONValue write SetSITUACIONValue; + property OBSERVACIONES: IROStrings read GetOBSERVACIONESValue write SetOBSERVACIONESValue; + property CODIGOPRESUPUESTO: Integer read GetCODIGOPRESUPUESTOValue write SetCODIGOPRESUPUESTOValue; + property REFERENCIA: String read GetREFERENCIAValue write SetREFERENCIAValue; + property CODIGOCONTACTO: Integer read GetCODIGOCONTACTOValue write SetCODIGOCONTACTOValue; + property NOMBRE: String read GetNOMBREValue write SetNOMBREValue; + property OPCION: String read GetOPCIONValue write SetOPCIONValue; + end; + + { TRefresh_MontajesDataTableRules } + TRefresh_MontajesDataTableRules = class(TDADataTableRules, IRefresh_Montajes) + private + protected + { Property getters and setters } + function GetCODIGOEMPRESAValue: Integer; virtual; + procedure SetCODIGOEMPRESAValue(const aValue: Integer); virtual; + function GetCODIGOValue: Integer; virtual; + procedure SetCODIGOValue(const aValue: Integer); virtual; + function GetFECHAALTAValue: DateTime; virtual; + procedure SetFECHAALTAValue(const aValue: DateTime); virtual; + function GetUSUARIOValue: String; virtual; + procedure SetUSUARIOValue(const aValue: String); virtual; + function GetFECHAINICIOValue: DateTime; virtual; + procedure SetFECHAINICIOValue(const aValue: DateTime); virtual; + function GetFECHAFINValue: DateTime; virtual; + procedure SetFECHAFINValue(const aValue: DateTime); virtual; + function GetSITUACIONValue: String; virtual; + procedure SetSITUACIONValue(const aValue: String); virtual; + function GetOBSERVACIONESValue: IROStrings; virtual; + procedure SetOBSERVACIONESValue(const aValue: IROStrings); virtual; + function GetCODIGOPRESUPUESTOValue: Integer; virtual; + procedure SetCODIGOPRESUPUESTOValue(const aValue: Integer); virtual; + function GetREFERENCIAValue: String; virtual; + procedure SetREFERENCIAValue(const aValue: String); virtual; + function GetCODIGOCONTACTOValue: Integer; virtual; + procedure SetCODIGOCONTACTOValue(const aValue: Integer); virtual; + function GetNOMBREValue: String; virtual; + procedure SetNOMBREValue(const aValue: String); virtual; + function GetOPCIONValue: String; virtual; + procedure SetOPCIONValue(const aValue: String); virtual; + + { Properties } + property CODIGOEMPRESA: Integer read GetCODIGOEMPRESAValue write SetCODIGOEMPRESAValue; + property CODIGO: Integer read GetCODIGOValue write SetCODIGOValue; + property FECHAALTA: DateTime read GetFECHAALTAValue write SetFECHAALTAValue; + property USUARIO: String read GetUSUARIOValue write SetUSUARIOValue; + property FECHAINICIO: DateTime read GetFECHAINICIOValue write SetFECHAINICIOValue; + property FECHAFIN: DateTime read GetFECHAFINValue write SetFECHAFINValue; + property SITUACION: String read GetSITUACIONValue write SetSITUACIONValue; + property OBSERVACIONES: IROStrings read GetOBSERVACIONESValue write SetOBSERVACIONESValue; + property CODIGOPRESUPUESTO: Integer read GetCODIGOPRESUPUESTOValue write SetCODIGOPRESUPUESTOValue; + property REFERENCIA: String read GetREFERENCIAValue write SetREFERENCIAValue; + property CODIGOCONTACTO: Integer read GetCODIGOCONTACTOValue write SetCODIGOCONTACTOValue; + property NOMBRE: String read GetNOMBREValue write SetNOMBREValue; + property OPCION: String read GetOPCIONValue write SetOPCIONValue; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + + { IFichaBeneficios } + IFichaBeneficios = interface(IDAStronglyTypedDataTable) + ['{7C92B973-791A-477D-8DE0-BF61AF95236A}'] + { Property getters and setters } + function GetCODIGOMONTAJEValue: Integer; + procedure SetCODIGOMONTAJEValue(const aValue: Integer); + function GetNUMCONCEPTOValue: Integer; + procedure SetNUMCONCEPTOValue(const aValue: Integer); + function GetDESCRIPCIONValue: String; + procedure SetDESCRIPCIONValue(const aValue: String); + function GetMODELOValue: String; + procedure SetMODELOValue(const aValue: String); + function GetPROVEEDORValue: String; + procedure SetPROVEEDORValue(const aValue: String); + function GetCOMPRAValue: Float; + procedure SetCOMPRAValue(const aValue: Float); + function GetVENTAValue: Float; + procedure SetVENTAValue(const aValue: Float); + + + { Properties } + property CODIGOMONTAJE: Integer read GetCODIGOMONTAJEValue write SetCODIGOMONTAJEValue; + property NUMCONCEPTO: Integer read GetNUMCONCEPTOValue write SetNUMCONCEPTOValue; + property DESCRIPCION: String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + property MODELO: String read GetMODELOValue write SetMODELOValue; + property PROVEEDOR: String read GetPROVEEDORValue write SetPROVEEDORValue; + property COMPRA: Float read GetCOMPRAValue write SetCOMPRAValue; + property VENTA: Float read GetVENTAValue write SetVENTAValue; + end; + + { TFichaBeneficiosDataTableRules } + TFichaBeneficiosDataTableRules = class(TDADataTableRules, IFichaBeneficios) + private + protected + { Property getters and setters } + function GetCODIGOMONTAJEValue: Integer; virtual; + procedure SetCODIGOMONTAJEValue(const aValue: Integer); virtual; + function GetNUMCONCEPTOValue: Integer; virtual; + procedure SetNUMCONCEPTOValue(const aValue: Integer); virtual; + function GetDESCRIPCIONValue: String; virtual; + procedure SetDESCRIPCIONValue(const aValue: String); virtual; + function GetMODELOValue: String; virtual; + procedure SetMODELOValue(const aValue: String); virtual; + function GetPROVEEDORValue: String; virtual; + procedure SetPROVEEDORValue(const aValue: String); virtual; + function GetCOMPRAValue: Float; virtual; + procedure SetCOMPRAValue(const aValue: Float); virtual; + function GetVENTAValue: Float; virtual; + procedure SetVENTAValue(const aValue: Float); virtual; + + { Properties } + property CODIGOMONTAJE: Integer read GetCODIGOMONTAJEValue write SetCODIGOMONTAJEValue; + property NUMCONCEPTO: Integer read GetNUMCONCEPTOValue write SetNUMCONCEPTOValue; + property DESCRIPCION: String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + property MODELO: String read GetMODELOValue write SetMODELOValue; + property PROVEEDOR: String read GetPROVEEDORValue write SetPROVEEDORValue; + property COMPRA: Float read GetCOMPRAValue write SetCOMPRAValue; + property VENTA: Float read GetVENTAValue write SetVENTAValue; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + + { IInformeDetallesFicha } + IInformeDetallesFicha = interface(IDAStronglyTypedDataTable) + ['{16284B23-DBDE-405F-9307-CAFDDB913576}'] + { Property getters and setters } + function GetDESCRIPCIONValue: String; + procedure SetDESCRIPCIONValue(const aValue: String); + function GetMODELOValue: String; + procedure SetMODELOValue(const aValue: String); + function GetPROVEEDORValue: String; + procedure SetPROVEEDORValue(const aValue: String); + function GetCOMPRAValue: Float; + procedure SetCOMPRAValue(const aValue: Float); + function GetVENTAValue: Float; + procedure SetVENTAValue(const aValue: Float); + + + { Properties } + property DESCRIPCION: String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + property MODELO: String read GetMODELOValue write SetMODELOValue; + property PROVEEDOR: String read GetPROVEEDORValue write SetPROVEEDORValue; + property COMPRA: Float read GetCOMPRAValue write SetCOMPRAValue; + property VENTA: Float read GetVENTAValue write SetVENTAValue; + end; + + { TInformeDetallesFichaDataTableRules } + TInformeDetallesFichaDataTableRules = class(TDADataTableRules, IInformeDetallesFicha) + private + protected + { Property getters and setters } + function GetDESCRIPCIONValue: String; virtual; + procedure SetDESCRIPCIONValue(const aValue: String); virtual; + function GetMODELOValue: String; virtual; + procedure SetMODELOValue(const aValue: String); virtual; + function GetPROVEEDORValue: String; virtual; + procedure SetPROVEEDORValue(const aValue: String); virtual; + function GetCOMPRAValue: Float; virtual; + procedure SetCOMPRAValue(const aValue: Float); virtual; + function GetVENTAValue: Float; virtual; + procedure SetVENTAValue(const aValue: Float); virtual; + + { Properties } + property DESCRIPCION: String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + property MODELO: String read GetMODELOValue write SetMODELOValue; + property PROVEEDOR: String read GetPROVEEDORValue write SetPROVEEDORValue; + property COMPRA: Float read GetCOMPRAValue write SetCOMPRAValue; + property VENTA: Float read GetVENTAValue write SetVENTAValue; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + + { IFichaBeneficios_Aux } + IFichaBeneficios_Aux = interface(IDAStronglyTypedDataTable) + ['{C14BE74A-4651-4387-A6E3-048197F0CAC9}'] + { Property getters and setters } + function GetNUMCONCEPTOValue: Integer; + procedure SetNUMCONCEPTOValue(const aValue: Integer); + function GetDESCRIPCIONValue: String; + procedure SetDESCRIPCIONValue(const aValue: String); + + + { Properties } + property NUMCONCEPTO: Integer read GetNUMCONCEPTOValue write SetNUMCONCEPTOValue; + property DESCRIPCION: String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + end; + + { TFichaBeneficios_AuxDataTableRules } + TFichaBeneficios_AuxDataTableRules = class(TDADataTableRules, IFichaBeneficios_Aux) + private + protected + { Property getters and setters } + function GetNUMCONCEPTOValue: Integer; virtual; + procedure SetNUMCONCEPTOValue(const aValue: Integer); virtual; + function GetDESCRIPCIONValue: String; virtual; + procedure SetDESCRIPCIONValue(const aValue: String); virtual; + + { Properties } + property NUMCONCEPTO: Integer read GetNUMCONCEPTOValue write SetNUMCONCEPTOValue; + property DESCRIPCION: String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + +implementation + +uses Variants; + +{ TdarNuevaReferenciaDataTableRules } +constructor TdarNuevaReferenciaDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TdarNuevaReferenciaDataTableRules.Destroy; +begin + inherited; +end; + +function TdarNuevaReferenciaDataTableRules.GetREFERENCIAValue: String; +begin + result := DataTable.Fields[idx_darNuevaReferenciaREFERENCIA].AsString; +end; + +procedure TdarNuevaReferenciaDataTableRules.SetREFERENCIAValue(const aValue: String); +begin + DataTable.Fields[idx_darNuevaReferenciaREFERENCIA].AsString := aValue; +end; + + +{ TInformeCabeceraFichaDataTableRules } +constructor TInformeCabeceraFichaDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TInformeCabeceraFichaDataTableRules.Destroy; +begin + inherited; +end; + +function TInformeCabeceraFichaDataTableRules.GetREFERENCIAValue: String; +begin + result := DataTable.Fields[idx_InformeCabeceraFichaREFERENCIA].AsString; +end; + +procedure TInformeCabeceraFichaDataTableRules.SetREFERENCIAValue(const aValue: String); +begin + DataTable.Fields[idx_InformeCabeceraFichaREFERENCIA].AsString := aValue; +end; + +function TInformeCabeceraFichaDataTableRules.GetFECHAINICIOValue: DateTime; +begin + result := DataTable.Fields[idx_InformeCabeceraFichaFECHAINICIO].AsDateTime; +end; + +procedure TInformeCabeceraFichaDataTableRules.SetFECHAINICIOValue(const aValue: DateTime); +begin + DataTable.Fields[idx_InformeCabeceraFichaFECHAINICIO].AsDateTime := aValue; +end; + +function TInformeCabeceraFichaDataTableRules.GetFECHAFINValue: DateTime; +begin + result := DataTable.Fields[idx_InformeCabeceraFichaFECHAFIN].AsDateTime; +end; + +procedure TInformeCabeceraFichaDataTableRules.SetFECHAFINValue(const aValue: DateTime); +begin + DataTable.Fields[idx_InformeCabeceraFichaFECHAFIN].AsDateTime := aValue; +end; + +function TInformeCabeceraFichaDataTableRules.GetSITUACIONValue: String; +begin + result := DataTable.Fields[idx_InformeCabeceraFichaSITUACION].AsString; +end; + +procedure TInformeCabeceraFichaDataTableRules.SetSITUACIONValue(const aValue: String); +begin + DataTable.Fields[idx_InformeCabeceraFichaSITUACION].AsString := aValue; +end; + +function TInformeCabeceraFichaDataTableRules.GetOBSERVACIONESValue: IROStrings; +begin + result := NewROStrings(); + result.Text := DataTable.Fields[idx_InformeCabeceraFichaOBSERVACIONES].AsString; +end; + +procedure TInformeCabeceraFichaDataTableRules.SetOBSERVACIONESValue(const aValue: IROStrings); +begin + DataTable.Fields[idx_InformeCabeceraFichaOBSERVACIONES].AsString := aValue.Text; +end; + +function TInformeCabeceraFichaDataTableRules.GetCODIGOCONTACTOValue: Integer; +begin + result := DataTable.Fields[idx_InformeCabeceraFichaCODIGOCONTACTO].AsInteger; +end; + +procedure TInformeCabeceraFichaDataTableRules.SetCODIGOCONTACTOValue(const aValue: Integer); +begin + DataTable.Fields[idx_InformeCabeceraFichaCODIGOCONTACTO].AsInteger := aValue; +end; + +function TInformeCabeceraFichaDataTableRules.GetNOMBREValue: String; +begin + result := DataTable.Fields[idx_InformeCabeceraFichaNOMBRE].AsString; +end; + +procedure TInformeCabeceraFichaDataTableRules.SetNOMBREValue(const aValue: String); +begin + DataTable.Fields[idx_InformeCabeceraFichaNOMBRE].AsString := aValue; +end; + +function TInformeCabeceraFichaDataTableRules.GetNIFCIFValue: String; +begin + result := DataTable.Fields[idx_InformeCabeceraFichaNIFCIF].AsString; +end; + +procedure TInformeCabeceraFichaDataTableRules.SetNIFCIFValue(const aValue: String); +begin + DataTable.Fields[idx_InformeCabeceraFichaNIFCIF].AsString := aValue; +end; + +function TInformeCabeceraFichaDataTableRules.GetCALLEValue: String; +begin + result := DataTable.Fields[idx_InformeCabeceraFichaCALLE].AsString; +end; + +procedure TInformeCabeceraFichaDataTableRules.SetCALLEValue(const aValue: String); +begin + DataTable.Fields[idx_InformeCabeceraFichaCALLE].AsString := aValue; +end; + +function TInformeCabeceraFichaDataTableRules.GetCODIGOPOSTALValue: String; +begin + result := DataTable.Fields[idx_InformeCabeceraFichaCODIGOPOSTAL].AsString; +end; + +procedure TInformeCabeceraFichaDataTableRules.SetCODIGOPOSTALValue(const aValue: String); +begin + DataTable.Fields[idx_InformeCabeceraFichaCODIGOPOSTAL].AsString := aValue; +end; + +function TInformeCabeceraFichaDataTableRules.GetPOBLACIONValue: String; +begin + result := DataTable.Fields[idx_InformeCabeceraFichaPOBLACION].AsString; +end; + +procedure TInformeCabeceraFichaDataTableRules.SetPOBLACIONValue(const aValue: String); +begin + DataTable.Fields[idx_InformeCabeceraFichaPOBLACION].AsString := aValue; +end; + +function TInformeCabeceraFichaDataTableRules.GetPROVINCIAValue: String; +begin + result := DataTable.Fields[idx_InformeCabeceraFichaPROVINCIA].AsString; +end; + +procedure TInformeCabeceraFichaDataTableRules.SetPROVINCIAValue(const aValue: String); +begin + DataTable.Fields[idx_InformeCabeceraFichaPROVINCIA].AsString := aValue; +end; + +function TInformeCabeceraFichaDataTableRules.GetTELEFONO1Value: String; +begin + result := DataTable.Fields[idx_InformeCabeceraFichaTELEFONO1].AsString; +end; + +procedure TInformeCabeceraFichaDataTableRules.SetTELEFONO1Value(const aValue: String); +begin + DataTable.Fields[idx_InformeCabeceraFichaTELEFONO1].AsString := aValue; +end; + +function TInformeCabeceraFichaDataTableRules.GetTELEFONO2Value: String; +begin + result := DataTable.Fields[idx_InformeCabeceraFichaTELEFONO2].AsString; +end; + +procedure TInformeCabeceraFichaDataTableRules.SetTELEFONO2Value(const aValue: String); +begin + DataTable.Fields[idx_InformeCabeceraFichaTELEFONO2].AsString := aValue; +end; + +function TInformeCabeceraFichaDataTableRules.GetMOVILValue: String; +begin + result := DataTable.Fields[idx_InformeCabeceraFichaMOVIL].AsString; +end; + +procedure TInformeCabeceraFichaDataTableRules.SetMOVILValue(const aValue: String); +begin + DataTable.Fields[idx_InformeCabeceraFichaMOVIL].AsString := aValue; +end; + + +{ TMontajesDataTableRules } +constructor TMontajesDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TMontajesDataTableRules.Destroy; +begin + inherited; +end; + +function TMontajesDataTableRules.GetCODIGOEMPRESAValue: Integer; +begin + result := DataTable.Fields[idx_MontajesCODIGOEMPRESA].AsInteger; +end; + +procedure TMontajesDataTableRules.SetCODIGOEMPRESAValue(const aValue: Integer); +begin + DataTable.Fields[idx_MontajesCODIGOEMPRESA].AsInteger := aValue; +end; + +function TMontajesDataTableRules.GetCODIGOValue: Integer; +begin + result := DataTable.Fields[idx_MontajesCODIGO].AsInteger; +end; + +procedure TMontajesDataTableRules.SetCODIGOValue(const aValue: Integer); +begin + DataTable.Fields[idx_MontajesCODIGO].AsInteger := aValue; +end; + +function TMontajesDataTableRules.GetFECHAALTAValue: DateTime; +begin + result := DataTable.Fields[idx_MontajesFECHAALTA].AsDateTime; +end; + +procedure TMontajesDataTableRules.SetFECHAALTAValue(const aValue: DateTime); +begin + DataTable.Fields[idx_MontajesFECHAALTA].AsDateTime := aValue; +end; + +function TMontajesDataTableRules.GetUSUARIOValue: String; +begin + result := DataTable.Fields[idx_MontajesUSUARIO].AsString; +end; + +procedure TMontajesDataTableRules.SetUSUARIOValue(const aValue: String); +begin + DataTable.Fields[idx_MontajesUSUARIO].AsString := aValue; +end; + +function TMontajesDataTableRules.GetFECHAINICIOValue: DateTime; +begin + result := DataTable.Fields[idx_MontajesFECHAINICIO].AsDateTime; +end; + +procedure TMontajesDataTableRules.SetFECHAINICIOValue(const aValue: DateTime); +begin + DataTable.Fields[idx_MontajesFECHAINICIO].AsDateTime := aValue; +end; + +function TMontajesDataTableRules.GetFECHAFINValue: DateTime; +begin + result := DataTable.Fields[idx_MontajesFECHAFIN].AsDateTime; +end; + +procedure TMontajesDataTableRules.SetFECHAFINValue(const aValue: DateTime); +begin + DataTable.Fields[idx_MontajesFECHAFIN].AsDateTime := aValue; +end; + +function TMontajesDataTableRules.GetSITUACIONValue: String; +begin + result := DataTable.Fields[idx_MontajesSITUACION].AsString; +end; + +procedure TMontajesDataTableRules.SetSITUACIONValue(const aValue: String); +begin + DataTable.Fields[idx_MontajesSITUACION].AsString := aValue; +end; + +function TMontajesDataTableRules.GetOBSERVACIONESValue: IROStrings; +begin + result := NewROStrings(); + result.Text := DataTable.Fields[idx_MontajesOBSERVACIONES].AsString; +end; + +procedure TMontajesDataTableRules.SetOBSERVACIONESValue(const aValue: IROStrings); +begin + DataTable.Fields[idx_MontajesOBSERVACIONES].AsString := aValue.Text; +end; + +function TMontajesDataTableRules.GetCODIGOPRESUPUESTOValue: Integer; +begin + result := DataTable.Fields[idx_MontajesCODIGOPRESUPUESTO].AsInteger; +end; + +procedure TMontajesDataTableRules.SetCODIGOPRESUPUESTOValue(const aValue: Integer); +begin + DataTable.Fields[idx_MontajesCODIGOPRESUPUESTO].AsInteger := aValue; +end; + +function TMontajesDataTableRules.GetREFERENCIAValue: String; +begin + result := DataTable.Fields[idx_MontajesREFERENCIA].AsString; +end; + +procedure TMontajesDataTableRules.SetREFERENCIAValue(const aValue: String); +begin + DataTable.Fields[idx_MontajesREFERENCIA].AsString := aValue; +end; + +function TMontajesDataTableRules.GetCODIGOCONTACTOValue: Integer; +begin + result := DataTable.Fields[idx_MontajesCODIGOCONTACTO].AsInteger; +end; + +procedure TMontajesDataTableRules.SetCODIGOCONTACTOValue(const aValue: Integer); +begin + DataTable.Fields[idx_MontajesCODIGOCONTACTO].AsInteger := aValue; +end; + +function TMontajesDataTableRules.GetNOMBREValue: String; +begin + result := DataTable.Fields[idx_MontajesNOMBRE].AsString; +end; + +procedure TMontajesDataTableRules.SetNOMBREValue(const aValue: String); +begin + DataTable.Fields[idx_MontajesNOMBRE].AsString := aValue; +end; + +function TMontajesDataTableRules.GetOPCIONValue: String; +begin + result := DataTable.Fields[idx_MontajesOPCION].AsString; +end; + +procedure TMontajesDataTableRules.SetOPCIONValue(const aValue: String); +begin + DataTable.Fields[idx_MontajesOPCION].AsString := aValue; +end; + + +{ TRefresh_MontajesDataTableRules } +constructor TRefresh_MontajesDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TRefresh_MontajesDataTableRules.Destroy; +begin + inherited; +end; + +function TRefresh_MontajesDataTableRules.GetCODIGOEMPRESAValue: Integer; +begin + result := DataTable.Fields[idx_Refresh_MontajesCODIGOEMPRESA].AsInteger; +end; + +procedure TRefresh_MontajesDataTableRules.SetCODIGOEMPRESAValue(const aValue: Integer); +begin + DataTable.Fields[idx_Refresh_MontajesCODIGOEMPRESA].AsInteger := aValue; +end; + +function TRefresh_MontajesDataTableRules.GetCODIGOValue: Integer; +begin + result := DataTable.Fields[idx_Refresh_MontajesCODIGO].AsInteger; +end; + +procedure TRefresh_MontajesDataTableRules.SetCODIGOValue(const aValue: Integer); +begin + DataTable.Fields[idx_Refresh_MontajesCODIGO].AsInteger := aValue; +end; + +function TRefresh_MontajesDataTableRules.GetFECHAALTAValue: DateTime; +begin + result := DataTable.Fields[idx_Refresh_MontajesFECHAALTA].AsDateTime; +end; + +procedure TRefresh_MontajesDataTableRules.SetFECHAALTAValue(const aValue: DateTime); +begin + DataTable.Fields[idx_Refresh_MontajesFECHAALTA].AsDateTime := aValue; +end; + +function TRefresh_MontajesDataTableRules.GetUSUARIOValue: String; +begin + result := DataTable.Fields[idx_Refresh_MontajesUSUARIO].AsString; +end; + +procedure TRefresh_MontajesDataTableRules.SetUSUARIOValue(const aValue: String); +begin + DataTable.Fields[idx_Refresh_MontajesUSUARIO].AsString := aValue; +end; + +function TRefresh_MontajesDataTableRules.GetFECHAINICIOValue: DateTime; +begin + result := DataTable.Fields[idx_Refresh_MontajesFECHAINICIO].AsDateTime; +end; + +procedure TRefresh_MontajesDataTableRules.SetFECHAINICIOValue(const aValue: DateTime); +begin + DataTable.Fields[idx_Refresh_MontajesFECHAINICIO].AsDateTime := aValue; +end; + +function TRefresh_MontajesDataTableRules.GetFECHAFINValue: DateTime; +begin + result := DataTable.Fields[idx_Refresh_MontajesFECHAFIN].AsDateTime; +end; + +procedure TRefresh_MontajesDataTableRules.SetFECHAFINValue(const aValue: DateTime); +begin + DataTable.Fields[idx_Refresh_MontajesFECHAFIN].AsDateTime := aValue; +end; + +function TRefresh_MontajesDataTableRules.GetSITUACIONValue: String; +begin + result := DataTable.Fields[idx_Refresh_MontajesSITUACION].AsString; +end; + +procedure TRefresh_MontajesDataTableRules.SetSITUACIONValue(const aValue: String); +begin + DataTable.Fields[idx_Refresh_MontajesSITUACION].AsString := aValue; +end; + +function TRefresh_MontajesDataTableRules.GetOBSERVACIONESValue: IROStrings; +begin + result := NewROStrings(); + result.Text := DataTable.Fields[idx_Refresh_MontajesOBSERVACIONES].AsString; +end; + +procedure TRefresh_MontajesDataTableRules.SetOBSERVACIONESValue(const aValue: IROStrings); +begin + DataTable.Fields[idx_Refresh_MontajesOBSERVACIONES].AsString := aValue.Text; +end; + +function TRefresh_MontajesDataTableRules.GetCODIGOPRESUPUESTOValue: Integer; +begin + result := DataTable.Fields[idx_Refresh_MontajesCODIGOPRESUPUESTO].AsInteger; +end; + +procedure TRefresh_MontajesDataTableRules.SetCODIGOPRESUPUESTOValue(const aValue: Integer); +begin + DataTable.Fields[idx_Refresh_MontajesCODIGOPRESUPUESTO].AsInteger := aValue; +end; + +function TRefresh_MontajesDataTableRules.GetREFERENCIAValue: String; +begin + result := DataTable.Fields[idx_Refresh_MontajesREFERENCIA].AsString; +end; + +procedure TRefresh_MontajesDataTableRules.SetREFERENCIAValue(const aValue: String); +begin + DataTable.Fields[idx_Refresh_MontajesREFERENCIA].AsString := aValue; +end; + +function TRefresh_MontajesDataTableRules.GetCODIGOCONTACTOValue: Integer; +begin + result := DataTable.Fields[idx_Refresh_MontajesCODIGOCONTACTO].AsInteger; +end; + +procedure TRefresh_MontajesDataTableRules.SetCODIGOCONTACTOValue(const aValue: Integer); +begin + DataTable.Fields[idx_Refresh_MontajesCODIGOCONTACTO].AsInteger := aValue; +end; + +function TRefresh_MontajesDataTableRules.GetNOMBREValue: String; +begin + result := DataTable.Fields[idx_Refresh_MontajesNOMBRE].AsString; +end; + +procedure TRefresh_MontajesDataTableRules.SetNOMBREValue(const aValue: String); +begin + DataTable.Fields[idx_Refresh_MontajesNOMBRE].AsString := aValue; +end; + +function TRefresh_MontajesDataTableRules.GetOPCIONValue: String; +begin + result := DataTable.Fields[idx_Refresh_MontajesOPCION].AsString; +end; + +procedure TRefresh_MontajesDataTableRules.SetOPCIONValue(const aValue: String); +begin + DataTable.Fields[idx_Refresh_MontajesOPCION].AsString := aValue; +end; + + +{ TFichaBeneficiosDataTableRules } +constructor TFichaBeneficiosDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TFichaBeneficiosDataTableRules.Destroy; +begin + inherited; +end; + +function TFichaBeneficiosDataTableRules.GetCODIGOMONTAJEValue: Integer; +begin + result := DataTable.Fields[idx_FichaBeneficiosCODIGOMONTAJE].AsInteger; +end; + +procedure TFichaBeneficiosDataTableRules.SetCODIGOMONTAJEValue(const aValue: Integer); +begin + DataTable.Fields[idx_FichaBeneficiosCODIGOMONTAJE].AsInteger := aValue; +end; + +function TFichaBeneficiosDataTableRules.GetNUMCONCEPTOValue: Integer; +begin + result := DataTable.Fields[idx_FichaBeneficiosNUMCONCEPTO].AsInteger; +end; + +procedure TFichaBeneficiosDataTableRules.SetNUMCONCEPTOValue(const aValue: Integer); +begin + DataTable.Fields[idx_FichaBeneficiosNUMCONCEPTO].AsInteger := aValue; +end; + +function TFichaBeneficiosDataTableRules.GetDESCRIPCIONValue: String; +begin + result := DataTable.Fields[idx_FichaBeneficiosDESCRIPCION].AsString; +end; + +procedure TFichaBeneficiosDataTableRules.SetDESCRIPCIONValue(const aValue: String); +begin + DataTable.Fields[idx_FichaBeneficiosDESCRIPCION].AsString := aValue; +end; + +function TFichaBeneficiosDataTableRules.GetMODELOValue: String; +begin + result := DataTable.Fields[idx_FichaBeneficiosMODELO].AsString; +end; + +procedure TFichaBeneficiosDataTableRules.SetMODELOValue(const aValue: String); +begin + DataTable.Fields[idx_FichaBeneficiosMODELO].AsString := aValue; +end; + +function TFichaBeneficiosDataTableRules.GetPROVEEDORValue: String; +begin + result := DataTable.Fields[idx_FichaBeneficiosPROVEEDOR].AsString; +end; + +procedure TFichaBeneficiosDataTableRules.SetPROVEEDORValue(const aValue: String); +begin + DataTable.Fields[idx_FichaBeneficiosPROVEEDOR].AsString := aValue; +end; + +function TFichaBeneficiosDataTableRules.GetCOMPRAValue: Float; +begin + result := DataTable.Fields[idx_FichaBeneficiosCOMPRA].AsFloat; +end; + +procedure TFichaBeneficiosDataTableRules.SetCOMPRAValue(const aValue: Float); +begin + DataTable.Fields[idx_FichaBeneficiosCOMPRA].AsFloat := aValue; +end; + +function TFichaBeneficiosDataTableRules.GetVENTAValue: Float; +begin + result := DataTable.Fields[idx_FichaBeneficiosVENTA].AsFloat; +end; + +procedure TFichaBeneficiosDataTableRules.SetVENTAValue(const aValue: Float); +begin + DataTable.Fields[idx_FichaBeneficiosVENTA].AsFloat := aValue; +end; + + +{ TInformeDetallesFichaDataTableRules } +constructor TInformeDetallesFichaDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TInformeDetallesFichaDataTableRules.Destroy; +begin + inherited; +end; + +function TInformeDetallesFichaDataTableRules.GetDESCRIPCIONValue: String; +begin + result := DataTable.Fields[idx_InformeDetallesFichaDESCRIPCION].AsString; +end; + +procedure TInformeDetallesFichaDataTableRules.SetDESCRIPCIONValue(const aValue: String); +begin + DataTable.Fields[idx_InformeDetallesFichaDESCRIPCION].AsString := aValue; +end; + +function TInformeDetallesFichaDataTableRules.GetMODELOValue: String; +begin + result := DataTable.Fields[idx_InformeDetallesFichaMODELO].AsString; +end; + +procedure TInformeDetallesFichaDataTableRules.SetMODELOValue(const aValue: String); +begin + DataTable.Fields[idx_InformeDetallesFichaMODELO].AsString := aValue; +end; + +function TInformeDetallesFichaDataTableRules.GetPROVEEDORValue: String; +begin + result := DataTable.Fields[idx_InformeDetallesFichaPROVEEDOR].AsString; +end; + +procedure TInformeDetallesFichaDataTableRules.SetPROVEEDORValue(const aValue: String); +begin + DataTable.Fields[idx_InformeDetallesFichaPROVEEDOR].AsString := aValue; +end; + +function TInformeDetallesFichaDataTableRules.GetCOMPRAValue: Float; +begin + result := DataTable.Fields[idx_InformeDetallesFichaCOMPRA].AsFloat; +end; + +procedure TInformeDetallesFichaDataTableRules.SetCOMPRAValue(const aValue: Float); +begin + DataTable.Fields[idx_InformeDetallesFichaCOMPRA].AsFloat := aValue; +end; + +function TInformeDetallesFichaDataTableRules.GetVENTAValue: Float; +begin + result := DataTable.Fields[idx_InformeDetallesFichaVENTA].AsFloat; +end; + +procedure TInformeDetallesFichaDataTableRules.SetVENTAValue(const aValue: Float); +begin + DataTable.Fields[idx_InformeDetallesFichaVENTA].AsFloat := aValue; +end; + + +{ TFichaBeneficios_AuxDataTableRules } +constructor TFichaBeneficios_AuxDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TFichaBeneficios_AuxDataTableRules.Destroy; +begin + inherited; +end; + +function TFichaBeneficios_AuxDataTableRules.GetNUMCONCEPTOValue: Integer; +begin + result := DataTable.Fields[idx_FichaBeneficios_AuxNUMCONCEPTO].AsInteger; +end; + +procedure TFichaBeneficios_AuxDataTableRules.SetNUMCONCEPTOValue(const aValue: Integer); +begin + DataTable.Fields[idx_FichaBeneficios_AuxNUMCONCEPTO].AsInteger := aValue; +end; + +function TFichaBeneficios_AuxDataTableRules.GetDESCRIPCIONValue: String; +begin + result := DataTable.Fields[idx_FichaBeneficios_AuxDESCRIPCION].AsString; +end; + +procedure TFichaBeneficios_AuxDataTableRules.SetDESCRIPCIONValue(const aValue: String); +begin + DataTable.Fields[idx_FichaBeneficios_AuxDESCRIPCION].AsString := aValue; +end; + + +initialization + RegisterDataTableRules(RID_darNuevaReferencia, TdarNuevaReferenciaDataTableRules); + RegisterDataTableRules(RID_InformeCabeceraFicha, TInformeCabeceraFichaDataTableRules); + RegisterDataTableRules(RID_Montajes, TMontajesDataTableRules); + RegisterDataTableRules(RID_Refresh_Montajes, TRefresh_MontajesDataTableRules); + RegisterDataTableRules(RID_FichaBeneficios, TFichaBeneficiosDataTableRules); + RegisterDataTableRules(RID_InformeDetallesFicha, TInformeDetallesFichaDataTableRules); + RegisterDataTableRules(RID_FichaBeneficios_Aux, TFichaBeneficios_AuxDataTableRules); + +end. diff --git a/Modulos/Montajes/Reglas/schMontajesServer_Intf.pas b/Modulos/Montajes/Reglas/schMontajesServer_Intf.pas new file mode 100644 index 0000000..409bb36 --- /dev/null +++ b/Modulos/Montajes/Reglas/schMontajesServer_Intf.pas @@ -0,0 +1,1511 @@ +unit schMontajesServer_Intf; + +interface + +uses + Classes, DB, SysUtils, uROClasses, uDADataTable, uDABusinessProcessor, schMontajesClient_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_darNuevaReferenciaDelta = '{5C9B1530-2031-47B8-A401-B55FE08E3EB7}'; + RID_InformeCabeceraFichaDelta = '{F5A62AC1-DF4E-4510-942E-3595C5BC5137}'; + RID_MontajesDelta = '{939D89F0-AEBE-4E5F-9F1C-05829C1C9AD4}'; + RID_Refresh_MontajesDelta = '{A7E3BF24-EC68-403B-9732-11DA2807356E}'; + RID_FichaBeneficiosDelta = '{E6D1DA2C-DE89-4F62-B1C1-8DE78BBF1F76}'; + RID_InformeDetallesFichaDelta = '{FAC578F4-482B-4E46-8C07-D7C521604FCA}'; + RID_FichaBeneficios_AuxDelta = '{3E015966-D349-4153-B8F8-4F083CD724F5}'; + +type + { IdarNuevaReferenciaDelta } + IdarNuevaReferenciaDelta = interface(IdarNuevaReferencia) + ['{5C9B1530-2031-47B8-A401-B55FE08E3EB7}'] + { Property getters and setters } + function GetOldREFERENCIAValue : String; + + { Properties } + property OldREFERENCIA : String read GetOldREFERENCIAValue; + end; + + { TdarNuevaReferenciaBusinessProcessorRules } + TdarNuevaReferenciaBusinessProcessorRules = class(TDABusinessProcessorRules, IdarNuevaReferencia, IdarNuevaReferenciaDelta) + private + protected + { Property getters and setters } + function GetREFERENCIAValue: String; virtual; + function GetOldREFERENCIAValue: String; virtual; + procedure SetREFERENCIAValue(const aValue: String); virtual; + + { Properties } + property REFERENCIA : String read GetREFERENCIAValue write SetREFERENCIAValue; + property OldREFERENCIA : String read GetOldREFERENCIAValue; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + + { IInformeCabeceraFichaDelta } + IInformeCabeceraFichaDelta = interface(IInformeCabeceraFicha) + ['{F5A62AC1-DF4E-4510-942E-3595C5BC5137}'] + { Property getters and setters } + function GetOldREFERENCIAValue : String; + function GetOldFECHAINICIOValue : DateTime; + function GetOldFECHAFINValue : DateTime; + function GetOldSITUACIONValue : String; + function GetOldOBSERVACIONESValue : IROStrings; + function GetOldCODIGOCONTACTOValue : Integer; + function GetOldNOMBREValue : String; + function GetOldNIFCIFValue : String; + function GetOldCALLEValue : String; + function GetOldCODIGOPOSTALValue : String; + function GetOldPOBLACIONValue : String; + function GetOldPROVINCIAValue : String; + function GetOldTELEFONO1Value : String; + function GetOldTELEFONO2Value : String; + function GetOldMOVILValue : String; + + { Properties } + property OldREFERENCIA : String read GetOldREFERENCIAValue; + property OldFECHAINICIO : DateTime read GetOldFECHAINICIOValue; + property OldFECHAFIN : DateTime read GetOldFECHAFINValue; + property OldSITUACION : String read GetOldSITUACIONValue; + property OldOBSERVACIONES : IROStrings read GetOldOBSERVACIONESValue; + property OldCODIGOCONTACTO : Integer read GetOldCODIGOCONTACTOValue; + property OldNOMBRE : String read GetOldNOMBREValue; + property OldNIFCIF : String read GetOldNIFCIFValue; + property OldCALLE : String read GetOldCALLEValue; + property OldCODIGOPOSTAL : String read GetOldCODIGOPOSTALValue; + property OldPOBLACION : String read GetOldPOBLACIONValue; + property OldPROVINCIA : String read GetOldPROVINCIAValue; + property OldTELEFONO1 : String read GetOldTELEFONO1Value; + property OldTELEFONO2 : String read GetOldTELEFONO2Value; + property OldMOVIL : String read GetOldMOVILValue; + end; + + { TInformeCabeceraFichaBusinessProcessorRules } + TInformeCabeceraFichaBusinessProcessorRules = class(TDABusinessProcessorRules, IInformeCabeceraFicha, IInformeCabeceraFichaDelta) + private + protected + { Property getters and setters } + function GetREFERENCIAValue: String; virtual; + function GetOldREFERENCIAValue: String; virtual; + procedure SetREFERENCIAValue(const aValue: String); virtual; + function GetFECHAINICIOValue: DateTime; virtual; + function GetOldFECHAINICIOValue: DateTime; virtual; + procedure SetFECHAINICIOValue(const aValue: DateTime); virtual; + function GetFECHAFINValue: DateTime; virtual; + function GetOldFECHAFINValue: DateTime; virtual; + procedure SetFECHAFINValue(const aValue: DateTime); virtual; + function GetSITUACIONValue: String; virtual; + function GetOldSITUACIONValue: String; virtual; + procedure SetSITUACIONValue(const aValue: String); virtual; + function GetOBSERVACIONESValue: IROStrings; virtual; + function GetOldOBSERVACIONESValue: IROStrings; virtual; + procedure SetOBSERVACIONESValue(const aValue: IROStrings); virtual; + function GetCODIGOCONTACTOValue: Integer; virtual; + function GetOldCODIGOCONTACTOValue: Integer; virtual; + procedure SetCODIGOCONTACTOValue(const aValue: Integer); virtual; + function GetNOMBREValue: String; virtual; + function GetOldNOMBREValue: String; virtual; + procedure SetNOMBREValue(const aValue: String); virtual; + function GetNIFCIFValue: String; virtual; + function GetOldNIFCIFValue: String; virtual; + procedure SetNIFCIFValue(const aValue: String); virtual; + function GetCALLEValue: String; virtual; + function GetOldCALLEValue: String; virtual; + procedure SetCALLEValue(const aValue: String); virtual; + function GetCODIGOPOSTALValue: String; virtual; + function GetOldCODIGOPOSTALValue: String; virtual; + procedure SetCODIGOPOSTALValue(const aValue: String); virtual; + function GetPOBLACIONValue: String; virtual; + function GetOldPOBLACIONValue: String; virtual; + procedure SetPOBLACIONValue(const aValue: String); virtual; + function GetPROVINCIAValue: String; virtual; + function GetOldPROVINCIAValue: String; virtual; + procedure SetPROVINCIAValue(const aValue: String); virtual; + function GetTELEFONO1Value: String; virtual; + function GetOldTELEFONO1Value: String; virtual; + procedure SetTELEFONO1Value(const aValue: String); virtual; + function GetTELEFONO2Value: String; virtual; + function GetOldTELEFONO2Value: String; virtual; + procedure SetTELEFONO2Value(const aValue: String); virtual; + function GetMOVILValue: String; virtual; + function GetOldMOVILValue: String; virtual; + procedure SetMOVILValue(const aValue: String); virtual; + + { Properties } + property REFERENCIA : String read GetREFERENCIAValue write SetREFERENCIAValue; + property OldREFERENCIA : String read GetOldREFERENCIAValue; + property FECHAINICIO : DateTime read GetFECHAINICIOValue write SetFECHAINICIOValue; + property OldFECHAINICIO : DateTime read GetOldFECHAINICIOValue; + property FECHAFIN : DateTime read GetFECHAFINValue write SetFECHAFINValue; + property OldFECHAFIN : DateTime read GetOldFECHAFINValue; + property SITUACION : String read GetSITUACIONValue write SetSITUACIONValue; + property OldSITUACION : String read GetOldSITUACIONValue; + property OBSERVACIONES : IROStrings read GetOBSERVACIONESValue write SetOBSERVACIONESValue; + property OldOBSERVACIONES : IROStrings read GetOldOBSERVACIONESValue; + property CODIGOCONTACTO : Integer read GetCODIGOCONTACTOValue write SetCODIGOCONTACTOValue; + property OldCODIGOCONTACTO : Integer read GetOldCODIGOCONTACTOValue; + property NOMBRE : String read GetNOMBREValue write SetNOMBREValue; + property OldNOMBRE : String read GetOldNOMBREValue; + property NIFCIF : String read GetNIFCIFValue write SetNIFCIFValue; + property OldNIFCIF : String read GetOldNIFCIFValue; + property CALLE : String read GetCALLEValue write SetCALLEValue; + property OldCALLE : String read GetOldCALLEValue; + property CODIGOPOSTAL : String read GetCODIGOPOSTALValue write SetCODIGOPOSTALValue; + property OldCODIGOPOSTAL : String read GetOldCODIGOPOSTALValue; + property POBLACION : String read GetPOBLACIONValue write SetPOBLACIONValue; + property OldPOBLACION : String read GetOldPOBLACIONValue; + property PROVINCIA : String read GetPROVINCIAValue write SetPROVINCIAValue; + property OldPROVINCIA : String read GetOldPROVINCIAValue; + property TELEFONO1 : String read GetTELEFONO1Value write SetTELEFONO1Value; + property OldTELEFONO1 : String read GetOldTELEFONO1Value; + property TELEFONO2 : String read GetTELEFONO2Value write SetTELEFONO2Value; + property OldTELEFONO2 : String read GetOldTELEFONO2Value; + property MOVIL : String read GetMOVILValue write SetMOVILValue; + property OldMOVIL : String read GetOldMOVILValue; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + + { IMontajesDelta } + IMontajesDelta = interface(IMontajes) + ['{939D89F0-AEBE-4E5F-9F1C-05829C1C9AD4}'] + { Property getters and setters } + function GetOldCODIGOEMPRESAValue : Integer; + function GetOldCODIGOValue : Integer; + function GetOldFECHAALTAValue : DateTime; + function GetOldUSUARIOValue : String; + function GetOldFECHAINICIOValue : DateTime; + function GetOldFECHAFINValue : DateTime; + function GetOldSITUACIONValue : String; + function GetOldOBSERVACIONESValue : IROStrings; + function GetOldCODIGOPRESUPUESTOValue : Integer; + function GetOldREFERENCIAValue : String; + function GetOldCODIGOCONTACTOValue : Integer; + function GetOldNOMBREValue : String; + function GetOldOPCIONValue : String; + + { Properties } + property OldCODIGOEMPRESA : Integer read GetOldCODIGOEMPRESAValue; + property OldCODIGO : Integer read GetOldCODIGOValue; + property OldFECHAALTA : DateTime read GetOldFECHAALTAValue; + property OldUSUARIO : String read GetOldUSUARIOValue; + property OldFECHAINICIO : DateTime read GetOldFECHAINICIOValue; + property OldFECHAFIN : DateTime read GetOldFECHAFINValue; + property OldSITUACION : String read GetOldSITUACIONValue; + property OldOBSERVACIONES : IROStrings read GetOldOBSERVACIONESValue; + property OldCODIGOPRESUPUESTO : Integer read GetOldCODIGOPRESUPUESTOValue; + property OldREFERENCIA : String read GetOldREFERENCIAValue; + property OldCODIGOCONTACTO : Integer read GetOldCODIGOCONTACTOValue; + property OldNOMBRE : String read GetOldNOMBREValue; + property OldOPCION : String read GetOldOPCIONValue; + end; + + { TMontajesBusinessProcessorRules } + TMontajesBusinessProcessorRules = class(TDABusinessProcessorRules, IMontajes, IMontajesDelta) + private + protected + { Property getters and setters } + function GetCODIGOEMPRESAValue: Integer; virtual; + function GetOldCODIGOEMPRESAValue: Integer; virtual; + procedure SetCODIGOEMPRESAValue(const aValue: Integer); virtual; + function GetCODIGOValue: Integer; virtual; + function GetOldCODIGOValue: Integer; virtual; + procedure SetCODIGOValue(const aValue: Integer); virtual; + function GetFECHAALTAValue: DateTime; virtual; + function GetOldFECHAALTAValue: DateTime; virtual; + procedure SetFECHAALTAValue(const aValue: DateTime); virtual; + function GetUSUARIOValue: String; virtual; + function GetOldUSUARIOValue: String; virtual; + procedure SetUSUARIOValue(const aValue: String); virtual; + function GetFECHAINICIOValue: DateTime; virtual; + function GetOldFECHAINICIOValue: DateTime; virtual; + procedure SetFECHAINICIOValue(const aValue: DateTime); virtual; + function GetFECHAFINValue: DateTime; virtual; + function GetOldFECHAFINValue: DateTime; virtual; + procedure SetFECHAFINValue(const aValue: DateTime); virtual; + function GetSITUACIONValue: String; virtual; + function GetOldSITUACIONValue: String; virtual; + procedure SetSITUACIONValue(const aValue: String); virtual; + function GetOBSERVACIONESValue: IROStrings; virtual; + function GetOldOBSERVACIONESValue: IROStrings; virtual; + procedure SetOBSERVACIONESValue(const aValue: IROStrings); virtual; + function GetCODIGOPRESUPUESTOValue: Integer; virtual; + function GetOldCODIGOPRESUPUESTOValue: Integer; virtual; + procedure SetCODIGOPRESUPUESTOValue(const aValue: Integer); virtual; + function GetREFERENCIAValue: String; virtual; + function GetOldREFERENCIAValue: String; virtual; + procedure SetREFERENCIAValue(const aValue: String); virtual; + function GetCODIGOCONTACTOValue: Integer; virtual; + function GetOldCODIGOCONTACTOValue: Integer; virtual; + procedure SetCODIGOCONTACTOValue(const aValue: Integer); virtual; + function GetNOMBREValue: String; virtual; + function GetOldNOMBREValue: String; virtual; + procedure SetNOMBREValue(const aValue: String); virtual; + function GetOPCIONValue: String; virtual; + function GetOldOPCIONValue: String; virtual; + procedure SetOPCIONValue(const aValue: String); virtual; + + { Properties } + property CODIGOEMPRESA : Integer read GetCODIGOEMPRESAValue write SetCODIGOEMPRESAValue; + property OldCODIGOEMPRESA : Integer read GetOldCODIGOEMPRESAValue; + property CODIGO : Integer read GetCODIGOValue write SetCODIGOValue; + property OldCODIGO : Integer read GetOldCODIGOValue; + property FECHAALTA : DateTime read GetFECHAALTAValue write SetFECHAALTAValue; + property OldFECHAALTA : DateTime read GetOldFECHAALTAValue; + property USUARIO : String read GetUSUARIOValue write SetUSUARIOValue; + property OldUSUARIO : String read GetOldUSUARIOValue; + property FECHAINICIO : DateTime read GetFECHAINICIOValue write SetFECHAINICIOValue; + property OldFECHAINICIO : DateTime read GetOldFECHAINICIOValue; + property FECHAFIN : DateTime read GetFECHAFINValue write SetFECHAFINValue; + property OldFECHAFIN : DateTime read GetOldFECHAFINValue; + property SITUACION : String read GetSITUACIONValue write SetSITUACIONValue; + property OldSITUACION : String read GetOldSITUACIONValue; + property OBSERVACIONES : IROStrings read GetOBSERVACIONESValue write SetOBSERVACIONESValue; + property OldOBSERVACIONES : IROStrings read GetOldOBSERVACIONESValue; + property CODIGOPRESUPUESTO : Integer read GetCODIGOPRESUPUESTOValue write SetCODIGOPRESUPUESTOValue; + property OldCODIGOPRESUPUESTO : Integer read GetOldCODIGOPRESUPUESTOValue; + property REFERENCIA : String read GetREFERENCIAValue write SetREFERENCIAValue; + property OldREFERENCIA : String read GetOldREFERENCIAValue; + property CODIGOCONTACTO : Integer read GetCODIGOCONTACTOValue write SetCODIGOCONTACTOValue; + property OldCODIGOCONTACTO : Integer read GetOldCODIGOCONTACTOValue; + property NOMBRE : String read GetNOMBREValue write SetNOMBREValue; + property OldNOMBRE : String read GetOldNOMBREValue; + property OPCION : String read GetOPCIONValue write SetOPCIONValue; + property OldOPCION : String read GetOldOPCIONValue; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + + { IRefresh_MontajesDelta } + IRefresh_MontajesDelta = interface(IRefresh_Montajes) + ['{A7E3BF24-EC68-403B-9732-11DA2807356E}'] + { Property getters and setters } + function GetOldCODIGOEMPRESAValue : Integer; + function GetOldCODIGOValue : Integer; + function GetOldFECHAALTAValue : DateTime; + function GetOldUSUARIOValue : String; + function GetOldFECHAINICIOValue : DateTime; + function GetOldFECHAFINValue : DateTime; + function GetOldSITUACIONValue : String; + function GetOldOBSERVACIONESValue : IROStrings; + function GetOldCODIGOPRESUPUESTOValue : Integer; + function GetOldREFERENCIAValue : String; + function GetOldCODIGOCONTACTOValue : Integer; + function GetOldNOMBREValue : String; + function GetOldOPCIONValue : String; + + { Properties } + property OldCODIGOEMPRESA : Integer read GetOldCODIGOEMPRESAValue; + property OldCODIGO : Integer read GetOldCODIGOValue; + property OldFECHAALTA : DateTime read GetOldFECHAALTAValue; + property OldUSUARIO : String read GetOldUSUARIOValue; + property OldFECHAINICIO : DateTime read GetOldFECHAINICIOValue; + property OldFECHAFIN : DateTime read GetOldFECHAFINValue; + property OldSITUACION : String read GetOldSITUACIONValue; + property OldOBSERVACIONES : IROStrings read GetOldOBSERVACIONESValue; + property OldCODIGOPRESUPUESTO : Integer read GetOldCODIGOPRESUPUESTOValue; + property OldREFERENCIA : String read GetOldREFERENCIAValue; + property OldCODIGOCONTACTO : Integer read GetOldCODIGOCONTACTOValue; + property OldNOMBRE : String read GetOldNOMBREValue; + property OldOPCION : String read GetOldOPCIONValue; + end; + + { TRefresh_MontajesBusinessProcessorRules } + TRefresh_MontajesBusinessProcessorRules = class(TDABusinessProcessorRules, IRefresh_Montajes, IRefresh_MontajesDelta) + private + protected + { Property getters and setters } + function GetCODIGOEMPRESAValue: Integer; virtual; + function GetOldCODIGOEMPRESAValue: Integer; virtual; + procedure SetCODIGOEMPRESAValue(const aValue: Integer); virtual; + function GetCODIGOValue: Integer; virtual; + function GetOldCODIGOValue: Integer; virtual; + procedure SetCODIGOValue(const aValue: Integer); virtual; + function GetFECHAALTAValue: DateTime; virtual; + function GetOldFECHAALTAValue: DateTime; virtual; + procedure SetFECHAALTAValue(const aValue: DateTime); virtual; + function GetUSUARIOValue: String; virtual; + function GetOldUSUARIOValue: String; virtual; + procedure SetUSUARIOValue(const aValue: String); virtual; + function GetFECHAINICIOValue: DateTime; virtual; + function GetOldFECHAINICIOValue: DateTime; virtual; + procedure SetFECHAINICIOValue(const aValue: DateTime); virtual; + function GetFECHAFINValue: DateTime; virtual; + function GetOldFECHAFINValue: DateTime; virtual; + procedure SetFECHAFINValue(const aValue: DateTime); virtual; + function GetSITUACIONValue: String; virtual; + function GetOldSITUACIONValue: String; virtual; + procedure SetSITUACIONValue(const aValue: String); virtual; + function GetOBSERVACIONESValue: IROStrings; virtual; + function GetOldOBSERVACIONESValue: IROStrings; virtual; + procedure SetOBSERVACIONESValue(const aValue: IROStrings); virtual; + function GetCODIGOPRESUPUESTOValue: Integer; virtual; + function GetOldCODIGOPRESUPUESTOValue: Integer; virtual; + procedure SetCODIGOPRESUPUESTOValue(const aValue: Integer); virtual; + function GetREFERENCIAValue: String; virtual; + function GetOldREFERENCIAValue: String; virtual; + procedure SetREFERENCIAValue(const aValue: String); virtual; + function GetCODIGOCONTACTOValue: Integer; virtual; + function GetOldCODIGOCONTACTOValue: Integer; virtual; + procedure SetCODIGOCONTACTOValue(const aValue: Integer); virtual; + function GetNOMBREValue: String; virtual; + function GetOldNOMBREValue: String; virtual; + procedure SetNOMBREValue(const aValue: String); virtual; + function GetOPCIONValue: String; virtual; + function GetOldOPCIONValue: String; virtual; + procedure SetOPCIONValue(const aValue: String); virtual; + + { Properties } + property CODIGOEMPRESA : Integer read GetCODIGOEMPRESAValue write SetCODIGOEMPRESAValue; + property OldCODIGOEMPRESA : Integer read GetOldCODIGOEMPRESAValue; + property CODIGO : Integer read GetCODIGOValue write SetCODIGOValue; + property OldCODIGO : Integer read GetOldCODIGOValue; + property FECHAALTA : DateTime read GetFECHAALTAValue write SetFECHAALTAValue; + property OldFECHAALTA : DateTime read GetOldFECHAALTAValue; + property USUARIO : String read GetUSUARIOValue write SetUSUARIOValue; + property OldUSUARIO : String read GetOldUSUARIOValue; + property FECHAINICIO : DateTime read GetFECHAINICIOValue write SetFECHAINICIOValue; + property OldFECHAINICIO : DateTime read GetOldFECHAINICIOValue; + property FECHAFIN : DateTime read GetFECHAFINValue write SetFECHAFINValue; + property OldFECHAFIN : DateTime read GetOldFECHAFINValue; + property SITUACION : String read GetSITUACIONValue write SetSITUACIONValue; + property OldSITUACION : String read GetOldSITUACIONValue; + property OBSERVACIONES : IROStrings read GetOBSERVACIONESValue write SetOBSERVACIONESValue; + property OldOBSERVACIONES : IROStrings read GetOldOBSERVACIONESValue; + property CODIGOPRESUPUESTO : Integer read GetCODIGOPRESUPUESTOValue write SetCODIGOPRESUPUESTOValue; + property OldCODIGOPRESUPUESTO : Integer read GetOldCODIGOPRESUPUESTOValue; + property REFERENCIA : String read GetREFERENCIAValue write SetREFERENCIAValue; + property OldREFERENCIA : String read GetOldREFERENCIAValue; + property CODIGOCONTACTO : Integer read GetCODIGOCONTACTOValue write SetCODIGOCONTACTOValue; + property OldCODIGOCONTACTO : Integer read GetOldCODIGOCONTACTOValue; + property NOMBRE : String read GetNOMBREValue write SetNOMBREValue; + property OldNOMBRE : String read GetOldNOMBREValue; + property OPCION : String read GetOPCIONValue write SetOPCIONValue; + property OldOPCION : String read GetOldOPCIONValue; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + + { IFichaBeneficiosDelta } + IFichaBeneficiosDelta = interface(IFichaBeneficios) + ['{E6D1DA2C-DE89-4F62-B1C1-8DE78BBF1F76}'] + { Property getters and setters } + function GetOldCODIGOMONTAJEValue : Integer; + function GetOldNUMCONCEPTOValue : Integer; + function GetOldDESCRIPCIONValue : String; + function GetOldMODELOValue : String; + function GetOldPROVEEDORValue : String; + function GetOldCOMPRAValue : Float; + function GetOldVENTAValue : Float; + + { Properties } + property OldCODIGOMONTAJE : Integer read GetOldCODIGOMONTAJEValue; + property OldNUMCONCEPTO : Integer read GetOldNUMCONCEPTOValue; + property OldDESCRIPCION : String read GetOldDESCRIPCIONValue; + property OldMODELO : String read GetOldMODELOValue; + property OldPROVEEDOR : String read GetOldPROVEEDORValue; + property OldCOMPRA : Float read GetOldCOMPRAValue; + property OldVENTA : Float read GetOldVENTAValue; + end; + + { TFichaBeneficiosBusinessProcessorRules } + TFichaBeneficiosBusinessProcessorRules = class(TDABusinessProcessorRules, IFichaBeneficios, IFichaBeneficiosDelta) + private + protected + { Property getters and setters } + function GetCODIGOMONTAJEValue: Integer; virtual; + function GetOldCODIGOMONTAJEValue: Integer; virtual; + procedure SetCODIGOMONTAJEValue(const aValue: Integer); virtual; + function GetNUMCONCEPTOValue: Integer; virtual; + function GetOldNUMCONCEPTOValue: Integer; virtual; + procedure SetNUMCONCEPTOValue(const aValue: Integer); virtual; + function GetDESCRIPCIONValue: String; virtual; + function GetOldDESCRIPCIONValue: String; virtual; + procedure SetDESCRIPCIONValue(const aValue: String); virtual; + function GetMODELOValue: String; virtual; + function GetOldMODELOValue: String; virtual; + procedure SetMODELOValue(const aValue: String); virtual; + function GetPROVEEDORValue: String; virtual; + function GetOldPROVEEDORValue: String; virtual; + procedure SetPROVEEDORValue(const aValue: String); virtual; + function GetCOMPRAValue: Float; virtual; + function GetOldCOMPRAValue: Float; virtual; + procedure SetCOMPRAValue(const aValue: Float); virtual; + function GetVENTAValue: Float; virtual; + function GetOldVENTAValue: Float; virtual; + procedure SetVENTAValue(const aValue: Float); virtual; + + { Properties } + property CODIGOMONTAJE : Integer read GetCODIGOMONTAJEValue write SetCODIGOMONTAJEValue; + property OldCODIGOMONTAJE : Integer read GetOldCODIGOMONTAJEValue; + property NUMCONCEPTO : Integer read GetNUMCONCEPTOValue write SetNUMCONCEPTOValue; + property OldNUMCONCEPTO : Integer read GetOldNUMCONCEPTOValue; + property DESCRIPCION : String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + property OldDESCRIPCION : String read GetOldDESCRIPCIONValue; + property MODELO : String read GetMODELOValue write SetMODELOValue; + property OldMODELO : String read GetOldMODELOValue; + property PROVEEDOR : String read GetPROVEEDORValue write SetPROVEEDORValue; + property OldPROVEEDOR : String read GetOldPROVEEDORValue; + property COMPRA : Float read GetCOMPRAValue write SetCOMPRAValue; + property OldCOMPRA : Float read GetOldCOMPRAValue; + property VENTA : Float read GetVENTAValue write SetVENTAValue; + property OldVENTA : Float read GetOldVENTAValue; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + + { IInformeDetallesFichaDelta } + IInformeDetallesFichaDelta = interface(IInformeDetallesFicha) + ['{FAC578F4-482B-4E46-8C07-D7C521604FCA}'] + { Property getters and setters } + function GetOldDESCRIPCIONValue : String; + function GetOldMODELOValue : String; + function GetOldPROVEEDORValue : String; + function GetOldCOMPRAValue : Float; + function GetOldVENTAValue : Float; + + { Properties } + property OldDESCRIPCION : String read GetOldDESCRIPCIONValue; + property OldMODELO : String read GetOldMODELOValue; + property OldPROVEEDOR : String read GetOldPROVEEDORValue; + property OldCOMPRA : Float read GetOldCOMPRAValue; + property OldVENTA : Float read GetOldVENTAValue; + end; + + { TInformeDetallesFichaBusinessProcessorRules } + TInformeDetallesFichaBusinessProcessorRules = class(TDABusinessProcessorRules, IInformeDetallesFicha, IInformeDetallesFichaDelta) + private + protected + { Property getters and setters } + function GetDESCRIPCIONValue: String; virtual; + function GetOldDESCRIPCIONValue: String; virtual; + procedure SetDESCRIPCIONValue(const aValue: String); virtual; + function GetMODELOValue: String; virtual; + function GetOldMODELOValue: String; virtual; + procedure SetMODELOValue(const aValue: String); virtual; + function GetPROVEEDORValue: String; virtual; + function GetOldPROVEEDORValue: String; virtual; + procedure SetPROVEEDORValue(const aValue: String); virtual; + function GetCOMPRAValue: Float; virtual; + function GetOldCOMPRAValue: Float; virtual; + procedure SetCOMPRAValue(const aValue: Float); virtual; + function GetVENTAValue: Float; virtual; + function GetOldVENTAValue: Float; virtual; + procedure SetVENTAValue(const aValue: Float); virtual; + + { Properties } + property DESCRIPCION : String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + property OldDESCRIPCION : String read GetOldDESCRIPCIONValue; + property MODELO : String read GetMODELOValue write SetMODELOValue; + property OldMODELO : String read GetOldMODELOValue; + property PROVEEDOR : String read GetPROVEEDORValue write SetPROVEEDORValue; + property OldPROVEEDOR : String read GetOldPROVEEDORValue; + property COMPRA : Float read GetCOMPRAValue write SetCOMPRAValue; + property OldCOMPRA : Float read GetOldCOMPRAValue; + property VENTA : Float read GetVENTAValue write SetVENTAValue; + property OldVENTA : Float read GetOldVENTAValue; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + + { IFichaBeneficios_AuxDelta } + IFichaBeneficios_AuxDelta = interface(IFichaBeneficios_Aux) + ['{3E015966-D349-4153-B8F8-4F083CD724F5}'] + { Property getters and setters } + function GetOldNUMCONCEPTOValue : Integer; + function GetOldDESCRIPCIONValue : String; + + { Properties } + property OldNUMCONCEPTO : Integer read GetOldNUMCONCEPTOValue; + property OldDESCRIPCION : String read GetOldDESCRIPCIONValue; + end; + + { TFichaBeneficios_AuxBusinessProcessorRules } + TFichaBeneficios_AuxBusinessProcessorRules = class(TDABusinessProcessorRules, IFichaBeneficios_Aux, IFichaBeneficios_AuxDelta) + private + protected + { Property getters and setters } + function GetNUMCONCEPTOValue: Integer; virtual; + function GetOldNUMCONCEPTOValue: Integer; virtual; + procedure SetNUMCONCEPTOValue(const aValue: Integer); virtual; + function GetDESCRIPCIONValue: String; virtual; + function GetOldDESCRIPCIONValue: String; virtual; + procedure SetDESCRIPCIONValue(const aValue: String); virtual; + + { Properties } + property NUMCONCEPTO : Integer read GetNUMCONCEPTOValue write SetNUMCONCEPTOValue; + property OldNUMCONCEPTO : Integer read GetOldNUMCONCEPTOValue; + property DESCRIPCION : String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + property OldDESCRIPCION : String read GetOldDESCRIPCIONValue; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + +implementation + +uses + Variants, uROBinaryHelpers; + +{ TdarNuevaReferenciaBusinessProcessorRules } +constructor TdarNuevaReferenciaBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TdarNuevaReferenciaBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TdarNuevaReferenciaBusinessProcessorRules.GetREFERENCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_darNuevaReferenciaREFERENCIA]; +end; + +function TdarNuevaReferenciaBusinessProcessorRules.GetOldREFERENCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_darNuevaReferenciaREFERENCIA]; +end; + +procedure TdarNuevaReferenciaBusinessProcessorRules.SetREFERENCIAValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_darNuevaReferenciaREFERENCIA] := aValue; +end; + + +{ TInformeCabeceraFichaBusinessProcessorRules } +constructor TInformeCabeceraFichaBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TInformeCabeceraFichaBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TInformeCabeceraFichaBusinessProcessorRules.GetREFERENCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraFichaREFERENCIA]; +end; + +function TInformeCabeceraFichaBusinessProcessorRules.GetOldREFERENCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraFichaREFERENCIA]; +end; + +procedure TInformeCabeceraFichaBusinessProcessorRules.SetREFERENCIAValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraFichaREFERENCIA] := aValue; +end; + +function TInformeCabeceraFichaBusinessProcessorRules.GetFECHAINICIOValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraFichaFECHAINICIO]; +end; + +function TInformeCabeceraFichaBusinessProcessorRules.GetOldFECHAINICIOValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraFichaFECHAINICIO]; +end; + +procedure TInformeCabeceraFichaBusinessProcessorRules.SetFECHAINICIOValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraFichaFECHAINICIO] := aValue; +end; + +function TInformeCabeceraFichaBusinessProcessorRules.GetFECHAFINValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraFichaFECHAFIN]; +end; + +function TInformeCabeceraFichaBusinessProcessorRules.GetOldFECHAFINValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraFichaFECHAFIN]; +end; + +procedure TInformeCabeceraFichaBusinessProcessorRules.SetFECHAFINValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraFichaFECHAFIN] := aValue; +end; + +function TInformeCabeceraFichaBusinessProcessorRules.GetSITUACIONValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraFichaSITUACION]; +end; + +function TInformeCabeceraFichaBusinessProcessorRules.GetOldSITUACIONValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraFichaSITUACION]; +end; + +procedure TInformeCabeceraFichaBusinessProcessorRules.SetSITUACIONValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraFichaSITUACION] := aValue; +end; + +function TInformeCabeceraFichaBusinessProcessorRules.GetOBSERVACIONESValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraFichaOBSERVACIONES]; +end; + +function TInformeCabeceraFichaBusinessProcessorRules.GetOldOBSERVACIONESValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraFichaOBSERVACIONES]; +end; + +procedure TInformeCabeceraFichaBusinessProcessorRules.SetOBSERVACIONESValue(const aValue: IROStrings); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraFichaOBSERVACIONES] := aValue.Text; +end; + +function TInformeCabeceraFichaBusinessProcessorRules.GetCODIGOCONTACTOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraFichaCODIGOCONTACTO]; +end; + +function TInformeCabeceraFichaBusinessProcessorRules.GetOldCODIGOCONTACTOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraFichaCODIGOCONTACTO]; +end; + +procedure TInformeCabeceraFichaBusinessProcessorRules.SetCODIGOCONTACTOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraFichaCODIGOCONTACTO] := aValue; +end; + +function TInformeCabeceraFichaBusinessProcessorRules.GetNOMBREValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraFichaNOMBRE]; +end; + +function TInformeCabeceraFichaBusinessProcessorRules.GetOldNOMBREValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraFichaNOMBRE]; +end; + +procedure TInformeCabeceraFichaBusinessProcessorRules.SetNOMBREValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraFichaNOMBRE] := aValue; +end; + +function TInformeCabeceraFichaBusinessProcessorRules.GetNIFCIFValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraFichaNIFCIF]; +end; + +function TInformeCabeceraFichaBusinessProcessorRules.GetOldNIFCIFValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraFichaNIFCIF]; +end; + +procedure TInformeCabeceraFichaBusinessProcessorRules.SetNIFCIFValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraFichaNIFCIF] := aValue; +end; + +function TInformeCabeceraFichaBusinessProcessorRules.GetCALLEValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraFichaCALLE]; +end; + +function TInformeCabeceraFichaBusinessProcessorRules.GetOldCALLEValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraFichaCALLE]; +end; + +procedure TInformeCabeceraFichaBusinessProcessorRules.SetCALLEValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraFichaCALLE] := aValue; +end; + +function TInformeCabeceraFichaBusinessProcessorRules.GetCODIGOPOSTALValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraFichaCODIGOPOSTAL]; +end; + +function TInformeCabeceraFichaBusinessProcessorRules.GetOldCODIGOPOSTALValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraFichaCODIGOPOSTAL]; +end; + +procedure TInformeCabeceraFichaBusinessProcessorRules.SetCODIGOPOSTALValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraFichaCODIGOPOSTAL] := aValue; +end; + +function TInformeCabeceraFichaBusinessProcessorRules.GetPOBLACIONValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraFichaPOBLACION]; +end; + +function TInformeCabeceraFichaBusinessProcessorRules.GetOldPOBLACIONValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraFichaPOBLACION]; +end; + +procedure TInformeCabeceraFichaBusinessProcessorRules.SetPOBLACIONValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraFichaPOBLACION] := aValue; +end; + +function TInformeCabeceraFichaBusinessProcessorRules.GetPROVINCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraFichaPROVINCIA]; +end; + +function TInformeCabeceraFichaBusinessProcessorRules.GetOldPROVINCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraFichaPROVINCIA]; +end; + +procedure TInformeCabeceraFichaBusinessProcessorRules.SetPROVINCIAValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraFichaPROVINCIA] := aValue; +end; + +function TInformeCabeceraFichaBusinessProcessorRules.GetTELEFONO1Value: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraFichaTELEFONO1]; +end; + +function TInformeCabeceraFichaBusinessProcessorRules.GetOldTELEFONO1Value: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraFichaTELEFONO1]; +end; + +procedure TInformeCabeceraFichaBusinessProcessorRules.SetTELEFONO1Value(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraFichaTELEFONO1] := aValue; +end; + +function TInformeCabeceraFichaBusinessProcessorRules.GetTELEFONO2Value: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraFichaTELEFONO2]; +end; + +function TInformeCabeceraFichaBusinessProcessorRules.GetOldTELEFONO2Value: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraFichaTELEFONO2]; +end; + +procedure TInformeCabeceraFichaBusinessProcessorRules.SetTELEFONO2Value(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraFichaTELEFONO2] := aValue; +end; + +function TInformeCabeceraFichaBusinessProcessorRules.GetMOVILValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraFichaMOVIL]; +end; + +function TInformeCabeceraFichaBusinessProcessorRules.GetOldMOVILValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraFichaMOVIL]; +end; + +procedure TInformeCabeceraFichaBusinessProcessorRules.SetMOVILValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraFichaMOVIL] := aValue; +end; + + +{ TMontajesBusinessProcessorRules } +constructor TMontajesBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TMontajesBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TMontajesBusinessProcessorRules.GetCODIGOEMPRESAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_MontajesCODIGOEMPRESA]; +end; + +function TMontajesBusinessProcessorRules.GetOldCODIGOEMPRESAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_MontajesCODIGOEMPRESA]; +end; + +procedure TMontajesBusinessProcessorRules.SetCODIGOEMPRESAValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_MontajesCODIGOEMPRESA] := aValue; +end; + +function TMontajesBusinessProcessorRules.GetCODIGOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_MontajesCODIGO]; +end; + +function TMontajesBusinessProcessorRules.GetOldCODIGOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_MontajesCODIGO]; +end; + +procedure TMontajesBusinessProcessorRules.SetCODIGOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_MontajesCODIGO] := aValue; +end; + +function TMontajesBusinessProcessorRules.GetFECHAALTAValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_MontajesFECHAALTA]; +end; + +function TMontajesBusinessProcessorRules.GetOldFECHAALTAValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_MontajesFECHAALTA]; +end; + +procedure TMontajesBusinessProcessorRules.SetFECHAALTAValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_MontajesFECHAALTA] := aValue; +end; + +function TMontajesBusinessProcessorRules.GetUSUARIOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_MontajesUSUARIO]; +end; + +function TMontajesBusinessProcessorRules.GetOldUSUARIOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_MontajesUSUARIO]; +end; + +procedure TMontajesBusinessProcessorRules.SetUSUARIOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_MontajesUSUARIO] := aValue; +end; + +function TMontajesBusinessProcessorRules.GetFECHAINICIOValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_MontajesFECHAINICIO]; +end; + +function TMontajesBusinessProcessorRules.GetOldFECHAINICIOValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_MontajesFECHAINICIO]; +end; + +procedure TMontajesBusinessProcessorRules.SetFECHAINICIOValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_MontajesFECHAINICIO] := aValue; +end; + +function TMontajesBusinessProcessorRules.GetFECHAFINValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_MontajesFECHAFIN]; +end; + +function TMontajesBusinessProcessorRules.GetOldFECHAFINValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_MontajesFECHAFIN]; +end; + +procedure TMontajesBusinessProcessorRules.SetFECHAFINValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_MontajesFECHAFIN] := aValue; +end; + +function TMontajesBusinessProcessorRules.GetSITUACIONValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_MontajesSITUACION]; +end; + +function TMontajesBusinessProcessorRules.GetOldSITUACIONValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_MontajesSITUACION]; +end; + +procedure TMontajesBusinessProcessorRules.SetSITUACIONValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_MontajesSITUACION] := aValue; +end; + +function TMontajesBusinessProcessorRules.GetOBSERVACIONESValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.NewValueByName[fld_MontajesOBSERVACIONES]; +end; + +function TMontajesBusinessProcessorRules.GetOldOBSERVACIONESValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.OldValueByName[fld_MontajesOBSERVACIONES]; +end; + +procedure TMontajesBusinessProcessorRules.SetOBSERVACIONESValue(const aValue: IROStrings); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_MontajesOBSERVACIONES] := aValue.Text; +end; + +function TMontajesBusinessProcessorRules.GetCODIGOPRESUPUESTOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_MontajesCODIGOPRESUPUESTO]; +end; + +function TMontajesBusinessProcessorRules.GetOldCODIGOPRESUPUESTOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_MontajesCODIGOPRESUPUESTO]; +end; + +procedure TMontajesBusinessProcessorRules.SetCODIGOPRESUPUESTOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_MontajesCODIGOPRESUPUESTO] := aValue; +end; + +function TMontajesBusinessProcessorRules.GetREFERENCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_MontajesREFERENCIA]; +end; + +function TMontajesBusinessProcessorRules.GetOldREFERENCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_MontajesREFERENCIA]; +end; + +procedure TMontajesBusinessProcessorRules.SetREFERENCIAValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_MontajesREFERENCIA] := aValue; +end; + +function TMontajesBusinessProcessorRules.GetCODIGOCONTACTOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_MontajesCODIGOCONTACTO]; +end; + +function TMontajesBusinessProcessorRules.GetOldCODIGOCONTACTOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_MontajesCODIGOCONTACTO]; +end; + +procedure TMontajesBusinessProcessorRules.SetCODIGOCONTACTOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_MontajesCODIGOCONTACTO] := aValue; +end; + +function TMontajesBusinessProcessorRules.GetNOMBREValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_MontajesNOMBRE]; +end; + +function TMontajesBusinessProcessorRules.GetOldNOMBREValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_MontajesNOMBRE]; +end; + +procedure TMontajesBusinessProcessorRules.SetNOMBREValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_MontajesNOMBRE] := aValue; +end; + +function TMontajesBusinessProcessorRules.GetOPCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_MontajesOPCION]; +end; + +function TMontajesBusinessProcessorRules.GetOldOPCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_MontajesOPCION]; +end; + +procedure TMontajesBusinessProcessorRules.SetOPCIONValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_MontajesOPCION] := aValue; +end; + + +{ TRefresh_MontajesBusinessProcessorRules } +constructor TRefresh_MontajesBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TRefresh_MontajesBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TRefresh_MontajesBusinessProcessorRules.GetCODIGOEMPRESAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_MontajesCODIGOEMPRESA]; +end; + +function TRefresh_MontajesBusinessProcessorRules.GetOldCODIGOEMPRESAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Refresh_MontajesCODIGOEMPRESA]; +end; + +procedure TRefresh_MontajesBusinessProcessorRules.SetCODIGOEMPRESAValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_MontajesCODIGOEMPRESA] := aValue; +end; + +function TRefresh_MontajesBusinessProcessorRules.GetCODIGOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_MontajesCODIGO]; +end; + +function TRefresh_MontajesBusinessProcessorRules.GetOldCODIGOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Refresh_MontajesCODIGO]; +end; + +procedure TRefresh_MontajesBusinessProcessorRules.SetCODIGOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_MontajesCODIGO] := aValue; +end; + +function TRefresh_MontajesBusinessProcessorRules.GetFECHAALTAValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_MontajesFECHAALTA]; +end; + +function TRefresh_MontajesBusinessProcessorRules.GetOldFECHAALTAValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Refresh_MontajesFECHAALTA]; +end; + +procedure TRefresh_MontajesBusinessProcessorRules.SetFECHAALTAValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_MontajesFECHAALTA] := aValue; +end; + +function TRefresh_MontajesBusinessProcessorRules.GetUSUARIOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_MontajesUSUARIO]; +end; + +function TRefresh_MontajesBusinessProcessorRules.GetOldUSUARIOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Refresh_MontajesUSUARIO]; +end; + +procedure TRefresh_MontajesBusinessProcessorRules.SetUSUARIOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_MontajesUSUARIO] := aValue; +end; + +function TRefresh_MontajesBusinessProcessorRules.GetFECHAINICIOValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_MontajesFECHAINICIO]; +end; + +function TRefresh_MontajesBusinessProcessorRules.GetOldFECHAINICIOValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Refresh_MontajesFECHAINICIO]; +end; + +procedure TRefresh_MontajesBusinessProcessorRules.SetFECHAINICIOValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_MontajesFECHAINICIO] := aValue; +end; + +function TRefresh_MontajesBusinessProcessorRules.GetFECHAFINValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_MontajesFECHAFIN]; +end; + +function TRefresh_MontajesBusinessProcessorRules.GetOldFECHAFINValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Refresh_MontajesFECHAFIN]; +end; + +procedure TRefresh_MontajesBusinessProcessorRules.SetFECHAFINValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_MontajesFECHAFIN] := aValue; +end; + +function TRefresh_MontajesBusinessProcessorRules.GetSITUACIONValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_MontajesSITUACION]; +end; + +function TRefresh_MontajesBusinessProcessorRules.GetOldSITUACIONValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Refresh_MontajesSITUACION]; +end; + +procedure TRefresh_MontajesBusinessProcessorRules.SetSITUACIONValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_MontajesSITUACION] := aValue; +end; + +function TRefresh_MontajesBusinessProcessorRules.GetOBSERVACIONESValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_MontajesOBSERVACIONES]; +end; + +function TRefresh_MontajesBusinessProcessorRules.GetOldOBSERVACIONESValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.OldValueByName[fld_Refresh_MontajesOBSERVACIONES]; +end; + +procedure TRefresh_MontajesBusinessProcessorRules.SetOBSERVACIONESValue(const aValue: IROStrings); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_MontajesOBSERVACIONES] := aValue.Text; +end; + +function TRefresh_MontajesBusinessProcessorRules.GetCODIGOPRESUPUESTOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_MontajesCODIGOPRESUPUESTO]; +end; + +function TRefresh_MontajesBusinessProcessorRules.GetOldCODIGOPRESUPUESTOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Refresh_MontajesCODIGOPRESUPUESTO]; +end; + +procedure TRefresh_MontajesBusinessProcessorRules.SetCODIGOPRESUPUESTOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_MontajesCODIGOPRESUPUESTO] := aValue; +end; + +function TRefresh_MontajesBusinessProcessorRules.GetREFERENCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_MontajesREFERENCIA]; +end; + +function TRefresh_MontajesBusinessProcessorRules.GetOldREFERENCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Refresh_MontajesREFERENCIA]; +end; + +procedure TRefresh_MontajesBusinessProcessorRules.SetREFERENCIAValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_MontajesREFERENCIA] := aValue; +end; + +function TRefresh_MontajesBusinessProcessorRules.GetCODIGOCONTACTOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_MontajesCODIGOCONTACTO]; +end; + +function TRefresh_MontajesBusinessProcessorRules.GetOldCODIGOCONTACTOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Refresh_MontajesCODIGOCONTACTO]; +end; + +procedure TRefresh_MontajesBusinessProcessorRules.SetCODIGOCONTACTOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_MontajesCODIGOCONTACTO] := aValue; +end; + +function TRefresh_MontajesBusinessProcessorRules.GetNOMBREValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_MontajesNOMBRE]; +end; + +function TRefresh_MontajesBusinessProcessorRules.GetOldNOMBREValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Refresh_MontajesNOMBRE]; +end; + +procedure TRefresh_MontajesBusinessProcessorRules.SetNOMBREValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_MontajesNOMBRE] := aValue; +end; + +function TRefresh_MontajesBusinessProcessorRules.GetOPCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_MontajesOPCION]; +end; + +function TRefresh_MontajesBusinessProcessorRules.GetOldOPCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Refresh_MontajesOPCION]; +end; + +procedure TRefresh_MontajesBusinessProcessorRules.SetOPCIONValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_MontajesOPCION] := aValue; +end; + + +{ TFichaBeneficiosBusinessProcessorRules } +constructor TFichaBeneficiosBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TFichaBeneficiosBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TFichaBeneficiosBusinessProcessorRules.GetCODIGOMONTAJEValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_FichaBeneficiosCODIGOMONTAJE]; +end; + +function TFichaBeneficiosBusinessProcessorRules.GetOldCODIGOMONTAJEValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_FichaBeneficiosCODIGOMONTAJE]; +end; + +procedure TFichaBeneficiosBusinessProcessorRules.SetCODIGOMONTAJEValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_FichaBeneficiosCODIGOMONTAJE] := aValue; +end; + +function TFichaBeneficiosBusinessProcessorRules.GetNUMCONCEPTOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_FichaBeneficiosNUMCONCEPTO]; +end; + +function TFichaBeneficiosBusinessProcessorRules.GetOldNUMCONCEPTOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_FichaBeneficiosNUMCONCEPTO]; +end; + +procedure TFichaBeneficiosBusinessProcessorRules.SetNUMCONCEPTOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_FichaBeneficiosNUMCONCEPTO] := aValue; +end; + +function TFichaBeneficiosBusinessProcessorRules.GetDESCRIPCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_FichaBeneficiosDESCRIPCION]; +end; + +function TFichaBeneficiosBusinessProcessorRules.GetOldDESCRIPCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_FichaBeneficiosDESCRIPCION]; +end; + +procedure TFichaBeneficiosBusinessProcessorRules.SetDESCRIPCIONValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_FichaBeneficiosDESCRIPCION] := aValue; +end; + +function TFichaBeneficiosBusinessProcessorRules.GetMODELOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_FichaBeneficiosMODELO]; +end; + +function TFichaBeneficiosBusinessProcessorRules.GetOldMODELOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_FichaBeneficiosMODELO]; +end; + +procedure TFichaBeneficiosBusinessProcessorRules.SetMODELOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_FichaBeneficiosMODELO] := aValue; +end; + +function TFichaBeneficiosBusinessProcessorRules.GetPROVEEDORValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_FichaBeneficiosPROVEEDOR]; +end; + +function TFichaBeneficiosBusinessProcessorRules.GetOldPROVEEDORValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_FichaBeneficiosPROVEEDOR]; +end; + +procedure TFichaBeneficiosBusinessProcessorRules.SetPROVEEDORValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_FichaBeneficiosPROVEEDOR] := aValue; +end; + +function TFichaBeneficiosBusinessProcessorRules.GetCOMPRAValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_FichaBeneficiosCOMPRA]; +end; + +function TFichaBeneficiosBusinessProcessorRules.GetOldCOMPRAValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_FichaBeneficiosCOMPRA]; +end; + +procedure TFichaBeneficiosBusinessProcessorRules.SetCOMPRAValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_FichaBeneficiosCOMPRA] := aValue; +end; + +function TFichaBeneficiosBusinessProcessorRules.GetVENTAValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_FichaBeneficiosVENTA]; +end; + +function TFichaBeneficiosBusinessProcessorRules.GetOldVENTAValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_FichaBeneficiosVENTA]; +end; + +procedure TFichaBeneficiosBusinessProcessorRules.SetVENTAValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_FichaBeneficiosVENTA] := aValue; +end; + + +{ TInformeDetallesFichaBusinessProcessorRules } +constructor TInformeDetallesFichaBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TInformeDetallesFichaBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TInformeDetallesFichaBusinessProcessorRules.GetDESCRIPCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesFichaDESCRIPCION]; +end; + +function TInformeDetallesFichaBusinessProcessorRules.GetOldDESCRIPCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeDetallesFichaDESCRIPCION]; +end; + +procedure TInformeDetallesFichaBusinessProcessorRules.SetDESCRIPCIONValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesFichaDESCRIPCION] := aValue; +end; + +function TInformeDetallesFichaBusinessProcessorRules.GetMODELOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesFichaMODELO]; +end; + +function TInformeDetallesFichaBusinessProcessorRules.GetOldMODELOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeDetallesFichaMODELO]; +end; + +procedure TInformeDetallesFichaBusinessProcessorRules.SetMODELOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesFichaMODELO] := aValue; +end; + +function TInformeDetallesFichaBusinessProcessorRules.GetPROVEEDORValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesFichaPROVEEDOR]; +end; + +function TInformeDetallesFichaBusinessProcessorRules.GetOldPROVEEDORValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeDetallesFichaPROVEEDOR]; +end; + +procedure TInformeDetallesFichaBusinessProcessorRules.SetPROVEEDORValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesFichaPROVEEDOR] := aValue; +end; + +function TInformeDetallesFichaBusinessProcessorRules.GetCOMPRAValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesFichaCOMPRA]; +end; + +function TInformeDetallesFichaBusinessProcessorRules.GetOldCOMPRAValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeDetallesFichaCOMPRA]; +end; + +procedure TInformeDetallesFichaBusinessProcessorRules.SetCOMPRAValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesFichaCOMPRA] := aValue; +end; + +function TInformeDetallesFichaBusinessProcessorRules.GetVENTAValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesFichaVENTA]; +end; + +function TInformeDetallesFichaBusinessProcessorRules.GetOldVENTAValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeDetallesFichaVENTA]; +end; + +procedure TInformeDetallesFichaBusinessProcessorRules.SetVENTAValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesFichaVENTA] := aValue; +end; + + +{ TFichaBeneficios_AuxBusinessProcessorRules } +constructor TFichaBeneficios_AuxBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TFichaBeneficios_AuxBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TFichaBeneficios_AuxBusinessProcessorRules.GetNUMCONCEPTOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_FichaBeneficios_AuxNUMCONCEPTO]; +end; + +function TFichaBeneficios_AuxBusinessProcessorRules.GetOldNUMCONCEPTOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_FichaBeneficios_AuxNUMCONCEPTO]; +end; + +procedure TFichaBeneficios_AuxBusinessProcessorRules.SetNUMCONCEPTOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_FichaBeneficios_AuxNUMCONCEPTO] := aValue; +end; + +function TFichaBeneficios_AuxBusinessProcessorRules.GetDESCRIPCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_FichaBeneficios_AuxDESCRIPCION]; +end; + +function TFichaBeneficios_AuxBusinessProcessorRules.GetOldDESCRIPCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_FichaBeneficios_AuxDESCRIPCION]; +end; + +procedure TFichaBeneficios_AuxBusinessProcessorRules.SetDESCRIPCIONValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_FichaBeneficios_AuxDESCRIPCION] := aValue; +end; + + +initialization + RegisterBusinessProcessorRules(RID_darNuevaReferenciaDelta, TdarNuevaReferenciaBusinessProcessorRules); + RegisterBusinessProcessorRules(RID_InformeCabeceraFichaDelta, TInformeCabeceraFichaBusinessProcessorRules); + RegisterBusinessProcessorRules(RID_MontajesDelta, TMontajesBusinessProcessorRules); + RegisterBusinessProcessorRules(RID_Refresh_MontajesDelta, TRefresh_MontajesBusinessProcessorRules); + RegisterBusinessProcessorRules(RID_FichaBeneficiosDelta, TFichaBeneficiosBusinessProcessorRules); + RegisterBusinessProcessorRules(RID_InformeDetallesFichaDelta, TInformeDetallesFichaBusinessProcessorRules); + RegisterBusinessProcessorRules(RID_FichaBeneficios_AuxDelta, TFichaBeneficios_AuxBusinessProcessorRules); + +end. diff --git a/Modulos/Montajes/Reglas/uBizArticulosMontaje.pas b/Modulos/Montajes/Reglas/uBizArticulosMontaje.pas new file mode 100644 index 0000000..fab4dd8 --- /dev/null +++ b/Modulos/Montajes/Reglas/uBizArticulosMontaje.pas @@ -0,0 +1,97 @@ +unit uBizArticulosMontaje; + +interface + +uses uBizArticulos; + +type + IBizArticulosMontaje = interface(IBizArticulosAlmacen) + ['{CCBB5FDD-5364-4386-9187-5D3946767B22}'] +// procedure Show; + procedure Delete; + end; + + TBizArticulosMontaje = class(TBizArticulosAlmacenDataTableRules, IBizArticulosMontaje) + public +// procedure Show; override; + procedure Delete; + end; + + + function DarArticulosMontaje(CodigoMontaje : Integer) : IBizArticulosMontaje; + +implementation + +uses uDataModuleArticulos, uDADataTable, uDAInterfaces, SysUtils, + uDACDSDataTable, uDataTableUtils, Dialogs, Controls; + +function DarArticulosMontaje(CodigoMontaje : Integer) : IBizArticulosMontaje; +var + dtArticulos: TDACDSDataTable; +begin + dtArticulos := dmArticulos.GetDataTableItems; + with dtArticulos do + begin + Where.AddText('(ARTICULOS.CODIGOMONTAJE = ' + IntToStr(CodigoMontaje) + ')'); + BusinessRulesID := 'BizArticulosMontaje'; + end; + Result := (dtArticulos as IBizArticulosMontaje); +end; + +{ TBizArticulosMontaje } + +{procedure TBizArticulosMontaje.AnadirPedido; +var + APedido: IBizPedidosProveedor; +begin + try + APedido := dmPedidos.GetItem(0); + if not APedido.DataTable.Active then + APedido.DataTable.Active := True; + + APedido.Insert; + APedido.CODIGOMONTAJE := CODIGOMONTAJE; + APedido.Montaje := APedido.Montaje; + APedido.Show; + + //Refrescamos la lista de pedidos del montaje + Self.DataTable.Refresh; + finally + APedido := Nil; + end; +end; +} + +procedure TBizArticulosMontaje.Delete; +begin + if (MessageDlg('¿Desea liberar este artículo?', mtConfirmation, [mbYes, mbNo], 0) = mrYes) then + begin +// Self.DataTable.Delete; + end; +end; + +{procedure TBizArticulosMontaje.Show; +var + APedido: IBizPedidosProveedor; +begin + try + APedido := dmPedidos.GetItem(CODIGO); + if not APedido.DataTable.Active then + APedido.DataTable.Active := True; + + APedido.Show; + + //Refrescamos la lista de pedidos del montaje + Self.DataTable.Refresh; + finally + APedido := Nil; + end; +end;} + +initialization + RegisterDataTableRules('BizArticulosMontaje', TBizArticulosMontaje); + +finalization + +end. + diff --git a/Modulos/Montajes/Reglas/uBizMontajes.pas b/Modulos/Montajes/Reglas/uBizMontajes.pas new file mode 100644 index 0000000..de96c99 --- /dev/null +++ b/Modulos/Montajes/Reglas/uBizMontajes.pas @@ -0,0 +1,434 @@ +unit uBizMontajes; + +interface + +uses + uDAInterfaces, uDADataTable, schMontajesClient_Intf, Classes, + DBGrids, uDBSelectionList, DB, uExceptions, Controls, + uBizContacto, uBizPresupuestosCliente, uBizInformesBase; + +Const + SITUACION_PENDIENTE = 'Pendiente'; + SITUACION_PENDIENTERECEPCION = 'Pendiente recepción'; + SITUACION_PENDIENTEMONTAJE = 'Pendiente montaje'; + SITUACION_PENDIENTEPAGO = 'Pendiente pago'; + SITUACION_PAGADO = 'Pagado y terminado'; + +Type + TEnumSituacion = (sitPendientes, sitPendienteRecepcion, sitPendienteMontaje, sitPendientePago, sitPagado); + + IBizFichaBeneficiosAux = interface(IFichaBeneficios_Aux) + ['{640104F5-36DA-4A00-9355-E731B83BCE99}'] + end; + + IBizFichaBeneficiosMontaje = interface(IFichaBeneficios) + ['{1A7191CB-6F5C-4E1C-9024-E71C5718EF8B}'] + procedure AnadirFichaBeneficiosDefecto(const pCodigoMontaje: integer); + end; + + IBizMontaje = interface(IMONTAJES) + ['{03F707D7-E00A-43D7-B14D-7450C0C9771F}'] + procedure Show; + procedure ShowAll; + procedure Preview; + procedure Print; + + function ShowForSelect : TModalResult; + + function GetCliente: IBizCliente; + procedure SetCliente(Value: IBizCliente); + property Cliente: IBizCliente read GetCliente write SetCliente; + + function GetPresupuesto: IBizPresupuestos; + procedure SetPresupuesto(Value: IBizPresupuestos); + property Presupuesto: IBizPresupuestos read GetPresupuesto write SetPresupuesto; + + function GetFichaBeneficios: IBizFichaBeneficiosMontaje; + procedure SetFichaBeneficios(Value: IBizFichaBeneficiosMontaje); + property FichaBeneficios: IBizFichaBeneficiosMontaje read GetFichaBeneficios write SetFichaBeneficios; + + procedure PreviewLabels; + procedure PrintLabels; + function GetLabelCount: Integer; + procedure SetLabelCount(Value: Integer); + property LabelCount: Integer read GetLabelCount write SetLabelCount; + end; + + TBizMontajeDataTableRules = class(TMONTAJESDataTableRules, IBizMontaje, + IApplyUpdateFailedException, ISelectedRowList, IBizInformesAware) + private + FCliente : IBizCliente; + FPresupuesto : IBizPresupuestos; + FFichaBeneficios : IBizFichaBeneficiosMontaje; + FFichaBeneficiosLink: TDADataSource; + FSelectedRows : TSelectedRowList; + FLabelCount : Integer; + procedure ShowToSelect; + function OnApplyUpdateFailed: Boolean; + procedure BeforeApplyUpdates(Sender: TDADataTable; const Delta: IDADelta); + procedure AfterApplyUpdates(Sender: TDADataTable); + procedure OnPostError(DataTable: TDADataTable; Error: EDatabaseError; + var Action: TDataAction); override; + procedure AsignarReferencia; + protected + function GetLabelCount: Integer; + procedure SetLabelCount(Value: Integer); + function GetCliente: IBizCliente; + procedure SetCliente(Value: IBizCliente); + function GetPresupuesto: IBizPresupuestos; + procedure SetPresupuesto(Value: IBizPresupuestos); + function GetFichaBeneficios: IBizFichaBeneficiosMontaje; + procedure SetFichaBeneficios(Value: IBizFichaBeneficiosMontaje); + procedure OnNewRecord(Sender: TDADataTable); override; + function GetSelectedRows : TSelectedRowList; virtual; + procedure ShowApplyUpdateFailed (const Error: EDAApplyUpdateFailed); virtual; + procedure BeforeDelete(Sender: TDADataTable); override; + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + procedure Show; virtual; + procedure ShowAll; virtual; + procedure Preview; virtual; + procedure Print; virtual; + function ShowForSelect : TModalResult; virtual; + property SelectedRows : TSelectedRowList read GetSelectedRows; + property Cliente: IBizCliente read GetCliente write SetCliente; + property Presupuesto: IBizPresupuestos read GetPresupuesto write SetPresupuesto; + property FichaBeneficios: IBizFichaBeneficiosMontaje read GetFichaBeneficios write SetFichaBeneficios; + procedure PreviewLabels; + procedure PrintLabels; + property LabelCount: Integer read GetLabelCount write SetLabelCount; + end; + + TBizFichaBeneficiosAuxDataTableRules = class(TFichaBeneficios_AuxDataTableRules, IBizFichaBeneficiosAux) + end; + + TBizFichaBeneficiosMontajeDataTableRules = class(TFichaBeneficiosDataTableRules, IBizFichaBeneficiosMontaje, + IApplyUpdateFailedException) + protected + procedure OnNewRecord(Sender: TDADataTable); override; + procedure ShowApplyUpdateFailed (const Error: EDAApplyUpdateFailed); virtual; + public + procedure AnadirFichaBeneficiosDefecto(const pCodigoMontaje: integer); + end; + + procedure ValidarMontaje (const AMontaje : IBizMontaje); + +implementation + +uses + Windows, Dialogs, uDACDSDataTable, SysUtils, uDataModuleBase, uDataModuleUsuarios, + uEditorUtils, uDataModuleMontajes, Variants, Forms, uDataModuleContactos, + uDataModulePresupuestos; + + +procedure ValidarMontaje (const AMontaje : IBizMontaje); +begin +// +end; + + +{ TBizMontajeDataTableRules } + +{ +************************** TBizMontajeDataTableRules ************************** +} + +procedure TBizMontajeDataTableRules.OnNewRecord(Sender: TDADataTable); +begin + inherited; + CODIGOEMPRESA := dmBase.CodigoEmpresa; + USUARIO := dmUsuarios.LoginInfo.UserID; + FECHAALTA := Date; + FECHAINICIO := Date; + CODIGO := dmMontajes.GetNextAutoinc('GEN_MONTAJES'); + SITUACION := SITUACION_PENDIENTERECEPCION; + + //Añadimos la ficha de beneficios por defecto + FichaBeneficios.AnadirFichaBeneficiosDefecto(CODIGO); +end; + +procedure TBizMontajeDataTableRules.Show; +begin + ShowEditor(IBizMontaje, Self, etItem); +end; + +procedure TBizMontajeDataTableRules.Preview; +begin + dmMontajes.PreviewFicha(Self.CODIGO); +end; + +procedure TBizMontajeDataTableRules.ShowApplyUpdateFailed( + const Error: EDAApplyUpdateFailed); +begin + if (Pos(AUF_FKVIOLATION, Error.Message) > 0) then + MessageBox(0, 'No se puede borrar este montaje porque tiene pedidos asociados', 'Atención', MB_ICONWARNING or MB_OK); +end; + +function TBizMontajeDataTableRules.GetSelectedRows: TSelectedRowList; +begin + Result := FSelectedRows; +end; + +function TBizMontajeDataTableRules.OnApplyUpdateFailed: Boolean; +begin +// +end; + +procedure TBizMontajeDataTableRules.ShowToSelect; +begin +// +end; + +constructor TBizMontajeDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; + FLabelCount := 4; // 4 etiquetas por hoja por defecto + FCliente := Nil; + FPresupuesto := Nil; + FFichaBeneficiosLink := TDADataSource.Create(NIL); + FSelectedRows := TSelectedRowList.Create(aDataTable); + aDataTable.OnBeforeApplyUpdates := BeforeApplyUpdates; + aDataTable.OnAfterApplyUpdates := AfterApplyUpdates; +end; + +destructor TBizMontajeDataTableRules.Destroy; +begin + FCliente := Nil; + FPresupuesto := Nil; + FFichaBeneficios := Nil; + FFichaBeneficiosLink.Free; + FSelectedRows.Free; + inherited; +end; + +procedure TBizMontajeDataTableRules.ShowAll; +begin +// ShowEditor(IBizProveedor, Self, etItems); +end; + +function TBizMontajeDataTableRules.ShowForSelect: TModalResult; +begin + Result := ShowEditor(IBizMontaje, Self, etSelectItems); +end; + +function TBizMontajeDataTableRules.GetCliente: IBizCliente; +begin + if not Assigned(FCliente) then + FCliente := dmContactos.GetCliente(CODIGOCONTACTO) + else + if (CODIGOCONTACTO <> FCliente.Codigo) and + not (FCliente.DataTable.State in dsEditModes) then + dmContactos.GetContacto(FCliente, CODIGOCONTACTO); + + if not FCliente.DataTable.Active then + FCliente.DataTable.Active := True; + + Result := FCliente; +end; + +procedure TBizMontajeDataTableRules.SetCliente(Value: IBizCliente); +var + bEnEdicion : Boolean; +begin + bEnEdicion := (DataTable.State in dsEditModes); + if not bEnEdicion then + Edit; + FCliente := Value; + if Assigned(FCliente) then + begin + CODIGOCONTACTO := FCliente.CODIGO; + Post; + if bEnEdicion then + Edit; + end +end; + +function TBizMontajeDataTableRules.GetPresupuesto: IBizPresupuestos; +begin + if not Assigned(FPresupuesto) then + FPresupuesto := dmPresupuestos.GetPresupuesto(CODIGOPRESUPUESTO) + else + if (CODIGOPRESUPUESTO <> FPresupuesto.Codigo) and + not (FPresupuesto.DataTable.State in dsEditModes) then + FPresupuesto := dmPresupuestos.GetPresupuesto(CODIGOPRESUPUESTO); + + if not FPresupuesto.DataTable.Active then + FPresupuesto.DataTable.Active := True; + + Result := FPresupuesto; +end; + +procedure TBizMontajeDataTableRules.SetPresupuesto(Value: IBizPresupuestos); +var + bEnEdicion : Boolean; +begin + if Assigned(FPresupuesto) and (length(FPresupuesto.REFERENCIA) <> 0) then + dmPresupuestos.setReferencia(FPresupuesto, Null); + + bEnEdicion := (DataTable.State in dsEditModes); + if not bEnEdicion then + Edit; + FPresupuesto := Value; + if Assigned(FPresupuesto) then + begin + CODIGOPRESUPUESTO := FPresupuesto.CODIGO; + Self.Cliente := FPresupuesto.Cliente; + Post; + if bEnEdicion then + Edit; + end +end; + +procedure TBizMontajeDataTableRules.BeforeApplyUpdates(Sender: TDADataTable; + const Delta: IDADelta); +var + i: Integer; +begin + for i := 0 to Delta.Count - 1 do + case Delta.Changes[i].ChangeType of + ctInsert, ctUpdate : asignarReferencia; +// ctDelete : + end; +end; + +procedure TBizMontajeDataTableRules.OnPostError(DataTable: TDADataTable; + Error: EDatabaseError; var Action: TDataAction); +begin + inherited; + Action := daAbort; + if (Pos(AUF_HAVEVALUE, Error.Message) > 0) then + begin + if (Pos('contacto', Error.Message) > 0) then + MessageBox(0, 'Debe indicar el cliente de este montaje', 'Atención', MB_ICONWARNING or MB_OK) + else + if (Pos('presupuesto', Error.Message) > 0) then + MessageBox(0, 'Debe indicar el presupuesto de este montaje', 'Atención', MB_ICONWARNING or MB_OK) + else + if (Pos('Fecha', Error.Message) > 0) then + MessageBox(0, 'Debe indicar la fecha de inicio de este montaje', 'Atención', MB_ICONWARNING or MB_OK) + else + raise Error; + end + else + raise Error; +end; + +procedure TBizMontajeDataTableRules.asignarReferencia; +begin + if Length(Self.Presupuesto.REFERENCIA) = 0 then + begin + if not (Self.DataTable.State in dsEditModes) then + Self.DataTable.Edit; + Self.REFERENCIA := dmMontajes.DarNuevaReferencia(Self.Presupuesto.TIPO); + Self.Post; + dmPresupuestos.setReferencia(Self.Presupuesto, Self.REFERENCIA); + showmessage('La referencia asignada al montaje y a su presupuesto asociado es ' + Self.REFERENCIA); + end; +end; + +procedure TBizMontajeDataTableRules.AfterApplyUpdates(Sender: TDADataTable); +begin + try + Self.Presupuesto.DataTable.ApplyUpdates; + except + on E: EDAApplyUpdateFailed do + raise Exception.Create('Error al asignar referencia al presupuesto'); + end; +end; + +procedure TBizMontajeDataTableRules.BeforeDelete(Sender: TDADataTable); +begin + inherited; + if not dmMontajes.PuedoEliminarMontaje(CODIGO) then + raise Exception.Create('No se puede borrar este montaje porque tiene pedidos asociados o artículos reservados'); +end; + +{ TBizFichaBeneficiosMontajeDataTableRules } + +procedure TBizFichaBeneficiosMontajeDataTableRules.AnadirFichaBeneficiosDefecto(const pCodigoMontaje: integer); +var + FichaBeneficiosAux: IFichaBeneficios_Aux; +begin + FichaBeneficiosAux := dmMontajes.darFichaBeneficiosAux; + try + with FichaBeneficiosAux.DataTable do + begin + Active := True; + while not Eof do + begin + Self.Insert; + Self.CODIGOMONTAJE := pCodigoMontaje; + Self.NUMCONCEPTO := FichaBeneficiosAux.NUMCONCEPTO; + Self.DESCRIPCION := FichaBeneficiosAux.DESCRIPCION; + Self.Post; + Next; + end; + end; + finally + FichaBeneficiosAux.DataTable.Close; + FichaBeneficiosAux := Nil; + end; +end; + +procedure TBizFichaBeneficiosMontajeDataTableRules.OnNewRecord( + Sender: TDADataTable); +begin + inherited; + NUMCONCEPTO := dmMontajes.GetNextAutoinc('GEN_FICHABENEFICIOS'); + DESCRIPCION := 'DESCRIPCION'; + COMPRA := 0; + VENTA := 0; +end; + +procedure TBizFichaBeneficiosMontajeDataTableRules.ShowApplyUpdateFailed(const Error: EDAApplyUpdateFailed); +begin +// +end; + +procedure TBizMontajeDataTableRules.Print; +begin + dmMontajes.PrintFicha(Self.CODIGO); +end; + +function TBizMontajeDataTableRules.GetLabelCount: Integer; +begin + Result := FLabelCount; +end; + +procedure TBizMontajeDataTableRules.PreviewLabels; +begin + dmMontajes.PreviewEtiquetas(Self.CODIGO, FLabelCount); +end; + +procedure TBizMontajeDataTableRules.PrintLabels; +begin + dmMontajes.PrintEtiquetas(Self.CODIGO, FLabelCount); +end; + +procedure TBizMontajeDataTableRules.SetLabelCount(Value: Integer); +begin + FLabelCount := Value; +end; + +function TBizMontajeDataTableRules.GetFichaBeneficios: IBizFichaBeneficiosMontaje; +begin + Result := FFichaBeneficios; +end; + +procedure TBizMontajeDataTableRules.SetFichaBeneficios( + Value: IBizFichaBeneficiosMontaje); +begin + FFichaBeneficios := Value; + FFichaBeneficiosLink.DataTable := Self.DataTable; + FFichaBeneficios.DataTable.MasterSource := FFichaBeneficiosLink; +end; + +initialization + RegisterDataTableRules('BizMontaje', TBizMontajeDataTableRules); + RegisterDataTableRules('BizFichaBeneficiosMontaje', TBizFichaBeneficiosMontajeDataTableRules); + RegisterDataTableRules('BizFichaBeneficiosAux', TBizFichaBeneficiosAuxDataTableRules); + +finalization + +end. diff --git a/Modulos/Montajes/Reglas/uBizMontajesPedido.pas b/Modulos/Montajes/Reglas/uBizMontajesPedido.pas new file mode 100644 index 0000000..db2282f --- /dev/null +++ b/Modulos/Montajes/Reglas/uBizMontajesPedido.pas @@ -0,0 +1,46 @@ +unit uBizMontajesPedido; + +interface + +uses uBizMontajes; + +type + IBizMontajesPedido = interface(IBizMontaje) + ['{B1AB23CC-ED9F-486C-A3F1-E72CDC016505}'] + end; + + TBizMontajesPedido = class(TBizMontajeDataTableRules, IBizMontajesPedido) + public + end; + +// function DarPedidosMontaje(CodigoMontaje : Integer) : IBizPedidosMontaje; + +implementation + +uses uDADataTable; + +{function DarPedidosMontaje(CodigoMontaje : Integer) : IBizPedidosMontaje; +var + dtPedidos: TDACDSDataTable; +begin + dtPedidos := dmPedidos.GetDataTableItems; + with dtPedidos do + begin + if not Where.Empty then + Where.AddOperator(opAND); + Where.AddText('(CODIGOMONTAJE = ' + IntToStr(CodigoMontaje) + ')'); + + BusinessRulesID := 'BizPedidosMontaje'; + end; + Result := (dtPedidos as IBizPedidosMontaje); +end;} + +{ TBizMontajesPedido } + +initialization + RegisterDataTableRules('BizMontajesPedido', TBizMontajesPedido); + +finalization + +end. + diff --git a/Modulos/Montajes/Reglas/uBizPedidosMontaje.pas b/Modulos/Montajes/Reglas/uBizPedidosMontaje.pas new file mode 100644 index 0000000..fb5eb4d --- /dev/null +++ b/Modulos/Montajes/Reglas/uBizPedidosMontaje.pas @@ -0,0 +1,100 @@ +unit uBizPedidosMontaje; + +interface + +uses uBizPedidosProveedor; + +type + IBizPedidosMontaje = interface(IBizPedidosProveedor) + ['{B2C82F22-C9E6-4965-AB7C-B6E6851051F4}'] + procedure Show; + procedure Delete; + procedure AnadirPedido(CodigoMontaje: Integer); + end; + + TBizPedidosMontaje = class(TBizPedidosProveedor, IBizPedidosMontaje) + public + procedure Show; override; + procedure Delete; + procedure AnadirPedido(CodigoMontaje: Integer); + end; + + function DarPedidosMontaje(CodigoMontaje : Integer) : IBizPedidosMontaje; + +implementation + +uses uDataModulePedidosProveedor, uDADataTable, uDAInterfaces, SysUtils, + uDACDSDataTable, uDataTableUtils, Dialogs, Controls, + schPedidosProveedorClient_Intf; + +function DarPedidosMontaje(CodigoMontaje : Integer) : IBizPedidosMontaje; +var + dtPedidos: TDACDSDataTable; +begin + dtPedidos := dmPedidos.GetDataTableItems('BizPedidosMontaje'); + with dtPedidos do + begin + if not Where.Empty then + Where.AddOperator(opAND); + Where.AddText('(CODIGOMONTAJE = ' + IntToStr(CodigoMontaje) + ')'); + end; + + Result := (dtPedidos as IBizPedidosMontaje); +end; + +{ TBizPedidosMontaje } + +procedure TBizPedidosMontaje.AnadirPedido(CodigoMontaje: Integer); +var + APedido: IBizPedidosProveedor; +begin + try + APedido := dmPedidos.GetItem(0); + if not APedido.DataTable.Active then + APedido.DataTable.Active := True; + + APedido.Insert; + APedido.CODIGOMONTAJE := CodigoMontaje; + APedido.Montaje := APedido.Montaje; + APedido.Show; + + //Refrescamos la lista de pedidos del montaje + Self.DataTable.Refresh; + finally + APedido := Nil; + end; +end; + +procedure TBizPedidosMontaje.Delete; +begin + if (MessageDlg('¿Desea borrar este pedido?', mtConfirmation, [mbYes, mbNo], 0) = mrYes) then + begin + Self.DataTable.Delete; + end; +end; + +procedure TBizPedidosMontaje.Show; +var + APedido: IBizPedidosProveedor; +begin + try + APedido := dmPedidos.GetItem(CODIGO); + if not APedido.DataTable.Active then + APedido.DataTable.Active := True; + + APedido.Show; + + //Refrescamos la lista de pedidos del montaje + Self.DataTable.Refresh; + finally + APedido := Nil; + end; +end; + +initialization + RegisterDataTableRules('BizPedidosMontaje', TBizPedidosMontaje); + +finalization + +end. + diff --git a/Modulos/Montajes/Servidor/srvMontajes_Impl.ddp b/Modulos/Montajes/Servidor/srvMontajes_Impl.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Montajes/Servidor/srvMontajes_Impl.ddp differ diff --git a/Modulos/Montajes/Servidor/srvMontajes_Impl.dfm b/Modulos/Montajes/Servidor/srvMontajes_Impl.dfm new file mode 100644 index 0000000..df13eca --- /dev/null +++ b/Modulos/Montajes/Servidor/srvMontajes_Impl.dfm @@ -0,0 +1,1447 @@ +object srvMontajes: TsrvMontajes + OldCreateOrder = True + SessionManager = dmServer.SessionManager + AcquireConnection = True + ConnectionName = 'IBX' + ServiceSchema = schMontajes + ServiceAdapter = DABINAdapter + Left = 648 + Top = 207 + Height = 356 + Width = 300 + object bpMontajes: TDABusinessProcessor + Schema = schMontajes + InsertCommandName = 'Insert_Montajes' + DeleteCommandName = 'Delete_Montajes' + UpdateCommandName = 'Update_Montajes' + RefreshDatasetName = 'Refresh_Montajes' + ReferencedDataset = 'Montajes' + ProcessorOptions = [poPrepareCommands] + UpdateMode = updWhereKeyOnly + Left = 208 + Top = 24 + end + object schMontajes: TDASchema + ConnectionManager = dmServer.ConnectionManager + DataDictionary = dmServer.DataDictionary + Diagrams = dmServer.DADiagrams + Datasets = < + item + Params = < + item + Name = 'TIPO' + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + SQL = 'SELECT * FROM DAR_REFERENCIA_MONTAJE(:TIPO)' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'REFERENCIA' + TableField = 'REFERENCIA' + end> + end> + Name = 'darNuevaReferencia' + Fields = < + item + Name = 'REFERENCIA' + DataType = datString + Size = 10 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end + item + Params = < + item + Name = 'CODIGO' + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + SQL = + 'SELECT MON.REFERENCIA, MON.FECHAINICIO, MON.FECHAFIN, MON.SITUAC' + + 'ION,'#10'MON.OBSERVACIONES, MON.CODIGOCONTACTO,'#10'CON.NOMBRE, CON.NIFC' + + 'IF, CON.CALLE, CON.CODIGOPOSTAL, CON.POBLACION,'#10'CON.PROVINCIA, C' + + 'ON.TELEFONO1, CON.TELEFONO2, CON.MOVIL'#10'FROM MONTAJES MON'#10'LEFT JO' + + 'IN CONTACTOS CON ON (MON.CODIGOCONTACTO = CON.CODIGO)'#10'WHERE MON.' + + 'CODIGO = :CODIGO' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'REFERENCIA' + TableField = 'REFERENCIA' + end + item + DatasetField = 'FECHAINICIO' + TableField = 'FECHAINICIO' + end + item + DatasetField = 'FECHAFIN' + TableField = 'FECHAFIN' + end + item + DatasetField = 'SITUACION' + TableField = 'SITUACION' + end + item + DatasetField = 'OBSERVACIONES' + TableField = 'OBSERVACIONES' + end + item + DatasetField = 'CODIGOCONTACTO' + TableField = 'CODIGOCONTACTO' + end + item + DatasetField = 'NOMBRE' + TableField = 'NOMBRE' + end + item + DatasetField = 'NIFCIF' + TableField = 'NIFCIF' + end + item + DatasetField = 'CALLE' + TableField = 'CALLE' + end + item + DatasetField = 'CODIGOPOSTAL' + TableField = 'CODIGOPOSTAL' + end + item + DatasetField = 'POBLACION' + TableField = 'POBLACION' + end + item + DatasetField = 'PROVINCIA' + TableField = 'PROVINCIA' + end + item + DatasetField = 'TELEFONO1' + TableField = 'TELEFONO1' + end + item + DatasetField = 'TELEFONO2' + TableField = 'TELEFONO2' + end + item + DatasetField = 'MOVIL' + TableField = 'MOVIL' + end> + end> + Name = 'InformeCabeceraFicha' + Fields = < + item + Name = 'REFERENCIA' + DataType = datString + Size = 20 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHAINICIO' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHAFIN' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'SITUACION' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'OBSERVACIONES' + DataType = datMemo + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOCONTACTO' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NOMBRE' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NIFCIF' + DataType = datString + Size = 10 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CALLE' + DataType = datString + Size = 150 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOPOSTAL' + DataType = datString + Size = 5 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'POBLACION' + DataType = datString + Size = 40 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PROVINCIA' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'TELEFONO1' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'TELEFONO2' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'MOVIL' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end + item + Params = <> + Statements = < + item + Connection = 'IBX' + TargetTable = 'MONTAJES' + SQL = + 'SELECT '#10' MON.CODIGOEMPRESA, MON.CODIGO, MON.FECHAALTA, MON.US' + + 'UARIO, MON.FECHAINICIO,'#10' MON.FECHAFIN, MON.SITUACION, MON.OBS' + + 'ERVACIONES,'#10' MON.CODIGOPRESUPUESTO, MON.REFERENCIA,'#10' MON.C' + + 'ODIGOCONTACTO, CON.NOMBRE, PRE.OPCION'#10#10'FROM MONTAJES MON'#10'LEFT JO' + + 'IN CONTACTOS CON ON (MON.CODIGOCONTACTO = CON.CODIGO)'#10'LEFT JOIN ' + + 'PRESUPUESTOS PRE ON (PRE.CODIGO = MON.CODIGOPRESUPUESTO)' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'CODIGOEMPRESA' + TableField = 'CODIGOEMPRESA' + end + item + DatasetField = 'CODIGO' + TableField = 'CODIGO' + end + item + DatasetField = 'FECHAALTA' + TableField = 'FECHAALTA' + end + item + DatasetField = 'USUARIO' + TableField = 'USUARIO' + end + item + DatasetField = 'CODIGOPRESUPUESTO' + TableField = 'CODIGOPRESUPUESTO' + end + item + DatasetField = 'CODIGOCONTACTO' + TableField = 'CODIGOCONTACTO' + end + item + DatasetField = 'REFERENCIA' + TableField = 'REFERENCIA' + end + item + DatasetField = 'FECHAINICIO' + TableField = 'FECHAINICIO' + end + item + DatasetField = 'FECHAFIN' + TableField = 'FECHAFIN' + end + item + DatasetField = 'SITUACION' + TableField = 'SITUACION' + end + item + DatasetField = 'OBSERVACIONES' + TableField = 'OBSERVACIONES' + end + item + DatasetField = 'NOMBRE' + TableField = 'NOMBRE' + end + item + DatasetField = 'OPCION' + TableField = 'OPCION' + end> + end> + Name = 'Montajes' + Fields = < + item + Name = 'CODIGOEMPRESA' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'CODIGOEMPRESA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGO' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'CODIGOMONTAJE' + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHAALTA' + DataType = datDateTime + BlobType = dabtUnknown + DictionaryEntry = 'FECHAALTA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'USUARIO' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DictionaryEntry = 'USUARIO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHAINICIO' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Inicio' + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHAFIN' + DataType = datDateTime + BlobType = dabtUnknown + DictionaryEntry = 'FECHAFIN' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'SITUACION' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DictionaryEntry = 'SITUACIONMONTAJE' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'OBSERVACIONES' + DataType = datMemo + BlobType = dabtUnknown + DictionaryEntry = 'OBSERVACIONES' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOPRESUPUESTO' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'CODIGOPRESUPUESTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'REFERENCIA' + DataType = datString + Size = 20 + BlobType = dabtUnknown + DictionaryEntry = 'REFERENCIA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOCONTACTO' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'CODIGOCONTACTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NOMBRE' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Nombre' + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'OPCION' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end + item + Params = < + item + Name = 'CODIGO' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'MONTAJES' + SQL = + 'SELECT '#10' MON.CODIGOEMPRESA, MON.CODIGO, MON.FECHAALTA, MON.US' + + 'UARIO, MON.FECHAINICIO,'#10' MON.FECHAFIN, MON.SITUACION, MON.OBS' + + 'ERVACIONES,'#10' MON.CODIGOPRESUPUESTO, MON.REFERENCIA,'#10' MON.C' + + 'ODIGOCONTACTO, CON.NOMBRE, PRE.OPCION'#10#10'FROM MONTAJES MON'#10'LEFT JO' + + 'IN CONTACTOS CON ON (MON.CODIGOCONTACTO = CON.CODIGO)'#10'LEFT JOIN ' + + 'PRESUPUESTOS PRE ON (PRE.CODIGO = MON.CODIGOPRESUPUESTO)'#10'WHERE M' + + 'ON.CODIGO = :CODIGO' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'CODIGOEMPRESA' + TableField = 'CODIGOEMPRESA' + end + item + DatasetField = 'CODIGO' + TableField = 'CODIGO' + end + item + DatasetField = 'FECHAALTA' + TableField = 'FECHAALTA' + end + item + DatasetField = 'USUARIO' + TableField = 'USUARIO' + end + item + DatasetField = 'CODIGOPRESUPUESTO' + TableField = 'CODIGOPRESUPUESTO' + end + item + DatasetField = 'CODIGOCONTACTO' + TableField = 'CODIGOCONTACTO' + end + item + DatasetField = 'REFERENCIA' + TableField = 'REFERENCIA' + end + item + DatasetField = 'FECHAINICIO' + TableField = 'FECHAINICIO' + end + item + DatasetField = 'FECHAFIN' + TableField = 'FECHAFIN' + end + item + DatasetField = 'SITUACION' + TableField = 'SITUACION' + end + item + DatasetField = 'OBSERVACIONES' + TableField = 'OBSERVACIONES' + end + item + DatasetField = 'NOMBRE' + TableField = 'NOMBRE' + end + item + DatasetField = 'OPCION' + TableField = 'OPCION' + end> + end> + Name = 'Refresh_Montajes' + Fields = < + item + Name = 'CODIGOEMPRESA' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'CODIGOEMPRESA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGO' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'CODIGOMONTAJE' + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHAALTA' + DataType = datDateTime + BlobType = dabtUnknown + DictionaryEntry = 'FECHAALTA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'USUARIO' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DictionaryEntry = 'USUARIO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHAINICIO' + DataType = datDateTime + BlobType = dabtUnknown + DictionaryEntry = 'FECHAINI' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHAFIN' + DataType = datDateTime + BlobType = dabtUnknown + DictionaryEntry = 'FECHAFIN' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'SITUACION' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DictionaryEntry = 'SITUACIONMONTAJE' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'OBSERVACIONES' + DataType = datMemo + BlobType = dabtUnknown + DictionaryEntry = 'OBSERVACIONES' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOPRESUPUESTO' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'CODIGOPRESUPUESTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'REFERENCIA' + DataType = datString + Size = 20 + BlobType = dabtUnknown + DictionaryEntry = 'REFERENCIA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOCONTACTO' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'CODIGOCONTACTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NOMBRE' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Nombre' + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'OPCION' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end + item + Params = < + item + Name = 'CODIGOMONTAJE' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'FICHABENEFICIOS' + SQL = + 'SELECT '#10' CODIGOMONTAJE, NUMCONCEPTO, DESCRIPCION, MODELO, PRO' + + 'VEEDOR, '#10' COMPRA, VENTA'#10'FROM FICHABENEFICIOS'#10'WHERE CODIGOMONT' + + 'AJE = :CODIGOMONTAJE'#10'ORDER BY NUMCONCEPTO' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'CODIGOMONTAJE' + TableField = 'CODIGOMONTAJE' + end + item + DatasetField = 'NUMCONCEPTO' + TableField = 'NUMCONCEPTO' + end + item + DatasetField = 'DESCRIPCION' + TableField = 'DESCRIPCION' + end + item + DatasetField = 'MODELO' + TableField = 'MODELO' + end + item + DatasetField = 'PROVEEDOR' + TableField = 'PROVEEDOR' + end + item + DatasetField = 'COMPRA' + TableField = 'COMPRA' + end + item + DatasetField = 'VENTA' + TableField = 'VENTA' + end> + end> + Name = 'FichaBeneficios' + Fields = < + item + Name = 'CODIGOMONTAJE' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'CODIGOMONTAJE' + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NUMCONCEPTO' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'NUMCONCEPTO' + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'DESCRIPCION' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DictionaryEntry = 'DESCRIPCION' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'MODELO' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PROVEEDOR' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'COMPRA' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'VENTA' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end + item + Params = < + item + Name = 'CODIGO' + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + SQL = + 'select DESCRIPCION, MODELO, PROVEEDOR, COMPRA, VENTA'#10'from FICHAB' + + 'ENEFICIOS'#10'where CODIGOMONTAJE = :CODIGO'#10'ORDER BY NUMCONCEPTO' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'DESCRIPCION' + TableField = 'DESCRIPCION' + end + item + DatasetField = 'MODELO' + TableField = 'MODELO' + end + item + DatasetField = 'PROVEEDOR' + TableField = 'PROVEEDOR' + end + item + DatasetField = 'COMPRA' + TableField = 'COMPRA' + end + item + DatasetField = 'VENTA' + TableField = 'VENTA' + end> + end> + Name = 'InformeDetallesFicha' + Fields = < + item + Name = 'DESCRIPCION' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'MODELO' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PROVEEDOR' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'COMPRA' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'VENTA' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end + item + Params = <> + Statements = < + item + Connection = 'IBX' + TargetTable = 'FICHABENEFICIOS' + SQL = + 'SELECT '#10' NUMCONCEPTO, DESCRIPCION'#10'FROM FICHABENEFICIOS_AUX'#10'OR' + + 'DER BY NUMCONCEPTO' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'NUMCONCEPTO' + TableField = 'NUMCONCEPTO' + end + item + DatasetField = 'DESCRIPCION' + TableField = 'DESCRIPCION' + end> + end> + Name = 'FichaBeneficios_Aux' + Fields = < + item + Name = 'NUMCONCEPTO' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'DESCRIPCION' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end> + Commands = < + item + Params = < + item + Name = 'CODIGOEMPRESA' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'CODIGO' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'FECHAALTA' + DataType = datDateTime + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'USUARIO' + DataType = datString + Size = 100 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'CODIGOPRESUPUESTO' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'CODIGOCONTACTO' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'REFERENCIA' + DataType = datString + Size = 20 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'FECHAINICIO' + DataType = datDateTime + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'FECHAFIN' + DataType = datDateTime + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'SITUACION' + DataType = datString + Size = 30 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'OBSERVACIONES' + DataType = datMemo + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'MONTAJES' + SQL = + 'INSERT'#10' INTO MONTAJES'#10' (CODIGOEMPRESA, CODIGO, FECHAALTA, US' + + 'UARIO, CODIGOPRESUPUESTO, '#10' CODIGOCONTACTO, REFERENCIA, FECH' + + 'AINICIO, FECHAFIN, '#10' SITUACION, OBSERVACIONES)'#10' VALUES'#10' ' + + '(:CODIGOEMPRESA, :CODIGO, :FECHAALTA, :USUARIO, :CODIGOPRESUPUES' + + 'TO, '#10' :CODIGOCONTACTO, :REFERENCIA, :FECHAINICIO, :FECHAFIN,' + + ' '#10' :SITUACION, :OBSERVACIONES)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Insert_Montajes' + end + item + Params = < + item + Name = 'OLD_CODIGO' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'MONTAJES' + SQL = 'DELETE '#10' FROM'#10' MONTAJES'#10' WHERE'#10' (CODIGO = :OLD_CODIGO)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Delete_Montajes' + end + item + Params = < + item + Name = 'CODIGOEMPRESA' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'CODIGO' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'FECHAALTA' + DataType = datDateTime + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'USUARIO' + DataType = datString + Size = 100 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'CODIGOPRESUPUESTO' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'CODIGOCONTACTO' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'REFERENCIA' + DataType = datString + Size = 20 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'FECHAINICIO' + DataType = datDateTime + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'FECHAFIN' + DataType = datDateTime + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'SITUACION' + DataType = datString + Size = 30 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'OBSERVACIONES' + DataType = datMemo + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'OLD_CODIGO' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'MONTAJES' + SQL = + 'UPDATE MONTAJES'#10' SET '#10' CODIGOEMPRESA = :CODIGOEMPRESA, '#10' ' + + 'CODIGO = :CODIGO, '#10' FECHAALTA = :FECHAALTA, '#10' USUARIO = :U' + + 'SUARIO, '#10' CODIGOPRESUPUESTO = :CODIGOPRESUPUESTO, '#10' CODIGO' + + 'CONTACTO = :CODIGOCONTACTO, '#10' REFERENCIA = :REFERENCIA, '#10' ' + + 'FECHAINICIO = :FECHAINICIO, '#10' FECHAFIN = :FECHAFIN, '#10' SITU' + + 'ACION = :SITUACION, '#10' OBSERVACIONES = :OBSERVACIONES'#10' WHERE'#10 + + ' (CODIGO = :OLD_CODIGO)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Update_Montajes' + end> + RelationShips = < + item + Name = 'FK_FichaBeneficios_Montajes' + MasterDatasetName = 'Montajes' + MasterFields = 'CODIGO' + DetailDatasetName = 'FichaBeneficios' + DetailFields = 'CODIGOMONTAJE' + end> + UpdateRules = < + item + Name = 'Insert Montajes' + DoUpdate = False + DoInsert = True + DoDelete = False + DatasetName = 'Montajes' + FailureBehaviour = fbRaiseException + end + item + Name = 'Update Montajes' + DoUpdate = True + DoInsert = False + DoDelete = False + DatasetName = 'Montajes' + FailureBehaviour = fbRaiseException + end + item + Name = 'Delete Montajes' + DoUpdate = False + DoInsert = False + DoDelete = True + DatasetName = 'Montajes' + FailureBehaviour = fbRaiseException + end> + Left = 40 + Top = 24 + end + object frxReport1: TfrxReport + Version = '3.23.7' + DotMatrixReport = False + EngineOptions.DoublePass = True + IniFile = '\Software\Fast Reports' + PreviewOptions.Buttons = [pbPrint, pbLoad, pbSave, pbExport, pbZoom, pbFind, pbOutline, pbPageSetup, pbTools, pbEdit, pbNavigator] + PreviewOptions.OutlineWidth = 180 + PreviewOptions.Zoom = 1.000000000000000000 + PrintOptions.Printer = 'Default' + ReportOptions.CreateDate = 37871.995398692100000000 + ReportOptions.Description.Strings = ( + 'Demonstrates how to create simple list report.') + ReportOptions.LastChange = 39077.429504479170000000 + ReportOptions.VersionBuild = '1' + ReportOptions.VersionMajor = '12' + ReportOptions.VersionMinor = '13' + ReportOptions.VersionRelease = '1' + ScriptLanguage = 'PascalScript' + ScriptText.Strings = ( + 'procedure DatosClienteOnBeforePrint(Sender: TfrxComponent);' + 'var' + ' cadenaAux: String;' + 'begin' + ' DatosCliente.Lines.Clear;' + ' DatosCliente.Lines.Add();' + '' + ' if ( <> '#39#39')' + ' or ( <> '#39#39') then' + + ' DatosCliente.Lines.Add( + );' + '' + ' CadenaAux := '#39#39';' + ' if <> '#39#39' then' + ' if CadenaAux = '#39#39' then' + + ' CadenaAux := CadenaAux + '#39'Telf:'#39' + ' + ' else' + + ' CadenaAux := CadenaAux + '#39' / '#39' + ;' + '' + ' if <> '#39#39' then' + ' if CadenaAux = '#39#39' then' + + ' CadenaAux := CadenaAux + '#39'Telf:'#39' + ' + ' else' + + ' CadenaAux := CadenaAux + '#39' / '#39' + ;' + '' + ' if <> '#39#39' then' + ' if CadenaAux = '#39#39' then' + + ' CadenaAux := CadenaAux + '#39'Telf:'#39' + ' + ' else' + + ' CadenaAux := CadenaAux + '#39' / '#39' + ' + + ';' + '' + ' DatosCliente.Lines.Add(CadenaAux);' + 'end;' + '' + 'begin' + '' + 'end.') + StoreInDFM = False + Left = 40 + Top = 80 + Datasets = < + item + DataSet = frxDBCabecera + DataSetName = 'frxDBCabecera' + end + item + DataSet = frxDBDetalles + DataSetName = 'frxDBDetalles' + end> + Variables = <> + Style = <> + end + object frxDBCabecera: TfrxDBDataset + UserName = 'frxDBCabecera' + CloseDataSource = False + DataSource = DADataCabecera + Left = 40 + Top = 136 + end + object DADataCabecera: TDADataSource + DataTable = tbl_Montaje + Left = 136 + Top = 137 + end + object tbl_Montaje: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = <> + Params = <> + MasterMappingMode = mmDataRequest + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteFetchEnabled = False + SchemaCall.Params = <> + DataRequestCall.Params = <> + DataUpdateCall.Params = <> + ScriptCall.Params = <> + ReadOnly = False + Adapter = DABINAdapter + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + IndexDefs = <> + Left = 224 + Top = 136 + end + object frxDBDetalles: TfrxDBDataset + UserName = 'frxDBDetalles' + CloseDataSource = False + DataSource = DADataDetalles + Left = 40 + Top = 192 + end + object DADataDetalles: TDADataSource + DataTable = tbl_Ficha + Left = 136 + Top = 193 + end + object tbl_Ficha: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = <> + Params = <> + MasterMappingMode = mmDataRequest + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteFetchEnabled = False + SchemaCall.Params = <> + DataRequestCall.Params = <> + DataUpdateCall.Params = <> + ScriptCall.Params = <> + ReadOnly = False + Adapter = DABINAdapter + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + IndexDefs = <> + Left = 224 + Top = 192 + end + object DABINAdapter: TDABINAdapter + Left = 120 + Top = 24 + end +end diff --git a/Modulos/Montajes/Servidor/srvMontajes_Impl.pas b/Modulos/Montajes/Servidor/srvMontajes_Impl.pas new file mode 100644 index 0000000..b077a7b --- /dev/null +++ b/Modulos/Montajes/Servidor/srvMontajes_Impl.pas @@ -0,0 +1,142 @@ +unit srvMontajes_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:} DARemoteService_Impl, + {Used RODLs:} DataAbstract_Intf, + {Generated:} FactuGES_Intf, uDAClasses, uDAScriptingProvider, + uDABusinessProcessor, uDADataTable, uDACDSDataTable, DB, frxClass, + frxDBSet, uDAInterfaces, uDABINAdapter; + +type + { TsrvMontajes } + TsrvMontajes = class(TDARemoteService, IsrvMontajes) + bpMontajes: TDABusinessProcessor; + frxDBCabecera: TfrxDBDataset; + DADataCabecera: TDADataSource; + tbl_Montaje: TDACDSDataTable; + frxDBDetalles: TfrxDBDataset; + DADataDetalles: TDADataSource; + tbl_Ficha: TDACDSDataTable; + DABINAdapter: TDABINAdapter; + frxReport1: TfrxReport; + schMontajes: TDASchema; + private + protected + { IsrvMontajes methods } + function GetNextAutoinc(const Generador: String): Integer; + function PuedoEliminarMontaje(const Codigo: Integer): Boolean; + function GenerateReportFicha(const Codigo: Integer): Binary; + function GenerateReportEtiquetas(const Codigo: Integer; const NumEtiquetas : Integer): Binary; + function DarNuevaReferencia(const TipoMontaje: String): String; + end; + +implementation + +{$R *.dfm} +uses + {Generated:} FactuGES_Invk, uDataModuleServer, schMontajesClient_Intf; + +procedure Create_srvMontajes(out anInstance : IUnknown); +begin + anInstance := TsrvMontajes.Create(NIL); +end; + +{ srvMontajes } +function TsrvMontajes.GetNextAutoinc(const Generador: String): Integer; +begin + Result := uDataModuleServer.GetNextAutoinc(Connection, Generador); +end; + +function TsrvMontajes.PuedoEliminarMontaje(const Codigo: Integer): Boolean; +var + dsData: IDASQLCommand; +begin + Result := True; + Connection.BeginTransaction; + try + dsData := schMontajes.NewCommand(Connection, 'Delete_Montajes', ['OLD_CODIGO'], [Codigo]); + except + on E: Exception do + Result := False; + end; + Connection.RollbackTransaction; +end; + +function TsrvMontajes.GenerateReportFicha(const Codigo: Integer): Binary; +var + dsMaster: IDADataset; + dsDetail: IDADataset; + AStream: TMemoryStream; +begin + AStream := TMemoryStream.Create; + Result := Binary.Create; + try + dsMaster := schMontajes.NewDataset(Connection, nme_InformeCabeceraFicha, ['CODIGO'], [Codigo]); + dsDetail := schMontajes.NewDataset(Connection, nme_InformeDetallesFicha, ['CODIGO'], [Codigo], False); + dsDetail.Active := True; + + AStream.Clear; + ServiceAdapter.WriteDataset(AStream, dsMaster, [woRows, woSchema], -1); + ServiceAdapter.ReadDataset(AStream, tbl_Montaje, TRUE, '', TRUE, TRUE); + + AStream.Clear; + ServiceAdapter.WriteDataset(AStream, dsDetail, [woRows, woSchema], -1); + ServiceAdapter.ReadDataset(AStream, tbl_Ficha, TRUE, '', TRUE, TRUE); + + frxReport1.LoadFromFile(DarRutaInformes + 'InfFicha.fr3', True); + frxReport1.PrepareReport; + frxReport1.PreviewPages.SaveToStream(Result); + finally + AStream.Free; + end; +end; + +function TsrvMontajes.GenerateReportEtiquetas( + const Codigo: Integer; const NumEtiquetas : Integer): Binary; +var + dsMaster: IDADataset; + AStream: TMemoryStream; +begin + AStream := TMemoryStream.Create; + Result := Binary.Create; + try + dsMaster := schMontajes.NewDataset(Connection, nme_Refresh_Montajes, ['CODIGO'], [Codigo]); + + AStream.Clear; + ServiceAdapter.WriteDataset(AStream, dsMaster, [woRows, woSchema], -1); + ServiceAdapter.ReadDataset(AStream, tbl_Montaje, TRUE, '', TRUE, TRUE); + + frxReport1.LoadFromFile(DarRutaInformes + 'InfEtiquetasMontajes.fr3', True); + frxReport1.Variables['NumEtiquetas'] := NumEtiquetas; + frxReport1.PrepareReport; + frxReport1.PreviewPages.SaveToStream(Result); + finally + AStream.Free; + end; +end; + +function TsrvMontajes.DarNuevaReferencia(const TipoMontaje: String): String; +var + dsReferencia: IDADataset; +begin + dsReferencia := schMontajes.NewDataset(Connection, 'DarNuevaReferencia', ['TIPO'], [TipoMontaje]); + Result := dsReferencia.FieldByName('REFERENCIA').AsString; +end; + +initialization + TROClassFactory.Create('srvMontajes', Create_srvMontajes, TsrvMontajes_Invoker); + +finalization + +end. diff --git a/Modulos/Pagos/Cliente/Pagos.bdsproj b/Modulos/Pagos/Cliente/Pagos.bdsproj new file mode 100644 index 0000000..026e4d8 --- /dev/null +++ b/Modulos/Pagos/Cliente/Pagos.bdsproj @@ -0,0 +1,492 @@ + + + + + + + + + + + + Pagos.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 3 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + .\ + ..\..\..\Output\Cliente + .\ + $(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\Reglas;..\..\Cuentas\Cliente;..\..\Asientos\Cliente;..\..\Intervalos\Cliente;..\..\Documentos asociados;..\..\Almacenes\Cliente + vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;IntrawebDB_50_70;Intraweb_50_70;Rave50CLX;Rave50VCL;dclOfficeXP;PluginSDK_D7R;DJcl;JvStdCtrlsD7R;JvAppFrmD7R;JvCoreD7R;JvBandsD7R;JvBDED7R;JvDBD7R;JvDlgsD7R;JvCmpD7R;JvCryptD7R;JvCtrlsD7R;JvCustomD7R;JvDockingD7R;JvDotNetCtrlsD7R;JvEDID7R;qrpt;JvGlobusD7R;JvHMID7R;JvInspectorD7R;JvInterpreterD7R;JvJansD7R;JvManagedThreadsD7R;JvMMD7R;JvNetD7R;JvPageCompsD7R;JvPluginD7R;JvPrintPreviewD7R;JvSystemD7R;JvTimeFrameworkD7R;JvUIBD7R;JvValidatorsD7R;JvWizardD7R;JvXPCtrlsD7R;GUISDK_D7;RemObjects_WebBroker_D7;RemObjects_Indy_D7;RemObjects_RODX_D7;RemObjects_BPDX_D7;PascalScript_RO_D7;DataAbstract_Core_D7;DataAbstract_IDE_D7;DataAbstract_DBXDriver_D7;DataAbstract_Scripting_D7;dxBarD7;dxComnD7;cxLibraryVCLD7;cxEditorsVCLD7;dxThemeD7;cxDataD7;cxExtEditorsVCLD7;cxGridVCLD7;cxPageControlVCLD7;cxSchedulerVCLD7;cxTreeListVCLD7;dxBarDBNavD7;dxBarExtDBItemsD7;dxBarExtItemsD7;dxDockingD7;dxNavBarD7;dxPSCoreD7;dxsbD7;dxPSLnksD7;dxPSTeeChartD7;EPCOTAUtils70;PNG_D7;PngComponentsD7;tb2k_d7;tbx_d7;UserControlD7_RT;fqb70;frx7;frxADO7;frxBDE7;frxcs7;frxDB7;frxDBX7;frxe7;frxIBX7;fs7;fsADO7;fsBDE7;fsDB7;fsIBX7;cxExportVCLD7;cxIntl5D7;cxIntlPrintSys3D7;dxPScxCommonD7;dxPScxExtCommonD7;dxPScxGridLnkD7;dxPScxPCProdD7;dxPScxTLLnkD7;dxPSDBTeeChartD7;dxPsPrVwAdvD7 + + + False + + + + + + False + + + True + False + + + + $00000000 + C:\Archivos de programa\Borland\Delphi7\Bin\ + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + diff --git a/Modulos/Pagos/Cliente/Pagos.cfg b/Modulos/Pagos/Cliente/Pagos.cfg new file mode 100644 index 0000000..95ebc70 --- /dev/null +++ b/Modulos/Pagos/Cliente/Pagos.cfg @@ -0,0 +1,45 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-GD +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N".\" +-LE"..\..\..\Output\Cliente" +-LN".\" +-U"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\Reglas;..\..\Cuentas\Cliente;..\..\Asientos\Cliente;..\..\Intervalos\Cliente;..\..\Documentos asociados;..\..\Almacenes\Cliente;..\..\Montajes\Cliente" +-O"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\Reglas;..\..\Cuentas\Cliente;..\..\Asientos\Cliente;..\..\Intervalos\Cliente;..\..\Documentos asociados;..\..\Almacenes\Cliente;..\..\Montajes\Cliente" +-I"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\Reglas;..\..\Cuentas\Cliente;..\..\Asientos\Cliente;..\..\Intervalos\Cliente;..\..\Documentos asociados;..\..\Almacenes\Cliente;..\..\Montajes\Cliente" +-R"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\Reglas;..\..\Cuentas\Cliente;..\..\Asientos\Cliente;..\..\Intervalos\Cliente;..\..\Documentos asociados;..\..\Almacenes\Cliente;..\..\Montajes\Cliente" +-Z +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/Modulos/Pagos/Cliente/Pagos.dcp b/Modulos/Pagos/Cliente/Pagos.dcp new file mode 100644 index 0000000..7cd2ab8 Binary files /dev/null and b/Modulos/Pagos/Cliente/Pagos.dcp differ diff --git a/Modulos/Pagos/Cliente/Pagos.dof b/Modulos/Pagos/Cliente/Pagos.dof new file mode 100644 index 0000000..1661cd1 --- /dev/null +++ b/Modulos/Pagos/Cliente/Pagos.dof @@ -0,0 +1,209 @@ +[FileVersion] +Version=7.0 +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=1 +SymbolLibrary=1 +SymbolPlatform=1 +UnitLibrary=1 +UnitPlatform=1 +UnitDeprecated=1 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 +[Linker] +MapFile=3 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription= +[Directories] +OutputDir= +UnitOutputDir=.\ +PackageDLLOutputDir=..\..\..\Output\Cliente +PackageDCPOutputDir=.\ +SearchPath=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\Reglas;..\..\Cuentas\Cliente;..\..\Asientos\Cliente;..\..\Intervalos\Cliente;..\..\Documentos asociados;..\..\Almacenes\Cliente;..\..\Montajes\Cliente +Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;IntrawebDB_50_70;Intraweb_50_70;Rave50CLX;Rave50VCL;dclOfficeXP;PluginSDK_D7R;DJcl;JvStdCtrlsD7R;JvAppFrmD7R;JvCoreD7R;JvBandsD7R;JvBDED7R;JvDBD7R;JvDlgsD7R;JvCmpD7R;JvCryptD7R;JvCtrlsD7R;JvCustomD7R;JvDockingD7R;JvDotNetCtrlsD7R;JvEDID7R;qrpt;JvGlobusD7R;JvHMID7R;JvInspectorD7R;JvInterpreterD7R;JvJansD7R;JvManagedThreadsD7R;JvMMD7R;JvNetD7R;JvPageCompsD7R;JvPluginD7R;JvPrintPreviewD7R;JvSystemD7R;JvTimeFrameworkD7R;JvUIBD7R;JvValidatorsD7R;JvWizardD7R;JvXPCtrlsD7R;GUISDK_D7;RemObjects_WebBroker_D7;RemObjects_Indy_D7;RemObjects_RODX_D7;RemObjects_BPDX_D7;PascalScript_RO_D7;DataAbstract_Core_D7;DataAbstract_IDE_D7;DataAbstract_DBXDriver_D7;DataAbstract_Scripting_D7;dxBarD7;dxComnD7;cxLibraryVCLD7;cxEditorsVCLD7;dxThemeD7;cxDataD7;cxExtEditorsVCLD7;cxGridVCLD7;cxPageControlVCLD7;cxSchedulerVCLD7;cxTreeListVCLD7;dxBarDBNavD7;dxBarExtDBItemsD7;dxBarExtItemsD7;dxDockingD7;dxNavBarD7;dxPSCoreD7;dxsbD7;dxPSLnksD7;dxPSTeeChartD7;EPCOTAUtils70;PNG_D7;PngComponentsD7;tb2k_d7;tbx_d7;UserControlD7_RT;fqb70;frx7;frxADO7;frxBDE7;frxcs7;frxDB7;frxDBX7;frxe7;frxIBX7;fs7;fsADO7;fsBDE7;fsDB7;fsIBX7;cxExportVCLD7;cxIntl5D7;cxIntlPrintSys3D7;dxPScxCommonD7;dxPScxExtCommonD7;dxPScxGridLnkD7;dxPScxPCProdD7;dxPScxTLLnkD7;dxPSDBTeeChartD7;dxPsPrVwAdvD7 +Conditionals= +DebugSourceDirs= +UsePackages=0 +[Parameters] +RunParams= +HostApplication= +Launcher= +UseLauncher=0 +DebugCWD= +[Language] +ActiveLang= +ProjectLang= +RootDir=C:\Archivos de programa\Borland\Delphi7\Bin\ +[Version Info] +IncludeVerInfo=1 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=3082 +CodePage=1252 +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= +[Excluded Packages] +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\cxTreeListVCLD7.bpl=ExpressQuantumTreeList 4 (VCL Edition) by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxThemeD7.bpl=Express XP Theme Manager by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\cxLibraryVCLD7.bpl=Express Cross Platform Library (VCL Edition) by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\cxExportVCLD7.bpl=Express Cross Platform Export Library (VCL Edition) by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\cxEditorsVCLD7.bpl=ExpressEditors Library 5 (VCL Edition) by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\cxDataD7.bpl=ExpressDataController by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\cxExtEditorsVCLD7.bpl=ExpressExtendedEditors Library 5 (VCL Edition) by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\cxGridVCLD7.bpl=ExpressQuantumGrid 5 (VCL Edition) by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\cxPageControlVCLD7.bpl=Express Cross Platform PageControl (VCL Edition) by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\cxSchedulerVCLD7.bpl=ExpressScheduler 2 (VCL Edition) by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxsbD7.bpl=ExpressSideBar by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxComnD7.bpl=ExpressCommonLibrary by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxBarD7.bpl=ExpressBars by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxBarDBNavD7.bpl=ExpressBars DBNavigator by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxBarExtDBItemsD7.bpl=ExpressBars extended DB items by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxBarExtItemsD7.bpl=ExpressBars extended items by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxDockingD7.bpl=ExpressDocking Library by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxLayoutControlD7.bpl=ExpressLayout Control by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxNavBarD7.bpl=ExpressNavBar by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxGDIPlusD7.bpl=ExpressGDI+ Library by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxPSCoreD7.bpl=ExpressPrinting System by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\cxVerticalGridVCLD7.bpl=ExpressVerticalGrid (VCL Edition) by Developer Express Inc. +C:\Archivos de programa\Clever Components\Database Comparer\Delphi 7\Lib\ComparerD7.bpl=Database Comparer VCL +C:\Archivos de programa\Clever Components\Database Comparer\Delphi 7\Lib\ComparerBdeD7.bpl=Database Comparer VCL BDE +C:\Archivos de programa\Clever Components\Database Comparer\Delphi 7\Lib\ComparerDBXD7.bpl=Database Comparer VCL DBX +C:\Archivos de programa\Clever Components\Database Comparer\Delphi 7\Lib\ComparerIbxD7.bpl=Database Comparer VCL IBX +C:\Archivos de programa\Clever Components\Database Comparer\Delphi 7\Lib\ComparerAdoD7.bpl=Database Comparer VCL ADO +C:\Archivos de programa\EurekaLog 5\Delphi7\ExceptionExpert7.bpl=EurekaLog 5.1.9 +C:\WINDOWS\system32\dclShX_Namespace_V3D7.bpl=(untitled) +C:\WINDOWS\system32\vclShX_Namespace_v3D7.bpl=(untitled) +[HistoryLists\hlDebugSourcePath] +Count=1 +Item0=D:\Proyectos\Componentes\GUISDK\Sources\;D:\Proyectos\Componentes\PluginSDK\Source\;D:\Proyectos\FactuGES (Estudio)\Codigo\Modulos\Contactos\Cliente;D:\Proyectos\FactuGES (Estudio)\Codigo\Modulos\Contactos\Reglas +[HistoryLists\hlUnitAliases] +Count=1 +Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +[HistoryLists\hlSearchPath] +Count=19 +Item0=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\Reglas;..\..\Cuentas\Cliente;..\..\Asientos\Cliente;..\..\Intervalos\Cliente;..\..\Documentos asociados;..\..\Almacenes\Cliente;..\..\Montajes\Cliente +Item1=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente;..\..\Asientos\Cliente;..\..\Cuentas\Cliente;..\..\Almacenes\Cliente;..\..\Montajes\Cliente +Item2=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente;..\..\Asientos\Cliente;..\..\Cuentas\Cliente;..\..\Almacenes\Cliente;..\..\Montajes\Cliente +Item3=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente;..\..\Asientos\Cliente;..\..\Cuentas\Cliente +Item4=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente;..\..\Asientos\Cliente +Item5=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente +Item6=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente +Item7=..\Modulos\Presupuestos\Reglas;..\Modulos\Contactos\Reglas;..\Base;..\Configuracion;..\Usuarios;..\Modulos\Albaranes de cliente\Reglas +Item8=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\Base;..\Configuracion;..\Usuarios;..\Modulos\Intervalos;..\Modulos\Documentos asociados;..\Modulos\Contactos\Cliente;..\Modulos\Contactos\Reglas;..\Modulos\Presupuestos\Cliente;..\Modulos\Presupuestos\Reglas;..\Modulos\Albaranes de cliente\Cliente;..\Modulos\Albaranes de cliente\Reglas;..\Modulos\Facturas de cliente\Cliente;..\Modulos\Facturas de cliente\Reglas;..\Modulos\Pedidos a proveedor\Cliente;..\Modulos\Pedidos a proveedor\Reglas;..\Modulos\Facturas de proveedor\Cliente;..\Modulos\Facturas de proveedor\Reglas;..\Modulos\Montajes\Reglas;..\Modulos\Montajes\Cliente;..\Modulos\Articulos\Cliente;..\Modulos\Articulos\Reglas;..\Modulos\Almacenes\Reglas;..\Modulos\Almacenes\Cliente;..\Modulos\Pagos\Reglas;..\Modulos\Pagos\Cliente;..\Modulos\Cuentas\Reglas;..\Modulos\Cuentas\Cliente;..\Modulos\Asientos\Reglas;..\Modulos\Asientos\Cliente;..\Modulos\Calendarios\Cliente;..\Modulos\Calendarios\Reglas +Item9=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente;..\..\Documentos asociados;..\..\Contactos\Cliente;..\..\Almacenes\Cliente +Item10=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados +Item11=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente;..\..\Documentos asociados;..\..\Contactos\Cliente +Item12=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente;..\..\Documentos asociados +Item13=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente +Item14=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados;..\..\Montajes\Cliente;..\..\Almacenes\Cliente +Item15=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados;..\..\Montajes\Cliente +Item16=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\Servidor +Item17=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\base;..\Modulos\Calendarios\Cliente;..\Modulos\Calendarios\Reglas +Item18=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\Base;..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios +[HistoryLists\hlUnitOutputDirectory] +Count=1 +Item0=.\ +[HistoryLists\hlOutputDirectorry] +Count=2 +Item0=..\Output\Servidor +Item1=..\Output\Cliente +[HistoryLists\hlBPLOutput] +Count=3 +Item0=..\..\..\Output\Cliente +Item1=..\Output\Cliente +Item2=..\..\Output\Cliente +[HistoryLists\hlDCPOutput] +Count=1 +Item0=.\ diff --git a/Modulos/Pagos/Cliente/Pagos.dpk b/Modulos/Pagos/Cliente/Pagos.dpk new file mode 100644 index 0000000..18349d0 --- /dev/null +++ b/Modulos/Pagos/Cliente/Pagos.dpk @@ -0,0 +1,93 @@ +package Pagos; + +{$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 + rtl, + vcl, + PluginSDK_D7R, + GUISDK_D7, + ccpack70, + designide, + vclactnband, + vclx, + cfpack, + JvAppFrmD7R, + JvStdCtrlsD7R, + vcljpg, + JvCoreD7R, + JvSystemD7R, + PngComponentsD7, + PNG_D7, + dbrtl, + dsnap, + adortl, + BaseD7, + vcldb, + cxLibraryVCLD7, + dxThemeD7, + cxExtEditorsVCLD7, + cxDataD7, + cxEditorsVCLD7, + dxPSCoreD7, + dxComnD7, + cxGridVCLD7, + cxPageControlVCLD7, + cxExportVCLD7, + cxIntlPrintSys3D7, + dxPScxCommonD7, + dxPSLnksD7, + vclshlctrls, + dxPScxGridLnkD7, + dclcxLibraryVCLD7, + Usuarios, + JvPageCompsD7R, + tb2k_d7, + tbx_d7, + Contactos, + Cuentas, + Asientos, + Intervalos, + Montajes_Intf; + +contains + uPluginControllerPagos in 'uPluginControllerPagos.pas' {ModulePagos: TModuleController}, + uDataModulePagos in 'uDataModulePagos.pas' {dmPagos: TDAClientDataModule}, + uViewDatosPago in 'uViewDatosPago.pas' {frViewDatosPago: TCustomView}, + uViewPagos in 'uViewPagos.pas' {frViewPagos: TCustomView}, + uBizPagos in '..\Reglas\uBizPagos.pas', + uEditorPagos in 'uEditorPagos.pas' {fEditorPagos: TCustomEditor}, + uEditorPagosCliente in 'uEditorPagosCliente.pas' {fEditorPagosCliente: TCustomEditor}, + uEditorPagosProveedor in 'uEditorPagosProveedor.pas' {fEditorPagosProveedor: TCustomEditor}, + uViewPagosCliente in 'uViewPagosCliente.pas' {frViewPagosCliente: TCustomView}, + uViewPagosProveedor in 'uViewPagosProveedor.pas' {frViewPagosProveedor: TCustomView}, + uViewPago in 'uViewPago.pas' {frViewPago: TCustomView}, + uViewPagoCliente in 'uViewPagoCliente.pas' {frViewPagoCliente: TCustomView}, + uEditorPago in 'uEditorPago.pas' {fEditorPago: TCustomEditor}, + uEditorPagoCliente in 'uEditorPagoCliente.pas' {fEditorPagoCliente: TCustomEditor}, + uViewPagoProveedor in 'uViewPagoProveedor.pas' {frViewPagoProveedor: TCustomView}, + uEditorPagoProveedor in 'uEditorPagoProveedor.pas' {fEditorPagoProveedor: TCustomEditor}; + +end. diff --git a/Modulos/Pagos/Cliente/Pagos.drc b/Modulos/Pagos/Cliente/Pagos.drc new file mode 100644 index 0000000..a5d5271 --- /dev/null +++ b/Modulos/Pagos/Cliente/Pagos.drc @@ -0,0 +1,14 @@ +/* VER150 + Generated by the Borland Delphi Pascal Compiler + because -GD or --drc was supplied to the compiler. + + This file contains compiler-generated resources that + were bound to the executable. + If this file is empty, then no compiler-generated + resources were bound to the produced executable. +*/ + +STRINGTABLE +BEGIN +END + diff --git a/Modulos/Pagos/Cliente/Pagos.res b/Modulos/Pagos/Cliente/Pagos.res new file mode 100644 index 0000000..ec5f233 Binary files /dev/null and b/Modulos/Pagos/Cliente/Pagos.res differ diff --git a/Modulos/Pagos/Cliente/uDataModulePagos.ddp b/Modulos/Pagos/Cliente/uDataModulePagos.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Pagos/Cliente/uDataModulePagos.ddp differ diff --git a/Modulos/Pagos/Cliente/uDataModulePagos.dfm b/Modulos/Pagos/Cliente/uDataModulePagos.dfm new file mode 100644 index 0000000..fab0ad9 --- /dev/null +++ b/Modulos/Pagos/Cliente/uDataModulePagos.dfm @@ -0,0 +1,308 @@ +object dmPagos: TdmPagos + OldCreateOrder = True + OnCreate = DAClientDataModuleCreate + RemoteService = RORemoteService + Adapter = DABINAdapter + SchemaCall.MethodName = 'GetSchemaAsXML' + SchemaCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtString + end> + Left = 241 + Top = 140 + Height = 208 + Width = 313 + object RORemoteService: TRORemoteService + ServiceName = 'srvPagos' + Message = dmBase.ROMessage + Channel = dmBase.ROChannel + Left = 48 + Top = 20 + end + object DABINAdapter: TDABINAdapter + Left = 48 + Top = 88 + end + object tbl_Pagos: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'CODIGOEMPRESA' + DataType = datInteger + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'C'#243'd. empresa' + Alignment = taLeftJustify + DictionaryEntry = 'CODIGOEMPRESA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGO' + DataType = datInteger + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'C'#243'digo' + Alignment = taLeftJustify + DictionaryEntry = 'CODIGO' + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHAALTA' + DataType = datDateTime + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'Fecha de alta' + Alignment = taLeftJustify + DictionaryEntry = 'FECHAALTA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'USUARIO' + DataType = datString + Size = 100 + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'Usuario de alta' + Alignment = taLeftJustify + DictionaryEntry = 'USUARIO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CUENTA' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'C'#243'digo' + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTE' + DataType = datCurrency + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Importe total' + Alignment = taRightJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FORMAPAGO' + DataType = datMemo + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Forma de pago' + Alignment = taLeftJustify + DictionaryEntry = 'FORMAPAGO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'DESCRIPCION' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Descripci'#243'n' + Alignment = taLeftJustify + DictionaryEntry = 'DESCRIPCION' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHAPAGO' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Fecha de pago' + Alignment = taLeftJustify + DictionaryEntry = 'FECHAPAGO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHAMODIFICACION' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Fecha de pago' + Alignment = taLeftJustify + DictionaryEntry = 'FECHAMODIFICACION' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOCONTACTO' + DataType = datInteger + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'C'#243'd. contacto' + Alignment = taLeftJustify + DictionaryEntry = 'CODIGOCONTACTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NOMBRE' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOCATEGORIA' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CATEGORIA' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + Params = <> + MasterMappingMode = mmDataRequest + StreamingOptions = [soDisableEventsWhileStreaming] + SchemaCall.MethodName = 'GetDatasetSchema' + SchemaCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBinary + end + item + Name = 'aDatasetName' + ParamType = fIn + DataType = rtString + Value = 'Pagos' + end> + DataRequestCall.MethodName = 'GetDatasetDataEx' + DataRequestCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBinary + end + item + Name = 'DatasetName' + ParamType = fIn + DataType = rtString + Value = 'Pagos' + end + item + Name = 'Params' + ParamType = fIn + DataType = rtUserDefined + UserClassName = 'TDADatasetParamArray' + end + item + Name = 'UserFilter' + ParamType = fIn + DataType = rtString + Value = '' + end + item + Name = 'IncludeSchema' + ParamType = fIn + DataType = rtBoolean + Value = False + end + item + Name = 'MaxRecords' + ParamType = fIn + DataType = rtInteger + Value = -1 + end> + DataUpdateCall.MethodName = 'UpdateData' + DataUpdateCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBinary + end + item + Name = 'Delta' + ParamType = fIn + DataType = rtBinary + end> + ScriptCall.MethodName = 'GetDatasetScripts' + ScriptCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtString + Value = '' + end + item + Name = 'DatasetNames' + ParamType = fIn + DataType = rtString + Value = 'Pagos' + end> + ReadOnly = False + RemoteService = RORemoteService + Adapter = DABINAdapter + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'Pagos' + IndexDefs = <> + Left = 176 + Top = 24 + end + object ds_Pagos: TDADataSource + DataTable = tbl_Pagos + Left = 232 + Top = 24 + end +end diff --git a/Modulos/Pagos/Cliente/uDataModulePagos.pas b/Modulos/Pagos/Cliente/uDataModulePagos.pas new file mode 100644 index 0000000..d41278e --- /dev/null +++ b/Modulos/Pagos/Cliente/uDataModulePagos.pas @@ -0,0 +1,269 @@ +unit uDataModulePagos; + +interface + +uses {vcl:} SysUtils, Classes, DB, DBClient, + {RemObjects:} uDAClientDataModule, uDADataTable, uDABINAdapter, + uROServiceComponent, uRORemoteService, uROClient, uROBinMessage, + uROWinInetHttpChannel, uDAScriptingProvider, uDACDSDataTable, + uBizPagos, uBizContacto; + +type + TdmPagos = class(TDAClientDataModule) + DABINAdapter: TDABINAdapter; + RORemoteService: TRORemoteService; + tbl_Pagos: TDACDSDataTable; + ds_Pagos: TDADataSource; + procedure DAClientDataModuleCreate(Sender: TObject); + private + function GetPagos(CodigoCategoria : Integer): IBizPagos; + public + function GetNextAutoinc : integer; + function GetItems: IBizPagos; + + function GetPagosProveedor : IBizPagosProveedor; + function GetPagosCliente : IBizPagosCliente; + function GetPagoProveedor(Codigo: Integer) : IBizPagosProveedor; + function GetPagoCliente(Codigo: Integer) : IBizPagosCliente; + + procedure Preview(Const Codigo: Integer); + procedure Print(Const Codigo: Integer); + function PuedoEliminarAlmacen(Codigo : Integer) : Boolean; + function AnadirPagoCliente(Cliente: IBizCliente; CodigoPresupuesto: Integer; + Descripcion: Variant; Importe: Currency; var FechaPago: TDateTime): Boolean; + end; + +var + dmPagos: TdmPagos; + +implementation + +{$R *.DFM} + +uses + Controls, Forms, uDAInterfaces, DataAbstract_Intf, FactuGES_Intf, + uDataTableUtils, uROTypes, uEditorPreview, Dialogs, uDataModuleBase, + schPagosClient_Intf, uDataModuleMontajes, uBizMontajes; + +const + MAX_RECORDS = 100; + + +function TdmPagos.AnadirPagoCliente(Cliente: IBizCliente; CodigoPresupuesto: Integer; +Descripcion: Variant; Importe: Currency; var FechaPago: TDateTime): Boolean; +var + APagoCliente: IBizPagosCliente; + ReferenciaMontaje: String; +begin + Result := False; + + APagoCliente := GetPagoCliente(-1); + APagoCliente.DataTable.Active := True; + + APagoCliente.Insert; + APagoCliente.Contacto := Cliente; + APagoCliente.DESCRIPCION := 'Cobro albarán ' + Descripcion; + APagoCliente.IMPORTE := Importe; + + if (APagoCliente.Show = mrOk) then + begin + FechaPago := APagoCliente.FECHAPAGO; + ReferenciaMontaje := dmMontajes.CambiarSituacion(CodigoPresupuesto, sitPagado); + Showmessage('El montaje ' + ReferenciaMontaje + ', ha cambiado su estado a pagado y terminado'); + Result := True; + end; + + APagoCliente := Nil; +end; + +procedure TdmPagos.DAClientDataModuleCreate(Sender: TObject); +begin + RORemoteService.Channel := dmBase.Channel; + RORemoteService.Message := dmBase.Message; +end; + +function TdmPagos.GetItems: IBizPagos; +var + dtPagos: TDACDSDataTable; + ACursor: TCursor; +begin + ACursor := Screen.Cursor; + Screen.Cursor := crHourGlass; + try + dtPagos := TDACDSDataTable.Create(NIL); + CloneDataTable(tbl_Pagos, dtPagos); + dtPagos.BusinessRulesID := 'BizPagos'; + Result := (dtPagos as IBizPagos); + finally + Screen.Cursor := ACursor; + end; +end; + +function TdmPagos.GetNextAutoinc: integer; +begin + Result := (RORemoteService as IsrvPagos).GetNextAutoinc; +end; + +function TdmPagos.GetPagoCliente(Codigo: Integer): IBizPagosCliente; +var + APagoCliente: IBizPagosCliente; +begin + APagoCliente := GetPagosCliente; + with APagoCliente.DataTable.Where do + begin + if not Empty then + AddOperator(opAND); + OpenBraket; + AddText('PAGOS.' + fld_PagosCODIGO + ' = ' + IntToStr(Codigo), False); + CloseBraket; + end; + Result := APagoCliente; +end; + +function TdmPagos.GetPagoProveedor(Codigo: Integer): IBizPagosProveedor; +var + APagoProveedor: IBizPagosProveedor; +begin + APagoProveedor := GetPagosProveedor; + with APagoProveedor.DataTable.Where do + begin + if not Empty then + AddOperator(opAND); + OpenBraket; + AddText('PAGOS.' + fld_PagosCODIGO + ' = ' + IntToStr(Codigo), False); + CloseBraket; + end; + Result := APagoProveedor; +end; + +function TdmPagos.GetPagos(CodigoCategoria: Integer): IBizPagos; +var + dtPagos: TDACDSDataTable; + ACursor: TCursor; +begin + ACursor := Screen.Cursor; + Screen.Cursor := crHourGlass; + try + dtPagos := TDACDSDataTable.Create(NIL); + CloneDataTable(tbl_Pagos, dtPagos); + with dtPagos do + begin + case CodigoCategoria of + CLIENTE : BusinessRulesID := BIZ_PAGOSCLIENTE; + PROVEEDOR : BusinessRulesID := BIZ_PAGOSPROVEEDOR; + end; + Where.Clear; + Where.AddText('CC.' + fld_PagosCODIGOCATEGORIA + '=' + IntToStr(CODIGOCATEGORIA)); + end; + + Result := (dtPagos as IBizPagos); + finally + Screen.Cursor := ACursor; + end; +end; + +function TdmPagos.GetPagosCliente: IBizPagosCliente; +var + APagosCliente: IBizPagosCliente; +begin + APagosCliente := (GetPagos(CLIENTE) as IBizPagosCliente); + Result := APagosCliente; +end; + +function TdmPagos.GetPagosProveedor: IBizPagosProveedor; +var + APagosProveedor: IBizPagosProveedor; +begin + APagosProveedor := (GetPagos(PROVEEDOR) as IBizPagosProveedor); + Result := APagosProveedor; +end; + +procedure TdmPagos.Preview(Const Codigo: Integer); +var + AStream: TMemoryStream; + AEditorPreview : TfEditorPreview; +begin + AStream := Binary.Create; + AEditorPreview := TfEditorPreview.Create(Application); + try + AStream := (RemoteService as ISrvPagos).GenerateReport(Codigo); + AEditorPreview.Report.PreviewPages.LoadFromStream(AStream); + AEditorPreview.ShowModal; + finally + AEditorPreview.Release; + AStream.Free; + end; +end; + +{function TdmAlmacenes.GetCliente(Codigo: Integer): IBizCliente; +var +// dtContactos: TDACDSDataTable; +// dtCategorias: TDACDSDataTable; +// ACursor: TCursor; +begin +{ ACursor := Screen.Cursor; + Screen.Cursor := crHourGlass; + try + dtContactos := TDACDSDataTable.Create(NIL); + CloneDataTable(tbl_Contactos, dtContactos); + dtContactos.BusinessRulesID := 'BizCliente'; + + dtCategorias := TDACDSDataTable.Create(NIL); + CloneDataTable(tbl_CategoriasContacto, dtCategorias); + dtCategorias.BusinessRulesID := 'BizCategoria'; + (dtContactos as IBizContacto).Categorias := (dtCategorias as IBizCategoriasContacto); + + Result := (dtContactos as IBizCliente); + GetCliente(Result, Codigo); + finally + Screen.Cursor := ACursor; + end; +end; +} + +{function TdmPagos.GetItem(Codigo: Integer): IBizAlmacen; +var + AAlmacen: IBizAlmacen; +begin + AAlmacen := GetItems; + with AAlmacen.DataTable do + begin + if Active then Active := False; + Where.Clear; + Where.AddCondition(fld_ALMACENESCODIGO, cEqual, Codigo); + Active := True; + end; + Result := AAlmacen; +end; +} + +procedure TdmPagos.Print(Const Codigo: Integer); +var + AStream: TMemoryStream; + AEditorPreview : TfEditorPreview; +begin + AStream := Binary.Create; + AEditorPreview := TfEditorPreview.Create(Application); + try + AStream := (RemoteService as ISrvPagos).GenerateReport(Codigo); + AEditorPreview.Report.PreviewPages.LoadFromStream(AStream); + AEditorPreview.Print; + finally + AEditorPreview.Release; + AStream.Free; + end; +end; + +function TdmPagos.PuedoEliminarAlmacen(Codigo: Integer): Boolean; +begin +// Result := (RORemoteService as IsrvAlmacenes).PuedoEliminarAlmacen(Codigo); +end; + +initialization + dmPagos := TdmPagos.Create(nil); + +finalization + FreeAndNil(dmPagos); + +end. + diff --git a/Modulos/Pagos/Cliente/uEditorAlmacen.dfm b/Modulos/Pagos/Cliente/uEditorAlmacen.dfm new file mode 100644 index 0000000..98f60a4 --- /dev/null +++ b/Modulos/Pagos/Cliente/uEditorAlmacen.dfm @@ -0,0 +1,126 @@ +inherited fEditorAlmacen: TfEditorAlmacen + Left = 374 + Top = 273 + HorzScrollBar.Visible = False + VertScrollBar.Range = 0 + VertScrollBar.Visible = False + BorderStyle = bsDialog + Caption = 'Ficha de almac'#233'n' + ClientHeight = 463 + ClientWidth = 634 + Scaled = False + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + Width = 634 + Caption = 'Almac'#233'n' + inherited Image1: TImage + Left = 607 + Picture.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001000 + 00001008060000001FF3FF610000000970485973000017120000171201679FD2 + 520000000467414D410000B18E7CFB51930000022E4944415478DA8D93CF6BD3 + 6018C7BF6997A45DD376EA70CA18D31D44981741280C44119DA83DC87619781A + 1EFD1BC49B2028B28353141111A43BE8CD934E65A8D4A1686B61B5A31DD8CCBA + FEDAACEDF226B389EFFB26CBCC54E6030FEFCB4B3E9FE79B9744B02C0B8220E0 + F7BA3AB2D75A282DE07F4AD82C60F0851B8F50530BF85EF98A62368DCCAB69B0 + B366BD8C95B24ACF4BB877FD226AFD635EC13A5CF99243A356869A4D51F83987 + 99EC476D09E5621E0F6F5EC6C8D938EE7C503604EB7055CDA34127A8B90C3ECD + 3CE570A35AA2FD0DCB4B2AEE4F5CC29953C35094102667655B706D7480C3F974 + 12AD951AAAC502E6DEBCE47031974673B942BB8AA9DB57103F7D129D9D413ED4 + 154C8C0BD6FCE7AD2F6C2816C3CE9E6E8862077C3E9F57307CE2FC1F80655A30 + 8C35E844C7B3273318D8D78FE8B6282449A41211B7DE05FE2D304D13866EC344 + 33F0FAC55BF4EDE945A42B0C910A6459C6DD94F27781D936F964B2AADB02DAEF + 9329ECEEED4138A240944548B2840773DBBD02B637596C6238205D352AD17564 + 3E66B1A3BB0B0A15489204292061AAB0CB2B68D3C96B34367120BE3AB2F96C01 + E1A8825028083920F35778BCD8B721387E6C9C42060788465C50A312B24AB058 + 2C2110946907282C61BA3588442221B882C343E75C50A30093B10484D849EAD5 + 3AFC1D7E0ECFFA631C76FF0526387470D4135977405B62A0D56CB2C791891C71 + 618FE0C0FEB873618623B2E33361FB679B4A340A1FF5C01E41928C6DF9256E86 + 59FD02D3B7960923D6946A0000000049454E44AE426082} + end + end + inherited TBXDock: TTBXDock + Width = 634 + inherited tbxMain: TTBXToolbar + inherited TBXItem2: TTBXItem + Visible = False + end + inherited TBXItem5: TTBXItem + Visible = False + end + inherited TBXItem23: TTBXItem + Visible = False + end + inherited TBXItem3: TTBXItem + Visible = False + end + end + inherited tbxMenu: TTBXToolbar + DockPos = 0 + inherited TBXSubmenuItem4: TTBXSubmenuItem + inherited TBXItem8: TTBXItem + Visible = False + end + inherited TBXSeparatorItem5: TTBXSeparatorItem + Visible = False + end + inherited TBXItem10: TTBXItem + Visible = False + end + inherited TBXSeparatorItem6: TTBXSeparatorItem + Visible = False + end + inherited TBXItem21: TTBXItem + Visible = False + end + inherited TBXItem22: TTBXItem + Visible = False + end + inherited TBXItem9: TTBXItem + Visible = False + end + end + inherited TBXSubmenuItem1: TTBXSubmenuItem + inherited TBXItem32: TTBXItem + Visible = False + end + inherited TBXItem31: TTBXItem + Visible = False + end + inherited TBXSeparatorItem13: TTBXSeparatorItem + Visible = False + end + end + end + end + inherited pgPaginas: TPageControl + Width = 634 + Height = 368 + inherited pagGeneral: TTabSheet + Constraints.MinHeight = 140 + end + end + inherited StatusBar: TStatusBar + Top = 444 + Width = 634 + end + inherited EditorActionList: TActionList + Top = 128 + end + inherited SmallImages: TPngImageList + Top = 112 + end + inherited dsDataTable: TDADataSource [6] + OnDataChange = dsDataTableDataChange + Left = 168 + Top = 120 + end + inherited LargeImages: TPngImageList [7] + Top = 112 + end + inherited JvFormStorage: TJvFormStorage [8] + end + inherited JvAppRegistryStorage: TJvAppRegistryStorage [9] + end +end diff --git a/Modulos/Pagos/Cliente/uEditorAlmacen.pas b/Modulos/Pagos/Cliente/uEditorAlmacen.pas new file mode 100644 index 0000000..72a4555 --- /dev/null +++ b/Modulos/Pagos/Cliente/uEditorAlmacen.pas @@ -0,0 +1,150 @@ +unit uEditorAlmacen; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uEditorDBItem, ToolWin, ComCtrls, JvExControls, JvComponent, + uViewAlmacen, uBizAlmacenes, JvNavigationPane, ActnList, + uEditorBase, StdActns, TB2Dock, TB2Toolbar, TBX, ImgList, PngImageList, + TB2Item, uEditorItem, DB, uDADataTable, uEditorDBBase, JvFormAutoSize, + uDAScriptingProvider, uDACDSDataTable, StdCtrls, pngimage, ExtCtrls, + TBXDkPanels, JvButton, AppEvnts, uCustomView, uViewBase, uViewMensaje, + JvAppStorage, JvAppRegistryStorage, JvFormPlacement, + + uViewAlmacenes; + +type + IEditorAlmacen = interface(IEditorDBItem) + ['{BADE8E8B-B0BC-4759-B2EE-4B4082827BE0}'] + function GetAlmacen: IBizAlmacen; + procedure SetAlmacen(const Value: IBizAlmacen); + property Almacen: IBizAlmacen read GetAlmacen write SetAlmacen; + end; + + TfEditorAlmacen = class(TfEditorDBItem, IEditorAlmacen) + + procedure FormShow(Sender: TObject); + procedure dsDataTableDataChange(Sender: TObject; Field: TField); + procedure actEliminarExecute(Sender: TObject); + private + FAlmacen: IBizAlmacen; + FViewAlmacen : IViewAlmacen; + protected + function GetAlmacen: IBizAlmacen; virtual; + procedure SetAlmacen(const Value: IBizAlmacen); virtual; + + function GetViewAlmacen: IViewAlmacen; + procedure SetViewAlmacen(const Value: IViewAlmacen); + property ViewAlmacen: IViewAlmacen read GetViewAlmacen write + SetViewAlmacen; + public + property Almacen: IBizAlmacen read GetAlmacen write SetAlmacen; + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + end; + +implementation + +{$R *.dfm} + +uses + uCustomEditor, uDataModuleAlmacenes, uDataModuleBase, uEditorUtils; + +function ShowEditorAlmacen (ABizObject : TDADataTableRules): TModalResult; +var + AEditor: TfEditorAlmacen; +begin + AEditor := TfEditorAlmacen.Create(Application); + try + AEditor.Almacen := (ABizObject as IBizAlmacen); + Result := AEditor.ShowModal; + finally + AEditor.Release; + end; +end; + +{ +******************************* TfEditorAlmacen ******************************* +} +function TfEditorAlmacen.GetAlmacen: IBizAlmacen; +begin + Result := FAlmacen; +end; + +function TfEditorAlmacen.GetViewAlmacen: IViewAlmacen; +begin + Result := FViewAlmacen; +end; + +procedure TfEditorAlmacen.SetAlmacen(const Value: IBizAlmacen); +begin + FAlmacen := Value; + dsDataTable.DataTable := FAlmacen.DataTable; + + if Assigned(FViewAlmacen) and Assigned(Almacen) then + FViewAlmacen.Almacen := Almacen; +end; + +procedure TfEditorAlmacen.SetViewAlmacen(const Value: IViewAlmacen); +begin + FViewAlmacen := Value; + + if Assigned(FViewAlmacen) and Assigned(Almacen) then + FViewAlmacen.Almacen := Almacen; +end; + +procedure TfEditorAlmacen.FormShow(Sender: TObject); +begin + inherited; + + if not Assigned(FViewAlmacen) then + raise Exception.Create('No hay ninguna vista asignada'); + + if not Assigned(Almacen) then + raise Exception.Create('No hay ningún almacén asignado'); + + Almacen.DataTable.Active := True; + FViewAlmacen.ShowEmbedded(pagGeneral); + FViewAlmacen.SetFocus; +end; + +destructor TfEditorAlmacen.Destroy; +begin + FViewAlmacen := NIL; + FAlmacen := NIL; + inherited; +end; + +constructor TfEditorAlmacen.Create(AOwner: TComponent); +begin + inherited; + ViewAlmacen := CreateView(TfrViewAlmacen) as IViewAlmacen; +end; + +procedure TfEditorAlmacen.dsDataTableDataChange(Sender: TObject; + Field: TField); +begin + inherited; + if Assigned(FAlmacen) and (not (FAlmacen.DataTable.Fetching) or + not (FAlmacen.DataTable.Opening) or not (FAlmacen.DataTable.Closing)) then + begin + if Length(FAlmacen.NOMBRE) = 0 then + JvNavPanelHeader.Caption := 'Nuevo almacén' + else + JvNavPanelHeader.Caption := 'Almacén - ' + FAlmacen.Nombre; + Caption := JvNavPanelHeader.Caption; + end; +end; + +procedure TfEditorAlmacen.actEliminarExecute(Sender: TObject); +begin + if (Application.MessageBox('¿Desea borrar este almacén?', 'Atención', MB_YESNO) = IDYES) then + inherited; +end; + +initialization + RegisterEditor(IBizAlmacen, ShowEditorAlmacen, etItem); + +end. + diff --git a/Modulos/Pagos/Cliente/uEditorPago.ddp b/Modulos/Pagos/Cliente/uEditorPago.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Pagos/Cliente/uEditorPago.ddp differ diff --git a/Modulos/Pagos/Cliente/uEditorPago.dfm b/Modulos/Pagos/Cliente/uEditorPago.dfm new file mode 100644 index 0000000..022b2a4 --- /dev/null +++ b/Modulos/Pagos/Cliente/uEditorPago.dfm @@ -0,0 +1,25 @@ +inherited fEditorPago: TfEditorPago + Left = 452 + Top = 246 + Caption = 'Nuevo pago' + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + Caption = 'Nuevo pago' + end + inherited TBXDock: TTBXDock + inherited tbxMain: TTBXToolbar + inherited TBXSeparatorItem2: TTBXSeparatorItem + Visible = True + end + end + end + inherited EditorActionList: TActionList + inherited actNuevo: TAction + Visible = False + end + inherited actModificar: TAction + Visible = False + end + end +end diff --git a/Modulos/Pagos/Cliente/uEditorPago.pas b/Modulos/Pagos/Cliente/uEditorPago.pas new file mode 100644 index 0000000..f92048e --- /dev/null +++ b/Modulos/Pagos/Cliente/uEditorPago.pas @@ -0,0 +1,113 @@ +unit uEditorPago; + +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, + + uBizPagos, uViewPago, JvComponentBase; + +type + IEditorPago = interface(IEditorDBItem) + ['{D322A0F5-AFB7-47A6-A223-778FFE2FEB78}'] + function GetPago: IBizPagos; + procedure SetPago(const Value: IBizPagos); + property Pago: IBizPagos read GetPago write SetPago; + end; + + TfEditorPago = class(TfEditorDBItem, IEditorPago) + procedure FormShow(Sender: TObject); + procedure actGuardarExecute(Sender: TObject); + procedure actGuardarCerrarExecute(Sender: TObject); + private + FPago: IBizPagos; + FViewPago : IViewPago; + protected + function GetPago: IBizPagos; virtual; + procedure SetPago(const Value: IBizPagos); virtual; + + function GetViewPago: IViewPago; + procedure SetViewPago(const Value: IViewPago); + property ViewPago: IViewPago read GetViewPago write SetViewPago; + public + property Pago: IBizPagos read GetPago write SetPago; + destructor Destroy; override; + end; + +var + fEditorPago: TfEditorPago; + +implementation + +{$R *.dfm} + +{ TfEditorPago } + +destructor TfEditorPago.Destroy; +begin + FViewPago := NIL; + FPago := NIL; + inherited; +end; + +procedure TfEditorPago.FormShow(Sender: TObject); +begin + inherited; + + if not Assigned(FViewPago) then + raise Exception.Create('No hay ninguna vista asignada'); + + if not Assigned(Pago) then + raise Exception.Create('No hay ningún pago asignado'); + + Pago.DataTable.Active := True; + FViewPago.ShowEmbedded(pagGeneral); + FViewPago.SetFocus; +end; + +function TfEditorPago.GetPago: IBizPagos; +begin + Result := FPago; +end; + +function TfEditorPago.GetViewPago: IViewPago; +begin + Result := FViewPago; +end; + +procedure TfEditorPago.SetPago(const Value: IBizPagos); +begin + FPago := Value; + dsDataTable.DataTable := FPago.DataTable; + + if Assigned(FViewPago) and Assigned(Pago) then + FViewPago.Pago := Pago; +end; + +procedure TfEditorPago.SetViewPago(const Value: IViewPago); +begin + FViewPago := Value; + + if Assigned(FViewPago) and Assigned(Pago) then + FViewPago.Pago := Pago; +end; + +procedure TfEditorPago.actGuardarExecute(Sender: TObject); +begin + inherited; + //Necesario para automatizar los pagos de albaranes + ModalResult := mrOK; +end; + +procedure TfEditorPago.actGuardarCerrarExecute(Sender: TObject); +begin + inherited; + //Necesario para automatizar los pagos de albaranes + ModalResult := mrOK; +end; + +end. diff --git a/Modulos/Pagos/Cliente/uEditorPagoCliente.ddp b/Modulos/Pagos/Cliente/uEditorPagoCliente.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Pagos/Cliente/uEditorPagoCliente.ddp differ diff --git a/Modulos/Pagos/Cliente/uEditorPagoCliente.dfm b/Modulos/Pagos/Cliente/uEditorPagoCliente.dfm new file mode 100644 index 0000000..8c5b10f --- /dev/null +++ b/Modulos/Pagos/Cliente/uEditorPagoCliente.dfm @@ -0,0 +1,73 @@ +inherited fEditorPagoCliente: TfEditorPagoCliente + Left = 440 + Top = 349 + Width = 851 + Height = 402 + Caption = 'Nuevo cobro de cliente' + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + Width = 843 + Caption = 'Nuevo cobro de cliente' + inherited Image1: TImage + Left = 816 + end + end + inherited TBXDock: TTBXDock + Width = 843 + end + inherited pgPaginas: TPageControl + Width = 843 + Height = 273 + inherited pagGeneral: TTabSheet + inline frViewPagoCliente1: TfrViewPagoCliente + Left = 0 + Top = 0 + Width = 835 + Height = 245 + Align = alClient + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 0 + ReadOnly = False + inherited frViewDatosPago: TfrViewDatosPago + ParentFont = True + inherited eDescripcion: TLabel + Width = 58 + end + inherited eImporte: TLabel + Width = 42 + end + inherited Bevel1: TBevel + Width = 349 + end + inherited edtImporte: TcxDBCurrencyEdit + Style.Font.Name = 'Tahoma' + Style.IsFontAssigned = True + end + end + inherited frViewContacto: TfrViewDatosYSeleccionContacto + inherited Bevel1: TBevel + Width = 299 + end + inherited edtlNombre: TcxDBTextEdit + Properties.OnChange = frViewContactoedtlNombrePropertiesChange + end + end + inherited frListaCuentas1: TfrListaCuentas + inherited cxCuenta: TcxDBLookupComboBox + DataBinding.DataSource = frViewPagoCliente1.DADataSource + end + end + end + end + end + inherited StatusBar: TStatusBar + Top = 349 + Width = 843 + end +end diff --git a/Modulos/Pagos/Cliente/uEditorPagoCliente.pas b/Modulos/Pagos/Cliente/uEditorPagoCliente.pas new file mode 100644 index 0000000..5cd0f36 --- /dev/null +++ b/Modulos/Pagos/Cliente/uEditorPagoCliente.pas @@ -0,0 +1,105 @@ +unit uEditorPagoCliente; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uEditorPago, DB, uDADataTable, JvAppStorage, + JvAppRegistryStorage, JvComponent, JvFormPlacement, ImgList, + PngImageList, StdActns, ActnList, ComCtrls, TBX, TB2Item, TB2Dock, + TB2Toolbar, ExtCtrls, JvExControls, JvNavigationPane, uCustomView, + uViewBase, uViewPago, uViewPagoCliente, JvComponentBase; + +type + IEditorPagoCliente = interface(IEditorPago) + ['{7C06A739-2333-435B-B6B6-09D924DA20CB}'] + end; + + TfEditorPagoCliente = class(TfEditorPago, IEditorPagoCliente) + frViewPagoCliente1: TfrViewPagoCliente; + procedure actEliminarExecute(Sender: TObject); + procedure dsDataTableDataChange(Sender: TObject; Field: TField); + procedure frViewContactoedtlNombrePropertiesChange(Sender: TObject); + public + constructor Create(AOwner: TComponent); override; + end; + +var + fEditorPagoCliente: TfEditorPagoCliente; + +implementation + +{$R *.dfm} +{ TfEditorPagoCliente } + +uses uEditorUtils, uBizPagos, cxDBEdit; + +function ShowEditorPagoCliente (ABizObject : TDADataTableRules) : TModalResult; +var + AEditor: TfEditorPagoCliente; +begin + AEditor := TfEditorPagoCliente.Create(Application); + try + AEditor.Pago := (ABizObject as IBizPagosCliente); + + //Es llamado desde el albarán para generar automáticamente el cobro + //Solo podremos en este caso guardar y cerrar + if (Length(AEditor.Pago.DESCRIPCION) > 0) then + begin + AEditor.actGuardar.Visible := False; + AEditor.actRefrescar.Enabled := False; + AEditor.actRefrescar.Visible := False; + AEditor.actPrevisualizar.Enabled := False; + AEditor.actPrevisualizar.Visible := False; + AEditor.actImprimir.Enabled := False; + AEditor.actImprimir.Visible := False; + end; + + Result := AEditor.ShowModal; + finally + AEditor.Release; + end; +end; + +procedure TfEditorPagoCliente.actEliminarExecute(Sender: TObject); +begin + if (Application.MessageBox('¿Desea borrar este cobro de cliente?', 'Atención', MB_YESNO) = IDYES) then + inherited; +end; + +constructor TfEditorPagoCliente.Create(AOwner: TComponent); +begin + inherited; + //ViewPago := CreateView(TfrViewPagoCliente) as IViewPagoCliente; + ViewPago := frViewPagoCliente1; +end; + +procedure TfEditorPagoCliente.dsDataTableDataChange(Sender: TObject; Field: TField); +begin + inherited; + if Assigned(Pago) and (not (Pago.DataTable.Fetching) or + not (Pago.DataTable.Opening) or not (Pago.DataTable.Closing)) then + begin + if Length(Pago.NOMBRE) = 0 then + JvNavPanelHeader.Caption := 'Nuevo cobro de cliente' + else + JvNavPanelHeader.Caption := Pago.NOMBRE; + Self.Caption := JvNavPanelHeader.Caption; + end; +end; + +procedure TfEditorPagoCliente.frViewContactoedtlNombrePropertiesChange( + Sender: TObject); +begin + inherited; + if Length((Sender as TcxDBTextEdit).Text) = 0 then + JvNavPanelHeader.Caption := 'Nuevo cobro de cliente' + else + JvNavPanelHeader.Caption := 'Cobro de ' + (Sender as TcxDBTextEdit).Text; + Caption := JvNavPanelHeader.Caption; +end; + +initialization + RegisterEditor(IBizPagosCliente, ShowEditorPagoCliente, etItem); + +end. diff --git a/Modulos/Pagos/Cliente/uEditorPagoProveedor.ddp b/Modulos/Pagos/Cliente/uEditorPagoProveedor.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Pagos/Cliente/uEditorPagoProveedor.ddp differ diff --git a/Modulos/Pagos/Cliente/uEditorPagoProveedor.dfm b/Modulos/Pagos/Cliente/uEditorPagoProveedor.dfm new file mode 100644 index 0000000..b4fd607 --- /dev/null +++ b/Modulos/Pagos/Cliente/uEditorPagoProveedor.dfm @@ -0,0 +1,61 @@ +inherited fEditorPagoProveedor: TfEditorPagoProveedor + Left = 331 + Top = 386 + Width = 851 + Height = 402 + Caption = 'Nuevo pago a proveedor' + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + Width = 843 + Caption = 'Nuevo pago a proveedor' + inherited Image1: TImage + Left = 816 + end + end + inherited TBXDock: TTBXDock + Width = 843 + inherited tbxMain: TTBXToolbar + inherited TBXItem23: TTBXItem + Visible = False + end + inherited TBXItem3: TTBXItem + Visible = False + end + end + end + inherited pgPaginas: TPageControl + Width = 843 + Height = 273 + inherited pagGeneral: TTabSheet + inline frViewPagoProveedor1: TfrViewPagoProveedor + Left = 0 + Top = 0 + Width = 835 + Height = 245 + Align = alClient + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 0 + ReadOnly = False + inherited frViewContacto: TfrViewDatosYSeleccionContacto + Left = 453 + inherited Bevel1: TBevel + Width = 299 + end + inherited edtlNombre: TcxDBTextEdit + Properties.OnChange = frViewContactoedtlNombrePropertiesChange + end + end + end + end + end + inherited StatusBar: TStatusBar + Top = 349 + Width = 843 + end +end diff --git a/Modulos/Pagos/Cliente/uEditorPagoProveedor.pas b/Modulos/Pagos/Cliente/uEditorPagoProveedor.pas new file mode 100644 index 0000000..3531e07 --- /dev/null +++ b/Modulos/Pagos/Cliente/uEditorPagoProveedor.pas @@ -0,0 +1,91 @@ +unit uEditorPagoProveedor; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uEditorPago, DB, uDADataTable, JvAppStorage, + JvAppRegistryStorage, JvComponent, JvFormPlacement, ImgList, + PngImageList, StdActns, ActnList, ComCtrls, TBX, TB2Item, TB2Dock, + TB2Toolbar, ExtCtrls, JvExControls, JvNavigationPane, uCustomView, + uViewBase, uViewPago, uViewPagoProveedor; + +type + IEditorPagoProveedor = interface(IEditorPago) + ['{E285981D-4C9F-4794-BAB6-91172BD757BF}'] + end; + + TfEditorPagoProveedor = class(TfEditorPago, IEditorPagoProveedor) + frViewPagoProveedor1: TfrViewPagoProveedor; + procedure actEliminarExecute(Sender: TObject); + procedure dsDataTableDataChange(Sender: TObject; Field: TField); + procedure frViewContactoedtlNombrePropertiesChange(Sender: TObject); + public + constructor Create(AOwner: TComponent); override; + end; + +var + fEditorPagoProveedor: TfEditorPagoProveedor; + +implementation + +{$R *.dfm} +{ TfEditorPagoProveedor } + +uses uEditorUtils, uBizPagos, cxDBEdit; + +function ShowEditorPagoProveedor (ABizObject : TDADataTableRules) : TModalResult; +var + AEditor: TfEditorPagoProveedor; +begin + AEditor := TfEditorPagoProveedor.Create(Application); + try + AEditor.Pago := (ABizObject as IBizPagosProveedor); + Result := AEditor.ShowModal; + finally + AEditor.Release; + end; +end; + +procedure TfEditorPagoProveedor.actEliminarExecute(Sender: TObject); +begin + if (Application.MessageBox('¿Desea borrar este pago a proveedor?', 'Atención', MB_YESNO) = IDYES) then + inherited; +end; + +constructor TfEditorPagoProveedor.Create(AOwner: TComponent); +begin + inherited; +// ViewPago := CreateView(TfrViewPagoProveedor) as IViewPagoProveedor; + ViewPago := frViewPagoProveedor1; +end; + +procedure TfEditorPagoProveedor.dsDataTableDataChange(Sender: TObject; Field: TField); +begin + inherited; + if Assigned(Pago) and (not (Pago.DataTable.Fetching) or + not (Pago.DataTable.Opening) or not (Pago.DataTable.Closing)) then + begin + if Length(Pago.NOMBRE) = 0 then + JvNavPanelHeader.Caption := 'Nuevo pago a proveedor' + else + JvNavPanelHeader.Caption := Pago.NOMBRE; + Self.Caption := JvNavPanelHeader.Caption; + end; +end; + +procedure TfEditorPagoProveedor.frViewContactoedtlNombrePropertiesChange( + Sender: TObject); +begin + inherited; + if Length((Sender as TcxDBTextEdit).Text) = 0 then + JvNavPanelHeader.Caption := 'Nuevo cobro de proveedor' + else + JvNavPanelHeader.Caption := 'Cobro de ' + (Sender as TcxDBTextEdit).Text; + Caption := JvNavPanelHeader.Caption; +end; + +initialization + RegisterEditor(IBizPagosProveedor, ShowEditorPagoProveedor, etItem); + +end. diff --git a/Modulos/Pagos/Cliente/uEditorPagos.ddp b/Modulos/Pagos/Cliente/uEditorPagos.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Pagos/Cliente/uEditorPagos.ddp differ diff --git a/Modulos/Pagos/Cliente/uEditorPagos.dfm b/Modulos/Pagos/Cliente/uEditorPagos.dfm new file mode 100644 index 0000000..d2dda22 --- /dev/null +++ b/Modulos/Pagos/Cliente/uEditorPagos.dfm @@ -0,0 +1,628 @@ +inherited fEditorPagos: TfEditorPagos + Left = 345 + Top = 212 + Caption = 'Lista de pagos' + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + Caption = 'Lista de pagos' + end + inherited TBXDock: TTBXDock + inherited tbxFiltro: TTBXToolbar + Left = 411 + inherited tbxEditFiltro: TTBXEditItem + EditOptions = [tboUseEditWhenVertical] + end + end + end + inherited EditorActionList: TActionList + inherited actNuevo: TAction + ImageIndex = 22 + OnExecute = actNuevoExecute + end + inherited actDuplicar: TAction + Visible = False + 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 + 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 + F73EE77CFEFC2FF784F3FB25D29F330000012D4944415478DA63FCFFFF3F0325 + 80916203966D3945B60991DEA68C6003B42CC41852B26F6355F4E7E77F86DFDF + FE31FCFEFC97E1FBFBDF60F68E73460C89D19D0CE7764C4318000230434E2E77 + C63048416B135C3308A018D0B7F8235C214CB30CFF5E880B3E3F6278F12F11CC + 16175BC3F0FFF76F06865F7F18E4EC4E103600A41904600688092E076B66001A + 22E77C16BB01BFBEFC6338BFD915C30BC89A19FFFC619075BF881A0620FF8334 + FFFAF297E1D75760A07DF9C3B032A610670C641FF64018D03D793E8682A9B63B + 184C53EA197E89A933309DE86638BFEF3CC3DC7DCF19A6B478C1D973F67E6764 + C465C3B116C5D003AFD556DDBD7C10AB7CB293649865F5BDD5F80CF84FB10B80 + D42A9042AABA00A4D1AAE6FE6A901A503E22D90573F7FD80EB011B40696E0400 + A0BEE1E16734A0290000000049454E44AE426082} + Name = 'PngImage22' + Background = clWindow + end> + Bitmap = {} + end +end diff --git a/Modulos/Pagos/Cliente/uEditorPagos.pas b/Modulos/Pagos/Cliente/uEditorPagos.pas new file mode 100644 index 0000000..4ce7039 --- /dev/null +++ b/Modulos/Pagos/Cliente/uEditorPagos.pas @@ -0,0 +1,108 @@ +unit uEditorPagos; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uEditorBase, uEditorGrid, ToolWin, ComCtrls, JvExControls, JvComponent, + JvNavigationPane, uViewPagos, uBizPagos, ActnList, DBActns, uViewGrid, + Menus, uDataModuleBase, ImgList, PngImageList, TB2Dock, TB2Toolbar, TBX, + TB2Item, StdActns, TB2ExtItems, TBXExtItems, TB2MRU, DB, uDADataTable, + JvFormAutoSize, uDAScriptingProvider, uDACDSDataTable, JvAppStorage, + JvAppRegistryStorage, JvFormPlacement, ExtCtrls, uCustomView, uViewBase, + uViewBarraSeleccion, pngimage, JvComponentBase; + +type + IEditorPagos = interface(IEditorGrid) + ['{0BCA3B66-90C6-4BD6-8436-EC80462E9A9B}'] + function GetPagos: IBizPagos; + procedure SetPagos(const Value: IBizPagos); + property Pagos: IBizPagos read GetPagos write SetPagos; + end; + + TfEditorPagos = class(TfEditorGrid, IEditorPagos) + procedure FormShow(Sender: TObject); + procedure actNuevoExecute(Sender: TObject); + procedure actModificarExecute(Sender: TObject); + private + FPagos: IBizPagos; + protected + function GetPagos: IBizPagos; virtual; + procedure SetPagos(const Value: IBizPagos); virtual; + procedure SetViewGrid(const Value: IViewGrid); override; + public + property Pagos: IBizPagos read GetPagos write SetPagos; + destructor Destroy; override; + end; + +implementation + +uses + uCustomEditor, uDataModulePagos, uEditorDBBase, uEditorUtils, + cxGrid, cxGridCustomTableView, uDBSelectionList; + //, uListaPagos; +// uEditorAlmacen; + +{$R *.dfm} + +{ +****************************** TfEditorPagos ******************************* +} +procedure TfEditorPagos.FormShow(Sender: TObject); +begin + inherited; + + if not Assigned(ViewGrid) then + raise Exception.Create('No hay ninguna vista asignada'); + + if not Assigned(Pagos) then + raise Exception.Create('No hay ningún Pago asignado'); + + Pagos.DataTable.Active := True; +end; + +function TfEditorPagos.GetPagos: IBizPagos; +begin + Result := FPagos; +end; + +procedure TfEditorPagos.SetPagos(const Value: IBizPagos); +begin + FPagos := Value; + dsDataTable.DataTable := FPagos.DataTable; + if Assigned(ViewGrid) then + (ViewGrid as IViewPagos).Pagos := Pagos; +end; + +procedure TfEditorPagos.actNuevoExecute(Sender: TObject); +begin + inherited; + Pagos.Insert; + Pagos.Show; + ViewGrid.RefreshGrid; + ViewGrid.SyncFocusedRecordsFromDataSet; +end; + +procedure TfEditorPagos.actModificarExecute(Sender: TObject); +begin + inherited; + Pagos.Show; + ViewGrid.RefreshGrid; + ViewGrid.SyncFocusedRecordsFromDataSet; +end; + +procedure TfEditorPagos.SetViewGrid(const Value: IViewGrid); +begin + inherited; + if Assigned(ViewGrid) and Assigned(Pagos) then + (ViewGrid as IViewPagos).Pagos := Pagos; +end; + +destructor TfEditorPagos.Destroy; +begin + FPagos := NIL; + inherited; +end; + +end. + diff --git a/Modulos/Pagos/Cliente/uEditorPagosCliente.ddp b/Modulos/Pagos/Cliente/uEditorPagosCliente.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Pagos/Cliente/uEditorPagosCliente.ddp differ diff --git a/Modulos/Pagos/Cliente/uEditorPagosCliente.dfm b/Modulos/Pagos/Cliente/uEditorPagosCliente.dfm new file mode 100644 index 0000000..a89dd14 --- /dev/null +++ b/Modulos/Pagos/Cliente/uEditorPagosCliente.dfm @@ -0,0 +1,553 @@ +inherited fEditorPagosCliente: TfEditorPagosCliente + Left = 172 + Top = 191 + Caption = 'Lista de cobros de cliente' + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + Caption = 'Lista de cobros de cliente' + inherited Image1: TImage + Picture.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001800 + 0000180806000000E0773DF80000000970485973000017120000171201679FD2 + 520000000467414D410000B18E7CFB5193000002744944415478DA63FCFFFF3F + 032D01E3F0B060F9D6D334B3056E41A4B729491AFFFCFDCFF0F7EF3F869FBFFE + 80E93FFFFE8169301B887FFDFECB109E5E876A41E249438206FF05AAFFF5F72F + C3AF3F7FC0F4975FBF207C10065A02932BFAB59C61DED24D9816CC373F8F6291 + F45B6F8626CF660C8BFE010D0361CFD5F60C1F791E800DBF14F0824169A520D8 + 928ABFAB705B00022036B2E11718CF33189F346660B809E4A833309C353FCBA0 + F9438BE117D007415B3C189EB2DF66B811FC1AAC566C3137431DC35AFC3E8019 + CE7C8A89E1AFD93F300D32FC6CDC5906E379408BB419183EEB7C61E0BDC2C3F0 + 5AE50D43F84E5F86BD51C718841771817DD0CEB211BB05E841C3BC1C684124D0 + 82C54C10C39719339C8D02D2B38C193E447C6410D8C2CFF0C2E52543D49E0086 + 0B7F2EC0E3A3977D0B911620FBE02A508203887F30807DF056ED1D83F02D2186 + 27324F18E20E86329CFA79166EC164AEEDF82D40B6E42F50C365964B9038B808 + 94D087C481DC5B79869F3F7E60180E02382D404E4520C58A1FFC186A9C6BC196 + FC03A7F5BF700CE247EF0D841BFE33E50F03E34C46FC16C0003C6D03B1CCB31F + 0C5325B4B1E60BDE877B505C0E03582D40CFA57FA039F3EA444D0609A7200645 + CB1E86FBC74BC06A5EDC0726E7FBF719E6EE7BCE30A7DA09C3E2294F73312D98 + B2780756570A7E3BC7A0F4660ED8307450DD928DD3E273AC89080BBA27CF2758 + 4C9C2B7B88553CA5751FA65AA0E12000B680919191A0E1C75A14FF93124C404B + C3E6EEFBB19A140B4281D42A6CC13467EF77AC96022D6024CA0290E196969AAB + B0C91D3F7E1D6BDC008101D0828BC45A803778402EC5A597681FE00A1E200087 + 355E0B6809686E0100FA3E2AAB1481BE0E0000000049454E44AE426082} + 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 + 610000000970485973000017120000171201679FD2520000011A4944415478DA + 63FCFFFF3F032580916203966D3945B60991DEA68C6003D4BD9919269F4CC6AA + E8F7DFBF0CDFFFFC61F8F6FB37C3C71F3FC0ECB9FE5B19523CE6309CDB310D61 + 0008C00C996B760EC3209B6D7270CD208062C02E9134B8429866E6534C1081AB + 0C0C7F13FF81999A6B4519BE035D02728DDCB204220CB80A118319A0B04200AC + 19843556A762370024B9DCFA328617903583BC62B83E13350C40FE074B421581 + 70EF05569C31907DD8036140F7E4F9180AA6DAEE60B04CAE6660905064F8717C + 2AC3F97DE719E6EE7BCE30A5C50BCE9EB3F73B23232E1B8EB528861E7CADB6EA + CEE58358E5939D24C32CABEFADC667C07F8A5D00A456811452D505208D5635F7 + 5783D480F211C92E98BBEF075C0FD8004A73230074DEE0E1BE54FBD500000000 + 49454E44AE426082} + Name = 'PngImage22' + Background = clWindow + end> + end +end diff --git a/Modulos/Pagos/Cliente/uEditorPagosCliente.pas b/Modulos/Pagos/Cliente/uEditorPagosCliente.pas new file mode 100644 index 0000000..7d5ba85 --- /dev/null +++ b/Modulos/Pagos/Cliente/uEditorPagosCliente.pas @@ -0,0 +1,66 @@ +unit uEditorPagosCliente; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uEditorPagos, Menus, DB, uDADataTable, JvAppStorage, + JvAppRegistryStorage, JvComponent, JvFormPlacement, ImgList, + PngImageList, StdActns, ActnList, ComCtrls, TB2ExtItems, TBXExtItems, + TBX, TB2Item, TB2Dock, TB2Toolbar, pngimage, ExtCtrls, JvExControls, + JvNavigationPane, JvComponentBase; + +type + IEditorPagosCliente = interface(IEditorPagos) + ['{2260CC06-258F-4C2C-8ED6-69782EE6F5D0}'] + end; + + TfEditorPagosCliente = class(TfEditorPagos, IEditorPagosCliente) + procedure actEliminarExecute(Sender: TObject); + public + constructor Create(AOwner: TComponent); override; + end; + +var + fEditorPagosCliente: TfEditorPagosCliente; + +implementation + +{$R *.dfm} +{ TfEditorPagosCliente } + +uses uEditorUtils, + uViewPagosCliente, uBizPagos, uViewPagos; + +function ShowEditorPagosCliente (ABizObject : TDADataTableRules): TModalResult; +var + AEditor: TfEditorPagosCliente; +begin + AEditor := TfEditorPagosCliente.Create(Application); + try + AEditor.Pagos := (ABizObject as IBizPagosCliente); + Result := AEditor.ShowModal; + finally + AEditor.Release; + end; +end; + +procedure TfEditorPagosCliente.actEliminarExecute(Sender: TObject); +begin + if (Application.MessageBox('¿Desea borrar este pago de cliente?', 'Atención', MB_YESNO) = IDYES) then + begin + inherited; + ViewGrid.RefreshGrid; + end; +end; + +constructor TfEditorPagosCliente.Create(AOwner: TComponent); +begin + inherited; + ViewGrid := CreateView(TfrViewPagosCliente) as IViewPagos; +end; + +initialization + RegisterEditor(IBizPagosCliente, ShowEditorPagosCliente, etItems); + +end. diff --git a/Modulos/Pagos/Cliente/uEditorPagosClientes.ddp b/Modulos/Pagos/Cliente/uEditorPagosClientes.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Pagos/Cliente/uEditorPagosClientes.ddp differ diff --git a/Modulos/Pagos/Cliente/uEditorPagosProveedor.ddp b/Modulos/Pagos/Cliente/uEditorPagosProveedor.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Pagos/Cliente/uEditorPagosProveedor.ddp differ diff --git a/Modulos/Pagos/Cliente/uEditorPagosProveedor.dfm b/Modulos/Pagos/Cliente/uEditorPagosProveedor.dfm new file mode 100644 index 0000000..889f357 --- /dev/null +++ b/Modulos/Pagos/Cliente/uEditorPagosProveedor.dfm @@ -0,0 +1,117 @@ +inherited fEditorPagosProveedor: TfEditorPagosProveedor + Caption = 'fEditorPagosProveedor' + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + inherited Image1: TImage + Picture.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001800 + 0000180806000000E0773DF80000000970485973000017120000171201679FD2 + 5200000A4D6943435050686F746F73686F70204943432070726F66696C650000 + 78DA9D53775893F7163EDFF7650F5642D8F0B1976C81002223AC08C81059A210 + 92006184101240C585880A561415119C4855C482D50A489D88E2A028B867418A + 885A8B555C38EE1FDCA7B57D7AEFEDEDFBD7FBBCE79CE7FCCE79CF0F80111226 + 91E6A26A003952853C3AD81F8F4F48C4C9BD80021548E0042010E6CBC26705C5 + 0000F00379787E74B03FFC01AF6F00020070D52E2412C7E1FF83BA5026570020 + 9100E02212E70B01905200C82E54C81400C81800B053B3640A009400006C797C + 422200AA0D00ECF4493E0500D8A993DC1700D8A21CA908008D01009928472402 + 40BB00605581522C02C0C200A0AC40222E04C0AE018059B632470280BD050076 + 8E58900F4060008099422CCC0020380200431E13CD03204C03A030D2BFE0A95F + 7085B8480100C0CB95CD974BD23314B895D01A77F2F0E0E221E2C26CB1426117 + 29106609E4229C979B231348E7034CCE0C00001AF9D1C1FE383F90E7E6E4E1E6 + 66E76CEFF4C5A2FE6BF06F223E21F1DFFEBC8C020400104ECFEFDA5FE5E5D603 + 70C701B075BF6BA95B00DA560068DFF95D33DB09A05A0AD07AF98B7938FC401E + 9EA150C83C1D1C0A0B0BED2562A1BD30E38B3EFF33E16FE08B7EF6FC401EFEDB + 7AF000719A4099ADC0A383FD71616E76AE528EE7CB0442316EF7E723FEC7857F + FD8E29D1E234B15C2C158AF15889B850224DC779B952914421C995E212E97F32 + F11F96FD0993770D00AC864FC04EB607B5CB6CC07EEE01028B0E58D27600407E + F32D8C1A0B91001067343279F7000093BFF98F402B0100CD97A4E30000BCE818 + 5CA894174CC608000044A0812AB041070CC114ACC00E9CC11DBCC01702610644 + 400C24C03C104206E4801C0AA11896411954C03AD804B5B0031AA0119AE110B4 + C131380DE7E0125C81EB70170660189EC218BC86090441C8081361213A881162 + 8ED822CE0817998E04226148349280A420E988145122C5C872A402A9426A915D + 4823F22D7214398D5C40FA90DBC820328AFC8ABC47319481B25103D4027540B9 + A81F1A8AC6A073D174340F5D8096A26BD11AB41E3D80B6A2A7D14BE87574007D + 8A8E6380D1310E668CD9615C8C87456089581A26C71663E55835568F35631D58 + 3776151BC09E61EF0824028B8013EC085E8410C26C82909047584C5843A825EC + 23B412BA085709838431C2272293A84FB4257A12F9C478623AB1905846AC26EE + 211E219E255E270E135F9348240EC992E44E0A21259032490B496B48DB482DA4 + 53A43ED210699C4C26EB906DC9DEE408B280AC209791B7900F904F92FBC9C3E4 + B7143AC588E24C09A22452A494124A35653FE504A59F324299A0AA51CDA99ED4 + 08AA883A9F5A496DA076502F5387A91334759A25CD9B1643CBA42DA3D5D09A69 + 6769F7682FE974BA09DD831E4597D097D26BE807E9E7E983F4770C0D860D83C7 + 486228196B197B19A718B7192F994CA605D39799C85430D7321B9967980F986F + 55582AF62A7C1591CA12953A9556957E95E7AA545573553FD579AA0B54AB550F + AB5E567DA64655B350E3A909D416ABD5A91D55BBA936AECE5277528F50CF515F + A3BE5FFD82FA630DB2868546A08648A35463B7C6198D2116C63265F15842D672 + 5603EB2C6B984D625BB2F9EC4C7605FB1B762F7B4C534373AA66AC6691669DE6 + 71CD010EC6B1E0F039D99C4ACE21CE0DCE7B2D032D3F2DB1D66AAD66AD7EAD37 + DA7ADABEDA62ED72ED16EDEBDAEF75709D409D2C9DF53A6D3AF77509BA36BA51 + BA85BADB75CFEA3ED363EB79E909F5CAF50EE9DDD147F56DF4A3F517EAEFD6EF + D11F373034083690196C313863F0CC9063E86B9869B8D1F084E1A811CB68BA91 + C468A3D149A327B826EE8767E33578173E66AC6F1C62AC34DE65DC6B3C616269 + 32DBA4C4A4C5E4BE29CD946B9A66BAD1B4D374CCCCC82CDCACD8ACC9EC8E39D5 + 9C6B9E61BED9BCDBFC8D85A5459CC54A8B368BC796DA967CCB05964D96F7AC98 + 563E567956F556D7AC49D65CEB2CEB6DD6576C501B579B0C9B3A9BCBB6A8AD9B + ADC4769B6DDF14E2148F29D229F5536EDA31ECFCEC0AEC9AEC06ED39F661F625 + F66DF6CF1DCC1C121DD63B743B7C727475CC766C70BCEBA4E134C3A9C4A9C3E9 + 57671B67A1739DF33517A64B90CB1297769717536DA78AA76E9F7ACB95E51AEE + BAD2B5D3F5A39BBB9BDCADD96DD4DDCC3DC57DABFB4D2E9B1BC95DC33DEF41F4 + F0F758E271CCE39DA79BA7C2F390E72F5E765E595EFBBD1E4FB39C269ED6306D + C8DBC45BE0BDCB7B603A3E3D65FACEE9033EC63E029F7A9F87BEA6BE22DF3DBE + 237ED67E997E07FC9EFB3BFACBFD8FF8BFE179F216F14E056001C101E501BD81 + 1A81B3036B031F049904A50735058D05BB062F0C3E15420C090D591F72936FC0 + 17F21BF96333DC672C9AD115CA089D155A1BFA30CC264C1ED6118E86CF08DF10 + 7E6FA6F94CE9CCB60888E0476C88B81F69199917F97D14292A32AA2EEA51B453 + 747174F72CD6ACE459FB67BD8EF18FA98CB93BDB6AB6727667AC6A6C526C63EC + 9BB880B8AAB8817887F845F1971274132409ED89E4C4D8C43D89E37302E76C9A + 339CE49A54967463AEE5DCA2B917E6E9CECB9E773C593559907C3885981297B2 + 3FE5832042502F184FE5A76E4D1D13F2849B854F45BEA28DA251B1B7B84A3C92 + E69D5695F638DD3B7D43FA68864F4675C633094F522B79911992B923F34D5644 + D6DEACCFD971D92D39949C949CA3520D6996B42BD730B728B74F662B2B930DE4 + 79E66DCA1B9387CAF7E423F973F3DB156C854CD1A3B452AE500E164C2FA82B78 + 5B185B78B848BD485AD433DF66FEEAF9230B82167CBD90B050B8B0B3D8B87859 + F1E022BF45BB16238B5317772E315D52BA647869F0D27DCB68CBB296FD50E258 + 5255F26A79DCF28E5283D2A5A5432B82573495A994C9CB6EAEF45AB963156195 + 6455EF6A97D55B567F2A17955FAC70ACA8AEF8B046B8E6E2574E5FD57CF5796D + DADADE4AB7CAEDEB48EBA4EB6EACF759BFAF4ABD6A41D5D086F00DAD1BF18DE5 + 1B5F6D4ADE74A17A6AF58ECDB4CDCACD03356135ED5BCCB6ACDBF2A136A3F67A + 9D7F5DCB56FDADABB7BED926DAD6BFDD777BF30E831D153BDEEF94ECBCB52B78 + 576BBD457DF56ED2EE82DD8F1A621BBABFE67EDDB847774FC59E8F7BA57B07F6 + 45EFEB6A746F6CDCAFBFBFB2096D52368D1E483A70E59B806FDA9BED9A77B570 + 5A2A0EC241E5C127DFA67C7BE350E8A1CEC3DCC3CDDF997FB7F508EB48792BD2 + 3ABF75AC2DA36DA03DA1BDEFE88CA39D1D5E1D47BEB7FF7EEF31E36375C7358F + 579EA09D283DF1F9E48293E3A764A79E9D4E3F3DD499DC79F74CFC996B5D515D + BD6743CF9E3F1774EE4CB75FF7C9F3DEE78F5DF0BC70F422F762DB25B74BAD3D + AE3D477E70FDE148AF5B6FEB65F7CBED573CAE74F44DEB3BD1EFD37FFA6AC0D5 + 73D7F8D72E5D9F79BDEFC6EC1BB76E26DD1CB825BAF5F876F6ED17770AEE4CDC + 5D7A8F78AFFCBEDAFDEA07FA0FEA7FB4FEB165C06DE0F860C060CFC3590FEF0E + 09879EFE94FFD387E1D247CC47D52346238D8F9D1F1F1B0D1ABDF264CE93E1A7 + B2A713CFCA7E56FF79EB73ABE7DFFDE2FB4BCF58FCD8F00BF98BCFBFAE79A9F3 + 72EFABA9AF3AC723C71FBCCE793DF1A6FCADCEDB7DEFB8EFBADFC7BD1F9928FC + 40FE50F3D1FA63C7A7D04FF73EE77CFEFC2FF784F3FB25D29F33000000046741 + 4D410000B18E7CFB51930000028C4944415478DADD945F4853511CC7BF776469 + 42ABE9A061F6BF8690D443427B88A2321123166EDAA21E122308EAB184407DC8 + 87E8A932F0611A3542325F0A0729B432A849CA68CA1CA2B86C0C4B43A428EFEE + EE9FCE39E8DA9FBB7F0F7BE9073F7EE7DE7BCEF7737EBFF33B97531405F934EE + FF00F43A47F34689026C7555392D1425059224232C882C8AB2CC221B13172212 + 1AAFB6C6030E5BDE6514964540126444C2448CB8F0538448C7820499BC672E8A + 687FA045CFB357C980B1FEE371A033B53EB4365D4B06911D53AFAE71603A50C2 + 84BF85CEA174CB73709284B647BAD4006A741C2B3EBEFC0575657388AC7C4541 + D17638433B602C324010049C35F7C33FA1C5C2623D9B5B5AEC407B973E7D066B + E2E5C5C308FE3EC622151F5A3A8AD3BAB704B21B538B5530EA47E10D56A2DEFA + 12C3AE26E8373E25352419D80DEA80C4D21834BD98976DD8AA7130F11A9D1B83 + 4B2654970C6166D986FDDA018C7F3F8586F303981C59C7C4E941B5F594670788 + CF60161C0AA18067194C840EA2B2CC8B4FD3FB70E1D220263F70AB5D403278B2 + 333D2016229105BE5F417606023F85F585467606DBE44D08F37C9238B59480D8 + 2EA2ED6736FBD172B1994164D6EB52D4E973A3CD19155F8C5C815ED3951E10BD + 48B4B77985C50D073CF86C79AF7A2FF4B596B89DAF992A20F1968AAB37D377BF + 02FA9356EC3D72173323B7D89C85D931708100BA5DF3B0DF3E9104EE0C5D4F06 + 743A5EABEE72F31F0FF6FCB033B1446BE9B89112EC29B8FC0F70EFE1E38CBF09 + CFCD39D5F7CD1DAEE4B9449C1A03701C9751FCE39D5D4A2E6522D0866E17FF22 + 178095843EB532D9DFACA8420980CB0A40C54DA68A3EB56F6EB75FF56C881D22 + 006FB680B4E5A13B4DB536EB0C52958718AB755A403E2DEF80BF272521AB920B + 52530000000049454E44AE426082} + end + end +end diff --git a/Modulos/Pagos/Cliente/uEditorPagosProveedor.pas b/Modulos/Pagos/Cliente/uEditorPagosProveedor.pas new file mode 100644 index 0000000..7f9d73f --- /dev/null +++ b/Modulos/Pagos/Cliente/uEditorPagosProveedor.pas @@ -0,0 +1,50 @@ +unit uEditorPagosProveedor; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uEditorPagos, Menus, DB, uDADataTable, JvAppStorage, + JvAppRegistryStorage, JvComponent, JvFormPlacement, ImgList, + PngImageList, StdActns, ActnList, ComCtrls, TB2ExtItems, TBXExtItems, + TBX, TB2Item, TB2Dock, TB2Toolbar, pngimage, ExtCtrls, JvExControls, + JvNavigationPane, JvComponentBase; + +type + IEditorPagosProveedor = interface(IEditorPagos) + ['{FC3BF723-7AE6-4468-AF8E-CA9FA8A912D9}'] + end; + + TfEditorPagosProveedor = class(TfEditorPagos, IEditorPagosProveedor) + procedure actEliminarExecute(Sender: TObject); + public + constructor Create(AOwner: TComponent); override; + end; + +var + fEditorPagosProveedor: TfEditorPagosProveedor; + +implementation + +{$R *.dfm} +{ TfEditorPagosProveedor } + +uses uEditorUtils, + uViewPagosProveedor, uBizPagos, uViewPagos; + +procedure TfEditorPagosProveedor.actEliminarExecute(Sender: TObject); +begin + if (Application.MessageBox('¿Desea borrar este pago de proveedor?', 'Atención', MB_YESNO) = IDYES) then + begin + inherited; + ViewGrid.RefreshGrid; + end; +end; + +constructor TfEditorPagosProveedor.Create(AOwner: TComponent); +begin + inherited; + ViewGrid := CreateView(TfrViewPagosProveedor) as IViewPagos; +end; + +end. diff --git a/Modulos/Pagos/Cliente/uPluginControllerPagos.ddp b/Modulos/Pagos/Cliente/uPluginControllerPagos.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Pagos/Cliente/uPluginControllerPagos.ddp differ diff --git a/Modulos/Pagos/Cliente/uPluginControllerPagos.dfm b/Modulos/Pagos/Cliente/uPluginControllerPagos.dfm new file mode 100644 index 0000000..915208a --- /dev/null +++ b/Modulos/Pagos/Cliente/uPluginControllerPagos.dfm @@ -0,0 +1,485 @@ +object ModulePagos: TModulePagos + OldCreateOrder = True + Description = 'Pagos' + ModuleMenu = MainMenu + ModuleName = 'Pagos' + SmallImages = SmallImages + LargeImages = LargeImages + Author = 'Rodax Software' + Version = '1.0.0' + Left = 700 + Top = 466 + Height = 252 + Width = 401 + object LargeImages: TPngImageList + Height = 24 + Width = 24 + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD25200000A4D694343505068 + 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 + F73EE77CFEFC2FF784F3FB25D29F330000028C4944415478DADD945F4853511C + C7BF77646942ABE9A061F6BF8690D443427B88A2321123166EDAA21E122308EA + B184407DC887E8A932F0611A3542325F0A0729B432A849CA68CA1CA2B86C0C4B + 43A428EFEEEE9FCE39E8DA9FBB7F0F7BE9073F7EE7DE7BCEF7737EBFF33B9753 + 1405F934EEFF00F43A47F34689026C7555392D1425059224232C882C8AB2CC22 + 1B131722121AAFB6C6030E5BDE6514964540126444C2448CB8F0538448C78204 + 99BC672E8A687FA045CFB357C980B1FEE371A033B53EB4365D4B06911D53AFAE + 71603A50C284BF85CEA174CB73709284B647BAD4006A741C2B3EBEFC05756573 + 88AC7C4541D17638433B602C324010049C35F7C33FA1C5C2623D9B5B5AEC407B + 973E7D066BE2E5C5C308FE3EC622151F5A3A8AD3BAB704B21B538B5530EA47E1 + 0D56A2DEFA12C3AE26E8373E25352419D80DEA80C4D21834BD98976DD8AA7130 + F11A9D1B834B2654970C6166D986FDDA018C7F3F8586F303981C59C7C4E941B5 + F594670788CF60161C0AA18067194C840EA2B2CC8B4FD3FB70E1D220263F70AB + 5D403278B2333D2016229105BE5F417606023F85F585467606DBE44D08F37C92 + 38B59480D82EA2ED6736FBD172B1994164D6EB52D4E973A3CD19155F8C5C815E + D3951E10BD48B4B77985C50D073CF86C79AF7A2FF4B596B89DAF992A20F1968A + AB37D377BF02FA9356EC3D72173323B7D89C85D931708100BA5DF3B0DF3E9104 + EE0C5D4F06743A5EABEE72F31F0FF6FCB033B1446BE9B89112EC29B8FC0F70EF + E1E38CBF09CFCD39D5F7CD1DAEE4B9449C1A03701C9751FCE39D5D4A2E6522D0 + 866E17FF22178095843EB532D9DFACA8420980CB0A40C54DA68A3EB56F6EB75F + F56C881D22006FB680B4E5A13B4DB536EB0C52958718AB755A403E2DEF80BF27 + 2521AB920B52530000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD252000002744944415478DA + 63FCFFFF3F032D01E3F0B060F9D6D334B3056E41A4B729491AFFFCFDCFF0F7EF + 3F869FBFFE80E93FFFFE8169301B887FFDFECB109E5E876A41E249438206FF05 + AAFFF5F72FC3AF3F7FC0F4975FBF207C10065A02932BFAB59C61DED24D9816CC + 373F8F6291F45B6F8626CF660C8BFE010D0361CFD5F60C1F791E800DBF14F082 + 4169A520D8928ABFAB705B00022036B2E11718CF33189F346660B809E4A83330 + 9C353FCBA0F9438BE117D007415B3C189EB2DF66B811FC1AAC566C3137431DC3 + 5AFC3E8019CE7C8A89E1AFD93F300D32FC6CDC5906E379408BB419183EEB7C61 + E0BDC2C3F05AE50D43F84E5F86BD51C718841771817DD0CEB211BB05E841C3BC + 1C684124D082C54C10C39719339C8D02D2B38C193E447C6410D8C2CFF0C2E525 + 43D49E00860B7F2EC0E3A3977D0B911620FBE02A508203887F30807DF056ED1D + 83F02D218627324F18E20E86329CFA79166EC164AEEDF82D40B6E42F50C36596 + 4B9038B80894D087C481DC5B79869F3F7E60180E02382D404E4520C58A1FFC18 + 6A9C6BC196FC03A7F5BF700CE247EF0D841BFE33E50F03E34C46FC16C0003C6D + 03B1CCB31F0C5325B4B1E60BDE877B505C0E03582D40CFA57FA039F3EA444D06 + 09A7200645CB1E86FBC74BC06A5EDC0726E7FBF719E6EE7BCE30A7DA09C3E229 + 4F73312D98B2780756570A7E3BC7A0F4660ED8307450DD928DD3E273AC89080B + BA27CF27584C9C2B7B88553CA5751FA65AA0E12000B680919191A0E1C75A14FF + 93124C404BC3E6EEFBB19A140B4281D42A6CC13467EF77AC96022D6024CA0290 + E196969AABB0C91D3F7E1D6BDC008101D0828BC45A803778402EC5A597681FE0 + 0A1E200087355E0B6809686E0100FA3E2AAB1481BE0E0000000049454E44AE42 + 6082} + Name = 'PngImage1' + Background = clWindow + end> + Left = 232 + Top = 16 + Bitmap = {} + end + object ModuleActionList: TActionList + Images = SmallImages + Left = 40 + Top = 72 + object actPagosCliente: TAction + Category = 'Ventas' + Caption = 'Cobros de cliente' + ImageIndex = 0 + OnExecute = actPagosClienteExecute + end + object actPagosProveedor: TAction + Category = 'Compras' + Caption = 'Pagos a proveedor' + ImageIndex = 0 + OnExecute = actPagosProveedorExecute + end + end + object MainMenu: TMainMenu + Images = LargeImages + Left = 40 + Top = 16 + object menu: TMenuItem + Tag = 100 + Caption = '&Ventas' + GroupIndex = 1 + ImageIndex = 1 + OnClick = actPagosClienteExecute + object PagosCliente: TMenuItem + Tag = 5000 + Action = actPagosCliente + Caption = 'Pagos de Cliente' + end + object N1: TMenuItem + Tag = 101 + Caption = '-' + end + end + object Compras1: TMenuItem + Caption = '&Compras' + GroupIndex = 1 + ImageIndex = 0 + object Pagosaproveedor1: TMenuItem + Tag = 5000 + Action = actPagosProveedor + end + end + end + object SmallImages: TPngImageList + PngImages = < + 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 + F73EE77CFEFC2FF784F3FB25D29F330000012D4944415478DA63FCFFFF3F0325 + 80916203966D3945B60991DEA68C6003B42CC41852B26F6355F4E7E77F86DFDF + FE31FCFEFC97E1FBFBDF60F68E73460C89D19D0CE7764C4318000230434E2E77 + C63048416B135C3308A018D0B7F8235C214CB30CFF5E880B3E3F6278F12F11CC + 16175BC3F0FFF76F06865F7F18E4EC4E103600A41904600688092E076B66001A + 22E77C16BB01BFBEFC6338BFD915C30BC89A19FFFC619075BF881A0620FF8334 + FFFAF297E1D75760A07DF9C3B032A610670C641FF64018D03D793E8682A9B63B + 184C53EA197E89A933309DE86638BFEF3CC3DC7DCF19A6B478C1D973F67E6764 + C465C3B116C5D003AFD556DDBD7C10AB7CB293649865F5BDD5F80CF84FB10B80 + D42A9042AABA00A4D1AAE6FE6A901A503E22D90573F7FD80EB011B40696E0400 + A0BEE1E16734A0290000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD2520000011A4944415478DA + 63FCFFFF3F032580916203966D3945B60991DEA68C6003D4BD9919269F4CC6AA + E8F7DFBF0CDFFFFC61F8F6FB37C3C71F3FC0ECB9FE5B19523CE6309CDB310D61 + 0008C00C996B760EC3209B6D7270CD208062C02E9134B8429866E6534C1081AB + 0C0C7F13FF81999A6B4519BE035D02728DDCB204220CB80A118319A0B04200AC + 19843556A762370024B9DCFA328617903583BC62B83E13350C40FE074B421581 + 70EF05569C31907DD8036140F7E4F9180AA6DAEE60B04CAE6660905064F8717C + 2AC3F97DE719E6EE7BCE30A5C50BCE9EB3F73B23232E1B8EB528861E7CADB6EA + CEE58358E5939D24C32CABEFADC667C07F8A5D00A456811452D505208D5635F7 + 5783D480F211C92E98BBEF075C0FD8004A73230074DEE0E1BE54FBD500000000 + 49454E44AE426082} + Name = 'PngImage1' + Background = clWindow + end> + PngOptions = [pngBlendOnDisabled, pngGrayscaleOnDisabled] + Left = 308 + Top = 16 + Bitmap = {} + end + object ExtraImages: TPngImageList + Height = 28 + Width = 28 + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D494844520000001C0000001C0806000000720DDF + 940000000970485973000017120000171201679FD25200000A4D694343505068 + 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 + F73EE77CFEFC2FF784F3FB25D29F33000002F94944415478DAED946B48936114 + C7FFAFDA55CD5CD32E46609161D087082129E8B2794B50495B5EBE140C83A2CF + 5DD13E9804111195502441068D04D32C2DCD6181592D2F594CF2B291A6DB9C9A + 3AB3E9DE4BCFFB583ADBC539621FA2030FE7BCCF7B38BF739EFFF3BE8C2008F0 + A531FF81FF06F0C1538DCFA833C0ACE418AF0AB09C008EE389E7A9A7316F1753 + 4F72C8DEE16379738131992F3C06092C814D0AB05949C1499EC6A2E726391AF3 + 53FCF462593434C9A0EFEDC3D9C2DB8E408D4A3E079CBCAF1B79B9B92EC13CE9 + 9CA71371484C54A1B367250519BF1E8454A202C3F2A86F96A1B7DFE01A289A18 + 3B837D1CEE41526427584B3F0282D7A15ABF195181AB29505C29296568D70661 + 602083E64B034BA06E96A3DF64723FA13D6C7D481DB871330C5C268D4558EDE0 + 1EC449EB0874033A0CB1D8145401FFE070B4E9B7233DBD122FEB8F206CF93D90 + 2E50D3120FD3A0D939D0D951AEF55711D10418F82CACF12BA1B07869036A0677 + 412E7D8EAED14C44853CA1B96D2639148A2A68DFF95198B8AA5A1330343CE439 + 904E68311260CEAF097BC060290458E9849FBEEC40B4A49A4EA8698F46764E2D + B48DC20CB0A23901639611F740671746D4483BDA4735B459745814BC916A1881 + 20FA8EB5D91C60A29569E2F07D626CFE5BCA5A05A426E928542C68316A21E938 + E3F6735992B6172B264261669508636ED1BDD2B73258ADE3EE2714619C75F6FB + 12FDFD832711A3CCC754F8162C1EF83C9DA77B4CFD88DE40FDF9E216DC39B77F + 4E138F2CC7B12C34C21138DFDFA3AB681B56C91488DA79091D6F4ED35CB3BE89 + 7A3F5D37F5C56A036E141C70682223BFD111F8EC55ABDBE3EAEB7C8FADC6425A + D49919BE5971B5E894D32644E0CD6B57668197AFDF852716116841E58961B739 + CA8B6AFBC7F2F680D4B41F8C843E5020C3301EC1447B5D10292C5447D280A258 + 6D2DF51AE8A98EF60D1020E32DF01029984DC2341729E54795BBD3FE6CC02BA0 + 088B8D8D7EB800FD6803645D20C00FDE003DD2EFF734CE6CC1404FF4FB9BC079 + F5B33F3E97405F9ACF813F01DF078FC2BAE18F2B0000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D494844520000001C0000001C0806000000720DDF + 940000000970485973000017120000171201679FD252000002D84944415478DA + ED946D48535118C7FF57855EB4171542B01756516845C868B63E4A1F2A7B1996 + 990B845008EA637DD2A828F34BF521D220C98484C28232B24C302329456D380D + A99C75035FB6A5B3E9ACAEBA7BD773CF4D9BEE6E6E23F6217AE0F09C73EE73CE + EF79CEFF9CCB793C1E44D2B8FFC07F0378EF697BC4A833C0DCCC6D616DE0163D + 104589BCC43CEB4B5E7DE62986E6728E9F9D0D3CD69A163448A47593A28849B7 + 5BF1731B01A6BFD7E97AC0F70DA0B0A4DC175899DE310B9CECC8C485DD17FD82 + 25DA58621589D8FB3003A3715F18ACCB60C3DAEA7806ADD759D03768F50F944D + EEABC1CC5C07B4AD5AE0230D3602A6741352845406945B56ED2E0C2CB0E0C3C1 + 2116BFA22A160DBA5E0CDAED812BF48645B745013C1D638EA4F40966CA33417B + 9BC09B00D7E6712C791C07AC0386D60F23A77E1F5E189B91786731ABB029FD33 + ECC343EA40B5A38CAE268844C05C02564529B0BB5A988CE4CBB5701E19C5F2DA + 652CD6B6D30E63830166B77946CFD7DB7938461C2100E5AA2C043CFABBC26E9A + 5C484D00ABD0B16104897509ACC2FE95FDC87B958DB609D30CF08D8EC798CB19 + 18A87661648DDEC574291A76D2C45645C3D58E35EC9B7B6ACA07265B93F613BE + FF189BFF96CA0B34CEFD0C2A6F386EEB467C4F61C0E7B2CADC80AF4B454C14B8 + C1DDE4D8DCCB340B04613C70856A6FABB81DD0E71701491A128B677102FF8C79 + 276F65FE4C45076E1565CC4AE291EB0416C527FB02E7FB7BF4DED882A48C2C68 + F457C0B79C562E09AF3C23F04A02158D569416EFF149E2D0B9165FE0F32673C0 + E31AB0BC45AAAD846DAA66D66F024ACB4EA9262103CBAE5DFD03BC7CBD12C158 + 72AC0B4F4E8E048C29B8D4E83DAC791F73C0F0934B600306E4382E28986CCDC5 + 1A4FA83A5202872B1A8507610383D5D13B010272E102B3694323750D7E426AF2 + F37718E62610165086E9F529F743D08F2540ED3C013BC30106A5DF74356A1632 + 3018FDFE26705EFDBC8FCF2F30921671E02FBE648AC22CC7AE57000000004945 + 4E44AE426082} + Name = 'PngImage1' + Background = clWindow + end> + Left = 232 + Top = 80 + Bitmap = {} + end +end diff --git a/Modulos/Pagos/Cliente/uPluginControllerPagos.pas b/Modulos/Pagos/Cliente/uPluginControllerPagos.pas new file mode 100644 index 0000000..4f0d555 --- /dev/null +++ b/Modulos/Pagos/Cliente/uPluginControllerPagos.pas @@ -0,0 +1,96 @@ +unit uPluginControllerPagos; + +interface + +uses + uModuleController, uInterfaces, uHostManager, Menus, Classes, ActnList, + ImgList, Controls, PngImageList; + +type + IMCPagos = interface(IInterface) + ['{0FDA2A0E-9DC9-45AD-BADF-C27EA9D81B51}'] + end; + + TModulePagos = class(TModuleController, IMCPagos) + actPagosCliente: TAction; + menu: TMenuItem; + ExtraImages: TPngImageList; + LargeImages: TPngImageList; + MainMenu: TMainMenu; + ModuleActionList: TActionList; + PagosCliente: TMenuItem; + SmallImages: TPngImageList; + N1: TMenuItem; + actPagosProveedor: TAction; + Compras1: TMenuItem; + Pagosaproveedor1: TMenuItem; + procedure actPagosClienteExecute(Sender: TObject); + procedure actPagosProveedorExecute(Sender: TObject); + public + end; + +implementation + +{$R *.dfm} + +uses + Forms, Dialogs, uGUIBase, SysUtils, uDataModulePagos, + uEditorPagosCliente, uEditorPagosProveedor, uBizPagos; + +function GetModule : TModuleController; +begin + Result := TModulePagos.Create(NIL); +end; + +exports + GetModule name GET_MODULE_FUNC; + +{ +******************************* TModuleContactos ******************************* +} + +procedure TModulePagos.actPagosClienteExecute(Sender: TObject); +var + aObj: IEditorPagosCliente; + APagosCliente : IBizPagosCliente; +begin + APagosCliente := dmPagos.GetPagosCliente; + aObj := TfEditorPagosCliente.Create(Application); + try + with aObj do + begin + Pagos := APagosCliente; + ShowEmbedded; + end; + finally + APagosCliente := NIL; + aObj := NIL; + end; +end; + +procedure TModulePagos.actPagosProveedorExecute(Sender: TObject); +var + aObj: IEditorPagosProveedor; + APagosProveedor : IBizPagosProveedor; +begin + APagosProveedor := dmPagos.GetPagosProveedor; + aObj := TfEditorPagosProveedor.Create(Application); + try + with aObj do + begin + Pagos := APagosProveedor; + ShowEmbedded; + end; + finally + APagosProveedor := NIL; + aObj := NIL; + end; +end; + +initialization + RegisterModuleClass(TModulePagos); + +finalization + UnRegisterModuleClass(TModulePagos); + +end. diff --git a/Modulos/Pagos/Cliente/uViewDatosPago.ddp b/Modulos/Pagos/Cliente/uViewDatosPago.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Pagos/Cliente/uViewDatosPago.ddp differ diff --git a/Modulos/Pagos/Cliente/uViewDatosPago.dfm b/Modulos/Pagos/Cliente/uViewDatosPago.dfm new file mode 100644 index 0000000..b714910 --- /dev/null +++ b/Modulos/Pagos/Cliente/uViewDatosPago.dfm @@ -0,0 +1,127 @@ +inherited frViewDatosPago: TfrViewDatosPago + Width = 446 + Height = 97 + Font.Name = 'MS Sans Serif' + DesignSize = ( + 446 + 97) + object eFecha: TLabel + Left = 16 + Top = 36 + Width = 33 + Height = 13 + Caption = 'Fecha:' + Transparent = True + end + object eDescripcion: TLabel + Left = 16 + Top = 63 + Width = 59 + Height = 13 + Caption = 'Descripci'#243'n:' + Transparent = True + end + object eImporte: TLabel + Left = 240 + Top = 36 + Width = 38 + Height = 13 + Caption = 'Importe:' + Transparent = True + end + object Bevel1: TBevel + Left = 99 + Top = 8 + Width = 341 + Height = 9 + Anchors = [akLeft, akTop, akRight] + Shape = bsBottomLine + end + object Label5: TLabel + Left = 8 + Top = 8 + Width = 87 + Height = 13 + Caption = 'Datos del pago' + Font.Charset = DEFAULT_CHARSET + Font.Color = clActiveCaption + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + ParentFont = False + end + object edtFecha: TcxDBDateEdit + Left = 82 + Top = 32 + Anchors = [akLeft, akTop, akRight] + DataBinding.DataField = 'FECHAPAGO' + DataBinding.DataSource = DADataSource + Style.Color = clInfoBk + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + Style.Shadow = False + Style.ButtonTransparency = ebtNone + StyleDisabled.LookAndFeel.Kind = lfStandard + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.Kind = lfStandard + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.Kind = lfStandard + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 0 + Width = 119 + end + object edtDescripcion: TcxDBTextEdit + Left = 82 + Top = 59 + DataBinding.DataField = 'DESCRIPCION' + DataBinding.DataSource = DADataSource + Style.Color = clInfoBk + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.Kind = lfStandard + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.Kind = lfStandard + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.Kind = lfStandard + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 1 + Width = 347 + end + object edtImporte: TcxDBCurrencyEdit + Left = 287 + Top = 32 + AutoSize = False + DataBinding.DataField = 'IMPORTE' + DataBinding.DataSource = DADataSource + ParentFont = False + Properties.Alignment.Horz = taRightJustify + Properties.ReadOnly = False + Properties.UseLeftAlignmentOnEditing = False + Properties.UseThousandSeparator = True + Style.Color = clInfoBk + Style.Font.Charset = DEFAULT_CHARSET + Style.Font.Color = clWindowText + Style.Font.Height = -11 + Style.Font.Name = 'MS Sans Serif' + Style.Font.Style = [] + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + Style.TextColor = clWindowText + Style.TextStyle = [fsBold] + StyleDisabled.LookAndFeel.Kind = lfStandard + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.Kind = lfStandard + StyleFocused.LookAndFeel.NativeStyle = True + StyleFocused.TextColor = clWindowText + StyleHot.LookAndFeel.Kind = lfStandard + StyleHot.LookAndFeel.NativeStyle = True + StyleHot.TextColor = clWindowText + TabOrder = 2 + Height = 21 + Width = 141 + end + object DADataSource: TDADataSource + Left = 160 + Top = 65531 + end +end diff --git a/Modulos/Pagos/Cliente/uViewDatosPago.pas b/Modulos/Pagos/Cliente/uViewDatosPago.pas new file mode 100644 index 0000000..a1918e5 --- /dev/null +++ b/Modulos/Pagos/Cliente/uViewDatosPago.pas @@ -0,0 +1,38 @@ +unit uViewDatosPago; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, DB, uDADataTable, cxControls, cxContainer, cxEdit, + cxTextEdit, cxMaskEdit, cxDropDownEdit, cxCalendar, cxDBEdit, StdCtrls, + Mask, DBCtrls, ExtCtrls, cxMemo, cxRichEdit, cxDBRichEdit, cxGraphics, + cxCurrencyEdit, cxLookupEdit, cxDBLookupEdit, cxDBLookupComboBox, + uBizPagos, uBizCuentas, uCustomView, uListaCuentas; + +type + TfrViewDatosPago = class(TfrViewBase) + eFecha: TLabel; + edtFecha: TcxDBDateEdit; + DADataSource: TDADataSource; + eDescripcion: TLabel; + edtDescripcion: TcxDBTextEdit; + eImporte: TLabel; + edtImporte: TcxDBCurrencyEdit; + Bevel1: TBevel; + Label5: TLabel; + private + public + end; + +var + frViewDatosPago: TfrViewDatosPago; + +implementation + +{$R *.dfm} + +{ TfrViewDatosPago } + + +end. diff --git a/Modulos/Pagos/Cliente/uViewDatosPagoCliente.ddp b/Modulos/Pagos/Cliente/uViewDatosPagoCliente.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Pagos/Cliente/uViewDatosPagoCliente.ddp differ diff --git a/Modulos/Pagos/Cliente/uViewDatosPagoCliente.dfm b/Modulos/Pagos/Cliente/uViewDatosPagoCliente.dfm new file mode 100644 index 0000000..158a120 --- /dev/null +++ b/Modulos/Pagos/Cliente/uViewDatosPagoCliente.dfm @@ -0,0 +1,100 @@ +inherited frViewDatosPago: TfrViewDatosPago + Width = 360 + Height = 112 + Constraints.MinHeight = 110 + Constraints.MinWidth = 360 + DesignSize = ( + 360 + 112) + object Bevel1: TBevel + Left = 184 + Top = 8 + Width = 165 + Height = 9 + Anchors = [akLeft, akTop, akRight] + Shape = bsBottomLine + end + object Label5: TLabel + Left = 8 + Top = 8 + Width = 170 + Height = 13 + Caption = 'Datos de la factura de cliente' + Font.Charset = DEFAULT_CHARSET + Font.Color = clActiveCaption + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + ParentFont = False + end + object Label1: TLabel + Left = 16 + Top = 32 + Width = 56 + Height = 13 + Caption = 'Referencia:' + end + object Label2: TLabel + Left = 16 + Top = 56 + Width = 69 + Height = 13 + Caption = 'Fecha de alta:' + end + object Label3: TLabel + Left = 16 + Top = 80 + Width = 61 + Height = 13 + Caption = 'Vencimiento:' + end + object edtFecha: TcxDBDateEdit + Left = 100 + Top = 52 + Anchors = [akLeft, akTop, akRight] + DataBinding.DataField = 'FECHAFACTURA' + DataBinding.DataSource = DADataSource + Style.Color = clInfoBk + Style.LookAndFeel.NativeStyle = True + Style.Shadow = False + Style.ButtonTransparency = ebtNone + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 1 + Width = 245 + end + object edtVencimiento: TcxDBDateEdit + Left = 100 + Top = 76 + Anchors = [akLeft, akTop, akRight] + DataBinding.DataSource = DADataSource + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 2 + Width = 245 + end + object eReferencia: TcxDBTextEdit + Left = 100 + Top = 28 + Anchors = [akLeft, akTop, akRight] + DataBinding.DataField = 'REFERENCIA' + DataBinding.DataSource = DADataSource + Enabled = False + Properties.ReadOnly = True + Style.Color = clInfoBk + Style.LookAndFeel.NativeStyle = True + StyleDisabled.Color = clMenuBar + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clWindowText + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 0 + Width = 245 + end + object DADataSource: TDADataSource + Left = 192 + end +end diff --git a/Modulos/Pagos/Cliente/uViewDatosPagoCliente.pas b/Modulos/Pagos/Cliente/uViewDatosPagoCliente.pas new file mode 100644 index 0000000..98b6f27 --- /dev/null +++ b/Modulos/Pagos/Cliente/uViewDatosPagoCliente.pas @@ -0,0 +1,35 @@ +unit uViewDatosPagoCliente; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, DB, uDADataTable, cxControls, cxContainer, cxEdit, + cxTextEdit, cxMaskEdit, cxDropDownEdit, cxCalendar, cxDBEdit, StdCtrls, + Mask, DBCtrls, ExtCtrls, cxMemo, cxRichEdit, cxDBRichEdit; + +type + TfrViewDatosPago = class(TfrViewBase) + Bevel1: TBevel; + Label5: TLabel; + Label1: TLabel; + Label2: TLabel; + edtFecha: TcxDBDateEdit; + Label3: TLabel; + edtVencimiento: TcxDBDateEdit; + DADataSource: TDADataSource; + eReferencia: TcxDBTextEdit; + private + { Private declarations } + public + { Public declarations } + end; + +var + frViewDatosPago: TfrViewDatosPago; + +implementation + +{$R *.dfm} + +end. diff --git a/Modulos/Pagos/Cliente/uViewPago.ddp b/Modulos/Pagos/Cliente/uViewPago.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Pagos/Cliente/uViewPago.ddp differ diff --git a/Modulos/Pagos/Cliente/uViewPago.dfm b/Modulos/Pagos/Cliente/uViewPago.dfm new file mode 100644 index 0000000..2975156 --- /dev/null +++ b/Modulos/Pagos/Cliente/uViewPago.dfm @@ -0,0 +1,81 @@ +inherited frViewPago: TfrViewPago + Width = 834 + Height = 245 + ParentFont = True + inline frViewDatosPago: TfrViewDatosPago + Left = 0 + Top = 0 + Width = 446 + Height = 97 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + ParentFont = False + TabOrder = 0 + ReadOnly = False + end + inline frViewFormaPago: TfrViewFormaPago + Left = 0 + Top = 112 + Width = 457 + Height = 113 + Constraints.MinWidth = 300 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 1 + ReadOnly = False + inherited Bevel1: TBevel + Width = 349 + end + inherited memFormaPago: TcxDBMemo + Height = 66 + Width = 426 + end + end + inline frViewContacto: TfrViewDatosYSeleccionContacto + Left = 455 + Top = 0 + Width = 377 + Height = 214 + Constraints.MinHeight = 202 + Constraints.MinWidth = 350 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 2 + ReadOnly = False + end + inline frListaCuentas1: TfrListaCuentas + Left = 10 + Top = 80 + Width = 431 + Height = 35 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 3 + ReadOnly = False + inherited Label3: TLabel + Left = 7 + end + inherited cxCuenta: TcxDBLookupComboBox + DataBinding.DataField = 'CUENTA' + DataBinding.DataSource = DADataSource + Width = 346 + end + end + object DADataSource: TDADataSource + end +end diff --git a/Modulos/Pagos/Cliente/uViewPago.pas b/Modulos/Pagos/Cliente/uViewPago.pas new file mode 100644 index 0000000..9465aca --- /dev/null +++ b/Modulos/Pagos/Cliente/uViewPago.pas @@ -0,0 +1,59 @@ +unit uViewPago; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, cxControls, cxContainer, cxEdit, cxTextEdit, cxMaskEdit, + cxDropDownEdit, cxCalendar, cxDBEdit, DB, uDADataTable, StdCtrls, Mask, + DBCtrls, ExtCtrls, cxGraphics, uCustomView, AppEvnts, + uViewFormaPago, uBizPagos, uViewDatosYSeleccionContacto, uViewDatosPago, + uListaCuentas; + +type + IViewPago = interface(IViewBase) + ['{E25FF94C-E4F6-4839-AA33-58039FA11611}'] + function GetPago: IBizPagos; + procedure SetPago(const Value: IBizPagos); + property Pago: IBizPagos read GetPago write SetPago; + end; + + TfrViewPago = class(TfrViewBase, IViewPago) + DADataSource: TDADataSource; + frViewDatosPago: TfrViewDatosPago; + frViewFormaPago: TfrViewFormaPago; + frViewContacto: TfrViewDatosYSeleccionContacto; + frListaCuentas1: TfrListaCuentas; + private + FPago: IBizPagos; + protected + function GetPago: IBizPagos; + procedure SetPago(const Value: IBizPagos); virtual; + public + property Pago: IBizPagos read GetPago write SetPago; + end; + +implementation + +uses uBizContacto, uExceptions, uDataModuleCuentas; + +{$R *.dfm} + +function TfrViewPago.GetPago: IBizPagos; +begin + Result := FPago; +end; + +procedure TfrViewPago.SetPago(const Value: IBizPagos); +begin + FPago := Value; + if Assigned(FPago) then + DADataSource.DataTable := FPago.DataTable + else + DADataSource.DataTable := NIL; + + frViewFormaPago.DADataSource.DataTable := DADataSource.DataTable; + frViewDatosPago.DADataSource.DataTable := DADataSource.DataTable; +end; + +end. diff --git a/Modulos/Pagos/Cliente/uViewPagoCliente.ddp b/Modulos/Pagos/Cliente/uViewPagoCliente.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Pagos/Cliente/uViewPagoCliente.ddp differ diff --git a/Modulos/Pagos/Cliente/uViewPagoCliente.dfm b/Modulos/Pagos/Cliente/uViewPagoCliente.dfm new file mode 100644 index 0000000..0dd985a --- /dev/null +++ b/Modulos/Pagos/Cliente/uViewPagoCliente.dfm @@ -0,0 +1,47 @@ +inherited frViewPagoCliente: TfrViewPagoCliente + inherited frViewDatosPago: TfrViewDatosPago + inherited Bevel1: TBevel + Left = 144 + Width = 301 + end + inherited Label5: TLabel + Width = 130 + Caption = 'Datos cobro de cliente' + end + end + inherited frViewContacto: TfrViewDatosYSeleccionContacto + inherited Label5: TLabel + Width = 97 + Caption = 'Datos del cliente' + end + inherited Bevel1: TBevel + Left = 112 + Width = 251 + end + inherited ToolBar1: TToolBar + ButtonWidth = 129 + inherited ToolButton1: TToolButton + Caption = 'Elegir un cliente' + end + inherited ToolButton3: TToolButton + Left = 106 + end + inherited ToolButton2: TToolButton + Left = 114 + Caption = 'Dar de alta un cliente' + end + end + inherited ToolBar2: TToolBar + Width = 182 + ButtonWidth = 178 + inherited ToolButton4: TToolButton + Caption = 'Ver ficha completa del cliente...' + end + end + end + inherited frListaCuentas1: TfrListaCuentas + inherited cxCuenta: TcxDBLookupComboBox + DataBinding.DataSource = DADataSource + end + end +end diff --git a/Modulos/Pagos/Cliente/uViewPagoCliente.pas b/Modulos/Pagos/Cliente/uViewPagoCliente.pas new file mode 100644 index 0000000..727b1f4 --- /dev/null +++ b/Modulos/Pagos/Cliente/uViewPagoCliente.pas @@ -0,0 +1,45 @@ +unit uViewPagoCliente; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewPago, DB, uDADataTable, uViewDatosYSeleccionContacto, + uViewFormaPago, uCustomView, uViewBase, uViewDatosPago, uBizPagos, + uListaCuentas; + +type + IViewPagoCliente = interface(IViewPago) + ['{2EBD9235-AF8F-4207-B883-09F54085F8A4}'] + end; + + TfrViewPagoCliente = class(TfrViewPago, IViewPagoCliente) + protected + procedure SetPago(const Value: IBizPagos); override; + procedure OnContactoChanged(Sender : TObject); + end; + +var + frViewPagoCliente: TfrViewPagoCliente; + +implementation + +{$R *.dfm} +{ TfrViewPagoCliente } + +uses uBizContacto; + +procedure TfrViewPagoCliente.OnContactoChanged(Sender: TObject); +begin + Pago.Contacto := (frViewContacto.Contacto as IBizCliente); +end; + +procedure TfrViewPagoCliente.SetPago(const Value: IBizPagos); +begin + inherited; + + frViewContacto.Contacto := Pago.Contacto; + frViewContacto.OnContactoChanged := OnContactoChanged; +end; + +end. diff --git a/Modulos/Pagos/Cliente/uViewPagoProveedor.ddp b/Modulos/Pagos/Cliente/uViewPagoProveedor.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Pagos/Cliente/uViewPagoProveedor.ddp differ diff --git a/Modulos/Pagos/Cliente/uViewPagoProveedor.dfm b/Modulos/Pagos/Cliente/uViewPagoProveedor.dfm new file mode 100644 index 0000000..c4f46db --- /dev/null +++ b/Modulos/Pagos/Cliente/uViewPagoProveedor.dfm @@ -0,0 +1,38 @@ +inherited frViewPagoProveedor: TfrViewPagoProveedor + inherited frViewDatosPago: TfrViewDatosPago + inherited Label5: TLabel + Width = 138 + Caption = 'Datos pago a proveedor' + end + end + inherited frViewContacto: TfrViewDatosYSeleccionContacto + inherited Label5: TLabel + Width = 116 + Caption = 'Datos del proveedor' + end + inherited Bevel1: TBevel + Left = 128 + Width = 235 + end + inherited ToolBar1: TToolBar + ButtonWidth = 148 + inherited ToolButton1: TToolButton + Caption = 'Elegir un proveedor' + end + inherited ToolButton3: TToolButton + Left = 125 + end + inherited ToolButton2: TToolButton + Left = 133 + Caption = 'Dar de alta un proveedor' + end + end + inherited ToolBar2: TToolBar + Width = 201 + ButtonWidth = 197 + inherited ToolButton4: TToolButton + Caption = 'Ver ficha completa del proveedor...' + end + end + end +end diff --git a/Modulos/Pagos/Cliente/uViewPagoProveedor.pas b/Modulos/Pagos/Cliente/uViewPagoProveedor.pas new file mode 100644 index 0000000..760d9a9 --- /dev/null +++ b/Modulos/Pagos/Cliente/uViewPagoProveedor.pas @@ -0,0 +1,45 @@ +unit uViewPagoProveedor; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewPago, DB, uDADataTable, uViewDatosYSeleccionContacto, + uViewFormaPago, uCustomView, uViewBase, uViewDatosPago, uBizPagos, + uListaCuentas; + +type + IViewPagoProveedor = interface(IViewPago) + ['{DEAA710D-F179-4C55-B233-2BB34A34DAA9}'] + end; + + TfrViewPagoProveedor = class(TfrViewPago, IViewPagoProveedor) + protected + procedure SetPago(const Value: IBizPagos); override; + procedure OnContactoChanged(Sender : TObject); + end; + +var + frViewPagoProveedor: TfrViewPagoProveedor; + +implementation + +{$R *.dfm} +{ TfrViewPagoProveedor } + +uses uBizContacto; + +procedure TfrViewPagoProveedor.OnContactoChanged(Sender: TObject); +begin + Pago.Contacto := (frViewContacto.Contacto as IBizProveedor); +end; + +procedure TfrViewPagoProveedor.SetPago(const Value: IBizPagos); +begin + inherited; + + frViewContacto.Contacto := Pago.Contacto; + frViewContacto.OnContactoChanged := OnContactoChanged; +end; + +end. diff --git a/Modulos/Pagos/Cliente/uViewPagos.ddp b/Modulos/Pagos/Cliente/uViewPagos.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Pagos/Cliente/uViewPagos.ddp differ diff --git a/Modulos/Pagos/Cliente/uViewPagos.dfm b/Modulos/Pagos/Cliente/uViewPagos.dfm new file mode 100644 index 0000000..6859746 --- /dev/null +++ b/Modulos/Pagos/Cliente/uViewPagos.dfm @@ -0,0 +1,138 @@ +inherited frViewPagos: TfrViewPagos + inherited cxGrid: TcxGrid + inherited cxGridView: TcxGridDBTableView + DataController.KeyFieldNames = 'CODIGO' + DataController.Summary.FooterSummaryItems = < + item + Format = '0 almacenes' + Kind = skCount + end + item + Format = ',0.00 '#8364';-,0.00 '#8364 + Kind = skSum + Column = cxGridViewIMPORTE + end> + OptionsBehavior.PullFocusing = True + object cxGridViewRecID: TcxGridDBColumn + DataBinding.FieldName = 'RecID' + Visible = False + end + object cxGridViewICONO: TcxGridDBColumn + OnCustomDrawCell = cxGridViewICONOCustomDrawCell + Width = 20 + end + object cxGridViewCODIGOEMPRESA: TcxGridDBColumn + DataBinding.FieldName = 'CODIGOEMPRESA' + Visible = False + end + object cxGridViewCODIGO: TcxGridDBColumn + DataBinding.FieldName = 'CODIGO' + Visible = False + end + object cxGridViewFECHAALTA: TcxGridDBColumn + DataBinding.FieldName = 'FECHAALTA' + Visible = False + end + object cxGridViewUSUARIO: TcxGridDBColumn + DataBinding.FieldName = 'USUARIO' + Visible = False + end + object cxGridViewCUENTA: TcxGridDBColumn + DataBinding.FieldName = 'CUENTA' + Visible = False + end + object cxGridViewFORMAPAGO: TcxGridDBColumn + DataBinding.FieldName = 'FORMAPAGO' + Visible = False + Width = 64 + end + object cxGridViewFECHAPAGO: TcxGridDBColumn + Caption = 'Fecha' + DataBinding.FieldName = 'FECHAPAGO' + Width = 80 + end + object cxGridViewNOMBRE: TcxGridDBColumn + DataBinding.FieldName = 'NOMBRE' + Width = 200 + end + object cxGridViewDESCRIPCION: TcxGridDBColumn + DataBinding.FieldName = 'DESCRIPCION' + Width = 300 + end + object cxGridViewFECHAMODIFICACION: TcxGridDBColumn + DataBinding.FieldName = 'FECHAMODIFICACION' + Visible = False + end + object cxGridViewCODIGOCONTACTO: TcxGridDBColumn + DataBinding.FieldName = 'CODIGOCONTACTO' + Visible = False + end + object cxGridViewCODIGOCATEGORIA: TcxGridDBColumn + DataBinding.FieldName = 'CODIGOCATEGORIA' + Visible = False + end + object cxGridViewIMPORTE: TcxGridDBColumn + Caption = 'Importe' + DataBinding.FieldName = 'IMPORTE' + HeaderAlignmentHorz = taRightJustify + Width = 100 + end + object cxGridViewCATEGORIA: TcxGridDBColumn + DataBinding.FieldName = 'CATEGORIA' + Visible = False + end + end + end + inherited frViewFiltroBase1: TfrViewFiltroBase + inherited TBXDock1: TTBXDock + inherited TBXDockablePanel1: TTBXDockablePanel + inherited dxLayoutControl1: TdxLayoutControl + inherited txtFiltroTodo: TcxTextEdit + Width = 273 + end + inherited edtFechaIniFiltro: TcxDateEdit + Width = 121 + end + inherited edtFechaFinFiltro: TcxDateEdit + Width = 121 + end + end + end + end + end + inherited dxComponentPrinter: TdxComponentPrinter + inherited dxComponentPrinterLink: TdxGridReportLink + ReportDocument.CreationDate = 38673.842406053240000000 + BuiltInReportLink = True + end + end + object PngImageList: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000001F14944415478DA8D92AD73DB4010C59F5958AE2CAC07CDA230B30896 + 557F82CACC2A58A832B30AB6ECA0E1414341C32D7391179AF5C2C2D4B7ABBAB5 + A7CD4C3423DFC9BBFBF6B71F8B3EE984CBE719287E96F97E3E71FEBEB62D5CE0 + 340237012100314654D53D82AB3DF96FA1BF324044F82A444D8E1EAAB34080A0 + 5A568877BC9D1870A29977A54361B489EA41E704E6C3FFF39E22145B745F756A + 5796216014F56C5D1391470113396664645D05F4499CA85E9296C4298D141874 + FAF2F12D3E7FFBEE0156ED2CA04E0327A0C0121450B75BB9431BD1AE29D06E64 + 6ADF1197CE4EC05A9B55E049A2BD78B3AA55855014895496B9A9677B1A28D0F4 + 325541D9B8C81AADEEE2755A09464058344C503F679430F7C27A54562D8675A6 + C027996228DE653BE35D74E4BCB312F87D222E51C3AAC6ADF65ED21385FB6D41 + 96761610192FF6A05CED843DA9AFA1B9F6DA85827200EB6FD16F80055EF1C8D8 + 4FF78F0DF063A0A83A019B8FB4D3C52B0552946D77C40D66020EA3A9AB0FDD26 + A73F02631E26FC6EA22F52C09B76DD97B3EDF17D7D4D900AD256660273A8EAEA + 6F9318D66E7CDBDC2EFB143577471BF17F090C5177FDD1EE5A38FF83AD2C09BA + EEA7051995BD5D5370CBB5F7292460D88E2FF7A01CF204EEC3E5E8DA646B5C98 + 2070E47818B6222F0AFC4345EC70838794452EFD7E0189B54D6F3A8EEF030000 + 000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end> + Left = 160 + Top = 32 + Bitmap = {} + end +end diff --git a/Modulos/Pagos/Cliente/uViewPagos.pas b/Modulos/Pagos/Cliente/uViewPagos.pas new file mode 100644 index 0000000..b26a4f5 --- /dev/null +++ b/Modulos/Pagos/Cliente/uViewPagos.pas @@ -0,0 +1,134 @@ +unit uViewPagos; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewGrid, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, + cxDataStorage, cxEdit, DB, cxDBData, uDADataTable, cxGridLevel, + cxClasses, cxControls, cxGridCustomView, cxGridCustomTableView, + cxGridTableView, cxGridDBTableView, cxGrid, ActnList, Menus, + cxGridBandedTableView, cxGridDBBandedTableView, JvComponent, + JvFormAutoSize, PngImageList, ImgList, dxPSGlbl, dxPSUtl, dxPSEngn, + dxPrnPg, dxBkgnd, dxWrap, dxPrnDev, dxPSCompsProvider, dxPSFillPatterns, + dxPSEdgePatterns, cxIntlPrintSys3, dxPSCore, dxPScxCommon, dxPScxGridLnk, + uBizPagos, uViewFiltroBase; + +type + IViewPagos = interface(IViewGrid) + ['{A407C7DD-49D2-4710-97AC-FA76AA91CEA6}'] + function GetPagos: IBizPagos; + procedure SetPagos(const Value: IBizPagos); + property Pagos: IBizPagos read GetPagos write SetPagos; + end; + + TfrViewPagos = class(TfrViewGrid, IViewPagos) + PngImageList: TPngImageList; + cxGridViewRecID: TcxGridDBColumn; + cxGridViewCODIGOEMPRESA: TcxGridDBColumn; + cxGridViewCODIGO: TcxGridDBColumn; + cxGridViewFECHAALTA: TcxGridDBColumn; + cxGridViewUSUARIO: TcxGridDBColumn; + cxGridViewCUENTA: TcxGridDBColumn; + cxGridViewIMPORTE: TcxGridDBColumn; + cxGridViewFORMAPAGO: TcxGridDBColumn; + cxGridViewDESCRIPCION: TcxGridDBColumn; + cxGridViewFECHAPAGO: TcxGridDBColumn; + cxGridViewFECHAMODIFICACION: TcxGridDBColumn; + cxGridViewCODIGOCONTACTO: TcxGridDBColumn; + cxGridViewNOMBRE: TcxGridDBColumn; + cxGridViewCODIGOCATEGORIA: TcxGridDBColumn; + cxGridViewCATEGORIA: TcxGridDBColumn; + cxGridViewICONO: TcxGridDBColumn; + procedure cxGridViewICONOCustomDrawCell( + Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; + AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); + private + private + //Filtros relativos a la vista + procedure AnadirFiltroFechas; + + protected + FPagos: IBizPagos; + function GetPagos: IBizPagos; virtual; + procedure SetPagos(const Value: IBizPagos); virtual; + procedure AnadirOtrosFiltros; override; + public + property DataSet: IBizPagos read GetPagos write SetPagos; + end; + +var + frViewPagos: TfrViewPagos; + +implementation + +uses uDataModulePagos; + + +{$R *.dfm} + +{ TfrViewClientes } + +{ +******************************* TfrViewPagos ******************************* +} +function TfrViewPagos.GetPagos: IBizPagos; +begin + Result := FPagos; +end; + +procedure TfrViewPagos.SetPagos(const Value: IBizPagos); +begin + FPagos := Value; + if Assigned(FPagos) then + DADataSource.DataTable := FPagos.DataTable; +end; + + +procedure TfrViewPagos.cxGridViewICONOCustomDrawCell( + Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; + AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); +var + R : TRect; +begin + inherited; + R := AViewInfo.ContentBounds; + ACanvas.FillRect(R); + ACanvas.DrawImage(PngImageList, R.Left, R.Top, 0); + ADone := True; +end; + +procedure TfrViewPagos.AnadirOtrosFiltros; +begin + inherited; + + 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 TfrViewPagos.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('FECHAPAGO'); + FFiltro.AddItem(Columna, foBetween, varArrayOf([Fecha1, Fecha2]), VarToStr(Fecha1) + ' and ' + VarToStr(Fecha2)); + end; +end; + +end. diff --git a/Modulos/Pagos/Cliente/uViewPagosCliente.ddp b/Modulos/Pagos/Cliente/uViewPagosCliente.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Pagos/Cliente/uViewPagosCliente.ddp differ diff --git a/Modulos/Pagos/Cliente/uViewPagosCliente.dfm b/Modulos/Pagos/Cliente/uViewPagosCliente.dfm new file mode 100644 index 0000000..2a096aa --- /dev/null +++ b/Modulos/Pagos/Cliente/uViewPagosCliente.dfm @@ -0,0 +1,34 @@ +inherited frViewPagosCliente: TfrViewPagosCliente + inherited cxGrid: TcxGrid + inherited cxGridView: TcxGridDBTableView + DataController.Summary.FooterSummaryItems = < + item + Format = '0 almacenes' + Kind = skCount + end + item + Format = ',0.00 '#8364';-,0.00 '#8364 + Kind = skSum + Column = cxGridViewIMPORTE + end + item + Format = '0 Cobros' + Kind = skCount + Column = cxGridViewNOMBRE + end> + inherited cxGridViewNOMBRE: TcxGridDBColumn + Caption = 'Cliente' + end + inherited cxGridViewIMPORTE: TcxGridDBColumn + PropertiesClassName = 'TcxCurrencyEditProperties' + Properties.Alignment.Horz = taRightJustify + end + end + end + inherited dxComponentPrinter: TdxComponentPrinter + inherited dxComponentPrinterLink: TdxGridReportLink + ReportDocument.CreationDate = 38762.860500937500000000 + BuiltInReportLink = True + end + end +end diff --git a/Modulos/Pagos/Cliente/uViewPagosCliente.pas b/Modulos/Pagos/Cliente/uViewPagosCliente.pas new file mode 100644 index 0000000..cfd641e --- /dev/null +++ b/Modulos/Pagos/Cliente/uViewPagosCliente.pas @@ -0,0 +1,30 @@ +unit uViewPagosCliente; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewPagos, cxStyles, cxCustomData, cxGraphics, cxFilter, + cxData, cxDataStorage, cxEdit, DB, cxDBData, dxPSGlbl, dxPSUtl, dxPSEngn, + dxPrnPg, dxBkgnd, dxWrap, dxPrnDev, dxPSCompsProvider, dxPSFillPatterns, + dxPSEdgePatterns, ImgList, PngImageList, dxPSCore, dxPScxCommon, + dxPScxGridLnk, ActnList, uDADataTable, cxGridLevel, + cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxClasses, + cxControls, cxGridCustomView, cxGrid, cxCurrencyEdit; + +type + IViewPagosCliente = interface(IViewPagos) + ['{CBC4EDC2-8095-4BF4-86FE-197EB88F7A54}'] + end; + + TfrViewPagosCliente = class(TfrViewPagos) + end; + +var + frViewPagosCliente: TfrViewPagosCliente; + +implementation + +{$R *.dfm} + +end. diff --git a/Modulos/Pagos/Cliente/uViewPagosProveedor.ddp b/Modulos/Pagos/Cliente/uViewPagosProveedor.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Pagos/Cliente/uViewPagosProveedor.ddp differ diff --git a/Modulos/Pagos/Cliente/uViewPagosProveedor.dfm b/Modulos/Pagos/Cliente/uViewPagosProveedor.dfm new file mode 100644 index 0000000..946eb06 --- /dev/null +++ b/Modulos/Pagos/Cliente/uViewPagosProveedor.dfm @@ -0,0 +1,34 @@ +inherited frViewPagosProveedor: TfrViewPagosProveedor + inherited cxGrid: TcxGrid + inherited cxGridView: TcxGridDBTableView + DataController.Summary.FooterSummaryItems = < + item + Format = '0 almacenes' + Kind = skCount + end + item + Format = ',0.00 '#8364';-,0.00 '#8364 + Kind = skSum + Column = cxGridViewIMPORTE + end + item + Format = '0 Pagos' + Kind = skCount + Column = cxGridViewNOMBRE + end> + inherited cxGridViewNOMBRE: TcxGridDBColumn + Caption = 'Proveedor' + end + inherited cxGridViewIMPORTE: TcxGridDBColumn + PropertiesClassName = 'TcxCurrencyEditProperties' + Properties.Alignment.Horz = taRightJustify + end + end + end + inherited dxComponentPrinter: TdxComponentPrinter + inherited dxComponentPrinterLink: TdxGridReportLink + ReportDocument.CreationDate = 38762.861380381950000000 + BuiltInReportLink = True + end + end +end diff --git a/Modulos/Pagos/Cliente/uViewPagosProveedor.pas b/Modulos/Pagos/Cliente/uViewPagosProveedor.pas new file mode 100644 index 0000000..e617ce7 --- /dev/null +++ b/Modulos/Pagos/Cliente/uViewPagosProveedor.pas @@ -0,0 +1,30 @@ +unit uViewPagosProveedor; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewPagos, cxStyles, cxCustomData, cxGraphics, cxFilter, + cxData, cxDataStorage, cxEdit, DB, cxDBData, dxPSGlbl, dxPSUtl, dxPSEngn, + dxPrnPg, dxBkgnd, dxWrap, dxPrnDev, dxPSCompsProvider, dxPSFillPatterns, + dxPSEdgePatterns, ImgList, PngImageList, dxPSCore, dxPScxCommon, + dxPScxGridLnk, ActnList, uDADataTable, cxGridLevel, + cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxClasses, + cxControls, cxGridCustomView, cxGrid, cxCurrencyEdit; + +type + IViewPagosProveedor = interface(IViewPagos) + ['{302F90DE-D71B-4795-A4BC-501B368A03B4}'] + end; + + TfrViewPagosProveedor = class(TfrViewPagos) + end; + +var + frViewPagosProveedor: TfrViewPagosProveedor; + +implementation + +{$R *.dfm} + +end. diff --git a/Modulos/Pagos/Cliente/uViewPresupuesto.dfm b/Modulos/Pagos/Cliente/uViewPresupuesto.dfm new file mode 100644 index 0000000..fee1611 --- /dev/null +++ b/Modulos/Pagos/Cliente/uViewPresupuesto.dfm @@ -0,0 +1,216 @@ +inherited frViewPresupuesto: TfrViewPresupuesto + Width = 751 + Height = 380 + inline frViewDatosPresupuesto1: TfrViewDatosPresupuesto + Left = 0 + Top = 0 + Width = 360 + Height = 124 + Constraints.MinHeight = 110 + Constraints.MinWidth = 360 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 0 + ReadOnly = False + inherited edtFechaPresupuesto: TcxDBDateEdit + Style.Color = clInfoBk + end + inherited eReferencia: TcxDBTextEdit + Enabled = False + Properties.ReadOnly = True + StyleDisabled.TextColor = clActiveCaption + end + inherited cbTipoPresupuesto: TcxDBComboBox + Style.Color = clInfoBk + end + inherited DADataSource: TDADataSource + Left = 296 + Top = 16 + end + end + inline frViewPlazoEntrega1: TfrViewPlazoEntrega + Left = 358 + Top = 210 + Width = 391 + Height = 84 + Constraints.MinWidth = 300 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 1 + ReadOnly = False + inherited Bevel1: TBevel + Width = 267 + end + inherited memPlazoEntrega: TcxDBMemo + Anchors = [akLeft, akTop, akRight] + Height = 45 + Width = 360 + end + end + inline frViewObservaciones1: TfrViewObservaciones + Left = 0 + Top = 288 + Width = 751 + Height = 86 + Constraints.MinWidth = 300 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 2 + ReadOnly = False + inherited Bevel1: TBevel + Width = 643 + end + inherited memObservaciones: TcxDBMemo + Anchors = [akLeft, akTop, akRight] + Height = 45 + Width = 720 + end + end + inline frViewFormaPago1: TfrViewFormaPago + Left = 0 + Top = 210 + Width = 361 + Height = 84 + Constraints.MinWidth = 300 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 3 + ReadOnly = False + inherited Bevel1: TBevel + Width = 253 + end + inherited memFormaPago: TcxDBMemo + Anchors = [akLeft, akTop, akRight] + Height = 45 + Width = 330 + end + end + inline frViewSituacionPresupuesto1: TfrViewSituacionPresupuesto + Left = 0 + Top = 123 + Width = 360 + Height = 97 + Constraints.MinHeight = 85 + Constraints.MinWidth = 360 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 4 + ReadOnly = False + inherited Label6: TLabel + Width = 134 + Caption = 'Estado del presupuesto' + end + inherited Bevel2: TBevel + Left = 152 + Width = 196 + end + inherited cbiSituacion: TcxDBImageComboBox + Style.Color = clInfoBk + StyleFocused.Color = clInfoBk + StyleHot.Color = clInfoBk + end + inherited ImageList: TPngImageList + Left = 64 + Top = 40 + end + end + inline frViewClientePresupuesto1: TfrViewDatosYSeleccionContacto + Left = 360 + Top = 0 + Width = 391 + Height = 219 + Constraints.MinHeight = 202 + Constraints.MinWidth = 350 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 5 + ReadOnly = False + inherited Label5: TLabel + Width = 97 + Caption = 'Datos del cliente' + end + inherited Bevel1: TBevel + Left = 112 + Width = 251 + end + inherited ToolBar1: TToolBar + ButtonWidth = 129 + inherited ToolButton3: TToolButton + Left = 106 + end + inherited ToolButton2: TToolButton + Left = 114 + end + end + inherited edtlNombre: TcxDBTextEdit + StyleDisabled.TextColor = clActiveCaption + Width = 296 + end + inherited edtPoblacion: TcxDBTextEdit + StyleDisabled.TextColor = clActiveCaption + TabOrder = 4 + Width = 296 + end + inherited edtProvincia: TcxDBTextEdit + StyleDisabled.TextColor = clActiveCaption + TabOrder = 3 + Width = 152 + end + inherited edtNIFCIF: TcxDBTextEdit + StyleDisabled.TextColor = clActiveCaption + Width = 296 + end + inherited edtCalle: TcxDBTextEdit + StyleDisabled.TextColor = clActiveCaption + Width = 296 + end + inherited ToolBar2: TToolBar + ButtonWidth = 178 + end + inherited edtCodigoPostal: TcxDBTextEdit + StyleDisabled.TextColor = clActiveCaption + Width = 105 + end + inherited DADataSource: TDADataSource + Left = 64 + Top = 40 + end + inherited ActionList1: TActionList + inherited actElegirContacto: TAction + Caption = 'Elegir un cliente' + end + inherited actAnadirContacto: TAction + Caption = 'Dar de alta un cliente' + end + inherited actVerContacto: TAction + Caption = 'Ver ficha completa del cliente...' + end + end + end + object DADataSource: TDADataSource + end +end diff --git a/Modulos/Pagos/Cliente/uViewPresupuesto.pas b/Modulos/Pagos/Cliente/uViewPresupuesto.pas new file mode 100644 index 0000000..c7a17fb --- /dev/null +++ b/Modulos/Pagos/Cliente/uViewPresupuesto.pas @@ -0,0 +1,76 @@ +unit uViewPresupuesto; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, uBizPresupuestosCliente, cxControls, cxContainer, + cxEdit, cxTextEdit, cxMaskEdit, cxDropDownEdit, cxCalendar, cxDBEdit, DB, + uDADataTable, StdCtrls, Mask, DBCtrls, ExtCtrls, cxGraphics, uCustomView, + uViewDatosPresupuesto, uViewSituacionPresupuesto, + uViewFormaPago, uViewPlazoEntrega, uViewObservaciones, + uViewDatosYSeleccionContacto, AppEvnts; + +type + IViewPresupuesto = interface(IViewBase) + ['{7FDBC909-C3F2-4778-9FE3-1D813FEA7FC1}'] + function GetPresupuesto: IBizPresupuestos; + procedure SetPresupuesto(const Value: IBizPresupuestos); + property Presupuesto: IBizPresupuestos read GetPresupuesto write + SetPresupuesto; + end; + + TfrViewPresupuesto = class(TfrViewBase, IViewPresupuesto) + DADataSource: TDADataSource; + frViewClientePresupuesto1: TfrViewDatosYSeleccionContacto; + frViewDatosPresupuesto1: TfrViewDatosPresupuesto; + frViewFormaPago1: TfrViewFormaPago; + frViewObservaciones1: TfrViewObservaciones; + frViewPlazoEntrega1: TfrViewPlazoEntrega; + frViewSituacionPresupuesto1: TfrViewSituacionPresupuesto; + private + FPresupuesto: IBizPresupuestos; + procedure OnContactoChanged(Sender : TObject); + protected + function GetPresupuesto: IBizPresupuestos; + procedure SetPresupuesto(const Value: IBizPresupuestos); + public + property Presupuesto: IBizPresupuestos read GetPresupuesto write + SetPresupuesto; + end; + +implementation + +uses uBizContacto, uExceptions; + +{$R *.dfm} + +function TfrViewPresupuesto.GetPresupuesto: IBizPresupuestos; +begin + Result := FPresupuesto; +end; + +procedure TfrViewPresupuesto.OnContactoChanged(Sender : TObject); +begin + FPresupuesto.Cliente := (frViewClientePresupuesto1.Contacto as IBizCliente); +end; + +procedure TfrViewPresupuesto.SetPresupuesto(const Value: IBizPresupuestos); +begin + FPresupuesto := Value; + if Assigned(FPresupuesto) then + DADataSource.DataTable := FPresupuesto.DataTable + else + DADataSource.DataTable := NIL; + + frViewDatosPresupuesto1.DADataSource.DataTable := DADataSource.DataTable; + frViewSituacionPresupuesto1.DADataSource.DataTable := DADataSource.DataTable; + frViewFormaPago1.DADataSource.DataTable := DADataSource.DataTable; + frViewPlazoEntrega1.DADataSource.DataTable := DADataSource.DataTable; + frViewObservaciones1.DADataSource.DataTable := DADataSource.DataTable; + + frViewClientePresupuesto1.Contacto := Presupuesto.Cliente; + frViewClientePresupuesto1.OnContactoChanged := OnContactoChanged; +end; + +end. diff --git a/Modulos/Pagos/Reglas/schPagosClient_Intf.pas b/Modulos/Pagos/Reglas/schPagosClient_Intf.pas new file mode 100644 index 0000000..4aed960 --- /dev/null +++ b/Modulos/Pagos/Reglas/schPagosClient_Intf.pas @@ -0,0 +1,906 @@ +unit schPagosClient_Intf; + +interface + +uses + Classes, DB, SysUtils, uROClasses, uDADataTable; + +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_InformeCabeceraPago = '{15DB645D-82F8-47D2-B265-F96587E77C7B}'; + RID_Pagos = '{B164F992-38BF-4CC5-89D1-01472F107C3E}'; + RID_Refresh_Pagos = '{CBBD3913-987D-4199-9F0D-F76BB9557BA3}'; + + { Data table names } + nme_InformeCabeceraPago = 'InformeCabeceraPago'; + nme_Pagos = 'Pagos'; + nme_Refresh_Pagos = 'Refresh_Pagos'; + + { InformeCabeceraPago fields } + fld_InformeCabeceraPagoCODIGOEMPRESA = 'CODIGOEMPRESA'; + fld_InformeCabeceraPagoCODIGO = 'CODIGO'; + fld_InformeCabeceraPagoCUENTA = 'CUENTA'; + fld_InformeCabeceraPagoFECHAPAGO = 'FECHAPAGO'; + fld_InformeCabeceraPagoFORMAPAGO = 'FORMAPAGO'; + fld_InformeCabeceraPagoDESCRIPCION = 'DESCRIPCION'; + fld_InformeCabeceraPagoIMPORTE = 'IMPORTE'; + fld_InformeCabeceraPagoCODIGOCONTACTO = 'CODIGOCONTACTO'; + fld_InformeCabeceraPagoNOMBRE = 'NOMBRE'; + fld_InformeCabeceraPagoNIFCIF = 'NIFCIF'; + fld_InformeCabeceraPagoCALLE = 'CALLE'; + fld_InformeCabeceraPagoCODIGOPOSTAL = 'CODIGOPOSTAL'; + fld_InformeCabeceraPagoPOBLACION = 'POBLACION'; + fld_InformeCabeceraPagoPROVINCIA = 'PROVINCIA'; + + { InformeCabeceraPago field indexes } + idx_InformeCabeceraPagoCODIGOEMPRESA = 0; + idx_InformeCabeceraPagoCODIGO = 1; + idx_InformeCabeceraPagoCUENTA = 2; + idx_InformeCabeceraPagoFECHAPAGO = 3; + idx_InformeCabeceraPagoFORMAPAGO = 4; + idx_InformeCabeceraPagoDESCRIPCION = 5; + idx_InformeCabeceraPagoIMPORTE = 6; + idx_InformeCabeceraPagoCODIGOCONTACTO = 7; + idx_InformeCabeceraPagoNOMBRE = 8; + idx_InformeCabeceraPagoNIFCIF = 9; + idx_InformeCabeceraPagoCALLE = 10; + idx_InformeCabeceraPagoCODIGOPOSTAL = 11; + idx_InformeCabeceraPagoPOBLACION = 12; + idx_InformeCabeceraPagoPROVINCIA = 13; + + { Pagos fields } + fld_PagosCODIGOEMPRESA = 'CODIGOEMPRESA'; + fld_PagosCODIGO = 'CODIGO'; + fld_PagosFECHAALTA = 'FECHAALTA'; + fld_PagosUSUARIO = 'USUARIO'; + fld_PagosCUENTA = 'CUENTA'; + fld_PagosIMPORTE = 'IMPORTE'; + fld_PagosFORMAPAGO = 'FORMAPAGO'; + fld_PagosDESCRIPCION = 'DESCRIPCION'; + fld_PagosFECHAPAGO = 'FECHAPAGO'; + fld_PagosFECHAMODIFICACION = 'FECHAMODIFICACION'; + fld_PagosCODIGOCONTACTO = 'CODIGOCONTACTO'; + fld_PagosNOMBRE = 'NOMBRE'; + fld_PagosCODIGOCATEGORIA = 'CODIGOCATEGORIA'; + fld_PagosCATEGORIA = 'CATEGORIA'; + + { Pagos field indexes } + idx_PagosCODIGOEMPRESA = 0; + idx_PagosCODIGO = 1; + idx_PagosFECHAALTA = 2; + idx_PagosUSUARIO = 3; + idx_PagosCUENTA = 4; + idx_PagosIMPORTE = 5; + idx_PagosFORMAPAGO = 6; + idx_PagosDESCRIPCION = 7; + idx_PagosFECHAPAGO = 8; + idx_PagosFECHAMODIFICACION = 9; + idx_PagosCODIGOCONTACTO = 10; + idx_PagosNOMBRE = 11; + idx_PagosCODIGOCATEGORIA = 12; + idx_PagosCATEGORIA = 13; + + { Refresh_Pagos fields } + fld_Refresh_PagosCODIGOEMPRESA = 'CODIGOEMPRESA'; + fld_Refresh_PagosCODIGO = 'CODIGO'; + fld_Refresh_PagosFECHAALTA = 'FECHAALTA'; + fld_Refresh_PagosUSUARIO = 'USUARIO'; + fld_Refresh_PagosCUENTA = 'CUENTA'; + fld_Refresh_PagosIMPORTE = 'IMPORTE'; + fld_Refresh_PagosFORMAPAGO = 'FORMAPAGO'; + fld_Refresh_PagosDESCRIPCION = 'DESCRIPCION'; + fld_Refresh_PagosFECHAPAGO = 'FECHAPAGO'; + fld_Refresh_PagosFECHAMODIFICACION = 'FECHAMODIFICACION'; + fld_Refresh_PagosCODIGOCONTACTO = 'CODIGOCONTACTO'; + fld_Refresh_PagosNOMBRE = 'NOMBRE'; + fld_Refresh_PagosCODIGOCATEGORIA = 'CODIGOCATEGORIA'; + fld_Refresh_PagosCATEGORIA = 'CATEGORIA'; + + { Refresh_Pagos field indexes } + idx_Refresh_PagosCODIGOEMPRESA = 0; + idx_Refresh_PagosCODIGO = 1; + idx_Refresh_PagosFECHAALTA = 2; + idx_Refresh_PagosUSUARIO = 3; + idx_Refresh_PagosCUENTA = 4; + idx_Refresh_PagosIMPORTE = 5; + idx_Refresh_PagosFORMAPAGO = 6; + idx_Refresh_PagosDESCRIPCION = 7; + idx_Refresh_PagosFECHAPAGO = 8; + idx_Refresh_PagosFECHAMODIFICACION = 9; + idx_Refresh_PagosCODIGOCONTACTO = 10; + idx_Refresh_PagosNOMBRE = 11; + idx_Refresh_PagosCODIGOCATEGORIA = 12; + idx_Refresh_PagosCATEGORIA = 13; + +type + { IInformeCabeceraPago } + IInformeCabeceraPago = interface(IDAStronglyTypedDataTable) + ['{D34C282C-0A16-4856-93A2-761BCC9E74B6}'] + { Property getters and setters } + function GetCODIGOEMPRESAValue: Integer; + procedure SetCODIGOEMPRESAValue(const aValue: Integer); + function GetCODIGOValue: Integer; + procedure SetCODIGOValue(const aValue: Integer); + function GetCUENTAValue: Integer; + procedure SetCUENTAValue(const aValue: Integer); + function GetFECHAPAGOValue: DateTime; + procedure SetFECHAPAGOValue(const aValue: DateTime); + function GetFORMAPAGOValue: String; + procedure SetFORMAPAGOValue(const aValue: String); + function GetDESCRIPCIONValue: String; + procedure SetDESCRIPCIONValue(const aValue: String); + function GetIMPORTEValue: Float; + procedure SetIMPORTEValue(const aValue: Float); + function GetCODIGOCONTACTOValue: Integer; + procedure SetCODIGOCONTACTOValue(const aValue: Integer); + function GetNOMBREValue: String; + procedure SetNOMBREValue(const aValue: String); + function GetNIFCIFValue: String; + procedure SetNIFCIFValue(const aValue: String); + function GetCALLEValue: String; + procedure SetCALLEValue(const aValue: String); + function GetCODIGOPOSTALValue: String; + procedure SetCODIGOPOSTALValue(const aValue: String); + function GetPOBLACIONValue: String; + procedure SetPOBLACIONValue(const aValue: String); + function GetPROVINCIAValue: String; + procedure SetPROVINCIAValue(const aValue: String); + + + { Properties } + property CODIGOEMPRESA: Integer read GetCODIGOEMPRESAValue write SetCODIGOEMPRESAValue; + property CODIGO: Integer read GetCODIGOValue write SetCODIGOValue; + property CUENTA: Integer read GetCUENTAValue write SetCUENTAValue; + property FECHAPAGO: DateTime read GetFECHAPAGOValue write SetFECHAPAGOValue; + property FORMAPAGO: String read GetFORMAPAGOValue write SetFORMAPAGOValue; + property DESCRIPCION: String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + property IMPORTE: Float read GetIMPORTEValue write SetIMPORTEValue; + property CODIGOCONTACTO: Integer read GetCODIGOCONTACTOValue write SetCODIGOCONTACTOValue; + property NOMBRE: String read GetNOMBREValue write SetNOMBREValue; + property NIFCIF: String read GetNIFCIFValue write SetNIFCIFValue; + property CALLE: String read GetCALLEValue write SetCALLEValue; + property CODIGOPOSTAL: String read GetCODIGOPOSTALValue write SetCODIGOPOSTALValue; + property POBLACION: String read GetPOBLACIONValue write SetPOBLACIONValue; + property PROVINCIA: String read GetPROVINCIAValue write SetPROVINCIAValue; + end; + + { TInformeCabeceraPagoDataTableRules } + TInformeCabeceraPagoDataTableRules = class(TDADataTableRules, IInformeCabeceraPago) + private + protected + { Property getters and setters } + function GetCODIGOEMPRESAValue: Integer; virtual; + procedure SetCODIGOEMPRESAValue(const aValue: Integer); virtual; + function GetCODIGOValue: Integer; virtual; + procedure SetCODIGOValue(const aValue: Integer); virtual; + function GetCUENTAValue: Integer; virtual; + procedure SetCUENTAValue(const aValue: Integer); virtual; + function GetFECHAPAGOValue: DateTime; virtual; + procedure SetFECHAPAGOValue(const aValue: DateTime); virtual; + function GetFORMAPAGOValue: String; virtual; + procedure SetFORMAPAGOValue(const aValue: String); virtual; + function GetDESCRIPCIONValue: String; virtual; + procedure SetDESCRIPCIONValue(const aValue: String); virtual; + function GetIMPORTEValue: Float; virtual; + procedure SetIMPORTEValue(const aValue: Float); virtual; + function GetCODIGOCONTACTOValue: Integer; virtual; + procedure SetCODIGOCONTACTOValue(const aValue: Integer); virtual; + function GetNOMBREValue: String; virtual; + procedure SetNOMBREValue(const aValue: String); virtual; + function GetNIFCIFValue: String; virtual; + procedure SetNIFCIFValue(const aValue: String); virtual; + function GetCALLEValue: String; virtual; + procedure SetCALLEValue(const aValue: String); virtual; + function GetCODIGOPOSTALValue: String; virtual; + procedure SetCODIGOPOSTALValue(const aValue: String); virtual; + function GetPOBLACIONValue: String; virtual; + procedure SetPOBLACIONValue(const aValue: String); virtual; + function GetPROVINCIAValue: String; virtual; + procedure SetPROVINCIAValue(const aValue: String); virtual; + + { Properties } + property CODIGOEMPRESA: Integer read GetCODIGOEMPRESAValue write SetCODIGOEMPRESAValue; + property CODIGO: Integer read GetCODIGOValue write SetCODIGOValue; + property CUENTA: Integer read GetCUENTAValue write SetCUENTAValue; + property FECHAPAGO: DateTime read GetFECHAPAGOValue write SetFECHAPAGOValue; + property FORMAPAGO: String read GetFORMAPAGOValue write SetFORMAPAGOValue; + property DESCRIPCION: String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + property IMPORTE: Float read GetIMPORTEValue write SetIMPORTEValue; + property CODIGOCONTACTO: Integer read GetCODIGOCONTACTOValue write SetCODIGOCONTACTOValue; + property NOMBRE: String read GetNOMBREValue write SetNOMBREValue; + property NIFCIF: String read GetNIFCIFValue write SetNIFCIFValue; + property CALLE: String read GetCALLEValue write SetCALLEValue; + property CODIGOPOSTAL: String read GetCODIGOPOSTALValue write SetCODIGOPOSTALValue; + property POBLACION: String read GetPOBLACIONValue write SetPOBLACIONValue; + property PROVINCIA: String read GetPROVINCIAValue write SetPROVINCIAValue; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + + { IPagos } + IPagos = interface(IDAStronglyTypedDataTable) + ['{0B093D73-8029-4287-A384-410C43F01D94}'] + { Property getters and setters } + function GetCODIGOEMPRESAValue: Integer; + procedure SetCODIGOEMPRESAValue(const aValue: Integer); + function GetCODIGOValue: Integer; + procedure SetCODIGOValue(const aValue: Integer); + function GetFECHAALTAValue: DateTime; + procedure SetFECHAALTAValue(const aValue: DateTime); + function GetUSUARIOValue: String; + procedure SetUSUARIOValue(const aValue: String); + function GetCUENTAValue: Integer; + procedure SetCUENTAValue(const aValue: Integer); + function GetIMPORTEValue: Currency; + procedure SetIMPORTEValue(const aValue: Currency); + function GetFORMAPAGOValue: IROStrings; + procedure SetFORMAPAGOValue(const aValue: IROStrings); + function GetDESCRIPCIONValue: String; + procedure SetDESCRIPCIONValue(const aValue: String); + function GetFECHAPAGOValue: DateTime; + procedure SetFECHAPAGOValue(const aValue: DateTime); + function GetFECHAMODIFICACIONValue: DateTime; + procedure SetFECHAMODIFICACIONValue(const aValue: DateTime); + function GetCODIGOCONTACTOValue: Integer; + procedure SetCODIGOCONTACTOValue(const aValue: Integer); + function GetNOMBREValue: String; + procedure SetNOMBREValue(const aValue: String); + function GetCODIGOCATEGORIAValue: Integer; + procedure SetCODIGOCATEGORIAValue(const aValue: Integer); + function GetCATEGORIAValue: String; + procedure SetCATEGORIAValue(const aValue: String); + + + { Properties } + property CODIGOEMPRESA: Integer read GetCODIGOEMPRESAValue write SetCODIGOEMPRESAValue; + property CODIGO: Integer read GetCODIGOValue write SetCODIGOValue; + property FECHAALTA: DateTime read GetFECHAALTAValue write SetFECHAALTAValue; + property USUARIO: String read GetUSUARIOValue write SetUSUARIOValue; + property CUENTA: Integer read GetCUENTAValue write SetCUENTAValue; + property IMPORTE: Currency read GetIMPORTEValue write SetIMPORTEValue; + property FORMAPAGO: IROStrings read GetFORMAPAGOValue write SetFORMAPAGOValue; + property DESCRIPCION: String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + property FECHAPAGO: DateTime read GetFECHAPAGOValue write SetFECHAPAGOValue; + property FECHAMODIFICACION: DateTime read GetFECHAMODIFICACIONValue write SetFECHAMODIFICACIONValue; + property CODIGOCONTACTO: Integer read GetCODIGOCONTACTOValue write SetCODIGOCONTACTOValue; + property NOMBRE: String read GetNOMBREValue write SetNOMBREValue; + property CODIGOCATEGORIA: Integer read GetCODIGOCATEGORIAValue write SetCODIGOCATEGORIAValue; + property CATEGORIA: String read GetCATEGORIAValue write SetCATEGORIAValue; + end; + + { TPagosDataTableRules } + TPagosDataTableRules = class(TDADataTableRules, IPagos) + private + protected + { Property getters and setters } + function GetCODIGOEMPRESAValue: Integer; virtual; + procedure SetCODIGOEMPRESAValue(const aValue: Integer); virtual; + function GetCODIGOValue: Integer; virtual; + procedure SetCODIGOValue(const aValue: Integer); virtual; + function GetFECHAALTAValue: DateTime; virtual; + procedure SetFECHAALTAValue(const aValue: DateTime); virtual; + function GetUSUARIOValue: String; virtual; + procedure SetUSUARIOValue(const aValue: String); virtual; + function GetCUENTAValue: Integer; virtual; + procedure SetCUENTAValue(const aValue: Integer); virtual; + function GetIMPORTEValue: Currency; virtual; + procedure SetIMPORTEValue(const aValue: Currency); virtual; + function GetFORMAPAGOValue: IROStrings; virtual; + procedure SetFORMAPAGOValue(const aValue: IROStrings); virtual; + function GetDESCRIPCIONValue: String; virtual; + procedure SetDESCRIPCIONValue(const aValue: String); virtual; + function GetFECHAPAGOValue: DateTime; virtual; + procedure SetFECHAPAGOValue(const aValue: DateTime); virtual; + function GetFECHAMODIFICACIONValue: DateTime; virtual; + procedure SetFECHAMODIFICACIONValue(const aValue: DateTime); virtual; + function GetCODIGOCONTACTOValue: Integer; virtual; + procedure SetCODIGOCONTACTOValue(const aValue: Integer); virtual; + function GetNOMBREValue: String; virtual; + procedure SetNOMBREValue(const aValue: String); virtual; + function GetCODIGOCATEGORIAValue: Integer; virtual; + procedure SetCODIGOCATEGORIAValue(const aValue: Integer); virtual; + function GetCATEGORIAValue: String; virtual; + procedure SetCATEGORIAValue(const aValue: String); virtual; + + { Properties } + property CODIGOEMPRESA: Integer read GetCODIGOEMPRESAValue write SetCODIGOEMPRESAValue; + property CODIGO: Integer read GetCODIGOValue write SetCODIGOValue; + property FECHAALTA: DateTime read GetFECHAALTAValue write SetFECHAALTAValue; + property USUARIO: String read GetUSUARIOValue write SetUSUARIOValue; + property CUENTA: Integer read GetCUENTAValue write SetCUENTAValue; + property IMPORTE: Currency read GetIMPORTEValue write SetIMPORTEValue; + property FORMAPAGO: IROStrings read GetFORMAPAGOValue write SetFORMAPAGOValue; + property DESCRIPCION: String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + property FECHAPAGO: DateTime read GetFECHAPAGOValue write SetFECHAPAGOValue; + property FECHAMODIFICACION: DateTime read GetFECHAMODIFICACIONValue write SetFECHAMODIFICACIONValue; + property CODIGOCONTACTO: Integer read GetCODIGOCONTACTOValue write SetCODIGOCONTACTOValue; + property NOMBRE: String read GetNOMBREValue write SetNOMBREValue; + property CODIGOCATEGORIA: Integer read GetCODIGOCATEGORIAValue write SetCODIGOCATEGORIAValue; + property CATEGORIA: String read GetCATEGORIAValue write SetCATEGORIAValue; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + + { IRefresh_Pagos } + IRefresh_Pagos = interface(IDAStronglyTypedDataTable) + ['{62CDC2A7-3320-400F-817E-059D1FCB917E}'] + { Property getters and setters } + function GetCODIGOEMPRESAValue: Integer; + procedure SetCODIGOEMPRESAValue(const aValue: Integer); + function GetCODIGOValue: Integer; + procedure SetCODIGOValue(const aValue: Integer); + function GetFECHAALTAValue: DateTime; + procedure SetFECHAALTAValue(const aValue: DateTime); + function GetUSUARIOValue: String; + procedure SetUSUARIOValue(const aValue: String); + function GetCUENTAValue: Integer; + procedure SetCUENTAValue(const aValue: Integer); + function GetIMPORTEValue: Currency; + procedure SetIMPORTEValue(const aValue: Currency); + function GetFORMAPAGOValue: IROStrings; + procedure SetFORMAPAGOValue(const aValue: IROStrings); + function GetDESCRIPCIONValue: String; + procedure SetDESCRIPCIONValue(const aValue: String); + function GetFECHAPAGOValue: DateTime; + procedure SetFECHAPAGOValue(const aValue: DateTime); + function GetFECHAMODIFICACIONValue: DateTime; + procedure SetFECHAMODIFICACIONValue(const aValue: DateTime); + function GetCODIGOCONTACTOValue: Integer; + procedure SetCODIGOCONTACTOValue(const aValue: Integer); + function GetNOMBREValue: String; + procedure SetNOMBREValue(const aValue: String); + function GetCODIGOCATEGORIAValue: Integer; + procedure SetCODIGOCATEGORIAValue(const aValue: Integer); + function GetCATEGORIAValue: String; + procedure SetCATEGORIAValue(const aValue: String); + + + { Properties } + property CODIGOEMPRESA: Integer read GetCODIGOEMPRESAValue write SetCODIGOEMPRESAValue; + property CODIGO: Integer read GetCODIGOValue write SetCODIGOValue; + property FECHAALTA: DateTime read GetFECHAALTAValue write SetFECHAALTAValue; + property USUARIO: String read GetUSUARIOValue write SetUSUARIOValue; + property CUENTA: Integer read GetCUENTAValue write SetCUENTAValue; + property IMPORTE: Currency read GetIMPORTEValue write SetIMPORTEValue; + property FORMAPAGO: IROStrings read GetFORMAPAGOValue write SetFORMAPAGOValue; + property DESCRIPCION: String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + property FECHAPAGO: DateTime read GetFECHAPAGOValue write SetFECHAPAGOValue; + property FECHAMODIFICACION: DateTime read GetFECHAMODIFICACIONValue write SetFECHAMODIFICACIONValue; + property CODIGOCONTACTO: Integer read GetCODIGOCONTACTOValue write SetCODIGOCONTACTOValue; + property NOMBRE: String read GetNOMBREValue write SetNOMBREValue; + property CODIGOCATEGORIA: Integer read GetCODIGOCATEGORIAValue write SetCODIGOCATEGORIAValue; + property CATEGORIA: String read GetCATEGORIAValue write SetCATEGORIAValue; + end; + + { TRefresh_PagosDataTableRules } + TRefresh_PagosDataTableRules = class(TDADataTableRules, IRefresh_Pagos) + private + protected + { Property getters and setters } + function GetCODIGOEMPRESAValue: Integer; virtual; + procedure SetCODIGOEMPRESAValue(const aValue: Integer); virtual; + function GetCODIGOValue: Integer; virtual; + procedure SetCODIGOValue(const aValue: Integer); virtual; + function GetFECHAALTAValue: DateTime; virtual; + procedure SetFECHAALTAValue(const aValue: DateTime); virtual; + function GetUSUARIOValue: String; virtual; + procedure SetUSUARIOValue(const aValue: String); virtual; + function GetCUENTAValue: Integer; virtual; + procedure SetCUENTAValue(const aValue: Integer); virtual; + function GetIMPORTEValue: Currency; virtual; + procedure SetIMPORTEValue(const aValue: Currency); virtual; + function GetFORMAPAGOValue: IROStrings; virtual; + procedure SetFORMAPAGOValue(const aValue: IROStrings); virtual; + function GetDESCRIPCIONValue: String; virtual; + procedure SetDESCRIPCIONValue(const aValue: String); virtual; + function GetFECHAPAGOValue: DateTime; virtual; + procedure SetFECHAPAGOValue(const aValue: DateTime); virtual; + function GetFECHAMODIFICACIONValue: DateTime; virtual; + procedure SetFECHAMODIFICACIONValue(const aValue: DateTime); virtual; + function GetCODIGOCONTACTOValue: Integer; virtual; + procedure SetCODIGOCONTACTOValue(const aValue: Integer); virtual; + function GetNOMBREValue: String; virtual; + procedure SetNOMBREValue(const aValue: String); virtual; + function GetCODIGOCATEGORIAValue: Integer; virtual; + procedure SetCODIGOCATEGORIAValue(const aValue: Integer); virtual; + function GetCATEGORIAValue: String; virtual; + procedure SetCATEGORIAValue(const aValue: String); virtual; + + { Properties } + property CODIGOEMPRESA: Integer read GetCODIGOEMPRESAValue write SetCODIGOEMPRESAValue; + property CODIGO: Integer read GetCODIGOValue write SetCODIGOValue; + property FECHAALTA: DateTime read GetFECHAALTAValue write SetFECHAALTAValue; + property USUARIO: String read GetUSUARIOValue write SetUSUARIOValue; + property CUENTA: Integer read GetCUENTAValue write SetCUENTAValue; + property IMPORTE: Currency read GetIMPORTEValue write SetIMPORTEValue; + property FORMAPAGO: IROStrings read GetFORMAPAGOValue write SetFORMAPAGOValue; + property DESCRIPCION: String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + property FECHAPAGO: DateTime read GetFECHAPAGOValue write SetFECHAPAGOValue; + property FECHAMODIFICACION: DateTime read GetFECHAMODIFICACIONValue write SetFECHAMODIFICACIONValue; + property CODIGOCONTACTO: Integer read GetCODIGOCONTACTOValue write SetCODIGOCONTACTOValue; + property NOMBRE: String read GetNOMBREValue write SetNOMBREValue; + property CODIGOCATEGORIA: Integer read GetCODIGOCATEGORIAValue write SetCODIGOCATEGORIAValue; + property CATEGORIA: String read GetCATEGORIAValue write SetCATEGORIAValue; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + +implementation + +uses Variants; + +{ TInformeCabeceraPagoDataTableRules } +constructor TInformeCabeceraPagoDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TInformeCabeceraPagoDataTableRules.Destroy; +begin + inherited; +end; + +function TInformeCabeceraPagoDataTableRules.GetCODIGOEMPRESAValue: Integer; +begin + result := DataTable.Fields[idx_InformeCabeceraPagoCODIGOEMPRESA].AsInteger; +end; + +procedure TInformeCabeceraPagoDataTableRules.SetCODIGOEMPRESAValue(const aValue: Integer); +begin + DataTable.Fields[idx_InformeCabeceraPagoCODIGOEMPRESA].AsInteger := aValue; +end; + +function TInformeCabeceraPagoDataTableRules.GetCODIGOValue: Integer; +begin + result := DataTable.Fields[idx_InformeCabeceraPagoCODIGO].AsInteger; +end; + +procedure TInformeCabeceraPagoDataTableRules.SetCODIGOValue(const aValue: Integer); +begin + DataTable.Fields[idx_InformeCabeceraPagoCODIGO].AsInteger := aValue; +end; + +function TInformeCabeceraPagoDataTableRules.GetCUENTAValue: Integer; +begin + result := DataTable.Fields[idx_InformeCabeceraPagoCUENTA].AsInteger; +end; + +procedure TInformeCabeceraPagoDataTableRules.SetCUENTAValue(const aValue: Integer); +begin + DataTable.Fields[idx_InformeCabeceraPagoCUENTA].AsInteger := aValue; +end; + +function TInformeCabeceraPagoDataTableRules.GetFECHAPAGOValue: DateTime; +begin + result := DataTable.Fields[idx_InformeCabeceraPagoFECHAPAGO].AsDateTime; +end; + +procedure TInformeCabeceraPagoDataTableRules.SetFECHAPAGOValue(const aValue: DateTime); +begin + DataTable.Fields[idx_InformeCabeceraPagoFECHAPAGO].AsDateTime := aValue; +end; + +function TInformeCabeceraPagoDataTableRules.GetFORMAPAGOValue: String; +begin + result := DataTable.Fields[idx_InformeCabeceraPagoFORMAPAGO].AsString; +end; + +procedure TInformeCabeceraPagoDataTableRules.SetFORMAPAGOValue(const aValue: String); +begin + DataTable.Fields[idx_InformeCabeceraPagoFORMAPAGO].AsString := aValue; +end; + +function TInformeCabeceraPagoDataTableRules.GetDESCRIPCIONValue: String; +begin + result := DataTable.Fields[idx_InformeCabeceraPagoDESCRIPCION].AsString; +end; + +procedure TInformeCabeceraPagoDataTableRules.SetDESCRIPCIONValue(const aValue: String); +begin + DataTable.Fields[idx_InformeCabeceraPagoDESCRIPCION].AsString := aValue; +end; + +function TInformeCabeceraPagoDataTableRules.GetIMPORTEValue: Float; +begin + result := DataTable.Fields[idx_InformeCabeceraPagoIMPORTE].AsFloat; +end; + +procedure TInformeCabeceraPagoDataTableRules.SetIMPORTEValue(const aValue: Float); +begin + DataTable.Fields[idx_InformeCabeceraPagoIMPORTE].AsFloat := aValue; +end; + +function TInformeCabeceraPagoDataTableRules.GetCODIGOCONTACTOValue: Integer; +begin + result := DataTable.Fields[idx_InformeCabeceraPagoCODIGOCONTACTO].AsInteger; +end; + +procedure TInformeCabeceraPagoDataTableRules.SetCODIGOCONTACTOValue(const aValue: Integer); +begin + DataTable.Fields[idx_InformeCabeceraPagoCODIGOCONTACTO].AsInteger := aValue; +end; + +function TInformeCabeceraPagoDataTableRules.GetNOMBREValue: String; +begin + result := DataTable.Fields[idx_InformeCabeceraPagoNOMBRE].AsString; +end; + +procedure TInformeCabeceraPagoDataTableRules.SetNOMBREValue(const aValue: String); +begin + DataTable.Fields[idx_InformeCabeceraPagoNOMBRE].AsString := aValue; +end; + +function TInformeCabeceraPagoDataTableRules.GetNIFCIFValue: String; +begin + result := DataTable.Fields[idx_InformeCabeceraPagoNIFCIF].AsString; +end; + +procedure TInformeCabeceraPagoDataTableRules.SetNIFCIFValue(const aValue: String); +begin + DataTable.Fields[idx_InformeCabeceraPagoNIFCIF].AsString := aValue; +end; + +function TInformeCabeceraPagoDataTableRules.GetCALLEValue: String; +begin + result := DataTable.Fields[idx_InformeCabeceraPagoCALLE].AsString; +end; + +procedure TInformeCabeceraPagoDataTableRules.SetCALLEValue(const aValue: String); +begin + DataTable.Fields[idx_InformeCabeceraPagoCALLE].AsString := aValue; +end; + +function TInformeCabeceraPagoDataTableRules.GetCODIGOPOSTALValue: String; +begin + result := DataTable.Fields[idx_InformeCabeceraPagoCODIGOPOSTAL].AsString; +end; + +procedure TInformeCabeceraPagoDataTableRules.SetCODIGOPOSTALValue(const aValue: String); +begin + DataTable.Fields[idx_InformeCabeceraPagoCODIGOPOSTAL].AsString := aValue; +end; + +function TInformeCabeceraPagoDataTableRules.GetPOBLACIONValue: String; +begin + result := DataTable.Fields[idx_InformeCabeceraPagoPOBLACION].AsString; +end; + +procedure TInformeCabeceraPagoDataTableRules.SetPOBLACIONValue(const aValue: String); +begin + DataTable.Fields[idx_InformeCabeceraPagoPOBLACION].AsString := aValue; +end; + +function TInformeCabeceraPagoDataTableRules.GetPROVINCIAValue: String; +begin + result := DataTable.Fields[idx_InformeCabeceraPagoPROVINCIA].AsString; +end; + +procedure TInformeCabeceraPagoDataTableRules.SetPROVINCIAValue(const aValue: String); +begin + DataTable.Fields[idx_InformeCabeceraPagoPROVINCIA].AsString := aValue; +end; + + +{ TPagosDataTableRules } +constructor TPagosDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TPagosDataTableRules.Destroy; +begin + inherited; +end; + +function TPagosDataTableRules.GetCODIGOEMPRESAValue: Integer; +begin + result := DataTable.Fields[idx_PagosCODIGOEMPRESA].AsInteger; +end; + +procedure TPagosDataTableRules.SetCODIGOEMPRESAValue(const aValue: Integer); +begin + DataTable.Fields[idx_PagosCODIGOEMPRESA].AsInteger := aValue; +end; + +function TPagosDataTableRules.GetCODIGOValue: Integer; +begin + result := DataTable.Fields[idx_PagosCODIGO].AsInteger; +end; + +procedure TPagosDataTableRules.SetCODIGOValue(const aValue: Integer); +begin + DataTable.Fields[idx_PagosCODIGO].AsInteger := aValue; +end; + +function TPagosDataTableRules.GetFECHAALTAValue: DateTime; +begin + result := DataTable.Fields[idx_PagosFECHAALTA].AsDateTime; +end; + +procedure TPagosDataTableRules.SetFECHAALTAValue(const aValue: DateTime); +begin + DataTable.Fields[idx_PagosFECHAALTA].AsDateTime := aValue; +end; + +function TPagosDataTableRules.GetUSUARIOValue: String; +begin + result := DataTable.Fields[idx_PagosUSUARIO].AsString; +end; + +procedure TPagosDataTableRules.SetUSUARIOValue(const aValue: String); +begin + DataTable.Fields[idx_PagosUSUARIO].AsString := aValue; +end; + +function TPagosDataTableRules.GetCUENTAValue: Integer; +begin + result := DataTable.Fields[idx_PagosCUENTA].AsInteger; +end; + +procedure TPagosDataTableRules.SetCUENTAValue(const aValue: Integer); +begin + DataTable.Fields[idx_PagosCUENTA].AsInteger := aValue; +end; + +function TPagosDataTableRules.GetIMPORTEValue: Currency; +begin + result := DataTable.Fields[idx_PagosIMPORTE].AsCurrency; +end; + +procedure TPagosDataTableRules.SetIMPORTEValue(const aValue: Currency); +begin + DataTable.Fields[idx_PagosIMPORTE].AsCurrency := aValue; +end; + +function TPagosDataTableRules.GetFORMAPAGOValue: IROStrings; +begin + result := NewROStrings(); + result.Text := DataTable.Fields[idx_PagosFORMAPAGO].AsString; +end; + +procedure TPagosDataTableRules.SetFORMAPAGOValue(const aValue: IROStrings); +begin + DataTable.Fields[idx_PagosFORMAPAGO].AsString := aValue.Text; +end; + +function TPagosDataTableRules.GetDESCRIPCIONValue: String; +begin + result := DataTable.Fields[idx_PagosDESCRIPCION].AsString; +end; + +procedure TPagosDataTableRules.SetDESCRIPCIONValue(const aValue: String); +begin + DataTable.Fields[idx_PagosDESCRIPCION].AsString := aValue; +end; + +function TPagosDataTableRules.GetFECHAPAGOValue: DateTime; +begin + result := DataTable.Fields[idx_PagosFECHAPAGO].AsDateTime; +end; + +procedure TPagosDataTableRules.SetFECHAPAGOValue(const aValue: DateTime); +begin + DataTable.Fields[idx_PagosFECHAPAGO].AsDateTime := aValue; +end; + +function TPagosDataTableRules.GetFECHAMODIFICACIONValue: DateTime; +begin + result := DataTable.Fields[idx_PagosFECHAMODIFICACION].AsDateTime; +end; + +procedure TPagosDataTableRules.SetFECHAMODIFICACIONValue(const aValue: DateTime); +begin + DataTable.Fields[idx_PagosFECHAMODIFICACION].AsDateTime := aValue; +end; + +function TPagosDataTableRules.GetCODIGOCONTACTOValue: Integer; +begin + result := DataTable.Fields[idx_PagosCODIGOCONTACTO].AsInteger; +end; + +procedure TPagosDataTableRules.SetCODIGOCONTACTOValue(const aValue: Integer); +begin + DataTable.Fields[idx_PagosCODIGOCONTACTO].AsInteger := aValue; +end; + +function TPagosDataTableRules.GetNOMBREValue: String; +begin + result := DataTable.Fields[idx_PagosNOMBRE].AsString; +end; + +procedure TPagosDataTableRules.SetNOMBREValue(const aValue: String); +begin + DataTable.Fields[idx_PagosNOMBRE].AsString := aValue; +end; + +function TPagosDataTableRules.GetCODIGOCATEGORIAValue: Integer; +begin + result := DataTable.Fields[idx_PagosCODIGOCATEGORIA].AsInteger; +end; + +procedure TPagosDataTableRules.SetCODIGOCATEGORIAValue(const aValue: Integer); +begin + DataTable.Fields[idx_PagosCODIGOCATEGORIA].AsInteger := aValue; +end; + +function TPagosDataTableRules.GetCATEGORIAValue: String; +begin + result := DataTable.Fields[idx_PagosCATEGORIA].AsString; +end; + +procedure TPagosDataTableRules.SetCATEGORIAValue(const aValue: String); +begin + DataTable.Fields[idx_PagosCATEGORIA].AsString := aValue; +end; + + +{ TRefresh_PagosDataTableRules } +constructor TRefresh_PagosDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TRefresh_PagosDataTableRules.Destroy; +begin + inherited; +end; + +function TRefresh_PagosDataTableRules.GetCODIGOEMPRESAValue: Integer; +begin + result := DataTable.Fields[idx_Refresh_PagosCODIGOEMPRESA].AsInteger; +end; + +procedure TRefresh_PagosDataTableRules.SetCODIGOEMPRESAValue(const aValue: Integer); +begin + DataTable.Fields[idx_Refresh_PagosCODIGOEMPRESA].AsInteger := aValue; +end; + +function TRefresh_PagosDataTableRules.GetCODIGOValue: Integer; +begin + result := DataTable.Fields[idx_Refresh_PagosCODIGO].AsInteger; +end; + +procedure TRefresh_PagosDataTableRules.SetCODIGOValue(const aValue: Integer); +begin + DataTable.Fields[idx_Refresh_PagosCODIGO].AsInteger := aValue; +end; + +function TRefresh_PagosDataTableRules.GetFECHAALTAValue: DateTime; +begin + result := DataTable.Fields[idx_Refresh_PagosFECHAALTA].AsDateTime; +end; + +procedure TRefresh_PagosDataTableRules.SetFECHAALTAValue(const aValue: DateTime); +begin + DataTable.Fields[idx_Refresh_PagosFECHAALTA].AsDateTime := aValue; +end; + +function TRefresh_PagosDataTableRules.GetUSUARIOValue: String; +begin + result := DataTable.Fields[idx_Refresh_PagosUSUARIO].AsString; +end; + +procedure TRefresh_PagosDataTableRules.SetUSUARIOValue(const aValue: String); +begin + DataTable.Fields[idx_Refresh_PagosUSUARIO].AsString := aValue; +end; + +function TRefresh_PagosDataTableRules.GetCUENTAValue: Integer; +begin + result := DataTable.Fields[idx_Refresh_PagosCUENTA].AsInteger; +end; + +procedure TRefresh_PagosDataTableRules.SetCUENTAValue(const aValue: Integer); +begin + DataTable.Fields[idx_Refresh_PagosCUENTA].AsInteger := aValue; +end; + +function TRefresh_PagosDataTableRules.GetIMPORTEValue: Currency; +begin + result := DataTable.Fields[idx_Refresh_PagosIMPORTE].AsCurrency; +end; + +procedure TRefresh_PagosDataTableRules.SetIMPORTEValue(const aValue: Currency); +begin + DataTable.Fields[idx_Refresh_PagosIMPORTE].AsCurrency := aValue; +end; + +function TRefresh_PagosDataTableRules.GetFORMAPAGOValue: IROStrings; +begin + result := NewROStrings(); + result.Text := DataTable.Fields[idx_Refresh_PagosFORMAPAGO].AsString; +end; + +procedure TRefresh_PagosDataTableRules.SetFORMAPAGOValue(const aValue: IROStrings); +begin + DataTable.Fields[idx_Refresh_PagosFORMAPAGO].AsString := aValue.Text; +end; + +function TRefresh_PagosDataTableRules.GetDESCRIPCIONValue: String; +begin + result := DataTable.Fields[idx_Refresh_PagosDESCRIPCION].AsString; +end; + +procedure TRefresh_PagosDataTableRules.SetDESCRIPCIONValue(const aValue: String); +begin + DataTable.Fields[idx_Refresh_PagosDESCRIPCION].AsString := aValue; +end; + +function TRefresh_PagosDataTableRules.GetFECHAPAGOValue: DateTime; +begin + result := DataTable.Fields[idx_Refresh_PagosFECHAPAGO].AsDateTime; +end; + +procedure TRefresh_PagosDataTableRules.SetFECHAPAGOValue(const aValue: DateTime); +begin + DataTable.Fields[idx_Refresh_PagosFECHAPAGO].AsDateTime := aValue; +end; + +function TRefresh_PagosDataTableRules.GetFECHAMODIFICACIONValue: DateTime; +begin + result := DataTable.Fields[idx_Refresh_PagosFECHAMODIFICACION].AsDateTime; +end; + +procedure TRefresh_PagosDataTableRules.SetFECHAMODIFICACIONValue(const aValue: DateTime); +begin + DataTable.Fields[idx_Refresh_PagosFECHAMODIFICACION].AsDateTime := aValue; +end; + +function TRefresh_PagosDataTableRules.GetCODIGOCONTACTOValue: Integer; +begin + result := DataTable.Fields[idx_Refresh_PagosCODIGOCONTACTO].AsInteger; +end; + +procedure TRefresh_PagosDataTableRules.SetCODIGOCONTACTOValue(const aValue: Integer); +begin + DataTable.Fields[idx_Refresh_PagosCODIGOCONTACTO].AsInteger := aValue; +end; + +function TRefresh_PagosDataTableRules.GetNOMBREValue: String; +begin + result := DataTable.Fields[idx_Refresh_PagosNOMBRE].AsString; +end; + +procedure TRefresh_PagosDataTableRules.SetNOMBREValue(const aValue: String); +begin + DataTable.Fields[idx_Refresh_PagosNOMBRE].AsString := aValue; +end; + +function TRefresh_PagosDataTableRules.GetCODIGOCATEGORIAValue: Integer; +begin + result := DataTable.Fields[idx_Refresh_PagosCODIGOCATEGORIA].AsInteger; +end; + +procedure TRefresh_PagosDataTableRules.SetCODIGOCATEGORIAValue(const aValue: Integer); +begin + DataTable.Fields[idx_Refresh_PagosCODIGOCATEGORIA].AsInteger := aValue; +end; + +function TRefresh_PagosDataTableRules.GetCATEGORIAValue: String; +begin + result := DataTable.Fields[idx_Refresh_PagosCATEGORIA].AsString; +end; + +procedure TRefresh_PagosDataTableRules.SetCATEGORIAValue(const aValue: String); +begin + DataTable.Fields[idx_Refresh_PagosCATEGORIA].AsString := aValue; +end; + + +initialization + RegisterDataTableRules(RID_InformeCabeceraPago, TInformeCabeceraPagoDataTableRules); + RegisterDataTableRules(RID_Pagos, TPagosDataTableRules); + RegisterDataTableRules(RID_Refresh_Pagos, TRefresh_PagosDataTableRules); + +end. diff --git a/Modulos/Pagos/Reglas/schPagosServer_Intf.pas b/Modulos/Pagos/Reglas/schPagosServer_Intf.pas new file mode 100644 index 0000000..5e42102 --- /dev/null +++ b/Modulos/Pagos/Reglas/schPagosServer_Intf.pas @@ -0,0 +1,1057 @@ +unit schPagosServer_Intf; + +interface + +uses + Classes, DB, SysUtils, uROClasses, uDADataTable, uDABusinessProcessor, schPagosClient_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_InformeCabeceraPagoDelta = '{435D82E6-79DC-40E5-8832-EA15AE38CFB2}'; + RID_PagosDelta = '{C8AD6796-7481-4F57-AF85-C283AAF1DF27}'; + RID_Refresh_PagosDelta = '{3A452B1A-45BD-4837-8F96-86D8F5B8F80E}'; + +type + { IInformeCabeceraPagoDelta } + IInformeCabeceraPagoDelta = interface(IInformeCabeceraPago) + ['{435D82E6-79DC-40E5-8832-EA15AE38CFB2}'] + { Property getters and setters } + function GetOldCODIGOEMPRESAValue : Integer; + function GetOldCODIGOValue : Integer; + function GetOldCUENTAValue : Integer; + function GetOldFECHAPAGOValue : DateTime; + function GetOldFORMAPAGOValue : String; + function GetOldDESCRIPCIONValue : String; + function GetOldIMPORTEValue : Float; + function GetOldCODIGOCONTACTOValue : Integer; + function GetOldNOMBREValue : String; + function GetOldNIFCIFValue : String; + function GetOldCALLEValue : String; + function GetOldCODIGOPOSTALValue : String; + function GetOldPOBLACIONValue : String; + function GetOldPROVINCIAValue : String; + + { Properties } + property OldCODIGOEMPRESA : Integer read GetOldCODIGOEMPRESAValue; + property OldCODIGO : Integer read GetOldCODIGOValue; + property OldCUENTA : Integer read GetOldCUENTAValue; + property OldFECHAPAGO : DateTime read GetOldFECHAPAGOValue; + property OldFORMAPAGO : String read GetOldFORMAPAGOValue; + property OldDESCRIPCION : String read GetOldDESCRIPCIONValue; + property OldIMPORTE : Float read GetOldIMPORTEValue; + property OldCODIGOCONTACTO : Integer read GetOldCODIGOCONTACTOValue; + property OldNOMBRE : String read GetOldNOMBREValue; + property OldNIFCIF : String read GetOldNIFCIFValue; + property OldCALLE : String read GetOldCALLEValue; + property OldCODIGOPOSTAL : String read GetOldCODIGOPOSTALValue; + property OldPOBLACION : String read GetOldPOBLACIONValue; + property OldPROVINCIA : String read GetOldPROVINCIAValue; + end; + + { TInformeCabeceraPagoBusinessProcessorRules } + TInformeCabeceraPagoBusinessProcessorRules = class(TDABusinessProcessorRules, IInformeCabeceraPago, IInformeCabeceraPagoDelta) + private + protected + { Property getters and setters } + function GetCODIGOEMPRESAValue: Integer; virtual; + function GetOldCODIGOEMPRESAValue: Integer; virtual; + procedure SetCODIGOEMPRESAValue(const aValue: Integer); virtual; + function GetCODIGOValue: Integer; virtual; + function GetOldCODIGOValue: Integer; virtual; + procedure SetCODIGOValue(const aValue: Integer); virtual; + function GetCUENTAValue: Integer; virtual; + function GetOldCUENTAValue: Integer; virtual; + procedure SetCUENTAValue(const aValue: Integer); virtual; + function GetFECHAPAGOValue: DateTime; virtual; + function GetOldFECHAPAGOValue: DateTime; virtual; + procedure SetFECHAPAGOValue(const aValue: DateTime); virtual; + function GetFORMAPAGOValue: String; virtual; + function GetOldFORMAPAGOValue: String; virtual; + procedure SetFORMAPAGOValue(const aValue: String); virtual; + function GetDESCRIPCIONValue: String; virtual; + function GetOldDESCRIPCIONValue: String; virtual; + procedure SetDESCRIPCIONValue(const aValue: String); virtual; + function GetIMPORTEValue: Float; virtual; + function GetOldIMPORTEValue: Float; virtual; + procedure SetIMPORTEValue(const aValue: Float); virtual; + function GetCODIGOCONTACTOValue: Integer; virtual; + function GetOldCODIGOCONTACTOValue: Integer; virtual; + procedure SetCODIGOCONTACTOValue(const aValue: Integer); virtual; + function GetNOMBREValue: String; virtual; + function GetOldNOMBREValue: String; virtual; + procedure SetNOMBREValue(const aValue: String); virtual; + function GetNIFCIFValue: String; virtual; + function GetOldNIFCIFValue: String; virtual; + procedure SetNIFCIFValue(const aValue: String); virtual; + function GetCALLEValue: String; virtual; + function GetOldCALLEValue: String; virtual; + procedure SetCALLEValue(const aValue: String); virtual; + function GetCODIGOPOSTALValue: String; virtual; + function GetOldCODIGOPOSTALValue: String; virtual; + procedure SetCODIGOPOSTALValue(const aValue: String); virtual; + function GetPOBLACIONValue: String; virtual; + function GetOldPOBLACIONValue: String; virtual; + procedure SetPOBLACIONValue(const aValue: String); virtual; + function GetPROVINCIAValue: String; virtual; + function GetOldPROVINCIAValue: String; virtual; + procedure SetPROVINCIAValue(const aValue: String); virtual; + + { Properties } + property CODIGOEMPRESA : Integer read GetCODIGOEMPRESAValue write SetCODIGOEMPRESAValue; + property OldCODIGOEMPRESA : Integer read GetOldCODIGOEMPRESAValue; + property CODIGO : Integer read GetCODIGOValue write SetCODIGOValue; + property OldCODIGO : Integer read GetOldCODIGOValue; + property CUENTA : Integer read GetCUENTAValue write SetCUENTAValue; + property OldCUENTA : Integer read GetOldCUENTAValue; + property FECHAPAGO : DateTime read GetFECHAPAGOValue write SetFECHAPAGOValue; + property OldFECHAPAGO : DateTime read GetOldFECHAPAGOValue; + property FORMAPAGO : String read GetFORMAPAGOValue write SetFORMAPAGOValue; + property OldFORMAPAGO : String read GetOldFORMAPAGOValue; + property DESCRIPCION : String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + property OldDESCRIPCION : String read GetOldDESCRIPCIONValue; + property IMPORTE : Float read GetIMPORTEValue write SetIMPORTEValue; + property OldIMPORTE : Float read GetOldIMPORTEValue; + property CODIGOCONTACTO : Integer read GetCODIGOCONTACTOValue write SetCODIGOCONTACTOValue; + property OldCODIGOCONTACTO : Integer read GetOldCODIGOCONTACTOValue; + property NOMBRE : String read GetNOMBREValue write SetNOMBREValue; + property OldNOMBRE : String read GetOldNOMBREValue; + property NIFCIF : String read GetNIFCIFValue write SetNIFCIFValue; + property OldNIFCIF : String read GetOldNIFCIFValue; + property CALLE : String read GetCALLEValue write SetCALLEValue; + property OldCALLE : String read GetOldCALLEValue; + property CODIGOPOSTAL : String read GetCODIGOPOSTALValue write SetCODIGOPOSTALValue; + property OldCODIGOPOSTAL : String read GetOldCODIGOPOSTALValue; + property POBLACION : String read GetPOBLACIONValue write SetPOBLACIONValue; + property OldPOBLACION : String read GetOldPOBLACIONValue; + property PROVINCIA : String read GetPROVINCIAValue write SetPROVINCIAValue; + property OldPROVINCIA : String read GetOldPROVINCIAValue; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + + { IPagosDelta } + IPagosDelta = interface(IPagos) + ['{C8AD6796-7481-4F57-AF85-C283AAF1DF27}'] + { Property getters and setters } + function GetOldCODIGOEMPRESAValue : Integer; + function GetOldCODIGOValue : Integer; + function GetOldFECHAALTAValue : DateTime; + function GetOldUSUARIOValue : String; + function GetOldCUENTAValue : Integer; + function GetOldIMPORTEValue : Currency; + function GetOldFORMAPAGOValue : IROStrings; + function GetOldDESCRIPCIONValue : String; + function GetOldFECHAPAGOValue : DateTime; + function GetOldFECHAMODIFICACIONValue : DateTime; + function GetOldCODIGOCONTACTOValue : Integer; + function GetOldNOMBREValue : String; + function GetOldCODIGOCATEGORIAValue : Integer; + function GetOldCATEGORIAValue : String; + + { Properties } + property OldCODIGOEMPRESA : Integer read GetOldCODIGOEMPRESAValue; + property OldCODIGO : Integer read GetOldCODIGOValue; + property OldFECHAALTA : DateTime read GetOldFECHAALTAValue; + property OldUSUARIO : String read GetOldUSUARIOValue; + property OldCUENTA : Integer read GetOldCUENTAValue; + property OldIMPORTE : Currency read GetOldIMPORTEValue; + property OldFORMAPAGO : IROStrings read GetOldFORMAPAGOValue; + property OldDESCRIPCION : String read GetOldDESCRIPCIONValue; + property OldFECHAPAGO : DateTime read GetOldFECHAPAGOValue; + property OldFECHAMODIFICACION : DateTime read GetOldFECHAMODIFICACIONValue; + property OldCODIGOCONTACTO : Integer read GetOldCODIGOCONTACTOValue; + property OldNOMBRE : String read GetOldNOMBREValue; + property OldCODIGOCATEGORIA : Integer read GetOldCODIGOCATEGORIAValue; + property OldCATEGORIA : String read GetOldCATEGORIAValue; + end; + + { TPagosBusinessProcessorRules } + TPagosBusinessProcessorRules = class(TDABusinessProcessorRules, IPagos, IPagosDelta) + private + protected + { Property getters and setters } + function GetCODIGOEMPRESAValue: Integer; virtual; + function GetOldCODIGOEMPRESAValue: Integer; virtual; + procedure SetCODIGOEMPRESAValue(const aValue: Integer); virtual; + function GetCODIGOValue: Integer; virtual; + function GetOldCODIGOValue: Integer; virtual; + procedure SetCODIGOValue(const aValue: Integer); virtual; + function GetFECHAALTAValue: DateTime; virtual; + function GetOldFECHAALTAValue: DateTime; virtual; + procedure SetFECHAALTAValue(const aValue: DateTime); virtual; + function GetUSUARIOValue: String; virtual; + function GetOldUSUARIOValue: String; virtual; + procedure SetUSUARIOValue(const aValue: String); virtual; + function GetCUENTAValue: Integer; virtual; + function GetOldCUENTAValue: Integer; virtual; + procedure SetCUENTAValue(const aValue: Integer); virtual; + function GetIMPORTEValue: Currency; virtual; + function GetOldIMPORTEValue: Currency; virtual; + procedure SetIMPORTEValue(const aValue: Currency); virtual; + function GetFORMAPAGOValue: IROStrings; virtual; + function GetOldFORMAPAGOValue: IROStrings; virtual; + procedure SetFORMAPAGOValue(const aValue: IROStrings); virtual; + function GetDESCRIPCIONValue: String; virtual; + function GetOldDESCRIPCIONValue: String; virtual; + procedure SetDESCRIPCIONValue(const aValue: String); virtual; + function GetFECHAPAGOValue: DateTime; virtual; + function GetOldFECHAPAGOValue: DateTime; virtual; + procedure SetFECHAPAGOValue(const aValue: DateTime); virtual; + function GetFECHAMODIFICACIONValue: DateTime; virtual; + function GetOldFECHAMODIFICACIONValue: DateTime; virtual; + procedure SetFECHAMODIFICACIONValue(const aValue: DateTime); virtual; + function GetCODIGOCONTACTOValue: Integer; virtual; + function GetOldCODIGOCONTACTOValue: Integer; virtual; + procedure SetCODIGOCONTACTOValue(const aValue: Integer); virtual; + function GetNOMBREValue: String; virtual; + function GetOldNOMBREValue: String; virtual; + procedure SetNOMBREValue(const aValue: String); virtual; + function GetCODIGOCATEGORIAValue: Integer; virtual; + function GetOldCODIGOCATEGORIAValue: Integer; virtual; + procedure SetCODIGOCATEGORIAValue(const aValue: Integer); virtual; + function GetCATEGORIAValue: String; virtual; + function GetOldCATEGORIAValue: String; virtual; + procedure SetCATEGORIAValue(const aValue: String); virtual; + + { Properties } + property CODIGOEMPRESA : Integer read GetCODIGOEMPRESAValue write SetCODIGOEMPRESAValue; + property OldCODIGOEMPRESA : Integer read GetOldCODIGOEMPRESAValue; + property CODIGO : Integer read GetCODIGOValue write SetCODIGOValue; + property OldCODIGO : Integer read GetOldCODIGOValue; + property FECHAALTA : DateTime read GetFECHAALTAValue write SetFECHAALTAValue; + property OldFECHAALTA : DateTime read GetOldFECHAALTAValue; + property USUARIO : String read GetUSUARIOValue write SetUSUARIOValue; + property OldUSUARIO : String read GetOldUSUARIOValue; + property CUENTA : Integer read GetCUENTAValue write SetCUENTAValue; + property OldCUENTA : Integer read GetOldCUENTAValue; + property IMPORTE : Currency read GetIMPORTEValue write SetIMPORTEValue; + property OldIMPORTE : Currency read GetOldIMPORTEValue; + property FORMAPAGO : IROStrings read GetFORMAPAGOValue write SetFORMAPAGOValue; + property OldFORMAPAGO : IROStrings read GetOldFORMAPAGOValue; + property DESCRIPCION : String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + property OldDESCRIPCION : String read GetOldDESCRIPCIONValue; + property FECHAPAGO : DateTime read GetFECHAPAGOValue write SetFECHAPAGOValue; + property OldFECHAPAGO : DateTime read GetOldFECHAPAGOValue; + property FECHAMODIFICACION : DateTime read GetFECHAMODIFICACIONValue write SetFECHAMODIFICACIONValue; + property OldFECHAMODIFICACION : DateTime read GetOldFECHAMODIFICACIONValue; + property CODIGOCONTACTO : Integer read GetCODIGOCONTACTOValue write SetCODIGOCONTACTOValue; + property OldCODIGOCONTACTO : Integer read GetOldCODIGOCONTACTOValue; + property NOMBRE : String read GetNOMBREValue write SetNOMBREValue; + property OldNOMBRE : String read GetOldNOMBREValue; + property CODIGOCATEGORIA : Integer read GetCODIGOCATEGORIAValue write SetCODIGOCATEGORIAValue; + property OldCODIGOCATEGORIA : Integer read GetOldCODIGOCATEGORIAValue; + property CATEGORIA : String read GetCATEGORIAValue write SetCATEGORIAValue; + property OldCATEGORIA : String read GetOldCATEGORIAValue; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + + { IRefresh_PagosDelta } + IRefresh_PagosDelta = interface(IRefresh_Pagos) + ['{3A452B1A-45BD-4837-8F96-86D8F5B8F80E}'] + { Property getters and setters } + function GetOldCODIGOEMPRESAValue : Integer; + function GetOldCODIGOValue : Integer; + function GetOldFECHAALTAValue : DateTime; + function GetOldUSUARIOValue : String; + function GetOldCUENTAValue : Integer; + function GetOldIMPORTEValue : Currency; + function GetOldFORMAPAGOValue : IROStrings; + function GetOldDESCRIPCIONValue : String; + function GetOldFECHAPAGOValue : DateTime; + function GetOldFECHAMODIFICACIONValue : DateTime; + function GetOldCODIGOCONTACTOValue : Integer; + function GetOldNOMBREValue : String; + function GetOldCODIGOCATEGORIAValue : Integer; + function GetOldCATEGORIAValue : String; + + { Properties } + property OldCODIGOEMPRESA : Integer read GetOldCODIGOEMPRESAValue; + property OldCODIGO : Integer read GetOldCODIGOValue; + property OldFECHAALTA : DateTime read GetOldFECHAALTAValue; + property OldUSUARIO : String read GetOldUSUARIOValue; + property OldCUENTA : Integer read GetOldCUENTAValue; + property OldIMPORTE : Currency read GetOldIMPORTEValue; + property OldFORMAPAGO : IROStrings read GetOldFORMAPAGOValue; + property OldDESCRIPCION : String read GetOldDESCRIPCIONValue; + property OldFECHAPAGO : DateTime read GetOldFECHAPAGOValue; + property OldFECHAMODIFICACION : DateTime read GetOldFECHAMODIFICACIONValue; + property OldCODIGOCONTACTO : Integer read GetOldCODIGOCONTACTOValue; + property OldNOMBRE : String read GetOldNOMBREValue; + property OldCODIGOCATEGORIA : Integer read GetOldCODIGOCATEGORIAValue; + property OldCATEGORIA : String read GetOldCATEGORIAValue; + end; + + { TRefresh_PagosBusinessProcessorRules } + TRefresh_PagosBusinessProcessorRules = class(TDABusinessProcessorRules, IRefresh_Pagos, IRefresh_PagosDelta) + private + protected + { Property getters and setters } + function GetCODIGOEMPRESAValue: Integer; virtual; + function GetOldCODIGOEMPRESAValue: Integer; virtual; + procedure SetCODIGOEMPRESAValue(const aValue: Integer); virtual; + function GetCODIGOValue: Integer; virtual; + function GetOldCODIGOValue: Integer; virtual; + procedure SetCODIGOValue(const aValue: Integer); virtual; + function GetFECHAALTAValue: DateTime; virtual; + function GetOldFECHAALTAValue: DateTime; virtual; + procedure SetFECHAALTAValue(const aValue: DateTime); virtual; + function GetUSUARIOValue: String; virtual; + function GetOldUSUARIOValue: String; virtual; + procedure SetUSUARIOValue(const aValue: String); virtual; + function GetCUENTAValue: Integer; virtual; + function GetOldCUENTAValue: Integer; virtual; + procedure SetCUENTAValue(const aValue: Integer); virtual; + function GetIMPORTEValue: Currency; virtual; + function GetOldIMPORTEValue: Currency; virtual; + procedure SetIMPORTEValue(const aValue: Currency); virtual; + function GetFORMAPAGOValue: IROStrings; virtual; + function GetOldFORMAPAGOValue: IROStrings; virtual; + procedure SetFORMAPAGOValue(const aValue: IROStrings); virtual; + function GetDESCRIPCIONValue: String; virtual; + function GetOldDESCRIPCIONValue: String; virtual; + procedure SetDESCRIPCIONValue(const aValue: String); virtual; + function GetFECHAPAGOValue: DateTime; virtual; + function GetOldFECHAPAGOValue: DateTime; virtual; + procedure SetFECHAPAGOValue(const aValue: DateTime); virtual; + function GetFECHAMODIFICACIONValue: DateTime; virtual; + function GetOldFECHAMODIFICACIONValue: DateTime; virtual; + procedure SetFECHAMODIFICACIONValue(const aValue: DateTime); virtual; + function GetCODIGOCONTACTOValue: Integer; virtual; + function GetOldCODIGOCONTACTOValue: Integer; virtual; + procedure SetCODIGOCONTACTOValue(const aValue: Integer); virtual; + function GetNOMBREValue: String; virtual; + function GetOldNOMBREValue: String; virtual; + procedure SetNOMBREValue(const aValue: String); virtual; + function GetCODIGOCATEGORIAValue: Integer; virtual; + function GetOldCODIGOCATEGORIAValue: Integer; virtual; + procedure SetCODIGOCATEGORIAValue(const aValue: Integer); virtual; + function GetCATEGORIAValue: String; virtual; + function GetOldCATEGORIAValue: String; virtual; + procedure SetCATEGORIAValue(const aValue: String); virtual; + + { Properties } + property CODIGOEMPRESA : Integer read GetCODIGOEMPRESAValue write SetCODIGOEMPRESAValue; + property OldCODIGOEMPRESA : Integer read GetOldCODIGOEMPRESAValue; + property CODIGO : Integer read GetCODIGOValue write SetCODIGOValue; + property OldCODIGO : Integer read GetOldCODIGOValue; + property FECHAALTA : DateTime read GetFECHAALTAValue write SetFECHAALTAValue; + property OldFECHAALTA : DateTime read GetOldFECHAALTAValue; + property USUARIO : String read GetUSUARIOValue write SetUSUARIOValue; + property OldUSUARIO : String read GetOldUSUARIOValue; + property CUENTA : Integer read GetCUENTAValue write SetCUENTAValue; + property OldCUENTA : Integer read GetOldCUENTAValue; + property IMPORTE : Currency read GetIMPORTEValue write SetIMPORTEValue; + property OldIMPORTE : Currency read GetOldIMPORTEValue; + property FORMAPAGO : IROStrings read GetFORMAPAGOValue write SetFORMAPAGOValue; + property OldFORMAPAGO : IROStrings read GetOldFORMAPAGOValue; + property DESCRIPCION : String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + property OldDESCRIPCION : String read GetOldDESCRIPCIONValue; + property FECHAPAGO : DateTime read GetFECHAPAGOValue write SetFECHAPAGOValue; + property OldFECHAPAGO : DateTime read GetOldFECHAPAGOValue; + property FECHAMODIFICACION : DateTime read GetFECHAMODIFICACIONValue write SetFECHAMODIFICACIONValue; + property OldFECHAMODIFICACION : DateTime read GetOldFECHAMODIFICACIONValue; + property CODIGOCONTACTO : Integer read GetCODIGOCONTACTOValue write SetCODIGOCONTACTOValue; + property OldCODIGOCONTACTO : Integer read GetOldCODIGOCONTACTOValue; + property NOMBRE : String read GetNOMBREValue write SetNOMBREValue; + property OldNOMBRE : String read GetOldNOMBREValue; + property CODIGOCATEGORIA : Integer read GetCODIGOCATEGORIAValue write SetCODIGOCATEGORIAValue; + property OldCODIGOCATEGORIA : Integer read GetOldCODIGOCATEGORIAValue; + property CATEGORIA : String read GetCATEGORIAValue write SetCATEGORIAValue; + property OldCATEGORIA : String read GetOldCATEGORIAValue; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + +implementation + +uses + Variants, uROBinaryHelpers; + +{ TInformeCabeceraPagoBusinessProcessorRules } +constructor TInformeCabeceraPagoBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TInformeCabeceraPagoBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TInformeCabeceraPagoBusinessProcessorRules.GetCODIGOEMPRESAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPagoCODIGOEMPRESA]; +end; + +function TInformeCabeceraPagoBusinessProcessorRules.GetOldCODIGOEMPRESAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPagoCODIGOEMPRESA]; +end; + +procedure TInformeCabeceraPagoBusinessProcessorRules.SetCODIGOEMPRESAValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPagoCODIGOEMPRESA] := aValue; +end; + +function TInformeCabeceraPagoBusinessProcessorRules.GetCODIGOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPagoCODIGO]; +end; + +function TInformeCabeceraPagoBusinessProcessorRules.GetOldCODIGOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPagoCODIGO]; +end; + +procedure TInformeCabeceraPagoBusinessProcessorRules.SetCODIGOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPagoCODIGO] := aValue; +end; + +function TInformeCabeceraPagoBusinessProcessorRules.GetCUENTAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPagoCUENTA]; +end; + +function TInformeCabeceraPagoBusinessProcessorRules.GetOldCUENTAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPagoCUENTA]; +end; + +procedure TInformeCabeceraPagoBusinessProcessorRules.SetCUENTAValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPagoCUENTA] := aValue; +end; + +function TInformeCabeceraPagoBusinessProcessorRules.GetFECHAPAGOValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPagoFECHAPAGO]; +end; + +function TInformeCabeceraPagoBusinessProcessorRules.GetOldFECHAPAGOValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPagoFECHAPAGO]; +end; + +procedure TInformeCabeceraPagoBusinessProcessorRules.SetFECHAPAGOValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPagoFECHAPAGO] := aValue; +end; + +function TInformeCabeceraPagoBusinessProcessorRules.GetFORMAPAGOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPagoFORMAPAGO]; +end; + +function TInformeCabeceraPagoBusinessProcessorRules.GetOldFORMAPAGOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPagoFORMAPAGO]; +end; + +procedure TInformeCabeceraPagoBusinessProcessorRules.SetFORMAPAGOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPagoFORMAPAGO] := aValue; +end; + +function TInformeCabeceraPagoBusinessProcessorRules.GetDESCRIPCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPagoDESCRIPCION]; +end; + +function TInformeCabeceraPagoBusinessProcessorRules.GetOldDESCRIPCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPagoDESCRIPCION]; +end; + +procedure TInformeCabeceraPagoBusinessProcessorRules.SetDESCRIPCIONValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPagoDESCRIPCION] := aValue; +end; + +function TInformeCabeceraPagoBusinessProcessorRules.GetIMPORTEValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPagoIMPORTE]; +end; + +function TInformeCabeceraPagoBusinessProcessorRules.GetOldIMPORTEValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPagoIMPORTE]; +end; + +procedure TInformeCabeceraPagoBusinessProcessorRules.SetIMPORTEValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPagoIMPORTE] := aValue; +end; + +function TInformeCabeceraPagoBusinessProcessorRules.GetCODIGOCONTACTOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPagoCODIGOCONTACTO]; +end; + +function TInformeCabeceraPagoBusinessProcessorRules.GetOldCODIGOCONTACTOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPagoCODIGOCONTACTO]; +end; + +procedure TInformeCabeceraPagoBusinessProcessorRules.SetCODIGOCONTACTOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPagoCODIGOCONTACTO] := aValue; +end; + +function TInformeCabeceraPagoBusinessProcessorRules.GetNOMBREValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPagoNOMBRE]; +end; + +function TInformeCabeceraPagoBusinessProcessorRules.GetOldNOMBREValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPagoNOMBRE]; +end; + +procedure TInformeCabeceraPagoBusinessProcessorRules.SetNOMBREValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPagoNOMBRE] := aValue; +end; + +function TInformeCabeceraPagoBusinessProcessorRules.GetNIFCIFValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPagoNIFCIF]; +end; + +function TInformeCabeceraPagoBusinessProcessorRules.GetOldNIFCIFValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPagoNIFCIF]; +end; + +procedure TInformeCabeceraPagoBusinessProcessorRules.SetNIFCIFValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPagoNIFCIF] := aValue; +end; + +function TInformeCabeceraPagoBusinessProcessorRules.GetCALLEValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPagoCALLE]; +end; + +function TInformeCabeceraPagoBusinessProcessorRules.GetOldCALLEValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPagoCALLE]; +end; + +procedure TInformeCabeceraPagoBusinessProcessorRules.SetCALLEValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPagoCALLE] := aValue; +end; + +function TInformeCabeceraPagoBusinessProcessorRules.GetCODIGOPOSTALValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPagoCODIGOPOSTAL]; +end; + +function TInformeCabeceraPagoBusinessProcessorRules.GetOldCODIGOPOSTALValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPagoCODIGOPOSTAL]; +end; + +procedure TInformeCabeceraPagoBusinessProcessorRules.SetCODIGOPOSTALValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPagoCODIGOPOSTAL] := aValue; +end; + +function TInformeCabeceraPagoBusinessProcessorRules.GetPOBLACIONValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPagoPOBLACION]; +end; + +function TInformeCabeceraPagoBusinessProcessorRules.GetOldPOBLACIONValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPagoPOBLACION]; +end; + +procedure TInformeCabeceraPagoBusinessProcessorRules.SetPOBLACIONValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPagoPOBLACION] := aValue; +end; + +function TInformeCabeceraPagoBusinessProcessorRules.GetPROVINCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPagoPROVINCIA]; +end; + +function TInformeCabeceraPagoBusinessProcessorRules.GetOldPROVINCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPagoPROVINCIA]; +end; + +procedure TInformeCabeceraPagoBusinessProcessorRules.SetPROVINCIAValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPagoPROVINCIA] := aValue; +end; + + +{ TPagosBusinessProcessorRules } +constructor TPagosBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TPagosBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TPagosBusinessProcessorRules.GetCODIGOEMPRESAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PagosCODIGOEMPRESA]; +end; + +function TPagosBusinessProcessorRules.GetOldCODIGOEMPRESAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PagosCODIGOEMPRESA]; +end; + +procedure TPagosBusinessProcessorRules.SetCODIGOEMPRESAValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PagosCODIGOEMPRESA] := aValue; +end; + +function TPagosBusinessProcessorRules.GetCODIGOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PagosCODIGO]; +end; + +function TPagosBusinessProcessorRules.GetOldCODIGOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PagosCODIGO]; +end; + +procedure TPagosBusinessProcessorRules.SetCODIGOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PagosCODIGO] := aValue; +end; + +function TPagosBusinessProcessorRules.GetFECHAALTAValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PagosFECHAALTA]; +end; + +function TPagosBusinessProcessorRules.GetOldFECHAALTAValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PagosFECHAALTA]; +end; + +procedure TPagosBusinessProcessorRules.SetFECHAALTAValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PagosFECHAALTA] := aValue; +end; + +function TPagosBusinessProcessorRules.GetUSUARIOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PagosUSUARIO]; +end; + +function TPagosBusinessProcessorRules.GetOldUSUARIOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PagosUSUARIO]; +end; + +procedure TPagosBusinessProcessorRules.SetUSUARIOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PagosUSUARIO] := aValue; +end; + +function TPagosBusinessProcessorRules.GetCUENTAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PagosCUENTA]; +end; + +function TPagosBusinessProcessorRules.GetOldCUENTAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PagosCUENTA]; +end; + +procedure TPagosBusinessProcessorRules.SetCUENTAValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PagosCUENTA] := aValue; +end; + +function TPagosBusinessProcessorRules.GetIMPORTEValue: Currency; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PagosIMPORTE]; +end; + +function TPagosBusinessProcessorRules.GetOldIMPORTEValue: Currency; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PagosIMPORTE]; +end; + +procedure TPagosBusinessProcessorRules.SetIMPORTEValue(const aValue: Currency); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PagosIMPORTE] := aValue; +end; + +function TPagosBusinessProcessorRules.GetFORMAPAGOValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.NewValueByName[fld_PagosFORMAPAGO]; +end; + +function TPagosBusinessProcessorRules.GetOldFORMAPAGOValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.OldValueByName[fld_PagosFORMAPAGO]; +end; + +procedure TPagosBusinessProcessorRules.SetFORMAPAGOValue(const aValue: IROStrings); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PagosFORMAPAGO] := aValue.Text; +end; + +function TPagosBusinessProcessorRules.GetDESCRIPCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PagosDESCRIPCION]; +end; + +function TPagosBusinessProcessorRules.GetOldDESCRIPCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PagosDESCRIPCION]; +end; + +procedure TPagosBusinessProcessorRules.SetDESCRIPCIONValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PagosDESCRIPCION] := aValue; +end; + +function TPagosBusinessProcessorRules.GetFECHAPAGOValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PagosFECHAPAGO]; +end; + +function TPagosBusinessProcessorRules.GetOldFECHAPAGOValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PagosFECHAPAGO]; +end; + +procedure TPagosBusinessProcessorRules.SetFECHAPAGOValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PagosFECHAPAGO] := aValue; +end; + +function TPagosBusinessProcessorRules.GetFECHAMODIFICACIONValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PagosFECHAMODIFICACION]; +end; + +function TPagosBusinessProcessorRules.GetOldFECHAMODIFICACIONValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PagosFECHAMODIFICACION]; +end; + +procedure TPagosBusinessProcessorRules.SetFECHAMODIFICACIONValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PagosFECHAMODIFICACION] := aValue; +end; + +function TPagosBusinessProcessorRules.GetCODIGOCONTACTOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PagosCODIGOCONTACTO]; +end; + +function TPagosBusinessProcessorRules.GetOldCODIGOCONTACTOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PagosCODIGOCONTACTO]; +end; + +procedure TPagosBusinessProcessorRules.SetCODIGOCONTACTOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PagosCODIGOCONTACTO] := aValue; +end; + +function TPagosBusinessProcessorRules.GetNOMBREValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PagosNOMBRE]; +end; + +function TPagosBusinessProcessorRules.GetOldNOMBREValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PagosNOMBRE]; +end; + +procedure TPagosBusinessProcessorRules.SetNOMBREValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PagosNOMBRE] := aValue; +end; + +function TPagosBusinessProcessorRules.GetCODIGOCATEGORIAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PagosCODIGOCATEGORIA]; +end; + +function TPagosBusinessProcessorRules.GetOldCODIGOCATEGORIAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PagosCODIGOCATEGORIA]; +end; + +procedure TPagosBusinessProcessorRules.SetCODIGOCATEGORIAValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PagosCODIGOCATEGORIA] := aValue; +end; + +function TPagosBusinessProcessorRules.GetCATEGORIAValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PagosCATEGORIA]; +end; + +function TPagosBusinessProcessorRules.GetOldCATEGORIAValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PagosCATEGORIA]; +end; + +procedure TPagosBusinessProcessorRules.SetCATEGORIAValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PagosCATEGORIA] := aValue; +end; + + +{ TRefresh_PagosBusinessProcessorRules } +constructor TRefresh_PagosBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TRefresh_PagosBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TRefresh_PagosBusinessProcessorRules.GetCODIGOEMPRESAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_PagosCODIGOEMPRESA]; +end; + +function TRefresh_PagosBusinessProcessorRules.GetOldCODIGOEMPRESAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Refresh_PagosCODIGOEMPRESA]; +end; + +procedure TRefresh_PagosBusinessProcessorRules.SetCODIGOEMPRESAValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_PagosCODIGOEMPRESA] := aValue; +end; + +function TRefresh_PagosBusinessProcessorRules.GetCODIGOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_PagosCODIGO]; +end; + +function TRefresh_PagosBusinessProcessorRules.GetOldCODIGOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Refresh_PagosCODIGO]; +end; + +procedure TRefresh_PagosBusinessProcessorRules.SetCODIGOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_PagosCODIGO] := aValue; +end; + +function TRefresh_PagosBusinessProcessorRules.GetFECHAALTAValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_PagosFECHAALTA]; +end; + +function TRefresh_PagosBusinessProcessorRules.GetOldFECHAALTAValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Refresh_PagosFECHAALTA]; +end; + +procedure TRefresh_PagosBusinessProcessorRules.SetFECHAALTAValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_PagosFECHAALTA] := aValue; +end; + +function TRefresh_PagosBusinessProcessorRules.GetUSUARIOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_PagosUSUARIO]; +end; + +function TRefresh_PagosBusinessProcessorRules.GetOldUSUARIOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Refresh_PagosUSUARIO]; +end; + +procedure TRefresh_PagosBusinessProcessorRules.SetUSUARIOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_PagosUSUARIO] := aValue; +end; + +function TRefresh_PagosBusinessProcessorRules.GetCUENTAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_PagosCUENTA]; +end; + +function TRefresh_PagosBusinessProcessorRules.GetOldCUENTAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Refresh_PagosCUENTA]; +end; + +procedure TRefresh_PagosBusinessProcessorRules.SetCUENTAValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_PagosCUENTA] := aValue; +end; + +function TRefresh_PagosBusinessProcessorRules.GetIMPORTEValue: Currency; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_PagosIMPORTE]; +end; + +function TRefresh_PagosBusinessProcessorRules.GetOldIMPORTEValue: Currency; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Refresh_PagosIMPORTE]; +end; + +procedure TRefresh_PagosBusinessProcessorRules.SetIMPORTEValue(const aValue: Currency); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_PagosIMPORTE] := aValue; +end; + +function TRefresh_PagosBusinessProcessorRules.GetFORMAPAGOValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_PagosFORMAPAGO]; +end; + +function TRefresh_PagosBusinessProcessorRules.GetOldFORMAPAGOValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.OldValueByName[fld_Refresh_PagosFORMAPAGO]; +end; + +procedure TRefresh_PagosBusinessProcessorRules.SetFORMAPAGOValue(const aValue: IROStrings); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_PagosFORMAPAGO] := aValue.Text; +end; + +function TRefresh_PagosBusinessProcessorRules.GetDESCRIPCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_PagosDESCRIPCION]; +end; + +function TRefresh_PagosBusinessProcessorRules.GetOldDESCRIPCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Refresh_PagosDESCRIPCION]; +end; + +procedure TRefresh_PagosBusinessProcessorRules.SetDESCRIPCIONValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_PagosDESCRIPCION] := aValue; +end; + +function TRefresh_PagosBusinessProcessorRules.GetFECHAPAGOValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_PagosFECHAPAGO]; +end; + +function TRefresh_PagosBusinessProcessorRules.GetOldFECHAPAGOValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Refresh_PagosFECHAPAGO]; +end; + +procedure TRefresh_PagosBusinessProcessorRules.SetFECHAPAGOValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_PagosFECHAPAGO] := aValue; +end; + +function TRefresh_PagosBusinessProcessorRules.GetFECHAMODIFICACIONValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_PagosFECHAMODIFICACION]; +end; + +function TRefresh_PagosBusinessProcessorRules.GetOldFECHAMODIFICACIONValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Refresh_PagosFECHAMODIFICACION]; +end; + +procedure TRefresh_PagosBusinessProcessorRules.SetFECHAMODIFICACIONValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_PagosFECHAMODIFICACION] := aValue; +end; + +function TRefresh_PagosBusinessProcessorRules.GetCODIGOCONTACTOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_PagosCODIGOCONTACTO]; +end; + +function TRefresh_PagosBusinessProcessorRules.GetOldCODIGOCONTACTOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Refresh_PagosCODIGOCONTACTO]; +end; + +procedure TRefresh_PagosBusinessProcessorRules.SetCODIGOCONTACTOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_PagosCODIGOCONTACTO] := aValue; +end; + +function TRefresh_PagosBusinessProcessorRules.GetNOMBREValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_PagosNOMBRE]; +end; + +function TRefresh_PagosBusinessProcessorRules.GetOldNOMBREValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Refresh_PagosNOMBRE]; +end; + +procedure TRefresh_PagosBusinessProcessorRules.SetNOMBREValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_PagosNOMBRE] := aValue; +end; + +function TRefresh_PagosBusinessProcessorRules.GetCODIGOCATEGORIAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_PagosCODIGOCATEGORIA]; +end; + +function TRefresh_PagosBusinessProcessorRules.GetOldCODIGOCATEGORIAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Refresh_PagosCODIGOCATEGORIA]; +end; + +procedure TRefresh_PagosBusinessProcessorRules.SetCODIGOCATEGORIAValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_PagosCODIGOCATEGORIA] := aValue; +end; + +function TRefresh_PagosBusinessProcessorRules.GetCATEGORIAValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_PagosCATEGORIA]; +end; + +function TRefresh_PagosBusinessProcessorRules.GetOldCATEGORIAValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Refresh_PagosCATEGORIA]; +end; + +procedure TRefresh_PagosBusinessProcessorRules.SetCATEGORIAValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_PagosCATEGORIA] := aValue; +end; + + +initialization + RegisterBusinessProcessorRules(RID_InformeCabeceraPagoDelta, TInformeCabeceraPagoBusinessProcessorRules); + RegisterBusinessProcessorRules(RID_PagosDelta, TPagosBusinessProcessorRules); + RegisterBusinessProcessorRules(RID_Refresh_PagosDelta, TRefresh_PagosBusinessProcessorRules); + +end. diff --git a/Modulos/Pagos/Reglas/uBizPagos.pas b/Modulos/Pagos/Reglas/uBizPagos.pas new file mode 100644 index 0000000..b8d0e3e --- /dev/null +++ b/Modulos/Pagos/Reglas/uBizPagos.pas @@ -0,0 +1,312 @@ +unit uBizPagos; + +interface + +uses + uDAInterfaces, uDADataTable, schPagosClient_Intf, Classes, + DBGrids, uDBSelectionList, DB, uExceptions, Controls, uBizContacto, + uBizInformesBase; + +Const + BIZ_PAGOSCLIENTE = 'Client.PagosCliente'; + BIZ_PAGOSPROVEEDOR = 'Client.PagosProveedor'; + +type + + IBizPagos = interface(IPagos) + ['{39E062C3-C59D-4E98-87A8-6C599B78CB2D}'] + function Show: TModalResult; + procedure ShowAll; + procedure Preview; + procedure Print; + + function GetContacto: IBizContacto; + procedure SetContacto(Value: IBizContacto); + property Contacto: IBizContacto read GetContacto write SetContacto; + end; + + IBizPagosProveedor = interface(IBizPagos) + ['{DBF8F6EE-84F4-49B7-B57D-E8811EF66FC0}'] + end; + + IBizPagosCliente = interface(IBizPagos) + ['{E587258D-ED30-4D76-AC43-4E0E6B00059A}'] + end; + + TBizPagosDataTableRules = class(TPagosDataTableRules, IBizPagos, + IApplyUpdateFailedException, ISelectedRowList, IBizInformesAware) + private + FContacto: IBizContacto; + FSelectedRows : TSelectedRowList; + procedure BeforeApplyUpdates(Sender: TDADataTable; const Delta: IDADelta); + procedure anadirAsiento; + protected + function GetContacto: IBizContacto; + procedure SetContacto(Value: IBizContacto); + function GetSelectedRows : TSelectedRowList; virtual; + procedure OnNewRecord(Sender: TDADataTable); override; + procedure ShowApplyUpdateFailed (const Error: EDAApplyUpdateFailed); virtual; + procedure BeforeDelete(Sender: TDADataTable); override; + public + property Contacto: IBizContacto read GetContacto write SetContacto; + property SelectedRows : TSelectedRowList read GetSelectedRows; + + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + function Show: TModalResult; virtual; + procedure ShowAll; virtual; + procedure Preview; virtual; + procedure Print; virtual; + end; + + TBizPagosProveedor = class(TBizPagosDataTableRules, IBizPagosProveedor) + private + procedure OnPostError(DataTable: TDADataTable; Error: EDatabaseError; + var Action: TDataAction); override; + public + function Show: TModalResult; override; + end; + + TBizPagosCliente = class(TBizPagosDataTableRules, IBizPagosCliente) + private + procedure OnPostError(DataTable: TDADataTable; Error: EDatabaseError; + var Action: TDataAction); override; + public + function Show: TModalResult; override; + end; + + procedure ValidarPago (const APago : IBizPagos); + +implementation + +uses + Windows, Forms, Dialogs, uDACDSDataTable, SysUtils, Variants, DateUtils, + uDataModuleBase, uDataModuleUsuarios, uEditorUtils, uDataModulePagos, + uDataModuleContactos, uDataModuleAsientos, uBizAsientos; + + +procedure ValidarPago (const APago : IBizPagos); +begin + if APago.Cuenta = 0 then + raise Exception.Create('El pago debe tener una cuenta destino'); +end; + + +{ TBizPagosDataTableRules } + +{ +************************** TBizPagosDataTableRules ************************** +} + +procedure TBizPagosDataTableRules.OnNewRecord(Sender: TDADataTable); +begin + inherited; + CODIGOEMPRESA := dmBase.CodigoEmpresa; + USUARIO := dmUsuarios.LoginInfo.UserID; + FECHAALTA := Date; + FECHAPAGO := Date; + IMPORTE := 0; + CODIGO := dmPagos.GetNextAutoinc; +end; + +function TBizPagosDataTableRules.Show: TModalResult; +begin + Result := mrCancel; +end; + +procedure TBizPagosDataTableRules.Preview; +begin + dmPagos.Preview(Self.CODIGO); +end; + +procedure TBizPagosDataTableRules.ShowApplyUpdateFailed(const Error: EDAApplyUpdateFailed); +begin + if (Pos(AUF_FKVIOLATION, Error.Message) > 0) then + MessageBox(0, 'No se puede borrar este almacén porque tiene articulos o está asociado al destino de algún pedido', 'Atención', MB_ICONWARNING or MB_OK); +end; + +constructor TBizPagosDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; + FContacto := NIL; + FSelectedRows := TSelectedRowList.Create(aDataTable); + aDataTable.OnBeforeApplyUpdates := BeforeApplyUpdates; +end; + +destructor TBizPagosDataTableRules.Destroy; +begin + FContacto := NIL; + FSelectedRows.Free; + inherited; +end; + +procedure TBizPagosDataTableRules.ShowAll; +begin +// ShowEditor(IBizProveedor, Self, etItems); +end; + +procedure TBizPagosDataTableRules.BeforeApplyUpdates(Sender: TDADataTable; const Delta: IDADelta); +var + i, x: Integer; +begin + for i := 0 to Delta.Count - 1 do + case Delta.Changes[i].ChangeType of + ctInsert, ctUpdate: begin + ValidarPago(Self); + //Solo añadiremos el asiento si inserta un pago nuevo + //o modifica el pago el campo cuenta + if (Delta.Changes[i].OldValueByName[fld_PagosCUENTA] <> Delta.Changes[i].NewValueByName[fld_PagosCUENTA]) then + anadirAsiento; + end; +// ctDelete : + end; +end; + +procedure TBizPagosDataTableRules.BeforeDelete(Sender: TDADataTable); +begin + inherited; +{ if not dmPagos.PuedoEliminarAlmacen(CODIGO) then + raise Exception.Create('No se puede borrar este almacén porque tiene articulos o está asociado al destino de algún pedido'); +} +end; + +function TBizPagosDataTableRules.GetContacto: IBizContacto; +begin + if not Assigned(FContacto) then + begin + if Supports(DataTable, IBizPagosCliente) then + FContacto := dmContactos.GetCliente(CODIGOCONTACTO) + else if Supports(DataTable, IBizPagosProveedor) then + FContacto := dmContactos.GetProveedor(CODIGOCONTACTO) + else raise Exception.Create('Interfaz del pago no soportada'); + end + else + if (CODIGOCONTACTO <> FContacto.Codigo) and + not (FContacto.DataTable.State in dsEditModes) then + dmContactos.GetContacto(FContacto, CODIGOCONTACTO); + + if not FContacto.DataTable.Active then + FContacto.DataTable.Active := True; + + Result := FContacto; +end; + +procedure TBizPagosDataTableRules.SetContacto(Value: IBizContacto); +var + bEnEdicion : Boolean; +begin + bEnEdicion := (DataTable.State in dsEditModes); + if not bEnEdicion then + Edit; + FContacto := Value; + if Assigned(FContacto) then + begin + CODIGOCONTACTO := FContacto.CODIGO; + Post; + if bEnEdicion then + Edit; + end +end; + +function TBizPagosDataTableRules.GetSelectedRows: TSelectedRowList; +begin + Result := FSelectedRows; +end; + +{ TBizPagosCliente } + +procedure TBizPagosCliente.OnPostError(DataTable: TDADataTable; + Error: EDatabaseError; var Action: TDataAction); +begin + inherited; + Action := daAbort; + if (Pos(AUF_HAVEVALUE, Error.Message) > 0) then + begin + if (Pos('contacto', Error.Message) > 0) then + MessageBox(0, 'Debe indicar el cliente', 'Atención', MB_ICONWARNING or MB_OK) + else + raise Error; + end + else + raise Error; +end; + +function TBizPagosCliente.Show: TModalResult; +begin + Result := inherited Show; + Result := ShowEditor(IBizPagosCliente, Self, etItem); +end; + +{ TBizPagosProveedor } + +procedure TBizPagosProveedor.OnPostError(DataTable: TDADataTable; + Error: EDatabaseError; var Action: TDataAction); +begin + inherited; + Action := daAbort; + if (Pos(AUF_HAVEVALUE, Error.Message) > 0) then + begin + if (Pos('contacto', Error.Message) > 0) then + MessageBox(0, 'Debe indicar el proveedor', 'Atención', MB_ICONWARNING or MB_OK) + else + raise Error; + end + else + raise Error; +end; + +function TBizPagosProveedor.Show: TModalResult; +begin + Result := inherited Show; + Result := ShowEditor(IBizPagosProveedor, Self, etItem); +end; + +procedure TBizPagosDataTableRules.Print; +begin + dmPagos.Print(Self.CODIGO); +end; + +procedure TBizPagosDataTableRules.anadirAsiento; +var + DatosAsiento : TDatosAsiento; + Cadena: String; +begin + if (Application.MessageBox('¿Desea añadir una entrada en la cuenta asociada al cobro/pago?', 'Atención', MB_YESNO) = IDYES) then + begin + DatosAsiento := TDatosAsiento.Create; + with DatosAsiento do + begin + CodigoCuenta := Self.CUENTA; + FechaAsiento := Self.FECHAPAGO; + CodigoPago := Self.CODIGO; + + if Supports(DataTable, IBizPagosCliente) then + begin + if Self.IMPORTE < 0 + then Cadena := '[Abono de cliente: ' + Self.CONTACTO.NOMBRE + ']: ' + else Cadena := '[Cobro de cliente: ' + Self.CONTACTO.NOMBRE + ']: '; + Descripcion := Cadena + Self.DESCRIPCION; + Importe := Self.IMPORTE; + end + else if Supports(DataTable, IBizPagosProveedor) then + begin + if Self.IMPORTE < 0 + then Cadena := '[Abono de proveedor: ' + Self.CONTACTO.NOMBRE + ']: ' + else Cadena := '[Pago a proveedor: ' + Self.CONTACTO.NOMBRE + ']: '; + Descripcion := Cadena + Self.DESCRIPCION; + Importe := (-1) * Self.IMPORTE; + end + else raise Exception.Create('Interfaz del pago no soportada'); + end; + dmAsientos.anadirAsiento(DatosAsiento); + DatosAsiento.Free; + end; +end; + +initialization + RegisterDataTableRules(BIZ_PAGOSPROVEEDOR, TBizPagosProveedor); + RegisterDataTableRules(BIZ_PAGOSCLIENTE, TBizPagosCliente); + +finalization + +end. diff --git a/Modulos/Pagos/Servidor/srvPagos_Impl.ddp b/Modulos/Pagos/Servidor/srvPagos_Impl.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Pagos/Servidor/srvPagos_Impl.ddp differ diff --git a/Modulos/Pagos/Servidor/srvPagos_Impl.dfm b/Modulos/Pagos/Servidor/srvPagos_Impl.dfm new file mode 100644 index 0000000..e615c4a --- /dev/null +++ b/Modulos/Pagos/Servidor/srvPagos_Impl.dfm @@ -0,0 +1,1083 @@ +object srvPagos: TsrvPagos + OldCreateOrder = True + RequiresSession = True + SessionManager = dmServer.SessionManager + AcquireConnection = True + ConnectionName = 'IBX' + ServiceSchema = schPagos + ServiceAdapter = DABINAdapter + Left = 345 + Top = 452 + Height = 300 + Width = 300 + object schPagos: TDASchema + ConnectionManager = dmServer.ConnectionManager + DataDictionary = dmServer.DataDictionary + Diagrams = dmServer.DADiagrams + Datasets = < + item + Params = < + item + Name = 'CODIGO' + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + SQL = + 'SELECT PAGOS.CODIGOEMPRESA, PAGOS.CODIGO, PAGOS.CUENTA, PAGOS.FE' + + 'CHAPAGO,'#10' PAGOS.FORMAPAGO, PAGOS.DESCRIPCION, PAGOS.IMPORT' + + 'E, PAGOS.CODIGOCONTACTO,'#10' CON.NOMBRE, CON.NIFCIF, CON.CALL' + + 'E, CON.CODIGOPOSTAL, CON.POBLACION,'#10' CON.PROVINCIA'#10#10'FROM P' + + 'AGOS LEFT JOIN CONTACTOS CON ON (PAGOS.CODIGOCONTACTO = CON.CODI' + + 'GO)'#10#10'WHERE PAGOS.CODIGO = :CODIGO' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'CODIGOEMPRESA' + TableField = 'CODIGOEMPRESA' + end + item + DatasetField = 'CODIGO' + TableField = 'CODIGO' + end + item + DatasetField = 'CUENTA' + TableField = 'CUENTA' + end + item + DatasetField = 'FECHAPAGO' + TableField = 'FECHAPAGO' + end + item + DatasetField = 'FORMAPAGO' + TableField = 'FORMAPAGO' + end + item + DatasetField = 'DESCRIPCION' + TableField = 'DESCRIPCION' + end + item + DatasetField = 'IMPORTE' + TableField = 'IMPORTE' + end + item + DatasetField = 'CODIGOCONTACTO' + TableField = 'CODIGOCONTACTO' + end + item + DatasetField = 'NOMBRE' + TableField = 'NOMBRE' + end + item + DatasetField = 'NIFCIF' + TableField = 'NIFCIF' + end + item + DatasetField = 'CALLE' + TableField = 'CALLE' + end + item + DatasetField = 'CODIGOPOSTAL' + TableField = 'CODIGOPOSTAL' + end + item + DatasetField = 'POBLACION' + TableField = 'POBLACION' + end + item + DatasetField = 'PROVINCIA' + TableField = 'PROVINCIA' + end> + end> + Name = 'InformeCabeceraPago' + Fields = < + item + Name = 'CODIGOEMPRESA' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGO' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CUENTA' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHAPAGO' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FORMAPAGO' + DataType = datString + Size = 50 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'DESCRIPCION' + DataType = datString + Size = 2000 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTE' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOCONTACTO' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NOMBRE' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NIFCIF' + DataType = datString + Size = 10 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CALLE' + DataType = datString + Size = 150 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOPOSTAL' + DataType = datString + Size = 5 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'POBLACION' + DataType = datString + Size = 40 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PROVINCIA' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end + item + Params = <> + Statements = < + item + Connection = 'IBX' + TargetTable = 'PAGOS' + SQL = + 'SELECT '#10' PAGOS.CODIGOEMPRESA, PAGOS.CODIGO, PAGOS.FECHAALTA, ' + + 'PAGOS.USUARIO,'#10' PAGOS.CUENTA, PAGOS.IMPORTE, PAGOS.FORMAPAGO,' + + ' PAGOS.DESCRIPCION,'#10' PAGOS.FECHAPAGO, PAGOS.FECHAMODIFICACION' + + ', PAGOS.CODIGOCONTACTO,'#10' CON.NOMBRE, CC.CODIGOCATEGORIA, CAT.' + + 'DESCRIPCION as CATEGORIA'#10' '#10'FROM PAGOS'#10'LEFT JOIN CONTACTOS CON' + + ' ON (PAGOS.CODIGOCONTACTO = CON.CODIGO)'#10'LEFT JOIN CONTACTOSCATEG' + + 'ORIAS CC ON (CON.CODIGO = CC.CODIGOCONTACTO)'#10'LEFT JOIN CATEGORIA' + + 'S CAT ON (CC.CODIGOCATEGORIA = CAT.CODIGO)'#10#10'ORDER BY PAGOS.FECHA' + + 'PAGO DESC, PAGOS.FECHAALTA DESC' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'CODIGOEMPRESA' + TableField = 'CODIGOEMPRESA' + end + item + DatasetField = 'CODIGO' + TableField = 'CODIGO' + end + item + DatasetField = 'FECHAALTA' + TableField = 'FECHAALTA' + end + item + DatasetField = 'USUARIO' + TableField = 'USUARIO' + end + item + DatasetField = 'IMPORTE' + TableField = 'IMPORTE' + end + item + DatasetField = 'FORMAPAGO' + TableField = 'FORMAPAGO' + end + item + DatasetField = 'DESCRIPCION' + TableField = 'DESCRIPCION' + end + item + DatasetField = 'CODIGOCONTACTO' + TableField = 'CODIGOCONTACTO' + end + item + DatasetField = 'FECHAPAGO' + TableField = 'FECHAPAGO' + end + item + DatasetField = 'FECHAMODIFICACION' + TableField = 'FECHAMODIFICACION' + end + item + DatasetField = 'NOMBRE' + TableField = 'NOMBRE' + end + item + DatasetField = 'CODIGOCATEGORIA' + TableField = 'CODIGOCATEGORIA' + end + item + DatasetField = 'CATEGORIA' + TableField = 'CATEGORIA' + end + item + DatasetField = 'CUENTA' + TableField = 'CUENTA' + end> + end> + Name = 'Pagos' + Fields = < + item + Name = 'CODIGOEMPRESA' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'CODIGOEMPRESA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGO' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'CODIGO' + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHAALTA' + DataType = datDateTime + BlobType = dabtUnknown + DictionaryEntry = 'FECHAALTA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'USUARIO' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DictionaryEntry = 'USUARIO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CUENTA' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'C'#243'digo' + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTE' + DataType = datCurrency + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Importe total' + Alignment = taRightJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FORMAPAGO' + DataType = datMemo + BlobType = dabtUnknown + DictionaryEntry = 'FORMAPAGO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'DESCRIPCION' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DictionaryEntry = 'DESCRIPCION' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHAPAGO' + DataType = datDateTime + BlobType = dabtUnknown + DictionaryEntry = 'FECHAPAGO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHAMODIFICACION' + DataType = datDateTime + BlobType = dabtUnknown + DictionaryEntry = 'FECHAMODIFICACION' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOCONTACTO' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'CODIGOCONTACTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NOMBRE' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOCATEGORIA' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CATEGORIA' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end + item + Params = < + item + Name = 'CODIGO' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'PAGOS' + SQL = + 'SELECT '#10' PAGOS.CODIGOEMPRESA, PAGOS.CODIGO, PAGOS.FECHAALTA, ' + + 'PAGOS.USUARIO,'#10' PAGOS.CUENTA, PAGOS.IMPORTE, PAGOS.FORMAPAGO,' + + ' PAGOS.DESCRIPCION,'#10' PAGOS.FECHAPAGO, PAGOS.FECHAMODIFICACION' + + ', PAGOS.CODIGOCONTACTO,'#10' CON.NOMBRE, CC.CODIGOCATEGORIA, CAT.' + + 'DESCRIPCION as CATEGORIA'#10' '#10'FROM PAGOS'#10'LEFT JOIN CONTACTOS CON' + + ' ON (PAGOS.CODIGOCONTACTO = CON.CODIGO)'#10'LEFT JOIN CONTACTOSCATEG' + + 'ORIAS CC ON (CON.CODIGO = CC.CODIGOCONTACTO)'#10'LEFT JOIN CATEGORIA' + + 'S CAT ON (CC.CODIGOCATEGORIA = CAT.CODIGO)'#10#10'WHERE PAGOS.CODIGO =' + + ' :CODIGO'#10#10'ORDER BY PAGOS.FECHAPAGO DESC, PAGOS.FECHAALTA DESC' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'CODIGOEMPRESA' + TableField = 'CODIGOEMPRESA' + end + item + DatasetField = 'CODIGO' + TableField = 'CODIGO' + end + item + DatasetField = 'FECHAALTA' + TableField = 'FECHAALTA' + end + item + DatasetField = 'USUARIO' + TableField = 'USUARIO' + end + item + DatasetField = 'IMPORTE' + TableField = 'IMPORTE' + end + item + DatasetField = 'FORMAPAGO' + TableField = 'FORMAPAGO' + end + item + DatasetField = 'DESCRIPCION' + TableField = 'DESCRIPCION' + end + item + DatasetField = 'CODIGOCONTACTO' + TableField = 'CODIGOCONTACTO' + end + item + DatasetField = 'FECHAPAGO' + TableField = 'FECHAPAGO' + end + item + DatasetField = 'FECHAMODIFICACION' + TableField = 'FECHAMODIFICACION' + end + item + DatasetField = 'NOMBRE' + TableField = 'NOMBRE' + end + item + DatasetField = 'CODIGOCATEGORIA' + TableField = 'CODIGOCATEGORIA' + end + item + DatasetField = 'CATEGORIA' + TableField = 'CATEGORIA' + end + item + DatasetField = 'CUENTA' + TableField = 'CUENTA' + end> + end> + Name = 'Refresh_Pagos' + Fields = < + item + Name = 'CODIGOEMPRESA' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'CODIGOEMPRESA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGO' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'CODIGO' + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHAALTA' + DataType = datDateTime + BlobType = dabtUnknown + DictionaryEntry = 'FECHAALTA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'USUARIO' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DictionaryEntry = 'USUARIO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CUENTA' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'CODIGO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTE' + DataType = datCurrency + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Importe total' + Alignment = taRightJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FORMAPAGO' + DataType = datMemo + BlobType = dabtUnknown + DictionaryEntry = 'FORMAPAGO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'DESCRIPCION' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DictionaryEntry = 'DESCRIPCION' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHAPAGO' + DataType = datDateTime + BlobType = dabtUnknown + DictionaryEntry = 'FECHAPAGO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHAMODIFICACION' + DataType = datDateTime + BlobType = dabtUnknown + DictionaryEntry = 'FECHAMODIFICACION' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOCONTACTO' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'CODIGOCONTACTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NOMBRE' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOCATEGORIA' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CATEGORIA' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end> + Commands = < + item + Params = < + item + Name = 'CODIGOEMPRESA' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'CODIGO' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'USUARIO' + DataType = datString + Size = 100 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'CUENTA' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'IMPORTE' + DataType = datFloat + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'FORMAPAGO' + DataType = datString + Size = 50 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'DESCRIPCION' + DataType = datString + Size = 2000 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'CODIGOCONTACTO' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'FECHAPAGO' + DataType = datDateTime + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'PAGOS' + SQL = + 'INSERT'#10' INTO PAGOS'#10' (CODIGOEMPRESA, CODIGO, FECHAALTA, USUAR' + + 'IO, CUENTA,'#10' IMPORTE, FORMAPAGO, DESCRIPCION, CODIGOCONTACTO' + + ', FECHAPAGO, '#10' FECHAMODIFICACION)'#10' VALUES'#10' (:CODIGOEMPRE' + + 'SA, :CODIGO, current_timestamp, :USUARIO, :CUENTA,'#10' :IMPORTE' + + ', :FORMAPAGO, :DESCRIPCION, :CODIGOCONTACTO, '#10' :FECHAPAGO, c' + + 'urrent_timestamp)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Insert_Pagos' + end + item + Params = < + item + Name = 'OLD_CODIGO' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'PAGOS' + SQL = 'DELETE '#10' FROM'#10' PAGOS'#10' WHERE'#10' (CODIGO = :OLD_CODIGO)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Delete_Pagos' + end + item + Params = < + item + Name = 'CODIGOEMPRESA' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'CODIGO' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'CUENTA' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'IMPORTE' + DataType = datFloat + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'FORMAPAGO' + DataType = datString + Size = 50 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'DESCRIPCION' + DataType = datString + Size = 2000 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'CODIGOCONTACTO' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'FECHAPAGO' + DataType = datDateTime + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'OLD_CODIGO' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'PAGOS' + SQL = + 'UPDATE PAGOS'#10' SET '#10' CODIGOEMPRESA = :CODIGOEMPRESA, '#10' COD' + + 'IGO = :CODIGO, '#10' CUENTA = :CUENTA,'#10' IMPORTE = :IMPORTE, '#10' ' + + ' FORMAPAGO = :FORMAPAGO, '#10' DESCRIPCION = :DESCRIPCION, '#10' ' + + ' CODIGOCONTACTO = :CODIGOCONTACTO, '#10' FECHAPAGO = :FECHAPAGO, ' + + #10' FECHAMODIFICACION = current_timestamp'#10' WHERE'#10' (CODIGO =' + + ' :OLD_CODIGO)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Update_Pagos' + end> + RelationShips = <> + UpdateRules = <> + Left = 40 + Top = 16 + end + object bpPagos: TDABusinessProcessor + Schema = schPagos + InsertCommandName = 'Insert_Pagos' + DeleteCommandName = 'Delete_Pagos' + UpdateCommandName = 'Update_Pagos' + RefreshDatasetName = 'Refresh_Pagos' + ReferencedDataset = 'Pagos' + ProcessorOptions = [poPrepareCommands] + UpdateMode = updWhereKeyOnly + Left = 128 + Top = 16 + end + object frxReport1: TfrxReport + Version = '3.15' + DotMatrixReport = False + EngineOptions.DoublePass = True + IniFile = '\Software\Fast Reports' + PreviewOptions.Buttons = [pbPrint, pbLoad, pbSave, pbExport, pbZoom, pbFind, pbOutline, pbPageSetup, pbTools, pbEdit, pbNavigator] + PreviewOptions.OutlineWidth = 180 + PreviewOptions.Zoom = 1.000000000000000000 + PrintOptions.Printer = 'Default' + ReportOptions.CreateDate = 37871.995398692100000000 + ReportOptions.Description.Strings = ( + 'Demonstrates how to create simple list report.') + ReportOptions.LastChange = 38755.499605821760000000 + 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( + );' + 'end;' + '' + 'procedure BandaDetallesOnBeforePrint(Sender: TfrxComponent);' + 'begin' + ' case of' + ' '#39'C'#39': begin' + ' MemoCampo12.Style := '#39'Concepto normal'#39';' + ' MemoCampo2.Style := '#39'Concepto normal'#39';' + ' MemoCampo3.Style := '#39'Concepto normal'#39';' + ' MemoCampo4.Style := '#39'Concepto normal'#39';' + ' end;' + ' '#39'S'#39': begin' + ' MemoCampo12.Style := '#39'Concepto subtotal'#39';' + ' MemoCampo2.Style := '#39'Concepto subtotal'#39';' + ' MemoCampo3.Style := '#39'Concepto subtotal'#39';' + ' MemoCampo4.Style := '#39'Concepto subtotal'#39';' + ' end;' + ' '#39'T'#39': begin' + ' MemoCampo12.Style := '#39'Concepto titulo'#39';' + ' MemoCampo2.Style := '#39'Concepto titulo'#39';' + ' MemoCampo3.Style := '#39'Concepto titulo'#39';' + ' MemoCampo4.Style := '#39'Concepto titulo'#39';' + ' end;' + ' end;' + 'end;' + '' + 'procedure ReportSummary1OnBeforePrint(Sender: TfrxComponent);' + 'begin' + + ' Engine.CurY := Engine.CurY + Engine.FreeSpace - ReportSum' + + 'mary1.Height - 1;' + 'end;' + '' + 'begin' + '' + 'end.') + StoreInDFM = False + Left = 48 + Top = 160 + Datasets = < + item + DataSet = frxDBCabecera + DataSetName = 'frxDBCabecera' + end + item + end> + Variables = <> + Style = < + item + Name = 'Concepto normal' + Color = clNone + Font.Charset = ANSI_CHARSET + Font.Color = clWindowText + Font.Height = -13 + Font.Name = 'Tahoma' + Font.Style = [] + end + item + Name = 'Concepto subtotal' + Color = 15790320 + Font.Charset = ANSI_CHARSET + Font.Color = clWindowText + Font.Height = -13 + Font.Name = 'Tahoma' + Font.Style = [fsBold] + end + item + Name = 'Cabecera de columna' + Color = 15790320 + Font.Charset = ANSI_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Tahoma' + Font.Style = [fsBold] + Frame.Typ = [ftLeft, ftRight, ftTop, ftBottom] + end + item + Name = 'Concepto titulo' + Color = clNone + Font.Charset = ANSI_CHARSET + Font.Color = clWindowText + Font.Height = -13 + Font.Name = 'Tahoma' + Font.Style = [fsBold] + end> + end + object frxDBCabecera: TfrxDBDataset + UserName = 'frxDBCabecera' + CloseDataSource = False + DataSource = DADataCabecera + Left = 120 + Top = 160 + end + object tbl_Pagos: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = <> + Params = <> + MasterMappingMode = mmDataRequest + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteFetchEnabled = False + SchemaCall.Params = <> + DataRequestCall.Params = <> + DataUpdateCall.Params = <> + ScriptCall.Params = <> + ReadOnly = False + Adapter = DABINAdapter + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + IndexDefs = <> + Left = 136 + Top = 208 + end + object DADataCabecera: TDADataSource + DataTable = tbl_Pagos + Left = 48 + Top = 208 + end + object DABINAdapter: TDABINAdapter + Left = 40 + Top = 72 + end +end diff --git a/Modulos/Pagos/Servidor/srvPagos_Impl.pas b/Modulos/Pagos/Servidor/srvPagos_Impl.pas new file mode 100644 index 0000000..2bb9fc1 --- /dev/null +++ b/Modulos/Pagos/Servidor/srvPagos_Impl.pas @@ -0,0 +1,83 @@ +unit srvPagos_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:} DARemoteService_Impl, + {Used RODLs:} DataAbstract_Intf, + {Generated:} FactuGES_Intf, uDAScriptingProvider, uDABusinessProcessor, + uDAClasses, uDADataTable, uDACDSDataTable, frxClass, frxDBSet, DB, + uDAInterfaces, uDABINAdapter; + +type + { TsrvPagos } + TsrvPagos = class(TDARemoteService, IsrvPagos) + bpPagos: TDABusinessProcessor; + frxDBCabecera: TfrxDBDataset; + tbl_Pagos: TDACDSDataTable; + DADataCabecera: TDADataSource; + frxReport1: TfrxReport; + schPagos: TDASchema; + DABINAdapter: TDABINAdapter; + private + protected + function GetNextAutoinc: Integer; + function GenerateReport(const Codigo: Integer): Binary; + end; + +implementation + +{$R *.dfm} +uses + {Generated:} FactuGES_Invk, uDataModuleServer; + +procedure Create_srvPagos(out anInstance : IUnknown); +begin + anInstance := TsrvPagos.Create(NIL); +end; + +{ srvPagos } +function TsrvPagos.GenerateReport(const Codigo: Integer): Binary; +var + dsMaster: IDADataset; + AStream: TMemoryStream; +begin + AStream := TMemoryStream.Create; + Result := Binary.Create; + try + dsMaster := schPagos.NewDataset(Connection, 'InformeCabeceraPago', ['CODIGO'], [Codigo]); +// dsDetail.Active := True; + + AStream.Clear; + ServiceAdapter.WriteDataset(AStream, dsMaster, [woRows, woSchema], -1); + ServiceAdapter.ReadDataset(AStream, tbl_Pagos, TRUE, '', TRUE, TRUE); + + frxReport1.LoadFromFile(DarRutaInformes + 'InfRecibo.fr3', True); + frxReport1.PrepareReport; + frxReport1.PreviewPages.SaveToStream(Result); + finally + AStream.Free; + end; +end; + +function TsrvPagos.GetNextAutoinc: Integer; +begin + Result := uDataModuleServer.GetNextAutoinc(Connection, 'GEN_PAGOS'); +end; + +{ srvPagos } +initialization + TROClassFactory.Create('srvPagos', Create_srvPagos, TsrvPagos_Invoker); + +finalization + +end. diff --git a/Modulos/Pedidos a proveedor/Cliente/PedidosProveedor.bdsproj b/Modulos/Pedidos a proveedor/Cliente/PedidosProveedor.bdsproj new file mode 100644 index 0000000..a82b678 --- /dev/null +++ b/Modulos/Pedidos a proveedor/Cliente/PedidosProveedor.bdsproj @@ -0,0 +1,492 @@ + + + + + + + + + + + + PedidosProveedor.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 3 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + Pedidos a proveedor + + + + .\ + ..\..\..\Output\Cliente + .\ + $(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\Reglas;..\..\Presupuestos\Cliente;..\..\Almacenes\Cliente;..\..\Montajes\Cliente;..\..\Documentos asociados + vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;CEToolsPkgd7;FR7;FRIBX7;Hydra_Core_D7;Hydra_RO_D7;fqb70;frx7;frxADO7;frxBDE7;frxDB7;frxDBX7;frxe7;frxIBX7;fs7;fsADO7;fsBDE7;fsDB7;fsIBX7;DataAbstract_Core_D7;DataAbstract_IDE_D7 + + + False + + + + + + False + + + True + False + + + + $00000000 + C:\Archivos de programa\Borland\Delphi7\Bin\ + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + diff --git a/Modulos/Pedidos a proveedor/Cliente/PedidosProveedor.cfg b/Modulos/Pedidos a proveedor/Cliente/PedidosProveedor.cfg new file mode 100644 index 0000000..2b80ae7 --- /dev/null +++ b/Modulos/Pedidos a proveedor/Cliente/PedidosProveedor.cfg @@ -0,0 +1,45 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-GD +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N".\" +-LE"..\..\..\Output\Cliente" +-LN".\" +-U"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\Reglas;..\..\Presupuestos\Cliente;..\..\Almacenes\Cliente;..\..\Montajes\Cliente;..\..\Documentos asociados" +-O"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\Reglas;..\..\Presupuestos\Cliente;..\..\Almacenes\Cliente;..\..\Montajes\Cliente;..\..\Documentos asociados" +-I"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\Reglas;..\..\Presupuestos\Cliente;..\..\Almacenes\Cliente;..\..\Montajes\Cliente;..\..\Documentos asociados" +-R"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\Reglas;..\..\Presupuestos\Cliente;..\..\Almacenes\Cliente;..\..\Montajes\Cliente;..\..\Documentos asociados" +-Z +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/Modulos/Pedidos a proveedor/Cliente/PedidosProveedor.dcp b/Modulos/Pedidos a proveedor/Cliente/PedidosProveedor.dcp new file mode 100644 index 0000000..c646ba8 Binary files /dev/null and b/Modulos/Pedidos a proveedor/Cliente/PedidosProveedor.dcp differ diff --git a/Modulos/Pedidos a proveedor/Cliente/PedidosProveedor.dof b/Modulos/Pedidos a proveedor/Cliente/PedidosProveedor.dof new file mode 100644 index 0000000..0b14805 --- /dev/null +++ b/Modulos/Pedidos a proveedor/Cliente/PedidosProveedor.dof @@ -0,0 +1,175 @@ +[FileVersion] +Version=7.0 +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=1 +SymbolLibrary=1 +SymbolPlatform=1 +UnitLibrary=1 +UnitPlatform=1 +UnitDeprecated=1 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 +[Linker] +MapFile=3 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=Pedidos a proveedor +[Directories] +OutputDir= +UnitOutputDir=.\ +PackageDLLOutputDir=..\..\..\Output\Cliente +PackageDCPOutputDir=.\ +SearchPath=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\Reglas;..\..\Presupuestos\Cliente;..\..\Almacenes\Cliente;..\..\Montajes\Cliente;..\..\Documentos asociados +Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;CEToolsPkgd7;FR7;FRIBX7;Hydra_Core_D7;Hydra_RO_D7;fqb70;frx7;frxADO7;frxBDE7;frxDB7;frxDBX7;frxe7;frxIBX7;fs7;fsADO7;fsBDE7;fsDB7;fsIBX7;DataAbstract_Core_D7;DataAbstract_IDE_D7 +Conditionals= +DebugSourceDirs= +UsePackages=0 +[Parameters] +RunParams= +HostApplication= +Launcher= +UseLauncher=0 +DebugCWD= +[Language] +ActiveLang= +ProjectLang= +RootDir=C:\Archivos de programa\Borland\Delphi7\Bin\ +[Version Info] +IncludeVerInfo=1 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=3082 +CodePage=1252 +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= +[HistoryLists\hlDebugSourcePath] +Count=1 +Item0=D:\Proyectos\Componentes\GUISDK\Sources\;D:\Proyectos\Componentes\PluginSDK\Source\;D:\Proyectos\FactuGES (Estudio)\Codigo\Modulos\Contactos\Cliente;D:\Proyectos\FactuGES (Estudio)\Codigo\Modulos\Contactos\Reglas +[HistoryLists\hlUnitAliases] +Count=1 +Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +[HistoryLists\hlSearchPath] +Count=16 +Item0=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente;..\..\Asientos\Cliente;..\..\Cuentas\Cliente +Item1=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente;..\..\Asientos\Cliente +Item2=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente +Item3=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente +Item4=..\Modulos\Presupuestos\Reglas;..\Modulos\Contactos\Reglas;..\Base;..\Configuracion;..\Usuarios;..\Modulos\Albaranes de cliente\Reglas +Item5=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\Base;..\Configuracion;..\Usuarios;..\Modulos\Intervalos;..\Modulos\Documentos asociados;..\Modulos\Contactos\Cliente;..\Modulos\Contactos\Reglas;..\Modulos\Presupuestos\Cliente;..\Modulos\Presupuestos\Reglas;..\Modulos\Albaranes de cliente\Cliente;..\Modulos\Albaranes de cliente\Reglas;..\Modulos\Facturas de cliente\Cliente;..\Modulos\Facturas de cliente\Reglas;..\Modulos\Pedidos a proveedor\Cliente;..\Modulos\Pedidos a proveedor\Reglas;..\Modulos\Facturas de proveedor\Cliente;..\Modulos\Facturas de proveedor\Reglas;..\Modulos\Montajes\Reglas;..\Modulos\Montajes\Cliente;..\Modulos\Articulos\Cliente;..\Modulos\Articulos\Reglas;..\Modulos\Almacenes\Reglas;..\Modulos\Almacenes\Cliente;..\Modulos\Pagos\Reglas;..\Modulos\Pagos\Cliente;..\Modulos\Cuentas\Reglas;..\Modulos\Cuentas\Cliente;..\Modulos\Asientos\Reglas;..\Modulos\Asientos\Cliente;..\Modulos\Calendarios\Cliente;..\Modulos\Calendarios\Reglas +Item6=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente;..\..\Documentos asociados;..\..\Contactos\Cliente;..\..\Almacenes\Cliente +Item7=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados +Item8=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente;..\..\Documentos asociados;..\..\Contactos\Cliente +Item9=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente;..\..\Documentos asociados +Item10=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente +Item11=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados;..\..\Montajes\Cliente;..\..\Almacenes\Cliente +Item12=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados;..\..\Montajes\Cliente +Item13=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\Servidor +Item14=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\base;..\Modulos\Calendarios\Cliente;..\Modulos\Calendarios\Reglas +Item15=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\Base;..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios +[HistoryLists\hlUnitOutputDirectory] +Count=1 +Item0=.\ +[HistoryLists\hlOutputDirectorry] +Count=2 +Item0=..\Output\Servidor +Item1=..\Output\Cliente +[HistoryLists\hlBPLOutput] +Count=3 +Item0=..\..\..\Output\Cliente +Item1=..\Output\Cliente +Item2=..\..\Output\Cliente +[HistoryLists\hlDCPOutput] +Count=1 +Item0=.\ diff --git a/Modulos/Pedidos a proveedor/Cliente/PedidosProveedor.dpk b/Modulos/Pedidos a proveedor/Cliente/PedidosProveedor.dpk new file mode 100644 index 0000000..a71a403 --- /dev/null +++ b/Modulos/Pedidos a proveedor/Cliente/PedidosProveedor.dpk @@ -0,0 +1,100 @@ +package PedidosProveedor; + +{$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} +{$DESCRIPTION 'Pedidos a proveedor'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + vcldb, + PluginSDK_D7R, + GUISDK_D7, + PngComponentsD7, + PNG_D7, + vclactnband, + vclx, + JvCoreD7R, + vcljpg, + JvPageCompsD7R, + JvStdCtrlsD7R, + JvSystemD7R, + tb2k_d7, + tbx_d7, + dbrtl, + frx7, + fs7, + dsnap, + adortl, + designide, + ccpack70, + tee, + fqb70, + bdertl, + cxLibraryVCLD7, + dxThemeD7, + cxEditorsVCLD7, + cxDataD7, + cxGridVCLD7, + cxPageControlVCLD7, + cxExtEditorsVCLD7, + cxExportVCLD7, + BaseD7, + Contactos, + JvCtrlsD7R, + JvAppFrmD7R, + dxPSCoreD7, + dxComnD7, + cxIntlPrintSys3D7, + dxPScxCommonD7, + dxPSLnksD7, + vclshlctrls, + dxPScxGridLnkD7, + dclcxLibraryVCLD7, + Presupuestos, + Almacenes, + Montajes_Intf, + frxe7, + Jcl, + JclVcl; + +contains + uPluginControllerPedidosProveedor in 'uPluginControllerPedidosProveedor.pas' {ModulePedidosProveedor: TModuleController}, + uBizPedidosProveedor in '..\Reglas\uBizPedidosProveedor.pas', + uDataModulePedidosProveedor in 'uDataModulePedidosProveedor.pas' {dmPedidos: TDAClientDataModule}, + uEditorPedidosProveedor in 'uEditorPedidosProveedor.pas' {fEditorPedidosProveedor: TCustomEditor}, + uViewPedidosProveedor in 'uViewPedidosProveedor.pas' {frViewPedidosProveedor: TFrame}, + uViewDatosPedidoProveedor in 'uViewDatosPedidoProveedor.pas' {frViewDatosPedidoProveedor: TFrame}, + uViewDestinoPedidoProveedor in 'uViewDestinoPedidoProveedor.pas' {frViewDestinoPedidoProveedor: TFrame}, + uViewPedidoProveedor in 'uViewPedidoProveedor.pas' {frViewPedidoProveedor: TFrame}, + uEditorPedidoProveedor in 'uEditorPedidoProveedor.pas' {fEditorPedidoProveedor: TCustomEditor}, + uViewDetallesPedidosProveedor in 'uViewDetallesPedidosProveedor.pas' {frViewDetallesPedidosProveedor: TFrame}, + uViewTotalPedido in 'uViewTotalPedido.pas' {frViewTotalPedido: TFrame}, + uViewMontajePedido in 'uViewMontajePedido.pas' {frViewMontajePedido: TCustomView}, + schPedidosProveedorClient_Intf in '..\Reglas\schPedidosProveedorClient_Intf.pas', + schPedidosProveedorServer_Intf in '..\Reglas\schPedidosProveedorServer_Intf.pas', + uViewIncidencias in 'uViewIncidencias.pas' {frViewIncidencias: TCustomView}, + uViewDatosPedido in 'uViewDatosPedido.pas' {frViewDatosPedido: TCustomView}; + +end. diff --git a/Modulos/Pedidos a proveedor/Cliente/PedidosProveedor.drc b/Modulos/Pedidos a proveedor/Cliente/PedidosProveedor.drc new file mode 100644 index 0000000..a5d5271 --- /dev/null +++ b/Modulos/Pedidos a proveedor/Cliente/PedidosProveedor.drc @@ -0,0 +1,14 @@ +/* VER150 + Generated by the Borland Delphi Pascal Compiler + because -GD or --drc was supplied to the compiler. + + This file contains compiler-generated resources that + were bound to the executable. + If this file is empty, then no compiler-generated + resources were bound to the produced executable. +*/ + +STRINGTABLE +BEGIN +END + diff --git a/Modulos/Pedidos a proveedor/Cliente/PedidosProveedor.res b/Modulos/Pedidos a proveedor/Cliente/PedidosProveedor.res new file mode 100644 index 0000000..ec5f233 Binary files /dev/null and b/Modulos/Pedidos a proveedor/Cliente/PedidosProveedor.res differ diff --git a/Modulos/Pedidos a proveedor/Cliente/uDataModulePedidosProveedor.ddp b/Modulos/Pedidos a proveedor/Cliente/uDataModulePedidosProveedor.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Pedidos a proveedor/Cliente/uDataModulePedidosProveedor.ddp differ diff --git a/Modulos/Pedidos a proveedor/Cliente/uDataModulePedidosProveedor.dfm b/Modulos/Pedidos a proveedor/Cliente/uDataModulePedidosProveedor.dfm new file mode 100644 index 0000000..94d5493 --- /dev/null +++ b/Modulos/Pedidos a proveedor/Cliente/uDataModulePedidosProveedor.dfm @@ -0,0 +1,614 @@ +object dmPedidos: TdmPedidos + OldCreateOrder = True + OnCreate = DAClientDataModuleCreate + RemoteService = RORemoteService + Adapter = DABinAdapter + SchemaCall.MethodName = 'GetSchemaAsXML' + SchemaCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtString + end> + Left = 626 + Top = 357 + Height = 340 + Width = 423 + object RORemoteService: TRORemoteService + ServiceName = 'srvPedidosProveedor' + Message = dmBase.ROMessage + Channel = dmBase.ROChannel + Left = 32 + Top = 16 + end + object DABinAdapter: TDABINAdapter + Left = 32 + Top = 80 + end + object tbl_DetallesPedidosProveedor: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'CODIGOPEDIDO' + DataType = datInteger + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'C'#243'd. pedido' + Alignment = taLeftJustify + DictionaryEntry = 'CODIGOPEDIDO' + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NUMCONCEPTO' + DataType = datInteger + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'Num. concepto' + Alignment = taLeftJustify + DictionaryEntry = 'NUMCONCEPTO' + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'DESCRIPCION' + DataType = datString + Size = 2000 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Descripci'#243'n' + Alignment = taLeftJustify + DictionaryEntry = 'DESCRIPCIONCONCEPTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CANTIDAD' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Cantidad' + Alignment = taLeftJustify + DictionaryEntry = 'CANTIDAD' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTEUNIDAD' + DataType = datCurrency + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Importe unitario' + Alignment = taLeftJustify + DictionaryEntry = 'IMPORTEUNIDAD' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTETOTAL' + DataType = datCurrency + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Importe total' + Alignment = taLeftJustify + DictionaryEntry = 'IMPORTETOTAL' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'POSICION' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Posici'#243'n' + Alignment = taLeftJustify + DictionaryEntry = 'POSICIONCONCEPTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'TIPO' + DataType = datString + Size = 1 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + Params = < + item + Name = 'CODIGOPEDIDO' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end> + MasterMappingMode = mmParams + MasterParamsMappings.Strings = ( + 'CODIGOPEDIDO=CODIGO') + StreamingOptions = [soDisableEventsWhileStreaming] + SchemaCall.MethodName = 'GetDatasetSchema' + SchemaCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBinary + end + item + Name = 'aDatasetName' + ParamType = fIn + DataType = rtString + Value = 'DetallesPedidosProveedor' + end> + DataRequestCall.MethodName = 'GetDatasetDataEx' + DataRequestCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBinary + end + item + Name = 'DatasetName' + ParamType = fIn + DataType = rtString + Value = 'DetallesPedidosProveedor' + end + item + Name = 'Params' + ParamType = fIn + DataType = rtUserDefined + UserClassName = 'TDADatasetParamArray' + end + item + Name = 'UserFilter' + ParamType = fIn + DataType = rtString + Value = '' + end + item + Name = 'IncludeSchema' + ParamType = fIn + DataType = rtBoolean + Value = False + end + item + Name = 'MaxRecords' + ParamType = fIn + DataType = rtInteger + Value = -1 + end> + DataUpdateCall.MethodName = 'UpdateData' + DataUpdateCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBinary + end + item + Name = 'Delta' + ParamType = fIn + DataType = rtBinary + end> + ScriptCall.MethodName = 'GetDatasetScripts' + ScriptCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtString + Value = '' + end + item + Name = 'DatasetNames' + ParamType = fIn + DataType = rtString + Value = 'DetallesPedidosProveedor' + end> + ReadOnly = False + RemoteService = RORemoteService + Adapter = DABinAdapter + MasterSource = ds_PedidosProveedor + MasterFields = 'CODIGO' + DetailFields = 'CODIGOPEDIDO' + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'DetallesPedidosProveedor' + IndexDefs = <> + Left = 152 + Top = 112 + end + object ds_DetallesPedidosProveedor: TDADataSource + DataTable = tbl_DetallesPedidosProveedor + Left = 288 + Top = 110 + end + object tbl_PedidosProveedor: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'CODIGOEMPRESA' + DataType = datInteger + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'C'#243'd. empresa' + Alignment = taLeftJustify + DictionaryEntry = 'CODIGOEMPRESA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGO' + DataType = datInteger + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'C'#243'd. pedido' + Alignment = taLeftJustify + DictionaryEntry = 'CODIGOPEDIDO' + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHAALTA' + DataType = datDateTime + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'Fecha de alta' + Alignment = taLeftJustify + DictionaryEntry = 'FECHAALTA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'USUARIO' + DataType = datString + Size = 100 + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'Usuario de alta' + Alignment = taLeftJustify + DictionaryEntry = 'USUARIO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'REFERENCIA' + DataType = datString + Size = 20 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Referencia' + Alignment = taLeftJustify + DictionaryEntry = 'REFERENCIA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHAPEDIDO' + DataType = datDateTime + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'Fecha' + Alignment = taLeftJustify + DictionaryEntry = 'FECHAPEDIDO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHACONFIRMACION' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Confirmaci'#243'n' + Alignment = taLeftJustify + DictionaryEntry = 'FECHACONFIRMACION' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'SITUACION' + DataType = datString + Size = 30 + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'Situaci'#243'n' + Alignment = taLeftJustify + DictionaryEntry = 'SITUACIONPEDIDO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHAENTREGA' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Entrega' + Alignment = taLeftJustify + DictionaryEntry = 'FECHAENTREGA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'OBSERVACIONES' + DataType = datMemo + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Observaciones' + Alignment = taLeftJustify + DictionaryEntry = 'OBSERVACIONES' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTETOTAL' + DataType = datCurrency + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Importe total' + Alignment = taLeftJustify + DictionaryEntry = 'IMPORTETOTAL' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'DIRECCIONCOMPLETA' + DataType = datMemo + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Direcci'#243'n' + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'INCIDENCIAS' + DataType = datMemo + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Incidencias' + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'INCIDENCIASACTIVAS' + DataType = datInteger + BlobType = dabtUnknown + DefaultValue = '0' + Required = True + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOALMACEN' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'C'#243'digo' + Alignment = taLeftJustify + DictionaryEntry = 'CODIGO (GENERICO)' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOCONTACTO' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'C'#243'digo' + Alignment = taLeftJustify + DictionaryEntry = 'CODIGO (GENERICO)' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NOMBRE' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Nombre' + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOMONTAJE' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NOMBREALMACEN' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOCONTACTO1' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NOMBRECLIENTE' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + Params = <> + MasterMappingMode = mmDataRequest + StreamingOptions = [soDisableEventsWhileStreaming] + SchemaCall.MethodName = 'GetDatasetSchema' + SchemaCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBinary + end + item + Name = 'aDatasetName' + ParamType = fIn + DataType = rtString + Value = 'PedidosProveedor' + end> + DataRequestCall.MethodName = 'GetDatasetDataEx' + DataRequestCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBinary + end + item + Name = 'DatasetName' + ParamType = fIn + DataType = rtString + Value = 'PedidosProveedor' + end + item + Name = 'Params' + ParamType = fIn + DataType = rtUserDefined + UserClassName = 'TDADatasetParamArray' + end + item + Name = 'UserFilter' + ParamType = fIn + DataType = rtString + Value = '' + end + item + Name = 'IncludeSchema' + ParamType = fIn + DataType = rtBoolean + Value = False + end + item + Name = 'MaxRecords' + ParamType = fIn + DataType = rtInteger + Value = -1 + end> + DataUpdateCall.MethodName = 'UpdateData' + DataUpdateCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBinary + end + item + Name = 'Delta' + ParamType = fIn + DataType = rtBinary + end> + ScriptCall.MethodName = 'GetDatasetScripts' + ScriptCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtString + Value = '' + end + item + Name = 'DatasetNames' + ParamType = fIn + DataType = rtString + Value = 'PedidosProveedor' + end> + ReadOnly = False + RemoteService = RORemoteService + Adapter = DABinAdapter + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'PedidosProveedor' + IndexDefs = <> + Left = 152 + Top = 24 + end + object ds_PedidosProveedor: TDADataSource + DataTable = tbl_PedidosProveedor + Left = 288 + Top = 24 + end +end diff --git a/Modulos/Pedidos a proveedor/Cliente/uDataModulePedidosProveedor.pas b/Modulos/Pedidos a proveedor/Cliente/uDataModulePedidosProveedor.pas new file mode 100644 index 0000000..6e1a336 --- /dev/null +++ b/Modulos/Pedidos a proveedor/Cliente/uDataModulePedidosProveedor.pas @@ -0,0 +1,208 @@ +unit uDataModulePedidosProveedor; + +interface + +uses {vcl:} SysUtils, Classes, DB, DBClient, + {RemObjects:} uDAClientDataModule, uDADataTable, uDABINAdapter, + uROServiceComponent, uRORemoteService, uROClient, uROBinMessage, + uROWinInetHttpChannel, uDAScriptingProvider, uDACDSDataTable, + uBizPedidosProveedor, uROTypes; + +type + TdmPedidos = class(TDAClientDataModule) + RORemoteService: TRORemoteService; + DABinAdapter: TDABINAdapter; + tbl_DetallesPedidosProveedor: TDACDSDataTable; + ds_DetallesPedidosProveedor: TDADataSource; + tbl_PedidosProveedor: TDACDSDataTable; + ds_PedidosProveedor: TDADataSource; + procedure DAClientDataModuleCreate(Sender: TObject); +{ private + procedure Fax (AFile : String);} + public + procedure Print(Const Codigo: Integer); + procedure Preview(Const Codigo: Integer); + function GetNextAutoinc : integer; + function GetItems: IBizPedidosProveedor; + function GetDataTableItems(Const IDBusiness: String): TDACDSDataTable; + function GetItemsPendientesRecepcion: IBizPedidosProveedor; + function GetItem(Codigo : Integer): IBizPedidosProveedor; + function DarNuevaReferencia : String; + function PuedoEliminarPedido(Codigo : Integer) : Boolean; + end; + +var + dmPedidos: TdmPedidos; + +implementation + +{$R *.DFM} + +uses + Forms, Controls, uDataTableUtils, uBizContacto, FactuGES_Intf, + uDataModuleContactos, uDataModuleBase, schPedidosProveedorClient_Intf, + uDAInterfaces, uEditorPreview, Dialogs; + +{ TDAClientDataModule1 } + +function TdmPedidos.GetItems: IBizPedidosProveedor; +begin + Result := (GetDataTableItems(BIZ_PEDIDOSPROVEEDOR) as IBizPedidosProveedor); +end; + +procedure TdmPedidos.DAClientDataModuleCreate(Sender: TObject); +begin + RORemoteService.Channel := dmBase.Channel; + RORemoteService.Message := dmBase.Message; +end; + + +function TdmPedidos.GetNextAutoinc: integer; +begin + Result := (RORemoteService as IsrvPedidosProveedor).GetNextAutoinc; +end; + +function TdmPedidos.DarNuevaReferencia: String; +begin + Result := (RORemoteService as IsrvPedidosProveedor).DarNuevaReferencia; +end; + +function TdmPedidos.GetItem(Codigo: Integer): IBizPedidosProveedor; +var + APedido: IBizPedidosProveedor; +begin + APedido := GetItems; + with APedido.DataTable do + begin + if Active then Active := False; + Where.Clear; + Where.OpenBraket; + Where.AddText('PED.' + fld_pedidosproveedorCODIGO + ' = ' + IntToStr(Codigo), False); + Where.CloseBraket; + end; + Result := APedido; +end; + +function TdmPedidos.GetItemsPendientesRecepcion: IBizPedidosProveedor; +var + dsPedidos : IBizPedidosProveedor; +begin + dsPedidos := GetItems; + with dsPedidos.DataTable.Where do + begin + if not Empty then + AddOperator(opAND); + Clear; + OpenBraket; + AddText('PEDIDOS.' + fld_PedidosProveedorSITUACION + '=' + '''' + SITUACION_PENDIENTE + '''', False); + CloseBraket; + AddOperator(opOR); + OpenBraket; + AddText('PEDIDOS.' + fld_PedidosProveedorSITUACION + '=' + '''' + SITUACION_PARCIAL + '''', False); + CloseBraket; + end; + Result := dsPedidos; +end; + +procedure TdmPedidos.Preview(const Codigo: Integer); +var + AStream: TROBinaryMemoryStream; + AEditorPreview : TfEditorPreview; +begin + AEditorPreview := TfEditorPreview.Create(Application); + try + AStream := (RORemoteService as IsrvPedidosProveedor).GenerateReport(Codigo); + AEditorPreview.Report.PreviewPages.LoadFromStream(AStream); + AEditorPreview.ShowModal; + finally + AEditorPreview.Release; + AStream.Free; + end; +end; + +procedure TdmPedidos.Print(const Codigo: Integer); +var + AStream: TROBinaryMemoryStream; + AEditorPreview : TfEditorPreview; + AFile : String; +begin + AEditorPreview := TfEditorPreview.Create(Application); + try + AStream := (RORemoteService as IsrvPedidosProveedor).GenerateReport(Codigo); + AEditorPreview.LoadFromStream(AStream); + AFile := AEditorPreview.ExportToFile; + AEditorPreview.Print; + finally + AEditorPreview.Release; + AStream.Free; + end; +end; + +function TdmPedidos.PuedoEliminarPedido(Codigo: Integer): Boolean; +begin + Result := (RORemoteService as IsrvPedidosProveedor).PuedoEliminarPedido(Codigo); +end; + +function TdmPedidos.GetDataTableItems(Const IDBusiness: String): TDACDSDataTable; +var + dtPedidos: TDACDSDataTable; + dtDetalles: TDACDSDataTable; + ACursor: TCursor; +begin + ACursor := Screen.Cursor; + Screen.Cursor := crHourGlass; + try + dtPedidos := TDACDSDataTable.Create(NIL); + CloneDataTable(tbl_PedidosProveedor, dtPedidos); + with dtPedidos do + begin + BusinessRulesID := IDBusiness; + end; + + dtDetalles := TDACDSDataTable.Create(NIL); + CloneDataTable(tbl_DetallesPedidosProveedor, dtDetalles); + with dtDetalles do + begin + BusinessRulesID := BIZ_DETALLESPEDIDOSPROVEEDOR; + DetailOptions := DetailOptions - [dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates]; + + FieldByName(fld_DetallesPedidosProveedorCANTIDAD).BusinessRulesID := 'Client.Field.Cantidad'; + FieldByName(fld_DetallesPedidosProveedorIMPORTEUNIDAD).BusinessRulesID := 'Client.Field.ImporteUnidad'; + FieldByName(fld_DetallesPedidosProveedorTIPO).BusinessRulesID := 'Client.Field.TipoDetalle'; + end; + + (dtPedidos as IBizPedidosProveedor).Detalles := (dtDetalles as IBizDetallesPedidoProveedor); + + Result := dtPedidos; + finally + Screen.Cursor := ACursor; + end; +end; + +{procedure TdmPedidos.Fax (AFile : String); +var + FxDoc: TFaxDocument; + FaxServer: TFaxService; +begin + FaxServer := TFaxService.Create(Self); + FaxServer.ActiveDeviceID := 0; + FaxServer.Connect(''); + try + FxDoc := FaxServer.CreateFaxDocument; + //fxDoc.DocumentName := 'aa'; + fxDoc.FileName := AFile; + FxDoc.RecipientNumber := '12345678'; + FxDoc.RecipientName := 'Bo Berglund'; + FxDoc.Send(nil); + finally + FaxServer.Disconnect; + end; +end;} + +initialization + dmPedidos := TdmPedidos.Create(nil); + +finalization + FreeAndNil(dmPedidos); + +end. diff --git a/Modulos/Pedidos a proveedor/Cliente/uEditorPedidoProveedor.ddp b/Modulos/Pedidos a proveedor/Cliente/uEditorPedidoProveedor.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Pedidos a proveedor/Cliente/uEditorPedidoProveedor.ddp differ diff --git a/Modulos/Pedidos a proveedor/Cliente/uEditorPedidoProveedor.dfm b/Modulos/Pedidos a proveedor/Cliente/uEditorPedidoProveedor.dfm new file mode 100644 index 0000000..4baa146 --- /dev/null +++ b/Modulos/Pedidos a proveedor/Cliente/uEditorPedidoProveedor.dfm @@ -0,0 +1,199 @@ +inherited fEditorPedidoProveedor: TfEditorPedidoProveedor + Left = 332 + Top = 147 + Width = 770 + Height = 636 + Caption = 'Nuevo pedido a proveedor' + Constraints.MinWidth = 770 + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + Width = 762 + Caption = 'Nuevo pedido a proveedor' + inherited Image1: TImage + Left = 735 + Picture.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001800 + 0000180806000000E0773DF80000000970485973000017120000171201679FD2 + 520000000467414D410000AA11B57D14DC0000026C4944415478DA63FCFFFF3F + C3A28DC7FF335009C4F95B3222F319611600254836ECEFDF7F40FC1F4C838085 + 6F36C3C53DB3705BB0D7D21EC500E7E307711A8EACD674CF2E8679ABF730CC5F + B211BF05A4B8FC808D2383328B34C3B6D3CB19225F7E6358B87E1F610BB0F900 + 5D0C046C0FEE63386CEFC470F3FC21303FECD91786259B0E50E683FFFF80610D + C47F80AE07B17FFF0386FF9F7F60DFFCF9F79761C596C3A4FB801800F285EF83 + 770C6B771C23CE0298B749015E77DF306CD87D82380BF0A51C6C00A44771E55A + 864DFB4E126F01AEA082590E9387A9955BBE8661EB8153B4F381E492550CBB0E + 9FA1AE0F6EAA108EABC75FEDC8F3C1B4584686847408FBE74F06865F3F2018C4 + FEF903824F1C47B320DAC71C9C3B09F98058C3F9251818AEDC45B220C2D30C9C + 3BF1F90064388B207EDFFD798F301C250E42DD4C188E39B910B400E67A10F8F8 + 0EE2E21F5097FFFACEC070FA0C2468EC0D0F311C3C8FE48300172386D32E6E78 + 5D078A5890664200643808A058E0EB60002F5720E5FC3F70D903160396F94FA3 + 43C11620FB001C247F81F83703C36F501C007D70ED3A420EC5022F5B3D9C8683 + E81771E11816FCFA05341888FF40E995ABD919D4357E32B0B160B1C0CD5A1BA7 + E1A012F44D62248605A038005B00F201106FDACACE202D0FB1808D9581E1F865 + 240B1CCD35C086FDFB0B29967FFF4514C7FFFE432C3ADD2D8F62C19B1708C341 + 166DDFCDCE202A0DB1E0F21D3B86F6750719E116D899A8814B447C806DAF0FDC + 0250F0BC7B89301C44EF39C0CEC02FFE93E1FE1388E128C9B477F27C82A9235D + 7236D882A993D971AA79F7DB1C6E38DC0262417738C73AA00181F8D4201B0E02 + 00C20B50400F1E42A70000000049454E44AE426082} + end + end + inherited TBXDock: TTBXDock + Width = 762 + inherited tbxMain: TTBXToolbar + inherited TBXItem2: TTBXItem + Visible = False + end + inherited TBXSeparatorItem1: TTBXSeparatorItem + Visible = False + end + inherited TBXItem5: TTBXItem + Visible = False + end + end + end + inherited pgPaginas: TPageControl + Width = 762 + Height = 436 + inherited pagGeneral: TTabSheet + inline frViewPedidoProveedor1: TfrViewPedidoProveedor + Left = 0 + Top = 0 + Width = 754 + Height = 408 + Align = alClient + AutoSize = True + Constraints.MinHeight = 350 + Constraints.MinWidth = 745 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 0 + ReadOnly = False + inherited frViewDatosYSeleccionContacto: TfrViewDatosYSeleccionContacto + inherited Bevel1: TBevel + Height = 10 + end + inherited ToolBar1: TToolBar + Width = 369 + end + inherited edtlNombre: TcxDBTextEdit + Properties.OnChange = frViewDatosYSeleccionContactoedtlNombrePropertiesChange + end + inherited ToolBar2: TToolBar + Width = 201 + end + end + inherited frViewObservaciones: TfrViewObservaciones + inherited memObservaciones: TcxDBMemo + Height = 142 + Width = 349 + end + end + inherited frViewDestinoPedidoProveedor: TfrViewDestinoPedidoProveedor + inherited Bevel1: TBevel + Width = 224 + end + inherited cbAlmacen: TcxDBLookupComboBox + Width = 308 + end + end + end + end + object pagContenido: TTabSheet + Caption = 'Contenido' + ImageIndex = 1 + inline frViewDetallesPedidosProveedor: TfrViewDetallesPedidosProveedor + Left = 0 + Top = 0 + Width = 754 + Height = 408 + Align = alClient + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 0 + ReadOnly = False + inherited cxGrid: TcxGrid + Width = 754 + Height = 383 + end + inherited ToolBar1: TToolBar + Width = 754 + end + end + end + object pagInicidencias: TTabSheet + Caption = 'Incidencias' + ImageIndex = 2 + inline frViewIncidencias: TfrViewIncidencias + Left = 0 + Top = 0 + Width = 754 + Height = 408 + Align = alClient + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 0 + ReadOnly = False + inherited pnlSup: TPanel + Width = 754 + end + inherited GroupBox1: TGroupBox + Width = 754 + Height = 380 + inherited eIncidencias: TcxDBMemo + Height = 347 + Width = 731 + end + end + end + end + end + inherited StatusBar: TStatusBar + Top = 583 + Width = 762 + end + inline frViewTotalPedido: TfrViewTotalPedido [4] + Left = 0 + Top = 512 + Width = 762 + Height = 71 + Align = alBottom + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 0 + ReadOnly = False + inherited GroupBox1: TGroupBox + Width = 257 + inherited cxCurrencyEdit5: TcxDBCurrencyEdit + Properties.ReadOnly = False + Style.IsFontAssigned = True + end + end + end + inherited EditorActionList: TActionList [5] + end + inherited SmallImages: TPngImageList [6] + end + inherited LargeImages: TPngImageList [7] + end + inherited JvFormStorage: TJvFormStorage [8] + end + inherited JvAppRegistryStorage: TJvAppRegistryStorage [9] + end +end diff --git a/Modulos/Pedidos a proveedor/Cliente/uEditorPedidoProveedor.pas b/Modulos/Pedidos a proveedor/Cliente/uEditorPedidoProveedor.pas new file mode 100644 index 0000000..79acad1 --- /dev/null +++ b/Modulos/Pedidos a proveedor/Cliente/uEditorPedidoProveedor.pas @@ -0,0 +1,172 @@ +unit uEditorPedidoProveedor; + +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, uBizPedidosProveedor, + uViewPedidoProveedor, uCustomView, uViewBase, uViewContenido, + StdCtrls, pngimage, AppEvnts, uViewDetallesFamilias, + uViewDetallesNormales, uViewDetallesPedidosProveedor, uViewTotalPedido, + cxControls, cxContainer, cxEdit, cxTextEdit, cxMemo, cxDBEdit, + uViewIncidencias, JvComponentBase; + +type + IEditorPedidoProveedor = interface(IEditorDBItem) + ['{A2784067-14B2-48AA-9696-B0CA420B4973}'] + function GetPedidoProveedor: IBizPedidosProveedor; + procedure SetPedidoProveedor(const Value: IBizPedidosProveedor); + property PedidoProveedor: IBizPedidosProveedor read GetPedidoProveedor write + SetPedidoProveedor; + end; + + TfEditorPedidoProveedor = class(TfEditorDBItem, IEditorPedidoProveedor) + pagContenido: TTabSheet; + frViewDetallesPedidosProveedor: TfrViewDetallesPedidosProveedor; + frViewTotalPedido: TfrViewTotalPedido; + pagInicidencias: TTabSheet; + frViewPedidoProveedor1: TfrViewPedidoProveedor; + frViewIncidencias: TfrViewIncidencias; + procedure actEliminarExecute(Sender: TObject); + procedure FormShow(Sender: TObject); override; + procedure frViewDatosYSeleccionContactoedtlNombrePropertiesChange( + Sender: TObject); + private + FPedidoProveedor: IBizPedidosProveedor; + FViewPedidoProveedor: IViewPedidoProveedor; + protected + function GetPedidoProveedor: IBizPedidosProveedor; + function GetViewPedidoProveedor: IViewPedidoProveedor; + procedure SetPedidoProveedor(const Value: IBizPedidosProveedor); + procedure SetViewPedidoProveedor(const Value: IViewPedidoProveedor); + property ViewPedidoProveedor: IViewPedidoProveedor read GetViewPedidoProveedor write + SetViewPedidoProveedor; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + property PedidoProveedor: IBizPedidosProveedor read GetPedidoProveedor write + SetPedidoProveedor; + end; + +var + fEditorPedidoProveedor: TfEditorPedidoProveedor; + +implementation + +uses uEditorUtils, uDataModulePedidosProveedor, uBizImportesDetalleBase, + uDataModulePresupuestos, uBizPresupuestosCliente, + uExceptions; + +{$R *.dfm} + +function ShowEditorPedidoProveedor (ABizObject : TDADataTableRules) : TModalResult; +var + AEditor: TfEditorPedidoProveedor; +begin + AEditor := TfEditorPedidoProveedor.Create(Application); + try + AEditor.PedidoProveedor := (ABizObject as IBizPedidosProveedor); + Result := AEditor.ShowModal; + finally + AEditor.Release; + end; +end; + +{ TfEditorPedidoProveedor } + +{ +**************************** TfEditorPedidoProveedor **************************** +} +constructor TfEditorPedidoProveedor.Create(AOwner: TComponent); +begin + inherited; +// ViewPedidoProveedor := CreateView(TfrViewPedidoProveedor) as IViewPedidoProveedor; + pgPaginas.ActivePageIndex := 0; + ViewPedidoProveedor := frViewPedidoProveedor1; +end; + +destructor TfEditorPedidoProveedor.Destroy; +begin + FViewPedidoProveedor := NIL; + FPedidoProveedor := NIL; + inherited; +end; + +procedure TfEditorPedidoProveedor.actEliminarExecute(Sender: TObject); +begin + if (Application.MessageBox('¿Desea borrar este pedido a proveedor?', 'Atención', MB_YESNO) = IDYES) then + inherited; +end; + +procedure TfEditorPedidoProveedor.FormShow(Sender: TObject); +begin + inherited; + + if not Assigned(FViewPedidoProveedor) then + raise Exception.Create('No hay ninguna vista asignada'); + + if not Assigned(PedidoProveedor) then + raise Exception.Create('No hay ningún pedido asignado'); + + PedidoProveedor.DataTable.Active := True; +// FViewPedidoProveedor.ShowEmbedded(pagGeneral); +// FViewPedidoProveedor.SetFocus; +end; + +function TfEditorPedidoProveedor.GetPedidoProveedor: IBizPedidosProveedor; +begin + Result := FPedidoProveedor; +end; + +function TfEditorPedidoProveedor.GetViewPedidoProveedor: IViewPedidoProveedor; +begin + Result := FViewPedidoProveedor; +end; + +procedure TfEditorPedidoProveedor.SetPedidoProveedor(const Value: IBizPedidosProveedor); +begin + FPedidoProveedor := Value; + + if Assigned(FPedidoProveedor) then + begin + dsDataTable.DataTable := FPedidoProveedor.DataTable; + frViewTotalPedido.DADataSource.DataTable := FPedidoProveedor.DataTable; + frViewIncidencias.DADataSource.DataTable := FPedidoProveedor.DataTable; + frViewDetallesPedidosProveedor.DADataSource.DataTable := FPedidoProveedor.Detalles.DataTable; + + if Assigned(FViewPedidoProveedor) then + FViewPedidoProveedor.PedidoProveedor := FPedidoProveedor; + end; +end; + +procedure TfEditorPedidoProveedor.SetViewPedidoProveedor(const Value: + IViewPedidoProveedor); +begin + FViewPedidoProveedor := Value; + + if Assigned(FViewPedidoProveedor) and Assigned(PedidoProveedor) then + FViewPedidoProveedor.PedidoProveedor := PedidoProveedor; +end; + +procedure TfEditorPedidoProveedor.frViewDatosYSeleccionContactoedtlNombrePropertiesChange( + Sender: TObject); +begin + inherited; + if Length(frViewPedidoProveedor1.frViewDatosYSeleccionContacto.edtlNombre.Text) = 0 then + JvNavPanelHeader.Caption := 'Nuevo pedido a proveedor' + else + JvNavPanelHeader.Caption := 'Pedido para ' + + frViewPedidoProveedor1.frViewDatosYSeleccionContacto.edtlNombre.Text + + ' (' + FPedidoProveedor.SITUACION + ')'; + Caption := JvNavPanelHeader.Caption; +end; + +initialization + RegisterEditor(IBizPedidosProveedor, ShowEditorPedidoProveedor, etItem); + +finalization + +end. diff --git a/Modulos/Pedidos a proveedor/Cliente/uEditorPedidosProveedor.ddp b/Modulos/Pedidos a proveedor/Cliente/uEditorPedidosProveedor.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Pedidos a proveedor/Cliente/uEditorPedidosProveedor.ddp differ diff --git a/Modulos/Pedidos a proveedor/Cliente/uEditorPedidosProveedor.dfm b/Modulos/Pedidos a proveedor/Cliente/uEditorPedidosProveedor.dfm new file mode 100644 index 0000000..eb1e6b8 --- /dev/null +++ b/Modulos/Pedidos a proveedor/Cliente/uEditorPedidosProveedor.dfm @@ -0,0 +1,1403 @@ +inherited fEditorPedidosProveedor: TfEditorPedidosProveedor + Left = 327 + Top = 246 + Caption = 'Lista de pedidos a proveedor' + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + Caption = 'Lista de pedidos a proveedor' + inherited Image1: TImage + Picture.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001800 + 0000180806000000E0773DF80000000970485973000017120000171201679FD2 + 520000000467414D410000AA11B57D14DC0000026C4944415478DA63FCFFFF3F + C3A28DC7FF335009C4F95B3222F319611600254836ECEFDF7F40FC1F4C838085 + 6F36C3C53DB3705BB0D7D21EC500E7E307711A8EACD674CF2E8679ABF730CC5F + B211BF05A4B8FC808D2383328B34C3B6D3CB19225F7E6358B87E1F610BB0F900 + 5D0C046C0FEE63386CEFC470F3FC21303FECD91786259B0E50E683FFFF80610D + C47F80AE07B17FFF0386FF9F7F60DFFCF9F79761C596C3A4FB801800F285EF83 + 770C6B771C23CE0298B749015E77DF306CD87D82380BF0A51C6C00A44771E55A + 864DFB4E126F01AEA082590E9387A9955BBE8661EB8153B4F381E492550CBB0E + 9FA1AE0F6EAA108EABC75FEDC8F3C1B4584686847408FBE74F06865F3F2018C4 + FEF903824F1C47B320DAC71C9C3B09F98058C3F9251818AEDC45B220C2D30C9C + 3BF1F90064388B207EDFFD798F301C250E42DD4C188E39B910B400E67A10F8F8 + 0EE2E21F5097FFFACEC070FA0C2468EC0D0F311C3C8FE48300172386D32E6E78 + 5D078A5890664200643808A058E0EB60002F5720E5FC3F70D903160396F94FA3 + 43C11620FB001C247F81F83703C36F501C007D70ED3A420EC5022F5B3D9C8683 + E81771E11816FCFA05341888FF40E995ABD919D4357E32B0B160B1C0CD5A1BA7 + E1A012F44D62248605A038005B00F201106FDACACE202D0FB1808D9581E1F865 + 240B1CCD35C086FDFB0B29967FFF4514C7FFFE432C3ADD2D8F62C19B1708C341 + 166DDFCDCE202A0DB1E0F21D3B86F6750719E116D899A8814B447C806DAF0FDC + 0250F0BC7B89301C44EF39C0CEC02FFE93E1FE1388E128C9B477F27C82A9235D + 7236D882A993D971AA79F7DB1C6E38DC0262417738C73AA00181F8D4201B0E02 + 00C20B50400F1E42A70000000049454E44AE426082} + end + end + inherited TBXDock: TTBXDock + inherited tbxFiltro: TTBXToolbar + Left = 482 + end + end + inline frViewBarraSeleccion: TfrViewBarraSeleccion [3] + Left = 0 + Top = 395 + Width = 707 + Height = 37 + Align = alBottom + AutoScroll = False + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 3 + Visible = False + ReadOnly = False + inherited pnlSeleccion: TPanel + Top = 0 + Width = 707 + inherited bSeleccionar: TButton + Left = 550 + end + inherited bCancelar: TButton + Left = 629 + end + end + inherited ActionListSeleccion: TActionList + inherited actSeleccionar: TAction + OnExecute = frViewBarraSeleccionactSeleccionarExecute + end + end + end + inherited EditorActionList: TActionList [4] + inherited actNuevo: TAction + ImageIndex = 22 + OnExecute = actNuevoExecute + end + end + inherited SmallImages: TPngImageList [5] + 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 + 610000000970485973000017120000171201679FD252000001864944415478DA + 63FCFFFF3FC384055BFF3390010A12BC1919610600394469FAF3F71FC3EF3F7F + 192CBCB3192EEE99856AC05E4B2B14C5CEC78F81696471AB030719662EDFC530 + 7FC9464C03F0815FBFFF826D06D10BD7EDC36E00BA0BB001DDAD3B19966D3A84 + DB0098B341E01F50EECF9F7F709BCFB93B33686EDCCEB06ADB11FC06C05C627B + E830C3613B5BB8CD97BDDD1954D66E6158BFEB387E0360367FBA7990E1C5C218 + 7C3E72C130C0F1D85186FD56D66059719B070CAA2D350CECEC59183A7FFE9CC6 + 303BB68501C30090B3617E7EDAACCCA0D3FD0CAC180EBE7F6760F8F19D61FA0E + 4306966DA9080372623D190EDAD8A0D80272018A0120CD1FDE81E9E9279D510D + 488F7463F805B4F9CF6F50A8FF61B8EAEB816A004CF37B20FEF19361FACD6054 + 0312439DE19A415EB815E88D30E0432F42F3870F1017BC4A45352036C011AE19 + 140320D7FC9E6A0031E041354233D80540037E95A31A10E163CBB062CB61D438 + BA9A0A8E85E9CBE5B1C6218A01A084810EB478DF3058B39EC099081CE4195C00 + 45135E518E0B4E380000000049454E44AE426082} + Name = 'PngImage22' + Background = clWindow + end> + Bitmap = {} + end + inherited LargeImages: TPngImageList [6] + 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 + F80000000970485973000017120000171201679FD2520000026C4944415478DA + 63FCFFFF3FC3A28DC7FF335009C4F95B3222F319611600254836ECEFDF7F40FC + 1F4C8380856F36C3C53DB3705BB0D7D21EC500E7E307711A8EACD674CF2E8679 + ABF730CC5FB211BF05A4B8FC808D2383328B34C3B6D3CB19225F7E6358B87E1F + 610BB0F9005D0C046C0FEE63386CEFC470F3FC21303FECD91786259B0E50E683 + FFFF80610DC47F80AE07B17FFF0386FF9F7F60DFFCF9F79761C596C3A4FB8018 + 00F285EF83770C6B771C23CE0298B749015E77DF306CD87D82380BF0A51C6C00 + A44771E55A864DFB4E126F01AEA082590E9387A9955BBE8661EB8153B4F381E4 + 92550CBB0E9FA1AE0F6EAA108EABC75FEDC8F3C1B4584686847408FBE74F0686 + 5F3F2018C4FEF903824F1C47B320DAC71C9C3B09F98058C3F9251818AEDC45B2 + 20C2D30C9C3BF1F90064388B207EDFFD798F301C250E42DD4C188E39B910B400 + E67A10F8F80EE2E21F5097FFFACEC070FA0C2468EC0D0F311C3C8FE483001723 + 86D32E6E785D078A5890664200643808A058E0EB60002F5720E5FC3F70D90316 + 0396F94FA343C11620FB001C247F81F83703C36F501C007D70ED3A420EC5022F + 5B3D9C8683E81771E11816FCFA05341888FF40E995ABD919D4357E32B0B160B1 + C0CD5A1BA7E1A012F44D62248605A038005B00F201106FDACACE202D0FB1808D + 9581E1F865240B1CCD35C086FDFB0B29967FFF4514C7FFFE432C3ADD2D8F62C1 + 9B1708C341166DDFCDCE202A0DB1E0F21D3B86F6750719E116D899A8814B447C + 806DAF0FDC0250F0BC7B89301C44EF39C0CEC02FFE93E1FE1388E128C9B477F2 + 7C82A9235D7236D882A993D971AA79F7DB1C6E38DC0262417738C73AA00181F8 + D4201B0E0200C20B50400F1E42A70000000049454E44AE426082} + Name = 'PngImage21' + Background = clWindow + end> + Bitmap = {} + end + inherited JvFormStorage: TJvFormStorage [7] + end + inherited JvAppRegistryStorage: TJvAppRegistryStorage [8] + end + inherited dsDataTable: TDADataSource [9] + end +end diff --git a/Modulos/Pedidos a proveedor/Cliente/uEditorPedidosProveedor.pas b/Modulos/Pedidos a proveedor/Cliente/uEditorPedidosProveedor.pas new file mode 100644 index 0000000..777b637 --- /dev/null +++ b/Modulos/Pedidos a proveedor/Cliente/uEditorPedidosProveedor.pas @@ -0,0 +1,194 @@ +unit uEditorPedidosProveedor; + +interface + +uses + Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, + uCustomEditor, uEditorGrid, uBizPedidosProveedor, ImgList, + PngImageList, StdActns, ActnList, TB2ExtItems, TBXExtItems, TBX, TB2Item, + TB2Dock, TB2Toolbar, JvExControls, JvComponent, JvNavigationPane, + uViewPedidosProveedor, Menus, DB, uDADataTable, ComCtrls, uViewGrid, + uDAScriptingProvider, uDACDSDataTable, JvAppStorage, + JvAppRegistryStorage, JvFormPlacement, pngimage, ExtCtrls, uCustomView, + uViewBase, uViewBarraSeleccion, JvComponentBase; + +type + IEditorPedidosProveedor = interface(IEditorGrid) + ['{B7F914EC-3EB4-436F-98B9-6D3E4486C84F}'] + function GetPedidosProveedor: IBizPedidosProveedor; + procedure SetPedidosProveedor(const Value: IBizPedidosProveedor); + property PedidosProveedor: IBizPedidosProveedor read GetPedidosProveedor write + SetPedidosProveedor; + end; + + TfEditorPedidosProveedor = class(TfEditorGrid, IEditorPedidosProveedor) + frViewBarraSeleccion: TfrViewBarraSeleccion; + procedure actEliminarExecute(Sender: TObject); + procedure actModificarExecute(Sender: TObject); + procedure actNuevoExecute(Sender: TObject); + procedure frViewBarraSeleccionactSeleccionarExecute(Sender: TObject); + procedure frViewBarraSeleccionbCancelarClick(Sender: TObject); + procedure actDuplicarExecute(Sender: TObject); + private + FPedidosProveedor: IBizPedidosProveedor; + protected + function GetPedidosProveedor: IBizPedidosProveedor; + function GetSelectionBarVisible: Boolean; + procedure SetPedidosProveedor(const Value: IBizPedidosProveedor); + procedure SetSelectionBarVisible(const Value: Boolean); + procedure SetViewGrid(const Value: IViewGrid); override; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + property PedidosProveedor: IBizPedidosProveedor read GetPedidosProveedor write + SetPedidosProveedor; + property SelectionBarVisible: Boolean read GetSelectionBarVisible write + SetSelectionBarVisible; + end; + +var + fEditorPedidosProveedor : TfEditorPedidosProveedor; + +implementation + +uses uDataModulePedidosProveedor, uEditorUtils, uBizPresupuestosCliente, uDataModulePresupuestos; + +{$R *.DFM} + +function ShowEditorPedidosProveedor (ABizObject : TDADataTableRules) : TModalResult; +var + AEditor: TfEditorPedidosProveedor; +begin + AEditor := TfEditorPedidosProveedor.Create(Application); + try + AEditor.PedidosProveedor := (ABizObject as IBizPedidosProveedor); + Result := AEditor.ShowModal; + finally + AEditor.Release; + end; +end; + +function ShowSelectEditorPedidosProveedor (ABizObject : TDADataTableRules) : TModalResult; +var + AEditor: TfEditorPedidosProveedor; +begin + AEditor := TfEditorPedidosProveedor.Create(Application); + try + AEditor.PedidosProveedor := (ABizObject as IBizPedidosProveedor); + AEditor.SelectionBarVisible := True; + Result := AEditor.ShowModal; + finally + AEditor.Release; + end; +end; + +{ TfEditorPedidosProveedor } + +{ +***************************** TfEditorPedidosProveedor ***************************** +} +constructor TfEditorPedidosProveedor.Create(AOwner: TComponent); +begin + inherited; + ViewGrid := CreateView(TfrViewPedidosProveedor) as IViewPedidosProveedor; +end; + +destructor TfEditorPedidosProveedor.Destroy; +begin + FPedidosProveedor := NIL; + inherited; +end; + +procedure TfEditorPedidosProveedor.actEliminarExecute(Sender: TObject); +begin + if (MessageDlg('¿Desea borrar este presupuesto?', mtConfirmation, [mbYes, mbNo], 0) = mrYes) then + begin + inherited; + ViewGrid.RefreshGrid; + end; +end; + +procedure TfEditorPedidosProveedor.actModificarExecute(Sender: TObject); +begin + inherited; + PedidosProveedor.Show; + ViewGrid.RefreshGrid; + ViewGrid.SyncFocusedRecordsFromDataSet; +end; + +procedure TfEditorPedidosProveedor.actNuevoExecute(Sender: TObject); +begin + inherited; + PedidosProveedor.Insert; + PedidosProveedor.Show; + ViewGrid.RefreshGrid; + ViewGrid.SyncFocusedRecordsFromDataSet; +end; + +procedure TfEditorPedidosProveedor.frViewBarraSeleccionactSeleccionarExecute( + Sender: TObject); +begin + inherited; + ViewGrid.SyncFocusedRecordsFromGrid; + ModalResult := mrOK; +end; + +procedure TfEditorPedidosProveedor.frViewBarraSeleccionbCancelarClick(Sender: + TObject); +begin + inherited; + frViewBarraSeleccion.actCancelarExecute(Sender); +end; + +function TfEditorPedidosProveedor.GetPedidosProveedor: IBizPedidosProveedor; +begin + Result := FPedidosProveedor; +end; + +function TfEditorPedidosProveedor.GetSelectionBarVisible: Boolean; +begin + Result := frViewBarraSeleccion.Visible +end; + +procedure TfEditorPedidosProveedor.SetPedidosProveedor(const Value: IBizPedidosProveedor); +begin + FPedidosProveedor := Value; + dsDataTable.DataTable := FPedidosProveedor.DataTable; + if Assigned(ViewGrid) then + (ViewGrid as IViewPedidosProveedor).PedidosProveedor := PedidosProveedor; +end; + +procedure TfEditorPedidosProveedor.SetSelectionBarVisible(const Value: Boolean); +begin + frViewBarraSeleccion.Visible := True; + ViewGrid.OnDblClick := frViewBarraSeleccion.actSeleccionar.OnExecute; +end; + +procedure TfEditorPedidosProveedor.SetViewGrid(const Value: IViewGrid); +begin + inherited; + if Assigned(ViewGrid) and Assigned(PedidosProveedor) then + (ViewGrid as IViewPedidosProveedor).PedidosProveedor := PedidosProveedor; +end; + +procedure TfEditorPedidosProveedor.actDuplicarExecute(Sender: TObject); +var + APedido: IBizPedidosProveedor; +begin + inherited; + APedido := dmPedidos.GetItem(PedidosProveedor.CODIGO); + PedidosProveedor.Insert; + PedidosProveedor.CopyFrom(APedido); + PedidosProveedor.DataTable.ApplyUpdates; + ViewGrid.RefreshGrid; +// ViewGrid.GotoFirst; +end; + +initialization + RegisterEditor(IBizPedidosProveedor, ShowEditorPedidosProveedor, etItems); + RegisterEditor(IBizPedidosProveedor, ShowSelectEditorPedidosProveedor, etSelectItems); + +finalization + +end. + diff --git a/Modulos/Pedidos a proveedor/Cliente/uPluginControllerPedidosProveedor.ddp b/Modulos/Pedidos a proveedor/Cliente/uPluginControllerPedidosProveedor.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Pedidos a proveedor/Cliente/uPluginControllerPedidosProveedor.ddp differ diff --git a/Modulos/Pedidos a proveedor/Cliente/uPluginControllerPedidosProveedor.dfm b/Modulos/Pedidos a proveedor/Cliente/uPluginControllerPedidosProveedor.dfm new file mode 100644 index 0000000..bb13a9c --- /dev/null +++ b/Modulos/Pedidos a proveedor/Cliente/uPluginControllerPedidosProveedor.dfm @@ -0,0 +1,220 @@ +object ModulePedidosProveedor: TModulePedidosProveedor + OldCreateOrder = True + DefaultAction = actPedidosProveedor + Description = 'Pedidos a proveedor' + ModuleMenu = MainMenu + ModuleName = 'Pedidos a proveedor' + SmallImages = SmallImages + LargeImages = LargeImages + Author = 'Rodax Software' + Version = '1.0.0' + Left = 652 + Top = 457 + Height = 252 + Width = 401 + object LargeImages: TPngImageList + Height = 24 + Width = 24 + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD2520000026C4944415478DA + 63FCFFFF3FC3A28DC7FF335009C4F95B3222F319611600254836ECEFDF7F40FC + 1F4C8380856F36C3C53DB3705BB0D7D21EC500E7E307711A8EACD674CF2E8679 + ABF730CC5FB211BF05A4B8FC808D2383328B34C3B6D3CB19225F7E6358B87E1F + 610BB0F9005D0C046C0FEE63386CEFC470F3FC21303FECD91786259B0E50E683 + FFFF80610DC47F80AE07B17FFF0386FF9F7F60DFFCF9F79761C596C3A4FB8018 + 00F285EF83770C6B771C23CE0298B749015E77DF306CD87D82380BF0A51C6C00 + A44771E55A864DFB4E126F01AEA082590E9387A9955BBE8661EB8153B4F381E4 + 92550CBB0E9FA1AE0F6EAA108EABC75FEDC8F3C1B4584686847408FBE74F0686 + 5F3F2018C4FEF903824F1C47B320DAC71C9C3B09F98058C3F9251818AEDC45B2 + 20C2D30C9C3BF1F90064388B207EDFFD798F301C250E42DD4C188E39B910B400 + E67A10F8F80EE2E21F5097FFFACEC070FA0C2468EC0D0F311C3C8FE483001723 + 86D32E6E785D078A5890664200643808A058E0EB60002F5720E5FC3F70D90316 + 0396F94FA343C11620FB001C247F81F83703C36F501C007D70ED3A420EC5022F + 5B3D9C8683E81771E11816FCFA05341888FF40E995ABD919D4357E32B0B160B1 + C0CD5A1BA7E1A012F44D62248605A038005B00F201106FDACACE202D0FB1808D + 9581E1F865240B1CCD35C086FDFB0B29967FFF4514C7FFFE432C3ADD2D8F62C1 + 9B1708C341166DDFCDCE202A0DB1E0F21D3B86F6750719E116D899A8814B447C + 806DAF0FDC0250F0BC7B89301C44EF39C0CEC02FFE93E1FE1388E128C9B477F2 + 7C82A9235D7236D882A993D971AA79F7DB1C6E38DC0262417738C73AA00181F8 + D4201B0E0200C20B50400F1E42A70000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD252000001D44944415478DA + B5D4BD4B027118C0F1E737D552D0105843616F838519166551345443A32D2E0D + D15863FF416B2141353544144A2004114144431695841445D00BE950E7905618 + 742F2257CFD9D9EFCE3BEF4EF001797E9CFAFD1C8A125114A19C43648010A2F9 + 8205AF5D7C611296C3FE33961802189F5909C13B1383EFF427B05FB94738B409 + 76BB0DC6E756FEAE7D289EF7EF3E422010280E941ADF589E8754A3AF3820C7F1 + 0DA9D798A5785D8D0D6EAB87F5013A8E81D46BDC521C471750C731F0CEC44DC5 + 5B1B9A41E00510848C36B038D15410C7F3C1FAB261BCABC3998BF31969472B07 + 0A81D97E52D20F62D0E381CCEF5DF3129043CE494F21B03445C4B1D169C36036 + 9B95223C27C0D17E181CCE36E963A19163C1551A40C731747274019DDDED529C + 460EBF1CD601751CCF91D328F40DBA81653905B2976CB10668C5715F5DDEC2D0 + 88473AD3C80ED3681ED08BE3BEBBB997001C1AD98ED79B038AC5F14E9FEE9FF3 + 008D6C3DD41A03EA38FBCDE501FE6F332F090520236BD755C5013A22A8367D3D + F9962C00562315100C06FFFF21D480D938EE743AAD00E4389E3581E1A149D371 + FC0E388ECD03745C17F0F4FA4CC77164401DD705DC2EAFE9B80CE03FA73AAE0B + 9C733EB03A5A714DA05C5376E00756B52DFEBD3C9AE50000000049454E44AE42 + 6082} + Name = 'PngImage1' + Background = clWindow + end> + Left = 232 + Top = 16 + Bitmap = {} + end + object ModuleActionList: TActionList + Images = LargeImages + Left = 40 + Top = 72 + object actPedidosProveedor: TAction + Category = 'Log'#237'stica' + Caption = 'Pedidos a proveedor' + ImageIndex = 0 + OnExecute = actPedidosProveedorExecute + end + end + object MainMenu: TMainMenu + Images = LargeImages + Left = 40 + Top = 16 + object Logistica2: TMenuItem + Tag = 200 + Caption = 'Log'#237'stica' + GroupIndex = 1 + ImageIndex = 0 + object N1: TMenuItem + Tag = 3000 + Caption = '-' + end + object Presupuestosdecliente1: TMenuItem + Tag = 3001 + Action = actPedidosProveedor + end + end + end + object SmallImages: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001864944415478DA + 63FCFFFF3FC384055BFF3390010A12BC1919610600394469FAF3F71FC3EF3F7F + 192CBCB3192EEE99856AC05E4B2B14C5CEC78F81696471AB030719662EDFC530 + 7FC9464C03F0815FBFFF826D06D10BD7EDC36E00BA0BB001DDAD3B19966D3A84 + DB0098B341E01F50EECF9F7F709BCFB93B33686EDCCEB06ADB11FC06C05C627B + E830C3613B5BB8CD97BDDD1954D66E6158BFEB387E0360367FBA7990E1C5C218 + 7C3E72C130C0F1D85186FD56D66059719B070CAA2D350CECEC59183A7FFE9CC6 + 303BB68501C30090B3617E7EDAACCCA0D3FD0CAC180EBE7F6760F8F19D61FA0E + 4306966DA9080372623D190EDAD8A0D80272018A0120CD1FDE81E9E9279D510D + 488F7463F805B4F9CF6F50A8FF61B8EAEB816A004CF37B20FEF19361FACD6054 + 0312439DE19A415EB815E88D30E0432F42F3870F1017BC4A45352036C011AE19 + 140320D7FC9E6A0031E041354233D80540037E95A31A10E163CBB062CB61D438 + BA9A0A8E85E9CBE5B1C6218A01A084810EB478DF3058B39EC099081CE4195C00 + 45135E518E0B4E380000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD2520000022E4944415478DA + 8D93CF6BD36018C7BF6997A45DD376EA70CA18D31D44981741280C44119DA83D + C87619781A1EFD1BC49B2028B28353141111A43BE8CD934E65A8D4A1686B61B5 + A31DD8CCBAFEDAACEDF226B389EFFB26CBCC54E6030FEFCB4B3E9FE79B9744B0 + 2C0B8220E0F7BA3AB2D75A282DE07F4AD82C60F0851B8F50530BF85EF98A6236 + 8DCCAB69B0B366BD8C95B24ACF4BB877FD226AFD635EC13A5CF99243A356869A + 4D51F8398799EC476D09E5621E0F6F5EC6C8D938EE7C503604EB7055CDA34127 + A8B90C3ECD3CE570A35AA2FD0DCB4B2AEE4F5CC29953C35094102667655B706D + 7480C3F97412AD951AAAC502E6DEBCE47031974673B942BB8AA9DB57103F7D12 + 9D9D413ED4154C8C0BD6FCE7AD2F6C2816C3CE9E6E8862077C3E9F57307CE2FC + 1F80655A308C35E844C7B3273318D8D78FE8B6282449A41211B7DE05FE2D304D + 13866EC34433F0FAC55BF4EDE945A42B0C910A6459C6DD94F27781D936F964B2 + AADB02DAEF9329ECEEED4138A240944548B2840773DBBD02B637596C6238205D + 352AD175643E66B1A3BB0B0A15489204292061AAB0CB2B68D3C96B34367120BE + 3AB2F96C01E1A8825028083920F35778BCD8B721387E6C9C42060788465C50A3 + 12B24AB0582C2110946907282C61BA3588442221B882C343E75C50A30093B104 + 84D849EAD53AFC1D7E0ECFFA631C76FF0526387470D4135977405B62A0D56CB2 + C791891C71618FE0C0FEB873618623B2E33361FB679B4A340A1FF5C01E41928C + 6DF9256E8659FD02D3B7960923D6946A0000000049454E44AE426082} + Name = 'PngImage1' + Background = clWindow + end> + PngOptions = [pngBlendOnDisabled, pngGrayscaleOnDisabled] + Left = 308 + Top = 16 + Bitmap = {} + end + object ExtraImages: TPngImageList + Height = 28 + Width = 28 + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D494844520000001C0000001C0806000000720DDF + 940000000970485973000017120000171201679FD252000003184944415478DA + BDD6DB4FD3501800F06F82F6C107E28391B8183418F14570720B48C655AEC328 + 8A08A2F1CD3FC3F860F8030CC6784110C1B1B13137184C186C5CD62108084443 + A2214613131FBC3C88BBB43DF6B4A3ACA36B3B48F8B6939EB6A7E777BE73D6B5 + 1A8410EC6568303830BECAA9B8CE15861F84B0CF7EB86FA4CE0D92FB2248DA97 + 24D9F1F5DA6C4D5CD0EA5E410DE567763C6A86ED83610749D30CD00C03858DB7 + 60C9618C0F5AC696D1958A4C7017146E6B504EFAE242B1ED0B263CF0D8380A9D + 966E7560A281C18CBA0B40B956C1B96085D61F01E8308F2983FD6FDEA3AB9559 + 7133943A5EEA9B8189C2F3B0B64C0AC79ABF6F4097755C1934BB965063D559D5 + 99E175A269C46DF1DA5114231CEBB17B9441936B115DABD24966A23670A60D5F + FE8071704A0538C282D53C183D4589C6A5F5DF60724E2B837DC30BA8A9E61C07 + CAFD2AE5025F7BCA3A0416974F19343ADF21F646DD3598DEEF00DBA85F197CE5 + 9C47CDB5390228B7969B038A6EB379CD71931D1CEE5965B077680EB5D4E5EE3A + 436DAF0D46BC732AC041163424063EBCA951D56E33BEFED5439BD5ABE1C09EC1 + B7E886214FF59462ECF69DEDE782418050802FB81E0CF0C54FC6802F1DB3A8B5 + 3E5F55863BC1525201563F4783F659D4529FC7FD55C981184B3EA47E1AA95F5B + 180E017CF19A64D7301FBC4545B253BA769294CC2E80B3D9E0330A44320BFD03 + 989BE7A7B2583709DE45BD186CAAC985E962BD6286B88344026338446097CD87 + 1AAB73802C2D5104A53214A690664B18208CD790CDF0C3C7AD7322B07360065D + AEC886F9CA32D9D1C69B521CA1100BB1858A6CFBCC04649C0EC281E438E0C532 + 5DE491438B5E1768867F7DA0D8FD89BBA992602C86B3B4D8083891CE82FB8143 + 45E073EB343294E86431BC3F79EFE836500A0BB3C53E4480368DCF10A3E44A14 + D8619942B5C559B2184D2198B9AF1581F1305C1F1E25E0B09607573EF118BE86 + 039FF54FA21A7D962C86B7FEB663022887E1ED98878094234158FFB68509E053 + B31755156572CF32B938E0367060FB0342D52DF1339C2FC204F089C983DABB1F + 2976A027FC7090495385E188C504702FE33F1F65CAE7611BEC0A000000004945 + 4E44AE426082} + Name = 'PngImage0' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D494844520000001C0000001C0806000000720DDF + 940000000970485973000017120000171201679FD2520000020F4944415478DA + E5D4DB2B04511800F06FB659D7CD2D892816B984258992242129E5924BDEE491 + 47FF81571E9495072F44BB1EF69127CAA5DC436E895C4A92AC6CC48E9961EC39 + 63C7EEEC65CEAC6D5F7CF575E69C33F3FD3AA773861204014219D4FF02298AF2 + FAD2709B5EB8BEBF0E18195B17A4C28A20C2FA8D16E059065EACF7F0FE6203FB + AB986B9619D0EB93A169D0E8757E7A6C089ED2BBC1643291814E4C2CF0EC13F3 + 368FB0AE8E5618DF0E27038381A1200283851181C1C414C191F6CC3F611DED2D + A0D150E4E0402515F0A56CACAF83C8A808A069DA0DF50B8EF65242437D1F11C0 + B13C701C87DBA58555282E2B045A4B83D691AE685040578C6339585DDC808292 + 3C0CC9D13F83728CE378D858D981DC826C8CC9D189DD88C0C10F86151119BAB7 + 7D08593919222843270F74EAC1AFCF2FBC126F181A3FDA3F85F4CC34097245A7 + 4EE2D4814A18EA9F1D5F404A6A1284858779A0B3E789E42009869E2FCF6F2031 + 29016FA11C9DBB4A26034931D691B73777101B1F8341396AB94D53064930C6FE + 21818F0F5688D6454907C589CE5BB3C16C36BBFF3EE5605D6DAF072616E781E7 + C53196FD5D1DEADB9E6D18D06A7F4FE73263C018AAEB17ACAAEC715FCD4F515F + 186ADFDFDE1C975C23615B9A720953042BCA3A556168FB19C68EBF47E8A1AEDA + 0D53044B0DADAA30144EF038A6C60353048BF29B55614ED017A6086E32DD1048 + F8C2FC82A1889083DF93D867F65E51168D0000000049454E44AE426082} + Name = 'PngImage1' + Background = clWindow + end> + Left = 232 + Top = 80 + Bitmap = {} + end +end diff --git a/Modulos/Pedidos a proveedor/Cliente/uPluginControllerPedidosProveedor.pas b/Modulos/Pedidos a proveedor/Cliente/uPluginControllerPedidosProveedor.pas new file mode 100644 index 0000000..7367fce --- /dev/null +++ b/Modulos/Pedidos a proveedor/Cliente/uPluginControllerPedidosProveedor.pas @@ -0,0 +1,73 @@ +unit uPluginControllerPedidosProveedor; + +interface + +uses + uModuleController, uInterfaces, uHostManager, Menus, Classes, ActnList, + ImgList, Controls, PngImageList; + +type + IMCPedidosProveedor = interface(IInterface) + ['{6C7D0D0B-96B9-4A8A-B596-E7062A4A7564}'] + end; + + TModulePedidosProveedor = class(TModuleController, IMCPedidosProveedor) + actPedidosProveedor: TAction; + ExtraImages: TPngImageList; + LargeImages: TPngImageList; + MainMenu: TMainMenu; + ModuleActionList: TActionList; + SmallImages: TPngImageList; + Logistica2: TMenuItem; + Presupuestosdecliente1: TMenuItem; + N1: TMenuItem; + procedure actPedidosProveedorExecute(Sender: TObject); + public + end; + +implementation + +{$R *.dfm} + +uses + Forms, Dialogs, uGUIBase, uCustomEditor, SysUtils, uBizPedidosProveedor, + uDataModulePedidosProveedor, uEditorPedidosProveedor; + +function GetModule : TModuleController; +begin + Result := TModulePedidosProveedor.Create(NIL); +end; + +exports + GetModule name GET_MODULE_FUNC; + +{ +******************************* TModuleContactos ******************************* +} + +procedure TModulePedidosProveedor.actPedidosProveedorExecute(Sender: TObject); +var + aObj: IEditorPedidosProveedor; + APedidos : IBizPedidosProveedor; +begin + APedidos := dmPedidos.GetItems; + aObj := TfEditorPedidosProveedor.Create(Application); + try + with aObj do + begin + PedidosProveedor := APedidos; + ShowEmbedded; + end; + finally + APedidos := NIL; + aObj := NIL; + end; +end; + +initialization + RegisterModuleClass(TModulePedidosProveedor); + +finalization + UnRegisterModuleClass(TModulePedidosProveedor); + +end. diff --git a/Modulos/Pedidos a proveedor/Cliente/uViewAlbaranCliente.dfm b/Modulos/Pedidos a proveedor/Cliente/uViewAlbaranCliente.dfm new file mode 100644 index 0000000..a7f8fde --- /dev/null +++ b/Modulos/Pedidos a proveedor/Cliente/uViewAlbaranCliente.dfm @@ -0,0 +1,161 @@ +inherited frViewAlbaranCliente: TfrViewAlbaranCliente + Width = 754 + Height = 369 + Align = alClient + Constraints.MinHeight = 330 + Constraints.MinWidth = 754 + inline frViewDatosYSeleccionContacto1: TfrViewDatosYSeleccionContacto + Left = 362 + Top = 0 + Width = 391 + Height = 228 + Constraints.MinHeight = 202 + Constraints.MinWidth = 350 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 0 + inherited Label5: TLabel + Width = 40 + Caption = 'Cliente' + end + inherited Bevel1: TBevel + Left = 56 + Width = 321 + end + inherited ToolBar1: TToolBar + ButtonWidth = 129 + inherited ToolButton3: TToolButton + Left = 106 + end + inherited ToolButton2: TToolButton + Left = 114 + Caption = 'Dar de alta un cliente' + end + end + inherited edtlNombre: TcxDBTextEdit + Height = 21 + Width = 296 + end + inherited edtPoblacion: TcxDBTextEdit + Height = 21 + Width = 296 + end + inherited edtProvincia: TcxDBTextEdit + Height = 21 + Width = 296 + end + inherited edtNIFCIF: TcxDBTextEdit + Height = 21 + Width = 296 + end + inherited edtCalle: TcxDBTextEdit + Height = 21 + Width = 296 + end + inherited ToolBar2: TToolBar + Left = 181 + ButtonWidth = 178 + inherited ToolButton4: TToolButton + Caption = 'Ver ficha completa del cliente...' + end + end + inherited ActionList1: TActionList + inherited actElegirContacto: TAction + Caption = 'Elegir un cliente' + end + end + end + inline frViewDatosAlbaranCliente1: TfrViewDatosAlbaranCliente + Left = 0 + Top = 0 + Width = 360 + Height = 110 + Constraints.MinHeight = 110 + Constraints.MinWidth = 360 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 1 + inherited edtFecha: TcxDBDateEdit + Width = 245 + end + inherited edtFechaPago: TcxDBDateEdit + Width = 245 + end + inherited eReferencia: TcxDBTextEdit + Width = 245 + end + end + inline frViewFormaPago1: TfrViewFormaPago + Left = 0 + Top = 221 + Width = 360 + Height = 170 + Anchors = [akLeft, akTop, akBottom] + Constraints.MinWidth = 300 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 3 + inherited Bevel1: TBevel + Width = 252 + end + inherited memFormaPago: TcxDBMemo + Height = 134 + Width = 329 + end + end + inline frViewObservaciones1: TfrViewObservaciones + Left = 368 + Top = 221 + Width = 391 + Height = 170 + Anchors = [akLeft, akTop, akBottom] + Constraints.MinWidth = 300 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 2 + inherited Bevel1: TBevel + Width = 283 + end + inherited memObservaciones: TcxDBMemo + Height = 134 + Width = 360 + end + end + inline frViewPresupuestoAlbaran1: TfrViewPresupuestoAlbaran + Left = 0 + Top = 104 + Width = 360 + Height = 121 + Constraints.MinHeight = 90 + Constraints.MinWidth = 360 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 4 + inherited edtlReferencia: TcxTextEdit + Height = 21 + Width = 245 + end + end + object DADataSource: TDADataSource + end +end diff --git a/Modulos/Pedidos a proveedor/Cliente/uViewAlbaranCliente.pas b/Modulos/Pedidos a proveedor/Cliente/uViewAlbaranCliente.pas new file mode 100644 index 0000000..ff1ab42 --- /dev/null +++ b/Modulos/Pedidos a proveedor/Cliente/uViewAlbaranCliente.pas @@ -0,0 +1,78 @@ +unit uViewAlbaranCliente; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, uBizAlbaranesCliente, DB, uDADataTable, uCustomView, + uViewDatosYSeleccionContacto, uViewDatosAlbaranCliente, + uViewObservaciones, uViewFormaPago, AppEvnts, uViewPresupuestoAlbaran; + +type + IViewAlbaranCliente = interface(IViewBase) + ['{4AF36827-838E-40AC-BEB5-72D69C721E6B}'] + function GetAlbaranCliente: IBizAlbaranesCliente; + procedure SetAlbaranCliente(const Value: IBizAlbaranesCliente); + property AlbaranCliente: IBizAlbaranesCliente read GetAlbaranCliente + write SetAlbaranCliente; + end; + + TfrViewAlbaranCliente = class(TfrViewBase, IViewAlbaranCliente) + DADataSource: TDADataSource; + frViewDatosYSeleccionContacto1: TfrViewDatosYSeleccionContacto; + frViewDatosAlbaranCliente1: TfrViewDatosAlbaranCliente; + frViewObservaciones1: TfrViewObservaciones; + frViewFormaPago1: TfrViewFormaPago; + frViewPresupuestoAlbaran1: TfrViewPresupuestoAlbaran; + private + FAlbaranCliente : IBizAlbaranesCliente; + procedure OnContactoChanged (Sender : TObject); + protected + function GetAlbaranCliente: IBizAlbaranesCliente; + procedure SetAlbaranCliente(const Value: IBizAlbaranesCliente); + public + property AlbaranCliente: IBizAlbaranesCliente read GetAlbaranCliente + write SetAlbaranCliente; + end; + +var + frViewAlbaranCliente: TfrViewAlbaranCliente; + +implementation + +uses uBizContacto, uExceptions; + +{$R *.dfm} + +{ TfrViewAlbaranCliente } + +function TfrViewAlbaranCliente.GetAlbaranCliente: IBizAlbaranesCliente; +begin + Result := FAlbaranCliente; +end; + +procedure TfrViewAlbaranCliente.OnContactoChanged(Sender: TObject); +begin + FAlbaranCliente.Cliente := (frViewDatosYSeleccionContacto1.Contacto as IBizCliente); +end; + +procedure TfrViewAlbaranCliente.SetAlbaranCliente( + const Value: IBizAlbaranesCliente); +begin + FAlbaranCliente := Value; + if Assigned(FAlbaranCliente) then + DADataSource.DataTable := FAlbaranCliente.DataTable + else + DADataSource.DataTable := NIL; + + frViewDatosAlbaranCliente1.DADataSource.DataTable := DADataSource.DataTable; + frViewObservaciones1.DADataSource.DataTable := DADataSource.DataTable; + frViewFormaPago1.DADataSource.DataTable := DADataSource.DataTable; + + frViewDatosYSeleccionContacto1.Contacto := FAlbaranCliente.Cliente; + frViewDatosYSeleccionContacto1.OnContactoChanged := OnContactoChanged; + + frViewPresupuestoAlbaran1.AlbaranCliente := FAlbaranCliente; +end; + +end. diff --git a/Modulos/Pedidos a proveedor/Cliente/uViewDatosPedido.ddp b/Modulos/Pedidos a proveedor/Cliente/uViewDatosPedido.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Pedidos a proveedor/Cliente/uViewDatosPedido.ddp differ diff --git a/Modulos/Pedidos a proveedor/Cliente/uViewDatosPedido.dfm b/Modulos/Pedidos a proveedor/Cliente/uViewDatosPedido.dfm new file mode 100644 index 0000000..b27512b --- /dev/null +++ b/Modulos/Pedidos a proveedor/Cliente/uViewDatosPedido.dfm @@ -0,0 +1,91 @@ +inherited frViewDatosPedido: TfrViewDatosPedido + Width = 443 + Height = 124 + Align = alTop + Visible = False + object GroupBox1: TGroupBox + Left = 8 + Top = 8 + Width = 553 + Height = 105 + Caption = 'Datos del pedido' + TabOrder = 0 + object Label4: TLabel + Left = 16 + Top = 34 + Width = 56 + Height = 13 + Caption = 'Referencia:' + end + object Label2: TLabel + Left = 223 + Top = 34 + Width = 54 + Height = 13 + Caption = 'Proveedor:' + end + object Label1: TLabel + Left = 16 + Top = 66 + Width = 37 + Height = 13 + Caption = 'Cliente:' + end + object eReferencia: TcxDBTextEdit + Left = 84 + Top = 31 + DataBinding.DataField = 'REFERENCIA' + DataBinding.DataSource = DADataSource + Enabled = False + Properties.ReadOnly = True + Style.LookAndFeel.NativeStyle = True + StyleDisabled.BorderStyle = ebs3D + StyleDisabled.Color = clBtnFace + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clActiveCaption + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 0 + Width = 107 + end + object cxDBTextEdit2: TcxDBTextEdit + Left = 291 + Top = 31 + DataBinding.DataField = 'NOMBRE' + DataBinding.DataSource = DADataSource + Enabled = False + Properties.ReadOnly = True + Style.LookAndFeel.NativeStyle = True + StyleDisabled.BorderStyle = ebs3D + StyleDisabled.Color = clBtnFace + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clActiveCaption + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 1 + Width = 243 + end + object cxDBTextEdit1: TcxDBTextEdit + Left = 84 + Top = 63 + DataBinding.DataField = 'NOMBRECLIENTE' + DataBinding.DataSource = DADataSource + Enabled = False + Properties.ReadOnly = True + Style.LookAndFeel.NativeStyle = True + StyleDisabled.BorderStyle = ebs3D + StyleDisabled.Color = clBtnFace + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clActiveCaption + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 2 + Width = 450 + end + end + object DADataSource: TDADataSource + DataTable = dmPresupuestos.tbl_DetallesPresupuestos + Left = 520 + Top = 8 + end +end diff --git a/Modulos/Pedidos a proveedor/Cliente/uViewDatosPedido.pas b/Modulos/Pedidos a proveedor/Cliente/uViewDatosPedido.pas new file mode 100644 index 0000000..b61bd9e --- /dev/null +++ b/Modulos/Pedidos a proveedor/Cliente/uViewDatosPedido.pas @@ -0,0 +1,61 @@ +unit uViewDatosPedido; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, StdCtrls, cxControls, cxContainer, cxEdit, + cxTextEdit, cxDBEdit, DB, uDADataTable, uBizPedidosProveedor; + +type + IViewDatosPedido = interface(IViewBase) + ['{0882CE51-5185-4809-983E-6B2F01BA5FD7}'] + function GetPedido: IBizPedidosProveedor; + procedure SetPedido(const Value: IBizPedidosProveedor); + property Pedido: IBizPedidosProveedor read GetPedido write SetPedido; + end; + + TfrViewDatosPedido = class(TfrViewBase, IViewDatosPedido) + DADataSource: TDADataSource; + GroupBox1: TGroupBox; + Label4: TLabel; + eReferencia: TcxDBTextEdit; + Label2: TLabel; + cxDBTextEdit2: TcxDBTextEdit; + Label1: TLabel; + cxDBTextEdit1: TcxDBTextEdit; + private + FPedido : IBizPedidosProveedor; + function GetPedido: IBizPedidosProveedor; + procedure SetPedido(const Value: IBizPedidosProveedor); + public + property Pedido: IBizPedidosProveedor read GetPedido write SetPedido; + end; + +var + frViewDatosPedido: TfrViewDatosPedido; + +implementation + +{$R *.dfm} + +{ TfrViewDatosPedido } + +function TfrViewDatosPedido.GetPedido: IBizPedidosProveedor; +begin + Result := FPedido; +end; + +procedure TfrViewDatosPedido.SetPedido(const Value: IBizPedidosProveedor); +begin + FPedido := Value; + if Assigned(FPedido) then + begin + DADataSource.DataTable := FPedido.DataTable; + Self.Visible := True; + end + else + DADataSource.DataTable := NIL; +end; + +end. diff --git a/Modulos/Pedidos a proveedor/Cliente/uViewDatosPedidoProveedor.ddp b/Modulos/Pedidos a proveedor/Cliente/uViewDatosPedidoProveedor.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Pedidos a proveedor/Cliente/uViewDatosPedidoProveedor.ddp differ diff --git a/Modulos/Pedidos a proveedor/Cliente/uViewDatosPedidoProveedor.dfm b/Modulos/Pedidos a proveedor/Cliente/uViewDatosPedidoProveedor.dfm new file mode 100644 index 0000000..1eebad1 --- /dev/null +++ b/Modulos/Pedidos a proveedor/Cliente/uViewDatosPedidoProveedor.dfm @@ -0,0 +1,179 @@ +inherited frViewDatosPedidoProveedor: TfrViewDatosPedidoProveedor + Width = 360 + Height = 135 + Constraints.MinHeight = 110 + Constraints.MinWidth = 360 + DesignSize = ( + 360 + 135) + object Bevel1: TBevel + Left = 114 + Top = 8 + Width = 233 + Height = 9 + Anchors = [akLeft, akTop, akRight] + Shape = bsBottomLine + end + object Label5: TLabel + Left = 8 + Top = 8 + Width = 97 + Height = 13 + Caption = 'Datos del pedido' + Font.Charset = DEFAULT_CHARSET + Font.Color = clActiveCaption + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + ParentFont = False + end + object Label1: TLabel + Left = 16 + Top = 62 + Width = 47 + Height = 13 + Caption = 'Situaci'#243'n:' + end + object Label2: TLabel + Left = 16 + Top = 86 + Width = 67 + Height = 13 + Caption = 'Fecha confir.:' + end + object Label3: TLabel + Left = 16 + Top = 110 + Width = 74 + Height = 13 + Caption = 'Fecha entrega:' + end + object Label6: TLabel + Left = 16 + Top = 37 + Width = 68 + Height = 13 + Caption = 'Fecha pedido:' + end + object cbSituacion: TcxDBImageComboBox + Left = 100 + Top = 57 + DataBinding.DataField = 'SITUACION' + DataBinding.DataSource = DADataSource + Properties.Images = ImageList + Properties.ImmediatePost = True + Properties.Items = <> + Style.LookAndFeel.Kind = lfUltraFlat + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.Kind = lfUltraFlat + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.Kind = lfUltraFlat + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.Kind = lfUltraFlat + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 1 + Width = 245 + end + object edtFechaConfirmacion: TcxDBDateEdit + Left = 100 + Top = 82 + Anchors = [akLeft, akTop, akRight] + DataBinding.DataField = 'FECHACONFIRMACION' + DataBinding.DataSource = DADataSource + Style.LookAndFeel.NativeStyle = True + Style.Shadow = False + Style.ButtonTransparency = ebtNone + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 2 + Width = 245 + end + object edtFechaEntrega: TcxDBDateEdit + Left = 100 + Top = 106 + Anchors = [akLeft, akTop, akRight] + DataBinding.DataField = 'FECHAENTREGA' + DataBinding.DataSource = DADataSource + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 3 + Width = 245 + end + object edtFechaPedido: TcxDBDateEdit + Left = 100 + Top = 33 + Anchors = [akLeft, akTop, akRight] + DataBinding.DataField = 'FECHAPEDIDO' + DataBinding.DataSource = DADataSource + Style.LookAndFeel.NativeStyle = True + Style.Shadow = False + Style.ButtonTransparency = ebtNone + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 0 + Width = 245 + end + object DADataSource: TDADataSource + Left = 192 + end + object ImageList: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD2520000014B4944415478DA + 6364C007F47A8C9999FE9F6162FCCFF0FB2F9309C3A592B31CC61DFF7F9CAD60 + 0449F398B6FF67C4A79FD9A0FBFFDF0BA56035EC469DFF7F9E2B87AB0769FE72 + BA9211AF01AC865DFF7F9F2F03AB41B719A419C4C66B001BD0805F5003B84C3A + FE7F3B53C188AC59D0A20DBF17909DCD6DD2FEFFEB994A0CF5780D00052217DB + 9F338C0CFF19BEFE620507226906100118B327BDFCFFE7EF6F86BF7F20F80F8C + FEFB07C14762FFF9FD0B48FF82D2BF1918D3FB9FFCB734944631F5CFDF7F0CBF + 7EFF65F809C67FE0EC5F403688FEF1EB0F185F3AB2938131A5FBFE7F1B530592 + 35FFF8F597E1DAB16D0C8C89EDB7FEDB5BAA92AC1944DF3ABE858131B6F9EA7F + 675B2D923583F0BD139B1918A3EA2FFC77B2D32559F3AF3F7F191E9CD8C0C018 + 5673E6BF838D1EC99A41006C4070C5F1FF84A2EA3732FFF76F301B9E0EFEFFFF + 4F514202003F5091819E0016AB0000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD2520000010E4944415478DA + 63648001BD9EFF0CC8E052092350CC18C83A031531018A9D05AB03C941F530A2 + 180093C026862E0FE5230B10B40D1B1BD546749BB16922CA0BF80C400384BC80 + 2986D300320163F0AC3BFFFFFEFECBF0E70F100369301BCA87B1FFFE81F2FFFC + 63F8FDEB0FC31F20FE0D9203D28C01536FFE6F705663F80033F20784FA00657F + 4016FB815003129F367B3503A3CFC46BFF4BDC3549D208634F9CB79C81D1A3E7 + F2FF4375E638FDD8B6EE2B8646984573672C6660746DBFF0FF68B3154E03CA96 + 7DC56A3B08CC98BD8081D1B1E9ECFF783B23BC4E45D7080353A6CE6160B4AD3B + F53FD8CA94248D303061C24C0646ABCAE3FF0945D59F5F7F816C3431200D4E07 + FFFFFF67A00400007E51EECD81D1728E0000000049454E44AE426082} + Name = 'PngImage1' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000000F54944415478DA + 6364D0EBF9CF70A98411481B3330309C61800013A0D8591C6210F52000643322 + 19802281530C06A07CF20C4062936E00D5BC00058C24072286011402C6EC492F + FFFFF9FB9BE1EF1F08FE03A3FFFE41F091D87F7EFF02D2BFA0F46F06C6F4FE27 + FF2D0DA5514CFDF3F71FC3AFDF7F197E82F11F38FB17900DA27FFCFA03C6978E + EC64604CE9BEFFDFC6548164CD3F7EFD65B8766C1B036362FBADFF2B9B0DC8F2 + BF9C7D2303636CF3D5FF6BDB4DC93240CAAA868131AAFEC27F273B5DA29D0D63 + FFFAF397E1C1890D0C8C613567FE3BD8E891AC1904C00604571CFF4F28AA7E23 + F37FFF06B3E1E9E0FFFFFF1425240089FD645E7C3F344D0000000049454E44AE + 426082} + Name = 'PngImage2' + Background = clWindow + end> + Left = 104 + Top = 65528 + Bitmap = {} + end +end diff --git a/Modulos/Pedidos a proveedor/Cliente/uViewDatosPedidoProveedor.pas b/Modulos/Pedidos a proveedor/Cliente/uViewDatosPedidoProveedor.pas new file mode 100644 index 0000000..bbd0143 --- /dev/null +++ b/Modulos/Pedidos a proveedor/Cliente/uViewDatosPedidoProveedor.pas @@ -0,0 +1,69 @@ +unit uViewDatosPedidoProveedor; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, DB, uDADataTable, cxControls, cxContainer, cxEdit, + cxTextEdit, cxMaskEdit, cxDropDownEdit, cxCalendar, cxDBEdit, StdCtrls, + Mask, DBCtrls, ExtCtrls, cxGraphics, ImgList, PngImageList, + cxImageComboBox; + +type + TfrViewDatosPedidoProveedor = class(TfrViewBase) + Bevel1: TBevel; + Label5: TLabel; + Label1: TLabel; + Label2: TLabel; + edtFechaConfirmacion: TcxDBDateEdit; + Label3: TLabel; + edtFechaEntrega: TcxDBDateEdit; + DADataSource: TDADataSource; + Label6: TLabel; + edtFechaPedido: TcxDBDateEdit; + ImageList: TPngImageList; + cbSituacion: TcxDBImageComboBox; + private + { Private declarations } + public + constructor Create(AOwner: TComponent); override; + end; + +var + frViewDatosPedidoProveedor: TfrViewDatosPedidoProveedor; + +implementation + +uses uBizPedidosProveedor; + +{$R *.dfm} + +constructor TfrViewDatosPedidoProveedor.Create(AOwner: TComponent); +begin + inherited; + with cbSituacion.Properties.Items do + begin + Clear; + with Add do + begin + Description := SITUACION_PENDIENTE; + ImageIndex := 0; + Value := SITUACION_PENDIENTE; + end; + with Add do + begin + Description := SITUACION_PARCIAL; + ImageIndex := 1; + Value := SITUACION_PARCIAL; + end; + with Add do + begin + Description := SITUACION_RECIBIDO; + ImageIndex := 2; + Value := SITUACION_RECIBIDO; + end; + end; + cbSituacion.ItemIndex := 0; +end; + +end. diff --git a/Modulos/Pedidos a proveedor/Cliente/uViewDestinoPedidoProveedor.ddp b/Modulos/Pedidos a proveedor/Cliente/uViewDestinoPedidoProveedor.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Pedidos a proveedor/Cliente/uViewDestinoPedidoProveedor.ddp differ diff --git a/Modulos/Pedidos a proveedor/Cliente/uViewDestinoPedidoProveedor.dfm b/Modulos/Pedidos a proveedor/Cliente/uViewDestinoPedidoProveedor.dfm new file mode 100644 index 0000000..7f0359b --- /dev/null +++ b/Modulos/Pedidos a proveedor/Cliente/uViewDestinoPedidoProveedor.dfm @@ -0,0 +1,113 @@ +inherited frViewDestinoPedidoProveedor: TfrViewDestinoPedidoProveedor + Width = 377 + Height = 197 + Constraints.MinHeight = 110 + Constraints.MinWidth = 360 + DesignSize = ( + 377 + 197) + object Bevel1: TBevel + Left = 123 + Top = 8 + Width = 241 + Height = 9 + Anchors = [akLeft, akTop, akRight] + Shape = bsBottomLine + end + object Label5: TLabel + Left = 8 + Top = 8 + Width = 107 + Height = 13 + Caption = 'Destino del pedido' + Font.Charset = DEFAULT_CHARSET + Font.Color = clActiveCaption + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + ParentFont = False + end + object cbAlmacen: TcxDBLookupComboBox + Left = 36 + Top = 54 + Anchors = [akLeft, akTop, akRight] + DataBinding.DataField = 'CODIGOALMACEN' + DataBinding.DataSource = DADataSource + Properties.DropDownListStyle = lsFixedList + Properties.GridMode = True + Properties.ImmediatePost = True + Properties.KeyFieldNames = 'CODIGO' + Properties.ListColumns = < + item + FieldName = 'NOMBRE' + end> + Properties.ListOptions.AnsiSort = True + Properties.ListOptions.GridLines = glNone + Properties.ListOptions.ShowHeader = False + Properties.ListSource = DADataSource2 + Properties.OnEditValueChanged = cbAlmacenPropertiesEditValueChanged + Properties.OnValidate = cbAlmacenPropertiesValidate + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 1 + Width = 325 + end + object rdxDestino1: TRadioButton + Left = 18 + Top = 33 + Width = 255 + Height = 17 + Action = actAlmacen + Caption = 'Recibir el pedido en el almac'#233'n:' + TabOrder = 0 + TabStop = True + end + object rdxDestino2: TRadioButton + Left = 18 + Top = 89 + Width = 287 + Height = 17 + Action = actOtro + Caption = 'Recibir el pedido en esta direcci'#243'n:' + TabOrder = 2 + end + object memDireccion: TcxDBMemo + Left = 36 + Top = 113 + Anchors = [akLeft, akTop, akRight] + DataBinding.DataField = 'DIRECCIONCOMPLETA' + DataBinding.DataSource = DADataSource + Properties.ScrollBars = ssVertical + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 3 + Height = 71 + Width = 326 + end + object DADataSource: TDADataSource + Top = 48 + end + object ActionList1: TActionList + Left = 216 + Top = 24 + object actAlmacen: TAction + Caption = 'Almac'#233'n' + Checked = True + GroupIndex = 1 + OnExecute = actAlmacenExecute + end + object actOtro: TAction + Caption = 'Otro' + GroupIndex = 1 + OnExecute = actOtroExecute + end + end + object DADataSource2: TDADataSource + Left = 248 + Top = 24 + end +end diff --git a/Modulos/Pedidos a proveedor/Cliente/uViewDestinoPedidoProveedor.pas b/Modulos/Pedidos a proveedor/Cliente/uViewDestinoPedidoProveedor.pas new file mode 100644 index 0000000..b6e3b39 --- /dev/null +++ b/Modulos/Pedidos a proveedor/Cliente/uViewDestinoPedidoProveedor.pas @@ -0,0 +1,155 @@ +unit uViewDestinoPedidoProveedor; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, DB, uDADataTable, cxControls, cxContainer, cxEdit, + cxTextEdit, cxMaskEdit, cxDropDownEdit, cxCalendar, cxDBEdit, StdCtrls, + Mask, DBCtrls, ExtCtrls, cxGraphics, cxMemo, ActnList, cxLookupEdit, + cxDBLookupEdit, cxDBLookupComboBox, uBizAlmacenes, uBizPedidosProveedor; + +type + IViewDestinoPedidoProveedor = interface(IViewBase) + ['{1DD198BD-9F21-47D1-804E-ED3B627C9FA9}'] + function GetPedidoProveedor: IBizPedidosProveedor; + procedure SetPedidoProveedor(const Value: IBizPedidosProveedor); + property PedidoProveedor: IBizPedidosProveedor read GetPedidoProveedor + write SetPedidoProveedor; + end; + + TfrViewDestinoPedidoProveedor = class(TfrViewBase) + Bevel1: TBevel; + Label5: TLabel; + DADataSource: TDADataSource; + rdxDestino1: TRadioButton; + rdxDestino2: TRadioButton; + memDireccion: TcxDBMemo; + ActionList1: TActionList; + actAlmacen: TAction; + actOtro: TAction; + DADataSource2: TDADataSource; + cbAlmacen: TcxDBLookupComboBox; + procedure actAlmacenExecute(Sender: TObject); + procedure actOtroExecute(Sender: TObject); + procedure cbAlmacenPropertiesEditValueChanged(Sender: TObject); + procedure cbAlmacenPropertiesValidate(Sender: TObject; + var DisplayValue: Variant; var ErrorText: TCaption; + var Error: Boolean); + private + FAlmacen: IBizAlmacen; + FPedido : IBizPedidosProveedor; + function GetPedidoProveedor: IBizPedidosProveedor; + procedure SetPedidoProveedor(const Value: IBizPedidosProveedor); + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + property PedidoProveedor: IBizPedidosProveedor read GetPedidoProveedor + write SetPedidoProveedor; + end; + +var + frViewDestinoPedidoProveedor: TfrViewDestinoPedidoProveedor; + +implementation +{$R *.dfm} + +uses + uDataModuleAlmacenes, schAlmacenesClient_Intf; + +procedure TfrViewDestinoPedidoProveedor.actAlmacenExecute(Sender: TObject); +begin + cbAlmacen.Enabled := True; + memDireccion.Enabled := False; +end; + +procedure TfrViewDestinoPedidoProveedor.actOtroExecute(Sender: TObject); +begin + cbAlmacen.Enabled := False; + memDireccion.Enabled := True; + + if Assigned(FPedido) and (FPedido.CODIGOALMACEN <> 0) then + begin + FPedido.Edit; + FPedido.CODIGOALMACEN := 0; + end; +end; + +constructor TfrViewDestinoPedidoProveedor.Create(AOwner: TComponent); +begin + inherited; + FAlmacen := dmAlmacenes.GetItems; + DADataSource2.DataTable := FAlmacen.DataTable; + DADataSource2.DataTable.Active := True; + cbAlmacen.ItemIndex := 0; +end; + +destructor TfrViewDestinoPedidoProveedor.Destroy; +begin + FAlmacen := Nil; + inherited; +end; + +function TfrViewDestinoPedidoProveedor.GetPedidoProveedor: IBizPedidosProveedor; +begin + Result := FPedido; +end; + +procedure TfrViewDestinoPedidoProveedor.SetPedidoProveedor( + const Value: IBizPedidosProveedor); +begin + FPedido := Value; + + if (FPedido.CODIGOALMACEN = 0) and + (Length(FPedido.DIRECCIONCOMPLETA.Text) = 0) then + // Nuevo pedido + begin + actAlmacen.Checked := True; + actOtro.Checked := False; + end + else begin + if (FPedido.CODIGOALMACEN <> 0) then + begin + actAlmacen.Checked := True; + actOtro.Checked := False; + end + else begin + if (Length(FPedido.DIRECCIONCOMPLETA.Text) <> 0) then + begin + actAlmacen.Checked := False; + actOtro.Checked := True; + actOtro.Execute; + end + end + end; + + // Esto al final para que no salten los eventos del cxComboBox + DADataSource.DataTable := FPedido.DataTable; +end; + +procedure TfrViewDestinoPedidoProveedor.cbAlmacenPropertiesEditValueChanged( + Sender: TObject); +begin + inherited; +{ if Assigned(FPedido) and (FPedido.CODIGOALMACEN <> FAlmacen.CODIGO) then + begin + FPedido.Edit; + FPedido.DIRECCIONCOMPLETA.Text := FAlmacen.CALLE + #13#10 + FAlmacen.CODIGOPOSTAL + ' ' + FAlmacen.POBLACION + end;} +end; + +procedure TfrViewDestinoPedidoProveedor.cbAlmacenPropertiesValidate( + Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption; + var Error: Boolean); +begin + inherited; + if Assigned(FPedido) and (FPedido.CODIGOALMACEN <> FAlmacen.CODIGO) then + begin +{ memDireccion.Lines.Clear; + memDireccion.Lines.Add(FAlmacen.CALLE); + memDireccion.Lines.Add(FAlmacen.CODIGOPOSTAL + ' ' + FAlmacen.POBLACION);} + memDireccion.DataBinding.Field.AsString := FAlmacen.CALLE + #13#10 + FAlmacen.CODIGOPOSTAL + ' ' + FAlmacen.POBLACION; + end; +end; + +end. diff --git a/Modulos/Pedidos a proveedor/Cliente/uViewDetallesPedidosProveedor.ddp b/Modulos/Pedidos a proveedor/Cliente/uViewDetallesPedidosProveedor.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Pedidos a proveedor/Cliente/uViewDetallesPedidosProveedor.ddp differ diff --git a/Modulos/Pedidos a proveedor/Cliente/uViewDetallesPedidosProveedor.dfm b/Modulos/Pedidos a proveedor/Cliente/uViewDetallesPedidosProveedor.dfm new file mode 100644 index 0000000..d643f62 --- /dev/null +++ b/Modulos/Pedidos a proveedor/Cliente/uViewDetallesPedidosProveedor.dfm @@ -0,0 +1,44 @@ +inherited frViewDetallesPedidosProveedor: TfrViewDetallesPedidosProveedor + inherited cxGrid: TcxGrid + inherited cxGridView: TcxGridDBTableView + OptionsSelection.InvertSelect = False + object cxGridViewPOSICION: TcxGridDBColumn + DataBinding.FieldName = 'POSICION' + Visible = False + SortIndex = 0 + SortOrder = soAscending + end + object cxGridViewDESCRIPCION: TcxGridDBColumn + DataBinding.FieldName = 'DESCRIPCION' + PropertiesClassName = 'TcxTextEditProperties' + Width = 224 + end + object cxGridViewCANTIDAD: TcxGridDBColumn + DataBinding.FieldName = 'CANTIDAD' + PropertiesClassName = 'TcxMaskEditProperties' + Properties.Alignment.Horz = taRightJustify + BestFitMaxWidth = 64 + HeaderAlignmentHorz = taRightJustify + Width = 130 + end + object cxGridViewIMPORTEUNIDAD: TcxGridDBColumn + DataBinding.FieldName = 'IMPORTEUNIDAD' + PropertiesClassName = 'TcxTextEditProperties' + Properties.Alignment.Horz = taRightJustify + BestFitMaxWidth = 120 + HeaderAlignmentHorz = taRightJustify + Width = 130 + end + object cxGridViewIMPORTETOTAL: TcxGridDBColumn + DataBinding.FieldName = 'IMPORTETOTAL' + PropertiesClassName = 'TcxTextEditProperties' + Properties.Alignment.Horz = taRightJustify + Properties.ReadOnly = True + BestFitMaxWidth = 120 + HeaderAlignmentHorz = taRightJustify + Options.Editing = False + Width = 130 + end + end + end +end diff --git a/Modulos/Pedidos a proveedor/Cliente/uViewDetallesPedidosProveedor.pas b/Modulos/Pedidos a proveedor/Cliente/uViewDetallesPedidosProveedor.pas new file mode 100644 index 0000000..fd3655b --- /dev/null +++ b/Modulos/Pedidos a proveedor/Cliente/uViewDetallesPedidosProveedor.pas @@ -0,0 +1,73 @@ +unit uViewDetallesPedidosProveedor; + +interface + +uses + Windows, Messages, cxImageComboBox, + cxTextEdit, cxSpinEdit, cxStyles, cxCustomData, cxGraphics, cxFilter, + cxData, cxDataStorage, cxEdit, DB, cxDBData, ImgList, Controls, + PngImageList, uDADataTable, Classes, ActnList, ComCtrls, ToolWin, + cxGridLevel, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, + cxClasses, cxControls, cxGridCustomView, cxGrid, uViewDetallesFamilias, + cxCheckBox, cxMaskEdit, cxCurrencyEdit, uViewDetallesNormales; + +type + TfrViewDetallesPedidosProveedor = class(TfrViewDetallesNormales) + cxGridViewDESCRIPCION: TcxGridDBColumn; + cxGridViewCANTIDAD: TcxGridDBColumn; + cxGridViewIMPORTEUNIDAD: TcxGridDBColumn; + cxGridViewIMPORTETOTAL: TcxGridDBColumn; + cxGridViewPOSICION: TcxGridDBColumn; + procedure cxGridViewEditing(Sender: TcxCustomGridTableView; + AItem: TcxCustomGridTableItem; var AAllow: Boolean); + procedure cxGridViewVISIBLEStylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); + end; + + +implementation + +uses + Variants, uBizImportesDetalleBase, SysUtils; + +{$R *.dfm} + +procedure TfrViewDetallesPedidosProveedor.cxGridViewEditing( + Sender: TcxCustomGridTableView; AItem: TcxCustomGridTableItem; + var AAllow: Boolean); +var + IndiceCol : Integer; +begin + IndiceCol := (Sender as TcxGridDBTableView).GetColumnByFieldName(fld_IMPORTEPUNTOS).Index; + if AItem.Index = IndiceCol then + begin + IndiceCol := (Sender as TcxGridDBTableView).GetColumnByFieldName(fld_TIPODETALLE).Index; + if (UpperCase(AItem.GridView.Items[IndiceCol].EditValue) = TIPODETALLE_SUBTOTAL) then + AAllow := False + else + AAllow := True + end + else + inherited; +end; + +procedure TfrViewDetallesPedidosProveedor.cxGridViewVISIBLEStylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); +var + IndiceCol : Integer; + ATipo : String; +begin +{ if Assigned(ARecord) then + begin + IndiceCol := (Sender as TcxGridDBTableView).GetColumnByFieldName(fld_TIPODETALLE).Index; + ATipo := VarToStr(ARecord.Values[IndiceCol]); + if ATipo = TIPODETALLE_SUBTOTAL then + AStyle := cxStyle_SUBTOTAL; + if ATipo = TIPODETALLE_TITULO then + AStyle := cxStyle_TITULO; + end;} +end; + +end. diff --git a/Modulos/Pedidos a proveedor/Cliente/uViewIncidencias.ddp b/Modulos/Pedidos a proveedor/Cliente/uViewIncidencias.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Pedidos a proveedor/Cliente/uViewIncidencias.ddp differ diff --git a/Modulos/Pedidos a proveedor/Cliente/uViewIncidencias.dfm b/Modulos/Pedidos a proveedor/Cliente/uViewIncidencias.dfm new file mode 100644 index 0000000..9987528 --- /dev/null +++ b/Modulos/Pedidos a proveedor/Cliente/uViewIncidencias.dfm @@ -0,0 +1,52 @@ +inherited frViewIncidencias: TfrViewIncidencias + Width = 443 + Height = 370 + Align = alBottom + object pnlSup: TPanel + Left = 0 + Top = 0 + Width = 443 + Height = 28 + Align = alTop + BevelOuter = bvNone + TabOrder = 0 + object eIncidenciaActiva: TcxDBCheckBox + Left = 2 + Top = 4 + Caption = 'Hay incidencias sin resolver' + DataBinding.DataField = 'INCIDENCIASACTIVAS' + DataBinding.DataSource = DADataSource + Properties.ValueChecked = 1 + Properties.ValueUnchecked = 0 + TabOrder = 0 + Transparent = True + Width = 359 + end + end + object GroupBox1: TGroupBox + Left = 0 + Top = 28 + Width = 443 + Height = 342 + Align = alClient + Caption = 'Incidencias' + TabOrder = 1 + DesignSize = ( + 443 + 342) + object eIncidencias: TcxDBMemo + Left = 10 + Top = 22 + Anchors = [akLeft, akTop, akRight, akBottom] + DataBinding.DataField = 'INCIDENCIAS' + DataBinding.DataSource = DADataSource + TabOrder = 0 + Height = 305 + Width = 420 + end + end + object DADataSource: TDADataSource + Left = 560 + Top = 8 + end +end diff --git a/Modulos/Pedidos a proveedor/Cliente/uViewIncidencias.pas b/Modulos/Pedidos a proveedor/Cliente/uViewIncidencias.pas new file mode 100644 index 0000000..b017d38 --- /dev/null +++ b/Modulos/Pedidos a proveedor/Cliente/uViewIncidencias.pas @@ -0,0 +1,30 @@ +unit uViewIncidencias; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, ExtCtrls, StdCtrls, DB, uDADataTable, cxGraphics, + cxTextEdit, cxMaskEdit, cxDropDownEdit, cxDBEdit, cxControls, + cxContainer, cxEdit, cxLabel, cxDBLabel, cxCurrencyEdit, cxSpinEdit, + cxCheckBox, cxMemo; + +type + TfrViewIncidencias = class(TfrViewBase) + DADataSource: TDADataSource; + pnlSup: TPanel; + eIncidenciaActiva: TcxDBCheckBox; + eIncidencias: TcxDBMemo; + GroupBox1: TGroupBox; + private + { Private declarations } + public + { Public declarations } + end; + + +implementation + +{$R *.dfm} + +end. diff --git a/Modulos/Pedidos a proveedor/Cliente/uViewMontajePedido.ddp b/Modulos/Pedidos a proveedor/Cliente/uViewMontajePedido.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Pedidos a proveedor/Cliente/uViewMontajePedido.ddp differ diff --git a/Modulos/Pedidos a proveedor/Cliente/uViewMontajePedido.dfm b/Modulos/Pedidos a proveedor/Cliente/uViewMontajePedido.dfm new file mode 100644 index 0000000..ceb012f --- /dev/null +++ b/Modulos/Pedidos a proveedor/Cliente/uViewMontajePedido.dfm @@ -0,0 +1,11 @@ +inherited frViewMontajePedido: TfrViewMontajePedido + inherited edtlReferencia: TcxDBTextEdit + Height = 21 + Width = 245 + end + inherited ActionList1: TActionList + inherited actElegirMontaje: TAction + OnExecute = actElegirMontajeExecute + end + end +end diff --git a/Modulos/Pedidos a proveedor/Cliente/uViewMontajePedido.pas b/Modulos/Pedidos a proveedor/Cliente/uViewMontajePedido.pas new file mode 100644 index 0000000..29de980 --- /dev/null +++ b/Modulos/Pedidos a proveedor/Cliente/uViewMontajePedido.pas @@ -0,0 +1,48 @@ +unit uViewMontajePedido; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewMontajeRelacionado, ImgList, PngImageList, ActnList, + cxControls, cxContainer, cxEdit, cxTextEdit, ComCtrls, ToolWin, ExtCtrls, + StdCtrls, DB, uDADataTable, cxDBEdit; + +type + TfrViewMontajePedido = class(TfrViewMontajeRelacionado) + procedure actElegirMontajeExecute(Sender: TObject); + private + { Private declarations } + public + { Public declarations } + end; + +var + frViewMontajePedido: TfrViewMontajePedido; + +implementation + +uses uDataModuleMontajes, uBizMontajes; + +{$R *.dfm} + +procedure TfrViewMontajePedido.actElegirMontajeExecute(Sender: TObject); +var + AMontaje : IBizMontaje; +begin + inherited; + + AMontaje := dmMontajes.GetItemsPendientes(sitPendienteRecepcion); + try + if AMontaje.ShowForSelect = mrOK then + begin + AMontaje := dmMontajes.GetItemsSeleccionados(AMontaje); + AMontaje.DataTable.Active := True; + Self.Montaje := AMontaje; + end; + finally + AMontaje := NIL; + end; +end; + +end. diff --git a/Modulos/Pedidos a proveedor/Cliente/uViewObraPedido.dfm b/Modulos/Pedidos a proveedor/Cliente/uViewObraPedido.dfm new file mode 100644 index 0000000..64c21bc --- /dev/null +++ b/Modulos/Pedidos a proveedor/Cliente/uViewObraPedido.dfm @@ -0,0 +1,160 @@ +inherited frViewObraPedido: TfrViewObraPedido + Width = 360 + Height = 90 + Constraints.MinHeight = 90 + Constraints.MinWidth = 360 + DesignSize = ( + 360 + 90) + object Label5: TLabel + Left = 8 + Top = 8 + Width = 98 + Height = 13 + Caption = 'Obra relacionada' + Font.Charset = DEFAULT_CHARSET + Font.Color = clActiveCaption + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + ParentFont = False + end + object Bevel1: TBevel + Left = 117 + Top = 8 + Width = 229 + Height = 9 + Anchors = [akLeft, akTop, akRight] + Shape = bsBottomLine + end + object lblNombre: TLabel + Left = 16 + Top = 64 + Width = 56 + Height = 13 + Caption = 'Referencia:' + end + object ToolBar1: TToolBar + Left = 8 + Top = 29 + Width = 338 + Height = 22 + Align = alNone + Anchors = [akLeft, akTop, akRight] + ButtonWidth = 99 + Caption = 'ToolBar1' + EdgeBorders = [] + EdgeInner = esNone + EdgeOuter = esNone + Flat = True + Images = PngImageList + List = True + ParentShowHint = False + ShowCaptions = True + ShowHint = True + TabOrder = 0 + Transparent = True + Wrapable = False + object ToolButton1: TToolButton + Left = 0 + Top = 0 + Action = actElegirObra + AutoSize = True + end + object ToolButton3: TToolButton + Left = 103 + Top = 0 + Width = 8 + Caption = 'ToolButton3' + ImageIndex = 1 + Style = tbsSeparator + end + object ToolButton2: TToolButton + Left = 111 + Top = 0 + Action = actVerObra + end + end + object edtlReferencia: TcxTextEdit + Left = 100 + Top = 60 + Anchors = [akLeft, akTop, akRight] + AutoSize = False + Enabled = False + ParentFont = False + Properties.ReadOnly = True + Style.Font.Charset = DEFAULT_CHARSET + Style.Font.Color = clWindowText + Style.Font.Height = -11 + Style.Font.Name = 'Tahoma' + Style.Font.Style = [] + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clWindowText + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 1 + Height = 21 + Width = 245 + end + object ActionList1: TActionList + Images = PngImageList + Left = 256 + object actElegirObra: TAction + Caption = 'Elegir una obra' + ImageIndex = 1 + OnExecute = actElegirObraExecute + end + object actVerObra: TAction + Caption = 'Ver obra...' + ImageIndex = 1 + OnExecute = actVerObraExecute + OnUpdate = actVerObraUpdate + end + end + object PngImageList: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001774944415478DA + 63FCFFFF3FC384055BFF3390010A12BC1919610600394469FAF3F71FC3EF3F7F + 192CBCB3192EEE99856A80C35E4B14C5079C8F836964F1ED368718662EDFC530 + 7FC9464C03F0815FBFFF826D06D10BD7EDC36E00BA0BB0815586BB18966D3A84 + DB0098B341E01F50EECF9F7F709B034F3B312CD3DDC1B06ADB11FC06C05CB2CB + EE0883DB211BB8CD61E7DD18166A6E6558BFEB387E03D06DFEFDE70F981F75D9 + 8361AEEA2686CDFB4EE136609FD33106A77D56605BD79BEE033B1B044036C75F + F76698AEB88161E7A133B80D00391BDDE69FBFFE30FC028AA5DFF567E8975CCD + 70F0D4454C0372623D195C0E58A384F862ED6D0CB157BDC0EC2972EB18721E05 + 317489AE643876EE32A601E9916E605BFEFCFE07B639E2A23BC37CF52D60B1DF + BF21B8F0792843ABE03286D397AE611A9018EA0CD70CF202CC6674D0C0BB98E1 + C2B59B9806C40638C23583FC8D6CF36F688C80F0BF7FFF192EDDB8856940848F + 2DC38A2D8789CE89180680044805200300115980F04CC063740000000049454E + 44AE426082} + Name = 'PngImage1' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001774944415478DA + 63FCFFFF3FC384055BFF3390010A12BC1919610600394469FAF3F71FC3EF3F7F + 192CBCB3192EEE99856A80C35E4B14C5079C8F836964F1ED368718662EDFC530 + 7FC9464C03F0815FBFFF826D06D10BD7EDC36E00BA0BB0815586BB18966D3A84 + DB0098B341E01F50EECF9F7F709B034F3B312CD3DDC1B06ADB11FC06C05CB2CB + EE0883DB211BB8CD61E7DD18166A6E6558BFEB387E03D06DFEFDE70F981F75D9 + 8361AEEA2686CDFB4EE136609FD33106A77D56605BD79BEE033B1B044036C75F + F76698AEB88161E7A133B80D00391BDDE69FBFFE30FC028AA5DFF567E8975CCD + 70F0D4454C0372623D195C0E58A384F862ED6D0CB157BDC0EC2972EB18721E05 + 317489AE643876EE32A601E9916E605BFEFCFE07B639E2A23BC37CF52D60B1DF + BF21B8F0792843ABE03286D397AE611A9018EA0CD70CF202CC6674D0C0BB98E1 + C2B59B9806C40638C23583FC8D6CF36F688C80F0BF7FFF192EDDB8856940848F + 2DC38A2D8789CE89180680044805200300115980F04CC063740000000049454E + 44AE426082} + Name = 'PngImage2' + Background = clWindow + end> + Left = 288 + Bitmap = {} + end +end diff --git a/Modulos/Pedidos a proveedor/Cliente/uViewObraPedido.pas b/Modulos/Pedidos a proveedor/Cliente/uViewObraPedido.pas new file mode 100644 index 0000000..58793bb --- /dev/null +++ b/Modulos/Pedidos a proveedor/Cliente/uViewObraPedido.pas @@ -0,0 +1,108 @@ +unit uViewObraPedido; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, ExtCtrls, StdCtrls, cxControls, cxContainer, cxEdit, + cxTextEdit, cxDBEdit, ComCtrls, ToolWin, ImgList, PngImageList, ActnList, + DB, uDADataTable, uBizPedidosProveedor, uBizPresupuestosCliente; + +type + IViewObraPedido = interface(IViewBase) + ['{127631C5-DDC6-44D4-B96F-70795357B2CF}'] + function GetPedido: IBizPedidosProveedor; + procedure SetPedido(const Value: IBizPedidosProveedor); + property Pedido: IBizPedidosProveedor read GetPedido + write SetPedido; + end; + + TfrViewObraPedido = class(TfrViewBase, IViewObraPedido) + Label5: TLabel; + Bevel1: TBevel; + ActionList1: TActionList; + actElegirObra: TAction; + actVerObra: TAction; + PngImageList: TPngImageList; + ToolBar1: TToolBar; + ToolButton1: TToolButton; + ToolButton3: TToolButton; + ToolButton2: TToolButton; + lblNombre: TLabel; + edtlReferencia: TcxTextEdit; + procedure actElegirObraExecute(Sender: TObject); + procedure actVerObraExecute(Sender: TObject); + procedure actVerObraUpdate(Sender: TObject); + private + FPedido: IBizPedidosProveedor; + function GetPedido: IBizPedidosProveedor; + procedure SetPedido(const Value: IBizPedidosProveedor); + public + property Pedido: IBizPedidosProveedor read GetPedido + write SetPedido; + end; + +var + frViewObraPedido: TfrViewObraPedido; + +implementation + +uses uDataModulePresupuestos, schPresupuestosClient_Intf; + +{$R *.dfm} + +{ TfrViewPresupuestoAlbaran } + +function TfrViewObraPedido.GetPedido: IBizPedidosProveedor; +begin + Result := FPedido; +end; + +procedure TfrViewObraPedido.SetPedido(const Value: IBizPedidosProveedor); +begin + FPedido := Value; + if Assigned(FPedido) and (IntToStr(FPedido.CODIGOOBRA) <> '') then + edtlReferencia.Text := dmPresupuestos.GetReferencia(FPedido.CODIGOOBRA); +end; + +procedure TfrViewObraPedido.actElegirObraExecute(Sender: TObject); +var + AObra : IBizPresupuestos; +begin + inherited; + + if Length(edtlReferencia.Text) > 0 then + if (MessageBox(0, 'Este pedido ya tiene asociado una obra. '+#13+#10+ + '¿Desea continuar?', 'Confirmación', MB_ICONQUESTION or MB_YESNO) = idNo) then + Exit; + + AObra := dmPresupuestos.GetPresupuestosSinAlbaran; + try + if AObra.ShowForSelect = mrOK then + begin + if not (FPedido.DataTable.State in dsEditModes) then + FPedido.Edit; +// FObra.CopyFrom(APresupuesto); + FPedido.CODIGOOBRA := AObra.CODIGO; + edtlReferencia.Text := AObra.REFERENCIA; + end; + finally + AObra := NIL; + end; +end; + +procedure TfrViewObraPedido.actVerObraExecute(Sender: TObject); +var + AObra : IBizPresupuestos; +begin + AObra := dmPresupuestos.GetPresupuesto(FPedido.CODIGOOBRA); + AObra.Show; +end; + +procedure TfrViewObraPedido.actVerObraUpdate(Sender: TObject); +begin + inherited; + (Sender as TAction).Enabled := (Length(edtlReferencia.Text) > 0) +end; + +end. diff --git a/Modulos/Pedidos a proveedor/Cliente/uViewObservaciones.dfm b/Modulos/Pedidos a proveedor/Cliente/uViewObservaciones.dfm new file mode 100644 index 0000000..a744ce9 --- /dev/null +++ b/Modulos/Pedidos a proveedor/Cliente/uViewObservaciones.dfm @@ -0,0 +1,47 @@ +inherited frViewObservaciones: TfrViewObservaciones + Width = 300 + Constraints.MinWidth = 300 + DesignSize = ( + 300 + 240) + object Label5: TLabel + Left = 8 + Top = 8 + Width = 85 + Height = 13 + Caption = 'Observaciones' + Font.Charset = DEFAULT_CHARSET + Font.Color = clActiveCaption + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + ParentFont = False + end + object Bevel1: TBevel + Left = 96 + Top = 8 + Width = 192 + Height = 9 + Anchors = [akLeft, akTop, akRight] + Shape = bsBottomLine + end + object memObservaciones: TcxDBMemo + Left = 16 + Top = 32 + Anchors = [akLeft, akTop, akRight, akBottom] + DataBinding.DataField = 'OBSERVACIONES' + DataBinding.DataSource = DADataSource + Properties.ScrollBars = ssVertical + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 0 + Height = 193 + Width = 269 + end + object DADataSource: TDADataSource + Left = 16 + Top = 48 + end +end diff --git a/Modulos/Pedidos a proveedor/Cliente/uViewObservaciones.pas b/Modulos/Pedidos a proveedor/Cliente/uViewObservaciones.pas new file mode 100644 index 0000000..2430eba --- /dev/null +++ b/Modulos/Pedidos a proveedor/Cliente/uViewObservaciones.pas @@ -0,0 +1,26 @@ +unit uViewObservaciones; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, DB, uDADataTable, cxMemo, cxDBEdit, cxControls, + cxContainer, cxEdit, cxTextEdit, ExtCtrls, StdCtrls; + +type + TfrViewObservaciones = class(TfrViewBase) + Label5: TLabel; + Bevel1: TBevel; + memObservaciones: TcxDBMemo; + DADataSource: TDADataSource; + private + { Private declarations } + public + { Public declarations } + end; + +implementation + +{$R *.dfm} + +end. diff --git a/Modulos/Pedidos a proveedor/Cliente/uViewPedidoProveedor.ddp b/Modulos/Pedidos a proveedor/Cliente/uViewPedidoProveedor.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Pedidos a proveedor/Cliente/uViewPedidoProveedor.ddp differ diff --git a/Modulos/Pedidos a proveedor/Cliente/uViewPedidoProveedor.dfm b/Modulos/Pedidos a proveedor/Cliente/uViewPedidoProveedor.dfm new file mode 100644 index 0000000..3a7ae0e --- /dev/null +++ b/Modulos/Pedidos a proveedor/Cliente/uViewPedidoProveedor.dfm @@ -0,0 +1,189 @@ +inherited frViewPedidoProveedor: TfrViewPedidoProveedor + Width = 753 + Height = 491 + Align = alClient + Constraints.MinHeight = 400 + Constraints.MinWidth = 753 + inline frViewDatosYSeleccionContacto: TfrViewDatosYSeleccionContacto + Left = 362 + Top = 0 + Width = 391 + Height = 228 + Constraints.MinHeight = 202 + Constraints.MinWidth = 350 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 3 + ReadOnly = False + inherited Label5: TLabel + Width = 116 + Caption = 'Datos del proveedor' + end + inherited Bevel1: TBevel + Left = 128 + Width = 248 + end + inherited ToolBar1: TToolBar + ButtonWidth = 148 + inherited ToolButton3: TToolButton + Left = 125 + end + inherited ToolButton2: TToolButton + Left = 133 + end + end + inherited edtlNombre: TcxDBTextEdit + StyleDisabled.TextColor = clActiveCaption + Width = 296 + end + inherited edtPoblacion: TcxDBTextEdit + StyleDisabled.TextColor = clActiveCaption + TabOrder = 4 + Width = 296 + end + inherited edtProvincia: TcxDBTextEdit + StyleDisabled.TextColor = clActiveCaption + TabOrder = 3 + Width = 152 + end + inherited edtNIFCIF: TcxDBTextEdit + StyleDisabled.TextColor = clActiveCaption + Width = 296 + end + inherited edtCalle: TcxDBTextEdit + StyleDisabled.TextColor = clActiveCaption + Width = 296 + end + inherited ToolBar2: TToolBar + Left = 181 + ButtonWidth = 197 + end + inherited edtCodigoPostal: TcxDBTextEdit + StyleDisabled.TextColor = clActiveCaption + Width = 105 + end + inherited DADataSource: TDADataSource + Left = 64 + Top = 32 + end + inherited ActionList1: TActionList + Top = 40 + inherited actElegirContacto: TAction + Caption = 'Elegir un proveedor' + end + inherited actAnadirContacto: TAction + Caption = 'Dar de alta un proveedor' + end + inherited actVerContacto: TAction + Caption = 'Ver ficha completa del proveedor...' + end + end + end + inline frViewObservaciones: TfrViewObservaciones + Left = 368 + Top = 221 + Width = 380 + Height = 186 + Constraints.MinWidth = 300 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 2 + ReadOnly = False + inherited Label5: TLabel + Width = 87 + Caption = 'Caracter'#237'sticas' + end + inherited Bevel1: TBevel + Width = 272 + end + inherited memObservaciones: TcxDBMemo + Height = 144 + Width = 356 + end + end + inline frViewDatosPedidoProveedor: TfrViewDatosPedidoProveedor + Left = 0 + Top = 0 + Width = 360 + Height = 135 + Constraints.MinHeight = 110 + Constraints.MinWidth = 360 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 0 + ReadOnly = False + inherited cbSituacion: TcxDBImageComboBox + Style.Color = clInfoBk + end + inherited edtFechaPedido: TcxDBDateEdit + Style.Color = clInfoBk + end + end + inline frViewDestinoPedidoProveedor: TfrViewDestinoPedidoProveedor + Left = 0 + Top = 131 + Width = 360 + Height = 171 + Constraints.MinHeight = 110 + Constraints.MinWidth = 360 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 1 + ReadOnly = False + inherited cbAlmacen: TcxDBLookupComboBox + Style.Color = clInfoBk + Width = 309 + end + inherited rdxDestino1: TRadioButton + TabOrder = 2 + end + inherited rdxDestino2: TRadioButton + Top = 82 + TabOrder = 3 + end + inherited memDireccion: TcxDBMemo + Top = 103 + Style.Color = clInfoBk + TabOrder = 0 + Height = 55 + Width = 309 + end + inherited DADataSource: TDADataSource + Left = 168 + end + end + inline frViewMontajePedido: TfrViewMontajePedido + Left = 8 + Top = 302 + Width = 360 + Height = 90 + Constraints.MinHeight = 90 + Constraints.MinWidth = 360 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 4 + ReadOnly = False + end + object DADataSource: TDADataSource + end +end diff --git a/Modulos/Pedidos a proveedor/Cliente/uViewPedidoProveedor.pas b/Modulos/Pedidos a proveedor/Cliente/uViewPedidoProveedor.pas new file mode 100644 index 0000000..1831a6c --- /dev/null +++ b/Modulos/Pedidos a proveedor/Cliente/uViewPedidoProveedor.pas @@ -0,0 +1,85 @@ +unit uViewPedidoProveedor; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, uBizPedidosProveedor, DB, uDADataTable, uCustomView, + uViewDatosYSeleccionContacto, uViewObservaciones, AppEvnts, + uViewDestinoPedidoProveedor, uViewDatosPedidoProveedor, + StdCtrls, Mask, DBCtrls, uViewMontajeRelacionado, uViewMontajePedido; + +type + IViewPedidoProveedor = interface(IViewBase) + ['{CC768E3B-B3A6-463E-8D3F-B954715E6432}'] + function GetPedidoProveedor: IBizPedidosProveedor; + procedure SetPedidoProveedor(const Value: IBizPedidosProveedor); + property PedidoProveedor: IBizPedidosProveedor read GetPedidoProveedor + write SetPedidoProveedor; + end; + + TfrViewPedidoProveedor = class(TfrViewBase, IViewPedidoProveedor) + DADataSource: TDADataSource; + frViewDatosYSeleccionContacto: TfrViewDatosYSeleccionContacto; + frViewObservaciones: TfrViewObservaciones; + frViewDatosPedidoProveedor: TfrViewDatosPedidoProveedor; + frViewDestinoPedidoProveedor: TfrViewDestinoPedidoProveedor; + frViewMontajePedido: TfrViewMontajePedido; + private + FPedidoProveedor : IBizPedidosProveedor; + procedure OnContactoChanged (Sender : TObject); + procedure OnMontajeChanged(Sender : TObject); + protected + function GetPedidoProveedor: IBizPedidosProveedor; + procedure SetPedidoProveedor(const Value: IBizPedidosProveedor); + public + property PedidoProveedor: IBizPedidosProveedor read GetPedidoProveedor + write SetPedidoProveedor; + end; + +var + frViewPedidoProveedor: TfrViewPedidoProveedor; + +implementation + +uses uBizContacto, uExceptions; + +{$R *.dfm} + +{ TfrViewAlbaranCliente } + +function TfrViewPedidoProveedor.GetPedidoProveedor: IBizPedidosProveedor; +begin + Result := FPedidoProveedor; +end; + +procedure TfrViewPedidoProveedor.OnContactoChanged(Sender: TObject); +begin + FPedidoProveedor.Proveedor := (frViewDatosYSeleccionContacto.Contacto as IBizProveedor); +end; + +procedure TfrViewPedidoProveedor.OnMontajeChanged(Sender: TObject); +begin + FPedidoProveedor.Montaje := frViewMontajePedido.Montaje; +end; + +procedure TfrViewPedidoProveedor.SetPedidoProveedor(const Value: IBizPedidosProveedor); +begin + FPedidoProveedor := Value; + if Assigned(FPedidoProveedor) then + DADataSource.DataTable := FPedidoProveedor.DataTable + else + DADataSource.DataTable := NIL; + + frViewDatosPedidoProveedor.DADataSource.DataTable := DADataSource.DataTable; + frViewObservaciones.DADataSource.DataTable := DADataSource.DataTable; + frViewDestinoPedidoProveedor.PedidoProveedor := FPedidoProveedor; + + frViewDatosYSeleccionContacto.Contacto := FPedidoProveedor.Proveedor; + frViewDatosYSeleccionContacto.OnContactoChanged := OnContactoChanged; + + frViewMontajePedido.Montaje := FPedidoProveedor.Montaje; + frViewMontajePedido.OnMontajeChanged := OnMontajeChanged; +end; + +end. diff --git a/Modulos/Pedidos a proveedor/Cliente/uViewPedidosProveedor.ddp b/Modulos/Pedidos a proveedor/Cliente/uViewPedidosProveedor.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Pedidos a proveedor/Cliente/uViewPedidosProveedor.ddp differ diff --git a/Modulos/Pedidos a proveedor/Cliente/uViewPedidosProveedor.dfm b/Modulos/Pedidos a proveedor/Cliente/uViewPedidosProveedor.dfm new file mode 100644 index 0000000..af977a6 --- /dev/null +++ b/Modulos/Pedidos a proveedor/Cliente/uViewPedidosProveedor.dfm @@ -0,0 +1,237 @@ +inherited frViewPedidosProveedor: TfrViewPedidosProveedor + inherited cxGrid: TcxGrid + RootLevelOptions.DetailTabsPosition = dtpTop + OnActiveTabChanged = cxGridActiveTabChanged + inherited cxGridView: TcxGridDBTableView + DataController.KeyFieldNames = 'CODIGO' + DataController.Summary.FooterSummaryItems = < + item + Format = '0 pedidos' + Kind = skCount + Column = cxGridViewNOMBRE + end> + Styles.OnGetContentStyle = cxGridViewStylesGetContentStyle + object cxGridViewCODIGO: TcxGridDBColumn + DataBinding.FieldName = 'CODIGO' + Visible = False + end + object cxGridViewINCIDENCIASACTIVAS: TcxGridDBColumn + DataBinding.FieldName = 'INCIDENCIASACTIVAS' + PropertiesClassName = 'TcxImageComboBoxProperties' + Properties.Images = PngImageList + Properties.Items = < + item + Description = 'Sin incidencias' + Value = 0 + end + item + Description = 'Con incidencias' + ImageIndex = 3 + Tag = 1 + Value = 1 + end> + Properties.LargeImages = PngImageList + Properties.ShowDescriptions = False + Width = 25 + IsCaptionAssigned = True + end + object cxGridViewSITUACION: TcxGridDBColumn + DataBinding.FieldName = 'SITUACION' + PropertiesClassName = 'TcxImageComboBoxProperties' + Properties.Images = PngImageList + Properties.Items = < + item + Description = 'Pendiente' + ImageIndex = 0 + Value = 'Pendiente' + end + item + Description = 'Parcialmente recibido' + ImageIndex = 1 + Tag = 1 + Value = 'Parcialmente recibido' + end + item + Description = 'Recibido' + ImageIndex = 2 + Tag = 2 + Value = 'Recibido' + end> + Properties.ShowDescriptions = False + Width = 25 + IsCaptionAssigned = True + end + object cxGridViewREFERENCIA: TcxGridDBColumn + Caption = 'Montaje' + DataBinding.FieldName = 'REFERENCIA' + end + object cxGridViewNOMBRECLIENTE: TcxGridDBColumn + Caption = 'Cliente' + DataBinding.FieldName = 'NOMBRECLIENTE' + end + object cxGridViewFECHAPEDIDO: TcxGridDBColumn + DataBinding.FieldName = 'FECHAPEDIDO' + SortIndex = 0 + SortOrder = soDescending + end + object cxGridViewNOMBRE: TcxGridDBColumn + Caption = 'Nombre proveedor' + DataBinding.FieldName = 'NOMBRE' + end + object cxGridViewFECHACONFIRMACION: TcxGridDBColumn + DataBinding.FieldName = 'FECHACONFIRMACION' + end + object cxGridViewDIRECCIONCOMPLETA: TcxGridDBColumn + DataBinding.FieldName = 'DIRECCIONCOMPLETA' + Visible = False + end + object cxGridViewFECHAENTREGA: TcxGridDBColumn + DataBinding.FieldName = 'FECHAENTREGA' + end + object cxGridViewCODIGOALMACEN: TcxGridDBColumn + DataBinding.FieldName = 'CODIGOALMACEN' + Visible = False + end + object cxGridViewNOMBREALMACEN: TcxGridDBColumn + Caption = 'Almac'#233'n destino' + DataBinding.FieldName = 'NOMBREALMACEN' + end + object cxGridViewCODIGOCONTACTO: TcxGridDBColumn + DataBinding.FieldName = 'CODIGOCONTACTO' + Visible = False + end + object cxGridViewCODIGOMONTAJE: TcxGridDBColumn + DataBinding.FieldName = 'CODIGOMONTAJE' + Visible = False + end + end + object cxGridDBTableView1: TcxGridDBTableView [1] + NavigatorButtons.ConfirmDelete = False + DataController.Summary.DefaultGroupSummaryItems = <> + DataController.Summary.FooterSummaryItems = <> + DataController.Summary.SummaryGroups = <> + end + inherited cxGridLevel: TcxGridLevel + Caption = 'Todos' + end + object cxGridLevel1: TcxGridLevel + Caption = 'Pendientes' + end + object cxGridLevel2: TcxGridLevel + Caption = 'Parcialmente recibidos' + end + object cxGridLevel3: TcxGridLevel + Caption = 'Recibidos' + end + end + inherited frViewFiltroBase1: TfrViewFiltroBase + inherited TBXDock1: TTBXDock + inherited TBXDockablePanel1: TTBXDockablePanel + inherited dxLayoutControl1: TdxLayoutControl + inherited txtFiltroTodo: TcxTextEdit + Width = 273 + end + inherited edtFechaIniFiltro: TcxDateEdit + Width = 121 + end + inherited edtFechaFinFiltro: TcxDateEdit + Width = 121 + end + end + end + end + end + inherited dxComponentPrinter: TdxComponentPrinter + inherited dxComponentPrinterLink: TdxGridReportLink + ReportDocument.CreationDate = 38673.741107951390000000 + BuiltInReportLink = True + end + end + inherited cxStyleRepository1: TcxStyleRepository + Left = 248 + end + object PngImageList: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD2520000014B4944415478DA + 6364C007F47A8C9999FE9F6162FCCFF0FB2F9309C3A592B31CC61DFF7F9CAD60 + 0449F398B6FF67C4A79FD9A0FBFFDF0BA56035EC469DFF7F9E2B87AB0769FE72 + BA9211AF01AC865DFF7F9F2F03AB41B719A419C4C66B001BD0805F5003B84C3A + FE7F3B53C188AC59D0A20DBF17909DCD6DD2FEFFEB994A0CF5780D00052217DB + 9F338C0CFF19BEFE620507226906100118B327BDFCFFE7EF6F86BF7F20F80F8C + FEFB07C14762FFF9FD0B48FF82D2BF1918D3FB9FFCB734944631F5CFDF7F0CBF + 7EFF65F809C67FE0EC5F403688FEF1EB0F185F3AB2938131A5FBFE7F1B530592 + 35FFF8F597E1DAB16D0C8C89EDB7FEDB5BAA92AC1944DF3ABE858131B6F9EA7F + 675B2D923583F0BD139B1918A3EA2FFC77B2D32559F3AF3F7F191E9CD8C0C018 + 5673E6BF838D1EC99A41006C4070C5F1FF84A2EA3732FFF76F301B9E0EFEFFFF + 4F514202003F5091819E0016AB0000000049454E44AE426082} + Name = 'PngImage1' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD2520000010E4944415478DA + 63648001BD9EFF0CC8E052092350CC18C83A031531018A9D05AB03C941F530A2 + 180093C026862E0FE5230B10B40D1B1BD546749BB16922CA0BF80C400384BC80 + 2986D300320163F0AC3BFFFFFEFECBF0E70F100369301BCA87B1FFFE81F2FFFC + 63F8FDEB0FC31F20FE0D9203D28C01536FFE6F705663F80033F20784FA00657F + 4016FB815003129F367B3503A3CFC46BFF4BDC3549D208634F9CB79C81D1A3E7 + F2FF4375E638FDD8B6EE2B8646984573672C6660746DBFF0FF68B3154E03CA96 + 7DC56A3B08CC98BD8081D1B1E9ECFF783B23BC4E45D7080353A6CE6160B4AD3B + F53FD8CA94248D303061C24C0646ABCAE3FF0945D59F5F7F816C3431200D4E07 + FFFFFF67A00400007E51EECD81D1728E0000000049454E44AE426082} + Name = 'PngImage2' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000000F54944415478DA + 6364D0EBF9CF70A98411481B3330309C61800013A0D8591C6210F52000643322 + 19802281530C06A07CF20C4062936E00D5BC00058C24072286011402C6EC492F + FFFFF9FB9BE1EF1F08FE03A3FFFE41F091D87F7EFF02D2BFA0F46F06C6F4FE27 + FF2D0DA5514CFDF3F71FC3AFDF7F197E82F11F38FB17900DA27FFCFA03C6978E + EC64604CE9BEFFDFC6548164CD3F7EFD65B8766C1B036362FBADFF2B9B0DC8F2 + BF9C7D2303636CF3D5FF6BDB4DC93240CAAA868131AAFEC27F273B5DA29D0D63 + FFFAF397E1C1890D0C8C613567FE3BD8E891AC1904C00604571CFF4F28AA7E23 + F37FFF06B3E1E9E0FFFFFF1425240089FD645E7C3F344D0000000049454E44AE + 426082} + Name = 'PngImage0' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000AEB00000AEB01828B0D5A0000027F4944415478DA + 95926D48535118C79FDB268AA54485D62C4C50962CDC87F5416D9AB966CEA440 + A4E84D828C304C89B217DB87D00F65252B69422F9A4161D6A0507C6D595A6450 + 83CC55787129CE19949B6DD3DDEDDE9D73BABB561835D3030FCF39E739FFDFF3 + C2A1608EF5A1467A415632783A589C100254B0A0EB5A623A9392DCD365B89DBE + FF3CBC5830C0DD9DD726922B34EFDAEB5B53F75972170470D4C8E461DB724D78 + 091139AC66F4FC5E9BA24007FDF3064C75E6DE7DE94BD8DBDC4A834615014B5D + BD8D6985E37BE6056074D2B544934357DCFA1CD2FBEA1B6C908742E96EAFBFFB + 7E5FE2A15A18FA2FC0F978B35E9CBAE94895EE2DB474D82053B918CA4BA2A1BF + D37823B3D879784E80BB36298ADA98368C97937043F3185CACA1E164F12AD89E + 1509132316E659BB39A14807B6A000E74365A5282D43EB67BFC020FD1D76159A + C0502785D8984580B8691830BEA9561F634EFC1340AAA4111E55C60817859611 + E4038EF34256FE6BE86C5A0F807D4010035F2DA3EE1EA32DEEA81EEC7F0126EF + 288E87A8D597389F8DC28280858ACB9FE06C690CBFF702E60DB153E463EF70C5 + D632EEDC1F00FA6A7CA824397D888B46AB671EF300CC826DDC092B5710411CB0 + 406C62D86EEFEA72C69DAA07F76FC0645DD241B15A7D93E3C6A85FE2471D5E68 + 6872C1CE1C2FE46BF0AC2A1842F7B9CBB2CFF8AB05007900A26949819995E075 + 184D43A0FF400B95575CD0FED4010A9907AAB5E1BC9801EC9FA9C261656D0346 + 7FFC8106E2A55C7A591EA551197CC84A1121BB4FC8346AF540CB1307A8950462 + 25E8670B8CD01E6611B198C445D9E5DC75EABD7E4DA32B322C05630F3F15BE54 + 82788F788FF9E9FB679D9110C781FBC077B753433BB478CB0F7C3B8CF0987D51 + CF0000000049454E44AE426082} + Name = 'PngImage3' + Background = clWindow + end> + Left = 56 + Top = 48 + Bitmap = {} + end +end diff --git a/Modulos/Pedidos a proveedor/Cliente/uViewPedidosProveedor.pas b/Modulos/Pedidos a proveedor/Cliente/uViewPedidosProveedor.pas new file mode 100644 index 0000000..9c4dcfb --- /dev/null +++ b/Modulos/Pedidos a proveedor/Cliente/uViewPedidosProveedor.pas @@ -0,0 +1,178 @@ +unit uViewPedidosProveedor; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewGrid, uViewPreview, frxClass, frxPreview, cxStyles, + cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, DB, + cxDBData, ActnList, uDADataTable, cxGridLevel, cxClasses, cxControls, + cxGridCustomView, cxGridCustomTableView, cxGridTableView, + cxGridDBTableView, cxGrid, uBizPedidosProveedor, StdCtrls, ExtCtrls, + cxLabel, dxPSGlbl, dxPSUtl, dxPSEngn, dxPrnPg, dxBkgnd, dxWrap, dxPrnDev, + dxPSCompsProvider, dxPSFillPatterns, dxPSEdgePatterns, cxIntlPrintSys3, + dxPSCore, dxPScxCommon, dxPScxGridLnk, cxImage, cxImageComboBox, ImgList, + PngImageList, cxTextEdit, Grids, DBGrids, uViewFiltroBase; + +type + IViewPedidosProveedor = interface(IViewGrid) + ['{F21DDC5A-0A61-448A-A0B8-F8C82F8524AE}'] + function GetPedidosProveedor: IBizPedidosProveedor; + procedure SetPedidosProveedor(const Value: IBizPedidosProveedor); + property PedidosProveedor: IBizPedidosProveedor read GetPedidosProveedor write + SetPedidosProveedor; + end; + + TfrViewPedidosProveedor = class(TfrViewGrid, IViewPedidosProveedor) + cxGridDBTableView1: TcxGridDBTableView; + cxGridLevel1: TcxGridLevel; + cxGridLevel2: TcxGridLevel; + cxGridLevel3: TcxGridLevel; + PngImageList: TPngImageList; + cxGridViewCODIGO: TcxGridDBColumn; + cxGridViewREFERENCIA: TcxGridDBColumn; + cxGridViewFECHAPEDIDO: TcxGridDBColumn; + cxGridViewFECHACONFIRMACION: TcxGridDBColumn; + cxGridViewSITUACION: TcxGridDBColumn; + cxGridViewFECHAENTREGA: TcxGridDBColumn; + cxGridViewDIRECCIONCOMPLETA: TcxGridDBColumn; + cxGridViewINCIDENCIASACTIVAS: TcxGridDBColumn; + cxGridViewCODIGOALMACEN: TcxGridDBColumn; + cxGridViewCODIGOCONTACTO: TcxGridDBColumn; + cxGridViewNOMBRE: TcxGridDBColumn; + cxGridViewCODIGOMONTAJE: TcxGridDBColumn; + cxGridViewNOMBREALMACEN: TcxGridDBColumn; + cxGridViewNOMBRECLIENTE: TcxGridDBColumn; + procedure cxGridActiveTabChanged(Sender: TcxCustomGrid; ALevel: + TcxGridLevel); + procedure cxGridViewCODIGOCustomDrawCell(Sender: TcxCustomGridTableView; + ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var + ADone: Boolean); + procedure cxGridViewStylesGetContentStyle(Sender: TcxCustomGridTableView; + ARecord: TcxCustomGridRecord; AItem: TcxCustomGridTableItem; out + AStyle: TcxStyle); + + private + //Filtros relativos a la vista + procedure AnadirFiltroSituaciones; + procedure AnadirFiltroFechas; + + protected + FPedidosProveedor: IBizPedidosProveedor; + function GetPedidosProveedor: IBizPedidosProveedor; + procedure SetPedidosProveedor(const Value: IBizPedidosProveedor); + procedure AnadirOtrosFiltros; override; + + public + property PedidosProveedor: IBizPedidosProveedor read GetPedidosProveedor write + SetPedidosProveedor; + end; + +var + frViewPedidosProveedor: TfrViewPedidosProveedor; + +implementation + +uses uDataModulePedidosProveedor, schPedidosProveedorClient_Intf; + +{$R *.dfm} + +procedure TfrViewPedidosProveedor.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('FECHAPEDIDO'); + FFiltro.AddItem(Columna, foBetween, varArrayOf([Fecha1, Fecha2]), VarToStr(Fecha1) + ' and ' + VarToStr(Fecha2)); + end; +end; + +procedure TfrViewPedidosProveedor.AnadirFiltroSituaciones; +var + FFiltro : TcxFilterCriteriaItemList; +begin + FFiltro := AddFilterGrid(fboAnd); + + case cxGrid.ActiveLevel.Index of + 1 : FFiltro.AddItem(cxGridViewSITUACION, foEqual, SITUACION_PENDIENTE, SITUACION_PENDIENTE); + 2 : FFiltro.AddItem(cxGridViewSITUACION, foEqual, SITUACION_PARCIAL, SITUACION_PARCIAL); + 3 : FFiltro.AddItem(cxGridViewSITUACION, foEqual, SITUACION_RECIBIDO, SITUACION_RECIBIDO); + end; +end; + +procedure TfrViewPedidosProveedor.cxGridActiveTabChanged(Sender: TcxCustomGrid; ALevel: TcxGridLevel); +begin + inherited; + RefrescarFiltro; +end; + +procedure TfrViewPedidosProveedor.cxGridViewCODIGOCustomDrawCell(Sender: + TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: + TcxGridTableDataCellViewInfo; var ADone: Boolean); +var + R: TRect; +begin + inherited; + R := AViewInfo.ContentBounds; + ACanvas.FillRect(R); + ACanvas.DrawImage(PngImageList, R.Left, R.Top, 2); + ADone := True; +end; + +procedure TfrViewPedidosProveedor.cxGridViewStylesGetContentStyle(Sender: + TcxCustomGridTableView; ARecord: TcxCustomGridRecord; AItem: + TcxCustomGridTableItem; out AStyle: TcxStyle); +var + IndiceCol: Integer; + ASituacion: string; +begin +{ inherited; + if Assigned(ARecord) then + begin + IndiceCol := (Sender as TcxGridDBTableView).GetColumnByFieldName(fld_PresupuestosSITUACION).Index; + ASituacion := VarToStr(ARecord.DisplayTexts[IndiceCol]); + if ASituacion = SITUACION_ACEPTADO then + AStyle := cxStyleAceptado + else if ASituacion = SITUACION_RECHAZADO then + AStyle := cxStyleRechazado; + end; +} +end; + +function TfrViewPedidosProveedor.GetPedidosProveedor: IBizPedidosProveedor; +begin + Result := FPedidosProveedor; +end; + +procedure TfrViewPedidosProveedor.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 TfrViewPedidosProveedor.SetPedidosProveedor(const Value: IBizPedidosProveedor); +begin + FPedidosProveedor := Value; + if Assigned(FPedidosProveedor) then + DADataSource.DataTable := FPedidosProveedor.DataTable; +end; + +end. diff --git a/Modulos/Pedidos a proveedor/Cliente/uViewTotalPedido.ddp b/Modulos/Pedidos a proveedor/Cliente/uViewTotalPedido.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Pedidos a proveedor/Cliente/uViewTotalPedido.ddp differ diff --git a/Modulos/Pedidos a proveedor/Cliente/uViewTotalPedido.dfm b/Modulos/Pedidos a proveedor/Cliente/uViewTotalPedido.dfm new file mode 100644 index 0000000..40df534 --- /dev/null +++ b/Modulos/Pedidos a proveedor/Cliente/uViewTotalPedido.dfm @@ -0,0 +1,62 @@ +inherited frViewTotalPedido: TfrViewTotalPedido + Width = 465 + Height = 71 + Align = alBottom + object GroupBox1: TGroupBox + Left = 8 + Top = 8 + Width = 449 + Height = 53 + Caption = 'Importe total del pedido' + Font.Charset = DEFAULT_CHARSET + Font.Color = clActiveCaption + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [fsBold] + ParentFont = False + TabOrder = 0 + object Label7: TLabel + Left = 19 + Top = 22 + Width = 80 + Height = 13 + Caption = 'Importe total:' + Font.Charset = DEFAULT_CHARSET + Font.Color = clActiveCaption + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [fsBold] + ParentFont = False + end + object cxCurrencyEdit5: TcxDBCurrencyEdit + Left = 106 + Top = 18 + AutoSize = False + DataBinding.DataField = 'IMPORTETOTAL' + DataBinding.DataSource = DADataSource + ParentFont = False + Properties.Alignment.Horz = taRightJustify + Properties.ReadOnly = True + Properties.UseLeftAlignmentOnEditing = False + Properties.UseThousandSeparator = True + Style.Font.Charset = DEFAULT_CHARSET + Style.Font.Color = clWindowText + Style.Font.Height = -11 + Style.Font.Name = 'Tahoma' + Style.Font.Style = [] + Style.LookAndFeel.NativeStyle = True + Style.TextColor = clActiveCaption + Style.TextStyle = [fsBold] + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 0 + Height = 21 + Width = 137 + end + end + object DADataSource: TDADataSource + Left = 264 + Top = 24 + end +end diff --git a/Modulos/Pedidos a proveedor/Cliente/uViewTotalPedido.pas b/Modulos/Pedidos a proveedor/Cliente/uViewTotalPedido.pas new file mode 100644 index 0000000..4635942 --- /dev/null +++ b/Modulos/Pedidos a proveedor/Cliente/uViewTotalPedido.pas @@ -0,0 +1,28 @@ +unit uViewTotalPedido; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, ExtCtrls, StdCtrls, DB, uDADataTable, cxGraphics, + cxTextEdit, cxMaskEdit, cxDropDownEdit, cxDBEdit, cxControls, + cxContainer, cxEdit, cxLabel, cxDBLabel, cxCurrencyEdit, cxSpinEdit; + +type + TfrViewTotalPedido = class(TfrViewBase) + DADataSource: TDADataSource; + GroupBox1: TGroupBox; + Label7: TLabel; + cxCurrencyEdit5: TcxDBCurrencyEdit; + private + { Private declarations } + public + { Public declarations } + end; + + +implementation + +{$R *.dfm} + +end. diff --git a/Modulos/Pedidos a proveedor/Reglas/schPedidosProveedorClient_Intf.pas b/Modulos/Pedidos a proveedor/Reglas/schPedidosProveedorClient_Intf.pas new file mode 100644 index 0000000..011675d --- /dev/null +++ b/Modulos/Pedidos a proveedor/Reglas/schPedidosProveedorClient_Intf.pas @@ -0,0 +1,1614 @@ +unit schPedidosProveedorClient_Intf; + +interface + +uses + Classes, DB, SysUtils, uROClasses, uDADataTable; + +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_darReferenciaPedido = '{505FD1BA-CDDC-4703-8DD7-3D2BDD241D2E}'; + RID_DetallesPedidosProveedor = '{FBD0F0E0-3295-4D79-863F-FC778E6787E2}'; + RID_PedidosProveedor = '{45DBB351-50FF-4444-A2BA-305E6D011C02}'; + RID_Refresh_PedidosProveedor = '{139C4281-92C5-4431-B4BB-E51B6D4CBC8A}'; + RID_InformeCabeceraPedido = '{4D5A204C-EE0C-4C02-B954-C305CE082250}'; + RID_InformeDetallesPedido = '{5EB109BB-A440-4768-A612-6A04E27E451D}'; + + { Data table names } + nme_darReferenciaPedido = 'darReferenciaPedido'; + nme_DetallesPedidosProveedor = 'DetallesPedidosProveedor'; + nme_PedidosProveedor = 'PedidosProveedor'; + nme_Refresh_PedidosProveedor = 'Refresh_PedidosProveedor'; + nme_InformeCabeceraPedido = 'InformeCabeceraPedido'; + nme_InformeDetallesPedido = 'InformeDetallesPedido'; + + { darReferenciaPedido fields } + + { darReferenciaPedido field indexes } + + { DetallesPedidosProveedor fields } + fld_DetallesPedidosProveedorCODIGOPEDIDO = 'CODIGOPEDIDO'; + fld_DetallesPedidosProveedorNUMCONCEPTO = 'NUMCONCEPTO'; + fld_DetallesPedidosProveedorDESCRIPCION = 'DESCRIPCION'; + fld_DetallesPedidosProveedorCANTIDAD = 'CANTIDAD'; + fld_DetallesPedidosProveedorIMPORTEUNIDAD = 'IMPORTEUNIDAD'; + fld_DetallesPedidosProveedorIMPORTETOTAL = 'IMPORTETOTAL'; + fld_DetallesPedidosProveedorPOSICION = 'POSICION'; + fld_DetallesPedidosProveedorTIPO = 'TIPO'; + + { DetallesPedidosProveedor field indexes } + idx_DetallesPedidosProveedorCODIGOPEDIDO = 0; + idx_DetallesPedidosProveedorNUMCONCEPTO = 1; + idx_DetallesPedidosProveedorDESCRIPCION = 2; + idx_DetallesPedidosProveedorCANTIDAD = 3; + idx_DetallesPedidosProveedorIMPORTEUNIDAD = 4; + idx_DetallesPedidosProveedorIMPORTETOTAL = 5; + idx_DetallesPedidosProveedorPOSICION = 6; + idx_DetallesPedidosProveedorTIPO = 7; + + { PedidosProveedor fields } + fld_PedidosProveedorCODIGOEMPRESA = 'CODIGOEMPRESA'; + fld_PedidosProveedorCODIGO = 'CODIGO'; + fld_PedidosProveedorFECHAALTA = 'FECHAALTA'; + fld_PedidosProveedorUSUARIO = 'USUARIO'; + fld_PedidosProveedorREFERENCIA = 'REFERENCIA'; + fld_PedidosProveedorFECHAPEDIDO = 'FECHAPEDIDO'; + fld_PedidosProveedorFECHACONFIRMACION = 'FECHACONFIRMACION'; + fld_PedidosProveedorSITUACION = 'SITUACION'; + fld_PedidosProveedorFECHAENTREGA = 'FECHAENTREGA'; + fld_PedidosProveedorOBSERVACIONES = 'OBSERVACIONES'; + fld_PedidosProveedorIMPORTETOTAL = 'IMPORTETOTAL'; + fld_PedidosProveedorDIRECCIONCOMPLETA = 'DIRECCIONCOMPLETA'; + fld_PedidosProveedorINCIDENCIAS = 'INCIDENCIAS'; + fld_PedidosProveedorINCIDENCIASACTIVAS = 'INCIDENCIASACTIVAS'; + fld_PedidosProveedorCODIGOALMACEN = 'CODIGOALMACEN'; + fld_PedidosProveedorCODIGOCONTACTO = 'CODIGOCONTACTO'; + fld_PedidosProveedorNOMBRE = 'NOMBRE'; + fld_PedidosProveedorCODIGOMONTAJE = 'CODIGOMONTAJE'; + fld_PedidosProveedorNOMBREALMACEN = 'NOMBREALMACEN'; + fld_PedidosProveedorCODIGOCONTACTO1 = 'CODIGOCONTACTO1'; + fld_PedidosProveedorNOMBRECLIENTE = 'NOMBRECLIENTE'; + + { PedidosProveedor field indexes } + idx_PedidosProveedorCODIGOEMPRESA = 0; + idx_PedidosProveedorCODIGO = 1; + idx_PedidosProveedorFECHAALTA = 2; + idx_PedidosProveedorUSUARIO = 3; + idx_PedidosProveedorREFERENCIA = 4; + idx_PedidosProveedorFECHAPEDIDO = 5; + idx_PedidosProveedorFECHACONFIRMACION = 6; + idx_PedidosProveedorSITUACION = 7; + idx_PedidosProveedorFECHAENTREGA = 8; + idx_PedidosProveedorOBSERVACIONES = 9; + idx_PedidosProveedorIMPORTETOTAL = 10; + idx_PedidosProveedorDIRECCIONCOMPLETA = 11; + idx_PedidosProveedorINCIDENCIAS = 12; + idx_PedidosProveedorINCIDENCIASACTIVAS = 13; + idx_PedidosProveedorCODIGOALMACEN = 14; + idx_PedidosProveedorCODIGOCONTACTO = 15; + idx_PedidosProveedorNOMBRE = 16; + idx_PedidosProveedorCODIGOMONTAJE = 17; + idx_PedidosProveedorNOMBREALMACEN = 18; + idx_PedidosProveedorCODIGOCONTACTO1 = 19; + idx_PedidosProveedorNOMBRECLIENTE = 20; + + { Refresh_PedidosProveedor fields } + fld_Refresh_PedidosProveedorCODIGOEMPRESA = 'CODIGOEMPRESA'; + fld_Refresh_PedidosProveedorCODIGO = 'CODIGO'; + fld_Refresh_PedidosProveedorFECHAALTA = 'FECHAALTA'; + fld_Refresh_PedidosProveedorUSUARIO = 'USUARIO'; + fld_Refresh_PedidosProveedorREFERENCIA = 'REFERENCIA'; + fld_Refresh_PedidosProveedorFECHAPEDIDO = 'FECHAPEDIDO'; + fld_Refresh_PedidosProveedorFECHACONFIRMACION = 'FECHACONFIRMACION'; + fld_Refresh_PedidosProveedorSITUACION = 'SITUACION'; + fld_Refresh_PedidosProveedorFECHAENTREGA = 'FECHAENTREGA'; + fld_Refresh_PedidosProveedorOBSERVACIONES = 'OBSERVACIONES'; + fld_Refresh_PedidosProveedorIMPORTETOTAL = 'IMPORTETOTAL'; + fld_Refresh_PedidosProveedorDIRECCIONCOMPLETA = 'DIRECCIONCOMPLETA'; + fld_Refresh_PedidosProveedorINCIDENCIAS = 'INCIDENCIAS'; + fld_Refresh_PedidosProveedorINCIDENCIASACTIVAS = 'INCIDENCIASACTIVAS'; + fld_Refresh_PedidosProveedorCODIGOALMACEN = 'CODIGOALMACEN'; + fld_Refresh_PedidosProveedorCODIGOCONTACTO = 'CODIGOCONTACTO'; + fld_Refresh_PedidosProveedorNOMBRE = 'NOMBRE'; + fld_Refresh_PedidosProveedorCODIGOMONTAJE = 'CODIGOMONTAJE'; + fld_Refresh_PedidosProveedorNOMBREALMACEN = 'NOMBREALMACEN'; + fld_Refresh_PedidosProveedorCODIGOCONTACTO1 = 'CODIGOCONTACTO1'; + fld_Refresh_PedidosProveedorNOMBRECLIENTE = 'NOMBRECLIENTE'; + + { Refresh_PedidosProveedor field indexes } + idx_Refresh_PedidosProveedorCODIGOEMPRESA = 0; + idx_Refresh_PedidosProveedorCODIGO = 1; + idx_Refresh_PedidosProveedorFECHAALTA = 2; + idx_Refresh_PedidosProveedorUSUARIO = 3; + idx_Refresh_PedidosProveedorREFERENCIA = 4; + idx_Refresh_PedidosProveedorFECHAPEDIDO = 5; + idx_Refresh_PedidosProveedorFECHACONFIRMACION = 6; + idx_Refresh_PedidosProveedorSITUACION = 7; + idx_Refresh_PedidosProveedorFECHAENTREGA = 8; + idx_Refresh_PedidosProveedorOBSERVACIONES = 9; + idx_Refresh_PedidosProveedorIMPORTETOTAL = 10; + idx_Refresh_PedidosProveedorDIRECCIONCOMPLETA = 11; + idx_Refresh_PedidosProveedorINCIDENCIAS = 12; + idx_Refresh_PedidosProveedorINCIDENCIASACTIVAS = 13; + idx_Refresh_PedidosProveedorCODIGOALMACEN = 14; + idx_Refresh_PedidosProveedorCODIGOCONTACTO = 15; + idx_Refresh_PedidosProveedorNOMBRE = 16; + idx_Refresh_PedidosProveedorCODIGOMONTAJE = 17; + idx_Refresh_PedidosProveedorNOMBREALMACEN = 18; + idx_Refresh_PedidosProveedorCODIGOCONTACTO1 = 19; + idx_Refresh_PedidosProveedorNOMBRECLIENTE = 20; + + { InformeCabeceraPedido fields } + fld_InformeCabeceraPedidoCODIGOEMPRESA = 'CODIGOEMPRESA'; + fld_InformeCabeceraPedidoCODIGO = 'CODIGO'; + fld_InformeCabeceraPedidoREFERENCIA = 'REFERENCIA'; + fld_InformeCabeceraPedidoFECHAPEDIDO = 'FECHAPEDIDO'; + fld_InformeCabeceraPedidoFECHAENTREGA = 'FECHAENTREGA'; + fld_InformeCabeceraPedidoOBSERVACIONES = 'OBSERVACIONES'; + fld_InformeCabeceraPedidoIMPORTETOTAL = 'IMPORTETOTAL'; + fld_InformeCabeceraPedidoDIRECCIONCOMPLETA = 'DIRECCIONCOMPLETA'; + fld_InformeCabeceraPedidoNOMBRE = 'NOMBRE'; + fld_InformeCabeceraPedidoCALLE = 'CALLE'; + fld_InformeCabeceraPedidoCODIGOPOSTAL = 'CODIGOPOSTAL'; + fld_InformeCabeceraPedidoPROVINCIA = 'PROVINCIA'; + fld_InformeCabeceraPedidoPOBLACION = 'POBLACION'; + fld_InformeCabeceraPedidoCODIGOMONTAJE = 'CODIGOMONTAJE'; + fld_InformeCabeceraPedidoCODIGOCONTACTO = 'CODIGOCONTACTO'; + fld_InformeCabeceraPedidoNOMBRECLIENTE = 'NOMBRECLIENTE'; + + { InformeCabeceraPedido field indexes } + idx_InformeCabeceraPedidoCODIGOEMPRESA = 0; + idx_InformeCabeceraPedidoCODIGO = 1; + idx_InformeCabeceraPedidoREFERENCIA = 2; + idx_InformeCabeceraPedidoFECHAPEDIDO = 3; + idx_InformeCabeceraPedidoFECHAENTREGA = 4; + idx_InformeCabeceraPedidoOBSERVACIONES = 5; + idx_InformeCabeceraPedidoIMPORTETOTAL = 6; + idx_InformeCabeceraPedidoDIRECCIONCOMPLETA = 7; + idx_InformeCabeceraPedidoNOMBRE = 8; + idx_InformeCabeceraPedidoCALLE = 9; + idx_InformeCabeceraPedidoCODIGOPOSTAL = 10; + idx_InformeCabeceraPedidoPROVINCIA = 11; + idx_InformeCabeceraPedidoPOBLACION = 12; + idx_InformeCabeceraPedidoCODIGOMONTAJE = 13; + idx_InformeCabeceraPedidoCODIGOCONTACTO = 14; + idx_InformeCabeceraPedidoNOMBRECLIENTE = 15; + + { InformeDetallesPedido fields } + fld_InformeDetallesPedidoCODIGOPEDIDO = 'CODIGOPEDIDO'; + fld_InformeDetallesPedidoNUMCONCEPTO = 'NUMCONCEPTO'; + fld_InformeDetallesPedidoDESCRIPCION = 'DESCRIPCION'; + fld_InformeDetallesPedidoCANTIDAD = 'CANTIDAD'; + fld_InformeDetallesPedidoIMPORTEUNIDAD = 'IMPORTEUNIDAD'; + fld_InformeDetallesPedidoIMPORTETOTAL = 'IMPORTETOTAL'; + fld_InformeDetallesPedidoPOSICION = 'POSICION'; + fld_InformeDetallesPedidoTIPO = 'TIPO'; + + { InformeDetallesPedido field indexes } + idx_InformeDetallesPedidoCODIGOPEDIDO = 0; + idx_InformeDetallesPedidoNUMCONCEPTO = 1; + idx_InformeDetallesPedidoDESCRIPCION = 2; + idx_InformeDetallesPedidoCANTIDAD = 3; + idx_InformeDetallesPedidoIMPORTEUNIDAD = 4; + idx_InformeDetallesPedidoIMPORTETOTAL = 5; + idx_InformeDetallesPedidoPOSICION = 6; + idx_InformeDetallesPedidoTIPO = 7; + +type + { IdarReferenciaPedido } + IdarReferenciaPedido = interface(IDAStronglyTypedDataTable) + ['{0F22273C-9C50-4C0B-A525-91B8A4A2B810}'] + { Property getters and setters } + + + { Properties } + end; + + { TdarReferenciaPedidoDataTableRules } + TdarReferenciaPedidoDataTableRules = class(TDADataTableRules, IdarReferenciaPedido) + private + protected + { Property getters and setters } + + { Properties } + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + + { IDetallesPedidosProveedor } + IDetallesPedidosProveedor = interface(IDAStronglyTypedDataTable) + ['{85D589DA-23C9-4E5C-A8D5-E9C5FE0C299C}'] + { Property getters and setters } + function GetCODIGOPEDIDOValue: Integer; + procedure SetCODIGOPEDIDOValue(const aValue: Integer); + function GetNUMCONCEPTOValue: Integer; + procedure SetNUMCONCEPTOValue(const aValue: Integer); + function GetDESCRIPCIONValue: String; + procedure SetDESCRIPCIONValue(const aValue: String); + function GetCANTIDADValue: Integer; + procedure SetCANTIDADValue(const aValue: Integer); + function GetIMPORTEUNIDADValue: Currency; + procedure SetIMPORTEUNIDADValue(const aValue: Currency); + function GetIMPORTETOTALValue: Currency; + procedure SetIMPORTETOTALValue(const aValue: Currency); + function GetPOSICIONValue: Integer; + procedure SetPOSICIONValue(const aValue: Integer); + function GetTIPOValue: String; + procedure SetTIPOValue(const aValue: String); + + + { Properties } + property CODIGOPEDIDO: Integer read GetCODIGOPEDIDOValue write SetCODIGOPEDIDOValue; + property NUMCONCEPTO: Integer read GetNUMCONCEPTOValue write SetNUMCONCEPTOValue; + property DESCRIPCION: String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + property CANTIDAD: Integer read GetCANTIDADValue write SetCANTIDADValue; + property IMPORTEUNIDAD: Currency read GetIMPORTEUNIDADValue write SetIMPORTEUNIDADValue; + property IMPORTETOTAL: Currency read GetIMPORTETOTALValue write SetIMPORTETOTALValue; + property POSICION: Integer read GetPOSICIONValue write SetPOSICIONValue; + property TIPO: String read GetTIPOValue write SetTIPOValue; + end; + + { TDetallesPedidosProveedorDataTableRules } + TDetallesPedidosProveedorDataTableRules = class(TDADataTableRules, IDetallesPedidosProveedor) + private + protected + { Property getters and setters } + function GetCODIGOPEDIDOValue: Integer; virtual; + procedure SetCODIGOPEDIDOValue(const aValue: Integer); virtual; + function GetNUMCONCEPTOValue: Integer; virtual; + procedure SetNUMCONCEPTOValue(const aValue: Integer); virtual; + function GetDESCRIPCIONValue: String; virtual; + procedure SetDESCRIPCIONValue(const aValue: String); virtual; + function GetCANTIDADValue: Integer; virtual; + procedure SetCANTIDADValue(const aValue: Integer); virtual; + function GetIMPORTEUNIDADValue: Currency; virtual; + procedure SetIMPORTEUNIDADValue(const aValue: Currency); virtual; + function GetIMPORTETOTALValue: Currency; virtual; + procedure SetIMPORTETOTALValue(const aValue: Currency); virtual; + function GetPOSICIONValue: Integer; virtual; + procedure SetPOSICIONValue(const aValue: Integer); virtual; + function GetTIPOValue: String; virtual; + procedure SetTIPOValue(const aValue: String); virtual; + + { Properties } + property CODIGOPEDIDO: Integer read GetCODIGOPEDIDOValue write SetCODIGOPEDIDOValue; + property NUMCONCEPTO: Integer read GetNUMCONCEPTOValue write SetNUMCONCEPTOValue; + property DESCRIPCION: String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + property CANTIDAD: Integer read GetCANTIDADValue write SetCANTIDADValue; + property IMPORTEUNIDAD: Currency read GetIMPORTEUNIDADValue write SetIMPORTEUNIDADValue; + property IMPORTETOTAL: Currency read GetIMPORTETOTALValue write SetIMPORTETOTALValue; + property POSICION: Integer read GetPOSICIONValue write SetPOSICIONValue; + property TIPO: String read GetTIPOValue write SetTIPOValue; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + + { IPedidosProveedor } + IPedidosProveedor = interface(IDAStronglyTypedDataTable) + ['{A3234350-6EC1-44E2-914A-4F402CAD1C21}'] + { Property getters and setters } + function GetCODIGOEMPRESAValue: Integer; + procedure SetCODIGOEMPRESAValue(const aValue: Integer); + function GetCODIGOValue: Integer; + procedure SetCODIGOValue(const aValue: Integer); + function GetFECHAALTAValue: DateTime; + procedure SetFECHAALTAValue(const aValue: DateTime); + function GetUSUARIOValue: String; + procedure SetUSUARIOValue(const aValue: String); + function GetREFERENCIAValue: String; + procedure SetREFERENCIAValue(const aValue: String); + function GetFECHAPEDIDOValue: DateTime; + procedure SetFECHAPEDIDOValue(const aValue: DateTime); + function GetFECHACONFIRMACIONValue: DateTime; + procedure SetFECHACONFIRMACIONValue(const aValue: DateTime); + function GetSITUACIONValue: String; + procedure SetSITUACIONValue(const aValue: String); + function GetFECHAENTREGAValue: DateTime; + procedure SetFECHAENTREGAValue(const aValue: DateTime); + function GetOBSERVACIONESValue: IROStrings; + procedure SetOBSERVACIONESValue(const aValue: IROStrings); + function GetIMPORTETOTALValue: Currency; + procedure SetIMPORTETOTALValue(const aValue: Currency); + function GetDIRECCIONCOMPLETAValue: IROStrings; + procedure SetDIRECCIONCOMPLETAValue(const aValue: IROStrings); + function GetINCIDENCIASValue: IROStrings; + procedure SetINCIDENCIASValue(const aValue: IROStrings); + function GetINCIDENCIASACTIVASValue: Integer; + procedure SetINCIDENCIASACTIVASValue(const aValue: Integer); + function GetCODIGOALMACENValue: Integer; + procedure SetCODIGOALMACENValue(const aValue: Integer); + function GetCODIGOCONTACTOValue: Integer; + procedure SetCODIGOCONTACTOValue(const aValue: Integer); + function GetNOMBREValue: String; + procedure SetNOMBREValue(const aValue: String); + function GetCODIGOMONTAJEValue: Integer; + procedure SetCODIGOMONTAJEValue(const aValue: Integer); + function GetNOMBREALMACENValue: String; + procedure SetNOMBREALMACENValue(const aValue: String); + function GetCODIGOCONTACTO1Value: Integer; + procedure SetCODIGOCONTACTO1Value(const aValue: Integer); + function GetNOMBRECLIENTEValue: String; + procedure SetNOMBRECLIENTEValue(const aValue: String); + + + { Properties } + property CODIGOEMPRESA: Integer read GetCODIGOEMPRESAValue write SetCODIGOEMPRESAValue; + property CODIGO: Integer read GetCODIGOValue write SetCODIGOValue; + property FECHAALTA: DateTime read GetFECHAALTAValue write SetFECHAALTAValue; + property USUARIO: String read GetUSUARIOValue write SetUSUARIOValue; + property REFERENCIA: String read GetREFERENCIAValue write SetREFERENCIAValue; + property FECHAPEDIDO: DateTime read GetFECHAPEDIDOValue write SetFECHAPEDIDOValue; + property FECHACONFIRMACION: DateTime read GetFECHACONFIRMACIONValue write SetFECHACONFIRMACIONValue; + property SITUACION: String read GetSITUACIONValue write SetSITUACIONValue; + property FECHAENTREGA: DateTime read GetFECHAENTREGAValue write SetFECHAENTREGAValue; + property OBSERVACIONES: IROStrings read GetOBSERVACIONESValue write SetOBSERVACIONESValue; + property IMPORTETOTAL: Currency read GetIMPORTETOTALValue write SetIMPORTETOTALValue; + property DIRECCIONCOMPLETA: IROStrings read GetDIRECCIONCOMPLETAValue write SetDIRECCIONCOMPLETAValue; + property INCIDENCIAS: IROStrings read GetINCIDENCIASValue write SetINCIDENCIASValue; + property INCIDENCIASACTIVAS: Integer read GetINCIDENCIASACTIVASValue write SetINCIDENCIASACTIVASValue; + property CODIGOALMACEN: Integer read GetCODIGOALMACENValue write SetCODIGOALMACENValue; + property CODIGOCONTACTO: Integer read GetCODIGOCONTACTOValue write SetCODIGOCONTACTOValue; + property NOMBRE: String read GetNOMBREValue write SetNOMBREValue; + property CODIGOMONTAJE: Integer read GetCODIGOMONTAJEValue write SetCODIGOMONTAJEValue; + property NOMBREALMACEN: String read GetNOMBREALMACENValue write SetNOMBREALMACENValue; + property CODIGOCONTACTO1: Integer read GetCODIGOCONTACTO1Value write SetCODIGOCONTACTO1Value; + property NOMBRECLIENTE: String read GetNOMBRECLIENTEValue write SetNOMBRECLIENTEValue; + end; + + { TPedidosProveedorDataTableRules } + TPedidosProveedorDataTableRules = class(TDADataTableRules, IPedidosProveedor) + private + protected + { Property getters and setters } + function GetCODIGOEMPRESAValue: Integer; virtual; + procedure SetCODIGOEMPRESAValue(const aValue: Integer); virtual; + function GetCODIGOValue: Integer; virtual; + procedure SetCODIGOValue(const aValue: Integer); virtual; + function GetFECHAALTAValue: DateTime; virtual; + procedure SetFECHAALTAValue(const aValue: DateTime); virtual; + function GetUSUARIOValue: String; virtual; + procedure SetUSUARIOValue(const aValue: String); virtual; + function GetREFERENCIAValue: String; virtual; + procedure SetREFERENCIAValue(const aValue: String); virtual; + function GetFECHAPEDIDOValue: DateTime; virtual; + procedure SetFECHAPEDIDOValue(const aValue: DateTime); virtual; + function GetFECHACONFIRMACIONValue: DateTime; virtual; + procedure SetFECHACONFIRMACIONValue(const aValue: DateTime); virtual; + function GetSITUACIONValue: String; virtual; + procedure SetSITUACIONValue(const aValue: String); virtual; + function GetFECHAENTREGAValue: DateTime; virtual; + procedure SetFECHAENTREGAValue(const aValue: DateTime); virtual; + function GetOBSERVACIONESValue: IROStrings; virtual; + procedure SetOBSERVACIONESValue(const aValue: IROStrings); virtual; + function GetIMPORTETOTALValue: Currency; virtual; + procedure SetIMPORTETOTALValue(const aValue: Currency); virtual; + function GetDIRECCIONCOMPLETAValue: IROStrings; virtual; + procedure SetDIRECCIONCOMPLETAValue(const aValue: IROStrings); virtual; + function GetINCIDENCIASValue: IROStrings; virtual; + procedure SetINCIDENCIASValue(const aValue: IROStrings); virtual; + function GetINCIDENCIASACTIVASValue: Integer; virtual; + procedure SetINCIDENCIASACTIVASValue(const aValue: Integer); virtual; + function GetCODIGOALMACENValue: Integer; virtual; + procedure SetCODIGOALMACENValue(const aValue: Integer); virtual; + function GetCODIGOCONTACTOValue: Integer; virtual; + procedure SetCODIGOCONTACTOValue(const aValue: Integer); virtual; + function GetNOMBREValue: String; virtual; + procedure SetNOMBREValue(const aValue: String); virtual; + function GetCODIGOMONTAJEValue: Integer; virtual; + procedure SetCODIGOMONTAJEValue(const aValue: Integer); virtual; + function GetNOMBREALMACENValue: String; virtual; + procedure SetNOMBREALMACENValue(const aValue: String); virtual; + function GetCODIGOCONTACTO1Value: Integer; virtual; + procedure SetCODIGOCONTACTO1Value(const aValue: Integer); virtual; + function GetNOMBRECLIENTEValue: String; virtual; + procedure SetNOMBRECLIENTEValue(const aValue: String); virtual; + + { Properties } + property CODIGOEMPRESA: Integer read GetCODIGOEMPRESAValue write SetCODIGOEMPRESAValue; + property CODIGO: Integer read GetCODIGOValue write SetCODIGOValue; + property FECHAALTA: DateTime read GetFECHAALTAValue write SetFECHAALTAValue; + property USUARIO: String read GetUSUARIOValue write SetUSUARIOValue; + property REFERENCIA: String read GetREFERENCIAValue write SetREFERENCIAValue; + property FECHAPEDIDO: DateTime read GetFECHAPEDIDOValue write SetFECHAPEDIDOValue; + property FECHACONFIRMACION: DateTime read GetFECHACONFIRMACIONValue write SetFECHACONFIRMACIONValue; + property SITUACION: String read GetSITUACIONValue write SetSITUACIONValue; + property FECHAENTREGA: DateTime read GetFECHAENTREGAValue write SetFECHAENTREGAValue; + property OBSERVACIONES: IROStrings read GetOBSERVACIONESValue write SetOBSERVACIONESValue; + property IMPORTETOTAL: Currency read GetIMPORTETOTALValue write SetIMPORTETOTALValue; + property DIRECCIONCOMPLETA: IROStrings read GetDIRECCIONCOMPLETAValue write SetDIRECCIONCOMPLETAValue; + property INCIDENCIAS: IROStrings read GetINCIDENCIASValue write SetINCIDENCIASValue; + property INCIDENCIASACTIVAS: Integer read GetINCIDENCIASACTIVASValue write SetINCIDENCIASACTIVASValue; + property CODIGOALMACEN: Integer read GetCODIGOALMACENValue write SetCODIGOALMACENValue; + property CODIGOCONTACTO: Integer read GetCODIGOCONTACTOValue write SetCODIGOCONTACTOValue; + property NOMBRE: String read GetNOMBREValue write SetNOMBREValue; + property CODIGOMONTAJE: Integer read GetCODIGOMONTAJEValue write SetCODIGOMONTAJEValue; + property NOMBREALMACEN: String read GetNOMBREALMACENValue write SetNOMBREALMACENValue; + property CODIGOCONTACTO1: Integer read GetCODIGOCONTACTO1Value write SetCODIGOCONTACTO1Value; + property NOMBRECLIENTE: String read GetNOMBRECLIENTEValue write SetNOMBRECLIENTEValue; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + + { IRefresh_PedidosProveedor } + IRefresh_PedidosProveedor = interface(IDAStronglyTypedDataTable) + ['{6F81940D-E091-4CCF-87B5-3D18484BF359}'] + { Property getters and setters } + function GetCODIGOEMPRESAValue: Integer; + procedure SetCODIGOEMPRESAValue(const aValue: Integer); + function GetCODIGOValue: Integer; + procedure SetCODIGOValue(const aValue: Integer); + function GetFECHAALTAValue: DateTime; + procedure SetFECHAALTAValue(const aValue: DateTime); + function GetUSUARIOValue: String; + procedure SetUSUARIOValue(const aValue: String); + function GetREFERENCIAValue: String; + procedure SetREFERENCIAValue(const aValue: String); + function GetFECHAPEDIDOValue: DateTime; + procedure SetFECHAPEDIDOValue(const aValue: DateTime); + function GetFECHACONFIRMACIONValue: DateTime; + procedure SetFECHACONFIRMACIONValue(const aValue: DateTime); + function GetSITUACIONValue: String; + procedure SetSITUACIONValue(const aValue: String); + function GetFECHAENTREGAValue: DateTime; + procedure SetFECHAENTREGAValue(const aValue: DateTime); + function GetOBSERVACIONESValue: IROStrings; + procedure SetOBSERVACIONESValue(const aValue: IROStrings); + function GetIMPORTETOTALValue: Currency; + procedure SetIMPORTETOTALValue(const aValue: Currency); + function GetDIRECCIONCOMPLETAValue: IROStrings; + procedure SetDIRECCIONCOMPLETAValue(const aValue: IROStrings); + function GetINCIDENCIASValue: IROStrings; + procedure SetINCIDENCIASValue(const aValue: IROStrings); + function GetINCIDENCIASACTIVASValue: Integer; + procedure SetINCIDENCIASACTIVASValue(const aValue: Integer); + function GetCODIGOALMACENValue: Integer; + procedure SetCODIGOALMACENValue(const aValue: Integer); + function GetCODIGOCONTACTOValue: Integer; + procedure SetCODIGOCONTACTOValue(const aValue: Integer); + function GetNOMBREValue: String; + procedure SetNOMBREValue(const aValue: String); + function GetCODIGOMONTAJEValue: Integer; + procedure SetCODIGOMONTAJEValue(const aValue: Integer); + function GetNOMBREALMACENValue: String; + procedure SetNOMBREALMACENValue(const aValue: String); + function GetCODIGOCONTACTO1Value: Integer; + procedure SetCODIGOCONTACTO1Value(const aValue: Integer); + function GetNOMBRECLIENTEValue: String; + procedure SetNOMBRECLIENTEValue(const aValue: String); + + + { Properties } + property CODIGOEMPRESA: Integer read GetCODIGOEMPRESAValue write SetCODIGOEMPRESAValue; + property CODIGO: Integer read GetCODIGOValue write SetCODIGOValue; + property FECHAALTA: DateTime read GetFECHAALTAValue write SetFECHAALTAValue; + property USUARIO: String read GetUSUARIOValue write SetUSUARIOValue; + property REFERENCIA: String read GetREFERENCIAValue write SetREFERENCIAValue; + property FECHAPEDIDO: DateTime read GetFECHAPEDIDOValue write SetFECHAPEDIDOValue; + property FECHACONFIRMACION: DateTime read GetFECHACONFIRMACIONValue write SetFECHACONFIRMACIONValue; + property SITUACION: String read GetSITUACIONValue write SetSITUACIONValue; + property FECHAENTREGA: DateTime read GetFECHAENTREGAValue write SetFECHAENTREGAValue; + property OBSERVACIONES: IROStrings read GetOBSERVACIONESValue write SetOBSERVACIONESValue; + property IMPORTETOTAL: Currency read GetIMPORTETOTALValue write SetIMPORTETOTALValue; + property DIRECCIONCOMPLETA: IROStrings read GetDIRECCIONCOMPLETAValue write SetDIRECCIONCOMPLETAValue; + property INCIDENCIAS: IROStrings read GetINCIDENCIASValue write SetINCIDENCIASValue; + property INCIDENCIASACTIVAS: Integer read GetINCIDENCIASACTIVASValue write SetINCIDENCIASACTIVASValue; + property CODIGOALMACEN: Integer read GetCODIGOALMACENValue write SetCODIGOALMACENValue; + property CODIGOCONTACTO: Integer read GetCODIGOCONTACTOValue write SetCODIGOCONTACTOValue; + property NOMBRE: String read GetNOMBREValue write SetNOMBREValue; + property CODIGOMONTAJE: Integer read GetCODIGOMONTAJEValue write SetCODIGOMONTAJEValue; + property NOMBREALMACEN: String read GetNOMBREALMACENValue write SetNOMBREALMACENValue; + property CODIGOCONTACTO1: Integer read GetCODIGOCONTACTO1Value write SetCODIGOCONTACTO1Value; + property NOMBRECLIENTE: String read GetNOMBRECLIENTEValue write SetNOMBRECLIENTEValue; + end; + + { TRefresh_PedidosProveedorDataTableRules } + TRefresh_PedidosProveedorDataTableRules = class(TDADataTableRules, IRefresh_PedidosProveedor) + private + protected + { Property getters and setters } + function GetCODIGOEMPRESAValue: Integer; virtual; + procedure SetCODIGOEMPRESAValue(const aValue: Integer); virtual; + function GetCODIGOValue: Integer; virtual; + procedure SetCODIGOValue(const aValue: Integer); virtual; + function GetFECHAALTAValue: DateTime; virtual; + procedure SetFECHAALTAValue(const aValue: DateTime); virtual; + function GetUSUARIOValue: String; virtual; + procedure SetUSUARIOValue(const aValue: String); virtual; + function GetREFERENCIAValue: String; virtual; + procedure SetREFERENCIAValue(const aValue: String); virtual; + function GetFECHAPEDIDOValue: DateTime; virtual; + procedure SetFECHAPEDIDOValue(const aValue: DateTime); virtual; + function GetFECHACONFIRMACIONValue: DateTime; virtual; + procedure SetFECHACONFIRMACIONValue(const aValue: DateTime); virtual; + function GetSITUACIONValue: String; virtual; + procedure SetSITUACIONValue(const aValue: String); virtual; + function GetFECHAENTREGAValue: DateTime; virtual; + procedure SetFECHAENTREGAValue(const aValue: DateTime); virtual; + function GetOBSERVACIONESValue: IROStrings; virtual; + procedure SetOBSERVACIONESValue(const aValue: IROStrings); virtual; + function GetIMPORTETOTALValue: Currency; virtual; + procedure SetIMPORTETOTALValue(const aValue: Currency); virtual; + function GetDIRECCIONCOMPLETAValue: IROStrings; virtual; + procedure SetDIRECCIONCOMPLETAValue(const aValue: IROStrings); virtual; + function GetINCIDENCIASValue: IROStrings; virtual; + procedure SetINCIDENCIASValue(const aValue: IROStrings); virtual; + function GetINCIDENCIASACTIVASValue: Integer; virtual; + procedure SetINCIDENCIASACTIVASValue(const aValue: Integer); virtual; + function GetCODIGOALMACENValue: Integer; virtual; + procedure SetCODIGOALMACENValue(const aValue: Integer); virtual; + function GetCODIGOCONTACTOValue: Integer; virtual; + procedure SetCODIGOCONTACTOValue(const aValue: Integer); virtual; + function GetNOMBREValue: String; virtual; + procedure SetNOMBREValue(const aValue: String); virtual; + function GetCODIGOMONTAJEValue: Integer; virtual; + procedure SetCODIGOMONTAJEValue(const aValue: Integer); virtual; + function GetNOMBREALMACENValue: String; virtual; + procedure SetNOMBREALMACENValue(const aValue: String); virtual; + function GetCODIGOCONTACTO1Value: Integer; virtual; + procedure SetCODIGOCONTACTO1Value(const aValue: Integer); virtual; + function GetNOMBRECLIENTEValue: String; virtual; + procedure SetNOMBRECLIENTEValue(const aValue: String); virtual; + + { Properties } + property CODIGOEMPRESA: Integer read GetCODIGOEMPRESAValue write SetCODIGOEMPRESAValue; + property CODIGO: Integer read GetCODIGOValue write SetCODIGOValue; + property FECHAALTA: DateTime read GetFECHAALTAValue write SetFECHAALTAValue; + property USUARIO: String read GetUSUARIOValue write SetUSUARIOValue; + property REFERENCIA: String read GetREFERENCIAValue write SetREFERENCIAValue; + property FECHAPEDIDO: DateTime read GetFECHAPEDIDOValue write SetFECHAPEDIDOValue; + property FECHACONFIRMACION: DateTime read GetFECHACONFIRMACIONValue write SetFECHACONFIRMACIONValue; + property SITUACION: String read GetSITUACIONValue write SetSITUACIONValue; + property FECHAENTREGA: DateTime read GetFECHAENTREGAValue write SetFECHAENTREGAValue; + property OBSERVACIONES: IROStrings read GetOBSERVACIONESValue write SetOBSERVACIONESValue; + property IMPORTETOTAL: Currency read GetIMPORTETOTALValue write SetIMPORTETOTALValue; + property DIRECCIONCOMPLETA: IROStrings read GetDIRECCIONCOMPLETAValue write SetDIRECCIONCOMPLETAValue; + property INCIDENCIAS: IROStrings read GetINCIDENCIASValue write SetINCIDENCIASValue; + property INCIDENCIASACTIVAS: Integer read GetINCIDENCIASACTIVASValue write SetINCIDENCIASACTIVASValue; + property CODIGOALMACEN: Integer read GetCODIGOALMACENValue write SetCODIGOALMACENValue; + property CODIGOCONTACTO: Integer read GetCODIGOCONTACTOValue write SetCODIGOCONTACTOValue; + property NOMBRE: String read GetNOMBREValue write SetNOMBREValue; + property CODIGOMONTAJE: Integer read GetCODIGOMONTAJEValue write SetCODIGOMONTAJEValue; + property NOMBREALMACEN: String read GetNOMBREALMACENValue write SetNOMBREALMACENValue; + property CODIGOCONTACTO1: Integer read GetCODIGOCONTACTO1Value write SetCODIGOCONTACTO1Value; + property NOMBRECLIENTE: String read GetNOMBRECLIENTEValue write SetNOMBRECLIENTEValue; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + + { IInformeCabeceraPedido } + IInformeCabeceraPedido = interface(IDAStronglyTypedDataTable) + ['{D3E6B5DA-06AA-442B-89E8-53CF2ACC19ED}'] + { Property getters and setters } + function GetCODIGOEMPRESAValue: Integer; + procedure SetCODIGOEMPRESAValue(const aValue: Integer); + function GetCODIGOValue: Integer; + procedure SetCODIGOValue(const aValue: Integer); + function GetREFERENCIAValue: String; + procedure SetREFERENCIAValue(const aValue: String); + function GetFECHAPEDIDOValue: DateTime; + procedure SetFECHAPEDIDOValue(const aValue: DateTime); + function GetFECHAENTREGAValue: DateTime; + procedure SetFECHAENTREGAValue(const aValue: DateTime); + function GetOBSERVACIONESValue: IROStrings; + procedure SetOBSERVACIONESValue(const aValue: IROStrings); + function GetIMPORTETOTALValue: Float; + procedure SetIMPORTETOTALValue(const aValue: Float); + function GetDIRECCIONCOMPLETAValue: IROStrings; + procedure SetDIRECCIONCOMPLETAValue(const aValue: IROStrings); + function GetNOMBREValue: String; + procedure SetNOMBREValue(const aValue: String); + function GetCALLEValue: String; + procedure SetCALLEValue(const aValue: String); + function GetCODIGOPOSTALValue: String; + procedure SetCODIGOPOSTALValue(const aValue: String); + function GetPROVINCIAValue: String; + procedure SetPROVINCIAValue(const aValue: String); + function GetPOBLACIONValue: String; + procedure SetPOBLACIONValue(const aValue: String); + function GetCODIGOMONTAJEValue: Integer; + procedure SetCODIGOMONTAJEValue(const aValue: Integer); + function GetCODIGOCONTACTOValue: Integer; + procedure SetCODIGOCONTACTOValue(const aValue: Integer); + function GetNOMBRECLIENTEValue: String; + procedure SetNOMBRECLIENTEValue(const aValue: String); + + + { Properties } + property CODIGOEMPRESA: Integer read GetCODIGOEMPRESAValue write SetCODIGOEMPRESAValue; + property CODIGO: Integer read GetCODIGOValue write SetCODIGOValue; + property REFERENCIA: String read GetREFERENCIAValue write SetREFERENCIAValue; + property FECHAPEDIDO: DateTime read GetFECHAPEDIDOValue write SetFECHAPEDIDOValue; + property FECHAENTREGA: DateTime read GetFECHAENTREGAValue write SetFECHAENTREGAValue; + property OBSERVACIONES: IROStrings read GetOBSERVACIONESValue write SetOBSERVACIONESValue; + property IMPORTETOTAL: Float read GetIMPORTETOTALValue write SetIMPORTETOTALValue; + property DIRECCIONCOMPLETA: IROStrings read GetDIRECCIONCOMPLETAValue write SetDIRECCIONCOMPLETAValue; + property NOMBRE: String read GetNOMBREValue write SetNOMBREValue; + property CALLE: String read GetCALLEValue write SetCALLEValue; + property CODIGOPOSTAL: String read GetCODIGOPOSTALValue write SetCODIGOPOSTALValue; + property PROVINCIA: String read GetPROVINCIAValue write SetPROVINCIAValue; + property POBLACION: String read GetPOBLACIONValue write SetPOBLACIONValue; + property CODIGOMONTAJE: Integer read GetCODIGOMONTAJEValue write SetCODIGOMONTAJEValue; + property CODIGOCONTACTO: Integer read GetCODIGOCONTACTOValue write SetCODIGOCONTACTOValue; + property NOMBRECLIENTE: String read GetNOMBRECLIENTEValue write SetNOMBRECLIENTEValue; + end; + + { TInformeCabeceraPedidoDataTableRules } + TInformeCabeceraPedidoDataTableRules = class(TDADataTableRules, IInformeCabeceraPedido) + private + protected + { Property getters and setters } + function GetCODIGOEMPRESAValue: Integer; virtual; + procedure SetCODIGOEMPRESAValue(const aValue: Integer); virtual; + function GetCODIGOValue: Integer; virtual; + procedure SetCODIGOValue(const aValue: Integer); virtual; + function GetREFERENCIAValue: String; virtual; + procedure SetREFERENCIAValue(const aValue: String); virtual; + function GetFECHAPEDIDOValue: DateTime; virtual; + procedure SetFECHAPEDIDOValue(const aValue: DateTime); virtual; + function GetFECHAENTREGAValue: DateTime; virtual; + procedure SetFECHAENTREGAValue(const aValue: DateTime); virtual; + function GetOBSERVACIONESValue: IROStrings; virtual; + procedure SetOBSERVACIONESValue(const aValue: IROStrings); virtual; + function GetIMPORTETOTALValue: Float; virtual; + procedure SetIMPORTETOTALValue(const aValue: Float); virtual; + function GetDIRECCIONCOMPLETAValue: IROStrings; virtual; + procedure SetDIRECCIONCOMPLETAValue(const aValue: IROStrings); virtual; + function GetNOMBREValue: String; virtual; + procedure SetNOMBREValue(const aValue: String); virtual; + function GetCALLEValue: String; virtual; + procedure SetCALLEValue(const aValue: String); virtual; + function GetCODIGOPOSTALValue: String; virtual; + procedure SetCODIGOPOSTALValue(const aValue: String); virtual; + function GetPROVINCIAValue: String; virtual; + procedure SetPROVINCIAValue(const aValue: String); virtual; + function GetPOBLACIONValue: String; virtual; + procedure SetPOBLACIONValue(const aValue: String); virtual; + function GetCODIGOMONTAJEValue: Integer; virtual; + procedure SetCODIGOMONTAJEValue(const aValue: Integer); virtual; + function GetCODIGOCONTACTOValue: Integer; virtual; + procedure SetCODIGOCONTACTOValue(const aValue: Integer); virtual; + function GetNOMBRECLIENTEValue: String; virtual; + procedure SetNOMBRECLIENTEValue(const aValue: String); virtual; + + { Properties } + property CODIGOEMPRESA: Integer read GetCODIGOEMPRESAValue write SetCODIGOEMPRESAValue; + property CODIGO: Integer read GetCODIGOValue write SetCODIGOValue; + property REFERENCIA: String read GetREFERENCIAValue write SetREFERENCIAValue; + property FECHAPEDIDO: DateTime read GetFECHAPEDIDOValue write SetFECHAPEDIDOValue; + property FECHAENTREGA: DateTime read GetFECHAENTREGAValue write SetFECHAENTREGAValue; + property OBSERVACIONES: IROStrings read GetOBSERVACIONESValue write SetOBSERVACIONESValue; + property IMPORTETOTAL: Float read GetIMPORTETOTALValue write SetIMPORTETOTALValue; + property DIRECCIONCOMPLETA: IROStrings read GetDIRECCIONCOMPLETAValue write SetDIRECCIONCOMPLETAValue; + property NOMBRE: String read GetNOMBREValue write SetNOMBREValue; + property CALLE: String read GetCALLEValue write SetCALLEValue; + property CODIGOPOSTAL: String read GetCODIGOPOSTALValue write SetCODIGOPOSTALValue; + property PROVINCIA: String read GetPROVINCIAValue write SetPROVINCIAValue; + property POBLACION: String read GetPOBLACIONValue write SetPOBLACIONValue; + property CODIGOMONTAJE: Integer read GetCODIGOMONTAJEValue write SetCODIGOMONTAJEValue; + property CODIGOCONTACTO: Integer read GetCODIGOCONTACTOValue write SetCODIGOCONTACTOValue; + property NOMBRECLIENTE: String read GetNOMBRECLIENTEValue write SetNOMBRECLIENTEValue; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + + { IInformeDetallesPedido } + IInformeDetallesPedido = interface(IDAStronglyTypedDataTable) + ['{7800BEA2-1E81-406B-9107-3E56B0A796B6}'] + { Property getters and setters } + function GetCODIGOPEDIDOValue: Integer; + procedure SetCODIGOPEDIDOValue(const aValue: Integer); + function GetNUMCONCEPTOValue: Integer; + procedure SetNUMCONCEPTOValue(const aValue: Integer); + function GetDESCRIPCIONValue: String; + procedure SetDESCRIPCIONValue(const aValue: String); + function GetCANTIDADValue: Integer; + procedure SetCANTIDADValue(const aValue: Integer); + function GetIMPORTEUNIDADValue: Currency; + procedure SetIMPORTEUNIDADValue(const aValue: Currency); + function GetIMPORTETOTALValue: Currency; + procedure SetIMPORTETOTALValue(const aValue: Currency); + function GetPOSICIONValue: Integer; + procedure SetPOSICIONValue(const aValue: Integer); + function GetTIPOValue: String; + procedure SetTIPOValue(const aValue: String); + + + { Properties } + property CODIGOPEDIDO: Integer read GetCODIGOPEDIDOValue write SetCODIGOPEDIDOValue; + property NUMCONCEPTO: Integer read GetNUMCONCEPTOValue write SetNUMCONCEPTOValue; + property DESCRIPCION: String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + property CANTIDAD: Integer read GetCANTIDADValue write SetCANTIDADValue; + property IMPORTEUNIDAD: Currency read GetIMPORTEUNIDADValue write SetIMPORTEUNIDADValue; + property IMPORTETOTAL: Currency read GetIMPORTETOTALValue write SetIMPORTETOTALValue; + property POSICION: Integer read GetPOSICIONValue write SetPOSICIONValue; + property TIPO: String read GetTIPOValue write SetTIPOValue; + end; + + { TInformeDetallesPedidoDataTableRules } + TInformeDetallesPedidoDataTableRules = class(TDADataTableRules, IInformeDetallesPedido) + private + protected + { Property getters and setters } + function GetCODIGOPEDIDOValue: Integer; virtual; + procedure SetCODIGOPEDIDOValue(const aValue: Integer); virtual; + function GetNUMCONCEPTOValue: Integer; virtual; + procedure SetNUMCONCEPTOValue(const aValue: Integer); virtual; + function GetDESCRIPCIONValue: String; virtual; + procedure SetDESCRIPCIONValue(const aValue: String); virtual; + function GetCANTIDADValue: Integer; virtual; + procedure SetCANTIDADValue(const aValue: Integer); virtual; + function GetIMPORTEUNIDADValue: Currency; virtual; + procedure SetIMPORTEUNIDADValue(const aValue: Currency); virtual; + function GetIMPORTETOTALValue: Currency; virtual; + procedure SetIMPORTETOTALValue(const aValue: Currency); virtual; + function GetPOSICIONValue: Integer; virtual; + procedure SetPOSICIONValue(const aValue: Integer); virtual; + function GetTIPOValue: String; virtual; + procedure SetTIPOValue(const aValue: String); virtual; + + { Properties } + property CODIGOPEDIDO: Integer read GetCODIGOPEDIDOValue write SetCODIGOPEDIDOValue; + property NUMCONCEPTO: Integer read GetNUMCONCEPTOValue write SetNUMCONCEPTOValue; + property DESCRIPCION: String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + property CANTIDAD: Integer read GetCANTIDADValue write SetCANTIDADValue; + property IMPORTEUNIDAD: Currency read GetIMPORTEUNIDADValue write SetIMPORTEUNIDADValue; + property IMPORTETOTAL: Currency read GetIMPORTETOTALValue write SetIMPORTETOTALValue; + property POSICION: Integer read GetPOSICIONValue write SetPOSICIONValue; + property TIPO: String read GetTIPOValue write SetTIPOValue; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + +implementation + +uses Variants; + +{ TdarReferenciaPedidoDataTableRules } +constructor TdarReferenciaPedidoDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TdarReferenciaPedidoDataTableRules.Destroy; +begin + inherited; +end; + + +{ TDetallesPedidosProveedorDataTableRules } +constructor TDetallesPedidosProveedorDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TDetallesPedidosProveedorDataTableRules.Destroy; +begin + inherited; +end; + +function TDetallesPedidosProveedorDataTableRules.GetCODIGOPEDIDOValue: Integer; +begin + result := DataTable.Fields[idx_DetallesPedidosProveedorCODIGOPEDIDO].AsInteger; +end; + +procedure TDetallesPedidosProveedorDataTableRules.SetCODIGOPEDIDOValue(const aValue: Integer); +begin + DataTable.Fields[idx_DetallesPedidosProveedorCODIGOPEDIDO].AsInteger := aValue; +end; + +function TDetallesPedidosProveedorDataTableRules.GetNUMCONCEPTOValue: Integer; +begin + result := DataTable.Fields[idx_DetallesPedidosProveedorNUMCONCEPTO].AsInteger; +end; + +procedure TDetallesPedidosProveedorDataTableRules.SetNUMCONCEPTOValue(const aValue: Integer); +begin + DataTable.Fields[idx_DetallesPedidosProveedorNUMCONCEPTO].AsInteger := aValue; +end; + +function TDetallesPedidosProveedorDataTableRules.GetDESCRIPCIONValue: String; +begin + result := DataTable.Fields[idx_DetallesPedidosProveedorDESCRIPCION].AsString; +end; + +procedure TDetallesPedidosProveedorDataTableRules.SetDESCRIPCIONValue(const aValue: String); +begin + DataTable.Fields[idx_DetallesPedidosProveedorDESCRIPCION].AsString := aValue; +end; + +function TDetallesPedidosProveedorDataTableRules.GetCANTIDADValue: Integer; +begin + result := DataTable.Fields[idx_DetallesPedidosProveedorCANTIDAD].AsInteger; +end; + +procedure TDetallesPedidosProveedorDataTableRules.SetCANTIDADValue(const aValue: Integer); +begin + DataTable.Fields[idx_DetallesPedidosProveedorCANTIDAD].AsInteger := aValue; +end; + +function TDetallesPedidosProveedorDataTableRules.GetIMPORTEUNIDADValue: Currency; +begin + result := DataTable.Fields[idx_DetallesPedidosProveedorIMPORTEUNIDAD].AsCurrency; +end; + +procedure TDetallesPedidosProveedorDataTableRules.SetIMPORTEUNIDADValue(const aValue: Currency); +begin + DataTable.Fields[idx_DetallesPedidosProveedorIMPORTEUNIDAD].AsCurrency := aValue; +end; + +function TDetallesPedidosProveedorDataTableRules.GetIMPORTETOTALValue: Currency; +begin + result := DataTable.Fields[idx_DetallesPedidosProveedorIMPORTETOTAL].AsCurrency; +end; + +procedure TDetallesPedidosProveedorDataTableRules.SetIMPORTETOTALValue(const aValue: Currency); +begin + DataTable.Fields[idx_DetallesPedidosProveedorIMPORTETOTAL].AsCurrency := aValue; +end; + +function TDetallesPedidosProveedorDataTableRules.GetPOSICIONValue: Integer; +begin + result := DataTable.Fields[idx_DetallesPedidosProveedorPOSICION].AsInteger; +end; + +procedure TDetallesPedidosProveedorDataTableRules.SetPOSICIONValue(const aValue: Integer); +begin + DataTable.Fields[idx_DetallesPedidosProveedorPOSICION].AsInteger := aValue; +end; + +function TDetallesPedidosProveedorDataTableRules.GetTIPOValue: String; +begin + result := DataTable.Fields[idx_DetallesPedidosProveedorTIPO].AsString; +end; + +procedure TDetallesPedidosProveedorDataTableRules.SetTIPOValue(const aValue: String); +begin + DataTable.Fields[idx_DetallesPedidosProveedorTIPO].AsString := aValue; +end; + + +{ TPedidosProveedorDataTableRules } +constructor TPedidosProveedorDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TPedidosProveedorDataTableRules.Destroy; +begin + inherited; +end; + +function TPedidosProveedorDataTableRules.GetCODIGOEMPRESAValue: Integer; +begin + result := DataTable.Fields[idx_PedidosProveedorCODIGOEMPRESA].AsInteger; +end; + +procedure TPedidosProveedorDataTableRules.SetCODIGOEMPRESAValue(const aValue: Integer); +begin + DataTable.Fields[idx_PedidosProveedorCODIGOEMPRESA].AsInteger := aValue; +end; + +function TPedidosProveedorDataTableRules.GetCODIGOValue: Integer; +begin + result := DataTable.Fields[idx_PedidosProveedorCODIGO].AsInteger; +end; + +procedure TPedidosProveedorDataTableRules.SetCODIGOValue(const aValue: Integer); +begin + DataTable.Fields[idx_PedidosProveedorCODIGO].AsInteger := aValue; +end; + +function TPedidosProveedorDataTableRules.GetFECHAALTAValue: DateTime; +begin + result := DataTable.Fields[idx_PedidosProveedorFECHAALTA].AsDateTime; +end; + +procedure TPedidosProveedorDataTableRules.SetFECHAALTAValue(const aValue: DateTime); +begin + DataTable.Fields[idx_PedidosProveedorFECHAALTA].AsDateTime := aValue; +end; + +function TPedidosProveedorDataTableRules.GetUSUARIOValue: String; +begin + result := DataTable.Fields[idx_PedidosProveedorUSUARIO].AsString; +end; + +procedure TPedidosProveedorDataTableRules.SetUSUARIOValue(const aValue: String); +begin + DataTable.Fields[idx_PedidosProveedorUSUARIO].AsString := aValue; +end; + +function TPedidosProveedorDataTableRules.GetREFERENCIAValue: String; +begin + result := DataTable.Fields[idx_PedidosProveedorREFERENCIA].AsString; +end; + +procedure TPedidosProveedorDataTableRules.SetREFERENCIAValue(const aValue: String); +begin + DataTable.Fields[idx_PedidosProveedorREFERENCIA].AsString := aValue; +end; + +function TPedidosProveedorDataTableRules.GetFECHAPEDIDOValue: DateTime; +begin + result := DataTable.Fields[idx_PedidosProveedorFECHAPEDIDO].AsDateTime; +end; + +procedure TPedidosProveedorDataTableRules.SetFECHAPEDIDOValue(const aValue: DateTime); +begin + DataTable.Fields[idx_PedidosProveedorFECHAPEDIDO].AsDateTime := aValue; +end; + +function TPedidosProveedorDataTableRules.GetFECHACONFIRMACIONValue: DateTime; +begin + result := DataTable.Fields[idx_PedidosProveedorFECHACONFIRMACION].AsDateTime; +end; + +procedure TPedidosProveedorDataTableRules.SetFECHACONFIRMACIONValue(const aValue: DateTime); +begin + DataTable.Fields[idx_PedidosProveedorFECHACONFIRMACION].AsDateTime := aValue; +end; + +function TPedidosProveedorDataTableRules.GetSITUACIONValue: String; +begin + result := DataTable.Fields[idx_PedidosProveedorSITUACION].AsString; +end; + +procedure TPedidosProveedorDataTableRules.SetSITUACIONValue(const aValue: String); +begin + DataTable.Fields[idx_PedidosProveedorSITUACION].AsString := aValue; +end; + +function TPedidosProveedorDataTableRules.GetFECHAENTREGAValue: DateTime; +begin + result := DataTable.Fields[idx_PedidosProveedorFECHAENTREGA].AsDateTime; +end; + +procedure TPedidosProveedorDataTableRules.SetFECHAENTREGAValue(const aValue: DateTime); +begin + DataTable.Fields[idx_PedidosProveedorFECHAENTREGA].AsDateTime := aValue; +end; + +function TPedidosProveedorDataTableRules.GetOBSERVACIONESValue: IROStrings; +begin + result := NewROStrings(); + result.Text := DataTable.Fields[idx_PedidosProveedorOBSERVACIONES].AsString; +end; + +procedure TPedidosProveedorDataTableRules.SetOBSERVACIONESValue(const aValue: IROStrings); +begin + DataTable.Fields[idx_PedidosProveedorOBSERVACIONES].AsString := aValue.Text; +end; + +function TPedidosProveedorDataTableRules.GetIMPORTETOTALValue: Currency; +begin + result := DataTable.Fields[idx_PedidosProveedorIMPORTETOTAL].AsCurrency; +end; + +procedure TPedidosProveedorDataTableRules.SetIMPORTETOTALValue(const aValue: Currency); +begin + DataTable.Fields[idx_PedidosProveedorIMPORTETOTAL].AsCurrency := aValue; +end; + +function TPedidosProveedorDataTableRules.GetDIRECCIONCOMPLETAValue: IROStrings; +begin + result := NewROStrings(); + result.Text := DataTable.Fields[idx_PedidosProveedorDIRECCIONCOMPLETA].AsString; +end; + +procedure TPedidosProveedorDataTableRules.SetDIRECCIONCOMPLETAValue(const aValue: IROStrings); +begin + DataTable.Fields[idx_PedidosProveedorDIRECCIONCOMPLETA].AsString := aValue.Text; +end; + +function TPedidosProveedorDataTableRules.GetINCIDENCIASValue: IROStrings; +begin + result := NewROStrings(); + result.Text := DataTable.Fields[idx_PedidosProveedorINCIDENCIAS].AsString; +end; + +procedure TPedidosProveedorDataTableRules.SetINCIDENCIASValue(const aValue: IROStrings); +begin + DataTable.Fields[idx_PedidosProveedorINCIDENCIAS].AsString := aValue.Text; +end; + +function TPedidosProveedorDataTableRules.GetINCIDENCIASACTIVASValue: Integer; +begin + result := DataTable.Fields[idx_PedidosProveedorINCIDENCIASACTIVAS].AsInteger; +end; + +procedure TPedidosProveedorDataTableRules.SetINCIDENCIASACTIVASValue(const aValue: Integer); +begin + DataTable.Fields[idx_PedidosProveedorINCIDENCIASACTIVAS].AsInteger := aValue; +end; + +function TPedidosProveedorDataTableRules.GetCODIGOALMACENValue: Integer; +begin + result := DataTable.Fields[idx_PedidosProveedorCODIGOALMACEN].AsInteger; +end; + +procedure TPedidosProveedorDataTableRules.SetCODIGOALMACENValue(const aValue: Integer); +begin + DataTable.Fields[idx_PedidosProveedorCODIGOALMACEN].AsInteger := aValue; +end; + +function TPedidosProveedorDataTableRules.GetCODIGOCONTACTOValue: Integer; +begin + result := DataTable.Fields[idx_PedidosProveedorCODIGOCONTACTO].AsInteger; +end; + +procedure TPedidosProveedorDataTableRules.SetCODIGOCONTACTOValue(const aValue: Integer); +begin + DataTable.Fields[idx_PedidosProveedorCODIGOCONTACTO].AsInteger := aValue; +end; + +function TPedidosProveedorDataTableRules.GetNOMBREValue: String; +begin + result := DataTable.Fields[idx_PedidosProveedorNOMBRE].AsString; +end; + +procedure TPedidosProveedorDataTableRules.SetNOMBREValue(const aValue: String); +begin + DataTable.Fields[idx_PedidosProveedorNOMBRE].AsString := aValue; +end; + +function TPedidosProveedorDataTableRules.GetCODIGOMONTAJEValue: Integer; +begin + result := DataTable.Fields[idx_PedidosProveedorCODIGOMONTAJE].AsInteger; +end; + +procedure TPedidosProveedorDataTableRules.SetCODIGOMONTAJEValue(const aValue: Integer); +begin + DataTable.Fields[idx_PedidosProveedorCODIGOMONTAJE].AsInteger := aValue; +end; + +function TPedidosProveedorDataTableRules.GetNOMBREALMACENValue: String; +begin + result := DataTable.Fields[idx_PedidosProveedorNOMBREALMACEN].AsString; +end; + +procedure TPedidosProveedorDataTableRules.SetNOMBREALMACENValue(const aValue: String); +begin + DataTable.Fields[idx_PedidosProveedorNOMBREALMACEN].AsString := aValue; +end; + +function TPedidosProveedorDataTableRules.GetCODIGOCONTACTO1Value: Integer; +begin + result := DataTable.Fields[idx_PedidosProveedorCODIGOCONTACTO1].AsInteger; +end; + +procedure TPedidosProveedorDataTableRules.SetCODIGOCONTACTO1Value(const aValue: Integer); +begin + DataTable.Fields[idx_PedidosProveedorCODIGOCONTACTO1].AsInteger := aValue; +end; + +function TPedidosProveedorDataTableRules.GetNOMBRECLIENTEValue: String; +begin + result := DataTable.Fields[idx_PedidosProveedorNOMBRECLIENTE].AsString; +end; + +procedure TPedidosProveedorDataTableRules.SetNOMBRECLIENTEValue(const aValue: String); +begin + DataTable.Fields[idx_PedidosProveedorNOMBRECLIENTE].AsString := aValue; +end; + + +{ TRefresh_PedidosProveedorDataTableRules } +constructor TRefresh_PedidosProveedorDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TRefresh_PedidosProveedorDataTableRules.Destroy; +begin + inherited; +end; + +function TRefresh_PedidosProveedorDataTableRules.GetCODIGOEMPRESAValue: Integer; +begin + result := DataTable.Fields[idx_Refresh_PedidosProveedorCODIGOEMPRESA].AsInteger; +end; + +procedure TRefresh_PedidosProveedorDataTableRules.SetCODIGOEMPRESAValue(const aValue: Integer); +begin + DataTable.Fields[idx_Refresh_PedidosProveedorCODIGOEMPRESA].AsInteger := aValue; +end; + +function TRefresh_PedidosProveedorDataTableRules.GetCODIGOValue: Integer; +begin + result := DataTable.Fields[idx_Refresh_PedidosProveedorCODIGO].AsInteger; +end; + +procedure TRefresh_PedidosProveedorDataTableRules.SetCODIGOValue(const aValue: Integer); +begin + DataTable.Fields[idx_Refresh_PedidosProveedorCODIGO].AsInteger := aValue; +end; + +function TRefresh_PedidosProveedorDataTableRules.GetFECHAALTAValue: DateTime; +begin + result := DataTable.Fields[idx_Refresh_PedidosProveedorFECHAALTA].AsDateTime; +end; + +procedure TRefresh_PedidosProveedorDataTableRules.SetFECHAALTAValue(const aValue: DateTime); +begin + DataTable.Fields[idx_Refresh_PedidosProveedorFECHAALTA].AsDateTime := aValue; +end; + +function TRefresh_PedidosProveedorDataTableRules.GetUSUARIOValue: String; +begin + result := DataTable.Fields[idx_Refresh_PedidosProveedorUSUARIO].AsString; +end; + +procedure TRefresh_PedidosProveedorDataTableRules.SetUSUARIOValue(const aValue: String); +begin + DataTable.Fields[idx_Refresh_PedidosProveedorUSUARIO].AsString := aValue; +end; + +function TRefresh_PedidosProveedorDataTableRules.GetREFERENCIAValue: String; +begin + result := DataTable.Fields[idx_Refresh_PedidosProveedorREFERENCIA].AsString; +end; + +procedure TRefresh_PedidosProveedorDataTableRules.SetREFERENCIAValue(const aValue: String); +begin + DataTable.Fields[idx_Refresh_PedidosProveedorREFERENCIA].AsString := aValue; +end; + +function TRefresh_PedidosProveedorDataTableRules.GetFECHAPEDIDOValue: DateTime; +begin + result := DataTable.Fields[idx_Refresh_PedidosProveedorFECHAPEDIDO].AsDateTime; +end; + +procedure TRefresh_PedidosProveedorDataTableRules.SetFECHAPEDIDOValue(const aValue: DateTime); +begin + DataTable.Fields[idx_Refresh_PedidosProveedorFECHAPEDIDO].AsDateTime := aValue; +end; + +function TRefresh_PedidosProveedorDataTableRules.GetFECHACONFIRMACIONValue: DateTime; +begin + result := DataTable.Fields[idx_Refresh_PedidosProveedorFECHACONFIRMACION].AsDateTime; +end; + +procedure TRefresh_PedidosProveedorDataTableRules.SetFECHACONFIRMACIONValue(const aValue: DateTime); +begin + DataTable.Fields[idx_Refresh_PedidosProveedorFECHACONFIRMACION].AsDateTime := aValue; +end; + +function TRefresh_PedidosProveedorDataTableRules.GetSITUACIONValue: String; +begin + result := DataTable.Fields[idx_Refresh_PedidosProveedorSITUACION].AsString; +end; + +procedure TRefresh_PedidosProveedorDataTableRules.SetSITUACIONValue(const aValue: String); +begin + DataTable.Fields[idx_Refresh_PedidosProveedorSITUACION].AsString := aValue; +end; + +function TRefresh_PedidosProveedorDataTableRules.GetFECHAENTREGAValue: DateTime; +begin + result := DataTable.Fields[idx_Refresh_PedidosProveedorFECHAENTREGA].AsDateTime; +end; + +procedure TRefresh_PedidosProveedorDataTableRules.SetFECHAENTREGAValue(const aValue: DateTime); +begin + DataTable.Fields[idx_Refresh_PedidosProveedorFECHAENTREGA].AsDateTime := aValue; +end; + +function TRefresh_PedidosProveedorDataTableRules.GetOBSERVACIONESValue: IROStrings; +begin + result := NewROStrings(); + result.Text := DataTable.Fields[idx_Refresh_PedidosProveedorOBSERVACIONES].AsString; +end; + +procedure TRefresh_PedidosProveedorDataTableRules.SetOBSERVACIONESValue(const aValue: IROStrings); +begin + DataTable.Fields[idx_Refresh_PedidosProveedorOBSERVACIONES].AsString := aValue.Text; +end; + +function TRefresh_PedidosProveedorDataTableRules.GetIMPORTETOTALValue: Currency; +begin + result := DataTable.Fields[idx_Refresh_PedidosProveedorIMPORTETOTAL].AsCurrency; +end; + +procedure TRefresh_PedidosProveedorDataTableRules.SetIMPORTETOTALValue(const aValue: Currency); +begin + DataTable.Fields[idx_Refresh_PedidosProveedorIMPORTETOTAL].AsCurrency := aValue; +end; + +function TRefresh_PedidosProveedorDataTableRules.GetDIRECCIONCOMPLETAValue: IROStrings; +begin + result := NewROStrings(); + result.Text := DataTable.Fields[idx_Refresh_PedidosProveedorDIRECCIONCOMPLETA].AsString; +end; + +procedure TRefresh_PedidosProveedorDataTableRules.SetDIRECCIONCOMPLETAValue(const aValue: IROStrings); +begin + DataTable.Fields[idx_Refresh_PedidosProveedorDIRECCIONCOMPLETA].AsString := aValue.Text; +end; + +function TRefresh_PedidosProveedorDataTableRules.GetINCIDENCIASValue: IROStrings; +begin + result := NewROStrings(); + result.Text := DataTable.Fields[idx_Refresh_PedidosProveedorINCIDENCIAS].AsString; +end; + +procedure TRefresh_PedidosProveedorDataTableRules.SetINCIDENCIASValue(const aValue: IROStrings); +begin + DataTable.Fields[idx_Refresh_PedidosProveedorINCIDENCIAS].AsString := aValue.Text; +end; + +function TRefresh_PedidosProveedorDataTableRules.GetINCIDENCIASACTIVASValue: Integer; +begin + result := DataTable.Fields[idx_Refresh_PedidosProveedorINCIDENCIASACTIVAS].AsInteger; +end; + +procedure TRefresh_PedidosProveedorDataTableRules.SetINCIDENCIASACTIVASValue(const aValue: Integer); +begin + DataTable.Fields[idx_Refresh_PedidosProveedorINCIDENCIASACTIVAS].AsInteger := aValue; +end; + +function TRefresh_PedidosProveedorDataTableRules.GetCODIGOALMACENValue: Integer; +begin + result := DataTable.Fields[idx_Refresh_PedidosProveedorCODIGOALMACEN].AsInteger; +end; + +procedure TRefresh_PedidosProveedorDataTableRules.SetCODIGOALMACENValue(const aValue: Integer); +begin + DataTable.Fields[idx_Refresh_PedidosProveedorCODIGOALMACEN].AsInteger := aValue; +end; + +function TRefresh_PedidosProveedorDataTableRules.GetCODIGOCONTACTOValue: Integer; +begin + result := DataTable.Fields[idx_Refresh_PedidosProveedorCODIGOCONTACTO].AsInteger; +end; + +procedure TRefresh_PedidosProveedorDataTableRules.SetCODIGOCONTACTOValue(const aValue: Integer); +begin + DataTable.Fields[idx_Refresh_PedidosProveedorCODIGOCONTACTO].AsInteger := aValue; +end; + +function TRefresh_PedidosProveedorDataTableRules.GetNOMBREValue: String; +begin + result := DataTable.Fields[idx_Refresh_PedidosProveedorNOMBRE].AsString; +end; + +procedure TRefresh_PedidosProveedorDataTableRules.SetNOMBREValue(const aValue: String); +begin + DataTable.Fields[idx_Refresh_PedidosProveedorNOMBRE].AsString := aValue; +end; + +function TRefresh_PedidosProveedorDataTableRules.GetCODIGOMONTAJEValue: Integer; +begin + result := DataTable.Fields[idx_Refresh_PedidosProveedorCODIGOMONTAJE].AsInteger; +end; + +procedure TRefresh_PedidosProveedorDataTableRules.SetCODIGOMONTAJEValue(const aValue: Integer); +begin + DataTable.Fields[idx_Refresh_PedidosProveedorCODIGOMONTAJE].AsInteger := aValue; +end; + +function TRefresh_PedidosProveedorDataTableRules.GetNOMBREALMACENValue: String; +begin + result := DataTable.Fields[idx_Refresh_PedidosProveedorNOMBREALMACEN].AsString; +end; + +procedure TRefresh_PedidosProveedorDataTableRules.SetNOMBREALMACENValue(const aValue: String); +begin + DataTable.Fields[idx_Refresh_PedidosProveedorNOMBREALMACEN].AsString := aValue; +end; + +function TRefresh_PedidosProveedorDataTableRules.GetCODIGOCONTACTO1Value: Integer; +begin + result := DataTable.Fields[idx_Refresh_PedidosProveedorCODIGOCONTACTO1].AsInteger; +end; + +procedure TRefresh_PedidosProveedorDataTableRules.SetCODIGOCONTACTO1Value(const aValue: Integer); +begin + DataTable.Fields[idx_Refresh_PedidosProveedorCODIGOCONTACTO1].AsInteger := aValue; +end; + +function TRefresh_PedidosProveedorDataTableRules.GetNOMBRECLIENTEValue: String; +begin + result := DataTable.Fields[idx_Refresh_PedidosProveedorNOMBRECLIENTE].AsString; +end; + +procedure TRefresh_PedidosProveedorDataTableRules.SetNOMBRECLIENTEValue(const aValue: String); +begin + DataTable.Fields[idx_Refresh_PedidosProveedorNOMBRECLIENTE].AsString := aValue; +end; + + +{ TInformeCabeceraPedidoDataTableRules } +constructor TInformeCabeceraPedidoDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TInformeCabeceraPedidoDataTableRules.Destroy; +begin + inherited; +end; + +function TInformeCabeceraPedidoDataTableRules.GetCODIGOEMPRESAValue: Integer; +begin + result := DataTable.Fields[idx_InformeCabeceraPedidoCODIGOEMPRESA].AsInteger; +end; + +procedure TInformeCabeceraPedidoDataTableRules.SetCODIGOEMPRESAValue(const aValue: Integer); +begin + DataTable.Fields[idx_InformeCabeceraPedidoCODIGOEMPRESA].AsInteger := aValue; +end; + +function TInformeCabeceraPedidoDataTableRules.GetCODIGOValue: Integer; +begin + result := DataTable.Fields[idx_InformeCabeceraPedidoCODIGO].AsInteger; +end; + +procedure TInformeCabeceraPedidoDataTableRules.SetCODIGOValue(const aValue: Integer); +begin + DataTable.Fields[idx_InformeCabeceraPedidoCODIGO].AsInteger := aValue; +end; + +function TInformeCabeceraPedidoDataTableRules.GetREFERENCIAValue: String; +begin + result := DataTable.Fields[idx_InformeCabeceraPedidoREFERENCIA].AsString; +end; + +procedure TInformeCabeceraPedidoDataTableRules.SetREFERENCIAValue(const aValue: String); +begin + DataTable.Fields[idx_InformeCabeceraPedidoREFERENCIA].AsString := aValue; +end; + +function TInformeCabeceraPedidoDataTableRules.GetFECHAPEDIDOValue: DateTime; +begin + result := DataTable.Fields[idx_InformeCabeceraPedidoFECHAPEDIDO].AsDateTime; +end; + +procedure TInformeCabeceraPedidoDataTableRules.SetFECHAPEDIDOValue(const aValue: DateTime); +begin + DataTable.Fields[idx_InformeCabeceraPedidoFECHAPEDIDO].AsDateTime := aValue; +end; + +function TInformeCabeceraPedidoDataTableRules.GetFECHAENTREGAValue: DateTime; +begin + result := DataTable.Fields[idx_InformeCabeceraPedidoFECHAENTREGA].AsDateTime; +end; + +procedure TInformeCabeceraPedidoDataTableRules.SetFECHAENTREGAValue(const aValue: DateTime); +begin + DataTable.Fields[idx_InformeCabeceraPedidoFECHAENTREGA].AsDateTime := aValue; +end; + +function TInformeCabeceraPedidoDataTableRules.GetOBSERVACIONESValue: IROStrings; +begin + result := NewROStrings(); + result.Text := DataTable.Fields[idx_InformeCabeceraPedidoOBSERVACIONES].AsString; +end; + +procedure TInformeCabeceraPedidoDataTableRules.SetOBSERVACIONESValue(const aValue: IROStrings); +begin + DataTable.Fields[idx_InformeCabeceraPedidoOBSERVACIONES].AsString := aValue.Text; +end; + +function TInformeCabeceraPedidoDataTableRules.GetIMPORTETOTALValue: Float; +begin + result := DataTable.Fields[idx_InformeCabeceraPedidoIMPORTETOTAL].AsFloat; +end; + +procedure TInformeCabeceraPedidoDataTableRules.SetIMPORTETOTALValue(const aValue: Float); +begin + DataTable.Fields[idx_InformeCabeceraPedidoIMPORTETOTAL].AsFloat := aValue; +end; + +function TInformeCabeceraPedidoDataTableRules.GetDIRECCIONCOMPLETAValue: IROStrings; +begin + result := NewROStrings(); + result.Text := DataTable.Fields[idx_InformeCabeceraPedidoDIRECCIONCOMPLETA].AsString; +end; + +procedure TInformeCabeceraPedidoDataTableRules.SetDIRECCIONCOMPLETAValue(const aValue: IROStrings); +begin + DataTable.Fields[idx_InformeCabeceraPedidoDIRECCIONCOMPLETA].AsString := aValue.Text; +end; + +function TInformeCabeceraPedidoDataTableRules.GetNOMBREValue: String; +begin + result := DataTable.Fields[idx_InformeCabeceraPedidoNOMBRE].AsString; +end; + +procedure TInformeCabeceraPedidoDataTableRules.SetNOMBREValue(const aValue: String); +begin + DataTable.Fields[idx_InformeCabeceraPedidoNOMBRE].AsString := aValue; +end; + +function TInformeCabeceraPedidoDataTableRules.GetCALLEValue: String; +begin + result := DataTable.Fields[idx_InformeCabeceraPedidoCALLE].AsString; +end; + +procedure TInformeCabeceraPedidoDataTableRules.SetCALLEValue(const aValue: String); +begin + DataTable.Fields[idx_InformeCabeceraPedidoCALLE].AsString := aValue; +end; + +function TInformeCabeceraPedidoDataTableRules.GetCODIGOPOSTALValue: String; +begin + result := DataTable.Fields[idx_InformeCabeceraPedidoCODIGOPOSTAL].AsString; +end; + +procedure TInformeCabeceraPedidoDataTableRules.SetCODIGOPOSTALValue(const aValue: String); +begin + DataTable.Fields[idx_InformeCabeceraPedidoCODIGOPOSTAL].AsString := aValue; +end; + +function TInformeCabeceraPedidoDataTableRules.GetPROVINCIAValue: String; +begin + result := DataTable.Fields[idx_InformeCabeceraPedidoPROVINCIA].AsString; +end; + +procedure TInformeCabeceraPedidoDataTableRules.SetPROVINCIAValue(const aValue: String); +begin + DataTable.Fields[idx_InformeCabeceraPedidoPROVINCIA].AsString := aValue; +end; + +function TInformeCabeceraPedidoDataTableRules.GetPOBLACIONValue: String; +begin + result := DataTable.Fields[idx_InformeCabeceraPedidoPOBLACION].AsString; +end; + +procedure TInformeCabeceraPedidoDataTableRules.SetPOBLACIONValue(const aValue: String); +begin + DataTable.Fields[idx_InformeCabeceraPedidoPOBLACION].AsString := aValue; +end; + +function TInformeCabeceraPedidoDataTableRules.GetCODIGOMONTAJEValue: Integer; +begin + result := DataTable.Fields[idx_InformeCabeceraPedidoCODIGOMONTAJE].AsInteger; +end; + +procedure TInformeCabeceraPedidoDataTableRules.SetCODIGOMONTAJEValue(const aValue: Integer); +begin + DataTable.Fields[idx_InformeCabeceraPedidoCODIGOMONTAJE].AsInteger := aValue; +end; + +function TInformeCabeceraPedidoDataTableRules.GetCODIGOCONTACTOValue: Integer; +begin + result := DataTable.Fields[idx_InformeCabeceraPedidoCODIGOCONTACTO].AsInteger; +end; + +procedure TInformeCabeceraPedidoDataTableRules.SetCODIGOCONTACTOValue(const aValue: Integer); +begin + DataTable.Fields[idx_InformeCabeceraPedidoCODIGOCONTACTO].AsInteger := aValue; +end; + +function TInformeCabeceraPedidoDataTableRules.GetNOMBRECLIENTEValue: String; +begin + result := DataTable.Fields[idx_InformeCabeceraPedidoNOMBRECLIENTE].AsString; +end; + +procedure TInformeCabeceraPedidoDataTableRules.SetNOMBRECLIENTEValue(const aValue: String); +begin + DataTable.Fields[idx_InformeCabeceraPedidoNOMBRECLIENTE].AsString := aValue; +end; + + +{ TInformeDetallesPedidoDataTableRules } +constructor TInformeDetallesPedidoDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TInformeDetallesPedidoDataTableRules.Destroy; +begin + inherited; +end; + +function TInformeDetallesPedidoDataTableRules.GetCODIGOPEDIDOValue: Integer; +begin + result := DataTable.Fields[idx_InformeDetallesPedidoCODIGOPEDIDO].AsInteger; +end; + +procedure TInformeDetallesPedidoDataTableRules.SetCODIGOPEDIDOValue(const aValue: Integer); +begin + DataTable.Fields[idx_InformeDetallesPedidoCODIGOPEDIDO].AsInteger := aValue; +end; + +function TInformeDetallesPedidoDataTableRules.GetNUMCONCEPTOValue: Integer; +begin + result := DataTable.Fields[idx_InformeDetallesPedidoNUMCONCEPTO].AsInteger; +end; + +procedure TInformeDetallesPedidoDataTableRules.SetNUMCONCEPTOValue(const aValue: Integer); +begin + DataTable.Fields[idx_InformeDetallesPedidoNUMCONCEPTO].AsInteger := aValue; +end; + +function TInformeDetallesPedidoDataTableRules.GetDESCRIPCIONValue: String; +begin + result := DataTable.Fields[idx_InformeDetallesPedidoDESCRIPCION].AsString; +end; + +procedure TInformeDetallesPedidoDataTableRules.SetDESCRIPCIONValue(const aValue: String); +begin + DataTable.Fields[idx_InformeDetallesPedidoDESCRIPCION].AsString := aValue; +end; + +function TInformeDetallesPedidoDataTableRules.GetCANTIDADValue: Integer; +begin + result := DataTable.Fields[idx_InformeDetallesPedidoCANTIDAD].AsInteger; +end; + +procedure TInformeDetallesPedidoDataTableRules.SetCANTIDADValue(const aValue: Integer); +begin + DataTable.Fields[idx_InformeDetallesPedidoCANTIDAD].AsInteger := aValue; +end; + +function TInformeDetallesPedidoDataTableRules.GetIMPORTEUNIDADValue: Currency; +begin + result := DataTable.Fields[idx_InformeDetallesPedidoIMPORTEUNIDAD].AsCurrency; +end; + +procedure TInformeDetallesPedidoDataTableRules.SetIMPORTEUNIDADValue(const aValue: Currency); +begin + DataTable.Fields[idx_InformeDetallesPedidoIMPORTEUNIDAD].AsCurrency := aValue; +end; + +function TInformeDetallesPedidoDataTableRules.GetIMPORTETOTALValue: Currency; +begin + result := DataTable.Fields[idx_InformeDetallesPedidoIMPORTETOTAL].AsCurrency; +end; + +procedure TInformeDetallesPedidoDataTableRules.SetIMPORTETOTALValue(const aValue: Currency); +begin + DataTable.Fields[idx_InformeDetallesPedidoIMPORTETOTAL].AsCurrency := aValue; +end; + +function TInformeDetallesPedidoDataTableRules.GetPOSICIONValue: Integer; +begin + result := DataTable.Fields[idx_InformeDetallesPedidoPOSICION].AsInteger; +end; + +procedure TInformeDetallesPedidoDataTableRules.SetPOSICIONValue(const aValue: Integer); +begin + DataTable.Fields[idx_InformeDetallesPedidoPOSICION].AsInteger := aValue; +end; + +function TInformeDetallesPedidoDataTableRules.GetTIPOValue: String; +begin + result := DataTable.Fields[idx_InformeDetallesPedidoTIPO].AsString; +end; + +procedure TInformeDetallesPedidoDataTableRules.SetTIPOValue(const aValue: String); +begin + DataTable.Fields[idx_InformeDetallesPedidoTIPO].AsString := aValue; +end; + + +initialization + RegisterDataTableRules(RID_darReferenciaPedido, TdarReferenciaPedidoDataTableRules); + RegisterDataTableRules(RID_DetallesPedidosProveedor, TDetallesPedidosProveedorDataTableRules); + RegisterDataTableRules(RID_PedidosProveedor, TPedidosProveedorDataTableRules); + RegisterDataTableRules(RID_Refresh_PedidosProveedor, TRefresh_PedidosProveedorDataTableRules); + RegisterDataTableRules(RID_InformeCabeceraPedido, TInformeCabeceraPedidoDataTableRules); + RegisterDataTableRules(RID_InformeDetallesPedido, TInformeDetallesPedidoDataTableRules); + +end. diff --git a/Modulos/Pedidos a proveedor/Reglas/schPedidosProveedorServer_Intf.pas b/Modulos/Pedidos a proveedor/Reglas/schPedidosProveedorServer_Intf.pas new file mode 100644 index 0000000..bff05e3 --- /dev/null +++ b/Modulos/Pedidos a proveedor/Reglas/schPedidosProveedorServer_Intf.pas @@ -0,0 +1,1881 @@ +unit schPedidosProveedorServer_Intf; + +interface + +uses + Classes, DB, SysUtils, uROClasses, uDADataTable, uDABusinessProcessor, schPedidosProveedorClient_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_darReferenciaPedidoDelta = '{BD698220-2611-41EB-89F0-E844371835DD}'; + RID_DetallesPedidosProveedorDelta = '{A69EEC04-2DA2-41D3-90B3-F3DDFDF124AB}'; + RID_PedidosProveedorDelta = '{C14C1230-236A-46C3-91AF-903D77FA30EE}'; + RID_Refresh_PedidosProveedorDelta = '{9FC9D322-C920-4E9A-8CEA-23CD43B052ED}'; + RID_InformeCabeceraPedidoDelta = '{FF0381B3-8498-47B0-96EA-FE9723B370A6}'; + RID_InformeDetallesPedidoDelta = '{011AA7C9-CDEC-493F-BA61-F01B37E0F0C3}'; + +type + { IdarReferenciaPedidoDelta } + IdarReferenciaPedidoDelta = interface(IdarReferenciaPedido) + ['{BD698220-2611-41EB-89F0-E844371835DD}'] + { Property getters and setters } + + { Properties } + end; + + { TdarReferenciaPedidoBusinessProcessorRules } + TdarReferenciaPedidoBusinessProcessorRules = class(TDABusinessProcessorRules, IdarReferenciaPedido, IdarReferenciaPedidoDelta) + private + protected + { Property getters and setters } + + { Properties } + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + + { IDetallesPedidosProveedorDelta } + IDetallesPedidosProveedorDelta = interface(IDetallesPedidosProveedor) + ['{A69EEC04-2DA2-41D3-90B3-F3DDFDF124AB}'] + { Property getters and setters } + function GetOldCODIGOPEDIDOValue : Integer; + function GetOldNUMCONCEPTOValue : Integer; + function GetOldDESCRIPCIONValue : String; + function GetOldCANTIDADValue : Integer; + function GetOldIMPORTEUNIDADValue : Currency; + function GetOldIMPORTETOTALValue : Currency; + function GetOldPOSICIONValue : Integer; + function GetOldTIPOValue : String; + + { Properties } + property OldCODIGOPEDIDO : Integer read GetOldCODIGOPEDIDOValue; + property OldNUMCONCEPTO : Integer read GetOldNUMCONCEPTOValue; + property OldDESCRIPCION : String read GetOldDESCRIPCIONValue; + property OldCANTIDAD : Integer read GetOldCANTIDADValue; + property OldIMPORTEUNIDAD : Currency read GetOldIMPORTEUNIDADValue; + property OldIMPORTETOTAL : Currency read GetOldIMPORTETOTALValue; + property OldPOSICION : Integer read GetOldPOSICIONValue; + property OldTIPO : String read GetOldTIPOValue; + end; + + { TDetallesPedidosProveedorBusinessProcessorRules } + TDetallesPedidosProveedorBusinessProcessorRules = class(TDABusinessProcessorRules, IDetallesPedidosProveedor, IDetallesPedidosProveedorDelta) + private + protected + { Property getters and setters } + function GetCODIGOPEDIDOValue: Integer; virtual; + function GetOldCODIGOPEDIDOValue: Integer; virtual; + procedure SetCODIGOPEDIDOValue(const aValue: Integer); virtual; + function GetNUMCONCEPTOValue: Integer; virtual; + function GetOldNUMCONCEPTOValue: Integer; virtual; + procedure SetNUMCONCEPTOValue(const aValue: Integer); virtual; + function GetDESCRIPCIONValue: String; virtual; + function GetOldDESCRIPCIONValue: String; virtual; + procedure SetDESCRIPCIONValue(const aValue: String); virtual; + function GetCANTIDADValue: Integer; virtual; + function GetOldCANTIDADValue: Integer; virtual; + procedure SetCANTIDADValue(const aValue: Integer); virtual; + function GetIMPORTEUNIDADValue: Currency; virtual; + function GetOldIMPORTEUNIDADValue: Currency; virtual; + procedure SetIMPORTEUNIDADValue(const aValue: Currency); virtual; + function GetIMPORTETOTALValue: Currency; virtual; + function GetOldIMPORTETOTALValue: Currency; virtual; + procedure SetIMPORTETOTALValue(const aValue: Currency); virtual; + function GetPOSICIONValue: Integer; virtual; + function GetOldPOSICIONValue: Integer; virtual; + procedure SetPOSICIONValue(const aValue: Integer); virtual; + function GetTIPOValue: String; virtual; + function GetOldTIPOValue: String; virtual; + procedure SetTIPOValue(const aValue: String); virtual; + + { Properties } + property CODIGOPEDIDO : Integer read GetCODIGOPEDIDOValue write SetCODIGOPEDIDOValue; + property OldCODIGOPEDIDO : Integer read GetOldCODIGOPEDIDOValue; + property NUMCONCEPTO : Integer read GetNUMCONCEPTOValue write SetNUMCONCEPTOValue; + property OldNUMCONCEPTO : Integer read GetOldNUMCONCEPTOValue; + property DESCRIPCION : String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + property OldDESCRIPCION : String read GetOldDESCRIPCIONValue; + property CANTIDAD : Integer read GetCANTIDADValue write SetCANTIDADValue; + property OldCANTIDAD : Integer read GetOldCANTIDADValue; + property IMPORTEUNIDAD : Currency read GetIMPORTEUNIDADValue write SetIMPORTEUNIDADValue; + property OldIMPORTEUNIDAD : Currency read GetOldIMPORTEUNIDADValue; + property IMPORTETOTAL : Currency read GetIMPORTETOTALValue write SetIMPORTETOTALValue; + property OldIMPORTETOTAL : Currency read GetOldIMPORTETOTALValue; + property POSICION : Integer read GetPOSICIONValue write SetPOSICIONValue; + property OldPOSICION : Integer read GetOldPOSICIONValue; + property TIPO : String read GetTIPOValue write SetTIPOValue; + property OldTIPO : String read GetOldTIPOValue; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + + { IPedidosProveedorDelta } + IPedidosProveedorDelta = interface(IPedidosProveedor) + ['{C14C1230-236A-46C3-91AF-903D77FA30EE}'] + { Property getters and setters } + function GetOldCODIGOEMPRESAValue : Integer; + function GetOldCODIGOValue : Integer; + function GetOldFECHAALTAValue : DateTime; + function GetOldUSUARIOValue : String; + function GetOldREFERENCIAValue : String; + function GetOldFECHAPEDIDOValue : DateTime; + function GetOldFECHACONFIRMACIONValue : DateTime; + function GetOldSITUACIONValue : String; + function GetOldFECHAENTREGAValue : DateTime; + function GetOldOBSERVACIONESValue : IROStrings; + function GetOldIMPORTETOTALValue : Currency; + function GetOldDIRECCIONCOMPLETAValue : IROStrings; + function GetOldINCIDENCIASValue : IROStrings; + function GetOldINCIDENCIASACTIVASValue : Integer; + function GetOldCODIGOALMACENValue : Integer; + function GetOldCODIGOCONTACTOValue : Integer; + function GetOldNOMBREValue : String; + function GetOldCODIGOMONTAJEValue : Integer; + function GetOldNOMBREALMACENValue : String; + function GetOldCODIGOCONTACTO1Value : Integer; + function GetOldNOMBRECLIENTEValue : String; + + { Properties } + property OldCODIGOEMPRESA : Integer read GetOldCODIGOEMPRESAValue; + property OldCODIGO : Integer read GetOldCODIGOValue; + property OldFECHAALTA : DateTime read GetOldFECHAALTAValue; + property OldUSUARIO : String read GetOldUSUARIOValue; + property OldREFERENCIA : String read GetOldREFERENCIAValue; + property OldFECHAPEDIDO : DateTime read GetOldFECHAPEDIDOValue; + property OldFECHACONFIRMACION : DateTime read GetOldFECHACONFIRMACIONValue; + property OldSITUACION : String read GetOldSITUACIONValue; + property OldFECHAENTREGA : DateTime read GetOldFECHAENTREGAValue; + property OldOBSERVACIONES : IROStrings read GetOldOBSERVACIONESValue; + property OldIMPORTETOTAL : Currency read GetOldIMPORTETOTALValue; + property OldDIRECCIONCOMPLETA : IROStrings read GetOldDIRECCIONCOMPLETAValue; + property OldINCIDENCIAS : IROStrings read GetOldINCIDENCIASValue; + property OldINCIDENCIASACTIVAS : Integer read GetOldINCIDENCIASACTIVASValue; + property OldCODIGOALMACEN : Integer read GetOldCODIGOALMACENValue; + property OldCODIGOCONTACTO : Integer read GetOldCODIGOCONTACTOValue; + property OldNOMBRE : String read GetOldNOMBREValue; + property OldCODIGOMONTAJE : Integer read GetOldCODIGOMONTAJEValue; + property OldNOMBREALMACEN : String read GetOldNOMBREALMACENValue; + property OldCODIGOCONTACTO1 : Integer read GetOldCODIGOCONTACTO1Value; + property OldNOMBRECLIENTE : String read GetOldNOMBRECLIENTEValue; + end; + + { TPedidosProveedorBusinessProcessorRules } + TPedidosProveedorBusinessProcessorRules = class(TDABusinessProcessorRules, IPedidosProveedor, IPedidosProveedorDelta) + private + protected + { Property getters and setters } + function GetCODIGOEMPRESAValue: Integer; virtual; + function GetOldCODIGOEMPRESAValue: Integer; virtual; + procedure SetCODIGOEMPRESAValue(const aValue: Integer); virtual; + function GetCODIGOValue: Integer; virtual; + function GetOldCODIGOValue: Integer; virtual; + procedure SetCODIGOValue(const aValue: Integer); virtual; + function GetFECHAALTAValue: DateTime; virtual; + function GetOldFECHAALTAValue: DateTime; virtual; + procedure SetFECHAALTAValue(const aValue: DateTime); virtual; + function GetUSUARIOValue: String; virtual; + function GetOldUSUARIOValue: String; virtual; + procedure SetUSUARIOValue(const aValue: String); virtual; + function GetREFERENCIAValue: String; virtual; + function GetOldREFERENCIAValue: String; virtual; + procedure SetREFERENCIAValue(const aValue: String); virtual; + function GetFECHAPEDIDOValue: DateTime; virtual; + function GetOldFECHAPEDIDOValue: DateTime; virtual; + procedure SetFECHAPEDIDOValue(const aValue: DateTime); virtual; + function GetFECHACONFIRMACIONValue: DateTime; virtual; + function GetOldFECHACONFIRMACIONValue: DateTime; virtual; + procedure SetFECHACONFIRMACIONValue(const aValue: DateTime); virtual; + function GetSITUACIONValue: String; virtual; + function GetOldSITUACIONValue: String; virtual; + procedure SetSITUACIONValue(const aValue: String); virtual; + function GetFECHAENTREGAValue: DateTime; virtual; + function GetOldFECHAENTREGAValue: DateTime; virtual; + procedure SetFECHAENTREGAValue(const aValue: DateTime); virtual; + function GetOBSERVACIONESValue: IROStrings; virtual; + function GetOldOBSERVACIONESValue: IROStrings; virtual; + procedure SetOBSERVACIONESValue(const aValue: IROStrings); virtual; + function GetIMPORTETOTALValue: Currency; virtual; + function GetOldIMPORTETOTALValue: Currency; virtual; + procedure SetIMPORTETOTALValue(const aValue: Currency); virtual; + function GetDIRECCIONCOMPLETAValue: IROStrings; virtual; + function GetOldDIRECCIONCOMPLETAValue: IROStrings; virtual; + procedure SetDIRECCIONCOMPLETAValue(const aValue: IROStrings); virtual; + function GetINCIDENCIASValue: IROStrings; virtual; + function GetOldINCIDENCIASValue: IROStrings; virtual; + procedure SetINCIDENCIASValue(const aValue: IROStrings); virtual; + function GetINCIDENCIASACTIVASValue: Integer; virtual; + function GetOldINCIDENCIASACTIVASValue: Integer; virtual; + procedure SetINCIDENCIASACTIVASValue(const aValue: Integer); virtual; + function GetCODIGOALMACENValue: Integer; virtual; + function GetOldCODIGOALMACENValue: Integer; virtual; + procedure SetCODIGOALMACENValue(const aValue: Integer); virtual; + function GetCODIGOCONTACTOValue: Integer; virtual; + function GetOldCODIGOCONTACTOValue: Integer; virtual; + procedure SetCODIGOCONTACTOValue(const aValue: Integer); virtual; + function GetNOMBREValue: String; virtual; + function GetOldNOMBREValue: String; virtual; + procedure SetNOMBREValue(const aValue: String); virtual; + function GetCODIGOMONTAJEValue: Integer; virtual; + function GetOldCODIGOMONTAJEValue: Integer; virtual; + procedure SetCODIGOMONTAJEValue(const aValue: Integer); virtual; + function GetNOMBREALMACENValue: String; virtual; + function GetOldNOMBREALMACENValue: String; virtual; + procedure SetNOMBREALMACENValue(const aValue: String); virtual; + function GetCODIGOCONTACTO1Value: Integer; virtual; + function GetOldCODIGOCONTACTO1Value: Integer; virtual; + procedure SetCODIGOCONTACTO1Value(const aValue: Integer); virtual; + function GetNOMBRECLIENTEValue: String; virtual; + function GetOldNOMBRECLIENTEValue: String; virtual; + procedure SetNOMBRECLIENTEValue(const aValue: String); virtual; + + { Properties } + property CODIGOEMPRESA : Integer read GetCODIGOEMPRESAValue write SetCODIGOEMPRESAValue; + property OldCODIGOEMPRESA : Integer read GetOldCODIGOEMPRESAValue; + property CODIGO : Integer read GetCODIGOValue write SetCODIGOValue; + property OldCODIGO : Integer read GetOldCODIGOValue; + property FECHAALTA : DateTime read GetFECHAALTAValue write SetFECHAALTAValue; + property OldFECHAALTA : DateTime read GetOldFECHAALTAValue; + property USUARIO : String read GetUSUARIOValue write SetUSUARIOValue; + property OldUSUARIO : String read GetOldUSUARIOValue; + property REFERENCIA : String read GetREFERENCIAValue write SetREFERENCIAValue; + property OldREFERENCIA : String read GetOldREFERENCIAValue; + property FECHAPEDIDO : DateTime read GetFECHAPEDIDOValue write SetFECHAPEDIDOValue; + property OldFECHAPEDIDO : DateTime read GetOldFECHAPEDIDOValue; + property FECHACONFIRMACION : DateTime read GetFECHACONFIRMACIONValue write SetFECHACONFIRMACIONValue; + property OldFECHACONFIRMACION : DateTime read GetOldFECHACONFIRMACIONValue; + property SITUACION : String read GetSITUACIONValue write SetSITUACIONValue; + property OldSITUACION : String read GetOldSITUACIONValue; + property FECHAENTREGA : DateTime read GetFECHAENTREGAValue write SetFECHAENTREGAValue; + property OldFECHAENTREGA : DateTime read GetOldFECHAENTREGAValue; + property OBSERVACIONES : IROStrings read GetOBSERVACIONESValue write SetOBSERVACIONESValue; + property OldOBSERVACIONES : IROStrings read GetOldOBSERVACIONESValue; + property IMPORTETOTAL : Currency read GetIMPORTETOTALValue write SetIMPORTETOTALValue; + property OldIMPORTETOTAL : Currency read GetOldIMPORTETOTALValue; + property DIRECCIONCOMPLETA : IROStrings read GetDIRECCIONCOMPLETAValue write SetDIRECCIONCOMPLETAValue; + property OldDIRECCIONCOMPLETA : IROStrings read GetOldDIRECCIONCOMPLETAValue; + property INCIDENCIAS : IROStrings read GetINCIDENCIASValue write SetINCIDENCIASValue; + property OldINCIDENCIAS : IROStrings read GetOldINCIDENCIASValue; + property INCIDENCIASACTIVAS : Integer read GetINCIDENCIASACTIVASValue write SetINCIDENCIASACTIVASValue; + property OldINCIDENCIASACTIVAS : Integer read GetOldINCIDENCIASACTIVASValue; + property CODIGOALMACEN : Integer read GetCODIGOALMACENValue write SetCODIGOALMACENValue; + property OldCODIGOALMACEN : Integer read GetOldCODIGOALMACENValue; + property CODIGOCONTACTO : Integer read GetCODIGOCONTACTOValue write SetCODIGOCONTACTOValue; + property OldCODIGOCONTACTO : Integer read GetOldCODIGOCONTACTOValue; + property NOMBRE : String read GetNOMBREValue write SetNOMBREValue; + property OldNOMBRE : String read GetOldNOMBREValue; + property CODIGOMONTAJE : Integer read GetCODIGOMONTAJEValue write SetCODIGOMONTAJEValue; + property OldCODIGOMONTAJE : Integer read GetOldCODIGOMONTAJEValue; + property NOMBREALMACEN : String read GetNOMBREALMACENValue write SetNOMBREALMACENValue; + property OldNOMBREALMACEN : String read GetOldNOMBREALMACENValue; + property CODIGOCONTACTO1 : Integer read GetCODIGOCONTACTO1Value write SetCODIGOCONTACTO1Value; + property OldCODIGOCONTACTO1 : Integer read GetOldCODIGOCONTACTO1Value; + property NOMBRECLIENTE : String read GetNOMBRECLIENTEValue write SetNOMBRECLIENTEValue; + property OldNOMBRECLIENTE : String read GetOldNOMBRECLIENTEValue; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + + { IRefresh_PedidosProveedorDelta } + IRefresh_PedidosProveedorDelta = interface(IRefresh_PedidosProveedor) + ['{9FC9D322-C920-4E9A-8CEA-23CD43B052ED}'] + { Property getters and setters } + function GetOldCODIGOEMPRESAValue : Integer; + function GetOldCODIGOValue : Integer; + function GetOldFECHAALTAValue : DateTime; + function GetOldUSUARIOValue : String; + function GetOldREFERENCIAValue : String; + function GetOldFECHAPEDIDOValue : DateTime; + function GetOldFECHACONFIRMACIONValue : DateTime; + function GetOldSITUACIONValue : String; + function GetOldFECHAENTREGAValue : DateTime; + function GetOldOBSERVACIONESValue : IROStrings; + function GetOldIMPORTETOTALValue : Currency; + function GetOldDIRECCIONCOMPLETAValue : IROStrings; + function GetOldINCIDENCIASValue : IROStrings; + function GetOldINCIDENCIASACTIVASValue : Integer; + function GetOldCODIGOALMACENValue : Integer; + function GetOldCODIGOCONTACTOValue : Integer; + function GetOldNOMBREValue : String; + function GetOldCODIGOMONTAJEValue : Integer; + function GetOldNOMBREALMACENValue : String; + function GetOldCODIGOCONTACTO1Value : Integer; + function GetOldNOMBRECLIENTEValue : String; + + { Properties } + property OldCODIGOEMPRESA : Integer read GetOldCODIGOEMPRESAValue; + property OldCODIGO : Integer read GetOldCODIGOValue; + property OldFECHAALTA : DateTime read GetOldFECHAALTAValue; + property OldUSUARIO : String read GetOldUSUARIOValue; + property OldREFERENCIA : String read GetOldREFERENCIAValue; + property OldFECHAPEDIDO : DateTime read GetOldFECHAPEDIDOValue; + property OldFECHACONFIRMACION : DateTime read GetOldFECHACONFIRMACIONValue; + property OldSITUACION : String read GetOldSITUACIONValue; + property OldFECHAENTREGA : DateTime read GetOldFECHAENTREGAValue; + property OldOBSERVACIONES : IROStrings read GetOldOBSERVACIONESValue; + property OldIMPORTETOTAL : Currency read GetOldIMPORTETOTALValue; + property OldDIRECCIONCOMPLETA : IROStrings read GetOldDIRECCIONCOMPLETAValue; + property OldINCIDENCIAS : IROStrings read GetOldINCIDENCIASValue; + property OldINCIDENCIASACTIVAS : Integer read GetOldINCIDENCIASACTIVASValue; + property OldCODIGOALMACEN : Integer read GetOldCODIGOALMACENValue; + property OldCODIGOCONTACTO : Integer read GetOldCODIGOCONTACTOValue; + property OldNOMBRE : String read GetOldNOMBREValue; + property OldCODIGOMONTAJE : Integer read GetOldCODIGOMONTAJEValue; + property OldNOMBREALMACEN : String read GetOldNOMBREALMACENValue; + property OldCODIGOCONTACTO1 : Integer read GetOldCODIGOCONTACTO1Value; + property OldNOMBRECLIENTE : String read GetOldNOMBRECLIENTEValue; + end; + + { TRefresh_PedidosProveedorBusinessProcessorRules } + TRefresh_PedidosProveedorBusinessProcessorRules = class(TDABusinessProcessorRules, IRefresh_PedidosProveedor, IRefresh_PedidosProveedorDelta) + private + protected + { Property getters and setters } + function GetCODIGOEMPRESAValue: Integer; virtual; + function GetOldCODIGOEMPRESAValue: Integer; virtual; + procedure SetCODIGOEMPRESAValue(const aValue: Integer); virtual; + function GetCODIGOValue: Integer; virtual; + function GetOldCODIGOValue: Integer; virtual; + procedure SetCODIGOValue(const aValue: Integer); virtual; + function GetFECHAALTAValue: DateTime; virtual; + function GetOldFECHAALTAValue: DateTime; virtual; + procedure SetFECHAALTAValue(const aValue: DateTime); virtual; + function GetUSUARIOValue: String; virtual; + function GetOldUSUARIOValue: String; virtual; + procedure SetUSUARIOValue(const aValue: String); virtual; + function GetREFERENCIAValue: String; virtual; + function GetOldREFERENCIAValue: String; virtual; + procedure SetREFERENCIAValue(const aValue: String); virtual; + function GetFECHAPEDIDOValue: DateTime; virtual; + function GetOldFECHAPEDIDOValue: DateTime; virtual; + procedure SetFECHAPEDIDOValue(const aValue: DateTime); virtual; + function GetFECHACONFIRMACIONValue: DateTime; virtual; + function GetOldFECHACONFIRMACIONValue: DateTime; virtual; + procedure SetFECHACONFIRMACIONValue(const aValue: DateTime); virtual; + function GetSITUACIONValue: String; virtual; + function GetOldSITUACIONValue: String; virtual; + procedure SetSITUACIONValue(const aValue: String); virtual; + function GetFECHAENTREGAValue: DateTime; virtual; + function GetOldFECHAENTREGAValue: DateTime; virtual; + procedure SetFECHAENTREGAValue(const aValue: DateTime); virtual; + function GetOBSERVACIONESValue: IROStrings; virtual; + function GetOldOBSERVACIONESValue: IROStrings; virtual; + procedure SetOBSERVACIONESValue(const aValue: IROStrings); virtual; + function GetIMPORTETOTALValue: Currency; virtual; + function GetOldIMPORTETOTALValue: Currency; virtual; + procedure SetIMPORTETOTALValue(const aValue: Currency); virtual; + function GetDIRECCIONCOMPLETAValue: IROStrings; virtual; + function GetOldDIRECCIONCOMPLETAValue: IROStrings; virtual; + procedure SetDIRECCIONCOMPLETAValue(const aValue: IROStrings); virtual; + function GetINCIDENCIASValue: IROStrings; virtual; + function GetOldINCIDENCIASValue: IROStrings; virtual; + procedure SetINCIDENCIASValue(const aValue: IROStrings); virtual; + function GetINCIDENCIASACTIVASValue: Integer; virtual; + function GetOldINCIDENCIASACTIVASValue: Integer; virtual; + procedure SetINCIDENCIASACTIVASValue(const aValue: Integer); virtual; + function GetCODIGOALMACENValue: Integer; virtual; + function GetOldCODIGOALMACENValue: Integer; virtual; + procedure SetCODIGOALMACENValue(const aValue: Integer); virtual; + function GetCODIGOCONTACTOValue: Integer; virtual; + function GetOldCODIGOCONTACTOValue: Integer; virtual; + procedure SetCODIGOCONTACTOValue(const aValue: Integer); virtual; + function GetNOMBREValue: String; virtual; + function GetOldNOMBREValue: String; virtual; + procedure SetNOMBREValue(const aValue: String); virtual; + function GetCODIGOMONTAJEValue: Integer; virtual; + function GetOldCODIGOMONTAJEValue: Integer; virtual; + procedure SetCODIGOMONTAJEValue(const aValue: Integer); virtual; + function GetNOMBREALMACENValue: String; virtual; + function GetOldNOMBREALMACENValue: String; virtual; + procedure SetNOMBREALMACENValue(const aValue: String); virtual; + function GetCODIGOCONTACTO1Value: Integer; virtual; + function GetOldCODIGOCONTACTO1Value: Integer; virtual; + procedure SetCODIGOCONTACTO1Value(const aValue: Integer); virtual; + function GetNOMBRECLIENTEValue: String; virtual; + function GetOldNOMBRECLIENTEValue: String; virtual; + procedure SetNOMBRECLIENTEValue(const aValue: String); virtual; + + { Properties } + property CODIGOEMPRESA : Integer read GetCODIGOEMPRESAValue write SetCODIGOEMPRESAValue; + property OldCODIGOEMPRESA : Integer read GetOldCODIGOEMPRESAValue; + property CODIGO : Integer read GetCODIGOValue write SetCODIGOValue; + property OldCODIGO : Integer read GetOldCODIGOValue; + property FECHAALTA : DateTime read GetFECHAALTAValue write SetFECHAALTAValue; + property OldFECHAALTA : DateTime read GetOldFECHAALTAValue; + property USUARIO : String read GetUSUARIOValue write SetUSUARIOValue; + property OldUSUARIO : String read GetOldUSUARIOValue; + property REFERENCIA : String read GetREFERENCIAValue write SetREFERENCIAValue; + property OldREFERENCIA : String read GetOldREFERENCIAValue; + property FECHAPEDIDO : DateTime read GetFECHAPEDIDOValue write SetFECHAPEDIDOValue; + property OldFECHAPEDIDO : DateTime read GetOldFECHAPEDIDOValue; + property FECHACONFIRMACION : DateTime read GetFECHACONFIRMACIONValue write SetFECHACONFIRMACIONValue; + property OldFECHACONFIRMACION : DateTime read GetOldFECHACONFIRMACIONValue; + property SITUACION : String read GetSITUACIONValue write SetSITUACIONValue; + property OldSITUACION : String read GetOldSITUACIONValue; + property FECHAENTREGA : DateTime read GetFECHAENTREGAValue write SetFECHAENTREGAValue; + property OldFECHAENTREGA : DateTime read GetOldFECHAENTREGAValue; + property OBSERVACIONES : IROStrings read GetOBSERVACIONESValue write SetOBSERVACIONESValue; + property OldOBSERVACIONES : IROStrings read GetOldOBSERVACIONESValue; + property IMPORTETOTAL : Currency read GetIMPORTETOTALValue write SetIMPORTETOTALValue; + property OldIMPORTETOTAL : Currency read GetOldIMPORTETOTALValue; + property DIRECCIONCOMPLETA : IROStrings read GetDIRECCIONCOMPLETAValue write SetDIRECCIONCOMPLETAValue; + property OldDIRECCIONCOMPLETA : IROStrings read GetOldDIRECCIONCOMPLETAValue; + property INCIDENCIAS : IROStrings read GetINCIDENCIASValue write SetINCIDENCIASValue; + property OldINCIDENCIAS : IROStrings read GetOldINCIDENCIASValue; + property INCIDENCIASACTIVAS : Integer read GetINCIDENCIASACTIVASValue write SetINCIDENCIASACTIVASValue; + property OldINCIDENCIASACTIVAS : Integer read GetOldINCIDENCIASACTIVASValue; + property CODIGOALMACEN : Integer read GetCODIGOALMACENValue write SetCODIGOALMACENValue; + property OldCODIGOALMACEN : Integer read GetOldCODIGOALMACENValue; + property CODIGOCONTACTO : Integer read GetCODIGOCONTACTOValue write SetCODIGOCONTACTOValue; + property OldCODIGOCONTACTO : Integer read GetOldCODIGOCONTACTOValue; + property NOMBRE : String read GetNOMBREValue write SetNOMBREValue; + property OldNOMBRE : String read GetOldNOMBREValue; + property CODIGOMONTAJE : Integer read GetCODIGOMONTAJEValue write SetCODIGOMONTAJEValue; + property OldCODIGOMONTAJE : Integer read GetOldCODIGOMONTAJEValue; + property NOMBREALMACEN : String read GetNOMBREALMACENValue write SetNOMBREALMACENValue; + property OldNOMBREALMACEN : String read GetOldNOMBREALMACENValue; + property CODIGOCONTACTO1 : Integer read GetCODIGOCONTACTO1Value write SetCODIGOCONTACTO1Value; + property OldCODIGOCONTACTO1 : Integer read GetOldCODIGOCONTACTO1Value; + property NOMBRECLIENTE : String read GetNOMBRECLIENTEValue write SetNOMBRECLIENTEValue; + property OldNOMBRECLIENTE : String read GetOldNOMBRECLIENTEValue; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + + { IInformeCabeceraPedidoDelta } + IInformeCabeceraPedidoDelta = interface(IInformeCabeceraPedido) + ['{FF0381B3-8498-47B0-96EA-FE9723B370A6}'] + { Property getters and setters } + function GetOldCODIGOEMPRESAValue : Integer; + function GetOldCODIGOValue : Integer; + function GetOldREFERENCIAValue : String; + function GetOldFECHAPEDIDOValue : DateTime; + function GetOldFECHAENTREGAValue : DateTime; + function GetOldOBSERVACIONESValue : IROStrings; + function GetOldIMPORTETOTALValue : Float; + function GetOldDIRECCIONCOMPLETAValue : IROStrings; + function GetOldNOMBREValue : String; + function GetOldCALLEValue : String; + function GetOldCODIGOPOSTALValue : String; + function GetOldPROVINCIAValue : String; + function GetOldPOBLACIONValue : String; + function GetOldCODIGOMONTAJEValue : Integer; + function GetOldCODIGOCONTACTOValue : Integer; + function GetOldNOMBRECLIENTEValue : String; + + { Properties } + property OldCODIGOEMPRESA : Integer read GetOldCODIGOEMPRESAValue; + property OldCODIGO : Integer read GetOldCODIGOValue; + property OldREFERENCIA : String read GetOldREFERENCIAValue; + property OldFECHAPEDIDO : DateTime read GetOldFECHAPEDIDOValue; + property OldFECHAENTREGA : DateTime read GetOldFECHAENTREGAValue; + property OldOBSERVACIONES : IROStrings read GetOldOBSERVACIONESValue; + property OldIMPORTETOTAL : Float read GetOldIMPORTETOTALValue; + property OldDIRECCIONCOMPLETA : IROStrings read GetOldDIRECCIONCOMPLETAValue; + property OldNOMBRE : String read GetOldNOMBREValue; + property OldCALLE : String read GetOldCALLEValue; + property OldCODIGOPOSTAL : String read GetOldCODIGOPOSTALValue; + property OldPROVINCIA : String read GetOldPROVINCIAValue; + property OldPOBLACION : String read GetOldPOBLACIONValue; + property OldCODIGOMONTAJE : Integer read GetOldCODIGOMONTAJEValue; + property OldCODIGOCONTACTO : Integer read GetOldCODIGOCONTACTOValue; + property OldNOMBRECLIENTE : String read GetOldNOMBRECLIENTEValue; + end; + + { TInformeCabeceraPedidoBusinessProcessorRules } + TInformeCabeceraPedidoBusinessProcessorRules = class(TDABusinessProcessorRules, IInformeCabeceraPedido, IInformeCabeceraPedidoDelta) + private + protected + { Property getters and setters } + function GetCODIGOEMPRESAValue: Integer; virtual; + function GetOldCODIGOEMPRESAValue: Integer; virtual; + procedure SetCODIGOEMPRESAValue(const aValue: Integer); virtual; + function GetCODIGOValue: Integer; virtual; + function GetOldCODIGOValue: Integer; virtual; + procedure SetCODIGOValue(const aValue: Integer); virtual; + function GetREFERENCIAValue: String; virtual; + function GetOldREFERENCIAValue: String; virtual; + procedure SetREFERENCIAValue(const aValue: String); virtual; + function GetFECHAPEDIDOValue: DateTime; virtual; + function GetOldFECHAPEDIDOValue: DateTime; virtual; + procedure SetFECHAPEDIDOValue(const aValue: DateTime); virtual; + function GetFECHAENTREGAValue: DateTime; virtual; + function GetOldFECHAENTREGAValue: DateTime; virtual; + procedure SetFECHAENTREGAValue(const aValue: DateTime); virtual; + function GetOBSERVACIONESValue: IROStrings; virtual; + function GetOldOBSERVACIONESValue: IROStrings; virtual; + procedure SetOBSERVACIONESValue(const aValue: IROStrings); virtual; + function GetIMPORTETOTALValue: Float; virtual; + function GetOldIMPORTETOTALValue: Float; virtual; + procedure SetIMPORTETOTALValue(const aValue: Float); virtual; + function GetDIRECCIONCOMPLETAValue: IROStrings; virtual; + function GetOldDIRECCIONCOMPLETAValue: IROStrings; virtual; + procedure SetDIRECCIONCOMPLETAValue(const aValue: IROStrings); virtual; + function GetNOMBREValue: String; virtual; + function GetOldNOMBREValue: String; virtual; + procedure SetNOMBREValue(const aValue: String); virtual; + function GetCALLEValue: String; virtual; + function GetOldCALLEValue: String; virtual; + procedure SetCALLEValue(const aValue: String); virtual; + function GetCODIGOPOSTALValue: String; virtual; + function GetOldCODIGOPOSTALValue: String; virtual; + procedure SetCODIGOPOSTALValue(const aValue: String); virtual; + function GetPROVINCIAValue: String; virtual; + function GetOldPROVINCIAValue: String; virtual; + procedure SetPROVINCIAValue(const aValue: String); virtual; + function GetPOBLACIONValue: String; virtual; + function GetOldPOBLACIONValue: String; virtual; + procedure SetPOBLACIONValue(const aValue: String); virtual; + function GetCODIGOMONTAJEValue: Integer; virtual; + function GetOldCODIGOMONTAJEValue: Integer; virtual; + procedure SetCODIGOMONTAJEValue(const aValue: Integer); virtual; + function GetCODIGOCONTACTOValue: Integer; virtual; + function GetOldCODIGOCONTACTOValue: Integer; virtual; + procedure SetCODIGOCONTACTOValue(const aValue: Integer); virtual; + function GetNOMBRECLIENTEValue: String; virtual; + function GetOldNOMBRECLIENTEValue: String; virtual; + procedure SetNOMBRECLIENTEValue(const aValue: String); virtual; + + { Properties } + property CODIGOEMPRESA : Integer read GetCODIGOEMPRESAValue write SetCODIGOEMPRESAValue; + property OldCODIGOEMPRESA : Integer read GetOldCODIGOEMPRESAValue; + property CODIGO : Integer read GetCODIGOValue write SetCODIGOValue; + property OldCODIGO : Integer read GetOldCODIGOValue; + property REFERENCIA : String read GetREFERENCIAValue write SetREFERENCIAValue; + property OldREFERENCIA : String read GetOldREFERENCIAValue; + property FECHAPEDIDO : DateTime read GetFECHAPEDIDOValue write SetFECHAPEDIDOValue; + property OldFECHAPEDIDO : DateTime read GetOldFECHAPEDIDOValue; + property FECHAENTREGA : DateTime read GetFECHAENTREGAValue write SetFECHAENTREGAValue; + property OldFECHAENTREGA : DateTime read GetOldFECHAENTREGAValue; + property OBSERVACIONES : IROStrings read GetOBSERVACIONESValue write SetOBSERVACIONESValue; + property OldOBSERVACIONES : IROStrings read GetOldOBSERVACIONESValue; + property IMPORTETOTAL : Float read GetIMPORTETOTALValue write SetIMPORTETOTALValue; + property OldIMPORTETOTAL : Float read GetOldIMPORTETOTALValue; + property DIRECCIONCOMPLETA : IROStrings read GetDIRECCIONCOMPLETAValue write SetDIRECCIONCOMPLETAValue; + property OldDIRECCIONCOMPLETA : IROStrings read GetOldDIRECCIONCOMPLETAValue; + property NOMBRE : String read GetNOMBREValue write SetNOMBREValue; + property OldNOMBRE : String read GetOldNOMBREValue; + property CALLE : String read GetCALLEValue write SetCALLEValue; + property OldCALLE : String read GetOldCALLEValue; + property CODIGOPOSTAL : String read GetCODIGOPOSTALValue write SetCODIGOPOSTALValue; + property OldCODIGOPOSTAL : String read GetOldCODIGOPOSTALValue; + property PROVINCIA : String read GetPROVINCIAValue write SetPROVINCIAValue; + property OldPROVINCIA : String read GetOldPROVINCIAValue; + property POBLACION : String read GetPOBLACIONValue write SetPOBLACIONValue; + property OldPOBLACION : String read GetOldPOBLACIONValue; + property CODIGOMONTAJE : Integer read GetCODIGOMONTAJEValue write SetCODIGOMONTAJEValue; + property OldCODIGOMONTAJE : Integer read GetOldCODIGOMONTAJEValue; + property CODIGOCONTACTO : Integer read GetCODIGOCONTACTOValue write SetCODIGOCONTACTOValue; + property OldCODIGOCONTACTO : Integer read GetOldCODIGOCONTACTOValue; + property NOMBRECLIENTE : String read GetNOMBRECLIENTEValue write SetNOMBRECLIENTEValue; + property OldNOMBRECLIENTE : String read GetOldNOMBRECLIENTEValue; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + + { IInformeDetallesPedidoDelta } + IInformeDetallesPedidoDelta = interface(IInformeDetallesPedido) + ['{011AA7C9-CDEC-493F-BA61-F01B37E0F0C3}'] + { Property getters and setters } + function GetOldCODIGOPEDIDOValue : Integer; + function GetOldNUMCONCEPTOValue : Integer; + function GetOldDESCRIPCIONValue : String; + function GetOldCANTIDADValue : Integer; + function GetOldIMPORTEUNIDADValue : Currency; + function GetOldIMPORTETOTALValue : Currency; + function GetOldPOSICIONValue : Integer; + function GetOldTIPOValue : String; + + { Properties } + property OldCODIGOPEDIDO : Integer read GetOldCODIGOPEDIDOValue; + property OldNUMCONCEPTO : Integer read GetOldNUMCONCEPTOValue; + property OldDESCRIPCION : String read GetOldDESCRIPCIONValue; + property OldCANTIDAD : Integer read GetOldCANTIDADValue; + property OldIMPORTEUNIDAD : Currency read GetOldIMPORTEUNIDADValue; + property OldIMPORTETOTAL : Currency read GetOldIMPORTETOTALValue; + property OldPOSICION : Integer read GetOldPOSICIONValue; + property OldTIPO : String read GetOldTIPOValue; + end; + + { TInformeDetallesPedidoBusinessProcessorRules } + TInformeDetallesPedidoBusinessProcessorRules = class(TDABusinessProcessorRules, IInformeDetallesPedido, IInformeDetallesPedidoDelta) + private + protected + { Property getters and setters } + function GetCODIGOPEDIDOValue: Integer; virtual; + function GetOldCODIGOPEDIDOValue: Integer; virtual; + procedure SetCODIGOPEDIDOValue(const aValue: Integer); virtual; + function GetNUMCONCEPTOValue: Integer; virtual; + function GetOldNUMCONCEPTOValue: Integer; virtual; + procedure SetNUMCONCEPTOValue(const aValue: Integer); virtual; + function GetDESCRIPCIONValue: String; virtual; + function GetOldDESCRIPCIONValue: String; virtual; + procedure SetDESCRIPCIONValue(const aValue: String); virtual; + function GetCANTIDADValue: Integer; virtual; + function GetOldCANTIDADValue: Integer; virtual; + procedure SetCANTIDADValue(const aValue: Integer); virtual; + function GetIMPORTEUNIDADValue: Currency; virtual; + function GetOldIMPORTEUNIDADValue: Currency; virtual; + procedure SetIMPORTEUNIDADValue(const aValue: Currency); virtual; + function GetIMPORTETOTALValue: Currency; virtual; + function GetOldIMPORTETOTALValue: Currency; virtual; + procedure SetIMPORTETOTALValue(const aValue: Currency); virtual; + function GetPOSICIONValue: Integer; virtual; + function GetOldPOSICIONValue: Integer; virtual; + procedure SetPOSICIONValue(const aValue: Integer); virtual; + function GetTIPOValue: String; virtual; + function GetOldTIPOValue: String; virtual; + procedure SetTIPOValue(const aValue: String); virtual; + + { Properties } + property CODIGOPEDIDO : Integer read GetCODIGOPEDIDOValue write SetCODIGOPEDIDOValue; + property OldCODIGOPEDIDO : Integer read GetOldCODIGOPEDIDOValue; + property NUMCONCEPTO : Integer read GetNUMCONCEPTOValue write SetNUMCONCEPTOValue; + property OldNUMCONCEPTO : Integer read GetOldNUMCONCEPTOValue; + property DESCRIPCION : String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + property OldDESCRIPCION : String read GetOldDESCRIPCIONValue; + property CANTIDAD : Integer read GetCANTIDADValue write SetCANTIDADValue; + property OldCANTIDAD : Integer read GetOldCANTIDADValue; + property IMPORTEUNIDAD : Currency read GetIMPORTEUNIDADValue write SetIMPORTEUNIDADValue; + property OldIMPORTEUNIDAD : Currency read GetOldIMPORTEUNIDADValue; + property IMPORTETOTAL : Currency read GetIMPORTETOTALValue write SetIMPORTETOTALValue; + property OldIMPORTETOTAL : Currency read GetOldIMPORTETOTALValue; + property POSICION : Integer read GetPOSICIONValue write SetPOSICIONValue; + property OldPOSICION : Integer read GetOldPOSICIONValue; + property TIPO : String read GetTIPOValue write SetTIPOValue; + property OldTIPO : String read GetOldTIPOValue; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + +implementation + +uses + Variants, uROBinaryHelpers; + +{ TdarReferenciaPedidoBusinessProcessorRules } +constructor TdarReferenciaPedidoBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TdarReferenciaPedidoBusinessProcessorRules.Destroy; +begin + inherited; +end; + + +{ TDetallesPedidosProveedorBusinessProcessorRules } +constructor TDetallesPedidosProveedorBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TDetallesPedidosProveedorBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TDetallesPedidosProveedorBusinessProcessorRules.GetCODIGOPEDIDOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesPedidosProveedorCODIGOPEDIDO]; +end; + +function TDetallesPedidosProveedorBusinessProcessorRules.GetOldCODIGOPEDIDOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_DetallesPedidosProveedorCODIGOPEDIDO]; +end; + +procedure TDetallesPedidosProveedorBusinessProcessorRules.SetCODIGOPEDIDOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesPedidosProveedorCODIGOPEDIDO] := aValue; +end; + +function TDetallesPedidosProveedorBusinessProcessorRules.GetNUMCONCEPTOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesPedidosProveedorNUMCONCEPTO]; +end; + +function TDetallesPedidosProveedorBusinessProcessorRules.GetOldNUMCONCEPTOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_DetallesPedidosProveedorNUMCONCEPTO]; +end; + +procedure TDetallesPedidosProveedorBusinessProcessorRules.SetNUMCONCEPTOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesPedidosProveedorNUMCONCEPTO] := aValue; +end; + +function TDetallesPedidosProveedorBusinessProcessorRules.GetDESCRIPCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesPedidosProveedorDESCRIPCION]; +end; + +function TDetallesPedidosProveedorBusinessProcessorRules.GetOldDESCRIPCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_DetallesPedidosProveedorDESCRIPCION]; +end; + +procedure TDetallesPedidosProveedorBusinessProcessorRules.SetDESCRIPCIONValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesPedidosProveedorDESCRIPCION] := aValue; +end; + +function TDetallesPedidosProveedorBusinessProcessorRules.GetCANTIDADValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesPedidosProveedorCANTIDAD]; +end; + +function TDetallesPedidosProveedorBusinessProcessorRules.GetOldCANTIDADValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_DetallesPedidosProveedorCANTIDAD]; +end; + +procedure TDetallesPedidosProveedorBusinessProcessorRules.SetCANTIDADValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesPedidosProveedorCANTIDAD] := aValue; +end; + +function TDetallesPedidosProveedorBusinessProcessorRules.GetIMPORTEUNIDADValue: Currency; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesPedidosProveedorIMPORTEUNIDAD]; +end; + +function TDetallesPedidosProveedorBusinessProcessorRules.GetOldIMPORTEUNIDADValue: Currency; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_DetallesPedidosProveedorIMPORTEUNIDAD]; +end; + +procedure TDetallesPedidosProveedorBusinessProcessorRules.SetIMPORTEUNIDADValue(const aValue: Currency); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesPedidosProveedorIMPORTEUNIDAD] := aValue; +end; + +function TDetallesPedidosProveedorBusinessProcessorRules.GetIMPORTETOTALValue: Currency; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesPedidosProveedorIMPORTETOTAL]; +end; + +function TDetallesPedidosProveedorBusinessProcessorRules.GetOldIMPORTETOTALValue: Currency; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_DetallesPedidosProveedorIMPORTETOTAL]; +end; + +procedure TDetallesPedidosProveedorBusinessProcessorRules.SetIMPORTETOTALValue(const aValue: Currency); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesPedidosProveedorIMPORTETOTAL] := aValue; +end; + +function TDetallesPedidosProveedorBusinessProcessorRules.GetPOSICIONValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesPedidosProveedorPOSICION]; +end; + +function TDetallesPedidosProveedorBusinessProcessorRules.GetOldPOSICIONValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_DetallesPedidosProveedorPOSICION]; +end; + +procedure TDetallesPedidosProveedorBusinessProcessorRules.SetPOSICIONValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesPedidosProveedorPOSICION] := aValue; +end; + +function TDetallesPedidosProveedorBusinessProcessorRules.GetTIPOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesPedidosProveedorTIPO]; +end; + +function TDetallesPedidosProveedorBusinessProcessorRules.GetOldTIPOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_DetallesPedidosProveedorTIPO]; +end; + +procedure TDetallesPedidosProveedorBusinessProcessorRules.SetTIPOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesPedidosProveedorTIPO] := aValue; +end; + + +{ TPedidosProveedorBusinessProcessorRules } +constructor TPedidosProveedorBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TPedidosProveedorBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TPedidosProveedorBusinessProcessorRules.GetCODIGOEMPRESAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PedidosProveedorCODIGOEMPRESA]; +end; + +function TPedidosProveedorBusinessProcessorRules.GetOldCODIGOEMPRESAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PedidosProveedorCODIGOEMPRESA]; +end; + +procedure TPedidosProveedorBusinessProcessorRules.SetCODIGOEMPRESAValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PedidosProveedorCODIGOEMPRESA] := aValue; +end; + +function TPedidosProveedorBusinessProcessorRules.GetCODIGOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PedidosProveedorCODIGO]; +end; + +function TPedidosProveedorBusinessProcessorRules.GetOldCODIGOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PedidosProveedorCODIGO]; +end; + +procedure TPedidosProveedorBusinessProcessorRules.SetCODIGOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PedidosProveedorCODIGO] := aValue; +end; + +function TPedidosProveedorBusinessProcessorRules.GetFECHAALTAValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PedidosProveedorFECHAALTA]; +end; + +function TPedidosProveedorBusinessProcessorRules.GetOldFECHAALTAValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PedidosProveedorFECHAALTA]; +end; + +procedure TPedidosProveedorBusinessProcessorRules.SetFECHAALTAValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PedidosProveedorFECHAALTA] := aValue; +end; + +function TPedidosProveedorBusinessProcessorRules.GetUSUARIOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PedidosProveedorUSUARIO]; +end; + +function TPedidosProveedorBusinessProcessorRules.GetOldUSUARIOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PedidosProveedorUSUARIO]; +end; + +procedure TPedidosProveedorBusinessProcessorRules.SetUSUARIOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PedidosProveedorUSUARIO] := aValue; +end; + +function TPedidosProveedorBusinessProcessorRules.GetREFERENCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PedidosProveedorREFERENCIA]; +end; + +function TPedidosProveedorBusinessProcessorRules.GetOldREFERENCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PedidosProveedorREFERENCIA]; +end; + +procedure TPedidosProveedorBusinessProcessorRules.SetREFERENCIAValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PedidosProveedorREFERENCIA] := aValue; +end; + +function TPedidosProveedorBusinessProcessorRules.GetFECHAPEDIDOValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PedidosProveedorFECHAPEDIDO]; +end; + +function TPedidosProveedorBusinessProcessorRules.GetOldFECHAPEDIDOValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PedidosProveedorFECHAPEDIDO]; +end; + +procedure TPedidosProveedorBusinessProcessorRules.SetFECHAPEDIDOValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PedidosProveedorFECHAPEDIDO] := aValue; +end; + +function TPedidosProveedorBusinessProcessorRules.GetFECHACONFIRMACIONValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PedidosProveedorFECHACONFIRMACION]; +end; + +function TPedidosProveedorBusinessProcessorRules.GetOldFECHACONFIRMACIONValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PedidosProveedorFECHACONFIRMACION]; +end; + +procedure TPedidosProveedorBusinessProcessorRules.SetFECHACONFIRMACIONValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PedidosProveedorFECHACONFIRMACION] := aValue; +end; + +function TPedidosProveedorBusinessProcessorRules.GetSITUACIONValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PedidosProveedorSITUACION]; +end; + +function TPedidosProveedorBusinessProcessorRules.GetOldSITUACIONValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PedidosProveedorSITUACION]; +end; + +procedure TPedidosProveedorBusinessProcessorRules.SetSITUACIONValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PedidosProveedorSITUACION] := aValue; +end; + +function TPedidosProveedorBusinessProcessorRules.GetFECHAENTREGAValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PedidosProveedorFECHAENTREGA]; +end; + +function TPedidosProveedorBusinessProcessorRules.GetOldFECHAENTREGAValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PedidosProveedorFECHAENTREGA]; +end; + +procedure TPedidosProveedorBusinessProcessorRules.SetFECHAENTREGAValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PedidosProveedorFECHAENTREGA] := aValue; +end; + +function TPedidosProveedorBusinessProcessorRules.GetOBSERVACIONESValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.NewValueByName[fld_PedidosProveedorOBSERVACIONES]; +end; + +function TPedidosProveedorBusinessProcessorRules.GetOldOBSERVACIONESValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.OldValueByName[fld_PedidosProveedorOBSERVACIONES]; +end; + +procedure TPedidosProveedorBusinessProcessorRules.SetOBSERVACIONESValue(const aValue: IROStrings); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PedidosProveedorOBSERVACIONES] := aValue.Text; +end; + +function TPedidosProveedorBusinessProcessorRules.GetIMPORTETOTALValue: Currency; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PedidosProveedorIMPORTETOTAL]; +end; + +function TPedidosProveedorBusinessProcessorRules.GetOldIMPORTETOTALValue: Currency; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PedidosProveedorIMPORTETOTAL]; +end; + +procedure TPedidosProveedorBusinessProcessorRules.SetIMPORTETOTALValue(const aValue: Currency); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PedidosProveedorIMPORTETOTAL] := aValue; +end; + +function TPedidosProveedorBusinessProcessorRules.GetDIRECCIONCOMPLETAValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.NewValueByName[fld_PedidosProveedorDIRECCIONCOMPLETA]; +end; + +function TPedidosProveedorBusinessProcessorRules.GetOldDIRECCIONCOMPLETAValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.OldValueByName[fld_PedidosProveedorDIRECCIONCOMPLETA]; +end; + +procedure TPedidosProveedorBusinessProcessorRules.SetDIRECCIONCOMPLETAValue(const aValue: IROStrings); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PedidosProveedorDIRECCIONCOMPLETA] := aValue.Text; +end; + +function TPedidosProveedorBusinessProcessorRules.GetINCIDENCIASValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.NewValueByName[fld_PedidosProveedorINCIDENCIAS]; +end; + +function TPedidosProveedorBusinessProcessorRules.GetOldINCIDENCIASValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.OldValueByName[fld_PedidosProveedorINCIDENCIAS]; +end; + +procedure TPedidosProveedorBusinessProcessorRules.SetINCIDENCIASValue(const aValue: IROStrings); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PedidosProveedorINCIDENCIAS] := aValue.Text; +end; + +function TPedidosProveedorBusinessProcessorRules.GetINCIDENCIASACTIVASValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PedidosProveedorINCIDENCIASACTIVAS]; +end; + +function TPedidosProveedorBusinessProcessorRules.GetOldINCIDENCIASACTIVASValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PedidosProveedorINCIDENCIASACTIVAS]; +end; + +procedure TPedidosProveedorBusinessProcessorRules.SetINCIDENCIASACTIVASValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PedidosProveedorINCIDENCIASACTIVAS] := aValue; +end; + +function TPedidosProveedorBusinessProcessorRules.GetCODIGOALMACENValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PedidosProveedorCODIGOALMACEN]; +end; + +function TPedidosProveedorBusinessProcessorRules.GetOldCODIGOALMACENValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PedidosProveedorCODIGOALMACEN]; +end; + +procedure TPedidosProveedorBusinessProcessorRules.SetCODIGOALMACENValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PedidosProveedorCODIGOALMACEN] := aValue; +end; + +function TPedidosProveedorBusinessProcessorRules.GetCODIGOCONTACTOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PedidosProveedorCODIGOCONTACTO]; +end; + +function TPedidosProveedorBusinessProcessorRules.GetOldCODIGOCONTACTOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PedidosProveedorCODIGOCONTACTO]; +end; + +procedure TPedidosProveedorBusinessProcessorRules.SetCODIGOCONTACTOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PedidosProveedorCODIGOCONTACTO] := aValue; +end; + +function TPedidosProveedorBusinessProcessorRules.GetNOMBREValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PedidosProveedorNOMBRE]; +end; + +function TPedidosProveedorBusinessProcessorRules.GetOldNOMBREValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PedidosProveedorNOMBRE]; +end; + +procedure TPedidosProveedorBusinessProcessorRules.SetNOMBREValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PedidosProveedorNOMBRE] := aValue; +end; + +function TPedidosProveedorBusinessProcessorRules.GetCODIGOMONTAJEValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PedidosProveedorCODIGOMONTAJE]; +end; + +function TPedidosProveedorBusinessProcessorRules.GetOldCODIGOMONTAJEValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PedidosProveedorCODIGOMONTAJE]; +end; + +procedure TPedidosProveedorBusinessProcessorRules.SetCODIGOMONTAJEValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PedidosProveedorCODIGOMONTAJE] := aValue; +end; + +function TPedidosProveedorBusinessProcessorRules.GetNOMBREALMACENValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PedidosProveedorNOMBREALMACEN]; +end; + +function TPedidosProveedorBusinessProcessorRules.GetOldNOMBREALMACENValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PedidosProveedorNOMBREALMACEN]; +end; + +procedure TPedidosProveedorBusinessProcessorRules.SetNOMBREALMACENValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PedidosProveedorNOMBREALMACEN] := aValue; +end; + +function TPedidosProveedorBusinessProcessorRules.GetCODIGOCONTACTO1Value: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PedidosProveedorCODIGOCONTACTO1]; +end; + +function TPedidosProveedorBusinessProcessorRules.GetOldCODIGOCONTACTO1Value: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PedidosProveedorCODIGOCONTACTO1]; +end; + +procedure TPedidosProveedorBusinessProcessorRules.SetCODIGOCONTACTO1Value(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PedidosProveedorCODIGOCONTACTO1] := aValue; +end; + +function TPedidosProveedorBusinessProcessorRules.GetNOMBRECLIENTEValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PedidosProveedorNOMBRECLIENTE]; +end; + +function TPedidosProveedorBusinessProcessorRules.GetOldNOMBRECLIENTEValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PedidosProveedorNOMBRECLIENTE]; +end; + +procedure TPedidosProveedorBusinessProcessorRules.SetNOMBRECLIENTEValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PedidosProveedorNOMBRECLIENTE] := aValue; +end; + + +{ TRefresh_PedidosProveedorBusinessProcessorRules } +constructor TRefresh_PedidosProveedorBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TRefresh_PedidosProveedorBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TRefresh_PedidosProveedorBusinessProcessorRules.GetCODIGOEMPRESAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_PedidosProveedorCODIGOEMPRESA]; +end; + +function TRefresh_PedidosProveedorBusinessProcessorRules.GetOldCODIGOEMPRESAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Refresh_PedidosProveedorCODIGOEMPRESA]; +end; + +procedure TRefresh_PedidosProveedorBusinessProcessorRules.SetCODIGOEMPRESAValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_PedidosProveedorCODIGOEMPRESA] := aValue; +end; + +function TRefresh_PedidosProveedorBusinessProcessorRules.GetCODIGOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_PedidosProveedorCODIGO]; +end; + +function TRefresh_PedidosProveedorBusinessProcessorRules.GetOldCODIGOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Refresh_PedidosProveedorCODIGO]; +end; + +procedure TRefresh_PedidosProveedorBusinessProcessorRules.SetCODIGOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_PedidosProveedorCODIGO] := aValue; +end; + +function TRefresh_PedidosProveedorBusinessProcessorRules.GetFECHAALTAValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_PedidosProveedorFECHAALTA]; +end; + +function TRefresh_PedidosProveedorBusinessProcessorRules.GetOldFECHAALTAValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Refresh_PedidosProveedorFECHAALTA]; +end; + +procedure TRefresh_PedidosProveedorBusinessProcessorRules.SetFECHAALTAValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_PedidosProveedorFECHAALTA] := aValue; +end; + +function TRefresh_PedidosProveedorBusinessProcessorRules.GetUSUARIOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_PedidosProveedorUSUARIO]; +end; + +function TRefresh_PedidosProveedorBusinessProcessorRules.GetOldUSUARIOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Refresh_PedidosProveedorUSUARIO]; +end; + +procedure TRefresh_PedidosProveedorBusinessProcessorRules.SetUSUARIOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_PedidosProveedorUSUARIO] := aValue; +end; + +function TRefresh_PedidosProveedorBusinessProcessorRules.GetREFERENCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_PedidosProveedorREFERENCIA]; +end; + +function TRefresh_PedidosProveedorBusinessProcessorRules.GetOldREFERENCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Refresh_PedidosProveedorREFERENCIA]; +end; + +procedure TRefresh_PedidosProveedorBusinessProcessorRules.SetREFERENCIAValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_PedidosProveedorREFERENCIA] := aValue; +end; + +function TRefresh_PedidosProveedorBusinessProcessorRules.GetFECHAPEDIDOValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_PedidosProveedorFECHAPEDIDO]; +end; + +function TRefresh_PedidosProveedorBusinessProcessorRules.GetOldFECHAPEDIDOValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Refresh_PedidosProveedorFECHAPEDIDO]; +end; + +procedure TRefresh_PedidosProveedorBusinessProcessorRules.SetFECHAPEDIDOValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_PedidosProveedorFECHAPEDIDO] := aValue; +end; + +function TRefresh_PedidosProveedorBusinessProcessorRules.GetFECHACONFIRMACIONValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_PedidosProveedorFECHACONFIRMACION]; +end; + +function TRefresh_PedidosProveedorBusinessProcessorRules.GetOldFECHACONFIRMACIONValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Refresh_PedidosProveedorFECHACONFIRMACION]; +end; + +procedure TRefresh_PedidosProveedorBusinessProcessorRules.SetFECHACONFIRMACIONValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_PedidosProveedorFECHACONFIRMACION] := aValue; +end; + +function TRefresh_PedidosProveedorBusinessProcessorRules.GetSITUACIONValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_PedidosProveedorSITUACION]; +end; + +function TRefresh_PedidosProveedorBusinessProcessorRules.GetOldSITUACIONValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Refresh_PedidosProveedorSITUACION]; +end; + +procedure TRefresh_PedidosProveedorBusinessProcessorRules.SetSITUACIONValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_PedidosProveedorSITUACION] := aValue; +end; + +function TRefresh_PedidosProveedorBusinessProcessorRules.GetFECHAENTREGAValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_PedidosProveedorFECHAENTREGA]; +end; + +function TRefresh_PedidosProveedorBusinessProcessorRules.GetOldFECHAENTREGAValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Refresh_PedidosProveedorFECHAENTREGA]; +end; + +procedure TRefresh_PedidosProveedorBusinessProcessorRules.SetFECHAENTREGAValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_PedidosProveedorFECHAENTREGA] := aValue; +end; + +function TRefresh_PedidosProveedorBusinessProcessorRules.GetOBSERVACIONESValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_PedidosProveedorOBSERVACIONES]; +end; + +function TRefresh_PedidosProveedorBusinessProcessorRules.GetOldOBSERVACIONESValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.OldValueByName[fld_Refresh_PedidosProveedorOBSERVACIONES]; +end; + +procedure TRefresh_PedidosProveedorBusinessProcessorRules.SetOBSERVACIONESValue(const aValue: IROStrings); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_PedidosProveedorOBSERVACIONES] := aValue.Text; +end; + +function TRefresh_PedidosProveedorBusinessProcessorRules.GetIMPORTETOTALValue: Currency; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_PedidosProveedorIMPORTETOTAL]; +end; + +function TRefresh_PedidosProveedorBusinessProcessorRules.GetOldIMPORTETOTALValue: Currency; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Refresh_PedidosProveedorIMPORTETOTAL]; +end; + +procedure TRefresh_PedidosProveedorBusinessProcessorRules.SetIMPORTETOTALValue(const aValue: Currency); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_PedidosProveedorIMPORTETOTAL] := aValue; +end; + +function TRefresh_PedidosProveedorBusinessProcessorRules.GetDIRECCIONCOMPLETAValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_PedidosProveedorDIRECCIONCOMPLETA]; +end; + +function TRefresh_PedidosProveedorBusinessProcessorRules.GetOldDIRECCIONCOMPLETAValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.OldValueByName[fld_Refresh_PedidosProveedorDIRECCIONCOMPLETA]; +end; + +procedure TRefresh_PedidosProveedorBusinessProcessorRules.SetDIRECCIONCOMPLETAValue(const aValue: IROStrings); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_PedidosProveedorDIRECCIONCOMPLETA] := aValue.Text; +end; + +function TRefresh_PedidosProveedorBusinessProcessorRules.GetINCIDENCIASValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_PedidosProveedorINCIDENCIAS]; +end; + +function TRefresh_PedidosProveedorBusinessProcessorRules.GetOldINCIDENCIASValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.OldValueByName[fld_Refresh_PedidosProveedorINCIDENCIAS]; +end; + +procedure TRefresh_PedidosProveedorBusinessProcessorRules.SetINCIDENCIASValue(const aValue: IROStrings); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_PedidosProveedorINCIDENCIAS] := aValue.Text; +end; + +function TRefresh_PedidosProveedorBusinessProcessorRules.GetINCIDENCIASACTIVASValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_PedidosProveedorINCIDENCIASACTIVAS]; +end; + +function TRefresh_PedidosProveedorBusinessProcessorRules.GetOldINCIDENCIASACTIVASValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Refresh_PedidosProveedorINCIDENCIASACTIVAS]; +end; + +procedure TRefresh_PedidosProveedorBusinessProcessorRules.SetINCIDENCIASACTIVASValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_PedidosProveedorINCIDENCIASACTIVAS] := aValue; +end; + +function TRefresh_PedidosProveedorBusinessProcessorRules.GetCODIGOALMACENValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_PedidosProveedorCODIGOALMACEN]; +end; + +function TRefresh_PedidosProveedorBusinessProcessorRules.GetOldCODIGOALMACENValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Refresh_PedidosProveedorCODIGOALMACEN]; +end; + +procedure TRefresh_PedidosProveedorBusinessProcessorRules.SetCODIGOALMACENValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_PedidosProveedorCODIGOALMACEN] := aValue; +end; + +function TRefresh_PedidosProveedorBusinessProcessorRules.GetCODIGOCONTACTOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_PedidosProveedorCODIGOCONTACTO]; +end; + +function TRefresh_PedidosProveedorBusinessProcessorRules.GetOldCODIGOCONTACTOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Refresh_PedidosProveedorCODIGOCONTACTO]; +end; + +procedure TRefresh_PedidosProveedorBusinessProcessorRules.SetCODIGOCONTACTOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_PedidosProveedorCODIGOCONTACTO] := aValue; +end; + +function TRefresh_PedidosProveedorBusinessProcessorRules.GetNOMBREValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_PedidosProveedorNOMBRE]; +end; + +function TRefresh_PedidosProveedorBusinessProcessorRules.GetOldNOMBREValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Refresh_PedidosProveedorNOMBRE]; +end; + +procedure TRefresh_PedidosProveedorBusinessProcessorRules.SetNOMBREValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_PedidosProveedorNOMBRE] := aValue; +end; + +function TRefresh_PedidosProveedorBusinessProcessorRules.GetCODIGOMONTAJEValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_PedidosProveedorCODIGOMONTAJE]; +end; + +function TRefresh_PedidosProveedorBusinessProcessorRules.GetOldCODIGOMONTAJEValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Refresh_PedidosProveedorCODIGOMONTAJE]; +end; + +procedure TRefresh_PedidosProveedorBusinessProcessorRules.SetCODIGOMONTAJEValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_PedidosProveedorCODIGOMONTAJE] := aValue; +end; + +function TRefresh_PedidosProveedorBusinessProcessorRules.GetNOMBREALMACENValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_PedidosProveedorNOMBREALMACEN]; +end; + +function TRefresh_PedidosProveedorBusinessProcessorRules.GetOldNOMBREALMACENValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Refresh_PedidosProveedorNOMBREALMACEN]; +end; + +procedure TRefresh_PedidosProveedorBusinessProcessorRules.SetNOMBREALMACENValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_PedidosProveedorNOMBREALMACEN] := aValue; +end; + +function TRefresh_PedidosProveedorBusinessProcessorRules.GetCODIGOCONTACTO1Value: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_PedidosProveedorCODIGOCONTACTO1]; +end; + +function TRefresh_PedidosProveedorBusinessProcessorRules.GetOldCODIGOCONTACTO1Value: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Refresh_PedidosProveedorCODIGOCONTACTO1]; +end; + +procedure TRefresh_PedidosProveedorBusinessProcessorRules.SetCODIGOCONTACTO1Value(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_PedidosProveedorCODIGOCONTACTO1] := aValue; +end; + +function TRefresh_PedidosProveedorBusinessProcessorRules.GetNOMBRECLIENTEValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_PedidosProveedorNOMBRECLIENTE]; +end; + +function TRefresh_PedidosProveedorBusinessProcessorRules.GetOldNOMBRECLIENTEValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Refresh_PedidosProveedorNOMBRECLIENTE]; +end; + +procedure TRefresh_PedidosProveedorBusinessProcessorRules.SetNOMBRECLIENTEValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Refresh_PedidosProveedorNOMBRECLIENTE] := aValue; +end; + + +{ TInformeCabeceraPedidoBusinessProcessorRules } +constructor TInformeCabeceraPedidoBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TInformeCabeceraPedidoBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TInformeCabeceraPedidoBusinessProcessorRules.GetCODIGOEMPRESAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPedidoCODIGOEMPRESA]; +end; + +function TInformeCabeceraPedidoBusinessProcessorRules.GetOldCODIGOEMPRESAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPedidoCODIGOEMPRESA]; +end; + +procedure TInformeCabeceraPedidoBusinessProcessorRules.SetCODIGOEMPRESAValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPedidoCODIGOEMPRESA] := aValue; +end; + +function TInformeCabeceraPedidoBusinessProcessorRules.GetCODIGOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPedidoCODIGO]; +end; + +function TInformeCabeceraPedidoBusinessProcessorRules.GetOldCODIGOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPedidoCODIGO]; +end; + +procedure TInformeCabeceraPedidoBusinessProcessorRules.SetCODIGOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPedidoCODIGO] := aValue; +end; + +function TInformeCabeceraPedidoBusinessProcessorRules.GetREFERENCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPedidoREFERENCIA]; +end; + +function TInformeCabeceraPedidoBusinessProcessorRules.GetOldREFERENCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPedidoREFERENCIA]; +end; + +procedure TInformeCabeceraPedidoBusinessProcessorRules.SetREFERENCIAValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPedidoREFERENCIA] := aValue; +end; + +function TInformeCabeceraPedidoBusinessProcessorRules.GetFECHAPEDIDOValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPedidoFECHAPEDIDO]; +end; + +function TInformeCabeceraPedidoBusinessProcessorRules.GetOldFECHAPEDIDOValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPedidoFECHAPEDIDO]; +end; + +procedure TInformeCabeceraPedidoBusinessProcessorRules.SetFECHAPEDIDOValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPedidoFECHAPEDIDO] := aValue; +end; + +function TInformeCabeceraPedidoBusinessProcessorRules.GetFECHAENTREGAValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPedidoFECHAENTREGA]; +end; + +function TInformeCabeceraPedidoBusinessProcessorRules.GetOldFECHAENTREGAValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPedidoFECHAENTREGA]; +end; + +procedure TInformeCabeceraPedidoBusinessProcessorRules.SetFECHAENTREGAValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPedidoFECHAENTREGA] := aValue; +end; + +function TInformeCabeceraPedidoBusinessProcessorRules.GetOBSERVACIONESValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPedidoOBSERVACIONES]; +end; + +function TInformeCabeceraPedidoBusinessProcessorRules.GetOldOBSERVACIONESValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPedidoOBSERVACIONES]; +end; + +procedure TInformeCabeceraPedidoBusinessProcessorRules.SetOBSERVACIONESValue(const aValue: IROStrings); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPedidoOBSERVACIONES] := aValue.Text; +end; + +function TInformeCabeceraPedidoBusinessProcessorRules.GetIMPORTETOTALValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPedidoIMPORTETOTAL]; +end; + +function TInformeCabeceraPedidoBusinessProcessorRules.GetOldIMPORTETOTALValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPedidoIMPORTETOTAL]; +end; + +procedure TInformeCabeceraPedidoBusinessProcessorRules.SetIMPORTETOTALValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPedidoIMPORTETOTAL] := aValue; +end; + +function TInformeCabeceraPedidoBusinessProcessorRules.GetDIRECCIONCOMPLETAValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPedidoDIRECCIONCOMPLETA]; +end; + +function TInformeCabeceraPedidoBusinessProcessorRules.GetOldDIRECCIONCOMPLETAValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPedidoDIRECCIONCOMPLETA]; +end; + +procedure TInformeCabeceraPedidoBusinessProcessorRules.SetDIRECCIONCOMPLETAValue(const aValue: IROStrings); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPedidoDIRECCIONCOMPLETA] := aValue.Text; +end; + +function TInformeCabeceraPedidoBusinessProcessorRules.GetNOMBREValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPedidoNOMBRE]; +end; + +function TInformeCabeceraPedidoBusinessProcessorRules.GetOldNOMBREValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPedidoNOMBRE]; +end; + +procedure TInformeCabeceraPedidoBusinessProcessorRules.SetNOMBREValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPedidoNOMBRE] := aValue; +end; + +function TInformeCabeceraPedidoBusinessProcessorRules.GetCALLEValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPedidoCALLE]; +end; + +function TInformeCabeceraPedidoBusinessProcessorRules.GetOldCALLEValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPedidoCALLE]; +end; + +procedure TInformeCabeceraPedidoBusinessProcessorRules.SetCALLEValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPedidoCALLE] := aValue; +end; + +function TInformeCabeceraPedidoBusinessProcessorRules.GetCODIGOPOSTALValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPedidoCODIGOPOSTAL]; +end; + +function TInformeCabeceraPedidoBusinessProcessorRules.GetOldCODIGOPOSTALValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPedidoCODIGOPOSTAL]; +end; + +procedure TInformeCabeceraPedidoBusinessProcessorRules.SetCODIGOPOSTALValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPedidoCODIGOPOSTAL] := aValue; +end; + +function TInformeCabeceraPedidoBusinessProcessorRules.GetPROVINCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPedidoPROVINCIA]; +end; + +function TInformeCabeceraPedidoBusinessProcessorRules.GetOldPROVINCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPedidoPROVINCIA]; +end; + +procedure TInformeCabeceraPedidoBusinessProcessorRules.SetPROVINCIAValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPedidoPROVINCIA] := aValue; +end; + +function TInformeCabeceraPedidoBusinessProcessorRules.GetPOBLACIONValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPedidoPOBLACION]; +end; + +function TInformeCabeceraPedidoBusinessProcessorRules.GetOldPOBLACIONValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPedidoPOBLACION]; +end; + +procedure TInformeCabeceraPedidoBusinessProcessorRules.SetPOBLACIONValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPedidoPOBLACION] := aValue; +end; + +function TInformeCabeceraPedidoBusinessProcessorRules.GetCODIGOMONTAJEValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPedidoCODIGOMONTAJE]; +end; + +function TInformeCabeceraPedidoBusinessProcessorRules.GetOldCODIGOMONTAJEValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPedidoCODIGOMONTAJE]; +end; + +procedure TInformeCabeceraPedidoBusinessProcessorRules.SetCODIGOMONTAJEValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPedidoCODIGOMONTAJE] := aValue; +end; + +function TInformeCabeceraPedidoBusinessProcessorRules.GetCODIGOCONTACTOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPedidoCODIGOCONTACTO]; +end; + +function TInformeCabeceraPedidoBusinessProcessorRules.GetOldCODIGOCONTACTOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPedidoCODIGOCONTACTO]; +end; + +procedure TInformeCabeceraPedidoBusinessProcessorRules.SetCODIGOCONTACTOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPedidoCODIGOCONTACTO] := aValue; +end; + +function TInformeCabeceraPedidoBusinessProcessorRules.GetNOMBRECLIENTEValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPedidoNOMBRECLIENTE]; +end; + +function TInformeCabeceraPedidoBusinessProcessorRules.GetOldNOMBRECLIENTEValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPedidoNOMBRECLIENTE]; +end; + +procedure TInformeCabeceraPedidoBusinessProcessorRules.SetNOMBRECLIENTEValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPedidoNOMBRECLIENTE] := aValue; +end; + + +{ TInformeDetallesPedidoBusinessProcessorRules } +constructor TInformeDetallesPedidoBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TInformeDetallesPedidoBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TInformeDetallesPedidoBusinessProcessorRules.GetCODIGOPEDIDOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesPedidoCODIGOPEDIDO]; +end; + +function TInformeDetallesPedidoBusinessProcessorRules.GetOldCODIGOPEDIDOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeDetallesPedidoCODIGOPEDIDO]; +end; + +procedure TInformeDetallesPedidoBusinessProcessorRules.SetCODIGOPEDIDOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesPedidoCODIGOPEDIDO] := aValue; +end; + +function TInformeDetallesPedidoBusinessProcessorRules.GetNUMCONCEPTOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesPedidoNUMCONCEPTO]; +end; + +function TInformeDetallesPedidoBusinessProcessorRules.GetOldNUMCONCEPTOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeDetallesPedidoNUMCONCEPTO]; +end; + +procedure TInformeDetallesPedidoBusinessProcessorRules.SetNUMCONCEPTOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesPedidoNUMCONCEPTO] := aValue; +end; + +function TInformeDetallesPedidoBusinessProcessorRules.GetDESCRIPCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesPedidoDESCRIPCION]; +end; + +function TInformeDetallesPedidoBusinessProcessorRules.GetOldDESCRIPCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeDetallesPedidoDESCRIPCION]; +end; + +procedure TInformeDetallesPedidoBusinessProcessorRules.SetDESCRIPCIONValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesPedidoDESCRIPCION] := aValue; +end; + +function TInformeDetallesPedidoBusinessProcessorRules.GetCANTIDADValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesPedidoCANTIDAD]; +end; + +function TInformeDetallesPedidoBusinessProcessorRules.GetOldCANTIDADValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeDetallesPedidoCANTIDAD]; +end; + +procedure TInformeDetallesPedidoBusinessProcessorRules.SetCANTIDADValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesPedidoCANTIDAD] := aValue; +end; + +function TInformeDetallesPedidoBusinessProcessorRules.GetIMPORTEUNIDADValue: Currency; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesPedidoIMPORTEUNIDAD]; +end; + +function TInformeDetallesPedidoBusinessProcessorRules.GetOldIMPORTEUNIDADValue: Currency; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeDetallesPedidoIMPORTEUNIDAD]; +end; + +procedure TInformeDetallesPedidoBusinessProcessorRules.SetIMPORTEUNIDADValue(const aValue: Currency); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesPedidoIMPORTEUNIDAD] := aValue; +end; + +function TInformeDetallesPedidoBusinessProcessorRules.GetIMPORTETOTALValue: Currency; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesPedidoIMPORTETOTAL]; +end; + +function TInformeDetallesPedidoBusinessProcessorRules.GetOldIMPORTETOTALValue: Currency; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeDetallesPedidoIMPORTETOTAL]; +end; + +procedure TInformeDetallesPedidoBusinessProcessorRules.SetIMPORTETOTALValue(const aValue: Currency); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesPedidoIMPORTETOTAL] := aValue; +end; + +function TInformeDetallesPedidoBusinessProcessorRules.GetPOSICIONValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesPedidoPOSICION]; +end; + +function TInformeDetallesPedidoBusinessProcessorRules.GetOldPOSICIONValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeDetallesPedidoPOSICION]; +end; + +procedure TInformeDetallesPedidoBusinessProcessorRules.SetPOSICIONValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesPedidoPOSICION] := aValue; +end; + +function TInformeDetallesPedidoBusinessProcessorRules.GetTIPOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesPedidoTIPO]; +end; + +function TInformeDetallesPedidoBusinessProcessorRules.GetOldTIPOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeDetallesPedidoTIPO]; +end; + +procedure TInformeDetallesPedidoBusinessProcessorRules.SetTIPOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesPedidoTIPO] := aValue; +end; + + +initialization + RegisterBusinessProcessorRules(RID_darReferenciaPedidoDelta, TdarReferenciaPedidoBusinessProcessorRules); + RegisterBusinessProcessorRules(RID_DetallesPedidosProveedorDelta, TDetallesPedidosProveedorBusinessProcessorRules); + RegisterBusinessProcessorRules(RID_PedidosProveedorDelta, TPedidosProveedorBusinessProcessorRules); + RegisterBusinessProcessorRules(RID_Refresh_PedidosProveedorDelta, TRefresh_PedidosProveedorBusinessProcessorRules); + RegisterBusinessProcessorRules(RID_InformeCabeceraPedidoDelta, TInformeCabeceraPedidoBusinessProcessorRules); + RegisterBusinessProcessorRules(RID_InformeDetallesPedidoDelta, TInformeDetallesPedidoBusinessProcessorRules); + +end. diff --git a/Modulos/Pedidos a proveedor/Reglas/uBizPedidosProveedor.pas b/Modulos/Pedidos a proveedor/Reglas/uBizPedidosProveedor.pas new file mode 100644 index 0000000..baeb4af --- /dev/null +++ b/Modulos/Pedidos a proveedor/Reglas/uBizPedidosProveedor.pas @@ -0,0 +1,615 @@ +unit uBizPedidosProveedor; + +interface + +uses + uDAInterfaces, uDADataTable, Classes, Controls, + uBizContacto, schPedidosProveedorClient_Intf, uBizImportesDetalleBase, + uBizImportesCabeceraBase, uExceptions, uBizInformesBase, DB, uDBSelectionList, + uBizPresupuestosCliente, uBizMontajes; + +const + BIZ_PEDIDOSPROVEEDOR = 'Client.PedidoProveedor'; + BIZ_DETALLESPEDIDOSPROVEEDOR = 'Client.DetallesPedidoProveedor'; + + SITUACION_PENDIENTE = 'Pendiente'; + SITUACION_PARCIAL = 'Parcialmente recibido'; + SITUACION_RECIBIDO = 'Recibido'; + +type + IBizDetallesPedidoProveedor = interface(IDetallesPedidosProveedor) + ['{4B5CF17E-23E1-489F-B591-AC19C7A5BDDC}'] + procedure CopyFrom(ADetallesPresupuesto : IBizDetallesPresupuesto); overload; + procedure CopyFrom(ADetallesPedido : IBizDetallesPedidoProveedor); overload; + end; + + IBizPedidosProveedor = interface(IPedidosProveedor) + ['{0A258465-6526-483B-AEE9-3DB3750D3C12}'] + function GetDetalles: IBizDetallesPedidoProveedor; + procedure SetDetalles(const Value: IBizDetallesPedidoProveedor); + property Detalles: IBizDetallesPedidoProveedor read GetDetalles write + SetDetalles; + + function GetProveedor: IBizProveedor; + procedure SetProveedor(const Value: IBizProveedor); + property Proveedor: IBizProveedor read GetProveedor write SetProveedor; + + function GetMontaje: IBizMontaje; + procedure SetMontaje(const Value: IBizMontaje); + property Montaje: IBizMontaje read GetMontaje write SetMontaje; + + procedure Show; + function ShowForSelect : TModalResult; + procedure CopyFrom(APedido : IBizPedidosProveedor); + procedure CambiarSituacion(ASituacion: String); +// procedure Preview; +// procedure CalcularTotal; + end; + + TBizDetallesPedidoProveedor = class(TDetallesPedidosProveedorDataTableRules, + IBizDetallesPedidoProveedor, + IBizImportesDetalle, + IParche) // PARCHE *********************** + private + FIsAppend : Boolean; + FPosicionNueva : Integer; + FPuedoLanzarEvento : Boolean; // PARCHE *********************** + protected + procedure OnNewRecord(Sender: TDADataTable); override; + procedure BeforeInsert(Sender: TDADataTable); override; + procedure AfterPost(Sender: TDADataTable); override; + procedure AfterInsert(Sender: TDADataTable); override; + procedure AfterDelete(Sender: TDADataTable); override; + procedure BeforeDelete(Sender: TDADataTable); override; + + // PARCHE *********************** + procedure ActivarEventos; + procedure DesactivarEventos; + procedure Refrescar; + function PuedoLanzarEvento : Boolean; + public + procedure RecalcularImporte; + function DarSumaTotalImportes : Currency; + constructor Create(aDataTable: TDADataTable); override; + destructor destroy; override; + procedure CopyFrom(ADetallesPresupuesto : IBizDetallesPresupuesto); overload; + procedure CopyFrom(ADetallesPedido : IBizDetallesPedidoProveedor); overload; + end; + + + TBizPedidosProveedor = class(TPedidosProveedorDataTableRules, IBizPedidosProveedor, + IBizImportesCabecera, ISelectedRowList, + IApplyUpdateFailedException, IBizInformesAware) + + private + FProveedor : IBizProveedor; + FMontaje : IBizMontaje; + FDetalles: IBizDetallesPedidoProveedor; + FDetallesLink: TDADataSource; + FSelectedRows : TSelectedRowList; + protected + procedure SetCODIGOALMACENValue(const aValue: Integer); override; + procedure ShowApplyUpdateFailed(const Error: EDAApplyUpdateFailed); + function GetDetalles: IBizDetallesPedidoProveedor; + procedure SetDetalles(const Value: IBizDetallesPedidoProveedor); + function GetProveedor: IBizProveedor; + procedure SetProveedor(const Value: IBizProveedor); + function GetMontaje: IBizMontaje; + procedure SetMontaje(const Value: IBizMontaje); + + procedure BeforeApplyUpdates(Sender : TDADataTable; const Delta : IDADelta); + procedure OnNewRecord(Sender: TDADataTable); override; + function GetSelectedRows : TSelectedRowList; + procedure BeforeDelete(Sender: TDADataTable); override; + procedure AfterDelete(Sender: TDADataTable); override; + procedure OnPostError(DataTable: TDADataTable; Error: EDatabaseError; + var Action: TDataAction); override; + public + property Proveedor: IBizProveedor read GetProveedor write SetProveedor; + property Montaje: IBizMontaje read GetMontaje write SetMontaje; + property Detalles: IBizDetallesPedidoProveedor read GetDetalles write + SetDetalles; + property SelectedRows : TSelectedRowList read GetSelectedRows; + procedure RecalcularImporte; + procedure Show; virtual; + function ShowForSelect : TModalResult; + procedure Preview; + procedure Print; + procedure CopyFrom(APedido : IBizPedidosProveedor); + procedure CambiarSituacion(ASituacion: String); + + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + end; + + procedure ValidarPedido (const APedido : IBizPedidosProveedor); + +implementation + +uses + Dialogs, uDACDSDataTable, SysUtils, uEditorUtils, + uDataModuleContactos, Variants, Math, Windows, uROClasses, + uDataModulePedidosProveedor, uDataModuleBase, uDataModuleUsuarios, + FactuGES_Intf, uDataTableUtils, Forms, uDataModuleMontajes; + +var + FMasterDeleting : Boolean; + FCancelInsert : Boolean; + +procedure ValidarPedido (const APedido : IBizPedidosProveedor); +begin + if (APedido.CODIGOALMACEN = 0) and + (Length(APedido.DIRECCIONCOMPLETA.Text) = 0) then + raise Exception.Create('Debe indicar un almacén o una dirección alternativa donde recibir el pedido'); +end; + + +{ TBizPedidosProveedor } + +procedure TBizPedidosProveedor.AfterDelete(Sender: TDADataTable); +begin + inherited; + FMasterDeleting := False; +end; + +procedure TBizPedidosProveedor.BeforeApplyUpdates(Sender: TDADataTable; + const Delta: IDADelta); +var + i : integer; +begin + for i := 0 to Delta.Count - 1 do + case Delta.Changes[i].ChangeType of + ctInsert, ctUpdate : ValidarPedido(Self); + //ctDelete : + end; +end; + +procedure TBizPedidosProveedor.BeforeDelete(Sender: TDADataTable); +begin + inherited; + if not dmPedidos.PuedoEliminarPedido(CODIGO) then + raise Exception.Create('No se puede borrar este pedido porque tiene ya se han recibido artículos suyos en algún almacén'); + FMasterDeleting := True; // Para que los detalles se borren de golpe y no recalcule posiciones ni totales +end; + +procedure TBizPedidosProveedor.CambiarSituacion(ASituacion: String); +begin + if not (Self.DataTable.State in dsEditModes) then + Self.DataTable.Edit; + + Self.SITUACION := ASituacion; + Self.FECHAENTREGA := Date; + Self.Post; + Self.DataTable.ApplyUpdates; +end; + +procedure TBizPedidosProveedor.CopyFrom(APedido: IBizPedidosProveedor); +begin + DataTable.DisableEventHandlers; + try + if not APedido.DataTable.Active then + APedido.DataTable.Active := True; + + CODIGOEMPRESA := APedido.CODIGOEMPRESA; + CODIGOCONTACTO := APedido.CODIGOCONTACTO; + REFERENCIA := APedido.REFERENCIA; + IMPORTETOTAL := APedido.IMPORTETOTAL; + OBSERVACIONES := APedido.OBSERVACIONES; + DIRECCIONCOMPLETA := APedido.DIRECCIONCOMPLETA; + INCIDENCIAS := APedido.INCIDENCIAS; + if not APedido.DataTable.FieldByName(fld_PedidosProveedorCODIGOALMACEN).IsNull then + CODIGOALMACEN := APedido.CODIGOALMACEN; + if not APedido.DataTable.FieldByName(fld_PedidosProveedorCODIGOMONTAJE).IsNull then + CODIGOMONTAJE := APedido.CODIGOMONTAJE; + + finally + DataTable.EnableEventHandlers; + end; + Post; + Detalles.CopyFrom(APedido.Detalles); +end; + +constructor TBizPedidosProveedor.Create(aDataTable: TDADataTable); +begin + inherited; + FProveedor := NIL; +// FMontaje := NIL; + FDetallesLink := TDADataSource.Create(NIL); + FSelectedRows := TSelectedRowList.Create(aDataTable); + aDataTable.OnBeforeApplyUpdates := BeforeApplyUpdates; +end; + +destructor TBizPedidosProveedor.Destroy; +begin + FProveedor := NIL; +// FMontaje := NIL; + FDetalles := NIL; + FDetallesLink.Free; + FSelectedRows.Free; + inherited; +end; + +function TBizPedidosProveedor.GetDetalles: IBizDetallesPedidoProveedor; +begin + Result := FDetalles; + +{ + if not Assigned(FDetalles) then + FDetalles := (dmPedidos.GetItem(CODIGO)).detalles; +{ else + if (CODIGOMONTAJE <> FMontaje.Codigo) and + not (FMontaje.DataTable.State in dsEditModes) then + FMontaje := dmMontajes.GetItem(CODIGOMONTAJE); + + if not FMontaje.DataTable.Active then + FMontaje.DataTable.Active := True; + + Result := FDetalles; +} +end; + +function TBizPedidosProveedor.GetMontaje: IBizMontaje; +begin + if not Assigned(FMontaje) then + FMontaje := dmMontajes.GetItem(CODIGOMONTAJE) + else + if (CODIGOMONTAJE <> FMontaje.Codigo) and + not (FMontaje.DataTable.State in dsEditModes) then + FMontaje := dmMontajes.GetItem(CODIGOMONTAJE); + + if not FMontaje.DataTable.Active then + FMontaje.DataTable.Active := True; + + Result := FMontaje; +end; + +function TBizPedidosProveedor.GetProveedor: IBizProveedor; +begin + if not Assigned(FProveedor) then + FProveedor := dmContactos.GetProveedor(CODIGOCONTACTO) + else + if (CODIGOCONTACTO <> FProveedor.Codigo) and + not (FProveedor.DataTable.State in dsEditModes) then + dmContactos.GetContacto(FProveedor, CODIGOCONTACTO); + + if not FProveedor.DataTable.Active then + FProveedor.DataTable.Active := True; + + Result := FProveedor; +end; + +function TBizPedidosProveedor.GetSelectedRows: TSelectedRowList; +begin + Result := FSelectedRows; +end; + +procedure TBizPedidosProveedor.OnNewRecord(Sender: TDADataTable); +var + Cadenas: TStringList; +begin + inherited; + CODIGOEMPRESA := dmBase.CodigoEmpresa; + USUARIO := dmUsuarios.LoginInfo.UserID; + FECHAALTA := Date; + FECHAPEDIDO := Date; + FECHACONFIRMACION := FECHAPEDIDO + 3; + SITUACION := SITUACION_PENDIENTE; + CODIGO := dmPedidos.GetNextAutoinc; + +//Rellenamos las caracteristicas por defecto del pedido + Cadenas := TStringList.Create; + Cadenas.Append('Modelo: '); + Cadenas.Append(''); + Cadenas.Append('Tirador: '); + Cadenas.Append(''); + Cadenas.Append('Color de casco: '); + Cadenas.Append(''); + Cadenas.Append('Cristal: '); + Self.DataTable.FieldByName(fld_PedidosProveedorOBSERVACIONES).AsString := Cadenas.Text; + FreeAndNil(Cadenas); +end; + +procedure TBizPedidosProveedor.OnPostError(DataTable: TDADataTable; + Error: EDatabaseError; var Action: TDataAction); +begin + inherited; + Action := daAbort; + if (Pos(AUF_HAVEVALUE, Error.Message) > 0) then + begin + if (Pos('contacto', Error.Message) > 0) then + MessageBox(0, 'Debe indicar el proveedor de este pedido', 'Atención', MB_ICONWARNING or MB_OK); + if (Pos('Fecha pedido', Error.Message) > 0) then + MessageBox(0, 'Debe indicar la fecha de este pedido', 'Atención', MB_ICONWARNING or MB_OK); + end + else + raise Error; +end; + +procedure TBizPedidosProveedor.Preview; +begin + dmPedidos.Preview(CODIGO); +end; + +procedure TBizPedidosProveedor.Print; +begin + dmPedidos.Print(CODIGO); +end; + +procedure TBizPedidosProveedor.RecalcularImporte; +begin +// No hay que recalcular importes +// RecalcularImportesCabecera(Self.DataTable, Detalles.DataTable); +end; + +procedure TBizPedidosProveedor.SetCODIGOALMACENValue(const aValue: Integer); +begin + if aValue = 0 then + DataTable.Fields[idx_PedidosProveedorCODIGOALMACEN].AsVariant := NULL + else + inherited; +end; + +procedure TBizPedidosProveedor.SetDetalles(const Value: IBizDetallesPedidoProveedor); +begin + FDetalles := Value; + FDetallesLink.DataTable := Self.DataTable; + FDetalles.DataTable.MasterSource := FDetallesLink; +end; + +procedure TBizPedidosProveedor.SetMontaje(const Value: IBizMontaje); +var + bEnEdicion : Boolean; +begin + bEnEdicion := (DataTable.State in dsEditModes); + if not bEnEdicion then + Edit; + FMontaje := Value; + if Assigned(FMontaje) then + begin + CODIGOMONTAJE := FMontaje.CODIGO; + REFERENCIA := FMontaje.REFERENCIA; + Post; + + if (MessageBox(0, 'Si lo desea, puede utilizar los conceptos del presupuesto ' + #10#13 + + 'de este montaje para rellenar el pedido nuevo que va a hacer.' + #10#13 + #10#13 + + '¿Desea copiar los conceptos del presupuesto al pedido nuevo?', 'Confirmación', MB_ICONQUESTION or MB_YESNO) = idYes) then + Self.Detalles.CopyFrom(FMontaje.Presupuesto.Detalles); + + if bEnEdicion then + Edit; + end +end; + +procedure TBizPedidosProveedor.SetProveedor(const Value: IBizProveedor); +var + bEnEdicion : Boolean; +begin + bEnEdicion := (DataTable.State in dsEditModes); + if not bEnEdicion then + Edit; + FProveedor := Value; + if Assigned(FProveedor) then + begin + CODIGOCONTACTO := FProveedor.CODIGO; + Post; + if bEnEdicion then + Edit; + end +end; + +procedure TBizPedidosProveedor.Show; +begin + ShowEditor(IBizPedidosProveedor, Self, etItem); +end; + +procedure TBizPedidosProveedor.ShowApplyUpdateFailed( + const Error: EDAApplyUpdateFailed); +begin + if (Pos(AUF_FKVIOLATION, Error.Message) > 0) then + MessageBox(0, 'No se puede borrar este pedido porque tiene un algo asociado', 'Atención', MB_ICONWARNING or MB_OK); +end; + +function TBizPedidosProveedor.ShowForSelect: TModalResult; +begin + Result := ShowEditor(IBizPedidosProveedor, Self, etSelectItems); +end; + +{ TBizDetallesPedidoProveedor } + +procedure TBizDetallesPedidoProveedor.ActivarEventos; +begin + FPuedoLanzarEvento := True; +end; + +procedure TBizDetallesPedidoProveedor.AfterDelete(Sender: TDADataTable); +var + ACabecera : IBizImportesCabecera; +begin + inherited; + + // PARCHE ******************* + if not PuedoLanzarEvento then + Exit; + + if (not FMasterDeleting) and (not FCancelInsert) then + begin + ReasignarPosiciones(Self.DataTable); + if Assigned(DataTable.MasterSource) and + Supports(DataTable.MasterSource.DataTable, IBizImportesCabecera, ACabecera) then + ACabecera.RecalcularImporte; + end; + FCancelInsert := False; +end; + +procedure TBizDetallesPedidoProveedor.AfterInsert(Sender: TDADataTable); +begin + inherited; + + // PARCHE ******************* + if not PuedoLanzarEvento then + Exit; + + FIsAppend := DataTable.EOF; + Post; // Para lanzar AfterPost y asigne posición + Edit; // Para volver a dejarlo en modo de edición +end; + +procedure TBizDetallesPedidoProveedor.AfterPost(Sender: TDADataTable); +begin + inherited; + + // PARCHE ******************* + if not PuedoLanzarEvento then + Exit; + + if POSICION < 0 then + AsignarPosicion(Self.DataTable, FIsAppend); + + if NUMCONCEPTO < 0 then + AsignarNumConcepto(Self.DataTable); + + FIsAppend := False; +end; + +procedure TBizDetallesPedidoProveedor.BeforeDelete(Sender: TDADataTable); +begin + inherited; + + // PARCHE ******************* + if not PuedoLanzarEvento then + Exit; + + if (DataTable.State in dsEditModes) then + DataTable.Cancel; + + if not FMasterDeleting then + FCancelInsert := not (DataTable.MasterSource.DataTable.FieldByName('CODIGO').AsInteger = CODIGOPEDIDO); +end; + +procedure TBizDetallesPedidoProveedor.BeforeInsert(Sender: TDADataTable); +begin + inherited; + + // PARCHE ******************* + if not PuedoLanzarEvento then + Exit; + + if Assigned(DataTable.MasterSource) and + (DataTable.MasterSource.DataTable.State in dsEditModes) then + DataTable.MasterSource.DataTable.Post; + + if GetRecordCount = 0 then + FPosicionNueva := -1 + else + FPosicionNueva := POSICION * (-1); +end; + +procedure TBizDetallesPedidoProveedor.CopyFrom(ADetallesPresupuesto: IBizDetallesPresupuesto); +begin + DeleteAllTable(Self.DataTable); + + ADetallesPresupuesto.First; + while not ADetallesPresupuesto.EOF do + begin + if (ADetallesPresupuesto.TIPO <> TIPODETALLE_SUBTOTAL) then + begin + try + Append; + DataTable.DisableEventHandlers; + TIPO := ADetallesPresupuesto.TIPO; + DESCRIPCION := ADetallesPresupuesto.DESCRIPCION; + CANTIDAD := ADetallesPresupuesto.CANTIDAD; + +//Por si lo piden para saber el precio de venta +// IMPORTEUNIDAD := ADetallesPresupuesto.IMPORTEUNIDAD; +// IMPORTETOTAL := ADetallesPresupuesto.IMPORTETOTAL; + finally + DataTable.EnableEventHandlers; + end; + Post; + end; + ADetallesPresupuesto.Next; + end; +end; + +procedure TBizDetallesPedidoProveedor.CopyFrom(ADetallesPedido: IBizDetallesPedidoProveedor); +begin + ADetallesPedido.First; + while not ADetallesPedido.EOF do + begin + Append; + DataTable.DisableEventHandlers; + NUMCONCEPTO := ADetallesPedido.NUMCONCEPTO; + POSICION := ADetallesPedido.POSICION; + TIPO := ADetallesPedido.TIPO; + DESCRIPCION := ADetallesPedido.DESCRIPCION; + CANTIDAD := ADetallesPedido.CANTIDAD; + if not ADetallesPedido.DataTable.FieldByName(fld_DetallesPedidosProveedorIMPORTEUNIDAD).IsNull then + IMPORTEUNIDAD := ADetallesPedido.IMPORTEUNIDAD; + if not ADetallesPedido.DataTable.FieldByName(fld_DetallesPedidosProveedorIMPORTETOTAL).IsNull then + IMPORTETOTAL := ADetallesPedido.IMPORTETOTAL; + DataTable.EnableEventHandlers; + Post; + ADetallesPedido.Next; + end; +end; + +constructor TBizDetallesPedidoProveedor.Create(aDataTable: TDADataTable); +begin + inherited; + FPosicionNueva := 1; // Los conceptos empiezan a contar en 1 + FPuedoLanzarEvento := True; +end; + +function TBizDetallesPedidoProveedor.DarSumaTotalImportes: Currency; +begin + Result := DarTotalDetalles(Self.DataTable, True, True); +end; + +procedure TBizDetallesPedidoProveedor.DesactivarEventos; +begin + FPuedoLanzarEvento := False; +end; + +destructor TBizDetallesPedidoProveedor.destroy; +begin +showmessage('libero detalles'); + inherited; +end; + +procedure TBizDetallesPedidoProveedor.OnNewRecord(Sender: TDADataTable); +begin + inherited; + + // PARCHE ******************* + if not PuedoLanzarEvento then + Exit; + + POSICION := FPosicionNueva; + NUMCONCEPTO := -1; + TIPO := TIPODETALLE_CONCEPTO; +end; + +function TBizDetallesPedidoProveedor.PuedoLanzarEvento: Boolean; +begin + Result := FPuedoLanzarEvento; +end; + +procedure TBizDetallesPedidoProveedor.RecalcularImporte; +begin + RecalcularImporteDetalle(Self.DataTable, False, False); +end; + +procedure TBizDetallesPedidoProveedor.Refrescar; +begin + DataTable.Refresh; +end; + +initialization + FMasterDeleting := False; + RegisterDataTableRules(BIZ_DETALLESPEDIDOSPROVEEDOR, TBizDetallesPedidoProveedor); + RegisterDataTableRules(BIZ_PEDIDOSPROVEEDOR, TBizPedidosProveedor); + +finalization + +end. diff --git a/Modulos/Pedidos a proveedor/Servidor/srvPedidosProveedor_Impl.ddp b/Modulos/Pedidos a proveedor/Servidor/srvPedidosProveedor_Impl.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Pedidos a proveedor/Servidor/srvPedidosProveedor_Impl.ddp differ diff --git a/Modulos/Pedidos a proveedor/Servidor/srvPedidosProveedor_Impl.dfm b/Modulos/Pedidos a proveedor/Servidor/srvPedidosProveedor_Impl.dfm new file mode 100644 index 0000000..a90e4a1 --- /dev/null +++ b/Modulos/Pedidos a proveedor/Servidor/srvPedidosProveedor_Impl.dfm @@ -0,0 +1,1884 @@ +object srvPedidosProveedor: TsrvPedidosProveedor + OldCreateOrder = True + RequiresSession = True + SessionManager = dmServer.SessionManager + AcquireConnection = True + ConnectionName = 'IBX' + ServiceSchema = schPedidosProveedor + ServiceAdapter = DABINAdapter + Left = 445 + Top = 306 + Height = 459 + Width = 300 + object schPedidosProveedor: TDASchema + ConnectionManager = dmServer.ConnectionManager + DataDictionary = dmServer.DataDictionary + Diagrams = dmServer.DADiagrams + Datasets = < + item + Params = <> + Statements = < + item + Connection = 'IBX' + SQL = 'SELECT * FROM DAR_REFERENCIA_PEDIDO' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'darReferenciaPedido' + Fields = <> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end + item + Params = < + item + Name = 'CODIGOPEDIDO' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'DETALLESPEDIDOS' + SQL = + 'SELECT '#10' CODIGOPEDIDO, NUMCONCEPTO, DESCRIPCION, CANTIDAD, IM' + + 'PORTEUNIDAD, '#10' IMPORTETOTAL, POSICION, TIPO'#10' FROM'#10' DETALL' + + 'ESPEDIDOS'#10' WHERE CODIGOPEDIDO = :CODIGOPEDIDO' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'CODIGOPEDIDO' + TableField = 'CODIGOPEDIDO' + end + item + DatasetField = 'NUMCONCEPTO' + TableField = 'NUMCONCEPTO' + end + item + DatasetField = 'DESCRIPCION' + TableField = 'DESCRIPCION' + end + item + DatasetField = 'CANTIDAD' + TableField = 'CANTIDAD' + end + item + DatasetField = 'IMPORTEUNIDAD' + TableField = 'IMPORTEUNIDAD' + end + item + DatasetField = 'IMPORTETOTAL' + TableField = 'IMPORTETOTAL' + end + item + DatasetField = 'POSICION' + TableField = 'POSICION' + end + item + DatasetField = 'TIPO' + TableField = 'TIPO' + end> + end> + Name = 'DetallesPedidosProveedor' + Fields = < + item + Name = 'CODIGOPEDIDO' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'CODIGOPEDIDO' + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NUMCONCEPTO' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'NUMCONCEPTO' + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'DESCRIPCION' + DataType = datString + Size = 2000 + BlobType = dabtUnknown + DictionaryEntry = 'DESCRIPCIONCONCEPTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CANTIDAD' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'CANTIDAD' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTEUNIDAD' + DataType = datCurrency + BlobType = dabtUnknown + DictionaryEntry = 'IMPORTEUNIDAD' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTETOTAL' + DataType = datCurrency + BlobType = dabtUnknown + DictionaryEntry = 'IMPORTETOTAL' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'POSICION' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'POSICIONCONCEPTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'TIPO' + DataType = datString + Size = 1 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end + item + Params = <> + Statements = < + item + Connection = 'IBX' + TargetTable = 'PEDIDOS' + SQL = + 'SELECT '#10' PED.CODIGOEMPRESA, PED.CODIGO, PED.FECHAALTA, PED.US' + + 'UARIO, PED.REFERENCIA,'#10' PED.FECHAPEDIDO, PED.FECHACONFIRMACIO' + + 'N, PED.SITUACION, PED.FECHAENTREGA,'#10' PED.OBSERVACIONES, PED.I' + + 'MPORTETOTAL, PED.DIRECCIONCOMPLETA, PED.INCIDENCIAS,'#10' PED.INC' + + 'IDENCIASACTIVAS, PED.CODIGOCONTACTO, CON.NOMBRE,'#10' PED.CODIGOA' + + 'LMACEN, COALESCE(ALM.NOMBRE, '#39'Otro'#39') as NOMBREALMACEN,'#10' PED.C' + + 'ODIGOMONTAJE, MON.CODIGOCONTACTO, CON2.NOMBRE AS NOMBRECLIENTE'#10#10 + + 'FROM PEDIDOS PED'#10'LEFT JOIN CONTACTOS CON ON (PED.CODIGOCONTACTO ' + + '= CON.CODIGO)'#10'LEFT JOIN ALMACENES ALM ON (PED.CODIGOALMACEN = AL' + + 'M.CODIGO)'#10'LEFT JOIN MONTAJES MON ON (PED.CODIGOMONTAJE = MON.COD' + + 'IGO)'#10'LEFT JOIN CONTACTOS CON2 ON (MON.CODIGOCONTACTO = CON2.CODI' + + 'GO)' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'CODIGOEMPRESA' + TableField = 'CODIGOEMPRESA' + end + item + DatasetField = 'CODIGO' + TableField = 'CODIGO' + end + item + DatasetField = 'FECHAALTA' + TableField = 'FECHAALTA' + end + item + DatasetField = 'USUARIO' + TableField = 'USUARIO' + end + item + DatasetField = 'REFERENCIA' + TableField = 'REFERENCIA' + end + item + DatasetField = 'FECHAPEDIDO' + TableField = 'FECHAPEDIDO' + end + item + DatasetField = 'FECHACONFIRMACION' + TableField = 'FECHACONFIRMACION' + end + item + DatasetField = 'SITUACION' + TableField = 'SITUACION' + end + item + DatasetField = 'FECHAENTREGA' + TableField = 'FECHAENTREGA' + end + item + DatasetField = 'OBSERVACIONES' + TableField = 'OBSERVACIONES' + end + item + DatasetField = 'IMPORTETOTAL' + TableField = 'IMPORTETOTAL' + end + item + DatasetField = 'DIRECCIONCOMPLETA' + TableField = 'DIRECCIONCOMPLETA' + end + item + DatasetField = 'INCIDENCIAS' + TableField = 'INCIDENCIAS' + end + item + DatasetField = 'CODIGOALMACEN' + TableField = 'CODIGOALMACEN' + end + item + DatasetField = 'CODIGOCONTACTO' + TableField = 'CODIGOCONTACTO' + end + item + DatasetField = 'NOMBRE' + TableField = 'NOMBRE' + end + item + DatasetField = 'CODIGOMONTAJE' + TableField = 'CODIGOMONTAJE' + end + item + DatasetField = 'NOMBREALMACEN' + TableField = 'NOMBREALMACEN' + end + item + DatasetField = 'CODIGOCONTACTO1' + TableField = 'CODIGOCONTACTO1' + end + item + DatasetField = 'NOMBRECLIENTE' + TableField = 'NOMBRECLIENTE' + end + item + DatasetField = 'INCIDENCIASACTIVAS' + TableField = 'INCIDENCIASACTIVAS' + end> + end> + Name = 'PedidosProveedor' + Fields = < + item + Name = 'CODIGOEMPRESA' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'CODIGOEMPRESA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGO' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'CODIGOPEDIDO' + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHAALTA' + DataType = datDateTime + BlobType = dabtUnknown + DictionaryEntry = 'FECHAALTA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'USUARIO' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DictionaryEntry = 'USUARIO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'REFERENCIA' + DataType = datString + Size = 20 + BlobType = dabtUnknown + DictionaryEntry = 'REFERENCIA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHAPEDIDO' + DataType = datDateTime + BlobType = dabtUnknown + DictionaryEntry = 'FECHAPEDIDO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHACONFIRMACION' + DataType = datDateTime + BlobType = dabtUnknown + DictionaryEntry = 'FECHACONFIRMACION' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'SITUACION' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DictionaryEntry = 'SITUACIONPEDIDO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHAENTREGA' + DataType = datDateTime + BlobType = dabtUnknown + DictionaryEntry = 'FECHAENTREGA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'OBSERVACIONES' + DataType = datMemo + BlobType = dabtUnknown + DictionaryEntry = 'OBSERVACIONES' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTETOTAL' + DataType = datCurrency + BlobType = dabtUnknown + DictionaryEntry = 'IMPORTETOTAL' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'DIRECCIONCOMPLETA' + DataType = datMemo + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Direcci'#243'n' + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'INCIDENCIAS' + DataType = datMemo + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Incidencias' + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'INCIDENCIASACTIVAS' + DataType = datInteger + BlobType = dabtUnknown + DefaultValue = '0' + Required = True + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOALMACEN' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'CODIGO (GENERICO)' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOCONTACTO' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'CODIGO (GENERICO)' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NOMBRE' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Nombre' + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOMONTAJE' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NOMBREALMACEN' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOCONTACTO1' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NOMBRECLIENTE' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end + item + Params = < + item + Name = 'CODIGO' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'PEDIDOS' + SQL = + 'SELECT'#10' PED.CODIGOEMPRESA, PED.CODIGO, PED.FECHAALTA, PED.USU' + + 'ARIO, PED.REFERENCIA,'#10' PED.FECHAPEDIDO, PED.FECHACONFIRMACION' + + ', PED.SITUACION, PED.FECHAENTREGA,'#10' PED.OBSERVACIONES, PED.IM' + + 'PORTETOTAL, PED.DIRECCIONCOMPLETA, PED.INCIDENCIAS,'#10' PED.INCI' + + 'DENCIASACTIVAS, PED.CODIGOCONTACTO, CON.NOMBRE,'#10' PED.CODIGOAL' + + 'MACEN, COALESCE(ALM.NOMBRE, '#39'Otro'#39') as NOMBREALMACEN,'#10' PED.CO' + + 'DIGOMONTAJE, MON.CODIGOCONTACTO, CON2.NOMBRE AS NOMBRECLIENTE'#10#10'F' + + 'ROM PEDIDOS PED'#10'LEFT JOIN CONTACTOS CON ON (PED.CODIGOCONTACTO =' + + ' CON.CODIGO)'#10'LEFT JOIN ALMACENES ALM ON (PED.CODIGOALMACEN = ALM' + + '.CODIGO)'#10'LEFT JOIN MONTAJES MON ON (PED.CODIGOMONTAJE = MON.CODI' + + 'GO)'#10'LEFT JOIN CONTACTOS CON2 ON (MON.CODIGOCONTACTO = CON2.CODIG' + + 'O)'#10'WHERE PED.CODIGO = :CODIGO' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'CODIGOEMPRESA' + TableField = 'CODIGOEMPRESA' + end + item + DatasetField = 'CODIGO' + TableField = 'CODIGO' + end + item + DatasetField = 'FECHAALTA' + TableField = 'FECHAALTA' + end + item + DatasetField = 'USUARIO' + TableField = 'USUARIO' + end + item + DatasetField = 'REFERENCIA' + TableField = 'REFERENCIA' + end + item + DatasetField = 'FECHAPEDIDO' + TableField = 'FECHAPEDIDO' + end + item + DatasetField = 'FECHACONFIRMACION' + TableField = 'FECHACONFIRMACION' + end + item + DatasetField = 'SITUACION' + TableField = 'SITUACION' + end + item + DatasetField = 'FECHAENTREGA' + TableField = 'FECHAENTREGA' + end + item + DatasetField = 'OBSERVACIONES' + TableField = 'OBSERVACIONES' + end + item + DatasetField = 'IMPORTETOTAL' + TableField = 'IMPORTETOTAL' + end + item + DatasetField = 'DIRECCIONCOMPLETA' + TableField = 'DIRECCIONCOMPLETA' + end + item + DatasetField = 'INCIDENCIAS' + TableField = 'INCIDENCIAS' + end + item + DatasetField = 'CODIGOALMACEN' + TableField = 'CODIGOALMACEN' + end + item + DatasetField = 'CODIGOCONTACTO' + TableField = 'CODIGOCONTACTO' + end + item + DatasetField = 'NOMBRE' + TableField = 'NOMBRE' + end + item + DatasetField = 'CODIGOMONTAJE' + TableField = 'CODIGOMONTAJE' + end + item + DatasetField = 'NOMBREALMACEN' + TableField = 'NOMBREALMACEN' + end + item + DatasetField = 'INCIDENCIASACTIVAS' + TableField = 'INCIDENCIASACTIVAS' + end + item + DatasetField = 'CODIGOCONTACTO1' + TableField = 'CODIGOCONTACTO1' + end + item + DatasetField = 'NOMBRECLIENTE' + TableField = 'NOMBRECLIENTE' + end> + end> + Name = 'Refresh_PedidosProveedor' + Fields = < + item + Name = 'CODIGOEMPRESA' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'CODIGOEMPRESA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGO' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'CODIGOPEDIDO' + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHAALTA' + DataType = datDateTime + BlobType = dabtUnknown + DictionaryEntry = 'FECHAALTA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'USUARIO' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DictionaryEntry = 'USUARIO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'REFERENCIA' + DataType = datString + Size = 20 + BlobType = dabtUnknown + DictionaryEntry = 'REFERENCIA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHAPEDIDO' + DataType = datDateTime + BlobType = dabtUnknown + DictionaryEntry = 'FECHAPEDIDO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHACONFIRMACION' + DataType = datDateTime + BlobType = dabtUnknown + DictionaryEntry = 'FECHACONFIRMACION' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'SITUACION' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DictionaryEntry = 'SITUACIONPEDIDO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHAENTREGA' + DataType = datDateTime + BlobType = dabtUnknown + DictionaryEntry = 'FECHAENTREGA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'OBSERVACIONES' + DataType = datMemo + BlobType = dabtUnknown + DictionaryEntry = 'OBSERVACIONES' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTETOTAL' + DataType = datCurrency + BlobType = dabtUnknown + DictionaryEntry = 'IMPORTETOTAL' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'DIRECCIONCOMPLETA' + DataType = datMemo + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Direcci'#243'n' + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'INCIDENCIAS' + DataType = datMemo + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Incidencias' + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'INCIDENCIASACTIVAS' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOALMACEN' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'CODIGO (GENERICO)' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOCONTACTO' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'CODIGO (GENERICO)' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NOMBRE' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Nombre' + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOMONTAJE' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NOMBREALMACEN' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOCONTACTO1' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NOMBRECLIENTE' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end + item + Params = < + item + Name = 'CODIGO' + DataType = datInteger + BlobType = dabtUnknown + Value = '43' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'PEDIDOS' + SQL = + 'SELECT'#10' PED.CODIGOEMPRESA, PED.CODIGO, PED.REFERENCIA,'#10' PE' + + 'D.FECHAPEDIDO, PED.FECHAENTREGA, PED.OBSERVACIONES, PED.IMPORTET' + + 'OTAL,'#10' PED.DIRECCIONCOMPLETA, CON.NOMBRE, CON.CALLE, CON.CODI' + + 'GOPOSTAL,'#10' CON.PROVINCIA, CON.POBLACION,'#10' PED.CODIGOMONTAJ' + + 'E, MON.CODIGOCONTACTO, CON2.NOMBRE AS NOMBRECLIENTE'#10'FROM PEDIDOS' + + ' PED'#10'LEFT JOIN CONTACTOS CON ON (PED.CODIGOCONTACTO = CON.CODIGO' + + ')'#10'LEFT JOIN MONTAJES MON ON (PED.CODIGOMONTAJE = MON.CODIGO)'#10'LEF' + + 'T JOIN CONTACTOS CON2 ON (MON.CODIGOCONTACTO = CON2.CODIGO)'#10'WHER' + + 'E PED.CODIGO = :CODIGO' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'CODIGOEMPRESA' + TableField = 'CODIGOEMPRESA' + end + item + DatasetField = 'CODIGO' + TableField = 'CODIGO' + end + item + DatasetField = 'REFERENCIA' + TableField = 'REFERENCIA' + end + item + DatasetField = 'FECHAPEDIDO' + TableField = 'FECHAPEDIDO' + end + item + DatasetField = 'OBSERVACIONES' + TableField = 'OBSERVACIONES' + end + item + DatasetField = 'IMPORTETOTAL' + TableField = 'IMPORTETOTAL' + end + item + DatasetField = 'DIRECCIONCOMPLETA' + TableField = 'DIRECCIONCOMPLETA' + end + item + DatasetField = 'NOMBRE' + TableField = 'NOMBRE' + end + item + DatasetField = 'CALLE' + TableField = 'CALLE' + end + item + DatasetField = 'CODIGOPOSTAL' + TableField = 'CODIGOPOSTAL' + end + item + DatasetField = 'PROVINCIA' + TableField = 'PROVINCIA' + end + item + DatasetField = 'POBLACION' + TableField = 'POBLACION' + end> + end> + Name = 'InformeCabeceraPedido' + Fields = < + item + Name = 'CODIGOEMPRESA' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGO' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'REFERENCIA' + DataType = datString + Size = 20 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHAPEDIDO' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHAENTREGA' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'OBSERVACIONES' + DataType = datMemo + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTETOTAL' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'DIRECCIONCOMPLETA' + DataType = datMemo + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NOMBRE' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CALLE' + DataType = datString + Size = 150 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOPOSTAL' + DataType = datString + Size = 5 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PROVINCIA' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'POBLACION' + DataType = datString + Size = 40 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOMONTAJE' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOCONTACTO' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NOMBRECLIENTE' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end + item + Params = < + item + Name = 'CODIGOPEDIDO' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'DETALLESPEDIDOS' + SQL = + 'SELECT '#10' CODIGOPEDIDO, NUMCONCEPTO, DESCRIPCION, CANTIDAD, IM' + + 'PORTEUNIDAD, '#10' IMPORTETOTAL, POSICION, TIPO'#10' FROM'#10' DETALL' + + 'ESPEDIDOS'#10' WHERE CODIGOPEDIDO = :CODIGOPEDIDO' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'CODIGOPEDIDO' + TableField = 'CODIGOPEDIDO' + end + item + DatasetField = 'NUMCONCEPTO' + TableField = 'NUMCONCEPTO' + end + item + DatasetField = 'DESCRIPCION' + TableField = 'DESCRIPCION' + end + item + DatasetField = 'CANTIDAD' + TableField = 'CANTIDAD' + end + item + DatasetField = 'IMPORTEUNIDAD' + TableField = 'IMPORTEUNIDAD' + end + item + DatasetField = 'IMPORTETOTAL' + TableField = 'IMPORTETOTAL' + end + item + DatasetField = 'POSICION' + TableField = 'POSICION' + end + item + DatasetField = 'TIPO' + TableField = 'TIPO' + end> + end> + Name = 'InformeDetallesPedido' + Fields = < + item + Name = 'CODIGOPEDIDO' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'CODIGOPEDIDO' + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NUMCONCEPTO' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'NUMCONCEPTO' + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'DESCRIPCION' + DataType = datString + Size = 2000 + BlobType = dabtUnknown + DictionaryEntry = 'DESCRIPCIONCONCEPTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CANTIDAD' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'CANTIDAD' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTEUNIDAD' + DataType = datCurrency + BlobType = dabtUnknown + DictionaryEntry = 'IMPORTEUNIDAD' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTETOTAL' + DataType = datCurrency + BlobType = dabtUnknown + DictionaryEntry = 'IMPORTETOTAL' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'POSICION' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'POSICIONCONCEPTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'TIPO' + DataType = datString + Size = 1 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end> + Commands = < + item + Params = < + item + Name = 'CODIGOEMPRESA' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'CODIGO' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'FECHAALTA' + DataType = datDateTime + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'USUARIO' + DataType = datString + Size = 100 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'REFERENCIA' + DataType = datString + Size = 20 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'FECHAPEDIDO' + DataType = datDateTime + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'FECHACONFIRMACION' + DataType = datDateTime + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'SITUACION' + DataType = datString + Size = 30 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'FECHAENTREGA' + DataType = datDateTime + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'OBSERVACIONES' + DataType = datMemo + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'IMPORTETOTAL' + DataType = datFloat + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'DIRECCIONCOMPLETA' + DataType = datMemo + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'INCIDENCIAS' + DataType = datMemo + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'INCIDENCIASACTIVAS' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'CODIGOALMACEN' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'CODIGOCONTACTO' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'CODIGOMONTAJE' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'PEDIDOS' + SQL = + 'INSERT'#10' INTO PEDIDOS'#10' (CODIGOEMPRESA, CODIGO, FECHAALTA, USU' + + 'ARIO, REFERENCIA, '#10' FECHAPEDIDO, FECHACONFIRMACION, SITUACIO' + + 'N, FECHAENTREGA, '#10' OBSERVACIONES, IMPORTETOTAL, DIRECCIONCOM' + + 'PLETA, INCIDENCIAS, INCIDENCIASACTIVAS,'#10' CODIGOALMACEN, CODI' + + 'GOCONTACTO, CODIGOMONTAJE)'#10' VALUES'#10' (:CODIGOEMPRESA, :CODIGO' + + ', :FECHAALTA, :USUARIO, :REFERENCIA, '#10' :FECHAPEDIDO, :FECHAC' + + 'ONFIRMACION, :SITUACION, :FECHAENTREGA, '#10' :OBSERVACIONES, :I' + + 'MPORTETOTAL, :DIRECCIONCOMPLETA, '#10' :INCIDENCIAS, :INCIDENCIA' + + 'SACTIVAS, :CODIGOALMACEN, :CODIGOCONTACTO, :CODIGOMONTAJE)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Insert_PedidosProveedor' + end + item + Params = < + item + Name = 'OLD_CODIGO' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'PEDIDOS' + SQL = 'DELETE '#10' FROM'#10' PEDIDOS'#10' WHERE'#10' (CODIGO = :OLD_CODIGO)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Delete_PedidosProveedor' + end + item + Params = < + item + Name = 'CODIGOEMPRESA' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'CODIGO' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'FECHAALTA' + DataType = datDateTime + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'USUARIO' + DataType = datString + Size = 100 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'REFERENCIA' + DataType = datString + Size = 20 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'FECHAPEDIDO' + DataType = datDateTime + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'FECHACONFIRMACION' + DataType = datDateTime + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'SITUACION' + DataType = datString + Size = 30 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'FECHAENTREGA' + DataType = datDateTime + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'OBSERVACIONES' + DataType = datMemo + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'IMPORTETOTAL' + DataType = datFloat + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'DIRECCIONCOMPLETA' + DataType = datMemo + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'INCIDENCIAS' + DataType = datMemo + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'INCIDENCIASACTIVAS' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'CODIGOALMACEN' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'CODIGOCONTACTO' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'CODIGOMONTAJE' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'OLD_CODIGO' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'PEDIDOS' + SQL = + 'UPDATE PEDIDOS'#10' SET '#10' CODIGOEMPRESA = :CODIGOEMPRESA, '#10' C' + + 'ODIGO = :CODIGO, '#10' FECHAALTA = :FECHAALTA, '#10' USUARIO = :US' + + 'UARIO, '#10' REFERENCIA = :REFERENCIA, '#10' FECHAPEDIDO = :FECHAP' + + 'EDIDO, '#10' FECHACONFIRMACION = :FECHACONFIRMACION, '#10' SITUACI' + + 'ON = :SITUACION, '#10' FECHAENTREGA = :FECHAENTREGA, '#10' OBSERVA' + + 'CIONES = :OBSERVACIONES, '#10' IMPORTETOTAL = :IMPORTETOTAL, '#10' ' + + ' DIRECCIONCOMPLETA = :DIRECCIONCOMPLETA, '#10' INCIDENCIAS = :INC' + + 'IDENCIAS,'#10' INCIDENCIASACTIVAS = :INCIDENCIASACTIVAS,'#10' CODI' + + 'GOALMACEN = :CODIGOALMACEN, '#10' CODIGOCONTACTO = :CODIGOCONTACT' + + 'O, '#10' CODIGOMONTAJE = :CODIGOMONTAJE'#10' WHERE'#10' (CODIGO = :OL' + + 'D_CODIGO)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Update_PedidosProveedor' + end> + RelationShips = < + item + Name = 'FK_DetallesPedidosProveedor_PedidosProveedor' + MasterDatasetName = 'PedidosProveedor' + MasterFields = 'CODIGO' + DetailDatasetName = 'DetallesPedidosProveedor' + DetailFields = 'CODIGOPEDIDO' + end> + UpdateRules = < + item + Name = 'Insert PedidosProveedor' + DoUpdate = False + DoInsert = True + DoDelete = False + DatasetName = 'PedidosProveedor' + FailureBehaviour = fbRaiseException + end + item + Name = 'Update PedidosProveedor' + DoUpdate = True + DoInsert = False + DoDelete = False + DatasetName = 'PedidosProveedor' + FailureBehaviour = fbRaiseException + end + item + Name = 'Delete DetallesPedidosProveedor' + DoUpdate = False + DoInsert = False + DoDelete = True + DatasetName = 'DetallesPedidosProveedor' + FailureBehaviour = fbRaiseException + end + item + Name = 'Insert DetallesPedidosProveedor' + DoUpdate = False + DoInsert = True + DoDelete = False + DatasetName = 'DetallesPedidosProveedor' + FailureBehaviour = fbRaiseException + end + item + Name = 'Update DetallesPedidosProveedor' + DoUpdate = True + DoInsert = False + DoDelete = False + DatasetName = 'DetallesPedidosProveedor' + FailureBehaviour = fbRaiseException + end + item + Name = 'Delete PedidosProveedor' + DoUpdate = False + DoInsert = False + DoDelete = True + DatasetName = 'PedidosProveedor' + FailureBehaviour = fbRaiseException + end> + Left = 48 + Top = 24 + end + object bpPedidosProveedor: TDABusinessProcessor + Schema = schPedidosProveedor + InsertCommandName = 'Insert_PedidosProveedor' + UpdateCommandName = 'Update_PedidosProveedor' + RefreshDatasetName = 'Refresh_PedidosProveedor' + ReferencedDataset = 'PedidosProveedor' + ProcessorOptions = [poAutoGenerateDelete, poPrepareCommands] + UpdateMode = updWhereKeyOnly + Left = 208 + Top = 24 + end + object frxReport1: TfrxReport + Version = '3.23.7' + DotMatrixReport = False + EngineOptions.DoublePass = True + IniFile = '\Software\Fast Reports' + PreviewOptions.Buttons = [pbPrint, pbLoad, pbSave, pbExport, pbZoom, pbFind, pbOutline, pbPageSetup, pbTools, pbEdit, pbNavigator] + PreviewOptions.OutlineWidth = 180 + PreviewOptions.Zoom = 1.000000000000000000 + PrintOptions.Printer = 'Default' + ReportOptions.CreateDate = 37871.995398692100000000 + ReportOptions.Description.Strings = ( + 'Demonstrates how to create simple list report.') + ReportOptions.LastChange = 39015.492018761570000000 + 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( + );}' + 'end;' + '' + 'procedure BandaDetallesOnBeforePrint(Sender: TfrxComponent);' + 'begin' + ' case of' + ' '#39'C'#39': begin' + ' MemoCampo12.Style := '#39'Concepto normal'#39';' + ' end;' + ' '#39'S'#39': begin' + ' MemoCampo12.Style := '#39'Concepto subtotal'#39';' + ' end;' + ' '#39'T'#39': begin' + ' MemoCampo12.Style := '#39'Concepto titulo'#39';' + ' end;' + ' end;' + 'end;' + '' + 'procedure ReportSummary1OnBeforePrint(Sender: TfrxComponent);' + 'begin' + + ' Engine.CurY := Engine.CurY + Engine.FreeSpace - PageFoote' + + 'r1.Height - 1;' + 'end;' + '' + 'begin' + '' + 'end.') + StoreInDFM = False + Left = 40 + Top = 128 + Datasets = < + item + DataSet = frxDBCabecera + DataSetName = 'frxDBCabecera' + end + item + DataSet = frxDBDetalles + DataSetName = 'frxDBDetalles' + end> + Variables = <> + Style = < + item + Name = 'Concepto normal' + Color = clNone + Font.Charset = ANSI_CHARSET + Font.Color = clWindowText + Font.Height = -13 + Font.Name = 'Tahoma' + Font.Style = [] + end + item + Name = 'Concepto subtotal' + Color = 15790320 + Font.Charset = ANSI_CHARSET + Font.Color = clWindowText + Font.Height = -13 + Font.Name = 'Tahoma' + Font.Style = [fsBold] + end + item + Name = 'Cabecera de columna' + Color = 15790320 + Font.Charset = ANSI_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Tahoma' + Font.Style = [fsBold] + Frame.Typ = [ftLeft, ftRight, ftTop, ftBottom] + end + item + Name = 'Concepto titulo' + Color = clNone + Font.Charset = ANSI_CHARSET + Font.Color = clWindowText + Font.Height = -13 + Font.Name = 'Tahoma' + Font.Style = [fsBold] + end> + end + object DADataCabecera: TDADataSource + DataTable = tbl_Pedido + Left = 120 + Top = 176 + end + object DADataDetalles: TDADataSource + DataTable = tbl_DetallesPedido + Left = 200 + Top = 176 + end + object frxDBCabecera: TfrxDBDataset + UserName = 'frxDBCabecera' + CloseDataSource = False + DataSource = DADataCabecera + Left = 120 + Top = 128 + end + object frxDBDetalles: TfrxDBDataset + UserName = 'frxDBDetalles' + CloseDataSource = False + DataSource = DADataDetalles + Left = 200 + Top = 128 + end + object tbl_Pedido: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = <> + Params = <> + MasterMappingMode = mmDataRequest + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteFetchEnabled = False + SchemaCall.Params = <> + DataRequestCall.Params = <> + DataUpdateCall.Params = <> + ScriptCall.Params = <> + ReadOnly = False + Adapter = DABINAdapter + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + IndexDefs = <> + Left = 120 + Top = 240 + end + object tbl_DetallesPedido: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = <> + Params = <> + MasterMappingMode = mmDataRequest + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteFetchEnabled = False + SchemaCall.Params = <> + DataRequestCall.Params = <> + DataUpdateCall.Params = <> + ScriptCall.Params = <> + ReadOnly = False + Adapter = DABINAdapter + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + IndexDefs = <> + Left = 200 + Top = 240 + end + object IBDatabase1: TIBDatabase + DatabaseName = 'D:\Proyectos\FactuGES (Arribas)\Codigo\BD\BASEDATOS.FDB' + Params.Strings = ( + 'user_name=sysdba' + 'password=masterkey' + 'lc_ctype=iSO8859_1') + LoginPrompt = False + DefaultTransaction = IBTransaction1 + IdleTimer = 0 + SQLDialect = 3 + TraceFlags = [] + Left = 32 + Top = 208 + end + object IBTransaction1: TIBTransaction + Active = False + AutoStopAction = saNone + Left = 32 + Top = 256 + end + object IBDataSet1: TIBDataSet + Database = IBDatabase1 + Transaction = IBTransaction1 + BufferChunks = 1000 + CachedUpdates = False + SelectSQL.Strings = ( + 'SELECT ' + ' PED.CODIGOEMPRESA, PED.CODIGO, PED.REFERENCIA,' + ' PED.FECHAPEDIDO, PED.OBSERVACIONES, PED.IMPORTETOTAL,' + ' PED.DIRECCIONCOMPLETA,' + ' CON.NOMBRE, CON.CALLE, CON.CODIGOPOSTAL,' + ' CON.PROVINCIA, CON.POBLACION' + 'FROM PEDIDOS PED' + 'LEFT JOIN CONTACTOS CON ON (PED.CODIGOCONTACTO = CON.CODIGO)' + 'WHERE PED.CODIGO = 43') + Left = 120 + Top = 296 + end + object IBDataSet2: TIBDataSet + Database = IBDatabase1 + Transaction = IBTransaction1 + BufferChunks = 1000 + CachedUpdates = False + SelectSQL.Strings = ( + 'SELECT ' + + ' CODIGOPEDIDO, NUMCONCEPTO, DESCRIPCION, CANTIDAD, IMPORTEUNI' + + 'DAD, ' + ' IMPORTETOTAL, POSICION, TIPO' + ' FROM' + ' DETALLESPEDIDOS' + ' WHERE CODIGOPEDIDO = 43') + Left = 200 + Top = 296 + end + object DataSource1: TDataSource + DataSet = IBDataSet1 + Left = 120 + Top = 352 + end + object DataSource2: TDataSource + DataSet = IBDataSet2 + Left = 200 + Top = 352 + end + object DABINAdapter: TDABINAdapter + Left = 48 + Top = 72 + end +end diff --git a/Modulos/Pedidos a proveedor/Servidor/srvPedidosProveedor_Impl.pas b/Modulos/Pedidos a proveedor/Servidor/srvPedidosProveedor_Impl.pas new file mode 100644 index 0000000..67a8382 --- /dev/null +++ b/Modulos/Pedidos a proveedor/Servidor/srvPedidosProveedor_Impl.pas @@ -0,0 +1,126 @@ +unit srvPedidosProveedor_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:} DARemoteService_Impl, + {Used RODLs:} DataAbstract_Intf, + {Generated:} FactuGES_Intf, uDAClasses, uDAScriptingProvider, + uDABusinessProcessor, uDAInterfaces, uDADataTable, uDACDSDataTable, + frxClass, frxDBSet, DB, IBDatabase, IBCustomDataSet, uDABINAdapter; + +type + { TsrvPedidosProveedor } + TsrvPedidosProveedor = class(TDARemoteService, IsrvPedidosProveedor) + bpPedidosProveedor: TDABusinessProcessor; + DADataCabecera: TDADataSource; + DADataDetalles: TDADataSource; + frxDBCabecera: TfrxDBDataset; + frxDBDetalles: TfrxDBDataset; + tbl_Pedido: TDACDSDataTable; + tbl_DetallesPedido: TDACDSDataTable; + IBDatabase1: TIBDatabase; + IBTransaction1: TIBTransaction; + IBDataSet1: TIBDataSet; + IBDataSet2: TIBDataSet; + DataSource1: TDataSource; + DataSource2: TDataSource; + schPedidosProveedor: TDASchema; + DABINAdapter: TDABINAdapter; + frxReport1: TfrxReport; + private + protected + function GetNextAutoinc: Integer; + function DarNuevaReferencia: String; + function GenerateReport(const Codigo: Integer): Binary; + function PuedoEliminarPedido(const Codigo: Integer): Boolean; + end; + +implementation + +{$R *.dfm} +uses + {Generated:} FactuGES_Invk, uDataModuleServer, dialogs; + +procedure Create_srvPedidosProveedor(out anInstance : IUnknown); +begin + anInstance := TsrvPedidosProveedor.Create(NIL); +end; + +{ srvPedidosProveedor } +{ TsrvPedidosProveedor } + +function TsrvPedidosProveedor.DarNuevaReferencia: String; +var + dsReferencia: IDADataset; +begin + dsReferencia := schPedidosProveedor.NewDataset(Connection, 'DarReferenciaPedido'); + dsReferencia.Active := True; + Result := dsReferencia.FieldByName('REFERENCIA').AsString; +end; + +function TsrvPedidosProveedor.GenerateReport( + const Codigo: Integer): Binary; +var + dsMaster: IDADataset; + dsDetail: IDADataset; + AStream: TMemoryStream; +begin + AStream := TMemoryStream.Create; + Result := Binary.Create; + try + dsMaster := schPedidosProveedor.NewDataset(Connection, 'InformeCabeceraPedido', ['CODIGO'], [Codigo]); + dsDetail := schPedidosProveedor.NewDataset(Connection, 'InformeDetallesPedido', ['CODIGOPEDIDO'], [Codigo], False); + dsDetail.Active := True; + + AStream.Clear; + ServiceAdapter.WriteDataset(AStream, dsMaster, [woRows, woSchema], -1); + ServiceAdapter.ReadDataset(AStream, tbl_Pedido, TRUE, '', TRUE, TRUE); + + AStream.Clear; + ServiceAdapter.WriteDataset(AStream, dsDetail, [woRows, woSchema], -1); + ServiceAdapter.ReadDataset(AStream, tbl_DetallesPedido, TRUE, '', TRUE, TRUE); + + frxReport1.LoadFromFile(DarRutaInformes + 'InfPedido.fr3', True); + frxReport1.PrepareReport; + frxReport1.PreviewPages.SaveToStream(Result); + finally + AStream.Free; + end; +end; + +function TsrvPedidosProveedor.GetNextAutoinc: Integer; +begin + Result := uDataModuleServer.GetNextAutoinc(Connection, 'GEN_PEDIDOS'); +end; + +function TsrvPedidosProveedor.PuedoEliminarPedido(const Codigo: Integer): Boolean; +var + dsData: IDASQLCommand; +begin + Result := True; + Connection.BeginTransaction; + try + dsData := schPedidosProveedor.NewCommand(Connection, 'Delete_PedidosProveedor', ['OLD_CODIGO'], [Codigo]); + except + on E: Exception do + Result := False; + end; + Connection.RollbackTransaction; +end; + +initialization + TROClassFactory.Create('srvPedidosProveedor', Create_srvPedidosProveedor, TsrvPedidosProveedor_Invoker); + +finalization + +end. diff --git a/Modulos/Presupuestos/Cliente/Inicio/uViewInicio.ddp b/Modulos/Presupuestos/Cliente/Inicio/uViewInicio.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Presupuestos/Cliente/Inicio/uViewInicio.ddp differ diff --git a/Modulos/Presupuestos/Cliente/Inicio/uViewInicio.dfm b/Modulos/Presupuestos/Cliente/Inicio/uViewInicio.dfm new file mode 100644 index 0000000..89ff898 --- /dev/null +++ b/Modulos/Presupuestos/Cliente/Inicio/uViewInicio.dfm @@ -0,0 +1,48 @@ +object CustomView1: TCustomView1 + Left = 0 + Top = 0 + Width = 347 + Height = 291 + TabOrder = 0 + ReadOnly = False + object dxLayoutControl1: TdxLayoutControl + Left = 0 + Top = 0 + Width = 347 + Height = 291 + Align = alClient + TabOrder = 0 + AutoContentSizes = [acsWidth, acsHeight] + object DBGrid1: TDBGrid + Left = 24 + Top = 30 + Width = 320 + Height = 116 + BorderStyle = bsNone + TabOrder = 0 + TitleFont.Charset = DEFAULT_CHARSET + TitleFont.Color = clWindowText + TitleFont.Height = -11 + TitleFont.Name = 'MS Sans Serif' + TitleFont.Style = [] + end + object dxLayoutControl1Group_Root: TdxLayoutGroup + ShowCaption = False + Hidden = True + ShowBorder = False + object dxLayoutControl1Group1: TdxLayoutGroup + AutoAligns = [aaHorizontal] + AlignVert = avClient + Caption = 'Prueba' + object dxLayoutControl1Item1: TdxLayoutItem + AutoAligns = [] + AlignHorz = ahClient + AlignVert = avClient + Caption = 'New Item' + ShowCaption = False + Control = DBGrid1 + end + end + end + end +end diff --git a/Modulos/Presupuestos/Cliente/Inicio/uViewInicio.pas b/Modulos/Presupuestos/Cliente/Inicio/uViewInicio.pas new file mode 100644 index 0000000..c62cf18 --- /dev/null +++ b/Modulos/Presupuestos/Cliente/Inicio/uViewInicio.pas @@ -0,0 +1,36 @@ +unit uViewInicio; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uCustomView, dxLayoutControl, Grids, DBGrids, cxControls, uViewBase; + +type + TCustomView1 = class(TCustomView, IViewInicio) + dxLayoutControl1Group_Root: TdxLayoutGroup; + dxLayoutControl1: TdxLayoutControl; + dxLayoutControl1Group1: TdxLayoutGroup; + DBGrid1: TDBGrid; + dxLayoutControl1Item1: TdxLayoutItem; + private + function Control : TControl; + public + { Public declarations } + end; + +var + CustomView1: TCustomView1; + +implementation + +{$R *.dfm} + +{ TCustomView1 } + +function TCustomView1.Control: TControl; +begin + Result := Self; +end; + +end. diff --git a/Modulos/Presupuestos/Cliente/Presupuestos.bdsproj b/Modulos/Presupuestos/Cliente/Presupuestos.bdsproj new file mode 100644 index 0000000..e694117 --- /dev/null +++ b/Modulos/Presupuestos/Cliente/Presupuestos.bdsproj @@ -0,0 +1,492 @@ + + + + + + + + + + + + Presupuestos.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + .\ + ..\..\..\Output\Cliente + .\ + $(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente;..\..\Documentos asociados;..\..\Contactos\Cliente;..\..\Almacenes\Cliente + vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;IntrawebDB_50_70;Intraweb_50_70;Rave50CLX;Rave50VCL;dclOfficeXP;PluginSDK_D7R;DJcl;JvStdCtrlsD7R;JvAppFrmD7R;JvCoreD7R;JvBandsD7R;JvBDED7R;JvDBD7R;JvDlgsD7R;JvCmpD7R;JvCryptD7R;JvCtrlsD7R;JvCustomD7R;JvDockingD7R;JvDotNetCtrlsD7R;JvEDID7R;qrpt;JvGlobusD7R;JvHMID7R;JvInspectorD7R;JvInterpreterD7R;JvJansD7R;JvManagedThreadsD7R;JvMMD7R;JvNetD7R;JvPageCompsD7R;JvPluginD7R;JvPrintPreviewD7R;JvSystemD7R;JvTimeFrameworkD7R;JvUIBD7R;JvValidatorsD7R;JvWizardD7R;JvXPCtrlsD7R;GUISDK_D7;RemObjects_WebBroker_D7;RemObjects_Indy_D7;RemObjects_RODX_D7;RemObjects_BPDX_D7;PascalScript_RO_D7;DataAbstract_Core_D7;DataAbstract_IDE_D7;DataAbstract_DBXDriver_D7;DataAbstract_Scripting_D7;dxBarD7;dxComnD7;cxLibraryVCLD7;cxEditorsVCLD7;dxThemeD7;cxDataD7;cxExtEditorsVCLD7;cxGridVCLD7;cxPageControlVCLD7;cxSchedulerVCLD7;cxTreeListVCLD7;dxBarDBNavD7;dxBarExtDBItemsD7;dxBarExtItemsD7;dxDockingD7;dxNavBarD7;dxPSCoreD7;dxsbD7;dxPSLnksD7;dxPSTeeChartD7;EPCOTAUtils70;PNG_D7;PngComponentsD7;tb2k_d7;tbx_d7;UserControlD7_RT;fqb70;frx7;frxADO7;frxBDE7;frxcs7;frxDB7;frxDBX7;frxe7;frxIBX7;fs7;fsADO7;fsBDE7;fsDB7;fsIBX7;cxExportVCLD7;cxIntl5D7;cxIntlPrintSys3D7;dxPScxCommonD7;dxPScxExtCommonD7;dxPScxGridLnkD7;dxPScxPCProdD7;dxPScxTLLnkD7;dxPSDBTeeChartD7;dxPsPrVwAdvD7;TMSD7;FR7;FRIBX7;cxIntlSchedulerD7;dxLayoutControlD7;dxPScxScheduler2LnkD7;ComparerD7;dxPSdxLCLnkD7;dxLayoutControlcxEditAdaptersD7;cxVerticalGridVCLD7;vclShX_Generic_V3D7 + + + False + + + + + + False + + + True + False + + + + $00000000 + C:\Archivos de programa\Borland\Delphi7\Bin\ + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + diff --git a/Modulos/Presupuestos/Cliente/Presupuestos.cfg b/Modulos/Presupuestos/Cliente/Presupuestos.cfg new file mode 100644 index 0000000..2ddd81b --- /dev/null +++ b/Modulos/Presupuestos/Cliente/Presupuestos.cfg @@ -0,0 +1,45 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-GD +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N".\" +-LE"..\..\..\Output\Cliente" +-LN".\" +-U"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente;..\..\Documentos asociados;..\..\Contactos\Cliente;..\..\Almacenes\Cliente" +-O"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente;..\..\Documentos asociados;..\..\Contactos\Cliente;..\..\Almacenes\Cliente" +-I"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente;..\..\Documentos asociados;..\..\Contactos\Cliente;..\..\Almacenes\Cliente" +-R"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente;..\..\Documentos asociados;..\..\Contactos\Cliente;..\..\Almacenes\Cliente" +-Z +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/Modulos/Presupuestos/Cliente/Presupuestos.dcp b/Modulos/Presupuestos/Cliente/Presupuestos.dcp new file mode 100644 index 0000000..f0f0d45 Binary files /dev/null and b/Modulos/Presupuestos/Cliente/Presupuestos.dcp differ diff --git a/Modulos/Presupuestos/Cliente/Presupuestos.dof b/Modulos/Presupuestos/Cliente/Presupuestos.dof new file mode 100644 index 0000000..51474eb --- /dev/null +++ b/Modulos/Presupuestos/Cliente/Presupuestos.dof @@ -0,0 +1,518 @@ +[FileVersion] +Version=7.0 +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=1 +SymbolLibrary=1 +SymbolPlatform=1 +UnitLibrary=1 +UnitPlatform=1 +UnitDeprecated=1 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 +[Linker] +MapFile=3 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription= +[Directories] +OutputDir= +UnitOutputDir=.\ +PackageDLLOutputDir=..\..\..\Output\Cliente +PackageDCPOutputDir=.\ +SearchPath=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente;..\..\Documentos asociados;..\..\Contactos\Cliente;..\..\Almacenes\Cliente +Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;IntrawebDB_50_70;Intraweb_50_70;Rave50CLX;Rave50VCL;dclOfficeXP;PluginSDK_D7R;DJcl;JvStdCtrlsD7R;JvAppFrmD7R;JvCoreD7R;JvBandsD7R;JvBDED7R;JvDBD7R;JvDlgsD7R;JvCmpD7R;JvCryptD7R;JvCtrlsD7R;JvCustomD7R;JvDockingD7R;JvDotNetCtrlsD7R;JvEDID7R;qrpt;JvGlobusD7R;JvHMID7R;JvInspectorD7R;JvInterpreterD7R;JvJansD7R;JvManagedThreadsD7R;JvMMD7R;JvNetD7R;JvPageCompsD7R;JvPluginD7R;JvPrintPreviewD7R;JvSystemD7R;JvTimeFrameworkD7R;JvUIBD7R;JvValidatorsD7R;JvWizardD7R;JvXPCtrlsD7R;GUISDK_D7;RemObjects_WebBroker_D7;RemObjects_Indy_D7;RemObjects_RODX_D7;RemObjects_BPDX_D7;PascalScript_RO_D7;DataAbstract_Core_D7;DataAbstract_IDE_D7;DataAbstract_DBXDriver_D7;DataAbstract_Scripting_D7;dxBarD7;dxComnD7;cxLibraryVCLD7;cxEditorsVCLD7;dxThemeD7;cxDataD7;cxExtEditorsVCLD7;cxGridVCLD7;cxPageControlVCLD7;cxSchedulerVCLD7;cxTreeListVCLD7;dxBarDBNavD7;dxBarExtDBItemsD7;dxBarExtItemsD7;dxDockingD7;dxNavBarD7;dxPSCoreD7;dxsbD7;dxPSLnksD7;dxPSTeeChartD7;EPCOTAUtils70;PNG_D7;PngComponentsD7;tb2k_d7;tbx_d7;UserControlD7_RT;fqb70;frx7;frxADO7;frxBDE7;frxcs7;frxDB7;frxDBX7;frxe7;frxIBX7;fs7;fsADO7;fsBDE7;fsDB7;fsIBX7;cxExportVCLD7;cxIntl5D7;cxIntlPrintSys3D7;dxPScxCommonD7;dxPScxExtCommonD7;dxPScxGridLnkD7;dxPScxPCProdD7;dxPScxTLLnkD7;dxPSDBTeeChartD7;dxPsPrVwAdvD7;TMSD7;FR7;FRIBX7;cxIntlSchedulerD7;dxLayoutControlD7;dxPScxScheduler2LnkD7;ComparerD7;dxPSdxLCLnkD7;dxLayoutControlcxEditAdaptersD7;cxVerticalGridVCLD7;vclShX_Generic_V3D7 +Conditionals= +DebugSourceDirs= +UsePackages=0 +[Parameters] +RunParams= +HostApplication= +Launcher= +UseLauncher=0 +DebugCWD= +[Language] +ActiveLang= +ProjectLang= +RootDir=C:\Archivos de programa\Borland\Delphi7\Bin\ +[Version Info] +IncludeVerInfo=1 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=3082 +CodePage=1252 +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= +[Excluded Packages] +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\cxTreeListVCLD7.bpl=ExpressQuantumTreeList 4 (VCL Edition) by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxThemeD7.bpl=Express XP Theme Manager by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\cxLibraryVCLD7.bpl=Express Cross Platform Library (VCL Edition) by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\cxExportVCLD7.bpl=Express Cross Platform Export Library (VCL Edition) by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\cxEditorsVCLD7.bpl=ExpressEditors Library 5 (VCL Edition) by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\cxDataD7.bpl=ExpressDataController by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\cxExtEditorsVCLD7.bpl=ExpressExtendedEditors Library 5 (VCL Edition) by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\cxGridVCLD7.bpl=ExpressQuantumGrid 5 (VCL Edition) by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\cxPageControlVCLD7.bpl=Express Cross Platform PageControl (VCL Edition) by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\cxSchedulerVCLD7.bpl=ExpressScheduler 2 (VCL Edition) by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxsbD7.bpl=ExpressSideBar by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxComnD7.bpl=ExpressCommonLibrary by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxBarD7.bpl=ExpressBars by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxBarDBNavD7.bpl=ExpressBars DBNavigator by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxBarExtDBItemsD7.bpl=ExpressBars extended DB items by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxBarExtItemsD7.bpl=ExpressBars extended items by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxDockingD7.bpl=ExpressDocking Library by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxLayoutControlD7.bpl=ExpressLayout Control by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxNavBarD7.bpl=ExpressNavBar by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxGDIPlusD7.bpl=ExpressGDI+ Library by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxPSCoreD7.bpl=ExpressPrinting System by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\cxVerticalGridVCLD7.bpl=ExpressVerticalGrid (VCL Edition) by Developer Express Inc. +c:\archivos de programa\borland\delphi7\Projects\Bpl\RodaxFrameD7.bpl=Frames Acana (D7) +C:\WINDOWS\system32\dclShX_Namespace_V3D7.bpl=(untitled) +C:\WINDOWS\system32\vclShX_Namespace_v3D7.bpl=(untitled) +[HistoryLists\hlDebugSourcePath] +Count=1 +Item0=D:\Proyectos\Componentes\GUISDK\Sources\;D:\Proyectos\Componentes\PluginSDK\Source\;D:\Proyectos\FactuGES (Estudio)\Codigo\Modulos\Contactos\Cliente;D:\Proyectos\FactuGES (Estudio)\Codigo\Modulos\Contactos\Reglas +[HistoryLists\hlUnitAliases] +Count=1 +Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +[HistoryLists\hlSearchPath] +Count=16 +Item0=..\Modulos\Presupuestos\Reglas;..\Modulos\Contactos\Reglas;..\Base;..\Configuracion;..\Usuarios;..\Modulos\Albaranes de cliente\Reglas +Item1=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\Base;..\Configuracion;..\Usuarios;..\Modulos\Intervalos;..\Modulos\Documentos asociados;..\Modulos\Contactos\Cliente;..\Modulos\Contactos\Reglas;..\Modulos\Presupuestos\Cliente;..\Modulos\Presupuestos\Reglas;..\Modulos\Albaranes de cliente\Cliente;..\Modulos\Albaranes de cliente\Reglas;..\Modulos\Facturas de cliente\Cliente;..\Modulos\Facturas de cliente\Reglas;..\Modulos\Pedidos a proveedor\Cliente;..\Modulos\Pedidos a proveedor\Reglas;..\Modulos\Facturas de proveedor\Cliente;..\Modulos\Facturas de proveedor\Reglas;..\Modulos\Montajes\Reglas;..\Modulos\Montajes\Cliente;..\Modulos\Articulos\Cliente;..\Modulos\Articulos\Reglas;..\Modulos\Almacenes\Reglas;..\Modulos\Almacenes\Cliente;..\Modulos\Pagos\Reglas;..\Modulos\Pagos\Cliente;..\Modulos\Cuentas\Reglas;..\Modulos\Cuentas\Cliente;..\Modulos\Asientos\Reglas;..\Modulos\Asientos\Cliente;..\Modulos\Calendarios\Cliente;..\Modulos\Calendarios\Reglas +Item2=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente;..\..\Asientos\Cliente;..\..\Cuentas\Cliente +Item3=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente;..\..\Asientos\Cliente +Item4=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente +Item5=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente +Item6=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente;..\..\Documentos asociados;..\..\Contactos\Cliente;..\..\Almacenes\Cliente +Item7=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados +Item8=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente;..\..\Documentos asociados;..\..\Contactos\Cliente +Item9=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente;..\..\Documentos asociados +Item10=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente +Item11=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados;..\..\Montajes\Cliente;..\..\Almacenes\Cliente +Item12=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados;..\..\Montajes\Cliente +Item13=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\Servidor +Item14=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\base;..\Modulos\Calendarios\Cliente;..\Modulos\Calendarios\Reglas +Item15=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\Base;..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios +[HistoryLists\hlUnitOutputDirectory] +Count=1 +Item0=.\ +[HistoryLists\hlOutputDirectorry] +Count=2 +Item0=..\Output\Servidor +Item1=..\Output\Cliente +[HistoryLists\hlBPLOutput] +Count=3 +Item0=..\..\..\Output\Cliente +Item1=..\Output\Cliente +Item2=..\..\Output\Cliente +[HistoryLists\hlDCPOutput] +Count=1 +Item0=.\ +[Exception Log] +EurekaLog Version=519 +Activate=1 +Activate Handle=1 +Save Log File=1 +Foreground Tab=0 +Freeze Activate=0 +Freeze Timeout=0 +Freeze Message=The application seems to be frozen. +SMTP From=eurekalog@email.com +SMTP Host= +SMTP Port=25 +SMTP UserID= +SMTP Password= +Append to Log=0 +Show TerminateBtn=1 +TerminateBtn Operation=1 +Errors Number=32 +Errors Terminate=3 +Email Address= +Email Object= +Email Send Options=0 +Output Path= +Encrypt Password= +AutoCloseDialogSecs=0 +WebSendMode=0 +SupportULR= +HTMLLayout Count=15 +HTMLLine0="%3Chtml%3E" +HTMLLine1=" %3Chead%3E" +HTMLLine2=" %3C/head%3E" +HTMLLine3=" %3Cbody TopMargin=10 LeftMargin=10%3E" +HTMLLine4=" %3Ctable width="100%%" border="0"%3E" +HTMLLine5=" %3Ctr%3E" +HTMLLine6=" %3Ctd nowrap%3E" +HTMLLine7=" %3Cfont face="Lucida Console, Courier" size="2"%3E" +HTMLLine8=" %3C%%HTML_TAG%%%3E" +HTMLLine9=" %3C/font%3E" +HTMLLine10=" %3C/td%3E" +HTMLLine11=" %3C/tr%3E" +HTMLLine12=" %3C/table%3E" +HTMLLine13=" %3C/body%3E" +HTMLLine14="%3C/html%3E" +AutoCrashOperation=1 +AutoCrashNumber=10 +AutoCrashMinutes=1 +WebURL= +WebUserID= +WebPassword= +WebPort=0 +AttachedFiles= +Count=0 +EMail Message Line Count=0 +loNoDuplicateErrors=0 +loAppendReproduceText=0 +loDeleteLogAtVersionChange=0 +loAddComputerNameInLogFileName=0 +loSaveModulesSection=1 +loSaveCPUSection=1 +soAppStartDate=1 +soAppName=1 +soAppVersionNumber=1 +soAppParameters=1 +soAppCompilationDate=1 +soExcDate=1 +soExcAddress=1 +soExcModule=1 +soExcType=1 +soExcMessage=1 +soActCtlsFormClass=1 +soActCtlsFormText=1 +soActCtlsControlClass=1 +soActCtlsControlText=1 +soCmpName=1 +soCmpUser=1 +soCmpTotalMemory=1 +soCmpFreeMemory=1 +soCmpTotalDisk=1 +soCmpFreeDisk=1 +soCmpSysUpTime=1 +soCmpProcessor=1 +soCmpDisplayMode=1 +soOSType=1 +soOSBuildN=1 +soOSUpdate=1 +soOSLanguage=1 +soNetIP=1 +soNetSubmask=1 +soNetGateway=1 +soNetDNS1=1 +soNetDNS2=1 +soNetDHCP=1 +sndShowSendDialog=1 +sndShowSuccessFailureMsg=0 +sndSendEntireLog=0 +sndSendXMLLogCopy=0 +sndSendScreenshot=0 +sndUseOnlyActiveWindow=0 +sndSendLastHTMLPage=1 +sndSendInSeparatedThread=0 +sndAddDateInFileName=0 +sndCompressAllFiles=0 +edoShowExceptionDialog=1 +edoSendEmailChecked=1 +edoAttachScreenshotChecked=1 +edoShowCopyToClipOption=1 +edoShowDetailsButton=1 +edoShowInDetailedMode=0 +edoShowInTopMostMode=0 +edoUseEurekaLogLookAndFeel=1 +csoShowDLLs=1 +csoShowBPLs=1 +csoShowBorlandThreads=1 +csoShowWindowsThreads=1 +csoShowProcedureOffset=0 +boActivateCrashDetection=0 +boPauseBorlandThreads=0 +boDoNotPauseMainThread=0 +boPauseWindowsThreads=0 +boUseMainModuleOptions=1 +boCopyLogInCaseOfError=1 +boSaveCompressedCopyInCaseOfError=0 +Count mtInformationMsgCaption=1 +mtInformationMsgCaption0="Information." +Count mtQuestionMsgCaption=1 +mtQuestionMsgCaption0="Question." +Count mtDialog_Caption=1 +mtDialog_Caption0="Error." +Count mtDialog_ErrorMsgCaption=2 +mtDialog_ErrorMsgCaption0="An error has occurred during program execution." +mtDialog_ErrorMsgCaption1="Please read the following information for further details." +Count mtDialog_GeneralCaption=1 +mtDialog_GeneralCaption0="General" +Count mtDialog_GeneralHeader=1 +mtDialog_GeneralHeader0="General Information" +Count mtDialog_CallStackCaption=1 +mtDialog_CallStackCaption0="Call Stack" +Count mtDialog_CallStackHeader=1 +mtDialog_CallStackHeader0="Call Stack Information" +Count mtDialog_ModulesCaption=1 +mtDialog_ModulesCaption0="Modules" +Count mtDialog_ModulesHeader=1 +mtDialog_ModulesHeader0="Modules Information" +Count mtDialog_CPUCaption=1 +mtDialog_CPUCaption0="CPU" +Count mtDialog_CPUHeader=1 +mtDialog_CPUHeader0="CPU Information" +Count mtDialog_CustomDataCaption=1 +mtDialog_CustomDataCaption0="Other" +Count mtDialog_CustomDataHeader=1 +mtDialog_CustomDataHeader0="Other Information" +Count mtDialog_OKButtonCaption=1 +mtDialog_OKButtonCaption0="%26OK" +Count mtDialog_TerminateButtonCaption=1 +mtDialog_TerminateButtonCaption0="%26Terminate" +Count mtDialog_RestartButtonCaption=1 +mtDialog_RestartButtonCaption0="%26Restart" +Count mtDialog_DetailsButtonCaption=1 +mtDialog_DetailsButtonCaption0="%26Details" +Count mtDialog_SendMessage=1 +mtDialog_SendMessage0="%26Send this error via Internet" +Count mtDialog_ScreenshotMessage=1 +mtDialog_ScreenshotMessage0="%26Attach a Screenshot image" +Count mtDialog_CopyMessage=1 +mtDialog_CopyMessage0="%26Copy to Clipboard" +Count mtDialog_SupportMessage=1 +mtDialog_SupportMessage0="Go to the Support Page" +Count mtLog_AppHeader=1 +mtLog_AppHeader0="Application" +Count mtLog_AppStartDate=1 +mtLog_AppStartDate0="Start Date" +Count mtLog_AppName=1 +mtLog_AppName0="Name/Description" +Count mtLog_AppVersionNumber=1 +mtLog_AppVersionNumber0="Version Number" +Count mtLog_AppParameters=1 +mtLog_AppParameters0="Parameters" +Count mtLog_AppCompilationDate=1 +mtLog_AppCompilationDate0="Compilation Date" +Count mtLog_ExcHeader=1 +mtLog_ExcHeader0="Exception" +Count mtLog_ExcDate=1 +mtLog_ExcDate0="Date" +Count mtLog_ExcAddress=1 +mtLog_ExcAddress0="Address" +Count mtLog_ExcModule=1 +mtLog_ExcModule0="Module" +Count mtLog_ExcType=1 +mtLog_ExcType0="Type" +Count mtLog_ExcMessage=1 +mtLog_ExcMessage0="Message" +Count mtLog_ActCtrlsHeader=1 +mtLog_ActCtrlsHeader0="Active Controls" +Count mtLog_ActCtrlsFormClass=1 +mtLog_ActCtrlsFormClass0="Form Class" +Count mtLog_ActCtrlsFormText=1 +mtLog_ActCtrlsFormText0="Form Text" +Count mtLog_ActCtrlsControlClass=1 +mtLog_ActCtrlsControlClass0="Control Class" +Count mtLog_ActCtrlsControlText=1 +mtLog_ActCtrlsControlText0="Control Text" +Count mtLog_CmpHeader=1 +mtLog_CmpHeader0="Computer" +Count mtLog_CmpName=1 +mtLog_CmpName0="Name" +Count mtLog_CmpUser=1 +mtLog_CmpUser0="User" +Count mtLog_CmpTotalMemory=1 +mtLog_CmpTotalMemory0="Total Memory" +Count mtLog_CmpFreeMemory=1 +mtLog_CmpFreeMemory0="Free Memory" +Count mtLog_CmpTotalDisk=1 +mtLog_CmpTotalDisk0="Total Disk" +Count mtLog_CmpFreeDisk=1 +mtLog_CmpFreeDisk0="Free Disk" +Count mtLog_CmpSystemUpTime=1 +mtLog_CmpSystemUpTime0="System Up Time" +Count mtLog_CmpProcessor=1 +mtLog_CmpProcessor0="Processor" +Count mtLog_CmpDisplayMode=1 +mtLog_CmpDisplayMode0="Display Mode" +Count mtLog_OSHeader=1 +mtLog_OSHeader0="Operating System" +Count mtLog_OSType=1 +mtLog_OSType0="Type" +Count mtLog_OSBuildN=1 +mtLog_OSBuildN0="Build #" +Count mtLog_OSUpdate=1 +mtLog_OSUpdate0="Update" +Count mtLog_OSLanguage=1 +mtLog_OSLanguage0="Language" +Count mtLog_NetHeader=1 +mtLog_NetHeader0="Network" +Count mtLog_NetIP=1 +mtLog_NetIP0="IP Address" +Count mtLog_NetSubmask=1 +mtLog_NetSubmask0="Submask" +Count mtLog_NetGateway=1 +mtLog_NetGateway0="Gateway" +Count mtLog_NetDNS1=1 +mtLog_NetDNS10="DNS 1" +Count mtLog_NetDNS2=1 +mtLog_NetDNS20="DNS 2" +Count mtLog_NetDHCP=1 +mtLog_NetDHCP0="DHCP" +Count mtLog_CustInfoHeader=1 +mtLog_CustInfoHeader0="Custom Information" +Count mtCallStack_Address=1 +mtCallStack_Address0="Address" +Count mtCallStack_Name=1 +mtCallStack_Name0="Module" +Count mtCallStack_Unit=1 +mtCallStack_Unit0="Unit" +Count mtCallStack_Class=1 +mtCallStack_Class0="Class" +Count mtCallStack_Procedure=1 +mtCallStack_Procedure0="Procedure/Method" +Count mtCallStack_Line=1 +mtCallStack_Line0="Line" +Count mtCallStack_MainThread=1 +mtCallStack_MainThread0="Main" +Count mtCallStack_ExceptionThread=1 +mtCallStack_ExceptionThread0="Exception Thread" +Count mtCallStack_RunningThread=1 +mtCallStack_RunningThread0="Running Thread" +Count mtCallStack_CallingThread=1 +mtCallStack_CallingThread0="Calling Thread" +Count mtCallStack_ThreadID=1 +mtCallStack_ThreadID0="ID" +Count mtCallStack_ThreadPriority=1 +mtCallStack_ThreadPriority0="Priority" +Count mtCallStack_ThreadClass=1 +mtCallStack_ThreadClass0="Class" +Count mtSendDialog_Caption=1 +mtSendDialog_Caption0="Send." +Count mtSendDialog_Message=1 +mtSendDialog_Message0="Message" +Count mtSendDialog_Resolving=1 +mtSendDialog_Resolving0="Resolving DNS..." +Count mtSendDialog_Connecting=1 +mtSendDialog_Connecting0="Connecting with server..." +Count mtSendDialog_Connected=1 +mtSendDialog_Connected0="Connected with server." +Count mtSendDialog_Sending=1 +mtSendDialog_Sending0="Sending message..." +Count mtReproduceDialog_Caption=1 +mtReproduceDialog_Caption0="Request" +Count mtReproduceDialog_Request=1 +mtReproduceDialog_Request0="Please describe the steps to reproduce the error:" +Count mtReproduceDialog_OKButtonCaption=1 +mtReproduceDialog_OKButtonCaption0="%26OK" +Count mtModules_Handle=1 +mtModules_Handle0="Handle" +Count mtModules_Name=1 +mtModules_Name0="Name" +Count mtModules_Description=1 +mtModules_Description0="Description" +Count mtModules_Version=1 +mtModules_Version0="Version" +Count mtModules_Size=1 +mtModules_Size0="Size" +Count mtModules_LastModified=1 +mtModules_LastModified0="Modified" +Count mtModules_Path=1 +mtModules_Path0="Path" +Count mtCPU_Registers=1 +mtCPU_Registers0="Registers" +Count mtCPU_Stack=1 +mtCPU_Stack0="Stack" +Count mtCPU_MemoryDump=1 +mtCPU_MemoryDump0="Memory Dump" +Count mtSend_SuccessMsg=1 +mtSend_SuccessMsg0="The message was sent successfully." +Count mtSend_FailureMsg=1 +mtSend_FailureMsg0="Sorry, sending the message didn't work." + + diff --git a/Modulos/Presupuestos/Cliente/Presupuestos.dpk b/Modulos/Presupuestos/Cliente/Presupuestos.dpk new file mode 100644 index 0000000..38b3ee3 --- /dev/null +++ b/Modulos/Presupuestos/Cliente/Presupuestos.dpk @@ -0,0 +1,61 @@ +package Presupuestos; + +{$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 + rtl, + DocumentosAsociados, + Contactos, + Montajes_Intf, + Almacenes, + vcl, + PngComponentsD7, + PNG_D7, + vclactnband, + vclx, + GUISDK_D7, + dbrtl, + vcldb, + tb2k_d7, + tbx_d7, + JvCoreD7R, + vcljpg, + Jcl, + JclVcl, + JvSystemD7R, + JvPageCompsD7R, + JvStdCtrlsD7R, + dsnap, + adortl, + cxLibraryVCLD7, + dxThemeD7, + Presupuestos_Intf; + +contains + uPluginControllerPresupuestos in 'uPluginControllerPresupuestos.pas' {ModulePresupuestos: TModuleController}, + uEditorPresupuesto in 'uEditorPresupuesto.pas' {fEditorPresupuesto: TCustomEditor}, + uEditorPresupuestos in 'uEditorPresupuestos.pas' {fEditorPresupuestos: TCustomEditor}; + +end. diff --git a/Modulos/Presupuestos/Cliente/Presupuestos.drc b/Modulos/Presupuestos/Cliente/Presupuestos.drc new file mode 100644 index 0000000..a5d5271 --- /dev/null +++ b/Modulos/Presupuestos/Cliente/Presupuestos.drc @@ -0,0 +1,14 @@ +/* VER150 + Generated by the Borland Delphi Pascal Compiler + because -GD or --drc was supplied to the compiler. + + This file contains compiler-generated resources that + were bound to the executable. + If this file is empty, then no compiler-generated + resources were bound to the produced executable. +*/ + +STRINGTABLE +BEGIN +END + diff --git a/Modulos/Presupuestos/Cliente/Presupuestos.res b/Modulos/Presupuestos/Cliente/Presupuestos.res new file mode 100644 index 0000000..ec5f233 Binary files /dev/null and b/Modulos/Presupuestos/Cliente/Presupuestos.res differ diff --git a/Modulos/Presupuestos/Cliente/Presupuestos_Intf.bdsproj b/Modulos/Presupuestos/Cliente/Presupuestos_Intf.bdsproj new file mode 100644 index 0000000..8cda678 --- /dev/null +++ b/Modulos/Presupuestos/Cliente/Presupuestos_Intf.bdsproj @@ -0,0 +1,492 @@ + + + + + + + + + + + + Presupuestos_Intf.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 3 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + Presupuestos de cliente + + + + .\ + ..\..\..\Output\Cliente + .\ + $(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados + vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;CEToolsPkgd7;FR7;FRIBX7;Hydra_Core_D7;Hydra_RO_D7;fqb70;frx7;frxADO7;frxBDE7;frxDB7;frxDBX7;frxe7;frxIBX7;fs7;fsADO7;fsBDE7;fsDB7;fsIBX7;DataAbstract_Core_D7;DataAbstract_IDE_D7 + + + False + + + + + + False + + + True + False + + + + $00000000 + C:\Archivos de programa\Borland\Delphi7\Bin\ + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + diff --git a/Modulos/Presupuestos/Cliente/Presupuestos_Intf.cfg b/Modulos/Presupuestos/Cliente/Presupuestos_Intf.cfg new file mode 100644 index 0000000..34e1eaa --- /dev/null +++ b/Modulos/Presupuestos/Cliente/Presupuestos_Intf.cfg @@ -0,0 +1,45 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O- +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-GD +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N".\" +-LE"..\..\..\Output\Cliente" +-LN".\" +-U"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados" +-O"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados" +-I"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados" +-R"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados" +-Z +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/Modulos/Presupuestos/Cliente/Presupuestos_Intf.dcp b/Modulos/Presupuestos/Cliente/Presupuestos_Intf.dcp new file mode 100644 index 0000000..5f1e078 Binary files /dev/null and b/Modulos/Presupuestos/Cliente/Presupuestos_Intf.dcp differ diff --git a/Modulos/Presupuestos/Cliente/Presupuestos_Intf.dof b/Modulos/Presupuestos/Cliente/Presupuestos_Intf.dof new file mode 100644 index 0000000..cce71db --- /dev/null +++ b/Modulos/Presupuestos/Cliente/Presupuestos_Intf.dof @@ -0,0 +1,201 @@ +[FileVersion] +Version=7.0 +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=0 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=1 +SymbolLibrary=1 +SymbolPlatform=1 +UnitLibrary=1 +UnitPlatform=1 +UnitDeprecated=1 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 +[Linker] +MapFile=3 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=Presupuestos de cliente +[Directories] +OutputDir= +UnitOutputDir=.\ +PackageDLLOutputDir=..\..\..\Output\Cliente +PackageDCPOutputDir=.\ +SearchPath=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados +Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;CEToolsPkgd7;FR7;FRIBX7;Hydra_Core_D7;Hydra_RO_D7;fqb70;frx7;frxADO7;frxBDE7;frxDB7;frxDBX7;frxe7;frxIBX7;fs7;fsADO7;fsBDE7;fsDB7;fsIBX7;DataAbstract_Core_D7;DataAbstract_IDE_D7 +Conditionals= +DebugSourceDirs= +UsePackages=0 +[Parameters] +RunParams= +HostApplication= +Launcher= +UseLauncher=0 +DebugCWD= +[Language] +ActiveLang= +ProjectLang= +RootDir=C:\Archivos de programa\Borland\Delphi7\Bin\ +[Version Info] +IncludeVerInfo=1 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=3082 +CodePage=1252 +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= +[Excluded Packages] +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\cxTreeListVCLD7.bpl=ExpressQuantumTreeList 4 (VCL Edition) by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxThemeD7.bpl=Express XP Theme Manager by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\cxLibraryVCLD7.bpl=Express Cross Platform Library (VCL Edition) by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\cxExportVCLD7.bpl=Express Cross Platform Export Library (VCL Edition) by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\cxEditorsVCLD7.bpl=ExpressEditors Library 5 (VCL Edition) by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\cxDataD7.bpl=ExpressDataController by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\cxExtEditorsVCLD7.bpl=ExpressExtendedEditors Library 5 (VCL Edition) by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\cxGridVCLD7.bpl=ExpressQuantumGrid 5 (VCL Edition) by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\cxPageControlVCLD7.bpl=Express Cross Platform PageControl (VCL Edition) by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\cxSchedulerVCLD7.bpl=ExpressScheduler 2 (VCL Edition) by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxsbD7.bpl=ExpressSideBar by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxComnD7.bpl=ExpressCommonLibrary by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxBarD7.bpl=ExpressBars by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxBarDBNavD7.bpl=ExpressBars DBNavigator by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxBarExtDBItemsD7.bpl=ExpressBars extended DB items by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxBarExtItemsD7.bpl=ExpressBars extended items by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxDockingD7.bpl=ExpressDocking Library by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxLayoutControlD7.bpl=ExpressLayout Control by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxNavBarD7.bpl=ExpressNavBar by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxGDIPlusD7.bpl=ExpressGDI+ Library by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxPSCoreD7.bpl=ExpressPrinting System by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\cxVerticalGridVCLD7.bpl=ExpressVerticalGrid (VCL Edition) by Developer Express Inc. +c:\archivos de programa\borland\delphi7\Projects\Bpl\RodaxFrameD7.bpl=Frames Acana (D7) +C:\WINDOWS\system32\dclShX_Namespace_V3D7.bpl=(untitled) +C:\WINDOWS\system32\vclShX_Namespace_v3D7.bpl=(untitled) +[HistoryLists\hlDebugSourcePath] +Count=1 +Item0=D:\Proyectos\Componentes\GUISDK\Sources\;D:\Proyectos\Componentes\PluginSDK\Source\;D:\Proyectos\FactuGES (Estudio)\Codigo\Modulos\Contactos\Cliente;D:\Proyectos\FactuGES (Estudio)\Codigo\Modulos\Contactos\Reglas +[HistoryLists\hlUnitAliases] +Count=1 +Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +[HistoryLists\hlSearchPath] +Count=16 +Item0=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente;..\..\Asientos\Cliente;..\..\Cuentas\Cliente +Item1=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente;..\..\Asientos\Cliente +Item2=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente +Item3=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente +Item4=..\Modulos\Presupuestos\Reglas;..\Modulos\Contactos\Reglas;..\Base;..\Configuracion;..\Usuarios;..\Modulos\Albaranes de cliente\Reglas +Item5=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\Base;..\Configuracion;..\Usuarios;..\Modulos\Intervalos;..\Modulos\Documentos asociados;..\Modulos\Contactos\Cliente;..\Modulos\Contactos\Reglas;..\Modulos\Presupuestos\Cliente;..\Modulos\Presupuestos\Reglas;..\Modulos\Albaranes de cliente\Cliente;..\Modulos\Albaranes de cliente\Reglas;..\Modulos\Facturas de cliente\Cliente;..\Modulos\Facturas de cliente\Reglas;..\Modulos\Pedidos a proveedor\Cliente;..\Modulos\Pedidos a proveedor\Reglas;..\Modulos\Facturas de proveedor\Cliente;..\Modulos\Facturas de proveedor\Reglas;..\Modulos\Montajes\Reglas;..\Modulos\Montajes\Cliente;..\Modulos\Articulos\Cliente;..\Modulos\Articulos\Reglas;..\Modulos\Almacenes\Reglas;..\Modulos\Almacenes\Cliente;..\Modulos\Pagos\Reglas;..\Modulos\Pagos\Cliente;..\Modulos\Cuentas\Reglas;..\Modulos\Cuentas\Cliente;..\Modulos\Asientos\Reglas;..\Modulos\Asientos\Cliente;..\Modulos\Calendarios\Cliente;..\Modulos\Calendarios\Reglas +Item6=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente;..\..\Documentos asociados;..\..\Contactos\Cliente;..\..\Almacenes\Cliente +Item7=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados +Item8=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente;..\..\Documentos asociados;..\..\Contactos\Cliente +Item9=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente;..\..\Documentos asociados +Item10=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente +Item11=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados;..\..\Montajes\Cliente;..\..\Almacenes\Cliente +Item12=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados;..\..\Montajes\Cliente +Item13=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\Servidor +Item14=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\base;..\Modulos\Calendarios\Cliente;..\Modulos\Calendarios\Reglas +Item15=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\Base;..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios +[HistoryLists\hlUnitOutputDirectory] +Count=1 +Item0=.\ +[HistoryLists\hlOutputDirectorry] +Count=2 +Item0=..\Output\Servidor +Item1=..\Output\Cliente +[HistoryLists\hlBPLOutput] +Count=3 +Item0=..\..\..\Output\Cliente +Item1=..\Output\Cliente +Item2=..\..\Output\Cliente +[HistoryLists\hlDCPOutput] +Count=1 +Item0=.\ diff --git a/Modulos/Presupuestos/Cliente/Presupuestos_Intf.dpk b/Modulos/Presupuestos/Cliente/Presupuestos_Intf.dpk new file mode 100644 index 0000000..3d3591b --- /dev/null +++ b/Modulos/Presupuestos/Cliente/Presupuestos_Intf.dpk @@ -0,0 +1,82 @@ +package Presupuestos_Intf; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION OFF} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'Presupuestos de cliente'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + vcldb, + PluginSDK_D7R, + GUISDK_D7, + PngComponentsD7, + PNG_D7, + vclactnband, + vclx, + BaseD7, + Contactos, + JvCtrlsD7R, + dbrtl, + dsnap, + adortl, + cxLibraryVCLD7, + dxThemeD7, + cxEditorsVCLD7, + cxDataD7, + Usuarios, + vcljpg, + cxExtEditorsVCLD7, + dclact, + dclstd, + designide, + DocumentosAsociados, + frx7, + fs7, + tee, + fqb70, + bdertl, + frxe7, + tb2k_d7, + tbx_d7, + JvCoreD7R, + Jcl, + JclVcl, + JvSystemD7R, + JvPageCompsD7R, + JvStdCtrlsD7R; + +contains + uDataModulePresupuestos in 'uDataModulePresupuestos.pas' {dmPresupuestos: TDAClientDataModule}, + uViewPresupuestos in 'uViewPresupuestos.pas' {frViewPresupuestos: TCustomView}, + schPresupuestosClient_Intf in '..\Reglas\schPresupuestosClient_Intf.pas', + uViewPresupuesto in 'uViewPresupuesto.pas' {frViewPresupuesto: TFrame}, + uViewSituacionPresupuesto in 'uViewSituacionPresupuesto.pas' {frViewSituacionPresupuesto: TFrame}, + uViewDatosPresupuesto in 'uViewDatosPresupuesto.pas' {frViewDatosPresupuesto: TFrame}, + uViewDetallesPresupuesto in 'uViewDetallesPresupuesto.pas' {frViewDetallesPresupuesto: TFrame}, + uBizPresupuestosCliente in '..\Reglas\uBizPresupuestosCliente.pas', + uViewPresupuestoRelacionado in 'uViewPresupuestoRelacionado.pas' {frViewPresupuestoRelacionado: TFrame}, + uEditorPreviewPresupuesto in 'uEditorPreviewPresupuesto.pas' {fEditorPreviewPresupuesto: TCustomEditor}; + +end. diff --git a/Modulos/Presupuestos/Cliente/Presupuestos_Intf.drc b/Modulos/Presupuestos/Cliente/Presupuestos_Intf.drc new file mode 100644 index 0000000..a5d5271 --- /dev/null +++ b/Modulos/Presupuestos/Cliente/Presupuestos_Intf.drc @@ -0,0 +1,14 @@ +/* VER150 + Generated by the Borland Delphi Pascal Compiler + because -GD or --drc was supplied to the compiler. + + This file contains compiler-generated resources that + were bound to the executable. + If this file is empty, then no compiler-generated + resources were bound to the produced executable. +*/ + +STRINGTABLE +BEGIN +END + diff --git a/Modulos/Presupuestos/Cliente/Presupuestos_Intf.res b/Modulos/Presupuestos/Cliente/Presupuestos_Intf.res new file mode 100644 index 0000000..ec5f233 Binary files /dev/null and b/Modulos/Presupuestos/Cliente/Presupuestos_Intf.res differ diff --git a/Modulos/Presupuestos/Cliente/uDataModulePresupuestos.ddp b/Modulos/Presupuestos/Cliente/uDataModulePresupuestos.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Presupuestos/Cliente/uDataModulePresupuestos.ddp differ diff --git a/Modulos/Presupuestos/Cliente/uDataModulePresupuestos.dfm b/Modulos/Presupuestos/Cliente/uDataModulePresupuestos.dfm new file mode 100644 index 0000000..e77399b --- /dev/null +++ b/Modulos/Presupuestos/Cliente/uDataModulePresupuestos.dfm @@ -0,0 +1,705 @@ +object dmPresupuestos: TdmPresupuestos + OldCreateOrder = True + OnCreate = DAClientDataModuleCreate + RemoteService = RORemoteService + Adapter = DABinAdapter + SchemaCall.MethodName = 'GetSchemaAsXML' + SchemaCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtString + end> + Left = 628 + Top = 433 + Height = 326 + Width = 367 + object RORemoteService: TRORemoteService + ServiceName = 'srvPresupuestos' + Message = dmBase.ROMessage + Channel = dmBase.ROChannel + Left = 32 + Top = 16 + end + object DABinAdapter: TDABINAdapter + Left = 32 + Top = 80 + end + object tbl_DetallesPresupuestos: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'CODIGOPRESUPUESTO' + DataType = datInteger + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'C'#243'd. presupuesto' + Alignment = taLeftJustify + DictionaryEntry = 'CODIGOPRESUPUESTO' + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NUMCONCEPTO' + DataType = datInteger + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'Num. concepto' + Alignment = taLeftJustify + DictionaryEntry = 'NUMCONCEPTO' + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'DESCRIPCION' + DataType = datString + Size = 2000 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Descripci'#243'n' + Alignment = taLeftJustify + DictionaryEntry = 'DESCRIPCIONCONCEPTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CANTIDAD' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Cantidad' + Alignment = taLeftJustify + DictionaryEntry = 'CANTIDAD' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTEUNIDAD' + DataType = datCurrency + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Importe unitario' + Alignment = taLeftJustify + DictionaryEntry = 'IMPORTEUNIDAD' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTETOTAL' + DataType = datCurrency + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Importe total' + Alignment = taLeftJustify + DictionaryEntry = 'IMPORTETOTAL' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'TIPO' + DataType = datString + Size = 1 + Description = 'Cap'#237'tulo, etc' + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Tipo' + Alignment = taLeftJustify + DictionaryEntry = 'TIPODETALLESPRESUPUESTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'POSICION' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Posici'#243'n' + Alignment = taLeftJustify + DictionaryEntry = 'POSICIONCONCEPTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'VISIBLE' + DataType = datString + Size = 1 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Visible' + Alignment = taLeftJustify + DictionaryEntry = 'VISIBLE' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PUNTOS' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Puntos' + Alignment = taLeftJustify + DictionaryEntry = 'PUNTOS' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTEPUNTOS' + DataType = datCurrency + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Importe puntos' + Alignment = taLeftJustify + DictionaryEntry = 'IMPORTEPUNTOS' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + Params = < + item + Name = 'CODIGOPRESUPUESTO' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end> + MasterMappingMode = mmParams + MasterParamsMappings.Strings = ( + 'CODIGOPRESUPUESTO=CODIGO') + StreamingOptions = [soDisableEventsWhileStreaming] + SchemaCall.MethodName = 'GetDatasetSchema' + SchemaCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBinary + end + item + Name = 'aDatasetName' + ParamType = fIn + DataType = rtString + Value = 'DetallesPresupuestos' + end> + DataRequestCall.MethodName = 'GetDatasetDataEx' + DataRequestCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBinary + end + item + Name = 'DatasetName' + ParamType = fIn + DataType = rtString + Value = 'DetallesPresupuestos' + end + item + Name = 'Params' + ParamType = fIn + DataType = rtUserDefined + UserClassName = 'TDADatasetParamArray' + end + item + Name = 'UserFilter' + ParamType = fIn + DataType = rtString + Value = '' + end + item + Name = 'IncludeSchema' + ParamType = fIn + DataType = rtBoolean + Value = False + end + item + Name = 'MaxRecords' + ParamType = fIn + DataType = rtInteger + Value = -1 + end> + DataUpdateCall.MethodName = 'UpdateData' + DataUpdateCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBinary + end + item + Name = 'Delta' + ParamType = fIn + DataType = rtBinary + end> + ScriptCall.MethodName = 'GetDatasetScripts' + ScriptCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtString + Value = '' + end + item + Name = 'DatasetNames' + ParamType = fIn + DataType = rtString + Value = 'DetallesPresupuestos' + end> + ReadOnly = False + RemoteService = RORemoteService + Adapter = DABinAdapter + MasterSource = ds_Presupuestos + MasterFields = 'CODIGO' + DetailFields = 'CODIGOPRESUPUESTO' + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'DetallesPresupuestos' + IndexDefs = <> + Left = 176 + Top = 112 + end + object ds_DetallesPresupuestos: TDADataSource + DataTable = tbl_DetallesPresupuestos + Left = 296 + Top = 112 + end + object tbl_Presupuestos: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'CODIGOEMPRESA' + DataType = datInteger + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'C'#243'd. empresa' + Alignment = taLeftJustify + DictionaryEntry = 'CODIGOEMPRESA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGO' + DataType = datInteger + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'C'#243'd. presupuesto' + Alignment = taLeftJustify + DictionaryEntry = 'CODIGOPRESUPUESTO' + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHAALTA' + DataType = datDateTime + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'Fecha de alta' + Alignment = taLeftJustify + DictionaryEntry = 'FECHAALTA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'USUARIO' + DataType = datString + Size = 100 + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'Usuario de alta' + Alignment = taLeftJustify + DictionaryEntry = 'USUARIO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOCONTACTO' + DataType = datInteger + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'C'#243'd. contacto' + Alignment = taLeftJustify + DictionaryEntry = 'CODIGOCONTACTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NOMBRE' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + ServerAutoRefresh = True + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'REFERENCIA' + DataType = datString + Size = 20 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Referencia' + Alignment = taLeftJustify + DictionaryEntry = 'REFERENCIA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'TIPO' + DataType = datString + Size = 10 + Description = 'Cocina, ba'#241'o, etc' + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'Tipo' + Alignment = taLeftJustify + DictionaryEntry = 'TIPOPRESUPUESTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHAPRESUPUESTO' + DataType = datDateTime + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'Fecha' + Alignment = taLeftJustify + DictionaryEntry = 'FECHAPRESUPUESTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'VIGENCIAPRESUPUESTO' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Vigencia' + Alignment = taLeftJustify + DictionaryEntry = 'VIGENCIAPRESUPUESTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'SITUACION' + DataType = datString + Size = 30 + Description = 'Pendiente, aceptado o rechazado' + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'Situaci'#243'n' + Alignment = taLeftJustify + DictionaryEntry = 'SITUACIONPRESUPUESTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHADECISION' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Fecha decisi'#243'n' + Alignment = taLeftJustify + DictionaryEntry = 'FECHADECISION' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'BASEIMPONIBLE' + DataType = datCurrency + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Base imponible' + Alignment = taLeftJustify + DictionaryEntry = 'BASEIMPONIBLE' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'DESCUENTO' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Descuento' + Alignment = taLeftJustify + DictionaryEntry = 'DESCUENTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTEDESCUENTO' + DataType = datCurrency + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Importe dto.' + Alignment = taLeftJustify + DictionaryEntry = 'IMPORTEDESCUENTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IVA' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + DictionaryEntry = 'IVA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTEIVA' + DataType = datCurrency + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Importe IVA' + Alignment = taLeftJustify + DictionaryEntry = 'IMPORTEIVA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTETOTAL' + DataType = datCurrency + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Importe total' + Alignment = taLeftJustify + DictionaryEntry = 'IMPORTETOTAL' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'OBSERVACIONES' + DataType = datMemo + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Observaciones' + Alignment = taLeftJustify + DictionaryEntry = 'OBSERVACIONES' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PLAZOENTREGA' + DataType = datMemo + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Plazo de entrega' + Alignment = taLeftJustify + DictionaryEntry = 'PLAZOENTREGA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FORMAPAGO' + DataType = datMemo + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Forma de pago' + Alignment = taLeftJustify + DictionaryEntry = 'FORMAPAGO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOALBARAN' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + ServerAutoRefresh = True + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ALBARAN' + DataType = datString + Size = 20 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'OPCION' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + Params = <> + MasterMappingMode = mmDataRequest + StreamingOptions = [soDisableEventsWhileStreaming] + SchemaCall.MethodName = 'GetDatasetSchema' + SchemaCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBinary + end + item + Name = 'aDatasetName' + ParamType = fIn + DataType = rtString + Value = 'Presupuestos' + end> + DataRequestCall.MethodName = 'GetDatasetDataEx' + DataRequestCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBinary + end + item + Name = 'DatasetName' + ParamType = fIn + DataType = rtString + Value = 'Presupuestos' + end + item + Name = 'Params' + ParamType = fIn + DataType = rtUserDefined + UserClassName = 'TDADatasetParamArray' + end + item + Name = 'UserFilter' + ParamType = fIn + DataType = rtString + Value = '' + end + item + Name = 'IncludeSchema' + ParamType = fIn + DataType = rtBoolean + Value = False + end + item + Name = 'MaxRecords' + ParamType = fIn + DataType = rtInteger + Value = -1 + end> + DataUpdateCall.MethodName = 'UpdateData' + DataUpdateCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBinary + end + item + Name = 'Delta' + ParamType = fIn + DataType = rtBinary + end> + ScriptCall.MethodName = 'GetDatasetScripts' + ScriptCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtString + Value = '' + end + item + Name = 'DatasetNames' + ParamType = fIn + DataType = rtString + Value = 'Presupuestos' + end> + ReadOnly = False + RemoteService = RORemoteService + Adapter = DABinAdapter + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'Presupuestos' + IndexDefs = <> + Left = 176 + Top = 40 + end + object ds_Presupuestos: TDADataSource + DataTable = tbl_Presupuestos + Left = 296 + Top = 40 + end +end diff --git a/Modulos/Presupuestos/Cliente/uDataModulePresupuestos.pas b/Modulos/Presupuestos/Cliente/uDataModulePresupuestos.pas new file mode 100644 index 0000000..5514eff --- /dev/null +++ b/Modulos/Presupuestos/Cliente/uDataModulePresupuestos.pas @@ -0,0 +1,314 @@ +{ +=============================================================================== + Copyright (©) 2006. Rodax Software. +=============================================================================== + Los contenidos de este fichero son propiedad de Rodax Software titular del + copyright. Este fichero sólo podrá ser copiado, distribuido y utilizado, + en su totalidad o en parte, con el permiso escrito de Rodax Software, o de + acuerdo con los términos y condiciones establecidas en el acuerdo/contrato + bajo el que se suministra. + ----------------------------------------------------------------------------- + Web: www.rodax-software.com +=============================================================================== + Fecha primera versión: 01-01-2006 + Versión actual: 1.0.1 + Fecha versión actual: 26-09-2006 +=============================================================================== + Modificaciones: + + Fecha Comentarios + --------------------------------------------------------------------------- + 26-09-2006 Se ha modificado la lógica al seleccionar un presupuesto para + generar un albarán, ahora un albarán se podrá generar a partir + de un presupuesto aunque no tenga asignado ningún montaje +=============================================================================== +} + + + +unit uDataModulePresupuestos; + +interface + +uses {vcl:} SysUtils, Classes, DB, DBClient, + {RemObjects:} uDAClientDataModule, uDADataTable, uDABINAdapter, + uROServiceComponent, uRORemoteService, uROClient, uROBinMessage, + uROWinInetHttpChannel, uDAScriptingProvider, uDACDSDataTable, + uBizPresupuestosCliente, FactuGES_Intf, + + frxExportImage, frxExportPDF, frxDCtrl, + frxClass, frxDMPExport, frxGradient, frxChBox, frxCross, frxRich, + frxChart, frxOLE, frxBarcode; + +type + TdmPresupuestos = class(TDAClientDataModule) + RORemoteService: TRORemoteService; + DABinAdapter: TDABINAdapter; + tbl_DetallesPresupuestos: TDACDSDataTable; + ds_DetallesPresupuestos: TDADataSource; + tbl_Presupuestos: TDACDSDataTable; + ds_Presupuestos: TDADataSource; + procedure DAClientDataModuleCreate(Sender: TObject); + public + function PuedoEliminarPresupuesto (CodigoPresupuesto : Integer) : Boolean; + function GetReferencia (CodigoPresupuesto : Integer) : String; + function GetNextAutoinc : integer; + function GetPresupuestos: IBizPresupuestos; + function GetPresupuesto(CodigoPresupuesto : Integer) : IBizPresupuestos; + function GetPresupuestosSinAlbaran: IBizPresupuestos; + function GetPresupuestosSinMontaje: IBizPresupuestos; + function SetReferencia (APresupuesto: IBizPresupuestos; Referencia: Variant): Boolean; + procedure Preview(Const Codigo: Integer); + procedure Refrescar(lReport: TfrxReport; Const Codigo: Integer; const TamLetra: Integer); + procedure Print(Const Codigo: Integer); + function GetItemsSeleccionados(ASource : IBizPresupuestos): IBizPresupuestos; + end; + +var + dmPresupuestos: TdmPresupuestos; + +implementation + +{$R *.DFM} + +uses + Forms, Controls, uDataTableUtils, uBizContacto, Dialogs, Variants, + uDataModuleContactos, uDataModuleBase, schPresupuestosClient_Intf, + uDAInterfaces, uEditorPreview, uEditorPreviewPresupuesto, uROTypes, + uDBSelectionList; + +function TdmPresupuestos.GetPresupuestos: IBizPresupuestos; +var + dtPresupuestos: TDACDSDataTable; + dtDetalles: TDACDSDataTable; + ACursor: TCursor; +begin + ACursor := Screen.Cursor; + Screen.Cursor := crHourGlass; + try + dtPresupuestos := TDACDSDataTable.Create(NIL); + CloneDataTable(tbl_Presupuestos, dtPresupuestos); + with dtPresupuestos do + begin + BusinessRulesID := BIZ_PRESUPUESTOCLIENTE; + FieldByName(fld_PresupuestosDESCUENTO).BusinessRulesID := 'Client.Field.Descuento'; + FieldByName(fld_PresupuestosIVA).BusinessRulesID := 'Client.Field.IVA'; + end; + + dtDetalles := TDACDSDataTable.Create(NIL); + CloneDataTable(tbl_DetallesPresupuestos, dtDetalles); + with dtDetalles do + begin + BusinessRulesID := BIZ_DETALLESPRESUPUESTOCLIENTE; + DetailOptions := DetailOptions - [dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates]; + + FieldByName(fld_DetallesPresupuestosCANTIDAD).BusinessRulesID := 'Client.Field.Cantidad'; + FieldByName(fld_DetallesPresupuestosIMPORTEUNIDAD).BusinessRulesID := 'Client.Field.ImporteUnidad'; + FieldByName(fld_DetallesPresupuestosTIPO).BusinessRulesID := 'Client.Field.TipoDetalle'; + + FieldByName(fld_DetallesPresupuestosPUNTOS).BusinessRulesID := 'Client.Field.Puntos'; + FieldByName(fld_DetallesPresupuestosIMPORTEPUNTOS).BusinessRulesID := 'Client.Field.ImportePuntos'; + + FieldByName(fld_DetallesPresupuestosVISIBLE).BusinessRulesID := 'Client.Field.Visible'; + end; + (dtPresupuestos as IBizPresupuestos).Detalles := (dtDetalles as IBizDetallesPresupuesto); + + Result := (dtPresupuestos as IBizPresupuestos); + finally + Screen.Cursor := ACursor; + end; +end; + +procedure TdmPresupuestos.DAClientDataModuleCreate(Sender: TObject); +begin + RORemoteService.Channel := dmBase.Channel; + RORemoteService.Message := dmBase.Message; + Adapter := dmBase.Adapter; +end; + +function TdmPresupuestos.GetPresupuestosSinAlbaran: IBizPresupuestos; +var + dsPresupuestos : IBizPresupuestos; +begin + dsPresupuestos := GetPresupuestos; + with dsPresupuestos.DataTable.Where do + begin + if not Empty then + AddOperator(opAND); + Clear; + OpenBraket; + AddText(fld_PresupuestosCODIGOALBARAN + ' is null', False); + CloseBraket; + AddOperator(opAND); + OpenBraket; + AddText(fld_PresupuestosSITUACION + '=' + '''' + SITUACION_ACEPTADO + '''', False); + CloseBraket; + +// 26-09-2006 +// +// AddOperator(opAND); +// OpenBraket; +// AddText('PRESUPUESTOS.' + fld_PresupuestosREFERENCIA + ' is not NULL', False); +// CloseBraket; + end; + Result := dsPresupuestos; +end; + +function TdmPresupuestos.GetNextAutoinc: integer; +begin + Result := (RORemoteService as IsrvPresupuestos).GetNextAutoinc; +end; + +procedure TdmPresupuestos.Preview(Const Codigo: Integer); +var + AStream: TROBinaryMemoryStream; + AEditorPreviewPresupuesto : TfEditorPreviewPresupuesto; +begin + AEditorPreviewPresupuesto := TfEditorPreviewPresupuesto.Create(Application); + try + AStream := (RORemoteService as IsrvPresupuestos).GenerateReport(Codigo, 0); + AEditorPreviewPresupuesto.Report.PreviewPages.LoadFromStream(AStream); + AEditorPreviewPresupuesto.Codigo := Codigo; + AEditorPreviewPresupuesto.ShowModal; + finally + AEditorPreviewPresupuesto.Release; + AStream.Free; + end; +end; + +function TdmPresupuestos.GetReferencia(CodigoPresupuesto: Integer): String; +var + APresupuesto : IBizPresupuestos; +begin + APresupuesto := GetPresupuesto(CodigoPresupuesto); + APresupuesto.DataTable.Active := True; + Result := APresupuesto.REFERENCIA; +end; + +function TdmPresupuestos.GetPresupuesto( + CodigoPresupuesto: Integer): IBizPresupuestos; +var + APresupuesto : IBizPresupuestos; +begin + APresupuesto := GetPresupuestos; + with APresupuesto.DataTable.Where do + AddText(fld_PresupuestosCODIGO + ' = ' + IntToStr(CodigoPresupuesto)); + Result := APresupuesto; +end; + +function TdmPresupuestos.PuedoEliminarPresupuesto( + CodigoPresupuesto: Integer): Boolean; +begin + Result := (RORemoteService as IsrvPresupuestos).PuedoEliminarPresupuesto(CodigoPresupuesto); +end; + +procedure TdmPresupuestos.Print(const Codigo: Integer); +var + AStream: TROBinaryMemoryStream; + AEditorPreview : TfEditorPreview; +begin + AEditorPreview := TfEditorPreview.Create(Application); + try + AStream := (RORemoteService as IsrvPresupuestos).GenerateReport(Codigo, 0); + AEditorPreview.Report.PreviewPages.LoadFromStream(AStream); + AEditorPreview.Print; + finally + AEditorPreview.Release; + AStream.Free; + end; +end; + +function TdmPresupuestos.GetPresupuestosSinMontaje: IBizPresupuestos; +var + dsPresupuestos : IBizPresupuestos; +begin + dsPresupuestos := GetPresupuestos; + with dsPresupuestos.DataTable.Where do + begin + if not Empty then + AddOperator(opAND); + Clear; + OpenBraket; + AddText(fld_PresupuestosCODIGO + ' not in (select CODIGOPRESUPUESTO from MONTAJES where CODIGOEMPRESA = ' + IntToStr(dmBase.CodigoEmpresa) + ' and CODIGOPRESUPUESTO is not null)', False); + CloseBraket; + AddOperator(opAND); + OpenBraket; + AddText(fld_PresupuestosSITUACION + '=' + '''' + SITUACION_ACEPTADO + '''', False); + CloseBraket; + + + { AddOperator(opAND); + OpenBraket; + AddText(fld_PresupuestosREFERENCIA + ' is not NULL', False); + CloseBraket;} + end; + Result := dsPresupuestos; +end; + + +function TdmPresupuestos.GetItemsSeleccionados( + ASource: IBizPresupuestos): IBizPresupuestos; +var + aObj : ISelectedRowList; + dtPresupuesto : IBizPresupuestos; + i : integer; +begin + if Supports(ASource, ISelectedRowList, aObj) then + begin + if (aObj.SelectedRows.Count = 1) then + begin + ASource.DataTable.GotoBookmark(aObj.SelectedRows[0]); + Result := GetPresupuesto(ASource.CODIGO); + Exit; + end + else + dtPresupuesto := GetPresupuestos; + end + else + raise Exception.Create('Interface no soportada (GetItemsSeleccionados)'); + + if dtPresupuesto.DataTable.Active then + dtPresupuesto.DataTable.Active := False; + with dtPresupuesto.DataTable.Where do + begin + Clear; + for i := 0 to aObj.SelectedRows.Count - 1 do + begin + ASource.DataTable.GotoBookmark(aObj.SelectedRows[i]); + if i > 0 then + AddOperator(opAND); + AddText(fld_PresupuestosCODIGO + ' = ' + IntToStr(ASource.CODIGO)); + end; + end; + Result := dtPresupuesto; +end; + +function TdmPresupuestos.SetReferencia(APresupuesto: IBizPresupuestos; Referencia: Variant): Boolean; +begin + Result:= False; + try + if not (APresupuesto.DataTable.State in dsEditModes) then + APresupuesto.DataTable.Edit; + APresupuesto.DataTable.FieldByName(fld_PresupuestosREFERENCIA).AsVariant := Referencia; + APresupuesto.Post; + Result:= True; + except + end; +end; + +procedure TdmPresupuestos.Refrescar(lReport: TfrxReport; Const Codigo: Integer; const TamLetra: Integer); +var + AStream: TROBinaryMemoryStream; +begin + AStream := (RORemoteService as IsrvPresupuestos).GenerateReport(Codigo, TamLetra); + lReport.PreviewPages.LoadFromStream(AStream); + lReport.ShowPreparedReport; +end; + +initialization + dmPresupuestos := TdmPresupuestos.Create(nil); + +finalization + FreeAndNil(dmPresupuestos); + +end. diff --git a/Modulos/Presupuestos/Cliente/uEditorPresupuesto.ddp b/Modulos/Presupuestos/Cliente/uEditorPresupuesto.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Presupuestos/Cliente/uEditorPresupuesto.ddp differ diff --git a/Modulos/Presupuestos/Cliente/uEditorPresupuesto.dfm b/Modulos/Presupuestos/Cliente/uEditorPresupuesto.dfm new file mode 100644 index 0000000..f1e2b60 --- /dev/null +++ b/Modulos/Presupuestos/Cliente/uEditorPresupuesto.dfm @@ -0,0 +1,244 @@ +inherited fEditorPresupuesto: TfEditorPresupuesto + Left = 344 + Top = 76 + Width = 772 + Height = 746 + Caption = 'Nuevo presupuesto de cliente' + Constraints.MinWidth = 765 + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + Width = 764 + Caption = 'Nuevo presupuesto de cliente' + inherited Image1: TImage + Left = 737 + Picture.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001800 + 0000180806000000E0773DF80000000970485973000017120000171201679FD2 + 520000000467414D410000AA11B57D14DC000001CC4944415478DA63FCFFFF3F + 032D0123B2058B361EA79A6D71FE968C582D004A906CD8DFBFFF80F83F980601 + 0BDF6C868B7B66E1B6C0752FAA25BB9D8FE3341C59ED5A8B030CF356EF6198BF + 64237E0B4871B9C7016B0659651686F9DB8E30BC8BFEC6B070FD3EC21660F301 + BA18086CB53DC2E07DD88661CFCD1360FEEB882F0C4B361DA0CC07FFFF01C31A + 88FF005D0F62FFFE070CFF3FFFC0BEF9F3EF2FC38A2D8749F7013100E48B4741 + EF18D6EE38469C05306F9302EEFBBF61D8B0FB047116E04B39D80048CF4CD5CD + 0C9BF69D24DE025C4105B31C260F533B4D7913C3D603A768E783890A1B18761D + 3E433B1FF4C9AC63D87BFC1CED7CD02DB986E1C0A90BF82D88F63107E74E727C + D02EBE8AE1C8994BF82D88F03403E74E727CD024BC9CE1E485ABF82D08753361 + F03B66479605F5024B19CE5CBE8EDF8200172386E0130E780D0359BEE4CF5C38 + 3F8625196C410DEF6286F3D76EE2B7C0D7C1005EAE40CAF97FE0B2072C062CF3 + 73EFFB63C40F8C5FC9BD88E1D28D5BF82DF0B2D5C36938882E78148835F888B6 + C0CD5A1BA7E1A012B4E46930CEA023CA0247730DB061FFFE428AE5DF7F11C5F1 + BFFF508BFEFD437104322068819D891AB844A404E0B5A077F27C8A0C87019805 + 00F0E629EF34B079A30000000049454E44AE426082} + end + end + inherited TBXDock: TTBXDock + Width = 764 + inherited tbxMain: TTBXToolbar + inherited TBXItem2: TTBXItem + Visible = False + end + inherited TBXSeparatorItem1: TTBXSeparatorItem + Visible = False + end + inherited TBXItem5: TTBXItem + Visible = False + end + end + inherited tbxMenu: TTBXToolbar + inherited TBXSubmenuItem4: TTBXSubmenuItem + inherited TBXItem8: TTBXItem + Visible = False + end + inherited TBXSeparatorItem5: TTBXSeparatorItem + Visible = False + end + inherited TBXItem10: TTBXItem + Visible = False + end + end + end + end + inherited pgPaginas: TPageControl + Width = 764 + Height = 494 + TabOrder = 1 + inherited pagGeneral: TTabSheet + inline frViewPresupuesto1: TfrViewPresupuesto + Left = 0 + Top = 0 + Width = 756 + Height = 466 + Align = alClient + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 0 + ReadOnly = False + inherited frViewDatosPresupuesto1: TfrViewDatosPresupuesto + inherited Bevel1: TBevel + Width = 200 + end + inherited edtFechaPresupuesto: TcxDBDateEdit + Style.IsFontAssigned = True + Width = 240 + end + inherited edtVigencia: TcxDBDateEdit + Width = 240 + end + inherited eReferencia: TcxDBTextEdit + Width = 240 + end + inherited cbTipoPresupuesto: TcxDBComboBox + Style.IsFontAssigned = True + Width = 240 + end + inherited eOpcion: TcxDBTextEdit + Width = 240 + end + end + inherited frViewPlazoEntrega1: TfrViewPlazoEntrega + Constraints.MinWidth = 0 + end + inherited frViewObservaciones1: TfrViewObservaciones + Constraints.MinWidth = 0 + end + inherited frViewFormaPago1: TfrViewFormaPago + Constraints.MinWidth = 0 + end + inherited frViewSituacionPresupuesto1: TfrViewSituacionPresupuesto + inherited Bevel2: TBevel + Width = 276 + end + end + inherited frViewClientePresupuesto1: TfrViewDatosYSeleccionContacto + inherited Bevel1: TBevel + Width = 313 + end + inherited ToolBar1: TToolBar + Width = 369 + end + inherited edtlNombre: TcxDBTextEdit + Properties.OnChange = frViewClientePresupuesto1edtlNombrePropertiesChange + end + inherited ToolBar2: TToolBar + Width = 182 + end + end + end + end + object pagContenido: TTabSheet + Caption = 'Contenido' + ImageIndex = 1 + inline frViewDetallesPresupuesto1: TfrViewDetallesPresupuesto + Left = 0 + Top = 0 + Width = 756 + Height = 466 + Align = alClient + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 0 + ReadOnly = False + inherited cxGrid: TcxGrid + Width = 756 + Height = 444 + inherited cxGridView: TcxGridDBTableView + DataController.Summary.FooterSummaryItems = < + item + Format = ',0.00 '#8364';-,0.00 '#8364 + Kind = skSum + end + item + Format = '0 Conceptos' + Kind = skCount + Column = frViewDetallesPresupuesto1.cxGridViewDESCRIPCION + end> + end + end + inherited ToolBar1: TToolBar + Width = 756 + inherited ToolButton4: TToolButton + Left = 323 + end + inherited ToolButton5: TToolButton + Left = 331 + end + inherited ToolButton6: TToolButton + Left = 436 + end + end + end + end + object pagPlanos: TTabSheet + Caption = 'Planos' + ImageIndex = 2 + end + end + inherited StatusBar: TStatusBar + Top = 692 + Width = 764 + Height = 20 + end + inline frViewTotales1: TfrViewTotales [4] + Left = 0 + Top = 570 + Width = 764 + Height = 122 + Align = alBottom + Constraints.MaxHeight = 122 + Constraints.MinHeight = 122 + Constraints.MinWidth = 730 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 4 + ReadOnly = False + inherited TabControl1: TTabControl + Width = 764 + inherited GroupBox1: TGroupBox + inherited lblBase: TcxDBCurrencyEdit + Style.IsFontAssigned = True + end + inherited cxCurrencyEdit3: TcxDBCurrencyEdit + Style.IsFontAssigned = True + end + inherited cxCurrencyEdit4: TcxDBCurrencyEdit + Style.IsFontAssigned = True + end + inherited cxCurrencyEdit5: TcxDBCurrencyEdit + Style.IsFontAssigned = True + end + inherited cxCurrencyEdit1: TcxDBSpinEdit + Style.IsFontAssigned = True + end + inherited cxCurrencyEdit2: TcxDBSpinEdit + Style.IsFontAssigned = True + end + end + end + end + inherited EditorActionList: TActionList [5] + Top = 152 + end + inherited SmallImages: TPngImageList [7] + end + inherited JvFormStorage: TJvFormStorage [8] + end + inherited JvAppRegistryStorage: TJvAppRegistryStorage [9] + end + inherited dsDataTable: TDADataSource + Top = 152 + end +end diff --git a/Modulos/Presupuestos/Cliente/uEditorPresupuesto.pas b/Modulos/Presupuestos/Cliente/uEditorPresupuesto.pas new file mode 100644 index 0000000..6c462c0 --- /dev/null +++ b/Modulos/Presupuestos/Cliente/uEditorPresupuesto.pas @@ -0,0 +1,231 @@ +unit uEditorPresupuesto; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uEditorItem, ImgList, PngImageList, StdActns, ActnList, TBX, + TB2Item, TB2Dock, TB2Toolbar, ComCtrls, JvExControls, JvComponent, + JvNavigationPane, uEditorDBItem, DB, uDADataTable, uBizPresupuestosCliente, + uViewPresupuesto, uCustomView, uViewBase, uViewTotales, uViewGrid, + uViewContenido, TBXDkPanels, ExtCtrls, uDAScriptingProvider, + uDACDSDataTable, uViewMensaje, JvAppStorage, JvAppRegistryStorage, + JvFormPlacement, uViewDetallesPresupuesto, pngimage, StdCtrls, Mask, + DBCtrls, uViewDetallesFamilias, uViewDocumentosAsociados, uBizDocumentosAsociados, + JvComponentBase; + +type + IEditorPresupuesto = interface(IEditorDBItem) + ['{E06BB9E1-A95D-4983-B08D-6E1719C48D91}'] + function GetPresupuesto: IBizPresupuestos; + procedure SetPresupuesto(const Value: IBizPresupuestos); + property Presupuesto: IBizPresupuestos read GetPresupuesto write SetPresupuesto; + end; + + TfEditorPresupuesto = class(TfEditorDBItem, IEditorPresupuesto) + pagContenido: TTabSheet; + pagPlanos: TTabSheet; + frViewDetallesPresupuesto1: TfrViewDetallesPresupuesto; + frViewTotales1: TfrViewTotales; + frViewPresupuesto1: TfrViewPresupuesto; + procedure FormShow(Sender: TObject); + procedure actEliminarExecute(Sender: TObject); + procedure frViewClientePresupuesto1edtlNombrePropertiesChange( + Sender: TObject); + procedure actGuardarExecute(Sender: TObject); + private + FPresupuesto : IBizPresupuestos; + FViewPresupuesto : IViewPresupuesto; + FViewDocumentosPresupuesto : IViewDocumentosAsociados; + protected + function GetPresupuesto: IBizPresupuestos; + procedure SetPresupuesto(const Value: IBizPresupuestos); + + function GetViewPresupuesto: IViewPresupuesto; + procedure SetViewPresupuesto(const Value: IViewPresupuesto); + property ViewPresupuesto: IViewPresupuesto read GetViewPresupuesto write + SetViewPresupuesto; + + //DOCUMENTOS ASOCIADOS + function GetViewDocumentosPresupuesto: IViewDocumentosAsociados; + procedure SetViewDocumentosPresupuesto(const Value: IViewDocumentosAsociados); + property ViewDocumentosPresupuesto: IViewDocumentosAsociados read GetViewDocumentosPresupuesto write + SetViewDocumentosPresupuesto; + public + property Presupuesto: IBizPresupuestos read GetPresupuesto write SetPresupuesto; + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + end; + +implementation + +{$R *.dfm} + +uses + uEditorUtils, DateUtils, schPresupuestosClient_Intf, uDataModuleMontajes; + +function ShowEditorPresupuesto (ABizObject : TDADataTableRules) : TModalResult; +var + AEditor: TfEditorPresupuesto; +begin + AEditor := TfEditorPresupuesto.Create(Application); + try + AEditor.Presupuesto := (ABizObject as IBizPresupuestos); + Result := AEditor.ShowModal; + finally + AEditor.Release; + end; +end; + +{ TfEditorPresupuesto } + +function TfEditorPresupuesto.GetPresupuesto: IBizPresupuestos; +begin + Result := FPresupuesto; +end; + +function TfEditorPresupuesto.GetViewPresupuesto: IViewPresupuesto; +begin + Result := FViewPresupuesto; +end; + +procedure TfEditorPresupuesto.SetPresupuesto(const Value: IBizPresupuestos); +begin + FPresupuesto := Value; + + if Assigned(FPresupuesto) then + begin + dsDataTable.DataTable := FPresupuesto.DataTable; + frViewTotales1.DADataSource.DataTable := FPresupuesto.DataTable; + frViewDetallesPresupuesto1.DADataSource.DataTable := FPresupuesto.Detalles.DataTable; + + if Assigned(FViewPresupuesto) then + FViewPresupuesto.Presupuesto := Presupuesto; + + //DOCUMENTOS ASOCIADOS + if Assigned(FViewDocumentosPresupuesto) then + begin + FViewDocumentosPresupuesto.GestorDocumentos := (Presupuesto as IBizDocumentosAsociados).GestorDocumentos; + FViewDocumentosPresupuesto.GestorDocumentos.ModoInsert := (Presupuesto.DataTable.State = dsInsert); + end; + end; +end; + +procedure TfEditorPresupuesto.SetViewPresupuesto( + const Value: IViewPresupuesto); +begin + FViewPresupuesto := Value; + + if Assigned(FViewPresupuesto) and Assigned(Presupuesto) then + FViewPresupuesto.Presupuesto := Presupuesto; +end; + +procedure TfEditorPresupuesto.FormShow(Sender: TObject); +begin + inherited; + + if not Assigned(FViewPresupuesto) then + raise Exception.Create('No hay ninguna vista asignada'); + + if not Assigned(Presupuesto) then + raise Exception.Create('No hay ningún presupuesto asignado'); + + //DOCUMENTOS ASOCIADOS + //En el caso de no existir el gestor de documentos no habilitamos la vista + if Assigned(Presupuesto.GestorDocumentos) then + begin + ViewDocumentosPresupuesto := CreateView(TfrViewDocumentosAsociados) as IViewDocumentosAsociados; + ViewDocumentosPresupuesto.ShowEmbedded(pagPlanos); + end + else + pagPlanos.TabVisible := False; + + Presupuesto.DataTable.Active := True; + pgPaginas.ActivePage := pagGeneral; +end; + +constructor TfEditorPresupuesto.Create(AOwner: TComponent); +begin + inherited; + pgPaginas.ActivePageIndex := 0; + ViewPresupuesto := frViewPresupuesto1; + + //DOCUMENTOS ASOCIADOS + FViewDocumentosPresupuesto := Nil; +end; + +destructor TfEditorPresupuesto.Destroy; +begin + FViewPresupuesto := NIL; + FPresupuesto := NIL; + + //DOCUMENTOS ASOCIADOS + FViewDocumentosPresupuesto := NIL; + + inherited; +end; + +procedure TfEditorPresupuesto.actEliminarExecute(Sender: TObject); +begin + if (Application.MessageBox('¿Desea borrar este presupuesto?', 'Atención', MB_YESNO) = IDYES) then + inherited; +end; + +procedure TfEditorPresupuesto.frViewClientePresupuesto1edtlNombrePropertiesChange( + Sender: TObject); +begin + inherited; + if Length(frViewPresupuesto1.frViewClientePresupuesto1.edtlNombre.Text) = 0 then + JvNavPanelHeader.Caption := 'Nuevo presupuesto de cliente' + else + JvNavPanelHeader.Caption := 'Presupuesto de ' + + frViewPresupuesto1.frViewClientePresupuesto1.edtlNombre.Text + + ' (' + FPresupuesto.SITUACION + ')'; + Caption := JvNavPanelHeader.Caption; +end; + +function TfEditorPresupuesto.GetViewDocumentosPresupuesto: IViewDocumentosAsociados; +begin + Result := FViewDocumentosPresupuesto; +end; + +procedure TfEditorPresupuesto.SetViewDocumentosPresupuesto(const Value: IViewDocumentosAsociados); +begin + FViewDocumentosPresupuesto := Value; + + if Assigned(FViewDocumentosPresupuesto) and Assigned(Presupuesto) then + FViewDocumentosPresupuesto.GestorDocumentos := (Presupuesto as IBizDocumentosASociados).GestorDocumentos; +end; + +procedure TfEditorPresupuesto.actGuardarExecute(Sender: TObject); +var + ADiasValidez : Integer; +begin + if (FPresupuesto.SITUACION = SITUACION_PENDIENTE) and + (DateOf(FPresupuesto.FECHAPRESUPUESTO) < DateOf(Now)) then + begin + if (MessageDlg('La fecha del presupuesto es antigua. ¿Desea actualizarla a día de hoy?' + #10#13 + + '(La nueva fecha de validez del presupuesto se calculará automáticamente)', + mtConfirmation, [mbYes, mbNo], 0) = mrYes) then + begin + ADiasValidez := DaysBetween(FPresupuesto.VIGENCIAPRESUPUESTO, FPresupuesto.FECHAPRESUPUESTO); + FPresupuesto.Edit; + FPresupuesto.FECHAPRESUPUESTO := DateOf(Now); + FPresupuesto.VIGENCIAPRESUPUESTO := FPresupuesto.FECHAPRESUPUESTO + ADiasValidez; + FPresupuesto.Post; + end; + end + else if (FPresupuesto.SITUACION = SITUACION_ACEPTADO) + and (FPresupuesto.REFERENCIA = '') then + if (Application.MessageBox('¿Desea crear un montaje asociado a este presupuesto?', 'Atención', MB_YESNO) = IDYES) then + dmMontajes.NuevoMontaje(Nil, FPresupuesto); + + inherited; +end; + +initialization + RegisterEditor(IBizPresupuestos, ShowEditorPresupuesto, etItem); + +finalization + +end. diff --git a/Modulos/Presupuestos/Cliente/uEditorPresupuestos.ddp b/Modulos/Presupuestos/Cliente/uEditorPresupuestos.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Presupuestos/Cliente/uEditorPresupuestos.ddp differ diff --git a/Modulos/Presupuestos/Cliente/uEditorPresupuestos.dfm b/Modulos/Presupuestos/Cliente/uEditorPresupuestos.dfm new file mode 100644 index 0000000..ba8df09 --- /dev/null +++ b/Modulos/Presupuestos/Cliente/uEditorPresupuestos.dfm @@ -0,0 +1,1491 @@ +inherited fEditorPresupuestos: TfEditorPresupuestos + Left = 221 + Top = 235 + Width = 781 + Caption = 'Lista de presupuestos' + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + Width = 773 + Caption = 'Lista de presupuestos' + inherited Image1: TImage + Left = 746 + Picture.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001800 + 0000180806000000E0773DF80000000970485973000017120000171201679FD2 + 520000000467414D410000AA11B57D14DC000001CC4944415478DA63FCFFFF3F + 032D0123B2058B361EA79A6D71FE968C582D004A906CD8DFBFFF80F83F980601 + 0BDF6C868B7B66E1B6C0752FAA25BB9D8FE3341C59ED5A8B030CF356EF6198BF + 64237E0B4871B9C7016B0659651686F9DB8E30BC8BFEC6B070FD3EC21660F301 + BA18086CB53DC2E07DD88661CFCD1360FEEB882F0C4B361DA0CC07FFFF01C31A + 88FF005D0F62FFFE070CFF3FFFC0BEF9F3EF2FC38A2D8749F7013100E48B4741 + EF18D6EE38469C05306F9302EEFBBF61D8B0FB047116E04B39D80048CF4CD5CD + 0C9BF69D24DE025C4105B31C260F533B4D7913C3D603A768E783890A1B18761D + 3E433B1FF4C9AC63D87BFC1CED7CD02DB986E1C0A90BF82D88F63107E74E727C + D02EBE8AE1C8994BF82D88F03403E74E727CD024BC9CE1E485ABF82D08753361 + F03B66479605F5024B19CE5CBE8EDF8200172386E0130E780D0359BEE4CF5C38 + 3F8625196C410DEF6286F3D76EE2B7C0D7C1005EAE40CAF97FE0B2072C062CF3 + 73EFFB63C40F8C5FC9BD88E1D28D5BF82DF0B2D5C36938882E78148835F888B6 + C0CD5A1BA7E1A012B4E46930CEA023CA0247730DB061FFFE428AE5DF7F11C5F1 + BFFF508BFEFD437104322068819D891AB844A404E0B5A077F27C8A0C87019805 + 00F0E629EF34B079A30000000049454E44AE426082} + end + end + inherited TBXDock: TTBXDock + Width = 773 + inherited tbxMain: TTBXToolbar + object TBXSeparatorItem16: TTBXSeparatorItem + end + object TBXItem36: TTBXItem + Action = actRechazado + end + end + inherited tbxFiltro: TTBXToolbar + Left = 471 + end + end + inherited StatusBar: TStatusBar + Width = 773 + end + inline frViewBarraSeleccion: TfrViewBarraSeleccion [3] + Left = 0 + Top = 395 + Width = 773 + Height = 37 + Align = alBottom + AutoScroll = False + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 3 + Visible = False + ReadOnly = False + inherited pnlSeleccion: TPanel + Top = 0 + Width = 773 + inherited bSeleccionar: TButton + Left = 616 + end + inherited bCancelar: TButton + Left = 695 + end + end + inherited ActionListSeleccion: TActionList + inherited actSeleccionar: TAction + OnExecute = frViewBarraSeleccionactSeleccionarExecute + OnUpdate = frViewBarraSeleccionactSeleccionarUpdate + end + end + end + inherited EditorActionList: TActionList [4] + inherited actNuevo: TAction + ImageIndex = 24 + OnExecute = actNuevoExecute + end + object actAceptado: TAction + Category = 'Situaciones' + Caption = 'Aceptado' + ImageIndex = 23 + OnExecute = actAceptadoExecute + end + object actRechazado: TAction + Category = 'Situaciones' + Caption = 'Rechazado' + ImageIndex = 22 + OnExecute = actRechazadoExecute + end + object actPendiente: TAction + Category = 'Situaciones' + Caption = 'Pendiente' + OnExecute = actPendienteExecute + end + end + inherited SmallImages: TPngImageList [5] + 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 + 61000000097048597300000AEB00000AEB01828B0D5A0000029B4944415478DA + A5936B48536118C7FFE79CB5CD332F639B9A379C683051B232CDEA835D14BB40 + A444501FACCC254811F529858811519411917D705A5041D04D30A34F82214118 + D8B0455E2A755E6665BA9DCDED6C3BDBDE76365C9A981F7AE0BDF0C2FFF7FE9F + E7E1A10821F89FA0C27B7E8B8ED526D731085A9DAFAA6EFC4B1053FAA844AA8A + 377053B64ED27BAC99C2E6FB4574667A4F5676B23C5ECE9091FE2F97B98ECA4B + CB9405B794AAEC9CAB5E307A97C3ED8383AB26BD35CF29EC7ED68AA4A45A0483 + 4852B1484D64C9A8E9EB15AEB3F2E282962D7BBC5FA651B73A5C424AC0E59E05 + 673B88BEBAB762FA14726EC7639DB60BB1B145083DC4C824D0A62790E901CB75 + FB4B53A362EF060351B08D6E978706CF4F807356C0A41F10C1118018BA3B6A68 + 33DE8065F345080D82B4940432373933E863A43AC1E3A5E0E68730E72883F9D4 + E482B33F003136B6A52251DD831879B60811530A2FF1CEF31670F3DB60AAB52E + 2ECB528018EB8D5948D6F442264D8C8A03018299D94321DBED7FD775194051FE + E49C54A36CB2715E3AEA423CBD9E09CCD977C05C3FB222407DA0FD4A467E6643 + FF472B450221A15F2010FCF39048E222109F052E5B294CA72DCB008A8AA7E775 + 25B94DC343D394D3EE167F2670380CA1DCDBC02A8CA194F685213EE11B387E17 + 3ED78D4701CCF687E559C579AF79DE2B991AFB19B1EC703EC0BBEAE351AF85F7 + 4E42B6E626683A0182300CDFFC4E98CE58C300CDD1EEC9B8B5AAB4B1C13184AD + BBDD668CFB8A6139E15952B1BCBB19A10E192161F6840A3B04DE594ACC677F50 + CAC35D2F78BFBFCAEBE211A20BB0FFDA8A0FF57D2B0E4381510F09DD0412EC20 + 7DFA6A0A9B8C25502ABBC1307270DC35BCAF69587504739B3341532CF9543F10 + E94261CB16486417F07DF4082C06CFAA80455DF80DE5433FF01720E9DB000000 + 0049454E44AE426082} + Name = 'PngImage22' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000AEB00000AEB01828B0D5A000001DA4944415478DA + 63FCFFFF3F032580912C5DF2F33964B539E3DF7DF8F1956403380CE7C85B5929 + CFFAF99ED7FCFCED9BE124192060B7D8D6CE5279E99B876C42674FFC0CFEF9C0 + 7A27D10628FBAF0FB030915F74E7EA6FE6F387FF87FD7A6AB195E83090F55915 + EEE7A23BE7FCD9CFAC170EFF4EFDF6C07A31D18128E1BE3CC8DB597BE1A3BBBF + B98EECFA91FBFDBEF574A0F07FA20C10B09B67EBE366B8E3CDF37F9C47F77CED + FC7CD3AE125D0DC400B3897C9CCCBCEADFD9182F331C4CFC010E6DCB39F29E0E + 3A07599939E477AE7FBFFBE3CF4BBE0C77F27F621820EAB848DFDC447931372B + 9FE68E5DF7577F3C73368E414588D9C6496BB3AA92B8CBDECD9FDEBC7CF9D3F2 + E71DE7BBD85CC928EAB438C4C7556F3A0B1B8BC8B1BD9FFFDE7B753F4C41994B + C3CA48B1E5F09ECFFFEF3F7D19F3FB5AD0725CDE047B41276243A09D85FAAAA7 + CFBFB11CDEFBEA8EA79F98E4C3FBBFB8CF9F7BBDE5EB453F3FE440C31E060CF5 + 4C4ED9F63B6565845D5EBEFEF29F11287AE9C4AF2FAFBF3D32FF753EFE3ABE80 + 86C7028FF5429B101F83FDCF5F7F66797697E1FFCDDB6FA7FFBAE69F4D289A91 + A2B19EC539C7E1C49BC7EC46F71EBDD9FFF9DFD338868B994F4930808181D76E + 413EF33F56D90F0F5ED4323C29FE4E4833080000904EC47A3EA3126900000000 + 49454E44AE426082} + Name = 'PngImage23' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001774944415478DA + 63FCFFFF3FC384055BFF3390010A12BC1919610600394469FAF3F71FC3EF3F7F + 192CBCB3192EEE99856A80C35E4B14C5079C8F836964F1ED368718662EDFC530 + 7FC9464C03F0815FBFFF826D06D10BD7EDC36E00BA0BB0815586BB18966D3A84 + DB0098B341E01F50EECF9F7F709B034F3B312CD3DDC1B06ADB11FC06C05CB2CB + EE0883DB211BB8CD61E7DD18166A6E6558BFEB387E03D06DFEFDE70F981F75D9 + 8361AEEA2686CDFB4EE136609FD33106A77D56605BD79BEE033B1B044036C75F + F76698AEB88161E7A133B80D00391BDDE69FBFFE30FC028AA5DFF567E8975CCD + 70F0D4454C0372623D195C0E58A384F862ED6D0CB157BDC0EC2972EB18721E05 + 317489AE643876EE32A601E9916E605BFEFCFE07B639E2A23BC37CF52D60B1DF + BF21B8F0792843ABE03286D397AE611A9018EA0CD70CF202CC6674D0C0BB98E1 + C2B59B9806C40638C23583FC8D6CF36F688C80F0BF7FFF192EDDB8856940848F + 2DC38A2D8789CE89180680044805200300115980F04CC063740000000049454E + 44AE426082} + Name = 'PngImage24' + Background = clWindow + end> + Bitmap = {} + end + inherited LargeImages: TPngImageList [6] + 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 + F80000000970485973000017120000171201679FD252000001CC4944415478DA + 63FCFFFF3F032D0123B2058B361EA79A6D71FE968C582D004A906CD8DFBFFF80 + F83F9806010BDF6C868B7B66E1B6C0752FAA25BB9D8FE3341C59ED5A8B030CF3 + 56EF6198BF64237E0B4871B9C7016B0659651686F9DB8E30BC8BFEC6B070FD3E + C21660F301BA18086CB53DC2E07DD88661CFCD1360FEEB882F0C4B361DA0CC07 + FFFF01C31A88FF005D0F62FFFE070CFF3FFFC0BEF9F3EF2FC38A2D8749F70131 + 00E48B4741EF18D6EE38469C05306F9302EEFBBF61D8B0FB047116E04B39D800 + 48CF4CD5CD0C9BF69D24DE025C4105B31C260F533B4D7913C3D603A768E78389 + 0A1B18761D3E433B1FF4C9AC63D87BFC1CED7CD02DB986E1C0A90BF82D88F631 + 07E74E727CD02EBE8AE1C8994BF82D88F03403E74E727CD024BC9CE1E485ABF8 + 2D08753361F03B66479605F5024B19CE5CBE8EDF8200172386E0130E780D0359 + BEE4CF5C383F8625196C410DEF6286F3D76EE2B7C0D7C1005EAE40CAF97FE0B2 + 072C062CF373EFFB63C40F8C5FC9BD88E1D28D5BF82DF0B2D5C36938882E7814 + 8835F888B6C0CD5A1BA7E1A012B4E46930CEA023CA0247730DB061FFFE428AE5 + DF7F11C5F1BFFF508BFEFD437104322068819D891AB844A404E0B5A077F27C8A + 0C8701980500F0E629EF34B079A30000000049454E44AE426082} + Name = 'PngImage21' + Background = clWindow + end> + Bitmap = {} + end + inherited JvFormStorage: TJvFormStorage [7] + end + inherited JvAppRegistryStorage: TJvAppRegistryStorage [8] + end + inherited dsDataTable: TDADataSource [9] + end + inherited GridPopupMenu: TPopupMenu + object N3: TMenuItem + Caption = '-' + end + object Aceptado1: TMenuItem + Action = actAceptado + end + object Rechazado1: TMenuItem + Action = actRechazado + end + object Pendiente1: TMenuItem + Action = actPendiente + end + end +end diff --git a/Modulos/Presupuestos/Cliente/uEditorPresupuestos.pas b/Modulos/Presupuestos/Cliente/uEditorPresupuestos.pas new file mode 100644 index 0000000..d533776 --- /dev/null +++ b/Modulos/Presupuestos/Cliente/uEditorPresupuestos.pas @@ -0,0 +1,259 @@ +unit uEditorPresupuestos; + +interface + +uses + Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, + uCustomEditor, uEditorGrid, uBizPresupuestosCliente, ImgList, + PngImageList, StdActns, ActnList, TB2ExtItems, TBXExtItems, TBX, TB2Item, + TB2Dock, TB2Toolbar, JvExControls, JvComponent, JvNavigationPane, + uViewPresupuestos, Menus, DB, uDADataTable, ComCtrls, uViewGrid, + uDAScriptingProvider, uDACDSDataTable, JvAppStorage, + JvAppRegistryStorage, JvFormPlacement, pngimage, ExtCtrls, uCustomView, + uViewBase, uViewBarraSeleccion, JvComponentBase; + +type + IEditorPresupuestos = interface(IEditorGrid) + ['{7E6689A4-BEE7-4B36-80D8-411FA1B344F7}'] + function GetPresupuestos: IBizPresupuestos; + procedure SetPresupuestos(const Value: IBizPresupuestos); + property Presupuestos: IBizPresupuestos read GetPresupuestos write + SetPresupuestos; + end; + + TfEditorPresupuestos = class(TfEditorGrid, IEditorPresupuestos) + frViewBarraSeleccion: TfrViewBarraSeleccion; + actAceptado: TAction; + actRechazado: TAction; + actPendiente: TAction; + N3: TMenuItem; + Aceptado1: TMenuItem; + Rechazado1: TMenuItem; + Pendiente1: TMenuItem; + TBXItem36: TTBXItem; + TBXSeparatorItem16: TTBXSeparatorItem; + procedure actEliminarExecute(Sender: TObject); + procedure actModificarExecute(Sender: TObject); + procedure actNuevoExecute(Sender: TObject); + procedure frViewBarraSeleccionactSeleccionarExecute(Sender: TObject); + procedure frViewBarraSeleccionbCancelarClick(Sender: TObject); + procedure actDuplicarExecute(Sender: TObject); + procedure frViewBarraSeleccionactSeleccionarUpdate(Sender: TObject); + procedure actAceptadoExecute(Sender: TObject); + procedure actRechazadoExecute(Sender: TObject); + procedure actPendienteExecute(Sender: TObject); + private + FPresupuestos: IBizPresupuestos; + protected + function GetPresupuestos: IBizPresupuestos; + function GetSelectionBarVisible: Boolean; + procedure SetPresupuestos(const Value: IBizPresupuestos); + procedure SetSelectionBarVisible(const Value: Boolean); + procedure SetViewGrid(const Value: IViewGrid); override; + procedure CambiarEstado(const NuevoEstado: String); + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + property Presupuestos: IBizPresupuestos read GetPresupuestos write + SetPresupuestos; + property SelectionBarVisible: Boolean read GetSelectionBarVisible write + SetSelectionBarVisible; + end; + +var + fEditorPresupuestos : TfEditorPresupuestos; + +implementation + +uses cxControls, uDataModulePresupuestos, uEditorUtils, uEditorBase, + DateUtils, uDataModuleMontajes; + +{$R *.DFM} + +function ShowEditorPresupuestos (ABizObject : TDADataTableRules) : TModalResult; +var + AEditor: TfEditorPresupuestos; +begin + AEditor := TfEditorPresupuestos.Create(Application); + try + AEditor.Presupuestos := (ABizObject as IBizPresupuestos); + Result := AEditor.ShowModal; + finally + AEditor.Release; + end; +end; + +function ShowSelectEditorPresupuestos (ABizObject : TDADataTableRules) : TModalResult; +var + AEditor: TfEditorPresupuestos; +begin + AEditor := TfEditorPresupuestos.Create(Application); + try + AEditor.Presupuestos := (ABizObject as IBizPresupuestos); + AEditor.SelectionBarVisible := True; + Result := AEditor.ShowModal; + finally + AEditor.Release; + end; +end; + +{ TfEditorPresupuestos } + +{ +***************************** TfEditorPresupuestos ***************************** +} +constructor TfEditorPresupuestos.Create(AOwner: TComponent); +begin + inherited; + ViewGrid := CreateView(TfrViewPresupuestos) as IViewPresupuestos; +end; + +destructor TfEditorPresupuestos.Destroy; +begin + FPresupuestos := NIL; + inherited; +end; + +procedure TfEditorPresupuestos.actEliminarExecute(Sender: TObject); +begin + if (Application.MessageBox('¿Desea borrar este presupuesto?', 'Atención', MB_YESNO) = IDYES) then + begin + inherited; + ViewGrid.RefreshGrid; + end; +end; + +procedure TfEditorPresupuestos.actModificarExecute(Sender: TObject); +begin + inherited; + Presupuestos.Show; + ViewGrid.RefreshGrid; + ViewGrid.SyncFocusedRecordsFromDataSet; +end; + +procedure TfEditorPresupuestos.actNuevoExecute(Sender: TObject); +begin + inherited; + Presupuestos.Insert; + Presupuestos.Show; + ViewGrid.RefreshGrid; + ViewGrid.SyncFocusedRecordsFromDataSet; +end; + +procedure TfEditorPresupuestos.frViewBarraSeleccionactSeleccionarExecute( + Sender: TObject); +begin + inherited; + if (Presupuestos.DataTable.RecordCount > 0) then + begin + ViewGrid.SyncFocusedRecordsFromGrid; + ModalResult := mrOK; + end; +end; + +procedure TfEditorPresupuestos.frViewBarraSeleccionbCancelarClick(Sender: + TObject); +begin + inherited; + frViewBarraSeleccion.actCancelarExecute(Sender); +end; + +function TfEditorPresupuestos.GetPresupuestos: IBizPresupuestos; +begin + Result := FPresupuestos; +end; + +function TfEditorPresupuestos.GetSelectionBarVisible: Boolean; +begin + Result := frViewBarraSeleccion.Visible +end; + +procedure TfEditorPresupuestos.SetPresupuestos(const Value: IBizPresupuestos); +begin + FPresupuestos := Value; + dsDataTable.DataTable := FPresupuestos.DataTable; + if Assigned(ViewGrid) then + (ViewGrid as IViewPresupuestos).Presupuestos := Presupuestos; +end; + +procedure TfEditorPresupuestos.SetSelectionBarVisible(const Value: Boolean); +begin + frViewBarraSeleccion.Visible := True; + ViewGrid.OnDblClick := frViewBarraSeleccion.actSeleccionar.OnExecute; +end; + +procedure TfEditorPresupuestos.SetViewGrid(const Value: IViewGrid); +begin + inherited; + if Assigned(ViewGrid) and Assigned(Presupuestos) then + (ViewGrid as IViewPresupuestos).Presupuestos := Presupuestos; +end; + +procedure TfEditorPresupuestos.actDuplicarExecute(Sender: TObject); +var + APresupuesto : IBizPresupuestos; +begin + inherited; + APresupuesto := dmPresupuestos.GetPresupuesto(Presupuestos.CODIGO); + Presupuestos.Insert; + Presupuestos.CopyFrom(APresupuesto); + Presupuestos.DataTable.ApplyUpdates; + ViewGrid.RefreshGrid; + ViewGrid.GotoFirst; +end; + +procedure TfEditorPresupuestos.frViewBarraSeleccionactSeleccionarUpdate( + Sender: TObject); +begin + inherited; + (Sender as TAction).Enabled := (Presupuestos.DataTable.RecordCount > 0); +end; + +procedure TfEditorPresupuestos.actAceptadoExecute(Sender: TObject); +begin + CambiarEstado(SITUACION_ACEPTADO); +end; + +procedure TfEditorPresupuestos.actRechazadoExecute(Sender: TObject); +begin + CambiarEstado(SITUACION_RECHAZADO); +end; + +procedure TfEditorPresupuestos.actPendienteExecute(Sender: TObject); +begin + CambiarEstado(SITUACION_PENDIENTE); +end; + +procedure TfEditorPresupuestos.CambiarEstado(const NuevoEstado: String); +begin + ViewGrid.SyncFocusedRecordsFromGrid; + ShowHourglassCursor; + Presupuestos.DataTable.DisableControls; + try + if not (Presupuestos.DataTable.State in dsEditModes) then + begin + Presupuestos.DataTable.Edit; + Presupuestos.SITUACION := NuevoEstado; + Presupuestos.FECHADECISION := Today; + Presupuestos.DataTable.Post; + Presupuestos.DataTable.ApplyUpdates; + + if (NuevoEstado = SITUACION_ACEPTADO) + and (Presupuestos.REFERENCIA = '') then + if (Application.MessageBox('¿Desea crear un montaje asociado a este presupuesto?', 'Atención', MB_YESNO) = IDYES) then + dmMontajes.NuevoMontaje(Nil, Presupuestos); + end; + finally + Presupuestos.DataTable.EnableControls; + HideHourglassCursor; + end; +end; + +initialization + RegisterEditor(IBizPresupuestos, ShowEditorPresupuestos, etItems); + RegisterEditor(IBizPresupuestos, ShowSelectEditorPresupuestos, etSelectItems); + +finalization + +end. + diff --git a/Modulos/Presupuestos/Cliente/uEditorPreviewPresupuesto.ddp b/Modulos/Presupuestos/Cliente/uEditorPreviewPresupuesto.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Presupuestos/Cliente/uEditorPreviewPresupuesto.ddp differ diff --git a/Modulos/Presupuestos/Cliente/uEditorPreviewPresupuesto.dfm b/Modulos/Presupuestos/Cliente/uEditorPreviewPresupuesto.dfm new file mode 100644 index 0000000..dc09f54 --- /dev/null +++ b/Modulos/Presupuestos/Cliente/uEditorPreviewPresupuesto.dfm @@ -0,0 +1,440 @@ +inherited fEditorPreviewPresupuesto: TfEditorPreviewPresupuesto + OnCreate = CustomEditorCreate + PixelsPerInch = 96 + TextHeight = 13 + inherited TBXDock: TTBXDock + inherited TBXToolbar1: TTBXToolbar + object TBXItem38: TTBXItem + Action = actAumentarTamLetra + Images = PreviewSmallImageList + end + object TBXItem43: TTBXItem + Action = actDisminuirTamLetra + Images = PreviewSmallImageList + end + end + end + inherited PreviewActionList: TActionList + object actAumentarTamLetra: TAction + Category = 'Tools' + ImageIndex = 11 + OnExecute = actAumentarTamLetraExecute + end + object actDisminuirTamLetra: TAction + Category = 'Tools' + ImageIndex = 12 + OnExecute = actDisminuirTamLetraExecute + end + end + inherited PreviewSmallImageList: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000000F14944415478DA + C5D2A10EC2301006E01B4F30893C39C59619EC70937B843D014C829B0339DEA0 + 1289638EC9C9E1160C9553A43882A0B45DC80223A30112CE346DFA7F697A6770 + CEE19B327E0A8C663BB5A14506348D8CE7CBDEB4E0DBB96D7402518010C5A405 + C8B0840F9B493710FA08F1E21190E1D0B7C5F9F23D10780849D200F7705102AC + D73A8023005203F73065A08022D3003C0B81AC08A0E3810C33115600156BAE01 + 3888E2A9F50BDC71CE07EE105875025A01B09268007D01A4CD1F48E4DAB3809D + 657F35001440963E764122C78BA50798268ACF6ACF8142F6F97B400E8B9AC617 + 93887EC23B814FEAFFC00D0E3CD3E1153EE1F30000000049454E44AE426082} + Name = 'PngImage1' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000000A34944415478DA + 63FCFFFF3F032580912606303232628839545CF8BFBF5D9F912C03409A1F5C38 + C0707F7B3EE90680342778E83334744C24DD0098E60B371818366C20D10098E6 + 071F18C0065C384082018E9517C19A3F0035830D7800A44F90E802A3BC13FFF5 + 8CCC193EBCF8C8F0E00503C3871B0B480F039021FF9834183EFC00721E906100 + CC9077BF34C837006EC8AD13E41B00020A1E13FE136D002960E00D000045F48A + E13771044B0000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000000A44944415478DA + 63FCFFFF3F03258091260638565EFC7FA0C380115D1C9B5A9C067CFAF683E1DC + 240B46B20D48F0D06798B4EE248A21241BF0E10703C3A26D0843483220C0419F + E1C10706860F407CE91AC410920C70B0506078F0829FE1C2838F0C1F1E3C009A + 7480E1FEF67C46A20D30D0506038708301AEF9C18E02D25C202020C070E1C207 + B86692C3800118800F6E2034936CC0830BA89A493680A294480A18780300CF22 + A8E18A4EF6A30000000049454E44AE426082} + Name = 'PngImage3' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000000EC4944415478DA + C5D2A10EC2301405D0DB2FA012F9246E95C8E290FB04FE8049703890842F5850 + 2882021CB5185210044725B220086E74908D40C252020937A97BF7A479792C49 + 127C13F673A0D65E27AA27D8EBA06CE97C70D10D5821703A5FB01A54D92B1085 + 84A813633F6B16038D7A80C178F984A440A34EE8F43C017B0186D3079202A124 + F4FB1E402803180B58F736DB3B72038403620F405609E65082364758639CA440 + 42425608F1C803106E50ED9097CD3CBAFD40106132F10038E7D0DAE6E56C07A2 + EC80B90700B740B37B9433801CA07C00A39FCB19C039412B0FE0DD25A6709A42 + E0D3FC1FB8020318D0E1923D9C4B0000000049454E44AE426082} + Name = 'PngImage2' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD2520000017E4944415478DA + 630C9B1C9ACFC0C03081813C50C00834E07F7E400E51AAFFFEFBC3F0EBDF7786 + 9F7F2138C9268F01C58073FBBF113444C9EA0B58F38469B3192E2DBB8C69404E + AC07568DBFFE303058F86431D44EB264F8053460DACC25B80DA89FBC1FC38092 + 144706FBC02C86F27E03B00BE6CE594B9C0B4036FFFC0DA15D43B31872BB95C0 + 062C5FB09B341764C4383278476631A4754882BDB076F111FC2E40B619860363 + B318125A05187E026362CBD2B3A4B92036D491212C218B21B2999DE1C7DF6F0C + 7B565CC76E4072B807D8E6BFFF1036FFFE0BA16352B218021BFE82C3E0F0EA07 + 080372FC3218FEFEFFCD70E5D07F8698200F86FE79982E08F4756448CAC862F0 + AA05A5836F0CA7D6BD421890E6130F36F5DE311E86303F0F145B616C1048C9CC + 6270AE7A05567B71E3678401F19E6160C1A7274519E62DDD843725DA943F04BB + E0C696BF080322DC7CC151034BE390F4FE0DCA47D07FFEFF01D37F81F4EDAD8C + 0803829C5DC04993540033207F57D36EB2B2B35B9D6B0100103839527F8C36D7 + 0000000049454E44AE426082} + Name = 'PngImage5' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001714944415478DA + 630C9B1C9ACFC0C03081813C50C00834E07F7E400E51AAFFFEFBC3F0EBDF7786 + 9F7F2138C9268F016EC099973B18F253E4198E6ED6C4A9D9CEFF36C3C4390F19 + 64793519264C9BCD7069D9658801D6962A60CDC40290216B171F411880CF05BF + A0CE05D17E619FC09A05D8C519E6CE598B6AC0B9FDDF8876018BEE6986E50B76 + 631A9013EB8153D3AF3F0C0C3F7F3330D807663124B40A607A016640FDE4FD58 + 0D2849716458B86607C3BCA59B18229BD919B62C3D4B9C0B603683E8E51B2006 + 0436FC65D8B3E23A692EC888716458BB05628057ED1786C3AB1F200CC8F1CB60 + B878F0178A0B906D86E1CD3B20063857BD6238B5EE15C280349F7886EB8799F1 + BA2036D49161C76E880136E50F192E6EFC8C3020DE338CE1DE311EB001D86CFE + FD1742EFDB0F31C0B4E43AC38D2D7F110644B8F9323C3D29CA901CEE81A219A6 + 11C63E7604628051F16586DB5B1911060439BB304C9BB984E88404033003F277 + 35ED262B3BBBD5B9160000C8E01B524AB937870000000049454E44AE426082} + Name = 'PngImage4' + 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 = 'PngImage6' + 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 = 'PngImage7' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000000E14944415478DA + 63FCFFFF3F032580717019C0C8C8086787B4DDF8FFEBD76F869F3F7F33EC6C37 + 824BA05B88D300BF86CBFFA3A35419A6CFB8C870A0CF9C7403DC2BCFFD8F88D4 + 66983DEB34C3B12936C41910DA7E13EE6C100E0D37609837E7180358EC0708FF + 6278B0218011A701FE8D57C0CEFEF68391E1DB770630FD1D88BF7C07E26F8C0C + 6B17AE6178B1230CB7011E55E7FF836C86B9C23FC48661C9BC5D609B7F40F187 + 0331B80D400E03DDF85DFF3D039D1856CEDFCCF0706320E981A816BEF5BF8BBF + 07D8D92F7786936E80BCFFFAFF30677F3C184B9C01E480616000007F3BB6E1E0 + 0AF3B40000000049454E44AE426082} + Name = 'PngImage8' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000000714944415478DA + 63FCFFFF3F03258071D4002A1B10DA7E13CC01897DFDFA83E1DBB71F60FAFBB7 + 9F0C9F3F7F03E3F7FBA219F11A1013A500E77FFCCCC8F0EA1D23C38BB74C0CCF + 5E3131AC9E3397E1F7E914DC0684B4DDF88FCBE62F9FBF33FCF9F397E1FFF974 + DC060C7C208E1A401E0000EFE473E127272ED00000000049454E44AE426082} + Name = 'PngImage9' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001C74944415478DA + A5934D4B5B411885CF5D9982288874EB0F306E5CBA9A646514E33536264AE456 + 5184528AE0424A043751FCC08228E24788894631D5D6D12C5C08EA2A74512AD8 + E4070822EE44A3E255CC386F24264AAE5978609881B9E739EFCCBC571142E03D + 5208A0284ADECDA08FB9E4342087EFF3C04124772F139C1790319614C3DCE456 + B116E2D0EF11CF051502FCD7BA54F37A98C3E951110E70783A5584FC3C2E0155 + 0501DB534C34389F92DD9A342E7068DD2A96FC1CD296AE44F3EE470C019B934C + A8AE6CF2E29C9C3B6C5809EEC0EEA84194C7E212506508D8F8C144735B36D93F + 232B69B72212DE43BDBD1A5BBFFFA1C7B7AF3C03424396C6B252F08714709184 + F94311E22DEDD9E4C0FC0E9CEE1AFC8AC4505B5789E876025F867300D1694BFA + CCA49FCB1C046AD5B2C94B813D383E3D25334B0576778FF17524074047C8944D + A2B3BB3C36E8BA8E3BFD363DEEEF74DC5C5F2179718ED89F4B7C1B7B0520AD8E + 3241C9F4B191F93A798943F90EBDE37900A4908F0987CB6A6826FD3D02FA260C + 0024FF201374DBF9CCA767B7F28E4CF07C7F03409AF532411796319391747266 + C2C77298651F240AFE4C53FD4CA4E48BA464FBD1CBD09ACCB29D132F5AF93D7A + 04D7A238F0C903C3480000000049454E44AE426082} + Name = 'PngImage10' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300004E2000004E2001167D99DE00000A4D694343505068 + 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 + F73EE77CFEFC2FF784F3FB25D29F330000010A4944415478DA63FCFFFF3F0325 + 8071F019C06838930548B503710C104B00F117203E02C4B9FFCFA7DF4151CBC8 + 88D50090E60A2C969D001A60498C01CFA136870235AC01F27580ECCB40FC07C8 + 67256800D4101E20E502C4D650DA00240E34809118177800A9E5402C806E30B1 + 06DC06522A403C0188F702F105207E4C8A0130014BA8E614209E4C8A01BBA1FE + 46062FA001ABF88321E3FEFBEF40CE8DFF8CB80C00299C0FC40EA09007E22540 + 3C151A130B9E7FCF4878033440E7210E0370819F868CFF41368334BF0426AD47 + 1F19187EFD252129BFD060FC8FAE19EC622C5E900352CF8001F607C8D607B21F + 01D9EF61F2F35918FF8334A7FF27D10BB0509F018C0C103B03C805D1009D9F97 + 36069839440000000049454E44AE426082} + Name = 'PngImage11' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300004E2000004E2001167D99DE00000A4D694343505068 + 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 + F73EE77CFEFC2FF784F3FB25D29F33000000EC4944415478DA63FCFFFF3F0325 + 8071F019C06838930548B503710C104B00F117203E02C4B9FFCFA7DF4151CBC8 + 88D50090E60A2C969D001A60498C01CFA136870235AC01F27580ECCB40FC07C8 + 67256800D4101E20E502C4D650DA00240E34809118177800A9E5402C806E30B1 + 06DC06522A403C0188F702F105207E4C8A0130014BA8E614209E4C8A01BBA1FE + 46062FA001AB0834E4012103400AE703B10328E4817809104F85C6C402A00189 + 0463011BF869C8F8FFFD7706863740FC1298B41E7D6460F8F59784A4FC4283F1 + 3FBA66B02BB078410E483D033AF50F90AD0F643F02B2DF633394242FE00200A6 + 308833CD7332EF0000000049454E44AE426082} + Name = 'PngImage12' + Background = clWindow + end> + Bitmap = {} + end + inherited frxReport1: TfrxReport + Datasets = <> + Variables = <> + Style = <> + end +end diff --git a/Modulos/Presupuestos/Cliente/uEditorPreviewPresupuesto.pas b/Modulos/Presupuestos/Cliente/uEditorPreviewPresupuesto.pas new file mode 100644 index 0000000..fce2f92 --- /dev/null +++ b/Modulos/Presupuestos/Cliente/uEditorPreviewPresupuesto.pas @@ -0,0 +1,72 @@ +unit uEditorPreviewPresupuesto; + +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; + +const + CTE_TamLetraIni = 10; + CTE_TamLetraMin = 5; + CTE_TamLetraMax = 30; + CTE_Aumento = 2; + +type + TfEditorPreviewPresupuesto = class(TfEditorPreview) + TBXItem38: TTBXItem; + actAumentarTamLetra: TAction; + TBXItem43: TTBXItem; + actDisminuirTamLetra: TAction; + procedure CustomEditorCreate(Sender: TObject); + + procedure actAumentarTamLetraExecute(Sender: TObject); + procedure actDisminuirTamLetraExecute(Sender: TObject); + private + FCodigo: Integer; + TamLetra: Integer; + public + property Codigo: Integer read FCodigo write FCodigo; + end; + +var + fEditorPreviewPresupuesto: TfEditorPreviewPresupuesto; + +implementation +{$R *.dfm} + +uses uDataModulePresupuestos; + +procedure TfEditorPreviewPresupuesto.actAumentarTamLetraExecute(Sender: TObject); +begin + //Si sale de los límites de tamaño de letra no hacemos nada + if (TamLetra >= CTE_TamLetraMax) then + Exit; + + TamLetra := TamLetra + CTE_Aumento; + dmPresupuestos.Refrescar(Self.Report, Codigo, TamLetra); +end; + +procedure TfEditorPreviewPresupuesto.CustomEditorCreate(Sender: TObject); +begin + inherited; + TamLetra := CTE_TamLetraIni; +end; + +procedure TfEditorPreviewPresupuesto.actDisminuirTamLetraExecute(Sender: TObject); +begin + //Si sale de los límites de tamaño de letra no hacemos nada + if (TamLetra <= CTE_TamLetraMin) then + Exit; + + TamLetra := TamLetra - CTE_Aumento; + dmPresupuestos.Refrescar(Self.Report, Codigo, TamLetra); +end; + +end. diff --git a/Modulos/Presupuestos/Cliente/uObservaciones.dfm b/Modulos/Presupuestos/Cliente/uObservaciones.dfm new file mode 100644 index 0000000..a744ce9 --- /dev/null +++ b/Modulos/Presupuestos/Cliente/uObservaciones.dfm @@ -0,0 +1,47 @@ +inherited frViewObservaciones: TfrViewObservaciones + Width = 300 + Constraints.MinWidth = 300 + DesignSize = ( + 300 + 240) + object Label5: TLabel + Left = 8 + Top = 8 + Width = 85 + Height = 13 + Caption = 'Observaciones' + Font.Charset = DEFAULT_CHARSET + Font.Color = clActiveCaption + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + ParentFont = False + end + object Bevel1: TBevel + Left = 96 + Top = 8 + Width = 192 + Height = 9 + Anchors = [akLeft, akTop, akRight] + Shape = bsBottomLine + end + object memObservaciones: TcxDBMemo + Left = 16 + Top = 32 + Anchors = [akLeft, akTop, akRight, akBottom] + DataBinding.DataField = 'OBSERVACIONES' + DataBinding.DataSource = DADataSource + Properties.ScrollBars = ssVertical + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 0 + Height = 193 + Width = 269 + end + object DADataSource: TDADataSource + Left = 16 + Top = 48 + end +end diff --git a/Modulos/Presupuestos/Cliente/uObservaciones.pas b/Modulos/Presupuestos/Cliente/uObservaciones.pas new file mode 100644 index 0000000..671c51f --- /dev/null +++ b/Modulos/Presupuestos/Cliente/uObservaciones.pas @@ -0,0 +1,26 @@ +unit uObservaciones; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, DB, uDADataTable, cxMemo, cxDBEdit, cxControls, + cxContainer, cxEdit, cxTextEdit, ExtCtrls, StdCtrls; + +type + TfrViewObservaciones = class(TfrViewBase) + Label5: TLabel; + Bevel1: TBevel; + memObservaciones: TcxDBMemo; + DADataSource: TDADataSource; + private + { Private declarations } + public + { Public declarations } + end; + +implementation + +{$R *.dfm} + +end. diff --git a/Modulos/Presupuestos/Cliente/uPluginControllerPresupuestos.dfm b/Modulos/Presupuestos/Cliente/uPluginControllerPresupuestos.dfm new file mode 100644 index 0000000..926c517 --- /dev/null +++ b/Modulos/Presupuestos/Cliente/uPluginControllerPresupuestos.dfm @@ -0,0 +1,215 @@ +object ModulePresupuestos: TModulePresupuestos + OldCreateOrder = True + DefaultAction = actPresupuestos + Description = 'Ventas' + ModuleMenu = MainMenu + ModuleName = 'Presupuestos' + SmallImages = SmallImages + LargeImages = LargeImages + Author = 'Rodax Software' + Version = '1.0.0' + Left = 652 + Top = 457 + Height = 252 + Width = 401 + object LargeImages: TPngImageList + Height = 24 + Width = 24 + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD252000002744944415478DA + 63FCFFFF3F032D01E3F0B060F9D6D334B3056E41A4B729491AFFFCFDCFF0F7EF + 3F869FBFFE80E93FFFFE8169301B887FFDFECB109E5E876A41E249438206FF05 + AAFFF5F72FC3AF3F7FC0F4975FBF207C10065A02932BFAB59C61DED24D9816CC + 373F8F6291F45B6F8626CF660C8BFE010D0361CFD5F60C1F791E800DBF14F082 + 4169A520D8928ABFAB705B00022036B2E11718CF33189F346660B809E4A83330 + 9C353FCBA0F9438BE117D007415B3C189EB2DF66B811FC1AAC566C3137431DC3 + 5AFC3E8019CE7C8A89E1AFD93F300D32FC6CDC5906E379408BB419183EEB7C61 + E0BDC2C3F05AE50D43F84E5F86BD51C718841771817DD0CEB211BB05E841C3BC + 1C684124D082C54C10C39719339C8D02D2B38C193E447C6410D8C2CFF0C2E525 + 43D49E00860B7F2EC0E3A3977D0B911620FBE02A508203887F30807DF056ED1D + 83F02D218627324F18E20E86329CFA79166EC164AEEDF82D40B6E42F50C36596 + 4B9038B80894D087C481DC5B79869F3F7E60180E02382D404E4520C58A1FFC18 + 6A9C6BC196FC03A7F5BF700CE247EF0D841BFE33E50F03E34C46FC16C0003C6D + 03B1CCB31F0C5325B4B1E60BDE877B505C0E03582D40CFA57FA039F3EA444D06 + 09A7200645CB1E86FBC74BC06A5EDC0726E7FBF719E6EE7BCE30A7DA09C3E229 + 4F73312D98B2780756570A7E3BC7A0F4660ED8307450DD928DD3E273AC89080B + BA27CF27584C9C2B7B88553CA5751FA65AA0E12000B680919191A0E1C75A14FF + 93124C404BC3E6EEFBB19A140B4281D42A6CC13467EF77AC96022D6024CA0290 + E196969AABB0C91D3F7E1D6BDC008101D0828BC45A803778402EC5A597681FE0 + 0A1E200087355E0B6809686E0100FA3E2AAB1481BE0E0000000049454E44AE42 + 6082} + Name = 'PngImage1' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD252000001CC4944415478DA + 63FCFFFF3F032D0123B2058B361EA79A6D71FE968C582D004A906CD8DFBFFF80 + F83F9806010BDF6C868B7B66E1B6C0752FAA25BB9D8FE3341C59ED5A8B030CF3 + 56EF6198BF64237E0B4871B9C7016B0659651686F9DB8E30BC8BFEC6B070FD3E + C21660F301BA18086CB53DC2E07DD88661CFCD1360FEEB882F0C4B361DA0CC07 + FFFF01C31A88FF005D0F62FFFE070CFF3FFFC0BEF9F3EF2FC38A2D8749F70131 + 00E48B4741EF18D6EE38469C05306F9302EEFBBF61D8B0FB047116E04B39D800 + 48CF4CD5CD0C9BF69D24DE025C4105B31C260F533B4D7913C3D603A768E78389 + 0A1B18761D3E433B1FF4C9AC63D87BFC1CED7CD02DB986E1C0A90BF82D88F631 + 07E74E727CD02EBE8AE1C8994BF82D88F03403E74E727CD024BC9CE1E485ABF8 + 2D08753361F03B66479605F5024B19CE5CBE8EDF8200172386E0130E780D0359 + BEE4CF5C383F8625196C410DEF6286F3D76EE2B7C0D7C1005EAE40CAF97FE0B2 + 072C062CF373EFFB63C40F8C5FC9BD88E1D28D5BF82DF0B2D5C36938882E7814 + 8835F888B6C0CD5A1BA7E1A012B4E46930CEA023CA0247730DB061FFFE428AE5 + DF7F11C5F1BFFF508BFEFD437104322068819D891AB844A404E0B5A077F27C8A + 0C8701980500F0E629EF34B079A30000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end> + Left = 232 + Top = 16 + Bitmap = {} + end + object ModuleActionList: TActionList + Images = LargeImages + Left = 40 + Top = 72 + object actPresupuestos: TAction + Category = 'Ventas' + Caption = 'Presupuestos de cliente' + ImageIndex = 1 + OnExecute = actPresupuestosExecute + end + end + object MainMenu: TMainMenu + Images = LargeImages + Left = 40 + Top = 16 + object Ventas1: TMenuItem + Tag = 400 + Caption = '&Ventas' + GroupIndex = 1 + ImageIndex = 0 + object N1: TMenuItem + Tag = 1999 + Caption = '-' + end + object Presupuestosdecliente1: TMenuItem + Tag = 2000 + Action = actPresupuestos + end + end + end + object SmallImages: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD2520000011A4944415478DA + 63FCFFFF3F032580916203966D3945B60991DEA68C6003D4BD9919269F4CC6AA + E8F7DFBF0CDFFFFC61F8F6FB37C3C71F3FC0ECB9FE5B19523CE6309CDB310D61 + 0008C00C996B760EC3209B6D7270CD208062C02E9134B8429866E6534C1081AB + 0C0C7F13FF81999A6B4519BE035D02728DDCB204220CB80A118319A0B04200AC + 19843556A762370024B9DCFA328617903583BC62B83E13350C40FE074B421581 + 70EF05569C31907DD8036140F7E4F9180AA6DAEE60B04CAE6660905064F8717C + 2AC3F97DE719E6EE7BCE30A5C50BCE9EB3F73B23232E1B8EB528861E7CADB6EA + CEE58358E5939D24C32CABEFADC667C07F8A5D00A456811452D505208D5635F7 + 5783D480F211C92E98BBEF075C0FD8004A73230074DEE0E1BE54FBD500000000 + 49454E44AE426082} + Name = 'PngImage1' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001774944415478DA + 63FCFFFF3FC384055BFF3390010A12BC1919610600394469FAF3F71FC3EF3F7F + 192CBCB3192EEE99856A80C35E4B14C5079C8F836964F1ED368718662EDFC530 + 7FC9464C03F0815FBFFF826D06D10BD7EDC36E00BA0BB0815586BB18966D3A84 + DB0098B341E01F50EECF9F7F709B034F3B312CD3DDC1B06ADB11FC06C05CB2CB + EE0883DB211BB8CD61E7DD18166A6E6558BFEB387E03D06DFEFDE70F981F75D9 + 8361AEEA2686CDFB4EE136609FD33106A77D56605BD79BEE033B1B044036C75F + F76698AEB88161E7A133B80D00391BDDE69FBFFE30FC028AA5DFF567E8975CCD + 70F0D4454C0372623D195C0E58A384F862ED6D0CB157BDC0EC2972EB18721E05 + 317489AE643876EE32A601E9916E605BFEFCFE07B639E2A23BC37CF52D60B1DF + BF21B8F0792843ABE03286D397AE611A9018EA0CD70CF202CC6674D0C0BB98E1 + C2B59B9806C40638C23583FC8D6CF36F688C80F0BF7FFF192EDDB8856940848F + 2DC38A2D8789CE89180680044805200300115980F04CC063740000000049454E + 44AE426082} + Name = 'PngImage1' + Background = clWindow + end> + PngOptions = [pngBlendOnDisabled, pngGrayscaleOnDisabled] + Left = 308 + Top = 16 + Bitmap = {} + end + object ExtraImages: TPngImageList + Height = 28 + Width = 28 + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D494844520000001C0000001C0806000000720DDF + 940000000970485973000017120000171201679FD252000002D84944415478DA + ED946D48535118C7FF57855EB4171542B01756516845C868B63E4A1F2A7B1996 + 990B845008EA637DD2A828F34BF521D220C98484C28232B24C302329456D380D + A99C75035FB6A5B3E9ACAEBA7BD773CF4D9BEE6E6E23F6217AE0F09C73EE73CE + EF79CEFF9CCB793C1E44D2B8FFC07F0378EF697BC4A833C0DCCC6D616DE0163D + 104589BCC43CEB4B5E7DE62986E6728E9F9D0D3CD69A163448A47593A28849B7 + 5BF1731B01A6BFD7E97AC0F70DA0B0A4DC175899DE310B9CECC8C485DD17FD82 + 25DA58621589D8FB3003A3715F18ACCB60C3DAEA7806ADD759D03768F50F944D + EEABC1CC5C07B4AD5AE0230D3602A6741352845406945B56ED2E0C2CB0E0C3C1 + 2116BFA22A160DBA5E0CDAED812BF48645B745013C1D638EA4F40966CA33417B + 9BC09B00D7E6712C791C07AC0386D60F23A77E1F5E189B91786731ABB029FD33 + ECC343EA40B5A38CAE268844C05C02564529B0BB5A988CE4CBB5701E19C5F2DA + 652CD6B6D30E63830166B77946CFD7DB7938461C2100E5AA2C043CFABBC26E9A + 5C484D00ABD0B16104897509ACC2FE95FDC87B958DB609D30CF08D8EC798CB19 + 18A87661648DDEC574291A76D2C45645C3D58E35EC9B7B6ACA07265B93F613BE + FF189BFF96CA0B34CEFD0C2A6F386EEB467C4F61C0E7B2CADC80AF4B454C14B8 + C1DDE4D8DCCB340B04613C70856A6FABB81DD0E71701491A128B677102FF8C79 + 276F65FE4C45076E1565CC4AE291EB0416C527FB02E7FB7BF4DED882A48C2C68 + F457C0B79C562E09AF3C23F04A02158D569416EFF149E2D0B9165FE0F32673C0 + E31AB0BC45AAAD846DAA66D66F024ACB4EA9262103CBAE5DFD03BC7CBD12C158 + 72AC0B4F4E8E048C29B8D4E83DAC791F73C0F0934B600306E4382E28986CCDC5 + 1A4FA83A5202872B1A8507610383D5D13B010272E102B3694323750D7E426AF2 + F37718E62610165086E9F529F743D08F2540ED3C013BC30106A5DF74356A1632 + 3018FDFE26705EFDBC8FCF2F30921671E02FBE648AC22CC7AE57000000004945 + 4E44AE426082} + Name = 'PngImage0' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D494844520000001C0000001C0806000000720DDF + 940000000970485973000017120000171201679FD252000002974944415478DA + BDD6CB6F12411800F00FEBCD180FC6C47830C6831A138BD8576C552A25A520D5 + D896566B630F5E4D4CFC038C890713131313D3A451A9D08AA53CDB826B914240 + 0A2DA520D2FAA889070F4D2F6AA2F1B8BB9FBBCB23D402B3B84D3F962C33ECCC + 6FBE9985591922C27686AC1874075784025F27BCD9EC778532F7128EDC67A1AD + 7020D4ECA829095CD1D5C9CA82AEC03276B59DF8EFD1B35C5F2C374886618161 + 5968365C87B4C75A1E74CE66B05B5D0BAD81D39B3A0BB5CD9785FEBD9E6A09C3 + 13AB1F4CCE317160B5C183CAA3EDF0950E82855A805F837F60C43E4B061D6FDE + 634FBBBC6C86A5EA83AA18A882CD105E5D2AD4FD1CF80D6657900CDA7D693468 + 4E8ACE8C5F278641E1CCAF1D4DB3853ACB74880CDA7CEFB057A3289989D8E033 + 5DEFFD01566F440438C3811D59B0788AAA8DB59EEF60A3E6C8E0C4EB14F6694F + 0960A5BBB252F06DC78E53E0F4C5C8A0954A22F743950C9A8E7961D2BF4006C7 + A925BCAAAB2F8095D6323FA0E26BF26D8C473CE009C4C9E0CB5709ECBFD02039 + C3E1C35330134E8800BD1CA8970E0E1D72833F92248316EF225ED3374A9ED2C7 + 075D1088A6C8E00B4F1C073A9B2467F8E8800342F1B408703A8EFD9D8DC25F95 + 14F0E17E1B44121932383A35CFAD6113A8432D92A6F4C1BE0988A596C5817DDA + 06D044CE4ACAF0FEDE7188A73F9041F3640C0D1DF5A08B2A2581F7F65820B9F2 + 890C9ADC51BCACAE834B8BE74575CE0FCA4C1B0BE5C19D3704F0EE6E0EFAB82A + 0EBCA852E4B61C66C3E302C3661F1FE85CF9E6B7AE4DEB9C2FDFD9350A99CF5F + C8E073D71CEA5B15448CA1116EAD75979CF6AAC0116704754A3911E3CFB7D70D + 65A75A346874BC45ED393911DB30A0A21DBF384481CFEC61D49CA915F6B2AD08 + 22F8D416C2A1B1E12DC1F25111DC8EF80B6B3D9AE763000D2B0000000049454E + 44AE426082} + Name = 'PngImage1' + Background = clWindow + end> + Left = 232 + Top = 80 + Bitmap = {} + end +end diff --git a/Modulos/Presupuestos/Cliente/uPluginControllerPresupuestos.pas b/Modulos/Presupuestos/Cliente/uPluginControllerPresupuestos.pas new file mode 100644 index 0000000..3e00f50 --- /dev/null +++ b/Modulos/Presupuestos/Cliente/uPluginControllerPresupuestos.pas @@ -0,0 +1,69 @@ +unit uPluginControllerPresupuestos; + +interface + +uses + uModuleController, uInterfaces, uHostManager, Menus, Classes, ActnList, + ImgList, Controls, PngImageList; + +type + IMCPresupuestos = interface(IInterface) + ['{E148CA5A-63A0-4BE8-B634-6E7A92A90F25}'] + end; + + TModulePresupuestos = class(TModuleController, IMCPresupuestos) + actPresupuestos: TAction; + ExtraImages: TPngImageList; + LargeImages: TPngImageList; + MainMenu: TMainMenu; + ModuleActionList: TActionList; + SmallImages: TPngImageList; + Ventas1: TMenuItem; + Presupuestosdecliente1: TMenuItem; + N1: TMenuItem; + procedure actPresupuestosExecute(Sender: TObject); + public + end; + +implementation + +{$R *.dfm} + +uses + Forms, Dialogs, uGUIBase, uCustomEditor, SysUtils, uEditorPresupuestos, + uDataModulePresupuestos, uBizPresupuestosCliente; + +function GetModule : TModuleController; +begin + Result := TModulePresupuestos.Create(NIL); +end; + +exports + GetModule name GET_MODULE_FUNC; + +procedure TModulePresupuestos.actPresupuestosExecute(Sender: TObject); +var + aObj: IEditorPresupuestos; + APresupuestos : IBizPresupuestos; +begin + APresupuestos := dmPresupuestos.GetPresupuestos; + aObj := TfEditorPresupuestos.Create(Application); + try + with aObj do + begin + Presupuestos := APresupuestos; + ShowEmbedded; + end; + finally + APresupuestos := NIL; + aObj := NIL; + end; +end; + +initialization + RegisterModuleClass(TModulePresupuestos); + +finalization + UnRegisterModuleClass(TModulePresupuestos); + +end. diff --git a/Modulos/Presupuestos/Cliente/uViewContenido.dfm b/Modulos/Presupuestos/Cliente/uViewContenido.dfm new file mode 100644 index 0000000..9dd11ea --- /dev/null +++ b/Modulos/Presupuestos/Cliente/uViewContenido.dfm @@ -0,0 +1,288 @@ +inherited frViewContenido: TfrViewContenido + Width = 634 + Height = 349 + object cxGrid: TcxGrid + Left = 0 + Top = 24 + Width = 634 + Height = 325 + Align = alClient + TabOrder = 0 + LookAndFeel.Kind = lfOffice11 + LookAndFeel.NativeStyle = True + object cxGridView: TcxGridDBTableView + NavigatorButtons.ConfirmDelete = False + OnCustomDrawCell = cxGridViewCustomDrawCell + DataController.DataSource = DADataSource + DataController.Filter.Options = [fcoCaseInsensitive] + DataController.Options = [dcoAnsiSort, dcoAssignGroupingValues, dcoAssignMasterDetailKeys, dcoSaveExpanding, dcoSortByDisplayText, dcoFocusTopRowAfterSorting] + DataController.Summary.DefaultGroupSummaryItems = <> + DataController.Summary.FooterSummaryItems = < + item + Format = ',0.00 '#8364';-,0.00 '#8364 + Kind = skSum + Column = cxGridViewIMPORTETOTAL + end> + DataController.Summary.SummaryGroups = <> + Filtering.Visible = fvNever + OptionsBehavior.CellHints = True + OptionsBehavior.FocusCellOnTab = True + OptionsBehavior.GoToNextCellOnEnter = True + OptionsBehavior.FocusCellOnCycle = True + OptionsCustomize.ColumnFiltering = False + OptionsCustomize.ColumnGrouping = False + OptionsCustomize.DataRowSizing = True + OptionsData.Appending = True + OptionsSelection.InvertSelect = False + OptionsSelection.UnselectFocusedRecordOnExit = False + OptionsView.CellEndEllipsis = True + OptionsView.CellAutoHeight = True + OptionsView.ColumnAutoWidth = True + OptionsView.Footer = True + OptionsView.GridLineColor = cl3DLight + OptionsView.GroupByBox = False + OptionsView.HeaderEndEllipsis = True + OptionsView.Indicator = True + Styles.OnGetContentStyle = cxGridViewStylesGetContentStyle + object cxGridViewRecID: TcxGridDBColumn + DataBinding.FieldName = 'RecID' + Visible = False + Width = 49 + end + object cxGridViewCODIGOPRESUPUESTO: TcxGridDBColumn + DataBinding.FieldName = 'CODIGOPRESUPUESTO' + Visible = False + Width = 157 + end + object cxGridViewNUMCONCEPTO: TcxGridDBColumn + DataBinding.FieldName = 'NUMCONCEPTO' + Visible = False + Width = 119 + end + object cxGridViewPOSICION: TcxGridDBColumn + DataBinding.FieldName = 'POSICION' + Visible = False + SortIndex = 0 + SortOrder = soAscending + Width = 93 + end + object cxGridViewTIPO: TcxGridDBColumn + DataBinding.FieldName = 'TIPO' + PropertiesClassName = 'TcxComboBoxProperties' + Properties.DropDownListStyle = lsFixedList + Properties.ImmediatePost = True + Properties.Items.Strings = ( + 'A' + 'C' + 'S') + Width = 120 + end + object cxGridViewDESCRIPCION: TcxGridDBColumn + DataBinding.FieldName = 'DESCRIPCION' + PropertiesClassName = 'TcxTextEditProperties' + Width = 101 + end + object cxGridViewCANTIDAD: TcxGridDBColumn + DataBinding.FieldName = 'CANTIDAD' + PropertiesClassName = 'TcxSpinEditProperties' + Properties.Alignment.Horz = taRightJustify + Width = 77 + end + object cxGridViewIMPORTEUNIDAD: TcxGridDBColumn + DataBinding.FieldName = 'IMPORTEUNIDAD' + PropertiesClassName = 'TcxCurrencyEditProperties' + Properties.Alignment.Horz = taRightJustify + Properties.UseThousandSeparator = True + Width = 124 + end + object cxGridViewIMPORTETOTAL: TcxGridDBColumn + DataBinding.FieldName = 'IMPORTETOTAL' + PropertiesClassName = 'TcxCurrencyEditProperties' + Properties.Alignment.Horz = taRightJustify + Properties.ReadOnly = True + Properties.UseThousandSeparator = True + Options.Editing = False + Options.Focusing = False + Options.Moving = False + Styles.Content = cxStyle_IMPORTETOTAL + Width = 107 + end + end + object cxGridLevel: TcxGridLevel + GridView = cxGridView + end + end + object ToolBar1: TToolBar + Left = 0 + Top = 0 + Width = 634 + Height = 24 + AutoSize = True + ButtonWidth = 85 + Caption = 'ToolBar1' + EdgeBorders = [ebBottom] + Flat = True + Images = ContenidoImageList + List = True + ParentShowHint = False + ShowCaptions = True + ShowHint = True + TabOrder = 1 + Transparent = True + object ToolButton1: TToolButton + Left = 0 + Top = 0 + Action = actAnadir + AutoSize = True + ImageIndex = 0 + end + object ToolButton2: TToolButton + Left = 62 + Top = 0 + Action = actEliminar + AutoSize = True + ImageIndex = 1 + end + object ToolButton4: TToolButton + Left = 129 + Top = 0 + Action = RichEditBold1 + AutoSize = True + end + object ToolButton5: TToolButton + Left = 180 + Top = 0 + Action = RichEditItalic1 + end + object ToolButton6: TToolButton + Left = 265 + Top = 0 + Action = RichEditStrikeOut1 + end + object ToolButton3: TToolButton + Left = 350 + Top = 0 + Width = 8 + Caption = 'ToolButton3' + ImageIndex = 2 + Style = tbsSeparator + end + object ToolButton7: TToolButton + Left = 358 + Top = 0 + Action = RichEditUnderline1 + end + object ToolButton8: TToolButton + Left = 443 + Top = 0 + Width = 8 + Caption = 'ToolButton8' + ImageIndex = 5 + Style = tbsSeparator + end + object ToolButton9: TToolButton + Left = 451 + Top = 0 + Caption = 'ToolButton9' + ImageIndex = 5 + OnClick = ToolButton9Click + end + end + object ActionListContenido: TActionList + Images = ContenidoImageList + Left = 8 + Top = 104 + object actAnadir: TAction + Caption = 'A'#241'adir' + OnExecute = actAnadirExecute + end + object actEliminar: TAction + Caption = 'Eliminar' + OnExecute = actEliminarExecute + end + object RichEditBold1: TRichEditBold + Category = 'Formato' + AutoCheck = True + Caption = '&Bold' + Hint = 'Bold' + ImageIndex = 2 + ShortCut = 16450 + end + object RichEditItalic1: TRichEditItalic + Category = 'Formato' + AutoCheck = True + Caption = '&Italic' + Hint = 'Italic' + ImageIndex = 3 + ShortCut = 16457 + end + object RichEditUnderline1: TRichEditUnderline + Category = 'Formato' + AutoCheck = True + Caption = '&Underline' + Hint = 'Underline' + ImageIndex = 4 + ShortCut = 16469 + end + object RichEditStrikeOut1: TRichEditStrikeOut + Category = 'Formato' + AutoCheck = True + Caption = '&Strikeout' + Hint = 'Strikeout' + ImageIndex = 5 + end + end + object DADataSource: TDADataSource + DataTable = dmPresupuestos.tbl_DetallesPresupuestos + Left = 8 + Top = 136 + end + object ContenidoImageList: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000000D04944415478DA + 6364C0062630FCC72A5EC0C0882EC488CB80191909706EDDBA750CAF767D6260 + 5830240DF8F9FB3743EBE6CD780CC011602003409A7F0071EF8E1D10030C30D5 + 31A23B1706609AB1E23F7FC0F4FA2967B01B408CE6A3B76E815D856100319ABF + FFFAC570EEC103540340218D0C92EDECE01AD79E398335ACE106305CC0942CAC + 77871BB0F5E2454820620138A331D3CB09EEECBD57AF929E0E629DADC106FCF9 + F70F1E602419106A67C6F01DE40260805D7AFC9874037C2C0D194EDDBD8B1260 + 241900A6D103178B01000648ED7B1FCA93F30000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD2520000006E4944415478DA + 63FCFFFF3F03258071D40006C6397A1214990036203925952CCD73E7CCC66100 + C85BBF7F32307CFDC4C0F0FD2B03C33710FD05487F46E0374F19E6FE964032E0 + CF6F840120CD200D5F3F43357E42F0416C90013FBFA119B0B099742FC00CA028 + 10073E1D0C7D030077CE5E397DD56C480000000049454E44AE426082} + Name = 'PngImage1' + Background = clWindow + end> + Left = 264 + Top = 40 + Bitmap = {} + end + object cxStyleRepository1: TcxStyleRepository + Left = 264 + Top = 80 + object cxStyle_IMPORTETOTAL: TcxStyle + AssignedValues = [svColor] + Color = 16053492 + end + object cxStyle_SUBTOTAL: TcxStyle + AssignedValues = [svFont, svTextColor] + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + TextColor = clHighlight + end + end +end diff --git a/Modulos/Presupuestos/Cliente/uViewDatosPresupuesto.ddp b/Modulos/Presupuestos/Cliente/uViewDatosPresupuesto.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Presupuestos/Cliente/uViewDatosPresupuesto.ddp differ diff --git a/Modulos/Presupuestos/Cliente/uViewDatosPresupuesto.dfm b/Modulos/Presupuestos/Cliente/uViewDatosPresupuesto.dfm new file mode 100644 index 0000000..1ce6674 --- /dev/null +++ b/Modulos/Presupuestos/Cliente/uViewDatosPresupuesto.dfm @@ -0,0 +1,141 @@ +inherited frViewDatosPresupuesto: TfrViewDatosPresupuesto + Width = 355 + Height = 163 + Constraints.MinHeight = 110 + Constraints.MinWidth = 355 + DesignSize = ( + 355 + 163) + object Bevel1: TBevel + Left = 144 + Top = 8 + Width = 200 + Height = 9 + Anchors = [akLeft, akTop, akRight] + Shape = bsBottomLine + end + object Label5: TLabel + Left = 8 + Top = 8 + Width = 128 + Height = 13 + Caption = 'Datos del presupuesto' + Font.Charset = DEFAULT_CHARSET + Font.Color = clActiveCaption + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + ParentFont = False + end + object Label1: TLabel + Left = 16 + Top = 82 + Width = 64 + Height = 13 + Caption = 'Tipo presup.:' + end + object Label2: TLabel + Left = 16 + Top = 106 + Width = 73 + Height = 13 + Caption = 'Fecha presup.:' + end + object Label3: TLabel + Left = 16 + Top = 130 + Width = 62 + Height = 13 + Caption = 'V'#225'lido hasta:' + end + object Label4: TLabel + Left = 16 + Top = 30 + Width = 43 + Height = 13 + Caption = 'Montaje:' + end + object Label6: TLabel + Left = 17 + Top = 55 + Width = 37 + Height = 13 + Caption = 'Opci'#243'n:' + end + object edtFechaPresupuesto: TcxDBDateEdit + Left = 100 + Top = 102 + Anchors = [akLeft, akTop, akRight] + DataBinding.DataField = 'FECHAPRESUPUESTO' + DataBinding.DataSource = DADataSource + Style.LookAndFeel.NativeStyle = True + Style.Shadow = False + Style.ButtonTransparency = ebtNone + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 1 + Width = 240 + end + object edtVigencia: TcxDBDateEdit + Left = 100 + Top = 126 + Anchors = [akLeft, akTop, akRight] + DataBinding.DataField = 'VIGENCIAPRESUPUESTO' + DataBinding.DataSource = DADataSource + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 2 + Width = 240 + end + object eReferencia: TcxDBTextEdit + Left = 100 + Top = 27 + Anchors = [akLeft, akTop, akRight] + DataBinding.DataField = 'REFERENCIA' + DataBinding.DataSource = DADataSource + Properties.OnEditValueChanged = eReferenciaPropertiesEditValueChanged + Style.LookAndFeel.NativeStyle = True + StyleDisabled.BorderStyle = ebs3D + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 0 + Width = 240 + end + object cbTipoPresupuesto: TcxDBComboBox + Left = 100 + Top = 77 + DataBinding.DataField = 'TIPO' + DataBinding.DataSource = DADataSource + Properties.DropDownListStyle = lsFixedList + Properties.ImmediatePost = True + Properties.OnInitPopup = cbTipoPresupuestoPropertiesInitPopup + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 3 + Width = 240 + end + object eOpcion: TcxDBTextEdit + Left = 100 + Top = 52 + Anchors = [akLeft, akTop, akRight] + DataBinding.DataField = 'OPCION' + DataBinding.DataSource = DADataSource + Properties.OnEditValueChanged = eReferenciaPropertiesEditValueChanged + Style.LookAndFeel.NativeStyle = True + StyleDisabled.BorderStyle = ebs3D + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 4 + Width = 240 + end + object DADataSource: TDADataSource + Left = 192 + end +end diff --git a/Modulos/Presupuestos/Cliente/uViewDatosPresupuesto.pas b/Modulos/Presupuestos/Cliente/uViewDatosPresupuesto.pas new file mode 100644 index 0000000..0b8f7c5 --- /dev/null +++ b/Modulos/Presupuestos/Cliente/uViewDatosPresupuesto.pas @@ -0,0 +1,68 @@ +unit uViewDatosPresupuesto; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, DB, uDADataTable, cxControls, cxContainer, cxEdit, + cxTextEdit, cxMaskEdit, cxDropDownEdit, cxCalendar, cxDBEdit, StdCtrls, + Mask, DBCtrls, ExtCtrls, cxGraphics; + +type + TfrViewDatosPresupuesto = class(TfrViewBase) + Bevel1: TBevel; + Label5: TLabel; + Label1: TLabel; + Label2: TLabel; + edtFechaPresupuesto: TcxDBDateEdit; + Label3: TLabel; + edtVigencia: TcxDBDateEdit; + DADataSource: TDADataSource; + eReferencia: TcxDBTextEdit; + Label4: TLabel; + cbTipoPresupuesto: TcxDBComboBox; + eOpcion: TcxDBTextEdit; + Label6: TLabel; + procedure cbTipoPresupuestoPropertiesInitPopup(Sender: TObject); + procedure eReferenciaPropertiesEditValueChanged(Sender: TObject); + private + { Private declarations } + public + { Public declarations } + end; + +var + frViewDatosPresupuesto: TfrViewDatosPresupuesto; + +implementation + +uses uBizPresupuestosCliente; + +{$R *.dfm} + +procedure TfrViewDatosPresupuesto.cbTipoPresupuestoPropertiesInitPopup( + Sender: TObject); +begin + inherited; + with cbTipoPresupuesto.Properties.Items do + if Count = 0 then + begin + BeginUpdate; + try + Clear; + Add(TIPO_COCINA); + Add(TIPO_BANO); + finally + EndUpdate; + end; + end; +end; + +procedure TfrViewDatosPresupuesto.eReferenciaPropertiesEditValueChanged( + Sender: TObject); +begin + inherited; + cbTipoPresupuesto.Enabled := not (Length(eReferencia.Text) > 0); +end; + +end. diff --git a/Modulos/Presupuestos/Cliente/uViewDetallesPresupuesto.ddp b/Modulos/Presupuestos/Cliente/uViewDetallesPresupuesto.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Presupuestos/Cliente/uViewDetallesPresupuesto.ddp differ diff --git a/Modulos/Presupuestos/Cliente/uViewDetallesPresupuesto.dfm b/Modulos/Presupuestos/Cliente/uViewDetallesPresupuesto.dfm new file mode 100644 index 0000000..3b2fa0e --- /dev/null +++ b/Modulos/Presupuestos/Cliente/uViewDetallesPresupuesto.dfm @@ -0,0 +1,74 @@ +inherited frViewDetallesPresupuesto: TfrViewDetallesPresupuesto + Width = 443 + inherited cxGrid: TcxGrid + Width = 443 + inherited cxGridView: TcxGridDBTableView + DataController.Summary.FooterSummaryItems = < + item + Format = ',0.00 '#8364';-,0.00 '#8364 + Kind = skSum + end + item + Format = '0 Conceptos' + Kind = skCount + Column = cxGridViewDESCRIPCION + end + item + Format = '0 Unidades' + Kind = skSum + Column = cxGridViewCANTIDAD + end> + OptionsSelection.InvertSelect = False + OptionsView.Footer = True + inherited cxGridViewTIPO: TcxGridDBColumn + Width = 40 + end + inherited cxGridViewDESCRIPCION: TcxGridDBColumn + Width = 165 + end + object cxGridViewPUNTOS: TcxGridDBColumn [3] + DataBinding.FieldName = 'PUNTOS' + PropertiesClassName = 'TcxMaskEditProperties' + Properties.Alignment.Horz = taRightJustify + Styles.OnGetContentStyle = cxGridViewIMPORTEPUNTOSStylesGetContentStyle + Width = 33 + end + object cxGridViewIMPORTEPUNTOS: TcxGridDBColumn [4] + DataBinding.FieldName = 'IMPORTEPUNTOS' + PropertiesClassName = 'TcxCurrencyEditProperties' + Properties.Alignment.Horz = taRightJustify + Styles.OnGetContentStyle = cxGridViewIMPORTEPUNTOSStylesGetContentStyle + Width = 55 + end + inherited cxGridViewCANTIDAD: TcxGridDBColumn + Properties.Alignment.Horz = taRightJustify + Width = 29 + end + inherited cxGridViewIMPORTEUNIDAD: TcxGridDBColumn + Width = 43 + end + inherited cxGridViewIMPORTETOTAL: TcxGridDBColumn + Width = 43 + end + inherited cxGridViewVISIBLE: TcxGridDBColumn + Styles.OnGetContentStyle = cxGridViewVISIBLEStylesGetContentStyle + Width = 21 + end + end + end + inherited ToolBar1: TToolBar + Width = 443 + end + inherited cxStyleRepository1: TcxStyleRepository + object cxStyle_PUNTOS: TcxStyle + AssignedValues = [svColor, svFont, svTextColor] + Color = 16053492 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + TextColor = clWindowText + end + end +end diff --git a/Modulos/Presupuestos/Cliente/uViewDetallesPresupuesto.pas b/Modulos/Presupuestos/Cliente/uViewDetallesPresupuesto.pas new file mode 100644 index 0000000..c8fd2df --- /dev/null +++ b/Modulos/Presupuestos/Cliente/uViewDetallesPresupuesto.pas @@ -0,0 +1,98 @@ +unit uViewDetallesPresupuesto; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, cxStyles, cxCustomData, cxGraphics, + cxFilter, cxData, cxDataStorage, cxEdit, DB, cxDBData, cxImageComboBox, + cxTextEdit, cxSpinEdit, ImgList, PngImageList, uDADataTable, ActnList, + ComCtrls, ToolWin, cxGridLevel, cxGridCustomTableView, cxGridTableView, + cxGridDBTableView, cxClasses, cxControls, cxGridCustomView, cxGrid, + cxCheckBox, TB2Item, TBX, TB2Dock, TB2Toolbar, JvExComCtrls, JvToolBar, + uViewDetallesFamilias, cxMaskEdit, cxCurrencyEdit; + +type + TfrViewDetallesPresupuesto = class(TfrViewDetallesFamilias) + cxGridViewPUNTOS: TcxGridDBColumn; + cxGridViewIMPORTEPUNTOS: TcxGridDBColumn; + cxStyle_PUNTOS: TcxStyle; + procedure cxGridViewEditing(Sender: TcxCustomGridTableView; + AItem: TcxCustomGridTableItem; var AAllow: Boolean); + procedure cxGridViewIMPORTEPUNTOSStylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); + procedure cxGridViewVISIBLEStylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); + private + { Private declarations } + public + { Public declarations } + end; + + +implementation + +uses uBizImportesDetalleBase, uViewContenido; + +{$R *.dfm} + +procedure TfrViewDetallesPresupuesto.cxGridViewEditing( + Sender: TcxCustomGridTableView; AItem: TcxCustomGridTableItem; + var AAllow: Boolean); +var + IndiceCol : Integer; +begin + IndiceCol := (Sender as TcxGridDBTableView).GetColumnByFieldName(fld_IMPORTEPUNTOS).Index; + if AItem.Index = IndiceCol then + begin + IndiceCol := (Sender as TcxGridDBTableView).GetColumnByFieldName(fld_TIPODETALLE).Index; + if (UpperCase(AItem.GridView.Items[IndiceCol].EditValue) = TIPODETALLE_SUBTOTAL) then + AAllow := False + else + AAllow := True + end + else + inherited; +end; + +procedure TfrViewDetallesPresupuesto.cxGridViewIMPORTEPUNTOSStylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); +var + IndiceCol : Integer; + ATipo : String; +begin + if Assigned(ARecord) then + begin + IndiceCol := (Sender as TcxGridDBTableView).GetColumnByFieldName(fld_TIPODETALLE).Index; + ATipo := VarToStr(ARecord.Values[IndiceCol]); + if ATipo = TIPODETALLE_CONCEPTO then + AStyle := cxStyle_PUNTOS; + if ATipo = TIPODETALLE_SUBTOTAL then + AStyle := cxStyle_SUBTOTAL; + if ATipo = TIPODETALLE_TITULO then + AStyle := cxStyle_TITULO; + end; +end; + +procedure TfrViewDetallesPresupuesto.cxGridViewVISIBLEStylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); +var + IndiceCol : Integer; + ATipo : String; +begin + if Assigned(ARecord) then + begin + IndiceCol := (Sender as TcxGridDBTableView).GetColumnByFieldName(fld_TIPODETALLE).Index; + ATipo := VarToStr(ARecord.Values[IndiceCol]); + if ATipo = TIPODETALLE_SUBTOTAL then + AStyle := cxStyle_SUBTOTAL; + if ATipo = TIPODETALLE_TITULO then + AStyle := cxStyle_TITULO; + end; +end; + +end. diff --git a/Modulos/Presupuestos/Cliente/uViewPresupuesto.ddp b/Modulos/Presupuestos/Cliente/uViewPresupuesto.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Presupuestos/Cliente/uViewPresupuesto.ddp differ diff --git a/Modulos/Presupuestos/Cliente/uViewPresupuesto.dfm b/Modulos/Presupuestos/Cliente/uViewPresupuesto.dfm new file mode 100644 index 0000000..388f89d --- /dev/null +++ b/Modulos/Presupuestos/Cliente/uViewPresupuesto.dfm @@ -0,0 +1,239 @@ +inherited frViewPresupuesto: TfrViewPresupuesto + Width = 762 + Height = 452 + inline frViewDatosPresupuesto1: TfrViewDatosPresupuesto + Left = 0 + Top = 0 + Width = 355 + Height = 148 + Constraints.MinHeight = 110 + Constraints.MinWidth = 355 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 0 + ReadOnly = False + DesignSize = ( + 355 + 148) + inherited Bevel1: TBevel + Width = 217 + end + inherited edtFechaPresupuesto: TcxDBDateEdit + ParentFont = False + Style.Color = clInfoBk + Style.Font.Color = clBlack + Style.TextColor = clBlack + Style.IsFontAssigned = True + StyleFocused.Color = clInfoBk + Width = 247 + end + inherited edtVigencia: TcxDBDateEdit + Width = 247 + end + inherited eReferencia: TcxDBTextEdit + Enabled = False + Properties.ReadOnly = True + StyleDisabled.TextColor = clActiveCaption + Width = 248 + end + inherited cbTipoPresupuesto: TcxDBComboBox + ParentFont = False + Style.Color = clInfoBk + Style.IsFontAssigned = True + StyleHot.Color = clInfoBk + Width = 248 + end + inherited eOpcion: TcxDBTextEdit + Width = 248 + end + inherited DADataSource: TDADataSource + Left = 296 + Top = 16 + end + end + inline frViewPlazoEntrega1: TfrViewPlazoEntrega + Left = 358 + Top = 281 + Width = 391 + Height = 84 + Constraints.MinWidth = 300 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 1 + ReadOnly = False + inherited Bevel1: TBevel + Width = 267 + end + inherited memPlazoEntrega: TcxDBMemo + Anchors = [akLeft, akTop, akRight] + Height = 45 + Width = 360 + end + end + inline frViewObservaciones1: TfrViewObservaciones + Left = 0 + Top = 358 + Width = 751 + Height = 86 + Constraints.MinWidth = 300 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 2 + ReadOnly = False + inherited Bevel1: TBevel + Width = 643 + end + inherited memObservaciones: TcxDBMemo + Anchors = [akLeft, akTop, akRight] + Height = 45 + Width = 720 + end + end + inline frViewFormaPago1: TfrViewFormaPago + Left = 0 + Top = 281 + Width = 361 + Height = 84 + Constraints.MinWidth = 300 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 3 + ReadOnly = False + inherited Bevel1: TBevel + Width = 253 + end + inherited memFormaPago: TcxDBMemo + Anchors = [akLeft, akTop, akRight] + Height = 45 + Width = 330 + end + end + inline frViewSituacionPresupuesto1: TfrViewSituacionPresupuesto + Left = 0 + Top = 168 + Width = 360 + Height = 97 + Constraints.MinHeight = 85 + Constraints.MinWidth = 360 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 4 + ReadOnly = False + inherited Label6: TLabel + Width = 134 + Caption = 'Estado del presupuesto' + end + inherited Bevel2: TBevel + Left = 152 + Width = 196 + end + inherited cbiSituacion: TcxDBImageComboBox + Style.Color = clInfoBk + StyleFocused.Color = clInfoBk + StyleHot.Color = clInfoBk + end + inherited ImageList: TPngImageList + Left = 64 + Top = 40 + end + end + inline frViewClientePresupuesto1: TfrViewDatosYSeleccionContacto + Left = 360 + Top = 0 + Width = 391 + Height = 219 + Constraints.MinHeight = 202 + Constraints.MinWidth = 350 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 5 + ReadOnly = False + inherited Label5: TLabel + Width = 97 + Caption = 'Datos del cliente' + end + inherited Bevel1: TBevel + Left = 112 + Width = 251 + end + inherited ToolBar1: TToolBar + ButtonWidth = 129 + inherited ToolButton3: TToolButton + Left = 106 + end + inherited ToolButton2: TToolButton + Left = 114 + end + end + inherited edtlNombre: TcxDBTextEdit + StyleDisabled.TextColor = clActiveCaption + Width = 296 + end + inherited edtPoblacion: TcxDBTextEdit + StyleDisabled.TextColor = clActiveCaption + TabOrder = 4 + Width = 296 + end + inherited edtProvincia: TcxDBTextEdit + StyleDisabled.TextColor = clActiveCaption + TabOrder = 3 + Width = 152 + end + inherited edtNIFCIF: TcxDBTextEdit + StyleDisabled.TextColor = clActiveCaption + Width = 296 + end + inherited edtCalle: TcxDBTextEdit + StyleDisabled.TextColor = clActiveCaption + Width = 296 + end + inherited ToolBar2: TToolBar + ButtonWidth = 178 + end + inherited edtCodigoPostal: TcxDBTextEdit + StyleDisabled.TextColor = clActiveCaption + Width = 105 + end + inherited DADataSource: TDADataSource + Left = 64 + Top = 40 + end + inherited ActionList1: TActionList + inherited actElegirContacto: TAction + Caption = 'Elegir un cliente' + end + inherited actAnadirContacto: TAction + Caption = 'Dar de alta un cliente' + end + inherited actVerContacto: TAction + Caption = 'Ver ficha completa del cliente...' + end + end + end + object DADataSource: TDADataSource + end +end diff --git a/Modulos/Presupuestos/Cliente/uViewPresupuesto.pas b/Modulos/Presupuestos/Cliente/uViewPresupuesto.pas new file mode 100644 index 0000000..c7a17fb --- /dev/null +++ b/Modulos/Presupuestos/Cliente/uViewPresupuesto.pas @@ -0,0 +1,76 @@ +unit uViewPresupuesto; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, uBizPresupuestosCliente, cxControls, cxContainer, + cxEdit, cxTextEdit, cxMaskEdit, cxDropDownEdit, cxCalendar, cxDBEdit, DB, + uDADataTable, StdCtrls, Mask, DBCtrls, ExtCtrls, cxGraphics, uCustomView, + uViewDatosPresupuesto, uViewSituacionPresupuesto, + uViewFormaPago, uViewPlazoEntrega, uViewObservaciones, + uViewDatosYSeleccionContacto, AppEvnts; + +type + IViewPresupuesto = interface(IViewBase) + ['{7FDBC909-C3F2-4778-9FE3-1D813FEA7FC1}'] + function GetPresupuesto: IBizPresupuestos; + procedure SetPresupuesto(const Value: IBizPresupuestos); + property Presupuesto: IBizPresupuestos read GetPresupuesto write + SetPresupuesto; + end; + + TfrViewPresupuesto = class(TfrViewBase, IViewPresupuesto) + DADataSource: TDADataSource; + frViewClientePresupuesto1: TfrViewDatosYSeleccionContacto; + frViewDatosPresupuesto1: TfrViewDatosPresupuesto; + frViewFormaPago1: TfrViewFormaPago; + frViewObservaciones1: TfrViewObservaciones; + frViewPlazoEntrega1: TfrViewPlazoEntrega; + frViewSituacionPresupuesto1: TfrViewSituacionPresupuesto; + private + FPresupuesto: IBizPresupuestos; + procedure OnContactoChanged(Sender : TObject); + protected + function GetPresupuesto: IBizPresupuestos; + procedure SetPresupuesto(const Value: IBizPresupuestos); + public + property Presupuesto: IBizPresupuestos read GetPresupuesto write + SetPresupuesto; + end; + +implementation + +uses uBizContacto, uExceptions; + +{$R *.dfm} + +function TfrViewPresupuesto.GetPresupuesto: IBizPresupuestos; +begin + Result := FPresupuesto; +end; + +procedure TfrViewPresupuesto.OnContactoChanged(Sender : TObject); +begin + FPresupuesto.Cliente := (frViewClientePresupuesto1.Contacto as IBizCliente); +end; + +procedure TfrViewPresupuesto.SetPresupuesto(const Value: IBizPresupuestos); +begin + FPresupuesto := Value; + if Assigned(FPresupuesto) then + DADataSource.DataTable := FPresupuesto.DataTable + else + DADataSource.DataTable := NIL; + + frViewDatosPresupuesto1.DADataSource.DataTable := DADataSource.DataTable; + frViewSituacionPresupuesto1.DADataSource.DataTable := DADataSource.DataTable; + frViewFormaPago1.DADataSource.DataTable := DADataSource.DataTable; + frViewPlazoEntrega1.DADataSource.DataTable := DADataSource.DataTable; + frViewObservaciones1.DADataSource.DataTable := DADataSource.DataTable; + + frViewClientePresupuesto1.Contacto := Presupuesto.Cliente; + frViewClientePresupuesto1.OnContactoChanged := OnContactoChanged; +end; + +end. diff --git a/Modulos/Presupuestos/Cliente/uViewPresupuestoRelacionado.ddp b/Modulos/Presupuestos/Cliente/uViewPresupuestoRelacionado.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Presupuestos/Cliente/uViewPresupuestoRelacionado.ddp differ diff --git a/Modulos/Presupuestos/Cliente/uViewPresupuestoRelacionado.dfm b/Modulos/Presupuestos/Cliente/uViewPresupuestoRelacionado.dfm new file mode 100644 index 0000000..0bf0202 --- /dev/null +++ b/Modulos/Presupuestos/Cliente/uViewPresupuestoRelacionado.dfm @@ -0,0 +1,158 @@ +inherited frViewPresupuestoRelacionado: TfrViewPresupuestoRelacionado + Width = 360 + Height = 90 + Constraints.MinHeight = 90 + Constraints.MinWidth = 360 + DesignSize = ( + 360 + 90) + object Label5: TLabel + Left = 8 + Top = 8 + Width = 141 + Height = 13 + Caption = 'Presupuesto relacionado' + Font.Charset = DEFAULT_CHARSET + Font.Color = clActiveCaption + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + ParentFont = False + end + object Bevel1: TBevel + Left = 152 + Top = 8 + Width = 197 + Height = 9 + Anchors = [akLeft, akTop, akRight] + Shape = bsBottomLine + end + object lblNombre: TLabel + Left = 16 + Top = 64 + Width = 56 + Height = 13 + Caption = 'Referencia:' + end + object ToolBar1: TToolBar + Left = 8 + Top = 29 + Width = 338 + Height = 22 + Align = alNone + Anchors = [akLeft, akTop, akRight] + ButtonWidth = 131 + Caption = 'ToolBar1' + EdgeBorders = [] + EdgeInner = esNone + EdgeOuter = esNone + Flat = True + Images = PngImageList + List = True + ParentShowHint = False + ShowCaptions = True + ShowHint = True + TabOrder = 0 + Transparent = True + Wrapable = False + object ToolButton1: TToolButton + Left = 0 + Top = 0 + Action = actElegirPresupuesto + AutoSize = True + end + object ToolButton3: TToolButton + Left = 135 + Top = 0 + Width = 8 + Caption = 'ToolButton3' + ImageIndex = 1 + Style = tbsSeparator + end + object ToolButton2: TToolButton + Left = 143 + Top = 0 + Action = actVerPresupuesto + end + end + object edtlReferencia: TcxDBTextEdit + Left = 100 + Top = 60 + Anchors = [akLeft, akTop, akRight] + AutoSize = False + DataBinding.DataField = 'REFERENCIA' + DataBinding.DataSource = DADataSource + Enabled = False + ParentFont = False + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clActiveCaption + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 1 + Height = 21 + Width = 245 + end + object ActionList1: TActionList + Images = PngImageList + Left = 256 + object actElegirPresupuesto: TAction + Caption = 'Elegir un presupuesto' + ImageIndex = 1 + end + object actVerPresupuesto: TAction + Caption = 'Ver el presupuesto...' + ImageIndex = 1 + OnExecute = actVerPresupuestoExecute + OnUpdate = actVerPresupuestoUpdate + end + end + object PngImageList: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001774944415478DA + 63FCFFFF3FC384055BFF3390010A12BC1919610600394469FAF3F71FC3EF3F7F + 192CBCB3192EEE99856A80C35E4B14C5079C8F836964F1ED368718662EDFC530 + 7FC9464C03F0815FBFFF826D06D10BD7EDC36E00BA0BB0815586BB18966D3A84 + DB0098B341E01F50EECF9F7F709B034F3B312CD3DDC1B06ADB11FC06C05CB2CB + EE0883DB211BB8CD61E7DD18166A6E6558BFEB387E03D06DFEFDE70F981F75D9 + 8361AEEA2686CDFB4EE136609FD33106A77D56605BD79BEE033B1B044036C75F + F76698AEB88161E7A133B80D00391BDDE69FBFFE30FC028AA5DFF567E8975CCD + 70F0D4454C0372623D195C0E58A384F862ED6D0CB157BDC0EC2972EB18721E05 + 317489AE643876EE32A601E9916E605BFEFCFE07B639E2A23BC37CF52D60B1DF + BF21B8F0792843ABE03286D397AE611A9018EA0CD70CF202CC6674D0C0BB98E1 + C2B59B9806C40638C23583FC8D6CF36F688C80F0BF7FFF192EDDB8856940848F + 2DC38A2D8789CE89180680044805200300115980F04CC063740000000049454E + 44AE426082} + Name = 'PngImage1' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001774944415478DA + 63FCFFFF3FC384055BFF3390010A12BC1919610600394469FAF3F71FC3EF3F7F + 192CBCB3192EEE99856A80C35E4B14C5079C8F836964F1ED368718662EDFC530 + 7FC9464C03F0815FBFFF826D06D10BD7EDC36E00BA0BB0815586BB18966D3A84 + DB0098B341E01F50EECF9F7F709B034F3B312CD3DDC1B06ADB11FC06C05CB2CB + EE0883DB211BB8CD61E7DD18166A6E6558BFEB387E03D06DFEFDE70F981F75D9 + 8361AEEA2686CDFB4EE136609FD33106A77D56605BD79BEE033B1B044036C75F + F76698AEB88161E7A133B80D00391BDDE69FBFFE30FC028AA5DFF567E8975CCD + 70F0D4454C0372623D195C0E58A384F862ED6D0CB157BDC0EC2972EB18721E05 + 317489AE643876EE32A601E9916E605BFEFCFE07B639E2A23BC37CF52D60B1DF + BF21B8F0792843ABE03286D397AE611A9018EA0CD70CF202CC6674D0C0BB98E1 + C2B59B9806C40638C23583FC8D6CF36F688C80F0BF7FFF192EDDB8856940848F + 2DC38A2D8789CE89180680044805200300115980F04CC063740000000049454E + 44AE426082} + Name = 'PngImage2' + Background = clWindow + end> + Left = 288 + Bitmap = {} + end + object DADataSource: TDADataSource + Left = 320 + end +end diff --git a/Modulos/Presupuestos/Cliente/uViewPresupuestoRelacionado.pas b/Modulos/Presupuestos/Cliente/uViewPresupuestoRelacionado.pas new file mode 100644 index 0000000..8be171b --- /dev/null +++ b/Modulos/Presupuestos/Cliente/uViewPresupuestoRelacionado.pas @@ -0,0 +1,111 @@ +unit uViewPresupuestoRelacionado; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, ExtCtrls, StdCtrls, cxControls, cxContainer, cxEdit, + cxTextEdit, cxDBEdit, ComCtrls, ToolWin, ImgList, PngImageList, ActnList, + DB, uDADataTable, uBizPresupuestosCliente; + +type + IViewPresupuestoRelacionado = interface(IViewBase) + ['{42655AAC-2669-452D-8E56-C9AF657EF2BF}'] + + function GetPresupuesto: IBizPresupuestos; + procedure SetPresupuesto(const Value: IBizPresupuestos); + property Presupuesto: IBizPresupuestos read GetPresupuesto write SetPresupuesto; + + function GetOnPresupuestoChanged : TNotifyEvent; + procedure SetOnPresupuestoChanged (const Value : TNotifyEvent); + property OnPresupuestoChanged : TNotifyEvent read GetOnPresupuestoChanged + write SetOnPresupuestoChanged; + end; + + TfrViewPresupuestoRelacionado = class(TfrViewBase, IViewPresupuestoRelacionado) + Label5: TLabel; + Bevel1: TBevel; + ActionList1: TActionList; + actElegirPresupuesto: TAction; + actVerPresupuesto: TAction; + PngImageList: TPngImageList; + ToolBar1: TToolBar; + ToolButton1: TToolButton; + ToolButton3: TToolButton; + ToolButton2: TToolButton; + lblNombre: TLabel; + DADataSource: TDADataSource; + edtlReferencia: TcxDBTextEdit; + procedure actVerPresupuestoExecute(Sender: TObject); + procedure actVerPresupuestoUpdate(Sender: TObject); + private + FPresupuesto : IBizPresupuestos; + FOnPresupuestoChanged : TNotifyEvent; + protected + function GetPresupuesto: IBizPresupuestos; + procedure SetPresupuesto(const Value: IBizPresupuestos); + + function GetOnPresupuestoChanged : TNotifyEvent; + procedure SetOnPresupuestoChanged (const Value : TNotifyEvent); + public + property Presupuesto: IBizPresupuestos read GetPresupuesto write SetPresupuesto; + property OnPresupuestoChanged : TNotifyEvent read GetOnPresupuestoChanged + write SetOnPresupuestoChanged; + end; + +var + frViewPresupuestoRelacionado: TfrViewPresupuestoRelacionado; + +implementation + +uses + uDataModulePresupuestos, schPresupuestosClient_Intf; + +{$R *.dfm} + +{ TfrViewPresupuestoAlbaran } + +procedure TfrViewPresupuestoRelacionado.actVerPresupuestoExecute( + Sender: TObject); +begin + FPresupuesto.Show; +end; + +procedure TfrViewPresupuestoRelacionado.actVerPresupuestoUpdate( + Sender: TObject); +begin + inherited; + (Sender as TAction).Enabled := Assigned(FPresupuesto); +end; + +function TfrViewPresupuestoRelacionado.GetPresupuesto: IBizPresupuestos; +begin + Result := FPresupuesto; +end; + +procedure TfrViewPresupuestoRelacionado.SetPresupuesto( + const Value: IBizPresupuestos); +begin + FPresupuesto := Value; + DADataSource.DataTable := FPresupuesto.DataTable; + + if not FPresupuesto.DataTable.Active then + FPresupuesto.DataTable.Active := True; + + if Assigned(FOnPresupuestoChanged) then + FOnPresupuestoChanged(Self); +end; + + +function TfrViewPresupuestoRelacionado.GetOnPresupuestoChanged: TNotifyEvent; +begin + Result := FOnPresupuestoChanged; +end; + +procedure TfrViewPresupuestoRelacionado.SetOnPresupuestoChanged( + const Value: TNotifyEvent); +begin + FOnPresupuestoChanged := Value; +end; + +end. diff --git a/Modulos/Presupuestos/Cliente/uViewPresupuestos.ddp b/Modulos/Presupuestos/Cliente/uViewPresupuestos.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Presupuestos/Cliente/uViewPresupuestos.ddp differ diff --git a/Modulos/Presupuestos/Cliente/uViewPresupuestos.dfm b/Modulos/Presupuestos/Cliente/uViewPresupuestos.dfm new file mode 100644 index 0000000..014ccf6 --- /dev/null +++ b/Modulos/Presupuestos/Cliente/uViewPresupuestos.dfm @@ -0,0 +1,228 @@ +inherited frViewPresupuestos: TfrViewPresupuestos + inherited cxGrid: TcxGrid + RootLevelOptions.DetailTabsPosition = dtpTop + OnActiveTabChanged = cxGridActiveTabChanged + inherited cxGridView: TcxGridDBTableView + DataController.KeyFieldNames = 'CODIGO' + DataController.Summary.FooterSummaryItems = < + item + Format = '0 Presupuestos' + Kind = skCount + Column = cxGridViewNOMBRE + end + item + Format = ',0.00 '#8364';-,0.00 '#8364 + Kind = skSum + Column = cxGridViewIMPORTETOTAL + end> + Styles.OnGetContentStyle = cxGridViewStylesGetContentStyle + object cxGridViewICONO: TcxGridDBColumn + OnCustomDrawCell = cxGridViewCODIGOCustomDrawCell + BestFitMaxWidth = 25 + Options.Sorting = False + Width = 20 + end + object cxGridViewSITUACION: TcxGridDBColumn + DataBinding.FieldName = 'SITUACION' + PropertiesClassName = 'TcxImageComboBoxProperties' + Properties.Images = PngImageList + Properties.Items = < + item + Description = 'Pendiente' + Value = 'Pendiente' + end + item + Description = 'Aceptado' + ImageIndex = 0 + Value = 'Aceptado' + end + item + Description = 'Rechazado' + ImageIndex = 1 + Value = 'Rechazado' + end> + Properties.ShowDescriptions = False + BestFitMaxWidth = 25 + Width = 20 + IsCaptionAssigned = True + end + object cxGridViewCODIGO: TcxGridDBColumn + DataBinding.FieldName = 'CODIGO' + Visible = False + BestFitMaxWidth = 25 + Width = 25 + IsCaptionAssigned = True + end + object cxGridViewFECHAPRESUPUESTO: TcxGridDBColumn + DataBinding.FieldName = 'FECHAPRESUPUESTO' + SortIndex = 0 + SortOrder = soDescending + Width = 63 + end + object cxGridViewREFERENCIA: TcxGridDBColumn + Caption = 'Ref. montaje' + DataBinding.FieldName = 'REFERENCIA' + Width = 44 + end + object cxGridViewALBARAN: TcxGridDBColumn + Caption = 'Albar'#225'n' + DataBinding.FieldName = 'ALBARAN' + end + object cxGridViewTIPO: TcxGridDBColumn + Caption = 'Tipo' + DataBinding.FieldName = 'TIPO' + end + object cxGridViewNOMBRE: TcxGridDBColumn + Caption = 'Cliente' + DataBinding.FieldName = 'NOMBRE' + Width = 315 + end + object cxGridViewOPCION: TcxGridDBColumn + Caption = 'Opci'#243'n' + DataBinding.FieldName = 'OPCION' + end + object cxGridViewVIGENCIAPRESUPUESTO: TcxGridDBColumn + Caption = 'Vigencia' + DataBinding.FieldName = 'VIGENCIAPRESUPUESTO' + Width = 74 + end + object cxGridViewIMPORTETOTAL: TcxGridDBColumn + DataBinding.FieldName = 'IMPORTETOTAL' + PropertiesClassName = 'TcxCurrencyEditProperties' + Properties.Alignment.Horz = taRightJustify + FooterAlignmentHorz = taRightJustify + HeaderAlignmentHorz = taRightJustify + Width = 86 + end + end + object cxGridDBTableView1: TcxGridDBTableView [1] + NavigatorButtons.ConfirmDelete = False + DataController.Summary.DefaultGroupSummaryItems = <> + DataController.Summary.FooterSummaryItems = <> + DataController.Summary.SummaryGroups = <> + OptionsView.NewItemRowInfoText = 'Click here to add a new row' + end + inherited cxGridLevel: TcxGridLevel + Caption = 'Todos' + end + object cxGridLevel1: TcxGridLevel + Caption = 'Pendientes' + end + object cxGridLevel2: TcxGridLevel + Caption = 'Aceptados' + end + object cxGridLevel3: TcxGridLevel + Caption = 'Rechazados' + end + end + inherited frViewFiltroBase1: TfrViewFiltroBase + inherited TBXDock1: TTBXDock + inherited TBXDockablePanel1: TTBXDockablePanel + inherited dxLayoutControl1: TdxLayoutControl + inherited txtFiltroTodo: TcxTextEdit + Width = 273 + end + inherited edtFechaIniFiltro: TcxDateEdit + Width = 121 + end + inherited edtFechaFinFiltro: TcxDateEdit + Width = 121 + end + end + end + end + end + inherited dxComponentPrinter: TdxComponentPrinter + inherited dxComponentPrinterLink: TdxGridReportLink + ReportDocument.CreationDate = 38673.741107951390000000 + BuiltInReportLink = True + end + end + inherited cxStyleRepository1: TcxStyleRepository + Left = 240 + object cxStyleRechazado: TcxStyle + AssignedValues = [svTextColor] + TextColor = clGrayText + end + object cxStyleAceptado: TcxStyle + end + 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 + 610000000970485973000017120000171201679FD252000001774944415478DA + 63FCFFFF3FC384055BFF3390010A12BC1919610600394469FAF3F71FC3EF3F7F + 192CBCB3192EEE99856A80C35E4B14C5079C8F836964F1ED368718662EDFC530 + 7FC9464C03F0815FBFFF826D06D10BD7EDC36E00BA0BB0815586BB18966D3A84 + DB0098B341E01F50EECF9F7F709B034F3B312CD3DDC1B06ADB11FC06C05CB2CB + EE0883DB211BB8CD61E7DD18166A6E6558BFEB387E03D06DFEFDE70F981F75D9 + 8361AEEA2686CDFB4EE136609FD33106A77D56605BD79BEE033B1B044036C75F + F76698AEB88161E7A133B80D00391BDDE69FBFFE30FC028AA5DFF567E8975CCD + 70F0D4454C0372623D195C0E58A384F862ED6D0CB157BDC0EC2972EB18721E05 + 317489AE643876EE32A601E9916E605BFEFCFE07B639E2A23BC37CF52D60B1DF + BF21B8F0792843ABE03286D397AE611A9018EA0CD70CF202CC6674D0C0BB98E1 + C2B59B9806C40638C23583FC8D6CF36F688C80F0BF7FFF192EDDB8856940848F + 2DC38A2D8789CE89180680044805200300115980F04CC063740000000049454E + 44AE426082} + Name = 'PngImage2' + Background = clWindow + end> + Left = 56 + Top = 48 + Bitmap = {} + end +end diff --git a/Modulos/Presupuestos/Cliente/uViewPresupuestos.pas b/Modulos/Presupuestos/Cliente/uViewPresupuestos.pas new file mode 100644 index 0000000..c44bbb3 --- /dev/null +++ b/Modulos/Presupuestos/Cliente/uViewPresupuestos.pas @@ -0,0 +1,174 @@ +unit uViewPresupuestos; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewGrid, uViewPreview, frxClass, frxPreview, cxStyles, + cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, DB, + cxDBData, ActnList, uDADataTable, cxGridLevel, cxClasses, cxControls, + cxGridCustomView, cxGridCustomTableView, cxGridTableView, + cxGridDBTableView, cxGrid, uBizPresupuestosCliente, StdCtrls, ExtCtrls, + cxLabel, dxPSGlbl, dxPSUtl, dxPSEngn, dxPrnPg, dxBkgnd, dxWrap, dxPrnDev, + dxPSCompsProvider, dxPSFillPatterns, dxPSEdgePatterns, cxIntlPrintSys3, + dxPSCore, dxPScxCommon, dxPScxGridLnk, cxImage, cxImageComboBox, ImgList, + PngImageList, cxTextEdit, Grids, DBGrids, cxCurrencyEdit, uViewFiltroBase; + +type + IViewPresupuestos = interface(IViewGrid) + ['{8C0A5647-E0E7-40CD-80EC-88DD46383368}'] + function GetPresupuestos: IBizPresupuestos; + procedure SetPresupuestos(const Value: IBizPresupuestos); + property Presupuestos: IBizPresupuestos read GetPresupuestos write + SetPresupuestos; + end; + + TfrViewPresupuestos = class(TfrViewGrid, IViewPresupuestos) + cxGridDBTableView1: TcxGridDBTableView; + cxGridLevel1: TcxGridLevel; + cxGridLevel2: TcxGridLevel; + cxGridLevel3: TcxGridLevel; + cxGridViewCODIGO: TcxGridDBColumn; + cxGridViewICONO: TcxGridDBColumn; + cxGridViewFECHAPRESUPUESTO: TcxGridDBColumn; + cxGridViewIMPORTETOTAL: TcxGridDBColumn; + cxGridViewNOMBRE: TcxGridDBColumn; + cxGridViewREFERENCIA: TcxGridDBColumn; + cxGridViewSITUACION: TcxGridDBColumn; + cxGridViewVIGENCIAPRESUPUESTO: TcxGridDBColumn; + PngImageList: TPngImageList; + cxStyleRechazado: TcxStyle; + cxStyleAceptado: TcxStyle; + cxGridViewTIPO: TcxGridDBColumn; + cxGridViewALBARAN: TcxGridDBColumn; + cxGridViewOPCION: TcxGridDBColumn; + procedure cxGridActiveTabChanged(Sender: TcxCustomGrid; ALevel: TcxGridLevel); + procedure cxGridViewCODIGOCustomDrawCell(Sender: TcxCustomGridTableView; + ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var + ADone: Boolean); + procedure cxGridViewStylesGetContentStyle(Sender: TcxCustomGridTableView; + ARecord: TcxCustomGridRecord; AItem: TcxCustomGridTableItem; out + AStyle: TcxStyle); + private + //Filtros relativos a la vista + procedure AnadirFiltroSituaciones; + procedure AnadirFiltroFechas; + + protected + FPresupuestos: IBizPresupuestos; + function GetPresupuestos: IBizPresupuestos; + procedure SetPresupuestos(const Value: IBizPresupuestos); + procedure AnadirOtrosFiltros; override; + + public + property Presupuestos: IBizPresupuestos read GetPresupuestos write + SetPresupuestos; + end; + +var + frViewPresupuestos: TfrViewPresupuestos; + +implementation + +uses uDataModulePresupuestos, schPresupuestosClient_Intf; + +{$R *.dfm} + +procedure TfrViewPresupuestos.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('FECHAPRESUPUESTO'); + FFiltro.AddItem(Columna, foBetween, varArrayOf([Fecha1, Fecha2]), VarToStr(Fecha1) + ' and ' + VarToStr(Fecha2)); + end; +end; + +procedure TfrViewPresupuestos.AnadirFiltroSituaciones; +var + FFiltro : TcxFilterCriteriaItemList; +begin + FFiltro := AddFilterGrid(fboAnd); + + case cxGrid.ActiveLevel.Index of + 1 : FFiltro.AddItem(cxGridViewSITUACION, foEqual, SITUACION_PENDIENTE, SITUACION_PENDIENTE); + 2 : FFiltro.AddItem(cxGridViewSITUACION, foEqual, SITUACION_ACEPTADO, SITUACION_ACEPTADO); + 3 : FFiltro.AddItem(cxGridViewSITUACION, foEqual, SITUACION_RECHAZADO, SITUACION_RECHAZADO); + end; +end; + +procedure TfrViewPresupuestos.cxGridActiveTabChanged(Sender: TcxCustomGrid; ALevel: TcxGridLevel); +begin + inherited; + RefrescarFiltro; +end; + +procedure TfrViewPresupuestos.cxGridViewCODIGOCustomDrawCell(Sender: + TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: + TcxGridTableDataCellViewInfo; var ADone: Boolean); +var + R: TRect; +begin + inherited; + R := AViewInfo.ContentBounds; + ACanvas.FillRect(R); + ACanvas.DrawImage(PngImageList, R.Left, R.Top, 2); + ADone := True; +end; + +procedure TfrViewPresupuestos.cxGridViewStylesGetContentStyle(Sender: + TcxCustomGridTableView; ARecord: TcxCustomGridRecord; AItem: + TcxCustomGridTableItem; out AStyle: TcxStyle); +var + IndiceCol: Integer; + ASituacion: string; +begin + inherited; + if Assigned(ARecord) then + begin + IndiceCol := (Sender as TcxGridDBTableView).GetColumnByFieldName(fld_PresupuestosSITUACION).Index; + ASituacion := VarToStr(ARecord.DisplayTexts[IndiceCol]); + if ASituacion = SITUACION_ACEPTADO then + AStyle := cxStyleAceptado + else if ASituacion = SITUACION_RECHAZADO then + AStyle := cxStyleRechazado; + end; +end; + +function TfrViewPresupuestos.GetPresupuestos: IBizPresupuestos; +begin + Result := FPresupuestos; +end; + +procedure TfrViewPresupuestos.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 TfrViewPresupuestos.SetPresupuestos(const Value: IBizPresupuestos); +begin + FPresupuestos := Value; + if Assigned(FPresupuestos) then + DADataSource.DataTable := FPresupuestos.DataTable; +end; + +end. diff --git a/Modulos/Presupuestos/Cliente/uViewSituacionPresupuesto.dfm b/Modulos/Presupuestos/Cliente/uViewSituacionPresupuesto.dfm new file mode 100644 index 0000000..3572120 --- /dev/null +++ b/Modulos/Presupuestos/Cliente/uViewSituacionPresupuesto.dfm @@ -0,0 +1,156 @@ +inherited frViewSituacionPresupuesto: TfrViewSituacionPresupuesto + Width = 360 + Height = 100 + Constraints.MinHeight = 85 + Constraints.MinWidth = 360 + DesignSize = ( + 360 + 100) + object Label6: TLabel + Left = 8 + Top = 9 + Width = 54 + Height = 13 + Caption = 'Situaci'#243'n' + Font.Charset = DEFAULT_CHARSET + Font.Color = clActiveCaption + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + ParentFont = False + end + object Bevel2: TBevel + Left = 72 + Top = 9 + Width = 276 + Height = 9 + Anchors = [akLeft, akTop, akRight] + Shape = bsBottomLine + end + object Label4: TLabel + Left = 16 + Top = 33 + Width = 47 + Height = 13 + Caption = 'Situaci'#243'n:' + end + object Label7: TLabel + Left = 16 + Top = 51 + Width = 47 + Height = 26 + Caption = 'Fecha de decisi'#243'n:' + WordWrap = True + end + object edtFechaDecision: TcxDBDateEdit + Left = 100 + Top = 53 + Anchors = [akLeft, akTop, akRight] + DataBinding.DataField = 'FECHADECISION' + DataBinding.DataSource = DADataSource + Properties.ImmediatePost = True + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 0 + Width = 245 + end + object cbiSituacion: TcxDBImageComboBox + Left = 100 + Top = 29 + DataBinding.DataField = 'SITUACION' + DataBinding.DataSource = DADataSource + Properties.Images = ImageList + Properties.ImmediatePost = True + Properties.Items = < + item + Description = 'Pendiente' + Value = 'Pendiente' + end + item + Description = 'Aceptado' + ImageIndex = 0 + Value = 'Aceptado' + end + item + Description = 'Rechazado' + ImageIndex = 1 + Value = 'Rechazado' + end> + Properties.OnCloseUp = cbiSituacionPropertiesCloseUp + Properties.OnEditValueChanged = cbiSituacionPropertiesEditValueChanged + Style.LookAndFeel.Kind = lfUltraFlat + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.Kind = lfUltraFlat + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.Kind = lfUltraFlat + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.Kind = lfUltraFlat + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 1 + Width = 245 + end + object DADataSource: TDADataSource + Left = 296 + Top = 24 + end + object ImageList: 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> + Left = 104 + Top = 65528 + Bitmap = {} + end +end diff --git a/Modulos/Presupuestos/Cliente/uViewSituacionPresupuesto.pas b/Modulos/Presupuestos/Cliente/uViewSituacionPresupuesto.pas new file mode 100644 index 0000000..c1c2dd5 --- /dev/null +++ b/Modulos/Presupuestos/Cliente/uViewSituacionPresupuesto.pas @@ -0,0 +1,96 @@ +unit uViewSituacionPresupuesto; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, cxGraphics, DB, uDADataTable, cxDropDownEdit, + cxCalendar, cxDBEdit, cxControls, cxContainer, cxEdit, cxTextEdit, + cxMaskEdit, ExtCtrls, StdCtrls, ImgList, PngImageList, cxImageComboBox; + +type + TfrViewSituacionPresupuesto = class(TfrViewBase) + Bevel2: TBevel; + cbiSituacion: TcxDBImageComboBox; + DADataSource: TDADataSource; + edtFechaDecision: TcxDBDateEdit; + ImageList: TPngImageList; + Label4: TLabel; + Label6: TLabel; + Label7: TLabel; + procedure cbiSituacionPropertiesCloseUp(Sender: TObject); + procedure cbiSituacionPropertiesEditValueChanged(Sender: TObject); + public + constructor Create(AOwner: TComponent); override; + end; + + +implementation + +uses + uBizPresupuestosCliente, cxDateUtils; + +{$R *.dfm} + +{ TfrViewSituacionPresupuesto } + +{ +************************* TfrViewSituacionPresupuesto ************************** +} +constructor TfrViewSituacionPresupuesto.Create(AOwner: TComponent); +begin + inherited; + with cbiSituacion.Properties.Items do + begin + Clear; + with Add do + begin + Description := SITUACION_PENDIENTE; + ImageIndex := -1; + Value := SITUACION_PENDIENTE; + end; + with Add do + begin + Description := SITUACION_ACEPTADO; + ImageIndex := 0; + Value := SITUACION_ACEPTADO; + end; + with Add do + begin + Description := SITUACION_RECHAZADO; + ImageIndex := 1; + Value := SITUACION_RECHAZADO; + end; + end; +end; + +procedure TfrViewSituacionPresupuesto.cbiSituacionPropertiesCloseUp( + Sender: TObject); +begin +{ if Assigned(edtFechaDecision.DataBinding.Field) then + begin + if (cbiSituacion.ItemIndex > 0) then + begin + edtFechaDecision.Enabled := True; + if VarIsNull(edtFechaDecision.EditValue) then + begin + DADataSource.DataTable.Edit; + edtFechaDecision.DataBinding.Field.Value := Date; + end; + end + else begin + DADataSource.DataTable.Edit; + edtFechaDecision.DataBinding.Field.Value := Null; + edtFechaDecision.Enabled := False; + end + end;} +end; + +procedure TfrViewSituacionPresupuesto.cbiSituacionPropertiesEditValueChanged( + Sender: TObject); +begin + inherited; + edtFechaDecision.Enabled := (cbiSituacion.ItemIndex > 0); +end; + +end. diff --git a/Modulos/Presupuestos/Reglas/schPresupuestosClient_Intf.pas b/Modulos/Presupuestos/Reglas/schPresupuestosClient_Intf.pas new file mode 100644 index 0000000..01db959 --- /dev/null +++ b/Modulos/Presupuestos/Reglas/schPresupuestosClient_Intf.pas @@ -0,0 +1,1678 @@ +unit schPresupuestosClient_Intf; + +interface + +uses + Classes, DB, SysUtils, uROClasses, uDADataTable; + +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_DetallesPresupuestos = '{A6A79145-2CF4-404F-AF3C-216C6C1C6220}'; + RID_Presupuestos = '{5B155DB3-9C72-4E74-AF1E-2F5F54B8C085}'; + RID_Presupuestos_RefreshDataset = '{A4DBCB7A-51D7-4CC6-AE4C-4F3E92E621C3}'; + RID_InformeCabeceraPresupuesto = '{264277A9-3681-40C0-90A1-E3164B449B02}'; + RID_InformeDetallesPresupuesto = '{31CD6A31-A8D3-4D6E-9AA5-FD7D0B85DDBA}'; + + { Data table names } + nme_DetallesPresupuestos = 'DetallesPresupuestos'; + nme_Presupuestos = 'Presupuestos'; + nme_Presupuestos_RefreshDataset = 'Presupuestos_RefreshDataset'; + nme_InformeCabeceraPresupuesto = 'InformeCabeceraPresupuesto'; + nme_InformeDetallesPresupuesto = 'InformeDetallesPresupuesto'; + + { DetallesPresupuestos fields } + fld_DetallesPresupuestosCODIGOPRESUPUESTO = 'CODIGOPRESUPUESTO'; + fld_DetallesPresupuestosNUMCONCEPTO = 'NUMCONCEPTO'; + fld_DetallesPresupuestosDESCRIPCION = 'DESCRIPCION'; + fld_DetallesPresupuestosCANTIDAD = 'CANTIDAD'; + fld_DetallesPresupuestosIMPORTEUNIDAD = 'IMPORTEUNIDAD'; + fld_DetallesPresupuestosIMPORTETOTAL = 'IMPORTETOTAL'; + fld_DetallesPresupuestosTIPO = 'TIPO'; + fld_DetallesPresupuestosPOSICION = 'POSICION'; + fld_DetallesPresupuestosVISIBLE = 'VISIBLE'; + fld_DetallesPresupuestosPUNTOS = 'PUNTOS'; + fld_DetallesPresupuestosIMPORTEPUNTOS = 'IMPORTEPUNTOS'; + + { DetallesPresupuestos field indexes } + idx_DetallesPresupuestosCODIGOPRESUPUESTO = 0; + idx_DetallesPresupuestosNUMCONCEPTO = 1; + idx_DetallesPresupuestosDESCRIPCION = 2; + idx_DetallesPresupuestosCANTIDAD = 3; + idx_DetallesPresupuestosIMPORTEUNIDAD = 4; + idx_DetallesPresupuestosIMPORTETOTAL = 5; + idx_DetallesPresupuestosTIPO = 6; + idx_DetallesPresupuestosPOSICION = 7; + idx_DetallesPresupuestosVISIBLE = 8; + idx_DetallesPresupuestosPUNTOS = 9; + idx_DetallesPresupuestosIMPORTEPUNTOS = 10; + + { Presupuestos fields } + fld_PresupuestosCODIGOEMPRESA = 'CODIGOEMPRESA'; + fld_PresupuestosCODIGO = 'CODIGO'; + fld_PresupuestosFECHAALTA = 'FECHAALTA'; + fld_PresupuestosUSUARIO = 'USUARIO'; + fld_PresupuestosCODIGOCONTACTO = 'CODIGOCONTACTO'; + fld_PresupuestosNOMBRE = 'NOMBRE'; + fld_PresupuestosREFERENCIA = 'REFERENCIA'; + fld_PresupuestosTIPO = 'TIPO'; + fld_PresupuestosFECHAPRESUPUESTO = 'FECHAPRESUPUESTO'; + fld_PresupuestosVIGENCIAPRESUPUESTO = 'VIGENCIAPRESUPUESTO'; + fld_PresupuestosSITUACION = 'SITUACION'; + fld_PresupuestosFECHADECISION = 'FECHADECISION'; + fld_PresupuestosBASEIMPONIBLE = 'BASEIMPONIBLE'; + fld_PresupuestosDESCUENTO = 'DESCUENTO'; + fld_PresupuestosIMPORTEDESCUENTO = 'IMPORTEDESCUENTO'; + fld_PresupuestosIVA = 'IVA'; + fld_PresupuestosIMPORTEIVA = 'IMPORTEIVA'; + fld_PresupuestosIMPORTETOTAL = 'IMPORTETOTAL'; + fld_PresupuestosOBSERVACIONES = 'OBSERVACIONES'; + fld_PresupuestosPLAZOENTREGA = 'PLAZOENTREGA'; + fld_PresupuestosFORMAPAGO = 'FORMAPAGO'; + fld_PresupuestosCODIGOALBARAN = 'CODIGOALBARAN'; + fld_PresupuestosALBARAN = 'ALBARAN'; + fld_PresupuestosOPCION = 'OPCION'; + + { Presupuestos field indexes } + idx_PresupuestosCODIGOEMPRESA = 0; + idx_PresupuestosCODIGO = 1; + idx_PresupuestosFECHAALTA = 2; + idx_PresupuestosUSUARIO = 3; + idx_PresupuestosCODIGOCONTACTO = 4; + idx_PresupuestosNOMBRE = 5; + idx_PresupuestosREFERENCIA = 6; + idx_PresupuestosTIPO = 7; + idx_PresupuestosFECHAPRESUPUESTO = 8; + idx_PresupuestosVIGENCIAPRESUPUESTO = 9; + idx_PresupuestosSITUACION = 10; + idx_PresupuestosFECHADECISION = 11; + idx_PresupuestosBASEIMPONIBLE = 12; + idx_PresupuestosDESCUENTO = 13; + idx_PresupuestosIMPORTEDESCUENTO = 14; + idx_PresupuestosIVA = 15; + idx_PresupuestosIMPORTEIVA = 16; + idx_PresupuestosIMPORTETOTAL = 17; + idx_PresupuestosOBSERVACIONES = 18; + idx_PresupuestosPLAZOENTREGA = 19; + idx_PresupuestosFORMAPAGO = 20; + idx_PresupuestosCODIGOALBARAN = 21; + idx_PresupuestosALBARAN = 22; + idx_PresupuestosOPCION = 23; + + { Presupuestos_RefreshDataset fields } + fld_Presupuestos_RefreshDatasetCODIGO = 'CODIGO'; + fld_Presupuestos_RefreshDatasetNOMBRE = 'NOMBRE'; + fld_Presupuestos_RefreshDatasetREFERENCIA = 'REFERENCIA'; + fld_Presupuestos_RefreshDatasetCODIGOALBARAN = 'CODIGOALBARAN'; + fld_Presupuestos_RefreshDatasetALBARAN = 'ALBARAN'; + + { Presupuestos_RefreshDataset field indexes } + idx_Presupuestos_RefreshDatasetCODIGO = 0; + idx_Presupuestos_RefreshDatasetNOMBRE = 1; + idx_Presupuestos_RefreshDatasetREFERENCIA = 2; + idx_Presupuestos_RefreshDatasetCODIGOALBARAN = 3; + idx_Presupuestos_RefreshDatasetALBARAN = 4; + + { InformeCabeceraPresupuesto fields } + fld_InformeCabeceraPresupuestoCODIGOEMPRESA = 'CODIGOEMPRESA'; + fld_InformeCabeceraPresupuestoCODIGO = 'CODIGO'; + fld_InformeCabeceraPresupuestoFECHAALTA = 'FECHAALTA'; + fld_InformeCabeceraPresupuestoUSUARIO = 'USUARIO'; + fld_InformeCabeceraPresupuestoCODIGOCONTACTO = 'CODIGOCONTACTO'; + fld_InformeCabeceraPresupuestoREFERENCIA = 'REFERENCIA'; + fld_InformeCabeceraPresupuestoTIPO = 'TIPO'; + fld_InformeCabeceraPresupuestoFECHAPRESUPUESTO = 'FECHAPRESUPUESTO'; + fld_InformeCabeceraPresupuestoVIGENCIAPRESUPUESTO = 'VIGENCIAPRESUPUESTO'; + fld_InformeCabeceraPresupuestoSITUACION = 'SITUACION'; + fld_InformeCabeceraPresupuestoFECHADECISION = 'FECHADECISION'; + fld_InformeCabeceraPresupuestoBASEIMPONIBLE = 'BASEIMPONIBLE'; + fld_InformeCabeceraPresupuestoDESCUENTO = 'DESCUENTO'; + fld_InformeCabeceraPresupuestoIMPORTEDESCUENTO = 'IMPORTEDESCUENTO'; + fld_InformeCabeceraPresupuestoIVA = 'IVA'; + fld_InformeCabeceraPresupuestoIMPORTEIVA = 'IMPORTEIVA'; + fld_InformeCabeceraPresupuestoIMPORTETOTAL = 'IMPORTETOTAL'; + fld_InformeCabeceraPresupuestoOBSERVACIONES = 'OBSERVACIONES'; + fld_InformeCabeceraPresupuestoPLAZOENTREGA = 'PLAZOENTREGA'; + fld_InformeCabeceraPresupuestoFORMAPAGO = 'FORMAPAGO'; + fld_InformeCabeceraPresupuestoNOMBRE = 'NOMBRE'; + fld_InformeCabeceraPresupuestoNIF_CIF = 'NIF_CIF'; + fld_InformeCabeceraPresupuestoNOMBRE1 = 'NOMBRE1'; + fld_InformeCabeceraPresupuestoCALLE = 'CALLE'; + fld_InformeCabeceraPresupuestoCODIGOPOSTAL = 'CODIGOPOSTAL'; + fld_InformeCabeceraPresupuestoPOBLACION = 'POBLACION'; + fld_InformeCabeceraPresupuestoTELEFONO1 = 'TELEFONO1'; + fld_InformeCabeceraPresupuestoTELEFONO2 = 'TELEFONO2'; + fld_InformeCabeceraPresupuestoMOVIL = 'MOVIL'; + fld_InformeCabeceraPresupuestoOPCION = 'OPCION'; + fld_InformeCabeceraPresupuestoCODIGOALBARAN = 'CODIGOALBARAN'; + fld_InformeCabeceraPresupuestoALBARAN = 'ALBARAN'; + + { InformeCabeceraPresupuesto field indexes } + idx_InformeCabeceraPresupuestoCODIGOEMPRESA = 0; + idx_InformeCabeceraPresupuestoCODIGO = 1; + idx_InformeCabeceraPresupuestoFECHAALTA = 2; + idx_InformeCabeceraPresupuestoUSUARIO = 3; + idx_InformeCabeceraPresupuestoCODIGOCONTACTO = 4; + idx_InformeCabeceraPresupuestoREFERENCIA = 5; + idx_InformeCabeceraPresupuestoTIPO = 6; + idx_InformeCabeceraPresupuestoFECHAPRESUPUESTO = 7; + idx_InformeCabeceraPresupuestoVIGENCIAPRESUPUESTO = 8; + idx_InformeCabeceraPresupuestoSITUACION = 9; + idx_InformeCabeceraPresupuestoFECHADECISION = 10; + idx_InformeCabeceraPresupuestoBASEIMPONIBLE = 11; + idx_InformeCabeceraPresupuestoDESCUENTO = 12; + idx_InformeCabeceraPresupuestoIMPORTEDESCUENTO = 13; + idx_InformeCabeceraPresupuestoIVA = 14; + idx_InformeCabeceraPresupuestoIMPORTEIVA = 15; + idx_InformeCabeceraPresupuestoIMPORTETOTAL = 16; + idx_InformeCabeceraPresupuestoOBSERVACIONES = 17; + idx_InformeCabeceraPresupuestoPLAZOENTREGA = 18; + idx_InformeCabeceraPresupuestoFORMAPAGO = 19; + idx_InformeCabeceraPresupuestoNOMBRE = 20; + idx_InformeCabeceraPresupuestoNIF_CIF = 21; + idx_InformeCabeceraPresupuestoNOMBRE1 = 22; + idx_InformeCabeceraPresupuestoCALLE = 23; + idx_InformeCabeceraPresupuestoCODIGOPOSTAL = 24; + idx_InformeCabeceraPresupuestoPOBLACION = 25; + idx_InformeCabeceraPresupuestoTELEFONO1 = 26; + idx_InformeCabeceraPresupuestoTELEFONO2 = 27; + idx_InformeCabeceraPresupuestoMOVIL = 28; + idx_InformeCabeceraPresupuestoOPCION = 29; + idx_InformeCabeceraPresupuestoCODIGOALBARAN = 30; + idx_InformeCabeceraPresupuestoALBARAN = 31; + + { InformeDetallesPresupuesto fields } + fld_InformeDetallesPresupuestoCODIGOPRESUPUESTO = 'CODIGOPRESUPUESTO'; + fld_InformeDetallesPresupuestoNUMCONCEPTO = 'NUMCONCEPTO'; + fld_InformeDetallesPresupuestoDESCRIPCION = 'DESCRIPCION'; + fld_InformeDetallesPresupuestoCANTIDAD = 'CANTIDAD'; + fld_InformeDetallesPresupuestoIMPORTEUNIDAD = 'IMPORTEUNIDAD'; + fld_InformeDetallesPresupuestoIMPORTETOTAL = 'IMPORTETOTAL'; + fld_InformeDetallesPresupuestoTIPO = 'TIPO'; + fld_InformeDetallesPresupuestoPOSICION = 'POSICION'; + + { InformeDetallesPresupuesto field indexes } + idx_InformeDetallesPresupuestoCODIGOPRESUPUESTO = 0; + idx_InformeDetallesPresupuestoNUMCONCEPTO = 1; + idx_InformeDetallesPresupuestoDESCRIPCION = 2; + idx_InformeDetallesPresupuestoCANTIDAD = 3; + idx_InformeDetallesPresupuestoIMPORTEUNIDAD = 4; + idx_InformeDetallesPresupuestoIMPORTETOTAL = 5; + idx_InformeDetallesPresupuestoTIPO = 6; + idx_InformeDetallesPresupuestoPOSICION = 7; + +type + { IDetallesPresupuestos } + IDetallesPresupuestos = interface(IDAStronglyTypedDataTable) + ['{44CD0F43-9391-4901-9C68-B711CBCB7FDC}'] + { Property getters and setters } + function GetCODIGOPRESUPUESTOValue: Integer; + procedure SetCODIGOPRESUPUESTOValue(const aValue: Integer); + function GetNUMCONCEPTOValue: Integer; + procedure SetNUMCONCEPTOValue(const aValue: Integer); + function GetDESCRIPCIONValue: String; + procedure SetDESCRIPCIONValue(const aValue: String); + function GetCANTIDADValue: Integer; + procedure SetCANTIDADValue(const aValue: Integer); + function GetIMPORTEUNIDADValue: Currency; + procedure SetIMPORTEUNIDADValue(const aValue: Currency); + function GetIMPORTETOTALValue: Currency; + procedure SetIMPORTETOTALValue(const aValue: Currency); + function GetTIPOValue: String; + procedure SetTIPOValue(const aValue: String); + function GetPOSICIONValue: Integer; + procedure SetPOSICIONValue(const aValue: Integer); + function GetVISIBLEValue: String; + procedure SetVISIBLEValue(const aValue: String); + function GetPUNTOSValue: Integer; + procedure SetPUNTOSValue(const aValue: Integer); + function GetIMPORTEPUNTOSValue: Currency; + procedure SetIMPORTEPUNTOSValue(const aValue: Currency); + + + { Properties } + property CODIGOPRESUPUESTO: Integer read GetCODIGOPRESUPUESTOValue write SetCODIGOPRESUPUESTOValue; + property NUMCONCEPTO: Integer read GetNUMCONCEPTOValue write SetNUMCONCEPTOValue; + property DESCRIPCION: String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + property CANTIDAD: Integer read GetCANTIDADValue write SetCANTIDADValue; + property IMPORTEUNIDAD: Currency read GetIMPORTEUNIDADValue write SetIMPORTEUNIDADValue; + property IMPORTETOTAL: Currency read GetIMPORTETOTALValue write SetIMPORTETOTALValue; + property TIPO: String read GetTIPOValue write SetTIPOValue; + property POSICION: Integer read GetPOSICIONValue write SetPOSICIONValue; + property VISIBLE: String read GetVISIBLEValue write SetVISIBLEValue; + property PUNTOS: Integer read GetPUNTOSValue write SetPUNTOSValue; + property IMPORTEPUNTOS: Currency read GetIMPORTEPUNTOSValue write SetIMPORTEPUNTOSValue; + end; + + { TDetallesPresupuestosDataTableRules } + TDetallesPresupuestosDataTableRules = class(TDADataTableRules, IDetallesPresupuestos) + private + protected + { Property getters and setters } + function GetCODIGOPRESUPUESTOValue: Integer; virtual; + procedure SetCODIGOPRESUPUESTOValue(const aValue: Integer); virtual; + function GetNUMCONCEPTOValue: Integer; virtual; + procedure SetNUMCONCEPTOValue(const aValue: Integer); virtual; + function GetDESCRIPCIONValue: String; virtual; + procedure SetDESCRIPCIONValue(const aValue: String); virtual; + function GetCANTIDADValue: Integer; virtual; + procedure SetCANTIDADValue(const aValue: Integer); virtual; + function GetIMPORTEUNIDADValue: Currency; virtual; + procedure SetIMPORTEUNIDADValue(const aValue: Currency); virtual; + function GetIMPORTETOTALValue: Currency; virtual; + procedure SetIMPORTETOTALValue(const aValue: Currency); virtual; + function GetTIPOValue: String; virtual; + procedure SetTIPOValue(const aValue: String); virtual; + function GetPOSICIONValue: Integer; virtual; + procedure SetPOSICIONValue(const aValue: Integer); virtual; + function GetVISIBLEValue: String; virtual; + procedure SetVISIBLEValue(const aValue: String); virtual; + function GetPUNTOSValue: Integer; virtual; + procedure SetPUNTOSValue(const aValue: Integer); virtual; + function GetIMPORTEPUNTOSValue: Currency; virtual; + procedure SetIMPORTEPUNTOSValue(const aValue: Currency); virtual; + + { Properties } + property CODIGOPRESUPUESTO: Integer read GetCODIGOPRESUPUESTOValue write SetCODIGOPRESUPUESTOValue; + property NUMCONCEPTO: Integer read GetNUMCONCEPTOValue write SetNUMCONCEPTOValue; + property DESCRIPCION: String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + property CANTIDAD: Integer read GetCANTIDADValue write SetCANTIDADValue; + property IMPORTEUNIDAD: Currency read GetIMPORTEUNIDADValue write SetIMPORTEUNIDADValue; + property IMPORTETOTAL: Currency read GetIMPORTETOTALValue write SetIMPORTETOTALValue; + property TIPO: String read GetTIPOValue write SetTIPOValue; + property POSICION: Integer read GetPOSICIONValue write SetPOSICIONValue; + property VISIBLE: String read GetVISIBLEValue write SetVISIBLEValue; + property PUNTOS: Integer read GetPUNTOSValue write SetPUNTOSValue; + property IMPORTEPUNTOS: Currency read GetIMPORTEPUNTOSValue write SetIMPORTEPUNTOSValue; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + + { IPresupuestos } + IPresupuestos = interface(IDAStronglyTypedDataTable) + ['{27C72B9E-C122-4FA0-A412-B2681821A051}'] + { Property getters and setters } + function GetCODIGOEMPRESAValue: Integer; + procedure SetCODIGOEMPRESAValue(const aValue: Integer); + function GetCODIGOValue: Integer; + procedure SetCODIGOValue(const aValue: Integer); + function GetFECHAALTAValue: DateTime; + procedure SetFECHAALTAValue(const aValue: DateTime); + function GetUSUARIOValue: String; + procedure SetUSUARIOValue(const aValue: String); + function GetCODIGOCONTACTOValue: Integer; + procedure SetCODIGOCONTACTOValue(const aValue: Integer); + function GetNOMBREValue: String; + procedure SetNOMBREValue(const aValue: String); + function GetREFERENCIAValue: String; + procedure SetREFERENCIAValue(const aValue: String); + function GetTIPOValue: String; + procedure SetTIPOValue(const aValue: String); + function GetFECHAPRESUPUESTOValue: DateTime; + procedure SetFECHAPRESUPUESTOValue(const aValue: DateTime); + function GetVIGENCIAPRESUPUESTOValue: DateTime; + procedure SetVIGENCIAPRESUPUESTOValue(const aValue: DateTime); + function GetSITUACIONValue: String; + procedure SetSITUACIONValue(const aValue: String); + function GetFECHADECISIONValue: DateTime; + procedure SetFECHADECISIONValue(const aValue: DateTime); + function GetBASEIMPONIBLEValue: Currency; + procedure SetBASEIMPONIBLEValue(const aValue: Currency); + function GetDESCUENTOValue: Float; + procedure SetDESCUENTOValue(const aValue: Float); + function GetIMPORTEDESCUENTOValue: Currency; + procedure SetIMPORTEDESCUENTOValue(const aValue: Currency); + function GetIVAValue: Float; + procedure SetIVAValue(const aValue: Float); + function GetIMPORTEIVAValue: Currency; + procedure SetIMPORTEIVAValue(const aValue: Currency); + function GetIMPORTETOTALValue: Currency; + procedure SetIMPORTETOTALValue(const aValue: Currency); + function GetOBSERVACIONESValue: IROStrings; + procedure SetOBSERVACIONESValue(const aValue: IROStrings); + function GetPLAZOENTREGAValue: IROStrings; + procedure SetPLAZOENTREGAValue(const aValue: IROStrings); + function GetFORMAPAGOValue: IROStrings; + procedure SetFORMAPAGOValue(const aValue: IROStrings); + function GetCODIGOALBARANValue: Integer; + procedure SetCODIGOALBARANValue(const aValue: Integer); + function GetALBARANValue: String; + procedure SetALBARANValue(const aValue: String); + function GetOPCIONValue: String; + procedure SetOPCIONValue(const aValue: String); + + + { Properties } + property CODIGOEMPRESA: Integer read GetCODIGOEMPRESAValue write SetCODIGOEMPRESAValue; + property CODIGO: Integer read GetCODIGOValue write SetCODIGOValue; + property FECHAALTA: DateTime read GetFECHAALTAValue write SetFECHAALTAValue; + property USUARIO: String read GetUSUARIOValue write SetUSUARIOValue; + property CODIGOCONTACTO: Integer read GetCODIGOCONTACTOValue write SetCODIGOCONTACTOValue; + property NOMBRE: String read GetNOMBREValue write SetNOMBREValue; + property REFERENCIA: String read GetREFERENCIAValue write SetREFERENCIAValue; + property TIPO: String read GetTIPOValue write SetTIPOValue; + property FECHAPRESUPUESTO: DateTime read GetFECHAPRESUPUESTOValue write SetFECHAPRESUPUESTOValue; + property VIGENCIAPRESUPUESTO: DateTime read GetVIGENCIAPRESUPUESTOValue write SetVIGENCIAPRESUPUESTOValue; + property SITUACION: String read GetSITUACIONValue write SetSITUACIONValue; + property FECHADECISION: DateTime read GetFECHADECISIONValue write SetFECHADECISIONValue; + property BASEIMPONIBLE: Currency read GetBASEIMPONIBLEValue write SetBASEIMPONIBLEValue; + property DESCUENTO: Float read GetDESCUENTOValue write SetDESCUENTOValue; + property IMPORTEDESCUENTO: Currency read GetIMPORTEDESCUENTOValue write SetIMPORTEDESCUENTOValue; + property IVA: Float read GetIVAValue write SetIVAValue; + property IMPORTEIVA: Currency read GetIMPORTEIVAValue write SetIMPORTEIVAValue; + property IMPORTETOTAL: Currency read GetIMPORTETOTALValue write SetIMPORTETOTALValue; + property OBSERVACIONES: IROStrings read GetOBSERVACIONESValue write SetOBSERVACIONESValue; + property PLAZOENTREGA: IROStrings read GetPLAZOENTREGAValue write SetPLAZOENTREGAValue; + property FORMAPAGO: IROStrings read GetFORMAPAGOValue write SetFORMAPAGOValue; + property CODIGOALBARAN: Integer read GetCODIGOALBARANValue write SetCODIGOALBARANValue; + property ALBARAN: String read GetALBARANValue write SetALBARANValue; + property OPCION: String read GetOPCIONValue write SetOPCIONValue; + end; + + { TPresupuestosDataTableRules } + TPresupuestosDataTableRules = class(TDADataTableRules, IPresupuestos) + private + protected + { Property getters and setters } + function GetCODIGOEMPRESAValue: Integer; virtual; + procedure SetCODIGOEMPRESAValue(const aValue: Integer); virtual; + function GetCODIGOValue: Integer; virtual; + procedure SetCODIGOValue(const aValue: Integer); virtual; + function GetFECHAALTAValue: DateTime; virtual; + procedure SetFECHAALTAValue(const aValue: DateTime); virtual; + function GetUSUARIOValue: String; virtual; + procedure SetUSUARIOValue(const aValue: String); virtual; + function GetCODIGOCONTACTOValue: Integer; virtual; + procedure SetCODIGOCONTACTOValue(const aValue: Integer); virtual; + function GetNOMBREValue: String; virtual; + procedure SetNOMBREValue(const aValue: String); virtual; + function GetREFERENCIAValue: String; virtual; + procedure SetREFERENCIAValue(const aValue: String); virtual; + function GetTIPOValue: String; virtual; + procedure SetTIPOValue(const aValue: String); virtual; + function GetFECHAPRESUPUESTOValue: DateTime; virtual; + procedure SetFECHAPRESUPUESTOValue(const aValue: DateTime); virtual; + function GetVIGENCIAPRESUPUESTOValue: DateTime; virtual; + procedure SetVIGENCIAPRESUPUESTOValue(const aValue: DateTime); virtual; + function GetSITUACIONValue: String; virtual; + procedure SetSITUACIONValue(const aValue: String); virtual; + function GetFECHADECISIONValue: DateTime; virtual; + procedure SetFECHADECISIONValue(const aValue: DateTime); virtual; + function GetBASEIMPONIBLEValue: Currency; virtual; + procedure SetBASEIMPONIBLEValue(const aValue: Currency); virtual; + function GetDESCUENTOValue: Float; virtual; + procedure SetDESCUENTOValue(const aValue: Float); virtual; + function GetIMPORTEDESCUENTOValue: Currency; virtual; + procedure SetIMPORTEDESCUENTOValue(const aValue: Currency); virtual; + function GetIVAValue: Float; virtual; + procedure SetIVAValue(const aValue: Float); virtual; + function GetIMPORTEIVAValue: Currency; virtual; + procedure SetIMPORTEIVAValue(const aValue: Currency); virtual; + function GetIMPORTETOTALValue: Currency; virtual; + procedure SetIMPORTETOTALValue(const aValue: Currency); virtual; + function GetOBSERVACIONESValue: IROStrings; virtual; + procedure SetOBSERVACIONESValue(const aValue: IROStrings); virtual; + function GetPLAZOENTREGAValue: IROStrings; virtual; + procedure SetPLAZOENTREGAValue(const aValue: IROStrings); virtual; + function GetFORMAPAGOValue: IROStrings; virtual; + procedure SetFORMAPAGOValue(const aValue: IROStrings); virtual; + function GetCODIGOALBARANValue: Integer; virtual; + procedure SetCODIGOALBARANValue(const aValue: Integer); virtual; + function GetALBARANValue: String; virtual; + procedure SetALBARANValue(const aValue: String); virtual; + function GetOPCIONValue: String; virtual; + procedure SetOPCIONValue(const aValue: String); virtual; + + { Properties } + property CODIGOEMPRESA: Integer read GetCODIGOEMPRESAValue write SetCODIGOEMPRESAValue; + property CODIGO: Integer read GetCODIGOValue write SetCODIGOValue; + property FECHAALTA: DateTime read GetFECHAALTAValue write SetFECHAALTAValue; + property USUARIO: String read GetUSUARIOValue write SetUSUARIOValue; + property CODIGOCONTACTO: Integer read GetCODIGOCONTACTOValue write SetCODIGOCONTACTOValue; + property NOMBRE: String read GetNOMBREValue write SetNOMBREValue; + property REFERENCIA: String read GetREFERENCIAValue write SetREFERENCIAValue; + property TIPO: String read GetTIPOValue write SetTIPOValue; + property FECHAPRESUPUESTO: DateTime read GetFECHAPRESUPUESTOValue write SetFECHAPRESUPUESTOValue; + property VIGENCIAPRESUPUESTO: DateTime read GetVIGENCIAPRESUPUESTOValue write SetVIGENCIAPRESUPUESTOValue; + property SITUACION: String read GetSITUACIONValue write SetSITUACIONValue; + property FECHADECISION: DateTime read GetFECHADECISIONValue write SetFECHADECISIONValue; + property BASEIMPONIBLE: Currency read GetBASEIMPONIBLEValue write SetBASEIMPONIBLEValue; + property DESCUENTO: Float read GetDESCUENTOValue write SetDESCUENTOValue; + property IMPORTEDESCUENTO: Currency read GetIMPORTEDESCUENTOValue write SetIMPORTEDESCUENTOValue; + property IVA: Float read GetIVAValue write SetIVAValue; + property IMPORTEIVA: Currency read GetIMPORTEIVAValue write SetIMPORTEIVAValue; + property IMPORTETOTAL: Currency read GetIMPORTETOTALValue write SetIMPORTETOTALValue; + property OBSERVACIONES: IROStrings read GetOBSERVACIONESValue write SetOBSERVACIONESValue; + property PLAZOENTREGA: IROStrings read GetPLAZOENTREGAValue write SetPLAZOENTREGAValue; + property FORMAPAGO: IROStrings read GetFORMAPAGOValue write SetFORMAPAGOValue; + property CODIGOALBARAN: Integer read GetCODIGOALBARANValue write SetCODIGOALBARANValue; + property ALBARAN: String read GetALBARANValue write SetALBARANValue; + property OPCION: String read GetOPCIONValue write SetOPCIONValue; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + + { IPresupuestos_RefreshDataset } + IPresupuestos_RefreshDataset = interface(IDAStronglyTypedDataTable) + ['{36CACFE6-C6B9-497D-A821-2ABF5E3298F0}'] + { Property getters and setters } + function GetCODIGOValue: Integer; + procedure SetCODIGOValue(const aValue: Integer); + function GetNOMBREValue: String; + procedure SetNOMBREValue(const aValue: String); + function GetREFERENCIAValue: String; + procedure SetREFERENCIAValue(const aValue: String); + function GetCODIGOALBARANValue: Integer; + procedure SetCODIGOALBARANValue(const aValue: Integer); + function GetALBARANValue: String; + procedure SetALBARANValue(const aValue: String); + + + { Properties } + property CODIGO: Integer read GetCODIGOValue write SetCODIGOValue; + property NOMBRE: String read GetNOMBREValue write SetNOMBREValue; + property REFERENCIA: String read GetREFERENCIAValue write SetREFERENCIAValue; + property CODIGOALBARAN: Integer read GetCODIGOALBARANValue write SetCODIGOALBARANValue; + property ALBARAN: String read GetALBARANValue write SetALBARANValue; + end; + + { TPresupuestos_RefreshDatasetDataTableRules } + TPresupuestos_RefreshDatasetDataTableRules = class(TDADataTableRules, IPresupuestos_RefreshDataset) + private + protected + { Property getters and setters } + function GetCODIGOValue: Integer; virtual; + procedure SetCODIGOValue(const aValue: Integer); virtual; + function GetNOMBREValue: String; virtual; + procedure SetNOMBREValue(const aValue: String); virtual; + function GetREFERENCIAValue: String; virtual; + procedure SetREFERENCIAValue(const aValue: String); virtual; + function GetCODIGOALBARANValue: Integer; virtual; + procedure SetCODIGOALBARANValue(const aValue: Integer); virtual; + function GetALBARANValue: String; virtual; + procedure SetALBARANValue(const aValue: String); virtual; + + { Properties } + property CODIGO: Integer read GetCODIGOValue write SetCODIGOValue; + property NOMBRE: String read GetNOMBREValue write SetNOMBREValue; + property REFERENCIA: String read GetREFERENCIAValue write SetREFERENCIAValue; + property CODIGOALBARAN: Integer read GetCODIGOALBARANValue write SetCODIGOALBARANValue; + property ALBARAN: String read GetALBARANValue write SetALBARANValue; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + + { IInformeCabeceraPresupuesto } + IInformeCabeceraPresupuesto = interface(IDAStronglyTypedDataTable) + ['{B0CC1F1A-3AC1-4696-A03F-15F309307109}'] + { Property getters and setters } + function GetCODIGOEMPRESAValue: Integer; + procedure SetCODIGOEMPRESAValue(const aValue: Integer); + function GetCODIGOValue: Integer; + procedure SetCODIGOValue(const aValue: Integer); + function GetFECHAALTAValue: DateTime; + procedure SetFECHAALTAValue(const aValue: DateTime); + function GetUSUARIOValue: String; + procedure SetUSUARIOValue(const aValue: String); + function GetCODIGOCONTACTOValue: Integer; + procedure SetCODIGOCONTACTOValue(const aValue: Integer); + function GetREFERENCIAValue: String; + procedure SetREFERENCIAValue(const aValue: String); + function GetTIPOValue: String; + procedure SetTIPOValue(const aValue: String); + function GetFECHAPRESUPUESTOValue: DateTime; + procedure SetFECHAPRESUPUESTOValue(const aValue: DateTime); + function GetVIGENCIAPRESUPUESTOValue: DateTime; + procedure SetVIGENCIAPRESUPUESTOValue(const aValue: DateTime); + function GetSITUACIONValue: String; + procedure SetSITUACIONValue(const aValue: String); + function GetFECHADECISIONValue: DateTime; + procedure SetFECHADECISIONValue(const aValue: DateTime); + function GetBASEIMPONIBLEValue: Float; + procedure SetBASEIMPONIBLEValue(const aValue: Float); + function GetDESCUENTOValue: Float; + procedure SetDESCUENTOValue(const aValue: Float); + function GetIMPORTEDESCUENTOValue: Float; + procedure SetIMPORTEDESCUENTOValue(const aValue: Float); + function GetIVAValue: Float; + procedure SetIVAValue(const aValue: Float); + function GetIMPORTEIVAValue: Float; + procedure SetIMPORTEIVAValue(const aValue: Float); + function GetIMPORTETOTALValue: Float; + procedure SetIMPORTETOTALValue(const aValue: Float); + function GetOBSERVACIONESValue: IROStrings; + procedure SetOBSERVACIONESValue(const aValue: IROStrings); + function GetPLAZOENTREGAValue: IROStrings; + procedure SetPLAZOENTREGAValue(const aValue: IROStrings); + function GetFORMAPAGOValue: IROStrings; + procedure SetFORMAPAGOValue(const aValue: IROStrings); + function GetNOMBREValue: String; + procedure SetNOMBREValue(const aValue: String); + function GetNIF_CIFValue: String; + procedure SetNIF_CIFValue(const aValue: String); + function GetNOMBRE1Value: String; + procedure SetNOMBRE1Value(const aValue: String); + function GetCALLEValue: String; + procedure SetCALLEValue(const aValue: String); + function GetCODIGOPOSTALValue: String; + procedure SetCODIGOPOSTALValue(const aValue: String); + function GetPOBLACIONValue: String; + procedure SetPOBLACIONValue(const aValue: String); + function GetTELEFONO1Value: String; + procedure SetTELEFONO1Value(const aValue: String); + function GetTELEFONO2Value: String; + procedure SetTELEFONO2Value(const aValue: String); + function GetMOVILValue: String; + procedure SetMOVILValue(const aValue: String); + function GetOPCIONValue: String; + procedure SetOPCIONValue(const aValue: String); + function GetCODIGOALBARANValue: Integer; + procedure SetCODIGOALBARANValue(const aValue: Integer); + function GetALBARANValue: String; + procedure SetALBARANValue(const aValue: String); + + + { Properties } + property CODIGOEMPRESA: Integer read GetCODIGOEMPRESAValue write SetCODIGOEMPRESAValue; + property CODIGO: Integer read GetCODIGOValue write SetCODIGOValue; + property FECHAALTA: DateTime read GetFECHAALTAValue write SetFECHAALTAValue; + property USUARIO: String read GetUSUARIOValue write SetUSUARIOValue; + property CODIGOCONTACTO: Integer read GetCODIGOCONTACTOValue write SetCODIGOCONTACTOValue; + property REFERENCIA: String read GetREFERENCIAValue write SetREFERENCIAValue; + property TIPO: String read GetTIPOValue write SetTIPOValue; + property FECHAPRESUPUESTO: DateTime read GetFECHAPRESUPUESTOValue write SetFECHAPRESUPUESTOValue; + property VIGENCIAPRESUPUESTO: DateTime read GetVIGENCIAPRESUPUESTOValue write SetVIGENCIAPRESUPUESTOValue; + property SITUACION: String read GetSITUACIONValue write SetSITUACIONValue; + property FECHADECISION: DateTime read GetFECHADECISIONValue write SetFECHADECISIONValue; + property BASEIMPONIBLE: Float read GetBASEIMPONIBLEValue write SetBASEIMPONIBLEValue; + property DESCUENTO: Float read GetDESCUENTOValue write SetDESCUENTOValue; + property IMPORTEDESCUENTO: Float read GetIMPORTEDESCUENTOValue write SetIMPORTEDESCUENTOValue; + property IVA: Float read GetIVAValue write SetIVAValue; + property IMPORTEIVA: Float read GetIMPORTEIVAValue write SetIMPORTEIVAValue; + property IMPORTETOTAL: Float read GetIMPORTETOTALValue write SetIMPORTETOTALValue; + property OBSERVACIONES: IROStrings read GetOBSERVACIONESValue write SetOBSERVACIONESValue; + property PLAZOENTREGA: IROStrings read GetPLAZOENTREGAValue write SetPLAZOENTREGAValue; + property FORMAPAGO: IROStrings read GetFORMAPAGOValue write SetFORMAPAGOValue; + property NOMBRE: String read GetNOMBREValue write SetNOMBREValue; + property NIF_CIF: String read GetNIF_CIFValue write SetNIF_CIFValue; + property NOMBRE1: String read GetNOMBRE1Value write SetNOMBRE1Value; + property CALLE: String read GetCALLEValue write SetCALLEValue; + property CODIGOPOSTAL: String read GetCODIGOPOSTALValue write SetCODIGOPOSTALValue; + property POBLACION: String read GetPOBLACIONValue write SetPOBLACIONValue; + property TELEFONO1: String read GetTELEFONO1Value write SetTELEFONO1Value; + property TELEFONO2: String read GetTELEFONO2Value write SetTELEFONO2Value; + property MOVIL: String read GetMOVILValue write SetMOVILValue; + property OPCION: String read GetOPCIONValue write SetOPCIONValue; + property CODIGOALBARAN: Integer read GetCODIGOALBARANValue write SetCODIGOALBARANValue; + property ALBARAN: String read GetALBARANValue write SetALBARANValue; + end; + + { TInformeCabeceraPresupuestoDataTableRules } + TInformeCabeceraPresupuestoDataTableRules = class(TDADataTableRules, IInformeCabeceraPresupuesto) + private + protected + { Property getters and setters } + function GetCODIGOEMPRESAValue: Integer; virtual; + procedure SetCODIGOEMPRESAValue(const aValue: Integer); virtual; + function GetCODIGOValue: Integer; virtual; + procedure SetCODIGOValue(const aValue: Integer); virtual; + function GetFECHAALTAValue: DateTime; virtual; + procedure SetFECHAALTAValue(const aValue: DateTime); virtual; + function GetUSUARIOValue: String; virtual; + procedure SetUSUARIOValue(const aValue: String); virtual; + function GetCODIGOCONTACTOValue: Integer; virtual; + procedure SetCODIGOCONTACTOValue(const aValue: Integer); virtual; + function GetREFERENCIAValue: String; virtual; + procedure SetREFERENCIAValue(const aValue: String); virtual; + function GetTIPOValue: String; virtual; + procedure SetTIPOValue(const aValue: String); virtual; + function GetFECHAPRESUPUESTOValue: DateTime; virtual; + procedure SetFECHAPRESUPUESTOValue(const aValue: DateTime); virtual; + function GetVIGENCIAPRESUPUESTOValue: DateTime; virtual; + procedure SetVIGENCIAPRESUPUESTOValue(const aValue: DateTime); virtual; + function GetSITUACIONValue: String; virtual; + procedure SetSITUACIONValue(const aValue: String); virtual; + function GetFECHADECISIONValue: DateTime; virtual; + procedure SetFECHADECISIONValue(const aValue: DateTime); virtual; + function GetBASEIMPONIBLEValue: Float; virtual; + procedure SetBASEIMPONIBLEValue(const aValue: Float); virtual; + function GetDESCUENTOValue: Float; virtual; + procedure SetDESCUENTOValue(const aValue: Float); virtual; + function GetIMPORTEDESCUENTOValue: Float; virtual; + procedure SetIMPORTEDESCUENTOValue(const aValue: Float); virtual; + function GetIVAValue: Float; virtual; + procedure SetIVAValue(const aValue: Float); virtual; + function GetIMPORTEIVAValue: Float; virtual; + procedure SetIMPORTEIVAValue(const aValue: Float); virtual; + function GetIMPORTETOTALValue: Float; virtual; + procedure SetIMPORTETOTALValue(const aValue: Float); virtual; + function GetOBSERVACIONESValue: IROStrings; virtual; + procedure SetOBSERVACIONESValue(const aValue: IROStrings); virtual; + function GetPLAZOENTREGAValue: IROStrings; virtual; + procedure SetPLAZOENTREGAValue(const aValue: IROStrings); virtual; + function GetFORMAPAGOValue: IROStrings; virtual; + procedure SetFORMAPAGOValue(const aValue: IROStrings); virtual; + function GetNOMBREValue: String; virtual; + procedure SetNOMBREValue(const aValue: String); virtual; + function GetNIF_CIFValue: String; virtual; + procedure SetNIF_CIFValue(const aValue: String); virtual; + function GetNOMBRE1Value: String; virtual; + procedure SetNOMBRE1Value(const aValue: String); virtual; + function GetCALLEValue: String; virtual; + procedure SetCALLEValue(const aValue: String); virtual; + function GetCODIGOPOSTALValue: String; virtual; + procedure SetCODIGOPOSTALValue(const aValue: String); virtual; + function GetPOBLACIONValue: String; virtual; + procedure SetPOBLACIONValue(const aValue: String); virtual; + function GetTELEFONO1Value: String; virtual; + procedure SetTELEFONO1Value(const aValue: String); virtual; + function GetTELEFONO2Value: String; virtual; + procedure SetTELEFONO2Value(const aValue: String); virtual; + function GetMOVILValue: String; virtual; + procedure SetMOVILValue(const aValue: String); virtual; + function GetOPCIONValue: String; virtual; + procedure SetOPCIONValue(const aValue: String); virtual; + function GetCODIGOALBARANValue: Integer; virtual; + procedure SetCODIGOALBARANValue(const aValue: Integer); virtual; + function GetALBARANValue: String; virtual; + procedure SetALBARANValue(const aValue: String); virtual; + + { Properties } + property CODIGOEMPRESA: Integer read GetCODIGOEMPRESAValue write SetCODIGOEMPRESAValue; + property CODIGO: Integer read GetCODIGOValue write SetCODIGOValue; + property FECHAALTA: DateTime read GetFECHAALTAValue write SetFECHAALTAValue; + property USUARIO: String read GetUSUARIOValue write SetUSUARIOValue; + property CODIGOCONTACTO: Integer read GetCODIGOCONTACTOValue write SetCODIGOCONTACTOValue; + property REFERENCIA: String read GetREFERENCIAValue write SetREFERENCIAValue; + property TIPO: String read GetTIPOValue write SetTIPOValue; + property FECHAPRESUPUESTO: DateTime read GetFECHAPRESUPUESTOValue write SetFECHAPRESUPUESTOValue; + property VIGENCIAPRESUPUESTO: DateTime read GetVIGENCIAPRESUPUESTOValue write SetVIGENCIAPRESUPUESTOValue; + property SITUACION: String read GetSITUACIONValue write SetSITUACIONValue; + property FECHADECISION: DateTime read GetFECHADECISIONValue write SetFECHADECISIONValue; + property BASEIMPONIBLE: Float read GetBASEIMPONIBLEValue write SetBASEIMPONIBLEValue; + property DESCUENTO: Float read GetDESCUENTOValue write SetDESCUENTOValue; + property IMPORTEDESCUENTO: Float read GetIMPORTEDESCUENTOValue write SetIMPORTEDESCUENTOValue; + property IVA: Float read GetIVAValue write SetIVAValue; + property IMPORTEIVA: Float read GetIMPORTEIVAValue write SetIMPORTEIVAValue; + property IMPORTETOTAL: Float read GetIMPORTETOTALValue write SetIMPORTETOTALValue; + property OBSERVACIONES: IROStrings read GetOBSERVACIONESValue write SetOBSERVACIONESValue; + property PLAZOENTREGA: IROStrings read GetPLAZOENTREGAValue write SetPLAZOENTREGAValue; + property FORMAPAGO: IROStrings read GetFORMAPAGOValue write SetFORMAPAGOValue; + property NOMBRE: String read GetNOMBREValue write SetNOMBREValue; + property NIF_CIF: String read GetNIF_CIFValue write SetNIF_CIFValue; + property NOMBRE1: String read GetNOMBRE1Value write SetNOMBRE1Value; + property CALLE: String read GetCALLEValue write SetCALLEValue; + property CODIGOPOSTAL: String read GetCODIGOPOSTALValue write SetCODIGOPOSTALValue; + property POBLACION: String read GetPOBLACIONValue write SetPOBLACIONValue; + property TELEFONO1: String read GetTELEFONO1Value write SetTELEFONO1Value; + property TELEFONO2: String read GetTELEFONO2Value write SetTELEFONO2Value; + property MOVIL: String read GetMOVILValue write SetMOVILValue; + property OPCION: String read GetOPCIONValue write SetOPCIONValue; + property CODIGOALBARAN: Integer read GetCODIGOALBARANValue write SetCODIGOALBARANValue; + property ALBARAN: String read GetALBARANValue write SetALBARANValue; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + + { IInformeDetallesPresupuesto } + IInformeDetallesPresupuesto = interface(IDAStronglyTypedDataTable) + ['{331BAA43-0C6C-45D7-A7C2-098D7686A53F}'] + { Property getters and setters } + function GetCODIGOPRESUPUESTOValue: Integer; + procedure SetCODIGOPRESUPUESTOValue(const aValue: Integer); + function GetNUMCONCEPTOValue: Integer; + procedure SetNUMCONCEPTOValue(const aValue: Integer); + function GetDESCRIPCIONValue: String; + procedure SetDESCRIPCIONValue(const aValue: String); + function GetCANTIDADValue: Integer; + procedure SetCANTIDADValue(const aValue: Integer); + function GetIMPORTEUNIDADValue: Currency; + procedure SetIMPORTEUNIDADValue(const aValue: Currency); + function GetIMPORTETOTALValue: Currency; + procedure SetIMPORTETOTALValue(const aValue: Currency); + function GetTIPOValue: String; + procedure SetTIPOValue(const aValue: String); + function GetPOSICIONValue: Integer; + procedure SetPOSICIONValue(const aValue: Integer); + + + { Properties } + property CODIGOPRESUPUESTO: Integer read GetCODIGOPRESUPUESTOValue write SetCODIGOPRESUPUESTOValue; + property NUMCONCEPTO: Integer read GetNUMCONCEPTOValue write SetNUMCONCEPTOValue; + property DESCRIPCION: String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + property CANTIDAD: Integer read GetCANTIDADValue write SetCANTIDADValue; + property IMPORTEUNIDAD: Currency read GetIMPORTEUNIDADValue write SetIMPORTEUNIDADValue; + property IMPORTETOTAL: Currency read GetIMPORTETOTALValue write SetIMPORTETOTALValue; + property TIPO: String read GetTIPOValue write SetTIPOValue; + property POSICION: Integer read GetPOSICIONValue write SetPOSICIONValue; + end; + + { TInformeDetallesPresupuestoDataTableRules } + TInformeDetallesPresupuestoDataTableRules = class(TDADataTableRules, IInformeDetallesPresupuesto) + private + protected + { Property getters and setters } + function GetCODIGOPRESUPUESTOValue: Integer; virtual; + procedure SetCODIGOPRESUPUESTOValue(const aValue: Integer); virtual; + function GetNUMCONCEPTOValue: Integer; virtual; + procedure SetNUMCONCEPTOValue(const aValue: Integer); virtual; + function GetDESCRIPCIONValue: String; virtual; + procedure SetDESCRIPCIONValue(const aValue: String); virtual; + function GetCANTIDADValue: Integer; virtual; + procedure SetCANTIDADValue(const aValue: Integer); virtual; + function GetIMPORTEUNIDADValue: Currency; virtual; + procedure SetIMPORTEUNIDADValue(const aValue: Currency); virtual; + function GetIMPORTETOTALValue: Currency; virtual; + procedure SetIMPORTETOTALValue(const aValue: Currency); virtual; + function GetTIPOValue: String; virtual; + procedure SetTIPOValue(const aValue: String); virtual; + function GetPOSICIONValue: Integer; virtual; + procedure SetPOSICIONValue(const aValue: Integer); virtual; + + { Properties } + property CODIGOPRESUPUESTO: Integer read GetCODIGOPRESUPUESTOValue write SetCODIGOPRESUPUESTOValue; + property NUMCONCEPTO: Integer read GetNUMCONCEPTOValue write SetNUMCONCEPTOValue; + property DESCRIPCION: String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + property CANTIDAD: Integer read GetCANTIDADValue write SetCANTIDADValue; + property IMPORTEUNIDAD: Currency read GetIMPORTEUNIDADValue write SetIMPORTEUNIDADValue; + property IMPORTETOTAL: Currency read GetIMPORTETOTALValue write SetIMPORTETOTALValue; + property TIPO: String read GetTIPOValue write SetTIPOValue; + property POSICION: Integer read GetPOSICIONValue write SetPOSICIONValue; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + +implementation + +uses Variants; + +{ TDetallesPresupuestosDataTableRules } +constructor TDetallesPresupuestosDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TDetallesPresupuestosDataTableRules.Destroy; +begin + inherited; +end; + +function TDetallesPresupuestosDataTableRules.GetCODIGOPRESUPUESTOValue: Integer; +begin + result := DataTable.Fields[idx_DetallesPresupuestosCODIGOPRESUPUESTO].AsInteger; +end; + +procedure TDetallesPresupuestosDataTableRules.SetCODIGOPRESUPUESTOValue(const aValue: Integer); +begin + DataTable.Fields[idx_DetallesPresupuestosCODIGOPRESUPUESTO].AsInteger := aValue; +end; + +function TDetallesPresupuestosDataTableRules.GetNUMCONCEPTOValue: Integer; +begin + result := DataTable.Fields[idx_DetallesPresupuestosNUMCONCEPTO].AsInteger; +end; + +procedure TDetallesPresupuestosDataTableRules.SetNUMCONCEPTOValue(const aValue: Integer); +begin + DataTable.Fields[idx_DetallesPresupuestosNUMCONCEPTO].AsInteger := aValue; +end; + +function TDetallesPresupuestosDataTableRules.GetDESCRIPCIONValue: String; +begin + result := DataTable.Fields[idx_DetallesPresupuestosDESCRIPCION].AsString; +end; + +procedure TDetallesPresupuestosDataTableRules.SetDESCRIPCIONValue(const aValue: String); +begin + DataTable.Fields[idx_DetallesPresupuestosDESCRIPCION].AsString := aValue; +end; + +function TDetallesPresupuestosDataTableRules.GetCANTIDADValue: Integer; +begin + result := DataTable.Fields[idx_DetallesPresupuestosCANTIDAD].AsInteger; +end; + +procedure TDetallesPresupuestosDataTableRules.SetCANTIDADValue(const aValue: Integer); +begin + DataTable.Fields[idx_DetallesPresupuestosCANTIDAD].AsInteger := aValue; +end; + +function TDetallesPresupuestosDataTableRules.GetIMPORTEUNIDADValue: Currency; +begin + result := DataTable.Fields[idx_DetallesPresupuestosIMPORTEUNIDAD].AsCurrency; +end; + +procedure TDetallesPresupuestosDataTableRules.SetIMPORTEUNIDADValue(const aValue: Currency); +begin + DataTable.Fields[idx_DetallesPresupuestosIMPORTEUNIDAD].AsCurrency := aValue; +end; + +function TDetallesPresupuestosDataTableRules.GetIMPORTETOTALValue: Currency; +begin + result := DataTable.Fields[idx_DetallesPresupuestosIMPORTETOTAL].AsCurrency; +end; + +procedure TDetallesPresupuestosDataTableRules.SetIMPORTETOTALValue(const aValue: Currency); +begin + DataTable.Fields[idx_DetallesPresupuestosIMPORTETOTAL].AsCurrency := aValue; +end; + +function TDetallesPresupuestosDataTableRules.GetTIPOValue: String; +begin + result := DataTable.Fields[idx_DetallesPresupuestosTIPO].AsString; +end; + +procedure TDetallesPresupuestosDataTableRules.SetTIPOValue(const aValue: String); +begin + DataTable.Fields[idx_DetallesPresupuestosTIPO].AsString := aValue; +end; + +function TDetallesPresupuestosDataTableRules.GetPOSICIONValue: Integer; +begin + result := DataTable.Fields[idx_DetallesPresupuestosPOSICION].AsInteger; +end; + +procedure TDetallesPresupuestosDataTableRules.SetPOSICIONValue(const aValue: Integer); +begin + DataTable.Fields[idx_DetallesPresupuestosPOSICION].AsInteger := aValue; +end; + +function TDetallesPresupuestosDataTableRules.GetVISIBLEValue: String; +begin + result := DataTable.Fields[idx_DetallesPresupuestosVISIBLE].AsString; +end; + +procedure TDetallesPresupuestosDataTableRules.SetVISIBLEValue(const aValue: String); +begin + DataTable.Fields[idx_DetallesPresupuestosVISIBLE].AsString := aValue; +end; + +function TDetallesPresupuestosDataTableRules.GetPUNTOSValue: Integer; +begin + result := DataTable.Fields[idx_DetallesPresupuestosPUNTOS].AsInteger; +end; + +procedure TDetallesPresupuestosDataTableRules.SetPUNTOSValue(const aValue: Integer); +begin + DataTable.Fields[idx_DetallesPresupuestosPUNTOS].AsInteger := aValue; +end; + +function TDetallesPresupuestosDataTableRules.GetIMPORTEPUNTOSValue: Currency; +begin + result := DataTable.Fields[idx_DetallesPresupuestosIMPORTEPUNTOS].AsCurrency; +end; + +procedure TDetallesPresupuestosDataTableRules.SetIMPORTEPUNTOSValue(const aValue: Currency); +begin + DataTable.Fields[idx_DetallesPresupuestosIMPORTEPUNTOS].AsCurrency := aValue; +end; + + +{ TPresupuestosDataTableRules } +constructor TPresupuestosDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TPresupuestosDataTableRules.Destroy; +begin + inherited; +end; + +function TPresupuestosDataTableRules.GetCODIGOEMPRESAValue: Integer; +begin + result := DataTable.Fields[idx_PresupuestosCODIGOEMPRESA].AsInteger; +end; + +procedure TPresupuestosDataTableRules.SetCODIGOEMPRESAValue(const aValue: Integer); +begin + DataTable.Fields[idx_PresupuestosCODIGOEMPRESA].AsInteger := aValue; +end; + +function TPresupuestosDataTableRules.GetCODIGOValue: Integer; +begin + result := DataTable.Fields[idx_PresupuestosCODIGO].AsInteger; +end; + +procedure TPresupuestosDataTableRules.SetCODIGOValue(const aValue: Integer); +begin + DataTable.Fields[idx_PresupuestosCODIGO].AsInteger := aValue; +end; + +function TPresupuestosDataTableRules.GetFECHAALTAValue: DateTime; +begin + result := DataTable.Fields[idx_PresupuestosFECHAALTA].AsDateTime; +end; + +procedure TPresupuestosDataTableRules.SetFECHAALTAValue(const aValue: DateTime); +begin + DataTable.Fields[idx_PresupuestosFECHAALTA].AsDateTime := aValue; +end; + +function TPresupuestosDataTableRules.GetUSUARIOValue: String; +begin + result := DataTable.Fields[idx_PresupuestosUSUARIO].AsString; +end; + +procedure TPresupuestosDataTableRules.SetUSUARIOValue(const aValue: String); +begin + DataTable.Fields[idx_PresupuestosUSUARIO].AsString := aValue; +end; + +function TPresupuestosDataTableRules.GetCODIGOCONTACTOValue: Integer; +begin + result := DataTable.Fields[idx_PresupuestosCODIGOCONTACTO].AsInteger; +end; + +procedure TPresupuestosDataTableRules.SetCODIGOCONTACTOValue(const aValue: Integer); +begin + DataTable.Fields[idx_PresupuestosCODIGOCONTACTO].AsInteger := aValue; +end; + +function TPresupuestosDataTableRules.GetNOMBREValue: String; +begin + result := DataTable.Fields[idx_PresupuestosNOMBRE].AsString; +end; + +procedure TPresupuestosDataTableRules.SetNOMBREValue(const aValue: String); +begin + DataTable.Fields[idx_PresupuestosNOMBRE].AsString := aValue; +end; + +function TPresupuestosDataTableRules.GetREFERENCIAValue: String; +begin + result := DataTable.Fields[idx_PresupuestosREFERENCIA].AsString; +end; + +procedure TPresupuestosDataTableRules.SetREFERENCIAValue(const aValue: String); +begin + DataTable.Fields[idx_PresupuestosREFERENCIA].AsString := aValue; +end; + +function TPresupuestosDataTableRules.GetTIPOValue: String; +begin + result := DataTable.Fields[idx_PresupuestosTIPO].AsString; +end; + +procedure TPresupuestosDataTableRules.SetTIPOValue(const aValue: String); +begin + DataTable.Fields[idx_PresupuestosTIPO].AsString := aValue; +end; + +function TPresupuestosDataTableRules.GetFECHAPRESUPUESTOValue: DateTime; +begin + result := DataTable.Fields[idx_PresupuestosFECHAPRESUPUESTO].AsDateTime; +end; + +procedure TPresupuestosDataTableRules.SetFECHAPRESUPUESTOValue(const aValue: DateTime); +begin + DataTable.Fields[idx_PresupuestosFECHAPRESUPUESTO].AsDateTime := aValue; +end; + +function TPresupuestosDataTableRules.GetVIGENCIAPRESUPUESTOValue: DateTime; +begin + result := DataTable.Fields[idx_PresupuestosVIGENCIAPRESUPUESTO].AsDateTime; +end; + +procedure TPresupuestosDataTableRules.SetVIGENCIAPRESUPUESTOValue(const aValue: DateTime); +begin + DataTable.Fields[idx_PresupuestosVIGENCIAPRESUPUESTO].AsDateTime := aValue; +end; + +function TPresupuestosDataTableRules.GetSITUACIONValue: String; +begin + result := DataTable.Fields[idx_PresupuestosSITUACION].AsString; +end; + +procedure TPresupuestosDataTableRules.SetSITUACIONValue(const aValue: String); +begin + DataTable.Fields[idx_PresupuestosSITUACION].AsString := aValue; +end; + +function TPresupuestosDataTableRules.GetFECHADECISIONValue: DateTime; +begin + result := DataTable.Fields[idx_PresupuestosFECHADECISION].AsDateTime; +end; + +procedure TPresupuestosDataTableRules.SetFECHADECISIONValue(const aValue: DateTime); +begin + DataTable.Fields[idx_PresupuestosFECHADECISION].AsDateTime := aValue; +end; + +function TPresupuestosDataTableRules.GetBASEIMPONIBLEValue: Currency; +begin + result := DataTable.Fields[idx_PresupuestosBASEIMPONIBLE].AsCurrency; +end; + +procedure TPresupuestosDataTableRules.SetBASEIMPONIBLEValue(const aValue: Currency); +begin + DataTable.Fields[idx_PresupuestosBASEIMPONIBLE].AsCurrency := aValue; +end; + +function TPresupuestosDataTableRules.GetDESCUENTOValue: Float; +begin + result := DataTable.Fields[idx_PresupuestosDESCUENTO].AsFloat; +end; + +procedure TPresupuestosDataTableRules.SetDESCUENTOValue(const aValue: Float); +begin + DataTable.Fields[idx_PresupuestosDESCUENTO].AsFloat := aValue; +end; + +function TPresupuestosDataTableRules.GetIMPORTEDESCUENTOValue: Currency; +begin + result := DataTable.Fields[idx_PresupuestosIMPORTEDESCUENTO].AsCurrency; +end; + +procedure TPresupuestosDataTableRules.SetIMPORTEDESCUENTOValue(const aValue: Currency); +begin + DataTable.Fields[idx_PresupuestosIMPORTEDESCUENTO].AsCurrency := aValue; +end; + +function TPresupuestosDataTableRules.GetIVAValue: Float; +begin + result := DataTable.Fields[idx_PresupuestosIVA].AsFloat; +end; + +procedure TPresupuestosDataTableRules.SetIVAValue(const aValue: Float); +begin + DataTable.Fields[idx_PresupuestosIVA].AsFloat := aValue; +end; + +function TPresupuestosDataTableRules.GetIMPORTEIVAValue: Currency; +begin + result := DataTable.Fields[idx_PresupuestosIMPORTEIVA].AsCurrency; +end; + +procedure TPresupuestosDataTableRules.SetIMPORTEIVAValue(const aValue: Currency); +begin + DataTable.Fields[idx_PresupuestosIMPORTEIVA].AsCurrency := aValue; +end; + +function TPresupuestosDataTableRules.GetIMPORTETOTALValue: Currency; +begin + result := DataTable.Fields[idx_PresupuestosIMPORTETOTAL].AsCurrency; +end; + +procedure TPresupuestosDataTableRules.SetIMPORTETOTALValue(const aValue: Currency); +begin + DataTable.Fields[idx_PresupuestosIMPORTETOTAL].AsCurrency := aValue; +end; + +function TPresupuestosDataTableRules.GetOBSERVACIONESValue: IROStrings; +begin + result := NewROStrings(); + result.Text := DataTable.Fields[idx_PresupuestosOBSERVACIONES].AsString; +end; + +procedure TPresupuestosDataTableRules.SetOBSERVACIONESValue(const aValue: IROStrings); +begin + DataTable.Fields[idx_PresupuestosOBSERVACIONES].AsString := aValue.Text; +end; + +function TPresupuestosDataTableRules.GetPLAZOENTREGAValue: IROStrings; +begin + result := NewROStrings(); + result.Text := DataTable.Fields[idx_PresupuestosPLAZOENTREGA].AsString; +end; + +procedure TPresupuestosDataTableRules.SetPLAZOENTREGAValue(const aValue: IROStrings); +begin + DataTable.Fields[idx_PresupuestosPLAZOENTREGA].AsString := aValue.Text; +end; + +function TPresupuestosDataTableRules.GetFORMAPAGOValue: IROStrings; +begin + result := NewROStrings(); + result.Text := DataTable.Fields[idx_PresupuestosFORMAPAGO].AsString; +end; + +procedure TPresupuestosDataTableRules.SetFORMAPAGOValue(const aValue: IROStrings); +begin + DataTable.Fields[idx_PresupuestosFORMAPAGO].AsString := aValue.Text; +end; + +function TPresupuestosDataTableRules.GetCODIGOALBARANValue: Integer; +begin + result := DataTable.Fields[idx_PresupuestosCODIGOALBARAN].AsInteger; +end; + +procedure TPresupuestosDataTableRules.SetCODIGOALBARANValue(const aValue: Integer); +begin + DataTable.Fields[idx_PresupuestosCODIGOALBARAN].AsInteger := aValue; +end; + +function TPresupuestosDataTableRules.GetALBARANValue: String; +begin + result := DataTable.Fields[idx_PresupuestosALBARAN].AsString; +end; + +procedure TPresupuestosDataTableRules.SetALBARANValue(const aValue: String); +begin + DataTable.Fields[idx_PresupuestosALBARAN].AsString := aValue; +end; + +function TPresupuestosDataTableRules.GetOPCIONValue: String; +begin + result := DataTable.Fields[idx_PresupuestosOPCION].AsString; +end; + +procedure TPresupuestosDataTableRules.SetOPCIONValue(const aValue: String); +begin + DataTable.Fields[idx_PresupuestosOPCION].AsString := aValue; +end; + + +{ TPresupuestos_RefreshDatasetDataTableRules } +constructor TPresupuestos_RefreshDatasetDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TPresupuestos_RefreshDatasetDataTableRules.Destroy; +begin + inherited; +end; + +function TPresupuestos_RefreshDatasetDataTableRules.GetCODIGOValue: Integer; +begin + result := DataTable.Fields[idx_Presupuestos_RefreshDatasetCODIGO].AsInteger; +end; + +procedure TPresupuestos_RefreshDatasetDataTableRules.SetCODIGOValue(const aValue: Integer); +begin + DataTable.Fields[idx_Presupuestos_RefreshDatasetCODIGO].AsInteger := aValue; +end; + +function TPresupuestos_RefreshDatasetDataTableRules.GetNOMBREValue: String; +begin + result := DataTable.Fields[idx_Presupuestos_RefreshDatasetNOMBRE].AsString; +end; + +procedure TPresupuestos_RefreshDatasetDataTableRules.SetNOMBREValue(const aValue: String); +begin + DataTable.Fields[idx_Presupuestos_RefreshDatasetNOMBRE].AsString := aValue; +end; + +function TPresupuestos_RefreshDatasetDataTableRules.GetREFERENCIAValue: String; +begin + result := DataTable.Fields[idx_Presupuestos_RefreshDatasetREFERENCIA].AsString; +end; + +procedure TPresupuestos_RefreshDatasetDataTableRules.SetREFERENCIAValue(const aValue: String); +begin + DataTable.Fields[idx_Presupuestos_RefreshDatasetREFERENCIA].AsString := aValue; +end; + +function TPresupuestos_RefreshDatasetDataTableRules.GetCODIGOALBARANValue: Integer; +begin + result := DataTable.Fields[idx_Presupuestos_RefreshDatasetCODIGOALBARAN].AsInteger; +end; + +procedure TPresupuestos_RefreshDatasetDataTableRules.SetCODIGOALBARANValue(const aValue: Integer); +begin + DataTable.Fields[idx_Presupuestos_RefreshDatasetCODIGOALBARAN].AsInteger := aValue; +end; + +function TPresupuestos_RefreshDatasetDataTableRules.GetALBARANValue: String; +begin + result := DataTable.Fields[idx_Presupuestos_RefreshDatasetALBARAN].AsString; +end; + +procedure TPresupuestos_RefreshDatasetDataTableRules.SetALBARANValue(const aValue: String); +begin + DataTable.Fields[idx_Presupuestos_RefreshDatasetALBARAN].AsString := aValue; +end; + + +{ TInformeCabeceraPresupuestoDataTableRules } +constructor TInformeCabeceraPresupuestoDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TInformeCabeceraPresupuestoDataTableRules.Destroy; +begin + inherited; +end; + +function TInformeCabeceraPresupuestoDataTableRules.GetCODIGOEMPRESAValue: Integer; +begin + result := DataTable.Fields[idx_InformeCabeceraPresupuestoCODIGOEMPRESA].AsInteger; +end; + +procedure TInformeCabeceraPresupuestoDataTableRules.SetCODIGOEMPRESAValue(const aValue: Integer); +begin + DataTable.Fields[idx_InformeCabeceraPresupuestoCODIGOEMPRESA].AsInteger := aValue; +end; + +function TInformeCabeceraPresupuestoDataTableRules.GetCODIGOValue: Integer; +begin + result := DataTable.Fields[idx_InformeCabeceraPresupuestoCODIGO].AsInteger; +end; + +procedure TInformeCabeceraPresupuestoDataTableRules.SetCODIGOValue(const aValue: Integer); +begin + DataTable.Fields[idx_InformeCabeceraPresupuestoCODIGO].AsInteger := aValue; +end; + +function TInformeCabeceraPresupuestoDataTableRules.GetFECHAALTAValue: DateTime; +begin + result := DataTable.Fields[idx_InformeCabeceraPresupuestoFECHAALTA].AsDateTime; +end; + +procedure TInformeCabeceraPresupuestoDataTableRules.SetFECHAALTAValue(const aValue: DateTime); +begin + DataTable.Fields[idx_InformeCabeceraPresupuestoFECHAALTA].AsDateTime := aValue; +end; + +function TInformeCabeceraPresupuestoDataTableRules.GetUSUARIOValue: String; +begin + result := DataTable.Fields[idx_InformeCabeceraPresupuestoUSUARIO].AsString; +end; + +procedure TInformeCabeceraPresupuestoDataTableRules.SetUSUARIOValue(const aValue: String); +begin + DataTable.Fields[idx_InformeCabeceraPresupuestoUSUARIO].AsString := aValue; +end; + +function TInformeCabeceraPresupuestoDataTableRules.GetCODIGOCONTACTOValue: Integer; +begin + result := DataTable.Fields[idx_InformeCabeceraPresupuestoCODIGOCONTACTO].AsInteger; +end; + +procedure TInformeCabeceraPresupuestoDataTableRules.SetCODIGOCONTACTOValue(const aValue: Integer); +begin + DataTable.Fields[idx_InformeCabeceraPresupuestoCODIGOCONTACTO].AsInteger := aValue; +end; + +function TInformeCabeceraPresupuestoDataTableRules.GetREFERENCIAValue: String; +begin + result := DataTable.Fields[idx_InformeCabeceraPresupuestoREFERENCIA].AsString; +end; + +procedure TInformeCabeceraPresupuestoDataTableRules.SetREFERENCIAValue(const aValue: String); +begin + DataTable.Fields[idx_InformeCabeceraPresupuestoREFERENCIA].AsString := aValue; +end; + +function TInformeCabeceraPresupuestoDataTableRules.GetTIPOValue: String; +begin + result := DataTable.Fields[idx_InformeCabeceraPresupuestoTIPO].AsString; +end; + +procedure TInformeCabeceraPresupuestoDataTableRules.SetTIPOValue(const aValue: String); +begin + DataTable.Fields[idx_InformeCabeceraPresupuestoTIPO].AsString := aValue; +end; + +function TInformeCabeceraPresupuestoDataTableRules.GetFECHAPRESUPUESTOValue: DateTime; +begin + result := DataTable.Fields[idx_InformeCabeceraPresupuestoFECHAPRESUPUESTO].AsDateTime; +end; + +procedure TInformeCabeceraPresupuestoDataTableRules.SetFECHAPRESUPUESTOValue(const aValue: DateTime); +begin + DataTable.Fields[idx_InformeCabeceraPresupuestoFECHAPRESUPUESTO].AsDateTime := aValue; +end; + +function TInformeCabeceraPresupuestoDataTableRules.GetVIGENCIAPRESUPUESTOValue: DateTime; +begin + result := DataTable.Fields[idx_InformeCabeceraPresupuestoVIGENCIAPRESUPUESTO].AsDateTime; +end; + +procedure TInformeCabeceraPresupuestoDataTableRules.SetVIGENCIAPRESUPUESTOValue(const aValue: DateTime); +begin + DataTable.Fields[idx_InformeCabeceraPresupuestoVIGENCIAPRESUPUESTO].AsDateTime := aValue; +end; + +function TInformeCabeceraPresupuestoDataTableRules.GetSITUACIONValue: String; +begin + result := DataTable.Fields[idx_InformeCabeceraPresupuestoSITUACION].AsString; +end; + +procedure TInformeCabeceraPresupuestoDataTableRules.SetSITUACIONValue(const aValue: String); +begin + DataTable.Fields[idx_InformeCabeceraPresupuestoSITUACION].AsString := aValue; +end; + +function TInformeCabeceraPresupuestoDataTableRules.GetFECHADECISIONValue: DateTime; +begin + result := DataTable.Fields[idx_InformeCabeceraPresupuestoFECHADECISION].AsDateTime; +end; + +procedure TInformeCabeceraPresupuestoDataTableRules.SetFECHADECISIONValue(const aValue: DateTime); +begin + DataTable.Fields[idx_InformeCabeceraPresupuestoFECHADECISION].AsDateTime := aValue; +end; + +function TInformeCabeceraPresupuestoDataTableRules.GetBASEIMPONIBLEValue: Float; +begin + result := DataTable.Fields[idx_InformeCabeceraPresupuestoBASEIMPONIBLE].AsFloat; +end; + +procedure TInformeCabeceraPresupuestoDataTableRules.SetBASEIMPONIBLEValue(const aValue: Float); +begin + DataTable.Fields[idx_InformeCabeceraPresupuestoBASEIMPONIBLE].AsFloat := aValue; +end; + +function TInformeCabeceraPresupuestoDataTableRules.GetDESCUENTOValue: Float; +begin + result := DataTable.Fields[idx_InformeCabeceraPresupuestoDESCUENTO].AsFloat; +end; + +procedure TInformeCabeceraPresupuestoDataTableRules.SetDESCUENTOValue(const aValue: Float); +begin + DataTable.Fields[idx_InformeCabeceraPresupuestoDESCUENTO].AsFloat := aValue; +end; + +function TInformeCabeceraPresupuestoDataTableRules.GetIMPORTEDESCUENTOValue: Float; +begin + result := DataTable.Fields[idx_InformeCabeceraPresupuestoIMPORTEDESCUENTO].AsFloat; +end; + +procedure TInformeCabeceraPresupuestoDataTableRules.SetIMPORTEDESCUENTOValue(const aValue: Float); +begin + DataTable.Fields[idx_InformeCabeceraPresupuestoIMPORTEDESCUENTO].AsFloat := aValue; +end; + +function TInformeCabeceraPresupuestoDataTableRules.GetIVAValue: Float; +begin + result := DataTable.Fields[idx_InformeCabeceraPresupuestoIVA].AsFloat; +end; + +procedure TInformeCabeceraPresupuestoDataTableRules.SetIVAValue(const aValue: Float); +begin + DataTable.Fields[idx_InformeCabeceraPresupuestoIVA].AsFloat := aValue; +end; + +function TInformeCabeceraPresupuestoDataTableRules.GetIMPORTEIVAValue: Float; +begin + result := DataTable.Fields[idx_InformeCabeceraPresupuestoIMPORTEIVA].AsFloat; +end; + +procedure TInformeCabeceraPresupuestoDataTableRules.SetIMPORTEIVAValue(const aValue: Float); +begin + DataTable.Fields[idx_InformeCabeceraPresupuestoIMPORTEIVA].AsFloat := aValue; +end; + +function TInformeCabeceraPresupuestoDataTableRules.GetIMPORTETOTALValue: Float; +begin + result := DataTable.Fields[idx_InformeCabeceraPresupuestoIMPORTETOTAL].AsFloat; +end; + +procedure TInformeCabeceraPresupuestoDataTableRules.SetIMPORTETOTALValue(const aValue: Float); +begin + DataTable.Fields[idx_InformeCabeceraPresupuestoIMPORTETOTAL].AsFloat := aValue; +end; + +function TInformeCabeceraPresupuestoDataTableRules.GetOBSERVACIONESValue: IROStrings; +begin + result := NewROStrings(); + result.Text := DataTable.Fields[idx_InformeCabeceraPresupuestoOBSERVACIONES].AsString; +end; + +procedure TInformeCabeceraPresupuestoDataTableRules.SetOBSERVACIONESValue(const aValue: IROStrings); +begin + DataTable.Fields[idx_InformeCabeceraPresupuestoOBSERVACIONES].AsString := aValue.Text; +end; + +function TInformeCabeceraPresupuestoDataTableRules.GetPLAZOENTREGAValue: IROStrings; +begin + result := NewROStrings(); + result.Text := DataTable.Fields[idx_InformeCabeceraPresupuestoPLAZOENTREGA].AsString; +end; + +procedure TInformeCabeceraPresupuestoDataTableRules.SetPLAZOENTREGAValue(const aValue: IROStrings); +begin + DataTable.Fields[idx_InformeCabeceraPresupuestoPLAZOENTREGA].AsString := aValue.Text; +end; + +function TInformeCabeceraPresupuestoDataTableRules.GetFORMAPAGOValue: IROStrings; +begin + result := NewROStrings(); + result.Text := DataTable.Fields[idx_InformeCabeceraPresupuestoFORMAPAGO].AsString; +end; + +procedure TInformeCabeceraPresupuestoDataTableRules.SetFORMAPAGOValue(const aValue: IROStrings); +begin + DataTable.Fields[idx_InformeCabeceraPresupuestoFORMAPAGO].AsString := aValue.Text; +end; + +function TInformeCabeceraPresupuestoDataTableRules.GetNOMBREValue: String; +begin + result := DataTable.Fields[idx_InformeCabeceraPresupuestoNOMBRE].AsString; +end; + +procedure TInformeCabeceraPresupuestoDataTableRules.SetNOMBREValue(const aValue: String); +begin + DataTable.Fields[idx_InformeCabeceraPresupuestoNOMBRE].AsString := aValue; +end; + +function TInformeCabeceraPresupuestoDataTableRules.GetNIF_CIFValue: String; +begin + result := DataTable.Fields[idx_InformeCabeceraPresupuestoNIF_CIF].AsString; +end; + +procedure TInformeCabeceraPresupuestoDataTableRules.SetNIF_CIFValue(const aValue: String); +begin + DataTable.Fields[idx_InformeCabeceraPresupuestoNIF_CIF].AsString := aValue; +end; + +function TInformeCabeceraPresupuestoDataTableRules.GetNOMBRE1Value: String; +begin + result := DataTable.Fields[idx_InformeCabeceraPresupuestoNOMBRE1].AsString; +end; + +procedure TInformeCabeceraPresupuestoDataTableRules.SetNOMBRE1Value(const aValue: String); +begin + DataTable.Fields[idx_InformeCabeceraPresupuestoNOMBRE1].AsString := aValue; +end; + +function TInformeCabeceraPresupuestoDataTableRules.GetCALLEValue: String; +begin + result := DataTable.Fields[idx_InformeCabeceraPresupuestoCALLE].AsString; +end; + +procedure TInformeCabeceraPresupuestoDataTableRules.SetCALLEValue(const aValue: String); +begin + DataTable.Fields[idx_InformeCabeceraPresupuestoCALLE].AsString := aValue; +end; + +function TInformeCabeceraPresupuestoDataTableRules.GetCODIGOPOSTALValue: String; +begin + result := DataTable.Fields[idx_InformeCabeceraPresupuestoCODIGOPOSTAL].AsString; +end; + +procedure TInformeCabeceraPresupuestoDataTableRules.SetCODIGOPOSTALValue(const aValue: String); +begin + DataTable.Fields[idx_InformeCabeceraPresupuestoCODIGOPOSTAL].AsString := aValue; +end; + +function TInformeCabeceraPresupuestoDataTableRules.GetPOBLACIONValue: String; +begin + result := DataTable.Fields[idx_InformeCabeceraPresupuestoPOBLACION].AsString; +end; + +procedure TInformeCabeceraPresupuestoDataTableRules.SetPOBLACIONValue(const aValue: String); +begin + DataTable.Fields[idx_InformeCabeceraPresupuestoPOBLACION].AsString := aValue; +end; + +function TInformeCabeceraPresupuestoDataTableRules.GetTELEFONO1Value: String; +begin + result := DataTable.Fields[idx_InformeCabeceraPresupuestoTELEFONO1].AsString; +end; + +procedure TInformeCabeceraPresupuestoDataTableRules.SetTELEFONO1Value(const aValue: String); +begin + DataTable.Fields[idx_InformeCabeceraPresupuestoTELEFONO1].AsString := aValue; +end; + +function TInformeCabeceraPresupuestoDataTableRules.GetTELEFONO2Value: String; +begin + result := DataTable.Fields[idx_InformeCabeceraPresupuestoTELEFONO2].AsString; +end; + +procedure TInformeCabeceraPresupuestoDataTableRules.SetTELEFONO2Value(const aValue: String); +begin + DataTable.Fields[idx_InformeCabeceraPresupuestoTELEFONO2].AsString := aValue; +end; + +function TInformeCabeceraPresupuestoDataTableRules.GetMOVILValue: String; +begin + result := DataTable.Fields[idx_InformeCabeceraPresupuestoMOVIL].AsString; +end; + +procedure TInformeCabeceraPresupuestoDataTableRules.SetMOVILValue(const aValue: String); +begin + DataTable.Fields[idx_InformeCabeceraPresupuestoMOVIL].AsString := aValue; +end; + +function TInformeCabeceraPresupuestoDataTableRules.GetOPCIONValue: String; +begin + result := DataTable.Fields[idx_InformeCabeceraPresupuestoOPCION].AsString; +end; + +procedure TInformeCabeceraPresupuestoDataTableRules.SetOPCIONValue(const aValue: String); +begin + DataTable.Fields[idx_InformeCabeceraPresupuestoOPCION].AsString := aValue; +end; + +function TInformeCabeceraPresupuestoDataTableRules.GetCODIGOALBARANValue: Integer; +begin + result := DataTable.Fields[idx_InformeCabeceraPresupuestoCODIGOALBARAN].AsInteger; +end; + +procedure TInformeCabeceraPresupuestoDataTableRules.SetCODIGOALBARANValue(const aValue: Integer); +begin + DataTable.Fields[idx_InformeCabeceraPresupuestoCODIGOALBARAN].AsInteger := aValue; +end; + +function TInformeCabeceraPresupuestoDataTableRules.GetALBARANValue: String; +begin + result := DataTable.Fields[idx_InformeCabeceraPresupuestoALBARAN].AsString; +end; + +procedure TInformeCabeceraPresupuestoDataTableRules.SetALBARANValue(const aValue: String); +begin + DataTable.Fields[idx_InformeCabeceraPresupuestoALBARAN].AsString := aValue; +end; + + +{ TInformeDetallesPresupuestoDataTableRules } +constructor TInformeDetallesPresupuestoDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TInformeDetallesPresupuestoDataTableRules.Destroy; +begin + inherited; +end; + +function TInformeDetallesPresupuestoDataTableRules.GetCODIGOPRESUPUESTOValue: Integer; +begin + result := DataTable.Fields[idx_InformeDetallesPresupuestoCODIGOPRESUPUESTO].AsInteger; +end; + +procedure TInformeDetallesPresupuestoDataTableRules.SetCODIGOPRESUPUESTOValue(const aValue: Integer); +begin + DataTable.Fields[idx_InformeDetallesPresupuestoCODIGOPRESUPUESTO].AsInteger := aValue; +end; + +function TInformeDetallesPresupuestoDataTableRules.GetNUMCONCEPTOValue: Integer; +begin + result := DataTable.Fields[idx_InformeDetallesPresupuestoNUMCONCEPTO].AsInteger; +end; + +procedure TInformeDetallesPresupuestoDataTableRules.SetNUMCONCEPTOValue(const aValue: Integer); +begin + DataTable.Fields[idx_InformeDetallesPresupuestoNUMCONCEPTO].AsInteger := aValue; +end; + +function TInformeDetallesPresupuestoDataTableRules.GetDESCRIPCIONValue: String; +begin + result := DataTable.Fields[idx_InformeDetallesPresupuestoDESCRIPCION].AsString; +end; + +procedure TInformeDetallesPresupuestoDataTableRules.SetDESCRIPCIONValue(const aValue: String); +begin + DataTable.Fields[idx_InformeDetallesPresupuestoDESCRIPCION].AsString := aValue; +end; + +function TInformeDetallesPresupuestoDataTableRules.GetCANTIDADValue: Integer; +begin + result := DataTable.Fields[idx_InformeDetallesPresupuestoCANTIDAD].AsInteger; +end; + +procedure TInformeDetallesPresupuestoDataTableRules.SetCANTIDADValue(const aValue: Integer); +begin + DataTable.Fields[idx_InformeDetallesPresupuestoCANTIDAD].AsInteger := aValue; +end; + +function TInformeDetallesPresupuestoDataTableRules.GetIMPORTEUNIDADValue: Currency; +begin + result := DataTable.Fields[idx_InformeDetallesPresupuestoIMPORTEUNIDAD].AsCurrency; +end; + +procedure TInformeDetallesPresupuestoDataTableRules.SetIMPORTEUNIDADValue(const aValue: Currency); +begin + DataTable.Fields[idx_InformeDetallesPresupuestoIMPORTEUNIDAD].AsCurrency := aValue; +end; + +function TInformeDetallesPresupuestoDataTableRules.GetIMPORTETOTALValue: Currency; +begin + result := DataTable.Fields[idx_InformeDetallesPresupuestoIMPORTETOTAL].AsCurrency; +end; + +procedure TInformeDetallesPresupuestoDataTableRules.SetIMPORTETOTALValue(const aValue: Currency); +begin + DataTable.Fields[idx_InformeDetallesPresupuestoIMPORTETOTAL].AsCurrency := aValue; +end; + +function TInformeDetallesPresupuestoDataTableRules.GetTIPOValue: String; +begin + result := DataTable.Fields[idx_InformeDetallesPresupuestoTIPO].AsString; +end; + +procedure TInformeDetallesPresupuestoDataTableRules.SetTIPOValue(const aValue: String); +begin + DataTable.Fields[idx_InformeDetallesPresupuestoTIPO].AsString := aValue; +end; + +function TInformeDetallesPresupuestoDataTableRules.GetPOSICIONValue: Integer; +begin + result := DataTable.Fields[idx_InformeDetallesPresupuestoPOSICION].AsInteger; +end; + +procedure TInformeDetallesPresupuestoDataTableRules.SetPOSICIONValue(const aValue: Integer); +begin + DataTable.Fields[idx_InformeDetallesPresupuestoPOSICION].AsInteger := aValue; +end; + + +initialization + RegisterDataTableRules(RID_DetallesPresupuestos, TDetallesPresupuestosDataTableRules); + RegisterDataTableRules(RID_Presupuestos, TPresupuestosDataTableRules); + RegisterDataTableRules(RID_Presupuestos_RefreshDataset, TPresupuestos_RefreshDatasetDataTableRules); + RegisterDataTableRules(RID_InformeCabeceraPresupuesto, TInformeCabeceraPresupuestoDataTableRules); + RegisterDataTableRules(RID_InformeDetallesPresupuesto, TInformeDetallesPresupuestoDataTableRules); + +end. diff --git a/Modulos/Presupuestos/Reglas/schPresupuestosServer_Intf.pas b/Modulos/Presupuestos/Reglas/schPresupuestosServer_Intf.pas new file mode 100644 index 0000000..ee412ec --- /dev/null +++ b/Modulos/Presupuestos/Reglas/schPresupuestosServer_Intf.pas @@ -0,0 +1,1973 @@ +unit schPresupuestosServer_Intf; + +interface + +uses + Classes, DB, SysUtils, uROClasses, uDADataTable, uDABusinessProcessor, schPresupuestosClient_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_DetallesPresupuestosDelta = '{27189DEC-DB55-4CFF-90D4-3CCC8C3789B7}'; + RID_PresupuestosDelta = '{AD80280F-15D4-422B-9E7C-B413BD6D9270}'; + RID_Presupuestos_RefreshDatasetDelta = '{F4E70462-4089-44C8-AFAA-B6FDEFE43DB9}'; + RID_InformeCabeceraPresupuestoDelta = '{41A03000-031E-4727-B794-E79D553EC52B}'; + RID_InformeDetallesPresupuestoDelta = '{741759BF-9981-4B00-A217-C5C769B36552}'; + +type + { IDetallesPresupuestosDelta } + IDetallesPresupuestosDelta = interface(IDetallesPresupuestos) + ['{27189DEC-DB55-4CFF-90D4-3CCC8C3789B7}'] + { Property getters and setters } + function GetOldCODIGOPRESUPUESTOValue : Integer; + function GetOldNUMCONCEPTOValue : Integer; + function GetOldDESCRIPCIONValue : String; + function GetOldCANTIDADValue : Integer; + function GetOldIMPORTEUNIDADValue : Currency; + function GetOldIMPORTETOTALValue : Currency; + function GetOldTIPOValue : String; + function GetOldPOSICIONValue : Integer; + function GetOldVISIBLEValue : String; + function GetOldPUNTOSValue : Integer; + function GetOldIMPORTEPUNTOSValue : Currency; + + { Properties } + property OldCODIGOPRESUPUESTO : Integer read GetOldCODIGOPRESUPUESTOValue; + property OldNUMCONCEPTO : Integer read GetOldNUMCONCEPTOValue; + property OldDESCRIPCION : String read GetOldDESCRIPCIONValue; + property OldCANTIDAD : Integer read GetOldCANTIDADValue; + property OldIMPORTEUNIDAD : Currency read GetOldIMPORTEUNIDADValue; + property OldIMPORTETOTAL : Currency read GetOldIMPORTETOTALValue; + property OldTIPO : String read GetOldTIPOValue; + property OldPOSICION : Integer read GetOldPOSICIONValue; + property OldVISIBLE : String read GetOldVISIBLEValue; + property OldPUNTOS : Integer read GetOldPUNTOSValue; + property OldIMPORTEPUNTOS : Currency read GetOldIMPORTEPUNTOSValue; + end; + + { TDetallesPresupuestosBusinessProcessorRules } + TDetallesPresupuestosBusinessProcessorRules = class(TDABusinessProcessorRules, IDetallesPresupuestos, IDetallesPresupuestosDelta) + private + protected + { Property getters and setters } + function GetCODIGOPRESUPUESTOValue: Integer; virtual; + function GetOldCODIGOPRESUPUESTOValue: Integer; virtual; + procedure SetCODIGOPRESUPUESTOValue(const aValue: Integer); virtual; + function GetNUMCONCEPTOValue: Integer; virtual; + function GetOldNUMCONCEPTOValue: Integer; virtual; + procedure SetNUMCONCEPTOValue(const aValue: Integer); virtual; + function GetDESCRIPCIONValue: String; virtual; + function GetOldDESCRIPCIONValue: String; virtual; + procedure SetDESCRIPCIONValue(const aValue: String); virtual; + function GetCANTIDADValue: Integer; virtual; + function GetOldCANTIDADValue: Integer; virtual; + procedure SetCANTIDADValue(const aValue: Integer); virtual; + function GetIMPORTEUNIDADValue: Currency; virtual; + function GetOldIMPORTEUNIDADValue: Currency; virtual; + procedure SetIMPORTEUNIDADValue(const aValue: Currency); virtual; + function GetIMPORTETOTALValue: Currency; virtual; + function GetOldIMPORTETOTALValue: Currency; virtual; + procedure SetIMPORTETOTALValue(const aValue: Currency); virtual; + function GetTIPOValue: String; virtual; + function GetOldTIPOValue: String; virtual; + procedure SetTIPOValue(const aValue: String); virtual; + function GetPOSICIONValue: Integer; virtual; + function GetOldPOSICIONValue: Integer; virtual; + procedure SetPOSICIONValue(const aValue: Integer); virtual; + function GetVISIBLEValue: String; virtual; + function GetOldVISIBLEValue: String; virtual; + procedure SetVISIBLEValue(const aValue: String); virtual; + function GetPUNTOSValue: Integer; virtual; + function GetOldPUNTOSValue: Integer; virtual; + procedure SetPUNTOSValue(const aValue: Integer); virtual; + function GetIMPORTEPUNTOSValue: Currency; virtual; + function GetOldIMPORTEPUNTOSValue: Currency; virtual; + procedure SetIMPORTEPUNTOSValue(const aValue: Currency); virtual; + + { Properties } + property CODIGOPRESUPUESTO : Integer read GetCODIGOPRESUPUESTOValue write SetCODIGOPRESUPUESTOValue; + property OldCODIGOPRESUPUESTO : Integer read GetOldCODIGOPRESUPUESTOValue; + property NUMCONCEPTO : Integer read GetNUMCONCEPTOValue write SetNUMCONCEPTOValue; + property OldNUMCONCEPTO : Integer read GetOldNUMCONCEPTOValue; + property DESCRIPCION : String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + property OldDESCRIPCION : String read GetOldDESCRIPCIONValue; + property CANTIDAD : Integer read GetCANTIDADValue write SetCANTIDADValue; + property OldCANTIDAD : Integer read GetOldCANTIDADValue; + property IMPORTEUNIDAD : Currency read GetIMPORTEUNIDADValue write SetIMPORTEUNIDADValue; + property OldIMPORTEUNIDAD : Currency read GetOldIMPORTEUNIDADValue; + property IMPORTETOTAL : Currency read GetIMPORTETOTALValue write SetIMPORTETOTALValue; + property OldIMPORTETOTAL : Currency read GetOldIMPORTETOTALValue; + property TIPO : String read GetTIPOValue write SetTIPOValue; + property OldTIPO : String read GetOldTIPOValue; + property POSICION : Integer read GetPOSICIONValue write SetPOSICIONValue; + property OldPOSICION : Integer read GetOldPOSICIONValue; + property VISIBLE : String read GetVISIBLEValue write SetVISIBLEValue; + property OldVISIBLE : String read GetOldVISIBLEValue; + property PUNTOS : Integer read GetPUNTOSValue write SetPUNTOSValue; + property OldPUNTOS : Integer read GetOldPUNTOSValue; + property IMPORTEPUNTOS : Currency read GetIMPORTEPUNTOSValue write SetIMPORTEPUNTOSValue; + property OldIMPORTEPUNTOS : Currency read GetOldIMPORTEPUNTOSValue; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + + { IPresupuestosDelta } + IPresupuestosDelta = interface(IPresupuestos) + ['{AD80280F-15D4-422B-9E7C-B413BD6D9270}'] + { Property getters and setters } + function GetOldCODIGOEMPRESAValue : Integer; + function GetOldCODIGOValue : Integer; + function GetOldFECHAALTAValue : DateTime; + function GetOldUSUARIOValue : String; + function GetOldCODIGOCONTACTOValue : Integer; + function GetOldNOMBREValue : String; + function GetOldREFERENCIAValue : String; + function GetOldTIPOValue : String; + function GetOldFECHAPRESUPUESTOValue : DateTime; + function GetOldVIGENCIAPRESUPUESTOValue : DateTime; + function GetOldSITUACIONValue : String; + function GetOldFECHADECISIONValue : DateTime; + function GetOldBASEIMPONIBLEValue : Currency; + function GetOldDESCUENTOValue : Float; + function GetOldIMPORTEDESCUENTOValue : Currency; + function GetOldIVAValue : Float; + function GetOldIMPORTEIVAValue : Currency; + function GetOldIMPORTETOTALValue : Currency; + function GetOldOBSERVACIONESValue : IROStrings; + function GetOldPLAZOENTREGAValue : IROStrings; + function GetOldFORMAPAGOValue : IROStrings; + function GetOldCODIGOALBARANValue : Integer; + function GetOldALBARANValue : String; + function GetOldOPCIONValue : String; + + { Properties } + property OldCODIGOEMPRESA : Integer read GetOldCODIGOEMPRESAValue; + property OldCODIGO : Integer read GetOldCODIGOValue; + property OldFECHAALTA : DateTime read GetOldFECHAALTAValue; + property OldUSUARIO : String read GetOldUSUARIOValue; + property OldCODIGOCONTACTO : Integer read GetOldCODIGOCONTACTOValue; + property OldNOMBRE : String read GetOldNOMBREValue; + property OldREFERENCIA : String read GetOldREFERENCIAValue; + property OldTIPO : String read GetOldTIPOValue; + property OldFECHAPRESUPUESTO : DateTime read GetOldFECHAPRESUPUESTOValue; + property OldVIGENCIAPRESUPUESTO : DateTime read GetOldVIGENCIAPRESUPUESTOValue; + property OldSITUACION : String read GetOldSITUACIONValue; + property OldFECHADECISION : DateTime read GetOldFECHADECISIONValue; + property OldBASEIMPONIBLE : Currency read GetOldBASEIMPONIBLEValue; + property OldDESCUENTO : Float read GetOldDESCUENTOValue; + property OldIMPORTEDESCUENTO : Currency read GetOldIMPORTEDESCUENTOValue; + property OldIVA : Float read GetOldIVAValue; + property OldIMPORTEIVA : Currency read GetOldIMPORTEIVAValue; + property OldIMPORTETOTAL : Currency read GetOldIMPORTETOTALValue; + property OldOBSERVACIONES : IROStrings read GetOldOBSERVACIONESValue; + property OldPLAZOENTREGA : IROStrings read GetOldPLAZOENTREGAValue; + property OldFORMAPAGO : IROStrings read GetOldFORMAPAGOValue; + property OldCODIGOALBARAN : Integer read GetOldCODIGOALBARANValue; + property OldALBARAN : String read GetOldALBARANValue; + property OldOPCION : String read GetOldOPCIONValue; + end; + + { TPresupuestosBusinessProcessorRules } + TPresupuestosBusinessProcessorRules = class(TDABusinessProcessorRules, IPresupuestos, IPresupuestosDelta) + private + protected + { Property getters and setters } + function GetCODIGOEMPRESAValue: Integer; virtual; + function GetOldCODIGOEMPRESAValue: Integer; virtual; + procedure SetCODIGOEMPRESAValue(const aValue: Integer); virtual; + function GetCODIGOValue: Integer; virtual; + function GetOldCODIGOValue: Integer; virtual; + procedure SetCODIGOValue(const aValue: Integer); virtual; + function GetFECHAALTAValue: DateTime; virtual; + function GetOldFECHAALTAValue: DateTime; virtual; + procedure SetFECHAALTAValue(const aValue: DateTime); virtual; + function GetUSUARIOValue: String; virtual; + function GetOldUSUARIOValue: String; virtual; + procedure SetUSUARIOValue(const aValue: String); virtual; + function GetCODIGOCONTACTOValue: Integer; virtual; + function GetOldCODIGOCONTACTOValue: Integer; virtual; + procedure SetCODIGOCONTACTOValue(const aValue: Integer); virtual; + function GetNOMBREValue: String; virtual; + function GetOldNOMBREValue: String; virtual; + procedure SetNOMBREValue(const aValue: String); virtual; + function GetREFERENCIAValue: String; virtual; + function GetOldREFERENCIAValue: String; virtual; + procedure SetREFERENCIAValue(const aValue: String); virtual; + function GetTIPOValue: String; virtual; + function GetOldTIPOValue: String; virtual; + procedure SetTIPOValue(const aValue: String); virtual; + function GetFECHAPRESUPUESTOValue: DateTime; virtual; + function GetOldFECHAPRESUPUESTOValue: DateTime; virtual; + procedure SetFECHAPRESUPUESTOValue(const aValue: DateTime); virtual; + function GetVIGENCIAPRESUPUESTOValue: DateTime; virtual; + function GetOldVIGENCIAPRESUPUESTOValue: DateTime; virtual; + procedure SetVIGENCIAPRESUPUESTOValue(const aValue: DateTime); virtual; + function GetSITUACIONValue: String; virtual; + function GetOldSITUACIONValue: String; virtual; + procedure SetSITUACIONValue(const aValue: String); virtual; + function GetFECHADECISIONValue: DateTime; virtual; + function GetOldFECHADECISIONValue: DateTime; virtual; + procedure SetFECHADECISIONValue(const aValue: DateTime); virtual; + function GetBASEIMPONIBLEValue: Currency; virtual; + function GetOldBASEIMPONIBLEValue: Currency; virtual; + procedure SetBASEIMPONIBLEValue(const aValue: Currency); virtual; + function GetDESCUENTOValue: Float; virtual; + function GetOldDESCUENTOValue: Float; virtual; + procedure SetDESCUENTOValue(const aValue: Float); virtual; + function GetIMPORTEDESCUENTOValue: Currency; virtual; + function GetOldIMPORTEDESCUENTOValue: Currency; virtual; + procedure SetIMPORTEDESCUENTOValue(const aValue: Currency); virtual; + function GetIVAValue: Float; virtual; + function GetOldIVAValue: Float; virtual; + procedure SetIVAValue(const aValue: Float); virtual; + function GetIMPORTEIVAValue: Currency; virtual; + function GetOldIMPORTEIVAValue: Currency; virtual; + procedure SetIMPORTEIVAValue(const aValue: Currency); virtual; + function GetIMPORTETOTALValue: Currency; virtual; + function GetOldIMPORTETOTALValue: Currency; virtual; + procedure SetIMPORTETOTALValue(const aValue: Currency); virtual; + function GetOBSERVACIONESValue: IROStrings; virtual; + function GetOldOBSERVACIONESValue: IROStrings; virtual; + procedure SetOBSERVACIONESValue(const aValue: IROStrings); virtual; + function GetPLAZOENTREGAValue: IROStrings; virtual; + function GetOldPLAZOENTREGAValue: IROStrings; virtual; + procedure SetPLAZOENTREGAValue(const aValue: IROStrings); virtual; + function GetFORMAPAGOValue: IROStrings; virtual; + function GetOldFORMAPAGOValue: IROStrings; virtual; + procedure SetFORMAPAGOValue(const aValue: IROStrings); virtual; + function GetCODIGOALBARANValue: Integer; virtual; + function GetOldCODIGOALBARANValue: Integer; virtual; + procedure SetCODIGOALBARANValue(const aValue: Integer); virtual; + function GetALBARANValue: String; virtual; + function GetOldALBARANValue: String; virtual; + procedure SetALBARANValue(const aValue: String); virtual; + function GetOPCIONValue: String; virtual; + function GetOldOPCIONValue: String; virtual; + procedure SetOPCIONValue(const aValue: String); virtual; + + { Properties } + property CODIGOEMPRESA : Integer read GetCODIGOEMPRESAValue write SetCODIGOEMPRESAValue; + property OldCODIGOEMPRESA : Integer read GetOldCODIGOEMPRESAValue; + property CODIGO : Integer read GetCODIGOValue write SetCODIGOValue; + property OldCODIGO : Integer read GetOldCODIGOValue; + property FECHAALTA : DateTime read GetFECHAALTAValue write SetFECHAALTAValue; + property OldFECHAALTA : DateTime read GetOldFECHAALTAValue; + property USUARIO : String read GetUSUARIOValue write SetUSUARIOValue; + property OldUSUARIO : String read GetOldUSUARIOValue; + property CODIGOCONTACTO : Integer read GetCODIGOCONTACTOValue write SetCODIGOCONTACTOValue; + property OldCODIGOCONTACTO : Integer read GetOldCODIGOCONTACTOValue; + property NOMBRE : String read GetNOMBREValue write SetNOMBREValue; + property OldNOMBRE : String read GetOldNOMBREValue; + property REFERENCIA : String read GetREFERENCIAValue write SetREFERENCIAValue; + property OldREFERENCIA : String read GetOldREFERENCIAValue; + property TIPO : String read GetTIPOValue write SetTIPOValue; + property OldTIPO : String read GetOldTIPOValue; + property FECHAPRESUPUESTO : DateTime read GetFECHAPRESUPUESTOValue write SetFECHAPRESUPUESTOValue; + property OldFECHAPRESUPUESTO : DateTime read GetOldFECHAPRESUPUESTOValue; + property VIGENCIAPRESUPUESTO : DateTime read GetVIGENCIAPRESUPUESTOValue write SetVIGENCIAPRESUPUESTOValue; + property OldVIGENCIAPRESUPUESTO : DateTime read GetOldVIGENCIAPRESUPUESTOValue; + property SITUACION : String read GetSITUACIONValue write SetSITUACIONValue; + property OldSITUACION : String read GetOldSITUACIONValue; + property FECHADECISION : DateTime read GetFECHADECISIONValue write SetFECHADECISIONValue; + property OldFECHADECISION : DateTime read GetOldFECHADECISIONValue; + property BASEIMPONIBLE : Currency read GetBASEIMPONIBLEValue write SetBASEIMPONIBLEValue; + property OldBASEIMPONIBLE : Currency read GetOldBASEIMPONIBLEValue; + property DESCUENTO : Float read GetDESCUENTOValue write SetDESCUENTOValue; + property OldDESCUENTO : Float read GetOldDESCUENTOValue; + property IMPORTEDESCUENTO : Currency read GetIMPORTEDESCUENTOValue write SetIMPORTEDESCUENTOValue; + property OldIMPORTEDESCUENTO : Currency read GetOldIMPORTEDESCUENTOValue; + property IVA : Float read GetIVAValue write SetIVAValue; + property OldIVA : Float read GetOldIVAValue; + property IMPORTEIVA : Currency read GetIMPORTEIVAValue write SetIMPORTEIVAValue; + property OldIMPORTEIVA : Currency read GetOldIMPORTEIVAValue; + property IMPORTETOTAL : Currency read GetIMPORTETOTALValue write SetIMPORTETOTALValue; + property OldIMPORTETOTAL : Currency read GetOldIMPORTETOTALValue; + property OBSERVACIONES : IROStrings read GetOBSERVACIONESValue write SetOBSERVACIONESValue; + property OldOBSERVACIONES : IROStrings read GetOldOBSERVACIONESValue; + property PLAZOENTREGA : IROStrings read GetPLAZOENTREGAValue write SetPLAZOENTREGAValue; + property OldPLAZOENTREGA : IROStrings read GetOldPLAZOENTREGAValue; + property FORMAPAGO : IROStrings read GetFORMAPAGOValue write SetFORMAPAGOValue; + property OldFORMAPAGO : IROStrings read GetOldFORMAPAGOValue; + property CODIGOALBARAN : Integer read GetCODIGOALBARANValue write SetCODIGOALBARANValue; + property OldCODIGOALBARAN : Integer read GetOldCODIGOALBARANValue; + property ALBARAN : String read GetALBARANValue write SetALBARANValue; + property OldALBARAN : String read GetOldALBARANValue; + property OPCION : String read GetOPCIONValue write SetOPCIONValue; + property OldOPCION : String read GetOldOPCIONValue; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + + { IPresupuestos_RefreshDatasetDelta } + IPresupuestos_RefreshDatasetDelta = interface(IPresupuestos_RefreshDataset) + ['{F4E70462-4089-44C8-AFAA-B6FDEFE43DB9}'] + { Property getters and setters } + function GetOldCODIGOValue : Integer; + function GetOldNOMBREValue : String; + function GetOldREFERENCIAValue : String; + function GetOldCODIGOALBARANValue : Integer; + function GetOldALBARANValue : String; + + { Properties } + property OldCODIGO : Integer read GetOldCODIGOValue; + property OldNOMBRE : String read GetOldNOMBREValue; + property OldREFERENCIA : String read GetOldREFERENCIAValue; + property OldCODIGOALBARAN : Integer read GetOldCODIGOALBARANValue; + property OldALBARAN : String read GetOldALBARANValue; + end; + + { TPresupuestos_RefreshDatasetBusinessProcessorRules } + TPresupuestos_RefreshDatasetBusinessProcessorRules = class(TDABusinessProcessorRules, IPresupuestos_RefreshDataset, IPresupuestos_RefreshDatasetDelta) + private + protected + { Property getters and setters } + function GetCODIGOValue: Integer; virtual; + function GetOldCODIGOValue: Integer; virtual; + procedure SetCODIGOValue(const aValue: Integer); virtual; + function GetNOMBREValue: String; virtual; + function GetOldNOMBREValue: String; virtual; + procedure SetNOMBREValue(const aValue: String); virtual; + function GetREFERENCIAValue: String; virtual; + function GetOldREFERENCIAValue: String; virtual; + procedure SetREFERENCIAValue(const aValue: String); virtual; + function GetCODIGOALBARANValue: Integer; virtual; + function GetOldCODIGOALBARANValue: Integer; virtual; + procedure SetCODIGOALBARANValue(const aValue: Integer); virtual; + function GetALBARANValue: String; virtual; + function GetOldALBARANValue: String; virtual; + procedure SetALBARANValue(const aValue: String); virtual; + + { Properties } + property CODIGO : Integer read GetCODIGOValue write SetCODIGOValue; + property OldCODIGO : Integer read GetOldCODIGOValue; + property NOMBRE : String read GetNOMBREValue write SetNOMBREValue; + property OldNOMBRE : String read GetOldNOMBREValue; + property REFERENCIA : String read GetREFERENCIAValue write SetREFERENCIAValue; + property OldREFERENCIA : String read GetOldREFERENCIAValue; + property CODIGOALBARAN : Integer read GetCODIGOALBARANValue write SetCODIGOALBARANValue; + property OldCODIGOALBARAN : Integer read GetOldCODIGOALBARANValue; + property ALBARAN : String read GetALBARANValue write SetALBARANValue; + property OldALBARAN : String read GetOldALBARANValue; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + + { IInformeCabeceraPresupuestoDelta } + IInformeCabeceraPresupuestoDelta = interface(IInformeCabeceraPresupuesto) + ['{41A03000-031E-4727-B794-E79D553EC52B}'] + { Property getters and setters } + function GetOldCODIGOEMPRESAValue : Integer; + function GetOldCODIGOValue : Integer; + function GetOldFECHAALTAValue : DateTime; + function GetOldUSUARIOValue : String; + function GetOldCODIGOCONTACTOValue : Integer; + function GetOldREFERENCIAValue : String; + function GetOldTIPOValue : String; + function GetOldFECHAPRESUPUESTOValue : DateTime; + function GetOldVIGENCIAPRESUPUESTOValue : DateTime; + function GetOldSITUACIONValue : String; + function GetOldFECHADECISIONValue : DateTime; + function GetOldBASEIMPONIBLEValue : Float; + function GetOldDESCUENTOValue : Float; + function GetOldIMPORTEDESCUENTOValue : Float; + function GetOldIVAValue : Float; + function GetOldIMPORTEIVAValue : Float; + function GetOldIMPORTETOTALValue : Float; + function GetOldOBSERVACIONESValue : IROStrings; + function GetOldPLAZOENTREGAValue : IROStrings; + function GetOldFORMAPAGOValue : IROStrings; + function GetOldNOMBREValue : String; + function GetOldNIF_CIFValue : String; + function GetOldNOMBRE1Value : String; + function GetOldCALLEValue : String; + function GetOldCODIGOPOSTALValue : String; + function GetOldPOBLACIONValue : String; + function GetOldTELEFONO1Value : String; + function GetOldTELEFONO2Value : String; + function GetOldMOVILValue : String; + function GetOldOPCIONValue : String; + function GetOldCODIGOALBARANValue : Integer; + function GetOldALBARANValue : String; + + { Properties } + property OldCODIGOEMPRESA : Integer read GetOldCODIGOEMPRESAValue; + property OldCODIGO : Integer read GetOldCODIGOValue; + property OldFECHAALTA : DateTime read GetOldFECHAALTAValue; + property OldUSUARIO : String read GetOldUSUARIOValue; + property OldCODIGOCONTACTO : Integer read GetOldCODIGOCONTACTOValue; + property OldREFERENCIA : String read GetOldREFERENCIAValue; + property OldTIPO : String read GetOldTIPOValue; + property OldFECHAPRESUPUESTO : DateTime read GetOldFECHAPRESUPUESTOValue; + property OldVIGENCIAPRESUPUESTO : DateTime read GetOldVIGENCIAPRESUPUESTOValue; + property OldSITUACION : String read GetOldSITUACIONValue; + property OldFECHADECISION : DateTime read GetOldFECHADECISIONValue; + property OldBASEIMPONIBLE : Float read GetOldBASEIMPONIBLEValue; + property OldDESCUENTO : Float read GetOldDESCUENTOValue; + property OldIMPORTEDESCUENTO : Float read GetOldIMPORTEDESCUENTOValue; + property OldIVA : Float read GetOldIVAValue; + property OldIMPORTEIVA : Float read GetOldIMPORTEIVAValue; + property OldIMPORTETOTAL : Float read GetOldIMPORTETOTALValue; + property OldOBSERVACIONES : IROStrings read GetOldOBSERVACIONESValue; + property OldPLAZOENTREGA : IROStrings read GetOldPLAZOENTREGAValue; + property OldFORMAPAGO : IROStrings read GetOldFORMAPAGOValue; + property OldNOMBRE : String read GetOldNOMBREValue; + property OldNIF_CIF : String read GetOldNIF_CIFValue; + property OldNOMBRE1 : String read GetOldNOMBRE1Value; + property OldCALLE : String read GetOldCALLEValue; + property OldCODIGOPOSTAL : String read GetOldCODIGOPOSTALValue; + property OldPOBLACION : String read GetOldPOBLACIONValue; + property OldTELEFONO1 : String read GetOldTELEFONO1Value; + property OldTELEFONO2 : String read GetOldTELEFONO2Value; + property OldMOVIL : String read GetOldMOVILValue; + property OldOPCION : String read GetOldOPCIONValue; + property OldCODIGOALBARAN : Integer read GetOldCODIGOALBARANValue; + property OldALBARAN : String read GetOldALBARANValue; + end; + + { TInformeCabeceraPresupuestoBusinessProcessorRules } + TInformeCabeceraPresupuestoBusinessProcessorRules = class(TDABusinessProcessorRules, IInformeCabeceraPresupuesto, IInformeCabeceraPresupuestoDelta) + private + protected + { Property getters and setters } + function GetCODIGOEMPRESAValue: Integer; virtual; + function GetOldCODIGOEMPRESAValue: Integer; virtual; + procedure SetCODIGOEMPRESAValue(const aValue: Integer); virtual; + function GetCODIGOValue: Integer; virtual; + function GetOldCODIGOValue: Integer; virtual; + procedure SetCODIGOValue(const aValue: Integer); virtual; + function GetFECHAALTAValue: DateTime; virtual; + function GetOldFECHAALTAValue: DateTime; virtual; + procedure SetFECHAALTAValue(const aValue: DateTime); virtual; + function GetUSUARIOValue: String; virtual; + function GetOldUSUARIOValue: String; virtual; + procedure SetUSUARIOValue(const aValue: String); virtual; + function GetCODIGOCONTACTOValue: Integer; virtual; + function GetOldCODIGOCONTACTOValue: Integer; virtual; + procedure SetCODIGOCONTACTOValue(const aValue: Integer); virtual; + function GetREFERENCIAValue: String; virtual; + function GetOldREFERENCIAValue: String; virtual; + procedure SetREFERENCIAValue(const aValue: String); virtual; + function GetTIPOValue: String; virtual; + function GetOldTIPOValue: String; virtual; + procedure SetTIPOValue(const aValue: String); virtual; + function GetFECHAPRESUPUESTOValue: DateTime; virtual; + function GetOldFECHAPRESUPUESTOValue: DateTime; virtual; + procedure SetFECHAPRESUPUESTOValue(const aValue: DateTime); virtual; + function GetVIGENCIAPRESUPUESTOValue: DateTime; virtual; + function GetOldVIGENCIAPRESUPUESTOValue: DateTime; virtual; + procedure SetVIGENCIAPRESUPUESTOValue(const aValue: DateTime); virtual; + function GetSITUACIONValue: String; virtual; + function GetOldSITUACIONValue: String; virtual; + procedure SetSITUACIONValue(const aValue: String); virtual; + function GetFECHADECISIONValue: DateTime; virtual; + function GetOldFECHADECISIONValue: DateTime; virtual; + procedure SetFECHADECISIONValue(const aValue: DateTime); virtual; + function GetBASEIMPONIBLEValue: Float; virtual; + function GetOldBASEIMPONIBLEValue: Float; virtual; + procedure SetBASEIMPONIBLEValue(const aValue: Float); virtual; + function GetDESCUENTOValue: Float; virtual; + function GetOldDESCUENTOValue: Float; virtual; + procedure SetDESCUENTOValue(const aValue: Float); virtual; + function GetIMPORTEDESCUENTOValue: Float; virtual; + function GetOldIMPORTEDESCUENTOValue: Float; virtual; + procedure SetIMPORTEDESCUENTOValue(const aValue: Float); virtual; + function GetIVAValue: Float; virtual; + function GetOldIVAValue: Float; virtual; + procedure SetIVAValue(const aValue: Float); virtual; + function GetIMPORTEIVAValue: Float; virtual; + function GetOldIMPORTEIVAValue: Float; virtual; + procedure SetIMPORTEIVAValue(const aValue: Float); virtual; + function GetIMPORTETOTALValue: Float; virtual; + function GetOldIMPORTETOTALValue: Float; virtual; + procedure SetIMPORTETOTALValue(const aValue: Float); virtual; + function GetOBSERVACIONESValue: IROStrings; virtual; + function GetOldOBSERVACIONESValue: IROStrings; virtual; + procedure SetOBSERVACIONESValue(const aValue: IROStrings); virtual; + function GetPLAZOENTREGAValue: IROStrings; virtual; + function GetOldPLAZOENTREGAValue: IROStrings; virtual; + procedure SetPLAZOENTREGAValue(const aValue: IROStrings); virtual; + function GetFORMAPAGOValue: IROStrings; virtual; + function GetOldFORMAPAGOValue: IROStrings; virtual; + procedure SetFORMAPAGOValue(const aValue: IROStrings); virtual; + function GetNOMBREValue: String; virtual; + function GetOldNOMBREValue: String; virtual; + procedure SetNOMBREValue(const aValue: String); virtual; + function GetNIF_CIFValue: String; virtual; + function GetOldNIF_CIFValue: String; virtual; + procedure SetNIF_CIFValue(const aValue: String); virtual; + function GetNOMBRE1Value: String; virtual; + function GetOldNOMBRE1Value: String; virtual; + procedure SetNOMBRE1Value(const aValue: String); virtual; + function GetCALLEValue: String; virtual; + function GetOldCALLEValue: String; virtual; + procedure SetCALLEValue(const aValue: String); virtual; + function GetCODIGOPOSTALValue: String; virtual; + function GetOldCODIGOPOSTALValue: String; virtual; + procedure SetCODIGOPOSTALValue(const aValue: String); virtual; + function GetPOBLACIONValue: String; virtual; + function GetOldPOBLACIONValue: String; virtual; + procedure SetPOBLACIONValue(const aValue: String); virtual; + function GetTELEFONO1Value: String; virtual; + function GetOldTELEFONO1Value: String; virtual; + procedure SetTELEFONO1Value(const aValue: String); virtual; + function GetTELEFONO2Value: String; virtual; + function GetOldTELEFONO2Value: String; virtual; + procedure SetTELEFONO2Value(const aValue: String); virtual; + function GetMOVILValue: String; virtual; + function GetOldMOVILValue: String; virtual; + procedure SetMOVILValue(const aValue: String); virtual; + function GetOPCIONValue: String; virtual; + function GetOldOPCIONValue: String; virtual; + procedure SetOPCIONValue(const aValue: String); virtual; + function GetCODIGOALBARANValue: Integer; virtual; + function GetOldCODIGOALBARANValue: Integer; virtual; + procedure SetCODIGOALBARANValue(const aValue: Integer); virtual; + function GetALBARANValue: String; virtual; + function GetOldALBARANValue: String; virtual; + procedure SetALBARANValue(const aValue: String); virtual; + + { Properties } + property CODIGOEMPRESA : Integer read GetCODIGOEMPRESAValue write SetCODIGOEMPRESAValue; + property OldCODIGOEMPRESA : Integer read GetOldCODIGOEMPRESAValue; + property CODIGO : Integer read GetCODIGOValue write SetCODIGOValue; + property OldCODIGO : Integer read GetOldCODIGOValue; + property FECHAALTA : DateTime read GetFECHAALTAValue write SetFECHAALTAValue; + property OldFECHAALTA : DateTime read GetOldFECHAALTAValue; + property USUARIO : String read GetUSUARIOValue write SetUSUARIOValue; + property OldUSUARIO : String read GetOldUSUARIOValue; + property CODIGOCONTACTO : Integer read GetCODIGOCONTACTOValue write SetCODIGOCONTACTOValue; + property OldCODIGOCONTACTO : Integer read GetOldCODIGOCONTACTOValue; + property REFERENCIA : String read GetREFERENCIAValue write SetREFERENCIAValue; + property OldREFERENCIA : String read GetOldREFERENCIAValue; + property TIPO : String read GetTIPOValue write SetTIPOValue; + property OldTIPO : String read GetOldTIPOValue; + property FECHAPRESUPUESTO : DateTime read GetFECHAPRESUPUESTOValue write SetFECHAPRESUPUESTOValue; + property OldFECHAPRESUPUESTO : DateTime read GetOldFECHAPRESUPUESTOValue; + property VIGENCIAPRESUPUESTO : DateTime read GetVIGENCIAPRESUPUESTOValue write SetVIGENCIAPRESUPUESTOValue; + property OldVIGENCIAPRESUPUESTO : DateTime read GetOldVIGENCIAPRESUPUESTOValue; + property SITUACION : String read GetSITUACIONValue write SetSITUACIONValue; + property OldSITUACION : String read GetOldSITUACIONValue; + property FECHADECISION : DateTime read GetFECHADECISIONValue write SetFECHADECISIONValue; + property OldFECHADECISION : DateTime read GetOldFECHADECISIONValue; + property BASEIMPONIBLE : Float read GetBASEIMPONIBLEValue write SetBASEIMPONIBLEValue; + property OldBASEIMPONIBLE : Float read GetOldBASEIMPONIBLEValue; + property DESCUENTO : Float read GetDESCUENTOValue write SetDESCUENTOValue; + property OldDESCUENTO : Float read GetOldDESCUENTOValue; + property IMPORTEDESCUENTO : Float read GetIMPORTEDESCUENTOValue write SetIMPORTEDESCUENTOValue; + property OldIMPORTEDESCUENTO : Float read GetOldIMPORTEDESCUENTOValue; + property IVA : Float read GetIVAValue write SetIVAValue; + property OldIVA : Float read GetOldIVAValue; + property IMPORTEIVA : Float read GetIMPORTEIVAValue write SetIMPORTEIVAValue; + property OldIMPORTEIVA : Float read GetOldIMPORTEIVAValue; + property IMPORTETOTAL : Float read GetIMPORTETOTALValue write SetIMPORTETOTALValue; + property OldIMPORTETOTAL : Float read GetOldIMPORTETOTALValue; + property OBSERVACIONES : IROStrings read GetOBSERVACIONESValue write SetOBSERVACIONESValue; + property OldOBSERVACIONES : IROStrings read GetOldOBSERVACIONESValue; + property PLAZOENTREGA : IROStrings read GetPLAZOENTREGAValue write SetPLAZOENTREGAValue; + property OldPLAZOENTREGA : IROStrings read GetOldPLAZOENTREGAValue; + property FORMAPAGO : IROStrings read GetFORMAPAGOValue write SetFORMAPAGOValue; + property OldFORMAPAGO : IROStrings read GetOldFORMAPAGOValue; + property NOMBRE : String read GetNOMBREValue write SetNOMBREValue; + property OldNOMBRE : String read GetOldNOMBREValue; + property NIF_CIF : String read GetNIF_CIFValue write SetNIF_CIFValue; + property OldNIF_CIF : String read GetOldNIF_CIFValue; + property NOMBRE1 : String read GetNOMBRE1Value write SetNOMBRE1Value; + property OldNOMBRE1 : String read GetOldNOMBRE1Value; + property CALLE : String read GetCALLEValue write SetCALLEValue; + property OldCALLE : String read GetOldCALLEValue; + property CODIGOPOSTAL : String read GetCODIGOPOSTALValue write SetCODIGOPOSTALValue; + property OldCODIGOPOSTAL : String read GetOldCODIGOPOSTALValue; + property POBLACION : String read GetPOBLACIONValue write SetPOBLACIONValue; + property OldPOBLACION : String read GetOldPOBLACIONValue; + property TELEFONO1 : String read GetTELEFONO1Value write SetTELEFONO1Value; + property OldTELEFONO1 : String read GetOldTELEFONO1Value; + property TELEFONO2 : String read GetTELEFONO2Value write SetTELEFONO2Value; + property OldTELEFONO2 : String read GetOldTELEFONO2Value; + property MOVIL : String read GetMOVILValue write SetMOVILValue; + property OldMOVIL : String read GetOldMOVILValue; + property OPCION : String read GetOPCIONValue write SetOPCIONValue; + property OldOPCION : String read GetOldOPCIONValue; + property CODIGOALBARAN : Integer read GetCODIGOALBARANValue write SetCODIGOALBARANValue; + property OldCODIGOALBARAN : Integer read GetOldCODIGOALBARANValue; + property ALBARAN : String read GetALBARANValue write SetALBARANValue; + property OldALBARAN : String read GetOldALBARANValue; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + + { IInformeDetallesPresupuestoDelta } + IInformeDetallesPresupuestoDelta = interface(IInformeDetallesPresupuesto) + ['{741759BF-9981-4B00-A217-C5C769B36552}'] + { Property getters and setters } + function GetOldCODIGOPRESUPUESTOValue : Integer; + function GetOldNUMCONCEPTOValue : Integer; + function GetOldDESCRIPCIONValue : String; + function GetOldCANTIDADValue : Integer; + function GetOldIMPORTEUNIDADValue : Currency; + function GetOldIMPORTETOTALValue : Currency; + function GetOldTIPOValue : String; + function GetOldPOSICIONValue : Integer; + + { Properties } + property OldCODIGOPRESUPUESTO : Integer read GetOldCODIGOPRESUPUESTOValue; + property OldNUMCONCEPTO : Integer read GetOldNUMCONCEPTOValue; + property OldDESCRIPCION : String read GetOldDESCRIPCIONValue; + property OldCANTIDAD : Integer read GetOldCANTIDADValue; + property OldIMPORTEUNIDAD : Currency read GetOldIMPORTEUNIDADValue; + property OldIMPORTETOTAL : Currency read GetOldIMPORTETOTALValue; + property OldTIPO : String read GetOldTIPOValue; + property OldPOSICION : Integer read GetOldPOSICIONValue; + end; + + { TInformeDetallesPresupuestoBusinessProcessorRules } + TInformeDetallesPresupuestoBusinessProcessorRules = class(TDABusinessProcessorRules, IInformeDetallesPresupuesto, IInformeDetallesPresupuestoDelta) + private + protected + { Property getters and setters } + function GetCODIGOPRESUPUESTOValue: Integer; virtual; + function GetOldCODIGOPRESUPUESTOValue: Integer; virtual; + procedure SetCODIGOPRESUPUESTOValue(const aValue: Integer); virtual; + function GetNUMCONCEPTOValue: Integer; virtual; + function GetOldNUMCONCEPTOValue: Integer; virtual; + procedure SetNUMCONCEPTOValue(const aValue: Integer); virtual; + function GetDESCRIPCIONValue: String; virtual; + function GetOldDESCRIPCIONValue: String; virtual; + procedure SetDESCRIPCIONValue(const aValue: String); virtual; + function GetCANTIDADValue: Integer; virtual; + function GetOldCANTIDADValue: Integer; virtual; + procedure SetCANTIDADValue(const aValue: Integer); virtual; + function GetIMPORTEUNIDADValue: Currency; virtual; + function GetOldIMPORTEUNIDADValue: Currency; virtual; + procedure SetIMPORTEUNIDADValue(const aValue: Currency); virtual; + function GetIMPORTETOTALValue: Currency; virtual; + function GetOldIMPORTETOTALValue: Currency; virtual; + procedure SetIMPORTETOTALValue(const aValue: Currency); virtual; + function GetTIPOValue: String; virtual; + function GetOldTIPOValue: String; virtual; + procedure SetTIPOValue(const aValue: String); virtual; + function GetPOSICIONValue: Integer; virtual; + function GetOldPOSICIONValue: Integer; virtual; + procedure SetPOSICIONValue(const aValue: Integer); virtual; + + { Properties } + property CODIGOPRESUPUESTO : Integer read GetCODIGOPRESUPUESTOValue write SetCODIGOPRESUPUESTOValue; + property OldCODIGOPRESUPUESTO : Integer read GetOldCODIGOPRESUPUESTOValue; + property NUMCONCEPTO : Integer read GetNUMCONCEPTOValue write SetNUMCONCEPTOValue; + property OldNUMCONCEPTO : Integer read GetOldNUMCONCEPTOValue; + property DESCRIPCION : String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + property OldDESCRIPCION : String read GetOldDESCRIPCIONValue; + property CANTIDAD : Integer read GetCANTIDADValue write SetCANTIDADValue; + property OldCANTIDAD : Integer read GetOldCANTIDADValue; + property IMPORTEUNIDAD : Currency read GetIMPORTEUNIDADValue write SetIMPORTEUNIDADValue; + property OldIMPORTEUNIDAD : Currency read GetOldIMPORTEUNIDADValue; + property IMPORTETOTAL : Currency read GetIMPORTETOTALValue write SetIMPORTETOTALValue; + property OldIMPORTETOTAL : Currency read GetOldIMPORTETOTALValue; + property TIPO : String read GetTIPOValue write SetTIPOValue; + property OldTIPO : String read GetOldTIPOValue; + property POSICION : Integer read GetPOSICIONValue write SetPOSICIONValue; + property OldPOSICION : Integer read GetOldPOSICIONValue; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + +implementation + +uses + Variants, uROBinaryHelpers; + +{ TDetallesPresupuestosBusinessProcessorRules } +constructor TDetallesPresupuestosBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TDetallesPresupuestosBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TDetallesPresupuestosBusinessProcessorRules.GetCODIGOPRESUPUESTOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesPresupuestosCODIGOPRESUPUESTO]; +end; + +function TDetallesPresupuestosBusinessProcessorRules.GetOldCODIGOPRESUPUESTOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_DetallesPresupuestosCODIGOPRESUPUESTO]; +end; + +procedure TDetallesPresupuestosBusinessProcessorRules.SetCODIGOPRESUPUESTOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesPresupuestosCODIGOPRESUPUESTO] := aValue; +end; + +function TDetallesPresupuestosBusinessProcessorRules.GetNUMCONCEPTOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesPresupuestosNUMCONCEPTO]; +end; + +function TDetallesPresupuestosBusinessProcessorRules.GetOldNUMCONCEPTOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_DetallesPresupuestosNUMCONCEPTO]; +end; + +procedure TDetallesPresupuestosBusinessProcessorRules.SetNUMCONCEPTOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesPresupuestosNUMCONCEPTO] := aValue; +end; + +function TDetallesPresupuestosBusinessProcessorRules.GetDESCRIPCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesPresupuestosDESCRIPCION]; +end; + +function TDetallesPresupuestosBusinessProcessorRules.GetOldDESCRIPCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_DetallesPresupuestosDESCRIPCION]; +end; + +procedure TDetallesPresupuestosBusinessProcessorRules.SetDESCRIPCIONValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesPresupuestosDESCRIPCION] := aValue; +end; + +function TDetallesPresupuestosBusinessProcessorRules.GetCANTIDADValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesPresupuestosCANTIDAD]; +end; + +function TDetallesPresupuestosBusinessProcessorRules.GetOldCANTIDADValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_DetallesPresupuestosCANTIDAD]; +end; + +procedure TDetallesPresupuestosBusinessProcessorRules.SetCANTIDADValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesPresupuestosCANTIDAD] := aValue; +end; + +function TDetallesPresupuestosBusinessProcessorRules.GetIMPORTEUNIDADValue: Currency; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesPresupuestosIMPORTEUNIDAD]; +end; + +function TDetallesPresupuestosBusinessProcessorRules.GetOldIMPORTEUNIDADValue: Currency; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_DetallesPresupuestosIMPORTEUNIDAD]; +end; + +procedure TDetallesPresupuestosBusinessProcessorRules.SetIMPORTEUNIDADValue(const aValue: Currency); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesPresupuestosIMPORTEUNIDAD] := aValue; +end; + +function TDetallesPresupuestosBusinessProcessorRules.GetIMPORTETOTALValue: Currency; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesPresupuestosIMPORTETOTAL]; +end; + +function TDetallesPresupuestosBusinessProcessorRules.GetOldIMPORTETOTALValue: Currency; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_DetallesPresupuestosIMPORTETOTAL]; +end; + +procedure TDetallesPresupuestosBusinessProcessorRules.SetIMPORTETOTALValue(const aValue: Currency); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesPresupuestosIMPORTETOTAL] := aValue; +end; + +function TDetallesPresupuestosBusinessProcessorRules.GetTIPOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesPresupuestosTIPO]; +end; + +function TDetallesPresupuestosBusinessProcessorRules.GetOldTIPOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_DetallesPresupuestosTIPO]; +end; + +procedure TDetallesPresupuestosBusinessProcessorRules.SetTIPOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesPresupuestosTIPO] := aValue; +end; + +function TDetallesPresupuestosBusinessProcessorRules.GetPOSICIONValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesPresupuestosPOSICION]; +end; + +function TDetallesPresupuestosBusinessProcessorRules.GetOldPOSICIONValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_DetallesPresupuestosPOSICION]; +end; + +procedure TDetallesPresupuestosBusinessProcessorRules.SetPOSICIONValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesPresupuestosPOSICION] := aValue; +end; + +function TDetallesPresupuestosBusinessProcessorRules.GetVISIBLEValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesPresupuestosVISIBLE]; +end; + +function TDetallesPresupuestosBusinessProcessorRules.GetOldVISIBLEValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_DetallesPresupuestosVISIBLE]; +end; + +procedure TDetallesPresupuestosBusinessProcessorRules.SetVISIBLEValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesPresupuestosVISIBLE] := aValue; +end; + +function TDetallesPresupuestosBusinessProcessorRules.GetPUNTOSValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesPresupuestosPUNTOS]; +end; + +function TDetallesPresupuestosBusinessProcessorRules.GetOldPUNTOSValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_DetallesPresupuestosPUNTOS]; +end; + +procedure TDetallesPresupuestosBusinessProcessorRules.SetPUNTOSValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesPresupuestosPUNTOS] := aValue; +end; + +function TDetallesPresupuestosBusinessProcessorRules.GetIMPORTEPUNTOSValue: Currency; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesPresupuestosIMPORTEPUNTOS]; +end; + +function TDetallesPresupuestosBusinessProcessorRules.GetOldIMPORTEPUNTOSValue: Currency; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_DetallesPresupuestosIMPORTEPUNTOS]; +end; + +procedure TDetallesPresupuestosBusinessProcessorRules.SetIMPORTEPUNTOSValue(const aValue: Currency); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesPresupuestosIMPORTEPUNTOS] := aValue; +end; + + +{ TPresupuestosBusinessProcessorRules } +constructor TPresupuestosBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TPresupuestosBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TPresupuestosBusinessProcessorRules.GetCODIGOEMPRESAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosCODIGOEMPRESA]; +end; + +function TPresupuestosBusinessProcessorRules.GetOldCODIGOEMPRESAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PresupuestosCODIGOEMPRESA]; +end; + +procedure TPresupuestosBusinessProcessorRules.SetCODIGOEMPRESAValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosCODIGOEMPRESA] := aValue; +end; + +function TPresupuestosBusinessProcessorRules.GetCODIGOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosCODIGO]; +end; + +function TPresupuestosBusinessProcessorRules.GetOldCODIGOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PresupuestosCODIGO]; +end; + +procedure TPresupuestosBusinessProcessorRules.SetCODIGOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosCODIGO] := aValue; +end; + +function TPresupuestosBusinessProcessorRules.GetFECHAALTAValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosFECHAALTA]; +end; + +function TPresupuestosBusinessProcessorRules.GetOldFECHAALTAValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PresupuestosFECHAALTA]; +end; + +procedure TPresupuestosBusinessProcessorRules.SetFECHAALTAValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosFECHAALTA] := aValue; +end; + +function TPresupuestosBusinessProcessorRules.GetUSUARIOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosUSUARIO]; +end; + +function TPresupuestosBusinessProcessorRules.GetOldUSUARIOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PresupuestosUSUARIO]; +end; + +procedure TPresupuestosBusinessProcessorRules.SetUSUARIOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosUSUARIO] := aValue; +end; + +function TPresupuestosBusinessProcessorRules.GetCODIGOCONTACTOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosCODIGOCONTACTO]; +end; + +function TPresupuestosBusinessProcessorRules.GetOldCODIGOCONTACTOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PresupuestosCODIGOCONTACTO]; +end; + +procedure TPresupuestosBusinessProcessorRules.SetCODIGOCONTACTOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosCODIGOCONTACTO] := aValue; +end; + +function TPresupuestosBusinessProcessorRules.GetNOMBREValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosNOMBRE]; +end; + +function TPresupuestosBusinessProcessorRules.GetOldNOMBREValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PresupuestosNOMBRE]; +end; + +procedure TPresupuestosBusinessProcessorRules.SetNOMBREValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosNOMBRE] := aValue; +end; + +function TPresupuestosBusinessProcessorRules.GetREFERENCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosREFERENCIA]; +end; + +function TPresupuestosBusinessProcessorRules.GetOldREFERENCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PresupuestosREFERENCIA]; +end; + +procedure TPresupuestosBusinessProcessorRules.SetREFERENCIAValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosREFERENCIA] := aValue; +end; + +function TPresupuestosBusinessProcessorRules.GetTIPOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosTIPO]; +end; + +function TPresupuestosBusinessProcessorRules.GetOldTIPOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PresupuestosTIPO]; +end; + +procedure TPresupuestosBusinessProcessorRules.SetTIPOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosTIPO] := aValue; +end; + +function TPresupuestosBusinessProcessorRules.GetFECHAPRESUPUESTOValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosFECHAPRESUPUESTO]; +end; + +function TPresupuestosBusinessProcessorRules.GetOldFECHAPRESUPUESTOValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PresupuestosFECHAPRESUPUESTO]; +end; + +procedure TPresupuestosBusinessProcessorRules.SetFECHAPRESUPUESTOValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosFECHAPRESUPUESTO] := aValue; +end; + +function TPresupuestosBusinessProcessorRules.GetVIGENCIAPRESUPUESTOValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosVIGENCIAPRESUPUESTO]; +end; + +function TPresupuestosBusinessProcessorRules.GetOldVIGENCIAPRESUPUESTOValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PresupuestosVIGENCIAPRESUPUESTO]; +end; + +procedure TPresupuestosBusinessProcessorRules.SetVIGENCIAPRESUPUESTOValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosVIGENCIAPRESUPUESTO] := aValue; +end; + +function TPresupuestosBusinessProcessorRules.GetSITUACIONValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosSITUACION]; +end; + +function TPresupuestosBusinessProcessorRules.GetOldSITUACIONValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PresupuestosSITUACION]; +end; + +procedure TPresupuestosBusinessProcessorRules.SetSITUACIONValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosSITUACION] := aValue; +end; + +function TPresupuestosBusinessProcessorRules.GetFECHADECISIONValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosFECHADECISION]; +end; + +function TPresupuestosBusinessProcessorRules.GetOldFECHADECISIONValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PresupuestosFECHADECISION]; +end; + +procedure TPresupuestosBusinessProcessorRules.SetFECHADECISIONValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosFECHADECISION] := aValue; +end; + +function TPresupuestosBusinessProcessorRules.GetBASEIMPONIBLEValue: Currency; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosBASEIMPONIBLE]; +end; + +function TPresupuestosBusinessProcessorRules.GetOldBASEIMPONIBLEValue: Currency; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PresupuestosBASEIMPONIBLE]; +end; + +procedure TPresupuestosBusinessProcessorRules.SetBASEIMPONIBLEValue(const aValue: Currency); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosBASEIMPONIBLE] := aValue; +end; + +function TPresupuestosBusinessProcessorRules.GetDESCUENTOValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosDESCUENTO]; +end; + +function TPresupuestosBusinessProcessorRules.GetOldDESCUENTOValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PresupuestosDESCUENTO]; +end; + +procedure TPresupuestosBusinessProcessorRules.SetDESCUENTOValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosDESCUENTO] := aValue; +end; + +function TPresupuestosBusinessProcessorRules.GetIMPORTEDESCUENTOValue: Currency; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosIMPORTEDESCUENTO]; +end; + +function TPresupuestosBusinessProcessorRules.GetOldIMPORTEDESCUENTOValue: Currency; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PresupuestosIMPORTEDESCUENTO]; +end; + +procedure TPresupuestosBusinessProcessorRules.SetIMPORTEDESCUENTOValue(const aValue: Currency); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosIMPORTEDESCUENTO] := aValue; +end; + +function TPresupuestosBusinessProcessorRules.GetIVAValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosIVA]; +end; + +function TPresupuestosBusinessProcessorRules.GetOldIVAValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PresupuestosIVA]; +end; + +procedure TPresupuestosBusinessProcessorRules.SetIVAValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosIVA] := aValue; +end; + +function TPresupuestosBusinessProcessorRules.GetIMPORTEIVAValue: Currency; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosIMPORTEIVA]; +end; + +function TPresupuestosBusinessProcessorRules.GetOldIMPORTEIVAValue: Currency; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PresupuestosIMPORTEIVA]; +end; + +procedure TPresupuestosBusinessProcessorRules.SetIMPORTEIVAValue(const aValue: Currency); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosIMPORTEIVA] := aValue; +end; + +function TPresupuestosBusinessProcessorRules.GetIMPORTETOTALValue: Currency; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosIMPORTETOTAL]; +end; + +function TPresupuestosBusinessProcessorRules.GetOldIMPORTETOTALValue: Currency; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PresupuestosIMPORTETOTAL]; +end; + +procedure TPresupuestosBusinessProcessorRules.SetIMPORTETOTALValue(const aValue: Currency); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosIMPORTETOTAL] := aValue; +end; + +function TPresupuestosBusinessProcessorRules.GetOBSERVACIONESValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosOBSERVACIONES]; +end; + +function TPresupuestosBusinessProcessorRules.GetOldOBSERVACIONESValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.OldValueByName[fld_PresupuestosOBSERVACIONES]; +end; + +procedure TPresupuestosBusinessProcessorRules.SetOBSERVACIONESValue(const aValue: IROStrings); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosOBSERVACIONES] := aValue.Text; +end; + +function TPresupuestosBusinessProcessorRules.GetPLAZOENTREGAValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosPLAZOENTREGA]; +end; + +function TPresupuestosBusinessProcessorRules.GetOldPLAZOENTREGAValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.OldValueByName[fld_PresupuestosPLAZOENTREGA]; +end; + +procedure TPresupuestosBusinessProcessorRules.SetPLAZOENTREGAValue(const aValue: IROStrings); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosPLAZOENTREGA] := aValue.Text; +end; + +function TPresupuestosBusinessProcessorRules.GetFORMAPAGOValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosFORMAPAGO]; +end; + +function TPresupuestosBusinessProcessorRules.GetOldFORMAPAGOValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.OldValueByName[fld_PresupuestosFORMAPAGO]; +end; + +procedure TPresupuestosBusinessProcessorRules.SetFORMAPAGOValue(const aValue: IROStrings); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosFORMAPAGO] := aValue.Text; +end; + +function TPresupuestosBusinessProcessorRules.GetCODIGOALBARANValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosCODIGOALBARAN]; +end; + +function TPresupuestosBusinessProcessorRules.GetOldCODIGOALBARANValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PresupuestosCODIGOALBARAN]; +end; + +procedure TPresupuestosBusinessProcessorRules.SetCODIGOALBARANValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosCODIGOALBARAN] := aValue; +end; + +function TPresupuestosBusinessProcessorRules.GetALBARANValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosALBARAN]; +end; + +function TPresupuestosBusinessProcessorRules.GetOldALBARANValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PresupuestosALBARAN]; +end; + +procedure TPresupuestosBusinessProcessorRules.SetALBARANValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosALBARAN] := aValue; +end; + +function TPresupuestosBusinessProcessorRules.GetOPCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosOPCION]; +end; + +function TPresupuestosBusinessProcessorRules.GetOldOPCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PresupuestosOPCION]; +end; + +procedure TPresupuestosBusinessProcessorRules.SetOPCIONValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosOPCION] := aValue; +end; + + +{ TPresupuestos_RefreshDatasetBusinessProcessorRules } +constructor TPresupuestos_RefreshDatasetBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TPresupuestos_RefreshDatasetBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TPresupuestos_RefreshDatasetBusinessProcessorRules.GetCODIGOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Presupuestos_RefreshDatasetCODIGO]; +end; + +function TPresupuestos_RefreshDatasetBusinessProcessorRules.GetOldCODIGOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Presupuestos_RefreshDatasetCODIGO]; +end; + +procedure TPresupuestos_RefreshDatasetBusinessProcessorRules.SetCODIGOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Presupuestos_RefreshDatasetCODIGO] := aValue; +end; + +function TPresupuestos_RefreshDatasetBusinessProcessorRules.GetNOMBREValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Presupuestos_RefreshDatasetNOMBRE]; +end; + +function TPresupuestos_RefreshDatasetBusinessProcessorRules.GetOldNOMBREValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Presupuestos_RefreshDatasetNOMBRE]; +end; + +procedure TPresupuestos_RefreshDatasetBusinessProcessorRules.SetNOMBREValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Presupuestos_RefreshDatasetNOMBRE] := aValue; +end; + +function TPresupuestos_RefreshDatasetBusinessProcessorRules.GetREFERENCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Presupuestos_RefreshDatasetREFERENCIA]; +end; + +function TPresupuestos_RefreshDatasetBusinessProcessorRules.GetOldREFERENCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Presupuestos_RefreshDatasetREFERENCIA]; +end; + +procedure TPresupuestos_RefreshDatasetBusinessProcessorRules.SetREFERENCIAValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Presupuestos_RefreshDatasetREFERENCIA] := aValue; +end; + +function TPresupuestos_RefreshDatasetBusinessProcessorRules.GetCODIGOALBARANValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Presupuestos_RefreshDatasetCODIGOALBARAN]; +end; + +function TPresupuestos_RefreshDatasetBusinessProcessorRules.GetOldCODIGOALBARANValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Presupuestos_RefreshDatasetCODIGOALBARAN]; +end; + +procedure TPresupuestos_RefreshDatasetBusinessProcessorRules.SetCODIGOALBARANValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Presupuestos_RefreshDatasetCODIGOALBARAN] := aValue; +end; + +function TPresupuestos_RefreshDatasetBusinessProcessorRules.GetALBARANValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Presupuestos_RefreshDatasetALBARAN]; +end; + +function TPresupuestos_RefreshDatasetBusinessProcessorRules.GetOldALBARANValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Presupuestos_RefreshDatasetALBARAN]; +end; + +procedure TPresupuestos_RefreshDatasetBusinessProcessorRules.SetALBARANValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Presupuestos_RefreshDatasetALBARAN] := aValue; +end; + + +{ TInformeCabeceraPresupuestoBusinessProcessorRules } +constructor TInformeCabeceraPresupuestoBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TInformeCabeceraPresupuestoBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetCODIGOEMPRESAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoCODIGOEMPRESA]; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetOldCODIGOEMPRESAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPresupuestoCODIGOEMPRESA]; +end; + +procedure TInformeCabeceraPresupuestoBusinessProcessorRules.SetCODIGOEMPRESAValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoCODIGOEMPRESA] := aValue; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetCODIGOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoCODIGO]; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetOldCODIGOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPresupuestoCODIGO]; +end; + +procedure TInformeCabeceraPresupuestoBusinessProcessorRules.SetCODIGOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoCODIGO] := aValue; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetFECHAALTAValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoFECHAALTA]; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetOldFECHAALTAValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPresupuestoFECHAALTA]; +end; + +procedure TInformeCabeceraPresupuestoBusinessProcessorRules.SetFECHAALTAValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoFECHAALTA] := aValue; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetUSUARIOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoUSUARIO]; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetOldUSUARIOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPresupuestoUSUARIO]; +end; + +procedure TInformeCabeceraPresupuestoBusinessProcessorRules.SetUSUARIOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoUSUARIO] := aValue; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetCODIGOCONTACTOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoCODIGOCONTACTO]; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetOldCODIGOCONTACTOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPresupuestoCODIGOCONTACTO]; +end; + +procedure TInformeCabeceraPresupuestoBusinessProcessorRules.SetCODIGOCONTACTOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoCODIGOCONTACTO] := aValue; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetREFERENCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoREFERENCIA]; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetOldREFERENCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPresupuestoREFERENCIA]; +end; + +procedure TInformeCabeceraPresupuestoBusinessProcessorRules.SetREFERENCIAValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoREFERENCIA] := aValue; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetTIPOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoTIPO]; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetOldTIPOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPresupuestoTIPO]; +end; + +procedure TInformeCabeceraPresupuestoBusinessProcessorRules.SetTIPOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoTIPO] := aValue; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetFECHAPRESUPUESTOValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoFECHAPRESUPUESTO]; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetOldFECHAPRESUPUESTOValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPresupuestoFECHAPRESUPUESTO]; +end; + +procedure TInformeCabeceraPresupuestoBusinessProcessorRules.SetFECHAPRESUPUESTOValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoFECHAPRESUPUESTO] := aValue; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetVIGENCIAPRESUPUESTOValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoVIGENCIAPRESUPUESTO]; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetOldVIGENCIAPRESUPUESTOValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPresupuestoVIGENCIAPRESUPUESTO]; +end; + +procedure TInformeCabeceraPresupuestoBusinessProcessorRules.SetVIGENCIAPRESUPUESTOValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoVIGENCIAPRESUPUESTO] := aValue; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetSITUACIONValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoSITUACION]; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetOldSITUACIONValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPresupuestoSITUACION]; +end; + +procedure TInformeCabeceraPresupuestoBusinessProcessorRules.SetSITUACIONValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoSITUACION] := aValue; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetFECHADECISIONValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoFECHADECISION]; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetOldFECHADECISIONValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPresupuestoFECHADECISION]; +end; + +procedure TInformeCabeceraPresupuestoBusinessProcessorRules.SetFECHADECISIONValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoFECHADECISION] := aValue; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetBASEIMPONIBLEValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoBASEIMPONIBLE]; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetOldBASEIMPONIBLEValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPresupuestoBASEIMPONIBLE]; +end; + +procedure TInformeCabeceraPresupuestoBusinessProcessorRules.SetBASEIMPONIBLEValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoBASEIMPONIBLE] := aValue; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetDESCUENTOValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoDESCUENTO]; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetOldDESCUENTOValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPresupuestoDESCUENTO]; +end; + +procedure TInformeCabeceraPresupuestoBusinessProcessorRules.SetDESCUENTOValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoDESCUENTO] := aValue; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetIMPORTEDESCUENTOValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoIMPORTEDESCUENTO]; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetOldIMPORTEDESCUENTOValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPresupuestoIMPORTEDESCUENTO]; +end; + +procedure TInformeCabeceraPresupuestoBusinessProcessorRules.SetIMPORTEDESCUENTOValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoIMPORTEDESCUENTO] := aValue; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetIVAValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoIVA]; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetOldIVAValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPresupuestoIVA]; +end; + +procedure TInformeCabeceraPresupuestoBusinessProcessorRules.SetIVAValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoIVA] := aValue; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetIMPORTEIVAValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoIMPORTEIVA]; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetOldIMPORTEIVAValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPresupuestoIMPORTEIVA]; +end; + +procedure TInformeCabeceraPresupuestoBusinessProcessorRules.SetIMPORTEIVAValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoIMPORTEIVA] := aValue; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetIMPORTETOTALValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoIMPORTETOTAL]; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetOldIMPORTETOTALValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPresupuestoIMPORTETOTAL]; +end; + +procedure TInformeCabeceraPresupuestoBusinessProcessorRules.SetIMPORTETOTALValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoIMPORTETOTAL] := aValue; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetOBSERVACIONESValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoOBSERVACIONES]; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetOldOBSERVACIONESValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPresupuestoOBSERVACIONES]; +end; + +procedure TInformeCabeceraPresupuestoBusinessProcessorRules.SetOBSERVACIONESValue(const aValue: IROStrings); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoOBSERVACIONES] := aValue.Text; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetPLAZOENTREGAValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoPLAZOENTREGA]; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetOldPLAZOENTREGAValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPresupuestoPLAZOENTREGA]; +end; + +procedure TInformeCabeceraPresupuestoBusinessProcessorRules.SetPLAZOENTREGAValue(const aValue: IROStrings); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoPLAZOENTREGA] := aValue.Text; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetFORMAPAGOValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoFORMAPAGO]; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetOldFORMAPAGOValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPresupuestoFORMAPAGO]; +end; + +procedure TInformeCabeceraPresupuestoBusinessProcessorRules.SetFORMAPAGOValue(const aValue: IROStrings); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoFORMAPAGO] := aValue.Text; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetNOMBREValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoNOMBRE]; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetOldNOMBREValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPresupuestoNOMBRE]; +end; + +procedure TInformeCabeceraPresupuestoBusinessProcessorRules.SetNOMBREValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoNOMBRE] := aValue; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetNIF_CIFValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoNIF_CIF]; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetOldNIF_CIFValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPresupuestoNIF_CIF]; +end; + +procedure TInformeCabeceraPresupuestoBusinessProcessorRules.SetNIF_CIFValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoNIF_CIF] := aValue; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetNOMBRE1Value: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoNOMBRE1]; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetOldNOMBRE1Value: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPresupuestoNOMBRE1]; +end; + +procedure TInformeCabeceraPresupuestoBusinessProcessorRules.SetNOMBRE1Value(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoNOMBRE1] := aValue; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetCALLEValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoCALLE]; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetOldCALLEValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPresupuestoCALLE]; +end; + +procedure TInformeCabeceraPresupuestoBusinessProcessorRules.SetCALLEValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoCALLE] := aValue; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetCODIGOPOSTALValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoCODIGOPOSTAL]; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetOldCODIGOPOSTALValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPresupuestoCODIGOPOSTAL]; +end; + +procedure TInformeCabeceraPresupuestoBusinessProcessorRules.SetCODIGOPOSTALValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoCODIGOPOSTAL] := aValue; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetPOBLACIONValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoPOBLACION]; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetOldPOBLACIONValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPresupuestoPOBLACION]; +end; + +procedure TInformeCabeceraPresupuestoBusinessProcessorRules.SetPOBLACIONValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoPOBLACION] := aValue; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetTELEFONO1Value: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoTELEFONO1]; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetOldTELEFONO1Value: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPresupuestoTELEFONO1]; +end; + +procedure TInformeCabeceraPresupuestoBusinessProcessorRules.SetTELEFONO1Value(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoTELEFONO1] := aValue; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetTELEFONO2Value: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoTELEFONO2]; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetOldTELEFONO2Value: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPresupuestoTELEFONO2]; +end; + +procedure TInformeCabeceraPresupuestoBusinessProcessorRules.SetTELEFONO2Value(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoTELEFONO2] := aValue; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetMOVILValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoMOVIL]; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetOldMOVILValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPresupuestoMOVIL]; +end; + +procedure TInformeCabeceraPresupuestoBusinessProcessorRules.SetMOVILValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoMOVIL] := aValue; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetOPCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoOPCION]; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetOldOPCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPresupuestoOPCION]; +end; + +procedure TInformeCabeceraPresupuestoBusinessProcessorRules.SetOPCIONValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoOPCION] := aValue; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetCODIGOALBARANValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoCODIGOALBARAN]; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetOldCODIGOALBARANValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPresupuestoCODIGOALBARAN]; +end; + +procedure TInformeCabeceraPresupuestoBusinessProcessorRules.SetCODIGOALBARANValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoCODIGOALBARAN] := aValue; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetALBARANValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoALBARAN]; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetOldALBARANValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPresupuestoALBARAN]; +end; + +procedure TInformeCabeceraPresupuestoBusinessProcessorRules.SetALBARANValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoALBARAN] := aValue; +end; + + +{ TInformeDetallesPresupuestoBusinessProcessorRules } +constructor TInformeDetallesPresupuestoBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TInformeDetallesPresupuestoBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TInformeDetallesPresupuestoBusinessProcessorRules.GetCODIGOPRESUPUESTOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesPresupuestoCODIGOPRESUPUESTO]; +end; + +function TInformeDetallesPresupuestoBusinessProcessorRules.GetOldCODIGOPRESUPUESTOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeDetallesPresupuestoCODIGOPRESUPUESTO]; +end; + +procedure TInformeDetallesPresupuestoBusinessProcessorRules.SetCODIGOPRESUPUESTOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesPresupuestoCODIGOPRESUPUESTO] := aValue; +end; + +function TInformeDetallesPresupuestoBusinessProcessorRules.GetNUMCONCEPTOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesPresupuestoNUMCONCEPTO]; +end; + +function TInformeDetallesPresupuestoBusinessProcessorRules.GetOldNUMCONCEPTOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeDetallesPresupuestoNUMCONCEPTO]; +end; + +procedure TInformeDetallesPresupuestoBusinessProcessorRules.SetNUMCONCEPTOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesPresupuestoNUMCONCEPTO] := aValue; +end; + +function TInformeDetallesPresupuestoBusinessProcessorRules.GetDESCRIPCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesPresupuestoDESCRIPCION]; +end; + +function TInformeDetallesPresupuestoBusinessProcessorRules.GetOldDESCRIPCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeDetallesPresupuestoDESCRIPCION]; +end; + +procedure TInformeDetallesPresupuestoBusinessProcessorRules.SetDESCRIPCIONValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesPresupuestoDESCRIPCION] := aValue; +end; + +function TInformeDetallesPresupuestoBusinessProcessorRules.GetCANTIDADValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesPresupuestoCANTIDAD]; +end; + +function TInformeDetallesPresupuestoBusinessProcessorRules.GetOldCANTIDADValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeDetallesPresupuestoCANTIDAD]; +end; + +procedure TInformeDetallesPresupuestoBusinessProcessorRules.SetCANTIDADValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesPresupuestoCANTIDAD] := aValue; +end; + +function TInformeDetallesPresupuestoBusinessProcessorRules.GetIMPORTEUNIDADValue: Currency; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesPresupuestoIMPORTEUNIDAD]; +end; + +function TInformeDetallesPresupuestoBusinessProcessorRules.GetOldIMPORTEUNIDADValue: Currency; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeDetallesPresupuestoIMPORTEUNIDAD]; +end; + +procedure TInformeDetallesPresupuestoBusinessProcessorRules.SetIMPORTEUNIDADValue(const aValue: Currency); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesPresupuestoIMPORTEUNIDAD] := aValue; +end; + +function TInformeDetallesPresupuestoBusinessProcessorRules.GetIMPORTETOTALValue: Currency; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesPresupuestoIMPORTETOTAL]; +end; + +function TInformeDetallesPresupuestoBusinessProcessorRules.GetOldIMPORTETOTALValue: Currency; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeDetallesPresupuestoIMPORTETOTAL]; +end; + +procedure TInformeDetallesPresupuestoBusinessProcessorRules.SetIMPORTETOTALValue(const aValue: Currency); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesPresupuestoIMPORTETOTAL] := aValue; +end; + +function TInformeDetallesPresupuestoBusinessProcessorRules.GetTIPOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesPresupuestoTIPO]; +end; + +function TInformeDetallesPresupuestoBusinessProcessorRules.GetOldTIPOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeDetallesPresupuestoTIPO]; +end; + +procedure TInformeDetallesPresupuestoBusinessProcessorRules.SetTIPOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesPresupuestoTIPO] := aValue; +end; + +function TInformeDetallesPresupuestoBusinessProcessorRules.GetPOSICIONValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesPresupuestoPOSICION]; +end; + +function TInformeDetallesPresupuestoBusinessProcessorRules.GetOldPOSICIONValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeDetallesPresupuestoPOSICION]; +end; + +procedure TInformeDetallesPresupuestoBusinessProcessorRules.SetPOSICIONValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesPresupuestoPOSICION] := aValue; +end; + + +initialization + RegisterBusinessProcessorRules(RID_DetallesPresupuestosDelta, TDetallesPresupuestosBusinessProcessorRules); + RegisterBusinessProcessorRules(RID_PresupuestosDelta, TPresupuestosBusinessProcessorRules); + RegisterBusinessProcessorRules(RID_Presupuestos_RefreshDatasetDelta, TPresupuestos_RefreshDatasetBusinessProcessorRules); + RegisterBusinessProcessorRules(RID_InformeCabeceraPresupuestoDelta, TInformeCabeceraPresupuestoBusinessProcessorRules); + RegisterBusinessProcessorRules(RID_InformeDetallesPresupuestoDelta, TInformeDetallesPresupuestoBusinessProcessorRules); + +end. diff --git a/Modulos/Presupuestos/Reglas/uBizPresupuestosCliente.pas b/Modulos/Presupuestos/Reglas/uBizPresupuestosCliente.pas new file mode 100644 index 0000000..a53d868 --- /dev/null +++ b/Modulos/Presupuestos/Reglas/uBizPresupuestosCliente.pas @@ -0,0 +1,619 @@ +unit uBizPresupuestosCliente; + +interface + +uses + uDAInterfaces, uDADataTable, schPresupuestosClient_Intf, Classes, + uBizContacto, uDBSelectionList, Controls, uBizImportesDetalleBase, + uBizImportesCabeceraBase, uExceptions, uBizInformesBase, DB, + uBizDocumentosAsociados; + +const + BIZ_PRESUPUESTOCLIENTE = 'Client.PresupuestoCliente'; + BIZ_DETALLESPRESUPUESTOCLIENTE = 'Client.DetallesPresupuestoCliente'; + + SITUACION_PENDIENTE = 'Pendiente'; + SITUACION_ACEPTADO = 'Aceptado'; + SITUACION_RECHAZADO = 'Rechazado'; + + TIPO_COCINA = 'Cocina'; + TIPO_BANO = 'Baño'; + +type + IBizDetallesPresupuesto = interface(IDetallesPresupuestos) + ['{7233E1B0-5B76-4AE4-AB05-4F12EF74FBDD}'] + procedure CopyFrom(ADetallesPresupuesto : IBizDetallesPresupuesto); + end; + + IBizPresupuestos = interface(IPresupuestos) + ['{C699A849-3F52-486B-93AC-1EB0E6B5632F}'] + function GetDetalles: IBizDetallesPresupuesto; + procedure SetDetalles(Value: IBizDetallesPresupuesto); + property Detalles: IBizDetallesPresupuesto read GetDetalles write + SetDetalles; + + function GetCliente: IBizCliente; + procedure SetCliente(Value: IBizCliente); + property Cliente: IBizCliente read GetCliente write SetCliente; + + //DOCUMENTOS ASOCIADOS + function GetGestorDocumentos: TGestorDocumentos; + procedure SetGestorDocumentos(Value: TGestorDocumentos); + property GestorDocumentos: TGestorDocumentos read GetGestorDocumentos write SetGestorDocumentos; + + procedure Show; + procedure CopyFrom(APresupuesto : IBizPresupuestos); + function ShowForSelect : TModalResult; + end; + + TBizDetallesPresupuesto = class(TDetallesPresupuestosDataTableRules, + IBizDetallesPresupuesto, + IBizImportesDetalle, + IBizPuntosDetalle, + IBizVisibleDetalle, + IParche) // PARCHE *********************** + private + FIsAppend : Boolean; + FPosicionNueva : Integer; + FPuedoLanzarEvento : Boolean; // PARCHE *********************** + + procedure SetCANTIDADValue(const aValue: Integer); override; + procedure SetIMPORTEUNIDADValue(const aValue: Currency); override; + procedure SetIMPORTETOTALValue(const aValue: Currency); override; + procedure SetPUNTOSValue(const aValue: Integer); override; + procedure SetIMPORTEPUNTOSValue(const aValue: Currency); override; + + protected + procedure OnNewRecord(Sender: TDADataTable); override; + procedure BeforeInsert(Sender: TDADataTable); override; + procedure AfterPost(Sender: TDADataTable); override; + procedure AfterInsert(Sender: TDADataTable); override; + procedure AfterDelete(Sender: TDADataTable); override; + procedure BeforeDelete(Sender: TDADataTable); override; + + // PARCHE *********************** + procedure ActivarEventos; + procedure DesactivarEventos; + procedure Refrescar; + function PuedoLanzarEvento : Boolean; + public + procedure CopyFrom(ADetallesPresupuesto : IBizDetallesPresupuesto); + procedure RecalcularImporte; + function DarSumaTotalImportes : Currency; + constructor Create(aDataTable: TDADataTable); override; + end; + + + TBizPresupuestos = class(TPresupuestosDataTableRules, IBizPresupuestos, + IBizImportesCabecera, ISelectedRowList, + IApplyUpdateFailedException, IBizInformesAware, + IBizDocumentosAsociados) + private + FCliente : IBizCliente; + FDetalles: IBizDetallesPresupuesto; + FDetallesLink: TDADataSource; + FSelectedRows : TSelectedRowList; + + //DOCUMENTOS ASOCIADOS + FGestorDocumentos: TGestorDocumentos; + function GetGestorDocumentos: TGestorDocumentos; + procedure SetGestorDocumentos(Value: TGestorDocumentos); + procedure BeforeDelete(Sender: TDADataTable); override; + procedure BeforeCancel(Sender: TDADataTable); override; + + protected + procedure ShowApplyUpdateFailed (const Error: EDAApplyUpdateFailed); + function GetDetalles: IBizDetallesPresupuesto; + procedure SetDetalles(Value: IBizDetallesPresupuesto); + + function GetCliente: IBizCliente; + procedure SetCliente(Value: IBizCliente); + procedure BeforeApplyUpdates(Sender : TDADataTable; const Delta : IDADelta); + + procedure OnNewRecord(Sender: TDADataTable); override; + function GetSelectedRows : TSelectedRowList; + procedure AfterDelete(Sender: TDADataTable); override; + procedure OnPostError(DataTable: TDADataTable; Error: EDatabaseError; + var Action: TDataAction); override; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + procedure RecalcularImporte; + procedure Show; + function ShowForSelect : TModalResult; + procedure Preview; + procedure Print; + procedure CopyFrom(APresupuesto : IBizPresupuestos); + + property Cliente: IBizCliente read GetCliente write SetCliente; + property Detalles: IBizDetallesPresupuesto read GetDetalles write SetDetalles; + property SelectedRows : TSelectedRowList read GetSelectedRows; + + //DOCUMENTOS ASOCIADOS + property GestorDocumentos: TGestorDocumentos read GetGestorDocumentos write SetGestorDocumentos; + end; + + procedure ValidarPresupuesto (const APresupuesto : IBizPresupuestos); + +implementation + +uses + Windows, Dialogs, uDACDSDataTable, SysUtils, uEditorUtils, + uDataModulePresupuestos, uDataModuleContactos, Variants, Math, + uDataModuleBase, uDataModuleUsuarios, FactuGES_Intf, uDataTableUtils; + +var + FMasterDeleting : Boolean; + FCancelInsert : Boolean; + cadena1, cadena2 : string; + +procedure ValidarPresupuesto (const APresupuesto : IBizPresupuestos); +begin + if (FloatToStr(APresupuesto.FECHAPRESUPUESTO) = '0') then + raise Exception.Create('Debe indicar la fecha de este presupuesto'); + + if not Assigned(APresupuesto.Cliente) or + (APresupuesto.Cliente.DataTable.IsEmpty) then + raise Exception.Create('Debe indicar el cliente de este presupuesto'); + + + if (FloatToStr(APresupuesto.FECHADECISION) <> '0') and + (APresupuesto.SITUACION <> SITUACION_PENDIENTE) and + (APresupuesto.FECHADECISION < APresupuesto.FECHAPRESUPUESTO) then + raise Exception.Create('La fecha de decisición debe ser posterior a la fecha del presupuesto'); + + + if (APresupuesto.SITUACION <> SITUACION_PENDIENTE) and + (FloatToStr(APresupuesto.FECHADECISION) = '0') then + begin + APresupuesto.Edit; + APresupuesto.FECHADECISION := Date; + APresupuesto.Post; + end; +end; + +procedure TBizPresupuestos.RecalcularImporte; +begin + RecalcularImportesCabecera(Self.DataTable, Detalles.DataTable); +end; + +constructor TBizPresupuestos.Create(aDataTable: TDADataTable); +var + Ruta: Variant; +begin + inherited; + FCliente := NIL; + FDetallesLink := TDADataSource.Create(NIL); + FSelectedRows := TSelectedRowList.Create(aDataTable); + aDataTable.OnBeforeApplyUpdates := BeforeApplyUpdates; + + //DOCUMENTOS ASOCIADOS + //En caso de no poder acceder a la ruta de red (Caso de dos tiendas conectadas por internet) + //deshabilitamos el gestor de documentos + Ruta := dmBase.darRutaDocumentos; + if VarIsNull(Ruta) then + FGestorDocumentos := Nil + else + begin + FGestorDocumentos := TGestorDocumentos.Create; + FGestorDocumentos.RootDocumentos := dmBase.darRutaDocumentos; + aDataTable.BeforeCancel := BeforeCancel; + end; +end; + +destructor TBizPresupuestos.Destroy; +begin + FCliente := NIL; + FDetalles := NIL; + FDetallesLink.Free; + FSelectedRows.Free; + + FreeAndNil(FGestorDocumentos); + inherited; +end; + +function TBizPresupuestos.GetDetalles: IBizDetallesPresupuesto; +begin + Result := FDetalles; +end; + +function TBizPresupuestos.GetSelectedRows: TSelectedRowList; +begin + Result := FSelectedRows; +end; + +procedure TBizPresupuestos.OnNewRecord(Sender: TDADataTable); +begin + inherited; + CODIGOEMPRESA := dmBase.CodigoEmpresa; + USUARIO := dmUsuarios.LoginInfo.UserID; + FECHAALTA := Date; + FECHAPRESUPUESTO := Date; + VIGENCIAPRESUPUESTO := Date + 30; // 30 días de validez por defecto + SITUACION := SITUACION_PENDIENTE; + TIPO := TIPO_COCINA; + CODIGO := dmPresupuestos.GetNextAutoinc; + OPCION := 'OPCIÓN 1'; +end; + +procedure TBizPresupuestos.Preview; +begin + dmPresupuestos.Preview(CODIGO); +end; + +function TBizPresupuestos.GetCliente: IBizCliente; +begin + if not Assigned(FCliente) then + FCliente := dmContactos.GetCliente(CODIGOCONTACTO) + else + if (CODIGOCONTACTO <> FCliente.Codigo) and + not (FCliente.DataTable.State in dsEditModes) then + dmContactos.GetContacto(FCliente, CODIGOCONTACTO); + + if not FCliente.DataTable.Active then + FCliente.DataTable.Active := True; + + Result := FCliente; +end; + +procedure TBizPresupuestos.SetCliente(Value: IBizCliente); +var + bEnEdicion : Boolean; +begin + bEnEdicion := (DataTable.State in dsEditModes); + if not bEnEdicion then + Edit; + FCliente := Value; + if Assigned(FCliente) then + begin + CODIGOCONTACTO := FCliente.CODIGO; + Post; + if bEnEdicion then + Edit; + end +end; + +procedure TBizPresupuestos.SetDetalles( + Value: IBizDetallesPresupuesto); +begin + FDetalles := Value; + FDetallesLink.DataTable := Self.DataTable; + FDetalles.DataTable.MasterSource := FDetallesLink; +end; + +procedure TBizPresupuestos.Show; +begin + ShowEditor(IBizPresupuestos, Self, etItem); +end; + +procedure TBizDetallesPresupuesto.ActivarEventos; +begin + FPuedoLanzarEvento := True; +end; + +procedure TBizDetallesPresupuesto.AfterDelete(Sender: TDADataTable); +var + ACabecera : IBizImportesCabecera; +begin + inherited; + + // PARCHE ******************* + if not PuedoLanzarEvento then + Exit; + + if (not FMasterDeleting) and (not FCancelInsert) then + begin + ReasignarPosiciones(Self.DataTable); + if Assigned(DataTable.MasterSource) and + Supports(DataTable.MasterSource.DataTable, IBizImportesCabecera, ACabecera) then + ACabecera.RecalcularImporte; + end; + FCancelInsert := False; +end; + +procedure TBizDetallesPresupuesto.AfterInsert(Sender: TDADataTable); +begin + inherited; + + // PARCHE ******************* + if not PuedoLanzarEvento then + Exit; + + FIsAppend := DataTable.EOF; + Post; // Para lanzar AfterPost y asigne posición + Edit; // Para volver a dejarlo en modo de edición +end; + +procedure TBizDetallesPresupuesto.AfterPost(Sender: TDADataTable); +begin + inherited; + + // PARCHE ******************* + if not PuedoLanzarEvento then + Exit; + + if POSICION < 0 then + AsignarPosicion(Self.DataTable, FIsAppend); + + if NUMCONCEPTO < 0 then + AsignarNumConcepto(Self.DataTable); + + FIsAppend := False; +end; + +procedure TBizDetallesPresupuesto.BeforeDelete(Sender: TDADataTable); +begin + inherited; + + // PARCHE ******************* + if not PuedoLanzarEvento then + Exit; + + if (DataTable.State in dsEditModes) then + DataTable.Cancel; + + if not FMasterDeleting then + FCancelInsert := not (DataTable.MasterSource.DataTable.FieldByName('CODIGO').AsInteger = CODIGOPRESUPUESTO); +end; + +procedure TBizDetallesPresupuesto.BeforeInsert(Sender: TDADataTable); +begin + inherited; + + // PARCHE ******************* + if not PuedoLanzarEvento then + Exit; + + if Assigned(DataTable.MasterSource) and + (DataTable.MasterSource.DataTable.State in dsEditModes) then + DataTable.MasterSource.DataTable.Post; + + if GetRecordCount = 0 then + FPosicionNueva := -1 + else + FPosicionNueva := POSICION * (-1); +end; + +procedure TBizDetallesPresupuesto.CopyFrom( + ADetallesPresupuesto: IBizDetallesPresupuesto); +begin + DeleteAllTable(Self.DataTable); + + ADetallesPresupuesto.First; + while not ADetallesPresupuesto.EOF do + begin + DataTable.Append; + DataTable.DisableEventHandlers; + try + POSICION := ADetallesPresupuesto.POSICION; + TIPO := ADetallesPresupuesto.TIPO; + DESCRIPCION := ADetallesPresupuesto.DESCRIPCION; + CANTIDAD := ADetallesPresupuesto.CANTIDAD; + IMPORTEUNIDAD := ADetallesPresupuesto.IMPORTEUNIDAD; + IMPORTETOTAL := ADetallesPresupuesto.IMPORTETOTAL; + PUNTOS := ADetallesPresupuesto.PUNTOS; + IMPORTEPUNTOS := ADetallesPresupuesto.IMPORTEPUNTOS; + VISIBLE := ADetallesPresupuesto.VISIBLE; + finally + DataTable.EnableEventHandlers; + end; + DataTable.Post; + ADetallesPresupuesto.Next; + end; +end; + +constructor TBizDetallesPresupuesto.Create(aDataTable: TDADataTable); +begin + inherited; + FPosicionNueva := 1; // Los conceptos empiezan a contar en 1 + + // PARCHE ******************* + FPuedoLanzarEvento := True; +end; + +function TBizDetallesPresupuesto.DarSumaTotalImportes: Currency; +begin + Result := DarTotalDetalles(Self.DataTable, True, True); +end; + +procedure TBizDetallesPresupuesto.DesactivarEventos; +begin + FPuedoLanzarEvento := False +end; + +procedure TBizDetallesPresupuesto.OnNewRecord(Sender: TDADataTable); +begin + inherited; + + // PARCHE ******************* + if not PuedoLanzarEvento then + Exit; + + POSICION := FPosicionNueva; + NUMCONCEPTO := -1; + TIPO := TIPODETALLE_CONCEPTO; + VISIBLE := VISIBLE_TRUE; + + + Self.DataTable.DisableEventHandlers; + try + CANTIDAD := 1; + finally + Self.DataTable.EnableEventHandlers; + end; +end; + +function TBizPresupuestos.ShowForSelect : TModalResult; +begin + Result := ShowEditor(IBizPresupuestos, Self, etSelectItems); +end; + +procedure TBizPresupuestos.ShowApplyUpdateFailed( + const Error: EDAApplyUpdateFailed); +begin + if (Pos(AUF_FKVIOLATION, Error.Message) > 0) then + MessageBox(0, 'No se puede borrar este presupuesto porque tiene un montaje o un montaje o albarán asociado', 'Atención', MB_ICONWARNING or MB_OK); +end; + +procedure TBizPresupuestos.BeforeDelete(Sender: TDADataTable); +begin + inherited; + if not dmPresupuestos.PuedoEliminarPresupuesto(CODIGO) then + raise Exception.Create('No se puede borrar este presupuesto porque tiene un montaje o albarán asociado'); + FMasterDeleting := True; // Para que los detalles se borren de golpe y no recalcule posiciones ni totales + + //DOCUMENTOS ASOCIADOS + if Assigned(GestorDocumentos) then + begin + GestorDocumentos.Directorio := CODIGO; + GestorDocumentos.procesarDeleteTable; + end; +end; + +procedure TBizPresupuestos.AfterDelete(Sender: TDADataTable); +begin + inherited; + FMasterDeleting := False; +end; + +procedure TBizPresupuestos.Print; +begin + dmPresupuestos.Print(CODIGO); +end; + +procedure TBizPresupuestos.BeforeApplyUpdates(Sender: TDADataTable; + const Delta: IDADelta); +var + i : integer; +begin + for i := 0 to Delta.Count - 1 do + case Delta.Changes[i].ChangeType of + ctInsert, ctUpdate : ValidarPresupuesto(Self); + //ctDelete : + end; +end; + +procedure TBizPresupuestos.OnPostError(DataTable: TDADataTable; + Error: EDatabaseError; var Action: TDataAction); +begin + inherited; + Action := daAbort; + if (Pos(AUF_HAVEVALUE, Error.Message) > 0) then + begin + if (Pos('contacto', Error.Message) > 0) then + MessageBox(0, 'Debe indicar el cliente de este presupuesto', 'Atención', MB_ICONWARNING or MB_OK); + if (Pos('Fecha presupuesto', Error.Message) > 0) then + MessageBox(0, 'Debe indicar la fecha de este presupuesto', 'Atención', MB_ICONWARNING or MB_OK); + end + else + raise Error; +end; + +function TBizDetallesPresupuesto.PuedoLanzarEvento: Boolean; +begin + Result := FPuedoLanzarEvento; +end; + +procedure TBizDetallesPresupuesto.RecalcularImporte; +begin + RecalcularImporteDetalle(Self.DataTable, True, True); +end; + +procedure TBizPresupuestos.CopyFrom(APresupuesto: IBizPresupuestos); +begin + DataTable.DisableEventHandlers; + try + if not APresupuesto.DataTable.Active then + APresupuesto.DataTable.Active := True; + CODIGOEMPRESA := APresupuesto.CODIGOEMPRESA; + TIPO := APresupuesto.TIPO; + + CODIGOCONTACTO := APresupuesto.CODIGOCONTACTO; + NOMBRE := APresupuesto.NOMBRE; + Cliente := APresupuesto.Cliente; + + BASEIMPONIBLE := APresupuesto.BASEIMPONIBLE; + DESCUENTO := APresupuesto.DESCUENTO; + IMPORTEDESCUENTO := APresupuesto.IMPORTEDESCUENTO; + IVA := APresupuesto.IVA; + IMPORTEIVA := APresupuesto.IMPORTEIVA; + IMPORTETOTAL := APresupuesto.IMPORTETOTAL; + OBSERVACIONES := APresupuesto.OBSERVACIONES; + PLAZOENTREGA := APresupuesto.PLAZOENTREGA; + FORMAPAGO := APresupuesto.FORMAPAGO; + finally + DataTable.EnableEventHandlers; + end; + Post; + Detalles.CopyFrom(APresupuesto.Detalles); +end; + +procedure TBizDetallesPresupuesto.Refrescar; +begin + DataTable.Refresh; +end; + +procedure TBizDetallesPresupuesto.SetCANTIDADValue(const aValue: Integer); +begin + if aValue = 0 + then DataTable.Fields[idx_DetallesPresupuestosCANTIDAD].AsVariant := Null + else inherited; +end; + +procedure TBizDetallesPresupuesto.SetIMPORTEPUNTOSValue(const aValue: Currency); +begin + if aValue = 0 + then DataTable.Fields[idx_DetallesPresupuestosIMPORTEPUNTOS].AsVariant := Null + else inherited; +end; + +procedure TBizDetallesPresupuesto.SetIMPORTETOTALValue(const aValue: Currency); +begin + if aValue = 0 + then DataTable.Fields[idx_DetallesPresupuestosIMPORTETOTAL].AsVariant := Null + else inherited; +end; + +procedure TBizDetallesPresupuesto.SetIMPORTEUNIDADValue(const aValue: Currency); +begin + if aValue = 0 + then DataTable.Fields[idx_DetallesPresupuestosIMPORTEUNIDAD].AsVariant := Null + else inherited; +end; + +procedure TBizDetallesPresupuesto.SetPUNTOSValue(const aValue: Integer); +begin + if aValue = 0 + then DataTable.Fields[idx_DetallesPresupuestosPUNTOS].AsVariant := Null + else inherited; +end; + +procedure TBizPresupuestos.BeforeCancel(Sender: TDADataTable); +begin + if Assigned(GestorDocumentos) then + GestorDocumentos.procesarCancelTable; +end; + +function TBizPresupuestos.GetGestorDocumentos: TGestorDocumentos; +begin + if Assigned(FGestorDocumentos) then + FGestorDocumentos.Directorio := CODIGO; + + Result := FGestorDocumentos; +end; + +procedure TBizPresupuestos.SetGestorDocumentos(Value: TGestorDocumentos); +begin + FGestorDocumentos := Value; +end; + +initialization + FMasterDeleting := False; + RegisterDataTableRules(BIZ_DETALLESPRESUPUESTOCLIENTE, TBizDetallesPresupuesto); + RegisterDataTableRules(BIZ_PRESUPUESTOCLIENTE, TBizPresupuestos); + +finalization + +end. diff --git a/Modulos/Presupuestos/Servidor/srvPresupuestos_Impl.ddp b/Modulos/Presupuestos/Servidor/srvPresupuestos_Impl.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Presupuestos/Servidor/srvPresupuestos_Impl.ddp differ diff --git a/Modulos/Presupuestos/Servidor/srvPresupuestos_Impl.dfm b/Modulos/Presupuestos/Servidor/srvPresupuestos_Impl.dfm new file mode 100644 index 0000000..8e70acb --- /dev/null +++ b/Modulos/Presupuestos/Servidor/srvPresupuestos_Impl.dfm @@ -0,0 +1,2003 @@ +object srvPresupuestos: TsrvPresupuestos + OldCreateOrder = True + SessionManager = dmServer.SessionManager + OnActivate = DARemoteServiceActivate + AcquireConnection = True + ConnectionName = 'IBX' + ServiceSchema = schPresupuestos + ServiceAdapter = DABINAdapter + Left = 729 + Top = 363 + Height = 359 + Width = 328 + object schPresupuestos: TDASchema + ConnectionManager = dmServer.ConnectionManager + DataDictionary = dmServer.DataDictionary + Diagrams = dmServer.DADiagrams + Datasets = < + item + Params = < + item + Name = 'CODIGOPRESUPUESTO' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'DETALLESPRESUPUESTOS' + SQL = + 'SELECT '#10' CODIGOPRESUPUESTO, NUMCONCEPTO, DESCRIPCION, CANTIDA' + + 'D, '#10' IMPORTEUNIDAD, IMPORTETOTAL, TIPO, POSICION, VISIBLE,'#10' ' + + ' PUNTOS, IMPORTEPUNTOS'#10' FROM'#10' DETALLESPRESUPUESTOS'#10' WHERE ' + + 'CODIGOPRESUPUESTO = :CODIGOPRESUPUESTO'#10' ORDER BY POSICION' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'CODIGOPRESUPUESTO' + TableField = 'CODIGOPRESUPUESTO' + end + item + DatasetField = 'NUMCONCEPTO' + TableField = 'NUMCONCEPTO' + end + item + DatasetField = 'DESCRIPCION' + TableField = 'DESCRIPCION' + end + item + DatasetField = 'CANTIDAD' + TableField = 'CANTIDAD' + end + item + DatasetField = 'IMPORTEUNIDAD' + TableField = 'IMPORTEUNIDAD' + end + item + DatasetField = 'IMPORTETOTAL' + TableField = 'IMPORTETOTAL' + end + item + DatasetField = 'TIPO' + TableField = 'TIPO' + end + item + DatasetField = 'POSICION' + TableField = 'POSICION' + end + item + DatasetField = 'VISIBLE' + TableField = 'VISIBLE' + end + item + DatasetField = 'PUNTOS' + TableField = 'PUNTOS' + end + item + DatasetField = 'IMPORTEPUNTOS' + TableField = 'IMPORTEPUNTOS' + end> + end> + Name = 'DetallesPresupuestos' + Fields = < + item + Name = 'CODIGOPRESUPUESTO' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'CODIGOPRESUPUESTO' + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NUMCONCEPTO' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'NUMCONCEPTO' + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'DESCRIPCION' + DataType = datString + Size = 2000 + BlobType = dabtUnknown + DictionaryEntry = 'DESCRIPCIONCONCEPTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CANTIDAD' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'CANTIDAD' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTEUNIDAD' + DataType = datCurrency + BlobType = dabtUnknown + DictionaryEntry = 'IMPORTEUNIDAD' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTETOTAL' + DataType = datCurrency + BlobType = dabtUnknown + DictionaryEntry = 'IMPORTETOTAL' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'TIPO' + DataType = datString + Size = 1 + Description = 'Cap'#237'tulo, etc' + BlobType = dabtUnknown + DictionaryEntry = 'TIPODETALLESPRESUPUESTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'POSICION' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'POSICIONCONCEPTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'VISIBLE' + DataType = datString + Size = 1 + BlobType = dabtUnknown + DictionaryEntry = 'VISIBLE' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PUNTOS' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'PUNTOS' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTEPUNTOS' + DataType = datCurrency + BlobType = dabtUnknown + DictionaryEntry = 'IMPORTEPUNTOS' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end + item + Params = <> + Statements = < + item + Connection = 'IBX' + TargetTable = 'V_PRESUPUESTOS' + SQL = + 'SELECT CODIGOEMPRESA, CODIGO, FECHAALTA, USUARIO, CODIGOCONTACTO' + + ','#10' TIPO, FECHAPRESUPUESTO, VIGENCIAPRESUPUESTO, SITUACION,' + + ' FECHADECISION,'#10' BASEIMPONIBLE, DESCUENTO, IMPORTEDESCUENT' + + 'O, IVA, IMPORTEIVA,'#10' IMPORTETOTAL, OBSERVACIONES, PLAZOENT' + + 'REGA, FORMAPAGO, OPCION,'#10' NOMBRE, REFERENCIA,'#10' CODIG' + + 'OALBARAN, ALBARAN'#10#10'FROM V_PRESUPUESTOS' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'CODIGOEMPRESA' + TableField = 'CODIGOEMPRESA' + end + item + DatasetField = 'CODIGO' + TableField = 'CODIGO' + end + item + DatasetField = 'FECHAALTA' + TableField = 'FECHAALTA' + end + item + DatasetField = 'USUARIO' + TableField = 'USUARIO' + end + item + DatasetField = 'CODIGOCONTACTO' + TableField = 'CODIGOCONTACTO' + end + item + DatasetField = 'REFERENCIA' + TableField = 'REFERENCIA' + end + item + DatasetField = 'TIPO' + TableField = 'TIPO' + end + item + DatasetField = 'FECHAPRESUPUESTO' + TableField = 'FECHAPRESUPUESTO' + end + item + DatasetField = 'VIGENCIAPRESUPUESTO' + TableField = 'VIGENCIAPRESUPUESTO' + end + item + DatasetField = 'SITUACION' + TableField = 'SITUACION' + end + item + DatasetField = 'FECHADECISION' + TableField = 'FECHADECISION' + end + item + DatasetField = 'BASEIMPONIBLE' + TableField = 'BASEIMPONIBLE' + end + item + DatasetField = 'DESCUENTO' + TableField = 'DESCUENTO' + end + item + DatasetField = 'IMPORTEDESCUENTO' + TableField = 'IMPORTEDESCUENTO' + end + item + DatasetField = 'IVA' + TableField = 'IVA' + end + item + DatasetField = 'IMPORTEIVA' + TableField = 'IMPORTEIVA' + end + item + DatasetField = 'IMPORTETOTAL' + TableField = 'IMPORTETOTAL' + end + item + DatasetField = 'OBSERVACIONES' + TableField = 'OBSERVACIONES' + end + item + DatasetField = 'PLAZOENTREGA' + TableField = 'PLAZOENTREGA' + end + item + DatasetField = 'FORMAPAGO' + TableField = 'FORMAPAGO' + end + item + DatasetField = 'NOMBRE' + TableField = 'NOMBRE' + end + item + DatasetField = 'CODIGOALBARAN' + TableField = 'CODIGOALBARAN' + end + item + DatasetField = 'ALBARAN' + TableField = 'ALBARAN' + end + item + DatasetField = 'OPCION' + TableField = 'OPCION' + end> + end> + Name = 'Presupuestos' + Fields = < + item + Name = 'CODIGOEMPRESA' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'CODIGOEMPRESA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGO' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'CODIGOPRESUPUESTO' + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHAALTA' + DataType = datDateTime + BlobType = dabtUnknown + DictionaryEntry = 'FECHAALTA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'USUARIO' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DictionaryEntry = 'USUARIO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOCONTACTO' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'CODIGOCONTACTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NOMBRE' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + ServerAutoRefresh = True + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'REFERENCIA' + DataType = datString + Size = 20 + BlobType = dabtUnknown + DictionaryEntry = 'REFERENCIA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'TIPO' + DataType = datString + Size = 10 + Description = 'Cocina, ba'#241'o, etc' + BlobType = dabtUnknown + DictionaryEntry = 'TIPOPRESUPUESTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHAPRESUPUESTO' + DataType = datDateTime + BlobType = dabtUnknown + DictionaryEntry = 'FECHAPRESUPUESTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'VIGENCIAPRESUPUESTO' + DataType = datDateTime + BlobType = dabtUnknown + DictionaryEntry = 'VIGENCIAPRESUPUESTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'SITUACION' + DataType = datString + Size = 30 + Description = 'Pendiente, aceptado o rechazado' + BlobType = dabtUnknown + DictionaryEntry = 'SITUACIONPRESUPUESTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHADECISION' + DataType = datDateTime + BlobType = dabtUnknown + DictionaryEntry = 'FECHADECISION' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'BASEIMPONIBLE' + DataType = datCurrency + BlobType = dabtUnknown + DictionaryEntry = 'BASEIMPONIBLE' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'DESCUENTO' + DataType = datFloat + BlobType = dabtUnknown + DictionaryEntry = 'DESCUENTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTEDESCUENTO' + DataType = datCurrency + BlobType = dabtUnknown + DictionaryEntry = 'IMPORTEDESCUENTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IVA' + DataType = datFloat + BlobType = dabtUnknown + DictionaryEntry = 'IVA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTEIVA' + DataType = datCurrency + BlobType = dabtUnknown + DictionaryEntry = 'IMPORTEIVA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTETOTAL' + DataType = datCurrency + BlobType = dabtUnknown + DictionaryEntry = 'IMPORTETOTAL' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'OBSERVACIONES' + DataType = datMemo + BlobType = dabtUnknown + DictionaryEntry = 'OBSERVACIONES' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PLAZOENTREGA' + DataType = datMemo + BlobType = dabtUnknown + DictionaryEntry = 'PLAZOENTREGA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FORMAPAGO' + DataType = datMemo + BlobType = dabtUnknown + DictionaryEntry = 'FORMAPAGO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOALBARAN' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + ServerAutoRefresh = True + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ALBARAN' + DataType = datString + Size = 20 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'OPCION' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end + item + Params = < + item + Name = 'CODIGO' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'V_PRESUPUESTOS' + SQL = + 'SELECT CODIGO, NOMBRE, REFERENCIA, CODIGOALBARAN, ALBARAN'#10#10'FROM ' + + 'V_PRESUPUESTOS'#10'WHERE V_PRESUPUESTOS.CODIGO = :CODIGO' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'CODIGO' + TableField = 'CODIGO' + end + item + DatasetField = 'NOMBRE' + TableField = 'NOMBRE' + end + item + DatasetField = 'CODIGOALBARAN' + TableField = 'CODIGOALBARAN' + end + item + DatasetField = 'ALBARAN' + TableField = 'ALBARAN' + end + item + DatasetField = 'REFERENCIA' + TableField = 'REFERENCIA' + end> + end> + Name = 'Presupuestos_RefreshDataset' + Fields = < + item + Name = 'CODIGO' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'CODIGOPRESUPUESTO' + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NOMBRE' + DataType = datString + Size = 100 + BlobType = dabtUnknown + LogChanges = False + DisplayWidth = 0 + DisplayLabel = 'Nombre' + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'REFERENCIA' + DataType = datString + Size = 20 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOALBARAN' + DataType = datInteger + BlobType = dabtUnknown + LogChanges = False + DisplayWidth = 0 + DisplayLabel = 'C'#243'd. albar'#225'n' + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ALBARAN' + DataType = datString + Size = 20 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end + item + Params = < + item + Name = 'CODIGO' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'V_PRESUPUESTOS' + SQL = + 'SELECT CODIGOEMPRESA, CODIGO, FECHAALTA, USUARIO, CODIGOCONTACTO' + + ','#10' TIPO, FECHAPRESUPUESTO, VIGENCIAPRESUPUESTO, SITUACION,' + + ' FECHADECISION,'#10' BASEIMPONIBLE, DESCUENTO, IMPORTEDESCUENT' + + 'O, IVA, IMPORTEIVA,'#10' IMPORTETOTAL, OBSERVACIONES, PLAZOENT' + + 'REGA, FORMAPAGO, OPCION,'#10' NOMBRE, NIF_CIF, NOMBRE, CALLE, ' + + 'CODIGOPOSTAL, POBLACION, TELEFONO1,'#10' TELEFONO2, MOVIL, REF' + + 'ERENCIA,'#10' CODIGOALBARAN, ALBARAN'#10#10'FROM V_PRESUPUESTOS'#10'WHER' + + 'E CODIGO = :CODIGO' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'CODIGOEMPRESA' + TableField = 'CODIGOEMPRESA' + end + item + DatasetField = 'CODIGO' + TableField = 'CODIGO' + end + item + DatasetField = 'FECHAALTA' + TableField = 'FECHAALTA' + end + item + DatasetField = 'USUARIO' + TableField = 'USUARIO' + end + item + DatasetField = 'CODIGOCONTACTO' + TableField = 'CODIGOCONTACTO' + end + item + DatasetField = 'REFERENCIA' + TableField = 'REFERENCIA' + end + item + DatasetField = 'TIPO' + TableField = 'TIPO' + end + item + DatasetField = 'FECHAPRESUPUESTO' + TableField = 'FECHAPRESUPUESTO' + end + item + DatasetField = 'VIGENCIAPRESUPUESTO' + TableField = 'VIGENCIAPRESUPUESTO' + end + item + DatasetField = 'SITUACION' + TableField = 'SITUACION' + end + item + DatasetField = 'FECHADECISION' + TableField = 'FECHADECISION' + end + item + DatasetField = 'BASEIMPONIBLE' + TableField = 'BASEIMPONIBLE' + end + item + DatasetField = 'DESCUENTO' + TableField = 'DESCUENTO' + end + item + DatasetField = 'IMPORTEDESCUENTO' + TableField = 'IMPORTEDESCUENTO' + end + item + DatasetField = 'IVA' + TableField = 'IVA' + end + item + DatasetField = 'IMPORTEIVA' + TableField = 'IMPORTEIVA' + end + item + DatasetField = 'IMPORTETOTAL' + TableField = 'IMPORTETOTAL' + end + item + DatasetField = 'OBSERVACIONES' + TableField = 'OBSERVACIONES' + end + item + DatasetField = 'PLAZOENTREGA' + TableField = 'PLAZOENTREGA' + end + item + DatasetField = 'FORMAPAGO' + TableField = 'FORMAPAGO' + end + item + DatasetField = 'NOMBRE' + TableField = 'NOMBRE' + end + item + DatasetField = 'CALLE' + TableField = 'CALLE' + end + item + DatasetField = 'CODIGOPOSTAL' + TableField = 'CODIGOPOSTAL' + end + item + DatasetField = 'POBLACION' + TableField = 'POBLACION' + end + item + DatasetField = 'TELEFONO1' + TableField = 'TELEFONO1' + end + item + DatasetField = 'TELEFONO2' + TableField = 'TELEFONO2' + end + item + DatasetField = 'MOVIL' + TableField = 'MOVIL' + end + item + DatasetField = 'NIF_CIF' + TableField = 'NIF_CIF' + end + item + DatasetField = 'NOMBRE1' + TableField = 'NOMBRE1' + end + item + DatasetField = 'OPCION' + TableField = 'OPCION' + end + item + DatasetField = 'CODIGOALBARAN' + TableField = 'CODIGOALBARAN' + end + item + DatasetField = 'ALBARAN' + TableField = 'ALBARAN' + end> + end> + Name = 'InformeCabeceraPresupuesto' + Fields = < + item + Name = 'CODIGOEMPRESA' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGO' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHAALTA' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'USUARIO' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOCONTACTO' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'REFERENCIA' + DataType = datString + Size = 20 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'TIPO' + DataType = datString + Size = 10 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHAPRESUPUESTO' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'VIGENCIAPRESUPUESTO' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'SITUACION' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHADECISION' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'BASEIMPONIBLE' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'DESCUENTO' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTEDESCUENTO' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IVA' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTEIVA' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTETOTAL' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'OBSERVACIONES' + DataType = datMemo + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PLAZOENTREGA' + DataType = datMemo + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FORMAPAGO' + DataType = datMemo + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NOMBRE' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NIF_CIF' + DataType = datString + Size = 10 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NOMBRE1' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CALLE' + DataType = datString + Size = 150 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOPOSTAL' + DataType = datString + Size = 5 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'POBLACION' + DataType = datString + Size = 40 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'TELEFONO1' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'TELEFONO2' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'MOVIL' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'OPCION' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOALBARAN' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ALBARAN' + DataType = datString + Size = 20 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end + item + Params = < + item + Name = 'CODIGOPRESUPUESTO' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'DETALLESPRESUPUESTOS' + SQL = + 'SELECT '#10' CODIGOPRESUPUESTO, NUMCONCEPTO, DESCRIPCION, CANTIDA' + + 'D, '#10' IMPORTEUNIDAD, IMPORTETOTAL, TIPO, POSICION'#10' FROM'#10' D' + + 'ETALLESPRESUPUESTOS'#10' WHERE CODIGOPRESUPUESTO = :CODIGOPRESUPUES' + + 'TO'#10' AND VISIBLE = '#39'S'#39#10' ORDER BY POSICION' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'CODIGOPRESUPUESTO' + TableField = 'CODIGOPRESUPUESTO' + end + item + DatasetField = 'NUMCONCEPTO' + TableField = 'NUMCONCEPTO' + end + item + DatasetField = 'DESCRIPCION' + TableField = 'DESCRIPCION' + end + item + DatasetField = 'CANTIDAD' + TableField = 'CANTIDAD' + end + item + DatasetField = 'IMPORTEUNIDAD' + TableField = 'IMPORTEUNIDAD' + end + item + DatasetField = 'IMPORTETOTAL' + TableField = 'IMPORTETOTAL' + end + item + DatasetField = 'TIPO' + TableField = 'TIPO' + end + item + DatasetField = 'POSICION' + TableField = 'POSICION' + end> + end> + Name = 'InformeDetallesPresupuesto' + Fields = < + item + Name = 'CODIGOPRESUPUESTO' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'CODIGOPRESUPUESTO' + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NUMCONCEPTO' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'NUMCONCEPTO' + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'DESCRIPCION' + DataType = datString + Size = 2000 + BlobType = dabtUnknown + DictionaryEntry = 'DESCRIPCIONCONCEPTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CANTIDAD' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'CANTIDAD' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTEUNIDAD' + DataType = datCurrency + BlobType = dabtUnknown + DictionaryEntry = 'IMPORTEUNIDAD' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTETOTAL' + DataType = datCurrency + BlobType = dabtUnknown + DictionaryEntry = 'IMPORTETOTAL' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'TIPO' + DataType = datString + Size = 1 + Description = 'Cap'#237'tulo, etc' + BlobType = dabtUnknown + DictionaryEntry = 'TIPODETALLESPRESUPUESTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'POSICION' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'POSICIONCONCEPTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end> + Commands = < + item + Params = < + item + Name = 'CODIGOEMPRESA' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'CODIGO' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'FECHAALTA' + DataType = datDateTime + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'USUARIO' + DataType = datString + Size = 100 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'CODIGOCONTACTO' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'TIPO' + DataType = datString + Size = 10 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'FECHAPRESUPUESTO' + DataType = datDateTime + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'VIGENCIAPRESUPUESTO' + DataType = datDateTime + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'SITUACION' + DataType = datString + Size = 30 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'FECHADECISION' + DataType = datDateTime + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'BASEIMPONIBLE' + DataType = datFloat + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'DESCUENTO' + DataType = datFloat + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'IMPORTEDESCUENTO' + DataType = datFloat + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'IVA' + DataType = datFloat + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'IMPORTEIVA' + DataType = datFloat + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'IMPORTETOTAL' + DataType = datFloat + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'OBSERVACIONES' + DataType = datMemo + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'PLAZOENTREGA' + DataType = datMemo + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'FORMAPAGO' + DataType = datMemo + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'OPCION' + DataType = datString + Size = 100 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'PRESUPUESTOS' + SQL = + 'INSERT'#10' INTO PRESUPUESTOS'#10' (CODIGOEMPRESA, CODIGO, FECHAALTA' + + ', USUARIO, CODIGOCONTACTO,'#10' TIPO, FECHAPRESUPUESTO, VIGENCIA' + + 'PRESUPUESTO,'#10' SITUACION, FECHADECISION, BASEIMPONIBLE, DESCU' + + 'ENTO, '#10' IMPORTEDESCUENTO, IVA, IMPORTEIVA, IMPORTETOTAL, OBS' + + 'ERVACIONES, '#10' PLAZOENTREGA, FORMAPAGO, OPCION)'#10' VALUES'#10' ' + + '(:CODIGOEMPRESA, :CODIGO,'#10' :FECHAALTA, :USUARIO, :CODIGOCONT' + + 'ACTO,'#10' :TIPO, :FECHAPRESUPUESTO, :VIGENCIAPRESUPUESTO,'#10' ' + + ':SITUACION, :FECHADECISION, :BASEIMPONIBLE, :DESCUENTO, '#10' :I' + + 'MPORTEDESCUENTO, :IVA, :IMPORTEIVA, :IMPORTETOTAL, '#10' :OBSERV' + + 'ACIONES, :PLAZOENTREGA, :FORMAPAGO, :OPCION);' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Insert_Presupuestos' + end + item + Params = < + item + Name = 'CODIGOEMPRESA' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'FECHAALTA' + DataType = datDateTime + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'USUARIO' + DataType = datString + Size = 100 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'CODIGOCONTACTO' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'TIPO' + DataType = datString + Size = 10 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'FECHAPRESUPUESTO' + DataType = datDateTime + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'VIGENCIAPRESUPUESTO' + DataType = datDateTime + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'SITUACION' + DataType = datString + Size = 30 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'FECHADECISION' + DataType = datDateTime + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'BASEIMPONIBLE' + DataType = datFloat + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'DESCUENTO' + DataType = datFloat + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'IMPORTEDESCUENTO' + DataType = datFloat + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'IVA' + DataType = datFloat + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'IMPORTEIVA' + DataType = datFloat + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'IMPORTETOTAL' + DataType = datFloat + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'OBSERVACIONES' + DataType = datMemo + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'PLAZOENTREGA' + DataType = datMemo + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'FORMAPAGO' + DataType = datMemo + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'OPCION' + DataType = datString + Size = 100 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'OLD_CODIGO' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'PRESUPUESTOS' + SQL = + 'UPDATE PRESUPUESTOS'#10' SET '#10' CODIGOEMPRESA = :CODIGOEMPRESA, '#10 + + ' FECHAALTA = :FECHAALTA, '#10' USUARIO = :USUARIO, '#10' CODIGO' + + 'CONTACTO = :CODIGOCONTACTO, '#10' TIPO = :TIPO,'#10' FECHAPRESUPUE' + + 'STO = :FECHAPRESUPUESTO, '#10' VIGENCIAPRESUPUESTO = :VIGENCIAPRE' + + 'SUPUESTO, '#10' SITUACION = :SITUACION, '#10' FECHADECISION = :FEC' + + 'HADECISION, '#10' BASEIMPONIBLE = :BASEIMPONIBLE, '#10' DESCUENTO ' + + '= :DESCUENTO, '#10' IMPORTEDESCUENTO = :IMPORTEDESCUENTO, '#10' IV' + + 'A = :IVA, '#10' IMPORTEIVA = :IMPORTEIVA, '#10' IMPORTETOTAL = :IM' + + 'PORTETOTAL, '#10' OBSERVACIONES = :OBSERVACIONES, '#10' PLAZOENTRE' + + 'GA = :PLAZOENTREGA, '#10' FORMAPAGO = :FORMAPAGO,'#10' OPCION = :O' + + 'PCION'#10' WHERE'#10' (CODIGO = :OLD_CODIGO)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Update_Presupuestos' + end + item + Params = < + item + Name = 'OLD_CODIGO' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'PRESUPUESTOS' + SQL = + 'DELETE '#10' FROM'#10' PRESUPUESTOS'#10' WHERE'#10' (CODIGO = :OLD_CODIG' + + 'O)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Delete_Presupuestos' + end> + RelationShips = < + item + Name = 'FK_DetallesPresupuestos_Presupuestos' + MasterDatasetName = 'Presupuestos' + MasterFields = 'CODIGO' + DetailDatasetName = 'DetallesPresupuestos' + DetailFields = 'CODIGOPRESUPUESTO' + end + item + Name = 'FK_InformeDetallesPresupuesto_InformeCabeceraPresupuesto' + MasterDatasetName = 'InformeCabeceraPresupuesto' + MasterFields = 'CODIGO' + DetailDatasetName = 'InformeDetallesPresupuesto' + DetailFields = 'CODIGOPRESUPUESTO' + end> + UpdateRules = < + item + Name = 'Insert Presupuestos' + DoUpdate = False + DoInsert = True + DoDelete = False + DatasetName = 'Presupuestos' + FailureBehaviour = fbRaiseException + end + item + Name = 'Update Presupuestos' + DoUpdate = True + DoInsert = False + DoDelete = False + DatasetName = 'Presupuestos' + FailureBehaviour = fbRaiseException + end + item + Name = 'Delete DetallesPresupuestos' + DoUpdate = False + DoInsert = False + DoDelete = True + DatasetName = 'DetallesPresupuestos' + FailureBehaviour = fbRaiseException + end + item + Name = 'Update DetallesPresupuestos' + DoUpdate = True + DoInsert = False + DoDelete = False + DatasetName = 'DetallesPresupuestos' + FailureBehaviour = fbRaiseException + end + item + Name = 'Insert DetallesPresupuestos' + DoUpdate = False + DoInsert = True + DoDelete = False + DatasetName = 'DetallesPresupuestos' + FailureBehaviour = fbRaiseException + end + item + Name = 'Delete Presupuestos' + DoUpdate = False + DoInsert = False + DoDelete = True + DatasetName = 'Presupuestos' + FailureBehaviour = fbRaiseException + end> + Left = 48 + Top = 24 + end + object bpPresupuestos: TDABusinessProcessor + Schema = schPresupuestos + InsertCommandName = 'Insert_Presupuestos' + DeleteCommandName = 'Delete_Presupuestos' + UpdateCommandName = 'Update_Presupuestos' + RefreshDatasetName = 'Presupuestos_RefreshDataset' + ReferencedDataset = 'Presupuestos' + ProcessorOptions = [poAutoGenerateDelete, poPrepareCommands] + UpdateMode = updWhereKeyOnly + Left = 208 + Top = 24 + end + object frxReport1: TfrxReport + Version = '3.23.7' + DotMatrixReport = False + EngineOptions.DoublePass = True + IniFile = '\Software\Fast Reports' + PreviewOptions.Buttons = [pbPrint, pbLoad, pbSave, pbExport, pbZoom, pbFind, pbOutline, pbPageSetup, pbTools, pbEdit, pbNavigator] + PreviewOptions.OutlineWidth = 180 + PreviewOptions.Zoom = 1.000000000000000000 + PrintOptions.Printer = 'Default' + ReportOptions.CreateDate = 37871.995398692100000000 + ReportOptions.Description.Strings = ( + 'Demonstrates how to create simple list report.') + ReportOptions.LastChange = 39153.814578263890000000 + ReportOptions.VersionBuild = '1' + ReportOptions.VersionMajor = '12' + ReportOptions.VersionMinor = '13' + ReportOptions.VersionRelease = '1' + ScriptLanguage = 'PascalScript' + ScriptText.Strings = ( + 'procedure Band4OnBeforePrint(Sender: TfrxComponent);' + 'begin' + ' case of' + ' '#39'C'#39': begin' + ' MemoCampo12.Style := '#39'Concepto normal'#39';' + ' MemoCampo2.Style := '#39'Concepto normal'#39';' + ' MemoCampo3.Style := '#39'Concepto normal'#39';' + ' MemoCampo4.Style := '#39'Concepto normal'#39';' + ' end;' + ' '#39'S'#39': begin' + ' MemoCampo12.Style := '#39'Concepto subtotal'#39';' + ' MemoCampo2.Style := '#39'Concepto subtotal'#39';' + ' MemoCampo3.Style := '#39'Concepto subtotal'#39';' + ' MemoCampo4.Style := '#39'Concepto subtotal'#39';' + ' end;' + ' '#39'T'#39': begin' + ' MemoCampo12.Style := '#39'Concepto titulo'#39';' + ' MemoCampo2.Style := '#39'Concepto titulo'#39';' + ' MemoCampo3.Style := '#39'Concepto titulo'#39';' + ' MemoCampo4.Style := '#39'Concepto titulo'#39';' + ' end;' + ' end;' + '' + ' MemoCampo12.Height := 0;' + ' MemoCampo2.Height := 0;' + ' MemoCampo3.Height := 0;' + ' MemoCampo4.Height := 0;' + 'end;' + '' + 'procedure ReportSummary1OnBeforePrint(Sender: TfrxComponent);' + 'begin' + + ' Engine.CurY := Engine.CurY + Engine.FreeSpace - ReportSum' + + 'mary1.Height - 1;' + 'end;' + '' + 'procedure DatosClienteOnBeforePrint(Sender: TfrxComponent);' + 'var' + ' cadenaAux: String;' + 'begin' + ' DatosCliente.Lines.Clear;' + ' DatosCliente.Lines.Add();' + '' + ' if ( <> '#39#39')' + ' or ( <> '#39#39') then' + + ' DatosCliente.Lines.Add( + );' + '' + ' CadenaAux := '#39#39';' + ' if <> '#39#39' then' + ' if CadenaAux = '#39#39' then' + + ' CadenaAux := CadenaAux + '#39'Telf:'#39' + ' + ' else' + + ' CadenaAux := CadenaAux + '#39' / '#39' + ;' + '' + ' if <> '#39#39' then' + ' if CadenaAux = '#39#39' then' + + ' CadenaAux := CadenaAux + '#39'Telf:'#39' + ' + ' else' + + ' CadenaAux := CadenaAux + '#39' / '#39' + ;' + '' + ' if <> '#39#39' then' + ' if CadenaAux = '#39#39' then' + + ' CadenaAux := CadenaAux + '#39'Telf:'#39' + ' + ' else' + + ' CadenaAux := CadenaAux + '#39' / '#39' + ' + + ';' + '' + ' DatosCliente.Lines.Add(CadenaAux);' + 'end;' + '' + '' + 'begin' + '' + 'end.') + StoreInDFM = False + Left = 40 + Top = 128 + Datasets = < + item + DataSet = frxDBCabecera + DataSetName = 'frxDBCabecera' + end + item + DataSet = frxDBDetalles + DataSetName = 'frxDBDetalles' + end> + Variables = <> + Style = < + item + Name = 'Concepto normal' + Color = clNone + Font.Charset = ANSI_CHARSET + Font.Color = clWindowText + Font.Height = -13 + Font.Name = 'Tahoma' + Font.Style = [] + end + item + Name = 'Concepto subtotal' + Color = 15790320 + Font.Charset = ANSI_CHARSET + Font.Color = clWindowText + Font.Height = -13 + Font.Name = 'Tahoma' + Font.Style = [fsBold] + end + item + Name = 'Cabecera de columna' + Color = 15790320 + Font.Charset = ANSI_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Tahoma' + Font.Style = [fsBold] + Frame.Typ = [ftLeft, ftRight, ftTop, ftBottom] + end + item + Name = 'Concepto titulo' + Color = clNone + Font.Charset = ANSI_CHARSET + Font.Color = clWindowText + Font.Height = -13 + Font.Name = 'Tahoma' + Font.Style = [fsBold] + end> + end + object DADataCabecera: TDADataSource + DataTable = tbl_Presupuesto + Left = 120 + Top = 176 + end + object DADataDetalles: TDADataSource + DataTable = tbl_DetallesPresupuesto + Left = 200 + Top = 176 + end + object frxDBCabecera: TfrxDBDataset + UserName = 'frxDBCabecera' + CloseDataSource = False + DataSource = DADataCabecera + Left = 120 + Top = 128 + end + object frxDBDetalles: TfrxDBDataset + UserName = 'frxDBDetalles' + CloseDataSource = False + DataSource = DADataDetalles + Left = 200 + Top = 128 + end + object tbl_Presupuesto: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = <> + Params = <> + MasterMappingMode = mmDataRequest + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteFetchEnabled = False + SchemaCall.Params = <> + DataRequestCall.Params = <> + DataUpdateCall.Params = <> + ScriptCall.Params = <> + ReadOnly = False + Adapter = DABINAdapter + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + IndexDefs = <> + Left = 120 + Top = 240 + end + object tbl_DetallesPresupuesto: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = <> + Params = <> + MasterMappingMode = mmDataRequest + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteFetchEnabled = False + SchemaCall.Params = <> + DataRequestCall.Params = <> + DataUpdateCall.Params = <> + ScriptCall.Params = <> + ReadOnly = False + Adapter = DABINAdapter + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + IndexDefs = <> + Left = 200 + Top = 240 + end + object DABINAdapter: TDABINAdapter + Left = 48 + Top = 80 + end +end diff --git a/Modulos/Presupuestos/Servidor/srvPresupuestos_Impl.pas b/Modulos/Presupuestos/Servidor/srvPresupuestos_Impl.pas new file mode 100644 index 0000000..4ff7847 --- /dev/null +++ b/Modulos/Presupuestos/Servidor/srvPresupuestos_Impl.pas @@ -0,0 +1,125 @@ +unit srvPresupuestos_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:} DARemoteService_Impl, + {Used RODLs:} DataAbstract_Intf, + {Generated:} FactuGES_Intf, uDAClasses, uDAScriptingProvider, + uDABusinessProcessor, uDADataTable, uDAInterfaces, uDAEngine, + uDAIBXDriver, frxClass, frxDBSet, DB, uDACDSDataTable, uDABINAdapter, + uDADriverManager; + +type + { TsrvPresupuestos } + TsrvPresupuestos = class(TDARemoteService, IsrvPresupuestos) + bpPresupuestos: TDABusinessProcessor; + DADataCabecera: TDADataSource; + DADataDetalles: TDADataSource; + frxDBCabecera: TfrxDBDataset; + frxDBDetalles: TfrxDBDataset; + tbl_Presupuesto: TDACDSDataTable; + tbl_DetallesPresupuesto: TDACDSDataTable; + DABINAdapter: TDABINAdapter; + frxReport1: TfrxReport; + schPresupuestos: TDASchema; + procedure DARemoteServiceActivate(const aClientID: TGUID; + aSession: TROSession; const aMessage: IROMessage); + private + protected + function GenerateReport(const Codigo: Integer; const TamLetra: Integer): Binary; + function GetNextAutoinc: Integer; + function PuedoEliminarPresupuesto(const CodigoPresupuesto: Integer): Boolean; + end; + +implementation + +{$R *.dfm} +uses + Dialogs, + {Generated:} FactuGES_Invk, uDataModuleServer, uRORemoteDataModule, + fServerForm, Variants, IB, schPresupuestosClient_Intf; + +procedure Create_srvPresupuestos(out anInstance : IUnknown); +begin + anInstance := TsrvPresupuestos.Create(NIL); +end; + +{ srvPresupuestos } +procedure TsrvPresupuestos.DARemoteServiceActivate(const aClientID: TGUID; + aSession: TROSession; const aMessage: IROMessage); +begin + ((Connection as IDAConnectionObjectAccess).ConnectionObject as + TIBXConnection).Database.TraceFlags := [tfQPrepare, tfQExecute, tfQFetch, tfError, tfStmt, tfConnect, tfTransact, tfBlob, tfService, tfMisc]; +end; + +function TsrvPresupuestos.GenerateReport(const Codigo: Integer; const TamLetra: Integer): Binary; +var + dsMaster: IDADataset; + dsDetail: IDADataset; + AStream: TMemoryStream; +begin + AStream := TMemoryStream.Create; + Result := Binary.Create; + try + dsMaster := schPresupuestos.NewDataset(Connection, 'InformeCabeceraPresupuesto', ['CODIGO'], [Codigo]); + dsDetail := schPresupuestos.NewDataset(Connection, 'InformeDetallesPresupuesto', ['CODIGOPRESUPUESTO'], [Codigo], False); + dsDetail.Active := True; + + AStream.Clear; + ServiceAdapter.WriteDataset(AStream, dsMaster, [woRows, woSchema], -1); + ServiceAdapter.ReadDataset(AStream, tbl_Presupuesto, TRUE, '', TRUE, TRUE); + + AStream.Clear; + ServiceAdapter.WriteDataset(AStream, dsDetail, [woRows, woSchema], -1); + ServiceAdapter.ReadDataset(AStream, tbl_DetallesPresupuesto, TRUE, '', TRUE, TRUE); + + frxReport1.LoadFromFile(DarRutaInformes + 'InfPresupuesto.fr3', True); + + //Tamaño de letra + if TamLetra <> 0 then + frxReport1.Styles.Find('Concepto normal').Font.Size := TamLetra; + + frxReport1.PrepareReport; + frxReport1.PreviewPages.SaveToStream(Result); + finally + AStream.Free; + end; +end; + +function TsrvPresupuestos.GetNextAutoinc: Integer; +begin + Result := uDataModuleServer.GetNextAutoinc(Connection, 'GEN_PRESUPUESTOS'); +end; + +function TsrvPresupuestos.PuedoEliminarPresupuesto( + const CodigoPresupuesto: Integer): Boolean; +var + dsPresupuesto: IDASQLCommand; +begin + Result := True; + Connection.BeginTransaction; + try + dsPresupuesto := schPresupuestos.NewCommand(Connection, 'Delete_Presupuestos', ['OLD_CODIGO'], [CodigoPresupuesto]); + except + on E: Exception do + Result := False; + end; + Connection.RollbackTransaction; +end; + +initialization + TROClassFactory.Create('srvPresupuestos', Create_srvPresupuestos, TsrvPresupuestos_Invoker); + +finalization + +end. diff --git a/Modulos/Presupuestos_/Cliente/Inicio/uViewInicio.ddp b/Modulos/Presupuestos_/Cliente/Inicio/uViewInicio.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Presupuestos_/Cliente/Inicio/uViewInicio.ddp differ diff --git a/Modulos/Presupuestos_/Cliente/Inicio/uViewInicio.dfm b/Modulos/Presupuestos_/Cliente/Inicio/uViewInicio.dfm new file mode 100644 index 0000000..89ff898 --- /dev/null +++ b/Modulos/Presupuestos_/Cliente/Inicio/uViewInicio.dfm @@ -0,0 +1,48 @@ +object CustomView1: TCustomView1 + Left = 0 + Top = 0 + Width = 347 + Height = 291 + TabOrder = 0 + ReadOnly = False + object dxLayoutControl1: TdxLayoutControl + Left = 0 + Top = 0 + Width = 347 + Height = 291 + Align = alClient + TabOrder = 0 + AutoContentSizes = [acsWidth, acsHeight] + object DBGrid1: TDBGrid + Left = 24 + Top = 30 + Width = 320 + Height = 116 + BorderStyle = bsNone + TabOrder = 0 + TitleFont.Charset = DEFAULT_CHARSET + TitleFont.Color = clWindowText + TitleFont.Height = -11 + TitleFont.Name = 'MS Sans Serif' + TitleFont.Style = [] + end + object dxLayoutControl1Group_Root: TdxLayoutGroup + ShowCaption = False + Hidden = True + ShowBorder = False + object dxLayoutControl1Group1: TdxLayoutGroup + AutoAligns = [aaHorizontal] + AlignVert = avClient + Caption = 'Prueba' + object dxLayoutControl1Item1: TdxLayoutItem + AutoAligns = [] + AlignHorz = ahClient + AlignVert = avClient + Caption = 'New Item' + ShowCaption = False + Control = DBGrid1 + end + end + end + end +end diff --git a/Modulos/Presupuestos_/Cliente/Inicio/uViewInicio.pas b/Modulos/Presupuestos_/Cliente/Inicio/uViewInicio.pas new file mode 100644 index 0000000..c62cf18 --- /dev/null +++ b/Modulos/Presupuestos_/Cliente/Inicio/uViewInicio.pas @@ -0,0 +1,36 @@ +unit uViewInicio; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uCustomView, dxLayoutControl, Grids, DBGrids, cxControls, uViewBase; + +type + TCustomView1 = class(TCustomView, IViewInicio) + dxLayoutControl1Group_Root: TdxLayoutGroup; + dxLayoutControl1: TdxLayoutControl; + dxLayoutControl1Group1: TdxLayoutGroup; + DBGrid1: TDBGrid; + dxLayoutControl1Item1: TdxLayoutItem; + private + function Control : TControl; + public + { Public declarations } + end; + +var + CustomView1: TCustomView1; + +implementation + +{$R *.dfm} + +{ TCustomView1 } + +function TCustomView1.Control: TControl; +begin + Result := Self; +end; + +end. diff --git a/Modulos/Presupuestos_/Cliente/Presupuestos.cfg b/Modulos/Presupuestos_/Cliente/Presupuestos.cfg new file mode 100644 index 0000000..34e1eaa --- /dev/null +++ b/Modulos/Presupuestos_/Cliente/Presupuestos.cfg @@ -0,0 +1,45 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O- +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-GD +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N".\" +-LE"..\..\..\Output\Cliente" +-LN".\" +-U"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados" +-O"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados" +-I"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados" +-R"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados" +-Z +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/Modulos/Presupuestos_/Cliente/Presupuestos.dof b/Modulos/Presupuestos_/Cliente/Presupuestos.dof new file mode 100644 index 0000000..6624f4a --- /dev/null +++ b/Modulos/Presupuestos_/Cliente/Presupuestos.dof @@ -0,0 +1,478 @@ +[FileVersion] +Version=7.0 +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=0 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=1 +SymbolLibrary=1 +SymbolPlatform=1 +UnitLibrary=1 +UnitPlatform=1 +UnitDeprecated=1 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 +[Linker] +MapFile=3 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=Presupuestos de cliente +[Directories] +OutputDir= +UnitOutputDir=.\ +PackageDLLOutputDir=..\..\..\Output\Cliente +PackageDCPOutputDir=.\ +SearchPath=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados +Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;CEToolsPkgd7;FR7;FRIBX7;Hydra_Core_D7;Hydra_RO_D7;fqb70;frx7;frxADO7;frxBDE7;frxDB7;frxDBX7;frxe7;frxIBX7;fs7;fsADO7;fsBDE7;fsDB7;fsIBX7;DataAbstract_Core_D7;DataAbstract_IDE_D7 +Conditionals= +DebugSourceDirs= +UsePackages=0 +[Parameters] +RunParams= +HostApplication= +Launcher= +UseLauncher=0 +DebugCWD= +[Language] +ActiveLang= +ProjectLang= +RootDir=C:\Archivos de programa\Borland\Delphi7\Bin\ +[Version Info] +IncludeVerInfo=1 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=3082 +CodePage=1252 +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= +[Excluded Packages] +C:\Archivos de programa\Developer Express Inc\Lib\D7\dxPScxSchedulerLnkD7.bpl=ExpressPrinting System ReportLink for ExpressScheduler by Developer Express Inc. +C:\Archivos de programa\Developer Express Inc\Lib\D7\dxLayoutControlcxEditAdaptersD7.bpl=ExpressLayoutControl Adapters for ExpressEditors Library 5 by Developer Express Inc. +[HistoryLists\hlDebugSourcePath] +Count=1 +Item0=D:\Proyectos\Componentes\GUISDK\Sources\;D:\Proyectos\Componentes\PluginSDK\Source\;D:\Proyectos\FactuGES (Estudio)\Codigo\Modulos\Contactos\Cliente;D:\Proyectos\FactuGES (Estudio)\Codigo\Modulos\Contactos\Reglas +[HistoryLists\hlUnitAliases] +Count=1 +Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +[HistoryLists\hlSearchPath] +Count=2 +Item0=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\base;..\Modulos\Calendarios\Cliente;..\Modulos\Calendarios\Reglas +Item1=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\Base;..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios +[HistoryLists\hlUnitOutputDirectory] +Count=1 +Item0=.\ +[HistoryLists\hlOutputDirectorry] +Count=1 +Item0=..\Output\Cliente +[HistoryLists\hlBPLOutput] +Count=1 +Item0=..\..\Output\Cliente +[HistoryLists\hlDCPOutput] +Count=1 +Item0=.\ +[Exception Log] +EurekaLog Version=501 +Activate=1 +Activate Handle=1 +Save Log File=1 +Foreground Tab=0 +Freeze Activate=0 +Freeze Timeout=60 +Freeze Message=The application seems to be frozen. +SMTP From=eurekalog@email.com +SMTP Host= +SMTP Port=25 +SMTP UserID= +SMTP Password= +Append to Log=0 +Show TerminateBtn=1 +TerminateBtn Operation=1 +Errors Number=32 +Errors Terminate=3 +Email Address= +Email Object= +Email Send Options=0 +Output Path= +Encrypt Password= +AutoCloseDialogSecs=0 +WebSendMode=0 +SupportULR= +HTMLLayout Count=15 +HTMLLine0="%3Chtml%3E" +HTMLLine1=" %3Chead%3E" +HTMLLine2=" %3C/head%3E" +HTMLLine3=" %3Cbody TopMargin=10 LeftMargin=10%3E" +HTMLLine4=" %3Ctable width="100%%" border="0"%3E" +HTMLLine5=" %3Ctr%3E" +HTMLLine6=" %3Ctd nowrap%3E" +HTMLLine7=" %3Cfont face="Lucida Console, Courier" size="2"%3E" +HTMLLine8=" %3C%%HTML_TAG%%%3E" +HTMLLine9=" %3C/font%3E" +HTMLLine10=" %3C/td%3E" +HTMLLine11=" %3C/tr%3E" +HTMLLine12=" %3C/table%3E" +HTMLLine13=" %3C/body%3E" +HTMLLine14="%3C/html%3E" +AutoCrashOperation=1 +AutoCrashNumber=10 +AutoCrashMinutes=1 +WebURL= +WebUserID= +WebPassword= +WebPort=0 +AttachedFiles= +Count=0 +EMail Message Line Count=0 +loNoDuplicateErrors=0 +loAppendReproduceText=0 +loDeleteLogAtVersionChange=0 +loAddComputerNameInLogFileName=0 +loSaveModulesSection=1 +loSaveCPUSection=1 +soAppStartDate=1 +soAppName=1 +soAppVersionNumber=1 +soAppParameters=1 +soAppCompilationDate=1 +soExcDate=1 +soExcAddress=1 +soExcModule=1 +soExcType=1 +soExcMessage=1 +soActCtlsFormClass=1 +soActCtlsFormText=1 +soActCtlsControlClass=1 +soActCtlsControlText=1 +soCmpName=1 +soCmpUser=1 +soCmpTotalMemory=1 +soCmpFreeMemory=1 +soCmpTotalDisk=1 +soCmpFreeDisk=1 +soCmpSysUpTime=1 +soCmpProcessor=1 +soCmpDisplayMode=1 +soOSType=1 +soOSBuildN=1 +soOSUpdate=1 +soOSLanguage=1 +soNetIP=1 +soNetSubmask=1 +soNetGateway=1 +soNetDNS1=1 +soNetDNS2=1 +soNetDHCP=1 +sndShowSendDialog=1 +sndShowSuccessFailureMsg=0 +sndSendEntireLog=0 +sndSendXMLLogCopy=0 +sndSendScreenshot=1 +sndUseOnlyActiveWindow=0 +sndSendLastHTMLPage=1 +sndSendInSeparatedThread=0 +sndAddDateInFileName=0 +sndCompressAllFiles=0 +edoShowExceptionDialog=1 +edoSendEmailChecked=1 +edoAttachScreenshotChecked=1 +edoShowCopyToClipOption=1 +edoShowDetailsButton=1 +edoShowInDetailedMode=0 +edoShowInTopMostMode=0 +edoUseEurekaLogLookAndFeel=0 +csoShowDLLs=1 +csoShowBPLs=1 +csoShowBorlandThreads=1 +csoShowWindowsThreads=1 +csoShowProcedureOffset=0 +boActivateCrashDetection=0 +boPauseBorlandThreads=0 +boDoNotPauseMainThread=0 +boPauseWindowsThreads=0 +boUseMainModuleOptions=1 +boCopyLogInCaseOfError=1 +boSaveCompressedCopyInCaseOfError=0 +Count mtInformationMsgCaption=1 +mtInformationMsgCaption0="Information." +Count mtQuestionMsgCaption=1 +mtQuestionMsgCaption0="Question." +Count mtDialog_Caption=1 +mtDialog_Caption0="Error." +Count mtDialog_ErrorMsgCaption=2 +mtDialog_ErrorMsgCaption0="An error has occurred during program execution." +mtDialog_ErrorMsgCaption1="Please read the following information for further details." +Count mtDialog_GeneralCaption=1 +mtDialog_GeneralCaption0="General" +Count mtDialog_GeneralHeader=1 +mtDialog_GeneralHeader0="General Information" +Count mtDialog_CallStackCaption=1 +mtDialog_CallStackCaption0="Call Stack" +Count mtDialog_CallStackHeader=1 +mtDialog_CallStackHeader0="Call Stack Information" +Count mtDialog_ModulesCaption=1 +mtDialog_ModulesCaption0="Modules" +Count mtDialog_ModulesHeader=1 +mtDialog_ModulesHeader0="Modules Information" +Count mtDialog_CPUCaption=1 +mtDialog_CPUCaption0="CPU" +Count mtDialog_CPUHeader=1 +mtDialog_CPUHeader0="CPU Information" +Count mtDialog_CustomDataCaption=1 +mtDialog_CustomDataCaption0="Other" +Count mtDialog_CustomDataHeader=1 +mtDialog_CustomDataHeader0="Other Information" +Count mtDialog_OKButtonCaption=1 +mtDialog_OKButtonCaption0="&OK" +Count mtDialog_TerminateButtonCaption=1 +mtDialog_TerminateButtonCaption0="&Terminate" +Count mtDialog_RestartButtonCaption=1 +mtDialog_RestartButtonCaption0="&Restart" +Count mtDialog_DetailsButtonCaption=1 +mtDialog_DetailsButtonCaption0="&Details" +Count mtDialog_SendMessage=1 +mtDialog_SendMessage0="&Send this error via Internet" +Count mtDialog_ScreenshotMessage=1 +mtDialog_ScreenshotMessage0="&Attach a Screenshot image" +Count mtDialog_CopyMessage=1 +mtDialog_CopyMessage0="&Copy to Clipboard" +Count mtDialog_SupportMessage=1 +mtDialog_SupportMessage0="Go to the Support Page" +Count mtLog_AppHeader=1 +mtLog_AppHeader0="Application" +Count mtLog_AppStartDate=1 +mtLog_AppStartDate0="Start Date" +Count mtLog_AppName=1 +mtLog_AppName0="Name/Description" +Count mtLog_AppVersionNumber=1 +mtLog_AppVersionNumber0="Version Number" +Count mtLog_AppParameters=1 +mtLog_AppParameters0="Parameters" +Count mtLog_AppCompilationDate=1 +mtLog_AppCompilationDate0="Compilation Date" +Count mtLog_ExcHeader=1 +mtLog_ExcHeader0="Exception" +Count mtLog_ExcDate=1 +mtLog_ExcDate0="Date" +Count mtLog_ExcAddress=1 +mtLog_ExcAddress0="Address" +Count mtLog_ExcModule=1 +mtLog_ExcModule0="Module" +Count mtLog_ExcType=1 +mtLog_ExcType0="Type" +Count mtLog_ExcMessage=1 +mtLog_ExcMessage0="Message" +Count mtLog_ActCtrlsHeader=1 +mtLog_ActCtrlsHeader0="Active Controls" +Count mtLog_ActCtrlsFormClass=1 +mtLog_ActCtrlsFormClass0="Form Class" +Count mtLog_ActCtrlsFormText=1 +mtLog_ActCtrlsFormText0="Form Text" +Count mtLog_ActCtrlsControlClass=1 +mtLog_ActCtrlsControlClass0="Control Class" +Count mtLog_ActCtrlsControlText=1 +mtLog_ActCtrlsControlText0="Control Text" +Count mtLog_CmpHeader=1 +mtLog_CmpHeader0="Computer" +Count mtLog_CmpName=1 +mtLog_CmpName0="Name" +Count mtLog_CmpUser=1 +mtLog_CmpUser0="User" +Count mtLog_CmpTotalMemory=1 +mtLog_CmpTotalMemory0="Total Memory" +Count mtLog_CmpFreeMemory=1 +mtLog_CmpFreeMemory0="Free Memory" +Count mtLog_CmpTotalDisk=1 +mtLog_CmpTotalDisk0="Total Disk" +Count mtLog_CmpFreeDisk=1 +mtLog_CmpFreeDisk0="Free Disk" +Count mtLog_CmpSystemUpTime=1 +mtLog_CmpSystemUpTime0="System Up Time" +Count mtLog_CmpProcessor=1 +mtLog_CmpProcessor0="Processor" +Count mtLog_CmpDisplayMode=1 +mtLog_CmpDisplayMode0="Display Mode" +Count mtLog_OSHeader=1 +mtLog_OSHeader0="Operating System" +Count mtLog_OSType=1 +mtLog_OSType0="Type" +Count mtLog_OSBuildN=1 +mtLog_OSBuildN0="Build #" +Count mtLog_OSUpdate=1 +mtLog_OSUpdate0="Update" +Count mtLog_OSLanguage=1 +mtLog_OSLanguage0="Language" +Count mtLog_NetHeader=1 +mtLog_NetHeader0="Network" +Count mtLog_NetIP=1 +mtLog_NetIP0="IP Address" +Count mtLog_NetSubmask=1 +mtLog_NetSubmask0="Submask" +Count mtLog_NetGateway=1 +mtLog_NetGateway0="Gateway" +Count mtLog_NetDNS1=1 +mtLog_NetDNS10="DNS 1" +Count mtLog_NetDNS2=1 +mtLog_NetDNS20="DNS 2" +Count mtLog_NetDHCP=1 +mtLog_NetDHCP0="DHCP" +Count mtLog_CustInfoHeader=1 +mtLog_CustInfoHeader0="Custom Information" +Count mtCallStack_Address=1 +mtCallStack_Address0="Address" +Count mtCallStack_Name=1 +mtCallStack_Name0="Module" +Count mtCallStack_Unit=1 +mtCallStack_Unit0="Unit" +Count mtCallStack_Class=1 +mtCallStack_Class0="Class" +Count mtCallStack_Procedure=1 +mtCallStack_Procedure0="Procedure/Method" +Count mtCallStack_Line=1 +mtCallStack_Line0="Line" +Count mtCallStack_MainThread=1 +mtCallStack_MainThread0="Main" +Count mtCallStack_ExceptionThread=1 +mtCallStack_ExceptionThread0="Exception Thread" +Count mtCallStack_RunningThread=1 +mtCallStack_RunningThread0="Running Thread" +Count mtCallStack_CallingThread=1 +mtCallStack_CallingThread0="Calling Thread" +Count mtCallStack_ThreadID=1 +mtCallStack_ThreadID0="ID" +Count mtCallStack_ThreadPriority=1 +mtCallStack_ThreadPriority0="Priority" +Count mtCallStack_ThreadClass=1 +mtCallStack_ThreadClass0="Class" +Count mtSendDialog_Caption=1 +mtSendDialog_Caption0="Send." +Count mtSendDialog_Message=1 +mtSendDialog_Message0="Message" +Count mtSendDialog_Resolving=1 +mtSendDialog_Resolving0="Resolving DNS..." +Count mtSendDialog_Connecting=1 +mtSendDialog_Connecting0="Connecting with server..." +Count mtSendDialog_Connected=1 +mtSendDialog_Connected0="Connected with server." +Count mtSendDialog_Sending=1 +mtSendDialog_Sending0="Sending message..." +Count mtReproduceDialog_Caption=1 +mtReproduceDialog_Caption0="Request" +Count mtReproduceDialog_Request=1 +mtReproduceDialog_Request0="Please describe the steps to reproduce the error:" +Count mtReproduceDialog_OKButtonCaption=1 +mtReproduceDialog_OKButtonCaption0="&OK" +Count mtModules_Handle=1 +mtModules_Handle0="Handle" +Count mtModules_Name=1 +mtModules_Name0="Name" +Count mtModules_Description=1 +mtModules_Description0="Description" +Count mtModules_Version=1 +mtModules_Version0="Version" +Count mtModules_Size=1 +mtModules_Size0="Size" +Count mtModules_LastModified=1 +mtModules_LastModified0="Modified" +Count mtModules_Path=1 +mtModules_Path0="Path" +Count mtCPU_Registers=1 +mtCPU_Registers0="Registers" +Count mtCPU_Stack=1 +mtCPU_Stack0="Stack" +Count mtCPU_MemoryDump=1 +mtCPU_MemoryDump0="Memory Dump" +Count mtSend_SuccessMsg=1 +mtSend_SuccessMsg0="The message was sent successfully." +Count mtSend_FailureMsg=1 +mtSend_FailureMsg0="Sorry, sending the message didn't work." + + diff --git a/Modulos/Presupuestos_/Cliente/Presupuestos.dpk b/Modulos/Presupuestos_/Cliente/Presupuestos.dpk new file mode 100644 index 0000000..6ebebed --- /dev/null +++ b/Modulos/Presupuestos_/Cliente/Presupuestos.dpk @@ -0,0 +1,86 @@ +package Presupuestos; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION OFF} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'Presupuestos de cliente'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + vcldb, + PluginSDK_D7R, + GUISDK_D7, + PngComponentsD7, + PNG_D7, + vclactnband, + vclx, + BaseD7, + Contactos, + JvCtrlsD7R, + dbrtl, + dsnap, + adortl, + cxLibraryVCLD7, + dxThemeD7, + cxEditorsVCLD7, + cxDataD7, + Usuarios, + vcljpg, + cxExtEditorsVCLD7, + dclact, + dclstd, + designide, + DocumentosAsociados, + frx7, + fs7, + tee, + fqb70, + bdertl, + frxe7, + tb2k_d7, + tbx_d7, + JvCoreD7R, + Jcl, + JclVcl, + JvSystemD7R, + JvPageCompsD7R, + JvStdCtrlsD7R; + +contains + uPluginControllerPresupuestos in 'uPluginControllerPresupuestos.pas' {ModulePresupuestos: TModuleController}, + uDataModulePresupuestos in 'uDataModulePresupuestos.pas' {dmPresupuestos: TDAClientDataModule}, + uEditorPresupuestos in 'uEditorPresupuestos.pas' {fEditorPresupuestos: TCustomEditor}, + uViewPresupuestos in 'uViewPresupuestos.pas' {frViewPresupuestos: TCustomView}, + schPresupuestosClient_Intf in '..\Reglas\schPresupuestosClient_Intf.pas', + uEditorPresupuesto in 'uEditorPresupuesto.pas' {fEditorPresupuesto: TCustomEditor}, + uViewPresupuesto in 'uViewPresupuesto.pas' {frViewPresupuesto: TFrame}, + uViewSituacionPresupuesto in 'uViewSituacionPresupuesto.pas' {frViewSituacionPresupuesto: TFrame}, + uViewDatosPresupuesto in 'uViewDatosPresupuesto.pas' {frViewDatosPresupuesto: TFrame}, + uViewDetallesPresupuesto in 'uViewDetallesPresupuesto.pas' {frViewDetallesPresupuesto: TFrame}, + uBizPresupuestosCliente in '..\Reglas\uBizPresupuestosCliente.pas', + schPresupuestosServer_Intf in '..\Reglas\schPresupuestosServer_Intf.pas', + uViewPresupuestoRelacionado in 'uViewPresupuestoRelacionado.pas' {frViewPresupuestoRelacionado: TFrame}, + uEditorPreviewPresupuesto in 'uEditorPreviewPresupuesto.pas' {fEditorPreviewPresupuesto: TCustomEditor}; + +end. diff --git a/Modulos/Presupuestos_/Cliente/Presupuestos.drc b/Modulos/Presupuestos_/Cliente/Presupuestos.drc new file mode 100644 index 0000000..a5d5271 --- /dev/null +++ b/Modulos/Presupuestos_/Cliente/Presupuestos.drc @@ -0,0 +1,14 @@ +/* VER150 + Generated by the Borland Delphi Pascal Compiler + because -GD or --drc was supplied to the compiler. + + This file contains compiler-generated resources that + were bound to the executable. + If this file is empty, then no compiler-generated + resources were bound to the produced executable. +*/ + +STRINGTABLE +BEGIN +END + diff --git a/Modulos/Presupuestos_/Cliente/Presupuestos.res b/Modulos/Presupuestos_/Cliente/Presupuestos.res new file mode 100644 index 0000000..ec5f233 Binary files /dev/null and b/Modulos/Presupuestos_/Cliente/Presupuestos.res differ diff --git a/Modulos/Presupuestos_/Cliente/uDataModulePresupuestos.ddp b/Modulos/Presupuestos_/Cliente/uDataModulePresupuestos.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Presupuestos_/Cliente/uDataModulePresupuestos.ddp differ diff --git a/Modulos/Presupuestos_/Cliente/uDataModulePresupuestos.dfm b/Modulos/Presupuestos_/Cliente/uDataModulePresupuestos.dfm new file mode 100644 index 0000000..9cd3823 --- /dev/null +++ b/Modulos/Presupuestos_/Cliente/uDataModulePresupuestos.dfm @@ -0,0 +1,681 @@ +object dmPresupuestos: TdmPresupuestos + OldCreateOrder = True + OnCreate = DAClientDataModuleCreate + RemoteService = RORemoteService + Adapter = DABinAdapter + SchemaCall.MethodName = 'GetSchemaAsXML' + SchemaCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtString + end> + Left = 628 + Top = 433 + Height = 326 + Width = 367 + object RORemoteService: TRORemoteService + ServiceName = 'srvPresupuestos' + Message = dmBase.ROMessage + Channel = dmBase.ROChannel + Left = 32 + Top = 16 + end + object DABinAdapter: TDABINAdapter + Left = 32 + Top = 80 + end + object tbl_DetallesPresupuestos: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'CODIGOPRESUPUESTO' + DataType = datInteger + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'C'#243'd. presupuesto' + Alignment = taLeftJustify + DictionaryEntry = 'CODIGOPRESUPUESTO' + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NUMCONCEPTO' + DataType = datInteger + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'Num. concepto' + Alignment = taLeftJustify + DictionaryEntry = 'NUMCONCEPTO' + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'DESCRIPCION' + DataType = datString + Size = 2000 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Descripci'#243'n' + Alignment = taLeftJustify + DictionaryEntry = 'DESCRIPCIONCONCEPTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CANTIDAD' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Cantidad' + Alignment = taLeftJustify + DictionaryEntry = 'CANTIDAD' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTEUNIDAD' + DataType = datCurrency + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Importe unitario' + Alignment = taLeftJustify + DictionaryEntry = 'IMPORTEUNIDAD' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTETOTAL' + DataType = datCurrency + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Importe total' + Alignment = taLeftJustify + DictionaryEntry = 'IMPORTETOTAL' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'TIPO' + DataType = datString + Size = 1 + Description = 'Cap'#237'tulo, etc' + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Tipo' + Alignment = taLeftJustify + DictionaryEntry = 'TIPODETALLESPRESUPUESTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'POSICION' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Posici'#243'n' + Alignment = taLeftJustify + DictionaryEntry = 'POSICIONCONCEPTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'VISIBLE' + DataType = datString + Size = 1 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Visible' + Alignment = taLeftJustify + DictionaryEntry = 'VISIBLE' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PUNTOS' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Puntos' + Alignment = taLeftJustify + DictionaryEntry = 'PUNTOS' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTEPUNTOS' + DataType = datCurrency + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Importe puntos' + Alignment = taLeftJustify + DictionaryEntry = 'IMPORTEPUNTOS' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + Params = < + item + Name = 'CODIGOPRESUPUESTO' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end> + MasterMappingMode = mmParams + MasterParamsMappings.Strings = ( + 'CODIGOPRESUPUESTO=CODIGO') + StreamingOptions = [soDisableEventsWhileStreaming] + SchemaCall.MethodName = 'GetDatasetSchema' + SchemaCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBinary + end + item + Name = 'aDatasetName' + ParamType = fIn + DataType = rtString + Value = 'DetallesPresupuestos' + end> + DataRequestCall.MethodName = 'GetDatasetDataEx' + DataRequestCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBinary + end + item + Name = 'DatasetName' + ParamType = fIn + DataType = rtString + Value = 'DetallesPresupuestos' + end + item + Name = 'Params' + ParamType = fIn + DataType = rtUserDefined + UserClassName = 'TDADatasetParamArray' + end + item + Name = 'UserFilter' + ParamType = fIn + DataType = rtString + Value = '' + end + item + Name = 'IncludeSchema' + ParamType = fIn + DataType = rtBoolean + Value = False + end + item + Name = 'MaxRecords' + ParamType = fIn + DataType = rtInteger + Value = -1 + end> + DataUpdateCall.MethodName = 'UpdateData' + DataUpdateCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBinary + end + item + Name = 'Delta' + ParamType = fIn + DataType = rtBinary + end> + ScriptCall.MethodName = 'GetDatasetScripts' + ScriptCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtString + Value = '' + end + item + Name = 'DatasetNames' + ParamType = fIn + DataType = rtString + Value = 'DetallesPresupuestos' + end> + ReadOnly = False + RemoteService = RORemoteService + Adapter = DABinAdapter + MasterSource = ds_Presupuestos + MasterFields = 'CODIGO' + DetailFields = 'CODIGOPRESUPUESTO' + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'DetallesPresupuestos' + IndexDefs = <> + Left = 176 + Top = 112 + end + object ds_DetallesPresupuestos: TDADataSource + DataTable = tbl_DetallesPresupuestos + Left = 296 + Top = 112 + end + object tbl_Presupuestos: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'CODIGOEMPRESA' + DataType = datInteger + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'C'#243'd. empresa' + Alignment = taLeftJustify + DictionaryEntry = 'CODIGOEMPRESA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGO' + DataType = datInteger + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'C'#243'd. presupuesto' + Alignment = taLeftJustify + DictionaryEntry = 'CODIGOPRESUPUESTO' + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHAALTA' + DataType = datDateTime + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'Fecha de alta' + Alignment = taLeftJustify + DictionaryEntry = 'FECHAALTA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'USUARIO' + DataType = datString + Size = 100 + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'Usuario de alta' + Alignment = taLeftJustify + DictionaryEntry = 'USUARIO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOCONTACTO' + DataType = datInteger + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'C'#243'd. contacto' + Alignment = taLeftJustify + DictionaryEntry = 'CODIGOCONTACTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NOMBRE' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + ServerAutoRefresh = True + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'REFERENCIA' + DataType = datString + Size = 20 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Referencia' + Alignment = taLeftJustify + DictionaryEntry = 'REFERENCIA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'TIPO' + DataType = datString + Size = 10 + Description = 'Cocina, ba'#241'o, etc' + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'Tipo' + Alignment = taLeftJustify + DictionaryEntry = 'TIPOPRESUPUESTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHAPRESUPUESTO' + DataType = datDateTime + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'Fecha' + Alignment = taLeftJustify + DictionaryEntry = 'FECHAPRESUPUESTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'VIGENCIAPRESUPUESTO' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Vigencia' + Alignment = taLeftJustify + DictionaryEntry = 'VIGENCIAPRESUPUESTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'SITUACION' + DataType = datString + Size = 30 + Description = 'Pendiente, aceptado o rechazado' + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'Situaci'#243'n' + Alignment = taLeftJustify + DictionaryEntry = 'SITUACIONPRESUPUESTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHADECISION' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Fecha decisi'#243'n' + Alignment = taLeftJustify + DictionaryEntry = 'FECHADECISION' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'BASEIMPONIBLE' + DataType = datCurrency + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Base imponible' + Alignment = taLeftJustify + DictionaryEntry = 'BASEIMPONIBLE' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'DESCUENTO' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Descuento' + Alignment = taLeftJustify + DictionaryEntry = 'DESCUENTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTEDESCUENTO' + DataType = datCurrency + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Importe dto.' + Alignment = taLeftJustify + DictionaryEntry = 'IMPORTEDESCUENTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IVA' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + DictionaryEntry = 'IVA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTEIVA' + DataType = datCurrency + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Importe IVA' + Alignment = taLeftJustify + DictionaryEntry = 'IMPORTEIVA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTETOTAL' + DataType = datCurrency + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Importe total' + Alignment = taLeftJustify + DictionaryEntry = 'IMPORTETOTAL' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'OBSERVACIONES' + DataType = datMemo + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Observaciones' + Alignment = taLeftJustify + DictionaryEntry = 'OBSERVACIONES' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PLAZOENTREGA' + DataType = datMemo + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Plazo de entrega' + Alignment = taLeftJustify + DictionaryEntry = 'PLAZOENTREGA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FORMAPAGO' + DataType = datMemo + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Forma de pago' + Alignment = taLeftJustify + DictionaryEntry = 'FORMAPAGO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOALBARAN' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + ServerAutoRefresh = True + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + Params = <> + MasterMappingMode = mmDataRequest + StreamingOptions = [soDisableEventsWhileStreaming] + SchemaCall.MethodName = 'GetDatasetSchema' + SchemaCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBinary + end + item + Name = 'aDatasetName' + ParamType = fIn + DataType = rtString + Value = 'Presupuestos' + end> + DataRequestCall.MethodName = 'GetDatasetDataEx' + DataRequestCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBinary + end + item + Name = 'DatasetName' + ParamType = fIn + DataType = rtString + Value = 'Presupuestos' + end + item + Name = 'Params' + ParamType = fIn + DataType = rtUserDefined + UserClassName = 'TDADatasetParamArray' + end + item + Name = 'UserFilter' + ParamType = fIn + DataType = rtString + Value = '' + end + item + Name = 'IncludeSchema' + ParamType = fIn + DataType = rtBoolean + Value = False + end + item + Name = 'MaxRecords' + ParamType = fIn + DataType = rtInteger + Value = -1 + end> + DataUpdateCall.MethodName = 'UpdateData' + DataUpdateCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBinary + end + item + Name = 'Delta' + ParamType = fIn + DataType = rtBinary + end> + ScriptCall.MethodName = 'GetDatasetScripts' + ScriptCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtString + Value = '' + end + item + Name = 'DatasetNames' + ParamType = fIn + DataType = rtString + Value = 'Presupuestos' + end> + ReadOnly = False + RemoteService = RORemoteService + Adapter = DABinAdapter + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'Presupuestos' + IndexDefs = <> + Left = 176 + Top = 40 + end + object ds_Presupuestos: TDADataSource + DataTable = tbl_Presupuestos + Left = 296 + Top = 40 + end +end diff --git a/Modulos/Presupuestos_/Cliente/uDataModulePresupuestos.pas b/Modulos/Presupuestos_/Cliente/uDataModulePresupuestos.pas new file mode 100644 index 0000000..30764f7 --- /dev/null +++ b/Modulos/Presupuestos_/Cliente/uDataModulePresupuestos.pas @@ -0,0 +1,289 @@ +unit uDataModulePresupuestos; + +interface + +uses {vcl:} SysUtils, Classes, DB, DBClient, + {RemObjects:} uDAClientDataModule, uDADataTable, uDABINAdapter, + uROServiceComponent, uRORemoteService, uROClient, uROBinMessage, + uROWinInetHttpChannel, uDAScriptingProvider, uDACDSDataTable, + uBizPresupuestosCliente, FactuGES_Intf, + + frxExportImage, frxExportPDF, frxDCtrl, + frxClass, frxDMPExport, frxGradient, frxChBox, frxCross, frxRich, + frxChart, frxOLE, frxBarcode; + +type + TdmPresupuestos = class(TDAClientDataModule) + RORemoteService: TRORemoteService; + DABinAdapter: TDABINAdapter; + tbl_DetallesPresupuestos: TDACDSDataTable; + ds_DetallesPresupuestos: TDADataSource; + tbl_Presupuestos: TDACDSDataTable; + ds_Presupuestos: TDADataSource; + procedure DAClientDataModuleCreate(Sender: TObject); + public + function DarNuevaReferencia (TipoPresupuesto : String) : String; + function PuedoEliminarPresupuesto (CodigoPresupuesto : Integer) : Boolean; + function GetReferencia (CodigoPresupuesto : Integer) : String; + function GetNextAutoinc : integer; + function GetPresupuestos: IBizPresupuestos; + function GetPresupuesto(CodigoPresupuesto : Integer) : IBizPresupuestos; + function GetPresupuestosSinAlbaran: IBizPresupuestos; + function GetPresupuestosSinMontaje: IBizPresupuestos; + function SetReferencia (APresupuesto: IBizPresupuestos; Referencia: Variant): Boolean; + procedure Preview(Const Codigo: Integer); + procedure Refrescar(lReport: TfrxReport; Const Codigo: Integer; const TamLetra: Integer); + procedure Print(Const Codigo: Integer); + function GetItemsSeleccionados(ASource : IBizPresupuestos): IBizPresupuestos; + end; + +var + dmPresupuestos: TdmPresupuestos; + +implementation + +{$R *.DFM} + +uses + Forms, Controls, uDataTableUtils, uBizContacto, Dialogs, Variants, + uDataModuleContactos, uDataModuleBase, schPresupuestosClient_Intf, + uDAInterfaces, uEditorPreview, uEditorPreviewPresupuesto, uROTypes, schPresupuestosServer_Intf, + uDBSelectionList; + +function TdmPresupuestos.GetPresupuestos: IBizPresupuestos; +var + dtPresupuestos: TDACDSDataTable; + dtDetalles: TDACDSDataTable; + ACursor: TCursor; +begin + ACursor := Screen.Cursor; + Screen.Cursor := crHourGlass; + try + dtPresupuestos := TDACDSDataTable.Create(NIL); + CloneDataTable(tbl_Presupuestos, dtPresupuestos); + with dtPresupuestos do + begin + BusinessRulesID := BIZ_PRESUPUESTOCLIENTE; + FieldByName(fld_PresupuestosDESCUENTO).BusinessRulesID := 'Client.Field.Descuento'; + FieldByName(fld_PresupuestosIVA).BusinessRulesID := 'Client.Field.IVA'; + end; + + dtDetalles := TDACDSDataTable.Create(NIL); + CloneDataTable(tbl_DetallesPresupuestos, dtDetalles); + with dtDetalles do + begin + BusinessRulesID := BIZ_DETALLESPRESUPUESTOCLIENTE; + DetailOptions := DetailOptions - [dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates]; + + FieldByName(fld_DetallesPresupuestosCANTIDAD).BusinessRulesID := 'Client.Field.Cantidad'; + FieldByName(fld_DetallesPresupuestosIMPORTEUNIDAD).BusinessRulesID := 'Client.Field.ImporteUnidad'; + FieldByName(fld_DetallesPresupuestosTIPO).BusinessRulesID := 'Client.Field.TipoDetalle'; + + FieldByName(fld_DetallesPresupuestosPUNTOS).BusinessRulesID := 'Client.Field.Puntos'; + FieldByName(fld_DetallesPresupuestosIMPORTEPUNTOS).BusinessRulesID := 'Client.Field.ImportePuntos'; + + FieldByName(fld_DetallesPresupuestosVISIBLE).BusinessRulesID := 'Client.Field.Visible'; + end; + (dtPresupuestos as IBizPresupuestos).Detalles := (dtDetalles as IBizDetallesPresupuesto); + + Result := (dtPresupuestos as IBizPresupuestos); + finally + Screen.Cursor := ACursor; + end; +end; + +procedure TdmPresupuestos.DAClientDataModuleCreate(Sender: TObject); +begin + RORemoteService.Channel := dmBase.Channel; + RORemoteService.Message := dmBase.Message; + Adapter := dmBase.Adapter; +end; + +function TdmPresupuestos.GetPresupuestosSinAlbaran: IBizPresupuestos; +var + dsPresupuestos : IBizPresupuestos; +begin + dsPresupuestos := GetPresupuestos; + with dsPresupuestos.DataTable.Where do + begin + if not Empty then + AddOperator(opAND); + Clear; + OpenBraket; + AddText('ALBARANPAGO.CODIGO is null', False); + CloseBraket; + AddOperator(opAND); + OpenBraket; + AddText('PRESUPUESTOS.' + fld_PresupuestosSITUACION + '=' + '''' + SITUACION_ACEPTADO + '''', False); + CloseBraket; + AddOperator(opAND); + OpenBraket; + AddText('PRESUPUESTOS.' + fld_PresupuestosREFERENCIA + ' is not NULL', False); + CloseBraket; + end; + Result := dsPresupuestos; +end; + +function TdmPresupuestos.GetNextAutoinc: integer; +begin + Result := (RORemoteService as IsrvPresupuestos).GetNextAutoinc; +end; + +procedure TdmPresupuestos.Preview(Const Codigo: Integer); +var + AStream: TROBinaryMemoryStream; + AEditorPreviewPresupuesto : TfEditorPreviewPresupuesto; +begin + AEditorPreviewPresupuesto := TfEditorPreviewPresupuesto.Create(Application); + try + AStream := (RORemoteService as IsrvPresupuestos).GenerateReport(Codigo, 0); + AEditorPreviewPresupuesto.Report.PreviewPages.LoadFromStream(AStream); + AEditorPreviewPresupuesto.Codigo := Codigo; + AEditorPreviewPresupuesto.ShowModal; + finally + AEditorPreviewPresupuesto.Release; + AStream.Free; + end; +end; + +function TdmPresupuestos.DarNuevaReferencia(TipoPresupuesto: String): String; +begin + Result := (RORemoteService as IsrvPresupuestos).DarNuevaReferencia(TipoPresupuesto); +end; + +function TdmPresupuestos.GetReferencia(CodigoPresupuesto: Integer): String; +var + APresupuesto : IBizPresupuestos; +begin + APresupuesto := GetPresupuesto(CodigoPresupuesto); + APresupuesto.DataTable.Active := True; + Result := APresupuesto.REFERENCIA; +end; + +function TdmPresupuestos.GetPresupuesto( + CodigoPresupuesto: Integer): IBizPresupuestos; +var + APresupuesto : IBizPresupuestos; +begin + APresupuesto := GetPresupuestos; + with APresupuesto.DataTable.Where do + AddText(fld_PresupuestosCODIGO + ' = ' + IntToStr(CodigoPresupuesto)); + Result := APresupuesto; +end; + +function TdmPresupuestos.PuedoEliminarPresupuesto( + CodigoPresupuesto: Integer): Boolean; +begin + Result := (RORemoteService as IsrvPresupuestos).PuedoEliminarPresupuesto(CodigoPresupuesto); +end; + +procedure TdmPresupuestos.Print(const Codigo: Integer); +var + AStream: TROBinaryMemoryStream; + AEditorPreview : TfEditorPreview; +begin + AEditorPreview := TfEditorPreview.Create(Application); + try + AStream := (RORemoteService as IsrvPresupuestos).GenerateReport(Codigo, 0); + AEditorPreview.Report.PreviewPages.LoadFromStream(AStream); + AEditorPreview.Print; + finally + AEditorPreview.Release; + AStream.Free; + end; +end; + +function TdmPresupuestos.GetPresupuestosSinMontaje: IBizPresupuestos; +var + dsPresupuestos : IBizPresupuestos; +begin + dsPresupuestos := GetPresupuestos; + with dsPresupuestos.DataTable.Where do + begin + if not Empty then + AddOperator(opAND); + Clear; + OpenBraket; + AddText('PRESUPUESTOS.' + fld_PresupuestosCODIGO + ' not in (select CODIGOPRESUPUESTO from MONTAJES where CODIGOEMPRESA = ' + IntToStr(dmBase.CodigoEmpresa) + ' and CODIGOPRESUPUESTO is not null)', False); + CloseBraket; + AddOperator(opAND); + OpenBraket; + AddText('PRESUPUESTOS.' + fld_PresupuestosSITUACION + '=' + '''' + SITUACION_ACEPTADO + '''', False); + CloseBraket; + + + { AddOperator(opAND); + OpenBraket; + AddText('PRESUPUESTOS.' + fld_PresupuestosREFERENCIA + ' is not NULL', False); + CloseBraket;} + end; + Result := dsPresupuestos; +end; + + +function TdmPresupuestos.GetItemsSeleccionados( + ASource: IBizPresupuestos): IBizPresupuestos; +var + aObj : ISelectedRowList; + dtPresupuesto : IBizPresupuestos; + i : integer; +begin + if Supports(ASource, ISelectedRowList, aObj) then + begin + if (aObj.SelectedRows.Count = 1) then + begin + ASource.DataTable.GotoBookmark(aObj.SelectedRows[0]); + Result := GetPresupuesto(ASource.CODIGO); + Exit; + end + else + dtPresupuesto := GetPresupuestos; + end + else + raise Exception.Create('Interface no soportada (GetItemsSeleccionados)'); + + if dtPresupuesto.DataTable.Active then + dtPresupuesto.DataTable.Active := False; + with dtPresupuesto.DataTable.Where do + begin + Clear; + for i := 0 to aObj.SelectedRows.Count - 1 do + begin + ASource.DataTable.GotoBookmark(aObj.SelectedRows[i]); + if i > 0 then + AddOperator(opAND); + AddText('PRESUPUESTOS.' + fld_PresupuestosCODIGO + ' = ' + IntToStr(ASource.CODIGO)); + end; + end; + Result := dtPresupuesto; +end; + +function TdmPresupuestos.SetReferencia(APresupuesto: IBizPresupuestos; Referencia: Variant): Boolean; +begin + Result:= False; + try + if not (APresupuesto.DataTable.State in dsEditModes) then + APresupuesto.DataTable.Edit; + APresupuesto.DataTable.FieldByName(fld_PresupuestosREFERENCIA).AsVariant := Referencia; + APresupuesto.Post; + Result:= True; + except + end; +end; + +procedure TdmPresupuestos.Refrescar(lReport: TfrxReport; Const Codigo: Integer; const TamLetra: Integer); +var + AStream: TROBinaryMemoryStream; +begin + AStream := (RORemoteService as IsrvPresupuestos).GenerateReport(Codigo, TamLetra); + lReport.PreviewPages.LoadFromStream(AStream); + lReport.ShowPreparedReport; +end; + +initialization + dmPresupuestos := TdmPresupuestos.Create(nil); + +finalization + FreeAndNil(dmPresupuestos); + +end. diff --git a/Modulos/Presupuestos_/Cliente/uEditorPresupuesto.ddp b/Modulos/Presupuestos_/Cliente/uEditorPresupuesto.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Presupuestos_/Cliente/uEditorPresupuesto.ddp differ diff --git a/Modulos/Presupuestos_/Cliente/uEditorPresupuesto.dfm b/Modulos/Presupuestos_/Cliente/uEditorPresupuesto.dfm new file mode 100644 index 0000000..5c69d0c --- /dev/null +++ b/Modulos/Presupuestos_/Cliente/uEditorPresupuesto.dfm @@ -0,0 +1,211 @@ +inherited fEditorPresupuesto: TfEditorPresupuesto + Left = 432 + Top = 180 + Width = 765 + Height = 680 + Caption = 'Nuevo presupuesto de cliente' + Constraints.MinWidth = 765 + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + Width = 757 + Caption = 'Nuevo presupuesto de cliente' + inherited Image1: TImage + Left = 730 + Picture.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001800 + 0000180806000000E0773DF80000000970485973000017120000171201679FD2 + 520000000467414D410000AA11B57D14DC000001CC4944415478DA63FCFFFF3F + 032D0123B2058B361EA79A6D71FE968C582D004A906CD8DFBFFF80F83F980601 + 0BDF6C868B7B66E1B6C0752FAA25BB9D8FE3341C59ED5A8B030CF356EF6198BF + 64237E0B4871B9C7016B0659651686F9DB8E30BC8BFEC6B070FD3EC21660F301 + BA18086CB53DC2E07DD88661CFCD1360FEEB882F0C4B361DA0CC07FFFF01C31A + 88FF005D0F62FFFE070CFF3FFFC0BEF9F3EF2FC38A2D8749F7013100E48B4741 + EF18D6EE38469C05306F9302EEFBBF61D8B0FB047116E04B39D80048CF4CD5CD + 0C9BF69D24DE025C4105B31C260F533B4D7913C3D603A768E783890A1B18761D + 3E433B1FF4C9AC63D87BFC1CED7CD02DB986E1C0A90BF82D88F63107E74E727C + D02EBE8AE1C8994BF82D88F03403E74E727CD024BC9CE1E485ABF82D08753361 + F03B66479605F5024B19CE5CBE8EDF8200172386E0130E780D0359BEE4CF5C38 + 3F8625196C410DEF6286F3D76EE2B7C0D7C1005EAE40CAF97FE0B2072C062CF3 + 73EFFB63C40F8C5FC9BD88E1D28D5BF82DF0B2D5C36938882E78148835F888B6 + C0CD5A1BA7E1A012B4E46930CEA023CA0247730DB061FFFE428AE5DF7F11C5F1 + BFFF508BFEFD437104322068819D891AB844A404E0B5A077F27C8A0C87019805 + 00F0E629EF34B079A30000000049454E44AE426082} + end + end + inherited TBXDock: TTBXDock + Width = 757 + inherited tbxMain: TTBXToolbar + inherited TBXItem2: TTBXItem + Visible = False + end + inherited TBXSeparatorItem1: TTBXSeparatorItem + Visible = False + end + inherited TBXItem5: TTBXItem + Visible = False + end + end + inherited tbxMenu: TTBXToolbar + inherited TBXSubmenuItem4: TTBXSubmenuItem + inherited TBXItem8: TTBXItem + Visible = False + end + inherited TBXSeparatorItem5: TTBXSeparatorItem + Visible = False + end + inherited TBXItem10: TTBXItem + Visible = False + end + end + end + end + inherited pgPaginas: TPageControl + Width = 757 + Height = 428 + ActivePage = pagPlanos + TabOrder = 1 + inherited pagGeneral: TTabSheet + inline frViewPresupuesto1: TfrViewPresupuesto + Left = 0 + Top = 0 + Width = 749 + Height = 400 + Align = alClient + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 0 + ReadOnly = False + inherited frViewPlazoEntrega1: TfrViewPlazoEntrega + Constraints.MinWidth = 0 + end + inherited frViewObservaciones1: TfrViewObservaciones + Constraints.MinWidth = 0 + end + inherited frViewFormaPago1: TfrViewFormaPago + Constraints.MinWidth = 0 + end + inherited frViewSituacionPresupuesto1: TfrViewSituacionPresupuesto + inherited Bevel2: TBevel + Width = 276 + end + end + inherited frViewClientePresupuesto1: TfrViewDatosYSeleccionContacto + inherited Bevel1: TBevel + Width = 313 + end + inherited ToolBar1: TToolBar + Width = 369 + end + inherited edtlNombre: TcxDBTextEdit + Properties.OnChange = frViewClientePresupuesto1edtlNombrePropertiesChange + end + end + end + end + object pagContenido: TTabSheet + Caption = 'Contenido' + ImageIndex = 1 + inline frViewDetallesPresupuesto1: TfrViewDetallesPresupuesto + Left = 0 + Top = 0 + Width = 749 + Height = 400 + Align = alClient + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 0 + ReadOnly = False + inherited cxGrid: TcxGrid + Width = 749 + Height = 375 + end + inherited ToolBar1: TToolBar + Width = 749 + inherited ToolButton4: TToolButton + Left = 323 + Wrap = False + end + inherited ToolButton5: TToolButton + Left = 331 + Top = 0 + end + inherited ToolButton6: TToolButton + Left = 436 + Top = 0 + end + end + end + end + object pagPlanos: TTabSheet + Caption = 'Planos' + ImageIndex = 2 + end + end + inherited StatusBar: TStatusBar + Top = 626 + Width = 757 + Height = 20 + end + inline frViewTotales1: TfrViewTotales [4] + Left = 0 + Top = 504 + Width = 757 + Height = 122 + Align = alBottom + Constraints.MaxHeight = 122 + Constraints.MinHeight = 122 + Constraints.MinWidth = 730 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 4 + ReadOnly = False + inherited TabControl1: TTabControl + Width = 757 + inherited GroupBox1: TGroupBox + inherited lblBase: TcxDBCurrencyEdit + Style.IsFontAssigned = True + end + inherited cxCurrencyEdit3: TcxDBCurrencyEdit + Style.IsFontAssigned = True + end + inherited cxCurrencyEdit4: TcxDBCurrencyEdit + Style.IsFontAssigned = True + end + inherited cxCurrencyEdit5: TcxDBCurrencyEdit + Style.IsFontAssigned = True + end + inherited cxCurrencyEdit1: TcxDBSpinEdit + Style.IsFontAssigned = True + end + inherited cxCurrencyEdit2: TcxDBSpinEdit + Style.IsFontAssigned = True + end + end + end + end + inherited EditorActionList: TActionList [5] + Top = 152 + end + inherited SmallImages: TPngImageList [7] + end + inherited JvFormStorage: TJvFormStorage [8] + end + inherited JvAppRegistryStorage: TJvAppRegistryStorage [9] + end + inherited dsDataTable: TDADataSource + Top = 152 + end +end diff --git a/Modulos/Presupuestos_/Cliente/uEditorPresupuesto.pas b/Modulos/Presupuestos_/Cliente/uEditorPresupuesto.pas new file mode 100644 index 0000000..3d3f12f --- /dev/null +++ b/Modulos/Presupuestos_/Cliente/uEditorPresupuesto.pas @@ -0,0 +1,197 @@ +unit uEditorPresupuesto; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uEditorItem, ImgList, PngImageList, StdActns, ActnList, TBX, + TB2Item, TB2Dock, TB2Toolbar, ComCtrls, JvExControls, JvComponent, + JvNavigationPane, uEditorDBItem, DB, uDADataTable, uBizPresupuestosCliente, + uViewPresupuesto, uCustomView, uViewBase, uViewTotales, uViewGrid, + uViewContenido, TBXDkPanels, ExtCtrls, uDAScriptingProvider, + uDACDSDataTable, uViewMensaje, JvAppStorage, JvAppRegistryStorage, + JvFormPlacement, uViewDetallesPresupuesto, pngimage, StdCtrls, Mask, + DBCtrls, uViewDetallesFamilias, uViewDocumentosAsociados, uBizDocumentosAsociados, + JvComponentBase; + +type + IEditorPresupuesto = interface(IEditorDBItem) + ['{E06BB9E1-A95D-4983-B08D-6E1719C48D91}'] + function GetPresupuesto: IBizPresupuestos; + procedure SetPresupuesto(const Value: IBizPresupuestos); + property Presupuesto: IBizPresupuestos read GetPresupuesto write SetPresupuesto; + end; + + TfEditorPresupuesto = class(TfEditorDBItem, IEditorPresupuesto) + pagContenido: TTabSheet; + pagPlanos: TTabSheet; + frViewDetallesPresupuesto1: TfrViewDetallesPresupuesto; + frViewTotales1: TfrViewTotales; + frViewPresupuesto1: TfrViewPresupuesto; + procedure FormShow(Sender: TObject); + procedure actEliminarExecute(Sender: TObject); + procedure frViewClientePresupuesto1edtlNombrePropertiesChange( + Sender: TObject); + private + FPresupuesto : IBizPresupuestos; + FViewPresupuesto : IViewPresupuesto; + FViewDocumentosPresupuesto : IViewDocumentosAsociados; + protected + function GetPresupuesto: IBizPresupuestos; + procedure SetPresupuesto(const Value: IBizPresupuestos); + + function GetViewPresupuesto: IViewPresupuesto; + procedure SetViewPresupuesto(const Value: IViewPresupuesto); + property ViewPresupuesto: IViewPresupuesto read GetViewPresupuesto write + SetViewPresupuesto; + + //DOCUMENTOS ASOCIADOS +{ function GetViewDocumentosPresupuesto: IViewDocumentosAsociados; + procedure SetViewDocumentosPresupuesto(const Value: IViewDocumentosAsociados); + property ViewDocumentosPresupuesto: IViewDocumentosAsociados read GetViewDocumentosPresupuesto write + SetViewDocumentosPresupuesto; +} + public + property Presupuesto: IBizPresupuestos read GetPresupuesto write SetPresupuesto; + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + end; + +implementation + +{$R *.dfm} + +uses + uEditorUtils; + +function ShowEditorPresupuesto (ABizObject : TDADataTableRules) : TModalResult; +var + AEditor: TfEditorPresupuesto; +begin + AEditor := TfEditorPresupuesto.Create(Application); + try + AEditor.Presupuesto := (ABizObject as IBizPresupuestos); + Result := AEditor.ShowModal; + finally + AEditor.Release; + end; +end; + +{ TfEditorPresupuesto } + +function TfEditorPresupuesto.GetPresupuesto: IBizPresupuestos; +begin + Result := FPresupuesto; +end; + +function TfEditorPresupuesto.GetViewPresupuesto: IViewPresupuesto; +begin + Result := FViewPresupuesto; +end; + +procedure TfEditorPresupuesto.SetPresupuesto(const Value: IBizPresupuestos); +begin + FPresupuesto := Value; + + if Assigned(FPresupuesto) then + begin + dsDataTable.DataTable := FPresupuesto.DataTable; + frViewTotales1.DADataSource.DataTable := FPresupuesto.DataTable; + frViewDetallesPresupuesto1.DADataSource.DataTable := FPresupuesto.Detalles.DataTable; + + if Assigned(FViewPresupuesto) then + FViewPresupuesto.Presupuesto := Presupuesto; + + //DOCUMENTOS ASOCIADOS +{ if Assigned(FViewDocumentosPresupuesto) then + begin + FViewDocumentosPresupuesto.GestorDocumentos := (Presupuesto as IBizDocumentosAsociados).GestorDocumentos; + FViewDocumentosPresupuesto.GestorDocumentos.ModoInsert := (Presupuesto.DataTable.State = dsInsert); + end;} + end; +end; + +procedure TfEditorPresupuesto.SetViewPresupuesto( + const Value: IViewPresupuesto); +begin + FViewPresupuesto := Value; + + if Assigned(FViewPresupuesto) and Assigned(Presupuesto) then + FViewPresupuesto.Presupuesto := Presupuesto; +end; + +procedure TfEditorPresupuesto.FormShow(Sender: TObject); +begin + inherited; + + if not Assigned(FViewPresupuesto) then + raise Exception.Create('No hay ninguna vista asignada'); + + if not Assigned(Presupuesto) then + raise Exception.Create('No hay ningún presupuesto asignado'); + + Presupuesto.DataTable.Active := True; +// FViewPresupuesto.ShowEmbedded(pagGeneral); +// FViewPresupuesto.SetFocus; +end; + +constructor TfEditorPresupuesto.Create(AOwner: TComponent); +begin + inherited; +// ViewPresupuesto := CreateView(TfrViewPresupuesto) as IViewPresupuesto; + pgPaginas.ActivePageIndex := 0; + ViewPresupuesto := frViewPresupuesto1; + + //DOCUMENTOS ASOCIADOS +// ViewDocumentosPresupuesto := frViewDocumentosAsociados; +end; + +destructor TfEditorPresupuesto.Destroy; +begin + FViewPresupuesto := NIL; + FPresupuesto := NIL; + + //DOCUMENTOS ASOCIADOS +// FViewDocumentosPresupuesto := NIL; + + inherited; +end; + +procedure TfEditorPresupuesto.actEliminarExecute(Sender: TObject); +begin + if (Application.MessageBox('¿Desea borrar este presupuesto?', 'Atención', MB_YESNO) = IDYES) then + inherited; +end; + +procedure TfEditorPresupuesto.frViewClientePresupuesto1edtlNombrePropertiesChange( + Sender: TObject); +begin + inherited; + if Length(frViewPresupuesto1.frViewClientePresupuesto1.edtlNombre.Text) = 0 then + JvNavPanelHeader.Caption := 'Nuevo presupuesto de cliente' + else + JvNavPanelHeader.Caption := 'Presupuesto de ' + + frViewPresupuesto1.frViewClientePresupuesto1.edtlNombre.Text + + ' (' + FPresupuesto.SITUACION + ')'; + Caption := JvNavPanelHeader.Caption; +end; + +{function TfEditorPresupuesto.GetViewDocumentosPresupuesto: IViewDocumentosAsociados; +begin + Result := FViewDocumentosPresupuesto; +end; + +procedure TfEditorPresupuesto.SetViewDocumentosPresupuesto(const Value: IViewDocumentosAsociados); +begin + FViewDocumentosPresupuesto := Value; + + if Assigned(FViewDocumentosPresupuesto) and Assigned(Presupuesto) then + FViewDocumentosPresupuesto.GestorDocumentos := (Presupuesto as IBizDocumentosASociados).GestorDocumentos; +end;} + +initialization + RegisterEditor(IBizPresupuestos, ShowEditorPresupuesto, etItem); + +finalization + +end. diff --git a/Modulos/Presupuestos_/Cliente/uEditorPresupuestos.ddp b/Modulos/Presupuestos_/Cliente/uEditorPresupuestos.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Presupuestos_/Cliente/uEditorPresupuestos.ddp differ diff --git a/Modulos/Presupuestos_/Cliente/uEditorPresupuestos.dfm b/Modulos/Presupuestos_/Cliente/uEditorPresupuestos.dfm new file mode 100644 index 0000000..966ae64 --- /dev/null +++ b/Modulos/Presupuestos_/Cliente/uEditorPresupuestos.dfm @@ -0,0 +1,1378 @@ +inherited fEditorPresupuestos: TfEditorPresupuestos + Left = 342 + Top = 275 + Caption = 'Lista de presupuestos' + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + Caption = 'Lista de presupuestos' + inherited Image1: TImage + Picture.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001800 + 0000180806000000E0773DF80000000970485973000017120000171201679FD2 + 520000000467414D410000AA11B57D14DC000001CC4944415478DA63FCFFFF3F + 032D0123B2058B361EA79A6D71FE968C582D004A906CD8DFBFFF80F83F980601 + 0BDF6C868B7B66E1B6C0752FAA25BB9D8FE3341C59ED5A8B030CF356EF6198BF + 64237E0B4871B9C7016B0659651686F9DB8E30BC8BFEC6B070FD3EC21660F301 + BA18086CB53DC2E07DD88661CFCD1360FEEB882F0C4B361DA0CC07FFFF01C31A + 88FF005D0F62FFFE070CFF3FFFC0BEF9F3EF2FC38A2D8749F7013100E48B4741 + EF18D6EE38469C05306F9302EEFBBF61D8B0FB047116E04B39D80048CF4CD5CD + 0C9BF69D24DE025C4105B31C260F533B4D7913C3D603A768E783890A1B18761D + 3E433B1FF4C9AC63D87BFC1CED7CD02DB986E1C0A90BF82D88F63107E74E727C + D02EBE8AE1C8994BF82D88F03403E74E727CD024BC9CE1E485ABF82D08753361 + F03B66479605F5024B19CE5CBE8EDF8200172386E0130E780D0359BEE4CF5C38 + 3F8625196C410DEF6286F3D76EE2B7C0D7C1005EAE40CAF97FE0B2072C062CF3 + 73EFFB63C40F8C5FC9BD88E1D28D5BF82DF0B2D5C36938882E78148835F888B6 + C0CD5A1BA7E1A012B4E46930CEA023CA0247730DB061FFFE428AE5DF7F11C5F1 + BFFF508BFEFD437104322068819D891AB844A404E0B5A077F27C8A0C87019805 + 00F0E629EF34B079A30000000049454E44AE426082} + end + end + inherited TBXDock: TTBXDock + inherited tbxFiltro: TTBXToolbar + Left = 459 + end + end + inline frViewBarraSeleccion: TfrViewBarraSeleccion [3] + Left = 0 + Top = 395 + Width = 707 + Height = 37 + Align = alBottom + AutoScroll = False + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 3 + Visible = False + ReadOnly = False + inherited pnlSeleccion: TPanel + Top = 0 + Width = 707 + inherited bSeleccionar: TButton + Left = 550 + end + inherited bCancelar: TButton + Left = 629 + end + end + inherited ActionListSeleccion: TActionList + inherited actSeleccionar: TAction + OnExecute = frViewBarraSeleccionactSeleccionarExecute + OnUpdate = frViewBarraSeleccionactSeleccionarUpdate + end + end + end + inherited EditorActionList: TActionList [4] + inherited actNuevo: TAction + ImageIndex = 21 + OnExecute = actNuevoExecute + end + end + inherited SmallImages: TPngImageList [5] + 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 + 610000000970485973000017120000171201679FD252000001774944415478DA + 63FCFFFF3FC384055BFF3390010A12BC1919610600394469FAF3F71FC3EF3F7F + 192CBCB3192EEE99856A80C35E4B14C5079C8F836964F1ED368718662EDFC530 + 7FC9464C03F0815FBFFF826D06D10BD7EDC36E00BA0BB0815586BB18966D3A84 + DB0098B341E01F50EECF9F7F709B034F3B312CD3DDC1B06ADB11FC06C05CB2CB + EE0883DB211BB8CD61E7DD18166A6E6558BFEB387E03D06DFEFDE70F981F75D9 + 8361AEEA2686CDFB4EE136609FD33106A77D56605BD79BEE033B1B044036C75F + F76698AEB88161E7A133B80D00391BDDE69FBFFE30FC028AA5DFF567E8975CCD + 70F0D4454C0372623D195C0E58A384F862ED6D0CB157BDC0EC2972EB18721E05 + 317489AE643876EE32A601E9916E605BFEFCFE07B639E2A23BC37CF52D60B1DF + BF21B8F0792843ABE03286D397AE611A9018EA0CD70CF202CC6674D0C0BB98E1 + C2B59B9806C40638C23583FC8D6CF36F688C80F0BF7FFF192EDDB8856940848F + 2DC38A2D8789CE89180680044805200300115980F04CC063740000000049454E + 44AE426082} + Name = 'PngImage21' + Background = clWindow + end> + Bitmap = {} + end + inherited LargeImages: TPngImageList [6] + 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 + F80000000970485973000017120000171201679FD252000001CC4944415478DA + 63FCFFFF3F032D0123B2058B361EA79A6D71FE968C582D004A906CD8DFBFFF80 + F83F9806010BDF6C868B7B66E1B6C0752FAA25BB9D8FE3341C59ED5A8B030CF3 + 56EF6198BF64237E0B4871B9C7016B0659651686F9DB8E30BC8BFEC6B070FD3E + C21660F301BA18086CB53DC2E07DD88661CFCD1360FEEB882F0C4B361DA0CC07 + FFFF01C31A88FF005D0F62FFFE070CFF3FFFC0BEF9F3EF2FC38A2D8749F70131 + 00E48B4741EF18D6EE38469C05306F9302EEFBBF61D8B0FB047116E04B39D800 + 48CF4CD5CD0C9BF69D24DE025C4105B31C260F533B4D7913C3D603A768E78389 + 0A1B18761D3E433B1FF4C9AC63D87BFC1CED7CD02DB986E1C0A90BF82D88F631 + 07E74E727CD02EBE8AE1C8994BF82D88F03403E74E727CD024BC9CE1E485ABF8 + 2D08753361F03B66479605F5024B19CE5CBE8EDF8200172386E0130E780D0359 + BEE4CF5C383F8625196C410DEF6286F3D76EE2B7C0D7C1005EAE40CAF97FE0B2 + 072C062CF373EFFB63C40F8C5FC9BD88E1D28D5BF82DF0B2D5C36938882E7814 + 8835F888B6C0CD5A1BA7E1A012B4E46930CEA023CA0247730DB061FFFE428AE5 + DF7F11C5F1BFFF508BFEFD437104322068819D891AB844A404E0B5A077F27C8A + 0C8701980500F0E629EF34B079A30000000049454E44AE426082} + Name = 'PngImage21' + Background = clWindow + end> + Bitmap = {} + end + inherited JvFormStorage: TJvFormStorage [7] + end + inherited JvAppRegistryStorage: TJvAppRegistryStorage [8] + end + inherited dsDataTable: TDADataSource [9] + end +end diff --git a/Modulos/Presupuestos_/Cliente/uEditorPresupuestos.pas b/Modulos/Presupuestos_/Cliente/uEditorPresupuestos.pas new file mode 100644 index 0000000..52fb1c0 --- /dev/null +++ b/Modulos/Presupuestos_/Cliente/uEditorPresupuestos.pas @@ -0,0 +1,205 @@ +unit uEditorPresupuestos; + +interface + +uses + Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, + uCustomEditor, uEditorGrid, uBizPresupuestosCliente, ImgList, + PngImageList, StdActns, ActnList, TB2ExtItems, TBXExtItems, TBX, TB2Item, + TB2Dock, TB2Toolbar, JvExControls, JvComponent, JvNavigationPane, + uViewPresupuestos, Menus, DB, uDADataTable, ComCtrls, uViewGrid, + uDAScriptingProvider, uDACDSDataTable, JvAppStorage, + JvAppRegistryStorage, JvFormPlacement, pngimage, ExtCtrls, uCustomView, + uViewBase, uViewBarraSeleccion, JvComponentBase; + +type + IEditorPresupuestos = interface(IEditorGrid) + ['{7E6689A4-BEE7-4B36-80D8-411FA1B344F7}'] + function GetPresupuestos: IBizPresupuestos; + procedure SetPresupuestos(const Value: IBizPresupuestos); + property Presupuestos: IBizPresupuestos read GetPresupuestos write + SetPresupuestos; + end; + + TfEditorPresupuestos = class(TfEditorGrid, IEditorPresupuestos) + frViewBarraSeleccion: TfrViewBarraSeleccion; + procedure actEliminarExecute(Sender: TObject); + procedure actModificarExecute(Sender: TObject); + procedure actNuevoExecute(Sender: TObject); + procedure frViewBarraSeleccionactSeleccionarExecute(Sender: TObject); + procedure frViewBarraSeleccionbCancelarClick(Sender: TObject); + procedure actDuplicarExecute(Sender: TObject); + procedure frViewBarraSeleccionactSeleccionarUpdate(Sender: TObject); + private + FPresupuestos: IBizPresupuestos; + protected + function GetPresupuestos: IBizPresupuestos; + function GetSelectionBarVisible: Boolean; + procedure SetPresupuestos(const Value: IBizPresupuestos); + procedure SetSelectionBarVisible(const Value: Boolean); + procedure SetViewGrid(const Value: IViewGrid); override; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + property Presupuestos: IBizPresupuestos read GetPresupuestos write + SetPresupuestos; + property SelectionBarVisible: Boolean read GetSelectionBarVisible write + SetSelectionBarVisible; + end; + +var + fEditorPresupuestos : TfEditorPresupuestos; + +implementation + +uses uDataModulePresupuestos, uEditorUtils, uEditorBase; + +{$R *.DFM} + +function ShowEditorPresupuestos (ABizObject : TDADataTableRules) : TModalResult; +var + AEditor: TfEditorPresupuestos; +begin + AEditor := TfEditorPresupuestos.Create(Application); + try + AEditor.Presupuestos := (ABizObject as IBizPresupuestos); + Result := AEditor.ShowModal; + finally + AEditor.Release; + end; +end; + +function ShowSelectEditorPresupuestos (ABizObject : TDADataTableRules) : TModalResult; +var + AEditor: TfEditorPresupuestos; +begin + AEditor := TfEditorPresupuestos.Create(Application); + try + AEditor.Presupuestos := (ABizObject as IBizPresupuestos); + AEditor.SelectionBarVisible := True; + Result := AEditor.ShowModal; + finally + AEditor.Release; + end; +end; + +{ TfEditorPresupuestos } + +{ +***************************** TfEditorPresupuestos ***************************** +} +constructor TfEditorPresupuestos.Create(AOwner: TComponent); +begin + inherited; + ViewGrid := CreateView(TfrViewPresupuestos) as IViewPresupuestos; +end; + +destructor TfEditorPresupuestos.Destroy; +begin + FPresupuestos := NIL; + inherited; +end; + +procedure TfEditorPresupuestos.actEliminarExecute(Sender: TObject); +begin + if (Application.MessageBox('¿Desea borrar este presupuesto?', 'Atención', MB_YESNO) = IDYES) then + begin + inherited; + ViewGrid.RefreshGrid; + end; +end; + +procedure TfEditorPresupuestos.actModificarExecute(Sender: TObject); +begin + inherited; + Presupuestos.Show; + ViewGrid.RefreshGrid; + ViewGrid.SyncFocusedRecordsFromDataSet; +end; + +procedure TfEditorPresupuestos.actNuevoExecute(Sender: TObject); +begin + inherited; + Presupuestos.Insert; + Presupuestos.Show; + ViewGrid.RefreshGrid; + ViewGrid.SyncFocusedRecordsFromDataSet; +end; + +procedure TfEditorPresupuestos.frViewBarraSeleccionactSeleccionarExecute( + Sender: TObject); +begin + inherited; + if (Presupuestos.DataTable.RecordCount > 0) then + begin + ViewGrid.SyncFocusedRecordsFromGrid; + ModalResult := mrOK; + end; +end; + +procedure TfEditorPresupuestos.frViewBarraSeleccionbCancelarClick(Sender: + TObject); +begin + inherited; + frViewBarraSeleccion.actCancelarExecute(Sender); +end; + +function TfEditorPresupuestos.GetPresupuestos: IBizPresupuestos; +begin + Result := FPresupuestos; +end; + +function TfEditorPresupuestos.GetSelectionBarVisible: Boolean; +begin + Result := frViewBarraSeleccion.Visible +end; + +procedure TfEditorPresupuestos.SetPresupuestos(const Value: IBizPresupuestos); +begin + FPresupuestos := Value; + dsDataTable.DataTable := FPresupuestos.DataTable; + if Assigned(ViewGrid) then + (ViewGrid as IViewPresupuestos).Presupuestos := Presupuestos; +end; + +procedure TfEditorPresupuestos.SetSelectionBarVisible(const Value: Boolean); +begin + frViewBarraSeleccion.Visible := True; + ViewGrid.OnDblClick := frViewBarraSeleccion.actSeleccionar.OnExecute; +end; + +procedure TfEditorPresupuestos.SetViewGrid(const Value: IViewGrid); +begin + inherited; + if Assigned(ViewGrid) and Assigned(Presupuestos) then + (ViewGrid as IViewPresupuestos).Presupuestos := Presupuestos; +end; + +procedure TfEditorPresupuestos.actDuplicarExecute(Sender: TObject); +var + APresupuesto : IBizPresupuestos; +begin + inherited; + APresupuesto := dmPresupuestos.GetPresupuesto(Presupuestos.CODIGO); + Presupuestos.Insert; + Presupuestos.CopyFrom(APresupuesto); + Presupuestos.DataTable.ApplyUpdates; + ViewGrid.RefreshGrid; + ViewGrid.GotoFirst; +end; + +procedure TfEditorPresupuestos.frViewBarraSeleccionactSeleccionarUpdate( + Sender: TObject); +begin + inherited; + (Sender as TAction).Enabled := (Presupuestos.DataTable.RecordCount > 0); +end; + +initialization + RegisterEditor(IBizPresupuestos, ShowEditorPresupuestos, etItems); + RegisterEditor(IBizPresupuestos, ShowSelectEditorPresupuestos, etSelectItems); + +finalization + +end. + diff --git a/Modulos/Presupuestos_/Cliente/uEditorPreviewPresupuesto.ddp b/Modulos/Presupuestos_/Cliente/uEditorPreviewPresupuesto.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Presupuestos_/Cliente/uEditorPreviewPresupuesto.ddp differ diff --git a/Modulos/Presupuestos_/Cliente/uEditorPreviewPresupuesto.dfm b/Modulos/Presupuestos_/Cliente/uEditorPreviewPresupuesto.dfm new file mode 100644 index 0000000..dc09f54 --- /dev/null +++ b/Modulos/Presupuestos_/Cliente/uEditorPreviewPresupuesto.dfm @@ -0,0 +1,440 @@ +inherited fEditorPreviewPresupuesto: TfEditorPreviewPresupuesto + OnCreate = CustomEditorCreate + PixelsPerInch = 96 + TextHeight = 13 + inherited TBXDock: TTBXDock + inherited TBXToolbar1: TTBXToolbar + object TBXItem38: TTBXItem + Action = actAumentarTamLetra + Images = PreviewSmallImageList + end + object TBXItem43: TTBXItem + Action = actDisminuirTamLetra + Images = PreviewSmallImageList + end + end + end + inherited PreviewActionList: TActionList + object actAumentarTamLetra: TAction + Category = 'Tools' + ImageIndex = 11 + OnExecute = actAumentarTamLetraExecute + end + object actDisminuirTamLetra: TAction + Category = 'Tools' + ImageIndex = 12 + OnExecute = actDisminuirTamLetraExecute + end + end + inherited PreviewSmallImageList: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000000F14944415478DA + C5D2A10EC2301006E01B4F30893C39C59619EC70937B843D014C829B0339DEA0 + 1289638EC9C9E1160C9553A43882A0B45DC80223A30112CE346DFA7F697A6770 + CEE19B327E0A8C663BB5A14506348D8CE7CBDEB4E0DBB96D7402518010C5A405 + C8B0840F9B493710FA08F1E21190E1D0B7C5F9F23D10780849D200F7705102AC + D73A8023005203F73065A08022D3003C0B81AC08A0E3810C33115600156BAE01 + 3888E2A9F50BDC71CE07EE105875025A01B09268007D01A4CD1F48E4DAB3809D + 657F35001440963E764122C78BA50798268ACF6ACF8142F6F97B400E8B9AC617 + 93887EC23B814FEAFFC00D0E3CD3E1153EE1F30000000049454E44AE426082} + Name = 'PngImage1' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000000A34944415478DA + 63FCFFFF3F032580912606303232628839545CF8BFBF5D9F912C03409A1F5C38 + C0707F7B3EE90680342778E83334744C24DD0098E60B371818366C20D10098E6 + 071F18C0065C384082018E9517C19A3F0035830D7800A44F90E802A3BC13FFF5 + 8CCC193EBCF8C8F0E00503C3871B0B480F039021FF9834183EFC00721E906100 + CC9077BF34C837006EC8AD13E41B00020A1E13FE136D002960E00D000045F48A + E13771044B0000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000000A44944415478DA + 63FCFFFF3F03258091260638565EFC7FA0C380115D1C9B5A9C067CFAF683E1DC + 240B46B20D48F0D06798B4EE248A21241BF0E10703C3A26D0843483220C0419F + E1C10706860F407CE91AC410920C70B0506078F0829FE1C2838F0C1F1E3C009A + 7480E1FEF67C46A20D30D0506038708301AEF9C18E02D25C202020C070E1C207 + B86692C3800118800F6E2034936CC0830BA89A493680A294480A18780300CF22 + A8E18A4EF6A30000000049454E44AE426082} + Name = 'PngImage3' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000000EC4944415478DA + C5D2A10EC2301405D0DB2FA012F9246E95C8E290FB04FE8049703890842F5850 + 2882021CB5185210044725B220086E74908D40C252020937A97BF7A479792C49 + 127C13F673A0D65E27AA27D8EBA06CE97C70D10D5821703A5FB01A54D92B1085 + 84A813633F6B16038D7A80C178F984A440A34EE8F43C017B0186D3079202A124 + F4FB1E402803180B58F736DB3B72038403620F405609E65082364758639CA440 + 42425608F1C803106E50ED9097CD3CBAFD40106132F10038E7D0DAE6E56C07A2 + EC80B90700B740B37B9433801CA07C00A39FCB19C039412B0FE0DD25A6709A42 + E0D3FC1FB8020318D0E1923D9C4B0000000049454E44AE426082} + Name = 'PngImage2' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD2520000017E4944415478DA + 630C9B1C9ACFC0C03081813C50C00834E07F7E400E51AAFFFEFBC3F0EBDF7786 + 9F7F2138C9268F01C58073FBBF113444C9EA0B58F38469B3192E2DBB8C69404E + AC07568DBFFE303058F86431D44EB264F8053460DACC25B80DA89FBC1FC38092 + 144706FBC02C86F27E03B00BE6CE594B9C0B4036FFFC0DA15D43B31872BB95C0 + 062C5FB09B341764C4383278476631A4754882BDB076F111FC2E40B619860363 + B318125A05187E026362CBD2B3A4B92036D491212C218B21B2999DE1C7DF6F0C + 7B565CC76E4072B807D8E6BFFF1036FFFE0BA16352B218021BFE82C3E0F0EA07 + 080372FC3218FEFEFFCD70E5D07F8698200F86FE79982E08F4756448CAC862F0 + AA05A5836F0CA7D6BD421890E6130F36F5DE311E86303F0F145B616C1048C9CC + 6270AE7A05567B71E3678401F19E6160C1A7274519E62DDD843725DA943F04BB + E0C696BF080322DC7CC151034BE390F4FE0DCA47D07FFEFF01D37F81F4EDAD8C + 0803829C5DC04993540033207F57D36EB2B2B35B9D6B0100103839527F8C36D7 + 0000000049454E44AE426082} + Name = 'PngImage5' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001714944415478DA + 630C9B1C9ACFC0C03081813C50C00834E07F7E400E51AAFFFEFBC3F0EBDF7786 + 9F7F2138C9268F016EC099973B18F253E4198E6ED6C4A9D9CEFF36C3C4390F19 + 64793519264C9BCD7069D9658801D6962A60CDC40290216B171F411880CF05BF + A0CE05D17E619FC09A05D8C519E6CE598B6AC0B9FDDF8876018BEE6986E50B76 + 631A9013EB8153D3AF3F0C0C3F7F3330D807663124B40A607A016640FDE4FD58 + 0D2849716458B86607C3BCA59B18229BD919B62C3D4B9C0B603683E8E51B2006 + 0436FC65D8B3E23A692EC888716458BB05628057ED1786C3AB1F200CC8F1CB60 + B878F0178A0B906D86E1CD3B20063857BD6238B5EE15C280349F7886EB8799F1 + BA2036D49161C76E880136E50F192E6EFC8C3020DE338CE1DE311EB001D86CFE + FD1742EFDB0F31C0B4E43AC38D2D7F110644B8F9323C3D29CA901CEE81A219A6 + 11C63E7604628051F16586DB5B1911060439BB304C9BB984E88404033003F277 + 35ED262B3BBBD5B9160000C8E01B524AB937870000000049454E44AE426082} + Name = 'PngImage4' + 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 = 'PngImage6' + 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 = 'PngImage7' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000000E14944415478DA + 63FCFFFF3F032580717019C0C8C8086787B4DDF8FFEBD76F869F3F7F33EC6C37 + 824BA05B88D300BF86CBFFA3A35419A6CFB8C870A0CF9C7403DC2BCFFD8F88D4 + 66983DEB34C3B12936C41910DA7E13EE6C100E0D37609837E7180358EC0708FF + 6278B0218011A701FE8D57C0CEFEF68391E1DB770630FD1D88BF7C07E26F8C0C + 6B17AE6178B1230CB7011E55E7FF836C86B9C23FC48661C9BC5D609B7F40F187 + 0331B80D400E03DDF85DFF3D039D1856CEDFCCF0706320E981A816BEF5BF8BBF + 07D8D92F7786936E80BCFFFAFF30677F3C184B9C01E480616000007F3BB6E1E0 + 0AF3B40000000049454E44AE426082} + Name = 'PngImage8' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000000714944415478DA + 63FCFFFF3F03258071D4002A1B10DA7E13CC01897DFDFA83E1DBB71F60FAFBB7 + 9F0C9F3F7F03E3F7FBA219F11A1013A500E77FFCCCC8F0EA1D23C38BB74C0CCF + 5E3131AC9E3397E1F7E914DC0684B4DDF88FCBE62F9FBF33FCF9F397E1FFF974 + DC060C7C208E1A401E0000EFE473E127272ED00000000049454E44AE426082} + Name = 'PngImage9' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001C74944415478DA + A5934D4B5B411885CF5D9982288874EB0F306E5CBA9A646514E33536264AE456 + 5184528AE0424A043751FCC08228E24788894631D5D6D12C5C08EA2A74512AD8 + E4070822EE44A3E255CC386F24264AAE5978609881B9E739EFCCBC571142E03D + 5208A0284ADECDA08FB9E4342087EFF3C04124772F139C1790319614C3DCE456 + B116E2D0EF11CF051502FCD7BA54F37A98C3E951110E70783A5584FC3C2E0155 + 0501DB534C34389F92DD9A342E7068DD2A96FC1CD296AE44F3EE470C019B934C + A8AE6CF2E29C9C3B6C5809EEC0EEA84194C7E212506508D8F8C144735B36D93F + 232B69B72212DE43BDBD1A5BBFFFA1C7B7AF3C03424396C6B252F08714709184 + F94311E22DEDD9E4C0FC0E9CEE1AFC8AC4505B5789E876025F867300D1694BFA + CCA49FCB1C046AD5B2C94B813D383E3D25334B0576778FF17524074047C8944D + A2B3BB3C36E8BA8E3BFD363DEEEF74DC5C5F2179718ED89F4B7C1B7B0520AD8E + 3241C9F4B191F93A798943F90EBDE37900A4908F0987CB6A6826FD3D02FA260C + 0024FF201374DBF9CCA767B7F28E4CF07C7F03409AF532411796319391747266 + C2C77298651F240AFE4C53FD4CA4E48BA464FBD1CBD09ACCB29D132F5AF93D7A + 04D7A238F0C903C3480000000049454E44AE426082} + Name = 'PngImage10' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300004E2000004E2001167D99DE00000A4D694343505068 + 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 + F73EE77CFEFC2FF784F3FB25D29F330000010A4944415478DA63FCFFFF3F0325 + 8071F019C06838930548B503710C104B00F117203E02C4B9FFCFA7DF4151CBC8 + 88D50090E60A2C969D001A60498C01CFA136870235AC01F27580ECCB40FC07C8 + 67256800D4101E20E502C4D650DA00240E34809118177800A9E5402C806E30B1 + 06DC06522A403C0188F702F105207E4C8A0130014BA8E614209E4C8A01BBA1FE + 46062FA001ABF88321E3FEFBEF40CE8DFF8CB80C00299C0FC40EA09007E22540 + 3C151A130B9E7FCF4878033440E7210E0370819F868CFF41368334BF0426AD47 + 1F19187EFD252129BFD060FC8FAE19EC622C5E900352CF8001F607C8D607B21F + 01D9EF61F2F35918FF8334A7FF27D10BB0509F018C0C103B03C805D1009D9F97 + 36069839440000000049454E44AE426082} + Name = 'PngImage11' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300004E2000004E2001167D99DE00000A4D694343505068 + 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 + F73EE77CFEFC2FF784F3FB25D29F33000000EC4944415478DA63FCFFFF3F0325 + 8071F019C06838930548B503710C104B00F117203E02C4B9FFCFA7DF4151CBC8 + 88D50090E60A2C969D001A60498C01CFA136870235AC01F27580ECCB40FC07C8 + 67256800D4101E20E502C4D650DA00240E34809118177800A9E5402C806E30B1 + 06DC06522A403C0188F702F105207E4C8A0130014BA8E614209E4C8A01BBA1FE + 46062FA001AB0834E4012103400AE703B10328E4817809104F85C6C402A00189 + 0463011BF869C8F8FFFD7706863740FC1298B41E7D6460F8F59784A4FC4283F1 + 3FBA66B02BB078410E483D033AF50F90AD0F643F02B2DF633394242FE00200A6 + 308833CD7332EF0000000049454E44AE426082} + Name = 'PngImage12' + Background = clWindow + end> + Bitmap = {} + end + inherited frxReport1: TfrxReport + Datasets = <> + Variables = <> + Style = <> + end +end diff --git a/Modulos/Presupuestos_/Cliente/uEditorPreviewPresupuesto.pas b/Modulos/Presupuestos_/Cliente/uEditorPreviewPresupuesto.pas new file mode 100644 index 0000000..fce2f92 --- /dev/null +++ b/Modulos/Presupuestos_/Cliente/uEditorPreviewPresupuesto.pas @@ -0,0 +1,72 @@ +unit uEditorPreviewPresupuesto; + +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; + +const + CTE_TamLetraIni = 10; + CTE_TamLetraMin = 5; + CTE_TamLetraMax = 30; + CTE_Aumento = 2; + +type + TfEditorPreviewPresupuesto = class(TfEditorPreview) + TBXItem38: TTBXItem; + actAumentarTamLetra: TAction; + TBXItem43: TTBXItem; + actDisminuirTamLetra: TAction; + procedure CustomEditorCreate(Sender: TObject); + + procedure actAumentarTamLetraExecute(Sender: TObject); + procedure actDisminuirTamLetraExecute(Sender: TObject); + private + FCodigo: Integer; + TamLetra: Integer; + public + property Codigo: Integer read FCodigo write FCodigo; + end; + +var + fEditorPreviewPresupuesto: TfEditorPreviewPresupuesto; + +implementation +{$R *.dfm} + +uses uDataModulePresupuestos; + +procedure TfEditorPreviewPresupuesto.actAumentarTamLetraExecute(Sender: TObject); +begin + //Si sale de los límites de tamaño de letra no hacemos nada + if (TamLetra >= CTE_TamLetraMax) then + Exit; + + TamLetra := TamLetra + CTE_Aumento; + dmPresupuestos.Refrescar(Self.Report, Codigo, TamLetra); +end; + +procedure TfEditorPreviewPresupuesto.CustomEditorCreate(Sender: TObject); +begin + inherited; + TamLetra := CTE_TamLetraIni; +end; + +procedure TfEditorPreviewPresupuesto.actDisminuirTamLetraExecute(Sender: TObject); +begin + //Si sale de los límites de tamaño de letra no hacemos nada + if (TamLetra <= CTE_TamLetraMin) then + Exit; + + TamLetra := TamLetra - CTE_Aumento; + dmPresupuestos.Refrescar(Self.Report, Codigo, TamLetra); +end; + +end. diff --git a/Modulos/Presupuestos_/Cliente/uObservaciones.dfm b/Modulos/Presupuestos_/Cliente/uObservaciones.dfm new file mode 100644 index 0000000..a744ce9 --- /dev/null +++ b/Modulos/Presupuestos_/Cliente/uObservaciones.dfm @@ -0,0 +1,47 @@ +inherited frViewObservaciones: TfrViewObservaciones + Width = 300 + Constraints.MinWidth = 300 + DesignSize = ( + 300 + 240) + object Label5: TLabel + Left = 8 + Top = 8 + Width = 85 + Height = 13 + Caption = 'Observaciones' + Font.Charset = DEFAULT_CHARSET + Font.Color = clActiveCaption + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + ParentFont = False + end + object Bevel1: TBevel + Left = 96 + Top = 8 + Width = 192 + Height = 9 + Anchors = [akLeft, akTop, akRight] + Shape = bsBottomLine + end + object memObservaciones: TcxDBMemo + Left = 16 + Top = 32 + Anchors = [akLeft, akTop, akRight, akBottom] + DataBinding.DataField = 'OBSERVACIONES' + DataBinding.DataSource = DADataSource + Properties.ScrollBars = ssVertical + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 0 + Height = 193 + Width = 269 + end + object DADataSource: TDADataSource + Left = 16 + Top = 48 + end +end diff --git a/Modulos/Presupuestos_/Cliente/uObservaciones.pas b/Modulos/Presupuestos_/Cliente/uObservaciones.pas new file mode 100644 index 0000000..671c51f --- /dev/null +++ b/Modulos/Presupuestos_/Cliente/uObservaciones.pas @@ -0,0 +1,26 @@ +unit uObservaciones; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, DB, uDADataTable, cxMemo, cxDBEdit, cxControls, + cxContainer, cxEdit, cxTextEdit, ExtCtrls, StdCtrls; + +type + TfrViewObservaciones = class(TfrViewBase) + Label5: TLabel; + Bevel1: TBevel; + memObservaciones: TcxDBMemo; + DADataSource: TDADataSource; + private + { Private declarations } + public + { Public declarations } + end; + +implementation + +{$R *.dfm} + +end. diff --git a/Modulos/Presupuestos_/Cliente/uPluginControllerPresupuestos.dfm b/Modulos/Presupuestos_/Cliente/uPluginControllerPresupuestos.dfm new file mode 100644 index 0000000..926c517 --- /dev/null +++ b/Modulos/Presupuestos_/Cliente/uPluginControllerPresupuestos.dfm @@ -0,0 +1,215 @@ +object ModulePresupuestos: TModulePresupuestos + OldCreateOrder = True + DefaultAction = actPresupuestos + Description = 'Ventas' + ModuleMenu = MainMenu + ModuleName = 'Presupuestos' + SmallImages = SmallImages + LargeImages = LargeImages + Author = 'Rodax Software' + Version = '1.0.0' + Left = 652 + Top = 457 + Height = 252 + Width = 401 + object LargeImages: TPngImageList + Height = 24 + Width = 24 + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD252000002744944415478DA + 63FCFFFF3F032D01E3F0B060F9D6D334B3056E41A4B729491AFFFCFDCFF0F7EF + 3F869FBFFE80E93FFFFE8169301B887FFDFECB109E5E876A41E249438206FF05 + AAFFF5F72FC3AF3F7FC0F4975FBF207C10065A02932BFAB59C61DED24D9816CC + 373F8F6291F45B6F8626CF660C8BFE010D0361CFD5F60C1F791E800DBF14F082 + 4169A520D8928ABFAB705B00022036B2E11718CF33189F346660B809E4A83330 + 9C353FCBA0F9438BE117D007415B3C189EB2DF66B811FC1AAC566C3137431DC3 + 5AFC3E8019CE7C8A89E1AFD93F300D32FC6CDC5906E379408BB419183EEB7C61 + E0BDC2C3F05AE50D43F84E5F86BD51C718841771817DD0CEB211BB05E841C3BC + 1C684124D082C54C10C39719339C8D02D2B38C193E447C6410D8C2CFF0C2E525 + 43D49E00860B7F2EC0E3A3977D0B911620FBE02A508203887F30807DF056ED1D + 83F02D218627324F18E20E86329CFA79166EC164AEEDF82D40B6E42F50C36596 + 4B9038B80894D087C481DC5B79869F3F7E60180E02382D404E4520C58A1FFC18 + 6A9C6BC196FC03A7F5BF700CE247EF0D841BFE33E50F03E34C46FC16C0003C6D + 03B1CCB31F0C5325B4B1E60BDE877B505C0E03582D40CFA57FA039F3EA444D06 + 09A7200645CB1E86FBC74BC06A5EDC0726E7FBF719E6EE7BCE30A7DA09C3E229 + 4F73312D98B2780756570A7E3BC7A0F4660ED8307450DD928DD3E273AC89080B + BA27CF27584C9C2B7B88553CA5751FA65AA0E12000B680919191A0E1C75A14FF + 93124C404BC3E6EEFBB19A140B4281D42A6CC13467EF77AC96022D6024CA0290 + E196969AABB0C91D3F7E1D6BDC008101D0828BC45A803778402EC5A597681FE0 + 0A1E200087355E0B6809686E0100FA3E2AAB1481BE0E0000000049454E44AE42 + 6082} + Name = 'PngImage1' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD252000001CC4944415478DA + 63FCFFFF3F032D0123B2058B361EA79A6D71FE968C582D004A906CD8DFBFFF80 + F83F9806010BDF6C868B7B66E1B6C0752FAA25BB9D8FE3341C59ED5A8B030CF3 + 56EF6198BF64237E0B4871B9C7016B0659651686F9DB8E30BC8BFEC6B070FD3E + C21660F301BA18086CB53DC2E07DD88661CFCD1360FEEB882F0C4B361DA0CC07 + FFFF01C31A88FF005D0F62FFFE070CFF3FFFC0BEF9F3EF2FC38A2D8749F70131 + 00E48B4741EF18D6EE38469C05306F9302EEFBBF61D8B0FB047116E04B39D800 + 48CF4CD5CD0C9BF69D24DE025C4105B31C260F533B4D7913C3D603A768E78389 + 0A1B18761D3E433B1FF4C9AC63D87BFC1CED7CD02DB986E1C0A90BF82D88F631 + 07E74E727CD02EBE8AE1C8994BF82D88F03403E74E727CD024BC9CE1E485ABF8 + 2D08753361F03B66479605F5024B19CE5CBE8EDF8200172386E0130E780D0359 + BEE4CF5C383F8625196C410DEF6286F3D76EE2B7C0D7C1005EAE40CAF97FE0B2 + 072C062CF373EFFB63C40F8C5FC9BD88E1D28D5BF82DF0B2D5C36938882E7814 + 8835F888B6C0CD5A1BA7E1A012B4E46930CEA023CA0247730DB061FFFE428AE5 + DF7F11C5F1BFFF508BFEFD437104322068819D891AB844A404E0B5A077F27C8A + 0C8701980500F0E629EF34B079A30000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end> + Left = 232 + Top = 16 + Bitmap = {} + end + object ModuleActionList: TActionList + Images = LargeImages + Left = 40 + Top = 72 + object actPresupuestos: TAction + Category = 'Ventas' + Caption = 'Presupuestos de cliente' + ImageIndex = 1 + OnExecute = actPresupuestosExecute + end + end + object MainMenu: TMainMenu + Images = LargeImages + Left = 40 + Top = 16 + object Ventas1: TMenuItem + Tag = 400 + Caption = '&Ventas' + GroupIndex = 1 + ImageIndex = 0 + object N1: TMenuItem + Tag = 1999 + Caption = '-' + end + object Presupuestosdecliente1: TMenuItem + Tag = 2000 + Action = actPresupuestos + end + end + end + object SmallImages: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD2520000011A4944415478DA + 63FCFFFF3F032580916203966D3945B60991DEA68C6003D4BD9919269F4CC6AA + E8F7DFBF0CDFFFFC61F8F6FB37C3C71F3FC0ECB9FE5B19523CE6309CDB310D61 + 0008C00C996B760EC3209B6D7270CD208062C02E9134B8429866E6534C1081AB + 0C0C7F13FF81999A6B4519BE035D02728DDCB204220CB80A118319A0B04200AC + 19843556A762370024B9DCFA328617903583BC62B83E13350C40FE074B421581 + 70EF05569C31907DD8036140F7E4F9180AA6DAEE60B04CAE6660905064F8717C + 2AC3F97DE719E6EE7BCE30A5C50BCE9EB3F73B23232E1B8EB528861E7CADB6EA + CEE58358E5939D24C32CABEFADC667C07F8A5D00A456811452D505208D5635F7 + 5783D480F211C92E98BBEF075C0FD8004A73230074DEE0E1BE54FBD500000000 + 49454E44AE426082} + Name = 'PngImage1' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001774944415478DA + 63FCFFFF3FC384055BFF3390010A12BC1919610600394469FAF3F71FC3EF3F7F + 192CBCB3192EEE99856A80C35E4B14C5079C8F836964F1ED368718662EDFC530 + 7FC9464C03F0815FBFFF826D06D10BD7EDC36E00BA0BB0815586BB18966D3A84 + DB0098B341E01F50EECF9F7F709B034F3B312CD3DDC1B06ADB11FC06C05CB2CB + EE0883DB211BB8CD61E7DD18166A6E6558BFEB387E03D06DFEFDE70F981F75D9 + 8361AEEA2686CDFB4EE136609FD33106A77D56605BD79BEE033B1B044036C75F + F76698AEB88161E7A133B80D00391BDDE69FBFFE30FC028AA5DFF567E8975CCD + 70F0D4454C0372623D195C0E58A384F862ED6D0CB157BDC0EC2972EB18721E05 + 317489AE643876EE32A601E9916E605BFEFCFE07B639E2A23BC37CF52D60B1DF + BF21B8F0792843ABE03286D397AE611A9018EA0CD70CF202CC6674D0C0BB98E1 + C2B59B9806C40638C23583FC8D6CF36F688C80F0BF7FFF192EDDB8856940848F + 2DC38A2D8789CE89180680044805200300115980F04CC063740000000049454E + 44AE426082} + Name = 'PngImage1' + Background = clWindow + end> + PngOptions = [pngBlendOnDisabled, pngGrayscaleOnDisabled] + Left = 308 + Top = 16 + Bitmap = {} + end + object ExtraImages: TPngImageList + Height = 28 + Width = 28 + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D494844520000001C0000001C0806000000720DDF + 940000000970485973000017120000171201679FD252000002D84944415478DA + ED946D48535118C7FF57855EB4171542B01756516845C868B63E4A1F2A7B1996 + 990B845008EA637DD2A828F34BF521D220C98484C28232B24C302329456D380D + A99C75035FB6A5B3E9ACAEBA7BD773CF4D9BEE6E6E23F6217AE0F09C73EE73CE + EF79CEFF9CCB793C1E44D2B8FFC07F0378EF697BC4A833C0DCCC6D616DE0163D + 104589BCC43CEB4B5E7DE62986E6728E9F9D0D3CD69A163448A47593A28849B7 + 5BF1731B01A6BFD7E97AC0F70DA0B0A4DC175899DE310B9CECC8C485DD17FD82 + 25DA58621589D8FB3003A3715F18ACCB60C3DAEA7806ADD759D03768F50F944D + EEABC1CC5C07B4AD5AE0230D3602A6741352845406945B56ED2E0C2CB0E0C3C1 + 2116BFA22A160DBA5E0CDAED812BF48645B745013C1D638EA4F40966CA33417B + 9BC09B00D7E6712C791C07AC0386D60F23A77E1F5E189B91786731ABB029FD33 + ECC343EA40B5A38CAE268844C05C02564529B0BB5A988CE4CBB5701E19C5F2DA + 652CD6B6D30E63830166B77946CFD7DB7938461C2100E5AA2C043CFABBC26E9A + 5C484D00ABD0B16104897509ACC2FE95FDC87B958DB609D30CF08D8EC798CB19 + 18A87661648DDEC574291A76D2C45645C3D58E35EC9B7B6ACA07265B93F613BE + FF189BFF96CA0B34CEFD0C2A6F386EEB467C4F61C0E7B2CADC80AF4B454C14B8 + C1DDE4D8DCCB340B04613C70856A6FABB81DD0E71701491A128B677102FF8C79 + 276F65FE4C45076E1565CC4AE291EB0416C527FB02E7FB7BF4DED882A48C2C68 + F457C0B79C562E09AF3C23F04A02158D569416EFF149E2D0B9165FE0F32673C0 + E31AB0BC45AAAD846DAA66D66F024ACB4EA9262103CBAE5DFD03BC7CBD12C158 + 72AC0B4F4E8E048C29B8D4E83DAC791F73C0F0934B600306E4382E28986CCDC5 + 1A4FA83A5202872B1A8507610383D5D13B010272E102B3694323750D7E426AF2 + F37718E62610165086E9F529F743D08F2540ED3C013BC30106A5DF74356A1632 + 3018FDFE26705EFDBC8FCF2F30921671E02FBE648AC22CC7AE57000000004945 + 4E44AE426082} + Name = 'PngImage0' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D494844520000001C0000001C0806000000720DDF + 940000000970485973000017120000171201679FD252000002974944415478DA + BDD6CB6F12411800F00FEBCD180FC6C47830C6831A138BD8576C552A25A520D5 + D896566B630F5E4D4CFC038C890713131313D3A451A9D08AA53CDB826B914240 + 0A2DA520D2FAA889070F4D2F6AA2F1B8BB9FBBCB23D402B3B84D3F962C33ECCC + 6FBE9985591922C27686AC1874075784025F27BCD9EC778532F7128EDC67A1AD + 7020D4ECA829095CD1D5C9CA82AEC03276B59DF8EFD1B35C5F2C374886618161 + 5968365C87B4C75A1E74CE66B05B5D0BAD81D39B3A0BB5CD9785FEBD9E6A09C3 + 13AB1F4CCE317160B5C183CAA3EDF0950E82855A805F837F60C43E4B061D6FDE + 634FBBBC6C86A5EA83AA18A882CD105E5D2AD4FD1CF80D6657900CDA7D693468 + 4E8ACE8C5F278641E1CCAF1D4DB3853ACB74880CDA7CEFB057A3289989D8E033 + 5DEFFD01566F440438C3811D59B0788AAA8DB59EEF60A3E6C8E0C4EB14F6694F + 0960A5BBB252F06DC78E53E0F4C5C8A0954A22F743950C9A8E7961D2BF4006C7 + A925BCAAAB2F8095D6323FA0E26BF26D8C473CE009C4C9E0CB5709ECBFD02039 + C3E1C35330134E8800BD1CA8970E0E1D72833F92248316EF225ED3374A9ED2C7 + 075D1088A6C8E00B4F1C073A9B2467F8E8800342F1B408703A8EFD9D8DC25F95 + 14F0E17E1B44121932383A35CFAD6113A8432D92A6F4C1BE0988A596C5817DDA + 06D044CE4ACAF0FEDE7188A73F9041F3640C0D1DF5A08B2A2581F7F65820B9F2 + 890C9ADC51BCACAE834B8BE74575CE0FCA4C1B0BE5C19D3704F0EE6E0EFAB82A + 0EBCA852E4B61C66C3E302C3661F1FE85CF9E6B7AE4DEB9C2FDFD9350A99CF5F + C8E073D71CEA5B15448CA1116EAD75979CF6AAC0116704754A3911E3CFB7D70D + 65A75A346874BC45ED393911DB30A0A21DBF384481CFEC61D49CA915F6B2AD08 + 22F8D416C2A1B1E12DC1F25111DC8EF80B6B3D9AE763000D2B0000000049454E + 44AE426082} + Name = 'PngImage1' + Background = clWindow + end> + Left = 232 + Top = 80 + Bitmap = {} + end +end diff --git a/Modulos/Presupuestos_/Cliente/uPluginControllerPresupuestos.pas b/Modulos/Presupuestos_/Cliente/uPluginControllerPresupuestos.pas new file mode 100644 index 0000000..3e00f50 --- /dev/null +++ b/Modulos/Presupuestos_/Cliente/uPluginControllerPresupuestos.pas @@ -0,0 +1,69 @@ +unit uPluginControllerPresupuestos; + +interface + +uses + uModuleController, uInterfaces, uHostManager, Menus, Classes, ActnList, + ImgList, Controls, PngImageList; + +type + IMCPresupuestos = interface(IInterface) + ['{E148CA5A-63A0-4BE8-B634-6E7A92A90F25}'] + end; + + TModulePresupuestos = class(TModuleController, IMCPresupuestos) + actPresupuestos: TAction; + ExtraImages: TPngImageList; + LargeImages: TPngImageList; + MainMenu: TMainMenu; + ModuleActionList: TActionList; + SmallImages: TPngImageList; + Ventas1: TMenuItem; + Presupuestosdecliente1: TMenuItem; + N1: TMenuItem; + procedure actPresupuestosExecute(Sender: TObject); + public + end; + +implementation + +{$R *.dfm} + +uses + Forms, Dialogs, uGUIBase, uCustomEditor, SysUtils, uEditorPresupuestos, + uDataModulePresupuestos, uBizPresupuestosCliente; + +function GetModule : TModuleController; +begin + Result := TModulePresupuestos.Create(NIL); +end; + +exports + GetModule name GET_MODULE_FUNC; + +procedure TModulePresupuestos.actPresupuestosExecute(Sender: TObject); +var + aObj: IEditorPresupuestos; + APresupuestos : IBizPresupuestos; +begin + APresupuestos := dmPresupuestos.GetPresupuestos; + aObj := TfEditorPresupuestos.Create(Application); + try + with aObj do + begin + Presupuestos := APresupuestos; + ShowEmbedded; + end; + finally + APresupuestos := NIL; + aObj := NIL; + end; +end; + +initialization + RegisterModuleClass(TModulePresupuestos); + +finalization + UnRegisterModuleClass(TModulePresupuestos); + +end. diff --git a/Modulos/Presupuestos_/Cliente/uViewContenido.dfm b/Modulos/Presupuestos_/Cliente/uViewContenido.dfm new file mode 100644 index 0000000..9dd11ea --- /dev/null +++ b/Modulos/Presupuestos_/Cliente/uViewContenido.dfm @@ -0,0 +1,288 @@ +inherited frViewContenido: TfrViewContenido + Width = 634 + Height = 349 + object cxGrid: TcxGrid + Left = 0 + Top = 24 + Width = 634 + Height = 325 + Align = alClient + TabOrder = 0 + LookAndFeel.Kind = lfOffice11 + LookAndFeel.NativeStyle = True + object cxGridView: TcxGridDBTableView + NavigatorButtons.ConfirmDelete = False + OnCustomDrawCell = cxGridViewCustomDrawCell + DataController.DataSource = DADataSource + DataController.Filter.Options = [fcoCaseInsensitive] + DataController.Options = [dcoAnsiSort, dcoAssignGroupingValues, dcoAssignMasterDetailKeys, dcoSaveExpanding, dcoSortByDisplayText, dcoFocusTopRowAfterSorting] + DataController.Summary.DefaultGroupSummaryItems = <> + DataController.Summary.FooterSummaryItems = < + item + Format = ',0.00 '#8364';-,0.00 '#8364 + Kind = skSum + Column = cxGridViewIMPORTETOTAL + end> + DataController.Summary.SummaryGroups = <> + Filtering.Visible = fvNever + OptionsBehavior.CellHints = True + OptionsBehavior.FocusCellOnTab = True + OptionsBehavior.GoToNextCellOnEnter = True + OptionsBehavior.FocusCellOnCycle = True + OptionsCustomize.ColumnFiltering = False + OptionsCustomize.ColumnGrouping = False + OptionsCustomize.DataRowSizing = True + OptionsData.Appending = True + OptionsSelection.InvertSelect = False + OptionsSelection.UnselectFocusedRecordOnExit = False + OptionsView.CellEndEllipsis = True + OptionsView.CellAutoHeight = True + OptionsView.ColumnAutoWidth = True + OptionsView.Footer = True + OptionsView.GridLineColor = cl3DLight + OptionsView.GroupByBox = False + OptionsView.HeaderEndEllipsis = True + OptionsView.Indicator = True + Styles.OnGetContentStyle = cxGridViewStylesGetContentStyle + object cxGridViewRecID: TcxGridDBColumn + DataBinding.FieldName = 'RecID' + Visible = False + Width = 49 + end + object cxGridViewCODIGOPRESUPUESTO: TcxGridDBColumn + DataBinding.FieldName = 'CODIGOPRESUPUESTO' + Visible = False + Width = 157 + end + object cxGridViewNUMCONCEPTO: TcxGridDBColumn + DataBinding.FieldName = 'NUMCONCEPTO' + Visible = False + Width = 119 + end + object cxGridViewPOSICION: TcxGridDBColumn + DataBinding.FieldName = 'POSICION' + Visible = False + SortIndex = 0 + SortOrder = soAscending + Width = 93 + end + object cxGridViewTIPO: TcxGridDBColumn + DataBinding.FieldName = 'TIPO' + PropertiesClassName = 'TcxComboBoxProperties' + Properties.DropDownListStyle = lsFixedList + Properties.ImmediatePost = True + Properties.Items.Strings = ( + 'A' + 'C' + 'S') + Width = 120 + end + object cxGridViewDESCRIPCION: TcxGridDBColumn + DataBinding.FieldName = 'DESCRIPCION' + PropertiesClassName = 'TcxTextEditProperties' + Width = 101 + end + object cxGridViewCANTIDAD: TcxGridDBColumn + DataBinding.FieldName = 'CANTIDAD' + PropertiesClassName = 'TcxSpinEditProperties' + Properties.Alignment.Horz = taRightJustify + Width = 77 + end + object cxGridViewIMPORTEUNIDAD: TcxGridDBColumn + DataBinding.FieldName = 'IMPORTEUNIDAD' + PropertiesClassName = 'TcxCurrencyEditProperties' + Properties.Alignment.Horz = taRightJustify + Properties.UseThousandSeparator = True + Width = 124 + end + object cxGridViewIMPORTETOTAL: TcxGridDBColumn + DataBinding.FieldName = 'IMPORTETOTAL' + PropertiesClassName = 'TcxCurrencyEditProperties' + Properties.Alignment.Horz = taRightJustify + Properties.ReadOnly = True + Properties.UseThousandSeparator = True + Options.Editing = False + Options.Focusing = False + Options.Moving = False + Styles.Content = cxStyle_IMPORTETOTAL + Width = 107 + end + end + object cxGridLevel: TcxGridLevel + GridView = cxGridView + end + end + object ToolBar1: TToolBar + Left = 0 + Top = 0 + Width = 634 + Height = 24 + AutoSize = True + ButtonWidth = 85 + Caption = 'ToolBar1' + EdgeBorders = [ebBottom] + Flat = True + Images = ContenidoImageList + List = True + ParentShowHint = False + ShowCaptions = True + ShowHint = True + TabOrder = 1 + Transparent = True + object ToolButton1: TToolButton + Left = 0 + Top = 0 + Action = actAnadir + AutoSize = True + ImageIndex = 0 + end + object ToolButton2: TToolButton + Left = 62 + Top = 0 + Action = actEliminar + AutoSize = True + ImageIndex = 1 + end + object ToolButton4: TToolButton + Left = 129 + Top = 0 + Action = RichEditBold1 + AutoSize = True + end + object ToolButton5: TToolButton + Left = 180 + Top = 0 + Action = RichEditItalic1 + end + object ToolButton6: TToolButton + Left = 265 + Top = 0 + Action = RichEditStrikeOut1 + end + object ToolButton3: TToolButton + Left = 350 + Top = 0 + Width = 8 + Caption = 'ToolButton3' + ImageIndex = 2 + Style = tbsSeparator + end + object ToolButton7: TToolButton + Left = 358 + Top = 0 + Action = RichEditUnderline1 + end + object ToolButton8: TToolButton + Left = 443 + Top = 0 + Width = 8 + Caption = 'ToolButton8' + ImageIndex = 5 + Style = tbsSeparator + end + object ToolButton9: TToolButton + Left = 451 + Top = 0 + Caption = 'ToolButton9' + ImageIndex = 5 + OnClick = ToolButton9Click + end + end + object ActionListContenido: TActionList + Images = ContenidoImageList + Left = 8 + Top = 104 + object actAnadir: TAction + Caption = 'A'#241'adir' + OnExecute = actAnadirExecute + end + object actEliminar: TAction + Caption = 'Eliminar' + OnExecute = actEliminarExecute + end + object RichEditBold1: TRichEditBold + Category = 'Formato' + AutoCheck = True + Caption = '&Bold' + Hint = 'Bold' + ImageIndex = 2 + ShortCut = 16450 + end + object RichEditItalic1: TRichEditItalic + Category = 'Formato' + AutoCheck = True + Caption = '&Italic' + Hint = 'Italic' + ImageIndex = 3 + ShortCut = 16457 + end + object RichEditUnderline1: TRichEditUnderline + Category = 'Formato' + AutoCheck = True + Caption = '&Underline' + Hint = 'Underline' + ImageIndex = 4 + ShortCut = 16469 + end + object RichEditStrikeOut1: TRichEditStrikeOut + Category = 'Formato' + AutoCheck = True + Caption = '&Strikeout' + Hint = 'Strikeout' + ImageIndex = 5 + end + end + object DADataSource: TDADataSource + DataTable = dmPresupuestos.tbl_DetallesPresupuestos + Left = 8 + Top = 136 + end + object ContenidoImageList: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000000D04944415478DA + 6364C0062630FCC72A5EC0C0882EC488CB80191909706EDDBA750CAF767D6260 + 5830240DF8F9FB3743EBE6CD780CC011602003409A7F0071EF8E1D10030C30D5 + 31A23B1706609AB1E23F7FC0F4FA2967B01B408CE6A3B76E815D856100319ABF + FFFAC570EEC103540340218D0C92EDECE01AD79E398335ACE106305CC0942CAC + 77871BB0F5E2454820620138A331D3CB09EEECBD57AF929E0E629DADC106FCF9 + F70F1E602419106A67C6F01DE40260805D7AFC9874037C2C0D194EDDBD8B1260 + 241900A6D103178B01000648ED7B1FCA93F30000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD2520000006E4944415478DA + 63FCFFFF3F03258071D40006C6397A1214990036203925952CCD73E7CCC66100 + C85BBF7F32307CFDC4C0F0FD2B03C33710FD05487F46E0374F19E6FE964032E0 + CF6F840120CD200D5F3F43357E42F0416C90013FBFA119B0B099742FC00CA028 + 10073E1D0C7D030077CE5E397DD56C480000000049454E44AE426082} + Name = 'PngImage1' + Background = clWindow + end> + Left = 264 + Top = 40 + Bitmap = {} + end + object cxStyleRepository1: TcxStyleRepository + Left = 264 + Top = 80 + object cxStyle_IMPORTETOTAL: TcxStyle + AssignedValues = [svColor] + Color = 16053492 + end + object cxStyle_SUBTOTAL: TcxStyle + AssignedValues = [svFont, svTextColor] + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + TextColor = clHighlight + end + end +end diff --git a/Modulos/Presupuestos_/Cliente/uViewDatosPresupuesto.ddp b/Modulos/Presupuestos_/Cliente/uViewDatosPresupuesto.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Presupuestos_/Cliente/uViewDatosPresupuesto.ddp differ diff --git a/Modulos/Presupuestos_/Cliente/uViewDatosPresupuesto.dfm b/Modulos/Presupuestos_/Cliente/uViewDatosPresupuesto.dfm new file mode 100644 index 0000000..b7ee5fd --- /dev/null +++ b/Modulos/Presupuestos_/Cliente/uViewDatosPresupuesto.dfm @@ -0,0 +1,119 @@ +inherited frViewDatosPresupuesto: TfrViewDatosPresupuesto + Width = 360 + Height = 163 + Constraints.MinHeight = 110 + Constraints.MinWidth = 360 + DesignSize = ( + 360 + 163) + object Bevel1: TBevel + Left = 144 + Top = 8 + Width = 205 + Height = 9 + Anchors = [akLeft, akTop, akRight] + Shape = bsBottomLine + end + object Label5: TLabel + Left = 8 + Top = 8 + Width = 128 + Height = 13 + Caption = 'Datos del presupuesto' + Font.Charset = DEFAULT_CHARSET + Font.Color = clActiveCaption + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + ParentFont = False + end + object Label1: TLabel + Left = 16 + Top = 56 + Width = 64 + Height = 13 + Caption = 'Tipo presup.:' + end + object Label2: TLabel + Left = 16 + Top = 80 + Width = 73 + Height = 13 + Caption = 'Fecha presup.:' + end + object Label3: TLabel + Left = 16 + Top = 104 + Width = 62 + Height = 13 + Caption = 'V'#225'lido hasta:' + end + object Label4: TLabel + Left = 16 + Top = 30 + Width = 43 + Height = 13 + Caption = 'Montaje:' + end + object edtFechaPresupuesto: TcxDBDateEdit + Left = 100 + Top = 76 + Anchors = [akLeft, akTop, akRight] + DataBinding.DataField = 'FECHAPRESUPUESTO' + DataBinding.DataSource = DADataSource + Style.LookAndFeel.NativeStyle = True + Style.Shadow = False + Style.ButtonTransparency = ebtNone + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 1 + Width = 245 + end + object edtVigencia: TcxDBDateEdit + Left = 100 + Top = 100 + Anchors = [akLeft, akTop, akRight] + DataBinding.DataField = 'VIGENCIAPRESUPUESTO' + DataBinding.DataSource = DADataSource + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 2 + Width = 245 + end + object eReferencia: TcxDBTextEdit + Left = 100 + Top = 27 + Anchors = [akLeft, akTop, akRight] + DataBinding.DataField = 'REFERENCIA' + DataBinding.DataSource = DADataSource + Properties.OnEditValueChanged = eReferenciaPropertiesEditValueChanged + Style.LookAndFeel.NativeStyle = True + StyleDisabled.BorderStyle = ebs3D + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 0 + Width = 245 + end + object cbTipoPresupuesto: TcxDBComboBox + Left = 100 + Top = 51 + DataBinding.DataField = 'TIPO' + DataBinding.DataSource = DADataSource + Properties.DropDownListStyle = lsFixedList + Properties.ImmediatePost = True + Properties.OnInitPopup = cbTipoPresupuestoPropertiesInitPopup + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 3 + Width = 245 + end + object DADataSource: TDADataSource + Left = 192 + end +end diff --git a/Modulos/Presupuestos_/Cliente/uViewDatosPresupuesto.pas b/Modulos/Presupuestos_/Cliente/uViewDatosPresupuesto.pas new file mode 100644 index 0000000..9b49519 --- /dev/null +++ b/Modulos/Presupuestos_/Cliente/uViewDatosPresupuesto.pas @@ -0,0 +1,66 @@ +unit uViewDatosPresupuesto; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, DB, uDADataTable, cxControls, cxContainer, cxEdit, + cxTextEdit, cxMaskEdit, cxDropDownEdit, cxCalendar, cxDBEdit, StdCtrls, + Mask, DBCtrls, ExtCtrls, cxGraphics; + +type + TfrViewDatosPresupuesto = class(TfrViewBase) + Bevel1: TBevel; + Label5: TLabel; + Label1: TLabel; + Label2: TLabel; + edtFechaPresupuesto: TcxDBDateEdit; + Label3: TLabel; + edtVigencia: TcxDBDateEdit; + DADataSource: TDADataSource; + eReferencia: TcxDBTextEdit; + Label4: TLabel; + cbTipoPresupuesto: TcxDBComboBox; + procedure cbTipoPresupuestoPropertiesInitPopup(Sender: TObject); + procedure eReferenciaPropertiesEditValueChanged(Sender: TObject); + private + { Private declarations } + public + { Public declarations } + end; + +var + frViewDatosPresupuesto: TfrViewDatosPresupuesto; + +implementation + +uses uBizPresupuestosCliente; + +{$R *.dfm} + +procedure TfrViewDatosPresupuesto.cbTipoPresupuestoPropertiesInitPopup( + Sender: TObject); +begin + inherited; + with cbTipoPresupuesto.Properties.Items do + if Count = 0 then + begin + BeginUpdate; + try + Clear; + Add(TIPO_COCINA); + Add(TIPO_BANO); + finally + EndUpdate; + end; + end; +end; + +procedure TfrViewDatosPresupuesto.eReferenciaPropertiesEditValueChanged( + Sender: TObject); +begin + inherited; + cbTipoPresupuesto.Enabled := not (Length(eReferencia.Text) > 0); +end; + +end. diff --git a/Modulos/Presupuestos_/Cliente/uViewDetallesPresupuesto.dfm b/Modulos/Presupuestos_/Cliente/uViewDetallesPresupuesto.dfm new file mode 100644 index 0000000..f6cf56f --- /dev/null +++ b/Modulos/Presupuestos_/Cliente/uViewDetallesPresupuesto.dfm @@ -0,0 +1,53 @@ +inherited frViewDetallesPresupuesto: TfrViewDetallesPresupuesto + inherited cxGrid: TcxGrid + inherited cxGridView: TcxGridDBTableView + OptionsSelection.InvertSelect = False + inherited cxGridViewTIPO: TcxGridDBColumn + Width = 40 + end + inherited cxGridViewDESCRIPCION: TcxGridDBColumn + Width = 165 + end + object cxGridViewPUNTOS: TcxGridDBColumn [3] + DataBinding.FieldName = 'PUNTOS' + PropertiesClassName = 'TcxMaskEditProperties' + Properties.Alignment.Horz = taRightJustify + Styles.OnGetContentStyle = cxGridViewIMPORTEPUNTOSStylesGetContentStyle + Width = 33 + end + object cxGridViewIMPORTEPUNTOS: TcxGridDBColumn [4] + DataBinding.FieldName = 'IMPORTEPUNTOS' + PropertiesClassName = 'TcxCurrencyEditProperties' + Properties.Alignment.Horz = taRightJustify + Styles.OnGetContentStyle = cxGridViewIMPORTEPUNTOSStylesGetContentStyle + Width = 55 + end + inherited cxGridViewCANTIDAD: TcxGridDBColumn + Properties.Alignment.Horz = taRightJustify + Width = 29 + end + inherited cxGridViewIMPORTEUNIDAD: TcxGridDBColumn + Width = 43 + end + inherited cxGridViewIMPORTETOTAL: TcxGridDBColumn + Width = 43 + end + inherited cxGridViewVISIBLE: TcxGridDBColumn + Styles.OnGetContentStyle = cxGridViewVISIBLEStylesGetContentStyle + Width = 21 + end + end + end + inherited cxStyleRepository1: TcxStyleRepository + object cxStyle_PUNTOS: TcxStyle + AssignedValues = [svColor, svFont, svTextColor] + Color = 16053492 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + TextColor = clWindowText + end + end +end diff --git a/Modulos/Presupuestos_/Cliente/uViewDetallesPresupuesto.pas b/Modulos/Presupuestos_/Cliente/uViewDetallesPresupuesto.pas new file mode 100644 index 0000000..c8fd2df --- /dev/null +++ b/Modulos/Presupuestos_/Cliente/uViewDetallesPresupuesto.pas @@ -0,0 +1,98 @@ +unit uViewDetallesPresupuesto; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, cxStyles, cxCustomData, cxGraphics, + cxFilter, cxData, cxDataStorage, cxEdit, DB, cxDBData, cxImageComboBox, + cxTextEdit, cxSpinEdit, ImgList, PngImageList, uDADataTable, ActnList, + ComCtrls, ToolWin, cxGridLevel, cxGridCustomTableView, cxGridTableView, + cxGridDBTableView, cxClasses, cxControls, cxGridCustomView, cxGrid, + cxCheckBox, TB2Item, TBX, TB2Dock, TB2Toolbar, JvExComCtrls, JvToolBar, + uViewDetallesFamilias, cxMaskEdit, cxCurrencyEdit; + +type + TfrViewDetallesPresupuesto = class(TfrViewDetallesFamilias) + cxGridViewPUNTOS: TcxGridDBColumn; + cxGridViewIMPORTEPUNTOS: TcxGridDBColumn; + cxStyle_PUNTOS: TcxStyle; + procedure cxGridViewEditing(Sender: TcxCustomGridTableView; + AItem: TcxCustomGridTableItem; var AAllow: Boolean); + procedure cxGridViewIMPORTEPUNTOSStylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); + procedure cxGridViewVISIBLEStylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); + private + { Private declarations } + public + { Public declarations } + end; + + +implementation + +uses uBizImportesDetalleBase, uViewContenido; + +{$R *.dfm} + +procedure TfrViewDetallesPresupuesto.cxGridViewEditing( + Sender: TcxCustomGridTableView; AItem: TcxCustomGridTableItem; + var AAllow: Boolean); +var + IndiceCol : Integer; +begin + IndiceCol := (Sender as TcxGridDBTableView).GetColumnByFieldName(fld_IMPORTEPUNTOS).Index; + if AItem.Index = IndiceCol then + begin + IndiceCol := (Sender as TcxGridDBTableView).GetColumnByFieldName(fld_TIPODETALLE).Index; + if (UpperCase(AItem.GridView.Items[IndiceCol].EditValue) = TIPODETALLE_SUBTOTAL) then + AAllow := False + else + AAllow := True + end + else + inherited; +end; + +procedure TfrViewDetallesPresupuesto.cxGridViewIMPORTEPUNTOSStylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); +var + IndiceCol : Integer; + ATipo : String; +begin + if Assigned(ARecord) then + begin + IndiceCol := (Sender as TcxGridDBTableView).GetColumnByFieldName(fld_TIPODETALLE).Index; + ATipo := VarToStr(ARecord.Values[IndiceCol]); + if ATipo = TIPODETALLE_CONCEPTO then + AStyle := cxStyle_PUNTOS; + if ATipo = TIPODETALLE_SUBTOTAL then + AStyle := cxStyle_SUBTOTAL; + if ATipo = TIPODETALLE_TITULO then + AStyle := cxStyle_TITULO; + end; +end; + +procedure TfrViewDetallesPresupuesto.cxGridViewVISIBLEStylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); +var + IndiceCol : Integer; + ATipo : String; +begin + if Assigned(ARecord) then + begin + IndiceCol := (Sender as TcxGridDBTableView).GetColumnByFieldName(fld_TIPODETALLE).Index; + ATipo := VarToStr(ARecord.Values[IndiceCol]); + if ATipo = TIPODETALLE_SUBTOTAL then + AStyle := cxStyle_SUBTOTAL; + if ATipo = TIPODETALLE_TITULO then + AStyle := cxStyle_TITULO; + end; +end; + +end. diff --git a/Modulos/Presupuestos_/Cliente/uViewPresupuesto.ddp b/Modulos/Presupuestos_/Cliente/uViewPresupuesto.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Presupuestos_/Cliente/uViewPresupuesto.ddp differ diff --git a/Modulos/Presupuestos_/Cliente/uViewPresupuesto.dfm b/Modulos/Presupuestos_/Cliente/uViewPresupuesto.dfm new file mode 100644 index 0000000..fee1611 --- /dev/null +++ b/Modulos/Presupuestos_/Cliente/uViewPresupuesto.dfm @@ -0,0 +1,216 @@ +inherited frViewPresupuesto: TfrViewPresupuesto + Width = 751 + Height = 380 + inline frViewDatosPresupuesto1: TfrViewDatosPresupuesto + Left = 0 + Top = 0 + Width = 360 + Height = 124 + Constraints.MinHeight = 110 + Constraints.MinWidth = 360 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 0 + ReadOnly = False + inherited edtFechaPresupuesto: TcxDBDateEdit + Style.Color = clInfoBk + end + inherited eReferencia: TcxDBTextEdit + Enabled = False + Properties.ReadOnly = True + StyleDisabled.TextColor = clActiveCaption + end + inherited cbTipoPresupuesto: TcxDBComboBox + Style.Color = clInfoBk + end + inherited DADataSource: TDADataSource + Left = 296 + Top = 16 + end + end + inline frViewPlazoEntrega1: TfrViewPlazoEntrega + Left = 358 + Top = 210 + Width = 391 + Height = 84 + Constraints.MinWidth = 300 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 1 + ReadOnly = False + inherited Bevel1: TBevel + Width = 267 + end + inherited memPlazoEntrega: TcxDBMemo + Anchors = [akLeft, akTop, akRight] + Height = 45 + Width = 360 + end + end + inline frViewObservaciones1: TfrViewObservaciones + Left = 0 + Top = 288 + Width = 751 + Height = 86 + Constraints.MinWidth = 300 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 2 + ReadOnly = False + inherited Bevel1: TBevel + Width = 643 + end + inherited memObservaciones: TcxDBMemo + Anchors = [akLeft, akTop, akRight] + Height = 45 + Width = 720 + end + end + inline frViewFormaPago1: TfrViewFormaPago + Left = 0 + Top = 210 + Width = 361 + Height = 84 + Constraints.MinWidth = 300 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 3 + ReadOnly = False + inherited Bevel1: TBevel + Width = 253 + end + inherited memFormaPago: TcxDBMemo + Anchors = [akLeft, akTop, akRight] + Height = 45 + Width = 330 + end + end + inline frViewSituacionPresupuesto1: TfrViewSituacionPresupuesto + Left = 0 + Top = 123 + Width = 360 + Height = 97 + Constraints.MinHeight = 85 + Constraints.MinWidth = 360 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 4 + ReadOnly = False + inherited Label6: TLabel + Width = 134 + Caption = 'Estado del presupuesto' + end + inherited Bevel2: TBevel + Left = 152 + Width = 196 + end + inherited cbiSituacion: TcxDBImageComboBox + Style.Color = clInfoBk + StyleFocused.Color = clInfoBk + StyleHot.Color = clInfoBk + end + inherited ImageList: TPngImageList + Left = 64 + Top = 40 + end + end + inline frViewClientePresupuesto1: TfrViewDatosYSeleccionContacto + Left = 360 + Top = 0 + Width = 391 + Height = 219 + Constraints.MinHeight = 202 + Constraints.MinWidth = 350 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 5 + ReadOnly = False + inherited Label5: TLabel + Width = 97 + Caption = 'Datos del cliente' + end + inherited Bevel1: TBevel + Left = 112 + Width = 251 + end + inherited ToolBar1: TToolBar + ButtonWidth = 129 + inherited ToolButton3: TToolButton + Left = 106 + end + inherited ToolButton2: TToolButton + Left = 114 + end + end + inherited edtlNombre: TcxDBTextEdit + StyleDisabled.TextColor = clActiveCaption + Width = 296 + end + inherited edtPoblacion: TcxDBTextEdit + StyleDisabled.TextColor = clActiveCaption + TabOrder = 4 + Width = 296 + end + inherited edtProvincia: TcxDBTextEdit + StyleDisabled.TextColor = clActiveCaption + TabOrder = 3 + Width = 152 + end + inherited edtNIFCIF: TcxDBTextEdit + StyleDisabled.TextColor = clActiveCaption + Width = 296 + end + inherited edtCalle: TcxDBTextEdit + StyleDisabled.TextColor = clActiveCaption + Width = 296 + end + inherited ToolBar2: TToolBar + ButtonWidth = 178 + end + inherited edtCodigoPostal: TcxDBTextEdit + StyleDisabled.TextColor = clActiveCaption + Width = 105 + end + inherited DADataSource: TDADataSource + Left = 64 + Top = 40 + end + inherited ActionList1: TActionList + inherited actElegirContacto: TAction + Caption = 'Elegir un cliente' + end + inherited actAnadirContacto: TAction + Caption = 'Dar de alta un cliente' + end + inherited actVerContacto: TAction + Caption = 'Ver ficha completa del cliente...' + end + end + end + object DADataSource: TDADataSource + end +end diff --git a/Modulos/Presupuestos_/Cliente/uViewPresupuesto.pas b/Modulos/Presupuestos_/Cliente/uViewPresupuesto.pas new file mode 100644 index 0000000..c7a17fb --- /dev/null +++ b/Modulos/Presupuestos_/Cliente/uViewPresupuesto.pas @@ -0,0 +1,76 @@ +unit uViewPresupuesto; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, uBizPresupuestosCliente, cxControls, cxContainer, + cxEdit, cxTextEdit, cxMaskEdit, cxDropDownEdit, cxCalendar, cxDBEdit, DB, + uDADataTable, StdCtrls, Mask, DBCtrls, ExtCtrls, cxGraphics, uCustomView, + uViewDatosPresupuesto, uViewSituacionPresupuesto, + uViewFormaPago, uViewPlazoEntrega, uViewObservaciones, + uViewDatosYSeleccionContacto, AppEvnts; + +type + IViewPresupuesto = interface(IViewBase) + ['{7FDBC909-C3F2-4778-9FE3-1D813FEA7FC1}'] + function GetPresupuesto: IBizPresupuestos; + procedure SetPresupuesto(const Value: IBizPresupuestos); + property Presupuesto: IBizPresupuestos read GetPresupuesto write + SetPresupuesto; + end; + + TfrViewPresupuesto = class(TfrViewBase, IViewPresupuesto) + DADataSource: TDADataSource; + frViewClientePresupuesto1: TfrViewDatosYSeleccionContacto; + frViewDatosPresupuesto1: TfrViewDatosPresupuesto; + frViewFormaPago1: TfrViewFormaPago; + frViewObservaciones1: TfrViewObservaciones; + frViewPlazoEntrega1: TfrViewPlazoEntrega; + frViewSituacionPresupuesto1: TfrViewSituacionPresupuesto; + private + FPresupuesto: IBizPresupuestos; + procedure OnContactoChanged(Sender : TObject); + protected + function GetPresupuesto: IBizPresupuestos; + procedure SetPresupuesto(const Value: IBizPresupuestos); + public + property Presupuesto: IBizPresupuestos read GetPresupuesto write + SetPresupuesto; + end; + +implementation + +uses uBizContacto, uExceptions; + +{$R *.dfm} + +function TfrViewPresupuesto.GetPresupuesto: IBizPresupuestos; +begin + Result := FPresupuesto; +end; + +procedure TfrViewPresupuesto.OnContactoChanged(Sender : TObject); +begin + FPresupuesto.Cliente := (frViewClientePresupuesto1.Contacto as IBizCliente); +end; + +procedure TfrViewPresupuesto.SetPresupuesto(const Value: IBizPresupuestos); +begin + FPresupuesto := Value; + if Assigned(FPresupuesto) then + DADataSource.DataTable := FPresupuesto.DataTable + else + DADataSource.DataTable := NIL; + + frViewDatosPresupuesto1.DADataSource.DataTable := DADataSource.DataTable; + frViewSituacionPresupuesto1.DADataSource.DataTable := DADataSource.DataTable; + frViewFormaPago1.DADataSource.DataTable := DADataSource.DataTable; + frViewPlazoEntrega1.DADataSource.DataTable := DADataSource.DataTable; + frViewObservaciones1.DADataSource.DataTable := DADataSource.DataTable; + + frViewClientePresupuesto1.Contacto := Presupuesto.Cliente; + frViewClientePresupuesto1.OnContactoChanged := OnContactoChanged; +end; + +end. diff --git a/Modulos/Presupuestos_/Cliente/uViewPresupuestoRelacionado.ddp b/Modulos/Presupuestos_/Cliente/uViewPresupuestoRelacionado.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Presupuestos_/Cliente/uViewPresupuestoRelacionado.ddp differ diff --git a/Modulos/Presupuestos_/Cliente/uViewPresupuestoRelacionado.dfm b/Modulos/Presupuestos_/Cliente/uViewPresupuestoRelacionado.dfm new file mode 100644 index 0000000..8e2edd2 --- /dev/null +++ b/Modulos/Presupuestos_/Cliente/uViewPresupuestoRelacionado.dfm @@ -0,0 +1,163 @@ +inherited frViewPresupuestoRelacionado: TfrViewPresupuestoRelacionado + Width = 360 + Height = 90 + Constraints.MinHeight = 90 + Constraints.MinWidth = 360 + DesignSize = ( + 360 + 90) + object Label5: TLabel + Left = 8 + Top = 8 + Width = 141 + Height = 13 + Caption = 'Presupuesto relacionado' + Font.Charset = DEFAULT_CHARSET + Font.Color = clActiveCaption + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + ParentFont = False + end + object Bevel1: TBevel + Left = 152 + Top = 8 + Width = 197 + Height = 9 + Anchors = [akLeft, akTop, akRight] + Shape = bsBottomLine + end + object lblNombre: TLabel + Left = 16 + Top = 64 + Width = 56 + Height = 13 + Caption = 'Referencia:' + end + object ToolBar1: TToolBar + Left = 8 + Top = 29 + Width = 338 + Height = 22 + Align = alNone + Anchors = [akLeft, akTop, akRight] + ButtonWidth = 131 + Caption = 'ToolBar1' + EdgeBorders = [] + EdgeInner = esNone + EdgeOuter = esNone + Flat = True + Images = PngImageList + List = True + ParentShowHint = False + ShowCaptions = True + ShowHint = True + TabOrder = 0 + Transparent = True + Wrapable = False + object ToolButton1: TToolButton + Left = 0 + Top = 0 + Action = actElegirPresupuesto + AutoSize = True + end + object ToolButton3: TToolButton + Left = 135 + Top = 0 + Width = 8 + Caption = 'ToolButton3' + ImageIndex = 1 + Style = tbsSeparator + end + object ToolButton2: TToolButton + Left = 143 + Top = 0 + Action = actVerPresupuesto + end + end + object edtlReferencia: TcxDBTextEdit + Left = 100 + Top = 60 + Anchors = [akLeft, akTop, akRight] + AutoSize = False + DataBinding.DataField = 'REFERENCIA' + DataBinding.DataSource = DADataSource + Enabled = False + ParentFont = False + Style.Font.Charset = DEFAULT_CHARSET + Style.Font.Color = clWindowText + Style.Font.Height = -11 + Style.Font.Name = 'Tahoma' + Style.Font.Style = [] + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clActiveCaption + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 1 + Height = 21 + Width = 245 + end + object ActionList1: TActionList + Images = PngImageList + Left = 256 + object actElegirPresupuesto: TAction + Caption = 'Elegir un presupuesto' + ImageIndex = 1 + end + object actVerPresupuesto: TAction + Caption = 'Ver el presupuesto...' + ImageIndex = 1 + OnExecute = actVerPresupuestoExecute + OnUpdate = actVerPresupuestoUpdate + end + end + object PngImageList: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001774944415478DA + 63FCFFFF3FC384055BFF3390010A12BC1919610600394469FAF3F71FC3EF3F7F + 192CBCB3192EEE99856A80C35E4B14C5079C8F836964F1ED368718662EDFC530 + 7FC9464C03F0815FBFFF826D06D10BD7EDC36E00BA0BB0815586BB18966D3A84 + DB0098B341E01F50EECF9F7F709B034F3B312CD3DDC1B06ADB11FC06C05CB2CB + EE0883DB211BB8CD61E7DD18166A6E6558BFEB387E03D06DFEFDE70F981F75D9 + 8361AEEA2686CDFB4EE136609FD33106A77D56605BD79BEE033B1B044036C75F + F76698AEB88161E7A133B80D00391BDDE69FBFFE30FC028AA5DFF567E8975CCD + 70F0D4454C0372623D195C0E58A384F862ED6D0CB157BDC0EC2972EB18721E05 + 317489AE643876EE32A601E9916E605BFEFCFE07B639E2A23BC37CF52D60B1DF + BF21B8F0792843ABE03286D397AE611A9018EA0CD70CF202CC6674D0C0BB98E1 + C2B59B9806C40638C23583FC8D6CF36F688C80F0BF7FFF192EDDB8856940848F + 2DC38A2D8789CE89180680044805200300115980F04CC063740000000049454E + 44AE426082} + Name = 'PngImage1' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001774944415478DA + 63FCFFFF3FC384055BFF3390010A12BC1919610600394469FAF3F71FC3EF3F7F + 192CBCB3192EEE99856A80C35E4B14C5079C8F836964F1ED368718662EDFC530 + 7FC9464C03F0815FBFFF826D06D10BD7EDC36E00BA0BB0815586BB18966D3A84 + DB0098B341E01F50EECF9F7F709B034F3B312CD3DDC1B06ADB11FC06C05CB2CB + EE0883DB211BB8CD61E7DD18166A6E6558BFEB387E03D06DFEFDE70F981F75D9 + 8361AEEA2686CDFB4EE136609FD33106A77D56605BD79BEE033B1B044036C75F + F76698AEB88161E7A133B80D00391BDDE69FBFFE30FC028AA5DFF567E8975CCD + 70F0D4454C0372623D195C0E58A384F862ED6D0CB157BDC0EC2972EB18721E05 + 317489AE643876EE32A601E9916E605BFEFCFE07B639E2A23BC37CF52D60B1DF + BF21B8F0792843ABE03286D397AE611A9018EA0CD70CF202CC6674D0C0BB98E1 + C2B59B9806C40638C23583FC8D6CF36F688C80F0BF7FFF192EDDB8856940848F + 2DC38A2D8789CE89180680044805200300115980F04CC063740000000049454E + 44AE426082} + Name = 'PngImage2' + Background = clWindow + end> + Left = 288 + Bitmap = {} + end + object DADataSource: TDADataSource + Left = 320 + end +end diff --git a/Modulos/Presupuestos_/Cliente/uViewPresupuestoRelacionado.pas b/Modulos/Presupuestos_/Cliente/uViewPresupuestoRelacionado.pas new file mode 100644 index 0000000..8be171b --- /dev/null +++ b/Modulos/Presupuestos_/Cliente/uViewPresupuestoRelacionado.pas @@ -0,0 +1,111 @@ +unit uViewPresupuestoRelacionado; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, ExtCtrls, StdCtrls, cxControls, cxContainer, cxEdit, + cxTextEdit, cxDBEdit, ComCtrls, ToolWin, ImgList, PngImageList, ActnList, + DB, uDADataTable, uBizPresupuestosCliente; + +type + IViewPresupuestoRelacionado = interface(IViewBase) + ['{42655AAC-2669-452D-8E56-C9AF657EF2BF}'] + + function GetPresupuesto: IBizPresupuestos; + procedure SetPresupuesto(const Value: IBizPresupuestos); + property Presupuesto: IBizPresupuestos read GetPresupuesto write SetPresupuesto; + + function GetOnPresupuestoChanged : TNotifyEvent; + procedure SetOnPresupuestoChanged (const Value : TNotifyEvent); + property OnPresupuestoChanged : TNotifyEvent read GetOnPresupuestoChanged + write SetOnPresupuestoChanged; + end; + + TfrViewPresupuestoRelacionado = class(TfrViewBase, IViewPresupuestoRelacionado) + Label5: TLabel; + Bevel1: TBevel; + ActionList1: TActionList; + actElegirPresupuesto: TAction; + actVerPresupuesto: TAction; + PngImageList: TPngImageList; + ToolBar1: TToolBar; + ToolButton1: TToolButton; + ToolButton3: TToolButton; + ToolButton2: TToolButton; + lblNombre: TLabel; + DADataSource: TDADataSource; + edtlReferencia: TcxDBTextEdit; + procedure actVerPresupuestoExecute(Sender: TObject); + procedure actVerPresupuestoUpdate(Sender: TObject); + private + FPresupuesto : IBizPresupuestos; + FOnPresupuestoChanged : TNotifyEvent; + protected + function GetPresupuesto: IBizPresupuestos; + procedure SetPresupuesto(const Value: IBizPresupuestos); + + function GetOnPresupuestoChanged : TNotifyEvent; + procedure SetOnPresupuestoChanged (const Value : TNotifyEvent); + public + property Presupuesto: IBizPresupuestos read GetPresupuesto write SetPresupuesto; + property OnPresupuestoChanged : TNotifyEvent read GetOnPresupuestoChanged + write SetOnPresupuestoChanged; + end; + +var + frViewPresupuestoRelacionado: TfrViewPresupuestoRelacionado; + +implementation + +uses + uDataModulePresupuestos, schPresupuestosClient_Intf; + +{$R *.dfm} + +{ TfrViewPresupuestoAlbaran } + +procedure TfrViewPresupuestoRelacionado.actVerPresupuestoExecute( + Sender: TObject); +begin + FPresupuesto.Show; +end; + +procedure TfrViewPresupuestoRelacionado.actVerPresupuestoUpdate( + Sender: TObject); +begin + inherited; + (Sender as TAction).Enabled := Assigned(FPresupuesto); +end; + +function TfrViewPresupuestoRelacionado.GetPresupuesto: IBizPresupuestos; +begin + Result := FPresupuesto; +end; + +procedure TfrViewPresupuestoRelacionado.SetPresupuesto( + const Value: IBizPresupuestos); +begin + FPresupuesto := Value; + DADataSource.DataTable := FPresupuesto.DataTable; + + if not FPresupuesto.DataTable.Active then + FPresupuesto.DataTable.Active := True; + + if Assigned(FOnPresupuestoChanged) then + FOnPresupuestoChanged(Self); +end; + + +function TfrViewPresupuestoRelacionado.GetOnPresupuestoChanged: TNotifyEvent; +begin + Result := FOnPresupuestoChanged; +end; + +procedure TfrViewPresupuestoRelacionado.SetOnPresupuestoChanged( + const Value: TNotifyEvent); +begin + FOnPresupuestoChanged := Value; +end; + +end. diff --git a/Modulos/Presupuestos_/Cliente/uViewPresupuestos.ddp b/Modulos/Presupuestos_/Cliente/uViewPresupuestos.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Presupuestos_/Cliente/uViewPresupuestos.ddp differ diff --git a/Modulos/Presupuestos_/Cliente/uViewPresupuestos.dfm b/Modulos/Presupuestos_/Cliente/uViewPresupuestos.dfm new file mode 100644 index 0000000..469098d --- /dev/null +++ b/Modulos/Presupuestos_/Cliente/uViewPresupuestos.dfm @@ -0,0 +1,195 @@ +inherited frViewPresupuestos: TfrViewPresupuestos + inherited cxGrid: TcxGrid + RootLevelOptions.DetailTabsPosition = dtpTop + OnActiveTabChanged = cxGridActiveTabChanged + inherited cxGridView: TcxGridDBTableView + DataController.KeyFieldNames = 'CODIGO' + DataController.Summary.FooterSummaryItems = < + item + Format = '0 presupuestos' + Kind = skCount + Column = cxGridViewNOMBRE + end> + Styles.OnGetContentStyle = cxGridViewStylesGetContentStyle + object cxGridViewICONO: TcxGridDBColumn + OnCustomDrawCell = cxGridViewCODIGOCustomDrawCell + BestFitMaxWidth = 25 + Options.Sorting = False + Width = 20 + end + object cxGridViewSITUACION: TcxGridDBColumn + DataBinding.FieldName = 'SITUACION' + PropertiesClassName = 'TcxImageComboBoxProperties' + Properties.Images = PngImageList + Properties.Items = < + item + Description = 'Pendiente' + Value = 'Pendiente' + end + item + Description = 'Aceptado' + ImageIndex = 0 + Value = 'Aceptado' + end + item + Description = 'Rechazado' + ImageIndex = 1 + Value = 'Rechazado' + end> + Properties.ShowDescriptions = False + BestFitMaxWidth = 25 + Width = 20 + IsCaptionAssigned = True + end + object cxGridViewCODIGO: TcxGridDBColumn + DataBinding.FieldName = 'CODIGO' + Visible = False + BestFitMaxWidth = 25 + Width = 25 + IsCaptionAssigned = True + end + object cxGridViewFECHAPRESUPUESTO: TcxGridDBColumn + DataBinding.FieldName = 'FECHAPRESUPUESTO' + SortIndex = 0 + SortOrder = soDescending + Width = 63 + end + object cxGridViewREFERENCIA: TcxGridDBColumn + DataBinding.FieldName = 'REFERENCIA' + Width = 44 + end + object cxGridViewTIPO: TcxGridDBColumn + Caption = 'Tipo' + DataBinding.FieldName = 'TIPO' + end + object cxGridViewNOMBRE: TcxGridDBColumn + Caption = 'Cliente' + DataBinding.FieldName = 'NOMBRE' + Width = 315 + end + object cxGridViewVIGENCIAPRESUPUESTO: TcxGridDBColumn + Caption = 'Vigencia' + DataBinding.FieldName = 'VIGENCIAPRESUPUESTO' + Width = 74 + end + object cxGridViewIMPORTETOTAL: TcxGridDBColumn + DataBinding.FieldName = 'IMPORTETOTAL' + PropertiesClassName = 'TcxTextEditProperties' + Properties.Alignment.Horz = taRightJustify + HeaderAlignmentHorz = taRightJustify + Width = 86 + end + end + object cxGridDBTableView1: TcxGridDBTableView [1] + NavigatorButtons.ConfirmDelete = False + DataController.Summary.DefaultGroupSummaryItems = <> + DataController.Summary.FooterSummaryItems = <> + DataController.Summary.SummaryGroups = <> + end + inherited cxGridLevel: TcxGridLevel + Caption = 'Todos' + end + object cxGridLevel1: TcxGridLevel + Caption = 'Pendientes' + end + object cxGridLevel2: TcxGridLevel + Caption = 'Aceptados' + end + object cxGridLevel3: TcxGridLevel + Caption = 'Rechazados' + end + end + inherited dxComponentPrinter: TdxComponentPrinter + inherited dxComponentPrinterLink: TdxGridReportLink + ReportDocument.CreationDate = 38673.741107951390000000 + BuiltInReportLink = True + end + end + inherited cxStyleRepository1: TcxStyleRepository + Left = 240 + object cxStyleRechazado: TcxStyle + AssignedValues = [svTextColor] + TextColor = clGrayText + end + object cxStyleAceptado: TcxStyle + end + 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 + 610000000970485973000017120000171201679FD252000001774944415478DA + 63FCFFFF3FC384055BFF3390010A12BC1919610600394469FAF3F71FC3EF3F7F + 192CBCB3192EEE99856A80C35E4B14C5079C8F836964F1ED368718662EDFC530 + 7FC9464C03F0815FBFFF826D06D10BD7EDC36E00BA0BB0815586BB18966D3A84 + DB0098B341E01F50EECF9F7F709B034F3B312CD3DDC1B06ADB11FC06C05CB2CB + EE0883DB211BB8CD61E7DD18166A6E6558BFEB387E03D06DFEFDE70F981F75D9 + 8361AEEA2686CDFB4EE136609FD33106A77D56605BD79BEE033B1B044036C75F + F76698AEB88161E7A133B80D00391BDDE69FBFFE30FC028AA5DFF567E8975CCD + 70F0D4454C0372623D195C0E58A384F862ED6D0CB157BDC0EC2972EB18721E05 + 317489AE643876EE32A601E9916E605BFEFCFE07B639E2A23BC37CF52D60B1DF + BF21B8F0792843ABE03286D397AE611A9018EA0CD70CF202CC6674D0C0BB98E1 + C2B59B9806C40638C23583FC8D6CF36F688C80F0BF7FFF192EDDB8856940848F + 2DC38A2D8789CE89180680044805200300115980F04CC063740000000049454E + 44AE426082} + Name = 'PngImage2' + Background = clWindow + end> + Left = 56 + Top = 48 + Bitmap = {} + end +end diff --git a/Modulos/Presupuestos_/Cliente/uViewPresupuestos.pas b/Modulos/Presupuestos_/Cliente/uViewPresupuestos.pas new file mode 100644 index 0000000..2499ff9 --- /dev/null +++ b/Modulos/Presupuestos_/Cliente/uViewPresupuestos.pas @@ -0,0 +1,135 @@ +unit uViewPresupuestos; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewGrid, uViewPreview, frxClass, frxPreview, cxStyles, + cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, DB, + cxDBData, ActnList, uDADataTable, cxGridLevel, cxClasses, cxControls, + cxGridCustomView, cxGridCustomTableView, cxGridTableView, + cxGridDBTableView, cxGrid, uBizPresupuestosCliente, StdCtrls, ExtCtrls, + cxLabel, dxPSGlbl, dxPSUtl, dxPSEngn, dxPrnPg, dxBkgnd, dxWrap, dxPrnDev, + dxPSCompsProvider, dxPSFillPatterns, dxPSEdgePatterns, cxIntlPrintSys3, + dxPSCore, dxPScxCommon, dxPScxGridLnk, cxImage, cxImageComboBox, ImgList, + PngImageList, cxTextEdit, Grids, DBGrids; + +type + IViewPresupuestos = interface(IViewGrid) + ['{8C0A5647-E0E7-40CD-80EC-88DD46383368}'] + function GetPresupuestos: IBizPresupuestos; + procedure SetPresupuestos(const Value: IBizPresupuestos); + property Presupuestos: IBizPresupuestos read GetPresupuestos write + SetPresupuestos; + end; + + TfrViewPresupuestos = class(TfrViewGrid, IViewPresupuestos) + cxGridDBTableView1: TcxGridDBTableView; + cxGridLevel1: TcxGridLevel; + cxGridLevel2: TcxGridLevel; + cxGridLevel3: TcxGridLevel; + cxGridViewCODIGO: TcxGridDBColumn; + cxGridViewICONO: TcxGridDBColumn; + cxGridViewFECHAPRESUPUESTO: TcxGridDBColumn; + cxGridViewIMPORTETOTAL: TcxGridDBColumn; + cxGridViewNOMBRE: TcxGridDBColumn; + cxGridViewREFERENCIA: TcxGridDBColumn; + cxGridViewSITUACION: TcxGridDBColumn; + cxGridViewVIGENCIAPRESUPUESTO: TcxGridDBColumn; + PngImageList: TPngImageList; + cxStyleRechazado: TcxStyle; + cxStyleAceptado: TcxStyle; + cxGridViewTIPO: TcxGridDBColumn; + procedure cxGridActiveTabChanged(Sender: TcxCustomGrid; ALevel: + TcxGridLevel); + procedure cxGridViewCODIGOCustomDrawCell(Sender: TcxCustomGridTableView; + ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var + ADone: Boolean); + procedure cxGridViewStylesGetContentStyle(Sender: TcxCustomGridTableView; + ARecord: TcxCustomGridRecord; AItem: TcxCustomGridTableItem; out + AStyle: TcxStyle); + protected + FPresupuestos: IBizPresupuestos; + function GetPresupuestos: IBizPresupuestos; + procedure SetPresupuestos(const Value: IBizPresupuestos); + public + property Presupuestos: IBizPresupuestos read GetPresupuestos write + SetPresupuestos; + end; + +var + frViewPresupuestos: TfrViewPresupuestos; + +implementation + +uses uDataModulePresupuestos, schPresupuestosClient_Intf; + +{$R *.dfm} + +procedure TfrViewPresupuestos.cxGridActiveTabChanged(Sender: TcxCustomGrid; + ALevel: TcxGridLevel); +var + AItemList: TcxFilterCriteriaItemList; +begin + inherited; + + cxGridView.DataController.Filter.BeginUpdate; + cxGridView.DataController.Filter.Clear; + + case ALevel.Index of + 1 : cxGridView.DataController.Filter.Root.AddItem(cxGridViewSITUACION, foEqual, SITUACION_PENDIENTE, SITUACION_PENDIENTE); + 2 : cxGridView.DataController.Filter.Root.AddItem(cxGridViewSITUACION, foEqual, SITUACION_ACEPTADO, SITUACION_ACEPTADO); + 3 : cxGridView.DataController.Filter.Root.AddItem(cxGridViewSITUACION, foEqual, SITUACION_RECHAZADO, SITUACION_RECHAZADO); + end; + + if not cxGridView.DataController.Filter.IsEmpty then + cxGridView.DataController.Filter.Active := True; + cxGridView.DataController.Filter.EndUpdate; + ALevel.GridView := cxGridView; +end; + +procedure TfrViewPresupuestos.cxGridViewCODIGOCustomDrawCell(Sender: + TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: + TcxGridTableDataCellViewInfo; var ADone: Boolean); +var + R: TRect; +begin + inherited; + R := AViewInfo.ContentBounds; + ACanvas.FillRect(R); + ACanvas.DrawImage(PngImageList, R.Left, R.Top, 2); + ADone := True; +end; + +procedure TfrViewPresupuestos.cxGridViewStylesGetContentStyle(Sender: + TcxCustomGridTableView; ARecord: TcxCustomGridRecord; AItem: + TcxCustomGridTableItem; out AStyle: TcxStyle); +var + IndiceCol: Integer; + ASituacion: string; +begin + inherited; + if Assigned(ARecord) then + begin + IndiceCol := (Sender as TcxGridDBTableView).GetColumnByFieldName(fld_PresupuestosSITUACION).Index; + ASituacion := VarToStr(ARecord.DisplayTexts[IndiceCol]); + if ASituacion = SITUACION_ACEPTADO then + AStyle := cxStyleAceptado + else if ASituacion = SITUACION_RECHAZADO then + AStyle := cxStyleRechazado; + end; +end; + +function TfrViewPresupuestos.GetPresupuestos: IBizPresupuestos; +begin + Result := FPresupuestos; +end; + +procedure TfrViewPresupuestos.SetPresupuestos(const Value: IBizPresupuestos); +begin + FPresupuestos := Value; + if Assigned(FPresupuestos) then + DADataSource.DataTable := FPresupuestos.DataTable; +end; + +end. diff --git a/Modulos/Presupuestos_/Cliente/uViewSituacionPresupuesto.dfm b/Modulos/Presupuestos_/Cliente/uViewSituacionPresupuesto.dfm new file mode 100644 index 0000000..3572120 --- /dev/null +++ b/Modulos/Presupuestos_/Cliente/uViewSituacionPresupuesto.dfm @@ -0,0 +1,156 @@ +inherited frViewSituacionPresupuesto: TfrViewSituacionPresupuesto + Width = 360 + Height = 100 + Constraints.MinHeight = 85 + Constraints.MinWidth = 360 + DesignSize = ( + 360 + 100) + object Label6: TLabel + Left = 8 + Top = 9 + Width = 54 + Height = 13 + Caption = 'Situaci'#243'n' + Font.Charset = DEFAULT_CHARSET + Font.Color = clActiveCaption + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + ParentFont = False + end + object Bevel2: TBevel + Left = 72 + Top = 9 + Width = 276 + Height = 9 + Anchors = [akLeft, akTop, akRight] + Shape = bsBottomLine + end + object Label4: TLabel + Left = 16 + Top = 33 + Width = 47 + Height = 13 + Caption = 'Situaci'#243'n:' + end + object Label7: TLabel + Left = 16 + Top = 51 + Width = 47 + Height = 26 + Caption = 'Fecha de decisi'#243'n:' + WordWrap = True + end + object edtFechaDecision: TcxDBDateEdit + Left = 100 + Top = 53 + Anchors = [akLeft, akTop, akRight] + DataBinding.DataField = 'FECHADECISION' + DataBinding.DataSource = DADataSource + Properties.ImmediatePost = True + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 0 + Width = 245 + end + object cbiSituacion: TcxDBImageComboBox + Left = 100 + Top = 29 + DataBinding.DataField = 'SITUACION' + DataBinding.DataSource = DADataSource + Properties.Images = ImageList + Properties.ImmediatePost = True + Properties.Items = < + item + Description = 'Pendiente' + Value = 'Pendiente' + end + item + Description = 'Aceptado' + ImageIndex = 0 + Value = 'Aceptado' + end + item + Description = 'Rechazado' + ImageIndex = 1 + Value = 'Rechazado' + end> + Properties.OnCloseUp = cbiSituacionPropertiesCloseUp + Properties.OnEditValueChanged = cbiSituacionPropertiesEditValueChanged + Style.LookAndFeel.Kind = lfUltraFlat + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.Kind = lfUltraFlat + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.Kind = lfUltraFlat + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.Kind = lfUltraFlat + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 1 + Width = 245 + end + object DADataSource: TDADataSource + Left = 296 + Top = 24 + end + object ImageList: 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> + Left = 104 + Top = 65528 + Bitmap = {} + end +end diff --git a/Modulos/Presupuestos_/Cliente/uViewSituacionPresupuesto.pas b/Modulos/Presupuestos_/Cliente/uViewSituacionPresupuesto.pas new file mode 100644 index 0000000..c1c2dd5 --- /dev/null +++ b/Modulos/Presupuestos_/Cliente/uViewSituacionPresupuesto.pas @@ -0,0 +1,96 @@ +unit uViewSituacionPresupuesto; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, cxGraphics, DB, uDADataTable, cxDropDownEdit, + cxCalendar, cxDBEdit, cxControls, cxContainer, cxEdit, cxTextEdit, + cxMaskEdit, ExtCtrls, StdCtrls, ImgList, PngImageList, cxImageComboBox; + +type + TfrViewSituacionPresupuesto = class(TfrViewBase) + Bevel2: TBevel; + cbiSituacion: TcxDBImageComboBox; + DADataSource: TDADataSource; + edtFechaDecision: TcxDBDateEdit; + ImageList: TPngImageList; + Label4: TLabel; + Label6: TLabel; + Label7: TLabel; + procedure cbiSituacionPropertiesCloseUp(Sender: TObject); + procedure cbiSituacionPropertiesEditValueChanged(Sender: TObject); + public + constructor Create(AOwner: TComponent); override; + end; + + +implementation + +uses + uBizPresupuestosCliente, cxDateUtils; + +{$R *.dfm} + +{ TfrViewSituacionPresupuesto } + +{ +************************* TfrViewSituacionPresupuesto ************************** +} +constructor TfrViewSituacionPresupuesto.Create(AOwner: TComponent); +begin + inherited; + with cbiSituacion.Properties.Items do + begin + Clear; + with Add do + begin + Description := SITUACION_PENDIENTE; + ImageIndex := -1; + Value := SITUACION_PENDIENTE; + end; + with Add do + begin + Description := SITUACION_ACEPTADO; + ImageIndex := 0; + Value := SITUACION_ACEPTADO; + end; + with Add do + begin + Description := SITUACION_RECHAZADO; + ImageIndex := 1; + Value := SITUACION_RECHAZADO; + end; + end; +end; + +procedure TfrViewSituacionPresupuesto.cbiSituacionPropertiesCloseUp( + Sender: TObject); +begin +{ if Assigned(edtFechaDecision.DataBinding.Field) then + begin + if (cbiSituacion.ItemIndex > 0) then + begin + edtFechaDecision.Enabled := True; + if VarIsNull(edtFechaDecision.EditValue) then + begin + DADataSource.DataTable.Edit; + edtFechaDecision.DataBinding.Field.Value := Date; + end; + end + else begin + DADataSource.DataTable.Edit; + edtFechaDecision.DataBinding.Field.Value := Null; + edtFechaDecision.Enabled := False; + end + end;} +end; + +procedure TfrViewSituacionPresupuesto.cbiSituacionPropertiesEditValueChanged( + Sender: TObject); +begin + inherited; + edtFechaDecision.Enabled := (cbiSituacion.ItemIndex > 0); +end; + +end. diff --git a/Modulos/Presupuestos_/Reglas/schPresupuestosClient_Intf.pas b/Modulos/Presupuestos_/Reglas/schPresupuestosClient_Intf.pas new file mode 100644 index 0000000..fcafd14 --- /dev/null +++ b/Modulos/Presupuestos_/Reglas/schPresupuestosClient_Intf.pas @@ -0,0 +1,1594 @@ +unit schPresupuestosClient_Intf; + +interface + +uses + Classes, DB, SysUtils, uROClasses, uDADataTable; + +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_DarReferenciaPresupuesto = '{8993F014-1865-4D64-98E5-353E9BB18CDE}'; + RID_DetallesPresupuestos = '{B42EC01D-5299-42CC-8D90-F058DADBC838}'; + RID_Presupuestos = '{C54617B2-9D65-4DB7-8C6C-993034E9DAAF}'; + RID_Presupuestos_RefreshDataset = '{36882352-6222-4562-95B2-A2E7D3847887}'; + RID_InformeCabeceraPresupuesto = '{1CCF0A82-B3F2-4C9A-97C8-5532C8AFE2FE}'; + RID_InformeDetallesPresupuesto = '{E5783AA8-1B27-48B7-89C8-512EEF2AABD9}'; + + { Data table names } + nme_DarReferenciaPresupuesto = 'DarReferenciaPresupuesto'; + nme_DetallesPresupuestos = 'DetallesPresupuestos'; + nme_Presupuestos = 'Presupuestos'; + nme_Presupuestos_RefreshDataset = 'Presupuestos_RefreshDataset'; + nme_InformeCabeceraPresupuesto = 'InformeCabeceraPresupuesto'; + nme_InformeDetallesPresupuesto = 'InformeDetallesPresupuesto'; + + { DarReferenciaPresupuesto fields } + fld_DarReferenciaPresupuestoREFERENCIA = 'REFERENCIA'; + + { DarReferenciaPresupuesto field indexes } + idx_DarReferenciaPresupuestoREFERENCIA = 0; + + { DetallesPresupuestos fields } + fld_DetallesPresupuestosCODIGOPRESUPUESTO = 'CODIGOPRESUPUESTO'; + fld_DetallesPresupuestosNUMCONCEPTO = 'NUMCONCEPTO'; + fld_DetallesPresupuestosDESCRIPCION = 'DESCRIPCION'; + fld_DetallesPresupuestosCANTIDAD = 'CANTIDAD'; + fld_DetallesPresupuestosIMPORTEUNIDAD = 'IMPORTEUNIDAD'; + fld_DetallesPresupuestosIMPORTETOTAL = 'IMPORTETOTAL'; + fld_DetallesPresupuestosTIPO = 'TIPO'; + fld_DetallesPresupuestosPOSICION = 'POSICION'; + fld_DetallesPresupuestosVISIBLE = 'VISIBLE'; + fld_DetallesPresupuestosPUNTOS = 'PUNTOS'; + fld_DetallesPresupuestosIMPORTEPUNTOS = 'IMPORTEPUNTOS'; + + { DetallesPresupuestos field indexes } + idx_DetallesPresupuestosCODIGOPRESUPUESTO = 0; + idx_DetallesPresupuestosNUMCONCEPTO = 1; + idx_DetallesPresupuestosDESCRIPCION = 2; + idx_DetallesPresupuestosCANTIDAD = 3; + idx_DetallesPresupuestosIMPORTEUNIDAD = 4; + idx_DetallesPresupuestosIMPORTETOTAL = 5; + idx_DetallesPresupuestosTIPO = 6; + idx_DetallesPresupuestosPOSICION = 7; + idx_DetallesPresupuestosVISIBLE = 8; + idx_DetallesPresupuestosPUNTOS = 9; + idx_DetallesPresupuestosIMPORTEPUNTOS = 10; + + { Presupuestos fields } + fld_PresupuestosCODIGOEMPRESA = 'CODIGOEMPRESA'; + fld_PresupuestosCODIGO = 'CODIGO'; + fld_PresupuestosFECHAALTA = 'FECHAALTA'; + fld_PresupuestosUSUARIO = 'USUARIO'; + fld_PresupuestosCODIGOCONTACTO = 'CODIGOCONTACTO'; + fld_PresupuestosNOMBRE = 'NOMBRE'; + fld_PresupuestosREFERENCIA = 'REFERENCIA'; + fld_PresupuestosTIPO = 'TIPO'; + fld_PresupuestosFECHAPRESUPUESTO = 'FECHAPRESUPUESTO'; + fld_PresupuestosVIGENCIAPRESUPUESTO = 'VIGENCIAPRESUPUESTO'; + fld_PresupuestosSITUACION = 'SITUACION'; + fld_PresupuestosFECHADECISION = 'FECHADECISION'; + fld_PresupuestosBASEIMPONIBLE = 'BASEIMPONIBLE'; + fld_PresupuestosDESCUENTO = 'DESCUENTO'; + fld_PresupuestosIMPORTEDESCUENTO = 'IMPORTEDESCUENTO'; + fld_PresupuestosIVA = 'IVA'; + fld_PresupuestosIMPORTEIVA = 'IMPORTEIVA'; + fld_PresupuestosIMPORTETOTAL = 'IMPORTETOTAL'; + fld_PresupuestosOBSERVACIONES = 'OBSERVACIONES'; + fld_PresupuestosPLAZOENTREGA = 'PLAZOENTREGA'; + fld_PresupuestosFORMAPAGO = 'FORMAPAGO'; + fld_PresupuestosCODIGOALBARAN = 'CODIGOALBARAN'; + + { Presupuestos field indexes } + idx_PresupuestosCODIGOEMPRESA = 0; + idx_PresupuestosCODIGO = 1; + idx_PresupuestosFECHAALTA = 2; + idx_PresupuestosUSUARIO = 3; + idx_PresupuestosCODIGOCONTACTO = 4; + idx_PresupuestosNOMBRE = 5; + idx_PresupuestosREFERENCIA = 6; + idx_PresupuestosTIPO = 7; + idx_PresupuestosFECHAPRESUPUESTO = 8; + idx_PresupuestosVIGENCIAPRESUPUESTO = 9; + idx_PresupuestosSITUACION = 10; + idx_PresupuestosFECHADECISION = 11; + idx_PresupuestosBASEIMPONIBLE = 12; + idx_PresupuestosDESCUENTO = 13; + idx_PresupuestosIMPORTEDESCUENTO = 14; + idx_PresupuestosIVA = 15; + idx_PresupuestosIMPORTEIVA = 16; + idx_PresupuestosIMPORTETOTAL = 17; + idx_PresupuestosOBSERVACIONES = 18; + idx_PresupuestosPLAZOENTREGA = 19; + idx_PresupuestosFORMAPAGO = 20; + idx_PresupuestosCODIGOALBARAN = 21; + + { Presupuestos_RefreshDataset fields } + fld_Presupuestos_RefreshDatasetCODIGO = 'CODIGO'; + fld_Presupuestos_RefreshDatasetNOMBRE = 'NOMBRE'; + fld_Presupuestos_RefreshDatasetCODIGOALBARAN = 'CODIGOALBARAN'; + + { Presupuestos_RefreshDataset field indexes } + idx_Presupuestos_RefreshDatasetCODIGO = 0; + idx_Presupuestos_RefreshDatasetNOMBRE = 1; + idx_Presupuestos_RefreshDatasetCODIGOALBARAN = 2; + + { InformeCabeceraPresupuesto fields } + fld_InformeCabeceraPresupuestoCODIGOEMPRESA = 'CODIGOEMPRESA'; + fld_InformeCabeceraPresupuestoCODIGO = 'CODIGO'; + fld_InformeCabeceraPresupuestoFECHAALTA = 'FECHAALTA'; + fld_InformeCabeceraPresupuestoUSUARIO = 'USUARIO'; + fld_InformeCabeceraPresupuestoCODIGOCONTACTO = 'CODIGOCONTACTO'; + fld_InformeCabeceraPresupuestoREFERENCIA = 'REFERENCIA'; + fld_InformeCabeceraPresupuestoTIPO = 'TIPO'; + fld_InformeCabeceraPresupuestoFECHAPRESUPUESTO = 'FECHAPRESUPUESTO'; + fld_InformeCabeceraPresupuestoVIGENCIAPRESUPUESTO = 'VIGENCIAPRESUPUESTO'; + fld_InformeCabeceraPresupuestoSITUACION = 'SITUACION'; + fld_InformeCabeceraPresupuestoFECHADECISION = 'FECHADECISION'; + fld_InformeCabeceraPresupuestoBASEIMPONIBLE = 'BASEIMPONIBLE'; + fld_InformeCabeceraPresupuestoDESCUENTO = 'DESCUENTO'; + fld_InformeCabeceraPresupuestoIMPORTEDESCUENTO = 'IMPORTEDESCUENTO'; + fld_InformeCabeceraPresupuestoIVA = 'IVA'; + fld_InformeCabeceraPresupuestoIMPORTEIVA = 'IMPORTEIVA'; + fld_InformeCabeceraPresupuestoIMPORTETOTAL = 'IMPORTETOTAL'; + fld_InformeCabeceraPresupuestoOBSERVACIONES = 'OBSERVACIONES'; + fld_InformeCabeceraPresupuestoPLAZOENTREGA = 'PLAZOENTREGA'; + fld_InformeCabeceraPresupuestoFORMAPAGO = 'FORMAPAGO'; + fld_InformeCabeceraPresupuestoNIFCIF = 'NIFCIF'; + fld_InformeCabeceraPresupuestoNOMBRE = 'NOMBRE'; + fld_InformeCabeceraPresupuestoCALLE = 'CALLE'; + fld_InformeCabeceraPresupuestoCODIGOPOSTAL = 'CODIGOPOSTAL'; + fld_InformeCabeceraPresupuestoPOBLACION = 'POBLACION'; + fld_InformeCabeceraPresupuestoTELEFONO1 = 'TELEFONO1'; + fld_InformeCabeceraPresupuestoTELEFONO2 = 'TELEFONO2'; + fld_InformeCabeceraPresupuestoMOVIL = 'MOVIL'; + + { InformeCabeceraPresupuesto field indexes } + idx_InformeCabeceraPresupuestoCODIGOEMPRESA = 0; + idx_InformeCabeceraPresupuestoCODIGO = 1; + idx_InformeCabeceraPresupuestoFECHAALTA = 2; + idx_InformeCabeceraPresupuestoUSUARIO = 3; + idx_InformeCabeceraPresupuestoCODIGOCONTACTO = 4; + idx_InformeCabeceraPresupuestoREFERENCIA = 5; + idx_InformeCabeceraPresupuestoTIPO = 6; + idx_InformeCabeceraPresupuestoFECHAPRESUPUESTO = 7; + idx_InformeCabeceraPresupuestoVIGENCIAPRESUPUESTO = 8; + idx_InformeCabeceraPresupuestoSITUACION = 9; + idx_InformeCabeceraPresupuestoFECHADECISION = 10; + idx_InformeCabeceraPresupuestoBASEIMPONIBLE = 11; + idx_InformeCabeceraPresupuestoDESCUENTO = 12; + idx_InformeCabeceraPresupuestoIMPORTEDESCUENTO = 13; + idx_InformeCabeceraPresupuestoIVA = 14; + idx_InformeCabeceraPresupuestoIMPORTEIVA = 15; + idx_InformeCabeceraPresupuestoIMPORTETOTAL = 16; + idx_InformeCabeceraPresupuestoOBSERVACIONES = 17; + idx_InformeCabeceraPresupuestoPLAZOENTREGA = 18; + idx_InformeCabeceraPresupuestoFORMAPAGO = 19; + idx_InformeCabeceraPresupuestoNIFCIF = 20; + idx_InformeCabeceraPresupuestoNOMBRE = 21; + idx_InformeCabeceraPresupuestoCALLE = 22; + idx_InformeCabeceraPresupuestoCODIGOPOSTAL = 23; + idx_InformeCabeceraPresupuestoPOBLACION = 24; + idx_InformeCabeceraPresupuestoTELEFONO1 = 25; + idx_InformeCabeceraPresupuestoTELEFONO2 = 26; + idx_InformeCabeceraPresupuestoMOVIL = 27; + + { InformeDetallesPresupuesto fields } + fld_InformeDetallesPresupuestoCODIGOPRESUPUESTO = 'CODIGOPRESUPUESTO'; + fld_InformeDetallesPresupuestoNUMCONCEPTO = 'NUMCONCEPTO'; + fld_InformeDetallesPresupuestoDESCRIPCION = 'DESCRIPCION'; + fld_InformeDetallesPresupuestoCANTIDAD = 'CANTIDAD'; + fld_InformeDetallesPresupuestoIMPORTEUNIDAD = 'IMPORTEUNIDAD'; + fld_InformeDetallesPresupuestoIMPORTETOTAL = 'IMPORTETOTAL'; + fld_InformeDetallesPresupuestoTIPO = 'TIPO'; + fld_InformeDetallesPresupuestoPOSICION = 'POSICION'; + + { InformeDetallesPresupuesto field indexes } + idx_InformeDetallesPresupuestoCODIGOPRESUPUESTO = 0; + idx_InformeDetallesPresupuestoNUMCONCEPTO = 1; + idx_InformeDetallesPresupuestoDESCRIPCION = 2; + idx_InformeDetallesPresupuestoCANTIDAD = 3; + idx_InformeDetallesPresupuestoIMPORTEUNIDAD = 4; + idx_InformeDetallesPresupuestoIMPORTETOTAL = 5; + idx_InformeDetallesPresupuestoTIPO = 6; + idx_InformeDetallesPresupuestoPOSICION = 7; + +type + { IDarReferenciaPresupuesto } + IDarReferenciaPresupuesto = interface(IDAStronglyTypedDataTable) + ['{6CD77B4B-D69F-48E4-9BC2-D49CDBB89798}'] + { Property getters and setters } + function GetREFERENCIAValue: String; + procedure SetREFERENCIAValue(const aValue: String); + + + { Properties } + property REFERENCIA: String read GetREFERENCIAValue write SetREFERENCIAValue; + end; + + { TDarReferenciaPresupuestoDataTableRules } + TDarReferenciaPresupuestoDataTableRules = class(TDADataTableRules, IDarReferenciaPresupuesto) + private + protected + { Property getters and setters } + function GetREFERENCIAValue: String; virtual; + procedure SetREFERENCIAValue(const aValue: String); virtual; + + { Properties } + property REFERENCIA: String read GetREFERENCIAValue write SetREFERENCIAValue; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + + { IDetallesPresupuestos } + IDetallesPresupuestos = interface(IDAStronglyTypedDataTable) + ['{30E52FE3-133B-4AB5-85F0-F01A84D6162D}'] + { Property getters and setters } + function GetCODIGOPRESUPUESTOValue: Integer; + procedure SetCODIGOPRESUPUESTOValue(const aValue: Integer); + function GetNUMCONCEPTOValue: Integer; + procedure SetNUMCONCEPTOValue(const aValue: Integer); + function GetDESCRIPCIONValue: String; + procedure SetDESCRIPCIONValue(const aValue: String); + function GetCANTIDADValue: Integer; + procedure SetCANTIDADValue(const aValue: Integer); + function GetIMPORTEUNIDADValue: Currency; + procedure SetIMPORTEUNIDADValue(const aValue: Currency); + function GetIMPORTETOTALValue: Currency; + procedure SetIMPORTETOTALValue(const aValue: Currency); + function GetTIPOValue: String; + procedure SetTIPOValue(const aValue: String); + function GetPOSICIONValue: Integer; + procedure SetPOSICIONValue(const aValue: Integer); + function GetVISIBLEValue: String; + procedure SetVISIBLEValue(const aValue: String); + function GetPUNTOSValue: Integer; + procedure SetPUNTOSValue(const aValue: Integer); + function GetIMPORTEPUNTOSValue: Currency; + procedure SetIMPORTEPUNTOSValue(const aValue: Currency); + + + { Properties } + property CODIGOPRESUPUESTO: Integer read GetCODIGOPRESUPUESTOValue write SetCODIGOPRESUPUESTOValue; + property NUMCONCEPTO: Integer read GetNUMCONCEPTOValue write SetNUMCONCEPTOValue; + property DESCRIPCION: String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + property CANTIDAD: Integer read GetCANTIDADValue write SetCANTIDADValue; + property IMPORTEUNIDAD: Currency read GetIMPORTEUNIDADValue write SetIMPORTEUNIDADValue; + property IMPORTETOTAL: Currency read GetIMPORTETOTALValue write SetIMPORTETOTALValue; + property TIPO: String read GetTIPOValue write SetTIPOValue; + property POSICION: Integer read GetPOSICIONValue write SetPOSICIONValue; + property VISIBLE: String read GetVISIBLEValue write SetVISIBLEValue; + property PUNTOS: Integer read GetPUNTOSValue write SetPUNTOSValue; + property IMPORTEPUNTOS: Currency read GetIMPORTEPUNTOSValue write SetIMPORTEPUNTOSValue; + end; + + { TDetallesPresupuestosDataTableRules } + TDetallesPresupuestosDataTableRules = class(TDADataTableRules, IDetallesPresupuestos) + private + protected + { Property getters and setters } + function GetCODIGOPRESUPUESTOValue: Integer; virtual; + procedure SetCODIGOPRESUPUESTOValue(const aValue: Integer); virtual; + function GetNUMCONCEPTOValue: Integer; virtual; + procedure SetNUMCONCEPTOValue(const aValue: Integer); virtual; + function GetDESCRIPCIONValue: String; virtual; + procedure SetDESCRIPCIONValue(const aValue: String); virtual; + function GetCANTIDADValue: Integer; virtual; + procedure SetCANTIDADValue(const aValue: Integer); virtual; + function GetIMPORTEUNIDADValue: Currency; virtual; + procedure SetIMPORTEUNIDADValue(const aValue: Currency); virtual; + function GetIMPORTETOTALValue: Currency; virtual; + procedure SetIMPORTETOTALValue(const aValue: Currency); virtual; + function GetTIPOValue: String; virtual; + procedure SetTIPOValue(const aValue: String); virtual; + function GetPOSICIONValue: Integer; virtual; + procedure SetPOSICIONValue(const aValue: Integer); virtual; + function GetVISIBLEValue: String; virtual; + procedure SetVISIBLEValue(const aValue: String); virtual; + function GetPUNTOSValue: Integer; virtual; + procedure SetPUNTOSValue(const aValue: Integer); virtual; + function GetIMPORTEPUNTOSValue: Currency; virtual; + procedure SetIMPORTEPUNTOSValue(const aValue: Currency); virtual; + + { Properties } + property CODIGOPRESUPUESTO: Integer read GetCODIGOPRESUPUESTOValue write SetCODIGOPRESUPUESTOValue; + property NUMCONCEPTO: Integer read GetNUMCONCEPTOValue write SetNUMCONCEPTOValue; + property DESCRIPCION: String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + property CANTIDAD: Integer read GetCANTIDADValue write SetCANTIDADValue; + property IMPORTEUNIDAD: Currency read GetIMPORTEUNIDADValue write SetIMPORTEUNIDADValue; + property IMPORTETOTAL: Currency read GetIMPORTETOTALValue write SetIMPORTETOTALValue; + property TIPO: String read GetTIPOValue write SetTIPOValue; + property POSICION: Integer read GetPOSICIONValue write SetPOSICIONValue; + property VISIBLE: String read GetVISIBLEValue write SetVISIBLEValue; + property PUNTOS: Integer read GetPUNTOSValue write SetPUNTOSValue; + property IMPORTEPUNTOS: Currency read GetIMPORTEPUNTOSValue write SetIMPORTEPUNTOSValue; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + + { IPresupuestos } + IPresupuestos = interface(IDAStronglyTypedDataTable) + ['{C6AAEE5B-6CC8-4519-9416-1E17CDEA4A8A}'] + { Property getters and setters } + function GetCODIGOEMPRESAValue: Integer; + procedure SetCODIGOEMPRESAValue(const aValue: Integer); + function GetCODIGOValue: Integer; + procedure SetCODIGOValue(const aValue: Integer); + function GetFECHAALTAValue: DateTime; + procedure SetFECHAALTAValue(const aValue: DateTime); + function GetUSUARIOValue: String; + procedure SetUSUARIOValue(const aValue: String); + function GetCODIGOCONTACTOValue: Integer; + procedure SetCODIGOCONTACTOValue(const aValue: Integer); + function GetNOMBREValue: String; + procedure SetNOMBREValue(const aValue: String); + function GetREFERENCIAValue: String; + procedure SetREFERENCIAValue(const aValue: String); + function GetTIPOValue: String; + procedure SetTIPOValue(const aValue: String); + function GetFECHAPRESUPUESTOValue: DateTime; + procedure SetFECHAPRESUPUESTOValue(const aValue: DateTime); + function GetVIGENCIAPRESUPUESTOValue: DateTime; + procedure SetVIGENCIAPRESUPUESTOValue(const aValue: DateTime); + function GetSITUACIONValue: String; + procedure SetSITUACIONValue(const aValue: String); + function GetFECHADECISIONValue: DateTime; + procedure SetFECHADECISIONValue(const aValue: DateTime); + function GetBASEIMPONIBLEValue: Currency; + procedure SetBASEIMPONIBLEValue(const aValue: Currency); + function GetDESCUENTOValue: Float; + procedure SetDESCUENTOValue(const aValue: Float); + function GetIMPORTEDESCUENTOValue: Currency; + procedure SetIMPORTEDESCUENTOValue(const aValue: Currency); + function GetIVAValue: Float; + procedure SetIVAValue(const aValue: Float); + function GetIMPORTEIVAValue: Currency; + procedure SetIMPORTEIVAValue(const aValue: Currency); + function GetIMPORTETOTALValue: Currency; + procedure SetIMPORTETOTALValue(const aValue: Currency); + function GetOBSERVACIONESValue: IROStrings; + procedure SetOBSERVACIONESValue(const aValue: IROStrings); + function GetPLAZOENTREGAValue: IROStrings; + procedure SetPLAZOENTREGAValue(const aValue: IROStrings); + function GetFORMAPAGOValue: IROStrings; + procedure SetFORMAPAGOValue(const aValue: IROStrings); + function GetCODIGOALBARANValue: Integer; + procedure SetCODIGOALBARANValue(const aValue: Integer); + + + { Properties } + property CODIGOEMPRESA: Integer read GetCODIGOEMPRESAValue write SetCODIGOEMPRESAValue; + property CODIGO: Integer read GetCODIGOValue write SetCODIGOValue; + property FECHAALTA: DateTime read GetFECHAALTAValue write SetFECHAALTAValue; + property USUARIO: String read GetUSUARIOValue write SetUSUARIOValue; + property CODIGOCONTACTO: Integer read GetCODIGOCONTACTOValue write SetCODIGOCONTACTOValue; + property NOMBRE: String read GetNOMBREValue write SetNOMBREValue; + property REFERENCIA: String read GetREFERENCIAValue write SetREFERENCIAValue; + property TIPO: String read GetTIPOValue write SetTIPOValue; + property FECHAPRESUPUESTO: DateTime read GetFECHAPRESUPUESTOValue write SetFECHAPRESUPUESTOValue; + property VIGENCIAPRESUPUESTO: DateTime read GetVIGENCIAPRESUPUESTOValue write SetVIGENCIAPRESUPUESTOValue; + property SITUACION: String read GetSITUACIONValue write SetSITUACIONValue; + property FECHADECISION: DateTime read GetFECHADECISIONValue write SetFECHADECISIONValue; + property BASEIMPONIBLE: Currency read GetBASEIMPONIBLEValue write SetBASEIMPONIBLEValue; + property DESCUENTO: Float read GetDESCUENTOValue write SetDESCUENTOValue; + property IMPORTEDESCUENTO: Currency read GetIMPORTEDESCUENTOValue write SetIMPORTEDESCUENTOValue; + property IVA: Float read GetIVAValue write SetIVAValue; + property IMPORTEIVA: Currency read GetIMPORTEIVAValue write SetIMPORTEIVAValue; + property IMPORTETOTAL: Currency read GetIMPORTETOTALValue write SetIMPORTETOTALValue; + property OBSERVACIONES: IROStrings read GetOBSERVACIONESValue write SetOBSERVACIONESValue; + property PLAZOENTREGA: IROStrings read GetPLAZOENTREGAValue write SetPLAZOENTREGAValue; + property FORMAPAGO: IROStrings read GetFORMAPAGOValue write SetFORMAPAGOValue; + property CODIGOALBARAN: Integer read GetCODIGOALBARANValue write SetCODIGOALBARANValue; + end; + + { TPresupuestosDataTableRules } + TPresupuestosDataTableRules = class(TDADataTableRules, IPresupuestos) + private + protected + { Property getters and setters } + function GetCODIGOEMPRESAValue: Integer; virtual; + procedure SetCODIGOEMPRESAValue(const aValue: Integer); virtual; + function GetCODIGOValue: Integer; virtual; + procedure SetCODIGOValue(const aValue: Integer); virtual; + function GetFECHAALTAValue: DateTime; virtual; + procedure SetFECHAALTAValue(const aValue: DateTime); virtual; + function GetUSUARIOValue: String; virtual; + procedure SetUSUARIOValue(const aValue: String); virtual; + function GetCODIGOCONTACTOValue: Integer; virtual; + procedure SetCODIGOCONTACTOValue(const aValue: Integer); virtual; + function GetNOMBREValue: String; virtual; + procedure SetNOMBREValue(const aValue: String); virtual; + function GetREFERENCIAValue: String; virtual; + procedure SetREFERENCIAValue(const aValue: String); virtual; + function GetTIPOValue: String; virtual; + procedure SetTIPOValue(const aValue: String); virtual; + function GetFECHAPRESUPUESTOValue: DateTime; virtual; + procedure SetFECHAPRESUPUESTOValue(const aValue: DateTime); virtual; + function GetVIGENCIAPRESUPUESTOValue: DateTime; virtual; + procedure SetVIGENCIAPRESUPUESTOValue(const aValue: DateTime); virtual; + function GetSITUACIONValue: String; virtual; + procedure SetSITUACIONValue(const aValue: String); virtual; + function GetFECHADECISIONValue: DateTime; virtual; + procedure SetFECHADECISIONValue(const aValue: DateTime); virtual; + function GetBASEIMPONIBLEValue: Currency; virtual; + procedure SetBASEIMPONIBLEValue(const aValue: Currency); virtual; + function GetDESCUENTOValue: Float; virtual; + procedure SetDESCUENTOValue(const aValue: Float); virtual; + function GetIMPORTEDESCUENTOValue: Currency; virtual; + procedure SetIMPORTEDESCUENTOValue(const aValue: Currency); virtual; + function GetIVAValue: Float; virtual; + procedure SetIVAValue(const aValue: Float); virtual; + function GetIMPORTEIVAValue: Currency; virtual; + procedure SetIMPORTEIVAValue(const aValue: Currency); virtual; + function GetIMPORTETOTALValue: Currency; virtual; + procedure SetIMPORTETOTALValue(const aValue: Currency); virtual; + function GetOBSERVACIONESValue: IROStrings; virtual; + procedure SetOBSERVACIONESValue(const aValue: IROStrings); virtual; + function GetPLAZOENTREGAValue: IROStrings; virtual; + procedure SetPLAZOENTREGAValue(const aValue: IROStrings); virtual; + function GetFORMAPAGOValue: IROStrings; virtual; + procedure SetFORMAPAGOValue(const aValue: IROStrings); virtual; + function GetCODIGOALBARANValue: Integer; virtual; + procedure SetCODIGOALBARANValue(const aValue: Integer); virtual; + + { Properties } + property CODIGOEMPRESA: Integer read GetCODIGOEMPRESAValue write SetCODIGOEMPRESAValue; + property CODIGO: Integer read GetCODIGOValue write SetCODIGOValue; + property FECHAALTA: DateTime read GetFECHAALTAValue write SetFECHAALTAValue; + property USUARIO: String read GetUSUARIOValue write SetUSUARIOValue; + property CODIGOCONTACTO: Integer read GetCODIGOCONTACTOValue write SetCODIGOCONTACTOValue; + property NOMBRE: String read GetNOMBREValue write SetNOMBREValue; + property REFERENCIA: String read GetREFERENCIAValue write SetREFERENCIAValue; + property TIPO: String read GetTIPOValue write SetTIPOValue; + property FECHAPRESUPUESTO: DateTime read GetFECHAPRESUPUESTOValue write SetFECHAPRESUPUESTOValue; + property VIGENCIAPRESUPUESTO: DateTime read GetVIGENCIAPRESUPUESTOValue write SetVIGENCIAPRESUPUESTOValue; + property SITUACION: String read GetSITUACIONValue write SetSITUACIONValue; + property FECHADECISION: DateTime read GetFECHADECISIONValue write SetFECHADECISIONValue; + property BASEIMPONIBLE: Currency read GetBASEIMPONIBLEValue write SetBASEIMPONIBLEValue; + property DESCUENTO: Float read GetDESCUENTOValue write SetDESCUENTOValue; + property IMPORTEDESCUENTO: Currency read GetIMPORTEDESCUENTOValue write SetIMPORTEDESCUENTOValue; + property IVA: Float read GetIVAValue write SetIVAValue; + property IMPORTEIVA: Currency read GetIMPORTEIVAValue write SetIMPORTEIVAValue; + property IMPORTETOTAL: Currency read GetIMPORTETOTALValue write SetIMPORTETOTALValue; + property OBSERVACIONES: IROStrings read GetOBSERVACIONESValue write SetOBSERVACIONESValue; + property PLAZOENTREGA: IROStrings read GetPLAZOENTREGAValue write SetPLAZOENTREGAValue; + property FORMAPAGO: IROStrings read GetFORMAPAGOValue write SetFORMAPAGOValue; + property CODIGOALBARAN: Integer read GetCODIGOALBARANValue write SetCODIGOALBARANValue; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + + { IPresupuestos_RefreshDataset } + IPresupuestos_RefreshDataset = interface(IDAStronglyTypedDataTable) + ['{2F046E60-C8D2-49C2-AC38-3F6719F67190}'] + { Property getters and setters } + function GetCODIGOValue: Integer; + procedure SetCODIGOValue(const aValue: Integer); + function GetNOMBREValue: String; + procedure SetNOMBREValue(const aValue: String); + function GetCODIGOALBARANValue: Integer; + procedure SetCODIGOALBARANValue(const aValue: Integer); + + + { Properties } + property CODIGO: Integer read GetCODIGOValue write SetCODIGOValue; + property NOMBRE: String read GetNOMBREValue write SetNOMBREValue; + property CODIGOALBARAN: Integer read GetCODIGOALBARANValue write SetCODIGOALBARANValue; + end; + + { TPresupuestos_RefreshDatasetDataTableRules } + TPresupuestos_RefreshDatasetDataTableRules = class(TDADataTableRules, IPresupuestos_RefreshDataset) + private + protected + { Property getters and setters } + function GetCODIGOValue: Integer; virtual; + procedure SetCODIGOValue(const aValue: Integer); virtual; + function GetNOMBREValue: String; virtual; + procedure SetNOMBREValue(const aValue: String); virtual; + function GetCODIGOALBARANValue: Integer; virtual; + procedure SetCODIGOALBARANValue(const aValue: Integer); virtual; + + { Properties } + property CODIGO: Integer read GetCODIGOValue write SetCODIGOValue; + property NOMBRE: String read GetNOMBREValue write SetNOMBREValue; + property CODIGOALBARAN: Integer read GetCODIGOALBARANValue write SetCODIGOALBARANValue; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + + { IInformeCabeceraPresupuesto } + IInformeCabeceraPresupuesto = interface(IDAStronglyTypedDataTable) + ['{0DBF6148-74D7-4B5F-87D8-F7A9B7C52824}'] + { Property getters and setters } + function GetCODIGOEMPRESAValue: Integer; + procedure SetCODIGOEMPRESAValue(const aValue: Integer); + function GetCODIGOValue: Integer; + procedure SetCODIGOValue(const aValue: Integer); + function GetFECHAALTAValue: DateTime; + procedure SetFECHAALTAValue(const aValue: DateTime); + function GetUSUARIOValue: String; + procedure SetUSUARIOValue(const aValue: String); + function GetCODIGOCONTACTOValue: Integer; + procedure SetCODIGOCONTACTOValue(const aValue: Integer); + function GetREFERENCIAValue: String; + procedure SetREFERENCIAValue(const aValue: String); + function GetTIPOValue: String; + procedure SetTIPOValue(const aValue: String); + function GetFECHAPRESUPUESTOValue: DateTime; + procedure SetFECHAPRESUPUESTOValue(const aValue: DateTime); + function GetVIGENCIAPRESUPUESTOValue: DateTime; + procedure SetVIGENCIAPRESUPUESTOValue(const aValue: DateTime); + function GetSITUACIONValue: String; + procedure SetSITUACIONValue(const aValue: String); + function GetFECHADECISIONValue: DateTime; + procedure SetFECHADECISIONValue(const aValue: DateTime); + function GetBASEIMPONIBLEValue: Float; + procedure SetBASEIMPONIBLEValue(const aValue: Float); + function GetDESCUENTOValue: Float; + procedure SetDESCUENTOValue(const aValue: Float); + function GetIMPORTEDESCUENTOValue: Float; + procedure SetIMPORTEDESCUENTOValue(const aValue: Float); + function GetIVAValue: Float; + procedure SetIVAValue(const aValue: Float); + function GetIMPORTEIVAValue: Float; + procedure SetIMPORTEIVAValue(const aValue: Float); + function GetIMPORTETOTALValue: Float; + procedure SetIMPORTETOTALValue(const aValue: Float); + function GetOBSERVACIONESValue: IROStrings; + procedure SetOBSERVACIONESValue(const aValue: IROStrings); + function GetPLAZOENTREGAValue: IROStrings; + procedure SetPLAZOENTREGAValue(const aValue: IROStrings); + function GetFORMAPAGOValue: IROStrings; + procedure SetFORMAPAGOValue(const aValue: IROStrings); + function GetNIFCIFValue: String; + procedure SetNIFCIFValue(const aValue: String); + function GetNOMBREValue: String; + procedure SetNOMBREValue(const aValue: String); + function GetCALLEValue: String; + procedure SetCALLEValue(const aValue: String); + function GetCODIGOPOSTALValue: String; + procedure SetCODIGOPOSTALValue(const aValue: String); + function GetPOBLACIONValue: String; + procedure SetPOBLACIONValue(const aValue: String); + function GetTELEFONO1Value: String; + procedure SetTELEFONO1Value(const aValue: String); + function GetTELEFONO2Value: String; + procedure SetTELEFONO2Value(const aValue: String); + function GetMOVILValue: String; + procedure SetMOVILValue(const aValue: String); + + + { Properties } + property CODIGOEMPRESA: Integer read GetCODIGOEMPRESAValue write SetCODIGOEMPRESAValue; + property CODIGO: Integer read GetCODIGOValue write SetCODIGOValue; + property FECHAALTA: DateTime read GetFECHAALTAValue write SetFECHAALTAValue; + property USUARIO: String read GetUSUARIOValue write SetUSUARIOValue; + property CODIGOCONTACTO: Integer read GetCODIGOCONTACTOValue write SetCODIGOCONTACTOValue; + property REFERENCIA: String read GetREFERENCIAValue write SetREFERENCIAValue; + property TIPO: String read GetTIPOValue write SetTIPOValue; + property FECHAPRESUPUESTO: DateTime read GetFECHAPRESUPUESTOValue write SetFECHAPRESUPUESTOValue; + property VIGENCIAPRESUPUESTO: DateTime read GetVIGENCIAPRESUPUESTOValue write SetVIGENCIAPRESUPUESTOValue; + property SITUACION: String read GetSITUACIONValue write SetSITUACIONValue; + property FECHADECISION: DateTime read GetFECHADECISIONValue write SetFECHADECISIONValue; + property BASEIMPONIBLE: Float read GetBASEIMPONIBLEValue write SetBASEIMPONIBLEValue; + property DESCUENTO: Float read GetDESCUENTOValue write SetDESCUENTOValue; + property IMPORTEDESCUENTO: Float read GetIMPORTEDESCUENTOValue write SetIMPORTEDESCUENTOValue; + property IVA: Float read GetIVAValue write SetIVAValue; + property IMPORTEIVA: Float read GetIMPORTEIVAValue write SetIMPORTEIVAValue; + property IMPORTETOTAL: Float read GetIMPORTETOTALValue write SetIMPORTETOTALValue; + property OBSERVACIONES: IROStrings read GetOBSERVACIONESValue write SetOBSERVACIONESValue; + property PLAZOENTREGA: IROStrings read GetPLAZOENTREGAValue write SetPLAZOENTREGAValue; + property FORMAPAGO: IROStrings read GetFORMAPAGOValue write SetFORMAPAGOValue; + property NIFCIF: String read GetNIFCIFValue write SetNIFCIFValue; + property NOMBRE: String read GetNOMBREValue write SetNOMBREValue; + property CALLE: String read GetCALLEValue write SetCALLEValue; + property CODIGOPOSTAL: String read GetCODIGOPOSTALValue write SetCODIGOPOSTALValue; + property POBLACION: String read GetPOBLACIONValue write SetPOBLACIONValue; + property TELEFONO1: String read GetTELEFONO1Value write SetTELEFONO1Value; + property TELEFONO2: String read GetTELEFONO2Value write SetTELEFONO2Value; + property MOVIL: String read GetMOVILValue write SetMOVILValue; + end; + + { TInformeCabeceraPresupuestoDataTableRules } + TInformeCabeceraPresupuestoDataTableRules = class(TDADataTableRules, IInformeCabeceraPresupuesto) + private + protected + { Property getters and setters } + function GetCODIGOEMPRESAValue: Integer; virtual; + procedure SetCODIGOEMPRESAValue(const aValue: Integer); virtual; + function GetCODIGOValue: Integer; virtual; + procedure SetCODIGOValue(const aValue: Integer); virtual; + function GetFECHAALTAValue: DateTime; virtual; + procedure SetFECHAALTAValue(const aValue: DateTime); virtual; + function GetUSUARIOValue: String; virtual; + procedure SetUSUARIOValue(const aValue: String); virtual; + function GetCODIGOCONTACTOValue: Integer; virtual; + procedure SetCODIGOCONTACTOValue(const aValue: Integer); virtual; + function GetREFERENCIAValue: String; virtual; + procedure SetREFERENCIAValue(const aValue: String); virtual; + function GetTIPOValue: String; virtual; + procedure SetTIPOValue(const aValue: String); virtual; + function GetFECHAPRESUPUESTOValue: DateTime; virtual; + procedure SetFECHAPRESUPUESTOValue(const aValue: DateTime); virtual; + function GetVIGENCIAPRESUPUESTOValue: DateTime; virtual; + procedure SetVIGENCIAPRESUPUESTOValue(const aValue: DateTime); virtual; + function GetSITUACIONValue: String; virtual; + procedure SetSITUACIONValue(const aValue: String); virtual; + function GetFECHADECISIONValue: DateTime; virtual; + procedure SetFECHADECISIONValue(const aValue: DateTime); virtual; + function GetBASEIMPONIBLEValue: Float; virtual; + procedure SetBASEIMPONIBLEValue(const aValue: Float); virtual; + function GetDESCUENTOValue: Float; virtual; + procedure SetDESCUENTOValue(const aValue: Float); virtual; + function GetIMPORTEDESCUENTOValue: Float; virtual; + procedure SetIMPORTEDESCUENTOValue(const aValue: Float); virtual; + function GetIVAValue: Float; virtual; + procedure SetIVAValue(const aValue: Float); virtual; + function GetIMPORTEIVAValue: Float; virtual; + procedure SetIMPORTEIVAValue(const aValue: Float); virtual; + function GetIMPORTETOTALValue: Float; virtual; + procedure SetIMPORTETOTALValue(const aValue: Float); virtual; + function GetOBSERVACIONESValue: IROStrings; virtual; + procedure SetOBSERVACIONESValue(const aValue: IROStrings); virtual; + function GetPLAZOENTREGAValue: IROStrings; virtual; + procedure SetPLAZOENTREGAValue(const aValue: IROStrings); virtual; + function GetFORMAPAGOValue: IROStrings; virtual; + procedure SetFORMAPAGOValue(const aValue: IROStrings); virtual; + function GetNIFCIFValue: String; virtual; + procedure SetNIFCIFValue(const aValue: String); virtual; + function GetNOMBREValue: String; virtual; + procedure SetNOMBREValue(const aValue: String); virtual; + function GetCALLEValue: String; virtual; + procedure SetCALLEValue(const aValue: String); virtual; + function GetCODIGOPOSTALValue: String; virtual; + procedure SetCODIGOPOSTALValue(const aValue: String); virtual; + function GetPOBLACIONValue: String; virtual; + procedure SetPOBLACIONValue(const aValue: String); virtual; + function GetTELEFONO1Value: String; virtual; + procedure SetTELEFONO1Value(const aValue: String); virtual; + function GetTELEFONO2Value: String; virtual; + procedure SetTELEFONO2Value(const aValue: String); virtual; + function GetMOVILValue: String; virtual; + procedure SetMOVILValue(const aValue: String); virtual; + + { Properties } + property CODIGOEMPRESA: Integer read GetCODIGOEMPRESAValue write SetCODIGOEMPRESAValue; + property CODIGO: Integer read GetCODIGOValue write SetCODIGOValue; + property FECHAALTA: DateTime read GetFECHAALTAValue write SetFECHAALTAValue; + property USUARIO: String read GetUSUARIOValue write SetUSUARIOValue; + property CODIGOCONTACTO: Integer read GetCODIGOCONTACTOValue write SetCODIGOCONTACTOValue; + property REFERENCIA: String read GetREFERENCIAValue write SetREFERENCIAValue; + property TIPO: String read GetTIPOValue write SetTIPOValue; + property FECHAPRESUPUESTO: DateTime read GetFECHAPRESUPUESTOValue write SetFECHAPRESUPUESTOValue; + property VIGENCIAPRESUPUESTO: DateTime read GetVIGENCIAPRESUPUESTOValue write SetVIGENCIAPRESUPUESTOValue; + property SITUACION: String read GetSITUACIONValue write SetSITUACIONValue; + property FECHADECISION: DateTime read GetFECHADECISIONValue write SetFECHADECISIONValue; + property BASEIMPONIBLE: Float read GetBASEIMPONIBLEValue write SetBASEIMPONIBLEValue; + property DESCUENTO: Float read GetDESCUENTOValue write SetDESCUENTOValue; + property IMPORTEDESCUENTO: Float read GetIMPORTEDESCUENTOValue write SetIMPORTEDESCUENTOValue; + property IVA: Float read GetIVAValue write SetIVAValue; + property IMPORTEIVA: Float read GetIMPORTEIVAValue write SetIMPORTEIVAValue; + property IMPORTETOTAL: Float read GetIMPORTETOTALValue write SetIMPORTETOTALValue; + property OBSERVACIONES: IROStrings read GetOBSERVACIONESValue write SetOBSERVACIONESValue; + property PLAZOENTREGA: IROStrings read GetPLAZOENTREGAValue write SetPLAZOENTREGAValue; + property FORMAPAGO: IROStrings read GetFORMAPAGOValue write SetFORMAPAGOValue; + property NIFCIF: String read GetNIFCIFValue write SetNIFCIFValue; + property NOMBRE: String read GetNOMBREValue write SetNOMBREValue; + property CALLE: String read GetCALLEValue write SetCALLEValue; + property CODIGOPOSTAL: String read GetCODIGOPOSTALValue write SetCODIGOPOSTALValue; + property POBLACION: String read GetPOBLACIONValue write SetPOBLACIONValue; + property TELEFONO1: String read GetTELEFONO1Value write SetTELEFONO1Value; + property TELEFONO2: String read GetTELEFONO2Value write SetTELEFONO2Value; + property MOVIL: String read GetMOVILValue write SetMOVILValue; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + + { IInformeDetallesPresupuesto } + IInformeDetallesPresupuesto = interface(IDAStronglyTypedDataTable) + ['{6BECDEAC-58B6-4E27-B009-BBAECA446FD8}'] + { Property getters and setters } + function GetCODIGOPRESUPUESTOValue: Integer; + procedure SetCODIGOPRESUPUESTOValue(const aValue: Integer); + function GetNUMCONCEPTOValue: Integer; + procedure SetNUMCONCEPTOValue(const aValue: Integer); + function GetDESCRIPCIONValue: String; + procedure SetDESCRIPCIONValue(const aValue: String); + function GetCANTIDADValue: Integer; + procedure SetCANTIDADValue(const aValue: Integer); + function GetIMPORTEUNIDADValue: Currency; + procedure SetIMPORTEUNIDADValue(const aValue: Currency); + function GetIMPORTETOTALValue: Currency; + procedure SetIMPORTETOTALValue(const aValue: Currency); + function GetTIPOValue: String; + procedure SetTIPOValue(const aValue: String); + function GetPOSICIONValue: Integer; + procedure SetPOSICIONValue(const aValue: Integer); + + + { Properties } + property CODIGOPRESUPUESTO: Integer read GetCODIGOPRESUPUESTOValue write SetCODIGOPRESUPUESTOValue; + property NUMCONCEPTO: Integer read GetNUMCONCEPTOValue write SetNUMCONCEPTOValue; + property DESCRIPCION: String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + property CANTIDAD: Integer read GetCANTIDADValue write SetCANTIDADValue; + property IMPORTEUNIDAD: Currency read GetIMPORTEUNIDADValue write SetIMPORTEUNIDADValue; + property IMPORTETOTAL: Currency read GetIMPORTETOTALValue write SetIMPORTETOTALValue; + property TIPO: String read GetTIPOValue write SetTIPOValue; + property POSICION: Integer read GetPOSICIONValue write SetPOSICIONValue; + end; + + { TInformeDetallesPresupuestoDataTableRules } + TInformeDetallesPresupuestoDataTableRules = class(TDADataTableRules, IInformeDetallesPresupuesto) + private + protected + { Property getters and setters } + function GetCODIGOPRESUPUESTOValue: Integer; virtual; + procedure SetCODIGOPRESUPUESTOValue(const aValue: Integer); virtual; + function GetNUMCONCEPTOValue: Integer; virtual; + procedure SetNUMCONCEPTOValue(const aValue: Integer); virtual; + function GetDESCRIPCIONValue: String; virtual; + procedure SetDESCRIPCIONValue(const aValue: String); virtual; + function GetCANTIDADValue: Integer; virtual; + procedure SetCANTIDADValue(const aValue: Integer); virtual; + function GetIMPORTEUNIDADValue: Currency; virtual; + procedure SetIMPORTEUNIDADValue(const aValue: Currency); virtual; + function GetIMPORTETOTALValue: Currency; virtual; + procedure SetIMPORTETOTALValue(const aValue: Currency); virtual; + function GetTIPOValue: String; virtual; + procedure SetTIPOValue(const aValue: String); virtual; + function GetPOSICIONValue: Integer; virtual; + procedure SetPOSICIONValue(const aValue: Integer); virtual; + + { Properties } + property CODIGOPRESUPUESTO: Integer read GetCODIGOPRESUPUESTOValue write SetCODIGOPRESUPUESTOValue; + property NUMCONCEPTO: Integer read GetNUMCONCEPTOValue write SetNUMCONCEPTOValue; + property DESCRIPCION: String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + property CANTIDAD: Integer read GetCANTIDADValue write SetCANTIDADValue; + property IMPORTEUNIDAD: Currency read GetIMPORTEUNIDADValue write SetIMPORTEUNIDADValue; + property IMPORTETOTAL: Currency read GetIMPORTETOTALValue write SetIMPORTETOTALValue; + property TIPO: String read GetTIPOValue write SetTIPOValue; + property POSICION: Integer read GetPOSICIONValue write SetPOSICIONValue; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + +implementation + +uses Variants; + +{ TDarReferenciaPresupuestoDataTableRules } +constructor TDarReferenciaPresupuestoDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TDarReferenciaPresupuestoDataTableRules.Destroy; +begin + inherited; +end; + +function TDarReferenciaPresupuestoDataTableRules.GetREFERENCIAValue: String; +begin + result := DataTable.Fields[idx_DarReferenciaPresupuestoREFERENCIA].AsString; +end; + +procedure TDarReferenciaPresupuestoDataTableRules.SetREFERENCIAValue(const aValue: String); +begin + DataTable.Fields[idx_DarReferenciaPresupuestoREFERENCIA].AsString := aValue; +end; + + +{ TDetallesPresupuestosDataTableRules } +constructor TDetallesPresupuestosDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TDetallesPresupuestosDataTableRules.Destroy; +begin + inherited; +end; + +function TDetallesPresupuestosDataTableRules.GetCODIGOPRESUPUESTOValue: Integer; +begin + result := DataTable.Fields[idx_DetallesPresupuestosCODIGOPRESUPUESTO].AsInteger; +end; + +procedure TDetallesPresupuestosDataTableRules.SetCODIGOPRESUPUESTOValue(const aValue: Integer); +begin + DataTable.Fields[idx_DetallesPresupuestosCODIGOPRESUPUESTO].AsInteger := aValue; +end; + +function TDetallesPresupuestosDataTableRules.GetNUMCONCEPTOValue: Integer; +begin + result := DataTable.Fields[idx_DetallesPresupuestosNUMCONCEPTO].AsInteger; +end; + +procedure TDetallesPresupuestosDataTableRules.SetNUMCONCEPTOValue(const aValue: Integer); +begin + DataTable.Fields[idx_DetallesPresupuestosNUMCONCEPTO].AsInteger := aValue; +end; + +function TDetallesPresupuestosDataTableRules.GetDESCRIPCIONValue: String; +begin + result := DataTable.Fields[idx_DetallesPresupuestosDESCRIPCION].AsString; +end; + +procedure TDetallesPresupuestosDataTableRules.SetDESCRIPCIONValue(const aValue: String); +begin + DataTable.Fields[idx_DetallesPresupuestosDESCRIPCION].AsString := aValue; +end; + +function TDetallesPresupuestosDataTableRules.GetCANTIDADValue: Integer; +begin + result := DataTable.Fields[idx_DetallesPresupuestosCANTIDAD].AsInteger; +end; + +procedure TDetallesPresupuestosDataTableRules.SetCANTIDADValue(const aValue: Integer); +begin + DataTable.Fields[idx_DetallesPresupuestosCANTIDAD].AsInteger := aValue; +end; + +function TDetallesPresupuestosDataTableRules.GetIMPORTEUNIDADValue: Currency; +begin + result := DataTable.Fields[idx_DetallesPresupuestosIMPORTEUNIDAD].AsCurrency; +end; + +procedure TDetallesPresupuestosDataTableRules.SetIMPORTEUNIDADValue(const aValue: Currency); +begin + DataTable.Fields[idx_DetallesPresupuestosIMPORTEUNIDAD].AsCurrency := aValue; +end; + +function TDetallesPresupuestosDataTableRules.GetIMPORTETOTALValue: Currency; +begin + result := DataTable.Fields[idx_DetallesPresupuestosIMPORTETOTAL].AsCurrency; +end; + +procedure TDetallesPresupuestosDataTableRules.SetIMPORTETOTALValue(const aValue: Currency); +begin + DataTable.Fields[idx_DetallesPresupuestosIMPORTETOTAL].AsCurrency := aValue; +end; + +function TDetallesPresupuestosDataTableRules.GetTIPOValue: String; +begin + result := DataTable.Fields[idx_DetallesPresupuestosTIPO].AsString; +end; + +procedure TDetallesPresupuestosDataTableRules.SetTIPOValue(const aValue: String); +begin + DataTable.Fields[idx_DetallesPresupuestosTIPO].AsString := aValue; +end; + +function TDetallesPresupuestosDataTableRules.GetPOSICIONValue: Integer; +begin + result := DataTable.Fields[idx_DetallesPresupuestosPOSICION].AsInteger; +end; + +procedure TDetallesPresupuestosDataTableRules.SetPOSICIONValue(const aValue: Integer); +begin + DataTable.Fields[idx_DetallesPresupuestosPOSICION].AsInteger := aValue; +end; + +function TDetallesPresupuestosDataTableRules.GetVISIBLEValue: String; +begin + result := DataTable.Fields[idx_DetallesPresupuestosVISIBLE].AsString; +end; + +procedure TDetallesPresupuestosDataTableRules.SetVISIBLEValue(const aValue: String); +begin + DataTable.Fields[idx_DetallesPresupuestosVISIBLE].AsString := aValue; +end; + +function TDetallesPresupuestosDataTableRules.GetPUNTOSValue: Integer; +begin + result := DataTable.Fields[idx_DetallesPresupuestosPUNTOS].AsInteger; +end; + +procedure TDetallesPresupuestosDataTableRules.SetPUNTOSValue(const aValue: Integer); +begin + DataTable.Fields[idx_DetallesPresupuestosPUNTOS].AsInteger := aValue; +end; + +function TDetallesPresupuestosDataTableRules.GetIMPORTEPUNTOSValue: Currency; +begin + result := DataTable.Fields[idx_DetallesPresupuestosIMPORTEPUNTOS].AsCurrency; +end; + +procedure TDetallesPresupuestosDataTableRules.SetIMPORTEPUNTOSValue(const aValue: Currency); +begin + DataTable.Fields[idx_DetallesPresupuestosIMPORTEPUNTOS].AsCurrency := aValue; +end; + + +{ TPresupuestosDataTableRules } +constructor TPresupuestosDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TPresupuestosDataTableRules.Destroy; +begin + inherited; +end; + +function TPresupuestosDataTableRules.GetCODIGOEMPRESAValue: Integer; +begin + result := DataTable.Fields[idx_PresupuestosCODIGOEMPRESA].AsInteger; +end; + +procedure TPresupuestosDataTableRules.SetCODIGOEMPRESAValue(const aValue: Integer); +begin + DataTable.Fields[idx_PresupuestosCODIGOEMPRESA].AsInteger := aValue; +end; + +function TPresupuestosDataTableRules.GetCODIGOValue: Integer; +begin + result := DataTable.Fields[idx_PresupuestosCODIGO].AsInteger; +end; + +procedure TPresupuestosDataTableRules.SetCODIGOValue(const aValue: Integer); +begin + DataTable.Fields[idx_PresupuestosCODIGO].AsInteger := aValue; +end; + +function TPresupuestosDataTableRules.GetFECHAALTAValue: DateTime; +begin + result := DataTable.Fields[idx_PresupuestosFECHAALTA].AsDateTime; +end; + +procedure TPresupuestosDataTableRules.SetFECHAALTAValue(const aValue: DateTime); +begin + DataTable.Fields[idx_PresupuestosFECHAALTA].AsDateTime := aValue; +end; + +function TPresupuestosDataTableRules.GetUSUARIOValue: String; +begin + result := DataTable.Fields[idx_PresupuestosUSUARIO].AsString; +end; + +procedure TPresupuestosDataTableRules.SetUSUARIOValue(const aValue: String); +begin + DataTable.Fields[idx_PresupuestosUSUARIO].AsString := aValue; +end; + +function TPresupuestosDataTableRules.GetCODIGOCONTACTOValue: Integer; +begin + result := DataTable.Fields[idx_PresupuestosCODIGOCONTACTO].AsInteger; +end; + +procedure TPresupuestosDataTableRules.SetCODIGOCONTACTOValue(const aValue: Integer); +begin + DataTable.Fields[idx_PresupuestosCODIGOCONTACTO].AsInteger := aValue; +end; + +function TPresupuestosDataTableRules.GetNOMBREValue: String; +begin + result := DataTable.Fields[idx_PresupuestosNOMBRE].AsString; +end; + +procedure TPresupuestosDataTableRules.SetNOMBREValue(const aValue: String); +begin + DataTable.Fields[idx_PresupuestosNOMBRE].AsString := aValue; +end; + +function TPresupuestosDataTableRules.GetREFERENCIAValue: String; +begin + result := DataTable.Fields[idx_PresupuestosREFERENCIA].AsString; +end; + +procedure TPresupuestosDataTableRules.SetREFERENCIAValue(const aValue: String); +begin + DataTable.Fields[idx_PresupuestosREFERENCIA].AsString := aValue; +end; + +function TPresupuestosDataTableRules.GetTIPOValue: String; +begin + result := DataTable.Fields[idx_PresupuestosTIPO].AsString; +end; + +procedure TPresupuestosDataTableRules.SetTIPOValue(const aValue: String); +begin + DataTable.Fields[idx_PresupuestosTIPO].AsString := aValue; +end; + +function TPresupuestosDataTableRules.GetFECHAPRESUPUESTOValue: DateTime; +begin + result := DataTable.Fields[idx_PresupuestosFECHAPRESUPUESTO].AsDateTime; +end; + +procedure TPresupuestosDataTableRules.SetFECHAPRESUPUESTOValue(const aValue: DateTime); +begin + DataTable.Fields[idx_PresupuestosFECHAPRESUPUESTO].AsDateTime := aValue; +end; + +function TPresupuestosDataTableRules.GetVIGENCIAPRESUPUESTOValue: DateTime; +begin + result := DataTable.Fields[idx_PresupuestosVIGENCIAPRESUPUESTO].AsDateTime; +end; + +procedure TPresupuestosDataTableRules.SetVIGENCIAPRESUPUESTOValue(const aValue: DateTime); +begin + DataTable.Fields[idx_PresupuestosVIGENCIAPRESUPUESTO].AsDateTime := aValue; +end; + +function TPresupuestosDataTableRules.GetSITUACIONValue: String; +begin + result := DataTable.Fields[idx_PresupuestosSITUACION].AsString; +end; + +procedure TPresupuestosDataTableRules.SetSITUACIONValue(const aValue: String); +begin + DataTable.Fields[idx_PresupuestosSITUACION].AsString := aValue; +end; + +function TPresupuestosDataTableRules.GetFECHADECISIONValue: DateTime; +begin + result := DataTable.Fields[idx_PresupuestosFECHADECISION].AsDateTime; +end; + +procedure TPresupuestosDataTableRules.SetFECHADECISIONValue(const aValue: DateTime); +begin + DataTable.Fields[idx_PresupuestosFECHADECISION].AsDateTime := aValue; +end; + +function TPresupuestosDataTableRules.GetBASEIMPONIBLEValue: Currency; +begin + result := DataTable.Fields[idx_PresupuestosBASEIMPONIBLE].AsCurrency; +end; + +procedure TPresupuestosDataTableRules.SetBASEIMPONIBLEValue(const aValue: Currency); +begin + DataTable.Fields[idx_PresupuestosBASEIMPONIBLE].AsCurrency := aValue; +end; + +function TPresupuestosDataTableRules.GetDESCUENTOValue: Float; +begin + result := DataTable.Fields[idx_PresupuestosDESCUENTO].AsFloat; +end; + +procedure TPresupuestosDataTableRules.SetDESCUENTOValue(const aValue: Float); +begin + DataTable.Fields[idx_PresupuestosDESCUENTO].AsFloat := aValue; +end; + +function TPresupuestosDataTableRules.GetIMPORTEDESCUENTOValue: Currency; +begin + result := DataTable.Fields[idx_PresupuestosIMPORTEDESCUENTO].AsCurrency; +end; + +procedure TPresupuestosDataTableRules.SetIMPORTEDESCUENTOValue(const aValue: Currency); +begin + DataTable.Fields[idx_PresupuestosIMPORTEDESCUENTO].AsCurrency := aValue; +end; + +function TPresupuestosDataTableRules.GetIVAValue: Float; +begin + result := DataTable.Fields[idx_PresupuestosIVA].AsFloat; +end; + +procedure TPresupuestosDataTableRules.SetIVAValue(const aValue: Float); +begin + DataTable.Fields[idx_PresupuestosIVA].AsFloat := aValue; +end; + +function TPresupuestosDataTableRules.GetIMPORTEIVAValue: Currency; +begin + result := DataTable.Fields[idx_PresupuestosIMPORTEIVA].AsCurrency; +end; + +procedure TPresupuestosDataTableRules.SetIMPORTEIVAValue(const aValue: Currency); +begin + DataTable.Fields[idx_PresupuestosIMPORTEIVA].AsCurrency := aValue; +end; + +function TPresupuestosDataTableRules.GetIMPORTETOTALValue: Currency; +begin + result := DataTable.Fields[idx_PresupuestosIMPORTETOTAL].AsCurrency; +end; + +procedure TPresupuestosDataTableRules.SetIMPORTETOTALValue(const aValue: Currency); +begin + DataTable.Fields[idx_PresupuestosIMPORTETOTAL].AsCurrency := aValue; +end; + +function TPresupuestosDataTableRules.GetOBSERVACIONESValue: IROStrings; +begin + result := NewROStrings(); + result.Text := DataTable.Fields[idx_PresupuestosOBSERVACIONES].AsString; +end; + +procedure TPresupuestosDataTableRules.SetOBSERVACIONESValue(const aValue: IROStrings); +begin + DataTable.Fields[idx_PresupuestosOBSERVACIONES].AsString := aValue.Text; +end; + +function TPresupuestosDataTableRules.GetPLAZOENTREGAValue: IROStrings; +begin + result := NewROStrings(); + result.Text := DataTable.Fields[idx_PresupuestosPLAZOENTREGA].AsString; +end; + +procedure TPresupuestosDataTableRules.SetPLAZOENTREGAValue(const aValue: IROStrings); +begin + DataTable.Fields[idx_PresupuestosPLAZOENTREGA].AsString := aValue.Text; +end; + +function TPresupuestosDataTableRules.GetFORMAPAGOValue: IROStrings; +begin + result := NewROStrings(); + result.Text := DataTable.Fields[idx_PresupuestosFORMAPAGO].AsString; +end; + +procedure TPresupuestosDataTableRules.SetFORMAPAGOValue(const aValue: IROStrings); +begin + DataTable.Fields[idx_PresupuestosFORMAPAGO].AsString := aValue.Text; +end; + +function TPresupuestosDataTableRules.GetCODIGOALBARANValue: Integer; +begin + result := DataTable.Fields[idx_PresupuestosCODIGOALBARAN].AsInteger; +end; + +procedure TPresupuestosDataTableRules.SetCODIGOALBARANValue(const aValue: Integer); +begin + DataTable.Fields[idx_PresupuestosCODIGOALBARAN].AsInteger := aValue; +end; + + +{ TPresupuestos_RefreshDatasetDataTableRules } +constructor TPresupuestos_RefreshDatasetDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TPresupuestos_RefreshDatasetDataTableRules.Destroy; +begin + inherited; +end; + +function TPresupuestos_RefreshDatasetDataTableRules.GetCODIGOValue: Integer; +begin + result := DataTable.Fields[idx_Presupuestos_RefreshDatasetCODIGO].AsInteger; +end; + +procedure TPresupuestos_RefreshDatasetDataTableRules.SetCODIGOValue(const aValue: Integer); +begin + DataTable.Fields[idx_Presupuestos_RefreshDatasetCODIGO].AsInteger := aValue; +end; + +function TPresupuestos_RefreshDatasetDataTableRules.GetNOMBREValue: String; +begin + result := DataTable.Fields[idx_Presupuestos_RefreshDatasetNOMBRE].AsString; +end; + +procedure TPresupuestos_RefreshDatasetDataTableRules.SetNOMBREValue(const aValue: String); +begin + DataTable.Fields[idx_Presupuestos_RefreshDatasetNOMBRE].AsString := aValue; +end; + +function TPresupuestos_RefreshDatasetDataTableRules.GetCODIGOALBARANValue: Integer; +begin + result := DataTable.Fields[idx_Presupuestos_RefreshDatasetCODIGOALBARAN].AsInteger; +end; + +procedure TPresupuestos_RefreshDatasetDataTableRules.SetCODIGOALBARANValue(const aValue: Integer); +begin + DataTable.Fields[idx_Presupuestos_RefreshDatasetCODIGOALBARAN].AsInteger := aValue; +end; + + +{ TInformeCabeceraPresupuestoDataTableRules } +constructor TInformeCabeceraPresupuestoDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TInformeCabeceraPresupuestoDataTableRules.Destroy; +begin + inherited; +end; + +function TInformeCabeceraPresupuestoDataTableRules.GetCODIGOEMPRESAValue: Integer; +begin + result := DataTable.Fields[idx_InformeCabeceraPresupuestoCODIGOEMPRESA].AsInteger; +end; + +procedure TInformeCabeceraPresupuestoDataTableRules.SetCODIGOEMPRESAValue(const aValue: Integer); +begin + DataTable.Fields[idx_InformeCabeceraPresupuestoCODIGOEMPRESA].AsInteger := aValue; +end; + +function TInformeCabeceraPresupuestoDataTableRules.GetCODIGOValue: Integer; +begin + result := DataTable.Fields[idx_InformeCabeceraPresupuestoCODIGO].AsInteger; +end; + +procedure TInformeCabeceraPresupuestoDataTableRules.SetCODIGOValue(const aValue: Integer); +begin + DataTable.Fields[idx_InformeCabeceraPresupuestoCODIGO].AsInteger := aValue; +end; + +function TInformeCabeceraPresupuestoDataTableRules.GetFECHAALTAValue: DateTime; +begin + result := DataTable.Fields[idx_InformeCabeceraPresupuestoFECHAALTA].AsDateTime; +end; + +procedure TInformeCabeceraPresupuestoDataTableRules.SetFECHAALTAValue(const aValue: DateTime); +begin + DataTable.Fields[idx_InformeCabeceraPresupuestoFECHAALTA].AsDateTime := aValue; +end; + +function TInformeCabeceraPresupuestoDataTableRules.GetUSUARIOValue: String; +begin + result := DataTable.Fields[idx_InformeCabeceraPresupuestoUSUARIO].AsString; +end; + +procedure TInformeCabeceraPresupuestoDataTableRules.SetUSUARIOValue(const aValue: String); +begin + DataTable.Fields[idx_InformeCabeceraPresupuestoUSUARIO].AsString := aValue; +end; + +function TInformeCabeceraPresupuestoDataTableRules.GetCODIGOCONTACTOValue: Integer; +begin + result := DataTable.Fields[idx_InformeCabeceraPresupuestoCODIGOCONTACTO].AsInteger; +end; + +procedure TInformeCabeceraPresupuestoDataTableRules.SetCODIGOCONTACTOValue(const aValue: Integer); +begin + DataTable.Fields[idx_InformeCabeceraPresupuestoCODIGOCONTACTO].AsInteger := aValue; +end; + +function TInformeCabeceraPresupuestoDataTableRules.GetREFERENCIAValue: String; +begin + result := DataTable.Fields[idx_InformeCabeceraPresupuestoREFERENCIA].AsString; +end; + +procedure TInformeCabeceraPresupuestoDataTableRules.SetREFERENCIAValue(const aValue: String); +begin + DataTable.Fields[idx_InformeCabeceraPresupuestoREFERENCIA].AsString := aValue; +end; + +function TInformeCabeceraPresupuestoDataTableRules.GetTIPOValue: String; +begin + result := DataTable.Fields[idx_InformeCabeceraPresupuestoTIPO].AsString; +end; + +procedure TInformeCabeceraPresupuestoDataTableRules.SetTIPOValue(const aValue: String); +begin + DataTable.Fields[idx_InformeCabeceraPresupuestoTIPO].AsString := aValue; +end; + +function TInformeCabeceraPresupuestoDataTableRules.GetFECHAPRESUPUESTOValue: DateTime; +begin + result := DataTable.Fields[idx_InformeCabeceraPresupuestoFECHAPRESUPUESTO].AsDateTime; +end; + +procedure TInformeCabeceraPresupuestoDataTableRules.SetFECHAPRESUPUESTOValue(const aValue: DateTime); +begin + DataTable.Fields[idx_InformeCabeceraPresupuestoFECHAPRESUPUESTO].AsDateTime := aValue; +end; + +function TInformeCabeceraPresupuestoDataTableRules.GetVIGENCIAPRESUPUESTOValue: DateTime; +begin + result := DataTable.Fields[idx_InformeCabeceraPresupuestoVIGENCIAPRESUPUESTO].AsDateTime; +end; + +procedure TInformeCabeceraPresupuestoDataTableRules.SetVIGENCIAPRESUPUESTOValue(const aValue: DateTime); +begin + DataTable.Fields[idx_InformeCabeceraPresupuestoVIGENCIAPRESUPUESTO].AsDateTime := aValue; +end; + +function TInformeCabeceraPresupuestoDataTableRules.GetSITUACIONValue: String; +begin + result := DataTable.Fields[idx_InformeCabeceraPresupuestoSITUACION].AsString; +end; + +procedure TInformeCabeceraPresupuestoDataTableRules.SetSITUACIONValue(const aValue: String); +begin + DataTable.Fields[idx_InformeCabeceraPresupuestoSITUACION].AsString := aValue; +end; + +function TInformeCabeceraPresupuestoDataTableRules.GetFECHADECISIONValue: DateTime; +begin + result := DataTable.Fields[idx_InformeCabeceraPresupuestoFECHADECISION].AsDateTime; +end; + +procedure TInformeCabeceraPresupuestoDataTableRules.SetFECHADECISIONValue(const aValue: DateTime); +begin + DataTable.Fields[idx_InformeCabeceraPresupuestoFECHADECISION].AsDateTime := aValue; +end; + +function TInformeCabeceraPresupuestoDataTableRules.GetBASEIMPONIBLEValue: Float; +begin + result := DataTable.Fields[idx_InformeCabeceraPresupuestoBASEIMPONIBLE].AsFloat; +end; + +procedure TInformeCabeceraPresupuestoDataTableRules.SetBASEIMPONIBLEValue(const aValue: Float); +begin + DataTable.Fields[idx_InformeCabeceraPresupuestoBASEIMPONIBLE].AsFloat := aValue; +end; + +function TInformeCabeceraPresupuestoDataTableRules.GetDESCUENTOValue: Float; +begin + result := DataTable.Fields[idx_InformeCabeceraPresupuestoDESCUENTO].AsFloat; +end; + +procedure TInformeCabeceraPresupuestoDataTableRules.SetDESCUENTOValue(const aValue: Float); +begin + DataTable.Fields[idx_InformeCabeceraPresupuestoDESCUENTO].AsFloat := aValue; +end; + +function TInformeCabeceraPresupuestoDataTableRules.GetIMPORTEDESCUENTOValue: Float; +begin + result := DataTable.Fields[idx_InformeCabeceraPresupuestoIMPORTEDESCUENTO].AsFloat; +end; + +procedure TInformeCabeceraPresupuestoDataTableRules.SetIMPORTEDESCUENTOValue(const aValue: Float); +begin + DataTable.Fields[idx_InformeCabeceraPresupuestoIMPORTEDESCUENTO].AsFloat := aValue; +end; + +function TInformeCabeceraPresupuestoDataTableRules.GetIVAValue: Float; +begin + result := DataTable.Fields[idx_InformeCabeceraPresupuestoIVA].AsFloat; +end; + +procedure TInformeCabeceraPresupuestoDataTableRules.SetIVAValue(const aValue: Float); +begin + DataTable.Fields[idx_InformeCabeceraPresupuestoIVA].AsFloat := aValue; +end; + +function TInformeCabeceraPresupuestoDataTableRules.GetIMPORTEIVAValue: Float; +begin + result := DataTable.Fields[idx_InformeCabeceraPresupuestoIMPORTEIVA].AsFloat; +end; + +procedure TInformeCabeceraPresupuestoDataTableRules.SetIMPORTEIVAValue(const aValue: Float); +begin + DataTable.Fields[idx_InformeCabeceraPresupuestoIMPORTEIVA].AsFloat := aValue; +end; + +function TInformeCabeceraPresupuestoDataTableRules.GetIMPORTETOTALValue: Float; +begin + result := DataTable.Fields[idx_InformeCabeceraPresupuestoIMPORTETOTAL].AsFloat; +end; + +procedure TInformeCabeceraPresupuestoDataTableRules.SetIMPORTETOTALValue(const aValue: Float); +begin + DataTable.Fields[idx_InformeCabeceraPresupuestoIMPORTETOTAL].AsFloat := aValue; +end; + +function TInformeCabeceraPresupuestoDataTableRules.GetOBSERVACIONESValue: IROStrings; +begin + result := NewROStrings(); + result.Text := DataTable.Fields[idx_InformeCabeceraPresupuestoOBSERVACIONES].AsString; +end; + +procedure TInformeCabeceraPresupuestoDataTableRules.SetOBSERVACIONESValue(const aValue: IROStrings); +begin + DataTable.Fields[idx_InformeCabeceraPresupuestoOBSERVACIONES].AsString := aValue.Text; +end; + +function TInformeCabeceraPresupuestoDataTableRules.GetPLAZOENTREGAValue: IROStrings; +begin + result := NewROStrings(); + result.Text := DataTable.Fields[idx_InformeCabeceraPresupuestoPLAZOENTREGA].AsString; +end; + +procedure TInformeCabeceraPresupuestoDataTableRules.SetPLAZOENTREGAValue(const aValue: IROStrings); +begin + DataTable.Fields[idx_InformeCabeceraPresupuestoPLAZOENTREGA].AsString := aValue.Text; +end; + +function TInformeCabeceraPresupuestoDataTableRules.GetFORMAPAGOValue: IROStrings; +begin + result := NewROStrings(); + result.Text := DataTable.Fields[idx_InformeCabeceraPresupuestoFORMAPAGO].AsString; +end; + +procedure TInformeCabeceraPresupuestoDataTableRules.SetFORMAPAGOValue(const aValue: IROStrings); +begin + DataTable.Fields[idx_InformeCabeceraPresupuestoFORMAPAGO].AsString := aValue.Text; +end; + +function TInformeCabeceraPresupuestoDataTableRules.GetNIFCIFValue: String; +begin + result := DataTable.Fields[idx_InformeCabeceraPresupuestoNIFCIF].AsString; +end; + +procedure TInformeCabeceraPresupuestoDataTableRules.SetNIFCIFValue(const aValue: String); +begin + DataTable.Fields[idx_InformeCabeceraPresupuestoNIFCIF].AsString := aValue; +end; + +function TInformeCabeceraPresupuestoDataTableRules.GetNOMBREValue: String; +begin + result := DataTable.Fields[idx_InformeCabeceraPresupuestoNOMBRE].AsString; +end; + +procedure TInformeCabeceraPresupuestoDataTableRules.SetNOMBREValue(const aValue: String); +begin + DataTable.Fields[idx_InformeCabeceraPresupuestoNOMBRE].AsString := aValue; +end; + +function TInformeCabeceraPresupuestoDataTableRules.GetCALLEValue: String; +begin + result := DataTable.Fields[idx_InformeCabeceraPresupuestoCALLE].AsString; +end; + +procedure TInformeCabeceraPresupuestoDataTableRules.SetCALLEValue(const aValue: String); +begin + DataTable.Fields[idx_InformeCabeceraPresupuestoCALLE].AsString := aValue; +end; + +function TInformeCabeceraPresupuestoDataTableRules.GetCODIGOPOSTALValue: String; +begin + result := DataTable.Fields[idx_InformeCabeceraPresupuestoCODIGOPOSTAL].AsString; +end; + +procedure TInformeCabeceraPresupuestoDataTableRules.SetCODIGOPOSTALValue(const aValue: String); +begin + DataTable.Fields[idx_InformeCabeceraPresupuestoCODIGOPOSTAL].AsString := aValue; +end; + +function TInformeCabeceraPresupuestoDataTableRules.GetPOBLACIONValue: String; +begin + result := DataTable.Fields[idx_InformeCabeceraPresupuestoPOBLACION].AsString; +end; + +procedure TInformeCabeceraPresupuestoDataTableRules.SetPOBLACIONValue(const aValue: String); +begin + DataTable.Fields[idx_InformeCabeceraPresupuestoPOBLACION].AsString := aValue; +end; + +function TInformeCabeceraPresupuestoDataTableRules.GetTELEFONO1Value: String; +begin + result := DataTable.Fields[idx_InformeCabeceraPresupuestoTELEFONO1].AsString; +end; + +procedure TInformeCabeceraPresupuestoDataTableRules.SetTELEFONO1Value(const aValue: String); +begin + DataTable.Fields[idx_InformeCabeceraPresupuestoTELEFONO1].AsString := aValue; +end; + +function TInformeCabeceraPresupuestoDataTableRules.GetTELEFONO2Value: String; +begin + result := DataTable.Fields[idx_InformeCabeceraPresupuestoTELEFONO2].AsString; +end; + +procedure TInformeCabeceraPresupuestoDataTableRules.SetTELEFONO2Value(const aValue: String); +begin + DataTable.Fields[idx_InformeCabeceraPresupuestoTELEFONO2].AsString := aValue; +end; + +function TInformeCabeceraPresupuestoDataTableRules.GetMOVILValue: String; +begin + result := DataTable.Fields[idx_InformeCabeceraPresupuestoMOVIL].AsString; +end; + +procedure TInformeCabeceraPresupuestoDataTableRules.SetMOVILValue(const aValue: String); +begin + DataTable.Fields[idx_InformeCabeceraPresupuestoMOVIL].AsString := aValue; +end; + + +{ TInformeDetallesPresupuestoDataTableRules } +constructor TInformeDetallesPresupuestoDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TInformeDetallesPresupuestoDataTableRules.Destroy; +begin + inherited; +end; + +function TInformeDetallesPresupuestoDataTableRules.GetCODIGOPRESUPUESTOValue: Integer; +begin + result := DataTable.Fields[idx_InformeDetallesPresupuestoCODIGOPRESUPUESTO].AsInteger; +end; + +procedure TInformeDetallesPresupuestoDataTableRules.SetCODIGOPRESUPUESTOValue(const aValue: Integer); +begin + DataTable.Fields[idx_InformeDetallesPresupuestoCODIGOPRESUPUESTO].AsInteger := aValue; +end; + +function TInformeDetallesPresupuestoDataTableRules.GetNUMCONCEPTOValue: Integer; +begin + result := DataTable.Fields[idx_InformeDetallesPresupuestoNUMCONCEPTO].AsInteger; +end; + +procedure TInformeDetallesPresupuestoDataTableRules.SetNUMCONCEPTOValue(const aValue: Integer); +begin + DataTable.Fields[idx_InformeDetallesPresupuestoNUMCONCEPTO].AsInteger := aValue; +end; + +function TInformeDetallesPresupuestoDataTableRules.GetDESCRIPCIONValue: String; +begin + result := DataTable.Fields[idx_InformeDetallesPresupuestoDESCRIPCION].AsString; +end; + +procedure TInformeDetallesPresupuestoDataTableRules.SetDESCRIPCIONValue(const aValue: String); +begin + DataTable.Fields[idx_InformeDetallesPresupuestoDESCRIPCION].AsString := aValue; +end; + +function TInformeDetallesPresupuestoDataTableRules.GetCANTIDADValue: Integer; +begin + result := DataTable.Fields[idx_InformeDetallesPresupuestoCANTIDAD].AsInteger; +end; + +procedure TInformeDetallesPresupuestoDataTableRules.SetCANTIDADValue(const aValue: Integer); +begin + DataTable.Fields[idx_InformeDetallesPresupuestoCANTIDAD].AsInteger := aValue; +end; + +function TInformeDetallesPresupuestoDataTableRules.GetIMPORTEUNIDADValue: Currency; +begin + result := DataTable.Fields[idx_InformeDetallesPresupuestoIMPORTEUNIDAD].AsCurrency; +end; + +procedure TInformeDetallesPresupuestoDataTableRules.SetIMPORTEUNIDADValue(const aValue: Currency); +begin + DataTable.Fields[idx_InformeDetallesPresupuestoIMPORTEUNIDAD].AsCurrency := aValue; +end; + +function TInformeDetallesPresupuestoDataTableRules.GetIMPORTETOTALValue: Currency; +begin + result := DataTable.Fields[idx_InformeDetallesPresupuestoIMPORTETOTAL].AsCurrency; +end; + +procedure TInformeDetallesPresupuestoDataTableRules.SetIMPORTETOTALValue(const aValue: Currency); +begin + DataTable.Fields[idx_InformeDetallesPresupuestoIMPORTETOTAL].AsCurrency := aValue; +end; + +function TInformeDetallesPresupuestoDataTableRules.GetTIPOValue: String; +begin + result := DataTable.Fields[idx_InformeDetallesPresupuestoTIPO].AsString; +end; + +procedure TInformeDetallesPresupuestoDataTableRules.SetTIPOValue(const aValue: String); +begin + DataTable.Fields[idx_InformeDetallesPresupuestoTIPO].AsString := aValue; +end; + +function TInformeDetallesPresupuestoDataTableRules.GetPOSICIONValue: Integer; +begin + result := DataTable.Fields[idx_InformeDetallesPresupuestoPOSICION].AsInteger; +end; + +procedure TInformeDetallesPresupuestoDataTableRules.SetPOSICIONValue(const aValue: Integer); +begin + DataTable.Fields[idx_InformeDetallesPresupuestoPOSICION].AsInteger := aValue; +end; + + +initialization + RegisterDataTableRules(RID_DarReferenciaPresupuesto, TDarReferenciaPresupuestoDataTableRules); + RegisterDataTableRules(RID_DetallesPresupuestos, TDetallesPresupuestosDataTableRules); + RegisterDataTableRules(RID_Presupuestos, TPresupuestosDataTableRules); + RegisterDataTableRules(RID_Presupuestos_RefreshDataset, TPresupuestos_RefreshDatasetDataTableRules); + RegisterDataTableRules(RID_InformeCabeceraPresupuesto, TInformeCabeceraPresupuestoDataTableRules); + RegisterDataTableRules(RID_InformeDetallesPresupuesto, TInformeDetallesPresupuestoDataTableRules); + +end. diff --git a/Modulos/Presupuestos_/Reglas/schPresupuestosServer_Intf.pas b/Modulos/Presupuestos_/Reglas/schPresupuestosServer_Intf.pas new file mode 100644 index 0000000..dbd94ff --- /dev/null +++ b/Modulos/Presupuestos_/Reglas/schPresupuestosServer_Intf.pas @@ -0,0 +1,1855 @@ +unit schPresupuestosServer_Intf; + +interface + +uses + Classes, DB, SysUtils, uROClasses, uDADataTable, uDABusinessProcessor, schPresupuestosClient_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_DarReferenciaPresupuestoDelta = '{4B701A1F-ACC9-4D23-935E-8B328BF582F5}'; + RID_DetallesPresupuestosDelta = '{C45170EB-B358-436C-BF5C-C7E3C11148DE}'; + RID_PresupuestosDelta = '{541676C9-1DFB-4C07-921F-F4CE705366E4}'; + RID_Presupuestos_RefreshDatasetDelta = '{81B341DA-DAC7-43A0-B8C4-8F7155EF6ECB}'; + RID_InformeCabeceraPresupuestoDelta = '{BF1CB438-CA21-4772-965C-614E91DD779F}'; + RID_InformeDetallesPresupuestoDelta = '{5A7FBD68-E8E5-4F9A-BC4C-72EB878826A8}'; + +type + { IDarReferenciaPresupuestoDelta } + IDarReferenciaPresupuestoDelta = interface(IDarReferenciaPresupuesto) + ['{4B701A1F-ACC9-4D23-935E-8B328BF582F5}'] + { Property getters and setters } + function GetOldREFERENCIAValue : String; + + { Properties } + property OldREFERENCIA : String read GetOldREFERENCIAValue; + end; + + { TDarReferenciaPresupuestoBusinessProcessorRules } + TDarReferenciaPresupuestoBusinessProcessorRules = class(TDABusinessProcessorRules, IDarReferenciaPresupuesto, IDarReferenciaPresupuestoDelta) + private + protected + { Property getters and setters } + function GetREFERENCIAValue: String; virtual; + function GetOldREFERENCIAValue: String; virtual; + procedure SetREFERENCIAValue(const aValue: String); virtual; + + { Properties } + property REFERENCIA : String read GetREFERENCIAValue write SetREFERENCIAValue; + property OldREFERENCIA : String read GetOldREFERENCIAValue; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + + { IDetallesPresupuestosDelta } + IDetallesPresupuestosDelta = interface(IDetallesPresupuestos) + ['{C45170EB-B358-436C-BF5C-C7E3C11148DE}'] + { Property getters and setters } + function GetOldCODIGOPRESUPUESTOValue : Integer; + function GetOldNUMCONCEPTOValue : Integer; + function GetOldDESCRIPCIONValue : String; + function GetOldCANTIDADValue : Integer; + function GetOldIMPORTEUNIDADValue : Currency; + function GetOldIMPORTETOTALValue : Currency; + function GetOldTIPOValue : String; + function GetOldPOSICIONValue : Integer; + function GetOldVISIBLEValue : String; + function GetOldPUNTOSValue : Integer; + function GetOldIMPORTEPUNTOSValue : Currency; + + { Properties } + property OldCODIGOPRESUPUESTO : Integer read GetOldCODIGOPRESUPUESTOValue; + property OldNUMCONCEPTO : Integer read GetOldNUMCONCEPTOValue; + property OldDESCRIPCION : String read GetOldDESCRIPCIONValue; + property OldCANTIDAD : Integer read GetOldCANTIDADValue; + property OldIMPORTEUNIDAD : Currency read GetOldIMPORTEUNIDADValue; + property OldIMPORTETOTAL : Currency read GetOldIMPORTETOTALValue; + property OldTIPO : String read GetOldTIPOValue; + property OldPOSICION : Integer read GetOldPOSICIONValue; + property OldVISIBLE : String read GetOldVISIBLEValue; + property OldPUNTOS : Integer read GetOldPUNTOSValue; + property OldIMPORTEPUNTOS : Currency read GetOldIMPORTEPUNTOSValue; + end; + + { TDetallesPresupuestosBusinessProcessorRules } + TDetallesPresupuestosBusinessProcessorRules = class(TDABusinessProcessorRules, IDetallesPresupuestos, IDetallesPresupuestosDelta) + private + protected + { Property getters and setters } + function GetCODIGOPRESUPUESTOValue: Integer; virtual; + function GetOldCODIGOPRESUPUESTOValue: Integer; virtual; + procedure SetCODIGOPRESUPUESTOValue(const aValue: Integer); virtual; + function GetNUMCONCEPTOValue: Integer; virtual; + function GetOldNUMCONCEPTOValue: Integer; virtual; + procedure SetNUMCONCEPTOValue(const aValue: Integer); virtual; + function GetDESCRIPCIONValue: String; virtual; + function GetOldDESCRIPCIONValue: String; virtual; + procedure SetDESCRIPCIONValue(const aValue: String); virtual; + function GetCANTIDADValue: Integer; virtual; + function GetOldCANTIDADValue: Integer; virtual; + procedure SetCANTIDADValue(const aValue: Integer); virtual; + function GetIMPORTEUNIDADValue: Currency; virtual; + function GetOldIMPORTEUNIDADValue: Currency; virtual; + procedure SetIMPORTEUNIDADValue(const aValue: Currency); virtual; + function GetIMPORTETOTALValue: Currency; virtual; + function GetOldIMPORTETOTALValue: Currency; virtual; + procedure SetIMPORTETOTALValue(const aValue: Currency); virtual; + function GetTIPOValue: String; virtual; + function GetOldTIPOValue: String; virtual; + procedure SetTIPOValue(const aValue: String); virtual; + function GetPOSICIONValue: Integer; virtual; + function GetOldPOSICIONValue: Integer; virtual; + procedure SetPOSICIONValue(const aValue: Integer); virtual; + function GetVISIBLEValue: String; virtual; + function GetOldVISIBLEValue: String; virtual; + procedure SetVISIBLEValue(const aValue: String); virtual; + function GetPUNTOSValue: Integer; virtual; + function GetOldPUNTOSValue: Integer; virtual; + procedure SetPUNTOSValue(const aValue: Integer); virtual; + function GetIMPORTEPUNTOSValue: Currency; virtual; + function GetOldIMPORTEPUNTOSValue: Currency; virtual; + procedure SetIMPORTEPUNTOSValue(const aValue: Currency); virtual; + + { Properties } + property CODIGOPRESUPUESTO : Integer read GetCODIGOPRESUPUESTOValue write SetCODIGOPRESUPUESTOValue; + property OldCODIGOPRESUPUESTO : Integer read GetOldCODIGOPRESUPUESTOValue; + property NUMCONCEPTO : Integer read GetNUMCONCEPTOValue write SetNUMCONCEPTOValue; + property OldNUMCONCEPTO : Integer read GetOldNUMCONCEPTOValue; + property DESCRIPCION : String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + property OldDESCRIPCION : String read GetOldDESCRIPCIONValue; + property CANTIDAD : Integer read GetCANTIDADValue write SetCANTIDADValue; + property OldCANTIDAD : Integer read GetOldCANTIDADValue; + property IMPORTEUNIDAD : Currency read GetIMPORTEUNIDADValue write SetIMPORTEUNIDADValue; + property OldIMPORTEUNIDAD : Currency read GetOldIMPORTEUNIDADValue; + property IMPORTETOTAL : Currency read GetIMPORTETOTALValue write SetIMPORTETOTALValue; + property OldIMPORTETOTAL : Currency read GetOldIMPORTETOTALValue; + property TIPO : String read GetTIPOValue write SetTIPOValue; + property OldTIPO : String read GetOldTIPOValue; + property POSICION : Integer read GetPOSICIONValue write SetPOSICIONValue; + property OldPOSICION : Integer read GetOldPOSICIONValue; + property VISIBLE : String read GetVISIBLEValue write SetVISIBLEValue; + property OldVISIBLE : String read GetOldVISIBLEValue; + property PUNTOS : Integer read GetPUNTOSValue write SetPUNTOSValue; + property OldPUNTOS : Integer read GetOldPUNTOSValue; + property IMPORTEPUNTOS : Currency read GetIMPORTEPUNTOSValue write SetIMPORTEPUNTOSValue; + property OldIMPORTEPUNTOS : Currency read GetOldIMPORTEPUNTOSValue; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + + { IPresupuestosDelta } + IPresupuestosDelta = interface(IPresupuestos) + ['{541676C9-1DFB-4C07-921F-F4CE705366E4}'] + { Property getters and setters } + function GetOldCODIGOEMPRESAValue : Integer; + function GetOldCODIGOValue : Integer; + function GetOldFECHAALTAValue : DateTime; + function GetOldUSUARIOValue : String; + function GetOldCODIGOCONTACTOValue : Integer; + function GetOldNOMBREValue : String; + function GetOldREFERENCIAValue : String; + function GetOldTIPOValue : String; + function GetOldFECHAPRESUPUESTOValue : DateTime; + function GetOldVIGENCIAPRESUPUESTOValue : DateTime; + function GetOldSITUACIONValue : String; + function GetOldFECHADECISIONValue : DateTime; + function GetOldBASEIMPONIBLEValue : Currency; + function GetOldDESCUENTOValue : Float; + function GetOldIMPORTEDESCUENTOValue : Currency; + function GetOldIVAValue : Float; + function GetOldIMPORTEIVAValue : Currency; + function GetOldIMPORTETOTALValue : Currency; + function GetOldOBSERVACIONESValue : IROStrings; + function GetOldPLAZOENTREGAValue : IROStrings; + function GetOldFORMAPAGOValue : IROStrings; + function GetOldCODIGOALBARANValue : Integer; + + { Properties } + property OldCODIGOEMPRESA : Integer read GetOldCODIGOEMPRESAValue; + property OldCODIGO : Integer read GetOldCODIGOValue; + property OldFECHAALTA : DateTime read GetOldFECHAALTAValue; + property OldUSUARIO : String read GetOldUSUARIOValue; + property OldCODIGOCONTACTO : Integer read GetOldCODIGOCONTACTOValue; + property OldNOMBRE : String read GetOldNOMBREValue; + property OldREFERENCIA : String read GetOldREFERENCIAValue; + property OldTIPO : String read GetOldTIPOValue; + property OldFECHAPRESUPUESTO : DateTime read GetOldFECHAPRESUPUESTOValue; + property OldVIGENCIAPRESUPUESTO : DateTime read GetOldVIGENCIAPRESUPUESTOValue; + property OldSITUACION : String read GetOldSITUACIONValue; + property OldFECHADECISION : DateTime read GetOldFECHADECISIONValue; + property OldBASEIMPONIBLE : Currency read GetOldBASEIMPONIBLEValue; + property OldDESCUENTO : Float read GetOldDESCUENTOValue; + property OldIMPORTEDESCUENTO : Currency read GetOldIMPORTEDESCUENTOValue; + property OldIVA : Float read GetOldIVAValue; + property OldIMPORTEIVA : Currency read GetOldIMPORTEIVAValue; + property OldIMPORTETOTAL : Currency read GetOldIMPORTETOTALValue; + property OldOBSERVACIONES : IROStrings read GetOldOBSERVACIONESValue; + property OldPLAZOENTREGA : IROStrings read GetOldPLAZOENTREGAValue; + property OldFORMAPAGO : IROStrings read GetOldFORMAPAGOValue; + property OldCODIGOALBARAN : Integer read GetOldCODIGOALBARANValue; + end; + + { TPresupuestosBusinessProcessorRules } + TPresupuestosBusinessProcessorRules = class(TDABusinessProcessorRules, IPresupuestos, IPresupuestosDelta) + private + protected + { Property getters and setters } + function GetCODIGOEMPRESAValue: Integer; virtual; + function GetOldCODIGOEMPRESAValue: Integer; virtual; + procedure SetCODIGOEMPRESAValue(const aValue: Integer); virtual; + function GetCODIGOValue: Integer; virtual; + function GetOldCODIGOValue: Integer; virtual; + procedure SetCODIGOValue(const aValue: Integer); virtual; + function GetFECHAALTAValue: DateTime; virtual; + function GetOldFECHAALTAValue: DateTime; virtual; + procedure SetFECHAALTAValue(const aValue: DateTime); virtual; + function GetUSUARIOValue: String; virtual; + function GetOldUSUARIOValue: String; virtual; + procedure SetUSUARIOValue(const aValue: String); virtual; + function GetCODIGOCONTACTOValue: Integer; virtual; + function GetOldCODIGOCONTACTOValue: Integer; virtual; + procedure SetCODIGOCONTACTOValue(const aValue: Integer); virtual; + function GetNOMBREValue: String; virtual; + function GetOldNOMBREValue: String; virtual; + procedure SetNOMBREValue(const aValue: String); virtual; + function GetREFERENCIAValue: String; virtual; + function GetOldREFERENCIAValue: String; virtual; + procedure SetREFERENCIAValue(const aValue: String); virtual; + function GetTIPOValue: String; virtual; + function GetOldTIPOValue: String; virtual; + procedure SetTIPOValue(const aValue: String); virtual; + function GetFECHAPRESUPUESTOValue: DateTime; virtual; + function GetOldFECHAPRESUPUESTOValue: DateTime; virtual; + procedure SetFECHAPRESUPUESTOValue(const aValue: DateTime); virtual; + function GetVIGENCIAPRESUPUESTOValue: DateTime; virtual; + function GetOldVIGENCIAPRESUPUESTOValue: DateTime; virtual; + procedure SetVIGENCIAPRESUPUESTOValue(const aValue: DateTime); virtual; + function GetSITUACIONValue: String; virtual; + function GetOldSITUACIONValue: String; virtual; + procedure SetSITUACIONValue(const aValue: String); virtual; + function GetFECHADECISIONValue: DateTime; virtual; + function GetOldFECHADECISIONValue: DateTime; virtual; + procedure SetFECHADECISIONValue(const aValue: DateTime); virtual; + function GetBASEIMPONIBLEValue: Currency; virtual; + function GetOldBASEIMPONIBLEValue: Currency; virtual; + procedure SetBASEIMPONIBLEValue(const aValue: Currency); virtual; + function GetDESCUENTOValue: Float; virtual; + function GetOldDESCUENTOValue: Float; virtual; + procedure SetDESCUENTOValue(const aValue: Float); virtual; + function GetIMPORTEDESCUENTOValue: Currency; virtual; + function GetOldIMPORTEDESCUENTOValue: Currency; virtual; + procedure SetIMPORTEDESCUENTOValue(const aValue: Currency); virtual; + function GetIVAValue: Float; virtual; + function GetOldIVAValue: Float; virtual; + procedure SetIVAValue(const aValue: Float); virtual; + function GetIMPORTEIVAValue: Currency; virtual; + function GetOldIMPORTEIVAValue: Currency; virtual; + procedure SetIMPORTEIVAValue(const aValue: Currency); virtual; + function GetIMPORTETOTALValue: Currency; virtual; + function GetOldIMPORTETOTALValue: Currency; virtual; + procedure SetIMPORTETOTALValue(const aValue: Currency); virtual; + function GetOBSERVACIONESValue: IROStrings; virtual; + function GetOldOBSERVACIONESValue: IROStrings; virtual; + procedure SetOBSERVACIONESValue(const aValue: IROStrings); virtual; + function GetPLAZOENTREGAValue: IROStrings; virtual; + function GetOldPLAZOENTREGAValue: IROStrings; virtual; + procedure SetPLAZOENTREGAValue(const aValue: IROStrings); virtual; + function GetFORMAPAGOValue: IROStrings; virtual; + function GetOldFORMAPAGOValue: IROStrings; virtual; + procedure SetFORMAPAGOValue(const aValue: IROStrings); virtual; + function GetCODIGOALBARANValue: Integer; virtual; + function GetOldCODIGOALBARANValue: Integer; virtual; + procedure SetCODIGOALBARANValue(const aValue: Integer); virtual; + + { Properties } + property CODIGOEMPRESA : Integer read GetCODIGOEMPRESAValue write SetCODIGOEMPRESAValue; + property OldCODIGOEMPRESA : Integer read GetOldCODIGOEMPRESAValue; + property CODIGO : Integer read GetCODIGOValue write SetCODIGOValue; + property OldCODIGO : Integer read GetOldCODIGOValue; + property FECHAALTA : DateTime read GetFECHAALTAValue write SetFECHAALTAValue; + property OldFECHAALTA : DateTime read GetOldFECHAALTAValue; + property USUARIO : String read GetUSUARIOValue write SetUSUARIOValue; + property OldUSUARIO : String read GetOldUSUARIOValue; + property CODIGOCONTACTO : Integer read GetCODIGOCONTACTOValue write SetCODIGOCONTACTOValue; + property OldCODIGOCONTACTO : Integer read GetOldCODIGOCONTACTOValue; + property NOMBRE : String read GetNOMBREValue write SetNOMBREValue; + property OldNOMBRE : String read GetOldNOMBREValue; + property REFERENCIA : String read GetREFERENCIAValue write SetREFERENCIAValue; + property OldREFERENCIA : String read GetOldREFERENCIAValue; + property TIPO : String read GetTIPOValue write SetTIPOValue; + property OldTIPO : String read GetOldTIPOValue; + property FECHAPRESUPUESTO : DateTime read GetFECHAPRESUPUESTOValue write SetFECHAPRESUPUESTOValue; + property OldFECHAPRESUPUESTO : DateTime read GetOldFECHAPRESUPUESTOValue; + property VIGENCIAPRESUPUESTO : DateTime read GetVIGENCIAPRESUPUESTOValue write SetVIGENCIAPRESUPUESTOValue; + property OldVIGENCIAPRESUPUESTO : DateTime read GetOldVIGENCIAPRESUPUESTOValue; + property SITUACION : String read GetSITUACIONValue write SetSITUACIONValue; + property OldSITUACION : String read GetOldSITUACIONValue; + property FECHADECISION : DateTime read GetFECHADECISIONValue write SetFECHADECISIONValue; + property OldFECHADECISION : DateTime read GetOldFECHADECISIONValue; + property BASEIMPONIBLE : Currency read GetBASEIMPONIBLEValue write SetBASEIMPONIBLEValue; + property OldBASEIMPONIBLE : Currency read GetOldBASEIMPONIBLEValue; + property DESCUENTO : Float read GetDESCUENTOValue write SetDESCUENTOValue; + property OldDESCUENTO : Float read GetOldDESCUENTOValue; + property IMPORTEDESCUENTO : Currency read GetIMPORTEDESCUENTOValue write SetIMPORTEDESCUENTOValue; + property OldIMPORTEDESCUENTO : Currency read GetOldIMPORTEDESCUENTOValue; + property IVA : Float read GetIVAValue write SetIVAValue; + property OldIVA : Float read GetOldIVAValue; + property IMPORTEIVA : Currency read GetIMPORTEIVAValue write SetIMPORTEIVAValue; + property OldIMPORTEIVA : Currency read GetOldIMPORTEIVAValue; + property IMPORTETOTAL : Currency read GetIMPORTETOTALValue write SetIMPORTETOTALValue; + property OldIMPORTETOTAL : Currency read GetOldIMPORTETOTALValue; + property OBSERVACIONES : IROStrings read GetOBSERVACIONESValue write SetOBSERVACIONESValue; + property OldOBSERVACIONES : IROStrings read GetOldOBSERVACIONESValue; + property PLAZOENTREGA : IROStrings read GetPLAZOENTREGAValue write SetPLAZOENTREGAValue; + property OldPLAZOENTREGA : IROStrings read GetOldPLAZOENTREGAValue; + property FORMAPAGO : IROStrings read GetFORMAPAGOValue write SetFORMAPAGOValue; + property OldFORMAPAGO : IROStrings read GetOldFORMAPAGOValue; + property CODIGOALBARAN : Integer read GetCODIGOALBARANValue write SetCODIGOALBARANValue; + property OldCODIGOALBARAN : Integer read GetOldCODIGOALBARANValue; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + + { IPresupuestos_RefreshDatasetDelta } + IPresupuestos_RefreshDatasetDelta = interface(IPresupuestos_RefreshDataset) + ['{81B341DA-DAC7-43A0-B8C4-8F7155EF6ECB}'] + { Property getters and setters } + function GetOldCODIGOValue : Integer; + function GetOldNOMBREValue : String; + function GetOldCODIGOALBARANValue : Integer; + + { Properties } + property OldCODIGO : Integer read GetOldCODIGOValue; + property OldNOMBRE : String read GetOldNOMBREValue; + property OldCODIGOALBARAN : Integer read GetOldCODIGOALBARANValue; + end; + + { TPresupuestos_RefreshDatasetBusinessProcessorRules } + TPresupuestos_RefreshDatasetBusinessProcessorRules = class(TDABusinessProcessorRules, IPresupuestos_RefreshDataset, IPresupuestos_RefreshDatasetDelta) + private + protected + { Property getters and setters } + function GetCODIGOValue: Integer; virtual; + function GetOldCODIGOValue: Integer; virtual; + procedure SetCODIGOValue(const aValue: Integer); virtual; + function GetNOMBREValue: String; virtual; + function GetOldNOMBREValue: String; virtual; + procedure SetNOMBREValue(const aValue: String); virtual; + function GetCODIGOALBARANValue: Integer; virtual; + function GetOldCODIGOALBARANValue: Integer; virtual; + procedure SetCODIGOALBARANValue(const aValue: Integer); virtual; + + { Properties } + property CODIGO : Integer read GetCODIGOValue write SetCODIGOValue; + property OldCODIGO : Integer read GetOldCODIGOValue; + property NOMBRE : String read GetNOMBREValue write SetNOMBREValue; + property OldNOMBRE : String read GetOldNOMBREValue; + property CODIGOALBARAN : Integer read GetCODIGOALBARANValue write SetCODIGOALBARANValue; + property OldCODIGOALBARAN : Integer read GetOldCODIGOALBARANValue; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + + { IInformeCabeceraPresupuestoDelta } + IInformeCabeceraPresupuestoDelta = interface(IInformeCabeceraPresupuesto) + ['{BF1CB438-CA21-4772-965C-614E91DD779F}'] + { Property getters and setters } + function GetOldCODIGOEMPRESAValue : Integer; + function GetOldCODIGOValue : Integer; + function GetOldFECHAALTAValue : DateTime; + function GetOldUSUARIOValue : String; + function GetOldCODIGOCONTACTOValue : Integer; + function GetOldREFERENCIAValue : String; + function GetOldTIPOValue : String; + function GetOldFECHAPRESUPUESTOValue : DateTime; + function GetOldVIGENCIAPRESUPUESTOValue : DateTime; + function GetOldSITUACIONValue : String; + function GetOldFECHADECISIONValue : DateTime; + function GetOldBASEIMPONIBLEValue : Float; + function GetOldDESCUENTOValue : Float; + function GetOldIMPORTEDESCUENTOValue : Float; + function GetOldIVAValue : Float; + function GetOldIMPORTEIVAValue : Float; + function GetOldIMPORTETOTALValue : Float; + function GetOldOBSERVACIONESValue : IROStrings; + function GetOldPLAZOENTREGAValue : IROStrings; + function GetOldFORMAPAGOValue : IROStrings; + function GetOldNIFCIFValue : String; + function GetOldNOMBREValue : String; + function GetOldCALLEValue : String; + function GetOldCODIGOPOSTALValue : String; + function GetOldPOBLACIONValue : String; + function GetOldTELEFONO1Value : String; + function GetOldTELEFONO2Value : String; + function GetOldMOVILValue : String; + + { Properties } + property OldCODIGOEMPRESA : Integer read GetOldCODIGOEMPRESAValue; + property OldCODIGO : Integer read GetOldCODIGOValue; + property OldFECHAALTA : DateTime read GetOldFECHAALTAValue; + property OldUSUARIO : String read GetOldUSUARIOValue; + property OldCODIGOCONTACTO : Integer read GetOldCODIGOCONTACTOValue; + property OldREFERENCIA : String read GetOldREFERENCIAValue; + property OldTIPO : String read GetOldTIPOValue; + property OldFECHAPRESUPUESTO : DateTime read GetOldFECHAPRESUPUESTOValue; + property OldVIGENCIAPRESUPUESTO : DateTime read GetOldVIGENCIAPRESUPUESTOValue; + property OldSITUACION : String read GetOldSITUACIONValue; + property OldFECHADECISION : DateTime read GetOldFECHADECISIONValue; + property OldBASEIMPONIBLE : Float read GetOldBASEIMPONIBLEValue; + property OldDESCUENTO : Float read GetOldDESCUENTOValue; + property OldIMPORTEDESCUENTO : Float read GetOldIMPORTEDESCUENTOValue; + property OldIVA : Float read GetOldIVAValue; + property OldIMPORTEIVA : Float read GetOldIMPORTEIVAValue; + property OldIMPORTETOTAL : Float read GetOldIMPORTETOTALValue; + property OldOBSERVACIONES : IROStrings read GetOldOBSERVACIONESValue; + property OldPLAZOENTREGA : IROStrings read GetOldPLAZOENTREGAValue; + property OldFORMAPAGO : IROStrings read GetOldFORMAPAGOValue; + property OldNIFCIF : String read GetOldNIFCIFValue; + property OldNOMBRE : String read GetOldNOMBREValue; + property OldCALLE : String read GetOldCALLEValue; + property OldCODIGOPOSTAL : String read GetOldCODIGOPOSTALValue; + property OldPOBLACION : String read GetOldPOBLACIONValue; + property OldTELEFONO1 : String read GetOldTELEFONO1Value; + property OldTELEFONO2 : String read GetOldTELEFONO2Value; + property OldMOVIL : String read GetOldMOVILValue; + end; + + { TInformeCabeceraPresupuestoBusinessProcessorRules } + TInformeCabeceraPresupuestoBusinessProcessorRules = class(TDABusinessProcessorRules, IInformeCabeceraPresupuesto, IInformeCabeceraPresupuestoDelta) + private + protected + { Property getters and setters } + function GetCODIGOEMPRESAValue: Integer; virtual; + function GetOldCODIGOEMPRESAValue: Integer; virtual; + procedure SetCODIGOEMPRESAValue(const aValue: Integer); virtual; + function GetCODIGOValue: Integer; virtual; + function GetOldCODIGOValue: Integer; virtual; + procedure SetCODIGOValue(const aValue: Integer); virtual; + function GetFECHAALTAValue: DateTime; virtual; + function GetOldFECHAALTAValue: DateTime; virtual; + procedure SetFECHAALTAValue(const aValue: DateTime); virtual; + function GetUSUARIOValue: String; virtual; + function GetOldUSUARIOValue: String; virtual; + procedure SetUSUARIOValue(const aValue: String); virtual; + function GetCODIGOCONTACTOValue: Integer; virtual; + function GetOldCODIGOCONTACTOValue: Integer; virtual; + procedure SetCODIGOCONTACTOValue(const aValue: Integer); virtual; + function GetREFERENCIAValue: String; virtual; + function GetOldREFERENCIAValue: String; virtual; + procedure SetREFERENCIAValue(const aValue: String); virtual; + function GetTIPOValue: String; virtual; + function GetOldTIPOValue: String; virtual; + procedure SetTIPOValue(const aValue: String); virtual; + function GetFECHAPRESUPUESTOValue: DateTime; virtual; + function GetOldFECHAPRESUPUESTOValue: DateTime; virtual; + procedure SetFECHAPRESUPUESTOValue(const aValue: DateTime); virtual; + function GetVIGENCIAPRESUPUESTOValue: DateTime; virtual; + function GetOldVIGENCIAPRESUPUESTOValue: DateTime; virtual; + procedure SetVIGENCIAPRESUPUESTOValue(const aValue: DateTime); virtual; + function GetSITUACIONValue: String; virtual; + function GetOldSITUACIONValue: String; virtual; + procedure SetSITUACIONValue(const aValue: String); virtual; + function GetFECHADECISIONValue: DateTime; virtual; + function GetOldFECHADECISIONValue: DateTime; virtual; + procedure SetFECHADECISIONValue(const aValue: DateTime); virtual; + function GetBASEIMPONIBLEValue: Float; virtual; + function GetOldBASEIMPONIBLEValue: Float; virtual; + procedure SetBASEIMPONIBLEValue(const aValue: Float); virtual; + function GetDESCUENTOValue: Float; virtual; + function GetOldDESCUENTOValue: Float; virtual; + procedure SetDESCUENTOValue(const aValue: Float); virtual; + function GetIMPORTEDESCUENTOValue: Float; virtual; + function GetOldIMPORTEDESCUENTOValue: Float; virtual; + procedure SetIMPORTEDESCUENTOValue(const aValue: Float); virtual; + function GetIVAValue: Float; virtual; + function GetOldIVAValue: Float; virtual; + procedure SetIVAValue(const aValue: Float); virtual; + function GetIMPORTEIVAValue: Float; virtual; + function GetOldIMPORTEIVAValue: Float; virtual; + procedure SetIMPORTEIVAValue(const aValue: Float); virtual; + function GetIMPORTETOTALValue: Float; virtual; + function GetOldIMPORTETOTALValue: Float; virtual; + procedure SetIMPORTETOTALValue(const aValue: Float); virtual; + function GetOBSERVACIONESValue: IROStrings; virtual; + function GetOldOBSERVACIONESValue: IROStrings; virtual; + procedure SetOBSERVACIONESValue(const aValue: IROStrings); virtual; + function GetPLAZOENTREGAValue: IROStrings; virtual; + function GetOldPLAZOENTREGAValue: IROStrings; virtual; + procedure SetPLAZOENTREGAValue(const aValue: IROStrings); virtual; + function GetFORMAPAGOValue: IROStrings; virtual; + function GetOldFORMAPAGOValue: IROStrings; virtual; + procedure SetFORMAPAGOValue(const aValue: IROStrings); virtual; + function GetNIFCIFValue: String; virtual; + function GetOldNIFCIFValue: String; virtual; + procedure SetNIFCIFValue(const aValue: String); virtual; + function GetNOMBREValue: String; virtual; + function GetOldNOMBREValue: String; virtual; + procedure SetNOMBREValue(const aValue: String); virtual; + function GetCALLEValue: String; virtual; + function GetOldCALLEValue: String; virtual; + procedure SetCALLEValue(const aValue: String); virtual; + function GetCODIGOPOSTALValue: String; virtual; + function GetOldCODIGOPOSTALValue: String; virtual; + procedure SetCODIGOPOSTALValue(const aValue: String); virtual; + function GetPOBLACIONValue: String; virtual; + function GetOldPOBLACIONValue: String; virtual; + procedure SetPOBLACIONValue(const aValue: String); virtual; + function GetTELEFONO1Value: String; virtual; + function GetOldTELEFONO1Value: String; virtual; + procedure SetTELEFONO1Value(const aValue: String); virtual; + function GetTELEFONO2Value: String; virtual; + function GetOldTELEFONO2Value: String; virtual; + procedure SetTELEFONO2Value(const aValue: String); virtual; + function GetMOVILValue: String; virtual; + function GetOldMOVILValue: String; virtual; + procedure SetMOVILValue(const aValue: String); virtual; + + { Properties } + property CODIGOEMPRESA : Integer read GetCODIGOEMPRESAValue write SetCODIGOEMPRESAValue; + property OldCODIGOEMPRESA : Integer read GetOldCODIGOEMPRESAValue; + property CODIGO : Integer read GetCODIGOValue write SetCODIGOValue; + property OldCODIGO : Integer read GetOldCODIGOValue; + property FECHAALTA : DateTime read GetFECHAALTAValue write SetFECHAALTAValue; + property OldFECHAALTA : DateTime read GetOldFECHAALTAValue; + property USUARIO : String read GetUSUARIOValue write SetUSUARIOValue; + property OldUSUARIO : String read GetOldUSUARIOValue; + property CODIGOCONTACTO : Integer read GetCODIGOCONTACTOValue write SetCODIGOCONTACTOValue; + property OldCODIGOCONTACTO : Integer read GetOldCODIGOCONTACTOValue; + property REFERENCIA : String read GetREFERENCIAValue write SetREFERENCIAValue; + property OldREFERENCIA : String read GetOldREFERENCIAValue; + property TIPO : String read GetTIPOValue write SetTIPOValue; + property OldTIPO : String read GetOldTIPOValue; + property FECHAPRESUPUESTO : DateTime read GetFECHAPRESUPUESTOValue write SetFECHAPRESUPUESTOValue; + property OldFECHAPRESUPUESTO : DateTime read GetOldFECHAPRESUPUESTOValue; + property VIGENCIAPRESUPUESTO : DateTime read GetVIGENCIAPRESUPUESTOValue write SetVIGENCIAPRESUPUESTOValue; + property OldVIGENCIAPRESUPUESTO : DateTime read GetOldVIGENCIAPRESUPUESTOValue; + property SITUACION : String read GetSITUACIONValue write SetSITUACIONValue; + property OldSITUACION : String read GetOldSITUACIONValue; + property FECHADECISION : DateTime read GetFECHADECISIONValue write SetFECHADECISIONValue; + property OldFECHADECISION : DateTime read GetOldFECHADECISIONValue; + property BASEIMPONIBLE : Float read GetBASEIMPONIBLEValue write SetBASEIMPONIBLEValue; + property OldBASEIMPONIBLE : Float read GetOldBASEIMPONIBLEValue; + property DESCUENTO : Float read GetDESCUENTOValue write SetDESCUENTOValue; + property OldDESCUENTO : Float read GetOldDESCUENTOValue; + property IMPORTEDESCUENTO : Float read GetIMPORTEDESCUENTOValue write SetIMPORTEDESCUENTOValue; + property OldIMPORTEDESCUENTO : Float read GetOldIMPORTEDESCUENTOValue; + property IVA : Float read GetIVAValue write SetIVAValue; + property OldIVA : Float read GetOldIVAValue; + property IMPORTEIVA : Float read GetIMPORTEIVAValue write SetIMPORTEIVAValue; + property OldIMPORTEIVA : Float read GetOldIMPORTEIVAValue; + property IMPORTETOTAL : Float read GetIMPORTETOTALValue write SetIMPORTETOTALValue; + property OldIMPORTETOTAL : Float read GetOldIMPORTETOTALValue; + property OBSERVACIONES : IROStrings read GetOBSERVACIONESValue write SetOBSERVACIONESValue; + property OldOBSERVACIONES : IROStrings read GetOldOBSERVACIONESValue; + property PLAZOENTREGA : IROStrings read GetPLAZOENTREGAValue write SetPLAZOENTREGAValue; + property OldPLAZOENTREGA : IROStrings read GetOldPLAZOENTREGAValue; + property FORMAPAGO : IROStrings read GetFORMAPAGOValue write SetFORMAPAGOValue; + property OldFORMAPAGO : IROStrings read GetOldFORMAPAGOValue; + property NIFCIF : String read GetNIFCIFValue write SetNIFCIFValue; + property OldNIFCIF : String read GetOldNIFCIFValue; + property NOMBRE : String read GetNOMBREValue write SetNOMBREValue; + property OldNOMBRE : String read GetOldNOMBREValue; + property CALLE : String read GetCALLEValue write SetCALLEValue; + property OldCALLE : String read GetOldCALLEValue; + property CODIGOPOSTAL : String read GetCODIGOPOSTALValue write SetCODIGOPOSTALValue; + property OldCODIGOPOSTAL : String read GetOldCODIGOPOSTALValue; + property POBLACION : String read GetPOBLACIONValue write SetPOBLACIONValue; + property OldPOBLACION : String read GetOldPOBLACIONValue; + property TELEFONO1 : String read GetTELEFONO1Value write SetTELEFONO1Value; + property OldTELEFONO1 : String read GetOldTELEFONO1Value; + property TELEFONO2 : String read GetTELEFONO2Value write SetTELEFONO2Value; + property OldTELEFONO2 : String read GetOldTELEFONO2Value; + property MOVIL : String read GetMOVILValue write SetMOVILValue; + property OldMOVIL : String read GetOldMOVILValue; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + + { IInformeDetallesPresupuestoDelta } + IInformeDetallesPresupuestoDelta = interface(IInformeDetallesPresupuesto) + ['{5A7FBD68-E8E5-4F9A-BC4C-72EB878826A8}'] + { Property getters and setters } + function GetOldCODIGOPRESUPUESTOValue : Integer; + function GetOldNUMCONCEPTOValue : Integer; + function GetOldDESCRIPCIONValue : String; + function GetOldCANTIDADValue : Integer; + function GetOldIMPORTEUNIDADValue : Currency; + function GetOldIMPORTETOTALValue : Currency; + function GetOldTIPOValue : String; + function GetOldPOSICIONValue : Integer; + + { Properties } + property OldCODIGOPRESUPUESTO : Integer read GetOldCODIGOPRESUPUESTOValue; + property OldNUMCONCEPTO : Integer read GetOldNUMCONCEPTOValue; + property OldDESCRIPCION : String read GetOldDESCRIPCIONValue; + property OldCANTIDAD : Integer read GetOldCANTIDADValue; + property OldIMPORTEUNIDAD : Currency read GetOldIMPORTEUNIDADValue; + property OldIMPORTETOTAL : Currency read GetOldIMPORTETOTALValue; + property OldTIPO : String read GetOldTIPOValue; + property OldPOSICION : Integer read GetOldPOSICIONValue; + end; + + { TInformeDetallesPresupuestoBusinessProcessorRules } + TInformeDetallesPresupuestoBusinessProcessorRules = class(TDABusinessProcessorRules, IInformeDetallesPresupuesto, IInformeDetallesPresupuestoDelta) + private + protected + { Property getters and setters } + function GetCODIGOPRESUPUESTOValue: Integer; virtual; + function GetOldCODIGOPRESUPUESTOValue: Integer; virtual; + procedure SetCODIGOPRESUPUESTOValue(const aValue: Integer); virtual; + function GetNUMCONCEPTOValue: Integer; virtual; + function GetOldNUMCONCEPTOValue: Integer; virtual; + procedure SetNUMCONCEPTOValue(const aValue: Integer); virtual; + function GetDESCRIPCIONValue: String; virtual; + function GetOldDESCRIPCIONValue: String; virtual; + procedure SetDESCRIPCIONValue(const aValue: String); virtual; + function GetCANTIDADValue: Integer; virtual; + function GetOldCANTIDADValue: Integer; virtual; + procedure SetCANTIDADValue(const aValue: Integer); virtual; + function GetIMPORTEUNIDADValue: Currency; virtual; + function GetOldIMPORTEUNIDADValue: Currency; virtual; + procedure SetIMPORTEUNIDADValue(const aValue: Currency); virtual; + function GetIMPORTETOTALValue: Currency; virtual; + function GetOldIMPORTETOTALValue: Currency; virtual; + procedure SetIMPORTETOTALValue(const aValue: Currency); virtual; + function GetTIPOValue: String; virtual; + function GetOldTIPOValue: String; virtual; + procedure SetTIPOValue(const aValue: String); virtual; + function GetPOSICIONValue: Integer; virtual; + function GetOldPOSICIONValue: Integer; virtual; + procedure SetPOSICIONValue(const aValue: Integer); virtual; + + { Properties } + property CODIGOPRESUPUESTO : Integer read GetCODIGOPRESUPUESTOValue write SetCODIGOPRESUPUESTOValue; + property OldCODIGOPRESUPUESTO : Integer read GetOldCODIGOPRESUPUESTOValue; + property NUMCONCEPTO : Integer read GetNUMCONCEPTOValue write SetNUMCONCEPTOValue; + property OldNUMCONCEPTO : Integer read GetOldNUMCONCEPTOValue; + property DESCRIPCION : String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + property OldDESCRIPCION : String read GetOldDESCRIPCIONValue; + property CANTIDAD : Integer read GetCANTIDADValue write SetCANTIDADValue; + property OldCANTIDAD : Integer read GetOldCANTIDADValue; + property IMPORTEUNIDAD : Currency read GetIMPORTEUNIDADValue write SetIMPORTEUNIDADValue; + property OldIMPORTEUNIDAD : Currency read GetOldIMPORTEUNIDADValue; + property IMPORTETOTAL : Currency read GetIMPORTETOTALValue write SetIMPORTETOTALValue; + property OldIMPORTETOTAL : Currency read GetOldIMPORTETOTALValue; + property TIPO : String read GetTIPOValue write SetTIPOValue; + property OldTIPO : String read GetOldTIPOValue; + property POSICION : Integer read GetPOSICIONValue write SetPOSICIONValue; + property OldPOSICION : Integer read GetOldPOSICIONValue; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + +implementation + +uses + Variants, uROBinaryHelpers; + +{ TDarReferenciaPresupuestoBusinessProcessorRules } +constructor TDarReferenciaPresupuestoBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TDarReferenciaPresupuestoBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TDarReferenciaPresupuestoBusinessProcessorRules.GetREFERENCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_DarReferenciaPresupuestoREFERENCIA]; +end; + +function TDarReferenciaPresupuestoBusinessProcessorRules.GetOldREFERENCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_DarReferenciaPresupuestoREFERENCIA]; +end; + +procedure TDarReferenciaPresupuestoBusinessProcessorRules.SetREFERENCIAValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_DarReferenciaPresupuestoREFERENCIA] := aValue; +end; + + +{ TDetallesPresupuestosBusinessProcessorRules } +constructor TDetallesPresupuestosBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TDetallesPresupuestosBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TDetallesPresupuestosBusinessProcessorRules.GetCODIGOPRESUPUESTOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesPresupuestosCODIGOPRESUPUESTO]; +end; + +function TDetallesPresupuestosBusinessProcessorRules.GetOldCODIGOPRESUPUESTOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_DetallesPresupuestosCODIGOPRESUPUESTO]; +end; + +procedure TDetallesPresupuestosBusinessProcessorRules.SetCODIGOPRESUPUESTOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesPresupuestosCODIGOPRESUPUESTO] := aValue; +end; + +function TDetallesPresupuestosBusinessProcessorRules.GetNUMCONCEPTOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesPresupuestosNUMCONCEPTO]; +end; + +function TDetallesPresupuestosBusinessProcessorRules.GetOldNUMCONCEPTOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_DetallesPresupuestosNUMCONCEPTO]; +end; + +procedure TDetallesPresupuestosBusinessProcessorRules.SetNUMCONCEPTOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesPresupuestosNUMCONCEPTO] := aValue; +end; + +function TDetallesPresupuestosBusinessProcessorRules.GetDESCRIPCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesPresupuestosDESCRIPCION]; +end; + +function TDetallesPresupuestosBusinessProcessorRules.GetOldDESCRIPCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_DetallesPresupuestosDESCRIPCION]; +end; + +procedure TDetallesPresupuestosBusinessProcessorRules.SetDESCRIPCIONValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesPresupuestosDESCRIPCION] := aValue; +end; + +function TDetallesPresupuestosBusinessProcessorRules.GetCANTIDADValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesPresupuestosCANTIDAD]; +end; + +function TDetallesPresupuestosBusinessProcessorRules.GetOldCANTIDADValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_DetallesPresupuestosCANTIDAD]; +end; + +procedure TDetallesPresupuestosBusinessProcessorRules.SetCANTIDADValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesPresupuestosCANTIDAD] := aValue; +end; + +function TDetallesPresupuestosBusinessProcessorRules.GetIMPORTEUNIDADValue: Currency; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesPresupuestosIMPORTEUNIDAD]; +end; + +function TDetallesPresupuestosBusinessProcessorRules.GetOldIMPORTEUNIDADValue: Currency; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_DetallesPresupuestosIMPORTEUNIDAD]; +end; + +procedure TDetallesPresupuestosBusinessProcessorRules.SetIMPORTEUNIDADValue(const aValue: Currency); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesPresupuestosIMPORTEUNIDAD] := aValue; +end; + +function TDetallesPresupuestosBusinessProcessorRules.GetIMPORTETOTALValue: Currency; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesPresupuestosIMPORTETOTAL]; +end; + +function TDetallesPresupuestosBusinessProcessorRules.GetOldIMPORTETOTALValue: Currency; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_DetallesPresupuestosIMPORTETOTAL]; +end; + +procedure TDetallesPresupuestosBusinessProcessorRules.SetIMPORTETOTALValue(const aValue: Currency); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesPresupuestosIMPORTETOTAL] := aValue; +end; + +function TDetallesPresupuestosBusinessProcessorRules.GetTIPOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesPresupuestosTIPO]; +end; + +function TDetallesPresupuestosBusinessProcessorRules.GetOldTIPOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_DetallesPresupuestosTIPO]; +end; + +procedure TDetallesPresupuestosBusinessProcessorRules.SetTIPOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesPresupuestosTIPO] := aValue; +end; + +function TDetallesPresupuestosBusinessProcessorRules.GetPOSICIONValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesPresupuestosPOSICION]; +end; + +function TDetallesPresupuestosBusinessProcessorRules.GetOldPOSICIONValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_DetallesPresupuestosPOSICION]; +end; + +procedure TDetallesPresupuestosBusinessProcessorRules.SetPOSICIONValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesPresupuestosPOSICION] := aValue; +end; + +function TDetallesPresupuestosBusinessProcessorRules.GetVISIBLEValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesPresupuestosVISIBLE]; +end; + +function TDetallesPresupuestosBusinessProcessorRules.GetOldVISIBLEValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_DetallesPresupuestosVISIBLE]; +end; + +procedure TDetallesPresupuestosBusinessProcessorRules.SetVISIBLEValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesPresupuestosVISIBLE] := aValue; +end; + +function TDetallesPresupuestosBusinessProcessorRules.GetPUNTOSValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesPresupuestosPUNTOS]; +end; + +function TDetallesPresupuestosBusinessProcessorRules.GetOldPUNTOSValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_DetallesPresupuestosPUNTOS]; +end; + +procedure TDetallesPresupuestosBusinessProcessorRules.SetPUNTOSValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesPresupuestosPUNTOS] := aValue; +end; + +function TDetallesPresupuestosBusinessProcessorRules.GetIMPORTEPUNTOSValue: Currency; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesPresupuestosIMPORTEPUNTOS]; +end; + +function TDetallesPresupuestosBusinessProcessorRules.GetOldIMPORTEPUNTOSValue: Currency; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_DetallesPresupuestosIMPORTEPUNTOS]; +end; + +procedure TDetallesPresupuestosBusinessProcessorRules.SetIMPORTEPUNTOSValue(const aValue: Currency); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_DetallesPresupuestosIMPORTEPUNTOS] := aValue; +end; + + +{ TPresupuestosBusinessProcessorRules } +constructor TPresupuestosBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TPresupuestosBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TPresupuestosBusinessProcessorRules.GetCODIGOEMPRESAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosCODIGOEMPRESA]; +end; + +function TPresupuestosBusinessProcessorRules.GetOldCODIGOEMPRESAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PresupuestosCODIGOEMPRESA]; +end; + +procedure TPresupuestosBusinessProcessorRules.SetCODIGOEMPRESAValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosCODIGOEMPRESA] := aValue; +end; + +function TPresupuestosBusinessProcessorRules.GetCODIGOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosCODIGO]; +end; + +function TPresupuestosBusinessProcessorRules.GetOldCODIGOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PresupuestosCODIGO]; +end; + +procedure TPresupuestosBusinessProcessorRules.SetCODIGOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosCODIGO] := aValue; +end; + +function TPresupuestosBusinessProcessorRules.GetFECHAALTAValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosFECHAALTA]; +end; + +function TPresupuestosBusinessProcessorRules.GetOldFECHAALTAValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PresupuestosFECHAALTA]; +end; + +procedure TPresupuestosBusinessProcessorRules.SetFECHAALTAValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosFECHAALTA] := aValue; +end; + +function TPresupuestosBusinessProcessorRules.GetUSUARIOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosUSUARIO]; +end; + +function TPresupuestosBusinessProcessorRules.GetOldUSUARIOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PresupuestosUSUARIO]; +end; + +procedure TPresupuestosBusinessProcessorRules.SetUSUARIOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosUSUARIO] := aValue; +end; + +function TPresupuestosBusinessProcessorRules.GetCODIGOCONTACTOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosCODIGOCONTACTO]; +end; + +function TPresupuestosBusinessProcessorRules.GetOldCODIGOCONTACTOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PresupuestosCODIGOCONTACTO]; +end; + +procedure TPresupuestosBusinessProcessorRules.SetCODIGOCONTACTOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosCODIGOCONTACTO] := aValue; +end; + +function TPresupuestosBusinessProcessorRules.GetNOMBREValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosNOMBRE]; +end; + +function TPresupuestosBusinessProcessorRules.GetOldNOMBREValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PresupuestosNOMBRE]; +end; + +procedure TPresupuestosBusinessProcessorRules.SetNOMBREValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosNOMBRE] := aValue; +end; + +function TPresupuestosBusinessProcessorRules.GetREFERENCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosREFERENCIA]; +end; + +function TPresupuestosBusinessProcessorRules.GetOldREFERENCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PresupuestosREFERENCIA]; +end; + +procedure TPresupuestosBusinessProcessorRules.SetREFERENCIAValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosREFERENCIA] := aValue; +end; + +function TPresupuestosBusinessProcessorRules.GetTIPOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosTIPO]; +end; + +function TPresupuestosBusinessProcessorRules.GetOldTIPOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PresupuestosTIPO]; +end; + +procedure TPresupuestosBusinessProcessorRules.SetTIPOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosTIPO] := aValue; +end; + +function TPresupuestosBusinessProcessorRules.GetFECHAPRESUPUESTOValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosFECHAPRESUPUESTO]; +end; + +function TPresupuestosBusinessProcessorRules.GetOldFECHAPRESUPUESTOValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PresupuestosFECHAPRESUPUESTO]; +end; + +procedure TPresupuestosBusinessProcessorRules.SetFECHAPRESUPUESTOValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosFECHAPRESUPUESTO] := aValue; +end; + +function TPresupuestosBusinessProcessorRules.GetVIGENCIAPRESUPUESTOValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosVIGENCIAPRESUPUESTO]; +end; + +function TPresupuestosBusinessProcessorRules.GetOldVIGENCIAPRESUPUESTOValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PresupuestosVIGENCIAPRESUPUESTO]; +end; + +procedure TPresupuestosBusinessProcessorRules.SetVIGENCIAPRESUPUESTOValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosVIGENCIAPRESUPUESTO] := aValue; +end; + +function TPresupuestosBusinessProcessorRules.GetSITUACIONValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosSITUACION]; +end; + +function TPresupuestosBusinessProcessorRules.GetOldSITUACIONValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PresupuestosSITUACION]; +end; + +procedure TPresupuestosBusinessProcessorRules.SetSITUACIONValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosSITUACION] := aValue; +end; + +function TPresupuestosBusinessProcessorRules.GetFECHADECISIONValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosFECHADECISION]; +end; + +function TPresupuestosBusinessProcessorRules.GetOldFECHADECISIONValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PresupuestosFECHADECISION]; +end; + +procedure TPresupuestosBusinessProcessorRules.SetFECHADECISIONValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosFECHADECISION] := aValue; +end; + +function TPresupuestosBusinessProcessorRules.GetBASEIMPONIBLEValue: Currency; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosBASEIMPONIBLE]; +end; + +function TPresupuestosBusinessProcessorRules.GetOldBASEIMPONIBLEValue: Currency; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PresupuestosBASEIMPONIBLE]; +end; + +procedure TPresupuestosBusinessProcessorRules.SetBASEIMPONIBLEValue(const aValue: Currency); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosBASEIMPONIBLE] := aValue; +end; + +function TPresupuestosBusinessProcessorRules.GetDESCUENTOValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosDESCUENTO]; +end; + +function TPresupuestosBusinessProcessorRules.GetOldDESCUENTOValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PresupuestosDESCUENTO]; +end; + +procedure TPresupuestosBusinessProcessorRules.SetDESCUENTOValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosDESCUENTO] := aValue; +end; + +function TPresupuestosBusinessProcessorRules.GetIMPORTEDESCUENTOValue: Currency; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosIMPORTEDESCUENTO]; +end; + +function TPresupuestosBusinessProcessorRules.GetOldIMPORTEDESCUENTOValue: Currency; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PresupuestosIMPORTEDESCUENTO]; +end; + +procedure TPresupuestosBusinessProcessorRules.SetIMPORTEDESCUENTOValue(const aValue: Currency); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosIMPORTEDESCUENTO] := aValue; +end; + +function TPresupuestosBusinessProcessorRules.GetIVAValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosIVA]; +end; + +function TPresupuestosBusinessProcessorRules.GetOldIVAValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PresupuestosIVA]; +end; + +procedure TPresupuestosBusinessProcessorRules.SetIVAValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosIVA] := aValue; +end; + +function TPresupuestosBusinessProcessorRules.GetIMPORTEIVAValue: Currency; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosIMPORTEIVA]; +end; + +function TPresupuestosBusinessProcessorRules.GetOldIMPORTEIVAValue: Currency; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PresupuestosIMPORTEIVA]; +end; + +procedure TPresupuestosBusinessProcessorRules.SetIMPORTEIVAValue(const aValue: Currency); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosIMPORTEIVA] := aValue; +end; + +function TPresupuestosBusinessProcessorRules.GetIMPORTETOTALValue: Currency; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosIMPORTETOTAL]; +end; + +function TPresupuestosBusinessProcessorRules.GetOldIMPORTETOTALValue: Currency; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PresupuestosIMPORTETOTAL]; +end; + +procedure TPresupuestosBusinessProcessorRules.SetIMPORTETOTALValue(const aValue: Currency); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosIMPORTETOTAL] := aValue; +end; + +function TPresupuestosBusinessProcessorRules.GetOBSERVACIONESValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosOBSERVACIONES]; +end; + +function TPresupuestosBusinessProcessorRules.GetOldOBSERVACIONESValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.OldValueByName[fld_PresupuestosOBSERVACIONES]; +end; + +procedure TPresupuestosBusinessProcessorRules.SetOBSERVACIONESValue(const aValue: IROStrings); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosOBSERVACIONES] := aValue.Text; +end; + +function TPresupuestosBusinessProcessorRules.GetPLAZOENTREGAValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosPLAZOENTREGA]; +end; + +function TPresupuestosBusinessProcessorRules.GetOldPLAZOENTREGAValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.OldValueByName[fld_PresupuestosPLAZOENTREGA]; +end; + +procedure TPresupuestosBusinessProcessorRules.SetPLAZOENTREGAValue(const aValue: IROStrings); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosPLAZOENTREGA] := aValue.Text; +end; + +function TPresupuestosBusinessProcessorRules.GetFORMAPAGOValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosFORMAPAGO]; +end; + +function TPresupuestosBusinessProcessorRules.GetOldFORMAPAGOValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.OldValueByName[fld_PresupuestosFORMAPAGO]; +end; + +procedure TPresupuestosBusinessProcessorRules.SetFORMAPAGOValue(const aValue: IROStrings); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosFORMAPAGO] := aValue.Text; +end; + +function TPresupuestosBusinessProcessorRules.GetCODIGOALBARANValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosCODIGOALBARAN]; +end; + +function TPresupuestosBusinessProcessorRules.GetOldCODIGOALBARANValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PresupuestosCODIGOALBARAN]; +end; + +procedure TPresupuestosBusinessProcessorRules.SetCODIGOALBARANValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosCODIGOALBARAN] := aValue; +end; + + +{ TPresupuestos_RefreshDatasetBusinessProcessorRules } +constructor TPresupuestos_RefreshDatasetBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TPresupuestos_RefreshDatasetBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TPresupuestos_RefreshDatasetBusinessProcessorRules.GetCODIGOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Presupuestos_RefreshDatasetCODIGO]; +end; + +function TPresupuestos_RefreshDatasetBusinessProcessorRules.GetOldCODIGOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Presupuestos_RefreshDatasetCODIGO]; +end; + +procedure TPresupuestos_RefreshDatasetBusinessProcessorRules.SetCODIGOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Presupuestos_RefreshDatasetCODIGO] := aValue; +end; + +function TPresupuestos_RefreshDatasetBusinessProcessorRules.GetNOMBREValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Presupuestos_RefreshDatasetNOMBRE]; +end; + +function TPresupuestos_RefreshDatasetBusinessProcessorRules.GetOldNOMBREValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Presupuestos_RefreshDatasetNOMBRE]; +end; + +procedure TPresupuestos_RefreshDatasetBusinessProcessorRules.SetNOMBREValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Presupuestos_RefreshDatasetNOMBRE] := aValue; +end; + +function TPresupuestos_RefreshDatasetBusinessProcessorRules.GetCODIGOALBARANValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Presupuestos_RefreshDatasetCODIGOALBARAN]; +end; + +function TPresupuestos_RefreshDatasetBusinessProcessorRules.GetOldCODIGOALBARANValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Presupuestos_RefreshDatasetCODIGOALBARAN]; +end; + +procedure TPresupuestos_RefreshDatasetBusinessProcessorRules.SetCODIGOALBARANValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Presupuestos_RefreshDatasetCODIGOALBARAN] := aValue; +end; + + +{ TInformeCabeceraPresupuestoBusinessProcessorRules } +constructor TInformeCabeceraPresupuestoBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TInformeCabeceraPresupuestoBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetCODIGOEMPRESAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoCODIGOEMPRESA]; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetOldCODIGOEMPRESAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPresupuestoCODIGOEMPRESA]; +end; + +procedure TInformeCabeceraPresupuestoBusinessProcessorRules.SetCODIGOEMPRESAValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoCODIGOEMPRESA] := aValue; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetCODIGOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoCODIGO]; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetOldCODIGOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPresupuestoCODIGO]; +end; + +procedure TInformeCabeceraPresupuestoBusinessProcessorRules.SetCODIGOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoCODIGO] := aValue; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetFECHAALTAValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoFECHAALTA]; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetOldFECHAALTAValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPresupuestoFECHAALTA]; +end; + +procedure TInformeCabeceraPresupuestoBusinessProcessorRules.SetFECHAALTAValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoFECHAALTA] := aValue; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetUSUARIOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoUSUARIO]; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetOldUSUARIOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPresupuestoUSUARIO]; +end; + +procedure TInformeCabeceraPresupuestoBusinessProcessorRules.SetUSUARIOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoUSUARIO] := aValue; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetCODIGOCONTACTOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoCODIGOCONTACTO]; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetOldCODIGOCONTACTOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPresupuestoCODIGOCONTACTO]; +end; + +procedure TInformeCabeceraPresupuestoBusinessProcessorRules.SetCODIGOCONTACTOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoCODIGOCONTACTO] := aValue; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetREFERENCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoREFERENCIA]; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetOldREFERENCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPresupuestoREFERENCIA]; +end; + +procedure TInformeCabeceraPresupuestoBusinessProcessorRules.SetREFERENCIAValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoREFERENCIA] := aValue; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetTIPOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoTIPO]; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetOldTIPOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPresupuestoTIPO]; +end; + +procedure TInformeCabeceraPresupuestoBusinessProcessorRules.SetTIPOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoTIPO] := aValue; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetFECHAPRESUPUESTOValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoFECHAPRESUPUESTO]; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetOldFECHAPRESUPUESTOValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPresupuestoFECHAPRESUPUESTO]; +end; + +procedure TInformeCabeceraPresupuestoBusinessProcessorRules.SetFECHAPRESUPUESTOValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoFECHAPRESUPUESTO] := aValue; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetVIGENCIAPRESUPUESTOValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoVIGENCIAPRESUPUESTO]; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetOldVIGENCIAPRESUPUESTOValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPresupuestoVIGENCIAPRESUPUESTO]; +end; + +procedure TInformeCabeceraPresupuestoBusinessProcessorRules.SetVIGENCIAPRESUPUESTOValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoVIGENCIAPRESUPUESTO] := aValue; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetSITUACIONValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoSITUACION]; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetOldSITUACIONValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPresupuestoSITUACION]; +end; + +procedure TInformeCabeceraPresupuestoBusinessProcessorRules.SetSITUACIONValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoSITUACION] := aValue; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetFECHADECISIONValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoFECHADECISION]; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetOldFECHADECISIONValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPresupuestoFECHADECISION]; +end; + +procedure TInformeCabeceraPresupuestoBusinessProcessorRules.SetFECHADECISIONValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoFECHADECISION] := aValue; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetBASEIMPONIBLEValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoBASEIMPONIBLE]; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetOldBASEIMPONIBLEValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPresupuestoBASEIMPONIBLE]; +end; + +procedure TInformeCabeceraPresupuestoBusinessProcessorRules.SetBASEIMPONIBLEValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoBASEIMPONIBLE] := aValue; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetDESCUENTOValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoDESCUENTO]; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetOldDESCUENTOValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPresupuestoDESCUENTO]; +end; + +procedure TInformeCabeceraPresupuestoBusinessProcessorRules.SetDESCUENTOValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoDESCUENTO] := aValue; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetIMPORTEDESCUENTOValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoIMPORTEDESCUENTO]; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetOldIMPORTEDESCUENTOValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPresupuestoIMPORTEDESCUENTO]; +end; + +procedure TInformeCabeceraPresupuestoBusinessProcessorRules.SetIMPORTEDESCUENTOValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoIMPORTEDESCUENTO] := aValue; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetIVAValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoIVA]; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetOldIVAValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPresupuestoIVA]; +end; + +procedure TInformeCabeceraPresupuestoBusinessProcessorRules.SetIVAValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoIVA] := aValue; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetIMPORTEIVAValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoIMPORTEIVA]; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetOldIMPORTEIVAValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPresupuestoIMPORTEIVA]; +end; + +procedure TInformeCabeceraPresupuestoBusinessProcessorRules.SetIMPORTEIVAValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoIMPORTEIVA] := aValue; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetIMPORTETOTALValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoIMPORTETOTAL]; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetOldIMPORTETOTALValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPresupuestoIMPORTETOTAL]; +end; + +procedure TInformeCabeceraPresupuestoBusinessProcessorRules.SetIMPORTETOTALValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoIMPORTETOTAL] := aValue; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetOBSERVACIONESValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoOBSERVACIONES]; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetOldOBSERVACIONESValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPresupuestoOBSERVACIONES]; +end; + +procedure TInformeCabeceraPresupuestoBusinessProcessorRules.SetOBSERVACIONESValue(const aValue: IROStrings); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoOBSERVACIONES] := aValue.Text; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetPLAZOENTREGAValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoPLAZOENTREGA]; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetOldPLAZOENTREGAValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPresupuestoPLAZOENTREGA]; +end; + +procedure TInformeCabeceraPresupuestoBusinessProcessorRules.SetPLAZOENTREGAValue(const aValue: IROStrings); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoPLAZOENTREGA] := aValue.Text; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetFORMAPAGOValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoFORMAPAGO]; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetOldFORMAPAGOValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPresupuestoFORMAPAGO]; +end; + +procedure TInformeCabeceraPresupuestoBusinessProcessorRules.SetFORMAPAGOValue(const aValue: IROStrings); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoFORMAPAGO] := aValue.Text; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetNIFCIFValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoNIFCIF]; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetOldNIFCIFValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPresupuestoNIFCIF]; +end; + +procedure TInformeCabeceraPresupuestoBusinessProcessorRules.SetNIFCIFValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoNIFCIF] := aValue; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetNOMBREValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoNOMBRE]; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetOldNOMBREValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPresupuestoNOMBRE]; +end; + +procedure TInformeCabeceraPresupuestoBusinessProcessorRules.SetNOMBREValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoNOMBRE] := aValue; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetCALLEValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoCALLE]; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetOldCALLEValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPresupuestoCALLE]; +end; + +procedure TInformeCabeceraPresupuestoBusinessProcessorRules.SetCALLEValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoCALLE] := aValue; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetCODIGOPOSTALValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoCODIGOPOSTAL]; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetOldCODIGOPOSTALValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPresupuestoCODIGOPOSTAL]; +end; + +procedure TInformeCabeceraPresupuestoBusinessProcessorRules.SetCODIGOPOSTALValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoCODIGOPOSTAL] := aValue; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetPOBLACIONValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoPOBLACION]; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetOldPOBLACIONValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPresupuestoPOBLACION]; +end; + +procedure TInformeCabeceraPresupuestoBusinessProcessorRules.SetPOBLACIONValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoPOBLACION] := aValue; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetTELEFONO1Value: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoTELEFONO1]; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetOldTELEFONO1Value: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPresupuestoTELEFONO1]; +end; + +procedure TInformeCabeceraPresupuestoBusinessProcessorRules.SetTELEFONO1Value(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoTELEFONO1] := aValue; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetTELEFONO2Value: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoTELEFONO2]; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetOldTELEFONO2Value: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPresupuestoTELEFONO2]; +end; + +procedure TInformeCabeceraPresupuestoBusinessProcessorRules.SetTELEFONO2Value(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoTELEFONO2] := aValue; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetMOVILValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoMOVIL]; +end; + +function TInformeCabeceraPresupuestoBusinessProcessorRules.GetOldMOVILValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeCabeceraPresupuestoMOVIL]; +end; + +procedure TInformeCabeceraPresupuestoBusinessProcessorRules.SetMOVILValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeCabeceraPresupuestoMOVIL] := aValue; +end; + + +{ TInformeDetallesPresupuestoBusinessProcessorRules } +constructor TInformeDetallesPresupuestoBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TInformeDetallesPresupuestoBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TInformeDetallesPresupuestoBusinessProcessorRules.GetCODIGOPRESUPUESTOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesPresupuestoCODIGOPRESUPUESTO]; +end; + +function TInformeDetallesPresupuestoBusinessProcessorRules.GetOldCODIGOPRESUPUESTOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeDetallesPresupuestoCODIGOPRESUPUESTO]; +end; + +procedure TInformeDetallesPresupuestoBusinessProcessorRules.SetCODIGOPRESUPUESTOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesPresupuestoCODIGOPRESUPUESTO] := aValue; +end; + +function TInformeDetallesPresupuestoBusinessProcessorRules.GetNUMCONCEPTOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesPresupuestoNUMCONCEPTO]; +end; + +function TInformeDetallesPresupuestoBusinessProcessorRules.GetOldNUMCONCEPTOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeDetallesPresupuestoNUMCONCEPTO]; +end; + +procedure TInformeDetallesPresupuestoBusinessProcessorRules.SetNUMCONCEPTOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesPresupuestoNUMCONCEPTO] := aValue; +end; + +function TInformeDetallesPresupuestoBusinessProcessorRules.GetDESCRIPCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesPresupuestoDESCRIPCION]; +end; + +function TInformeDetallesPresupuestoBusinessProcessorRules.GetOldDESCRIPCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeDetallesPresupuestoDESCRIPCION]; +end; + +procedure TInformeDetallesPresupuestoBusinessProcessorRules.SetDESCRIPCIONValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesPresupuestoDESCRIPCION] := aValue; +end; + +function TInformeDetallesPresupuestoBusinessProcessorRules.GetCANTIDADValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesPresupuestoCANTIDAD]; +end; + +function TInformeDetallesPresupuestoBusinessProcessorRules.GetOldCANTIDADValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeDetallesPresupuestoCANTIDAD]; +end; + +procedure TInformeDetallesPresupuestoBusinessProcessorRules.SetCANTIDADValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesPresupuestoCANTIDAD] := aValue; +end; + +function TInformeDetallesPresupuestoBusinessProcessorRules.GetIMPORTEUNIDADValue: Currency; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesPresupuestoIMPORTEUNIDAD]; +end; + +function TInformeDetallesPresupuestoBusinessProcessorRules.GetOldIMPORTEUNIDADValue: Currency; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeDetallesPresupuestoIMPORTEUNIDAD]; +end; + +procedure TInformeDetallesPresupuestoBusinessProcessorRules.SetIMPORTEUNIDADValue(const aValue: Currency); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesPresupuestoIMPORTEUNIDAD] := aValue; +end; + +function TInformeDetallesPresupuestoBusinessProcessorRules.GetIMPORTETOTALValue: Currency; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesPresupuestoIMPORTETOTAL]; +end; + +function TInformeDetallesPresupuestoBusinessProcessorRules.GetOldIMPORTETOTALValue: Currency; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeDetallesPresupuestoIMPORTETOTAL]; +end; + +procedure TInformeDetallesPresupuestoBusinessProcessorRules.SetIMPORTETOTALValue(const aValue: Currency); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesPresupuestoIMPORTETOTAL] := aValue; +end; + +function TInformeDetallesPresupuestoBusinessProcessorRules.GetTIPOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesPresupuestoTIPO]; +end; + +function TInformeDetallesPresupuestoBusinessProcessorRules.GetOldTIPOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeDetallesPresupuestoTIPO]; +end; + +procedure TInformeDetallesPresupuestoBusinessProcessorRules.SetTIPOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesPresupuestoTIPO] := aValue; +end; + +function TInformeDetallesPresupuestoBusinessProcessorRules.GetPOSICIONValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesPresupuestoPOSICION]; +end; + +function TInformeDetallesPresupuestoBusinessProcessorRules.GetOldPOSICIONValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeDetallesPresupuestoPOSICION]; +end; + +procedure TInformeDetallesPresupuestoBusinessProcessorRules.SetPOSICIONValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeDetallesPresupuestoPOSICION] := aValue; +end; + + +initialization + RegisterBusinessProcessorRules(RID_DarReferenciaPresupuestoDelta, TDarReferenciaPresupuestoBusinessProcessorRules); + RegisterBusinessProcessorRules(RID_DetallesPresupuestosDelta, TDetallesPresupuestosBusinessProcessorRules); + RegisterBusinessProcessorRules(RID_PresupuestosDelta, TPresupuestosBusinessProcessorRules); + RegisterBusinessProcessorRules(RID_Presupuestos_RefreshDatasetDelta, TPresupuestos_RefreshDatasetBusinessProcessorRules); + RegisterBusinessProcessorRules(RID_InformeCabeceraPresupuestoDelta, TInformeCabeceraPresupuestoBusinessProcessorRules); + RegisterBusinessProcessorRules(RID_InformeDetallesPresupuestoDelta, TInformeDetallesPresupuestoBusinessProcessorRules); + +end. diff --git a/Modulos/Presupuestos_/Reglas/uBizPresupuestosCliente.pas b/Modulos/Presupuestos_/Reglas/uBizPresupuestosCliente.pas new file mode 100644 index 0000000..6b331a5 --- /dev/null +++ b/Modulos/Presupuestos_/Reglas/uBizPresupuestosCliente.pas @@ -0,0 +1,607 @@ +unit uBizPresupuestosCliente; + +interface + +uses + uDAInterfaces, uDADataTable, schPresupuestosClient_Intf, Classes, + uBizContacto, uDBSelectionList, Controls, uBizImportesDetalleBase, + uBizImportesCabeceraBase, uExceptions, uBizInformesBase, DB, + uBizDocumentosAsociados; + +const + BIZ_PRESUPUESTOCLIENTE = 'Client.PresupuestoCliente'; + BIZ_DETALLESPRESUPUESTOCLIENTE = 'Client.DetallesPresupuestoCliente'; + + SITUACION_PENDIENTE = 'Pendiente'; + SITUACION_ACEPTADO = 'Aceptado'; + SITUACION_RECHAZADO = 'Rechazado'; + + TIPO_COCINA = 'Cocina'; + TIPO_BANO = 'Baño'; + +type + IBizDetallesPresupuesto = interface(IDetallesPresupuestos) + ['{7233E1B0-5B76-4AE4-AB05-4F12EF74FBDD}'] + procedure CopyFrom(ADetallesPresupuesto : IBizDetallesPresupuesto); + end; + + IBizPresupuestos = interface(IPresupuestos) + ['{C699A849-3F52-486B-93AC-1EB0E6B5632F}'] + function GetDetalles: IBizDetallesPresupuesto; + procedure SetDetalles(Value: IBizDetallesPresupuesto); + property Detalles: IBizDetallesPresupuesto read GetDetalles write + SetDetalles; + + function GetCliente: IBizCliente; + procedure SetCliente(Value: IBizCliente); + property Cliente: IBizCliente read GetCliente write SetCliente; + + procedure Show; + procedure CopyFrom(APresupuesto : IBizPresupuestos); + function ShowForSelect : TModalResult; + end; + + TBizDetallesPresupuesto = class(TDetallesPresupuestosDataTableRules, + IBizDetallesPresupuesto, + IBizImportesDetalle, + IBizPuntosDetalle, + IBizVisibleDetalle, + IParche) // PARCHE *********************** + private + FIsAppend : Boolean; + FPosicionNueva : Integer; + FPuedoLanzarEvento : Boolean; // PARCHE *********************** + + procedure SetCANTIDADValue(const aValue: Integer); override; + procedure SetIMPORTEUNIDADValue(const aValue: Currency); override; + procedure SetIMPORTETOTALValue(const aValue: Currency); override; + procedure SetPUNTOSValue(const aValue: Integer); override; + procedure SetIMPORTEPUNTOSValue(const aValue: Currency); override; + + protected + procedure OnNewRecord(Sender: TDADataTable); override; + procedure BeforeInsert(Sender: TDADataTable); override; + procedure AfterPost(Sender: TDADataTable); override; + procedure AfterInsert(Sender: TDADataTable); override; + procedure AfterDelete(Sender: TDADataTable); override; + procedure BeforeDelete(Sender: TDADataTable); override; + + // PARCHE *********************** + procedure ActivarEventos; + procedure DesactivarEventos; + procedure Refrescar; + function PuedoLanzarEvento : Boolean; + public + procedure CopyFrom(ADetallesPresupuesto : IBizDetallesPresupuesto); + procedure RecalcularImporte; + function DarSumaTotalImportes : Currency; + constructor Create(aDataTable: TDADataTable); override; + end; + + + TBizPresupuestos = class(TPresupuestosDataTableRules, IBizPresupuestos, + IBizImportesCabecera, ISelectedRowList, + IApplyUpdateFailedException, IBizInformesAware) +// IBizDocumentosAsociados) + private + FCliente : IBizCliente; + FDetalles: IBizDetallesPresupuesto; + FDetallesLink: TDADataSource; + FSelectedRows : TSelectedRowList; + + //DOCUMENTOS ASOCIADOS +{ FGestorDocumentos: TGestorDocumentos; + function GetGestorDocumentos: TGestorDocumentos; + procedure SetGestorDocumentos(Value: TGestorDocumentos);} + procedure BeforeDelete(Sender: TDADataTable); override; + procedure BeforeCancel(Sender: TDADataTable); override; + + + protected + procedure ShowApplyUpdateFailed (const Error: EDAApplyUpdateFailed); + function GetDetalles: IBizDetallesPresupuesto; + procedure SetDetalles(Value: IBizDetallesPresupuesto); + + function GetCliente: IBizCliente; + procedure SetCliente(Value: IBizCliente); + procedure BeforeApplyUpdates(Sender : TDADataTable; const Delta : IDADelta); + + procedure OnNewRecord(Sender: TDADataTable); override; + function GetSelectedRows : TSelectedRowList; + procedure AfterDelete(Sender: TDADataTable); override; + procedure OnPostError(DataTable: TDADataTable; Error: EDatabaseError; + var Action: TDataAction); override; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + procedure RecalcularImporte; + procedure Show; + function ShowForSelect : TModalResult; + procedure Preview; + procedure Print; + procedure CopyFrom(APresupuesto : IBizPresupuestos); + + property Cliente: IBizCliente read GetCliente write SetCliente; + property Detalles: IBizDetallesPresupuesto read GetDetalles write SetDetalles; + property SelectedRows : TSelectedRowList read GetSelectedRows; + + //DOCUMENTOS ASOCIADOS +// property GestorDocumentos: TGestorDocumentos read GetGestorDocumentos write SetGestorDocumentos; + end; + + procedure ValidarPresupuesto (const APresupuesto : IBizPresupuestos); + +implementation + +uses + Windows, Dialogs, uDACDSDataTable, SysUtils, uEditorUtils, + uDataModulePresupuestos, uDataModuleContactos, Variants, Math, + uDataModuleBase, uDataModuleUsuarios, FactuGES_Intf, uDataTableUtils; + +var + FMasterDeleting : Boolean; + FCancelInsert : Boolean; + cadena1, cadena2 : string; + +procedure ValidarPresupuesto (const APresupuesto : IBizPresupuestos); +begin + if (FloatToStr(APresupuesto.FECHAPRESUPUESTO) = '0') then + raise Exception.Create('Debe indicar la fecha de este presupuesto'); + + if not Assigned(APresupuesto.Cliente) or + (APresupuesto.Cliente.DataTable.IsEmpty) then + raise Exception.Create('Debe indicar el cliente de este presupuesto'); + + + if (FloatToStr(APresupuesto.FECHADECISION) <> '0') and + (APresupuesto.FECHADECISION < APresupuesto.FECHAPRESUPUESTO) then + raise Exception.Create('La fecha de decisición debe ser posterior a la fecha del presupuesto'); + + + if (APresupuesto.SITUACION <> SITUACION_PENDIENTE) and + (FloatToStr(APresupuesto.FECHADECISION) = '0') then + begin + APresupuesto.Edit; + APresupuesto.FECHADECISION := Date; + APresupuesto.Post; + end; + +{ if (APresupuesto.SITUACION = SITUACION_ACEPTADO) and + (Length(APresupuesto.REFERENCIA) = 0) then + begin + APresupuesto.Edit; + APresupuesto.REFERENCIA := dmPresupuestos.DarNuevaReferencia(APresupuesto.TIPO); + APresupuesto.Post; + ShowMessage('Al presupuesto se le ha asignado la referencia ' + APresupuesto.REFERENCIA); + end;} +end; + +procedure TBizPresupuestos.RecalcularImporte; +begin + RecalcularImportesCabecera(Self.DataTable, Detalles.DataTable); +end; + +constructor TBizPresupuestos.Create(aDataTable: TDADataTable); +begin + inherited; + FCliente := NIL; + FDetallesLink := TDADataSource.Create(NIL); + FSelectedRows := TSelectedRowList.Create(aDataTable); + aDataTable.OnBeforeApplyUpdates := BeforeApplyUpdates; + + //DOCUMENTOS ASOCIADOS +{ FGestorDocumentos := TGestorDocumentos.Create; + FGestorDocumentos.RootDocumentos := dmBase.darRutaDocumentos; + aDataTable.BeforeCancel := BeforeCancel; +} +end; + +destructor TBizPresupuestos.Destroy; +begin + FCliente := NIL; + FDetalles := NIL; + FDetallesLink.Free; + FSelectedRows.Free; + +// FreeAndNil(FGestorDocumentos); + inherited; +end; + +function TBizPresupuestos.GetDetalles: IBizDetallesPresupuesto; +begin + Result := FDetalles; +end; + +function TBizPresupuestos.GetSelectedRows: TSelectedRowList; +begin + Result := FSelectedRows; +end; + +procedure TBizPresupuestos.OnNewRecord(Sender: TDADataTable); +begin + inherited; + CODIGOEMPRESA := dmBase.CodigoEmpresa; + USUARIO := dmUsuarios.LoginInfo.UserID; + FECHAALTA := Date; + FECHAPRESUPUESTO := Date; + VIGENCIAPRESUPUESTO := Date + 30; // 30 días de validez por defecto + SITUACION := SITUACION_PENDIENTE; + TIPO := TIPO_COCINA; + CODIGO := dmPresupuestos.GetNextAutoinc; +end; + +procedure TBizPresupuestos.Preview; +begin + dmPresupuestos.Preview(CODIGO); +end; + +function TBizPresupuestos.GetCliente: IBizCliente; +begin + if not Assigned(FCliente) then + FCliente := dmContactos.GetCliente(CODIGOCONTACTO) + else + if (CODIGOCONTACTO <> FCliente.Codigo) and + not (FCliente.DataTable.State in dsEditModes) then + dmContactos.GetContacto(FCliente, CODIGOCONTACTO); + + if not FCliente.DataTable.Active then + FCliente.DataTable.Active := True; + + Result := FCliente; +end; + +procedure TBizPresupuestos.SetCliente(Value: IBizCliente); +var + bEnEdicion : Boolean; +begin + bEnEdicion := (DataTable.State in dsEditModes); + if not bEnEdicion then + Edit; + FCliente := Value; + if Assigned(FCliente) then + begin + CODIGOCONTACTO := FCliente.CODIGO; + Post; + if bEnEdicion then + Edit; + end +end; + +procedure TBizPresupuestos.SetDetalles( + Value: IBizDetallesPresupuesto); +begin + FDetalles := Value; + FDetallesLink.DataTable := Self.DataTable; + FDetalles.DataTable.MasterSource := FDetallesLink; +end; + +procedure TBizPresupuestos.Show; +begin + ShowEditor(IBizPresupuestos, Self, etItem); +end; + +procedure TBizDetallesPresupuesto.ActivarEventos; +begin + FPuedoLanzarEvento := True; +end; + +procedure TBizDetallesPresupuesto.AfterDelete(Sender: TDADataTable); +var + ACabecera : IBizImportesCabecera; +begin + inherited; + + // PARCHE ******************* + if not PuedoLanzarEvento then + Exit; + + if (not FMasterDeleting) and (not FCancelInsert) then + begin + ReasignarPosiciones(Self.DataTable); + if Assigned(DataTable.MasterSource) and + Supports(DataTable.MasterSource.DataTable, IBizImportesCabecera, ACabecera) then + ACabecera.RecalcularImporte; + end; + FCancelInsert := False; +end; + +procedure TBizDetallesPresupuesto.AfterInsert(Sender: TDADataTable); +begin + inherited; + + // PARCHE ******************* + if not PuedoLanzarEvento then + Exit; + + FIsAppend := DataTable.EOF; + Post; // Para lanzar AfterPost y asigne posición + Edit; // Para volver a dejarlo en modo de edición +end; + +procedure TBizDetallesPresupuesto.AfterPost(Sender: TDADataTable); +begin + inherited; + + // PARCHE ******************* + if not PuedoLanzarEvento then + Exit; + + if POSICION < 0 then + AsignarPosicion(Self.DataTable, FIsAppend); + + if NUMCONCEPTO < 0 then + AsignarNumConcepto(Self.DataTable); + + FIsAppend := False; +end; + +procedure TBizDetallesPresupuesto.BeforeDelete(Sender: TDADataTable); +begin + inherited; + + // PARCHE ******************* + if not PuedoLanzarEvento then + Exit; + + if (DataTable.State in dsEditModes) then + DataTable.Cancel; + + if not FMasterDeleting then + FCancelInsert := not (DataTable.MasterSource.DataTable.FieldByName('CODIGO').AsInteger = CODIGOPRESUPUESTO); +end; + +procedure TBizDetallesPresupuesto.BeforeInsert(Sender: TDADataTable); +begin + inherited; + + // PARCHE ******************* + if not PuedoLanzarEvento then + Exit; + + if Assigned(DataTable.MasterSource) and + (DataTable.MasterSource.DataTable.State in dsEditModes) then + DataTable.MasterSource.DataTable.Post; + + if GetRecordCount = 0 then + FPosicionNueva := -1 + else + FPosicionNueva := POSICION * (-1); +end; + +procedure TBizDetallesPresupuesto.CopyFrom( + ADetallesPresupuesto: IBizDetallesPresupuesto); +begin + DeleteAllTable(Self.DataTable); + + ADetallesPresupuesto.First; + while not ADetallesPresupuesto.EOF do + begin + DataTable.Append; + DataTable.DisableEventHandlers; + try + POSICION := ADetallesPresupuesto.POSICION; + TIPO := ADetallesPresupuesto.TIPO; + DESCRIPCION := ADetallesPresupuesto.DESCRIPCION; + CANTIDAD := ADetallesPresupuesto.CANTIDAD; + IMPORTEUNIDAD := ADetallesPresupuesto.IMPORTEUNIDAD; + IMPORTETOTAL := ADetallesPresupuesto.IMPORTETOTAL; + PUNTOS := ADetallesPresupuesto.PUNTOS; + IMPORTEPUNTOS := ADetallesPresupuesto.IMPORTEPUNTOS; + VISIBLE := ADetallesPresupuesto.VISIBLE; + finally + DataTable.EnableEventHandlers; + end; + DataTable.Post; + ADetallesPresupuesto.Next; + end; +end; + +constructor TBizDetallesPresupuesto.Create(aDataTable: TDADataTable); +begin + inherited; + FPosicionNueva := 1; // Los conceptos empiezan a contar en 1 + + // PARCHE ******************* + FPuedoLanzarEvento := True; +end; + +function TBizDetallesPresupuesto.DarSumaTotalImportes: Currency; +begin + Result := DarTotalDetalles(Self.DataTable, True, True); +end; + +procedure TBizDetallesPresupuesto.DesactivarEventos; +begin + FPuedoLanzarEvento := False +end; + +procedure TBizDetallesPresupuesto.OnNewRecord(Sender: TDADataTable); +begin + inherited; + + // PARCHE ******************* + if not PuedoLanzarEvento then + Exit; + + POSICION := FPosicionNueva; + NUMCONCEPTO := -1; + TIPO := TIPODETALLE_CONCEPTO; + VISIBLE := VISIBLE_TRUE; + + + Self.DataTable.DisableEventHandlers; + try + CANTIDAD := 1; + finally + Self.DataTable.EnableEventHandlers; + end; +end; + +function TBizPresupuestos.ShowForSelect : TModalResult; +begin + Result := ShowEditor(IBizPresupuestos, Self, etSelectItems); +end; + +procedure TBizPresupuestos.ShowApplyUpdateFailed( + const Error: EDAApplyUpdateFailed); +begin + if (Pos(AUF_FKVIOLATION, Error.Message) > 0) then + MessageBox(0, 'No se puede borrar este presupuesto porque tiene un montaje o albarán asociado', 'Atención', MB_ICONWARNING or MB_OK); +end; + +procedure TBizPresupuestos.BeforeDelete(Sender: TDADataTable); +begin + inherited; + if not dmPresupuestos.PuedoEliminarPresupuesto(CODIGO) then + raise Exception.Create('No se puede borrar este presupuesto porque tiene un montaje o albarán asociado'); + FMasterDeleting := True; // Para que los detalles se borren de golpe y no recalcule posiciones ni totales + + //DOCUMENTOS ASOCIADOS +{ GestorDocumentos.Directorio := CODIGO; + GestorDocumentos.procesarDeleteTable;} +end; + +procedure TBizPresupuestos.AfterDelete(Sender: TDADataTable); +begin + inherited; + FMasterDeleting := False; +end; + +procedure TBizPresupuestos.Print; +begin + dmPresupuestos.Print(CODIGO); +end; + +procedure TBizPresupuestos.BeforeApplyUpdates(Sender: TDADataTable; + const Delta: IDADelta); +var + i : integer; +begin + for i := 0 to Delta.Count - 1 do + case Delta.Changes[i].ChangeType of + ctInsert, ctUpdate : ValidarPresupuesto(Self); + //ctDelete : + end; +end; + +procedure TBizPresupuestos.OnPostError(DataTable: TDADataTable; + Error: EDatabaseError; var Action: TDataAction); +begin + inherited; + Action := daAbort; + if (Pos(AUF_HAVEVALUE, Error.Message) > 0) then + begin + if (Pos('contacto', Error.Message) > 0) then + MessageBox(0, 'Debe indicar el cliente de este presupuesto', 'Atención', MB_ICONWARNING or MB_OK); + if (Pos('Fecha presupuesto', Error.Message) > 0) then + MessageBox(0, 'Debe indicar la fecha de este presupuesto', 'Atención', MB_ICONWARNING or MB_OK); + end + else + raise Error; +end; + +function TBizDetallesPresupuesto.PuedoLanzarEvento: Boolean; +begin + Result := FPuedoLanzarEvento; +end; + +procedure TBizDetallesPresupuesto.RecalcularImporte; +begin + RecalcularImporteDetalle(Self.DataTable, True, True); +end; + +procedure TBizPresupuestos.CopyFrom(APresupuesto: IBizPresupuestos); +begin + DataTable.DisableEventHandlers; + try + if not APresupuesto.DataTable.Active then + APresupuesto.DataTable.Active := True; + CODIGOEMPRESA := APresupuesto.CODIGOEMPRESA; + TIPO := APresupuesto.TIPO; + + CODIGOCONTACTO := APresupuesto.CODIGOCONTACTO; + NOMBRE := APresupuesto.NOMBRE; + Cliente := APresupuesto.Cliente; + + BASEIMPONIBLE := APresupuesto.BASEIMPONIBLE; + DESCUENTO := APresupuesto.DESCUENTO; + IMPORTEDESCUENTO := APresupuesto.IMPORTEDESCUENTO; + IVA := APresupuesto.IVA; + IMPORTEIVA := APresupuesto.IMPORTEIVA; + IMPORTETOTAL := APresupuesto.IMPORTETOTAL; + OBSERVACIONES := APresupuesto.OBSERVACIONES; + PLAZOENTREGA := APresupuesto.PLAZOENTREGA; + FORMAPAGO := APresupuesto.FORMAPAGO; + finally + DataTable.EnableEventHandlers; + end; + Post; + Detalles.CopyFrom(APresupuesto.Detalles); +end; + +procedure TBizDetallesPresupuesto.Refrescar; +begin + DataTable.Refresh; +end; + +procedure TBizDetallesPresupuesto.SetCANTIDADValue(const aValue: Integer); +begin + if aValue = 0 + then DataTable.Fields[idx_DetallesPresupuestosCANTIDAD].AsVariant := Null + else inherited; +end; + +procedure TBizDetallesPresupuesto.SetIMPORTEPUNTOSValue(const aValue: Currency); +begin + if aValue = 0 + then DataTable.Fields[idx_DetallesPresupuestosIMPORTEPUNTOS].AsVariant := Null + else inherited; +end; + +procedure TBizDetallesPresupuesto.SetIMPORTETOTALValue(const aValue: Currency); +begin + if aValue = 0 + then DataTable.Fields[idx_DetallesPresupuestosIMPORTETOTAL].AsVariant := Null + else inherited; +end; + +procedure TBizDetallesPresupuesto.SetIMPORTEUNIDADValue(const aValue: Currency); +begin + if aValue = 0 + then DataTable.Fields[idx_DetallesPresupuestosIMPORTEUNIDAD].AsVariant := Null + else inherited; +end; + +procedure TBizDetallesPresupuesto.SetPUNTOSValue(const aValue: Integer); +begin + if aValue = 0 + then DataTable.Fields[idx_DetallesPresupuestosPUNTOS].AsVariant := Null + else inherited; +end; + +procedure TBizPresupuestos.BeforeCancel(Sender: TDADataTable); +begin +// GestorDocumentos.procesarCancelTable; +end; + +{function TBizPresupuestos.GetGestorDocumentos: TGestorDocumentos; +begin + FGestorDocumentos.Directorio := CODIGO; + Result := FGestorDocumentos; +end; + +procedure TBizPresupuestos.SetGestorDocumentos(Value: TGestorDocumentos); +begin + FGestorDocumentos := Value; +end; +} +initialization + FMasterDeleting := False; + RegisterDataTableRules(BIZ_DETALLESPRESUPUESTOCLIENTE, TBizDetallesPresupuesto); + RegisterDataTableRules(BIZ_PRESUPUESTOCLIENTE, TBizPresupuestos); + +finalization + +end. diff --git a/Modulos/Presupuestos_/Servidor/srvPresupuestos_Impl.ddp b/Modulos/Presupuestos_/Servidor/srvPresupuestos_Impl.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Modulos/Presupuestos_/Servidor/srvPresupuestos_Impl.ddp differ diff --git a/Modulos/Presupuestos_/Servidor/srvPresupuestos_Impl.dfm b/Modulos/Presupuestos_/Servidor/srvPresupuestos_Impl.dfm new file mode 100644 index 0000000..e0da162 --- /dev/null +++ b/Modulos/Presupuestos_/Servidor/srvPresupuestos_Impl.dfm @@ -0,0 +1,1869 @@ +object srvPresupuestos: TsrvPresupuestos + OldCreateOrder = True + RequiresSession = True + SessionManager = dmServer.SessionManager + OnActivate = DARemoteServiceActivate + AcquireConnection = True + ConnectionName = 'IBX' + ServiceSchema = schPresupuestos + ServiceAdapter = dmServer.DABINAdapter + Left = 729 + Top = 363 + Height = 359 + Width = 328 + object schPresupuestos: TDASchema + ConnectionManager = dmServer.ConnectionManager + DataDictionary = dmServer.DataDictionary + Diagrams = dmServer.DADiagrams + Datasets = < + item + Params = < + item + Name = 'TIPO' + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + SQL = 'SELECT * FROM DAR_REFERENCIA_PRESUPUESTO(:TIPO)' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'REFERENCIA' + TableField = 'REFERENCIA' + end> + end> + Name = 'DarReferenciaPresupuesto' + Fields = < + item + Name = 'REFERENCIA' + DataType = datString + Size = 20 + BlobType = dabtUnknown + LogChanges = False + DictionaryEntry = 'REFERENCIA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end + item + Params = < + item + Name = 'CODIGOPRESUPUESTO' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'DETALLESPRESUPUESTOS' + SQL = + 'SELECT '#10' CODIGOPRESUPUESTO, NUMCONCEPTO, DESCRIPCION, CANTIDA' + + 'D, '#10' IMPORTEUNIDAD, IMPORTETOTAL, TIPO, POSICION, VISIBLE,'#10' ' + + ' PUNTOS, IMPORTEPUNTOS'#10' FROM'#10' DETALLESPRESUPUESTOS'#10' WHERE ' + + 'CODIGOPRESUPUESTO = :CODIGOPRESUPUESTO'#10' ORDER BY POSICION' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'CODIGOPRESUPUESTO' + TableField = 'CODIGOPRESUPUESTO' + end + item + DatasetField = 'NUMCONCEPTO' + TableField = 'NUMCONCEPTO' + end + item + DatasetField = 'DESCRIPCION' + TableField = 'DESCRIPCION' + end + item + DatasetField = 'CANTIDAD' + TableField = 'CANTIDAD' + end + item + DatasetField = 'IMPORTEUNIDAD' + TableField = 'IMPORTEUNIDAD' + end + item + DatasetField = 'IMPORTETOTAL' + TableField = 'IMPORTETOTAL' + end + item + DatasetField = 'TIPO' + TableField = 'TIPO' + end + item + DatasetField = 'POSICION' + TableField = 'POSICION' + end + item + DatasetField = 'VISIBLE' + TableField = 'VISIBLE' + end + item + DatasetField = 'PUNTOS' + TableField = 'PUNTOS' + end + item + DatasetField = 'IMPORTEPUNTOS' + TableField = 'IMPORTEPUNTOS' + end> + end> + Name = 'DetallesPresupuestos' + Fields = < + item + Name = 'CODIGOPRESUPUESTO' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'CODIGOPRESUPUESTO' + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NUMCONCEPTO' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'NUMCONCEPTO' + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'DESCRIPCION' + DataType = datString + Size = 2000 + BlobType = dabtUnknown + DictionaryEntry = 'DESCRIPCIONCONCEPTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CANTIDAD' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'CANTIDAD' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTEUNIDAD' + DataType = datCurrency + BlobType = dabtUnknown + DictionaryEntry = 'IMPORTEUNIDAD' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTETOTAL' + DataType = datCurrency + BlobType = dabtUnknown + DictionaryEntry = 'IMPORTETOTAL' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'TIPO' + DataType = datString + Size = 1 + Description = 'Cap'#237'tulo, etc' + BlobType = dabtUnknown + DictionaryEntry = 'TIPODETALLESPRESUPUESTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'POSICION' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'POSICIONCONCEPTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'VISIBLE' + DataType = datString + Size = 1 + BlobType = dabtUnknown + DictionaryEntry = 'VISIBLE' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PUNTOS' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'PUNTOS' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTEPUNTOS' + DataType = datCurrency + BlobType = dabtUnknown + DictionaryEntry = 'IMPORTEPUNTOS' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end + item + Params = <> + Statements = < + item + Connection = 'IBX' + TargetTable = 'PRESUPUESTOS' + SQL = + 'SELECT PRESUPUESTOS.CODIGOEMPRESA,'#10'PRESUPUESTOS.CODIGO, PRESUPUE' + + 'STOS.FECHAALTA,'#10'PRESUPUESTOS.USUARIO, PRESUPUESTOS.CODIGOCONTACT' + + 'O,'#10'CONTACTOS.NOMBRE,'#10'PRESUPUESTOS.REFERENCIA, PRESUPUESTOS.TIPO,' + + #10'PRESUPUESTOS.FECHAPRESUPUESTO, PRESUPUESTOS.VIGENCIAPRESUPUESTO' + + ','#10'PRESUPUESTOS.SITUACION, PRESUPUESTOS.FECHADECISION, PRESUPUEST' + + 'OS.BASEIMPONIBLE,'#10'PRESUPUESTOS.DESCUENTO, PRESUPUESTOS.IMPORTEDE' + + 'SCUENTO,'#10'PRESUPUESTOS.IVA, PRESUPUESTOS.IMPORTEIVA, PRESUPUESTOS' + + '.IMPORTETOTAL,'#10'PRESUPUESTOS.OBSERVACIONES, PRESUPUESTOS.PLAZOENT' + + 'REGA, PRESUPUESTOS.FORMAPAGO,'#10'ALBARANPAGO.CODIGO CODIGOALBARAN'#10'F' + + 'ROM CONTACTOS'#10' RIGHT OUTER JOIN PRESUPUESTOS ON (CONTACTOS.COD' + + 'IGO = PRESUPUESTOS.CODIGOCONTACTO)'#10' LEFT OUTER JOIN ALBARANPAG' + + 'O ON (PRESUPUESTOS.CODIGO = ALBARANPAGO.CODIGOPRESUPUESTO)' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'CODIGOEMPRESA' + TableField = 'CODIGOEMPRESA' + end + item + DatasetField = 'CODIGO' + TableField = 'CODIGO' + end + item + DatasetField = 'FECHAALTA' + TableField = 'FECHAALTA' + end + item + DatasetField = 'USUARIO' + TableField = 'USUARIO' + end + item + DatasetField = 'CODIGOCONTACTO' + TableField = 'CODIGOCONTACTO' + end + item + DatasetField = 'REFERENCIA' + TableField = 'REFERENCIA' + end + item + DatasetField = 'TIPO' + TableField = 'TIPO' + end + item + DatasetField = 'FECHAPRESUPUESTO' + TableField = 'FECHAPRESUPUESTO' + end + item + DatasetField = 'VIGENCIAPRESUPUESTO' + TableField = 'VIGENCIAPRESUPUESTO' + end + item + DatasetField = 'SITUACION' + TableField = 'SITUACION' + end + item + DatasetField = 'FECHADECISION' + TableField = 'FECHADECISION' + end + item + DatasetField = 'BASEIMPONIBLE' + TableField = 'BASEIMPONIBLE' + end + item + DatasetField = 'DESCUENTO' + TableField = 'DESCUENTO' + end + item + DatasetField = 'IMPORTEDESCUENTO' + TableField = 'IMPORTEDESCUENTO' + end + item + DatasetField = 'IVA' + TableField = 'IVA' + end + item + DatasetField = 'IMPORTEIVA' + TableField = 'IMPORTEIVA' + end + item + DatasetField = 'IMPORTETOTAL' + TableField = 'IMPORTETOTAL' + end + item + DatasetField = 'OBSERVACIONES' + TableField = 'OBSERVACIONES' + end + item + DatasetField = 'PLAZOENTREGA' + TableField = 'PLAZOENTREGA' + end + item + DatasetField = 'FORMAPAGO' + TableField = 'FORMAPAGO' + end> + end> + Name = 'Presupuestos' + Fields = < + item + Name = 'CODIGOEMPRESA' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'CODIGOEMPRESA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGO' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'CODIGOPRESUPUESTO' + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHAALTA' + DataType = datDateTime + BlobType = dabtUnknown + DictionaryEntry = 'FECHAALTA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'USUARIO' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DictionaryEntry = 'USUARIO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOCONTACTO' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'CODIGOCONTACTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NOMBRE' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + ServerAutoRefresh = True + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'REFERENCIA' + DataType = datString + Size = 20 + BlobType = dabtUnknown + DictionaryEntry = 'REFERENCIA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'TIPO' + DataType = datString + Size = 10 + Description = 'Cocina, ba'#241'o, etc' + BlobType = dabtUnknown + DictionaryEntry = 'TIPOPRESUPUESTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHAPRESUPUESTO' + DataType = datDateTime + BlobType = dabtUnknown + DictionaryEntry = 'FECHAPRESUPUESTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'VIGENCIAPRESUPUESTO' + DataType = datDateTime + BlobType = dabtUnknown + DictionaryEntry = 'VIGENCIAPRESUPUESTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'SITUACION' + DataType = datString + Size = 30 + Description = 'Pendiente, aceptado o rechazado' + BlobType = dabtUnknown + DictionaryEntry = 'SITUACIONPRESUPUESTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHADECISION' + DataType = datDateTime + BlobType = dabtUnknown + DictionaryEntry = 'FECHADECISION' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'BASEIMPONIBLE' + DataType = datCurrency + BlobType = dabtUnknown + DictionaryEntry = 'BASEIMPONIBLE' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'DESCUENTO' + DataType = datFloat + BlobType = dabtUnknown + DictionaryEntry = 'DESCUENTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTEDESCUENTO' + DataType = datCurrency + BlobType = dabtUnknown + DictionaryEntry = 'IMPORTEDESCUENTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IVA' + DataType = datFloat + BlobType = dabtUnknown + DictionaryEntry = 'IVA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTEIVA' + DataType = datCurrency + BlobType = dabtUnknown + DictionaryEntry = 'IMPORTEIVA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTETOTAL' + DataType = datCurrency + BlobType = dabtUnknown + DictionaryEntry = 'IMPORTETOTAL' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'OBSERVACIONES' + DataType = datMemo + BlobType = dabtUnknown + DictionaryEntry = 'OBSERVACIONES' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PLAZOENTREGA' + DataType = datMemo + BlobType = dabtUnknown + DictionaryEntry = 'PLAZOENTREGA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FORMAPAGO' + DataType = datMemo + BlobType = dabtUnknown + DictionaryEntry = 'FORMAPAGO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOALBARAN' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + ServerAutoRefresh = True + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end + item + Params = < + item + Name = 'CODIGO' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'PRESUPUESTOS' + SQL = + 'SELECT PRESUPUESTOS.CODIGO, CONTACTOS.NOMBRE, ALBARANPAGO.CODIGO' + + ' CODIGOALBARAN'#10'FROM CONTACTOS'#10' RIGHT OUTER JOIN PRESUPUESTOS O' + + 'N (CONTACTOS.CODIGO = PRESUPUESTOS.CODIGOCONTACTO)'#10' LEFT OUTER' + + ' JOIN ALBARANPAGO ON (PRESUPUESTOS.CODIGO = ALBARANPAGO.CODIGOPR' + + 'ESUPUESTO)'#10'WHERE PRESUPUESTOS.CODIGO = :CODIGO' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'CODIGO' + TableField = 'CODIGO' + end + item + DatasetField = 'NOMBRE' + TableField = 'NOMBRE' + end + item + DatasetField = 'CODIGOALBARAN' + TableField = 'CODIGOALBARAN' + end> + end> + Name = 'Presupuestos_RefreshDataset' + Fields = < + item + Name = 'CODIGO' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'CODIGOPRESUPUESTO' + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NOMBRE' + DataType = datString + Size = 100 + BlobType = dabtUnknown + LogChanges = False + DisplayWidth = 0 + DisplayLabel = 'Nombre' + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOALBARAN' + DataType = datInteger + BlobType = dabtUnknown + LogChanges = False + DisplayWidth = 0 + DisplayLabel = 'C'#243'd. albar'#225'n' + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end + item + Params = < + item + Name = 'CODIGO' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'PRESUPUESTOS' + SQL = + 'SELECT PR.CODIGOEMPRESA, PR.CODIGO, PR.FECHAALTA, PR.USUARIO, PR' + + '.CODIGOCONTACTO,'#10'PR.REFERENCIA, PR.TIPO, PR.FECHAPRESUPUESTO, PR' + + '.VIGENCIAPRESUPUESTO, PR.SITUACION,'#10'PR.FECHADECISION, PR.BASEIMP' + + 'ONIBLE, PR.DESCUENTO, PR.IMPORTEDESCUENTO, PR.IVA,'#10'PR.IMPORTEIVA' + + ', PR.IMPORTETOTAL, PR.OBSERVACIONES, PR.PLAZOENTREGA, PR.FORMAPA' + + 'GO,'#10#10'CO.NIFCIF, CO.NOMBRE, CO.CALLE, CO.CODIGOPOSTAL, CO.POBLACI' + + 'ON, CO.TELEFONO1,'#10'CO.TELEFONO2, CO.MOVIL'#10#10'FROM PRESUPUESTOS PR'#10'L' + + 'EFT JOIN CONTACTOS CO ON (PR.codigocontacto = CO.CODIGO)'#10'WHERE P' + + 'R.CODIGO = :CODIGO' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'CODIGOEMPRESA' + TableField = 'CODIGOEMPRESA' + end + item + DatasetField = 'CODIGO' + TableField = 'CODIGO' + end + item + DatasetField = 'FECHAALTA' + TableField = 'FECHAALTA' + end + item + DatasetField = 'USUARIO' + TableField = 'USUARIO' + end + item + DatasetField = 'CODIGOCONTACTO' + TableField = 'CODIGOCONTACTO' + end + item + DatasetField = 'REFERENCIA' + TableField = 'REFERENCIA' + end + item + DatasetField = 'TIPO' + TableField = 'TIPO' + end + item + DatasetField = 'FECHAPRESUPUESTO' + TableField = 'FECHAPRESUPUESTO' + end + item + DatasetField = 'VIGENCIAPRESUPUESTO' + TableField = 'VIGENCIAPRESUPUESTO' + end + item + DatasetField = 'SITUACION' + TableField = 'SITUACION' + end + item + DatasetField = 'FECHADECISION' + TableField = 'FECHADECISION' + end + item + DatasetField = 'BASEIMPONIBLE' + TableField = 'BASEIMPONIBLE' + end + item + DatasetField = 'DESCUENTO' + TableField = 'DESCUENTO' + end + item + DatasetField = 'IMPORTEDESCUENTO' + TableField = 'IMPORTEDESCUENTO' + end + item + DatasetField = 'IVA' + TableField = 'IVA' + end + item + DatasetField = 'IMPORTEIVA' + TableField = 'IMPORTEIVA' + end + item + DatasetField = 'IMPORTETOTAL' + TableField = 'IMPORTETOTAL' + end + item + DatasetField = 'OBSERVACIONES' + TableField = 'OBSERVACIONES' + end + item + DatasetField = 'PLAZOENTREGA' + TableField = 'PLAZOENTREGA' + end + item + DatasetField = 'FORMAPAGO' + TableField = 'FORMAPAGO' + end + item + DatasetField = 'NIFCIF' + TableField = 'NIFCIF' + end + item + DatasetField = 'NOMBRE' + TableField = 'NOMBRE' + end + item + DatasetField = 'CALLE' + TableField = 'CALLE' + end + item + DatasetField = 'CODIGOPOSTAL' + TableField = 'CODIGOPOSTAL' + end + item + DatasetField = 'POBLACION' + TableField = 'POBLACION' + end + item + DatasetField = 'TELEFONO1' + TableField = 'TELEFONO1' + end + item + DatasetField = 'TELEFONO2' + TableField = 'TELEFONO2' + end + item + DatasetField = 'MOVIL' + TableField = 'MOVIL' + end> + end> + Name = 'InformeCabeceraPresupuesto' + Fields = < + item + Name = 'CODIGOEMPRESA' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGO' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHAALTA' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'USUARIO' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOCONTACTO' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'REFERENCIA' + DataType = datString + Size = 20 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'TIPO' + DataType = datString + Size = 10 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHAPRESUPUESTO' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'VIGENCIAPRESUPUESTO' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'SITUACION' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHADECISION' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'BASEIMPONIBLE' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'DESCUENTO' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTEDESCUENTO' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IVA' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTEIVA' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTETOTAL' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'OBSERVACIONES' + DataType = datMemo + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PLAZOENTREGA' + DataType = datMemo + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FORMAPAGO' + DataType = datMemo + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NIFCIF' + DataType = datString + Size = 10 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NOMBRE' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CALLE' + DataType = datString + Size = 150 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOPOSTAL' + DataType = datString + Size = 5 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'POBLACION' + DataType = datString + Size = 40 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'TELEFONO1' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'TELEFONO2' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'MOVIL' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end + item + Params = < + item + Name = 'CODIGOPRESUPUESTO' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'DETALLESPRESUPUESTOS' + SQL = + 'SELECT '#10' CODIGOPRESUPUESTO, NUMCONCEPTO, DESCRIPCION, CANTIDA' + + 'D, '#10' IMPORTEUNIDAD, IMPORTETOTAL, TIPO, POSICION'#10' FROM'#10' D' + + 'ETALLESPRESUPUESTOS'#10' WHERE CODIGOPRESUPUESTO = :CODIGOPRESUPUES' + + 'TO'#10' AND VISIBLE = '#39'S'#39#10' ORDER BY POSICION' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'CODIGOPRESUPUESTO' + TableField = 'CODIGOPRESUPUESTO' + end + item + DatasetField = 'NUMCONCEPTO' + TableField = 'NUMCONCEPTO' + end + item + DatasetField = 'DESCRIPCION' + TableField = 'DESCRIPCION' + end + item + DatasetField = 'CANTIDAD' + TableField = 'CANTIDAD' + end + item + DatasetField = 'IMPORTEUNIDAD' + TableField = 'IMPORTEUNIDAD' + end + item + DatasetField = 'IMPORTETOTAL' + TableField = 'IMPORTETOTAL' + end + item + DatasetField = 'TIPO' + TableField = 'TIPO' + end + item + DatasetField = 'POSICION' + TableField = 'POSICION' + end> + end> + Name = 'InformeDetallesPresupuesto' + Fields = < + item + Name = 'CODIGOPRESUPUESTO' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'CODIGOPRESUPUESTO' + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NUMCONCEPTO' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'NUMCONCEPTO' + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'DESCRIPCION' + DataType = datString + Size = 2000 + BlobType = dabtUnknown + DictionaryEntry = 'DESCRIPCIONCONCEPTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CANTIDAD' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'CANTIDAD' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTEUNIDAD' + DataType = datCurrency + BlobType = dabtUnknown + DictionaryEntry = 'IMPORTEUNIDAD' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTETOTAL' + DataType = datCurrency + BlobType = dabtUnknown + DictionaryEntry = 'IMPORTETOTAL' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'TIPO' + DataType = datString + Size = 1 + Description = 'Cap'#237'tulo, etc' + BlobType = dabtUnknown + DictionaryEntry = 'TIPODETALLESPRESUPUESTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'POSICION' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'POSICIONCONCEPTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end> + Commands = < + item + Params = < + item + Name = 'CODIGOEMPRESA' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'CODIGO' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'FECHAALTA' + DataType = datDateTime + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'USUARIO' + DataType = datString + Size = 100 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'CODIGOCONTACTO' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'REFERENCIA' + DataType = datString + Size = 20 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'TIPO' + DataType = datString + Size = 10 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'FECHAPRESUPUESTO' + DataType = datDateTime + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'VIGENCIAPRESUPUESTO' + DataType = datDateTime + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'SITUACION' + DataType = datString + Size = 30 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'FECHADECISION' + DataType = datDateTime + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'BASEIMPONIBLE' + DataType = datFloat + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'DESCUENTO' + DataType = datFloat + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'IMPORTEDESCUENTO' + DataType = datFloat + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'IVA' + DataType = datFloat + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'IMPORTEIVA' + DataType = datFloat + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'IMPORTETOTAL' + DataType = datFloat + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'OBSERVACIONES' + DataType = datMemo + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'PLAZOENTREGA' + DataType = datMemo + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'FORMAPAGO' + DataType = datMemo + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'PRESUPUESTOS' + SQL = + 'INSERT'#10' INTO PRESUPUESTOS'#10' (CODIGOEMPRESA, CODIGO, FECHAALTA' + + ', USUARIO, CODIGOCONTACTO,'#10' REFERENCIA, TIPO, FECHAPRESUPUES' + + 'TO, VIGENCIAPRESUPUESTO, '#10' SITUACION, FECHADECISION, BASEIMP' + + 'ONIBLE, DESCUENTO, '#10' IMPORTEDESCUENTO, IVA, IMPORTEIVA, IMPO' + + 'RTETOTAL, OBSERVACIONES, '#10' PLAZOENTREGA, FORMAPAGO)'#10' VALUES' + + #10' (:CODIGOEMPRESA, :CODIGO,'#10' :FECHAALTA, :USUARIO, :CODIG' + + 'OCONTACTO,'#10' :REFERENCIA, :TIPO, :FECHAPRESUPUESTO, :VIGENCIA' + + 'PRESUPUESTO, '#10' :SITUACION, :FECHADECISION, :BASEIMPONIBLE, :' + + 'DESCUENTO, '#10' :IMPORTEDESCUENTO, :IVA, :IMPORTEIVA, :IMPORTET' + + 'OTAL, '#10' :OBSERVACIONES, :PLAZOENTREGA, :FORMAPAGO);' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Insert_Presupuestos' + end + item + Params = < + item + Name = 'CODIGOEMPRESA' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'FECHAALTA' + DataType = datDateTime + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'USUARIO' + DataType = datString + Size = 100 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'CODIGOCONTACTO' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'REFERENCIA' + DataType = datString + Size = 20 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'TIPO' + DataType = datString + Size = 10 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'FECHAPRESUPUESTO' + DataType = datDateTime + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'VIGENCIAPRESUPUESTO' + DataType = datDateTime + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'SITUACION' + DataType = datString + Size = 30 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'FECHADECISION' + DataType = datDateTime + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'BASEIMPONIBLE' + DataType = datFloat + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'DESCUENTO' + DataType = datFloat + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'IMPORTEDESCUENTO' + DataType = datFloat + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'IVA' + DataType = datFloat + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'IMPORTEIVA' + DataType = datFloat + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'IMPORTETOTAL' + DataType = datFloat + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'OBSERVACIONES' + DataType = datMemo + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'PLAZOENTREGA' + DataType = datMemo + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'FORMAPAGO' + DataType = datMemo + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'OLD_CODIGO' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'PRESUPUESTOS' + SQL = + 'UPDATE PRESUPUESTOS'#10' SET '#10' CODIGOEMPRESA = :CODIGOEMPRESA, '#10 + + ' FECHAALTA = :FECHAALTA, '#10' USUARIO = :USUARIO, '#10' CODIGO' + + 'CONTACTO = :CODIGOCONTACTO, '#10' REFERENCIA = :REFERENCIA, '#10' ' + + 'TIPO = :TIPO, '#10' FECHAPRESUPUESTO = :FECHAPRESUPUESTO, '#10' VI' + + 'GENCIAPRESUPUESTO = :VIGENCIAPRESUPUESTO, '#10' SITUACION = :SITU' + + 'ACION, '#10' FECHADECISION = :FECHADECISION, '#10' BASEIMPONIBLE =' + + ' :BASEIMPONIBLE, '#10' DESCUENTO = :DESCUENTO, '#10' IMPORTEDESCUE' + + 'NTO = :IMPORTEDESCUENTO, '#10' IVA = :IVA, '#10' IMPORTEIVA = :IMP' + + 'ORTEIVA, '#10' IMPORTETOTAL = :IMPORTETOTAL, '#10' OBSERVACIONES =' + + ' :OBSERVACIONES, '#10' PLAZOENTREGA = :PLAZOENTREGA, '#10' FORMAPA' + + 'GO = :FORMAPAGO'#10' WHERE'#10' (CODIGO = :OLD_CODIGO)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Update_Presupuestos' + end + item + Params = < + item + Name = 'OLD_CODIGO' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'PRESUPUESTOS' + SQL = + 'DELETE '#10' FROM'#10' PRESUPUESTOS'#10' WHERE'#10' (CODIGO = :OLD_CODIG' + + 'O)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Delete_Presupuestos' + end> + RelationShips = < + item + Name = 'FK_DetallesPresupuestos_Presupuestos' + MasterDatasetName = 'Presupuestos' + MasterFields = 'CODIGO' + DetailDatasetName = 'DetallesPresupuestos' + DetailFields = 'CODIGOPRESUPUESTO' + end + item + Name = 'FK_InformeDetallesPresupuesto_InformeCabeceraPresupuesto' + MasterDatasetName = 'InformeCabeceraPresupuesto' + MasterFields = 'CODIGO' + DetailDatasetName = 'InformeDetallesPresupuesto' + DetailFields = 'CODIGOPRESUPUESTO' + end> + UpdateRules = < + item + Name = 'Insert Presupuestos' + DoUpdate = False + DoInsert = True + DoDelete = False + DatasetName = 'Presupuestos' + FailureBehaviour = fbRaiseException + end + item + Name = 'Update Presupuestos' + DoUpdate = True + DoInsert = False + DoDelete = False + DatasetName = 'Presupuestos' + FailureBehaviour = fbRaiseException + end + item + Name = 'Delete DetallesPresupuestos' + DoUpdate = False + DoInsert = False + DoDelete = True + DatasetName = 'DetallesPresupuestos' + FailureBehaviour = fbRaiseException + end + item + Name = 'Update DetallesPresupuestos' + DoUpdate = True + DoInsert = False + DoDelete = False + DatasetName = 'DetallesPresupuestos' + FailureBehaviour = fbRaiseException + end + item + Name = 'Insert DetallesPresupuestos' + DoUpdate = False + DoInsert = True + DoDelete = False + DatasetName = 'DetallesPresupuestos' + FailureBehaviour = fbRaiseException + end + item + Name = 'Delete Presupuestos' + DoUpdate = False + DoInsert = False + DoDelete = True + DatasetName = 'Presupuestos' + FailureBehaviour = fbRaiseException + end> + Left = 48 + Top = 24 + end + object bpPresupuestos: TDABusinessProcessor + Schema = schPresupuestos + InsertCommandName = 'Insert_Presupuestos' + UpdateCommandName = 'Update_Presupuestos' + RefreshDatasetName = 'Presupuestos_RefreshDataset' + ReferencedDataset = 'Presupuestos' + ProcessorOptions = [poAutoGenerateDelete, poPrepareCommands] + UpdateMode = updWhereKeyOnly + Left = 208 + Top = 24 + end + object frxReport1: TfrxReport + Version = '3.15' + DotMatrixReport = False + EngineOptions.DoublePass = True + IniFile = '\Software\Fast Reports' + PreviewOptions.Buttons = [pbPrint, pbLoad, pbSave, pbExport, pbZoom, pbFind, pbOutline, pbPageSetup, pbTools, pbEdit, pbNavigator] + PreviewOptions.OutlineWidth = 180 + PreviewOptions.Zoom = 1.000000000000000000 + PrintOptions.Printer = 'Default' + ReportOptions.CreateDate = 37871.995398692100000000 + ReportOptions.Description.Strings = ( + 'Demonstrates how to create simple list report.') + ReportOptions.LastChange = 38758.908826805560000000 + 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( + );' + 'end;' + '' + 'procedure BandaDetallesOnBeforePrint(Sender: TfrxComponent);' + 'begin' + ' case of' + ' '#39'C'#39': begin' + ' MemoCampo12.Style := '#39'Concepto normal'#39';' + ' MemoCampo2.Style := '#39'Concepto normal'#39';' + ' MemoCampo3.Style := '#39'Concepto normal'#39';' + ' MemoCampo4.Style := '#39'Concepto normal'#39';' + ' end;' + ' '#39'S'#39': begin' + ' MemoCampo12.Style := '#39'Concepto subtotal'#39';' + ' MemoCampo2.Style := '#39'Concepto subtotal'#39';' + ' MemoCampo3.Style := '#39'Concepto subtotal'#39';' + ' MemoCampo4.Style := '#39'Concepto subtotal'#39';' + ' end;' + ' '#39'T'#39': begin' + ' MemoCampo12.Style := '#39'Concepto titulo'#39';' + ' MemoCampo2.Style := '#39'Concepto titulo'#39';' + ' MemoCampo3.Style := '#39'Concepto titulo'#39';' + ' MemoCampo4.Style := '#39'Concepto titulo'#39';' + ' end;' + ' end;' + 'end;' + '' + 'procedure ReportSummary1OnBeforePrint(Sender: TfrxComponent);' + 'begin' + + ' Engine.CurY := Engine.CurY + Engine.FreeSpace - ReportSum' + + 'mary1.Height - 1;' + 'end;' + '' + 'begin' + '' + 'end.') + StoreInDFM = False + Left = 40 + Top = 128 + Datasets = < + item + DataSet = frxDBCabecera + DataSetName = 'frxDBCabecera' + end + item + DataSet = frxDBDetalles + DataSetName = 'frxDBDetalles' + end> + Variables = <> + Style = < + item + Name = 'Concepto normal' + Color = clNone + Font.Charset = ANSI_CHARSET + Font.Color = clWindowText + Font.Height = -13 + Font.Name = 'Tahoma' + Font.Style = [] + end + item + Name = 'Concepto subtotal' + Color = 15790320 + Font.Charset = ANSI_CHARSET + Font.Color = clWindowText + Font.Height = -13 + Font.Name = 'Tahoma' + Font.Style = [fsBold] + end + item + Name = 'Cabecera de columna' + Color = 15790320 + Font.Charset = ANSI_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Tahoma' + Font.Style = [fsBold] + Frame.Typ = [ftLeft, ftRight, ftTop, ftBottom] + end + item + Name = 'Concepto titulo' + Color = clNone + Font.Charset = ANSI_CHARSET + Font.Color = clWindowText + Font.Height = -13 + Font.Name = 'Tahoma' + Font.Style = [fsBold] + end> + end + object DADataCabecera: TDADataSource + DataTable = tbl_Presupuesto + Left = 120 + Top = 176 + end + object DADataDetalles: TDADataSource + DataTable = tbl_DetallesPresupuesto + Left = 200 + Top = 176 + end + object frxDBCabecera: TfrxDBDataset + UserName = 'frxDBCabecera' + CloseDataSource = False + DataSource = DADataCabecera + Left = 120 + Top = 128 + end + object frxDBDetalles: TfrxDBDataset + UserName = 'frxDBDetalles' + CloseDataSource = False + DataSource = DADataDetalles + Left = 200 + Top = 128 + end + object tbl_Presupuesto: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = <> + Params = <> + MasterMappingMode = mmDataRequest + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteFetchEnabled = False + SchemaCall.Params = <> + DataRequestCall.Params = <> + DataUpdateCall.Params = <> + ScriptCall.Params = <> + ReadOnly = False + Adapter = dmServer.DABINAdapter + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + IndexDefs = <> + Left = 120 + Top = 240 + end + object tbl_DetallesPresupuesto: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = <> + Params = <> + MasterMappingMode = mmDataRequest + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteFetchEnabled = False + SchemaCall.Params = <> + DataRequestCall.Params = <> + DataUpdateCall.Params = <> + ScriptCall.Params = <> + ReadOnly = False + Adapter = dmServer.DABINAdapter + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + IndexDefs = <> + Left = 200 + Top = 240 + end +end diff --git a/Modulos/Presupuestos_/Servidor/srvPresupuestos_Impl.pas b/Modulos/Presupuestos_/Servidor/srvPresupuestos_Impl.pas new file mode 100644 index 0000000..9e396be --- /dev/null +++ b/Modulos/Presupuestos_/Servidor/srvPresupuestos_Impl.pas @@ -0,0 +1,133 @@ +unit srvPresupuestos_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:} DARemoteService_Impl, + {Used RODLs:} DataAbstract_Intf, + {Generated:} FactuGES_Intf, uDAClasses, uDAScriptingProvider, + uDABusinessProcessor, uDADataTable, uDAInterfaces, uDAEngine, + uDAIBXDriver, frxClass, frxDBSet, DB, uDACDSDataTable, uDABINAdapter, + uDADriverManager; + +type + { TsrvPresupuestos } + TsrvPresupuestos = class(TDARemoteService, IsrvPresupuestos) + bpPresupuestos: TDABusinessProcessor; + DADataCabecera: TDADataSource; + DADataDetalles: TDADataSource; + frxDBCabecera: TfrxDBDataset; + frxDBDetalles: TfrxDBDataset; + tbl_Presupuesto: TDACDSDataTable; + tbl_DetallesPresupuesto: TDACDSDataTable; + schPresupuestos: TDASchema; + frxReport1: TfrxReport; + procedure DARemoteServiceActivate(const aClientID: TGUID; + aSession: TROSession; const aMessage: IROMessage); + private + protected + function GenerateReport(const Codigo: Integer; const TamLetra: Integer): Binary; + function GetNextAutoinc: Integer; + function DarNuevaReferencia(const TipoPresupuesto: String): String; + function PuedoEliminarPresupuesto(const CodigoPresupuesto: Integer): Boolean; + end; + +implementation + +{$R *.dfm} +uses + Dialogs, + {Generated:} FactuGES_Invk, uDataModuleServer, uRORemoteDataModule, + fServerForm, Variants, IB, schPresupuestosClient_Intf; + +procedure Create_srvPresupuestos(out anInstance : IUnknown); +begin + anInstance := TsrvPresupuestos.Create(NIL); +end; + +{ srvPresupuestos } +procedure TsrvPresupuestos.DARemoteServiceActivate(const aClientID: TGUID; + aSession: TROSession; const aMessage: IROMessage); +begin + ((Connection as IDAConnectionObjectAccess).ConnectionObject as + TIBXConnection).Database.TraceFlags := [tfQPrepare, tfQExecute, tfQFetch, tfError, tfStmt, tfConnect, tfTransact, tfBlob, tfService, tfMisc]; +end; + +function TsrvPresupuestos.GenerateReport(const Codigo: Integer; const TamLetra: Integer): Binary; +var + dsMaster: IDADataset; + dsDetail: IDADataset; + AStream: TMemoryStream; +begin + AStream := TMemoryStream.Create; + Result := Binary.Create; + try + dsMaster := schPresupuestos.NewDataset(Connection, 'InformeCabeceraPresupuesto', ['CODIGO'], [Codigo]); + dsDetail := schPresupuestos.NewDataset(Connection, 'InformeDetallesPresupuesto', ['CODIGOPRESUPUESTO'], [Codigo], False); + dsDetail.Active := True; + + AStream.Clear; + ServiceAdapter.WriteDataset(AStream, dsMaster, [woRows, woSchema], -1); + ServiceAdapter.ReadDataset(AStream, tbl_Presupuesto, TRUE, '', TRUE, TRUE); + + AStream.Clear; + ServiceAdapter.WriteDataset(AStream, dsDetail, [woRows, woSchema], -1); + ServiceAdapter.ReadDataset(AStream, tbl_DetallesPresupuesto, TRUE, '', TRUE, TRUE); + + frxReport1.LoadFromFile(DarRutaInformes + 'InfPresupuesto.fr3', True); + + //Tamaño de letra + if TamLetra <> 0 then + frxReport1.Styles.Find('Concepto normal').Font.Size := TamLetra; + + frxReport1.PrepareReport; + frxReport1.PreviewPages.SaveToStream(Result); + finally + AStream.Free; + end; +end; + +function TsrvPresupuestos.GetNextAutoinc: Integer; +begin + Result := uDataModuleServer.GetNextAutoinc(Connection, 'GEN_PRESUPUESTOS'); +end; + +function TsrvPresupuestos.DarNuevaReferencia(const TipoPresupuesto: String): String; +var + dsReferencia: IDADataset; +begin + dsReferencia := schPresupuestos.NewDataset(Connection, 'DarReferenciaPresupuesto', ['TIPO'], [TipoPresupuesto]); + Result := dsReferencia.FieldByName('REFERENCIA').AsString; +end; + +function TsrvPresupuestos.PuedoEliminarPresupuesto( + const CodigoPresupuesto: Integer): Boolean; +var + dsPresupuesto: IDASQLCommand; +begin + Result := True; + Connection.BeginTransaction; + try + dsPresupuesto := schPresupuestos.NewCommand(Connection, 'Delete_Presupuestos', ['OLD_CODIGO'], [CodigoPresupuesto]); + except + on E: Exception do + Result := False; + end; + Connection.RollbackTransaction; +end; + +initialization + TROClassFactory.Create('srvPresupuestos', Create_srvPresupuestos, TsrvPresupuestos_Invoker); + +finalization + +end. diff --git a/Output/Cliente/AlbaranesCliente.bpl b/Output/Cliente/AlbaranesCliente.bpl new file mode 100644 index 0000000..6aa0d85 Binary files /dev/null and b/Output/Cliente/AlbaranesCliente.bpl differ diff --git a/Output/Cliente/Almacenes.bpl b/Output/Cliente/Almacenes.bpl new file mode 100644 index 0000000..166e69c Binary files /dev/null and b/Output/Cliente/Almacenes.bpl differ diff --git a/Output/Cliente/Articulos.bpl b/Output/Cliente/Articulos.bpl new file mode 100644 index 0000000..5a41971 Binary files /dev/null and b/Output/Cliente/Articulos.bpl differ diff --git a/Output/Cliente/ArticulosMontaje.bpl b/Output/Cliente/ArticulosMontaje.bpl new file mode 100644 index 0000000..4efa238 Binary files /dev/null and b/Output/Cliente/ArticulosMontaje.bpl differ diff --git a/Output/Cliente/Asientos.bpl b/Output/Cliente/Asientos.bpl new file mode 100644 index 0000000..93a28b6 Binary files /dev/null and b/Output/Cliente/Asientos.bpl differ diff --git a/Output/Cliente/BaseD7.bpl b/Output/Cliente/BaseD7.bpl new file mode 100644 index 0000000..4176cbf Binary files /dev/null and b/Output/Cliente/BaseD7.bpl differ diff --git a/Output/Cliente/Calendarios.bpl b/Output/Cliente/Calendarios.bpl new file mode 100644 index 0000000..ae22f39 Binary files /dev/null and b/Output/Cliente/Calendarios.bpl differ diff --git a/Output/Cliente/Cliente.exe b/Output/Cliente/Cliente.exe new file mode 100644 index 0000000..711223a Binary files /dev/null and b/Output/Cliente/Cliente.exe differ diff --git a/Output/Cliente/Configuracion.bpl b/Output/Cliente/Configuracion.bpl new file mode 100644 index 0000000..e193c45 Binary files /dev/null and b/Output/Cliente/Configuracion.bpl differ diff --git a/Output/Cliente/Contactos.bpl b/Output/Cliente/Contactos.bpl new file mode 100644 index 0000000..583d412 Binary files /dev/null and b/Output/Cliente/Contactos.bpl differ diff --git a/Output/Cliente/Cuentas.bpl b/Output/Cliente/Cuentas.bpl new file mode 100644 index 0000000..b2953ae Binary files /dev/null and b/Output/Cliente/Cuentas.bpl differ diff --git a/Output/Cliente/DocumentosAsociados.bpl b/Output/Cliente/DocumentosAsociados.bpl new file mode 100644 index 0000000..12a0b76 Binary files /dev/null and b/Output/Cliente/DocumentosAsociados.bpl differ diff --git a/Output/Cliente/FactuGES.exe b/Output/Cliente/FactuGES.exe new file mode 100644 index 0000000..96c2969 Binary files /dev/null and b/Output/Cliente/FactuGES.exe differ diff --git a/Output/Cliente/FactuGES_Server.exe b/Output/Cliente/FactuGES_Server.exe new file mode 100644 index 0000000..68093d0 Binary files /dev/null and b/Output/Cliente/FactuGES_Server.exe differ diff --git a/Output/Cliente/FacturasCliente.bpl b/Output/Cliente/FacturasCliente.bpl new file mode 100644 index 0000000..f7bd80d Binary files /dev/null and b/Output/Cliente/FacturasCliente.bpl differ diff --git a/Output/Cliente/FacturasProveedor.bpl b/Output/Cliente/FacturasProveedor.bpl new file mode 100644 index 0000000..f6e2a6d Binary files /dev/null and b/Output/Cliente/FacturasProveedor.bpl differ diff --git a/Output/Cliente/Intervalos.bpl b/Output/Cliente/Intervalos.bpl new file mode 100644 index 0000000..34efc2b Binary files /dev/null and b/Output/Cliente/Intervalos.bpl differ diff --git a/Output/Cliente/Montajes_Impl.bpl b/Output/Cliente/Montajes_Impl.bpl new file mode 100644 index 0000000..c3bac19 Binary files /dev/null and b/Output/Cliente/Montajes_Impl.bpl differ diff --git a/Output/Cliente/Montajes_Intf.bpl b/Output/Cliente/Montajes_Intf.bpl new file mode 100644 index 0000000..c944f58 Binary files /dev/null and b/Output/Cliente/Montajes_Intf.bpl differ diff --git a/Output/Cliente/Pagos.bpl b/Output/Cliente/Pagos.bpl new file mode 100644 index 0000000..13f9b3e Binary files /dev/null and b/Output/Cliente/Pagos.bpl differ diff --git a/Output/Cliente/PedidosMontaje.bpl b/Output/Cliente/PedidosMontaje.bpl new file mode 100644 index 0000000..64a1236 Binary files /dev/null and b/Output/Cliente/PedidosMontaje.bpl differ diff --git a/Output/Cliente/PedidosProveedor.bpl b/Output/Cliente/PedidosProveedor.bpl new file mode 100644 index 0000000..56fe881 Binary files /dev/null and b/Output/Cliente/PedidosProveedor.bpl differ diff --git a/Output/Cliente/Presupuestos.bpl b/Output/Cliente/Presupuestos.bpl new file mode 100644 index 0000000..bd0e4b4 Binary files /dev/null and b/Output/Cliente/Presupuestos.bpl differ diff --git a/Output/Cliente/Presupuestos_Intf.bpl b/Output/Cliente/Presupuestos_Intf.bpl new file mode 100644 index 0000000..2664a51 Binary files /dev/null and b/Output/Cliente/Presupuestos_Intf.bpl differ diff --git a/Output/Cliente/Usuarios.bpl b/Output/Cliente/Usuarios.bpl new file mode 100644 index 0000000..95f8ad3 Binary files /dev/null and b/Output/Cliente/Usuarios.bpl differ diff --git a/Output/Produccion/Cliente/AlbaranesCliente.bpl b/Output/Produccion/Cliente/AlbaranesCliente.bpl new file mode 100644 index 0000000..6aa0d85 Binary files /dev/null and b/Output/Produccion/Cliente/AlbaranesCliente.bpl differ diff --git a/Output/Produccion/Cliente/Almacenes.bpl b/Output/Produccion/Cliente/Almacenes.bpl new file mode 100644 index 0000000..166e69c Binary files /dev/null and b/Output/Produccion/Cliente/Almacenes.bpl differ diff --git a/Output/Produccion/Cliente/Articulos.bpl b/Output/Produccion/Cliente/Articulos.bpl new file mode 100644 index 0000000..5a41971 Binary files /dev/null and b/Output/Produccion/Cliente/Articulos.bpl differ diff --git a/Output/Produccion/Cliente/ArticulosMontaje.bpl b/Output/Produccion/Cliente/ArticulosMontaje.bpl new file mode 100644 index 0000000..4efa238 Binary files /dev/null and b/Output/Produccion/Cliente/ArticulosMontaje.bpl differ diff --git a/Output/Produccion/Cliente/Asientos.bpl b/Output/Produccion/Cliente/Asientos.bpl new file mode 100644 index 0000000..93a28b6 Binary files /dev/null and b/Output/Produccion/Cliente/Asientos.bpl differ diff --git a/Output/Produccion/Cliente/BaseD7.bpl b/Output/Produccion/Cliente/BaseD7.bpl new file mode 100644 index 0000000..4176cbf Binary files /dev/null and b/Output/Produccion/Cliente/BaseD7.bpl differ diff --git a/Output/Produccion/Cliente/Calendarios.bpl b/Output/Produccion/Cliente/Calendarios.bpl new file mode 100644 index 0000000..ae22f39 Binary files /dev/null and b/Output/Produccion/Cliente/Calendarios.bpl differ diff --git a/Output/Produccion/Cliente/Configuracion.bpl b/Output/Produccion/Cliente/Configuracion.bpl new file mode 100644 index 0000000..e193c45 Binary files /dev/null and b/Output/Produccion/Cliente/Configuracion.bpl differ diff --git a/Output/Produccion/Cliente/Contactos.bpl b/Output/Produccion/Cliente/Contactos.bpl new file mode 100644 index 0000000..a0eef6a Binary files /dev/null and b/Output/Produccion/Cliente/Contactos.bpl differ diff --git a/Output/Produccion/Cliente/Cuentas.bpl b/Output/Produccion/Cliente/Cuentas.bpl new file mode 100644 index 0000000..b2953ae Binary files /dev/null and b/Output/Produccion/Cliente/Cuentas.bpl differ diff --git a/Output/Produccion/Cliente/DJcl70.bpl b/Output/Produccion/Cliente/DJcl70.bpl new file mode 100644 index 0000000..10426b5 Binary files /dev/null and b/Output/Produccion/Cliente/DJcl70.bpl differ diff --git a/Output/Produccion/Cliente/DJclVcl70.bpl b/Output/Produccion/Cliente/DJclVcl70.bpl new file mode 100644 index 0000000..004a047 Binary files /dev/null and b/Output/Produccion/Cliente/DJclVcl70.bpl differ diff --git a/Output/Produccion/Cliente/DataAbstract_D7.bpl b/Output/Produccion/Cliente/DataAbstract_D7.bpl new file mode 100644 index 0000000..178ec60 Binary files /dev/null and b/Output/Produccion/Cliente/DataAbstract_D7.bpl differ diff --git a/Output/Produccion/Cliente/DocumentosAsociados.bpl b/Output/Produccion/Cliente/DocumentosAsociados.bpl new file mode 100644 index 0000000..12a0b76 Binary files /dev/null and b/Output/Produccion/Cliente/DocumentosAsociados.bpl differ diff --git a/Output/Produccion/Cliente/EPCCommon70.bpl b/Output/Produccion/Cliente/EPCCommon70.bpl new file mode 100644 index 0000000..c26aafe Binary files /dev/null and b/Output/Produccion/Cliente/EPCCommon70.bpl differ diff --git a/Output/Produccion/Cliente/EPCDUnitWizard70.bpl b/Output/Produccion/Cliente/EPCDUnitWizard70.bpl new file mode 100644 index 0000000..ebe2516 Binary files /dev/null and b/Output/Produccion/Cliente/EPCDUnitWizard70.bpl differ diff --git a/Output/Produccion/Cliente/EPCOTAUtils70.bpl b/Output/Produccion/Cliente/EPCOTAUtils70.bpl new file mode 100644 index 0000000..20e9370 Binary files /dev/null and b/Output/Produccion/Cliente/EPCOTAUtils70.bpl differ diff --git a/Output/Produccion/Cliente/EasyListviewD7.bpl b/Output/Produccion/Cliente/EasyListviewD7.bpl new file mode 100644 index 0000000..e39f769 Binary files /dev/null and b/Output/Produccion/Cliente/EasyListviewD7.bpl differ diff --git a/Output/Produccion/Cliente/FactuGES.exe b/Output/Produccion/Cliente/FactuGES.exe new file mode 100644 index 0000000..96c2969 Binary files /dev/null and b/Output/Produccion/Cliente/FactuGES.exe differ diff --git a/Output/Produccion/Cliente/FacturasCliente.bpl b/Output/Produccion/Cliente/FacturasCliente.bpl new file mode 100644 index 0000000..f7bd80d Binary files /dev/null and b/Output/Produccion/Cliente/FacturasCliente.bpl differ diff --git a/Output/Produccion/Cliente/FacturasProveedor.bpl b/Output/Produccion/Cliente/FacturasProveedor.bpl new file mode 100644 index 0000000..f6e2a6d Binary files /dev/null and b/Output/Produccion/Cliente/FacturasProveedor.bpl differ diff --git a/Output/Produccion/Cliente/Fax.bpl b/Output/Produccion/Cliente/Fax.bpl new file mode 100644 index 0000000..f9754f3 Binary files /dev/null and b/Output/Produccion/Cliente/Fax.bpl differ diff --git a/Output/Produccion/Cliente/GUISDK_D7.bpl b/Output/Produccion/Cliente/GUISDK_D7.bpl new file mode 100644 index 0000000..6d9d592 Binary files /dev/null and b/Output/Produccion/Cliente/GUISDK_D7.bpl differ diff --git a/Output/Produccion/Cliente/Intervalos.bpl b/Output/Produccion/Cliente/Intervalos.bpl new file mode 100644 index 0000000..34efc2b Binary files /dev/null and b/Output/Produccion/Cliente/Intervalos.bpl differ diff --git a/Output/Produccion/Cliente/Jcl70.bpl b/Output/Produccion/Cliente/Jcl70.bpl new file mode 100644 index 0000000..f8fd7f7 Binary files /dev/null and b/Output/Produccion/Cliente/Jcl70.bpl differ diff --git a/Output/Produccion/Cliente/JclBaseExpert70.bpl b/Output/Produccion/Cliente/JclBaseExpert70.bpl new file mode 100644 index 0000000..766f132 Binary files /dev/null and b/Output/Produccion/Cliente/JclBaseExpert70.bpl differ diff --git a/Output/Produccion/Cliente/JclDebugExpert70.bpl b/Output/Produccion/Cliente/JclDebugExpert70.bpl new file mode 100644 index 0000000..3ab1836 Binary files /dev/null and b/Output/Produccion/Cliente/JclDebugExpert70.bpl differ diff --git a/Output/Produccion/Cliente/JclFavoriteFoldersExpert70.bpl b/Output/Produccion/Cliente/JclFavoriteFoldersExpert70.bpl new file mode 100644 index 0000000..8ae390b Binary files /dev/null and b/Output/Produccion/Cliente/JclFavoriteFoldersExpert70.bpl differ diff --git a/Output/Produccion/Cliente/JclProjectAnalysisExpert70.bpl b/Output/Produccion/Cliente/JclProjectAnalysisExpert70.bpl new file mode 100644 index 0000000..d640381 Binary files /dev/null and b/Output/Produccion/Cliente/JclProjectAnalysisExpert70.bpl differ diff --git a/Output/Produccion/Cliente/JclSIMDViewExpert70.bpl b/Output/Produccion/Cliente/JclSIMDViewExpert70.bpl new file mode 100644 index 0000000..4a96621 Binary files /dev/null and b/Output/Produccion/Cliente/JclSIMDViewExpert70.bpl differ diff --git a/Output/Produccion/Cliente/JclUsesExpert70.bpl b/Output/Produccion/Cliente/JclUsesExpert70.bpl new file mode 100644 index 0000000..f1013b0 Binary files /dev/null and b/Output/Produccion/Cliente/JclUsesExpert70.bpl differ diff --git a/Output/Produccion/Cliente/JclVClx70.bpl b/Output/Produccion/Cliente/JclVClx70.bpl new file mode 100644 index 0000000..a710215 Binary files /dev/null and b/Output/Produccion/Cliente/JclVClx70.bpl differ diff --git a/Output/Produccion/Cliente/JclVcl70.bpl b/Output/Produccion/Cliente/JclVcl70.bpl new file mode 100644 index 0000000..9e905a8 Binary files /dev/null and b/Output/Produccion/Cliente/JclVcl70.bpl differ diff --git a/Output/Produccion/Cliente/JclVersionControlExpert70.bpl b/Output/Produccion/Cliente/JclVersionControlExpert70.bpl new file mode 100644 index 0000000..23e8861 Binary files /dev/null and b/Output/Produccion/Cliente/JclVersionControlExpert70.bpl differ diff --git a/Output/Produccion/Cliente/Jv3rdD7R.bpl b/Output/Produccion/Cliente/Jv3rdD7R.bpl new file mode 100644 index 0000000..bb00478 Binary files /dev/null and b/Output/Produccion/Cliente/Jv3rdD7R.bpl differ diff --git a/Output/Produccion/Cliente/JvAppFrmD7D.bpl b/Output/Produccion/Cliente/JvAppFrmD7D.bpl new file mode 100644 index 0000000..81129bd Binary files /dev/null and b/Output/Produccion/Cliente/JvAppFrmD7D.bpl differ diff --git a/Output/Produccion/Cliente/JvAppFrmD7R.bpl b/Output/Produccion/Cliente/JvAppFrmD7R.bpl new file mode 100644 index 0000000..b7538e3 Binary files /dev/null and b/Output/Produccion/Cliente/JvAppFrmD7R.bpl differ diff --git a/Output/Produccion/Cliente/JvBDED7D.bpl b/Output/Produccion/Cliente/JvBDED7D.bpl new file mode 100644 index 0000000..90ebe49 Binary files /dev/null and b/Output/Produccion/Cliente/JvBDED7D.bpl differ diff --git a/Output/Produccion/Cliente/JvBDED7R.bpl b/Output/Produccion/Cliente/JvBDED7R.bpl new file mode 100644 index 0000000..8a63e00 Binary files /dev/null and b/Output/Produccion/Cliente/JvBDED7R.bpl differ diff --git a/Output/Produccion/Cliente/JvBandsD7D.bpl b/Output/Produccion/Cliente/JvBandsD7D.bpl new file mode 100644 index 0000000..6ea75f7 Binary files /dev/null and b/Output/Produccion/Cliente/JvBandsD7D.bpl differ diff --git a/Output/Produccion/Cliente/JvBandsD7R.bpl b/Output/Produccion/Cliente/JvBandsD7R.bpl new file mode 100644 index 0000000..5d73c87 Binary files /dev/null and b/Output/Produccion/Cliente/JvBandsD7R.bpl differ diff --git a/Output/Produccion/Cliente/JvCmpD7D.bpl b/Output/Produccion/Cliente/JvCmpD7D.bpl new file mode 100644 index 0000000..1e4c8ca Binary files /dev/null and b/Output/Produccion/Cliente/JvCmpD7D.bpl differ diff --git a/Output/Produccion/Cliente/JvCmpD7R.bpl b/Output/Produccion/Cliente/JvCmpD7R.bpl new file mode 100644 index 0000000..92f14c0 Binary files /dev/null and b/Output/Produccion/Cliente/JvCmpD7R.bpl differ diff --git a/Output/Produccion/Cliente/JvCoreD7D.bpl b/Output/Produccion/Cliente/JvCoreD7D.bpl new file mode 100644 index 0000000..c3b3c98 Binary files /dev/null and b/Output/Produccion/Cliente/JvCoreD7D.bpl differ diff --git a/Output/Produccion/Cliente/JvCoreD7R.bpl b/Output/Produccion/Cliente/JvCoreD7R.bpl new file mode 100644 index 0000000..2183595 Binary files /dev/null and b/Output/Produccion/Cliente/JvCoreD7R.bpl differ diff --git a/Output/Produccion/Cliente/JvCryptD7D.bpl b/Output/Produccion/Cliente/JvCryptD7D.bpl new file mode 100644 index 0000000..6c61461 Binary files /dev/null and b/Output/Produccion/Cliente/JvCryptD7D.bpl differ diff --git a/Output/Produccion/Cliente/JvCryptD7R.bpl b/Output/Produccion/Cliente/JvCryptD7R.bpl new file mode 100644 index 0000000..3e3ca65 Binary files /dev/null and b/Output/Produccion/Cliente/JvCryptD7R.bpl differ diff --git a/Output/Produccion/Cliente/JvCtrlsD7D.bpl b/Output/Produccion/Cliente/JvCtrlsD7D.bpl new file mode 100644 index 0000000..4017415 Binary files /dev/null and b/Output/Produccion/Cliente/JvCtrlsD7D.bpl differ diff --git a/Output/Produccion/Cliente/JvCtrlsD7R.bpl b/Output/Produccion/Cliente/JvCtrlsD7R.bpl new file mode 100644 index 0000000..fedb5e2 Binary files /dev/null and b/Output/Produccion/Cliente/JvCtrlsD7R.bpl differ diff --git a/Output/Produccion/Cliente/JvCustomD7D.bpl b/Output/Produccion/Cliente/JvCustomD7D.bpl new file mode 100644 index 0000000..f009462 Binary files /dev/null and b/Output/Produccion/Cliente/JvCustomD7D.bpl differ diff --git a/Output/Produccion/Cliente/JvCustomD7R.bpl b/Output/Produccion/Cliente/JvCustomD7R.bpl new file mode 100644 index 0000000..0c0c6f2 Binary files /dev/null and b/Output/Produccion/Cliente/JvCustomD7R.bpl differ diff --git a/Output/Produccion/Cliente/JvDBD7D.bpl b/Output/Produccion/Cliente/JvDBD7D.bpl new file mode 100644 index 0000000..3418f35 Binary files /dev/null and b/Output/Produccion/Cliente/JvDBD7D.bpl differ diff --git a/Output/Produccion/Cliente/JvDBD7R.bpl b/Output/Produccion/Cliente/JvDBD7R.bpl new file mode 100644 index 0000000..37b3c2f Binary files /dev/null and b/Output/Produccion/Cliente/JvDBD7R.bpl differ diff --git a/Output/Produccion/Cliente/JvDlgsD7D.bpl b/Output/Produccion/Cliente/JvDlgsD7D.bpl new file mode 100644 index 0000000..ee84446 Binary files /dev/null and b/Output/Produccion/Cliente/JvDlgsD7D.bpl differ diff --git a/Output/Produccion/Cliente/JvDlgsD7R.bpl b/Output/Produccion/Cliente/JvDlgsD7R.bpl new file mode 100644 index 0000000..36c8b2c Binary files /dev/null and b/Output/Produccion/Cliente/JvDlgsD7R.bpl differ diff --git a/Output/Produccion/Cliente/JvDockingD7D.bpl b/Output/Produccion/Cliente/JvDockingD7D.bpl new file mode 100644 index 0000000..546bc8a Binary files /dev/null and b/Output/Produccion/Cliente/JvDockingD7D.bpl differ diff --git a/Output/Produccion/Cliente/JvDockingD7R.bpl b/Output/Produccion/Cliente/JvDockingD7R.bpl new file mode 100644 index 0000000..1333ddb Binary files /dev/null and b/Output/Produccion/Cliente/JvDockingD7R.bpl differ diff --git a/Output/Produccion/Cliente/JvDotNetCtrlsD7D.bpl b/Output/Produccion/Cliente/JvDotNetCtrlsD7D.bpl new file mode 100644 index 0000000..b1e667d Binary files /dev/null and b/Output/Produccion/Cliente/JvDotNetCtrlsD7D.bpl differ diff --git a/Output/Produccion/Cliente/JvDotNetCtrlsD7R.bpl b/Output/Produccion/Cliente/JvDotNetCtrlsD7R.bpl new file mode 100644 index 0000000..b55990d Binary files /dev/null and b/Output/Produccion/Cliente/JvDotNetCtrlsD7R.bpl differ diff --git a/Output/Produccion/Cliente/JvEDID7D.bpl b/Output/Produccion/Cliente/JvEDID7D.bpl new file mode 100644 index 0000000..3b6582a Binary files /dev/null and b/Output/Produccion/Cliente/JvEDID7D.bpl differ diff --git a/Output/Produccion/Cliente/JvEDID7R.bpl b/Output/Produccion/Cliente/JvEDID7R.bpl new file mode 100644 index 0000000..ae30d97 Binary files /dev/null and b/Output/Produccion/Cliente/JvEDID7R.bpl differ diff --git a/Output/Produccion/Cliente/JvGlobusD7D.bpl b/Output/Produccion/Cliente/JvGlobusD7D.bpl new file mode 100644 index 0000000..118733e Binary files /dev/null and b/Output/Produccion/Cliente/JvGlobusD7D.bpl differ diff --git a/Output/Produccion/Cliente/JvGlobusD7R.bpl b/Output/Produccion/Cliente/JvGlobusD7R.bpl new file mode 100644 index 0000000..5e0d1a4 Binary files /dev/null and b/Output/Produccion/Cliente/JvGlobusD7R.bpl differ diff --git a/Output/Produccion/Cliente/JvHMID7D.bpl b/Output/Produccion/Cliente/JvHMID7D.bpl new file mode 100644 index 0000000..80ded5b Binary files /dev/null and b/Output/Produccion/Cliente/JvHMID7D.bpl differ diff --git a/Output/Produccion/Cliente/JvHMID7R.bpl b/Output/Produccion/Cliente/JvHMID7R.bpl new file mode 100644 index 0000000..8e3e2e2 Binary files /dev/null and b/Output/Produccion/Cliente/JvHMID7R.bpl differ diff --git a/Output/Produccion/Cliente/JvInterpreterD7D.bpl b/Output/Produccion/Cliente/JvInterpreterD7D.bpl new file mode 100644 index 0000000..0573aad Binary files /dev/null and b/Output/Produccion/Cliente/JvInterpreterD7D.bpl differ diff --git a/Output/Produccion/Cliente/JvInterpreterD7R.bpl b/Output/Produccion/Cliente/JvInterpreterD7R.bpl new file mode 100644 index 0000000..859b453 Binary files /dev/null and b/Output/Produccion/Cliente/JvInterpreterD7R.bpl differ diff --git a/Output/Produccion/Cliente/JvJansD7D.bpl b/Output/Produccion/Cliente/JvJansD7D.bpl new file mode 100644 index 0000000..acb1a75 Binary files /dev/null and b/Output/Produccion/Cliente/JvJansD7D.bpl differ diff --git a/Output/Produccion/Cliente/JvJansD7R.bpl b/Output/Produccion/Cliente/JvJansD7R.bpl new file mode 100644 index 0000000..6e9643b Binary files /dev/null and b/Output/Produccion/Cliente/JvJansD7R.bpl differ diff --git a/Output/Produccion/Cliente/JvMMD7D.bpl b/Output/Produccion/Cliente/JvMMD7D.bpl new file mode 100644 index 0000000..8869fb2 Binary files /dev/null and b/Output/Produccion/Cliente/JvMMD7D.bpl differ diff --git a/Output/Produccion/Cliente/JvMMD7R.bpl b/Output/Produccion/Cliente/JvMMD7R.bpl new file mode 100644 index 0000000..257afb4 Binary files /dev/null and b/Output/Produccion/Cliente/JvMMD7R.bpl differ diff --git a/Output/Produccion/Cliente/JvManagedThreadsD7D.bpl b/Output/Produccion/Cliente/JvManagedThreadsD7D.bpl new file mode 100644 index 0000000..113fb19 Binary files /dev/null and b/Output/Produccion/Cliente/JvManagedThreadsD7D.bpl differ diff --git a/Output/Produccion/Cliente/JvManagedThreadsD7R.bpl b/Output/Produccion/Cliente/JvManagedThreadsD7R.bpl new file mode 100644 index 0000000..fe280fb Binary files /dev/null and b/Output/Produccion/Cliente/JvManagedThreadsD7R.bpl differ diff --git a/Output/Produccion/Cliente/JvNetD7D.bpl b/Output/Produccion/Cliente/JvNetD7D.bpl new file mode 100644 index 0000000..36614b2 Binary files /dev/null and b/Output/Produccion/Cliente/JvNetD7D.bpl differ diff --git a/Output/Produccion/Cliente/JvNetD7R.bpl b/Output/Produccion/Cliente/JvNetD7R.bpl new file mode 100644 index 0000000..804287f Binary files /dev/null and b/Output/Produccion/Cliente/JvNetD7R.bpl differ diff --git a/Output/Produccion/Cliente/JvPageCompsD7D.bpl b/Output/Produccion/Cliente/JvPageCompsD7D.bpl new file mode 100644 index 0000000..5861847 Binary files /dev/null and b/Output/Produccion/Cliente/JvPageCompsD7D.bpl differ diff --git a/Output/Produccion/Cliente/JvPageCompsD7R.bpl b/Output/Produccion/Cliente/JvPageCompsD7R.bpl new file mode 100644 index 0000000..f3ac0da Binary files /dev/null and b/Output/Produccion/Cliente/JvPageCompsD7R.bpl differ diff --git a/Output/Produccion/Cliente/JvPluginD7D.bpl b/Output/Produccion/Cliente/JvPluginD7D.bpl new file mode 100644 index 0000000..105cf7e Binary files /dev/null and b/Output/Produccion/Cliente/JvPluginD7D.bpl differ diff --git a/Output/Produccion/Cliente/JvPluginD7R.bpl b/Output/Produccion/Cliente/JvPluginD7R.bpl new file mode 100644 index 0000000..281c7ce Binary files /dev/null and b/Output/Produccion/Cliente/JvPluginD7R.bpl differ diff --git a/Output/Produccion/Cliente/JvPrintPreviewD7D.bpl b/Output/Produccion/Cliente/JvPrintPreviewD7D.bpl new file mode 100644 index 0000000..d14a857 Binary files /dev/null and b/Output/Produccion/Cliente/JvPrintPreviewD7D.bpl differ diff --git a/Output/Produccion/Cliente/JvPrintPreviewD7R.bpl b/Output/Produccion/Cliente/JvPrintPreviewD7R.bpl new file mode 100644 index 0000000..2055e17 Binary files /dev/null and b/Output/Produccion/Cliente/JvPrintPreviewD7R.bpl differ diff --git a/Output/Produccion/Cliente/JvRuntimeDesignD7D.bpl b/Output/Produccion/Cliente/JvRuntimeDesignD7D.bpl new file mode 100644 index 0000000..b929cf4 Binary files /dev/null and b/Output/Produccion/Cliente/JvRuntimeDesignD7D.bpl differ diff --git a/Output/Produccion/Cliente/JvRuntimeDesignD7R.bpl b/Output/Produccion/Cliente/JvRuntimeDesignD7R.bpl new file mode 100644 index 0000000..0d39722 Binary files /dev/null and b/Output/Produccion/Cliente/JvRuntimeDesignD7R.bpl differ diff --git a/Output/Produccion/Cliente/JvStdCtrlsD7D.bpl b/Output/Produccion/Cliente/JvStdCtrlsD7D.bpl new file mode 100644 index 0000000..fd2c73b Binary files /dev/null and b/Output/Produccion/Cliente/JvStdCtrlsD7D.bpl differ diff --git a/Output/Produccion/Cliente/JvStdCtrlsD7R.bpl b/Output/Produccion/Cliente/JvStdCtrlsD7R.bpl new file mode 100644 index 0000000..ec50080 Binary files /dev/null and b/Output/Produccion/Cliente/JvStdCtrlsD7R.bpl differ diff --git a/Output/Produccion/Cliente/JvSystemD7D.bpl b/Output/Produccion/Cliente/JvSystemD7D.bpl new file mode 100644 index 0000000..7b628c9 Binary files /dev/null and b/Output/Produccion/Cliente/JvSystemD7D.bpl differ diff --git a/Output/Produccion/Cliente/JvSystemD7R.bpl b/Output/Produccion/Cliente/JvSystemD7R.bpl new file mode 100644 index 0000000..4b29a7c Binary files /dev/null and b/Output/Produccion/Cliente/JvSystemD7R.bpl differ diff --git a/Output/Produccion/Cliente/JvTimeFrameworkD7D.bpl b/Output/Produccion/Cliente/JvTimeFrameworkD7D.bpl new file mode 100644 index 0000000..dab9654 Binary files /dev/null and b/Output/Produccion/Cliente/JvTimeFrameworkD7D.bpl differ diff --git a/Output/Produccion/Cliente/JvTimeFrameworkD7R.bpl b/Output/Produccion/Cliente/JvTimeFrameworkD7R.bpl new file mode 100644 index 0000000..3238658 Binary files /dev/null and b/Output/Produccion/Cliente/JvTimeFrameworkD7R.bpl differ diff --git a/Output/Produccion/Cliente/JvUIBD7D.bpl b/Output/Produccion/Cliente/JvUIBD7D.bpl new file mode 100644 index 0000000..f01fcc0 Binary files /dev/null and b/Output/Produccion/Cliente/JvUIBD7D.bpl differ diff --git a/Output/Produccion/Cliente/JvUIBD7R.bpl b/Output/Produccion/Cliente/JvUIBD7R.bpl new file mode 100644 index 0000000..1fe1cae Binary files /dev/null and b/Output/Produccion/Cliente/JvUIBD7R.bpl differ diff --git a/Output/Produccion/Cliente/JvValidatorsD7D.bpl b/Output/Produccion/Cliente/JvValidatorsD7D.bpl new file mode 100644 index 0000000..9993cab Binary files /dev/null and b/Output/Produccion/Cliente/JvValidatorsD7D.bpl differ diff --git a/Output/Produccion/Cliente/JvValidatorsD7R.bpl b/Output/Produccion/Cliente/JvValidatorsD7R.bpl new file mode 100644 index 0000000..01defde Binary files /dev/null and b/Output/Produccion/Cliente/JvValidatorsD7R.bpl differ diff --git a/Output/Produccion/Cliente/JvWizardD7D.bpl b/Output/Produccion/Cliente/JvWizardD7D.bpl new file mode 100644 index 0000000..0495550 Binary files /dev/null and b/Output/Produccion/Cliente/JvWizardD7D.bpl differ diff --git a/Output/Produccion/Cliente/JvWizardD7R.bpl b/Output/Produccion/Cliente/JvWizardD7R.bpl new file mode 100644 index 0000000..d211432 Binary files /dev/null and b/Output/Produccion/Cliente/JvWizardD7R.bpl differ diff --git a/Output/Produccion/Cliente/JvXPCtrlsD7D.bpl b/Output/Produccion/Cliente/JvXPCtrlsD7D.bpl new file mode 100644 index 0000000..678fac7 Binary files /dev/null and b/Output/Produccion/Cliente/JvXPCtrlsD7D.bpl differ diff --git a/Output/Produccion/Cliente/JvXPCtrlsD7R.bpl b/Output/Produccion/Cliente/JvXPCtrlsD7R.bpl new file mode 100644 index 0000000..01aaa3e Binary files /dev/null and b/Output/Produccion/Cliente/JvXPCtrlsD7R.bpl differ diff --git a/Output/Produccion/Cliente/Montajes_Impl.bpl b/Output/Produccion/Cliente/Montajes_Impl.bpl new file mode 100644 index 0000000..c3bac19 Binary files /dev/null and b/Output/Produccion/Cliente/Montajes_Impl.bpl differ diff --git a/Output/Produccion/Cliente/Montajes_Intf.bpl b/Output/Produccion/Cliente/Montajes_Intf.bpl new file mode 100644 index 0000000..c944f58 Binary files /dev/null and b/Output/Produccion/Cliente/Montajes_Intf.bpl differ diff --git a/Output/Produccion/Cliente/PNG_D7.bpl b/Output/Produccion/Cliente/PNG_D7.bpl new file mode 100644 index 0000000..43e3a85 Binary files /dev/null and b/Output/Produccion/Cliente/PNG_D7.bpl differ diff --git a/Output/Produccion/Cliente/Pagos.bpl b/Output/Produccion/Cliente/Pagos.bpl new file mode 100644 index 0000000..13f9b3e Binary files /dev/null and b/Output/Produccion/Cliente/Pagos.bpl differ diff --git a/Output/Produccion/Cliente/PedidosMontaje.bpl b/Output/Produccion/Cliente/PedidosMontaje.bpl new file mode 100644 index 0000000..64a1236 Binary files /dev/null and b/Output/Produccion/Cliente/PedidosMontaje.bpl differ diff --git a/Output/Produccion/Cliente/PedidosProveedor.bpl b/Output/Produccion/Cliente/PedidosProveedor.bpl new file mode 100644 index 0000000..56fe881 Binary files /dev/null and b/Output/Produccion/Cliente/PedidosProveedor.bpl differ diff --git a/Output/Produccion/Cliente/PluginSDK_D7R.bpl b/Output/Produccion/Cliente/PluginSDK_D7R.bpl new file mode 100644 index 0000000..fa3b923 Binary files /dev/null and b/Output/Produccion/Cliente/PluginSDK_D7R.bpl differ diff --git a/Output/Produccion/Cliente/PngComponentsD7.bpl b/Output/Produccion/Cliente/PngComponentsD7.bpl new file mode 100644 index 0000000..4b6272d Binary files /dev/null and b/Output/Produccion/Cliente/PngComponentsD7.bpl differ diff --git a/Output/Produccion/Cliente/Presupuestos.bpl b/Output/Produccion/Cliente/Presupuestos.bpl new file mode 100644 index 0000000..bd0e4b4 Binary files /dev/null and b/Output/Produccion/Cliente/Presupuestos.bpl differ diff --git a/Output/Produccion/Cliente/Presupuestos_Intf.bpl b/Output/Produccion/Cliente/Presupuestos_Intf.bpl new file mode 100644 index 0000000..2664a51 Binary files /dev/null and b/Output/Produccion/Cliente/Presupuestos_Intf.bpl differ diff --git a/Output/Produccion/Cliente/Usuarios.bpl b/Output/Produccion/Cliente/Usuarios.bpl new file mode 100644 index 0000000..95f8ad3 Binary files /dev/null and b/Output/Produccion/Cliente/Usuarios.bpl differ diff --git a/Output/Produccion/Cliente/bdertl70.bpl b/Output/Produccion/Cliente/bdertl70.bpl new file mode 100644 index 0000000..f3b79de Binary files /dev/null and b/Output/Produccion/Cliente/bdertl70.bpl differ diff --git a/Output/Produccion/Cliente/ccpack70.bpl b/Output/Produccion/Cliente/ccpack70.bpl new file mode 100644 index 0000000..5ab9d2c Binary files /dev/null and b/Output/Produccion/Cliente/ccpack70.bpl differ diff --git a/Output/Produccion/Cliente/cfpack.bpl b/Output/Produccion/Cliente/cfpack.bpl new file mode 100644 index 0000000..e011def Binary files /dev/null and b/Output/Produccion/Cliente/cfpack.bpl differ diff --git a/Output/Produccion/Cliente/cxADOAdaptersD7.bpl b/Output/Produccion/Cliente/cxADOAdaptersD7.bpl new file mode 100644 index 0000000..49ea2c1 Binary files /dev/null and b/Output/Produccion/Cliente/cxADOAdaptersD7.bpl differ diff --git a/Output/Produccion/Cliente/cxBDEAdaptersD7.bpl b/Output/Produccion/Cliente/cxBDEAdaptersD7.bpl new file mode 100644 index 0000000..dbf96d2 Binary files /dev/null and b/Output/Produccion/Cliente/cxBDEAdaptersD7.bpl differ diff --git a/Output/Produccion/Cliente/cxDataD7.bpl b/Output/Produccion/Cliente/cxDataD7.bpl new file mode 100644 index 0000000..78d8179 Binary files /dev/null and b/Output/Produccion/Cliente/cxDataD7.bpl differ diff --git a/Output/Produccion/Cliente/cxEditorsVCLD7.bpl b/Output/Produccion/Cliente/cxEditorsVCLD7.bpl new file mode 100644 index 0000000..62593b0 Binary files /dev/null and b/Output/Produccion/Cliente/cxEditorsVCLD7.bpl differ diff --git a/Output/Produccion/Cliente/cxExportVCLD7.bpl b/Output/Produccion/Cliente/cxExportVCLD7.bpl new file mode 100644 index 0000000..3939c3f Binary files /dev/null and b/Output/Produccion/Cliente/cxExportVCLD7.bpl differ diff --git a/Output/Produccion/Cliente/cxExtEditorsVCLD7.bpl b/Output/Produccion/Cliente/cxExtEditorsVCLD7.bpl new file mode 100644 index 0000000..490eda6 Binary files /dev/null and b/Output/Produccion/Cliente/cxExtEditorsVCLD7.bpl differ diff --git a/Output/Produccion/Cliente/cxGridVCLD7.bpl b/Output/Produccion/Cliente/cxGridVCLD7.bpl new file mode 100644 index 0000000..99b7060 Binary files /dev/null and b/Output/Produccion/Cliente/cxGridVCLD7.bpl differ diff --git a/Output/Produccion/Cliente/cxIBXAdaptersD7.bpl b/Output/Produccion/Cliente/cxIBXAdaptersD7.bpl new file mode 100644 index 0000000..b26b770 Binary files /dev/null and b/Output/Produccion/Cliente/cxIBXAdaptersD7.bpl differ diff --git a/Output/Produccion/Cliente/cxIntl5D7.bpl b/Output/Produccion/Cliente/cxIntl5D7.bpl new file mode 100644 index 0000000..7f6c606 Binary files /dev/null and b/Output/Produccion/Cliente/cxIntl5D7.bpl differ diff --git a/Output/Produccion/Cliente/cxIntlPrintSys3D7.bpl b/Output/Produccion/Cliente/cxIntlPrintSys3D7.bpl new file mode 100644 index 0000000..fc29f44 Binary files /dev/null and b/Output/Produccion/Cliente/cxIntlPrintSys3D7.bpl differ diff --git a/Output/Produccion/Cliente/cxLibraryVCLD7.bpl b/Output/Produccion/Cliente/cxLibraryVCLD7.bpl new file mode 100644 index 0000000..95e0c99 Binary files /dev/null and b/Output/Produccion/Cliente/cxLibraryVCLD7.bpl differ diff --git a/Output/Produccion/Cliente/cxPageControlVCLD7.bpl b/Output/Produccion/Cliente/cxPageControlVCLD7.bpl new file mode 100644 index 0000000..dc2e3bd Binary files /dev/null and b/Output/Produccion/Cliente/cxPageControlVCLD7.bpl differ diff --git a/Output/Produccion/Cliente/cxSchedulerVCLD7.bpl b/Output/Produccion/Cliente/cxSchedulerVCLD7.bpl new file mode 100644 index 0000000..3fd9954 Binary files /dev/null and b/Output/Produccion/Cliente/cxSchedulerVCLD7.bpl differ diff --git a/Output/Produccion/Cliente/cxTreeListVCLD7.bpl b/Output/Produccion/Cliente/cxTreeListVCLD7.bpl new file mode 100644 index 0000000..4367504 Binary files /dev/null and b/Output/Produccion/Cliente/cxTreeListVCLD7.bpl differ diff --git a/Output/Produccion/Cliente/cxVerticalGridVCLD7.bpl b/Output/Produccion/Cliente/cxVerticalGridVCLD7.bpl new file mode 100644 index 0000000..7720041 Binary files /dev/null and b/Output/Produccion/Cliente/cxVerticalGridVCLD7.bpl differ diff --git a/Output/Produccion/Cliente/dbrtl70.bpl b/Output/Produccion/Cliente/dbrtl70.bpl new file mode 100644 index 0000000..ad93c9b Binary files /dev/null and b/Output/Produccion/Cliente/dbrtl70.bpl differ diff --git a/Output/Produccion/Cliente/dclcxEditorsVCLD7.bpl b/Output/Produccion/Cliente/dclcxEditorsVCLD7.bpl new file mode 100644 index 0000000..92f64fe Binary files /dev/null and b/Output/Produccion/Cliente/dclcxEditorsVCLD7.bpl differ diff --git a/Output/Produccion/Cliente/dclcxExtEditorsVCLD7.bpl b/Output/Produccion/Cliente/dclcxExtEditorsVCLD7.bpl new file mode 100644 index 0000000..56d41f9 Binary files /dev/null and b/Output/Produccion/Cliente/dclcxExtEditorsVCLD7.bpl differ diff --git a/Output/Produccion/Cliente/dclcxGridVCLD7.bpl b/Output/Produccion/Cliente/dclcxGridVCLD7.bpl new file mode 100644 index 0000000..5d2ac0e Binary files /dev/null and b/Output/Produccion/Cliente/dclcxGridVCLD7.bpl differ diff --git a/Output/Produccion/Cliente/dclcxLibraryVCLD7.bpl b/Output/Produccion/Cliente/dclcxLibraryVCLD7.bpl new file mode 100644 index 0000000..4875c79 Binary files /dev/null and b/Output/Produccion/Cliente/dclcxLibraryVCLD7.bpl differ diff --git a/Output/Produccion/Cliente/dclcxPageControlVCLD7.bpl b/Output/Produccion/Cliente/dclcxPageControlVCLD7.bpl new file mode 100644 index 0000000..ad1fbcf Binary files /dev/null and b/Output/Produccion/Cliente/dclcxPageControlVCLD7.bpl differ diff --git a/Output/Produccion/Cliente/dclcxSchedulerVCLD7.bpl b/Output/Produccion/Cliente/dclcxSchedulerVCLD7.bpl new file mode 100644 index 0000000..2b1429a Binary files /dev/null and b/Output/Produccion/Cliente/dclcxSchedulerVCLD7.bpl differ diff --git a/Output/Produccion/Cliente/dclcxTreeListVCLD7.bpl b/Output/Produccion/Cliente/dclcxTreeListVCLD7.bpl new file mode 100644 index 0000000..b4af6de Binary files /dev/null and b/Output/Produccion/Cliente/dclcxTreeListVCLD7.bpl differ diff --git a/Output/Produccion/Cliente/dclcxVerticalGridVCLD7.bpl b/Output/Produccion/Cliente/dclcxVerticalGridVCLD7.bpl new file mode 100644 index 0000000..a9c2158 Binary files /dev/null and b/Output/Produccion/Cliente/dclcxVerticalGridVCLD7.bpl differ diff --git a/Output/Produccion/Cliente/dcldxBarD7.bpl b/Output/Produccion/Cliente/dcldxBarD7.bpl new file mode 100644 index 0000000..b1cfe45 Binary files /dev/null and b/Output/Produccion/Cliente/dcldxBarD7.bpl differ diff --git a/Output/Produccion/Cliente/dcldxBarDBNavD7.bpl b/Output/Produccion/Cliente/dcldxBarDBNavD7.bpl new file mode 100644 index 0000000..beba4bf Binary files /dev/null and b/Output/Produccion/Cliente/dcldxBarDBNavD7.bpl differ diff --git a/Output/Produccion/Cliente/dcldxBarExtDBItemsD7.bpl b/Output/Produccion/Cliente/dcldxBarExtDBItemsD7.bpl new file mode 100644 index 0000000..47f66ca Binary files /dev/null and b/Output/Produccion/Cliente/dcldxBarExtDBItemsD7.bpl differ diff --git a/Output/Produccion/Cliente/dcldxBarExtItemsD7.bpl b/Output/Produccion/Cliente/dcldxBarExtItemsD7.bpl new file mode 100644 index 0000000..5e57e25 Binary files /dev/null and b/Output/Produccion/Cliente/dcldxBarExtItemsD7.bpl differ diff --git a/Output/Produccion/Cliente/dcldxDockingD7.bpl b/Output/Produccion/Cliente/dcldxDockingD7.bpl new file mode 100644 index 0000000..0f4c940 Binary files /dev/null and b/Output/Produccion/Cliente/dcldxDockingD7.bpl differ diff --git a/Output/Produccion/Cliente/dcldxLayoutControlD7.bpl b/Output/Produccion/Cliente/dcldxLayoutControlD7.bpl new file mode 100644 index 0000000..e6c140e Binary files /dev/null and b/Output/Produccion/Cliente/dcldxLayoutControlD7.bpl differ diff --git a/Output/Produccion/Cliente/dcldxNavBarD7.bpl b/Output/Produccion/Cliente/dcldxNavBarD7.bpl new file mode 100644 index 0000000..55936db Binary files /dev/null and b/Output/Produccion/Cliente/dcldxNavBarD7.bpl differ diff --git a/Output/Produccion/Cliente/dcldxPSCoreD7.bpl b/Output/Produccion/Cliente/dcldxPSCoreD7.bpl new file mode 100644 index 0000000..63c6331 Binary files /dev/null and b/Output/Produccion/Cliente/dcldxPSCoreD7.bpl differ diff --git a/Output/Produccion/Cliente/dcldxsbD7.bpl b/Output/Produccion/Cliente/dcldxsbD7.bpl new file mode 100644 index 0000000..1acc79e Binary files /dev/null and b/Output/Produccion/Cliente/dcldxsbD7.bpl differ diff --git a/Output/Produccion/Cliente/dclfqb70.bpl b/Output/Produccion/Cliente/dclfqb70.bpl new file mode 100644 index 0000000..e5ce98b Binary files /dev/null and b/Output/Produccion/Cliente/dclfqb70.bpl differ diff --git a/Output/Produccion/Cliente/dclfrx7.bpl b/Output/Produccion/Cliente/dclfrx7.bpl new file mode 100644 index 0000000..ea69527 Binary files /dev/null and b/Output/Produccion/Cliente/dclfrx7.bpl differ diff --git a/Output/Produccion/Cliente/dclfrxADO7.bpl b/Output/Produccion/Cliente/dclfrxADO7.bpl new file mode 100644 index 0000000..729e30f Binary files /dev/null and b/Output/Produccion/Cliente/dclfrxADO7.bpl differ diff --git a/Output/Produccion/Cliente/dclfrxBDE7.bpl b/Output/Produccion/Cliente/dclfrxBDE7.bpl new file mode 100644 index 0000000..64c5fe3 Binary files /dev/null and b/Output/Produccion/Cliente/dclfrxBDE7.bpl differ diff --git a/Output/Produccion/Cliente/dclfrxDB7.bpl b/Output/Produccion/Cliente/dclfrxDB7.bpl new file mode 100644 index 0000000..c8269a4 Binary files /dev/null and b/Output/Produccion/Cliente/dclfrxDB7.bpl differ diff --git a/Output/Produccion/Cliente/dclfrxDBX7.bpl b/Output/Produccion/Cliente/dclfrxDBX7.bpl new file mode 100644 index 0000000..aab71fe Binary files /dev/null and b/Output/Produccion/Cliente/dclfrxDBX7.bpl differ diff --git a/Output/Produccion/Cliente/dclfrxIBX7.bpl b/Output/Produccion/Cliente/dclfrxIBX7.bpl new file mode 100644 index 0000000..ec336f6 Binary files /dev/null and b/Output/Produccion/Cliente/dclfrxIBX7.bpl differ diff --git a/Output/Produccion/Cliente/dclfrxTee7.bpl b/Output/Produccion/Cliente/dclfrxTee7.bpl new file mode 100644 index 0000000..bd04712 Binary files /dev/null and b/Output/Produccion/Cliente/dclfrxTee7.bpl differ diff --git a/Output/Produccion/Cliente/dclfrxe7.bpl b/Output/Produccion/Cliente/dclfrxe7.bpl new file mode 100644 index 0000000..5a66bc6 Binary files /dev/null and b/Output/Produccion/Cliente/dclfrxe7.bpl differ diff --git a/Output/Produccion/Cliente/dclfs7.bpl b/Output/Produccion/Cliente/dclfs7.bpl new file mode 100644 index 0000000..6e4349a Binary files /dev/null and b/Output/Produccion/Cliente/dclfs7.bpl differ diff --git a/Output/Produccion/Cliente/dclfsADO7.bpl b/Output/Produccion/Cliente/dclfsADO7.bpl new file mode 100644 index 0000000..f934223 Binary files /dev/null and b/Output/Produccion/Cliente/dclfsADO7.bpl differ diff --git a/Output/Produccion/Cliente/dclfsBDE7.bpl b/Output/Produccion/Cliente/dclfsBDE7.bpl new file mode 100644 index 0000000..30a328d Binary files /dev/null and b/Output/Produccion/Cliente/dclfsBDE7.bpl differ diff --git a/Output/Produccion/Cliente/dclfsDB7.bpl b/Output/Produccion/Cliente/dclfsDB7.bpl new file mode 100644 index 0000000..ee93834 Binary files /dev/null and b/Output/Produccion/Cliente/dclfsDB7.bpl differ diff --git a/Output/Produccion/Cliente/dclfsIBX7.bpl b/Output/Produccion/Cliente/dclfsIBX7.bpl new file mode 100644 index 0000000..9543ce0 Binary files /dev/null and b/Output/Produccion/Cliente/dclfsIBX7.bpl differ diff --git a/Output/Produccion/Cliente/dclfsTee7.bpl b/Output/Produccion/Cliente/dclfsTee7.bpl new file mode 100644 index 0000000..2a04436 Binary files /dev/null and b/Output/Produccion/Cliente/dclfsTee7.bpl differ diff --git a/Output/Produccion/Cliente/dclrx7.bpl b/Output/Produccion/Cliente/dclrx7.bpl new file mode 100644 index 0000000..e14d83b Binary files /dev/null and b/Output/Produccion/Cliente/dclrx7.bpl differ diff --git a/Output/Produccion/Cliente/dclrxbd7.bpl b/Output/Produccion/Cliente/dclrxbd7.bpl new file mode 100644 index 0000000..95df1df Binary files /dev/null and b/Output/Produccion/Cliente/dclrxbd7.bpl differ diff --git a/Output/Produccion/Cliente/dclrxdb7.bpl b/Output/Produccion/Cliente/dclrxdb7.bpl new file mode 100644 index 0000000..4a346f3 Binary files /dev/null and b/Output/Produccion/Cliente/dclrxdb7.bpl differ diff --git a/Output/Produccion/Cliente/dclshlctrls70.bpl b/Output/Produccion/Cliente/dclshlctrls70.bpl new file mode 100644 index 0000000..a4cc603 Binary files /dev/null and b/Output/Produccion/Cliente/dclshlctrls70.bpl differ diff --git a/Output/Produccion/Cliente/designide70.bpl b/Output/Produccion/Cliente/designide70.bpl new file mode 100644 index 0000000..d55557b Binary files /dev/null and b/Output/Produccion/Cliente/designide70.bpl differ diff --git a/Output/Produccion/Cliente/dsnap70.bpl b/Output/Produccion/Cliente/dsnap70.bpl new file mode 100644 index 0000000..72aac1f Binary files /dev/null and b/Output/Produccion/Cliente/dsnap70.bpl differ diff --git a/Output/Produccion/Cliente/dxBarD7.bpl b/Output/Produccion/Cliente/dxBarD7.bpl new file mode 100644 index 0000000..47eb448 Binary files /dev/null and b/Output/Produccion/Cliente/dxBarD7.bpl differ diff --git a/Output/Produccion/Cliente/dxBarDBNavD7.bpl b/Output/Produccion/Cliente/dxBarDBNavD7.bpl new file mode 100644 index 0000000..9139809 Binary files /dev/null and b/Output/Produccion/Cliente/dxBarDBNavD7.bpl differ diff --git a/Output/Produccion/Cliente/dxBarExtDBItemsD7.bpl b/Output/Produccion/Cliente/dxBarExtDBItemsD7.bpl new file mode 100644 index 0000000..d92f183 Binary files /dev/null and b/Output/Produccion/Cliente/dxBarExtDBItemsD7.bpl differ diff --git a/Output/Produccion/Cliente/dxBarExtItemsD7.bpl b/Output/Produccion/Cliente/dxBarExtItemsD7.bpl new file mode 100644 index 0000000..9eb669f Binary files /dev/null and b/Output/Produccion/Cliente/dxBarExtItemsD7.bpl differ diff --git a/Output/Produccion/Cliente/dxComnD7.bpl b/Output/Produccion/Cliente/dxComnD7.bpl new file mode 100644 index 0000000..06137d0 Binary files /dev/null and b/Output/Produccion/Cliente/dxComnD7.bpl differ diff --git a/Output/Produccion/Cliente/dxDockingD7.bpl b/Output/Produccion/Cliente/dxDockingD7.bpl new file mode 100644 index 0000000..881f5bb Binary files /dev/null and b/Output/Produccion/Cliente/dxDockingD7.bpl differ diff --git a/Output/Produccion/Cliente/dxGDIPlusD7.bpl b/Output/Produccion/Cliente/dxGDIPlusD7.bpl new file mode 100644 index 0000000..9b9ddf5 Binary files /dev/null and b/Output/Produccion/Cliente/dxGDIPlusD7.bpl differ diff --git a/Output/Produccion/Cliente/dxLayoutControlD7.bpl b/Output/Produccion/Cliente/dxLayoutControlD7.bpl new file mode 100644 index 0000000..9e2a569 Binary files /dev/null and b/Output/Produccion/Cliente/dxLayoutControlD7.bpl differ diff --git a/Output/Produccion/Cliente/dxLayoutControlcxEditAdaptersD7.bpl b/Output/Produccion/Cliente/dxLayoutControlcxEditAdaptersD7.bpl new file mode 100644 index 0000000..270074a Binary files /dev/null and b/Output/Produccion/Cliente/dxLayoutControlcxEditAdaptersD7.bpl differ diff --git a/Output/Produccion/Cliente/dxNavBarD7.bpl b/Output/Produccion/Cliente/dxNavBarD7.bpl new file mode 100644 index 0000000..c342aaa Binary files /dev/null and b/Output/Produccion/Cliente/dxNavBarD7.bpl differ diff --git a/Output/Produccion/Cliente/dxPSCoreD7.bpl b/Output/Produccion/Cliente/dxPSCoreD7.bpl new file mode 100644 index 0000000..392246f Binary files /dev/null and b/Output/Produccion/Cliente/dxPSCoreD7.bpl differ diff --git a/Output/Produccion/Cliente/dxPSDBTeeChartD7.bpl b/Output/Produccion/Cliente/dxPSDBTeeChartD7.bpl new file mode 100644 index 0000000..45c53c9 Binary files /dev/null and b/Output/Produccion/Cliente/dxPSDBTeeChartD7.bpl differ diff --git a/Output/Produccion/Cliente/dxPSLnksD7.bpl b/Output/Produccion/Cliente/dxPSLnksD7.bpl new file mode 100644 index 0000000..7429edf Binary files /dev/null and b/Output/Produccion/Cliente/dxPSLnksD7.bpl differ diff --git a/Output/Produccion/Cliente/dxPSPrVwAdvD7.bpl b/Output/Produccion/Cliente/dxPSPrVwAdvD7.bpl new file mode 100644 index 0000000..69ac98a Binary files /dev/null and b/Output/Produccion/Cliente/dxPSPrVwAdvD7.bpl differ diff --git a/Output/Produccion/Cliente/dxPSTeeChartD7.bpl b/Output/Produccion/Cliente/dxPSTeeChartD7.bpl new file mode 100644 index 0000000..442f1fa Binary files /dev/null and b/Output/Produccion/Cliente/dxPSTeeChartD7.bpl differ diff --git a/Output/Produccion/Cliente/dxPScxCommonD7.bpl b/Output/Produccion/Cliente/dxPScxCommonD7.bpl new file mode 100644 index 0000000..a46acd0 Binary files /dev/null and b/Output/Produccion/Cliente/dxPScxCommonD7.bpl differ diff --git a/Output/Produccion/Cliente/dxPScxExtCommonD7.bpl b/Output/Produccion/Cliente/dxPScxExtCommonD7.bpl new file mode 100644 index 0000000..9329fa0 Binary files /dev/null and b/Output/Produccion/Cliente/dxPScxExtCommonD7.bpl differ diff --git a/Output/Produccion/Cliente/dxPScxGridLnkD7.bpl b/Output/Produccion/Cliente/dxPScxGridLnkD7.bpl new file mode 100644 index 0000000..1cc19d7 Binary files /dev/null and b/Output/Produccion/Cliente/dxPScxGridLnkD7.bpl differ diff --git a/Output/Produccion/Cliente/dxPScxPCProdD7.bpl b/Output/Produccion/Cliente/dxPScxPCProdD7.bpl new file mode 100644 index 0000000..554dc5d Binary files /dev/null and b/Output/Produccion/Cliente/dxPScxPCProdD7.bpl differ diff --git a/Output/Produccion/Cliente/dxPScxScheduler2LnkD7.bpl b/Output/Produccion/Cliente/dxPScxScheduler2LnkD7.bpl new file mode 100644 index 0000000..61c4ed2 Binary files /dev/null and b/Output/Produccion/Cliente/dxPScxScheduler2LnkD7.bpl differ diff --git a/Output/Produccion/Cliente/dxPSdxLCLnkD7.bpl b/Output/Produccion/Cliente/dxPSdxLCLnkD7.bpl new file mode 100644 index 0000000..9476382 Binary files /dev/null and b/Output/Produccion/Cliente/dxPSdxLCLnkD7.bpl differ diff --git a/Output/Produccion/Cliente/dxPscxTLLnkD7.bpl b/Output/Produccion/Cliente/dxPscxTLLnkD7.bpl new file mode 100644 index 0000000..b8d5964 Binary files /dev/null and b/Output/Produccion/Cliente/dxPscxTLLnkD7.bpl differ diff --git a/Output/Produccion/Cliente/dxThemeD7.bpl b/Output/Produccion/Cliente/dxThemeD7.bpl new file mode 100644 index 0000000..b25a81b Binary files /dev/null and b/Output/Produccion/Cliente/dxThemeD7.bpl differ diff --git a/Output/Produccion/Cliente/dxsbD7.bpl b/Output/Produccion/Cliente/dxsbD7.bpl new file mode 100644 index 0000000..d000d5f Binary files /dev/null and b/Output/Produccion/Cliente/dxsbD7.bpl differ diff --git a/Output/Produccion/Cliente/fqb70.bpl b/Output/Produccion/Cliente/fqb70.bpl new file mode 100644 index 0000000..328e65c Binary files /dev/null and b/Output/Produccion/Cliente/fqb70.bpl differ diff --git a/Output/Produccion/Cliente/frx7.bpl b/Output/Produccion/Cliente/frx7.bpl new file mode 100644 index 0000000..6ccd165 Binary files /dev/null and b/Output/Produccion/Cliente/frx7.bpl differ diff --git a/Output/Produccion/Cliente/frxADO7.bpl b/Output/Produccion/Cliente/frxADO7.bpl new file mode 100644 index 0000000..f10b666 Binary files /dev/null and b/Output/Produccion/Cliente/frxADO7.bpl differ diff --git a/Output/Produccion/Cliente/frxBDE7.bpl b/Output/Produccion/Cliente/frxBDE7.bpl new file mode 100644 index 0000000..9d0fd45 Binary files /dev/null and b/Output/Produccion/Cliente/frxBDE7.bpl differ diff --git a/Output/Produccion/Cliente/frxDB7.bpl b/Output/Produccion/Cliente/frxDB7.bpl new file mode 100644 index 0000000..326357c Binary files /dev/null and b/Output/Produccion/Cliente/frxDB7.bpl differ diff --git a/Output/Produccion/Cliente/frxDBX7.bpl b/Output/Produccion/Cliente/frxDBX7.bpl new file mode 100644 index 0000000..688c478 Binary files /dev/null and b/Output/Produccion/Cliente/frxDBX7.bpl differ diff --git a/Output/Produccion/Cliente/frxIBX7.bpl b/Output/Produccion/Cliente/frxIBX7.bpl new file mode 100644 index 0000000..5851e35 Binary files /dev/null and b/Output/Produccion/Cliente/frxIBX7.bpl differ diff --git a/Output/Produccion/Cliente/frxTee7.bpl b/Output/Produccion/Cliente/frxTee7.bpl new file mode 100644 index 0000000..2b27a11 Binary files /dev/null and b/Output/Produccion/Cliente/frxTee7.bpl differ diff --git a/Output/Produccion/Cliente/frxcs7.bpl b/Output/Produccion/Cliente/frxcs7.bpl new file mode 100644 index 0000000..d402232 Binary files /dev/null and b/Output/Produccion/Cliente/frxcs7.bpl differ diff --git a/Output/Produccion/Cliente/frxe7.bpl b/Output/Produccion/Cliente/frxe7.bpl new file mode 100644 index 0000000..f56bece Binary files /dev/null and b/Output/Produccion/Cliente/frxe7.bpl differ diff --git a/Output/Produccion/Cliente/fs7.bpl b/Output/Produccion/Cliente/fs7.bpl new file mode 100644 index 0000000..1131fb6 Binary files /dev/null and b/Output/Produccion/Cliente/fs7.bpl differ diff --git a/Output/Produccion/Cliente/fsADO7.bpl b/Output/Produccion/Cliente/fsADO7.bpl new file mode 100644 index 0000000..22e177d Binary files /dev/null and b/Output/Produccion/Cliente/fsADO7.bpl differ diff --git a/Output/Produccion/Cliente/fsBDE7.bpl b/Output/Produccion/Cliente/fsBDE7.bpl new file mode 100644 index 0000000..72deaff Binary files /dev/null and b/Output/Produccion/Cliente/fsBDE7.bpl differ diff --git a/Output/Produccion/Cliente/fsDB7.bpl b/Output/Produccion/Cliente/fsDB7.bpl new file mode 100644 index 0000000..fd95efe Binary files /dev/null and b/Output/Produccion/Cliente/fsDB7.bpl differ diff --git a/Output/Produccion/Cliente/fsIBX7.bpl b/Output/Produccion/Cliente/fsIBX7.bpl new file mode 100644 index 0000000..00e3c88 Binary files /dev/null and b/Output/Produccion/Cliente/fsIBX7.bpl differ diff --git a/Output/Produccion/Cliente/fsTee7.bpl b/Output/Produccion/Cliente/fsTee7.bpl new file mode 100644 index 0000000..6f9f265 Binary files /dev/null and b/Output/Produccion/Cliente/fsTee7.bpl differ diff --git a/Output/Produccion/Cliente/midas.dll b/Output/Produccion/Cliente/midas.dll new file mode 100644 index 0000000..7b11def Binary files /dev/null and b/Output/Produccion/Cliente/midas.dll differ diff --git a/Output/Produccion/Cliente/qrpt70.bpl b/Output/Produccion/Cliente/qrpt70.bpl new file mode 100644 index 0000000..5710102 Binary files /dev/null and b/Output/Produccion/Cliente/qrpt70.bpl differ diff --git a/Output/Produccion/Cliente/rtl70.bpl b/Output/Produccion/Cliente/rtl70.bpl new file mode 100644 index 0000000..c6f2b53 Binary files /dev/null and b/Output/Produccion/Cliente/rtl70.bpl differ diff --git a/Output/Produccion/Cliente/tb2k_d7.bpl b/Output/Produccion/Cliente/tb2k_d7.bpl new file mode 100644 index 0000000..b07b8c2 Binary files /dev/null and b/Output/Produccion/Cliente/tb2k_d7.bpl differ diff --git a/Output/Produccion/Cliente/tbx_d7.bpl b/Output/Produccion/Cliente/tbx_d7.bpl new file mode 100644 index 0000000..0462e8b Binary files /dev/null and b/Output/Produccion/Cliente/tbx_d7.bpl differ diff --git a/Output/Produccion/Cliente/tee70.bpl b/Output/Produccion/Cliente/tee70.bpl new file mode 100644 index 0000000..b7538f3 Binary files /dev/null and b/Output/Produccion/Cliente/tee70.bpl differ diff --git a/Output/Produccion/Cliente/teedb70.bpl b/Output/Produccion/Cliente/teedb70.bpl new file mode 100644 index 0000000..6909302 Binary files /dev/null and b/Output/Produccion/Cliente/teedb70.bpl differ diff --git a/Output/Produccion/Cliente/teeqr70.bpl b/Output/Produccion/Cliente/teeqr70.bpl new file mode 100644 index 0000000..5e91a25 Binary files /dev/null and b/Output/Produccion/Cliente/teeqr70.bpl differ diff --git a/Output/Produccion/Cliente/teeui70.bpl b/Output/Produccion/Cliente/teeui70.bpl new file mode 100644 index 0000000..a1a1151 Binary files /dev/null and b/Output/Produccion/Cliente/teeui70.bpl differ diff --git a/Output/Produccion/Cliente/vcl70.bpl b/Output/Produccion/Cliente/vcl70.bpl new file mode 100644 index 0000000..70af367 Binary files /dev/null and b/Output/Produccion/Cliente/vcl70.bpl differ diff --git a/Output/Produccion/Cliente/vclactnband70.bpl b/Output/Produccion/Cliente/vclactnband70.bpl new file mode 100644 index 0000000..8ceef0d Binary files /dev/null and b/Output/Produccion/Cliente/vclactnband70.bpl differ diff --git a/Output/Produccion/Cliente/vcldb70.bpl b/Output/Produccion/Cliente/vcldb70.bpl new file mode 100644 index 0000000..028f18b Binary files /dev/null and b/Output/Produccion/Cliente/vcldb70.bpl differ diff --git a/Output/Produccion/Cliente/vclie70.bpl b/Output/Produccion/Cliente/vclie70.bpl new file mode 100644 index 0000000..554b6c2 Binary files /dev/null and b/Output/Produccion/Cliente/vclie70.bpl differ diff --git a/Output/Produccion/Cliente/vcljpg70.bpl b/Output/Produccion/Cliente/vcljpg70.bpl new file mode 100644 index 0000000..bf65fd9 Binary files /dev/null and b/Output/Produccion/Cliente/vcljpg70.bpl differ diff --git a/Output/Produccion/Cliente/vclshlctrls70.bpl b/Output/Produccion/Cliente/vclshlctrls70.bpl new file mode 100644 index 0000000..9fdff90 Binary files /dev/null and b/Output/Produccion/Cliente/vclshlctrls70.bpl differ diff --git a/Output/Produccion/Cliente/vclx70.bpl b/Output/Produccion/Cliente/vclx70.bpl new file mode 100644 index 0000000..e7afad8 Binary files /dev/null and b/Output/Produccion/Cliente/vclx70.bpl differ diff --git a/Output/Produccion/Servidor/BASEDATOS.FDB b/Output/Produccion/Servidor/BASEDATOS.FDB new file mode 100644 index 0000000..da8107b Binary files /dev/null and b/Output/Produccion/Servidor/BASEDATOS.FDB differ diff --git a/Output/Produccion/Servidor/FactuGES_Server.exe b/Output/Produccion/Servidor/FactuGES_Server.exe new file mode 100644 index 0000000..68093d0 Binary files /dev/null and b/Output/Produccion/Servidor/FactuGES_Server.exe differ diff --git a/Output/Produccion/Servidor/Informes/EstiloDetalles.fs3 b/Output/Produccion/Servidor/Informes/EstiloDetalles.fs3 new file mode 100644 index 0000000..3f92b38 --- /dev/null +++ b/Output/Produccion/Servidor/Informes/EstiloDetalles.fs3 @@ -0,0 +1,7 @@ + + diff --git a/Output/Produccion/Servidor/Informes/InfAlbaran.fr3 b/Output/Produccion/Servidor/Informes/InfAlbaran.fr3 new file mode 100644 index 0000000..fef5017 --- /dev/null +++ b/Output/Produccion/Servidor/Informes/InfAlbaran.fr3 @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Output/Produccion/Servidor/Informes/InfEtiquetasMontajes.fr3 b/Output/Produccion/Servidor/Informes/InfEtiquetasMontajes.fr3 new file mode 100644 index 0000000..0ce8097 --- /dev/null +++ b/Output/Produccion/Servidor/Informes/InfEtiquetasMontajes.fr3 @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/Output/Produccion/Servidor/Informes/InfFacturaCliente.fr3 b/Output/Produccion/Servidor/Informes/InfFacturaCliente.fr3 new file mode 100644 index 0000000..89908eb --- /dev/null +++ b/Output/Produccion/Servidor/Informes/InfFacturaCliente.fr3 @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Output/Produccion/Servidor/Informes/InfFicha.fr3 b/Output/Produccion/Servidor/Informes/InfFicha.fr3 new file mode 100644 index 0000000..c453825 --- /dev/null +++ b/Output/Produccion/Servidor/Informes/InfFicha.fr3 @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Output/Produccion/Servidor/Informes/InfPedido.fr3 b/Output/Produccion/Servidor/Informes/InfPedido.fr3 new file mode 100644 index 0000000..f160e5a --- /dev/null +++ b/Output/Produccion/Servidor/Informes/InfPedido.fr3 @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Output/Produccion/Servidor/Informes/InfPresupuesto.fr3 b/Output/Produccion/Servidor/Informes/InfPresupuesto.fr3 new file mode 100644 index 0000000..b981805 --- /dev/null +++ b/Output/Produccion/Servidor/Informes/InfPresupuesto.fr3 @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Output/Produccion/Servidor/Informes/InfRecibo.fr3 b/Output/Produccion/Servidor/Informes/InfRecibo.fr3 new file mode 100644 index 0000000..17cf8c8 --- /dev/null +++ b/Output/Produccion/Servidor/Informes/InfRecibo.fr3 @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Output/Servidor/FactuGES_Server.exe b/Output/Servidor/FactuGES_Server.exe new file mode 100644 index 0000000..68093d0 Binary files /dev/null and b/Output/Servidor/FactuGES_Server.exe differ diff --git a/Output/Servidor/Informes/EstiloDetalles.fs3 b/Output/Servidor/Informes/EstiloDetalles.fs3 new file mode 100644 index 0000000..3f92b38 --- /dev/null +++ b/Output/Servidor/Informes/EstiloDetalles.fs3 @@ -0,0 +1,7 @@ + + diff --git a/Output/Servidor/Informes/InfAlbaran.fr3 b/Output/Servidor/Informes/InfAlbaran.fr3 new file mode 100644 index 0000000..fef5017 --- /dev/null +++ b/Output/Servidor/Informes/InfAlbaran.fr3 @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Output/Servidor/Informes/InfEtiquetasMontajes.fr3 b/Output/Servidor/Informes/InfEtiquetasMontajes.fr3 new file mode 100644 index 0000000..0ce8097 --- /dev/null +++ b/Output/Servidor/Informes/InfEtiquetasMontajes.fr3 @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/Output/Servidor/Informes/InfFacturaCliente.fr3 b/Output/Servidor/Informes/InfFacturaCliente.fr3 new file mode 100644 index 0000000..89908eb --- /dev/null +++ b/Output/Servidor/Informes/InfFacturaCliente.fr3 @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Output/Servidor/Informes/InfFicha.fr3 b/Output/Servidor/Informes/InfFicha.fr3 new file mode 100644 index 0000000..c453825 --- /dev/null +++ b/Output/Servidor/Informes/InfFicha.fr3 @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Output/Servidor/Informes/InfPedido.fr3 b/Output/Servidor/Informes/InfPedido.fr3 new file mode 100644 index 0000000..f160e5a --- /dev/null +++ b/Output/Servidor/Informes/InfPedido.fr3 @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Output/Servidor/Informes/InfPresupuesto.fr3 b/Output/Servidor/Informes/InfPresupuesto.fr3 new file mode 100644 index 0000000..b981805 --- /dev/null +++ b/Output/Servidor/Informes/InfPresupuesto.fr3 @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Output/Servidor/Informes/InfRecibo.fr3 b/Output/Servidor/Informes/InfRecibo.fr3 new file mode 100644 index 0000000..17cf8c8 --- /dev/null +++ b/Output/Servidor/Informes/InfRecibo.fr3 @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Output/Servidor/UIBHook.dll b/Output/Servidor/UIBHook.dll new file mode 100644 index 0000000..f0b69c2 Binary files /dev/null and b/Output/Servidor/UIBHook.dll differ diff --git a/Output/Servidor/UIBMonitor.exe b/Output/Servidor/UIBMonitor.exe new file mode 100644 index 0000000..f4a97d1 Binary files /dev/null and b/Output/Servidor/UIBMonitor.exe differ diff --git a/Output/Servidor/config.ini b/Output/Servidor/config.ini new file mode 100644 index 0000000..897c89f --- /dev/null +++ b/Output/Servidor/config.ini @@ -0,0 +1,3 @@ +[CONFIG] +APPPATH=D:\Proyectos\FactuGES (Arribas)\Codigo\Output\Servidor\FactuGES_Server.exe +LIBPATH=GDS32.DLL diff --git a/Output/Servidor/fbclient.dll b/Output/Servidor/fbclient.dll new file mode 100644 index 0000000..9e7af3a Binary files /dev/null and b/Output/Servidor/fbclient.dll differ diff --git a/Output/Servidor/gds32.dll b/Output/Servidor/gds32.dll new file mode 100644 index 0000000..9e7af3a Binary files /dev/null and b/Output/Servidor/gds32.dll differ diff --git a/Output/Servidor/madCHook.dll b/Output/Servidor/madCHook.dll new file mode 100644 index 0000000..53d4fbc Binary files /dev/null and b/Output/Servidor/madCHook.dll differ diff --git a/SCRIPT.SQL b/SCRIPT.SQL new file mode 100644 index 0000000..e69de29 diff --git a/Servidor/Config.ini b/Servidor/Config.ini new file mode 100644 index 0000000..837dd02 --- /dev/null +++ b/Servidor/Config.ini @@ -0,0 +1,18 @@ +[Project Generation] +SvcLibName=NewLibrary +SvcName=NewService +PrjName=NewProject +PrjDir=D:\Proyectos\FactuGES (Arribas)\Codigo\Servidor\ +CreateClientAndGroup=TRUE + +[Class Factories] +By Request=TROClassFactory +Singleton Object=TROSingletonClassFactory +Pooled Object=TROPooledClassFactory +Per Client=TROPerCLientClassFactory + +[ServerToChannel] +BPDXHTTPServer=WinInetHTTPChannel +BPDXTCPServer=IndyTCPChannel +IndyHTTPServer=WinInetHTTPChannel +WebBrokerServer=WinInetHTTPChannel diff --git a/Servidor/FactuGES.rodl b/Servidor/FactuGES.rodl new file mode 100644 index 0000000..917e330 --- /dev/null +++ b/Servidor/FactuGES.rodl @@ -0,0 +1,533 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Servidor/FactuGES_Async.pas b/Servidor/FactuGES_Async.pas new file mode 100644 index 0000000..3cd65e2 --- /dev/null +++ b/Servidor/FactuGES_Async.pas @@ -0,0 +1,1490 @@ +unit FactuGES_Async; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ Do not modify this unit manually, or your changes will be lost when this } +{ unit is regenerated the next time you compile the project. } +{----------------------------------------------------------------------------} + +interface + +uses + {vcl:} Classes, TypInfo, + {RemObjects:} uROClasses, uROTypes, uROClientIntf, uROAsync, + {Used RODLs:} DataAbstract_Intf, DataAbstract_Async, + {Project:} FactuGES_Intf; + +type + { IsrvContactos_Async } + IsrvContactos_Async = interface(IDARemoteService_Async) + ['{DB46D9A9-FEA2-41C6-8470-86874F1D31D9}'] + procedure Invoke_GenerateReport; + procedure Invoke_GetNextAutoinc; + procedure Invoke_PuedoEliminarContacto(const CodigoContacto: Integer); + function Retrieve_GenerateReport: Binary; + function Retrieve_GetNextAutoinc: Integer; + function Retrieve_PuedoEliminarContacto: Boolean; + end; + + { CosrvContactos_Async } + CosrvContactos_Async = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvContactos_Async; + end; + + { TsrvContactos_AsyncProxy } + TsrvContactos_AsyncProxy = class(TDARemoteService_AsyncProxy, IsrvContactos_Async) + private + protected + function __GetInterfaceName:string; override; + + procedure Invoke_GenerateReport; + procedure Invoke_GetNextAutoinc; + procedure Invoke_PuedoEliminarContacto(const CodigoContacto: Integer); + function Retrieve_GenerateReport: Binary; + function Retrieve_GetNextAutoinc: Integer; + function Retrieve_PuedoEliminarContacto: Boolean; + end; + +type + { IsrvLogin_Async } + IsrvLogin_Async = interface(IROAsyncInterface) + ['{B73CBA6A-CB82-492E-AC25-DEF339592683}'] + procedure Invoke_Login(const UserID: String; const Password: String); + procedure Invoke_Logout; + procedure Invoke_UpdateUsers(const UsersDelta: Binary); + procedure Invoke_SetUserPassword(const UserID: String; const NewPassword: String); + procedure Invoke_Ping; + function Retrieve_Login(out LoginInfo: TLoginInfo): Boolean; + function Retrieve_UpdateUsers: Binary; + function Retrieve_SetUserPassword: Boolean; + function Retrieve_Ping: Boolean; + end; + + { CosrvLogin_Async } + CosrvLogin_Async = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvLogin_Async; + end; + + { TsrvLogin_AsyncProxy } + TsrvLogin_AsyncProxy = class(TROAsyncProxy, IsrvLogin_Async) + private + protected + function __GetInterfaceName:string; override; + + procedure Invoke_Login(const UserID: String; const Password: String); + procedure Invoke_Logout; + procedure Invoke_UpdateUsers(const UsersDelta: Binary); + procedure Invoke_SetUserPassword(const UserID: String; const NewPassword: String); + procedure Invoke_Ping; + function Retrieve_Login(out LoginInfo: TLoginInfo): Boolean; + function Retrieve_UpdateUsers: Binary; + function Retrieve_SetUserPassword: Boolean; + function Retrieve_Ping: Boolean; + end; + +type + { IsrvPresupuestos_Async } + IsrvPresupuestos_Async = interface(IDARemoteService_Async) + ['{A1F81289-E3AF-469D-AEC8-C111FF1B13CB}'] + procedure Invoke_GetNextAutoinc; + procedure Invoke_GenerateReport(const Codigo: Integer); + procedure Invoke_DarNuevaReferencia(const TipoPresupuesto: String); + procedure Invoke_PuedoEliminarPresupuesto(const CodigoPresupuesto: Integer); + function Retrieve_GetNextAutoinc: Integer; + function Retrieve_GenerateReport: Binary; + function Retrieve_DarNuevaReferencia: String; + function Retrieve_PuedoEliminarPresupuesto: Boolean; + end; + + { CosrvPresupuestos_Async } + CosrvPresupuestos_Async = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvPresupuestos_Async; + end; + + { TsrvPresupuestos_AsyncProxy } + TsrvPresupuestos_AsyncProxy = class(TDARemoteService_AsyncProxy, IsrvPresupuestos_Async) + private + protected + function __GetInterfaceName:string; override; + + procedure Invoke_GetNextAutoinc; + procedure Invoke_GenerateReport(const Codigo: Integer); + procedure Invoke_DarNuevaReferencia(const TipoPresupuesto: String); + procedure Invoke_PuedoEliminarPresupuesto(const CodigoPresupuesto: Integer); + function Retrieve_GetNextAutoinc: Integer; + function Retrieve_GenerateReport: Binary; + function Retrieve_DarNuevaReferencia: String; + function Retrieve_PuedoEliminarPresupuesto: Boolean; + end; + +type + { IsrvPedidosProveedor_Async } + IsrvPedidosProveedor_Async = interface(IDARemoteService_Async) + ['{0DB4DD45-3291-4D78-91EE-313A6CC6750F}'] + procedure Invoke_GetNextAutoinc; + procedure Invoke_DarNuevaReferencia; + procedure Invoke_GenerateReport(const Codigo: Integer); + procedure Invoke_PuedoEliminarPedido(const CodigoPedido: Integer); + function Retrieve_GetNextAutoinc: Integer; + function Retrieve_DarNuevaReferencia: String; + function Retrieve_GenerateReport: Binary; + function Retrieve_PuedoEliminarPedido: Boolean; + end; + + { CosrvPedidosProveedor_Async } + CosrvPedidosProveedor_Async = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvPedidosProveedor_Async; + end; + + { TsrvPedidosProveedor_AsyncProxy } + TsrvPedidosProveedor_AsyncProxy = class(TDARemoteService_AsyncProxy, IsrvPedidosProveedor_Async) + private + protected + function __GetInterfaceName:string; override; + + procedure Invoke_GetNextAutoinc; + procedure Invoke_DarNuevaReferencia; + procedure Invoke_GenerateReport(const Codigo: Integer); + procedure Invoke_PuedoEliminarPedido(const CodigoPedido: Integer); + function Retrieve_GetNextAutoinc: Integer; + function Retrieve_DarNuevaReferencia: String; + function Retrieve_GenerateReport: Binary; + function Retrieve_PuedoEliminarPedido: Boolean; + end; + +type + { IsrvAlbaranesCliente_Async } + IsrvAlbaranesCliente_Async = interface(IDARemoteService_Async) + ['{CB28804E-2105-4803-992B-A250D523C499}'] + procedure Invoke_ExisteAlbaranDePresupuesto(const CodigoPresupuesto: Integer); + procedure Invoke_DarNuevaReferencia; + procedure Invoke_GetNextAutoinc; + procedure Invoke_GenerateReport(const Codigo: Integer); + procedure Invoke_PuedoEliminarAlbaran(const CodigoAlbaran: Integer); + function Retrieve_ExisteAlbaranDePresupuesto(out CodigoAlbaran: Integer): Boolean; + function Retrieve_DarNuevaReferencia: String; + function Retrieve_GetNextAutoinc: Integer; + function Retrieve_GenerateReport: Binary; + function Retrieve_PuedoEliminarAlbaran: Boolean; + end; + + { CosrvAlbaranesCliente_Async } + CosrvAlbaranesCliente_Async = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvAlbaranesCliente_Async; + end; + + { TsrvAlbaranesCliente_AsyncProxy } + TsrvAlbaranesCliente_AsyncProxy = class(TDARemoteService_AsyncProxy, IsrvAlbaranesCliente_Async) + private + protected + function __GetInterfaceName:string; override; + + procedure Invoke_ExisteAlbaranDePresupuesto(const CodigoPresupuesto: Integer); + procedure Invoke_DarNuevaReferencia; + procedure Invoke_GetNextAutoinc; + procedure Invoke_GenerateReport(const Codigo: Integer); + procedure Invoke_PuedoEliminarAlbaran(const CodigoAlbaran: Integer); + function Retrieve_ExisteAlbaranDePresupuesto(out CodigoAlbaran: Integer): Boolean; + function Retrieve_DarNuevaReferencia: String; + function Retrieve_GetNextAutoinc: Integer; + function Retrieve_GenerateReport: Binary; + function Retrieve_PuedoEliminarAlbaran: Boolean; + end; + +type + { IsrvFacturasCliente_Async } + IsrvFacturasCliente_Async = interface(IDARemoteService_Async) + ['{59BC0F5E-2E2F-4139-8616-6C7AA6B435C0}'] + procedure Invoke_GetNextAutoinc; + procedure Invoke_PuedoEliminarFactura(const CodigoFactura: Integer); + procedure Invoke_ExisteFacturaDeAlbaran(const CodigoAlbaran: Integer); + procedure Invoke_GenerateReport(const Codigo: Integer); + procedure Invoke_DarNuevaReferencia; + function Retrieve_GetNextAutoinc: Integer; + function Retrieve_PuedoEliminarFactura: Boolean; + function Retrieve_ExisteFacturaDeAlbaran(out CodigoFactura: Integer): Boolean; + function Retrieve_GenerateReport: Binary; + function Retrieve_DarNuevaReferencia: String; + end; + + { CosrvFacturasCliente_Async } + CosrvFacturasCliente_Async = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvFacturasCliente_Async; + end; + + { TsrvFacturasCliente_AsyncProxy } + TsrvFacturasCliente_AsyncProxy = class(TDARemoteService_AsyncProxy, IsrvFacturasCliente_Async) + private + protected + function __GetInterfaceName:string; override; + + procedure Invoke_GetNextAutoinc; + procedure Invoke_PuedoEliminarFactura(const CodigoFactura: Integer); + procedure Invoke_ExisteFacturaDeAlbaran(const CodigoAlbaran: Integer); + procedure Invoke_GenerateReport(const Codigo: Integer); + procedure Invoke_DarNuevaReferencia; + function Retrieve_GetNextAutoinc: Integer; + function Retrieve_PuedoEliminarFactura: Boolean; + function Retrieve_ExisteFacturaDeAlbaran(out CodigoFactura: Integer): Boolean; + function Retrieve_GenerateReport: Binary; + function Retrieve_DarNuevaReferencia: String; + end; + +type + { IsrvAlmacenes_Async } + IsrvAlmacenes_Async = interface(IDARemoteService_Async) + ['{DFF6047B-9CFD-497D-8D15-FE7F8308ACDB}'] + procedure Invoke_GenerateReport; + procedure Invoke_PuedoEliminarAlmacen(const Codigo: Integer); + function Retrieve_GenerateReport: Binary; + function Retrieve_PuedoEliminarAlmacen: Boolean; + end; + + { CosrvAlmacenes_Async } + CosrvAlmacenes_Async = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvAlmacenes_Async; + end; + + { TsrvAlmacenes_AsyncProxy } + TsrvAlmacenes_AsyncProxy = class(TDARemoteService_AsyncProxy, IsrvAlmacenes_Async) + private + protected + function __GetInterfaceName:string; override; + + procedure Invoke_GenerateReport; + procedure Invoke_PuedoEliminarAlmacen(const Codigo: Integer); + function Retrieve_GenerateReport: Binary; + function Retrieve_PuedoEliminarAlmacen: Boolean; + end; + +type + { IsrvArticulos_Async } + IsrvArticulos_Async = interface(IDARemoteService_Async) + ['{330D86CE-7B7D-40FB-9791-D12F9331A950}'] + procedure Invoke_GetNextAutoinc; + function Retrieve_GetNextAutoinc: Integer; + end; + + { CosrvArticulos_Async } + CosrvArticulos_Async = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvArticulos_Async; + end; + + { TsrvArticulos_AsyncProxy } + TsrvArticulos_AsyncProxy = class(TDARemoteService_AsyncProxy, IsrvArticulos_Async) + private + protected + function __GetInterfaceName:string; override; + + procedure Invoke_GetNextAutoinc; + function Retrieve_GetNextAutoinc: Integer; + end; + +type + { IsrvMontajes_Async } + IsrvMontajes_Async = interface(IDARemoteService_Async) + ['{3E2BB30E-8A2C-4262-8C49-F0478D74EA12}'] + procedure Invoke_GetNextAutoinc; + procedure Invoke_PuedoEliminarMontaje(const Codigo: Integer); + procedure Invoke_AnadirFichaBeneficios(const CodigoMontaje: Integer); + function Retrieve_GetNextAutoinc: Integer; + function Retrieve_PuedoEliminarMontaje: Boolean; + function Retrieve_AnadirFichaBeneficios: Boolean; + end; + + { CosrvMontajes_Async } + CosrvMontajes_Async = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvMontajes_Async; + end; + + { TsrvMontajes_AsyncProxy } + TsrvMontajes_AsyncProxy = class(TDARemoteService_AsyncProxy, IsrvMontajes_Async) + private + protected + function __GetInterfaceName:string; override; + + procedure Invoke_GetNextAutoinc; + procedure Invoke_PuedoEliminarMontaje(const Codigo: Integer); + procedure Invoke_AnadirFichaBeneficios(const CodigoMontaje: Integer); + function Retrieve_GetNextAutoinc: Integer; + function Retrieve_PuedoEliminarMontaje: Boolean; + function Retrieve_AnadirFichaBeneficios: Boolean; + end; + +type + { IsrvFacturasProveedor_Async } + IsrvFacturasProveedor_Async = interface(IDARemoteService_Async) + ['{75F266A8-471B-47AC-99E5-B202A309E131}'] + procedure Invoke_GetNextAutoinc; + procedure Invoke_PuedoEliminarFactura(const CodigoFactura: Integer); + function Retrieve_GetNextAutoinc: Integer; + function Retrieve_PuedoEliminarFactura: Boolean; + end; + + { CosrvFacturasProveedor_Async } + CosrvFacturasProveedor_Async = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvFacturasProveedor_Async; + end; + + { TsrvFacturasProveedor_AsyncProxy } + TsrvFacturasProveedor_AsyncProxy = class(TDARemoteService_AsyncProxy, IsrvFacturasProveedor_Async) + private + protected + function __GetInterfaceName:string; override; + + procedure Invoke_GetNextAutoinc; + procedure Invoke_PuedoEliminarFactura(const CodigoFactura: Integer); + function Retrieve_GetNextAutoinc: Integer; + function Retrieve_PuedoEliminarFactura: Boolean; + end; + +type + { IsrvPagos_Async } + IsrvPagos_Async = interface(IDARemoteService_Async) + ['{A777BD27-C3FE-4F4C-9129-4F407906FCB3}'] + procedure Invoke_GetNextAutoinc; + function Retrieve_GetNextAutoinc: Integer; + end; + + { CosrvPagos_Async } + CosrvPagos_Async = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvPagos_Async; + end; + + { TsrvPagos_AsyncProxy } + TsrvPagos_AsyncProxy = class(TDARemoteService_AsyncProxy, IsrvPagos_Async) + private + protected + function __GetInterfaceName:string; override; + + procedure Invoke_GetNextAutoinc; + function Retrieve_GetNextAutoinc: Integer; + end; + +type + { IsrvCuentas_Async } + IsrvCuentas_Async = interface(IDARemoteService_Async) + ['{03FCD6F2-7705-491C-A300-09CA398CDCF3}'] + procedure Invoke_GenerateReport; + procedure Invoke_PuedoEliminarCuenta(const Codigo: Integer); + function Retrieve_GenerateReport: Binary; + function Retrieve_PuedoEliminarCuenta: Boolean; + end; + + { CosrvCuentas_Async } + CosrvCuentas_Async = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvCuentas_Async; + end; + + { TsrvCuentas_AsyncProxy } + TsrvCuentas_AsyncProxy = class(TDARemoteService_AsyncProxy, IsrvCuentas_Async) + private + protected + function __GetInterfaceName:string; override; + + procedure Invoke_GenerateReport; + procedure Invoke_PuedoEliminarCuenta(const Codigo: Integer); + function Retrieve_GenerateReport: Binary; + function Retrieve_PuedoEliminarCuenta: Boolean; + end; + +implementation + +uses + {vcl:} SysUtils; + +{ CosrvContactos } + +class function CosrvContactos_Async.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvContactos_Async; +begin + result := TsrvContactos_AsyncProxy.Create(aMessage, aTransportChannel); +end; + +{ TsrvContactos_AsyncProxy } + +function TsrvContactos_AsyncProxy.__GetInterfaceName:string; +begin + result := 'srvContactos'; +end; + +procedure TsrvContactos_AsyncProxy.Invoke_GenerateReport; +var __request:TStream; +begin + __AssertProxyNotBusy('GenerateReport'); + __request := TMemoryStream.Create; + + __Message.Initialize(__TransportChannel, 'FactuGES', __InterfaceName, 'GenerateReport'); + __Message.Finalize; + + __Message.WriteToStream(__request); + __DispatchAsyncRequest('GenerateReport',__request); +end; + +function TsrvContactos_AsyncProxy.Retrieve_GenerateReport: Binary; +var __response:TStream; +begin + result := nil; + __response := __RetrieveAsyncResponse('GenerateReport'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Binary), Result, []); + + __response.Free(); +end; + +procedure TsrvContactos_AsyncProxy.Invoke_GetNextAutoinc; +var __request:TStream; +begin + __AssertProxyNotBusy('GetNextAutoinc'); + __request := TMemoryStream.Create; + + __Message.Initialize(__TransportChannel, 'FactuGES', __InterfaceName, 'GetNextAutoinc'); + __Message.Finalize; + + __Message.WriteToStream(__request); + __DispatchAsyncRequest('GetNextAutoinc',__request); +end; + +function TsrvContactos_AsyncProxy.Retrieve_GetNextAutoinc: Integer; +var __response:TStream; +begin + __response := __RetrieveAsyncResponse('GetNextAutoinc'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Integer), Result, []); + + __response.Free(); +end; + +procedure TsrvContactos_AsyncProxy.Invoke_PuedoEliminarContacto(const CodigoContacto: Integer); +var __request:TStream; +begin + __AssertProxyNotBusy('PuedoEliminarContacto'); + __request := TMemoryStream.Create; + + __Message.Initialize(__TransportChannel, 'FactuGES', __InterfaceName, 'PuedoEliminarContacto'); + __Message.Write('CodigoContacto', TypeInfo(Integer), CodigoContacto, []); + __Message.Finalize; + + __Message.WriteToStream(__request); + __DispatchAsyncRequest('PuedoEliminarContacto',__request); +end; + +function TsrvContactos_AsyncProxy.Retrieve_PuedoEliminarContacto: Boolean; +var __response:TStream; +begin + __response := __RetrieveAsyncResponse('PuedoEliminarContacto'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Boolean), Result, []); + + __response.Free(); +end; + + +{ CosrvLogin } + +class function CosrvLogin_Async.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvLogin_Async; +begin + result := TsrvLogin_AsyncProxy.Create(aMessage, aTransportChannel); +end; + +{ TsrvLogin_AsyncProxy } + +function TsrvLogin_AsyncProxy.__GetInterfaceName:string; +begin + result := 'srvLogin'; +end; + +procedure TsrvLogin_AsyncProxy.Invoke_Login(const UserID: String; const Password: String); +var __request:TStream; +begin + __AssertProxyNotBusy('Login'); + __request := TMemoryStream.Create; + + __Message.Initialize(__TransportChannel, 'FactuGES', __InterfaceName, 'Login'); + __Message.Write('UserID', TypeInfo(String), UserID, []); + __Message.Write('Password', TypeInfo(String), Password, []); + __Message.Finalize; + + __Message.WriteToStream(__request); + __DispatchAsyncRequest('Login',__request); +end; + +function TsrvLogin_AsyncProxy.Retrieve_Login(out LoginInfo: TLoginInfo): Boolean; +var __response:TStream; +begin + LoginInfo := nil; + __response := __RetrieveAsyncResponse('Login'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Boolean), Result, []); + __Message.Read('LoginInfo', TypeInfo(TLoginInfo), LoginInfo, []); + + __response.Free(); +end; + +procedure TsrvLogin_AsyncProxy.Invoke_Logout; +var __request:TStream; +begin + __AssertProxyNotBusy('Logout'); + __request := TMemoryStream.Create; + + __Message.Initialize(__TransportChannel, 'FactuGES', __InterfaceName, 'Logout'); + __Message.Finalize; + + __Message.WriteToStream(__request); + __DispatchAsyncRequest('Logout',__request, false); +end; + +procedure TsrvLogin_AsyncProxy.Invoke_UpdateUsers(const UsersDelta: Binary); +var __request:TStream; +begin + __AssertProxyNotBusy('UpdateUsers'); + __request := TMemoryStream.Create; + + __Message.Initialize(__TransportChannel, 'FactuGES', __InterfaceName, 'UpdateUsers'); + __Message.Write('UsersDelta', TypeInfo(Binary), UsersDelta, []); + __Message.Finalize; + + __Message.WriteToStream(__request); + __DispatchAsyncRequest('UpdateUsers',__request); +end; + +function TsrvLogin_AsyncProxy.Retrieve_UpdateUsers: Binary; +var __response:TStream; +begin + result := nil; + __response := __RetrieveAsyncResponse('UpdateUsers'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Binary), Result, []); + + __response.Free(); +end; + +procedure TsrvLogin_AsyncProxy.Invoke_SetUserPassword(const UserID: String; const NewPassword: String); +var __request:TStream; +begin + __AssertProxyNotBusy('SetUserPassword'); + __request := TMemoryStream.Create; + + __Message.Initialize(__TransportChannel, 'FactuGES', __InterfaceName, 'SetUserPassword'); + __Message.Write('UserID', TypeInfo(String), UserID, []); + __Message.Write('NewPassword', TypeInfo(String), NewPassword, []); + __Message.Finalize; + + __Message.WriteToStream(__request); + __DispatchAsyncRequest('SetUserPassword',__request); +end; + +function TsrvLogin_AsyncProxy.Retrieve_SetUserPassword: Boolean; +var __response:TStream; +begin + __response := __RetrieveAsyncResponse('SetUserPassword'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Boolean), Result, []); + + __response.Free(); +end; + +procedure TsrvLogin_AsyncProxy.Invoke_Ping; +var __request:TStream; +begin + __AssertProxyNotBusy('Ping'); + __request := TMemoryStream.Create; + + __Message.Initialize(__TransportChannel, 'FactuGES', __InterfaceName, 'Ping'); + __Message.Finalize; + + __Message.WriteToStream(__request); + __DispatchAsyncRequest('Ping',__request); +end; + +function TsrvLogin_AsyncProxy.Retrieve_Ping: Boolean; +var __response:TStream; +begin + __response := __RetrieveAsyncResponse('Ping'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Boolean), Result, []); + + __response.Free(); +end; + + +{ CosrvPresupuestos } + +class function CosrvPresupuestos_Async.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvPresupuestos_Async; +begin + result := TsrvPresupuestos_AsyncProxy.Create(aMessage, aTransportChannel); +end; + +{ TsrvPresupuestos_AsyncProxy } + +function TsrvPresupuestos_AsyncProxy.__GetInterfaceName:string; +begin + result := 'srvPresupuestos'; +end; + +procedure TsrvPresupuestos_AsyncProxy.Invoke_GetNextAutoinc; +var __request:TStream; +begin + __AssertProxyNotBusy('GetNextAutoinc'); + __request := TMemoryStream.Create; + + __Message.Initialize(__TransportChannel, 'FactuGES', __InterfaceName, 'GetNextAutoinc'); + __Message.Finalize; + + __Message.WriteToStream(__request); + __DispatchAsyncRequest('GetNextAutoinc',__request); +end; + +function TsrvPresupuestos_AsyncProxy.Retrieve_GetNextAutoinc: Integer; +var __response:TStream; +begin + __response := __RetrieveAsyncResponse('GetNextAutoinc'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Integer), Result, []); + + __response.Free(); +end; + +procedure TsrvPresupuestos_AsyncProxy.Invoke_GenerateReport(const Codigo: Integer); +var __request:TStream; +begin + __AssertProxyNotBusy('GenerateReport'); + __request := TMemoryStream.Create; + + __Message.Initialize(__TransportChannel, 'FactuGES', __InterfaceName, 'GenerateReport'); + __Message.Write('Codigo', TypeInfo(Integer), Codigo, []); + __Message.Finalize; + + __Message.WriteToStream(__request); + __DispatchAsyncRequest('GenerateReport',__request); +end; + +function TsrvPresupuestos_AsyncProxy.Retrieve_GenerateReport: Binary; +var __response:TStream; +begin + result := nil; + __response := __RetrieveAsyncResponse('GenerateReport'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Binary), Result, []); + + __response.Free(); +end; + +procedure TsrvPresupuestos_AsyncProxy.Invoke_DarNuevaReferencia(const TipoPresupuesto: String); +var __request:TStream; +begin + __AssertProxyNotBusy('DarNuevaReferencia'); + __request := TMemoryStream.Create; + + __Message.Initialize(__TransportChannel, 'FactuGES', __InterfaceName, 'DarNuevaReferencia'); + __Message.Write('TipoPresupuesto', TypeInfo(String), TipoPresupuesto, []); + __Message.Finalize; + + __Message.WriteToStream(__request); + __DispatchAsyncRequest('DarNuevaReferencia',__request); +end; + +function TsrvPresupuestos_AsyncProxy.Retrieve_DarNuevaReferencia: String; +var __response:TStream; +begin + __response := __RetrieveAsyncResponse('DarNuevaReferencia'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(String), Result, []); + + __response.Free(); +end; + +procedure TsrvPresupuestos_AsyncProxy.Invoke_PuedoEliminarPresupuesto(const CodigoPresupuesto: Integer); +var __request:TStream; +begin + __AssertProxyNotBusy('PuedoEliminarPresupuesto'); + __request := TMemoryStream.Create; + + __Message.Initialize(__TransportChannel, 'FactuGES', __InterfaceName, 'PuedoEliminarPresupuesto'); + __Message.Write('CodigoPresupuesto', TypeInfo(Integer), CodigoPresupuesto, []); + __Message.Finalize; + + __Message.WriteToStream(__request); + __DispatchAsyncRequest('PuedoEliminarPresupuesto',__request); +end; + +function TsrvPresupuestos_AsyncProxy.Retrieve_PuedoEliminarPresupuesto: Boolean; +var __response:TStream; +begin + __response := __RetrieveAsyncResponse('PuedoEliminarPresupuesto'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Boolean), Result, []); + + __response.Free(); +end; + + +{ CosrvPedidosProveedor } + +class function CosrvPedidosProveedor_Async.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvPedidosProveedor_Async; +begin + result := TsrvPedidosProveedor_AsyncProxy.Create(aMessage, aTransportChannel); +end; + +{ TsrvPedidosProveedor_AsyncProxy } + +function TsrvPedidosProveedor_AsyncProxy.__GetInterfaceName:string; +begin + result := 'srvPedidosProveedor'; +end; + +procedure TsrvPedidosProveedor_AsyncProxy.Invoke_GetNextAutoinc; +var __request:TStream; +begin + __AssertProxyNotBusy('GetNextAutoinc'); + __request := TMemoryStream.Create; + + __Message.Initialize(__TransportChannel, 'FactuGES', __InterfaceName, 'GetNextAutoinc'); + __Message.Finalize; + + __Message.WriteToStream(__request); + __DispatchAsyncRequest('GetNextAutoinc',__request); +end; + +function TsrvPedidosProveedor_AsyncProxy.Retrieve_GetNextAutoinc: Integer; +var __response:TStream; +begin + __response := __RetrieveAsyncResponse('GetNextAutoinc'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Integer), Result, []); + + __response.Free(); +end; + +procedure TsrvPedidosProveedor_AsyncProxy.Invoke_DarNuevaReferencia; +var __request:TStream; +begin + __AssertProxyNotBusy('DarNuevaReferencia'); + __request := TMemoryStream.Create; + + __Message.Initialize(__TransportChannel, 'FactuGES', __InterfaceName, 'DarNuevaReferencia'); + __Message.Finalize; + + __Message.WriteToStream(__request); + __DispatchAsyncRequest('DarNuevaReferencia',__request); +end; + +function TsrvPedidosProveedor_AsyncProxy.Retrieve_DarNuevaReferencia: String; +var __response:TStream; +begin + __response := __RetrieveAsyncResponse('DarNuevaReferencia'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(String), Result, []); + + __response.Free(); +end; + +procedure TsrvPedidosProveedor_AsyncProxy.Invoke_GenerateReport(const Codigo: Integer); +var __request:TStream; +begin + __AssertProxyNotBusy('GenerateReport'); + __request := TMemoryStream.Create; + + __Message.Initialize(__TransportChannel, 'FactuGES', __InterfaceName, 'GenerateReport'); + __Message.Write('Codigo', TypeInfo(Integer), Codigo, []); + __Message.Finalize; + + __Message.WriteToStream(__request); + __DispatchAsyncRequest('GenerateReport',__request); +end; + +function TsrvPedidosProveedor_AsyncProxy.Retrieve_GenerateReport: Binary; +var __response:TStream; +begin + result := nil; + __response := __RetrieveAsyncResponse('GenerateReport'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Binary), Result, []); + + __response.Free(); +end; + +procedure TsrvPedidosProveedor_AsyncProxy.Invoke_PuedoEliminarPedido(const CodigoPedido: Integer); +var __request:TStream; +begin + __AssertProxyNotBusy('PuedoEliminarPedido'); + __request := TMemoryStream.Create; + + __Message.Initialize(__TransportChannel, 'FactuGES', __InterfaceName, 'PuedoEliminarPedido'); + __Message.Write('CodigoPedido', TypeInfo(Integer), CodigoPedido, []); + __Message.Finalize; + + __Message.WriteToStream(__request); + __DispatchAsyncRequest('PuedoEliminarPedido',__request); +end; + +function TsrvPedidosProveedor_AsyncProxy.Retrieve_PuedoEliminarPedido: Boolean; +var __response:TStream; +begin + __response := __RetrieveAsyncResponse('PuedoEliminarPedido'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Boolean), Result, []); + + __response.Free(); +end; + + +{ CosrvAlbaranesCliente } + +class function CosrvAlbaranesCliente_Async.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvAlbaranesCliente_Async; +begin + result := TsrvAlbaranesCliente_AsyncProxy.Create(aMessage, aTransportChannel); +end; + +{ TsrvAlbaranesCliente_AsyncProxy } + +function TsrvAlbaranesCliente_AsyncProxy.__GetInterfaceName:string; +begin + result := 'srvAlbaranesCliente'; +end; + +procedure TsrvAlbaranesCliente_AsyncProxy.Invoke_ExisteAlbaranDePresupuesto(const CodigoPresupuesto: Integer); +var __request:TStream; +begin + __AssertProxyNotBusy('ExisteAlbaranDePresupuesto'); + __request := TMemoryStream.Create; + + __Message.Initialize(__TransportChannel, 'FactuGES', __InterfaceName, 'ExisteAlbaranDePresupuesto'); + __Message.Write('CodigoPresupuesto', TypeInfo(Integer), CodigoPresupuesto, []); + __Message.Finalize; + + __Message.WriteToStream(__request); + __DispatchAsyncRequest('ExisteAlbaranDePresupuesto',__request); +end; + +function TsrvAlbaranesCliente_AsyncProxy.Retrieve_ExisteAlbaranDePresupuesto(out CodigoAlbaran: Integer): Boolean; +var __response:TStream; +begin + __response := __RetrieveAsyncResponse('ExisteAlbaranDePresupuesto'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Boolean), Result, []); + __Message.Read('CodigoAlbaran', TypeInfo(Integer), CodigoAlbaran, []); + + __response.Free(); +end; + +procedure TsrvAlbaranesCliente_AsyncProxy.Invoke_DarNuevaReferencia; +var __request:TStream; +begin + __AssertProxyNotBusy('DarNuevaReferencia'); + __request := TMemoryStream.Create; + + __Message.Initialize(__TransportChannel, 'FactuGES', __InterfaceName, 'DarNuevaReferencia'); + __Message.Finalize; + + __Message.WriteToStream(__request); + __DispatchAsyncRequest('DarNuevaReferencia',__request); +end; + +function TsrvAlbaranesCliente_AsyncProxy.Retrieve_DarNuevaReferencia: String; +var __response:TStream; +begin + __response := __RetrieveAsyncResponse('DarNuevaReferencia'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(String), Result, []); + + __response.Free(); +end; + +procedure TsrvAlbaranesCliente_AsyncProxy.Invoke_GetNextAutoinc; +var __request:TStream; +begin + __AssertProxyNotBusy('GetNextAutoinc'); + __request := TMemoryStream.Create; + + __Message.Initialize(__TransportChannel, 'FactuGES', __InterfaceName, 'GetNextAutoinc'); + __Message.Finalize; + + __Message.WriteToStream(__request); + __DispatchAsyncRequest('GetNextAutoinc',__request); +end; + +function TsrvAlbaranesCliente_AsyncProxy.Retrieve_GetNextAutoinc: Integer; +var __response:TStream; +begin + __response := __RetrieveAsyncResponse('GetNextAutoinc'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Integer), Result, []); + + __response.Free(); +end; + +procedure TsrvAlbaranesCliente_AsyncProxy.Invoke_GenerateReport(const Codigo: Integer); +var __request:TStream; +begin + __AssertProxyNotBusy('GenerateReport'); + __request := TMemoryStream.Create; + + __Message.Initialize(__TransportChannel, 'FactuGES', __InterfaceName, 'GenerateReport'); + __Message.Write('Codigo', TypeInfo(Integer), Codigo, []); + __Message.Finalize; + + __Message.WriteToStream(__request); + __DispatchAsyncRequest('GenerateReport',__request); +end; + +function TsrvAlbaranesCliente_AsyncProxy.Retrieve_GenerateReport: Binary; +var __response:TStream; +begin + result := nil; + __response := __RetrieveAsyncResponse('GenerateReport'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Binary), Result, []); + + __response.Free(); +end; + +procedure TsrvAlbaranesCliente_AsyncProxy.Invoke_PuedoEliminarAlbaran(const CodigoAlbaran: Integer); +var __request:TStream; +begin + __AssertProxyNotBusy('PuedoEliminarAlbaran'); + __request := TMemoryStream.Create; + + __Message.Initialize(__TransportChannel, 'FactuGES', __InterfaceName, 'PuedoEliminarAlbaran'); + __Message.Write('CodigoAlbaran', TypeInfo(Integer), CodigoAlbaran, []); + __Message.Finalize; + + __Message.WriteToStream(__request); + __DispatchAsyncRequest('PuedoEliminarAlbaran',__request); +end; + +function TsrvAlbaranesCliente_AsyncProxy.Retrieve_PuedoEliminarAlbaran: Boolean; +var __response:TStream; +begin + __response := __RetrieveAsyncResponse('PuedoEliminarAlbaran'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Boolean), Result, []); + + __response.Free(); +end; + + +{ CosrvFacturasCliente } + +class function CosrvFacturasCliente_Async.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvFacturasCliente_Async; +begin + result := TsrvFacturasCliente_AsyncProxy.Create(aMessage, aTransportChannel); +end; + +{ TsrvFacturasCliente_AsyncProxy } + +function TsrvFacturasCliente_AsyncProxy.__GetInterfaceName:string; +begin + result := 'srvFacturasCliente'; +end; + +procedure TsrvFacturasCliente_AsyncProxy.Invoke_GetNextAutoinc; +var __request:TStream; +begin + __AssertProxyNotBusy('GetNextAutoinc'); + __request := TMemoryStream.Create; + + __Message.Initialize(__TransportChannel, 'FactuGES', __InterfaceName, 'GetNextAutoinc'); + __Message.Finalize; + + __Message.WriteToStream(__request); + __DispatchAsyncRequest('GetNextAutoinc',__request); +end; + +function TsrvFacturasCliente_AsyncProxy.Retrieve_GetNextAutoinc: Integer; +var __response:TStream; +begin + __response := __RetrieveAsyncResponse('GetNextAutoinc'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Integer), Result, []); + + __response.Free(); +end; + +procedure TsrvFacturasCliente_AsyncProxy.Invoke_PuedoEliminarFactura(const CodigoFactura: Integer); +var __request:TStream; +begin + __AssertProxyNotBusy('PuedoEliminarFactura'); + __request := TMemoryStream.Create; + + __Message.Initialize(__TransportChannel, 'FactuGES', __InterfaceName, 'PuedoEliminarFactura'); + __Message.Write('CodigoFactura', TypeInfo(Integer), CodigoFactura, []); + __Message.Finalize; + + __Message.WriteToStream(__request); + __DispatchAsyncRequest('PuedoEliminarFactura',__request); +end; + +function TsrvFacturasCliente_AsyncProxy.Retrieve_PuedoEliminarFactura: Boolean; +var __response:TStream; +begin + __response := __RetrieveAsyncResponse('PuedoEliminarFactura'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Boolean), Result, []); + + __response.Free(); +end; + +procedure TsrvFacturasCliente_AsyncProxy.Invoke_ExisteFacturaDeAlbaran(const CodigoAlbaran: Integer); +var __request:TStream; +begin + __AssertProxyNotBusy('ExisteFacturaDeAlbaran'); + __request := TMemoryStream.Create; + + __Message.Initialize(__TransportChannel, 'FactuGES', __InterfaceName, 'ExisteFacturaDeAlbaran'); + __Message.Write('CodigoAlbaran', TypeInfo(Integer), CodigoAlbaran, []); + __Message.Finalize; + + __Message.WriteToStream(__request); + __DispatchAsyncRequest('ExisteFacturaDeAlbaran',__request); +end; + +function TsrvFacturasCliente_AsyncProxy.Retrieve_ExisteFacturaDeAlbaran(out CodigoFactura: Integer): Boolean; +var __response:TStream; +begin + __response := __RetrieveAsyncResponse('ExisteFacturaDeAlbaran'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Boolean), Result, []); + __Message.Read('CodigoFactura', TypeInfo(Integer), CodigoFactura, []); + + __response.Free(); +end; + +procedure TsrvFacturasCliente_AsyncProxy.Invoke_GenerateReport(const Codigo: Integer); +var __request:TStream; +begin + __AssertProxyNotBusy('GenerateReport'); + __request := TMemoryStream.Create; + + __Message.Initialize(__TransportChannel, 'FactuGES', __InterfaceName, 'GenerateReport'); + __Message.Write('Codigo', TypeInfo(Integer), Codigo, []); + __Message.Finalize; + + __Message.WriteToStream(__request); + __DispatchAsyncRequest('GenerateReport',__request); +end; + +function TsrvFacturasCliente_AsyncProxy.Retrieve_GenerateReport: Binary; +var __response:TStream; +begin + result := nil; + __response := __RetrieveAsyncResponse('GenerateReport'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Binary), Result, []); + + __response.Free(); +end; + +procedure TsrvFacturasCliente_AsyncProxy.Invoke_DarNuevaReferencia; +var __request:TStream; +begin + __AssertProxyNotBusy('DarNuevaReferencia'); + __request := TMemoryStream.Create; + + __Message.Initialize(__TransportChannel, 'FactuGES', __InterfaceName, 'DarNuevaReferencia'); + __Message.Finalize; + + __Message.WriteToStream(__request); + __DispatchAsyncRequest('DarNuevaReferencia',__request); +end; + +function TsrvFacturasCliente_AsyncProxy.Retrieve_DarNuevaReferencia: String; +var __response:TStream; +begin + __response := __RetrieveAsyncResponse('DarNuevaReferencia'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(String), Result, []); + + __response.Free(); +end; + + +{ CosrvAlmacenes } + +class function CosrvAlmacenes_Async.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvAlmacenes_Async; +begin + result := TsrvAlmacenes_AsyncProxy.Create(aMessage, aTransportChannel); +end; + +{ TsrvAlmacenes_AsyncProxy } + +function TsrvAlmacenes_AsyncProxy.__GetInterfaceName:string; +begin + result := 'srvAlmacenes'; +end; + +procedure TsrvAlmacenes_AsyncProxy.Invoke_GenerateReport; +var __request:TStream; +begin + __AssertProxyNotBusy('GenerateReport'); + __request := TMemoryStream.Create; + + __Message.Initialize(__TransportChannel, 'FactuGES', __InterfaceName, 'GenerateReport'); + __Message.Finalize; + + __Message.WriteToStream(__request); + __DispatchAsyncRequest('GenerateReport',__request); +end; + +function TsrvAlmacenes_AsyncProxy.Retrieve_GenerateReport: Binary; +var __response:TStream; +begin + result := nil; + __response := __RetrieveAsyncResponse('GenerateReport'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Binary), Result, []); + + __response.Free(); +end; + +procedure TsrvAlmacenes_AsyncProxy.Invoke_PuedoEliminarAlmacen(const Codigo: Integer); +var __request:TStream; +begin + __AssertProxyNotBusy('PuedoEliminarAlmacen'); + __request := TMemoryStream.Create; + + __Message.Initialize(__TransportChannel, 'FactuGES', __InterfaceName, 'PuedoEliminarAlmacen'); + __Message.Write('Codigo', TypeInfo(Integer), Codigo, []); + __Message.Finalize; + + __Message.WriteToStream(__request); + __DispatchAsyncRequest('PuedoEliminarAlmacen',__request); +end; + +function TsrvAlmacenes_AsyncProxy.Retrieve_PuedoEliminarAlmacen: Boolean; +var __response:TStream; +begin + __response := __RetrieveAsyncResponse('PuedoEliminarAlmacen'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Boolean), Result, []); + + __response.Free(); +end; + + +{ CosrvArticulos } + +class function CosrvArticulos_Async.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvArticulos_Async; +begin + result := TsrvArticulos_AsyncProxy.Create(aMessage, aTransportChannel); +end; + +{ TsrvArticulos_AsyncProxy } + +function TsrvArticulos_AsyncProxy.__GetInterfaceName:string; +begin + result := 'srvArticulos'; +end; + +procedure TsrvArticulos_AsyncProxy.Invoke_GetNextAutoinc; +var __request:TStream; +begin + __AssertProxyNotBusy('GetNextAutoinc'); + __request := TMemoryStream.Create; + + __Message.Initialize(__TransportChannel, 'FactuGES', __InterfaceName, 'GetNextAutoinc'); + __Message.Finalize; + + __Message.WriteToStream(__request); + __DispatchAsyncRequest('GetNextAutoinc',__request); +end; + +function TsrvArticulos_AsyncProxy.Retrieve_GetNextAutoinc: Integer; +var __response:TStream; +begin + __response := __RetrieveAsyncResponse('GetNextAutoinc'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Integer), Result, []); + + __response.Free(); +end; + + +{ CosrvMontajes } + +class function CosrvMontajes_Async.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvMontajes_Async; +begin + result := TsrvMontajes_AsyncProxy.Create(aMessage, aTransportChannel); +end; + +{ TsrvMontajes_AsyncProxy } + +function TsrvMontajes_AsyncProxy.__GetInterfaceName:string; +begin + result := 'srvMontajes'; +end; + +procedure TsrvMontajes_AsyncProxy.Invoke_GetNextAutoinc; +var __request:TStream; +begin + __AssertProxyNotBusy('GetNextAutoinc'); + __request := TMemoryStream.Create; + + __Message.Initialize(__TransportChannel, 'FactuGES', __InterfaceName, 'GetNextAutoinc'); + __Message.Finalize; + + __Message.WriteToStream(__request); + __DispatchAsyncRequest('GetNextAutoinc',__request); +end; + +function TsrvMontajes_AsyncProxy.Retrieve_GetNextAutoinc: Integer; +var __response:TStream; +begin + __response := __RetrieveAsyncResponse('GetNextAutoinc'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Integer), Result, []); + + __response.Free(); +end; + +procedure TsrvMontajes_AsyncProxy.Invoke_PuedoEliminarMontaje(const Codigo: Integer); +var __request:TStream; +begin + __AssertProxyNotBusy('PuedoEliminarMontaje'); + __request := TMemoryStream.Create; + + __Message.Initialize(__TransportChannel, 'FactuGES', __InterfaceName, 'PuedoEliminarMontaje'); + __Message.Write('Codigo', TypeInfo(Integer), Codigo, []); + __Message.Finalize; + + __Message.WriteToStream(__request); + __DispatchAsyncRequest('PuedoEliminarMontaje',__request); +end; + +function TsrvMontajes_AsyncProxy.Retrieve_PuedoEliminarMontaje: Boolean; +var __response:TStream; +begin + __response := __RetrieveAsyncResponse('PuedoEliminarMontaje'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Boolean), Result, []); + + __response.Free(); +end; + +procedure TsrvMontajes_AsyncProxy.Invoke_AnadirFichaBeneficios(const CodigoMontaje: Integer); +var __request:TStream; +begin + __AssertProxyNotBusy('AnadirFichaBeneficios'); + __request := TMemoryStream.Create; + + __Message.Initialize(__TransportChannel, 'FactuGES', __InterfaceName, 'AnadirFichaBeneficios'); + __Message.Write('CodigoMontaje', TypeInfo(Integer), CodigoMontaje, []); + __Message.Finalize; + + __Message.WriteToStream(__request); + __DispatchAsyncRequest('AnadirFichaBeneficios',__request); +end; + +function TsrvMontajes_AsyncProxy.Retrieve_AnadirFichaBeneficios: Boolean; +var __response:TStream; +begin + __response := __RetrieveAsyncResponse('AnadirFichaBeneficios'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Boolean), Result, []); + + __response.Free(); +end; + + +{ CosrvFacturasProveedor } + +class function CosrvFacturasProveedor_Async.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvFacturasProveedor_Async; +begin + result := TsrvFacturasProveedor_AsyncProxy.Create(aMessage, aTransportChannel); +end; + +{ TsrvFacturasProveedor_AsyncProxy } + +function TsrvFacturasProveedor_AsyncProxy.__GetInterfaceName:string; +begin + result := 'srvFacturasProveedor'; +end; + +procedure TsrvFacturasProveedor_AsyncProxy.Invoke_GetNextAutoinc; +var __request:TStream; +begin + __AssertProxyNotBusy('GetNextAutoinc'); + __request := TMemoryStream.Create; + + __Message.Initialize(__TransportChannel, 'FactuGES', __InterfaceName, 'GetNextAutoinc'); + __Message.Finalize; + + __Message.WriteToStream(__request); + __DispatchAsyncRequest('GetNextAutoinc',__request); +end; + +function TsrvFacturasProveedor_AsyncProxy.Retrieve_GetNextAutoinc: Integer; +var __response:TStream; +begin + __response := __RetrieveAsyncResponse('GetNextAutoinc'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Integer), Result, []); + + __response.Free(); +end; + +procedure TsrvFacturasProveedor_AsyncProxy.Invoke_PuedoEliminarFactura(const CodigoFactura: Integer); +var __request:TStream; +begin + __AssertProxyNotBusy('PuedoEliminarFactura'); + __request := TMemoryStream.Create; + + __Message.Initialize(__TransportChannel, 'FactuGES', __InterfaceName, 'PuedoEliminarFactura'); + __Message.Write('CodigoFactura', TypeInfo(Integer), CodigoFactura, []); + __Message.Finalize; + + __Message.WriteToStream(__request); + __DispatchAsyncRequest('PuedoEliminarFactura',__request); +end; + +function TsrvFacturasProveedor_AsyncProxy.Retrieve_PuedoEliminarFactura: Boolean; +var __response:TStream; +begin + __response := __RetrieveAsyncResponse('PuedoEliminarFactura'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Boolean), Result, []); + + __response.Free(); +end; + + +{ CosrvPagos } + +class function CosrvPagos_Async.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvPagos_Async; +begin + result := TsrvPagos_AsyncProxy.Create(aMessage, aTransportChannel); +end; + +{ TsrvPagos_AsyncProxy } + +function TsrvPagos_AsyncProxy.__GetInterfaceName:string; +begin + result := 'srvPagos'; +end; + +procedure TsrvPagos_AsyncProxy.Invoke_GetNextAutoinc; +var __request:TStream; +begin + __AssertProxyNotBusy('GetNextAutoinc'); + __request := TMemoryStream.Create; + + __Message.Initialize(__TransportChannel, 'FactuGES', __InterfaceName, 'GetNextAutoinc'); + __Message.Finalize; + + __Message.WriteToStream(__request); + __DispatchAsyncRequest('GetNextAutoinc',__request); +end; + +function TsrvPagos_AsyncProxy.Retrieve_GetNextAutoinc: Integer; +var __response:TStream; +begin + __response := __RetrieveAsyncResponse('GetNextAutoinc'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Integer), Result, []); + + __response.Free(); +end; + + +{ CosrvCuentas } + +class function CosrvCuentas_Async.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvCuentas_Async; +begin + result := TsrvCuentas_AsyncProxy.Create(aMessage, aTransportChannel); +end; + +{ TsrvCuentas_AsyncProxy } + +function TsrvCuentas_AsyncProxy.__GetInterfaceName:string; +begin + result := 'srvCuentas'; +end; + +procedure TsrvCuentas_AsyncProxy.Invoke_GenerateReport; +var __request:TStream; +begin + __AssertProxyNotBusy('GenerateReport'); + __request := TMemoryStream.Create; + + __Message.Initialize(__TransportChannel, 'FactuGES', __InterfaceName, 'GenerateReport'); + __Message.Finalize; + + __Message.WriteToStream(__request); + __DispatchAsyncRequest('GenerateReport',__request); +end; + +function TsrvCuentas_AsyncProxy.Retrieve_GenerateReport: Binary; +var __response:TStream; +begin + result := nil; + __response := __RetrieveAsyncResponse('GenerateReport'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Binary), Result, []); + + __response.Free(); +end; + +procedure TsrvCuentas_AsyncProxy.Invoke_PuedoEliminarCuenta(const Codigo: Integer); +var __request:TStream; +begin + __AssertProxyNotBusy('PuedoEliminarCuenta'); + __request := TMemoryStream.Create; + + __Message.Initialize(__TransportChannel, 'FactuGES', __InterfaceName, 'PuedoEliminarCuenta'); + __Message.Write('Codigo', TypeInfo(Integer), Codigo, []); + __Message.Finalize; + + __Message.WriteToStream(__request); + __DispatchAsyncRequest('PuedoEliminarCuenta',__request); +end; + +function TsrvCuentas_AsyncProxy.Retrieve_PuedoEliminarCuenta: Boolean; +var __response:TStream; +begin + __response := __RetrieveAsyncResponse('PuedoEliminarCuenta'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Boolean), Result, []); + + __response.Free(); +end; + + +initialization +end. diff --git a/Servidor/FactuGES_Intf.pas b/Servidor/FactuGES_Intf.pas new file mode 100644 index 0000000..50f648f --- /dev/null +++ b/Servidor/FactuGES_Intf.pas @@ -0,0 +1,1959 @@ +unit FactuGES_Intf; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ Do not modify this unit manually, or your changes will be lost when this } +{ unit is regenerated the next time you compile the project. } +{----------------------------------------------------------------------------} + +interface + +uses + {vcl:} Classes, TypInfo, + {RemObjects:} uROClasses, uROClient, uROTypes, uROClientIntf, + {Used RODLs:} DataAbstract_Intf; + +const + { Library ID } + LibraryUID = '{AF0811AD-706A-47DE-A1DA-2891A7C80E01}'; + + { Service Interface ID's } + IsrvContactos_IID : TGUID = '{2502C3BD-1DD5-435B-832A-208767D5D55A}'; + IsrvLogin_IID : TGUID = '{6B132AE4-D45F-4AE8-8215-E95789358329}'; + IsrvPresupuestos_IID : TGUID = '{B89887A1-264C-4BF9-8D0F-C20B4709F180}'; + IsrvPedidosProveedor_IID : TGUID = '{CCF8B5C3-4A8B-4CB4-B0FB-D95D3887C054}'; + IsrvAlbaranesCliente_IID : TGUID = '{2DFDD00B-79D5-47C3-AD92-5FD6E88DCE61}'; + IsrvFacturasCliente_IID : TGUID = '{9FD3194D-D8DE-4224-A209-13FC3FC6CD06}'; + IsrvAlmacenes_IID : TGUID = '{EC5C0006-F1E0-4181-8E87-AC3C639AF9E3}'; + IsrvArticulos_IID : TGUID = '{E6A99249-A392-4731-BC9B-9AD3A2FBDB16}'; + IsrvMontajes_IID : TGUID = '{5A4F12DF-5370-439D-B976-A7BA389B0E30}'; + IsrvFacturasProveedor_IID : TGUID = '{8610382E-FC02-47D6-9B1D-08DCB903B275}'; + IsrvPagos_IID : TGUID = '{A260D4E7-F965-4457-AD15-135C802519CB}'; + IsrvCuentas_IID : TGUID = '{E61A3B4E-AACE-4A1E-B798-968C90D61BBC}'; + IsrvComisiones_IID : TGUID = '{461DBBE7-293D-497A-8CD1-840401883BCE}'; + IsrvAsientos_IID : TGUID = '{1F0F3DFC-B6DD-430D-9D2D-758FEDE7F23B}'; + IsrvIntervalos_IID : TGUID = '{DFEDABB2-C0A6-4229-A753-F4DB93B8278B}'; + IsrvConfiguracion_IID : TGUID = '{38039721-5BEC-42A9-A057-78C47740F844}'; + IsrvCitas_IID : TGUID = '{E31D5D39-5609-4E64-809C-B576D6CE9D1D}'; + + { Event ID's } + +type + { Forward declarations } + IsrvContactos = interface; + IsrvLogin = interface; + IsrvPresupuestos = interface; + IsrvPedidosProveedor = interface; + IsrvAlbaranesCliente = interface; + IsrvFacturasCliente = interface; + IsrvAlmacenes = interface; + IsrvArticulos = interface; + IsrvMontajes = interface; + IsrvFacturasProveedor = interface; + IsrvPagos = interface; + IsrvCuentas = interface; + IsrvComisiones = interface; + IsrvAsientos = interface; + IsrvIntervalos = interface; + IsrvConfiguracion = interface; + IsrvCitas = interface; + + + TLoginInfo = class; + TstImportes = class; + + + { TLoginInfo } + TLoginInfo = class(TDALoginInfo) + private + fRoles: TDAStringArray; + function GetRoles: TDAStringArray; + public + procedure Assign(iSource: TPersistent); override; + published + property Roles:TDAStringArray read GetRoles write fRoles; + end; + + { TLoginInfoCollection } + TLoginInfoCollection = class(TDALoginInfoCollection) + protected + constructor Create(aItemClass: TCollectionItemClass); overload; + function GetItems(Index: integer): TLoginInfo; + procedure SetItems(Index: integer; const Value: TLoginInfo); + public + constructor Create; overload; + function Add: TLoginInfo; reintroduce; + property Items[Index: integer]:TLoginInfo read GetItems write SetItems; default; + end; + + { TstImportes } + TstImportes = class(TROComplexType) + private + fBaseImponible: Currency; + fImporteIVA: Currency; + fImporteTotal: Currency; + public + procedure Assign(iSource: TPersistent); override; + published + property BaseImponible:Currency read fBaseImponible write fBaseImponible; + property ImporteIVA:Currency read fImporteIVA write fImporteIVA; + property ImporteTotal:Currency read fImporteTotal write fImporteTotal; + end; + + { TstImportesCollection } + TstImportesCollection = class(TROCollection) + protected + constructor Create(aItemClass: TCollectionItemClass); overload; + function GetItems(Index: integer): TstImportes; + procedure SetItems(Index: integer; const Value: TstImportes); + public + constructor Create; overload; + function Add: TstImportes; reintroduce; + property Items[Index: integer]:TstImportes read GetItems write SetItems; default; + end; + + { IsrvContactos } + IsrvContactos = interface(IDARemoteService) + ['{2502C3BD-1DD5-435B-832A-208767D5D55A}'] + function GenerateReport: Binary; + function GetNextAutoinc: Integer; + function PuedoEliminarContacto(const CodigoContacto: Integer): Boolean; + end; + + { CosrvContactos } + CosrvContactos = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvContactos; + end; + + { TsrvContactos_Proxy } + TsrvContactos_Proxy = class(TDARemoteService_Proxy, IsrvContactos) + protected + function __GetInterfaceName:string; override; + + function GenerateReport: Binary; + function GetNextAutoinc: Integer; + function PuedoEliminarContacto(const CodigoContacto: Integer): Boolean; + end; + + { IsrvLogin } + IsrvLogin = interface + ['{6B132AE4-D45F-4AE8-8215-E95789358329}'] + function Login(const UserID: String; const Password: String; out LoginInfo: TLoginInfo): Boolean; + procedure Logout; + function Ping: Boolean; + function SetUserPassword(const UserID: String; const NewPassword: String): Boolean; + function UpdateUsers(const UsersDelta: Binary): Binary; + end; + + { CosrvLogin } + CosrvLogin = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvLogin; + end; + + { TsrvLogin_Proxy } + TsrvLogin_Proxy = class(TROProxy, IsrvLogin) + protected + function __GetInterfaceName:string; override; + + function Login(const UserID: String; const Password: String; out LoginInfo: TLoginInfo): Boolean; + procedure Logout; + function Ping: Boolean; + function SetUserPassword(const UserID: String; const NewPassword: String): Boolean; + function UpdateUsers(const UsersDelta: Binary): Binary; + end; + + { IsrvPresupuestos } + IsrvPresupuestos = interface(IDARemoteService) + ['{B89887A1-264C-4BF9-8D0F-C20B4709F180}'] + function GetNextAutoinc: Integer; + function GenerateReport(const Codigo: Integer; const TamLetra: Integer): Binary; + function PuedoEliminarPresupuesto(const CodigoPresupuesto: Integer): Boolean; + end; + + { CosrvPresupuestos } + CosrvPresupuestos = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvPresupuestos; + end; + + { TsrvPresupuestos_Proxy } + TsrvPresupuestos_Proxy = class(TDARemoteService_Proxy, IsrvPresupuestos) + protected + function __GetInterfaceName:string; override; + + function GetNextAutoinc: Integer; + function GenerateReport(const Codigo: Integer; const TamLetra: Integer): Binary; + function PuedoEliminarPresupuesto(const CodigoPresupuesto: Integer): Boolean; + end; + + { IsrvPedidosProveedor } + IsrvPedidosProveedor = interface(IDARemoteService) + ['{CCF8B5C3-4A8B-4CB4-B0FB-D95D3887C054}'] + function GetNextAutoinc: Integer; + function DarNuevaReferencia: String; + function GenerateReport(const Codigo: Integer): Binary; + function PuedoEliminarPedido(const CodigoPedido: Integer): Boolean; + end; + + { CosrvPedidosProveedor } + CosrvPedidosProveedor = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvPedidosProveedor; + end; + + { TsrvPedidosProveedor_Proxy } + TsrvPedidosProveedor_Proxy = class(TDARemoteService_Proxy, IsrvPedidosProveedor) + protected + function __GetInterfaceName:string; override; + + function GetNextAutoinc: Integer; + function DarNuevaReferencia: String; + function GenerateReport(const Codigo: Integer): Binary; + function PuedoEliminarPedido(const CodigoPedido: Integer): Boolean; + end; + + { IsrvAlbaranesCliente } + IsrvAlbaranesCliente = interface(IDARemoteService) + ['{2DFDD00B-79D5-47C3-AD92-5FD6E88DCE61}'] + function ExisteAlbaranDePresupuesto(const CodigoPresupuesto: Integer; out CodigoAlbaran: Integer): Boolean; + function DarNuevaReferencia: String; + function GetNextAutoinc: Integer; + function GenerateReport(const Codigo: Integer): Binary; + function PuedoEliminarAlbaran(const CodigoAlbaran: Integer): Boolean; + function DarSumaImportes(const FechaIni: DateTime; const FechaFin: DateTime): TstImportes; + end; + + { CosrvAlbaranesCliente } + CosrvAlbaranesCliente = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvAlbaranesCliente; + end; + + { TsrvAlbaranesCliente_Proxy } + TsrvAlbaranesCliente_Proxy = class(TDARemoteService_Proxy, IsrvAlbaranesCliente) + protected + function __GetInterfaceName:string; override; + + function ExisteAlbaranDePresupuesto(const CodigoPresupuesto: Integer; out CodigoAlbaran: Integer): Boolean; + function DarNuevaReferencia: String; + function GetNextAutoinc: Integer; + function GenerateReport(const Codigo: Integer): Binary; + function PuedoEliminarAlbaran(const CodigoAlbaran: Integer): Boolean; + function DarSumaImportes(const FechaIni: DateTime; const FechaFin: DateTime): TstImportes; + end; + + { IsrvFacturasCliente } + IsrvFacturasCliente = interface(IDARemoteService) + ['{9FD3194D-D8DE-4224-A209-13FC3FC6CD06}'] + function GetNextAutoinc: Integer; + function PuedoEliminarFactura(const CodigoFactura: Integer): Boolean; + function ExisteFacturaDeAlbaran(const CodigoAlbaran: Integer; out CodigoFactura: Integer): Boolean; + function GenerateReport(const Codigo: Integer; const TamLetra: Integer): Binary; + function DarNuevaReferencia: String; + end; + + { CosrvFacturasCliente } + CosrvFacturasCliente = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvFacturasCliente; + end; + + { TsrvFacturasCliente_Proxy } + TsrvFacturasCliente_Proxy = class(TDARemoteService_Proxy, IsrvFacturasCliente) + protected + function __GetInterfaceName:string; override; + + function GetNextAutoinc: Integer; + function PuedoEliminarFactura(const CodigoFactura: Integer): Boolean; + function ExisteFacturaDeAlbaran(const CodigoAlbaran: Integer; out CodigoFactura: Integer): Boolean; + function GenerateReport(const Codigo: Integer; const TamLetra: Integer): Binary; + function DarNuevaReferencia: String; + end; + + { IsrvAlmacenes } + IsrvAlmacenes = interface(IDARemoteService) + ['{EC5C0006-F1E0-4181-8E87-AC3C639AF9E3}'] + function GenerateReport: Binary; + function PuedoEliminarAlmacen(const Codigo: Integer): Boolean; + end; + + { CosrvAlmacenes } + CosrvAlmacenes = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvAlmacenes; + end; + + { TsrvAlmacenes_Proxy } + TsrvAlmacenes_Proxy = class(TDARemoteService_Proxy, IsrvAlmacenes) + protected + function __GetInterfaceName:string; override; + + function GenerateReport: Binary; + function PuedoEliminarAlmacen(const Codigo: Integer): Boolean; + end; + + { IsrvArticulos } + IsrvArticulos = interface(IDARemoteService) + ['{E6A99249-A392-4731-BC9B-9AD3A2FBDB16}'] + function GetNextAutoinc: Integer; + end; + + { CosrvArticulos } + CosrvArticulos = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvArticulos; + end; + + { TsrvArticulos_Proxy } + TsrvArticulos_Proxy = class(TDARemoteService_Proxy, IsrvArticulos) + protected + function __GetInterfaceName:string; override; + + function GetNextAutoinc: Integer; + end; + + { IsrvMontajes } + IsrvMontajes = interface(IDARemoteService) + ['{5A4F12DF-5370-439D-B976-A7BA389B0E30}'] + function GetNextAutoinc(const Generador: String): Integer; + function PuedoEliminarMontaje(const Codigo: Integer): Boolean; + function GenerateReportFicha(const Codigo: Integer): Binary; + function GenerateReportEtiquetas(const Codigo: Integer; const NumEtiquetas: Integer): Binary; + function DarNuevaReferencia(const TipoMontaje: String): String; + end; + + { CosrvMontajes } + CosrvMontajes = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvMontajes; + end; + + { TsrvMontajes_Proxy } + TsrvMontajes_Proxy = class(TDARemoteService_Proxy, IsrvMontajes) + protected + function __GetInterfaceName:string; override; + + function GetNextAutoinc(const Generador: String): Integer; + function PuedoEliminarMontaje(const Codigo: Integer): Boolean; + function GenerateReportFicha(const Codigo: Integer): Binary; + function GenerateReportEtiquetas(const Codigo: Integer; const NumEtiquetas: Integer): Binary; + function DarNuevaReferencia(const TipoMontaje: String): String; + end; + + { IsrvFacturasProveedor } + IsrvFacturasProveedor = interface(IDARemoteService) + ['{8610382E-FC02-47D6-9B1D-08DCB903B275}'] + function GetNextAutoinc: Integer; + function PuedoEliminarFactura(const CodigoFactura: Integer): Boolean; + end; + + { CosrvFacturasProveedor } + CosrvFacturasProveedor = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvFacturasProveedor; + end; + + { TsrvFacturasProveedor_Proxy } + TsrvFacturasProveedor_Proxy = class(TDARemoteService_Proxy, IsrvFacturasProveedor) + protected + function __GetInterfaceName:string; override; + + function GetNextAutoinc: Integer; + function PuedoEliminarFactura(const CodigoFactura: Integer): Boolean; + end; + + { IsrvPagos } + IsrvPagos = interface(IDARemoteService) + ['{A260D4E7-F965-4457-AD15-135C802519CB}'] + function GetNextAutoinc: Integer; + function GenerateReport(const Codigo: Integer): Binary; + end; + + { CosrvPagos } + CosrvPagos = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvPagos; + end; + + { TsrvPagos_Proxy } + TsrvPagos_Proxy = class(TDARemoteService_Proxy, IsrvPagos) + protected + function __GetInterfaceName:string; override; + + function GetNextAutoinc: Integer; + function GenerateReport(const Codigo: Integer): Binary; + end; + + { IsrvCuentas } + IsrvCuentas = interface(IDARemoteService) + ['{E61A3B4E-AACE-4A1E-B798-968C90D61BBC}'] + function GenerateReport: Binary; + function PuedoEliminarCuenta(const Codigo: Integer): Boolean; + end; + + { CosrvCuentas } + CosrvCuentas = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvCuentas; + end; + + { TsrvCuentas_Proxy } + TsrvCuentas_Proxy = class(TDARemoteService_Proxy, IsrvCuentas) + protected + function __GetInterfaceName:string; override; + + function GenerateReport: Binary; + function PuedoEliminarCuenta(const Codigo: Integer): Boolean; + end; + + { IsrvComisiones } + IsrvComisiones = interface(IDARemoteService) + ['{461DBBE7-293D-497A-8CD1-840401883BCE}'] + function GetComision(const CodigoContacto: Integer): Double; + procedure SetComision(const CodigoContacto: Integer; const Value: Double); + end; + + { CosrvComisiones } + CosrvComisiones = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvComisiones; + end; + + { TsrvComisiones_Proxy } + TsrvComisiones_Proxy = class(TDARemoteService_Proxy, IsrvComisiones) + protected + function __GetInterfaceName:string; override; + + function GetComision(const CodigoContacto: Integer): Double; + procedure SetComision(const CodigoContacto: Integer; const Value: Double); + end; + + { IsrvAsientos } + IsrvAsientos = interface(IDARemoteService) + ['{1F0F3DFC-B6DD-430D-9D2D-758FEDE7F23B}'] + function AsignarPunteo(const CodigoCuenta: Integer; const FechaIni: DateTime; const FechaFin: DateTime; const ValorPunteado: Integer): Boolean; + function darPenultimoCierre(const CodigoCuenta: Integer): DateTime; + function darSumaAcumulada(const CodigoCuenta: Integer; const FechaIni: DateTime; const FechaFin: DateTime): Currency; + end; + + { CosrvAsientos } + CosrvAsientos = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvAsientos; + end; + + { TsrvAsientos_Proxy } + TsrvAsientos_Proxy = class(TDARemoteService_Proxy, IsrvAsientos) + protected + function __GetInterfaceName:string; override; + + function AsignarPunteo(const CodigoCuenta: Integer; const FechaIni: DateTime; const FechaFin: DateTime; const ValorPunteado: Integer): Boolean; + function darPenultimoCierre(const CodigoCuenta: Integer): DateTime; + function darSumaAcumulada(const CodigoCuenta: Integer; const FechaIni: DateTime; const FechaFin: DateTime): Currency; + end; + + { IsrvIntervalos } + IsrvIntervalos = interface(IDARemoteService) + ['{DFEDABB2-C0A6-4229-A753-F4DB93B8278B}'] + end; + + { CosrvIntervalos } + CosrvIntervalos = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvIntervalos; + end; + + { TsrvIntervalos_Proxy } + TsrvIntervalos_Proxy = class(TDARemoteService_Proxy, IsrvIntervalos) + protected + function __GetInterfaceName:string; override; + + end; + + { IsrvConfiguracion } + IsrvConfiguracion = interface + ['{38039721-5BEC-42A9-A057-78C47740F844}'] + function darRutaDocumentos: String; + end; + + { CosrvConfiguracion } + CosrvConfiguracion = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvConfiguracion; + end; + + { TsrvConfiguracion_Proxy } + TsrvConfiguracion_Proxy = class(TROProxy, IsrvConfiguracion) + protected + function __GetInterfaceName:string; override; + + function darRutaDocumentos: String; + end; + + { IsrvCitas } + IsrvCitas = interface(IDARemoteService) + ['{E31D5D39-5609-4E64-809C-B576D6CE9D1D}'] + function getCodigo(const Generador: String): Integer; + end; + + { CosrvCitas } + CosrvCitas = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvCitas; + end; + + { TsrvCitas_Proxy } + TsrvCitas_Proxy = class(TDARemoteService_Proxy, IsrvCitas) + protected + function __GetInterfaceName:string; override; + + function getCodigo(const Generador: String): Integer; + end; + +implementation + +uses + {vcl:} SysUtils, + {RemObjects:} uROEventRepository, uRORes; + +{ TLoginInfo } + +procedure TLoginInfo.Assign(iSource: TPersistent); +var lSource:TLoginInfo; +begin + inherited Assign(iSource); + if (iSource is TLoginInfo) then begin + lSource := TLoginInfo(iSource); + Roles.Assign(lSource.Roles); + end; +end; + +function TLoginInfo.GetRoles: TDAStringArray; +begin + if (fRoles = nil) then fRoles := TDAStringArray.Create(); + result := fRoles; +end; + +{ TLoginInfoCollection } +constructor TLoginInfoCollection.Create; +begin + inherited Create(TLoginInfo); +end; + +constructor TLoginInfoCollection.Create(aItemClass: TCollectionItemClass); +begin + inherited Create(aItemClass); +end; + +function TLoginInfoCollection.Add: TLoginInfo; +begin + result := TLoginInfo(inherited Add); +end; + +function TLoginInfoCollection.GetItems(Index: integer): TLoginInfo; +begin + result := TLoginInfo(inherited Items[Index]); +end; + +procedure TLoginInfoCollection.SetItems(Index: integer; const Value: TLoginInfo); +begin + TLoginInfo(inherited Items[Index]).Assign(Value); +end; + +{ TstImportes } + +procedure TstImportes.Assign(iSource: TPersistent); +var lSource:TstImportes; +begin + inherited Assign(iSource); + if (iSource is TstImportes) then begin + lSource := TstImportes(iSource); + BaseImponible := lSource.BaseImponible; + ImporteIVA := lSource.ImporteIVA; + ImporteTotal := lSource.ImporteTotal; + end; +end; + +{ TstImportesCollection } +constructor TstImportesCollection.Create; +begin + inherited Create(TstImportes); +end; + +constructor TstImportesCollection.Create(aItemClass: TCollectionItemClass); +begin + inherited Create(aItemClass); +end; + +function TstImportesCollection.Add: TstImportes; +begin + result := TstImportes(inherited Add); +end; + +function TstImportesCollection.GetItems(Index: integer): TstImportes; +begin + result := TstImportes(inherited Items[Index]); +end; + +procedure TstImportesCollection.SetItems(Index: integer; const Value: TstImportes); +begin + TstImportes(inherited Items[Index]).Assign(Value); +end; + +{ CosrvContactos } + +class function CosrvContactos.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvContactos; +begin + result := TsrvContactos_Proxy.Create(aMessage, aTransportChannel); +end; + +{ TsrvContactos_Proxy } + +function TsrvContactos_Proxy.__GetInterfaceName:string; +begin + result := 'srvContactos'; +end; + +function TsrvContactos_Proxy.GenerateReport: Binary; +var + __request, __response : TMemoryStream; +begin + result := nil; + __request := TMemoryStream.Create; + __response := TMemoryStream.Create; + + try + __Message.Initialize(__TransportChannel, 'FactuGES', __InterfaceName, 'GenerateReport'); + __Message.Finalize; + + __Message.WriteToStream(__request); + __TransportChannel.Dispatch(__request, __response); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Binary), result, []); + finally + __request.Free; + __response.Free; + end +end; + +function TsrvContactos_Proxy.GetNextAutoinc: Integer; +var + __request, __response : TMemoryStream; +begin + __request := TMemoryStream.Create; + __response := TMemoryStream.Create; + + try + __Message.Initialize(__TransportChannel, 'FactuGES', __InterfaceName, 'GetNextAutoinc'); + __Message.Finalize; + + __Message.WriteToStream(__request); + __TransportChannel.Dispatch(__request, __response); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Integer), result, []); + finally + __request.Free; + __response.Free; + end +end; + +function TsrvContactos_Proxy.PuedoEliminarContacto(const CodigoContacto: Integer): Boolean; +var + __request, __response : TMemoryStream; +begin + __request := TMemoryStream.Create; + __response := TMemoryStream.Create; + + try + __Message.Initialize(__TransportChannel, 'FactuGES', __InterfaceName, 'PuedoEliminarContacto'); + __Message.Write('CodigoContacto', TypeInfo(Integer), CodigoContacto, []); + __Message.Finalize; + + __Message.WriteToStream(__request); + __TransportChannel.Dispatch(__request, __response); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Boolean), result, []); + finally + __request.Free; + __response.Free; + end +end; + +{ CosrvLogin } + +class function CosrvLogin.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvLogin; +begin + result := TsrvLogin_Proxy.Create(aMessage, aTransportChannel); +end; + +{ TsrvLogin_Proxy } + +function TsrvLogin_Proxy.__GetInterfaceName:string; +begin + result := 'srvLogin'; +end; + +function TsrvLogin_Proxy.Login(const UserID: String; const Password: String; out LoginInfo: TLoginInfo): Boolean; +var + __request, __response : TMemoryStream; +begin + LoginInfo := nil; + __request := TMemoryStream.Create; + __response := TMemoryStream.Create; + + try + __Message.Initialize(__TransportChannel, 'FactuGES', __InterfaceName, 'Login'); + __Message.Write('UserID', TypeInfo(String), UserID, []); + __Message.Write('Password', TypeInfo(String), Password, []); + __Message.Finalize; + + __Message.WriteToStream(__request); + __TransportChannel.Dispatch(__request, __response); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Boolean), result, []); + __Message.Read('LoginInfo', TypeInfo(FactuGES_Intf.TLoginInfo), LoginInfo, []); + finally + __request.Free; + __response.Free; + end +end; + +procedure TsrvLogin_Proxy.Logout; +var + __request, __response : TMemoryStream; +begin + __request := TMemoryStream.Create; + __response := TMemoryStream.Create; + + try + __Message.Initialize(__TransportChannel, 'FactuGES', __InterfaceName, 'Logout'); + __Message.Finalize; + + __Message.WriteToStream(__request); + __TransportChannel.Dispatch(__request, __response); + __Message.ReadFromStream(__response); + + finally + __request.Free; + __response.Free; + end +end; + +function TsrvLogin_Proxy.Ping: Boolean; +var + __request, __response : TMemoryStream; +begin + __request := TMemoryStream.Create; + __response := TMemoryStream.Create; + + try + __Message.Initialize(__TransportChannel, 'FactuGES', __InterfaceName, 'Ping'); + __Message.Finalize; + + __Message.WriteToStream(__request); + __TransportChannel.Dispatch(__request, __response); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Boolean), result, []); + finally + __request.Free; + __response.Free; + end +end; + +function TsrvLogin_Proxy.SetUserPassword(const UserID: String; const NewPassword: String): Boolean; +var + __request, __response : TMemoryStream; +begin + __request := TMemoryStream.Create; + __response := TMemoryStream.Create; + + try + __Message.Initialize(__TransportChannel, 'FactuGES', __InterfaceName, 'SetUserPassword'); + __Message.Write('UserID', TypeInfo(String), UserID, []); + __Message.Write('NewPassword', TypeInfo(String), NewPassword, []); + __Message.Finalize; + + __Message.WriteToStream(__request); + __TransportChannel.Dispatch(__request, __response); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Boolean), result, []); + finally + __request.Free; + __response.Free; + end +end; + +function TsrvLogin_Proxy.UpdateUsers(const UsersDelta: Binary): Binary; +var + __request, __response : TMemoryStream; +begin + result := nil; + __request := TMemoryStream.Create; + __response := TMemoryStream.Create; + + try + __Message.Initialize(__TransportChannel, 'FactuGES', __InterfaceName, 'UpdateUsers'); + __Message.Write('UsersDelta', TypeInfo(Binary), UsersDelta, []); + __Message.Finalize; + + __Message.WriteToStream(__request); + __TransportChannel.Dispatch(__request, __response); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Binary), result, []); + finally + __request.Free; + __response.Free; + end +end; + +{ CosrvPresupuestos } + +class function CosrvPresupuestos.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvPresupuestos; +begin + result := TsrvPresupuestos_Proxy.Create(aMessage, aTransportChannel); +end; + +{ TsrvPresupuestos_Proxy } + +function TsrvPresupuestos_Proxy.__GetInterfaceName:string; +begin + result := 'srvPresupuestos'; +end; + +function TsrvPresupuestos_Proxy.GetNextAutoinc: Integer; +var + __request, __response : TMemoryStream; +begin + __request := TMemoryStream.Create; + __response := TMemoryStream.Create; + + try + __Message.Initialize(__TransportChannel, 'FactuGES', __InterfaceName, 'GetNextAutoinc'); + __Message.Finalize; + + __Message.WriteToStream(__request); + __TransportChannel.Dispatch(__request, __response); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Integer), result, []); + finally + __request.Free; + __response.Free; + end +end; + +function TsrvPresupuestos_Proxy.GenerateReport(const Codigo: Integer; const TamLetra: Integer): Binary; +var + __request, __response : TMemoryStream; +begin + result := nil; + __request := TMemoryStream.Create; + __response := TMemoryStream.Create; + + try + __Message.Initialize(__TransportChannel, 'FactuGES', __InterfaceName, 'GenerateReport'); + __Message.Write('Codigo', TypeInfo(Integer), Codigo, []); + __Message.Write('TamLetra', TypeInfo(Integer), TamLetra, []); + __Message.Finalize; + + __Message.WriteToStream(__request); + __TransportChannel.Dispatch(__request, __response); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Binary), result, []); + finally + __request.Free; + __response.Free; + end +end; + +function TsrvPresupuestos_Proxy.PuedoEliminarPresupuesto(const CodigoPresupuesto: Integer): Boolean; +var + __request, __response : TMemoryStream; +begin + __request := TMemoryStream.Create; + __response := TMemoryStream.Create; + + try + __Message.Initialize(__TransportChannel, 'FactuGES', __InterfaceName, 'PuedoEliminarPresupuesto'); + __Message.Write('CodigoPresupuesto', TypeInfo(Integer), CodigoPresupuesto, []); + __Message.Finalize; + + __Message.WriteToStream(__request); + __TransportChannel.Dispatch(__request, __response); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Boolean), result, []); + finally + __request.Free; + __response.Free; + end +end; + +{ CosrvPedidosProveedor } + +class function CosrvPedidosProveedor.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvPedidosProveedor; +begin + result := TsrvPedidosProveedor_Proxy.Create(aMessage, aTransportChannel); +end; + +{ TsrvPedidosProveedor_Proxy } + +function TsrvPedidosProveedor_Proxy.__GetInterfaceName:string; +begin + result := 'srvPedidosProveedor'; +end; + +function TsrvPedidosProveedor_Proxy.GetNextAutoinc: Integer; +var + __request, __response : TMemoryStream; +begin + __request := TMemoryStream.Create; + __response := TMemoryStream.Create; + + try + __Message.Initialize(__TransportChannel, 'FactuGES', __InterfaceName, 'GetNextAutoinc'); + __Message.Finalize; + + __Message.WriteToStream(__request); + __TransportChannel.Dispatch(__request, __response); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Integer), result, []); + finally + __request.Free; + __response.Free; + end +end; + +function TsrvPedidosProveedor_Proxy.DarNuevaReferencia: String; +var + __request, __response : TMemoryStream; +begin + __request := TMemoryStream.Create; + __response := TMemoryStream.Create; + + try + __Message.Initialize(__TransportChannel, 'FactuGES', __InterfaceName, 'DarNuevaReferencia'); + __Message.Finalize; + + __Message.WriteToStream(__request); + __TransportChannel.Dispatch(__request, __response); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(String), result, []); + finally + __request.Free; + __response.Free; + end +end; + +function TsrvPedidosProveedor_Proxy.GenerateReport(const Codigo: Integer): Binary; +var + __request, __response : TMemoryStream; +begin + result := nil; + __request := TMemoryStream.Create; + __response := TMemoryStream.Create; + + try + __Message.Initialize(__TransportChannel, 'FactuGES', __InterfaceName, 'GenerateReport'); + __Message.Write('Codigo', TypeInfo(Integer), Codigo, []); + __Message.Finalize; + + __Message.WriteToStream(__request); + __TransportChannel.Dispatch(__request, __response); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Binary), result, []); + finally + __request.Free; + __response.Free; + end +end; + +function TsrvPedidosProveedor_Proxy.PuedoEliminarPedido(const CodigoPedido: Integer): Boolean; +var + __request, __response : TMemoryStream; +begin + __request := TMemoryStream.Create; + __response := TMemoryStream.Create; + + try + __Message.Initialize(__TransportChannel, 'FactuGES', __InterfaceName, 'PuedoEliminarPedido'); + __Message.Write('CodigoPedido', TypeInfo(Integer), CodigoPedido, []); + __Message.Finalize; + + __Message.WriteToStream(__request); + __TransportChannel.Dispatch(__request, __response); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Boolean), result, []); + finally + __request.Free; + __response.Free; + end +end; + +{ CosrvAlbaranesCliente } + +class function CosrvAlbaranesCliente.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvAlbaranesCliente; +begin + result := TsrvAlbaranesCliente_Proxy.Create(aMessage, aTransportChannel); +end; + +{ TsrvAlbaranesCliente_Proxy } + +function TsrvAlbaranesCliente_Proxy.__GetInterfaceName:string; +begin + result := 'srvAlbaranesCliente'; +end; + +function TsrvAlbaranesCliente_Proxy.ExisteAlbaranDePresupuesto(const CodigoPresupuesto: Integer; out CodigoAlbaran: Integer): Boolean; +var + __request, __response : TMemoryStream; +begin + __request := TMemoryStream.Create; + __response := TMemoryStream.Create; + + try + __Message.Initialize(__TransportChannel, 'FactuGES', __InterfaceName, 'ExisteAlbaranDePresupuesto'); + __Message.Write('CodigoPresupuesto', TypeInfo(Integer), CodigoPresupuesto, []); + __Message.Finalize; + + __Message.WriteToStream(__request); + __TransportChannel.Dispatch(__request, __response); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Boolean), result, []); + __Message.Read('CodigoAlbaran', TypeInfo(Integer), CodigoAlbaran, []); + finally + __request.Free; + __response.Free; + end +end; + +function TsrvAlbaranesCliente_Proxy.DarNuevaReferencia: String; +var + __request, __response : TMemoryStream; +begin + __request := TMemoryStream.Create; + __response := TMemoryStream.Create; + + try + __Message.Initialize(__TransportChannel, 'FactuGES', __InterfaceName, 'DarNuevaReferencia'); + __Message.Finalize; + + __Message.WriteToStream(__request); + __TransportChannel.Dispatch(__request, __response); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(String), result, []); + finally + __request.Free; + __response.Free; + end +end; + +function TsrvAlbaranesCliente_Proxy.GetNextAutoinc: Integer; +var + __request, __response : TMemoryStream; +begin + __request := TMemoryStream.Create; + __response := TMemoryStream.Create; + + try + __Message.Initialize(__TransportChannel, 'FactuGES', __InterfaceName, 'GetNextAutoinc'); + __Message.Finalize; + + __Message.WriteToStream(__request); + __TransportChannel.Dispatch(__request, __response); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Integer), result, []); + finally + __request.Free; + __response.Free; + end +end; + +function TsrvAlbaranesCliente_Proxy.GenerateReport(const Codigo: Integer): Binary; +var + __request, __response : TMemoryStream; +begin + result := nil; + __request := TMemoryStream.Create; + __response := TMemoryStream.Create; + + try + __Message.Initialize(__TransportChannel, 'FactuGES', __InterfaceName, 'GenerateReport'); + __Message.Write('Codigo', TypeInfo(Integer), Codigo, []); + __Message.Finalize; + + __Message.WriteToStream(__request); + __TransportChannel.Dispatch(__request, __response); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Binary), result, []); + finally + __request.Free; + __response.Free; + end +end; + +function TsrvAlbaranesCliente_Proxy.PuedoEliminarAlbaran(const CodigoAlbaran: Integer): Boolean; +var + __request, __response : TMemoryStream; +begin + __request := TMemoryStream.Create; + __response := TMemoryStream.Create; + + try + __Message.Initialize(__TransportChannel, 'FactuGES', __InterfaceName, 'PuedoEliminarAlbaran'); + __Message.Write('CodigoAlbaran', TypeInfo(Integer), CodigoAlbaran, []); + __Message.Finalize; + + __Message.WriteToStream(__request); + __TransportChannel.Dispatch(__request, __response); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Boolean), result, []); + finally + __request.Free; + __response.Free; + end +end; + +function TsrvAlbaranesCliente_Proxy.DarSumaImportes(const FechaIni: DateTime; const FechaFin: DateTime): TstImportes; +var + __request, __response : TMemoryStream; +begin + result := nil; + __request := TMemoryStream.Create; + __response := TMemoryStream.Create; + + try + __Message.Initialize(__TransportChannel, 'FactuGES', __InterfaceName, 'DarSumaImportes'); + __Message.Write('FechaIni', TypeInfo(DateTime), FechaIni, [paIsDateTime]); + __Message.Write('FechaFin', TypeInfo(DateTime), FechaFin, [paIsDateTime]); + __Message.Finalize; + + __Message.WriteToStream(__request); + __TransportChannel.Dispatch(__request, __response); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(FactuGES_Intf.TstImportes), result, []); + finally + __request.Free; + __response.Free; + end +end; + +{ CosrvFacturasCliente } + +class function CosrvFacturasCliente.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvFacturasCliente; +begin + result := TsrvFacturasCliente_Proxy.Create(aMessage, aTransportChannel); +end; + +{ TsrvFacturasCliente_Proxy } + +function TsrvFacturasCliente_Proxy.__GetInterfaceName:string; +begin + result := 'srvFacturasCliente'; +end; + +function TsrvFacturasCliente_Proxy.GetNextAutoinc: Integer; +var + __request, __response : TMemoryStream; +begin + __request := TMemoryStream.Create; + __response := TMemoryStream.Create; + + try + __Message.Initialize(__TransportChannel, 'FactuGES', __InterfaceName, 'GetNextAutoinc'); + __Message.Finalize; + + __Message.WriteToStream(__request); + __TransportChannel.Dispatch(__request, __response); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Integer), result, []); + finally + __request.Free; + __response.Free; + end +end; + +function TsrvFacturasCliente_Proxy.PuedoEliminarFactura(const CodigoFactura: Integer): Boolean; +var + __request, __response : TMemoryStream; +begin + __request := TMemoryStream.Create; + __response := TMemoryStream.Create; + + try + __Message.Initialize(__TransportChannel, 'FactuGES', __InterfaceName, 'PuedoEliminarFactura'); + __Message.Write('CodigoFactura', TypeInfo(Integer), CodigoFactura, []); + __Message.Finalize; + + __Message.WriteToStream(__request); + __TransportChannel.Dispatch(__request, __response); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Boolean), result, []); + finally + __request.Free; + __response.Free; + end +end; + +function TsrvFacturasCliente_Proxy.ExisteFacturaDeAlbaran(const CodigoAlbaran: Integer; out CodigoFactura: Integer): Boolean; +var + __request, __response : TMemoryStream; +begin + __request := TMemoryStream.Create; + __response := TMemoryStream.Create; + + try + __Message.Initialize(__TransportChannel, 'FactuGES', __InterfaceName, 'ExisteFacturaDeAlbaran'); + __Message.Write('CodigoAlbaran', TypeInfo(Integer), CodigoAlbaran, []); + __Message.Finalize; + + __Message.WriteToStream(__request); + __TransportChannel.Dispatch(__request, __response); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Boolean), result, []); + __Message.Read('CodigoFactura', TypeInfo(Integer), CodigoFactura, []); + finally + __request.Free; + __response.Free; + end +end; + +function TsrvFacturasCliente_Proxy.GenerateReport(const Codigo: Integer; const TamLetra: Integer): Binary; +var + __request, __response : TMemoryStream; +begin + result := nil; + __request := TMemoryStream.Create; + __response := TMemoryStream.Create; + + try + __Message.Initialize(__TransportChannel, 'FactuGES', __InterfaceName, 'GenerateReport'); + __Message.Write('Codigo', TypeInfo(Integer), Codigo, []); + __Message.Write('TamLetra', TypeInfo(Integer), TamLetra, []); + __Message.Finalize; + + __Message.WriteToStream(__request); + __TransportChannel.Dispatch(__request, __response); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Binary), result, []); + finally + __request.Free; + __response.Free; + end +end; + +function TsrvFacturasCliente_Proxy.DarNuevaReferencia: String; +var + __request, __response : TMemoryStream; +begin + __request := TMemoryStream.Create; + __response := TMemoryStream.Create; + + try + __Message.Initialize(__TransportChannel, 'FactuGES', __InterfaceName, 'DarNuevaReferencia'); + __Message.Finalize; + + __Message.WriteToStream(__request); + __TransportChannel.Dispatch(__request, __response); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(String), result, []); + finally + __request.Free; + __response.Free; + end +end; + +{ CosrvAlmacenes } + +class function CosrvAlmacenes.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvAlmacenes; +begin + result := TsrvAlmacenes_Proxy.Create(aMessage, aTransportChannel); +end; + +{ TsrvAlmacenes_Proxy } + +function TsrvAlmacenes_Proxy.__GetInterfaceName:string; +begin + result := 'srvAlmacenes'; +end; + +function TsrvAlmacenes_Proxy.GenerateReport: Binary; +var + __request, __response : TMemoryStream; +begin + result := nil; + __request := TMemoryStream.Create; + __response := TMemoryStream.Create; + + try + __Message.Initialize(__TransportChannel, 'FactuGES', __InterfaceName, 'GenerateReport'); + __Message.Finalize; + + __Message.WriteToStream(__request); + __TransportChannel.Dispatch(__request, __response); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Binary), result, []); + finally + __request.Free; + __response.Free; + end +end; + +function TsrvAlmacenes_Proxy.PuedoEliminarAlmacen(const Codigo: Integer): Boolean; +var + __request, __response : TMemoryStream; +begin + __request := TMemoryStream.Create; + __response := TMemoryStream.Create; + + try + __Message.Initialize(__TransportChannel, 'FactuGES', __InterfaceName, 'PuedoEliminarAlmacen'); + __Message.Write('Codigo', TypeInfo(Integer), Codigo, []); + __Message.Finalize; + + __Message.WriteToStream(__request); + __TransportChannel.Dispatch(__request, __response); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Boolean), result, []); + finally + __request.Free; + __response.Free; + end +end; + +{ CosrvArticulos } + +class function CosrvArticulos.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvArticulos; +begin + result := TsrvArticulos_Proxy.Create(aMessage, aTransportChannel); +end; + +{ TsrvArticulos_Proxy } + +function TsrvArticulos_Proxy.__GetInterfaceName:string; +begin + result := 'srvArticulos'; +end; + +function TsrvArticulos_Proxy.GetNextAutoinc: Integer; +var + __request, __response : TMemoryStream; +begin + __request := TMemoryStream.Create; + __response := TMemoryStream.Create; + + try + __Message.Initialize(__TransportChannel, 'FactuGES', __InterfaceName, 'GetNextAutoinc'); + __Message.Finalize; + + __Message.WriteToStream(__request); + __TransportChannel.Dispatch(__request, __response); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Integer), result, []); + finally + __request.Free; + __response.Free; + end +end; + +{ CosrvMontajes } + +class function CosrvMontajes.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvMontajes; +begin + result := TsrvMontajes_Proxy.Create(aMessage, aTransportChannel); +end; + +{ TsrvMontajes_Proxy } + +function TsrvMontajes_Proxy.__GetInterfaceName:string; +begin + result := 'srvMontajes'; +end; + +function TsrvMontajes_Proxy.GetNextAutoinc(const Generador: String): Integer; +var + __request, __response : TMemoryStream; +begin + __request := TMemoryStream.Create; + __response := TMemoryStream.Create; + + try + __Message.Initialize(__TransportChannel, 'FactuGES', __InterfaceName, 'GetNextAutoinc'); + __Message.Write('Generador', TypeInfo(String), Generador, []); + __Message.Finalize; + + __Message.WriteToStream(__request); + __TransportChannel.Dispatch(__request, __response); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Integer), result, []); + finally + __request.Free; + __response.Free; + end +end; + +function TsrvMontajes_Proxy.PuedoEliminarMontaje(const Codigo: Integer): Boolean; +var + __request, __response : TMemoryStream; +begin + __request := TMemoryStream.Create; + __response := TMemoryStream.Create; + + try + __Message.Initialize(__TransportChannel, 'FactuGES', __InterfaceName, 'PuedoEliminarMontaje'); + __Message.Write('Codigo', TypeInfo(Integer), Codigo, []); + __Message.Finalize; + + __Message.WriteToStream(__request); + __TransportChannel.Dispatch(__request, __response); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Boolean), result, []); + finally + __request.Free; + __response.Free; + end +end; + +function TsrvMontajes_Proxy.GenerateReportFicha(const Codigo: Integer): Binary; +var + __request, __response : TMemoryStream; +begin + result := nil; + __request := TMemoryStream.Create; + __response := TMemoryStream.Create; + + try + __Message.Initialize(__TransportChannel, 'FactuGES', __InterfaceName, 'GenerateReportFicha'); + __Message.Write('Codigo', TypeInfo(Integer), Codigo, []); + __Message.Finalize; + + __Message.WriteToStream(__request); + __TransportChannel.Dispatch(__request, __response); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Binary), result, []); + finally + __request.Free; + __response.Free; + end +end; + +function TsrvMontajes_Proxy.GenerateReportEtiquetas(const Codigo: Integer; const NumEtiquetas: Integer): Binary; +var + __request, __response : TMemoryStream; +begin + result := nil; + __request := TMemoryStream.Create; + __response := TMemoryStream.Create; + + try + __Message.Initialize(__TransportChannel, 'FactuGES', __InterfaceName, 'GenerateReportEtiquetas'); + __Message.Write('Codigo', TypeInfo(Integer), Codigo, []); + __Message.Write('NumEtiquetas', TypeInfo(Integer), NumEtiquetas, []); + __Message.Finalize; + + __Message.WriteToStream(__request); + __TransportChannel.Dispatch(__request, __response); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Binary), result, []); + finally + __request.Free; + __response.Free; + end +end; + +function TsrvMontajes_Proxy.DarNuevaReferencia(const TipoMontaje: String): String; +var + __request, __response : TMemoryStream; +begin + __request := TMemoryStream.Create; + __response := TMemoryStream.Create; + + try + __Message.Initialize(__TransportChannel, 'FactuGES', __InterfaceName, 'DarNuevaReferencia'); + __Message.Write('TipoMontaje', TypeInfo(String), TipoMontaje, []); + __Message.Finalize; + + __Message.WriteToStream(__request); + __TransportChannel.Dispatch(__request, __response); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(String), result, []); + finally + __request.Free; + __response.Free; + end +end; + +{ CosrvFacturasProveedor } + +class function CosrvFacturasProveedor.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvFacturasProveedor; +begin + result := TsrvFacturasProveedor_Proxy.Create(aMessage, aTransportChannel); +end; + +{ TsrvFacturasProveedor_Proxy } + +function TsrvFacturasProveedor_Proxy.__GetInterfaceName:string; +begin + result := 'srvFacturasProveedor'; +end; + +function TsrvFacturasProveedor_Proxy.GetNextAutoinc: Integer; +var + __request, __response : TMemoryStream; +begin + __request := TMemoryStream.Create; + __response := TMemoryStream.Create; + + try + __Message.Initialize(__TransportChannel, 'FactuGES', __InterfaceName, 'GetNextAutoinc'); + __Message.Finalize; + + __Message.WriteToStream(__request); + __TransportChannel.Dispatch(__request, __response); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Integer), result, []); + finally + __request.Free; + __response.Free; + end +end; + +function TsrvFacturasProveedor_Proxy.PuedoEliminarFactura(const CodigoFactura: Integer): Boolean; +var + __request, __response : TMemoryStream; +begin + __request := TMemoryStream.Create; + __response := TMemoryStream.Create; + + try + __Message.Initialize(__TransportChannel, 'FactuGES', __InterfaceName, 'PuedoEliminarFactura'); + __Message.Write('CodigoFactura', TypeInfo(Integer), CodigoFactura, []); + __Message.Finalize; + + __Message.WriteToStream(__request); + __TransportChannel.Dispatch(__request, __response); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Boolean), result, []); + finally + __request.Free; + __response.Free; + end +end; + +{ CosrvPagos } + +class function CosrvPagos.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvPagos; +begin + result := TsrvPagos_Proxy.Create(aMessage, aTransportChannel); +end; + +{ TsrvPagos_Proxy } + +function TsrvPagos_Proxy.__GetInterfaceName:string; +begin + result := 'srvPagos'; +end; + +function TsrvPagos_Proxy.GetNextAutoinc: Integer; +var + __request, __response : TMemoryStream; +begin + __request := TMemoryStream.Create; + __response := TMemoryStream.Create; + + try + __Message.Initialize(__TransportChannel, 'FactuGES', __InterfaceName, 'GetNextAutoinc'); + __Message.Finalize; + + __Message.WriteToStream(__request); + __TransportChannel.Dispatch(__request, __response); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Integer), result, []); + finally + __request.Free; + __response.Free; + end +end; + +function TsrvPagos_Proxy.GenerateReport(const Codigo: Integer): Binary; +var + __request, __response : TMemoryStream; +begin + result := nil; + __request := TMemoryStream.Create; + __response := TMemoryStream.Create; + + try + __Message.Initialize(__TransportChannel, 'FactuGES', __InterfaceName, 'GenerateReport'); + __Message.Write('Codigo', TypeInfo(Integer), Codigo, []); + __Message.Finalize; + + __Message.WriteToStream(__request); + __TransportChannel.Dispatch(__request, __response); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Binary), result, []); + finally + __request.Free; + __response.Free; + end +end; + +{ CosrvCuentas } + +class function CosrvCuentas.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvCuentas; +begin + result := TsrvCuentas_Proxy.Create(aMessage, aTransportChannel); +end; + +{ TsrvCuentas_Proxy } + +function TsrvCuentas_Proxy.__GetInterfaceName:string; +begin + result := 'srvCuentas'; +end; + +function TsrvCuentas_Proxy.GenerateReport: Binary; +var + __request, __response : TMemoryStream; +begin + result := nil; + __request := TMemoryStream.Create; + __response := TMemoryStream.Create; + + try + __Message.Initialize(__TransportChannel, 'FactuGES', __InterfaceName, 'GenerateReport'); + __Message.Finalize; + + __Message.WriteToStream(__request); + __TransportChannel.Dispatch(__request, __response); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Binary), result, []); + finally + __request.Free; + __response.Free; + end +end; + +function TsrvCuentas_Proxy.PuedoEliminarCuenta(const Codigo: Integer): Boolean; +var + __request, __response : TMemoryStream; +begin + __request := TMemoryStream.Create; + __response := TMemoryStream.Create; + + try + __Message.Initialize(__TransportChannel, 'FactuGES', __InterfaceName, 'PuedoEliminarCuenta'); + __Message.Write('Codigo', TypeInfo(Integer), Codigo, []); + __Message.Finalize; + + __Message.WriteToStream(__request); + __TransportChannel.Dispatch(__request, __response); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Boolean), result, []); + finally + __request.Free; + __response.Free; + end +end; + +{ CosrvComisiones } + +class function CosrvComisiones.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvComisiones; +begin + result := TsrvComisiones_Proxy.Create(aMessage, aTransportChannel); +end; + +{ TsrvComisiones_Proxy } + +function TsrvComisiones_Proxy.__GetInterfaceName:string; +begin + result := 'srvComisiones'; +end; + +function TsrvComisiones_Proxy.GetComision(const CodigoContacto: Integer): Double; +var + __request, __response : TMemoryStream; +begin + __request := TMemoryStream.Create; + __response := TMemoryStream.Create; + + try + __Message.Initialize(__TransportChannel, 'FactuGES', __InterfaceName, 'GetComision'); + __Message.Write('CodigoContacto', TypeInfo(Integer), CodigoContacto, []); + __Message.Finalize; + + __Message.WriteToStream(__request); + __TransportChannel.Dispatch(__request, __response); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Double), result, []); + finally + __request.Free; + __response.Free; + end +end; + +procedure TsrvComisiones_Proxy.SetComision(const CodigoContacto: Integer; const Value: Double); +var + __request, __response : TMemoryStream; +begin + __request := TMemoryStream.Create; + __response := TMemoryStream.Create; + + try + __Message.Initialize(__TransportChannel, 'FactuGES', __InterfaceName, 'SetComision'); + __Message.Write('CodigoContacto', TypeInfo(Integer), CodigoContacto, []); + __Message.Write('Value', TypeInfo(Double), Value, []); + __Message.Finalize; + + __Message.WriteToStream(__request); + __TransportChannel.Dispatch(__request, __response); + __Message.ReadFromStream(__response); + + finally + __request.Free; + __response.Free; + end +end; + +{ CosrvAsientos } + +class function CosrvAsientos.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvAsientos; +begin + result := TsrvAsientos_Proxy.Create(aMessage, aTransportChannel); +end; + +{ TsrvAsientos_Proxy } + +function TsrvAsientos_Proxy.__GetInterfaceName:string; +begin + result := 'srvAsientos'; +end; + +function TsrvAsientos_Proxy.AsignarPunteo(const CodigoCuenta: Integer; const FechaIni: DateTime; const FechaFin: DateTime; const ValorPunteado: Integer): Boolean; +var + __request, __response : TMemoryStream; +begin + __request := TMemoryStream.Create; + __response := TMemoryStream.Create; + + try + __Message.Initialize(__TransportChannel, 'FactuGES', __InterfaceName, 'AsignarPunteo'); + __Message.Write('CodigoCuenta', TypeInfo(Integer), CodigoCuenta, []); + __Message.Write('FechaIni', TypeInfo(DateTime), FechaIni, [paIsDateTime]); + __Message.Write('FechaFin', TypeInfo(DateTime), FechaFin, [paIsDateTime]); + __Message.Write('ValorPunteado', TypeInfo(Integer), ValorPunteado, []); + __Message.Finalize; + + __Message.WriteToStream(__request); + __TransportChannel.Dispatch(__request, __response); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Boolean), result, []); + finally + __request.Free; + __response.Free; + end +end; + +function TsrvAsientos_Proxy.darPenultimoCierre(const CodigoCuenta: Integer): DateTime; +var + __request, __response : TMemoryStream; +begin + __request := TMemoryStream.Create; + __response := TMemoryStream.Create; + + try + __Message.Initialize(__TransportChannel, 'FactuGES', __InterfaceName, 'darPenultimoCierre'); + __Message.Write('CodigoCuenta', TypeInfo(Integer), CodigoCuenta, []); + __Message.Finalize; + + __Message.WriteToStream(__request); + __TransportChannel.Dispatch(__request, __response); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(DateTime), result, [paIsDateTime]); + finally + __request.Free; + __response.Free; + end +end; + +function TsrvAsientos_Proxy.darSumaAcumulada(const CodigoCuenta: Integer; const FechaIni: DateTime; const FechaFin: DateTime): Currency; +var + __request, __response : TMemoryStream; +begin + __request := TMemoryStream.Create; + __response := TMemoryStream.Create; + + try + __Message.Initialize(__TransportChannel, 'FactuGES', __InterfaceName, 'darSumaAcumulada'); + __Message.Write('CodigoCuenta', TypeInfo(Integer), CodigoCuenta, []); + __Message.Write('FechaIni', TypeInfo(DateTime), FechaIni, [paIsDateTime]); + __Message.Write('FechaFin', TypeInfo(DateTime), FechaFin, [paIsDateTime]); + __Message.Finalize; + + __Message.WriteToStream(__request); + __TransportChannel.Dispatch(__request, __response); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Currency), result, []); + finally + __request.Free; + __response.Free; + end +end; + +{ CosrvIntervalos } + +class function CosrvIntervalos.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvIntervalos; +begin + result := TsrvIntervalos_Proxy.Create(aMessage, aTransportChannel); +end; + +function TsrvIntervalos_Proxy.__GetInterfaceName:string; +begin + result := 'srvIntervalos'; +end; + +{ CosrvConfiguracion } + +class function CosrvConfiguracion.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvConfiguracion; +begin + result := TsrvConfiguracion_Proxy.Create(aMessage, aTransportChannel); +end; + +{ TsrvConfiguracion_Proxy } + +function TsrvConfiguracion_Proxy.__GetInterfaceName:string; +begin + result := 'srvConfiguracion'; +end; + +function TsrvConfiguracion_Proxy.darRutaDocumentos: String; +var + __request, __response : TMemoryStream; +begin + __request := TMemoryStream.Create; + __response := TMemoryStream.Create; + + try + __Message.Initialize(__TransportChannel, 'FactuGES', __InterfaceName, 'darRutaDocumentos'); + __Message.Finalize; + + __Message.WriteToStream(__request); + __TransportChannel.Dispatch(__request, __response); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(String), result, []); + finally + __request.Free; + __response.Free; + end +end; + +{ CosrvCitas } + +class function CosrvCitas.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvCitas; +begin + result := TsrvCitas_Proxy.Create(aMessage, aTransportChannel); +end; + +{ TsrvCitas_Proxy } + +function TsrvCitas_Proxy.__GetInterfaceName:string; +begin + result := 'srvCitas'; +end; + +function TsrvCitas_Proxy.getCodigo(const Generador: String): Integer; +var + __request, __response : TMemoryStream; +begin + __request := TMemoryStream.Create; + __response := TMemoryStream.Create; + + try + __Message.Initialize(__TransportChannel, 'FactuGES', __InterfaceName, 'getCodigo'); + __Message.Write('Generador', TypeInfo(String), Generador, []); + __Message.Finalize; + + __Message.WriteToStream(__request); + __TransportChannel.Dispatch(__request, __response); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Integer), result, []); + finally + __request.Free; + __response.Free; + end +end; + +initialization + RegisterROClass(TLoginInfo); + RegisterROClass(TstImportes); + RegisterProxyClass(IsrvContactos_IID, TsrvContactos_Proxy); + RegisterProxyClass(IsrvLogin_IID, TsrvLogin_Proxy); + RegisterProxyClass(IsrvPresupuestos_IID, TsrvPresupuestos_Proxy); + RegisterProxyClass(IsrvPedidosProveedor_IID, TsrvPedidosProveedor_Proxy); + RegisterProxyClass(IsrvAlbaranesCliente_IID, TsrvAlbaranesCliente_Proxy); + RegisterProxyClass(IsrvFacturasCliente_IID, TsrvFacturasCliente_Proxy); + RegisterProxyClass(IsrvAlmacenes_IID, TsrvAlmacenes_Proxy); + RegisterProxyClass(IsrvArticulos_IID, TsrvArticulos_Proxy); + RegisterProxyClass(IsrvMontajes_IID, TsrvMontajes_Proxy); + RegisterProxyClass(IsrvFacturasProveedor_IID, TsrvFacturasProveedor_Proxy); + RegisterProxyClass(IsrvPagos_IID, TsrvPagos_Proxy); + RegisterProxyClass(IsrvCuentas_IID, TsrvCuentas_Proxy); + RegisterProxyClass(IsrvComisiones_IID, TsrvComisiones_Proxy); + RegisterProxyClass(IsrvAsientos_IID, TsrvAsientos_Proxy); + RegisterProxyClass(IsrvIntervalos_IID, TsrvIntervalos_Proxy); + RegisterProxyClass(IsrvConfiguracion_IID, TsrvConfiguracion_Proxy); + RegisterProxyClass(IsrvCitas_IID, TsrvCitas_Proxy); + + +finalization + UnregisterROClass(TLoginInfo); + UnregisterROClass(TstImportes); + UnregisterProxyClass(IsrvContactos_IID); + UnregisterProxyClass(IsrvLogin_IID); + UnregisterProxyClass(IsrvPresupuestos_IID); + UnregisterProxyClass(IsrvPedidosProveedor_IID); + UnregisterProxyClass(IsrvAlbaranesCliente_IID); + UnregisterProxyClass(IsrvFacturasCliente_IID); + UnregisterProxyClass(IsrvAlmacenes_IID); + UnregisterProxyClass(IsrvArticulos_IID); + UnregisterProxyClass(IsrvMontajes_IID); + UnregisterProxyClass(IsrvFacturasProveedor_IID); + UnregisterProxyClass(IsrvPagos_IID); + UnregisterProxyClass(IsrvCuentas_IID); + UnregisterProxyClass(IsrvComisiones_IID); + UnregisterProxyClass(IsrvAsientos_IID); + UnregisterProxyClass(IsrvIntervalos_IID); + UnregisterProxyClass(IsrvConfiguracion_IID); + UnregisterProxyClass(IsrvCitas_IID); + +end. diff --git a/Servidor/FactuGES_Invk.pas b/Servidor/FactuGES_Invk.pas new file mode 100644 index 0000000..d39c288 --- /dev/null +++ b/Servidor/FactuGES_Invk.pas @@ -0,0 +1,1184 @@ +unit FactuGES_Invk; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ Do not modify this unit manually, or your changes will be lost when this } +{ unit is regenerated the next time you compile the project. } +{----------------------------------------------------------------------------} + +interface + +uses + {vcl:} Classes, + {RemObjects:} uROServer, uROServerIntf, uROTypes, uROClientIntf, + {Used RODL Intf's:} DataAbstract_Intf, + {Used RODL Invk's:} DataAbstract_Invk, + {Generated:} FactuGES_Intf; + +type + TsrvContactos_Invoker = class(TDARemoteService_Invoker) + private + protected + published + procedure Invoke_GenerateReport(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_GetNextAutoinc(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_PuedoEliminarContacto(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + end; + + TsrvLogin_Invoker = class(TROInvoker) + private + protected + published + procedure Invoke_Login(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_Logout(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_Ping(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_SetUserPassword(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_UpdateUsers(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + end; + + TsrvPresupuestos_Invoker = class(TDARemoteService_Invoker) + private + protected + published + procedure Invoke_GetNextAutoinc(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_GenerateReport(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_PuedoEliminarPresupuesto(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + end; + + TsrvPedidosProveedor_Invoker = class(TDARemoteService_Invoker) + private + protected + published + procedure Invoke_GetNextAutoinc(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_DarNuevaReferencia(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_GenerateReport(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_PuedoEliminarPedido(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + end; + + TsrvAlbaranesCliente_Invoker = class(TDARemoteService_Invoker) + private + protected + published + procedure Invoke_ExisteAlbaranDePresupuesto(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_DarNuevaReferencia(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_GetNextAutoinc(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_GenerateReport(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_PuedoEliminarAlbaran(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_DarSumaImportes(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + end; + + TsrvFacturasCliente_Invoker = class(TDARemoteService_Invoker) + private + protected + published + procedure Invoke_GetNextAutoinc(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_PuedoEliminarFactura(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_ExisteFacturaDeAlbaran(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_GenerateReport(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_DarNuevaReferencia(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + end; + + TsrvAlmacenes_Invoker = class(TDARemoteService_Invoker) + private + protected + published + procedure Invoke_GenerateReport(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_PuedoEliminarAlmacen(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + end; + + TsrvArticulos_Invoker = class(TDARemoteService_Invoker) + private + protected + published + procedure Invoke_GetNextAutoinc(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + end; + + TsrvMontajes_Invoker = class(TDARemoteService_Invoker) + private + protected + published + procedure Invoke_GetNextAutoinc(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_PuedoEliminarMontaje(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_GenerateReportFicha(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_GenerateReportEtiquetas(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_DarNuevaReferencia(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + end; + + TsrvFacturasProveedor_Invoker = class(TDARemoteService_Invoker) + private + protected + published + procedure Invoke_GetNextAutoinc(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_PuedoEliminarFactura(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + end; + + TsrvPagos_Invoker = class(TDARemoteService_Invoker) + private + protected + published + procedure Invoke_GetNextAutoinc(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_GenerateReport(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + end; + + TsrvCuentas_Invoker = class(TDARemoteService_Invoker) + private + protected + published + procedure Invoke_GenerateReport(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_PuedoEliminarCuenta(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + end; + + TsrvComisiones_Invoker = class(TDARemoteService_Invoker) + private + protected + published + procedure Invoke_GetComision(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_SetComision(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + end; + + TsrvAsientos_Invoker = class(TDARemoteService_Invoker) + private + protected + published + procedure Invoke_AsignarPunteo(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_darPenultimoCierre(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_darSumaAcumulada(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + end; + + TsrvIntervalos_Invoker = class(TDARemoteService_Invoker) + private + protected + published + end; + + TsrvConfiguracion_Invoker = class(TROInvoker) + private + protected + published + procedure Invoke_darRutaDocumentos(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + end; + + TsrvCitas_Invoker = class(TDARemoteService_Invoker) + private + protected + published + procedure Invoke_getCodigo(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + end; + +implementation + +uses + {RemObjects:} uRORes, uROClient; + +{ TsrvContactos_Invoker } + +procedure TsrvContactos_Invoker.Invoke_GenerateReport(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function GenerateReport: Binary; } +var + lResult: Binary; + __lObjectDisposer: TROObjectDisposer; +begin + lResult := nil; + try + lResult := (__Instance as IsrvContactos).GenerateReport; + + __Message.Initialize(__Transport, 'FactuGES', 'srvContactos', 'GenerateReportResponse'); + __Message.Write('Result', TypeInfo(Binary), lResult, []); + __Message.Finalize; + + finally + __lObjectDisposer := TROObjectDisposer.Create(__Instance); + try + __lObjectDisposer.Add(lResult); + finally + __lObjectDisposer.Free(); + end; + end; +end; + +procedure TsrvContactos_Invoker.Invoke_GetNextAutoinc(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function GetNextAutoinc: Integer; } +var + lResult: Integer; +begin + try + lResult := (__Instance as IsrvContactos).GetNextAutoinc; + + __Message.Initialize(__Transport, 'FactuGES', 'srvContactos', 'GetNextAutoincResponse'); + __Message.Write('Result', TypeInfo(Integer), lResult, []); + __Message.Finalize; + + finally + end; +end; + +procedure TsrvContactos_Invoker.Invoke_PuedoEliminarContacto(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function PuedoEliminarContacto(const CodigoContacto: Integer): Boolean; } +var + CodigoContacto: Integer; + lResult: Boolean; +begin + try + __Message.Read('CodigoContacto', TypeInfo(Integer), CodigoContacto, []); + + lResult := (__Instance as IsrvContactos).PuedoEliminarContacto(CodigoContacto); + + __Message.Initialize(__Transport, 'FactuGES', 'srvContactos', 'PuedoEliminarContactoResponse'); + __Message.Write('Result', TypeInfo(Boolean), lResult, []); + __Message.Finalize; + + finally + end; +end; + +{ TsrvLogin_Invoker } + +procedure TsrvLogin_Invoker.Invoke_Login(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function Login(const UserID: String; const Password: String; out LoginInfo: TLoginInfo): Boolean; } +var + UserID: String; + Password: String; + LoginInfo: FactuGES_Intf.TLoginInfo; + lResult: Boolean; + __lObjectDisposer: TROObjectDisposer; +begin + LoginInfo := nil; + try + __Message.Read('UserID', TypeInfo(String), UserID, []); + __Message.Read('Password', TypeInfo(String), Password, []); + + lResult := (__Instance as IsrvLogin).Login(UserID, Password, LoginInfo); + + __Message.Initialize(__Transport, 'FactuGES', 'srvLogin', 'LoginResponse'); + __Message.Write('Result', TypeInfo(Boolean), lResult, []); + __Message.Write('LoginInfo', TypeInfo(FactuGES_Intf.TLoginInfo), LoginInfo, []); + __Message.Finalize; + + finally + __lObjectDisposer := TROObjectDisposer.Create(__Instance); + try + __lObjectDisposer.Add(LoginInfo); + finally + __lObjectDisposer.Free(); + end; + end; +end; + +procedure TsrvLogin_Invoker.Invoke_Logout(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ procedure Logout; } +begin + try + (__Instance as IsrvLogin).Logout; + + __Message.Initialize(__Transport, 'FactuGES', 'srvLogin', 'LogoutResponse'); + __Message.Finalize; + + __oResponseOptions := [roNoResponse]; + + finally + end; +end; + +procedure TsrvLogin_Invoker.Invoke_Ping(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function Ping: Boolean; } +var + lResult: Boolean; +begin + try + lResult := (__Instance as IsrvLogin).Ping; + + __Message.Initialize(__Transport, 'FactuGES', 'srvLogin', 'PingResponse'); + __Message.Write('Result', TypeInfo(Boolean), lResult, []); + __Message.Finalize; + + finally + end; +end; + +procedure TsrvLogin_Invoker.Invoke_SetUserPassword(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function SetUserPassword(const UserID: String; const NewPassword: String): Boolean; } +var + UserID: String; + NewPassword: String; + lResult: Boolean; +begin + try + __Message.Read('UserID', TypeInfo(String), UserID, []); + __Message.Read('NewPassword', TypeInfo(String), NewPassword, []); + + lResult := (__Instance as IsrvLogin).SetUserPassword(UserID, NewPassword); + + __Message.Initialize(__Transport, 'FactuGES', 'srvLogin', 'SetUserPasswordResponse'); + __Message.Write('Result', TypeInfo(Boolean), lResult, []); + __Message.Finalize; + + finally + end; +end; + +procedure TsrvLogin_Invoker.Invoke_UpdateUsers(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function UpdateUsers(const UsersDelta: Binary): Binary; } +var + UsersDelta: Binary; + lResult: Binary; + __lObjectDisposer: TROObjectDisposer; +begin + UsersDelta := nil; + lResult := nil; + try + __Message.Read('UsersDelta', TypeInfo(Binary), UsersDelta, []); + + lResult := (__Instance as IsrvLogin).UpdateUsers(UsersDelta); + + __Message.Initialize(__Transport, 'FactuGES', 'srvLogin', 'UpdateUsersResponse'); + __Message.Write('Result', TypeInfo(Binary), lResult, []); + __Message.Finalize; + + finally + __lObjectDisposer := TROObjectDisposer.Create(__Instance); + try + __lObjectDisposer.Add(UsersDelta); + __lObjectDisposer.Add(lResult); + finally + __lObjectDisposer.Free(); + end; + end; +end; + +{ TsrvPresupuestos_Invoker } + +procedure TsrvPresupuestos_Invoker.Invoke_GetNextAutoinc(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function GetNextAutoinc: Integer; } +var + lResult: Integer; +begin + try + lResult := (__Instance as IsrvPresupuestos).GetNextAutoinc; + + __Message.Initialize(__Transport, 'FactuGES', 'srvPresupuestos', 'GetNextAutoincResponse'); + __Message.Write('Result', TypeInfo(Integer), lResult, []); + __Message.Finalize; + + finally + end; +end; + +procedure TsrvPresupuestos_Invoker.Invoke_GenerateReport(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function GenerateReport(const Codigo: Integer; const TamLetra: Integer): Binary; } +var + Codigo: Integer; + TamLetra: Integer; + lResult: Binary; + __lObjectDisposer: TROObjectDisposer; +begin + lResult := nil; + try + __Message.Read('Codigo', TypeInfo(Integer), Codigo, []); + __Message.Read('TamLetra', TypeInfo(Integer), TamLetra, []); + + lResult := (__Instance as IsrvPresupuestos).GenerateReport(Codigo, TamLetra); + + __Message.Initialize(__Transport, 'FactuGES', 'srvPresupuestos', 'GenerateReportResponse'); + __Message.Write('Result', TypeInfo(Binary), lResult, []); + __Message.Finalize; + + finally + __lObjectDisposer := TROObjectDisposer.Create(__Instance); + try + __lObjectDisposer.Add(lResult); + finally + __lObjectDisposer.Free(); + end; + end; +end; + +procedure TsrvPresupuestos_Invoker.Invoke_PuedoEliminarPresupuesto(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function PuedoEliminarPresupuesto(const CodigoPresupuesto: Integer): Boolean; } +var + CodigoPresupuesto: Integer; + lResult: Boolean; +begin + try + __Message.Read('CodigoPresupuesto', TypeInfo(Integer), CodigoPresupuesto, []); + + lResult := (__Instance as IsrvPresupuestos).PuedoEliminarPresupuesto(CodigoPresupuesto); + + __Message.Initialize(__Transport, 'FactuGES', 'srvPresupuestos', 'PuedoEliminarPresupuestoResponse'); + __Message.Write('Result', TypeInfo(Boolean), lResult, []); + __Message.Finalize; + + finally + end; +end; + +{ TsrvPedidosProveedor_Invoker } + +procedure TsrvPedidosProveedor_Invoker.Invoke_GetNextAutoinc(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function GetNextAutoinc: Integer; } +var + lResult: Integer; +begin + try + lResult := (__Instance as IsrvPedidosProveedor).GetNextAutoinc; + + __Message.Initialize(__Transport, 'FactuGES', 'srvPedidosProveedor', 'GetNextAutoincResponse'); + __Message.Write('Result', TypeInfo(Integer), lResult, []); + __Message.Finalize; + + finally + end; +end; + +procedure TsrvPedidosProveedor_Invoker.Invoke_DarNuevaReferencia(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function DarNuevaReferencia: String; } +var + lResult: String; +begin + try + lResult := (__Instance as IsrvPedidosProveedor).DarNuevaReferencia; + + __Message.Initialize(__Transport, 'FactuGES', 'srvPedidosProveedor', 'DarNuevaReferenciaResponse'); + __Message.Write('Result', TypeInfo(String), lResult, []); + __Message.Finalize; + + finally + end; +end; + +procedure TsrvPedidosProveedor_Invoker.Invoke_GenerateReport(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function GenerateReport(const Codigo: Integer): Binary; } +var + Codigo: Integer; + lResult: Binary; + __lObjectDisposer: TROObjectDisposer; +begin + lResult := nil; + try + __Message.Read('Codigo', TypeInfo(Integer), Codigo, []); + + lResult := (__Instance as IsrvPedidosProveedor).GenerateReport(Codigo); + + __Message.Initialize(__Transport, 'FactuGES', 'srvPedidosProveedor', 'GenerateReportResponse'); + __Message.Write('Result', TypeInfo(Binary), lResult, []); + __Message.Finalize; + + finally + __lObjectDisposer := TROObjectDisposer.Create(__Instance); + try + __lObjectDisposer.Add(lResult); + finally + __lObjectDisposer.Free(); + end; + end; +end; + +procedure TsrvPedidosProveedor_Invoker.Invoke_PuedoEliminarPedido(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function PuedoEliminarPedido(const CodigoPedido: Integer): Boolean; } +var + CodigoPedido: Integer; + lResult: Boolean; +begin + try + __Message.Read('CodigoPedido', TypeInfo(Integer), CodigoPedido, []); + + lResult := (__Instance as IsrvPedidosProveedor).PuedoEliminarPedido(CodigoPedido); + + __Message.Initialize(__Transport, 'FactuGES', 'srvPedidosProveedor', 'PuedoEliminarPedidoResponse'); + __Message.Write('Result', TypeInfo(Boolean), lResult, []); + __Message.Finalize; + + finally + end; +end; + +{ TsrvAlbaranesCliente_Invoker } + +procedure TsrvAlbaranesCliente_Invoker.Invoke_ExisteAlbaranDePresupuesto(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function ExisteAlbaranDePresupuesto(const CodigoPresupuesto: Integer; out CodigoAlbaran: Integer): Boolean; } +var + CodigoPresupuesto: Integer; + CodigoAlbaran: Integer; + lResult: Boolean; +begin + try + __Message.Read('CodigoPresupuesto', TypeInfo(Integer), CodigoPresupuesto, []); + + lResult := (__Instance as IsrvAlbaranesCliente).ExisteAlbaranDePresupuesto(CodigoPresupuesto, CodigoAlbaran); + + __Message.Initialize(__Transport, 'FactuGES', 'srvAlbaranesCliente', 'ExisteAlbaranDePresupuestoResponse'); + __Message.Write('Result', TypeInfo(Boolean), lResult, []); + __Message.Write('CodigoAlbaran', TypeInfo(Integer), CodigoAlbaran, []); + __Message.Finalize; + + finally + end; +end; + +procedure TsrvAlbaranesCliente_Invoker.Invoke_DarNuevaReferencia(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function DarNuevaReferencia: String; } +var + lResult: String; +begin + try + lResult := (__Instance as IsrvAlbaranesCliente).DarNuevaReferencia; + + __Message.Initialize(__Transport, 'FactuGES', 'srvAlbaranesCliente', 'DarNuevaReferenciaResponse'); + __Message.Write('Result', TypeInfo(String), lResult, []); + __Message.Finalize; + + finally + end; +end; + +procedure TsrvAlbaranesCliente_Invoker.Invoke_GetNextAutoinc(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function GetNextAutoinc: Integer; } +var + lResult: Integer; +begin + try + lResult := (__Instance as IsrvAlbaranesCliente).GetNextAutoinc; + + __Message.Initialize(__Transport, 'FactuGES', 'srvAlbaranesCliente', 'GetNextAutoincResponse'); + __Message.Write('Result', TypeInfo(Integer), lResult, []); + __Message.Finalize; + + finally + end; +end; + +procedure TsrvAlbaranesCliente_Invoker.Invoke_GenerateReport(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function GenerateReport(const Codigo: Integer): Binary; } +var + Codigo: Integer; + lResult: Binary; + __lObjectDisposer: TROObjectDisposer; +begin + lResult := nil; + try + __Message.Read('Codigo', TypeInfo(Integer), Codigo, []); + + lResult := (__Instance as IsrvAlbaranesCliente).GenerateReport(Codigo); + + __Message.Initialize(__Transport, 'FactuGES', 'srvAlbaranesCliente', 'GenerateReportResponse'); + __Message.Write('Result', TypeInfo(Binary), lResult, []); + __Message.Finalize; + + finally + __lObjectDisposer := TROObjectDisposer.Create(__Instance); + try + __lObjectDisposer.Add(lResult); + finally + __lObjectDisposer.Free(); + end; + end; +end; + +procedure TsrvAlbaranesCliente_Invoker.Invoke_PuedoEliminarAlbaran(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function PuedoEliminarAlbaran(const CodigoAlbaran: Integer): Boolean; } +var + CodigoAlbaran: Integer; + lResult: Boolean; +begin + try + __Message.Read('CodigoAlbaran', TypeInfo(Integer), CodigoAlbaran, []); + + lResult := (__Instance as IsrvAlbaranesCliente).PuedoEliminarAlbaran(CodigoAlbaran); + + __Message.Initialize(__Transport, 'FactuGES', 'srvAlbaranesCliente', 'PuedoEliminarAlbaranResponse'); + __Message.Write('Result', TypeInfo(Boolean), lResult, []); + __Message.Finalize; + + finally + end; +end; + +procedure TsrvAlbaranesCliente_Invoker.Invoke_DarSumaImportes(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function DarSumaImportes(const FechaIni: DateTime; const FechaFin: DateTime): TstImportes; } +var + FechaIni: DateTime; + FechaFin: DateTime; + lResult: FactuGES_Intf.TstImportes; + __lObjectDisposer: TROObjectDisposer; +begin + lResult := nil; + try + __Message.Read('FechaIni', TypeInfo(DateTime), FechaIni, [paIsDateTime]); + __Message.Read('FechaFin', TypeInfo(DateTime), FechaFin, [paIsDateTime]); + + lResult := (__Instance as IsrvAlbaranesCliente).DarSumaImportes(FechaIni, FechaFin); + + __Message.Initialize(__Transport, 'FactuGES', 'srvAlbaranesCliente', 'DarSumaImportesResponse'); + __Message.Write('Result', TypeInfo(FactuGES_Intf.TstImportes), lResult, []); + __Message.Finalize; + + finally + __lObjectDisposer := TROObjectDisposer.Create(__Instance); + try + __lObjectDisposer.Add(lResult); + finally + __lObjectDisposer.Free(); + end; + end; +end; + +{ TsrvFacturasCliente_Invoker } + +procedure TsrvFacturasCliente_Invoker.Invoke_GetNextAutoinc(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function GetNextAutoinc: Integer; } +var + lResult: Integer; +begin + try + lResult := (__Instance as IsrvFacturasCliente).GetNextAutoinc; + + __Message.Initialize(__Transport, 'FactuGES', 'srvFacturasCliente', 'GetNextAutoincResponse'); + __Message.Write('Result', TypeInfo(Integer), lResult, []); + __Message.Finalize; + + finally + end; +end; + +procedure TsrvFacturasCliente_Invoker.Invoke_PuedoEliminarFactura(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function PuedoEliminarFactura(const CodigoFactura: Integer): Boolean; } +var + CodigoFactura: Integer; + lResult: Boolean; +begin + try + __Message.Read('CodigoFactura', TypeInfo(Integer), CodigoFactura, []); + + lResult := (__Instance as IsrvFacturasCliente).PuedoEliminarFactura(CodigoFactura); + + __Message.Initialize(__Transport, 'FactuGES', 'srvFacturasCliente', 'PuedoEliminarFacturaResponse'); + __Message.Write('Result', TypeInfo(Boolean), lResult, []); + __Message.Finalize; + + finally + end; +end; + +procedure TsrvFacturasCliente_Invoker.Invoke_ExisteFacturaDeAlbaran(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function ExisteFacturaDeAlbaran(const CodigoAlbaran: Integer; out CodigoFactura: Integer): Boolean; } +var + CodigoAlbaran: Integer; + CodigoFactura: Integer; + lResult: Boolean; +begin + try + __Message.Read('CodigoAlbaran', TypeInfo(Integer), CodigoAlbaran, []); + + lResult := (__Instance as IsrvFacturasCliente).ExisteFacturaDeAlbaran(CodigoAlbaran, CodigoFactura); + + __Message.Initialize(__Transport, 'FactuGES', 'srvFacturasCliente', 'ExisteFacturaDeAlbaranResponse'); + __Message.Write('Result', TypeInfo(Boolean), lResult, []); + __Message.Write('CodigoFactura', TypeInfo(Integer), CodigoFactura, []); + __Message.Finalize; + + finally + end; +end; + +procedure TsrvFacturasCliente_Invoker.Invoke_GenerateReport(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function GenerateReport(const Codigo: Integer; const TamLetra: Integer): Binary; } +var + Codigo: Integer; + TamLetra: Integer; + lResult: Binary; + __lObjectDisposer: TROObjectDisposer; +begin + lResult := nil; + try + __Message.Read('Codigo', TypeInfo(Integer), Codigo, []); + __Message.Read('TamLetra', TypeInfo(Integer), TamLetra, []); + + lResult := (__Instance as IsrvFacturasCliente).GenerateReport(Codigo, TamLetra); + + __Message.Initialize(__Transport, 'FactuGES', 'srvFacturasCliente', 'GenerateReportResponse'); + __Message.Write('Result', TypeInfo(Binary), lResult, []); + __Message.Finalize; + + finally + __lObjectDisposer := TROObjectDisposer.Create(__Instance); + try + __lObjectDisposer.Add(lResult); + finally + __lObjectDisposer.Free(); + end; + end; +end; + +procedure TsrvFacturasCliente_Invoker.Invoke_DarNuevaReferencia(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function DarNuevaReferencia: String; } +var + lResult: String; +begin + try + lResult := (__Instance as IsrvFacturasCliente).DarNuevaReferencia; + + __Message.Initialize(__Transport, 'FactuGES', 'srvFacturasCliente', 'DarNuevaReferenciaResponse'); + __Message.Write('Result', TypeInfo(String), lResult, []); + __Message.Finalize; + + finally + end; +end; + +{ TsrvAlmacenes_Invoker } + +procedure TsrvAlmacenes_Invoker.Invoke_GenerateReport(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function GenerateReport: Binary; } +var + lResult: Binary; + __lObjectDisposer: TROObjectDisposer; +begin + lResult := nil; + try + lResult := (__Instance as IsrvAlmacenes).GenerateReport; + + __Message.Initialize(__Transport, 'FactuGES', 'srvAlmacenes', 'GenerateReportResponse'); + __Message.Write('Result', TypeInfo(Binary), lResult, []); + __Message.Finalize; + + finally + __lObjectDisposer := TROObjectDisposer.Create(__Instance); + try + __lObjectDisposer.Add(lResult); + finally + __lObjectDisposer.Free(); + end; + end; +end; + +procedure TsrvAlmacenes_Invoker.Invoke_PuedoEliminarAlmacen(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function PuedoEliminarAlmacen(const Codigo: Integer): Boolean; } +var + Codigo: Integer; + lResult: Boolean; +begin + try + __Message.Read('Codigo', TypeInfo(Integer), Codigo, []); + + lResult := (__Instance as IsrvAlmacenes).PuedoEliminarAlmacen(Codigo); + + __Message.Initialize(__Transport, 'FactuGES', 'srvAlmacenes', 'PuedoEliminarAlmacenResponse'); + __Message.Write('Result', TypeInfo(Boolean), lResult, []); + __Message.Finalize; + + finally + end; +end; + +{ TsrvArticulos_Invoker } + +procedure TsrvArticulos_Invoker.Invoke_GetNextAutoinc(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function GetNextAutoinc: Integer; } +var + lResult: Integer; +begin + try + lResult := (__Instance as IsrvArticulos).GetNextAutoinc; + + __Message.Initialize(__Transport, 'FactuGES', 'srvArticulos', 'GetNextAutoincResponse'); + __Message.Write('Result', TypeInfo(Integer), lResult, []); + __Message.Finalize; + + finally + end; +end; + +{ TsrvMontajes_Invoker } + +procedure TsrvMontajes_Invoker.Invoke_GetNextAutoinc(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function GetNextAutoinc(const Generador: String): Integer; } +var + Generador: String; + lResult: Integer; +begin + try + __Message.Read('Generador', TypeInfo(String), Generador, []); + + lResult := (__Instance as IsrvMontajes).GetNextAutoinc(Generador); + + __Message.Initialize(__Transport, 'FactuGES', 'srvMontajes', 'GetNextAutoincResponse'); + __Message.Write('Result', TypeInfo(Integer), lResult, []); + __Message.Finalize; + + finally + end; +end; + +procedure TsrvMontajes_Invoker.Invoke_PuedoEliminarMontaje(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function PuedoEliminarMontaje(const Codigo: Integer): Boolean; } +var + Codigo: Integer; + lResult: Boolean; +begin + try + __Message.Read('Codigo', TypeInfo(Integer), Codigo, []); + + lResult := (__Instance as IsrvMontajes).PuedoEliminarMontaje(Codigo); + + __Message.Initialize(__Transport, 'FactuGES', 'srvMontajes', 'PuedoEliminarMontajeResponse'); + __Message.Write('Result', TypeInfo(Boolean), lResult, []); + __Message.Finalize; + + finally + end; +end; + +procedure TsrvMontajes_Invoker.Invoke_GenerateReportFicha(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function GenerateReportFicha(const Codigo: Integer): Binary; } +var + Codigo: Integer; + lResult: Binary; + __lObjectDisposer: TROObjectDisposer; +begin + lResult := nil; + try + __Message.Read('Codigo', TypeInfo(Integer), Codigo, []); + + lResult := (__Instance as IsrvMontajes).GenerateReportFicha(Codigo); + + __Message.Initialize(__Transport, 'FactuGES', 'srvMontajes', 'GenerateReportFichaResponse'); + __Message.Write('Result', TypeInfo(Binary), lResult, []); + __Message.Finalize; + + finally + __lObjectDisposer := TROObjectDisposer.Create(__Instance); + try + __lObjectDisposer.Add(lResult); + finally + __lObjectDisposer.Free(); + end; + end; +end; + +procedure TsrvMontajes_Invoker.Invoke_GenerateReportEtiquetas(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function GenerateReportEtiquetas(const Codigo: Integer; const NumEtiquetas: Integer): Binary; } +var + Codigo: Integer; + NumEtiquetas: Integer; + lResult: Binary; + __lObjectDisposer: TROObjectDisposer; +begin + lResult := nil; + try + __Message.Read('Codigo', TypeInfo(Integer), Codigo, []); + __Message.Read('NumEtiquetas', TypeInfo(Integer), NumEtiquetas, []); + + lResult := (__Instance as IsrvMontajes).GenerateReportEtiquetas(Codigo, NumEtiquetas); + + __Message.Initialize(__Transport, 'FactuGES', 'srvMontajes', 'GenerateReportEtiquetasResponse'); + __Message.Write('Result', TypeInfo(Binary), lResult, []); + __Message.Finalize; + + finally + __lObjectDisposer := TROObjectDisposer.Create(__Instance); + try + __lObjectDisposer.Add(lResult); + finally + __lObjectDisposer.Free(); + end; + end; +end; + +procedure TsrvMontajes_Invoker.Invoke_DarNuevaReferencia(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function DarNuevaReferencia(const TipoMontaje: String): String; } +var + TipoMontaje: String; + lResult: String; +begin + try + __Message.Read('TipoMontaje', TypeInfo(String), TipoMontaje, []); + + lResult := (__Instance as IsrvMontajes).DarNuevaReferencia(TipoMontaje); + + __Message.Initialize(__Transport, 'FactuGES', 'srvMontajes', 'DarNuevaReferenciaResponse'); + __Message.Write('Result', TypeInfo(String), lResult, []); + __Message.Finalize; + + finally + end; +end; + +{ TsrvFacturasProveedor_Invoker } + +procedure TsrvFacturasProveedor_Invoker.Invoke_GetNextAutoinc(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function GetNextAutoinc: Integer; } +var + lResult: Integer; +begin + try + lResult := (__Instance as IsrvFacturasProveedor).GetNextAutoinc; + + __Message.Initialize(__Transport, 'FactuGES', 'srvFacturasProveedor', 'GetNextAutoincResponse'); + __Message.Write('Result', TypeInfo(Integer), lResult, []); + __Message.Finalize; + + finally + end; +end; + +procedure TsrvFacturasProveedor_Invoker.Invoke_PuedoEliminarFactura(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function PuedoEliminarFactura(const CodigoFactura: Integer): Boolean; } +var + CodigoFactura: Integer; + lResult: Boolean; +begin + try + __Message.Read('CodigoFactura', TypeInfo(Integer), CodigoFactura, []); + + lResult := (__Instance as IsrvFacturasProveedor).PuedoEliminarFactura(CodigoFactura); + + __Message.Initialize(__Transport, 'FactuGES', 'srvFacturasProveedor', 'PuedoEliminarFacturaResponse'); + __Message.Write('Result', TypeInfo(Boolean), lResult, []); + __Message.Finalize; + + finally + end; +end; + +{ TsrvPagos_Invoker } + +procedure TsrvPagos_Invoker.Invoke_GetNextAutoinc(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function GetNextAutoinc: Integer; } +var + lResult: Integer; +begin + try + lResult := (__Instance as IsrvPagos).GetNextAutoinc; + + __Message.Initialize(__Transport, 'FactuGES', 'srvPagos', 'GetNextAutoincResponse'); + __Message.Write('Result', TypeInfo(Integer), lResult, []); + __Message.Finalize; + + finally + end; +end; + +procedure TsrvPagos_Invoker.Invoke_GenerateReport(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function GenerateReport(const Codigo: Integer): Binary; } +var + Codigo: Integer; + lResult: Binary; + __lObjectDisposer: TROObjectDisposer; +begin + lResult := nil; + try + __Message.Read('Codigo', TypeInfo(Integer), Codigo, []); + + lResult := (__Instance as IsrvPagos).GenerateReport(Codigo); + + __Message.Initialize(__Transport, 'FactuGES', 'srvPagos', 'GenerateReportResponse'); + __Message.Write('Result', TypeInfo(Binary), lResult, []); + __Message.Finalize; + + finally + __lObjectDisposer := TROObjectDisposer.Create(__Instance); + try + __lObjectDisposer.Add(lResult); + finally + __lObjectDisposer.Free(); + end; + end; +end; + +{ TsrvCuentas_Invoker } + +procedure TsrvCuentas_Invoker.Invoke_GenerateReport(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function GenerateReport: Binary; } +var + lResult: Binary; + __lObjectDisposer: TROObjectDisposer; +begin + lResult := nil; + try + lResult := (__Instance as IsrvCuentas).GenerateReport; + + __Message.Initialize(__Transport, 'FactuGES', 'srvCuentas', 'GenerateReportResponse'); + __Message.Write('Result', TypeInfo(Binary), lResult, []); + __Message.Finalize; + + finally + __lObjectDisposer := TROObjectDisposer.Create(__Instance); + try + __lObjectDisposer.Add(lResult); + finally + __lObjectDisposer.Free(); + end; + end; +end; + +procedure TsrvCuentas_Invoker.Invoke_PuedoEliminarCuenta(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function PuedoEliminarCuenta(const Codigo: Integer): Boolean; } +var + Codigo: Integer; + lResult: Boolean; +begin + try + __Message.Read('Codigo', TypeInfo(Integer), Codigo, []); + + lResult := (__Instance as IsrvCuentas).PuedoEliminarCuenta(Codigo); + + __Message.Initialize(__Transport, 'FactuGES', 'srvCuentas', 'PuedoEliminarCuentaResponse'); + __Message.Write('Result', TypeInfo(Boolean), lResult, []); + __Message.Finalize; + + finally + end; +end; + +{ TsrvComisiones_Invoker } + +procedure TsrvComisiones_Invoker.Invoke_GetComision(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function GetComision(const CodigoContacto: Integer): Double; } +var + CodigoContacto: Integer; + lResult: Double; +begin + try + __Message.Read('CodigoContacto', TypeInfo(Integer), CodigoContacto, []); + + lResult := (__Instance as IsrvComisiones).GetComision(CodigoContacto); + + __Message.Initialize(__Transport, 'FactuGES', 'srvComisiones', 'GetComisionResponse'); + __Message.Write('Result', TypeInfo(Double), lResult, []); + __Message.Finalize; + + finally + end; +end; + +procedure TsrvComisiones_Invoker.Invoke_SetComision(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ procedure SetComision(const CodigoContacto: Integer; const Value: Double); } +var + CodigoContacto: Integer; + Value: Double; +begin + try + __Message.Read('CodigoContacto', TypeInfo(Integer), CodigoContacto, []); + __Message.Read('Value', TypeInfo(Double), Value, []); + + (__Instance as IsrvComisiones).SetComision(CodigoContacto, Value); + + __Message.Initialize(__Transport, 'FactuGES', 'srvComisiones', 'SetComisionResponse'); + __Message.Finalize; + + __oResponseOptions := [roNoResponse]; + + finally + end; +end; + +{ TsrvAsientos_Invoker } + +procedure TsrvAsientos_Invoker.Invoke_AsignarPunteo(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function AsignarPunteo(const CodigoCuenta: Integer; const FechaIni: DateTime; const FechaFin: DateTime; const ValorPunteado: Integer): Boolean; } +var + CodigoCuenta: Integer; + FechaIni: DateTime; + FechaFin: DateTime; + ValorPunteado: Integer; + lResult: Boolean; +begin + try + __Message.Read('CodigoCuenta', TypeInfo(Integer), CodigoCuenta, []); + __Message.Read('FechaIni', TypeInfo(DateTime), FechaIni, [paIsDateTime]); + __Message.Read('FechaFin', TypeInfo(DateTime), FechaFin, [paIsDateTime]); + __Message.Read('ValorPunteado', TypeInfo(Integer), ValorPunteado, []); + + lResult := (__Instance as IsrvAsientos).AsignarPunteo(CodigoCuenta, FechaIni, FechaFin, ValorPunteado); + + __Message.Initialize(__Transport, 'FactuGES', 'srvAsientos', 'AsignarPunteoResponse'); + __Message.Write('Result', TypeInfo(Boolean), lResult, []); + __Message.Finalize; + + finally + end; +end; + +procedure TsrvAsientos_Invoker.Invoke_darPenultimoCierre(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function darPenultimoCierre(const CodigoCuenta: Integer): DateTime; } +var + CodigoCuenta: Integer; + lResult: DateTime; +begin + try + __Message.Read('CodigoCuenta', TypeInfo(Integer), CodigoCuenta, []); + + lResult := (__Instance as IsrvAsientos).darPenultimoCierre(CodigoCuenta); + + __Message.Initialize(__Transport, 'FactuGES', 'srvAsientos', 'darPenultimoCierreResponse'); + __Message.Write('Result', TypeInfo(DateTime), lResult, [paIsDateTime]); + __Message.Finalize; + + finally + end; +end; + +procedure TsrvAsientos_Invoker.Invoke_darSumaAcumulada(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function darSumaAcumulada(const CodigoCuenta: Integer; const FechaIni: DateTime; const FechaFin: DateTime): Currency; } +var + CodigoCuenta: Integer; + FechaIni: DateTime; + FechaFin: DateTime; + lResult: Currency; +begin + try + __Message.Read('CodigoCuenta', TypeInfo(Integer), CodigoCuenta, []); + __Message.Read('FechaIni', TypeInfo(DateTime), FechaIni, [paIsDateTime]); + __Message.Read('FechaFin', TypeInfo(DateTime), FechaFin, [paIsDateTime]); + + lResult := (__Instance as IsrvAsientos).darSumaAcumulada(CodigoCuenta, FechaIni, FechaFin); + + __Message.Initialize(__Transport, 'FactuGES', 'srvAsientos', 'darSumaAcumuladaResponse'); + __Message.Write('Result', TypeInfo(Currency), lResult, []); + __Message.Finalize; + + finally + end; +end; + +{ TsrvConfiguracion_Invoker } + +procedure TsrvConfiguracion_Invoker.Invoke_darRutaDocumentos(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function darRutaDocumentos: String; } +var + lResult: String; +begin + try + lResult := (__Instance as IsrvConfiguracion).darRutaDocumentos; + + __Message.Initialize(__Transport, 'FactuGES', 'srvConfiguracion', 'darRutaDocumentosResponse'); + __Message.Write('Result', TypeInfo(String), lResult, []); + __Message.Finalize; + + finally + end; +end; + +{ TsrvCitas_Invoker } + +procedure TsrvCitas_Invoker.Invoke_getCodigo(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function getCodigo(const Generador: String): Integer; } +var + Generador: String; + lResult: Integer; +begin + try + __Message.Read('Generador', TypeInfo(String), Generador, []); + + lResult := (__Instance as IsrvCitas).getCodigo(Generador); + + __Message.Initialize(__Transport, 'FactuGES', 'srvCitas', 'getCodigoResponse'); + __Message.Write('Result', TypeInfo(Integer), lResult, []); + __Message.Finalize; + + finally + end; +end; + +end. diff --git a/Servidor/FactuGES_Server.bdsproj b/Servidor/FactuGES_Server.bdsproj new file mode 100644 index 0000000..87a4f90 --- /dev/null +++ b/Servidor/FactuGES_Server.bdsproj @@ -0,0 +1,492 @@ + + + + + + + + + + + + FactuGES_Server.dpr + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 3 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + ..\Output\Servidor + + + + ..\Modulos\Presupuestos\Reglas;..\Modulos\Contactos\Reglas;..\Base;..\Configuracion;..\Usuarios;..\Modulos\Albaranes de cliente\Reglas + vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;CEToolsPkgd7;FR7;FRIBX7;fqb70;frx7;frxADO7;frxBDE7;frxDB7;frxDBX7;frxe7;frxIBX7;fs7;fsADO7;fsBDE7;fsDB7;fsIBX7;DataAbstract_Core_D7;DataAbstract_IDE_D7 + + + False + + + + + + False + + + True + False + + + + $00000000 + C:\Archivos de programa\Borland\Delphi7\Bin\ + + + True + False + 1 + 2 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + Rodax Software S.L. + + 1.2.0.0 + + + + + FactuGES Server + 1.0.0.0 + + + + + diff --git a/Servidor/FactuGES_Server.cfg b/Servidor/FactuGES_Server.cfg new file mode 100644 index 0000000..82ab66f --- /dev/null +++ b/Servidor/FactuGES_Server.cfg @@ -0,0 +1,44 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-GD +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-E"..\Output\Servidor" +-LE"c:\archivos de programa\borland\delphi7\Projects\Bpl" +-LN"c:\archivos de programa\borland\delphi7\Projects\Bpl" +-U"..\Modulos\Presupuestos\Reglas;..\Modulos\Contactos\Reglas;..\Base;..\Configuracion;..\Usuarios;..\Modulos\Albaranes de cliente\Reglas" +-O"..\Modulos\Presupuestos\Reglas;..\Modulos\Contactos\Reglas;..\Base;..\Configuracion;..\Usuarios;..\Modulos\Albaranes de cliente\Reglas" +-I"..\Modulos\Presupuestos\Reglas;..\Modulos\Contactos\Reglas;..\Base;..\Configuracion;..\Usuarios;..\Modulos\Albaranes de cliente\Reglas" +-R"..\Modulos\Presupuestos\Reglas;..\Modulos\Contactos\Reglas;..\Base;..\Configuracion;..\Usuarios;..\Modulos\Albaranes de cliente\Reglas" +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/Servidor/FactuGES_Server.dof b/Servidor/FactuGES_Server.dof new file mode 100644 index 0000000..847bbc3 --- /dev/null +++ b/Servidor/FactuGES_Server.dof @@ -0,0 +1,522 @@ +[FileVersion] +Version=7.0 +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=1 +SymbolLibrary=1 +SymbolPlatform=1 +UnitLibrary=1 +UnitPlatform=1 +UnitDeprecated=1 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 +[Linker] +MapFile=3 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription= +[Directories] +OutputDir=..\Output\Servidor +UnitOutputDir= +PackageDLLOutputDir= +PackageDCPOutputDir= +SearchPath=..\Modulos\Presupuestos\Reglas;..\Modulos\Contactos\Reglas;..\Base;..\Configuracion;..\Usuarios;..\Modulos\Albaranes de cliente\Reglas +Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;CEToolsPkgd7;FR7;FRIBX7;fqb70;frx7;frxADO7;frxBDE7;frxDB7;frxDBX7;frxe7;frxIBX7;fs7;fsADO7;fsBDE7;fsDB7;fsIBX7;DataAbstract_Core_D7;DataAbstract_IDE_D7 +Conditionals= +DebugSourceDirs= +UsePackages=0 +[Parameters] +RunParams= +HostApplication= +Launcher= +UseLauncher=0 +DebugCWD= +[Language] +ActiveLang= +ProjectLang= +RootDir=C:\Archivos de programa\Borland\Delphi7\Bin\ +[Version Info] +IncludeVerInfo=1 +AutoIncBuild=0 +MajorVer=1 +MinorVer=4 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=3082 +CodePage=1252 +[Version Info Keys] +CompanyName=Rodax Software S.L. +FileDescription= +FileVersion=1.4.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName=FactuGES Server +ProductVersion=1.0.0.0 +Comments= +[Excluded Packages] +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\cxTreeListVCLD7.bpl=ExpressQuantumTreeList 4 (VCL Edition) by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxThemeD7.bpl=Express XP Theme Manager by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\cxLibraryVCLD7.bpl=Express Cross Platform Library (VCL Edition) by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\cxExportVCLD7.bpl=Express Cross Platform Export Library (VCL Edition) by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\cxEditorsVCLD7.bpl=ExpressEditors Library 5 (VCL Edition) by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\cxDataD7.bpl=ExpressDataController by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\cxExtEditorsVCLD7.bpl=ExpressExtendedEditors Library 5 (VCL Edition) by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\cxGridVCLD7.bpl=ExpressQuantumGrid 5 (VCL Edition) by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\cxPageControlVCLD7.bpl=Express Cross Platform PageControl (VCL Edition) by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\cxSchedulerVCLD7.bpl=ExpressScheduler 2 (VCL Edition) by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxsbD7.bpl=ExpressSideBar by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxComnD7.bpl=ExpressCommonLibrary by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxBarD7.bpl=ExpressBars by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxBarDBNavD7.bpl=ExpressBars DBNavigator by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxBarExtDBItemsD7.bpl=ExpressBars extended DB items by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxBarExtItemsD7.bpl=ExpressBars extended items by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxDockingD7.bpl=ExpressDocking Library by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxLayoutControlD7.bpl=ExpressLayout Control by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxNavBarD7.bpl=ExpressNavBar by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxGDIPlusD7.bpl=ExpressGDI+ Library by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxPSCoreD7.bpl=ExpressPrinting System by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\cxVerticalGridVCLD7.bpl=ExpressVerticalGrid (VCL Edition) by Developer Express Inc. +C:\Archivos de programa\Clever Components\Database Comparer\Delphi 7\Lib\ComparerD7.bpl=Database Comparer VCL +C:\Archivos de programa\Clever Components\Database Comparer\Delphi 7\Lib\ComparerBdeD7.bpl=Database Comparer VCL BDE +C:\Archivos de programa\Clever Components\Database Comparer\Delphi 7\Lib\ComparerDBXD7.bpl=Database Comparer VCL DBX +C:\Archivos de programa\Clever Components\Database Comparer\Delphi 7\Lib\ComparerIbxD7.bpl=Database Comparer VCL IBX +C:\Archivos de programa\Clever Components\Database Comparer\Delphi 7\Lib\ComparerAdoD7.bpl=Database Comparer VCL ADO +C:\WINDOWS\system32\dclShX_Namespace_V3D7.bpl=(untitled) +C:\WINDOWS\system32\vclShX_Namespace_v3D7.bpl=(untitled) +[HistoryLists\hlDebugSourcePath] +Count=1 +Item0=D:\Proyectos\Componentes\GUISDK\Sources\;D:\Proyectos\Componentes\PluginSDK\Source\;D:\Proyectos\FactuGES (Estudio)\Codigo\Modulos\Contactos\Cliente;D:\Proyectos\FactuGES (Estudio)\Codigo\Modulos\Contactos\Reglas +[HistoryLists\hlUnitAliases] +Count=1 +Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +[HistoryLists\hlSearchPath] +Count=16 +Item0=..\Modulos\Presupuestos\Reglas;..\Modulos\Contactos\Reglas;..\Base;..\Configuracion;..\Usuarios;..\Modulos\Albaranes de cliente\Reglas +Item1=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\Base;..\Configuracion;..\Usuarios;..\Modulos\Intervalos;..\Modulos\Documentos asociados;..\Modulos\Contactos\Cliente;..\Modulos\Contactos\Reglas;..\Modulos\Presupuestos\Cliente;..\Modulos\Presupuestos\Reglas;..\Modulos\Albaranes de cliente\Cliente;..\Modulos\Albaranes de cliente\Reglas;..\Modulos\Facturas de cliente\Cliente;..\Modulos\Facturas de cliente\Reglas;..\Modulos\Pedidos a proveedor\Cliente;..\Modulos\Pedidos a proveedor\Reglas;..\Modulos\Facturas de proveedor\Cliente;..\Modulos\Facturas de proveedor\Reglas;..\Modulos\Montajes\Reglas;..\Modulos\Montajes\Cliente;..\Modulos\Articulos\Cliente;..\Modulos\Articulos\Reglas;..\Modulos\Almacenes\Reglas;..\Modulos\Almacenes\Cliente;..\Modulos\Pagos\Reglas;..\Modulos\Pagos\Cliente;..\Modulos\Cuentas\Reglas;..\Modulos\Cuentas\Cliente;..\Modulos\Asientos\Reglas;..\Modulos\Asientos\Cliente;..\Modulos\Calendarios\Cliente;..\Modulos\Calendarios\Reglas +Item2=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente;..\..\Asientos\Cliente;..\..\Cuentas\Cliente +Item3=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente;..\..\Asientos\Cliente +Item4=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente +Item5=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente +Item6=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente;..\..\Documentos asociados;..\..\Contactos\Cliente;..\..\Almacenes\Cliente +Item7=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados +Item8=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente;..\..\Documentos asociados;..\..\Contactos\Cliente +Item9=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente;..\..\Documentos asociados +Item10=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente +Item11=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados;..\..\Montajes\Cliente;..\..\Almacenes\Cliente +Item12=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados;..\..\Montajes\Cliente +Item13=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\Servidor +Item14=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\base;..\Modulos\Calendarios\Cliente;..\Modulos\Calendarios\Reglas +Item15=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\Base;..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios +[HistoryLists\hlUnitOutputDirectory] +Count=1 +Item0=.\ +[HistoryLists\hlOutputDirectorry] +Count=2 +Item0=..\Output\Servidor +Item1=..\Output\Cliente +[HistoryLists\hlBPLOutput] +Count=3 +Item0=..\..\..\Output\Cliente +Item1=..\Output\Cliente +Item2=..\..\Output\Cliente +[HistoryLists\hlDCPOutput] +Count=1 +Item0=.\ +[Exception Log] +EurekaLog Version=519 +Activate=0 +Activate Handle=1 +Save Log File=1 +Foreground Tab=0 +Freeze Activate=0 +Freeze Timeout=0 +Freeze Message=The application seems to be frozen. +SMTP From=eurekalog@email.com +SMTP Host= +SMTP Port=25 +SMTP UserID= +SMTP Password= +Append to Log=0 +Show TerminateBtn=1 +TerminateBtn Operation=1 +Errors Number=32 +Errors Terminate=3 +Email Address= +Email Object= +Email Send Options=0 +Output Path= +Encrypt Password= +AutoCloseDialogSecs=0 +WebSendMode=0 +SupportULR= +HTMLLayout Count=15 +HTMLLine0="%3Chtml%3E" +HTMLLine1=" %3Chead%3E" +HTMLLine2=" %3C/head%3E" +HTMLLine3=" %3Cbody TopMargin=10 LeftMargin=10%3E" +HTMLLine4=" %3Ctable width="100%%" border="0"%3E" +HTMLLine5=" %3Ctr%3E" +HTMLLine6=" %3Ctd nowrap%3E" +HTMLLine7=" %3Cfont face="Lucida Console, Courier" size="2"%3E" +HTMLLine8=" %3C%%HTML_TAG%%%3E" +HTMLLine9=" %3C/font%3E" +HTMLLine10=" %3C/td%3E" +HTMLLine11=" %3C/tr%3E" +HTMLLine12=" %3C/table%3E" +HTMLLine13=" %3C/body%3E" +HTMLLine14="%3C/html%3E" +AutoCrashOperation=1 +AutoCrashNumber=10 +AutoCrashMinutes=1 +WebURL= +WebUserID= +WebPassword= +WebPort=0 +AttachedFiles= +Count=0 +EMail Message Line Count=0 +loNoDuplicateErrors=0 +loAppendReproduceText=0 +loDeleteLogAtVersionChange=0 +loAddComputerNameInLogFileName=0 +loSaveModulesSection=1 +loSaveCPUSection=1 +soAppStartDate=1 +soAppName=1 +soAppVersionNumber=1 +soAppParameters=1 +soAppCompilationDate=1 +soExcDate=1 +soExcAddress=1 +soExcModule=1 +soExcType=1 +soExcMessage=1 +soActCtlsFormClass=1 +soActCtlsFormText=1 +soActCtlsControlClass=1 +soActCtlsControlText=1 +soCmpName=1 +soCmpUser=1 +soCmpTotalMemory=1 +soCmpFreeMemory=1 +soCmpTotalDisk=1 +soCmpFreeDisk=1 +soCmpSysUpTime=1 +soCmpProcessor=1 +soCmpDisplayMode=1 +soOSType=1 +soOSBuildN=1 +soOSUpdate=1 +soOSLanguage=1 +soNetIP=1 +soNetSubmask=1 +soNetGateway=1 +soNetDNS1=1 +soNetDNS2=1 +soNetDHCP=1 +sndShowSendDialog=1 +sndShowSuccessFailureMsg=0 +sndSendEntireLog=0 +sndSendXMLLogCopy=0 +sndSendScreenshot=0 +sndUseOnlyActiveWindow=0 +sndSendLastHTMLPage=1 +sndSendInSeparatedThread=0 +sndAddDateInFileName=0 +sndCompressAllFiles=0 +edoShowExceptionDialog=1 +edoSendEmailChecked=1 +edoAttachScreenshotChecked=1 +edoShowCopyToClipOption=1 +edoShowDetailsButton=1 +edoShowInDetailedMode=0 +edoShowInTopMostMode=0 +edoUseEurekaLogLookAndFeel=1 +csoShowDLLs=1 +csoShowBPLs=1 +csoShowBorlandThreads=1 +csoShowWindowsThreads=1 +csoShowProcedureOffset=0 +boActivateCrashDetection=0 +boPauseBorlandThreads=0 +boDoNotPauseMainThread=0 +boPauseWindowsThreads=0 +boUseMainModuleOptions=1 +boCopyLogInCaseOfError=1 +boSaveCompressedCopyInCaseOfError=0 +Count mtInformationMsgCaption=1 +mtInformationMsgCaption0="Information." +Count mtQuestionMsgCaption=1 +mtQuestionMsgCaption0="Question." +Count mtDialog_Caption=1 +mtDialog_Caption0="Error." +Count mtDialog_ErrorMsgCaption=2 +mtDialog_ErrorMsgCaption0="An error has occurred during program execution." +mtDialog_ErrorMsgCaption1="Please read the following information for further details." +Count mtDialog_GeneralCaption=1 +mtDialog_GeneralCaption0="General" +Count mtDialog_GeneralHeader=1 +mtDialog_GeneralHeader0="General Information" +Count mtDialog_CallStackCaption=1 +mtDialog_CallStackCaption0="Call Stack" +Count mtDialog_CallStackHeader=1 +mtDialog_CallStackHeader0="Call Stack Information" +Count mtDialog_ModulesCaption=1 +mtDialog_ModulesCaption0="Modules" +Count mtDialog_ModulesHeader=1 +mtDialog_ModulesHeader0="Modules Information" +Count mtDialog_CPUCaption=1 +mtDialog_CPUCaption0="CPU" +Count mtDialog_CPUHeader=1 +mtDialog_CPUHeader0="CPU Information" +Count mtDialog_CustomDataCaption=1 +mtDialog_CustomDataCaption0="Other" +Count mtDialog_CustomDataHeader=1 +mtDialog_CustomDataHeader0="Other Information" +Count mtDialog_OKButtonCaption=1 +mtDialog_OKButtonCaption0="%26OK" +Count mtDialog_TerminateButtonCaption=1 +mtDialog_TerminateButtonCaption0="%26Terminate" +Count mtDialog_RestartButtonCaption=1 +mtDialog_RestartButtonCaption0="%26Restart" +Count mtDialog_DetailsButtonCaption=1 +mtDialog_DetailsButtonCaption0="%26Details" +Count mtDialog_SendMessage=1 +mtDialog_SendMessage0="%26Send this error via Internet" +Count mtDialog_ScreenshotMessage=1 +mtDialog_ScreenshotMessage0="%26Attach a Screenshot image" +Count mtDialog_CopyMessage=1 +mtDialog_CopyMessage0="%26Copy to Clipboard" +Count mtDialog_SupportMessage=1 +mtDialog_SupportMessage0="Go to the Support Page" +Count mtLog_AppHeader=1 +mtLog_AppHeader0="Application" +Count mtLog_AppStartDate=1 +mtLog_AppStartDate0="Start Date" +Count mtLog_AppName=1 +mtLog_AppName0="Name/Description" +Count mtLog_AppVersionNumber=1 +mtLog_AppVersionNumber0="Version Number" +Count mtLog_AppParameters=1 +mtLog_AppParameters0="Parameters" +Count mtLog_AppCompilationDate=1 +mtLog_AppCompilationDate0="Compilation Date" +Count mtLog_ExcHeader=1 +mtLog_ExcHeader0="Exception" +Count mtLog_ExcDate=1 +mtLog_ExcDate0="Date" +Count mtLog_ExcAddress=1 +mtLog_ExcAddress0="Address" +Count mtLog_ExcModule=1 +mtLog_ExcModule0="Module" +Count mtLog_ExcType=1 +mtLog_ExcType0="Type" +Count mtLog_ExcMessage=1 +mtLog_ExcMessage0="Message" +Count mtLog_ActCtrlsHeader=1 +mtLog_ActCtrlsHeader0="Active Controls" +Count mtLog_ActCtrlsFormClass=1 +mtLog_ActCtrlsFormClass0="Form Class" +Count mtLog_ActCtrlsFormText=1 +mtLog_ActCtrlsFormText0="Form Text" +Count mtLog_ActCtrlsControlClass=1 +mtLog_ActCtrlsControlClass0="Control Class" +Count mtLog_ActCtrlsControlText=1 +mtLog_ActCtrlsControlText0="Control Text" +Count mtLog_CmpHeader=1 +mtLog_CmpHeader0="Computer" +Count mtLog_CmpName=1 +mtLog_CmpName0="Name" +Count mtLog_CmpUser=1 +mtLog_CmpUser0="User" +Count mtLog_CmpTotalMemory=1 +mtLog_CmpTotalMemory0="Total Memory" +Count mtLog_CmpFreeMemory=1 +mtLog_CmpFreeMemory0="Free Memory" +Count mtLog_CmpTotalDisk=1 +mtLog_CmpTotalDisk0="Total Disk" +Count mtLog_CmpFreeDisk=1 +mtLog_CmpFreeDisk0="Free Disk" +Count mtLog_CmpSystemUpTime=1 +mtLog_CmpSystemUpTime0="System Up Time" +Count mtLog_CmpProcessor=1 +mtLog_CmpProcessor0="Processor" +Count mtLog_CmpDisplayMode=1 +mtLog_CmpDisplayMode0="Display Mode" +Count mtLog_OSHeader=1 +mtLog_OSHeader0="Operating System" +Count mtLog_OSType=1 +mtLog_OSType0="Type" +Count mtLog_OSBuildN=1 +mtLog_OSBuildN0="Build #" +Count mtLog_OSUpdate=1 +mtLog_OSUpdate0="Update" +Count mtLog_OSLanguage=1 +mtLog_OSLanguage0="Language" +Count mtLog_NetHeader=1 +mtLog_NetHeader0="Network" +Count mtLog_NetIP=1 +mtLog_NetIP0="IP Address" +Count mtLog_NetSubmask=1 +mtLog_NetSubmask0="Submask" +Count mtLog_NetGateway=1 +mtLog_NetGateway0="Gateway" +Count mtLog_NetDNS1=1 +mtLog_NetDNS10="DNS 1" +Count mtLog_NetDNS2=1 +mtLog_NetDNS20="DNS 2" +Count mtLog_NetDHCP=1 +mtLog_NetDHCP0="DHCP" +Count mtLog_CustInfoHeader=1 +mtLog_CustInfoHeader0="Custom Information" +Count mtCallStack_Address=1 +mtCallStack_Address0="Address" +Count mtCallStack_Name=1 +mtCallStack_Name0="Module" +Count mtCallStack_Unit=1 +mtCallStack_Unit0="Unit" +Count mtCallStack_Class=1 +mtCallStack_Class0="Class" +Count mtCallStack_Procedure=1 +mtCallStack_Procedure0="Procedure/Method" +Count mtCallStack_Line=1 +mtCallStack_Line0="Line" +Count mtCallStack_MainThread=1 +mtCallStack_MainThread0="Main" +Count mtCallStack_ExceptionThread=1 +mtCallStack_ExceptionThread0="Exception Thread" +Count mtCallStack_RunningThread=1 +mtCallStack_RunningThread0="Running Thread" +Count mtCallStack_CallingThread=1 +mtCallStack_CallingThread0="Calling Thread" +Count mtCallStack_ThreadID=1 +mtCallStack_ThreadID0="ID" +Count mtCallStack_ThreadPriority=1 +mtCallStack_ThreadPriority0="Priority" +Count mtCallStack_ThreadClass=1 +mtCallStack_ThreadClass0="Class" +Count mtSendDialog_Caption=1 +mtSendDialog_Caption0="Send." +Count mtSendDialog_Message=1 +mtSendDialog_Message0="Message" +Count mtSendDialog_Resolving=1 +mtSendDialog_Resolving0="Resolving DNS..." +Count mtSendDialog_Connecting=1 +mtSendDialog_Connecting0="Connecting with server..." +Count mtSendDialog_Connected=1 +mtSendDialog_Connected0="Connected with server." +Count mtSendDialog_Sending=1 +mtSendDialog_Sending0="Sending message..." +Count mtReproduceDialog_Caption=1 +mtReproduceDialog_Caption0="Request" +Count mtReproduceDialog_Request=1 +mtReproduceDialog_Request0="Please describe the steps to reproduce the error:" +Count mtReproduceDialog_OKButtonCaption=1 +mtReproduceDialog_OKButtonCaption0="%26OK" +Count mtModules_Handle=1 +mtModules_Handle0="Handle" +Count mtModules_Name=1 +mtModules_Name0="Name" +Count mtModules_Description=1 +mtModules_Description0="Description" +Count mtModules_Version=1 +mtModules_Version0="Version" +Count mtModules_Size=1 +mtModules_Size0="Size" +Count mtModules_LastModified=1 +mtModules_LastModified0="Modified" +Count mtModules_Path=1 +mtModules_Path0="Path" +Count mtCPU_Registers=1 +mtCPU_Registers0="Registers" +Count mtCPU_Stack=1 +mtCPU_Stack0="Stack" +Count mtCPU_MemoryDump=1 +mtCPU_MemoryDump0="Memory Dump" +Count mtSend_SuccessMsg=1 +mtSend_SuccessMsg0="The message was sent successfully." +Count mtSend_FailureMsg=1 +mtSend_FailureMsg0="Sorry, sending the message didn't work." + + diff --git a/Servidor/FactuGES_Server.dpr b/Servidor/FactuGES_Server.dpr new file mode 100644 index 0000000..6bd0057 --- /dev/null +++ b/Servidor/FactuGES_Server.dpr @@ -0,0 +1,71 @@ +program FactuGES_Server; + +{#ROGEN:FactuGES.rodl} // RemObjects: Careful, do not remove! + +uses + uROComInit, + Forms, + fServerForm in 'fServerForm.pas' {ServerForm}, + FactuGES_Intf in 'FactuGES_Intf.pas', + FactuGES_Invk in 'FactuGES_Invk.pas', + uDataModuleServer in 'uDataModuleServer.pas' {dmServer: TDataModule}, + srvContactos_Impl in '..\Modulos\Contactos\Servidor\srvContactos_Impl.pas' {srvContactos: TDARemoteService}, + srvLogin_Impl in 'srvLogin_Impl.pas' {srvLogin: TDALoginService}, + srvPresupuestos_Impl in '..\Modulos\Presupuestos\Servidor\srvPresupuestos_Impl.pas' {srvPresupuestos: TDARemoteService}, + schPresupuestosServer_Intf in '..\Modulos\Presupuestos\Reglas\schPresupuestosServer_Intf.pas', + schPresupuestosClient_Intf in '..\Modulos\Presupuestos\Reglas\schPresupuestosClient_Intf.pas', + schPedidosProveedorClient_Intf in '..\Modulos\Pedidos a proveedor\Reglas\schPedidosProveedorClient_Intf.pas', + schPedidosProveedorServer_Intf in '..\Modulos\Pedidos a proveedor\Reglas\schPedidosProveedorServer_Intf.pas', + uConfiguracion in 'uConfiguracion.pas' {fConfiguracion}, + uConexionBD in 'uConexionBD.pas' {frConexionBD: TFrame}, + srvAlbaranesCliente_Impl in '..\Modulos\Albaranes de cliente\Servidor\srvAlbaranesCliente_Impl.pas' {srvAlbaranesCliente: TDARemoteService}, + schAlbaranesClienteClient_Intf in '..\Modulos\Albaranes de cliente\Reglas\schAlbaranesClienteClient_Intf.pas', + schAlbaranesClienteServer_Intf in '..\Modulos\Albaranes de cliente\Reglas\schAlbaranesClienteServer_Intf.pas', + schContactosClient_Intf in '..\Modulos\Contactos\Reglas\schContactosClient_Intf.pas', + schContactosServer_Intf in '..\Modulos\Contactos\Reglas\schContactosServer_Intf.pas', + uFrameConfiguracion in 'uFrameConfiguracion.pas' {FrameConfiguracion: TFrame}, + uConfGeneral in 'uConfGeneral.pas' {frConfGeneral: TFrame}, + srvFacturasCliente_Impl in '..\Modulos\Facturas de cliente\Servidor\srvFacturasCliente_Impl.pas' {srvFacturasCliente: TDARemoteService}, + schFacturasClienteClient_Intf in '..\Modulos\Facturas de cliente\Reglas\schFacturasClienteClient_Intf.pas', + schFacturasClienteServer_Intf in '..\Modulos\Facturas de cliente\Reglas\schFacturasClienteServer_Intf.pas', + srvAlmacenes_Impl in '..\Modulos\Almacenes\Servidor\srvAlmacenes_Impl.pas' {srvAlmacenes: TDARemoteService}, + schAlmacenesClient_Intf in '..\Modulos\Almacenes\Reglas\schAlmacenesClient_Intf.pas', + schAlmacenesServer_Intf in '..\Modulos\Almacenes\Reglas\schAlmacenesServer_Intf.pas', + schArticulosClient_Intf in '..\Modulos\Articulos\Reglas\schArticulosClient_Intf.pas', + schArticulosServer_Intf in '..\Modulos\Articulos\Reglas\schArticulosServer_Intf.pas', + srvArticulos_Impl in '..\Modulos\Articulos\Servidor\srvArticulos_Impl.pas' {srvArticulos: TDARemoteService}, + srvPedidosProveedor_Impl in '..\Modulos\Pedidos a proveedor\Servidor\srvPedidosProveedor_Impl.pas' {srvPedidosProveedor: TDARemoteService}, + srvMontajes_Impl in '..\Modulos\Montajes\Servidor\srvMontajes_Impl.pas' {srvMontajes: TDARemoteService}, + schMontajesClient_Intf in '..\Modulos\Montajes\Reglas\schMontajesClient_Intf.pas', + schMontajesServer_Intf in '..\Modulos\Montajes\Reglas\schMontajesServer_Intf.pas', + srvFacturasProveedor_Impl in '..\Modulos\Facturas de proveedor\Servidor\srvFacturasProveedor_Impl.pas' {srvFacturasProveedor: TDARemoteService}, + schFacturasProveedorClient_Intf in '..\Modulos\Facturas de proveedor\Reglas\schFacturasProveedorClient_Intf.pas', + schFacturasProveedorServer_Intf in '..\Modulos\Facturas de proveedor\Reglas\schFacturasProveedorServer_Intf.pas', + schPagosServer_Intf in '..\Modulos\Pagos\Reglas\schPagosServer_Intf.pas', + schPagosClient_Intf in '..\Modulos\Pagos\Reglas\schPagosClient_Intf.pas', + srvPagos_Impl in '..\Modulos\Pagos\Servidor\srvPagos_Impl.pas' {srvPagos: TDARemoteService}, + srvCuentas_Impl in '..\Modulos\Cuentas\Servidor\srvCuentas_Impl.pas' {srvCuentas: TDARemoteService}, + schCuentasClient_Intf in '..\Modulos\Cuentas\Reglas\schCuentasClient_Intf.pas', + schCuentasServer_Intf in '..\Modulos\Cuentas\Reglas\schCuentasServer_Intf.pas', + srvComisiones_Impl in 'srvComisiones_Impl.pas' {srvComisiones: TRORemoteDataModule}, + srvIntervalos_Impl in '..\Modulos\Intervalos\Servidor\srvIntervalos_Impl.pas' {srvIntervalos: TDARemoteService}, + srvAsientos_Impl in '..\Modulos\Asientos\Servidor\srvAsientos_Impl.pas' {srvAsientos: TDARemoteService}, + schAsientosClient_Intf in '..\Modulos\Asientos\Reglas\schAsientosClient_Intf.pas', + schAsientosServer_Intf in '..\Modulos\Asientos\Reglas\schAsientosServer_Intf.pas', + srvConfiguracion_Impl in 'srvConfiguracion_Impl.pas' {srvConfiguracion: TRORemoteDataModule}, + srvCitas_Impl in '..\Modulos\Calendarios\Servidor\srvCitas_Impl.pas' {srvCitas: TDARemoteService}, + schCitasClient_Intf in '..\Modulos\Calendarios\Reglas\schCitasClient_Intf.pas', + schCitasServer_Intf in '..\Modulos\Calendarios\Reglas\schCitasServer_Intf.pas', + schComisionesClient_Intf in '..\Modulos\Contactos\Reglas\schComisionesClient_Intf.pas', + schComisionesServer_Intf in '..\Modulos\Contactos\Reglas\schComisionesServer_Intf.pas'; + +{$R *.res} +{$R RODLFile.res} + +begin + Application.Initialize; + Application.CreateForm(TdmServer, dmServer); + Application.CreateForm(TServerForm, ServerForm); + Application.Run; + Application.Terminate; +end. diff --git a/Servidor/FactuGES_Server.drc b/Servidor/FactuGES_Server.drc new file mode 100644 index 0000000..4c1ff2f --- /dev/null +++ b/Servidor/FactuGES_Server.drc @@ -0,0 +1,2320 @@ +/* VER150 + Generated by the Borland Delphi Pascal Compiler + because -GD or --drc was supplied to the compiler. + + This file contains compiler-generated resources that + were bound to the executable. + If this file is empty, then no compiler-generated + resources were bound to the produced executable. +*/ + +#define TeeConst_TeeMsg_ValuesArrowEndY 64368 +#define TeeConst_TeeMsg_DefaultFontName 64384 +#define TeeConst_TeeMsg_CheckPointerSize 64385 +#define TeeConst_TeeMsg_FunctionPeriod 64386 +#define TeeConst_TeeMsg_PieOther 64387 +#define TeeConst_TeeMsg_ShapeGallery1 64388 +#define TeeConst_TeeMsg_ShapeGallery2 64389 +#define TeeConst_TeeMsg_ValuesX 64390 +#define TeeConst_TeeMsg_ValuesY 64391 +#define TeeConst_TeeMsg_ValuesPie 64392 +#define TeeConst_TeeMsg_ValuesBar 64393 +#define TeeConst_TeeMsg_ValuesAngle 64394 +#define TeeConst_TeeMsg_ValuesGanttStart 64395 +#define TeeConst_TeeMsg_ValuesGanttEnd 64396 +#define TeeConst_TeeMsg_ValuesGanttNextTask 64397 +#define TeeConst_TeeMsg_ValuesBubbleRadius 64398 +#define TeeConst_TeeMsg_ValuesArrowEndX 64399 +#define TeeConst_TeeMsg_GanttSample6 64400 +#define TeeConst_TeeMsg_GanttSample7 64401 +#define TeeConst_TeeMsg_GanttSample8 64402 +#define TeeConst_TeeMsg_GanttSample9 64403 +#define TeeConst_TeeMsg_GanttSample10 64404 +#define TeeConst_TeeMsg_DefaultFontSize 64405 +#define TeeConst_TeeMsg_DefaultGalleryFontSize 64406 +#define TeeConst_TeeMsg_FunctionAdd 64407 +#define TeeConst_TeeMsg_FunctionSubtract 64408 +#define TeeConst_TeeMsg_FunctionMultiply 64409 +#define TeeConst_TeeMsg_FunctionDivide 64410 +#define TeeConst_TeeMsg_FunctionHigh 64411 +#define TeeConst_TeeMsg_FunctionLow 64412 +#define TeeConst_TeeMsg_FunctionAverage 64413 +#define TeeConst_TeeMsg_GalleryShape 64414 +#define TeeConst_TeeMsg_GalleryBubble 64415 +#define TeeConst_TeeMsg_PieSample3 64416 +#define TeeConst_TeeMsg_PieSample4 64417 +#define TeeConst_TeeMsg_PieSample5 64418 +#define TeeConst_TeeMsg_PieSample6 64419 +#define TeeConst_TeeMsg_PieSample7 64420 +#define TeeConst_TeeMsg_PieSample8 64421 +#define TeeConst_TeeMsg_GalleryChartName 64422 +#define TeeConst_TeeMsg_GalleryStandard 64423 +#define TeeConst_TeeMsg_GalleryFunctions 64424 +#define TeeConst_TeeMsg_GalleryArrow 64425 +#define TeeConst_TeeMsg_GalleryGantt 64426 +#define TeeConst_TeeMsg_GanttSample1 64427 +#define TeeConst_TeeMsg_GanttSample2 64428 +#define TeeConst_TeeMsg_GanttSample3 64429 +#define TeeConst_TeeMsg_GanttSample4 64430 +#define TeeConst_TeeMsg_GanttSample5 64431 +#define TeeConst_TeeMsg_BarOffsetPercent 64432 +#define TeeConst_TeeMsg_DefaultPercentOf 64433 +#define TeeConst_TeeMsg_DefPercentFormat 64434 +#define TeeConst_TeeMsg_DefValueFormat 64435 +#define TeeConst_TeeMsg_AxisTitle 64436 +#define TeeConst_TeeMsg_AxisLabels 64437 +#define TeeConst_TeeMsg_GalleryLine 64438 +#define TeeConst_TeeMsg_GalleryPoint 64439 +#define TeeConst_TeeMsg_GalleryArea 64440 +#define TeeConst_TeeMsg_GalleryBar 64441 +#define TeeConst_TeeMsg_GalleryHorizBar 64442 +#define TeeConst_TeeMsg_GalleryPie 64443 +#define TeeConst_TeeMsg_GalleryFastLine 64444 +#define TeeConst_TeeMsg_Rotation 64445 +#define TeeConst_TeeMsg_PieSample1 64446 +#define TeeConst_TeeMsg_PieSample2 64447 +#define TeeConst_TeeMsg_LegendColorWidth 64448 +#define TeeConst_TeeMsg_SeriesSetDataSource 64449 +#define TeeConst_TeeMsg_SeriesInvDataSource 64450 +#define TeeConst_TeeMsg_FillSample 64451 +#define TeeConst_TeeMsg_Angle 64452 +#define TeeConst_TeeMsg_AxisLogDateTime 64453 +#define TeeConst_TeeMsg_AxisLogNotPositive 64454 +#define TeeConst_TeeMsg_AxisLabelSep 64455 +#define TeeConst_TeeMsg_AxisIncrementNeg 64456 +#define TeeConst_TeeMsg_AxisMinMax 64457 +#define TeeConst_TeeMsg_AxisMaxMin 64458 +#define TeeConst_TeeMsg_AxisLogBase 64459 +#define TeeConst_TeeMsg_MaxPointsPerPage 64460 +#define TeeConst_TeeMsg_3dPercent 64461 +#define TeeConst_TeeMsg_CircularSeries 64462 +#define TeeConst_TeeMsg_BarWidthPercent 64463 +#define MidConst_SFieldConstFail 64464 +#define MidConst_SDefExprFail 64465 +#define MidConst_SNoEditsAllowed 64466 +#define MidConst_SNoDeletesAllowed 64467 +#define MidConst_SNoInsertsAllowed 64468 +#define MidConst_SConnectionMissing 64469 +#define MidConst_SNoCircularConnection 64470 +#define OleConst_SLinkProperties 64471 +#define OleConst_SInvalidLinkSource 64472 +#define OleConst_SCannotBreakLink 64473 +#define OleConst_SEmptyContainer 64474 +#define OleConst_SInvalidVerb 64475 +#define OleConst_SPropDlgCaption 64476 +#define OleConst_SInvalidStreamFormat 64477 +#define TeeConst_TeeMsg_LegendTopPos 64478 +#define TeeConst_TeeMsg_LegendFirstValue 64479 +#define VDBConsts_SCancelEdit 64480 +#define VDBConsts_SRefreshRecord 64481 +#define VDBConsts_SDataSourceFixed 64482 +#define VDBConsts_SPropDefByLookup 64483 +#define VDBConsts_SRemoteLogin 64484 +#define MidConst_SNoDataProvider 64485 +#define MidConst_SInvalidDataPacket 64486 +#define MidConst_SRefreshError 64487 +#define MidConst_SNoCircularReference 64488 +#define MidConst_SErrorLoadingMidas 64489 +#define MidConst_SCannotCreateDataSet 64490 +#define MidConst_SNoConnectToBroker 64491 +#define MidConst_SNoParentConnection 64492 +#define MidConst_SConstraintFailed 64493 +#define MidConst_SField 64494 +#define MidConst_SRecConstFail 64495 +#define cxEditConsts_scxRegExprMissing 64496 +#define cxEditConsts_scxRegExprUnnecessary 64497 +#define cxEditConsts_scxRegExprIncorrectSpace 64498 +#define cxEditConsts_scxRegExprNotCompiled 64499 +#define cxEditConsts_scxRegExprIncorrectParameterQuantifier 64500 +#define cxEditConsts_scxRegExprCantUseParameterQuantifier 64501 +#define cxEditConsts_scxMaskEditRegExprError 64502 +#define cxEditConsts_scxMaskEditInvalidEditValue 64503 +#define VDBConsts_SFirstRecord 64504 +#define VDBConsts_SPriorRecord 64505 +#define VDBConsts_SNextRecord 64506 +#define VDBConsts_SLastRecord 64507 +#define VDBConsts_SInsertRecord 64508 +#define VDBConsts_SDeleteRecord 64509 +#define VDBConsts_SEditRecord 64510 +#define VDBConsts_SPostEdit 64511 +#define cxEditConsts_scxRegExprLine 64512 +#define cxEditConsts_scxRegExprChar 64513 +#define cxEditConsts_scxRegExprNotAssignedSourceStream 64514 +#define cxEditConsts_scxRegExprEmptySourceStream 64515 +#define cxEditConsts_scxRegExprCantUsePlusQuantifier 64516 +#define cxEditConsts_scxRegExprCantUseStarQuantifier 64517 +#define cxEditConsts_scxRegExprCantCreateEmptyAlt 64518 +#define cxEditConsts_scxRegExprCantCreateEmptyBlock 64519 +#define cxEditConsts_scxRegExprIllegalSymbol 64520 +#define cxEditConsts_scxRegExprIllegalQuantifier 64521 +#define cxEditConsts_scxRegExprIllegalIntegerValue 64522 +#define cxEditConsts_scxRegExprTooBigReferenceNumber 64523 +#define cxEditConsts_scxRegExprCantCreateEmptyEnum 64524 +#define cxEditConsts_scxRegExprSubrangeOrder 64525 +#define cxEditConsts_scxRegExprHexNumberExpected0 64526 +#define cxEditConsts_scxRegExprHexNumberExpected 64527 +#define cxEditConsts_cxSDateThursday 64528 +#define cxEditConsts_cxSDateFriday 64529 +#define cxEditConsts_cxSDateSaturday 64530 +#define cxEditConsts_cxSDateFirst 64531 +#define cxEditConsts_cxSDateSecond 64532 +#define cxEditConsts_cxSDateThird 64533 +#define cxEditConsts_cxSDateFourth 64534 +#define cxEditConsts_cxSDateFifth 64535 +#define cxEditConsts_cxSDateSixth 64536 +#define cxEditConsts_cxSDateSeventh 64537 +#define cxEditConsts_cxSDateBOM 64538 +#define cxEditConsts_cxSDateEOM 64539 +#define cxEditConsts_cxSDateNow 64540 +#define cxEditConsts_scxSEditRepositoryButtonItem 64541 +#define cxEditConsts_scxSEditRepositoryMaskItem 64542 +#define cxEditConsts_scxSEditRepositoryTextItem 64543 +#define pnglang_EPNGCannotAddInvalidImageText 64544 +#define pnglang_EPNGOutMemoryText 64545 +#define pnglang_EPNGHeaderNotPresentText 64546 +#define cxDataConsts_cxSDataReadError 64547 +#define cxDataConsts_cxSDataWriteError 64548 +#define cxEditConsts_cxSEditInvalidRepositoryItem 64549 +#define cxEditConsts_cxSEditNumericValueConvertError 64550 +#define cxEditConsts_cxSEditValidateErrorText 64551 +#define cxEditConsts_cxSEditValueOutOfBounds 64552 +#define cxEditConsts_cxSDateToday 64553 +#define cxEditConsts_cxSDateYesterday 64554 +#define cxEditConsts_cxSDateTomorrow 64555 +#define cxEditConsts_cxSDateSunday 64556 +#define cxEditConsts_cxSDateMonday 64557 +#define cxEditConsts_cxSDateTuesday 64558 +#define cxEditConsts_cxSDateWednesday 64559 +#define pnglang_EPNGInvalidIHDRText 64560 +#define pnglang_EPNGMissingMultipleIDATText 64561 +#define pnglang_EPNGZLIBErrorText 64562 +#define pnglang_EPNGInvalidPaletteText 64563 +#define pnglang_EPNGInvalidFileHeaderText 64564 +#define pnglang_EPNGIHDRNotFirstText 64565 +#define pnglang_EPNGSizeExceedsText 64566 +#define pnglang_EPNGUnknownPalEntryText 64567 +#define pnglang_EPNGUnknownCriticalChunkText 64568 +#define pnglang_EPNGUnknownCompressionText 64569 +#define pnglang_EPNGUnknownInterlaceText 64570 +#define pnglang_EPNGCannotAssignChunkText 64571 +#define pnglang_EPNGUnexpectedEndText 64572 +#define pnglang_EPNGNoImageDataText 64573 +#define pnglang_EPNGCannotChangeSizeText 64574 +#define pnglang_EPNGCannotAddChunkText 64575 +#define IBXConst_SNoDestinationDirectory 64576 +#define IBXConst_SNosourceDirectory 64577 +#define IBXConst_SNoUninstallFile 64578 +#define IBXConst_SOptionNeedsClient 64579 +#define IBXConst_SOptionNeedsServer 64580 +#define IBXConst_SInvalidOption 64581 +#define IBXConst_SInvalidOnErrorResult 64582 +#define IBXConst_SInvalidOnStatusResult 64583 +#define IBXConst_SDPBConstantUnknownEx 64584 +#define IBXConst_STPBConstantUnknownEx 64585 +#define IBXConst_SUnknownPlan 64586 +#define IBXConst_SFieldSizeMismatch 64587 +#define IBXConst_SEventAlreadyRegistered 64588 +#define IBXConst_SStringTooLarge 64589 +#define IBXConst_SNoTimers 64590 +#define pnglang_EPngInvalidCRCText 64591 +#define IBXConst_SServiceActive 64592 +#define IBXConst_SServiceInActive 64593 +#define IBXConst_SServerNameMissing 64594 +#define IBXConst_SQueryParamsError 64595 +#define IBXConst_SStartParamsError 64596 +#define IBXConst_SOutputParsingError 64597 +#define IBXConst_SUseSpecificProcedures 64598 +#define IBXConst_SSQLMonitorAlreadyPresent 64599 +#define IBXConst_SCantPrintValue 64600 +#define IBXConst_SEOFReached 64601 +#define IBXConst_SEOFInComment 64602 +#define IBXConst_SEOFInString 64603 +#define IBXConst_SParamNameExpected 64604 +#define IBXConst_SSuccess 64605 +#define IBXConst_SDelphiException 64606 +#define IBXConst_SNoOptionsSet 64607 +#define IBXConst_SNoRecordsAffected 64608 +#define IBXConst_SNoTableName 64609 +#define IBXConst_SCannotCreatePrimaryIndex 64610 +#define IBXConst_SCannotDropSystemIndex 64611 +#define IBXConst_STableNameMismatch 64612 +#define IBXConst_SIndexFieldMissing 64613 +#define IBXConst_SInvalidCancellation 64614 +#define IBXConst_SInvalidEvent 64615 +#define IBXConst_SMaximumEvents 64616 +#define IBXConst_SNoEventsRegistered 64617 +#define IBXConst_SInvalidQueueing 64618 +#define IBXConst_SInvalidRegistration 64619 +#define IBXConst_SInvalidBatchMove 64620 +#define IBXConst_SSQLDialectInvalid 64621 +#define IBXConst_SSPBConstantNotSupported 64622 +#define IBXConst_SSPBConstantUnknown 64623 +#define IBXConst_SCannotCreateSharedResource 64624 +#define IBXConst_SWindowsAPIError 64625 +#define IBXConst_SColumnListsDontMatch 64626 +#define IBXConst_SColumnTypesDontMatch 64627 +#define IBXConst_SCantEndSharedTransaction 64628 +#define IBXConst_SFieldUnsupportedType 64629 +#define IBXConst_SCircularDataLink 64630 +#define IBXConst_SEmptySQLStatement 64631 +#define IBXConst_SIsASelectStatement 64632 +#define IBXConst_SRequiredParamNotSet 64633 +#define IBXConst_SNoStoredProcName 64634 +#define IBXConst_SIsAExecuteProcedure 64635 +#define IBXConst_SUpdateFailed 64636 +#define IBXConst_SNotCachedUpdates 64637 +#define IBXConst_SNotLiveRequest 64638 +#define IBXConst_SNoProvider 64639 +#define IBXConst_SEmptyQuery 64640 +#define IBXConst_SCannotOpenNonSQLSelect 64641 +#define IBXConst_SNoFieldAccess 64642 +#define IBXConst_SFieldReadOnly 64643 +#define IBXConst_SFieldNotFound 64644 +#define IBXConst_SNotEditing 64645 +#define IBXConst_SCannotInsert 64646 +#define IBXConst_SCannotPost 64647 +#define IBXConst_SCannotUpdate 64648 +#define IBXConst_SCannotDelete 64649 +#define IBXConst_SCannotRefresh 64650 +#define IBXConst_SBufferNotSet 64651 +#define IBXConst_SCircularReference 64652 +#define IBXConst_SSQLParseError 64653 +#define IBXConst_SUserAbort 64654 +#define IBXConst_SDataSetUniDirectional 64655 +#define IBXConst_SXSQLDAIndexOutOfRange 64656 +#define IBXConst_SXSQLDANameDoesNotExist 64657 +#define IBXConst_SEOF 64658 +#define IBXConst_SBOF 64659 +#define IBXConst_SInvalidStatementHandle 64660 +#define IBXConst_SSQLOpen 64661 +#define IBXConst_SSQLClosed 64662 +#define IBXConst_SDatasetOpen 64663 +#define IBXConst_SDatasetClosed 64664 +#define IBXConst_SUnknownSQLDataType 64665 +#define IBXConst_SInvalidColumnIndex 64666 +#define IBXConst_SInvalidParamColumnIndex 64667 +#define IBXConst_SInvalidDataConversion 64668 +#define IBXConst_SColumnIsNotNullable 64669 +#define IBXConst_SBlobCannotBeRead 64670 +#define IBXConst_SBlobCannotBeWritten 64671 +#define IBXConst_SOperationCancelled 64672 +#define IBXConst_SDPBConstantNotSupported 64673 +#define IBXConst_SDPBConstantUnknown 64674 +#define IBXConst_STPBConstantNotSupported 64675 +#define IBXConst_STPBConstantUnknown 64676 +#define IBXConst_SDatabaseClosed 64677 +#define IBXConst_SDatabaseOpen 64678 +#define IBXConst_SDatabaseNameMissing 64679 +#define IBXConst_SNotInTransaction 64680 +#define IBXConst_SInTransaction 64681 +#define IBXConst_STimeoutNegative 64682 +#define IBXConst_SNoDatabasesInTransaction 64683 +#define IBXConst_SUpdateWrongDB 64684 +#define IBXConst_SUpdateWrongTR 64685 +#define IBXConst_SDatabaseNotAssigned 64686 +#define IBXConst_STransactionNotAssigned 64687 +#define uDARes_err_DARDMInvalidSchema 64688 +#define uDARes_err_DARDMUnassignedAdapter 64689 +#define uDARes_err_DARDMConnectionIsNotAssigned 64690 +#define uDARes_err_DARDMCannotFindProxessorForDelta 64691 +#define uDARes_err_NeedShareMem 64692 +#define uDARes_err_ExecuteSQLCommandNotAllowed 64693 +#define IBXConst_SUnknownError 64694 +#define IBXConst_SInterBaseMissing 64695 +#define IBXConst_SInterBaseInstallMissing 64696 +#define IBXConst_SIB60feature 64697 +#define IBXConst_SNotSupported 64698 +#define IBXConst_SNotPermitted 64699 +#define IBXConst_SFileAccessError 64700 +#define IBXConst_SConnectionTimeout 64701 +#define IBXConst_SCannotSetDatabase 64702 +#define IBXConst_SCannotSetTransaction 64703 +#define uDARes_err_FieldTypeNotSupported 64704 +#define uDARes_err_InvalidDataset 64705 +#define uDARes_err_CannotFindItem 64706 +#define uDARes_err_DriverAlreadyLoaded 64707 +#define uDARes_err_InvalidDLL 64708 +#define uDARes_err_UnknownDriver 64709 +#define uDARes_err_UnknownParameter 64710 +#define uDARes_err_FieldIsNotBound 64711 +#define uDARes_err_CannotFindField 64712 +#define uDARes_err_LoadPackageFailed 64713 +#define uDARes_err_InvalidDriverReference 64714 +#define uDARes_err_CannotFindStatement 64715 +#define uDARes_err_CannotFindDefaultItem 64716 +#define uDARes_err_PoolIsNotEmpty 64717 +#define uDARes_err_MaxPoolSizeReached 64718 +#define uDARes_err_LAMEDataset 64719 +#define DBConsts_SProviderExecuteNotSupported 64720 +#define DBConsts_SExprNoAggOnCalcs 64721 +#define DBConsts_SDataSetUnidirectional 64722 +#define DBConsts_SUnassignedVar 64723 +#define DBConsts_SRecordNotFound 64724 +#define DBConsts_SFieldNameTooLarge 64725 +#define DBConsts_SBcdOverflow 64726 +#define DBConsts_SInvalidBcdValue 64727 +#define DBConsts_SInvalidFormatType 64728 +#define DBConsts_SCouldNotParseTimeStamp 64729 +#define DBConsts_SInvalidSqlTimeStamp 64730 +#define uDARes_err_ChangeLogAlreadyStarted 64731 +#define uDARes_err_NotAttachedToDataTable 64732 +#define uDARes_err_DriverProcAlreadyRegistered 64733 +#define uDARes_err_DriverManagerAlreadyCreated 64734 +#define uDARes_err_DriverManagerNotAssigned 64735 +#define DBConsts_SExprNothing 64736 +#define DBConsts_SExprTypeMis 64737 +#define DBConsts_SExprBadScope 64738 +#define DBConsts_SExprNoArith 64739 +#define DBConsts_SExprNotAgg 64740 +#define DBConsts_SExprBadConst 64741 +#define DBConsts_SExprNoAggFilter 64742 +#define DBConsts_SExprEmptyInList 64743 +#define DBConsts_SInvalidKeywordUse 64744 +#define DBConsts_STextFalse 64745 +#define DBConsts_STextTrue 64746 +#define DBConsts_SParameterNotFound 64747 +#define DBConsts_SInvalidVersion 64748 +#define DBConsts_SBadFieldType 64749 +#define DBConsts_SAggActive 64750 +#define DBConsts_SProviderSQLNotSupported 64751 +#define DBConsts_SDataSetClosed 64752 +#define DBConsts_SDataSetEmpty 64753 +#define DBConsts_SDataSetReadOnly 64754 +#define DBConsts_SNestedDataSetClass 64755 +#define DBConsts_SExprTermination 64756 +#define DBConsts_SExprNameError 64757 +#define DBConsts_SExprStringError 64758 +#define DBConsts_SExprInvalidChar 64759 +#define DBConsts_SExprNoLParen 64760 +#define DBConsts_SExprNoRParen 64761 +#define DBConsts_SExprNoRParenOrComma 64762 +#define DBConsts_SExprExpected 64763 +#define DBConsts_SExprBadField 64764 +#define DBConsts_SExprBadNullTest 64765 +#define DBConsts_SExprRangeError 64766 +#define DBConsts_SExprIncorrect 64767 +#define DBConsts_SFieldRequired 64768 +#define DBConsts_SDataSetMissing 64769 +#define DBConsts_SInvalidCalcType 64770 +#define DBConsts_SFieldReadOnly 64771 +#define DBConsts_SFieldIndexError 64772 +#define DBConsts_SNoFieldIndexes 64773 +#define DBConsts_SNotIndexField 64774 +#define DBConsts_SIndexFieldMissing 64775 +#define DBConsts_SNoIndexForFields 64776 +#define DBConsts_SIndexNotFound 64777 +#define DBConsts_SCircularDataLink 64778 +#define DBConsts_SLookupInfoError 64779 +#define DBConsts_SDataSourceChange 64780 +#define DBConsts_SNoNestedMasterSource 64781 +#define DBConsts_SDataSetOpen 64782 +#define DBConsts_SNotEditing 64783 +#define DBConsts_SInvalidFieldKind 64784 +#define DBConsts_SUnknownFieldType 64785 +#define DBConsts_SFieldNameMissing 64786 +#define DBConsts_SDuplicateFieldName 64787 +#define DBConsts_SFieldNotFound 64788 +#define DBConsts_SFieldAccessError 64789 +#define DBConsts_SFieldValueError 64790 +#define DBConsts_SFieldRangeError 64791 +#define DBConsts_SBcdFieldRangeError 64792 +#define DBConsts_SInvalidIntegerValue 64793 +#define DBConsts_SInvalidBoolValue 64794 +#define DBConsts_SInvalidFloatValue 64795 +#define DBConsts_SFieldTypeMismatch 64796 +#define DBConsts_SFieldSizeMismatch 64797 +#define DBConsts_SInvalidVarByteArray 64798 +#define DBConsts_SFieldOutOfRange 64799 +#define JclResources_RsIntelCacheDescr7A 64800 +#define JclResources_RsIntelCacheDescr7B 64801 +#define JclResources_RsIntelCacheDescr7C 64802 +#define JclResources_RsIntelCacheDescr7D 64803 +#define JclResources_RsIntelCacheDescr7F 64804 +#define JclResources_RsIntelCacheDescr82 64805 +#define JclResources_RsIntelCacheDescr83 64806 +#define JclResources_RsIntelCacheDescr84 64807 +#define JclResources_RsIntelCacheDescr85 64808 +#define JclResources_RsIntelCacheDescr86 64809 +#define JclResources_RsIntelCacheDescr87 64810 +#define JclResources_RsIntelCacheDescrB0 64811 +#define JclResources_RsIntelCacheDescrB3 64812 +#define JclResources_RsIntelCacheDescrF0 64813 +#define JclResources_RsIntelCacheDescrF1 64814 +#define DBConsts_SInvalidFieldSize 64815 +#define JclResources_RsIntelCacheDescr45 64816 +#define JclResources_RsIntelCacheDescr50 64817 +#define JclResources_RsIntelCacheDescr51 64818 +#define JclResources_RsIntelCacheDescr52 64819 +#define JclResources_RsIntelCacheDescr5B 64820 +#define JclResources_RsIntelCacheDescr5C 64821 +#define JclResources_RsIntelCacheDescr5D 64822 +#define JclResources_RsIntelCacheDescr60 64823 +#define JclResources_RsIntelCacheDescr66 64824 +#define JclResources_RsIntelCacheDescr67 64825 +#define JclResources_RsIntelCacheDescr68 64826 +#define JclResources_RsIntelCacheDescr70 64827 +#define JclResources_RsIntelCacheDescr71 64828 +#define JclResources_RsIntelCacheDescr72 64829 +#define JclResources_RsIntelCacheDescr78 64830 +#define JclResources_RsIntelCacheDescr79 64831 +#define JclResources_RsIntelCacheDescr04 64832 +#define JclResources_RsIntelCacheDescr06 64833 +#define JclResources_RsIntelCacheDescr08 64834 +#define JclResources_RsIntelCacheDescr0A 64835 +#define JclResources_RsIntelCacheDescr0C 64836 +#define JclResources_RsIntelCacheDescr22 64837 +#define JclResources_RsIntelCacheDescr23 64838 +#define JclResources_RsIntelCacheDescr25 64839 +#define JclResources_RsIntelCacheDescr29 64840 +#define JclResources_RsIntelCacheDescr2C 64841 +#define JclResources_RsIntelCacheDescr30 64842 +#define JclResources_RsIntelCacheDescr40 64843 +#define JclResources_RsIntelCacheDescr41 64844 +#define JclResources_RsIntelCacheDescr42 64845 +#define JclResources_RsIntelCacheDescr43 64846 +#define JclResources_RsIntelCacheDescr44 64847 +#define JclResources_RsRTTIBasedOn 64848 +#define JclResources_RsRTTIFloatType 64849 +#define JclResources_RsRTTIMethodKind 64850 +#define JclResources_RsRTTIParamCount 64851 +#define JclResources_RsRTTIReturnType 64852 +#define JclResources_RsRTTIMaxLen 64853 +#define JclResources_RsRTTIElSize 64854 +#define JclResources_RsRTTIElType 64855 +#define JclResources_RsRTTIElNeedCleanup 64856 +#define JclResources_RsRTTIVarType 64857 +#define JclResources_RsDeclarationFormat 64858 +#define JclResources_RsBlankSearchString 64859 +#define JclResources_RsIntelCacheDescr00 64860 +#define JclResources_RsIntelCacheDescr01 64861 +#define JclResources_RsIntelCacheDescr02 64862 +#define JclResources_RsIntelCacheDescr03 64863 +#define JclResources_RsRTTIVirtualMethod 64864 +#define JclResources_RsRTTIIndex 64865 +#define JclResources_RsRTTIDefault 64866 +#define JclResources_RsRTTIName 64867 +#define JclResources_RsRTTIType 64868 +#define JclResources_RsRTTIFlags 64869 +#define JclResources_RsRTTIGUID 64870 +#define JclResources_RsRTTITypeKind 64871 +#define JclResources_RsRTTIOrdinalType 64872 +#define JclResources_RsRTTIMinValue 64873 +#define JclResources_RsRTTIMaxValue 64874 +#define JclResources_RsRTTINameList 64875 +#define JclResources_RsRTTIClassName 64876 +#define JclResources_RsRTTIParent 64877 +#define JclResources_RsRTTIPropCount 64878 +#define JclResources_RsRTTIUnitName 64879 +#define JclResources_RsRTTIValueOutOfRange 64880 +#define JclResources_RsRTTIUnknownIdentifier 64881 +#define JclResources_RsRTTIVar 64882 +#define JclResources_RsRTTIConst 64883 +#define JclResources_RsRTTIArrayOf 64884 +#define JclResources_RsRTTIOut 64885 +#define JclResources_RsRTTIOrdinal 64886 +#define JclResources_RsRTTITrue 64887 +#define JclResources_RsRTTIFalse 64888 +#define JclResources_RsRTTITypeError 64889 +#define JclResources_RsRTTITypeInfoAt 64890 +#define JclResources_RsRTTIPropRead 64891 +#define JclResources_RsRTTIPropWrite 64892 +#define JclResources_RsRTTIPropStored 64893 +#define JclResources_RsRTTIField 64894 +#define JclResources_RsRTTIStaticMethod 64895 +#define JvResources_RsClBtnHighlight 64896 +#define JvResources_RsCl3DDkShadow 64897 +#define JvResources_RsCl3DLight 64898 +#define JvResources_RsClInfoText 64899 +#define JvResources_RsClInfoBk 64900 +#define JvResources_RsGradientActiveCaption 64901 +#define JvResources_RsGradientInactiveCaption 64902 +#define JvResources_RsHotLight 64903 +#define JvResources_RsMenuBar 64904 +#define JvResources_RsMenuHighlight 64905 +#define JclResources_RsFileUtilsNoVersionInfo 64906 +#define JclResources_RsUnableToOpenKeyRead 64907 +#define JclResources_RsUnableToOpenKeyWrite 64908 +#define JclResources_RsUnableToAccessValue 64909 +#define JclResources_RsWrongDataType 64910 +#define JclResources_RsInconsistentPath 64911 +#define JvResources_RsClMenu 64912 +#define JvResources_RsClWindow 64913 +#define JvResources_RsClWindowFrame 64914 +#define JvResources_RsClMenuText 64915 +#define JvResources_RsClWindowText 64916 +#define JvResources_RsClCaptionText 64917 +#define JvResources_RsClActiveBorder 64918 +#define JvResources_RsClInactiveBorder 64919 +#define JvResources_RsClAppWorkSpace 64920 +#define JvResources_RsClHighlight 64921 +#define JvResources_RsClHighlightText 64922 +#define JvResources_RsClBtnFace 64923 +#define JvResources_RsClBtnShadow 64924 +#define JvResources_RsClGrayText 64925 +#define JvResources_RsClBtnText 64926 +#define JvResources_RsClInactiveCaptionText 64927 +#define JvResources_RsClGold 64928 +#define JvResources_RsClBrightGreen 64929 +#define JvResources_RsClTurquoise 64930 +#define JvResources_RsClPlum 64931 +#define JvResources_RsClGray25 64932 +#define JvResources_RsClRose 64933 +#define JvResources_RsClTan 64934 +#define JvResources_RsClLightYellow 64935 +#define JvResources_RsClLightGreen 64936 +#define JvResources_RsClLightTurquoise 64937 +#define JvResources_RsClPaleBlue 64938 +#define JvResources_RsClLavender 64939 +#define JvResources_RsClScrollBar 64940 +#define JvResources_RsClBackground 64941 +#define JvResources_RsClActiveCaption 64942 +#define JvResources_RsClInactiveCaption 64943 +#define JvResources_RsClDarkGreen 64944 +#define JvResources_RsClDarkTeal 64945 +#define JvResources_RsClDarkBlue 64946 +#define JvResources_RsClIndigo 64947 +#define JvResources_RsClGray80 64948 +#define JvResources_RsClDarkRed 64949 +#define JvResources_RsClOrange 64950 +#define JvResources_RsClDarkYellow 64951 +#define JvResources_RsClBlueGray 64952 +#define JvResources_RsClGray50 64953 +#define JvResources_RsClLightOrange 64954 +#define JvResources_RsClSeaGreen 64955 +#define JvResources_RsClLightBlue 64956 +#define JvResources_RsClViolet 64957 +#define JvResources_RsClGray40 64958 +#define JvResources_RsClPink 64959 +#define JvResources_RsClTeal 64960 +#define JvResources_RsClGray 64961 +#define JvResources_RsClSilver 64962 +#define JvResources_RsClRed 64963 +#define JvResources_RsClLime 64964 +#define JvResources_RsClYellow 64965 +#define JvResources_RsClBlue 64966 +#define JvResources_RsClFuchsia 64967 +#define JvResources_RsClAqua 64968 +#define JvResources_RsClWhite 64969 +#define JvResources_RsClMoneyGreen 64970 +#define JvResources_RsClSkyBlue 64971 +#define JvResources_RsClCream 64972 +#define JvResources_RsClMedGray 64973 +#define JvResources_RsClBrown 64974 +#define JvResources_RsClOliveGreen 64975 +#define JvResources_RsENoGIFData 64976 +#define JvResources_RsEUnrecognizedGIFExt 64977 +#define JvResources_RsEWrongGIFColors 64978 +#define JvResources_RsEBadGIFCodeSize 64979 +#define JvResources_RsEGIFDecodeError 64980 +#define JvResources_RsEGIFEncodeError 64981 +#define JvResources_RsEGIFVersion 64982 +#define JvResources_RsYourTextHereCaption 64983 +#define JvResources_RsEPixelFormatNotImplemented 64984 +#define JvResources_RsEBitCountNotImplemented 64985 +#define JvResources_RsClBlack 64986 +#define JvResources_RsClMaroon 64987 +#define JvResources_RsClGreen 64988 +#define JvResources_RsClOlive 64989 +#define JvResources_RsClNavy 64990 +#define JvResources_RsClPurple 64991 +#define IdResourceStrings_RSThreadTerminateAndWaitFor 64992 +#define JConsts_sChangeJPGSize 64993 +#define JConsts_sJPEGError 64994 +#define JConsts_sJPEGImageFile 64995 +#define JvResources_RsAniExtension 64996 +#define JvResources_RsAniFilterName 64997 +#define JvResources_RsRootValueReplaceFmt 64998 +#define JvResources_RsEUnableToCreateKey 64999 +#define JvResources_RsEEnumeratingRegistry 65000 +#define JvResources_RsEInvalidType 65001 +#define JvResources_RsEUnknownBaseType 65002 +#define JvResources_RsEInvalidPath 65003 +#define JvResources_RsENotAUniqueRootPath 65004 +#define JvResources_RsECircularReferenceOfStorages 65005 +#define JvResources_RsGIFImage 65006 +#define JvResources_RsEChangeGIFSize 65007 +#define IdResourceStrings_RSSocksRequestServerFailed 65008 +#define IdResourceStrings_RSSocksRequestIdentFailed 65009 +#define IdResourceStrings_RSSocksUnknownError 65010 +#define IdResourceStrings_RSSocksServerRespondError 65011 +#define IdResourceStrings_RSSocksAuthMethodError 65012 +#define IdResourceStrings_RSSocksAuthError 65013 +#define IdResourceStrings_RSSocksServerGeneralError 65014 +#define IdResourceStrings_RSSocksServerPermissionError 65015 +#define IdResourceStrings_RSSocksServerNetUnreachableError 65016 +#define IdResourceStrings_RSSocksServerHostUnreachableError 65017 +#define IdResourceStrings_RSSocksServerConnectionRefusedError 65018 +#define IdResourceStrings_RSSocksServerTTLExpiredError 65019 +#define IdResourceStrings_RSSocksServerCommandError 65020 +#define IdResourceStrings_RSSocksServerAddressError 65021 +#define IdResourceStrings_RSUnevenSizeInDecodeStream 65022 +#define IdResourceStrings_RSUnevenSizeInEncodeStream 65023 +#define IdResourceStrings_RSStackECONNABORTED 65024 +#define IdResourceStrings_RSStackECONNRESET 65025 +#define IdResourceStrings_RSStackENOBUFS 65026 +#define IdResourceStrings_RSStackEISCONN 65027 +#define IdResourceStrings_RSStackENOTCONN 65028 +#define IdResourceStrings_RSStackESHUTDOWN 65029 +#define IdResourceStrings_RSStackETOOMANYREFS 65030 +#define IdResourceStrings_RSStackETIMEDOUT 65031 +#define IdResourceStrings_RSStackECONNREFUSED 65032 +#define IdResourceStrings_RSStackELOOP 65033 +#define IdResourceStrings_RSStackENAMETOOLONG 65034 +#define IdResourceStrings_RSStackEHOSTDOWN 65035 +#define IdResourceStrings_RSStackEHOSTUNREACH 65036 +#define IdResourceStrings_RSStackENOTEMPTY 65037 +#define IdResourceStrings_RSStackHOST_NOT_FOUND 65038 +#define IdResourceStrings_RSSocksRequestFailed 65039 +#define IdResourceStrings_RSStackEALREADY 65040 +#define IdResourceStrings_RSStackENOTSOCK 65041 +#define IdResourceStrings_RSStackEDESTADDRREQ 65042 +#define IdResourceStrings_RSStackEMSGSIZE 65043 +#define IdResourceStrings_RSStackEPROTOTYPE 65044 +#define IdResourceStrings_RSStackENOPROTOOPT 65045 +#define IdResourceStrings_RSStackEPROTONOSUPPORT 65046 +#define IdResourceStrings_RSStackESOCKTNOSUPPORT 65047 +#define IdResourceStrings_RSStackEOPNOTSUPP 65048 +#define IdResourceStrings_RSStackEPFNOSUPPORT 65049 +#define IdResourceStrings_RSStackEAFNOSUPPORT 65050 +#define IdResourceStrings_RSStackEADDRINUSE 65051 +#define IdResourceStrings_RSStackEADDRNOTAVAIL 65052 +#define IdResourceStrings_RSStackENETDOWN 65053 +#define IdResourceStrings_RSStackENETUNREACH 65054 +#define IdResourceStrings_RSStackENETRESET 65055 +#define IdResourceStrings_RSHTTPUnknownResponseCode 65056 +#define IdResourceStrings_RSHTTPHeaderAlreadyWritten 65057 +#define IdResourceStrings_RSHTTPErrorParsingCommand 65058 +#define IdResourceStrings_RSHTTPUnsupportedAuthorisationScheme 65059 +#define IdResourceStrings_RSHTTPCannotSwitchSessionStateWhenActive 65060 +#define IdResourceStrings_RSHTTPAuthAlreadyRegistered 65061 +#define IdResourceStrings_RSInvalidServiceName 65062 +#define IdResourceStrings_RSStackError 65063 +#define IdResourceStrings_RSStackEINTR 65064 +#define IdResourceStrings_RSStackEBADF 65065 +#define IdResourceStrings_RSStackEACCES 65066 +#define IdResourceStrings_RSStackEFAULT 65067 +#define IdResourceStrings_RSStackEINVAL 65068 +#define IdResourceStrings_RSStackEMFILE 65069 +#define IdResourceStrings_RSStackEWOULDBLOCK 65070 +#define IdResourceStrings_RSStackEINPROGRESS 65071 +#define IdResourceStrings_RSHTTPNotAcceptable 65072 +#define IdResourceStrings_RSHTTPProxyAuthenticationRequired 65073 +#define IdResourceStrings_RSHTTPRequestTimeout 65074 +#define IdResourceStrings_RSHTTPConflict 65075 +#define IdResourceStrings_RSHTTPGone 65076 +#define IdResourceStrings_RSHTTPLengthRequired 65077 +#define IdResourceStrings_RSHTTPPreconditionFailed 65078 +#define IdResourceStrings_RSHTTPRequestEntityToLong 65079 +#define IdResourceStrings_RSHTTPRequestURITooLong 65080 +#define IdResourceStrings_RSHTTPUnsupportedMediaType 65081 +#define IdResourceStrings_RSHTTPInternalServerError 65082 +#define IdResourceStrings_RSHTTPNotImplemented 65083 +#define IdResourceStrings_RSHTTPBadGateway 65084 +#define IdResourceStrings_RSHTTPServiceUnavailable 65085 +#define IdResourceStrings_RSHTTPGatewayTimeout 65086 +#define IdResourceStrings_RSHTTPHTTPVersionNotSupported 65087 +#define IdResourceStrings_RSHTTPCreated 65088 +#define IdResourceStrings_RSHTTPAccepted 65089 +#define IdResourceStrings_RSHTTPNonAuthoritativeInformation 65090 +#define IdResourceStrings_RSHTTPNoContent 65091 +#define IdResourceStrings_RSHTTPResetContent 65092 +#define IdResourceStrings_RSHTTPPartialContent 65093 +#define IdResourceStrings_RSHTTPMovedPermanently 65094 +#define IdResourceStrings_RSHTTPMovedTemporarily 65095 +#define IdResourceStrings_RSHTTPSeeOther 65096 +#define IdResourceStrings_RSHTTPNotModified 65097 +#define IdResourceStrings_RSHTTPUseProxy 65098 +#define IdResourceStrings_RSHTTPBadRequest 65099 +#define IdResourceStrings_RSHTTPUnauthorized 65100 +#define IdResourceStrings_RSHTTPForbidden 65101 +#define IdResourceStrings_RSHTTPNotFound 65102 +#define IdResourceStrings_RSHTTPMethodeNotallowed 65103 +#define IdResourceStrings_RSReadLnMaxLineLengthExceeded 65104 +#define IdResourceStrings_RSNoCommandHandlerFound 65105 +#define IdResourceStrings_RSWS2CallError 65106 +#define IdResourceStrings_RSWS2LoadError 65107 +#define IdResourceStrings_RSMIMEExtensionEmpty 65108 +#define IdResourceStrings_RSMIMEMIMETypeEmpty 65109 +#define IdResourceStrings_RSMIMEMIMEExtAlreadyExists 65110 +#define IdResourceStrings_RSStatusResolving 65111 +#define IdResourceStrings_RSStatusConnecting 65112 +#define IdResourceStrings_RSStatusConnected 65113 +#define IdResourceStrings_RSStatusDisconnecting 65114 +#define IdResourceStrings_RSStatusDisconnected 65115 +#define IdResourceStrings_RSStatusText 65116 +#define IdResourceStrings_RSConnectTimeout 65117 +#define IdResourceStrings_RSHTTPContinue 65118 +#define IdResourceStrings_RSHTTPOK 65119 +#define IdResourceStrings_RSCouldNotBindSocket 65120 +#define IdResourceStrings_RSFailedTimeZoneInfo 65121 +#define IdResourceStrings_RSNotEnoughDataInBuffer 65122 +#define IdResourceStrings_RSWinsockInitializationError 65123 +#define IdResourceStrings_RSSetSizeExceeded 65124 +#define IdResourceStrings_RSThreadClassNotSpecified 65125 +#define IdResourceStrings_RSFileNotFound 65126 +#define IdResourceStrings_RSOnlyOneAntiFreeze 65127 +#define IdResourceStrings_RSNotConnected 65128 +#define IdResourceStrings_RSObjectTypeNotSupported 65129 +#define IdResourceStrings_RSTerminateThreadTimeout 65130 +#define IdResourceStrings_RSNoExecuteSpecified 65131 +#define IdResourceStrings_RSIdNoDataToRead 65132 +#define IdResourceStrings_RSCanNotBindRange 65133 +#define IdResourceStrings_RSInvalidPortRange 65134 +#define IdResourceStrings_RSReadTimeout 65135 +#define uRORes_err_TooManySessions 65136 +#define uRORes_err_DOMElementIsNIL 65137 +#define uRORes_err_CannotLoadXMLDocument 65138 +#define uRORes_err_ErrorCreatingMsXmlDoc 65139 +#define uRORes_err_NoXMLParsersAvailable 65140 +#define uRORes_err_IDispatchMarshalingNotSupported 65141 +#define uRORes_err_UnsupportedVariantType 65142 +#define uRORes_err_VariantIsNotArray 65143 +#define uRORes_err_InvalidVarArrayDimCount 65144 +#define uRORes_err_MessageNotAssigned 65145 +#define ComConst_SOleError 65146 +#define ComConst_SNoMethod 65147 +#define ComConst_SVarNotObject 65148 +#define ComConst_STooManyParams 65149 +#define IdResourceStrings_RSCannotAllocateSocket 65150 +#define IdResourceStrings_RSConnectionClosedGracefully 65151 +#define uRORes_err_TypeNotSupported 65152 +#define uRORes_err_ClassFactoryNotFound 65153 +#define uRORes_err_IROMessageNotSupported 65154 +#define uRORes_err_ClassAlreadyRegistered 65155 +#define uRORes_err_UnknownProxyInterface 65156 +#define uRORes_err_DispatcherAlreadyAssigned 65157 +#define uRORes_err_CannotFindMessageDispatcher 65158 +#define uRORes_err_ServerOnlySupportsOneDispatcher 65159 +#define uRORes_err_UnhandledException 65160 +#define uRORes_err_ChannelBusy 65161 +#define uRORes_err_ArrayIndexOutOfBounds 65162 +#define uRORes_err_InvalidHeader 65163 +#define uRORes_err_UnknownClassInStream 65164 +#define uRORes_err_UnexpectedClassInStream 65165 +#define uRORes_err_SessionNotFound 65166 +#define uRORes_err_ChannelDoesntSupportIROMetadataReader 65167 +#define uRORes_err_RodlNoEnumValues 65168 +#define uRORes_err_RodlNoStructElementsDefined 65169 +#define uRORes_err_RodlNoOperationsDefined 65170 +#define uRORes_err_RodlUsedFileDoesNotExist 65171 +#define uRORes_err_RodlInvalidDataType 65172 +#define uRORes_err_RodlStructCannotBeNested 65173 +#define uRORes_err_RodlInvalidAncestorType 65174 +#define uRORes_str_ExceptionOnServer 65175 +#define uRORes_str_ExceptionReraisedFromServer 65176 +#define uRORes_err_AssignError 65177 +#define uRORes_err_InvalidRequestStream 65178 +#define uRORes_err_NILMessage 65179 +#define uRORes_err_UnspecifiedInterface 65180 +#define uRORes_err_UnspecifiedMessage 65181 +#define uRORes_err_UnknownMethod 65182 +#define uRORes_err_ClassFactoryDidNotReturnInstance 65183 +#define uRODECConst_sFMT_HEX 65184 +#define uRODECConst_sFMT_HEXL 65185 +#define uRODECConst_sFMT_MIME64 65186 +#define uRODECConst_sFMT_UU 65187 +#define uRODECConst_sFMT_XX 65188 +#define uRODECConst_sInvalidKeySize 65189 +#define uRODECConst_sNotInitialized 65190 +#define uRORes_err_InvalidIndex 65191 +#define uRORes_err_InvalidType 65192 +#define uRORes_err_InvalidStream 65193 +#define uRORes_err_InvalidParamFlag 65194 +#define uRORes_err_InvalidStringLength 65195 +#define uRORes_str_InvalidClassTypeInStream 65196 +#define uRORes_err_UnexpectedEndOfStream 65197 +#define uRORes_err_RodlDuplicateName 65198 +#define uRORes_err_RodlNoDataTypeSpecified 65199 +#define ComStrs_sUDAssociated 65200 +#define ComStrs_sPageIndexError 65201 +#define ComStrs_sInvalidComCtl32 65202 +#define ComStrs_sDateTimeMax 65203 +#define ComStrs_sDateTimeMin 65204 +#define ComStrs_sNeedAllowNone 65205 +#define ComStrs_sFailSetCalDateTime 65206 +#define ComStrs_sFailSetCalMaxSelRange 65207 +#define ComStrs_sFailSetCalMinMaxRange 65208 +#define ComStrs_sFailsetCalSelRange 65209 +#define WinHelpViewer_hNoKeyword 65210 +#define uRODECConst_sProtectionCircular 65211 +#define uRODECConst_sStringFormatExists 65212 +#define uRODECConst_sInvalidStringFormat 65213 +#define uRODECConst_sInvalidFormatString 65214 +#define uRODECConst_sFMT_COPY 65215 +#define ExtCtrls_clNameWindow 65216 +#define ExtCtrls_clNameWindowFrame 65217 +#define ExtCtrls_clNameWindowText 65218 +#define ComStrs_sTabFailClear 65219 +#define ComStrs_sTabFailDelete 65220 +#define ComStrs_sTabFailRetrieve 65221 +#define ComStrs_sTabFailGetObject 65222 +#define ComStrs_sTabFailSet 65223 +#define ComStrs_sTabFailSetObject 65224 +#define ComStrs_sTabMustBeMultiLine 65225 +#define ComStrs_sInvalidIndex 65226 +#define ComStrs_sInsertError 65227 +#define ComStrs_sInvalidOwner 65228 +#define ComStrs_sRichEditInsertError 65229 +#define ComStrs_sRichEditLoadFail 65230 +#define ComStrs_sRichEditSaveFail 65231 +#define ExtCtrls_clNameCaptionText 65232 +#define ExtCtrls_clNameDefault 65233 +#define ExtCtrls_clNameGrayText 65234 +#define ExtCtrls_clNameHighlight 65235 +#define ExtCtrls_clNameHighlightText 65236 +#define ExtCtrls_clNameInactiveBorder 65237 +#define ExtCtrls_clNameInactiveCaption 65238 +#define ExtCtrls_clNameInactiveCaptionText 65239 +#define ExtCtrls_clNameInfoBk 65240 +#define ExtCtrls_clNameInfoText 65241 +#define ExtCtrls_clNameMenu 65242 +#define ExtCtrls_clNameMenuText 65243 +#define ExtCtrls_clNameNone 65244 +#define ExtCtrls_clNameScrollBar 65245 +#define ExtCtrls_clName3DDkShadow 65246 +#define ExtCtrls_clName3DLight 65247 +#define ExtCtrls_clNameBlue 65248 +#define ExtCtrls_clNameFuchsia 65249 +#define ExtCtrls_clNameAqua 65250 +#define ExtCtrls_clNameWhite 65251 +#define ExtCtrls_clNameMoneyGreen 65252 +#define ExtCtrls_clNameSkyBlue 65253 +#define ExtCtrls_clNameCream 65254 +#define ExtCtrls_clNameMedGray 65255 +#define ExtCtrls_clNameActiveBorder 65256 +#define ExtCtrls_clNameActiveCaption 65257 +#define ExtCtrls_clNameAppWorkSpace 65258 +#define ExtCtrls_clNameBackground 65259 +#define ExtCtrls_clNameBtnFace 65260 +#define ExtCtrls_clNameBtnHighlight 65261 +#define ExtCtrls_clNameBtnShadow 65262 +#define ExtCtrls_clNameBtnText 65263 +#define HelpIntfs_hNoTableOfContents 65264 +#define HelpIntfs_hNothingFound 65265 +#define HelpIntfs_hNoContext 65266 +#define HelpIntfs_hNoTopics 65267 +#define ExtCtrls_clNameBlack 65268 +#define ExtCtrls_clNameMaroon 65269 +#define ExtCtrls_clNameGreen 65270 +#define ExtCtrls_clNameOlive 65271 +#define ExtCtrls_clNameNavy 65272 +#define ExtCtrls_clNamePurple 65273 +#define ExtCtrls_clNameTeal 65274 +#define ExtCtrls_clNameGray 65275 +#define ExtCtrls_clNameSilver 65276 +#define ExtCtrls_clNameRed 65277 +#define ExtCtrls_clNameLime 65278 +#define ExtCtrls_clNameYellow 65279 +#define Consts_SInvalidClipFmt 65280 +#define Consts_SIconToClipboard 65281 +#define Consts_SCannotOpenClipboard 65282 +#define Consts_SInvalidMemoSize 65283 +#define Consts_SInvalidPrinterOp 65284 +#define Consts_SNoDefaultPrinter 65285 +#define Consts_SDuplicateMenus 65286 +#define Consts_SDockedCtlNeedsName 65287 +#define Consts_SDockTreeRemoveError 65288 +#define Consts_SDockZoneNotFound 65289 +#define Consts_SDockZoneHasNoCtl 65290 +#define Consts_SMultiSelectRequired 65291 +#define Consts_SSeparator 65292 +#define Consts_SErrorSettingCount 65293 +#define Consts_SListBoxMustBeVirtual 65294 +#define Consts_SNoGetItemEventHandler 65295 +#define Consts_SmkcPgUp 65296 +#define Consts_SmkcPgDn 65297 +#define Consts_SmkcEnd 65298 +#define Consts_SmkcHome 65299 +#define Consts_SmkcLeft 65300 +#define Consts_SmkcUp 65301 +#define Consts_SmkcRight 65302 +#define Consts_SmkcDown 65303 +#define Consts_SmkcIns 65304 +#define Consts_SmkcDel 65305 +#define Consts_SmkcShift 65306 +#define Consts_SmkcCtrl 65307 +#define Consts_SmkcAlt 65308 +#define Consts_srNone 65309 +#define Consts_SOutOfRange 65310 +#define Consts_SInsertLineError 65311 +#define Consts_SMsgDlgYes 65312 +#define Consts_SMsgDlgNo 65313 +#define Consts_SMsgDlgOK 65314 +#define Consts_SMsgDlgCancel 65315 +#define Consts_SMsgDlgHelp 65316 +#define Consts_SMsgDlgAbort 65317 +#define Consts_SMsgDlgRetry 65318 +#define Consts_SMsgDlgIgnore 65319 +#define Consts_SMsgDlgAll 65320 +#define Consts_SMsgDlgNoToAll 65321 +#define Consts_SMsgDlgYesToAll 65322 +#define Consts_SmkcBkSp 65323 +#define Consts_SmkcTab 65324 +#define Consts_SmkcEsc 65325 +#define Consts_SmkcEnter 65326 +#define Consts_SmkcSpace 65327 +#define Consts_SCloseButton 65328 +#define Consts_SIgnoreButton 65329 +#define Consts_SRetryButton 65330 +#define Consts_SAbortButton 65331 +#define Consts_SAllButton 65332 +#define Consts_SCannotDragForm 65333 +#define Consts_SVMetafiles 65334 +#define Consts_SVEnhMetafiles 65335 +#define Consts_SVIcons 65336 +#define Consts_SVBitmaps 65337 +#define Consts_SMaskErr 65338 +#define Consts_SMaskEditErr 65339 +#define Consts_SMsgDlgWarning 65340 +#define Consts_SMsgDlgError 65341 +#define Consts_SMsgDlgInformation 65342 +#define Consts_SMsgDlgConfirm 65343 +#define Consts_SMenuIndexError 65344 +#define Consts_SMenuReinserted 65345 +#define Consts_SMenuNotFound 65346 +#define Consts_SNoTimers 65347 +#define Consts_SNotPrinting 65348 +#define Consts_SPrinting 65349 +#define Consts_SInvalidPrinter 65350 +#define Consts_SDeviceOnPort 65351 +#define Consts_SGroupIndexTooLow 65352 +#define Consts_SNoMDIForm 65353 +#define Consts_SControlParentSetToSelf 65354 +#define Consts_SOKButton 65355 +#define Consts_SCancelButton 65356 +#define Consts_SYesButton 65357 +#define Consts_SNoButton 65358 +#define Consts_SHelpButton 65359 +#define Consts_SInvalidImageSize 65360 +#define Consts_SInvalidImageList 65361 +#define Consts_SReplaceImage 65362 +#define Consts_SImageIndexError 65363 +#define Consts_SImageReadFail 65364 +#define Consts_SImageWriteFail 65365 +#define Consts_SWindowDCError 65366 +#define Consts_SWindowClass 65367 +#define Consts_SCannotFocus 65368 +#define Consts_SParentRequired 65369 +#define Consts_SParentGivenNotAParent 65370 +#define Consts_SMDIChildNotVisible 65371 +#define Consts_SVisibleChanged 65372 +#define Consts_SCannotShowModal 65373 +#define Consts_SScrollBarRange 65374 +#define Consts_SPropertyOutOfRange 65375 +#define RTLConsts_SWriteError 65376 +#define RTLConsts_SThreadCreateError 65377 +#define RTLConsts_SThreadError 65378 +#define Consts_SInvalidTabPosition 65379 +#define Consts_SInvalidTabStyle 65380 +#define Consts_SInvalidBitmap 65381 +#define Consts_SInvalidIcon 65382 +#define Consts_SInvalidMetafile 65383 +#define Consts_SInvalidPixelFormat 65384 +#define Consts_SInvalidImage 65385 +#define Consts_SScanLine 65386 +#define Consts_SChangeIconSize 65387 +#define Consts_SUnknownExtension 65388 +#define Consts_SUnknownClipboardFormat 65389 +#define Consts_SOutOfResources 65390 +#define Consts_SNoCanvasHandle 65391 +#define RTLConsts_SInvalidRegType 65392 +#define RTLConsts_SListCapacityError 65393 +#define RTLConsts_SListCountError 65394 +#define RTLConsts_SListIndexError 65395 +#define RTLConsts_SMemoryStreamError 65396 +#define RTLConsts_SPropertyException 65397 +#define RTLConsts_SReadError 65398 +#define RTLConsts_SReadOnlyProperty 65399 +#define RTLConsts_SRegCreateFailed 65400 +#define RTLConsts_SRegGetDataFailed 65401 +#define RTLConsts_SRegSetDataFailed 65402 +#define RTLConsts_SResNotFound 65403 +#define RTLConsts_SSeekNotImplemented 65404 +#define RTLConsts_SSortedListError 65405 +#define RTLConsts_SUnknownGroup 65406 +#define RTLConsts_SUnknownProperty 65407 +#define RTLConsts_SCheckSynchronizeError 65408 +#define RTLConsts_SClassNotFound 65409 +#define RTLConsts_SDuplicateClass 65410 +#define RTLConsts_SDuplicateItem 65411 +#define RTLConsts_SDuplicateName 65412 +#define RTLConsts_SDuplicateString 65413 +#define RTLConsts_SFCreateErrorEx 65414 +#define RTLConsts_SFOpenErrorEx 65415 +#define RTLConsts_SIniFileWriteError 65416 +#define RTLConsts_SInvalidImage 65417 +#define RTLConsts_SInvalidName 65418 +#define RTLConsts_SInvalidProperty 65419 +#define RTLConsts_SInvalidPropertyElement 65420 +#define RTLConsts_SInvalidPropertyPath 65421 +#define RTLConsts_SInvalidPropertyType 65422 +#define RTLConsts_SInvalidPropertyValue 65423 +#define SysConst_SShortDayNameTue 65424 +#define SysConst_SShortDayNameWed 65425 +#define SysConst_SShortDayNameThu 65426 +#define SysConst_SShortDayNameFri 65427 +#define SysConst_SShortDayNameSat 65428 +#define SysConst_SLongDayNameSun 65429 +#define SysConst_SLongDayNameMon 65430 +#define SysConst_SLongDayNameTue 65431 +#define SysConst_SLongDayNameWed 65432 +#define SysConst_SLongDayNameThu 65433 +#define SysConst_SLongDayNameFri 65434 +#define SysConst_SLongDayNameSat 65435 +#define RTLConsts_SAncestorNotFound 65436 +#define RTLConsts_SAssignError 65437 +#define RTLConsts_SBitsIndexError 65438 +#define RTLConsts_SCantWriteResourceStreamError 65439 +#define SysConst_SShortMonthNameNov 65440 +#define SysConst_SShortMonthNameDec 65441 +#define SysConst_SLongMonthNameJan 65442 +#define SysConst_SLongMonthNameFeb 65443 +#define SysConst_SLongMonthNameMar 65444 +#define SysConst_SLongMonthNameApr 65445 +#define SysConst_SLongMonthNameMay 65446 +#define SysConst_SLongMonthNameJun 65447 +#define SysConst_SLongMonthNameJul 65448 +#define SysConst_SLongMonthNameAug 65449 +#define SysConst_SLongMonthNameSep 65450 +#define SysConst_SLongMonthNameOct 65451 +#define SysConst_SLongMonthNameNov 65452 +#define SysConst_SLongMonthNameDec 65453 +#define SysConst_SShortDayNameSun 65454 +#define SysConst_SShortDayNameMon 65455 +#define SysConst_SAssertError 65456 +#define SysConst_SAbstractError 65457 +#define SysConst_SModuleAccessViolation 65458 +#define SysConst_SOSError 65459 +#define SysConst_SUnkOSError 65460 +#define SysConst_SNL 65461 +#define SysConst_SShortMonthNameJan 65462 +#define SysConst_SShortMonthNameFeb 65463 +#define SysConst_SShortMonthNameMar 65464 +#define SysConst_SShortMonthNameApr 65465 +#define SysConst_SShortMonthNameMay 65466 +#define SysConst_SShortMonthNameJun 65467 +#define SysConst_SShortMonthNameJul 65468 +#define SysConst_SShortMonthNameAug 65469 +#define SysConst_SShortMonthNameSep 65470 +#define SysConst_SShortMonthNameOct 65471 +#define SysConst_SInvalidVarOpWithHResultWithPrefix 65472 +#define SysConst_SVarTypeOutOfRangeWithPrefix 65473 +#define SysConst_SVarTypeAlreadyUsedWithPrefix 65474 +#define SysConst_SVarTypeNotUsableWithPrefix 65475 +#define SysConst_SVarTypeTooManyCustom 65476 +#define SysConst_SVarTypeCouldNotConvert 65477 +#define SysConst_SVarTypeConvertOverflow 65478 +#define SysConst_SVarOverflow 65479 +#define SysConst_SVarInvalid 65480 +#define SysConst_SVarBadType 65481 +#define SysConst_SVarNotImplemented 65482 +#define SysConst_SVarUnexpected 65483 +#define SysConst_SExternalException 65484 +#define SysConst_SAssertionFailed 65485 +#define SysConst_SIntfCastError 65486 +#define SysConst_SSafecallException 65487 +#define SysConst_SOperationAborted 65488 +#define SysConst_SException 65489 +#define SysConst_SExceptTitle 65490 +#define SysConst_SInvalidFormat 65491 +#define SysConst_SArgumentMissing 65492 +#define SysConst_SDispatchError 65493 +#define SysConst_SReadAccess 65494 +#define SysConst_SWriteAccess 65495 +#define SysConst_SFormatTooLong 65496 +#define SysConst_SVarArrayCreate 65497 +#define SysConst_SVarArrayBounds 65498 +#define SysConst_SVarArrayLocked 65499 +#define SysConst_SVarArrayWithHResult 65500 +#define SysConst_SInvalidVarCast 65501 +#define SysConst_SInvalidVarOp 65502 +#define SysConst_SInvalidVarNullOp 65503 +#define SysConst_SDiskFull 65504 +#define SysConst_SInvalidInput 65505 +#define SysConst_SDivByZero 65506 +#define SysConst_SRangeError 65507 +#define SysConst_SIntOverflow 65508 +#define SysConst_SInvalidOp 65509 +#define SysConst_SZeroDivide 65510 +#define SysConst_SOverflow 65511 +#define SysConst_SUnderflow 65512 +#define SysConst_SInvalidPointer 65513 +#define SysConst_SInvalidCast 65514 +#define SysConst_SAccessViolationArg3 65515 +#define SysConst_SAccessViolationNoArg 65516 +#define SysConst_SStackOverflow 65517 +#define SysConst_SControlC 65518 +#define SysConst_SPrivilege 65519 +#define SysConst_SInvalidInteger 65520 +#define SysConst_SInvalidFloat 65521 +#define SysConst_SInvalidDate 65522 +#define SysConst_SInvalidTime 65523 +#define SysConst_SInvalidDateTime 65524 +#define SysConst_SInvalidTimeStamp 65525 +#define SysConst_SInvalidGUID 65526 +#define SysConst_STimeEncodeError 65527 +#define SysConst_SDateEncodeError 65528 +#define SysConst_SOutOfMemory 65529 +#define SysConst_SInOutError 65530 +#define SysConst_SFileNotFound 65531 +#define SysConst_SInvalidFilename 65532 +#define SysConst_STooManyOpenFiles 65533 +#define SysConst_SAccessDenied 65534 +#define SysConst_SEndOfFile 65535 +STRINGTABLE +BEGIN + TeeConst_TeeMsg_ValuesArrowEndY, "EndY" + TeeConst_TeeMsg_DefaultFontName, "Arial" + TeeConst_TeeMsg_CheckPointerSize, "Pointer size must be greater than zero" + TeeConst_TeeMsg_FunctionPeriod, "Function Period should be >= 0" + TeeConst_TeeMsg_PieOther, "Other" + TeeConst_TeeMsg_ShapeGallery1, "abc" + TeeConst_TeeMsg_ShapeGallery2, "123" + TeeConst_TeeMsg_ValuesX, "X" + TeeConst_TeeMsg_ValuesY, "Y" + TeeConst_TeeMsg_ValuesPie, "Pie" + TeeConst_TeeMsg_ValuesBar, "Bar" + TeeConst_TeeMsg_ValuesAngle, "Angle" + TeeConst_TeeMsg_ValuesGanttStart, "Start" + TeeConst_TeeMsg_ValuesGanttEnd, "End" + TeeConst_TeeMsg_ValuesGanttNextTask, "NextTask" + TeeConst_TeeMsg_ValuesBubbleRadius, "Radius" + TeeConst_TeeMsg_ValuesArrowEndX, "EndX" + TeeConst_TeeMsg_GanttSample6, "Testing" + TeeConst_TeeMsg_GanttSample7, "Manufac." + TeeConst_TeeMsg_GanttSample8, "Debugging" + TeeConst_TeeMsg_GanttSample9, "New Version" + TeeConst_TeeMsg_GanttSample10, "Banking" + TeeConst_TeeMsg_DefaultFontSize, "8" + TeeConst_TeeMsg_DefaultGalleryFontSize, "8" + TeeConst_TeeMsg_FunctionAdd, "Add" + TeeConst_TeeMsg_FunctionSubtract, "Subtract" + TeeConst_TeeMsg_FunctionMultiply, "Multiply" + TeeConst_TeeMsg_FunctionDivide, "Divide" + TeeConst_TeeMsg_FunctionHigh, "High" + TeeConst_TeeMsg_FunctionLow, "Low" + TeeConst_TeeMsg_FunctionAverage, "Average" + TeeConst_TeeMsg_GalleryShape, "Shape" + TeeConst_TeeMsg_GalleryBubble, "Bubble" + TeeConst_TeeMsg_PieSample3, "Tables" + TeeConst_TeeMsg_PieSample4, "Monitors" + TeeConst_TeeMsg_PieSample5, "Lamps" + TeeConst_TeeMsg_PieSample6, "Keyboards" + TeeConst_TeeMsg_PieSample7, "Bikes" + TeeConst_TeeMsg_PieSample8, "Chairs" + TeeConst_TeeMsg_GalleryChartName, "TeeGalleryChart" + TeeConst_TeeMsg_GalleryStandard, "Standard" + TeeConst_TeeMsg_GalleryFunctions, "Functions" + TeeConst_TeeMsg_GalleryArrow, "Arrow" + TeeConst_TeeMsg_GalleryGantt, "Gantt" + TeeConst_TeeMsg_GanttSample1, "Design" + TeeConst_TeeMsg_GanttSample2, "Prototyping" + TeeConst_TeeMsg_GanttSample3, "Development" + TeeConst_TeeMsg_GanttSample4, "Sales" + TeeConst_TeeMsg_GanttSample5, "Marketing" + TeeConst_TeeMsg_BarOffsetPercent, "Bar Offset Percent must be between -100% and 100%" + TeeConst_TeeMsg_DefaultPercentOf, "%s of %s" + TeeConst_TeeMsg_DefPercentFormat, "##0.## %" + TeeConst_TeeMsg_DefValueFormat, "#,##0.###" + TeeConst_TeeMsg_AxisTitle, "Axis Title" + TeeConst_TeeMsg_AxisLabels, "Axis Labels" + TeeConst_TeeMsg_GalleryLine, "Line" + TeeConst_TeeMsg_GalleryPoint, "Point" + TeeConst_TeeMsg_GalleryArea, "Area" + TeeConst_TeeMsg_GalleryBar, "Bar" + TeeConst_TeeMsg_GalleryHorizBar, "Horiz. Bar" + TeeConst_TeeMsg_GalleryPie, "Pie" + TeeConst_TeeMsg_GalleryFastLine, "Fast Line" + TeeConst_TeeMsg_Rotation, "Rotation" + TeeConst_TeeMsg_PieSample1, "Cars" + TeeConst_TeeMsg_PieSample2, "Phones" + TeeConst_TeeMsg_LegendColorWidth, "Legend Color Width must be between 0 and 100 %" + TeeConst_TeeMsg_SeriesSetDataSource, "No ParentChart to validate DataSource" + TeeConst_TeeMsg_SeriesInvDataSource, "No valid DataSource: %s" + TeeConst_TeeMsg_FillSample, "FillSampleValues NumValues must be > 0" + TeeConst_TeeMsg_Angle, "%s Angle must be between 0 and 359 degrees" + TeeConst_TeeMsg_AxisLogDateTime, "DateTime Axis cannot be Logarithmic" + TeeConst_TeeMsg_AxisLogNotPositive, "Logarithmic Axis Min and Max values should be >= 0" + TeeConst_TeeMsg_AxisLabelSep, "Labels Separation % must be greater than 0" + TeeConst_TeeMsg_AxisIncrementNeg, "Axis increment must be >= 0" + TeeConst_TeeMsg_AxisMinMax, "Axis Minimum Value must be <= Maximum" + TeeConst_TeeMsg_AxisMaxMin, "Axis Maximum Value must be >= Minimum" + TeeConst_TeeMsg_AxisLogBase, "Axis Logarithmic Base should be >= 2" + TeeConst_TeeMsg_MaxPointsPerPage, "MaxPointsPerPage must be >= 0" + TeeConst_TeeMsg_3dPercent, "3D effect percent must be between %d and %d" + TeeConst_TeeMsg_CircularSeries, "Circular Series dependences are not allowed" + TeeConst_TeeMsg_BarWidthPercent, "Bar Width Percent must be between 1 and 100" + MidConst_SFieldConstFail, "Preparation of field constraint failed with error \"%s\"" + MidConst_SDefExprFail, "Preparation of default expression failed with error \"%s\"" + MidConst_SNoEditsAllowed, "Modifications are not allowed" + MidConst_SNoDeletesAllowed, "Deletes are not allowed" + MidConst_SNoInsertsAllowed, "Inserts are not allowed" + MidConst_SConnectionMissing, "Requires Connection before opening" + MidConst_SNoCircularConnection, "Circular reference to Connection not allowed" + OleConst_SLinkProperties, "Link Properties" + OleConst_SInvalidLinkSource, "Cannot link to an invalid source." + OleConst_SCannotBreakLink, "Break link operation is not supported." + OleConst_SEmptyContainer, "Operation not allowed on an empty OLE container" + OleConst_SInvalidVerb, "Invalid object verb" + OleConst_SPropDlgCaption, "%s Properties" + OleConst_SInvalidStreamFormat, "Invalid stream format" + TeeConst_TeeMsg_LegendTopPos, "Top Legend Position must be between 0 and 100 %" + TeeConst_TeeMsg_LegendFirstValue, "First Legend Value must be > 0" + VDBConsts_SCancelEdit, "Cancel edit" + VDBConsts_SRefreshRecord, "Refresh data" + VDBConsts_SDataSourceFixed, "Operation not allowed in a DBCtrlGrid" + VDBConsts_SPropDefByLookup, "Property already defined by lookup field" + VDBConsts_SRemoteLogin, "Remote Login" + MidConst_SNoDataProvider, "Missing data provider or data packet" + MidConst_SInvalidDataPacket, "Invalid data packet" + MidConst_SRefreshError, "Must apply updates before refreshing data" + MidConst_SNoCircularReference, "Circular provider references not allowed" + MidConst_SErrorLoadingMidas, "Error loading MIDAS.DLL" + MidConst_SCannotCreateDataSet, "No fields defined. Cannot create dataset" + MidConst_SNoConnectToBroker, "Connection not allowed to TConnectionBroker" + MidConst_SNoParentConnection, "ParentConnection is not assigned" + MidConst_SConstraintFailed, "Record or field constraint failed." + MidConst_SField, "Field" + MidConst_SRecConstFail, "Preparation of record constraint failed with error \"%s\"" + cxEditConsts_scxRegExprMissing, "Missing '%s'" + cxEditConsts_scxRegExprUnnecessary, "Unnecessary '%s'" + cxEditConsts_scxRegExprIncorrectSpace, "The space character is not allowed after '\\'" + cxEditConsts_scxRegExprNotCompiled, "Regular expression is not compiled" + cxEditConsts_scxRegExprIncorrectParameterQuantifier, "Incorrect parameter quantifier" + cxEditConsts_scxRegExprCantUseParameterQuantifier, "The parameter quantifier cannot be applied here" + cxEditConsts_scxMaskEditRegExprError, "Regular expression errors:" + cxEditConsts_scxMaskEditInvalidEditValue, "The edit value is invalid" + VDBConsts_SFirstRecord, "First record" + VDBConsts_SPriorRecord, "Prior record" + VDBConsts_SNextRecord, "Next record" + VDBConsts_SLastRecord, "Last record" + VDBConsts_SInsertRecord, "Insert record" + VDBConsts_SDeleteRecord, "Delete record" + VDBConsts_SEditRecord, "Edit record" + VDBConsts_SPostEdit, "Post edit" + cxEditConsts_scxRegExprLine, "Line" + cxEditConsts_scxRegExprChar, "Char" + cxEditConsts_scxRegExprNotAssignedSourceStream, "The source stream is not assigned" + cxEditConsts_scxRegExprEmptySourceStream, "The source stream is empty" + cxEditConsts_scxRegExprCantUsePlusQuantifier, "The '+' quantifier cannot be applied here" + cxEditConsts_scxRegExprCantUseStarQuantifier, "The '*' quantifier cannot be applied here" + cxEditConsts_scxRegExprCantCreateEmptyAlt, "The alternative should not be empty" + cxEditConsts_scxRegExprCantCreateEmptyBlock, "The block should not be empty" + cxEditConsts_scxRegExprIllegalSymbol, "Illegal '%s'" + cxEditConsts_scxRegExprIllegalQuantifier, "Illegal quantifier '%s'" + cxEditConsts_scxRegExprIllegalIntegerValue, "Illegal integer value" + cxEditConsts_scxRegExprTooBigReferenceNumber, "Too big reference number" + cxEditConsts_scxRegExprCantCreateEmptyEnum, "Can't create empty enumeration" + cxEditConsts_scxRegExprSubrangeOrder, "The starting character of the subrange must be less than the finishing one" + cxEditConsts_scxRegExprHexNumberExpected0, "Hexadecimal number expected" + cxEditConsts_scxRegExprHexNumberExpected, "Hexadecimal number expected but '%s' found" + cxEditConsts_cxSDateThursday, "Thursday" + cxEditConsts_cxSDateFriday, "Friday" + cxEditConsts_cxSDateSaturday, "Saturday" + cxEditConsts_cxSDateFirst, "first" + cxEditConsts_cxSDateSecond, "second" + cxEditConsts_cxSDateThird, "third" + cxEditConsts_cxSDateFourth, "fourth" + cxEditConsts_cxSDateFifth, "fifth" + cxEditConsts_cxSDateSixth, "sixth" + cxEditConsts_cxSDateSeventh, "seventh" + cxEditConsts_cxSDateBOM, "bom" + cxEditConsts_cxSDateEOM, "eom" + cxEditConsts_cxSDateNow, "now" + cxEditConsts_scxSEditRepositoryButtonItem, "ButtonEdit|Represents an edit control with embedded buttons" + cxEditConsts_scxSEditRepositoryMaskItem, "MaskEdit|Represents a generic masked edit control." + cxEditConsts_scxSEditRepositoryTextItem, "TextEdit|Represents a single line text editor" + pnglang_EPNGCannotAddInvalidImageText, "It's not allowed to add a new chunk because the current image is invalid." + pnglang_EPNGOutMemoryText, "Some operation could not be performed because the system is out of resources. Close some windows and try again." + pnglang_EPNGHeaderNotPresentText, "This operation is not valid because the current image contains no valid header." + cxDataConsts_cxSDataReadError, "Stream read error" + cxDataConsts_cxSDataWriteError, "Stream write error" + cxEditConsts_cxSEditInvalidRepositoryItem, "The repository item is not acceptable" + cxEditConsts_cxSEditNumericValueConvertError, "Could not convert to numeric value" + cxEditConsts_cxSEditValidateErrorText, "Invalid input value. Use escape key to abandon changes" + cxEditConsts_cxSEditValueOutOfBounds, "Value out of bounds" + cxEditConsts_cxSDateToday, "today" + cxEditConsts_cxSDateYesterday, "yesterday" + cxEditConsts_cxSDateTomorrow, "tomorrow" + cxEditConsts_cxSDateSunday, "Sunday" + cxEditConsts_cxSDateMonday, "Monday" + cxEditConsts_cxSDateTuesday, "Tuesday" + cxEditConsts_cxSDateWednesday, "Wednesday" + pnglang_EPNGInvalidIHDRText, "The \"Portable Network Graphics\" image could not be loaded because one of its main piece of data (ihdr) might be corrupted" + pnglang_EPNGMissingMultipleIDATText, "This \"Portable Network Graphics\" image is invalid because it has missing image parts." + pnglang_EPNGZLIBErrorText, "Could not decompress the image because it contains invalid compressed data.\r\n Description: " + pnglang_EPNGInvalidPaletteText, "The \"Portable Network Graphics\" image contains an invalid palette." + pnglang_EPNGInvalidFileHeaderText, "The file being readed is not a valid \"Portable Network Graphics\" image because it contains an invalid header. This file may be corruped, try obtaining it again." + pnglang_EPNGIHDRNotFirstText, "This \"Portable Network Graphics\" image is not supported or it might be invalid.\r\n(IHDR chunk is not the first)" + pnglang_EPNGSizeExceedsText, "This \"Portable Network Graphics\" image is not supported because either it's width or height exceeds the maximum size, which is 65535 pixels length." + pnglang_EPNGUnknownPalEntryText, "There is no such palette entry." + pnglang_EPNGUnknownCriticalChunkText, "This \"Portable Network Graphics\" image contains an unknown critical part which could not be decoded." + pnglang_EPNGUnknownCompressionText, "This \"Portable Network Graphics\" image is encoded with an unknown compression scheme which could not be decoded." + pnglang_EPNGUnknownInterlaceText, "This \"Portable Network Graphics\" image uses an unknown interlace scheme which could not be decoded." + pnglang_EPNGCannotAssignChunkText, "The chunks must be compatible to be assigned." + pnglang_EPNGUnexpectedEndText, "This \"Portable Network Graphics\" image is invalid because the decoder found an unexpected end of the file." + pnglang_EPNGNoImageDataText, "This \"Portable Network Graphics\" image contains no data." + pnglang_EPNGCannotChangeSizeText, "The \"Portable Network Graphics\" image can not be resize by changing width and height properties. Try assigning the image from a bitmap." + pnglang_EPNGCannotAddChunkText, "The program tried to add a existent critical chunk to the current image which is not allowed." + IBXConst_SNoDestinationDirectory, "DestinationDirectory is not set" + IBXConst_SNosourceDirectory, "SourceDirectory is not set" + IBXConst_SNoUninstallFile, "Uninstall File Name is not set" + IBXConst_SOptionNeedsClient, "%s component requires Client to function properly" + IBXConst_SOptionNeedsServer, "%s component requires Server to function properly" + IBXConst_SInvalidOption, "Invalid option specified" + IBXConst_SInvalidOnErrorResult, "Unexpected onError return value" + IBXConst_SInvalidOnStatusResult, "Unexpected onStatus return value" + IBXConst_SDPBConstantUnknownEx, "DPB Constant (%s) is unknown" + IBXConst_STPBConstantUnknownEx, "TPB Constant (%s) is unknown" + IBXConst_SUnknownPlan, "Unknown Error - Can't retrieve plan" + IBXConst_SFieldSizeMismatch, "Size Mismatch - Field %s size is too small for data" + IBXConst_SEventAlreadyRegistered, "Events already registered" + IBXConst_SStringTooLarge, "Trying to store a string of length %d into a field that can only contain %d" + IBXConst_SNoTimers, "Not enough timers available" + pnglang_EPngInvalidCRCText, "This \"Portable Network Graphics\" image is not valid because it contains invalid pieces of data (crc error)" + IBXConst_SServiceActive, "Cannot perform operation -- service is not attached" + IBXConst_SServiceInActive, "Cannot perform operation -- service is attached" + IBXConst_SServerNameMissing, "Server Name Missing" + IBXConst_SQueryParamsError, "Query Parameters missing or incorrect" + IBXConst_SStartParamsError, "start Parameters missing or incorrect" + IBXConst_SOutputParsingError, "Unexpected Output buffer value" + IBXConst_SUseSpecificProcedures, "Generic ServiceStart not applicable: Use Specific Procedures to set configuration params" + IBXConst_SSQLMonitorAlreadyPresent, "SQL Monitor Instance is already present" + IBXConst_SCantPrintValue, "Cannot print value" + IBXConst_SEOFReached, "SEOFReached" + IBXConst_SEOFInComment, "EOF in comment detected" + IBXConst_SEOFInString, "EOF in string detected" + IBXConst_SParamNameExpected, "Parameter name expected" + IBXConst_SSuccess, "Successful execution" + IBXConst_SDelphiException, "DelphiException %s" + IBXConst_SNoOptionsSet, "No Install Options selected" + IBXConst_SNoRecordsAffected, "No Records Affected" + IBXConst_SNoTableName, "No Table Name assigned" + IBXConst_SCannotCreatePrimaryIndex, "Cannot Create Primary Index; are created automatically" + IBXConst_SCannotDropSystemIndex, "Cannot Drop System Index" + IBXConst_STableNameMismatch, "Table Name Mismatch" + IBXConst_SIndexFieldMissing, "Index Field Missing" + IBXConst_SInvalidCancellation, "Cannot Cancel events while processing" + IBXConst_SInvalidEvent, "Invalid Event" + IBXConst_SMaximumEvents, "Exceded Maximum Event limits" + IBXConst_SNoEventsRegistered, "No Events Registered" + IBXConst_SInvalidQueueing, "Invalid Queueing" + IBXConst_SInvalidRegistration, "Invalid Registration" + IBXConst_SInvalidBatchMove, "Invalid Batch Move" + IBXConst_SSQLDialectInvalid, "SQL Dialect Invalid" + IBXConst_SSPBConstantNotSupported, "SPB Constant Not supported" + IBXConst_SSPBConstantUnknown, "SPB Constant Unknown" + IBXConst_SCannotCreateSharedResource, "Cannot create shared resource. (Windows error %d)" + IBXConst_SWindowsAPIError, "Windows API error. (Windows error %d [$%.8x])" + IBXConst_SColumnListsDontMatch, "Column lists do not match" + IBXConst_SColumnTypesDontMatch, "Column types don't match. (From index: %d; To index: %d)" + IBXConst_SCantEndSharedTransaction, "Can't end a shared transaction unless it is forced and equal to the transaction's TimeoutAction" + IBXConst_SFieldUnsupportedType, "Unsupported Field Type" + IBXConst_SCircularDataLink, "Circular DataLink Reference" + IBXConst_SEmptySQLStatement, "Empty SQL Statement" + IBXConst_SIsASelectStatement, "use Open for a Select Statement" + IBXConst_SRequiredParamNotSet, "Required Param value not set" + IBXConst_SNoStoredProcName, "No Stored Procedure Name assigned" + IBXConst_SIsAExecuteProcedure, "use ExecProc for Procedure; use TQuery for Select procedures" + IBXConst_SUpdateFailed, "Update Failed" + IBXConst_SNotCachedUpdates, "CachedUpdates not enabled" + IBXConst_SNotLiveRequest, "Request is not live - cannot modify" + IBXConst_SNoProvider, "No Provider" + IBXConst_SEmptyQuery, "Empty query" + IBXConst_SCannotOpenNonSQLSelect, "Cannot \"open\" a non-select statement. Use ExecQuery" + IBXConst_SNoFieldAccess, "No access to field \"%s\"" + IBXConst_SFieldReadOnly, "Field \"%s\" is read-only" + IBXConst_SFieldNotFound, "Field \"%s\" not found" + IBXConst_SNotEditing, "Not in edit mode" + IBXConst_SCannotInsert, "Cannot insert into dataset. (No insert query)" + IBXConst_SCannotPost, "Cannot post. (No update/insert query)" + IBXConst_SCannotUpdate, "Cannot update. (No update query)" + IBXConst_SCannotDelete, "Cannot delete from dataset. (No delete query)" + IBXConst_SCannotRefresh, "Cannot refresh row. (No refresh query)" + IBXConst_SBufferNotSet, "Buffer not set" + IBXConst_SCircularReference, "Circular references not permitted" + IBXConst_SSQLParseError, "SQL Parse Error:\r\n\r\n%s" + IBXConst_SUserAbort, "User abort" + IBXConst_SDataSetUniDirectional, "Data set is uni-directional" + IBXConst_SXSQLDAIndexOutOfRange, "XSQLDA index out of range" + IBXConst_SXSQLDANameDoesNotExist, "XSQLDA name does not exist (%s)" + IBXConst_SEOF, "End of file" + IBXConst_SBOF, "Beginning of file" + IBXConst_SInvalidStatementHandle, "Invalid statement handle" + IBXConst_SSQLOpen, "IBSQL Open" + IBXConst_SSQLClosed, "IBSQL Closed" + IBXConst_SDatasetOpen, "Dataset open" + IBXConst_SDatasetClosed, "Dataset closed" + IBXConst_SUnknownSQLDataType, "Unknown SQL Data type (%d)" + IBXConst_SInvalidColumnIndex, "Invalid column index (index exceeds permitted range)" + IBXConst_SInvalidParamColumnIndex, "Invalid parameter index (index exceeds permitted range)" + IBXConst_SInvalidDataConversion, "Invalid data conversion" + IBXConst_SColumnIsNotNullable, "Column cannot be set to null (%s)" + IBXConst_SBlobCannotBeRead, "Blob stream cannot be read" + IBXConst_SBlobCannotBeWritten, "Blob stream cannot be written" + IBXConst_SOperationCancelled, "Operation cancelled at user's request" + IBXConst_SDPBConstantNotSupported, "DPB Constant (isc_dpb_%s) is unsupported" + IBXConst_SDPBConstantUnknown, "DPB Constant (%d) is unknown" + IBXConst_STPBConstantNotSupported, "TPB Constant (isc_tpb_%s) is unsupported" + IBXConst_STPBConstantUnknown, "TPB Constant (%d) is unknown" + IBXConst_SDatabaseClosed, "Cannot perform operation -- DB is not open" + IBXConst_SDatabaseOpen, "Cannot perform operation -- DB is currently open" + IBXConst_SDatabaseNameMissing, "Database name is missing" + IBXConst_SNotInTransaction, "Transaction is not active" + IBXConst_SInTransaction, "Transaction is active" + IBXConst_STimeoutNegative, "Timeout values cannot be negative" + IBXConst_SNoDatabasesInTransaction, "No databases are listed in transaction component" + IBXConst_SUpdateWrongDB, "Updating wrong database" + IBXConst_SUpdateWrongTR, "Updating wrong transaction. Unique transaction expected in set" + IBXConst_SDatabaseNotAssigned, "Database not assigned" + IBXConst_STransactionNotAssigned, "Transaction not assigned" + uDARes_err_DARDMInvalidSchema, "Schema must be assigned and must point to a ConnectionManager" + uDARes_err_DARDMUnassignedAdapter, "DataAdapter is not assigned" + uDARes_err_DARDMConnectionIsNotAssigned, "Connection is not assigned" + uDARes_err_DARDMCannotFindProxessorForDelta, "Cannot find a business processor for delta \"%s\"" + uDARes_err_NeedShareMem, "To use dynamically loaded drivers, you must build your application with ShareMem." + uDARes_err_ExecuteSQLCommandNotAllowed, "ExecuteSQLCommand is not enabled for this server." + IBXConst_SUnknownError, "Unknown error" + IBXConst_SInterBaseMissing, "InterBase library gds32.dll not found in the path. Please install InterBase to use this functionality" + IBXConst_SInterBaseInstallMissing, "InterBase Install DLL ibinstall.dll not found in the path. Please install InterBase 6 to use this functionality" + IBXConst_SIB60feature, "%s is an InterBase 6 function. Please upgrade to InterBase 6 to use this functonality" + IBXConst_SNotSupported, "Unsupported feature" + IBXConst_SNotPermitted, "Not permitted" + IBXConst_SFileAccessError, "Temporary file access error" + IBXConst_SConnectionTimeout, "Database connection timed out" + IBXConst_SCannotSetDatabase, "Cannot set database" + IBXConst_SCannotSetTransaction, "Cannot set transaction" + uDARes_err_FieldTypeNotSupported, "FieldType %s (%d) is not supported" + uDARes_err_InvalidDataset, "Invalid or NIL dataset" + uDARes_err_CannotFindItem, "Cannot find %s \"%s\" in collection of type %s" + uDARes_err_DriverAlreadyLoaded, "Driver %s is already loaded" + uDARes_err_InvalidDLL, "%s is not a valid Data Abstract driver" + uDARes_err_UnknownDriver, "Unknown driver %s" + uDARes_err_UnknownParameter, "Unknown parameter %s" + uDARes_err_FieldIsNotBound, "Field is not bound" + uDARes_err_CannotFindField, "Cannot find field %s" + uDARes_err_LoadPackageFailed, "LoadPackage failed for file %s" + uDARes_err_InvalidDriverReference, "The driver in %s could not be loaded" + uDARes_err_CannotFindStatement, "Cannot find statement %s for connection %s" + uDARes_err_CannotFindDefaultItem, "Cannot find default %s" + uDARes_err_PoolIsNotEmpty, "Cannot perform this operation when connections are pooled" + uDARes_err_MaxPoolSizeReached, "Maximum pool size reached. Cannot create a new connection" + uDARes_err_LAMEDataset, "%s does not implement IProviderSupport or implements it incorrectly" + DBConsts_SProviderExecuteNotSupported, "Execute not supported: %s" + DBConsts_SExprNoAggOnCalcs, "Field '%s' is not the correct type of calculated field to be used in an aggregate, use an internalcalc" + DBConsts_SDataSetUnidirectional, "Operation not allowed on a unidirectional dataset" + DBConsts_SUnassignedVar, "Unassigned variant value" + DBConsts_SRecordNotFound, "Record not found" + DBConsts_SFieldNameTooLarge, "Fieldname %s exceeds %d chars" + DBConsts_SBcdOverflow, "BCD overflow" + DBConsts_SInvalidBcdValue, "%s is not a valid BCD value" + DBConsts_SInvalidFormatType, "Invalid format type for BCD" + DBConsts_SCouldNotParseTimeStamp, "Could not parse SQL TimeStamp string" + DBConsts_SInvalidSqlTimeStamp, "Invalid SQL date/time values" + uDARes_err_ChangeLogAlreadyStarted, "StartChange has already been called; cannot log more than one change at a time." + uDARes_err_NotAttachedToDataTable, "Delta is not attached to a DataTable" + uDARes_err_DriverProcAlreadyRegistered, "DriverProc 0x%0.8x is already registered" + uDARes_err_DriverManagerAlreadyCreated, "An instance of a TDADriverManager was already initialized. Only one driver manager per module is allowed" + uDARes_err_DriverManagerNotAssigned, "Driver Manager is not assigned" + DBConsts_SExprNothing, "nothing" + DBConsts_SExprTypeMis, "Type mismatch in expression" + DBConsts_SExprBadScope, "Operation cannot mix aggregate value with record-varying value" + DBConsts_SExprNoArith, "Arithmetic in filter expressions not supported" + DBConsts_SExprNotAgg, "Expression is not an aggregate expression" + DBConsts_SExprBadConst, "Constant is not correct type %s" + DBConsts_SExprNoAggFilter, "Aggregate expressions not allowed in filters" + DBConsts_SExprEmptyInList, "IN predicate list may not be empty" + DBConsts_SInvalidKeywordUse, "Invalid use of keyword" + DBConsts_STextFalse, "False" + DBConsts_STextTrue, "True" + DBConsts_SParameterNotFound, "Parameter '%s' not found" + DBConsts_SInvalidVersion, "Unable to load bind parameters" + DBConsts_SBadFieldType, "Field '%s' is of an unsupported type" + DBConsts_SAggActive, "Property may not be modified while aggregate is active" + DBConsts_SProviderSQLNotSupported, "SQL not supported: %s" + DBConsts_SDataSetClosed, "Cannot perform this operation on a closed dataset" + DBConsts_SDataSetEmpty, "Cannot perform this operation on an empty dataset" + DBConsts_SDataSetReadOnly, "Cannot modify a read-only dataset" + DBConsts_SNestedDataSetClass, "Nested dataset must inherit from %s" + DBConsts_SExprTermination, "Filter expression incorrectly terminated" + DBConsts_SExprNameError, "Unterminated field name" + DBConsts_SExprStringError, "Unterminated string constant" + DBConsts_SExprInvalidChar, "Invalid filter expression character: '%s'" + DBConsts_SExprNoLParen, "'(' expected but %s found" + DBConsts_SExprNoRParen, "')' expected but %s found" + DBConsts_SExprNoRParenOrComma, "')' or ',' expected but %s found" + DBConsts_SExprExpected, "Expression expected but %s found" + DBConsts_SExprBadField, "Field '%s' cannot be used in a filter expression" + DBConsts_SExprBadNullTest, "NULL only allowed with '=' and '<>'" + DBConsts_SExprRangeError, "Constant out of range" + DBConsts_SExprIncorrect, "Incorrectly formed filter expression" + DBConsts_SFieldRequired, "Field '%s' must have a value" + DBConsts_SDataSetMissing, "Field '%s' has no dataset" + DBConsts_SInvalidCalcType, "Field '%s' cannot be a calculated or lookup field" + DBConsts_SFieldReadOnly, "Field '%s' cannot be modified" + DBConsts_SFieldIndexError, "Field index out of range" + DBConsts_SNoFieldIndexes, "No index currently active" + DBConsts_SNotIndexField, "Field '%s' is not indexed and cannot be modified" + DBConsts_SIndexFieldMissing, "Cannot access index field '%s'" + DBConsts_SNoIndexForFields, "No index for fields '%s'" + DBConsts_SIndexNotFound, "Index '%s' not found" + DBConsts_SCircularDataLink, "Circular datalinks are not allowed" + DBConsts_SLookupInfoError, "Lookup information for field '%s' is incomplete" + DBConsts_SDataSourceChange, "DataSource cannot be changed" + DBConsts_SNoNestedMasterSource, "Nested datasets cannot have a MasterSource" + DBConsts_SDataSetOpen, "Cannot perform this operation on an open dataset" + DBConsts_SNotEditing, "Dataset not in edit or insert mode" + DBConsts_SInvalidFieldKind, "Invalid FieldKind" + DBConsts_SUnknownFieldType, "Field '%s' is of an unknown type" + DBConsts_SFieldNameMissing, "Field name missing" + DBConsts_SDuplicateFieldName, "Duplicate field name '%s'" + DBConsts_SFieldNotFound, "Field '%s' not found" + DBConsts_SFieldAccessError, "Cannot access field '%s' as type %s" + DBConsts_SFieldValueError, "Invalid value for field '%s'" + DBConsts_SFieldRangeError, "%g is not a valid value for field '%s'. The allowed range is %g to %g" + DBConsts_SBcdFieldRangeError, "%s is not a valid value for field '%s'. The allowed range is %s to %s" + DBConsts_SInvalidIntegerValue, "'%s' is not a valid integer value for field '%s'" + DBConsts_SInvalidBoolValue, "'%s' is not a valid boolean value for field '%s'" + DBConsts_SInvalidFloatValue, "'%s' is not a valid floating point value for field '%s'" + DBConsts_SFieldTypeMismatch, "Type mismatch for field '%s', expecting: %s actual: %s" + DBConsts_SFieldSizeMismatch, "Size mismatch for field '%s', expecting: %d actual: %d" + DBConsts_SInvalidVarByteArray, "Invalid variant type or size for field '%s'" + DBConsts_SFieldOutOfRange, "Value of field '%s' is out of range" + JclResources_RsIntelCacheDescr7A, "2° Level cache, 256 KBytes, 8-way set associative, dual-sectored line, 64 Bytes sector size" + JclResources_RsIntelCacheDescr7B, "2° Level cache, 512 KBytes, 8-way set associative, dual-sectored line, 64 Bytes sector size" + JclResources_RsIntelCacheDescr7C, "2° Level cache, 1 MBytes, 8-way set associative, dual-sectored line, 64 Bytes sector size" + JclResources_RsIntelCacheDescr7D, "2° Level cache, 2 MByte, 8-way set associative, 64byte line size" + JclResources_RsIntelCacheDescr7F, "2° Level cache, 512 KByte, 2-way set associative, 64-byte line size" + JclResources_RsIntelCacheDescr82, "2° Level cache, 256 KBytes, 8-way associative, 32 Bytes line size" + JclResources_RsIntelCacheDescr83, "2° Level cache, 512 KBytes, 8-way associative, 32 Bytes line size" + JclResources_RsIntelCacheDescr84, "2° Level cache, 1 MBytes, 8-way associative, 32 Bytes line size" + JclResources_RsIntelCacheDescr85, "2° Level cache, 2 MBytes, 8-way associative, 32 Bytes line size" + JclResources_RsIntelCacheDescr86, "2° Level cache, 512 KByte, 4-way set associative, 64 byte line size" + JclResources_RsIntelCacheDescr87, "2° Level cache, 1 MByte, 8-way set associative, 64 byte line size" + JclResources_RsIntelCacheDescrB0, "Instruction TLB, 4 KByte Pages, 4-way set associative, 128 entries" + JclResources_RsIntelCacheDescrB3, "Data TLB, 4 KByte Pages, 4-way set associative, 128 entries" + JclResources_RsIntelCacheDescrF0, "64-Byte Prefetching" + JclResources_RsIntelCacheDescrF1, "128-Byte Prefetching" + DBConsts_SInvalidFieldSize, "Invalid field size" + JclResources_RsIntelCacheDescr45, "Unified cache, 32 byte cache line, 4-way set associative, 2Mb" + JclResources_RsIntelCacheDescr50, "Instruction TLB, 4 KBytes and 2 MBytes or 4 MBytes pages, 64 Entries" + JclResources_RsIntelCacheDescr51, "Instruction TLB, 4 KBytes and 2 MBytes or 4 MBytes pages, 128 Entries" + JclResources_RsIntelCacheDescr52, "Instruction TLB, 4 KBytes and 2 MBytes or 4 MBytes pages, 256 Entries" + JclResources_RsIntelCacheDescr5B, "Data TLB, 4 KBytes and 4 MBytes pages, 64 Entries" + JclResources_RsIntelCacheDescr5C, "Data TLB, 4 KBytes and 4 MBytes pages, 128 Entries" + JclResources_RsIntelCacheDescr5D, "Data TLB, 4 KBytes and 4 MBytes pages, 256 Entries" + JclResources_RsIntelCacheDescr60, "1° Level data cache: 16 KByte, 8-way set associative, 64 byte line size" + JclResources_RsIntelCacheDescr66, "1° Level Data cache, 8 KBytes, 4-way set associative, 64 Bytes line size" + JclResources_RsIntelCacheDescr67, "1° Level Data cache, 16 KBytes, 4-way set associative, 64 Bytes line size" + JclResources_RsIntelCacheDescr68, "1° Level Data cache, 32 KBytes, 4-way set associative, 64 Bytes line size" + JclResources_RsIntelCacheDescr70, "Trace cache, 12 KµOps, 8-way set associative" + JclResources_RsIntelCacheDescr71, "Trace cache, 16 KµOps, 8-way set associative" + JclResources_RsIntelCacheDescr72, "Trace cache, 32 KµOps, 8-way set associative" + JclResources_RsIntelCacheDescr78, "2° Level cache, 1 MBytes, 4-way set associative, 64 Bytes line size" + JclResources_RsIntelCacheDescr79, "2° Level cache, 128 KBytes, 8-way set associative, dual-sectored line, 64 Bytes sector size" + JclResources_RsIntelCacheDescr04, "Data TLB, 4Mb pages, 4-way set associative, 8 entries" + JclResources_RsIntelCacheDescr06, "8KB instruction cache, 4-way set associative, 32 byte line size" + JclResources_RsIntelCacheDescr08, "16KB instruction cache, 4-way set associative, 32 byte line size" + JclResources_RsIntelCacheDescr0A, "8KB data cache 2-way set associative, 32 byte line size" + JclResources_RsIntelCacheDescr0C, "16KB data cache, 4-way set associative, 32 byte line size" + JclResources_RsIntelCacheDescr22, "3° Level cache, 512 KBytes, 4-way set associative, 2 lines per sector, 128 byte sector size" + JclResources_RsIntelCacheDescr23, "3° Level cache, 1 MBytes, 8-way set associative, 2 lines per sector, 128 byte sector size" + JclResources_RsIntelCacheDescr25, "3° Level cache, 2 MBytes, 8-way set associative, 2 lines per sector, 128 byte line size" + JclResources_RsIntelCacheDescr29, "3° Level cache, 4M Bytes, 8-way set associative, 2 lines per sector, 128 byte line size" + JclResources_RsIntelCacheDescr2C, "1° Level data cache: 32K Bytes, 8-way set associative, 64 byte line size" + JclResources_RsIntelCacheDescr30, "1° Level instruction cache: 32K Bytes, 8-way set associative, 64 byte line size" + JclResources_RsIntelCacheDescr40, "No L2 cache" + JclResources_RsIntelCacheDescr41, "Unified cache, 32 byte cache line, 4-way set associative, 128Kb" + JclResources_RsIntelCacheDescr42, "Unified cache, 32 byte cache line, 4-way set associative, 256Kb" + JclResources_RsIntelCacheDescr43, "Unified cache, 32 byte cache line, 4-way set associative, 512Kb" + JclResources_RsIntelCacheDescr44, "Unified cache, 32 byte cache line, 4-way set associative, 1Mb" + JclResources_RsRTTIBasedOn, "Based on: " + JclResources_RsRTTIFloatType, "Float type: " + JclResources_RsRTTIMethodKind, "Method kind: " + JclResources_RsRTTIParamCount, "Parameter count: " + JclResources_RsRTTIReturnType, "Return type: " + JclResources_RsRTTIMaxLen, "Max length: " + JclResources_RsRTTIElSize, "Element size: " + JclResources_RsRTTIElType, "Element type: " + JclResources_RsRTTIElNeedCleanup, "Elements need clean up: " + JclResources_RsRTTIVarType, "Variant type: " + JclResources_RsDeclarationFormat, "// Declaration for '%s' not supported." + JclResources_RsBlankSearchString, "Search string cannot be blank" + JclResources_RsIntelCacheDescr00, "Null descriptor" + JclResources_RsIntelCacheDescr01, "Instruction TLB, 4Kb pages, 4-way set associative, 32 entries" + JclResources_RsIntelCacheDescr02, "Instruction TLB, 4Mb pages, fully associative, 2 entries" + JclResources_RsIntelCacheDescr03, "Data TLB, 4Kb pages, 4-way set associative, 64 entries" + JclResources_RsRTTIVirtualMethod, "virtual method" + JclResources_RsRTTIIndex, "index" + JclResources_RsRTTIDefault, "default" + JclResources_RsRTTIName, "Name: " + JclResources_RsRTTIType, "Type: " + JclResources_RsRTTIFlags, "Flags: " + JclResources_RsRTTIGUID, "GUID: " + JclResources_RsRTTITypeKind, "Type kind: " + JclResources_RsRTTIOrdinalType, "Ordinal type: " + JclResources_RsRTTIMinValue, "Min value: " + JclResources_RsRTTIMaxValue, "Max value: " + JclResources_RsRTTINameList, "Names: " + JclResources_RsRTTIClassName, "Class name: " + JclResources_RsRTTIParent, "Parent: " + JclResources_RsRTTIPropCount, "Property count: " + JclResources_RsRTTIUnitName, "Unit name: " + JclResources_RsRTTIValueOutOfRange, "Value out of range (%s)." + JclResources_RsRTTIUnknownIdentifier, "Unknown identifier '%s'." + JclResources_RsRTTIVar, "var " + JclResources_RsRTTIConst, "const " + JclResources_RsRTTIArrayOf, "array of " + JclResources_RsRTTIOut, "out " + JclResources_RsRTTIOrdinal, "ordinal=" + JclResources_RsRTTITrue, "True" + JclResources_RsRTTIFalse, "False" + JclResources_RsRTTITypeError, "???" + JclResources_RsRTTITypeInfoAt, "Type info: %p" + JclResources_RsRTTIPropRead, "read" + JclResources_RsRTTIPropWrite, "write" + JclResources_RsRTTIPropStored, "stored" + JclResources_RsRTTIField, "field" + JclResources_RsRTTIStaticMethod, "static method" + JvResources_RsClBtnHighlight, "Button highlight" + JvResources_RsCl3DDkShadow, "Dark shadow 3D elements" + JvResources_RsCl3DLight, "Highlight 3D elements" + JvResources_RsClInfoText, "Tooltip text" + JvResources_RsClInfoBk, "Tooltip background" + JvResources_RsGradientActiveCaption, "Gradient Active Caption" + JvResources_RsGradientInactiveCaption, "Gradient Inactive Caption" + JvResources_RsHotLight, "Hot Light" + JvResources_RsMenuBar, "Menu Bar" + JvResources_RsMenuHighlight, "Menu Highlight" + JclResources_RsFileUtilsNoVersionInfo, "File contains no version information" + JclResources_RsUnableToOpenKeyRead, "Unable to open key \"%s\" for read" + JclResources_RsUnableToOpenKeyWrite, "Unable to open key \"%s\" for write" + JclResources_RsUnableToAccessValue, "Unable to open key \"%s\" and access value \"%s\"" + JclResources_RsWrongDataType, "\"%s\\%s\" is of wrong kind or size" + JclResources_RsInconsistentPath, "\"%s\" does not match RootKey" + JvResources_RsClMenu, "Menu background" + JvResources_RsClWindow, "Window background" + JvResources_RsClWindowFrame, "Window frame" + JvResources_RsClMenuText, "Menu text" + JvResources_RsClWindowText, "Window text" + JvResources_RsClCaptionText, "Active window title bar text" + JvResources_RsClActiveBorder, "Active window border" + JvResources_RsClInactiveBorder, "Inactive window border" + JvResources_RsClAppWorkSpace, "Application workspace" + JvResources_RsClHighlight, "Selection background" + JvResources_RsClHighlightText, "Selection text" + JvResources_RsClBtnFace, "Button face" + JvResources_RsClBtnShadow, "Button shadow" + JvResources_RsClGrayText, "Dimmed text" + JvResources_RsClBtnText, "Button text" + JvResources_RsClInactiveCaptionText, "Inactive window title bar text" + JvResources_RsClGold, "Gold" + JvResources_RsClBrightGreen, "Bright Green" + JvResources_RsClTurquoise, "Turquoise" + JvResources_RsClPlum, "Plum" + JvResources_RsClGray25, "Gray 25%" + JvResources_RsClRose, "Rose" + JvResources_RsClTan, "Tan" + JvResources_RsClLightYellow, "Light Yellow" + JvResources_RsClLightGreen, "Light Green" + JvResources_RsClLightTurquoise, "Light Turquoise" + JvResources_RsClPaleBlue, "Pale Blue" + JvResources_RsClLavender, "Lavender" + JvResources_RsClScrollBar, "Scrollbar" + JvResources_RsClBackground, "Desktop background" + JvResources_RsClActiveCaption, "Active window title bar" + JvResources_RsClInactiveCaption, "Inactive window title bar" + JvResources_RsClDarkGreen, "Dark Green" + JvResources_RsClDarkTeal, "Dark Teal" + JvResources_RsClDarkBlue, "Dark Blue" + JvResources_RsClIndigo, "Indigo" + JvResources_RsClGray80, "Gray 80%" + JvResources_RsClDarkRed, "Dark Red" + JvResources_RsClOrange, "Orange" + JvResources_RsClDarkYellow, "Dark Yellow" + JvResources_RsClBlueGray, "Blue Gray" + JvResources_RsClGray50, "Gray 50%" + JvResources_RsClLightOrange, "Light Orange" + JvResources_RsClSeaGreen, "Sea Green" + JvResources_RsClLightBlue, "Light Blue" + JvResources_RsClViolet, "Violet" + JvResources_RsClGray40, "Gray 40%" + JvResources_RsClPink, "Pink" + JvResources_RsClTeal, "Teal" + JvResources_RsClGray, "Gray" + JvResources_RsClSilver, "Silver" + JvResources_RsClRed, "Red" + JvResources_RsClLime, "Lime" + JvResources_RsClYellow, "Yellow" + JvResources_RsClBlue, "Blue" + JvResources_RsClFuchsia, "Fuchsia" + JvResources_RsClAqua, "Aqua" + JvResources_RsClWhite, "White" + JvResources_RsClMoneyGreen, "Money green" + JvResources_RsClSkyBlue, "Sky blue" + JvResources_RsClCream, "Cream" + JvResources_RsClMedGray, "Medium gray" + JvResources_RsClBrown, "Brown" + JvResources_RsClOliveGreen, "Olive Green" + JvResources_RsENoGIFData, "No GIF Data to write" + JvResources_RsEUnrecognizedGIFExt, "Unrecognized extension block: %.2x" + JvResources_RsEWrongGIFColors, "Wrong number of colors; must be a power of 2" + JvResources_RsEBadGIFCodeSize, "GIF code size not in range 2 to 9" + JvResources_RsEGIFDecodeError, "GIF encoded data is corrupt" + JvResources_RsEGIFEncodeError, "GIF image encoding error" + JvResources_RsEGIFVersion, "Unknown GIF version" + JvResources_RsYourTextHereCaption, "Put your text here ..." + JvResources_RsEPixelFormatNotImplemented, "BitmapToMemoryStream: pixel format not implemented" + JvResources_RsEBitCountNotImplemented, "BitmapToMemoryStream: bit count not implemented" + JvResources_RsClBlack, "Black" + JvResources_RsClMaroon, "Maroon" + JvResources_RsClGreen, "Green" + JvResources_RsClOlive, "Olive green" + JvResources_RsClNavy, "Navy blue" + JvResources_RsClPurple, "Purple" + IdResourceStrings_RSThreadTerminateAndWaitFor, "Cannot call TerminateAndWaitFor on FreeAndTerminate threads" + JConsts_sChangeJPGSize, "Cannot change the size of a JPEG image" + JConsts_sJPEGError, "JPEG error #%d" + JConsts_sJPEGImageFile, "JPEG Image File" + JvResources_RsAniExtension, "ani" + JvResources_RsAniFilterName, "ANI Image" + JvResources_RsRootValueReplaceFmt, "The Default Root Value \"%0:s\" has been replaced with \"%1:s\".\r\nPlease change the value in the FileVersionInfo Project Properties." + JvResources_RsEUnableToCreateKey, "Unable to create key '%s'" + JvResources_RsEEnumeratingRegistry, "Error enumerating registry" + JvResources_RsEInvalidType, "Invalid type" + JvResources_RsEUnknownBaseType, "Unknown base type for given set" + JvResources_RsEInvalidPath, "Invalid path" + JvResources_RsENotAUniqueRootPath, "'%s' is not a unique root path" + JvResources_RsECircularReferenceOfStorages, "Circular reference of storages" + JvResources_RsGIFImage, "CompuServe GIF Image" + JvResources_RsEChangeGIFSize, "Cannot change the Size of a GIF image" + IdResourceStrings_RSSocksRequestServerFailed, "Request rejected because SOCKS server cannot connect." + IdResourceStrings_RSSocksRequestIdentFailed, "Request rejected because the client program and identd report different user-ids." + IdResourceStrings_RSSocksUnknownError, "Unknown socks error." + IdResourceStrings_RSSocksServerRespondError, "Socks server did not respond." + IdResourceStrings_RSSocksAuthMethodError, "Invalid socks authentication method." + IdResourceStrings_RSSocksAuthError, "Authentication error to socks server." + IdResourceStrings_RSSocksServerGeneralError, "General SOCKS server failure." + IdResourceStrings_RSSocksServerPermissionError, "Connection not allowed by ruleset." + IdResourceStrings_RSSocksServerNetUnreachableError, "Network unreachable." + IdResourceStrings_RSSocksServerHostUnreachableError, "Host unreachable." + IdResourceStrings_RSSocksServerConnectionRefusedError, "Connection refused." + IdResourceStrings_RSSocksServerTTLExpiredError, "TTL expired." + IdResourceStrings_RSSocksServerCommandError, "Command not supported." + IdResourceStrings_RSSocksServerAddressError, "Address type not supported." + IdResourceStrings_RSUnevenSizeInDecodeStream, "Uneven size in DecodeToStream." + IdResourceStrings_RSUnevenSizeInEncodeStream, "Uneven size in Encode." + IdResourceStrings_RSStackECONNABORTED, "Software caused connection abort." + IdResourceStrings_RSStackECONNRESET, "Connection reset by peer." + IdResourceStrings_RSStackENOBUFS, "No buffer space available." + IdResourceStrings_RSStackEISCONN, "Socket is already connected." + IdResourceStrings_RSStackENOTCONN, "Socket is not connected." + IdResourceStrings_RSStackESHUTDOWN, "Cannot send or receive after socket is closed." + IdResourceStrings_RSStackETOOMANYREFS, "Too many references, cannot splice." + IdResourceStrings_RSStackETIMEDOUT, "Connection timed out." + IdResourceStrings_RSStackECONNREFUSED, "Connection refused." + IdResourceStrings_RSStackELOOP, "Too many levels of symbolic links." + IdResourceStrings_RSStackENAMETOOLONG, "File name too long." + IdResourceStrings_RSStackEHOSTDOWN, "Host is down." + IdResourceStrings_RSStackEHOSTUNREACH, "No route to host." + IdResourceStrings_RSStackENOTEMPTY, "Directory not empty" + IdResourceStrings_RSStackHOST_NOT_FOUND, "Host not found." + IdResourceStrings_RSSocksRequestFailed, "Request rejected or failed." + IdResourceStrings_RSStackEALREADY, "Operation already in progress." + IdResourceStrings_RSStackENOTSOCK, "Socket operation on non-socket." + IdResourceStrings_RSStackEDESTADDRREQ, "Destination address required." + IdResourceStrings_RSStackEMSGSIZE, "Message too long." + IdResourceStrings_RSStackEPROTOTYPE, "Protocol wrong type for socket." + IdResourceStrings_RSStackENOPROTOOPT, "Bad protocol option." + IdResourceStrings_RSStackEPROTONOSUPPORT, "Protocol not supported." + IdResourceStrings_RSStackESOCKTNOSUPPORT, "Socket type not supported." + IdResourceStrings_RSStackEOPNOTSUPP, "Operation not supported on socket." + IdResourceStrings_RSStackEPFNOSUPPORT, "Protocol family not supported." + IdResourceStrings_RSStackEAFNOSUPPORT, "Address family not supported by protocol family." + IdResourceStrings_RSStackEADDRINUSE, "Address already in use." + IdResourceStrings_RSStackEADDRNOTAVAIL, "Cannot assign requested address." + IdResourceStrings_RSStackENETDOWN, "Network is down." + IdResourceStrings_RSStackENETUNREACH, "Network is unreachable." + IdResourceStrings_RSStackENETRESET, "Net dropped connection or reset." + IdResourceStrings_RSHTTPUnknownResponseCode, "Unknown Response Code" + IdResourceStrings_RSHTTPHeaderAlreadyWritten, "Header has already been written." + IdResourceStrings_RSHTTPErrorParsingCommand, "Error in parsing command." + IdResourceStrings_RSHTTPUnsupportedAuthorisationScheme, "Unsupported authorization scheme." + IdResourceStrings_RSHTTPCannotSwitchSessionStateWhenActive, "Cannot change session state when the server is active." + IdResourceStrings_RSHTTPAuthAlreadyRegistered, "This authentication method is already registered with class name %s." + IdResourceStrings_RSInvalidServiceName, "%s is not a valid service." + IdResourceStrings_RSStackError, "Socket Error # %d\r\n%s" + IdResourceStrings_RSStackEINTR, "Interrupted system call." + IdResourceStrings_RSStackEBADF, "Bad file number." + IdResourceStrings_RSStackEACCES, "Access denied." + IdResourceStrings_RSStackEFAULT, "Bad address." + IdResourceStrings_RSStackEINVAL, "Invalid argument." + IdResourceStrings_RSStackEMFILE, "Too many open files." + IdResourceStrings_RSStackEWOULDBLOCK, "Operation would block. " + IdResourceStrings_RSStackEINPROGRESS, "Operation now in progress." + IdResourceStrings_RSHTTPNotAcceptable, "Not Acceptable" + IdResourceStrings_RSHTTPProxyAuthenticationRequired, "Proxy Authentication Required" + IdResourceStrings_RSHTTPRequestTimeout, "Request Timeout" + IdResourceStrings_RSHTTPConflict, "Conflict" + IdResourceStrings_RSHTTPGone, "Gone" + IdResourceStrings_RSHTTPLengthRequired, "Length Required" + IdResourceStrings_RSHTTPPreconditionFailed, "Precondition Failed" + IdResourceStrings_RSHTTPRequestEntityToLong, "Request Entity To Long" + IdResourceStrings_RSHTTPRequestURITooLong, "Request-URI Too Long. 256 Chars max" + IdResourceStrings_RSHTTPUnsupportedMediaType, "Unsupported Media Type" + IdResourceStrings_RSHTTPInternalServerError, "Internal Server Error" + IdResourceStrings_RSHTTPNotImplemented, "Not Implemented" + IdResourceStrings_RSHTTPBadGateway, "Bad Gateway" + IdResourceStrings_RSHTTPServiceUnavailable, "Service Unavailable" + IdResourceStrings_RSHTTPGatewayTimeout, "Gateway timeout" + IdResourceStrings_RSHTTPHTTPVersionNotSupported, "HTTP version not supported" + IdResourceStrings_RSHTTPCreated, "Created" + IdResourceStrings_RSHTTPAccepted, "Accepted" + IdResourceStrings_RSHTTPNonAuthoritativeInformation, "Non-authoritative Information" + IdResourceStrings_RSHTTPNoContent, "No Content" + IdResourceStrings_RSHTTPResetContent, "Reset Content" + IdResourceStrings_RSHTTPPartialContent, "Partial Content" + IdResourceStrings_RSHTTPMovedPermanently, "Moved Permanently" + IdResourceStrings_RSHTTPMovedTemporarily, "Moved Temporarily" + IdResourceStrings_RSHTTPSeeOther, "See Other" + IdResourceStrings_RSHTTPNotModified, "Not Modified" + IdResourceStrings_RSHTTPUseProxy, "Use Proxy" + IdResourceStrings_RSHTTPBadRequest, "Bad Request" + IdResourceStrings_RSHTTPUnauthorized, "Unauthorized" + IdResourceStrings_RSHTTPForbidden, "Forbidden" + IdResourceStrings_RSHTTPNotFound, "Not Found" + IdResourceStrings_RSHTTPMethodeNotallowed, "Method not allowed" + IdResourceStrings_RSReadLnMaxLineLengthExceeded, "Max line length exceeded." + IdResourceStrings_RSNoCommandHandlerFound, "No command handler found." + IdResourceStrings_RSWS2CallError, "Error on call Winsock2 library function %s" + IdResourceStrings_RSWS2LoadError, "Error on loading Winsock2 library (%s)" + IdResourceStrings_RSMIMEExtensionEmpty, "Extension is empty" + IdResourceStrings_RSMIMEMIMETypeEmpty, "Mimetype is empty" + IdResourceStrings_RSMIMEMIMEExtAlreadyExists, "Extension already exits" + IdResourceStrings_RSStatusResolving, "Resolving hostname %s." + IdResourceStrings_RSStatusConnecting, "Connecting to %s." + IdResourceStrings_RSStatusConnected, "Connected." + IdResourceStrings_RSStatusDisconnecting, "Disconnecting." + IdResourceStrings_RSStatusDisconnected, "Disconnected." + IdResourceStrings_RSStatusText, "%s" + IdResourceStrings_RSConnectTimeout, "Connect timed out." + IdResourceStrings_RSHTTPContinue, "Continue" + IdResourceStrings_RSHTTPOK, "OK" + IdResourceStrings_RSCouldNotBindSocket, "Could not bind socket. Address and port are already in use." + IdResourceStrings_RSFailedTimeZoneInfo, "Failed attempting to retrieve time zone information." + IdResourceStrings_RSNotEnoughDataInBuffer, "Not enough data in buffer." + IdResourceStrings_RSWinsockInitializationError, "Winsock Initialization Error." + IdResourceStrings_RSSetSizeExceeded, "Set Size Exceeded." + IdResourceStrings_RSThreadClassNotSpecified, "Thread Class Not Specified." + IdResourceStrings_RSFileNotFound, "File \"%s\" not found" + IdResourceStrings_RSOnlyOneAntiFreeze, "Only one TIdAntiFreeze can exist per application." + IdResourceStrings_RSNotConnected, "Not Connected" + IdResourceStrings_RSObjectTypeNotSupported, "Object type not supported." + IdResourceStrings_RSTerminateThreadTimeout, "Terminate Thread Timeout" + IdResourceStrings_RSNoExecuteSpecified, "No execute handler found." + IdResourceStrings_RSIdNoDataToRead, "No data to read." + IdResourceStrings_RSCanNotBindRange, "Can not bind in port range (%d - %d)" + IdResourceStrings_RSInvalidPortRange, "Invalid Port Range (%d - %d)" + IdResourceStrings_RSReadTimeout, "Read Timeout" + uRORes_err_TooManySessions, "Too many sessions. Try again in %d minute(s)" + uRORes_err_DOMElementIsNIL, "DOMElement is NIL" + uRORes_err_CannotLoadXMLDocument, "Cannot load XML document.\rReason: %s\rLine: %d\rPosition: %d" + uRORes_err_ErrorCreatingMsXmlDoc, "Error creating MSXML Document class\r\r%s: %s" + uRORes_err_NoXMLParsersAvailable, "MSXML is not installed" + uRORes_err_IDispatchMarshalingNotSupported, "Marshaling of IDispatch (%d) type variants is not supported." + uRORes_err_UnsupportedVariantType, "Unsupported variant type \"%d\"" + uRORes_err_VariantIsNotArray, "Variant must be Array, but is %d" + uRORes_err_InvalidVarArrayDimCount, "Variant Array DimCount must be 1 but is %d" + uRORes_err_MessageNotAssigned, "Message is NIL" + ComConst_SOleError, "OLE error %.8x" + ComConst_SNoMethod, "Method '%s' not supported by automation object" + ComConst_SVarNotObject, "Variant does not reference an automation object" + ComConst_STooManyParams, "Dispatch methods do not support more than 64 parameters" + IdResourceStrings_RSCannotAllocateSocket, "Cannot allocate socket." + IdResourceStrings_RSConnectionClosedGracefully, "Connection Closed Gracefully." + uRORes_err_TypeNotSupported, "Type \"%s\" not supported" + uRORes_err_ClassFactoryNotFound, "Class factory for interface %s not found" + uRORes_err_IROMessageNotSupported, "Class \"%s\" does not support IROMessage" + uRORes_err_ClassAlreadyRegistered, "Class \"%s\" is already registered" + uRORes_err_UnknownProxyInterface, "Unknown proxy interface \"%s\"" + uRORes_err_DispatcherAlreadyAssigned, "Dispatcher for %s already assigned" + uRORes_err_CannotFindMessageDispatcher, "Cannot find message dispatcher. Maybe there is no message component configured for for the requested path?" + uRORes_err_ServerOnlySupportsOneDispatcher, "%s servers only support one dispatcher" + uRORes_err_UnhandledException, "Unhandled exception" + uRORes_err_ChannelBusy, "Channel is busy. Try again later." + uRORes_err_ArrayIndexOutOfBounds, "Array index out of bounds (%d)." + uRORes_err_InvalidHeader, "Invalid binary header. Either incompatible or not a binary message." + uRORes_err_UnknownClassInStream, "Unknown class \"%s\" found in stream." + uRORes_err_UnexpectedClassInStream, "Unexpected class found in stream; class \"%s\" does not descend from \"%s\"." + uRORes_err_SessionNotFound, "Session %s could not be found" + uRORes_err_ChannelDoesntSupportIROMetadataReader, "Channel does not support IROMetadataReader" + uRORes_err_RodlNoEnumValues, "Enum does not contain any values." + uRORes_err_RodlNoStructElementsDefined, "Struct does not contain any elements." + uRORes_err_RodlNoOperationsDefined, "Service interface does not contain any elements." + uRORes_err_RodlUsedFileDoesNotExist, "The referenced RODL file \"%s\" could not be found." + uRORes_err_RodlInvalidDataType, "Invalid or undefined data type \"%s\"." + uRORes_err_RodlStructCannotBeNested, "Structs cannot recursively contain themselves." + uRORes_err_RodlInvalidAncestorType, "Invalid or undefined ancestor type \"%s\"." + uRORes_str_ExceptionOnServer, "An exception of type %s was raised on the server: %s" + uRORes_str_ExceptionReraisedFromServer, "An exception was raised on the server: %s" + uRORes_err_AssignError, "Cannot assign a \"%s\" to a \"%s\"." + uRORes_err_InvalidRequestStream, "Invalid request stream (%d bytes)" + uRORes_err_NILMessage, "Message is NIL" + uRORes_err_UnspecifiedInterface, "The message does not have an interface name" + uRORes_err_UnspecifiedMessage, "The message does not have a name" + uRORes_err_UnknownMethod, "Unknown method %s for interface %s" + uRORes_err_ClassFactoryDidNotReturnInstance, "Class factory did not return an instance of \"%s\"" + uRODECConst_sFMT_HEX, "Hexadecimal" + uRODECConst_sFMT_HEXL, "Hexadecimal lowercase" + uRODECConst_sFMT_MIME64, "MIME Base 64" + uRODECConst_sFMT_UU, "UU Coding" + uRODECConst_sFMT_XX, "XX Coding" + uRODECConst_sInvalidKeySize, "Length from Encryptionkey is invalid.\r\nKeysize for %s must be to %d-%d bytes" + uRODECConst_sNotInitialized, "%s is not initialized call Init() or InitKey() before." + uRORes_err_InvalidIndex, "Invalid index %d" + uRORes_err_InvalidType, "Invalid type \"%s. Expected \"%s\"\"" + uRORes_err_InvalidStream, "Invalid stream" + uRORes_err_InvalidParamFlag, "Invalid Parameter Flag \"%s\"" + uRORes_err_InvalidStringLength, "Stream read error: Invalid string length \"%d\"" + uRORes_str_InvalidClassTypeInStream, "Stream read error: Invalid class type encountered: \"%s\"" + uRORes_err_UnexpectedEndOfStream, "Unexpected end of stream." + uRORes_err_RodlDuplicateName, "Duplicate name." + uRORes_err_RodlNoDataTypeSpecified, "No data type specified." + ComStrs_sUDAssociated, "%s is already associated with %s" + ComStrs_sPageIndexError, "%d is an invalid PageIndex value. PageIndex must be between 0 and %d" + ComStrs_sInvalidComCtl32, "This control requires version 4.70 or greater of COMCTL32.DLL" + ComStrs_sDateTimeMax, "Date exceeds maximum of %s" + ComStrs_sDateTimeMin, "Date is less than minimum of %s" + ComStrs_sNeedAllowNone, "You must be in ShowCheckbox mode to set to this date" + ComStrs_sFailSetCalDateTime, "Failed to set calendar date or time" + ComStrs_sFailSetCalMaxSelRange, "Failed to set maximum selection range" + ComStrs_sFailSetCalMinMaxRange, "Failed to set calendar min/max range" + ComStrs_sFailsetCalSelRange, "Failed to set calendar selected range" + WinHelpViewer_hNoKeyword, "No help keyword specified." + uRODECConst_sProtectionCircular, "Circular Protection detected, Protection Object is invalid." + uRODECConst_sStringFormatExists, "String Format \"%d\" not exists." + uRODECConst_sInvalidStringFormat, "Input is not an valid %s Format." + uRODECConst_sInvalidFormatString, "Input can not be convert to %s Format." + uRODECConst_sFMT_COPY, "copy Input to Output" + ExtCtrls_clNameWindow, "Window Background" + ExtCtrls_clNameWindowFrame, "Window Frame" + ExtCtrls_clNameWindowText, "Window Text" + ComStrs_sTabFailClear, "Failed to clear tab control" + ComStrs_sTabFailDelete, "Failed to delete tab at index %d" + ComStrs_sTabFailRetrieve, "Failed to retrieve tab at index %d" + ComStrs_sTabFailGetObject, "Failed to get object at index %d" + ComStrs_sTabFailSet, "Failed to set tab \"%s\" at index %d" + ComStrs_sTabFailSetObject, "Failed to set object at index %d" + ComStrs_sTabMustBeMultiLine, "MultiLine must be True when TabPosition is tpLeft or tpRight" + ComStrs_sInvalidIndex, "Invalid index" + ComStrs_sInsertError, "Unable to insert an item" + ComStrs_sInvalidOwner, "Invalid owner" + ComStrs_sRichEditInsertError, "RichEdit line insertion error" + ComStrs_sRichEditLoadFail, "Failed to Load Stream" + ComStrs_sRichEditSaveFail, "Failed to Save Stream" + ExtCtrls_clNameCaptionText, "Caption Text" + ExtCtrls_clNameDefault, "Default" + ExtCtrls_clNameGrayText, "Gray Text" + ExtCtrls_clNameHighlight, "Highlight Background" + ExtCtrls_clNameHighlightText, "Highlight Text" + ExtCtrls_clNameInactiveBorder, "Inactive Border" + ExtCtrls_clNameInactiveCaption, "Inactive Caption" + ExtCtrls_clNameInactiveCaptionText, "Inactive Caption Text" + ExtCtrls_clNameInfoBk, "Info Background" + ExtCtrls_clNameInfoText, "Info Text" + ExtCtrls_clNameMenu, "Menu Background" + ExtCtrls_clNameMenuText, "Menu Text" + ExtCtrls_clNameNone, "None" + ExtCtrls_clNameScrollBar, "Scroll Bar" + ExtCtrls_clName3DDkShadow, "3D Dark Shadow" + ExtCtrls_clName3DLight, "3D Light" + ExtCtrls_clNameBlue, "Blue" + ExtCtrls_clNameFuchsia, "Fuchsia" + ExtCtrls_clNameAqua, "Aqua" + ExtCtrls_clNameWhite, "White" + ExtCtrls_clNameMoneyGreen, "Money Green" + ExtCtrls_clNameSkyBlue, "Sky Blue" + ExtCtrls_clNameCream, "Cream" + ExtCtrls_clNameMedGray, "Medium Gray" + ExtCtrls_clNameActiveBorder, "Active Border" + ExtCtrls_clNameActiveCaption, "Active Caption" + ExtCtrls_clNameAppWorkSpace, "Application Workspace" + ExtCtrls_clNameBackground, "Background" + ExtCtrls_clNameBtnFace, "Button Face" + ExtCtrls_clNameBtnHighlight, "Button Highlight" + ExtCtrls_clNameBtnShadow, "Button Shadow" + ExtCtrls_clNameBtnText, "Button Text" + HelpIntfs_hNoTableOfContents, "Unable to find a Table of Contents" + HelpIntfs_hNothingFound, "No help found for %s" + HelpIntfs_hNoContext, "No context-sensitive help installed" + HelpIntfs_hNoTopics, "No topic-based help system installed" + ExtCtrls_clNameBlack, "Black" + ExtCtrls_clNameMaroon, "Maroon" + ExtCtrls_clNameGreen, "Green" + ExtCtrls_clNameOlive, "Olive" + ExtCtrls_clNameNavy, "Navy" + ExtCtrls_clNamePurple, "Purple" + ExtCtrls_clNameTeal, "Teal" + ExtCtrls_clNameGray, "Gray" + ExtCtrls_clNameSilver, "Silver" + ExtCtrls_clNameRed, "Red" + ExtCtrls_clNameLime, "Lime" + ExtCtrls_clNameYellow, "Yellow" + Consts_SInvalidClipFmt, "Invalid clipboard format" + Consts_SIconToClipboard, "Clipboard does not support Icons" + Consts_SCannotOpenClipboard, "Cannot open clipboard" + Consts_SInvalidMemoSize, "Text exceeds memo capacity" + Consts_SInvalidPrinterOp, "Operation not supported on selected printer" + Consts_SNoDefaultPrinter, "There is no default printer currently selected" + Consts_SDuplicateMenus, "Menu '%s' is already being used by another form" + Consts_SDockedCtlNeedsName, "Docked control must have a name" + Consts_SDockTreeRemoveError, "Error removing control from dock tree" + Consts_SDockZoneNotFound, " - Dock zone not found" + Consts_SDockZoneHasNoCtl, " - Dock zone has no control" + Consts_SMultiSelectRequired, "Multiselect mode must be on for this feature" + Consts_SSeparator, "Separator" + Consts_SErrorSettingCount, "Error setting %s.Count" + Consts_SListBoxMustBeVirtual, "Listbox (%s) style must be virtual in order to set Count" + Consts_SNoGetItemEventHandler, "No OnGetItem event handler assigned" + Consts_SmkcPgUp, "PgUp" + Consts_SmkcPgDn, "PgDn" + Consts_SmkcEnd, "End" + Consts_SmkcHome, "Home" + Consts_SmkcLeft, "Left" + Consts_SmkcUp, "Up" + Consts_SmkcRight, "Right" + Consts_SmkcDown, "Down" + Consts_SmkcIns, "Ins" + Consts_SmkcDel, "Del" + Consts_SmkcShift, "Shift+" + Consts_SmkcCtrl, "Ctrl+" + Consts_SmkcAlt, "Alt+" + Consts_srNone, "(None)" + Consts_SOutOfRange, "Value must be between %d and %d" + Consts_SInsertLineError, "Unable to insert a line" + Consts_SMsgDlgYes, "&Yes" + Consts_SMsgDlgNo, "&No" + Consts_SMsgDlgOK, "OK" + Consts_SMsgDlgCancel, "Cancel" + Consts_SMsgDlgHelp, "&Help" + Consts_SMsgDlgAbort, "&Abort" + Consts_SMsgDlgRetry, "&Retry" + Consts_SMsgDlgIgnore, "&Ignore" + Consts_SMsgDlgAll, "&All" + Consts_SMsgDlgNoToAll, "N&o to All" + Consts_SMsgDlgYesToAll, "Yes to &All" + Consts_SmkcBkSp, "BkSp" + Consts_SmkcTab, "Tab" + Consts_SmkcEsc, "Esc" + Consts_SmkcEnter, "Enter" + Consts_SmkcSpace, "Space" + Consts_SCloseButton, "&Close" + Consts_SIgnoreButton, "&Ignore" + Consts_SRetryButton, "&Retry" + Consts_SAbortButton, "Abort" + Consts_SAllButton, "&All" + Consts_SCannotDragForm, "Cannot drag a form" + Consts_SVMetafiles, "Metafiles" + Consts_SVEnhMetafiles, "Enhanced Metafiles" + Consts_SVIcons, "Icons" + Consts_SVBitmaps, "Bitmaps" + Consts_SMaskErr, "Invalid input value" + Consts_SMaskEditErr, "Invalid input value. Use escape key to abandon changes" + Consts_SMsgDlgWarning, "Warning" + Consts_SMsgDlgError, "Error" + Consts_SMsgDlgInformation, "Information" + Consts_SMsgDlgConfirm, "Confirm" + Consts_SMenuIndexError, "Menu index out of range" + Consts_SMenuReinserted, "Menu inserted twice" + Consts_SMenuNotFound, "Sub-menu is not in menu" + Consts_SNoTimers, "Not enough timers available" + Consts_SNotPrinting, "Printer is not currently printing" + Consts_SPrinting, "Printing in progress" + Consts_SInvalidPrinter, "Printer selected is not valid" + Consts_SDeviceOnPort, "%s on %s" + Consts_SGroupIndexTooLow, "GroupIndex cannot be less than a previous menu item's GroupIndex" + Consts_SNoMDIForm, "Cannot create form. No MDI forms are currently active" + Consts_SControlParentSetToSelf, "A control cannot have itself as its parent" + Consts_SOKButton, "OK" + Consts_SCancelButton, "Cancel" + Consts_SYesButton, "&Yes" + Consts_SNoButton, "&No" + Consts_SHelpButton, "&Help" + Consts_SInvalidImageSize, "Invalid image size" + Consts_SInvalidImageList, "Invalid ImageList" + Consts_SReplaceImage, "Unable to Replace Image" + Consts_SImageIndexError, "Invalid ImageList Index" + Consts_SImageReadFail, "Failed to read ImageList data from stream" + Consts_SImageWriteFail, "Failed to write ImageList data to stream" + Consts_SWindowDCError, "Error creating window device context" + Consts_SWindowClass, "Error creating window class" + Consts_SCannotFocus, "Cannot focus a disabled or invisible window" + Consts_SParentRequired, "Control '%s' has no parent window" + Consts_SParentGivenNotAParent, "Parent given is not a parent of '%s'" + Consts_SMDIChildNotVisible, "Cannot hide an MDI Child Form" + Consts_SVisibleChanged, "Cannot change Visible in OnShow or OnHide" + Consts_SCannotShowModal, "Cannot make a visible window modal" + Consts_SScrollBarRange, "Scrollbar property out of range" + Consts_SPropertyOutOfRange, "%s property out of range" + RTLConsts_SWriteError, "Stream write error" + RTLConsts_SThreadCreateError, "Thread creation error: %s" + RTLConsts_SThreadError, "Thread Error: %s (%d)" + Consts_SInvalidTabPosition, "Tab position incompatible with current tab style" + Consts_SInvalidTabStyle, "Tab style incompatible with current tab position" + Consts_SInvalidBitmap, "Bitmap image is not valid" + Consts_SInvalidIcon, "Icon image is not valid" + Consts_SInvalidMetafile, "Metafile is not valid" + Consts_SInvalidPixelFormat, "Invalid pixel format" + Consts_SInvalidImage, "Invalid image" + Consts_SScanLine, "Scan line index out of range" + Consts_SChangeIconSize, "Cannot change the size of an icon" + Consts_SUnknownExtension, "Unknown picture file extension (.%s)" + Consts_SUnknownClipboardFormat, "Unsupported clipboard format" + Consts_SOutOfResources, "Out of system resources" + Consts_SNoCanvasHandle, "Canvas does not allow drawing" + RTLConsts_SInvalidRegType, "Invalid data type for '%s'" + RTLConsts_SListCapacityError, "List capacity out of bounds (%d)" + RTLConsts_SListCountError, "List count out of bounds (%d)" + RTLConsts_SListIndexError, "List index out of bounds (%d)" + RTLConsts_SMemoryStreamError, "Out of memory while expanding memory stream" + RTLConsts_SPropertyException, "Error reading %s%s%s: %s" + RTLConsts_SReadError, "Stream read error" + RTLConsts_SReadOnlyProperty, "Property is read-only" + RTLConsts_SRegCreateFailed, "Failed to create key %s" + RTLConsts_SRegGetDataFailed, "Failed to get data for '%s'" + RTLConsts_SRegSetDataFailed, "Failed to set data for '%s'" + RTLConsts_SResNotFound, "Resource %s not found" + RTLConsts_SSeekNotImplemented, "%s.Seek not implemented" + RTLConsts_SSortedListError, "Operation not allowed on sorted list" + RTLConsts_SUnknownGroup, "%s not in a class registration group" + RTLConsts_SUnknownProperty, "Property %s does not exist" + RTLConsts_SCheckSynchronizeError, "CheckSynchronize called from thread $%x, which is NOT the main thread" + RTLConsts_SClassNotFound, "Class %s not found" + RTLConsts_SDuplicateClass, "A class named %s already exists" + RTLConsts_SDuplicateItem, "List does not allow duplicates ($0%x)" + RTLConsts_SDuplicateName, "A component named %s already exists" + RTLConsts_SDuplicateString, "String list does not allow duplicates" + RTLConsts_SFCreateErrorEx, "Cannot create file \"%s\". %s" + RTLConsts_SFOpenErrorEx, "Cannot open file \"%s\". %s" + RTLConsts_SIniFileWriteError, "Unable to write to %s" + RTLConsts_SInvalidImage, "Invalid stream format" + RTLConsts_SInvalidName, "''%s'' is not a valid component name" + RTLConsts_SInvalidProperty, "Invalid property value" + RTLConsts_SInvalidPropertyElement, "Invalid property element: %s" + RTLConsts_SInvalidPropertyPath, "Invalid property path" + RTLConsts_SInvalidPropertyType, "Invalid property type: %s" + RTLConsts_SInvalidPropertyValue, "Invalid property value" + SysConst_SShortDayNameTue, "Tue" + SysConst_SShortDayNameWed, "Wed" + SysConst_SShortDayNameThu, "Thu" + SysConst_SShortDayNameFri, "Fri" + SysConst_SShortDayNameSat, "Sat" + SysConst_SLongDayNameSun, "Sunday" + SysConst_SLongDayNameMon, "Monday" + SysConst_SLongDayNameTue, "Tuesday" + SysConst_SLongDayNameWed, "Wednesday" + SysConst_SLongDayNameThu, "Thursday" + SysConst_SLongDayNameFri, "Friday" + SysConst_SLongDayNameSat, "Saturday" + RTLConsts_SAncestorNotFound, "Ancestor for '%s' not found" + RTLConsts_SAssignError, "Cannot assign a %s to a %s" + RTLConsts_SBitsIndexError, "Bits index out of range" + RTLConsts_SCantWriteResourceStreamError, "Can't write to a read-only resource stream" + SysConst_SShortMonthNameNov, "Nov" + SysConst_SShortMonthNameDec, "Dec" + SysConst_SLongMonthNameJan, "January" + SysConst_SLongMonthNameFeb, "February" + SysConst_SLongMonthNameMar, "March" + SysConst_SLongMonthNameApr, "April" + SysConst_SLongMonthNameMay, "May" + SysConst_SLongMonthNameJun, "June" + SysConst_SLongMonthNameJul, "July" + SysConst_SLongMonthNameAug, "August" + SysConst_SLongMonthNameSep, "September" + SysConst_SLongMonthNameOct, "October" + SysConst_SLongMonthNameNov, "November" + SysConst_SLongMonthNameDec, "December" + SysConst_SShortDayNameSun, "Sun" + SysConst_SShortDayNameMon, "Mon" + SysConst_SAssertError, "%s (%s, line %d)" + SysConst_SAbstractError, "Abstract Error" + SysConst_SModuleAccessViolation, "Access violation at address %p in module '%s'. %s of address %p" + SysConst_SOSError, "System Error. Code: %d.\r\n%s" + SysConst_SUnkOSError, "A call to an OS function failed" + SysConst_SNL, "Application is not licensed to use this feature" + SysConst_SShortMonthNameJan, "Jan" + SysConst_SShortMonthNameFeb, "Feb" + SysConst_SShortMonthNameMar, "Mar" + SysConst_SShortMonthNameApr, "Apr" + SysConst_SShortMonthNameMay, "May" + SysConst_SShortMonthNameJun, "Jun" + SysConst_SShortMonthNameJul, "Jul" + SysConst_SShortMonthNameAug, "Aug" + SysConst_SShortMonthNameSep, "Sep" + SysConst_SShortMonthNameOct, "Oct" + SysConst_SInvalidVarOpWithHResultWithPrefix, "Invalid variant operation (%s%.8x)\n%s" + SysConst_SVarTypeOutOfRangeWithPrefix, "Custom variant type (%s%.4x) is out of range" + SysConst_SVarTypeAlreadyUsedWithPrefix, "Custom variant type (%s%.4x) already used by %s" + SysConst_SVarTypeNotUsableWithPrefix, "Custom variant type (%s%.4x) is not usable" + SysConst_SVarTypeTooManyCustom, "Too many custom variant types have been registered" + SysConst_SVarTypeCouldNotConvert, "Could not convert variant of type (%s) into type (%s)" + SysConst_SVarTypeConvertOverflow, "Overflow while converting variant of type (%s) into type (%s)" + SysConst_SVarOverflow, "Variant overflow" + SysConst_SVarInvalid, "Invalid argument" + SysConst_SVarBadType, "Invalid variant type" + SysConst_SVarNotImplemented, "Operation not supported" + SysConst_SVarUnexpected, "Unexpected variant error" + SysConst_SExternalException, "External exception %x" + SysConst_SAssertionFailed, "Assertion failed" + SysConst_SIntfCastError, "Interface not supported" + SysConst_SSafecallException, "Exception in safecall method" + SysConst_SOperationAborted, "Operation aborted" + SysConst_SException, "Exception %s in module %s at %p.\r\n%s%s\r\n" + SysConst_SExceptTitle, "Application Error" + SysConst_SInvalidFormat, "Format '%s' invalid or incompatible with argument" + SysConst_SArgumentMissing, "No argument for format '%s'" + SysConst_SDispatchError, "Variant method calls not supported" + SysConst_SReadAccess, "Read" + SysConst_SWriteAccess, "Write" + SysConst_SFormatTooLong, "Format string too long" + SysConst_SVarArrayCreate, "Error creating variant or safe array" + SysConst_SVarArrayBounds, "Variant or safe array index out of bounds" + SysConst_SVarArrayLocked, "Variant or safe array is locked" + SysConst_SVarArrayWithHResult, "Unexpected variant or safe array error: %s%.8x" + SysConst_SInvalidVarCast, "Invalid variant type conversion" + SysConst_SInvalidVarOp, "Invalid variant operation" + SysConst_SInvalidVarNullOp, "Invalid NULL variant operation" + SysConst_SDiskFull, "Disk full" + SysConst_SInvalidInput, "Invalid numeric input" + SysConst_SDivByZero, "Division by zero" + SysConst_SRangeError, "Range check error" + SysConst_SIntOverflow, "Integer overflow" + SysConst_SInvalidOp, "Invalid floating point operation" + SysConst_SZeroDivide, "Floating point division by zero" + SysConst_SOverflow, "Floating point overflow" + SysConst_SUnderflow, "Floating point underflow" + SysConst_SInvalidPointer, "Invalid pointer operation" + SysConst_SInvalidCast, "Invalid class typecast" + SysConst_SAccessViolationArg3, "Access violation at address %p. %s of address %p" + SysConst_SAccessViolationNoArg, "Access violation" + SysConst_SStackOverflow, "Stack overflow" + SysConst_SControlC, "Control-C hit" + SysConst_SPrivilege, "Privileged instruction" + SysConst_SInvalidInteger, "'%s' is not a valid integer value" + SysConst_SInvalidFloat, "'%s' is not a valid floating point value" + SysConst_SInvalidDate, "'%s' is not a valid date" + SysConst_SInvalidTime, "'%s' is not a valid time" + SysConst_SInvalidDateTime, "'%s' is not a valid date and time" + SysConst_SInvalidTimeStamp, "'%d.%d' is not a valid timestamp" + SysConst_SInvalidGUID, "'%s' is not a valid GUID value" + SysConst_STimeEncodeError, "Invalid argument to time encode" + SysConst_SDateEncodeError, "Invalid argument to date encode" + SysConst_SOutOfMemory, "Out of memory" + SysConst_SInOutError, "I/O error %d" + SysConst_SFileNotFound, "File not found" + SysConst_SInvalidFilename, "Invalid filename" + SysConst_STooManyOpenFiles, "Too many open files" + SysConst_SAccessDenied, "File access denied" + SysConst_SEndOfFile, "Read beyond end of file" +END + diff --git a/Servidor/FactuGES_Server.res b/Servidor/FactuGES_Server.res new file mode 100644 index 0000000..8627530 Binary files /dev/null and b/Servidor/FactuGES_Server.res differ diff --git a/Servidor/RODLFILE.res b/Servidor/RODLFILE.res new file mode 100644 index 0000000..968622e Binary files /dev/null and b/Servidor/RODLFILE.res differ diff --git a/Servidor/fServerForm.ddp b/Servidor/fServerForm.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Servidor/fServerForm.ddp differ diff --git a/Servidor/fServerForm.dfm b/Servidor/fServerForm.dfm new file mode 100644 index 0000000..2c21fa2 --- /dev/null +++ b/Servidor/fServerForm.dfm @@ -0,0 +1,1058 @@ +object ServerForm: TServerForm + Left = 416 + Top = 419 + BorderStyle = bsDialog + Caption = 'FactuGES Server' + ClientHeight = 228 + ClientWidth = 371 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + Position = poScreenCenter + WindowState = wsMinimized + OnClose = FormClose + OnCreate = FormCreate + PixelsPerInch = 96 + TextHeight = 13 + object JvGradient1: TJvGradient + Left = 0 + Top = 57 + Width = 371 + Height = 4 + Align = alTop + StartColor = 2971346 + EndColor = 4828405 + end + object Memo1: TMemo + Left = 24 + Top = 72 + Width = 329 + Height = 129 + Lines.Strings = ( + 'Memo1') + ScrollBars = ssVertical + TabOrder = 0 + end + object Panel1: TPanel + Left = 0 + Top = 0 + Width = 371 + Height = 57 + Align = alTop + BevelOuter = bvNone + TabOrder = 1 + object Image1: TImage + Left = 0 + Top = 0 + Width = 371 + Height = 57 + Align = alClient + Center = True + Picture.Data = { + 0B544A76474946496D616765F6750000474946383961C201FA00E60000FFFFFF + F5F5F5A92824ECECECEB743DF48545EF7B40DEDEDECD452DEAEAEAD0492EDC5A + 34FAFAFAF2F2F2BC2A26B02724E5E5E5E26236B95B55E1E1E1F8F8F8D95532FC + FCFCF5D6CAD4D4D4F5C8B5D1B5B0F0F0F0E66A39C23428D65131EEEEEEBCBABA + FEFEFEF7B192F49366CB938CD34D30C7726AC63A2AE96E3BC7564CD26958EEB5 + A5F9E9E3D7C5C2C93F2BE46638F8E1D8D2867AC9C5C4E05E35C03027B82725C7 + 453AE79A89B9322ECBA59EF7A47BFCF4F1FCF0EBB93A36D8D5D4B44741BF2D26 + EEE2E0A22925AB3934A7302CFEF8F5FEF9F8C33B33DB5D3DB52724B12E2AD251 + 3AD9CFCDE47D60FEFCFCBC7D75BD2C26EBE9E9D6D6D7FFFEFDF7F1F0FEFBFAFD + FDFDF3F0EFE8DDDCFBF8F7DFDFDFDED7D6D45A43F4F4F4E0E0E0DADADAC94E41 + F9F9F9DF6648EBEBEBF1EBEAE4E4E4D8D8D8EDEDEDD94E2FD95738C53729EFEF + EFFFFFFEF3F3F3E2E2E2EBECEDE8E8E8F7F7F7EFF0F0CDCCCCF1EEEDE7E7E7F1 + F2F3F1E8E5E76035E86B39D1D1D2F2F3F4EEEDEECF3F2AD2D0D0F1F1F12C0000 + 0000C201FA000007FF800582838485868788898A8322173C5300919293949596 + 9798999A9B9C9D9E9FA0A1A2A393560C717F6763670D710C56A4B1B2B3B4B5B1 + 8323B887B982BC05BEC0BABDBBC2BFBF3A193046B6CCCDCECFD0D1A50C011F70 + 1075636B6D71161621E0D2E2B4E02156E7E8E9EAE5E3968BEFF0F1883A8D3BED + F7F8F9FAA2A601677513DC9481A38D5B180BB0F629BC64C502030A7102489C48 + 31401C0A0713EA3336AC23C78FC10C8504590CD808643C16AA5CC9125AC30003 + CA68D1E265421908633E18D4D8529F290A5DFEAC3933A0A8D1A31FFE707BB54F + 9ED3A78B4624EB49B5AAD54DFD621ED8BAD58B9B6C6B5A85796525C4D567211C + 024D05A70E843270FFE3CA850067C0862EDDCAE283CAB76F2F1130CE0A1EDCF3 + A556AE5D05D649F0A141000A0C2C10B665254C805409EA947133C18BE7CF9E27 + 88BEC9F84F808366DBF95DFD54C785296C26CB9E2DAEDF3F2D880FCCD4127031 + ABC7DF688B4A4BA1CD87CC9BBDEC5ECE9CA6CD3A701ABB4A2D8EB5F577272F14 + 7122BCBB77592FCF40505ED38D4037CA0FD88490C02EDEC87ABF33B410A6CB86 + 319A95E35E0E9A79D7E78C75414170D22462006B072A9260010B1E825211B1C9 + 27E18498D8564768742590001C654C3053796580F51E4F1486704A030370881E + 6E5B3967DE8B9C75C6E287E6E1F44737D55DA7E32E52C1C00377140629E44B1F + 5CE8C5408DB5B1C6FF186FA597581DEE0D489D7CE05810C006097488988B37D5 + E1A59710BCB5998C5B0EB4018ED10CB2608387ACA9669B6F1AC2A6200D9E944C + 1542E639615A71AC0107676E24D0401861C4A1247E7079A8DB04741574DA2B53 + D26662351C7AC11588D02530C651638CA1615B6FADC8951603AD110042D0ECA8 + AA21F4C050849EB07AC7E7067FDA344617AF3864E8922A5ACA9B798B49170689 + B3595964194E6AE14686037CB0C6061BFCF107B46B7C4094A76D71C6E2015E45 + 776AA4B53028EE81E48E6B6EB9E89EAB6EBAECAA5B0032F6C42AAF6CE650F047 + 029C95716B59E09862E87DD7ACB8DBB28CB502293B839913C01A00EDC75B8839 + 6DD0461B5D54D445FF1B0D48BBC150F84140E6568C7E100003E0CE42679CE29E + AC72CA2C13E2A69C28BFFC4B062C4032EFCD67D57B6F876524D0C637E5985868 + 5067B4D5A1AF006E13471C631178D5A4D6B871E9570557BCF4D5584B74710319 + 7F304002A1A6A76C1D67E04AAC2CEBA6DDEEDA6AB7CDEE0880155132CE742B64 + 4E180D8CD161A07F8411B4390D3D74D97110B8B15F4D21367B1744929D654535 + 855BAADB57EE5D440146845E0ED1D25A6F3DED0763043CE3047588EC342D32A7 + 1EF3EA2BABDE7A21705FB083CD75D7BED0DD79EF0DC70614F0FB779510357046 + 669CE977A497496D70EA3973EB034E181B5CD8E29170B0C27464D833A03DA161 + 5C1E5144124DDCC0FF50C46F1B72006793E2F6FA6CB7CF3E8376C280A7EDF43B + 5F59DE80C2F147EFBF07AD56000D009D8A6612104611447990499FF318D005BD + 4DAD7AA6699A37B497BDED758F735A9B98508AE6B119B9010E6D600033DC47C2 + F795B05DBF004CBCEAC7C271E82C4B36D1DFB0FAF7B78614AA0DF7A983E166C2 + 2D0336E6348D5B8905FA0410AE7CE50C6D78943796C8C4EC656E7301B818C6A6 + 95A20ECDA80C1FA040F3426100727591415FECA217C70846328AB18C683CA31A + C3C8C60421830555D8620BE7188B17022A017DF31D0DFD770AE3802D39B8395E + 7BFE2020F8C8112DF6FAD37E488744A631511D4C748805A1D805298EAF8A8A52 + 8FA098823A137AF2FF84EF938AEC8044C752D6C28ED4CBE31EFB674343798D43 + 1EA2498D08B28611EDE3710340CFA26C3432F8A80392137448E6302845A1202A + 3D5E80C0194676484E88F199D08CA634A749CD6A5AF3406F7442334DC9CD4CD8 + 312078E4DF2A69D89038D80793DBF20A4E6A09996DD682017FA8038B8E84C791 + 2D9179BF4B47301930CCCE4D917002FBCA1AE2A0C04FACD18C6D7C661ADB5846 + 851E74A1647C1760E2D8CD8A0EE77E7A0BC8EEC4394E1AEAAA0D7F48D15BC8F4 + 1CBB180452D2A8D707CA60C4D201311DE18844D0F4E910615E302295C4D80686 + D7416EE9AB0B418CC535874AD4A256B309B1939B4597FA0913B5610085FBE099 + 80D651720AF3321CFFD4A52C43543057147416698189D474D3B31BF9D27792A8 + E1399648C10B4EA498A0D321D2E0D00092CD62A80DB5665EA3B9D7315ED34E3C + 981F5307EB4D6A14893375182842AADA51FA5C89A7C85A0EC174E2557E35E37E + 7FD28D17C8862B6FA023A6699DE95A9DE8D6286A7028D798408B20B0062DBAF3 + 12468DED350920DB2EC68E07AF252C37ADE4A70EB974B1E5680842F458557F01 + 10A05A7D4E4E4C33A0F8D462880CF350B74CA5BDE15A76126A156E5B6F6A5A9D + 2EA9702C2AC319BA91DB4AD4F6BCE8856613DE958C65E8F6BD941822AD6A643A + 3DD6D4908CED9724E320BC3F1A6F3D1004627931C140A87AC85666F52C5AB12B + 5AE14AB27B10C9A0FF7707A0C3F00E6079B230006D69DBC50D6B588C1CFEB087 + 3DDC611183F8C4252EF1884DCC61418820032B842F7CE5ABA2D2E5858FDD1BCB + 59F36B0E6AFCE1389A91116E7CE89883004D1661F843A5C666BDEA02371CF944 + 075BB7E73D9C8A6F5A458BEC017AD686616538BD6046EFCC5820E332D31858A6 + 7A725A0A15458B60E460F935EEF83A66B84591E60C84F4EA80654AC458226929 + 35C52739D7BA4F7E7A4FC219DB29D814C5B7016578C59066B1A4493CE94A47FA + D21A7E5760CA3CE385C132B1372E87430230C506546C2CC4EDE85A2D631CFCD4 + 994674B10B70F61C02C8E9E7834A73B2A0594968D26ECECA535474E494B5D1A0 + 8A42C5964671A59FFF19624C3B7BD9AED90EA7757B0A3F2156B17AFC09A9B996 + 448BE878B83C1EF5A13453BC992CAB2E7771A47339814B99F83401E9A6A08279 + 4DE8094E929853FCDC31790307C53E5AC3047836A4039E6C81175CD23D8AF1B4 + 2DCADB4F635BB4DB035F4EAD0619AA325698FFFA5A937AB82CB018ECAB94C065 + 9D9309EFF74466DED9AD3705F9595AD3664CDFB0E44D624F250B83DBFCE037C7 + B401EC54B3853315BAB59AB99A67EA0D88943A89154FB5AA1DCB96CDCCC82B8B + 61E7E932D1EE40B227DDDF4679BFA43CE57B5B248A9E839600AD48BA818A3016 + 014FBBDAD7CEF6B6BBFDED708F7BDA33AD0357F97CA90DF7ADC8E0CC4AFA00BB + 62DEAEAED2572938FFCC846DC8109398120BFAB8318CFCEA492494BC7FC9757B + 4F32C219E4DAB4381673D2EDBDE638C739C1731EFAB96F185E7767781CE67BBE + A1E7F3C114907012D5CDE3C059A6BF3A8CA55706D255D4540826EEA6A7D2DEAC + EB5F36F1C1C394F895A935BC20CBDCEC35DFB0DCA74FFDEA4FBF0934A35DEA4B + 69255AF9B66C9149F9EBD90CD23F985ADDBB2E2E35C6879C5806843461111055 + 430EFC4022C93197D3F1C969CA56E473B7BB2FB7316BF03572C56FFE86760067 + 7D6F97806AC780D5E7806EF72E8EA07DDBD74267B62C03D06516471F97835F7C + 14619504786EA63DE9B74A0D113C4BE2162FD2195F511711E40D911207671059 + A4024178917FD813FF49FB847C55F65657B6795E03362B22558E867628A08048 + 9884D6570037A01D15C87D57A222109081A8D12FAC766A7C07380F86535CD300 + 919785E3245C37948280541EECF11B45280914B006E3616E5072176E26793535 + 6592644110F63D60873189B606D522528C465707117D4A388884E8765291124F + 38471738851A185CF5C135155371E0564382536A9168649FC558FE72282AA27B + 93A53C19010EF6822FCAC128091016166139FA775F2BC7723DA87C9A472DD6E2 + 6AE9F1539C440A697784BA4800BB1870BBF88BB9188CC07884BEC88BC6588CC3 + 688CC4788CC6D8042BA00C7B9688F2D17D52380083627182D33912E14816D72F + 86063E60B78D4D33FF78ACC44FA4B60129927B047413E85648FD502407767FDB + 781192D78ADB75875783681AB331D6E25FBAA14CE4258885389085C85E3D278D + F473668C628DA8165C6A614E2FC70D151765B60791D2327B1E585CA660196C01 + 5E1F723CD6C83496315FDC423984348F98638FDC838F5F977989C68F44912D81 + 9458FC5373C97893CA989338B9933AD9933C8902B1333B08693B79B7906DD05C + 35E4585DC06D78713D5AA75F43833114231190B17FE4F83B82A368B9E719BCC1 + 1E1F102DA9504434C11EF13711AAB8924FF48AFE148B02E83588124B811242D1 + 28093FE99376599778799739B9732BC002EE35947BA209D4C0309CC18849874F + A3555A527489DD68FF0EC28479175349DEE67A7B143811114088821EE5E12570 + 902D92432A64A3148077359A539ABF068E79186C02C831FED595E305729C8002 + BA289BBC489BB2799BB6A98CB6899BBB398CBD599BB3199C3AF99B06904D8029 + 2169815296C05BB937850D7098BFE48DA7B094D2E218B4D777A7B06DE68717A1 + 587B9B0864A2F291FA712964A91466499A55C639E09853CBC787D51284CE3736 + BC339774099CF6799BC3299CF8B99FB9E99BFAD99F77999BA2F42AC759155562 + 68E1175FE6F41E30580AABF727CB320609E66043D74ADD6535172178BFF3908B + D994C437898D359214A64BB9911B63A30D5E2899DF9335A8C99E7A382D6D398B + A9B51F7C1306B580FF021C709B392A9B3B8AA3BCF9A33D1AA43FCA9B42CAA33A + 3AA448BAA34D7003198088055A1816B01677E16593C00028E228542A09780343 + 3D038A27F748BED36B6E254553994049F998C056A61919861CC9247556A28861 + 130970061233956679A76F65499AB779EE491442283603D137378AA4848A9B79 + 50A8889AA8B279A885CAA8F80937CA40814F7A0FFA959D21D599224322143083 + 54231D7016066DC024726A2A46765F73F894BA426AD5F985D6954F82439DE699 + 74C515A541E16ADB322A3C444067182D14238216C39E5D282D7CFA01C44A805A + D2225FB17708330A2870A839EAAC43CA017990A3D4EAA3D00AADD55AADD8EAA3 + DA6AADDEFAACDCFAFFAD28600037A04293EA137EB794AF5438FA823E94100709 + 508A5C956B0801AA06D6A58FA25D3785119EF537180776A3498FE1478985B2A0 + 53D990ABA42B44F396255A1E99A42C671816BD9AA72EFAA2FB18A3C31373A3D2 + 2DBFE17BA370A820DBAC3EBAA8221BB2210BAE272BB2E0BAB22A5BB22E6BB2DE + 0AB3204B004D8012E78A0F26B22BE9681E9EE10663E0AE9300AFBBB199DA2020 + 8592371ED3A5EA2649101199DCC82F34A53D11A68718D998A3F510E6346B093B + 9299F9315303266F0A75736A7EBD1A821373B6C17AB1EE692D22F5A61B7B6E9E + 0A9B9630AD79E0ACD3FAAD754BB7752BAD76BBB7758BA3772BADD41AB884EBB7 + 829BB7820BB886ABFFB777DB048DF09737DB0C8E89B5E3566E5C3101FB420901 + 900033627F6F282D5926A7CA137E81137B7A78834DB37F33C54F16E98581F794 + 5562195A3B7E00F40F6E8BABEBC11803F8279F79676B40B667AB87690B2DD4F2 + 9EAAB021E005A72D628ADB604FD7C5097B0BB8D92ABD2DCBB7E17AB8899BBD81 + CBAD843BB879FBB7897BAD742BB848957D91EB0C9B483E2AC8955CA91E991BB4 + 9CFB213CA44E9D89BCE8A1B42453A9B147A695B434B24A7458BB9E80F7BF0EC9 + 4F60080E0FD106CD47A25B22B694456AD63635B19614E6E785E2B3A7305ABC6E + 69349DA1BCA30220783622DBC401824BC2E36BC2D88BA3283CBED34AC22EFCC2 + 307CC2251CC32ECCFFC2D9FBC2742B064CE808F479BED370254C7234E41110E5 + E6B3402B0971300607661E42561E4CAC1CA5C24CAB4B7E2F676A8F6195C6C7BA + AABA9DD7195C30D53FF63A6CB73A39038167F6346AFF20393D341039F12CD539 + BCC5FB9E5F932D99A459EDBB255B856E40D409835BC3348CC37E4CBD33DCBD28 + 2CC8E3CBAD30DCC785ACBD0400A990EBC3A160999791223BE4C45F3252CAF2B3 + 24120703D0195D022A961BA7D91041F855BA10D985185A8F43F73F541B875669 + 82E6D027E361A29BD91E08848D5D10134E529299B20ACE42BC7C48ACD6722D1B + B2BE1F2C10712164251A43212CAB9800C32FE0C2D1FCC2D15CCD1C30CD892CCD + D98CCD896CCDD47CFFCDE0FCCDDC9CC852A17090EC0939DB6A01632900D6C63C + 851E46BCC99D6C8A67C087452357261AA14AD39D930B82C13B954E996D68EA83 + 033CB05EECC5D4201EB72A4B5E699D19690589842C88B17BD840100370066740 + AC185D149E52CC983CD1A4010799A18E25FA30B1868A817809355CCD748BCD2F + 90072F1DD332DCC2D23ACD2DFCD2248CD328ACCD83CCD22B7DCD341DD424EC8C + F273CEA0D00F58D2418BD433CD62C5C22357F1FCAE9D4C39D659BBB0B4CB0F83 + 6E5F18A613B4BF2F679E4E794F90648EF956B5509B898193CBEE7629F7A7675E + 0C347937C666481722AD219FD2166E312658AD5C191D84EBACBC0F132CDC3075 + 9100CED67CD82F70FFD886BDD88ADDD88CFDD88E1DD9906DD88DDC5E46AD09C9 + 197BC2C321CE0117D01131D60914BDE5159A2CD535027E3604C4A06245CBCB7B + 49C19D70B6911171C1002DB020DA63FB7BB6A95CCA95DA402C352A519CD232E5 + 984053195D600D1D52C78B621E7011266112173CABC69A756E110384045838CA + BC25BD911306D1AF9110D3860DD3300DD432CDD2E52DDEE61DDEE75DDE8C3DDE + EB4DDEE81DDF2F8D02632658975D0910DD05BC02480433006E4CB678416A5143 + DA471C099C5C9819787639DB001BE387DA4DDDB916A615E9724C99A193385A18 + 37DB67EB48FDD2DB50F574CAB43C910238CCA32B01C4C1632C9EA2D1195C29D7 + BD51175F099602E8FFA779DDC1B42C1067C85CF90B0089DDE33E5ECD3F1EE442 + 3EE4428E07441EE4467EE43E9EE489CD0162B0A4B273DF94D063A80055020375 + 63A078FE04784F8D2C511DB4B9444FCF6916C411997356800D9C78B06D5D6278 + 99C26AC51FAA6050AB942F277F1D0E38090D01A353077F7076534EE2BD664EE8 + F847CAEDC1266AD204F195C2BAE830BAC1E4369EF9FC6752C2E390EDE3938DD8 + 3D6ED84DDED896FEE38CBDE9950EE48D0DA9042AE5FDA0248B6667BBDA6D5B2E + 116109CFA50DE6F78B47DDF010F6E12C4AA1536DAB5A710A313FB478072ABBFF + 9CCA984874DDA3351C6E0E5B67250ABDBC7CEEE77FEEC5AD74EBF65B3C907EE8 + 5CC22C8ACEE88B2EFF8B03802DE466E313FD4148E465446EE411A0E43E9EEE4C + 9ED8E97EE4EFFE02ECAEEE45DEE3F1EEE36200376466EA96B106C4E37E7441A7 + 162CBCDCD66D61E9E5B18EC4B924BAE1E3EF6132CA6E765CFEB8B1A4E1DFDC09 + 5CDA157BDAB99D93C9E6146AC018DFDBCDBE28A056506F9DAE97143A5E021731 + 021A35F17E5DA22119FD2CC45BF3367FF3FDA882294E3D53C5E3F4FEF3ED6EEF + 4ACEE4F7FEF3F2FEE345FF026240004CBA03F67DBEE5F4D42BA24ED920315696 + 686FDCAB2105D5096FE0613E10FE1D573BB490CF1919470B6447B32D59EDDFF8 + 7756A69C6FAE2BB0BAF6D68829F27A3E3DCA0454F864094949C51B10841E2D26 + 71F1F0D04110190DFF96177BF3C44BB6130152710548131DE2221401949FEE96 + 4FF97860F9F24EF947AFF99EDFF99BFFF9A20FFAA35FFA9C7FF9957FFA2F6000 + 8D805B903C290EBF43E756CFD639DB19FCC6A61614234AE09A1AE61D770DC7DA + 158C6864E6784928FEC15C85672735E7D948A6B53D8E0D165C760FE2542878EB + 165AFA6B5A42E196D8B221F55BD79BD22C347FF3EE59FED0C2F859E3F8A1C3DA + AB7561937FF4E84EFAF21FFFF42FFFA31FFF9A8FFFF06FFFF30F082F11828483 + 2F4D23193046008D8E8F909192939495969798999A92210C011F756E135A5E6E + 75631B017161AC716D1B6B6B1B1B7FB50D0D6D6D7F03A1A563015690140313A5 + 6E65A25E5ACBCA07FF1310630D141656160C14715D7F6B6370651307E107A46E + 1009037F6D710C5621EED50C6171015D6D0DB56D5D01610C16FEFE5602B673F7 + CE5A973310B4842305ED4F1C0AFC0086A05430DE3C7B7F60ADF9F0E18C478F1C + 39C69235ABE4AC912669FDC1A5EA21056CF3B47DF0062EDC843A670230001021 + 029E9E83800A15FA7328D0A246870AFA895450D2A34F813AF549B5E9A11B1958 + 4CDCC4B5ABD7AF6031596170B0CE282F65CCAD51D70F9EAB35673E90ACB532D7 + 065E6E7C017314C2429704CABC286356AE4E9D325E0EA08D368DA0356C0DD60C + 800321AFC28513CAC019B3765F3F6AFEE2050860EF563E5510F97D1618B0E2C1 + 840B17FF6999BAADFFBB4915E58DAE77EB1EDDDFC06BA59C05DCB4BE380F5929 + D7DD6000849ACE20E4B4C0B350A19E53AD4B0D8A9DEA54A14BB907FDAE747CD2 + ECE6C3BF1053002B8F2961E3CB9F4FFF91A733A148693EE390C2E7D0714416D7 + 5CB6D88557290304F0880571AC019B385A9493C007198D5186425E40238D05EF + 30E0E1451B9C91C061A340E886291336A08A87A079A81B3DB9C4881A8BFF0814 + 42357E21741943633884DC8F10D9B61524EFC0130636BB95D61B5DBE05579C69 + A78D06646AAC20D9007E6E8873D3073AF1141550337C09E6984285696604613E + 75669A62AE19159B623471C3053BD467E79D78521407288369B64617FE59139A + 870108281781E9BCFF32462F6EFC124C2771FCE18D388AEDE7D0350D24E00686 + 1AC601DA3FFD30709164245E160E5AE69CB14117AB78F8998B17F9D600ABFE85 + 5A634006E9185B43AAF42A6590D4DCC6C98DA1C913533D31C6D8DBB2CBC6D8C5 + 712D21F7D2B42F2147DA95A168090197D419C566996D0EC5A69B6782DB53B962 + 9E8B6652E86237C20A2C54015F9EF4D61BD68D61487A969F3A718823A801C275 + 2881B770D3CB04094803D94C88693141399BADBACE8D1464BAA962100CD04018 + B70AE48F3C6D70E38D28A64608C16614D24AA30547C2888B3E41BA2A288E64E9 + 3A4E863DFEE82B6DA1B64611B1F1C0E4EBB344174DF46848CF3325B5D52A4DCF + 3D586A59C707EB78FFB9EE0C58839935D6E45E3D66D7E8A6C935D85E8F5B369A + 5B93198118EFC66BEFDB7067D249176324845602A944F40FA86114FAC1000392 + 444BC175E735011C6B34B0C1A21034FC0C1CFCB11A915B7F68AAD0963AFDB777 + B1A4DD35E237A67A91591D906FD0460081F23DCFAFAAC96C6B185D38B723CEB3 + 396DBB4B930F194941D65469ADEDBD02FFE3F0D2BE5425922E678497B6DC0200 + 76516B420F261E664AAF2EB9D2574FF60CD4A3097DF7D1878DE60B2824B28313 + 71A7AFFE820138378A66798726A8FCF234F077E07311DE4B86708C5813397540 + 876770B5390A54EE626E401CEA6CB51A8F89AA0B91E9C6371263A2930D2071AA + D05BEFA8E5AA0E5AFFC3456D90DDAE7236BCE0052F3912A9C48D681634A6C164 + 692E8409D3ACC59B8CC4627936995AD5C6C6C31EFA906B0BF821108548C4221A + D1888398539DD6C744B831E00F6611CCD432C7C25789C67E8013492C6641B8CA + 08E618DF50CC31EA9080CEF48320FF0A8827D600872C69017E0118D407A9E140 + DD6CA31B8D2BD1A9209680C8B50A541D0C64202910C207F1A876D69252D258C7 + 229FE166851F3C5E0C2739496B61A42437CC964DB61547E7F5106D66DA1A1141 + 89441F829294A62C222A45393602ACE0024568A22CE915860F34CC0D09F843EA + 04C5408BFCE16F0308C916556230CB086630285A4BAB3407AAD050A00BA000C7 + 1BC7D00506F2F29AFF4103D119E0D00B4A39CC1490FB833E34B8B750C5C35547 + 6A40DD66D710E2995078C00AD6CF08188F2335AD78337489F19A568F8CA48454 + 59CA21977632C4B105116B072DE80C126AD0853A3488101D22431DDA5084F230 + A2166DE844311AA715C0609620A5CF8D02009852D4610DFDB2E67F44F387338C + 218B0353C90712E0456FDE4463EBA06333551A8F10D621315A38E93A5824485B + 0DCA8E1FA81BE84227A10BAAA856D8FC203A03642176F6285AEFCCEA8F54132C + 611109922EB2E73D8987CF6A8DE6922839090EA3D33C2438D4AD191DA25B8308 + 578ACE60AE0FCDEB46EFCA35BCFE30A11855685C358A3502CC8911214DEC57AC + 90AF3AF0A8019E92FF1F4FE5D1D297C6458B321D515E2074B70D44D6633B2D6A + 002A77A103E012B22B15243683F6B4A4520674E2280504CC91B287341257E6AC + 5F5547E8239D094FABF16C8DEE1A81469A1D8FAC65155A3F35925658AC157304 + 8DA874F54A5D882E60BAD2BD6E7517AA5DEB6277BBDFF5EE7691202718F060B8 + 8A4D2F45EE038152283050AE23AA8B46EB52C05D7624B598694D17528E3354F3 + 5F922DAA6AB2C146706468006D9886548B2AE096E94244A1D02361C82897D34D + 8E9E165167696FC62B9D29F2C33B5B9DB41AE9D5AFE2369B649DE16EEE3192E6 + 3A57936CED6478C14BE319DB58AFDDAD6E8EC51BDE1DCF806D1E8DA57A874C09 + 2B18B08D111A431BFF22A2525EB2D4A563F888306731D36EF257A8D48187933B + B81CDFBD263119E2568019ECBA6265E3979FB34C6CD3B2190CFE51751AB66A6F + 7FA7D53AE34E48E8252E3DC5BAB4D5F106165A1CA65A61BCA5AA5DF7D0884EB4 + A217CDE8463BFAD1908EB4A27F7C0378A18FC8987E84153EF19C0C9D61A84D66 + 60DF2A6BD9CBCA651622AA4CC9CA70D238DEA897E8ECF2713780E4039421014B + 5E2D993DE8220AD0E38E3485EDCD463721D3AD02CEBBE5F0557D6B673B278746 + ED78E4892569D66BD9B0C52E0628F3645C631CDFF8DBDE7EA88FB34BEE70F778 + 011168820E32B0C44C67DA2F0340CC4DD6E0A9A2AE76D4501E807D43826A9A5E + ECCA2865405FB61CFF56E5B83040BC30B0503936E640CA9A155C065195857D33 + 700AB056194EF621DDF9DB8E9FF0D9B699A7719BE6B293607B382F0EA833A6B8 + 93485720D12F6774CC1B3D7345A7610133AFF9A2757E7344BF5CE78A8E799C44 + 004B77BF3B53C540982E172C5F733E790C2FD537480E95EA7F8FC31428F597D3 + EB69F0694D69B4BB3DED3AAAD8E02E37FD1ABF4E6A1DBCC8D4542112321AA71D + 5641BCBA102F5291D2E2EA40F20C80DC200982D76E31CA07ADF267344FD2397F + 34D0612E699C377EF190AE79BA5F2964A3ABF78951BCF5C6984E5427E31BEAFA + B66FE0B6F99C92615D27402B38B55F38BC2ED01AA8D2F92FCD38AFFAE538BC65 + F5904CB0A1438E93FF7D4045C889336F39DE6C8F2B2DEFFF89F6B0E0E16BB49E + 7CF029971AD55A7EDD9F3BBEFA8EB7BEF6B37FE8ED637FFBE0E7BEF7C54FFEF1 + 875FFBE9263A622DAF58066CC0B1CF4030C3ED2D6AFA823EF420B9214DF578F5 + 56FBEBA8AB4756C1134265601370B0010AA66B82F470CAB180BF06619B052137 + 710690552871D76174667CEF94816405715D352C2C431A81E76283A76D9BD43C + 89677DDF477E2B787EDD577EDCD782310883E64783E2D751305005ECA75861B0 + 0617620A1FD0051CB36BB9657F51877F973519A56722AD26705A564F5E477CC7 + F70966310E65A06450554EB4C78010175FD8F060BB4741B6964BFA207CCA3667 + 1AD871BF835CCF06FF1003F108F8F26BCC458225F85C3AB4131590873FA7877C + D8877E88737908887D28887E58887A48888768888A18888B388815D05117A083 + 3B08523DF8832C477BF1F574472875494819FC1721FE472C527524C87577BDB2 + 0109704B5323399A43665C6876BD267123F21CE1804B7F62811B764873677774 + 172D6C986231F381C4C520BA308782067D84B76DD491888CD88C7BF88C82188D + CC088DD3288DCE8888D7588DDA988D798883F332894D544B9B9240018789F1F5 + 799B28751CA1849F787A4E0848A4C86C4E8334A3F14B48162165A40EAD43845C + B71C4CD385B1385AFA951887B31610748124248FC5F78B0CD9861F6801CFB40D + 98858CC361822B37FF7D00D0881AB9911CD99179E8011E19927A485E59B17EE0 + A83EB58418706445F4E721BE466AA117931E8147D0D17F59278AC5F24226448F + 4803418B535A37254EC1032CB0D68F5D472D0D1856CDC746595290F96086BAA8 + 9069D890BF683CB7252AAFB011C7489198F45C9CB48C22199662399664C9876C + 931527C944E2D85929B56B1FF492F916939C884756078A01879339093C3CF92C + 30D25266E1306A810BB7A03245597B47394955828B0E8338A70395B423850B49 + 950C591B1F532873C89515698703050048F091150092A0F999A2199A208906A3 + 799AA4899AAA199AA6599AABF99AA9199BA7D99AAFF988319015DF98966F9392 + 77331BFC28557079FF7F72191767A08496B10C40E86A00E64C3B438F4613236C + 7421110207BF07412F831A49B980B2462D4B032BB1F38378A30F7F8090885477 + E6698AC7279993C90FF2A00DCF87995D49685F0900068004B4299B20E9999E89 + 9FB0599BFDC99F00FA9FAF9906727201EFA19B70B396B7E61043E8962E698431 + 197503E35AAAE6302C87976F59773D5934C9E27AA9A80C98E367CF920FC7C155 + B7E78FDCA94FEC491A55854B42399EB9F898259486BEA89E6CC89DBAF09EF019 + 7D02553524600262900615609AADE901466AA46870A44ABAA44A3A9A46FA994F + 1A9B1E90A44C8A9F557AA5589AA54BCA0505DA6E084A4BB6D49B9EC18F0F0A93 + C3290BBDB101FA85FF0C9AC12D18DA3B896434C8922CBA9070A42054B02282F8 + 90416587A231D40A01808AE3984BF5489E5845A3E969A3C0F8233E29783B1A9F + 85379F1A90034D4000421AA0982AA0991A9AFBA9A99E1AA0041A64B9F9A576A2 + A078B30FE6285FC17984F9B701D7590F9E030770800E63B739A0E26BF4403474 + DA1BB9D052DEB00C6590132CA21BA5112579D7800CF8A7EDC994D3A4226017A3 + ED34A3C557A38A3A3C24D7A8748899165968D4C104931A036280A45A9AA554BA + A4E5AAA4E77AA4E93AAEE2CAAE53AAA5EBEA015C10031EB503A34AAAF3C19BFC + B28F44089709107503323851B262FE244ED3B09C471513749A0BCCA20B49D55E + 63B864AF428A4962FF1CD8A91ADBE942ADD006D1F44608360F302A67BB789E1F + 56AD93A95C8AE3A88FCAA32B476FC1E003DE2A02E0FA91E65AA52550A5F17AA5 + E57AB3EDCAA450AAA43C8BA53B6BB3471AB4430B922AD0362689AFF9FA01E3A8 + 400D4A666F09A1015B17039B9E2D414E9BE392AEB0ABCC720BDBB04D9B72139E + C50EFF62117A9A0E25DA3A198B94A27225A557060856A8D09A9019E86C268B5C + 5128822AFBA8DB9A31D504005F60064CD0021A10030430A4497AB38BEB01416B + A4417BB392FBAE8CEBB8963BB990BBA48F4BB498ABAE96DBB8930BBA97ABB9A3 + EB016930AF1EB5B44C1B1695088A41C8AFAEB8AA558B0BB9C0974A4325F164AB + 7C03234AB22CBF41FF65BFEA69D5341160652C73AA0F7C6A9862F5121FD21C7F + 19ACACF2AC222B955A95B7374A72399AAD5C69912615840C20055FF0053ED002 + 2B30B343FAB9968BAEA43BB9A18BBE9B3BB49BABBEECBBBE94FBAEE25AB9959B + B9F97BA42A50692C7069AB1B1FAD6B0AFE3584B0EB70C1194C5B640BB46BBBB4 + 11332BA5BBEDC9B0BE0B1C54F6A177B3311341409144B1F48871C96A956FEB3E + 68E15FF5988A720699C263BDD78B3C2CA6BD14699100941318E00366E0035B60 + B8E09A068E5B023EFCC33EDCC3920BC4445CC4462CC4420CC4486CC44ACCC43F + 9CC4471CC53EBC04FDCB6E9218C060E17E09117F09E62244D83291211225C1C0 + 0D4C8FC817C1BA8BFF76A5E12474711275937453D40EBA9B9349837146793C5D + 88709D167B208BC2BC35B2E8C9C22DBC3A2FBC95F0699152330018B0C852100E + 3ADC045CB0C4685002933CC98E6BC94F4CC9928BC9419CC9979CC99CBCC9433C + CA92FCC3987CB9981CCA9FBCC469A002AF745E589CC550241857B821E704900B + 380F8A6372C4B1120D8CBCB7CB64D764AB6807784EF24FCEB1298BB131C9C71A + 38B2BCFCFA8ACD4BC2B177C2758B869129C8D65A6D852C387EBB564CC8C81810 + BE3E20031A40024D900668A0004EDCCEEEFCCEF01CCFF23CCF5CA00222C06EB1 + FC15168074A5904BA0C675AE182B3634C650C2975202723B25C11761C1FF9472 + CB306FA8736100B6FF757D6A760CD21CED55C2D18B8AD77CA878ABCDDB2C34DD + BCB2C94829B1B1C8286D06E130072D80CE5C50C94E0CC5F13CC9F37CB9ED4CD3 + F3ACC9335D025CFA4AF69ACF5CE11716F23007F8CFD929607F07B664EC2C7887 + D046B5B56A9C11FE6412282119BF3A0E38711C10BC325A58D1491929162218D5 + 1CA87E7C862ABC8120DD67A331D2248DC8268D017E00D78BFC0507F0057E70CE + 31C00525A0007CFDC3ECFCD7440CD8ED0CD8EC0CC484EDD77B9DD8869DD8828D + D88D7DD890ADD88E5DCF4447057C07D4926001ED831819426FCAEB8A1ECC1B0D + 6BD08C2447CCC439AF50918267D588310E9C742CC89B8550CD60B2F621A425D6 + 5C320F1C3DBD89C4FF8BD40AD25EB7D6DB00C3C8E8D69482D23E80D21800BEE3 + 4BA953FAD88C8DD83E5CD8921DD9D47DD8D31DDDD06DDDDAEDD8DD1DD9D9CDD3 + 4DE0D3008CD99560057B921F9C84ACB008DA7F47C1657CD0C1684DC4EC0AFF84 + 6D233119AD1D549E950DBA50170E99D0B4DD85FE1007B46638ADA6DB65BD71D2 + AA86698D4F843CDC86ACADE06CD25F00D771BDC87A00BE07E0073280CE2A8006 + 7DB0CEDADDD77CCDDD7F6DE2279EE22B0ED92B5EE22DBED72D7EE28C3DE3364E + D82BDED3179005E67D09217064177285090671B5EDA028B61B4653C7C2DC647B + 139126876D5A3400FB87D59E85AB739A347AC353DA49230DF29709940A0ADED1 + D47B3B0F0EE1BA2CFFE1DEBCA3884C0A97E10617AEDC8B6C065FB0057ED00239 + 30022AA0CEDFBDE728CEE77EDEE780FEE7825E0290F8D33D8E1B61D0062DEACF + 41C28064EA3BBD7D34F330DF51B5524E8EDF211112935185FC0DC289640FFA28 + E05BC8550CC227D3D9DF647DCD679DA865BEB7D93BE1DBBB56DF541367E0E6C9 + 1DD7192E0572BE054C900324A0022AB004327EE3C45EECC67EECC89EECCADEE2 + 3D8DCF87CE099EC0275BC28A8E4EA6E8546D664C944D27559C93B21B91E9E02E + E595E1DA08182CCC2782B3B24B99E8703253EA09F14670503B01B0060B2E771E + E6DB65DE670BDDB76A2EEBE5E045F30E0107200518A007CA2D05CC3D071A7003 + 31A002C3BEEC101FFFF1123FF136DED330E004F7FAEC63D1007020D657A5BC47 + CD609E774FB461A295BEBB290BEE1CF1112EC54D6E54071B1006CAD717A22125 + 0C27EA528BDEB6849CFE4C60F51EAD63FEDBC08DBD684ED22C8B16FD93007010 + 028D35F0058FD271CDDCDE7AB8C15E020860EC57CFD759DFE25B7FE35B7FF560 + 6FE35F2FF6271EF65D5FF6CA9EF55C6002AF4405CFBE3B9B5652E4E819AF78C0 + 5F0CE95679F24F0D321299E92C3F93FE46EE32BF15A9D7EE5B4B70AAA5F3D2A9 + 19B5D305D1C9DB5399EF7BCBD62BCBBD81D90000606492E2056650F0C99DDC08 + DFF9857BB8E9FCF061EFF5647FECA7AF0067AFF5588FEC673FF6C4AEE33CFEF6 + 901006B50E9808E6FF1F756FED81D4C149A9F780746670419C2C0F3803D00DD9 + 1254F4D65545E2CC69AC8032A3F83CEF10A4C13029DCE0D5DBEADC5CF46DBD56 + 07D6C58D30166D001852E007B88ED2BAEE03E37BB826F0D27DC0FA0830FF66CF + FAF65FFFF47FFFFA0FF6F30F080A08820883868288878A898C8A85898F8B8B0A + 5C262B1745009A9B9C9D9E9FA0A1A2A3A4A00C1B105E5E6E097F710C61B1B2B3 + 610CB6B7B8B9B916B6B1B7BCB6C00CC216C014010D6B67CBCC03CECE0970106E + 5A5A106701B621DB00DBDE5656C5E2E2BFBAC156716765D565090D71710D6770 + 655E07F75E10637F01F0710100FF0504D8CF9FC18308131AA4C05060833F6B22 + AED940B1A2C58B16FFD70CA8E3E6DE817C03DA5060B06393853803BC489182A1 + A54B295FBE1C6022E3460C1568FA3482246967CF9F3E83027534488150A15C54 + 5CCA52AAA9D3A75045596893C08D970975D6C4A140AB2B2D7360C3F21A3BAC2C + 5906C792395BF6AC6D348EEC06741969C18AB710E0F28EDB6B76D7B093EA0E68 + 2933E65D803F63EAD4F3986FDFC17E90FF299C4C1921430AF002B4812811A367 + 8C1A3932D6F78E018B4C9A2C0480A3E58B143F2E639BF9C2A4C58D265C0AE9DE + CDBBB7EFDFC009F116FE5B3871DFC7811F525042298C2A53A24A9F0E8A9B5374 + 1FE092DEDACBEBD7B0E0FB921DFF975718641ADB0E18C39E7DB469EC0AC3AB75 + 0E6F5E707BC99DFDFF552CC0808E8DFDD1853CD2943141355A4CA00F3FFE44E6 + 6065104E7659669B4934D167186E105A47F86CC740062C1861D21E70B8F10506 + 7AB4E403062BCE465B0B39DC94131ABA25179C728644A29C8DC52157238EC6F1 + C645132BC02022754852875708D785D14002EB9401C71A018C048B77DF85A7CB + 7EE491074B3C1FA8D75E7BEF753458615D00D44517718461817DF7E5A79F7865 + 053006350A8EB1C11F1FD053861B6E4C20A81B0B3E26596411267AD084FF54D8 + 59869F8536C168856523820830EC50456A01AC5186192862009B8A6694CA0413 + 1AC49042097DE0E8AA0BAEEAD6AA72B0CE8AA3ADBFC11AEB6E955CB203934906 + DB5408B030E05408FFAA7D908A820394762596596A295639C100735E03618EB1 + DE98EDC1510704935AD36C005D6CB6411B71BC799F5E721253AD2D5D54A5851B + 758CB10C94135C05A81B7F2E589040900DA4E8C05B35D4286711411AE9461C7E + E4E108226400C31D59301942181B94E1DAA82A62208519F7309103092A7061D4 + AE28A7ACF2CA29DB30E452C2C61C0A5E14B4B14103FD70F5A628C83600872A6E + 4C19402DD076252D785DD20926B76324E0F4D3101828581D1F14A4590373BD09 + 679CEDD2C90B55074AE9343DF608A62FA01024B0C1BF87B64DB0A28C6A86F085 + 0A5FB4A1161D56CA400123E820C2052C44D74D1872D4F1851F29C6E631C83ECC + A1410E2670D16AABFFB52200EBE596675E88AD946BEE79E59863CE79E6A2CBEA + 7921BA22606BE8A49B9E3A022F3F27B8CCB40FDE406275C091C0191BA43B4A08 + AB55039248456379F4B4493310471B1F8CF9F4F3DE5A35F51F6EF6A2B35DDBAC + 8B5FD76315630BD8F3C2117DD91E993D413B541A8AE8DB89C6FD908575833680 + 34933A2CDFDE23F0FD370CA8013095E12B5A51C71667862DC0E8264B50C0E458 + C6C0063AD055B12B49ED6466052741C923F3CA4A1CAC209536B0E61E41A31243 + 8A67B4E36DC96B65595EF312D034E88D0D3E1F4940173868B1BBDC457BE1E0DE + 3818E0C149110A86E5C3E02AE07006AC59AD6D6C631F65260490F73D2A7E15D1 + 4802A691379CEDADFF0058EC9BC48A60310BD8010E0790428A38E6310C98EA71 + 2468C21254D73AD6B9B18D707CA31CE348C739DA918E2E23D2058E3441245981 + 01878112DECA879533B4A14A0C005637D0D28601408052FCB012096561C26905 + 03172A6CA10B75A79803C53000D5B1210E73989F6184E37B0998D4F9A8810F41 + B9D20BD5381F116F4690242A31424C44C6DCA09891F981AB8AAFC022DFF8A603 + 89F16007D1B10205DE700033F8C007645C49A97CD002DBC4C0649DBBA336EBC8 + CD6D7AB39BAD831D91B0C0943E524735F3A8C72031C8AF7AF5CE029BB042A74A + 543FC1D0CB901430CF246751C91392074C9B8CC65B0285B7098C01949FB061F6 + 70D8AEBA14C34970FF085735F041A86F41206A9E1CE2183E60C45BBE2D6E8E4A + 182F29A291120D1224A511A64A21664C3668220E6F3810A812F792D96CA13631 + E2C21AFBE0829E5ACEA7A1E3294F81DA53A1F6F4A83FBDDC5091EA029E5ACEA9 + 4C251D50A17AD4A62AF5A84B2DAA55939A941C5CA09CE67C0AB20270865404F1 + AC07A0D7075EF1C73864679D8C6145EFBAB34F5FF4B31C5E42C61904AABBBE8A + 4F1A5661C719E2B009851A766BECCACF29E3B0818806D10B521AC0199C3186E8 + C5B20CB91BC01A8CB83E8F4AC8607283DF4835C4304806337F59CC623133A589 + 10C4810E3F73A61F02C8A2DA9A01A724CB4D37A11A47A8F2D68DBFAD6370E538 + 5CA0C6D1A7080083FF738CC0C1B096825801C84E3DD15A3E7A0D604F1BD8C874 + 315848E2D5959277F58BB5E2F08779F0F5AFE2FBD6811204813584A1B036EC86 + 61192A8EFBA0A50B652D9B165421258EB6A10DEF4B4CA05C5986B49DE10F87B4 + A5672DD39026EE526122FDC31F367006D1E0434A6BE8421854CAE102AC96629C + 0223A860434633DE1646245B421FB25AD516BBF8C5308EB18C674CE31ABB7809 + 96B880049D3B0A740291BAE54B5081A36620B872571F6B6BD377C11BDE4BF6E2 + 300338EF5FEBF0ADC5ACC21DC66A6D7CB57C43ED8D432FE769EC3AECC92F387C + 402498F94717CA5BA0F50E51B33853F082FDC1C40169E889917A9484295C2276 + D6A18801E83087FDFFB645C12D5363A0EAD88A3EF685C63D4E052A362A516D4C + E9AA26D5D295CEF4A431BD04157895074EE07142C3815FB302F9D4A716DEF9EA + 90800C2B79C94DC68531BAB081CAA237BD54862156B49265C3764294A3144718 + 5488AFFD8A6DA3E8EA0E6634B386CA1679BFF4DADD9E123C67062FDBCEA2C590 + 48F734E10D1D79770D103487B598A94D01E01475686689F5009346A3EA062648 + 41534FA0E97ADBFBDE9556800A6ED002502B52D4DD20EF143D495D23A3BA7C57 + C9D70408E598672D993E77B51605BAD06C6F798BCAB9AB72FD58D1807C7279CB + 1F472CD726FE878D1419B2AD7E08CE0AF698357F20011C59EFAA13006736557B + 21A075E2B6236591FF3DBFFC97F7107266C53DE862EAD8DC0C58C323A1F94CDA + 7ECC99D4D4800914C8E217D31BDF34BE3AD6EFADDC1B64800AE606F8B9375087 + 7C193CE80B27DFC1E3FA27B37BE1CF557A383FC36B1E6263FCEE55969E35B051 + 971AFA3AE422C7CFC45FAE4E63C321C999015840B6020F9BED1586ABC06C023E + C00F39DF12A40F8EDF849BA718F209F9A27520FAB8597A9AD478F00B66800D4D + 4725852D1810725CB0411FE84D7B17D4FEF6B6CF3DEE77AFFBDEF3FEF7BE0F3E + F0876F7B1BA4E0064C6041A8456D8130FCE167059F79D3A6A1F654471BB0780B + 219BE46ED77E8E9740DFC2FBB7027B8009C0817AD83BAC75E4AB7E70288F7926 + F50886E7128634ABFF294D019950B96A0D17B447F666F8576D97B16C21453710 + A60C30576442C42F98257AA31731A7C1245310006FA0127E803802E4313E807A + 3E20031A90462A7602B3277CB97704C1D753B88782BDA78226988224486F2DD8 + 7B3138832FE80231E802CA950319C003FF664E71B006FD87566F07689AD12763 + 866A0952079AF5739372656B3312DC4777681100D93545E2D7497873266D9048 + EA771780274ACDD7057D223DF8403536677FB5544B2DC7668B710FE7A30F1FB0 + 0101C87897C74405688019224551034B70157969E3801D466E3C80741FA005A1 + D2121CF33130511B24106F36700290687B91780247407B952889B407899A6889 + 99B87B974889BB37FF8993F889A3A8899F488A9D0889A8D8752D1022CE750A10 + 70764107016BA5351640017F2048A99627E7D2066BA08B83A13605237711C70B + C4E62D1080777F620FE1D33B34D485D0B850F73586EB242EE8927869988D8B47 + 806B403666B30A10000763B006086679036387DD8667DA363F0A1844D0168E67 + 008882E637170003E564016B30011C382A192805E5474D230369F35683C4377C + 23F87B0749900A5990BA677C37B0022C1076B5435ED08756195435F0144FF1B0 + 5758F858F4A22709D60615563601D20FC41871CA5372C8A88C64A820559348EC + 178DDEF06BBC800CD4E81179E20ACBA68D3C994414470FFC1228FA923B1B558E + E6884B0D612ED916FF29CD430F0417646FA83B1FC06106204C55894557B952AB + 851A0CF0078FC41225E61227F6812A00069B789668898968B9966B89896AC996 + 7019977279966A797C10F92B1334063FF6581AC400CDD55ABC40728E345DE173 + 5DFF95263FC921F302010310490FE770DD271635F98B57B88783E40663D0066E + 22937F575880C47F04157484517987D2933DE90FCCF3344E7959E1A859D43680 + 04D36077485278A821679018ED8841C69636DA3295F228685AA463AD950560B4 + 3117181B8C8601EF1639AAA30673298ACFB9896FF996D1599D72F9962EF39011 + 3941DB15645A90151430935EA8097F845F25A20A43746087542E69928B0D9384 + F8C47DD122166120FF92D2107E1755060A382FAD4001E9C799F1E50D9F493FAA + 202857E60AD8689AA6999414011153044B41176D94774875D8787373213BA721 + 9C477E417615927706096395BFB9522CC5035C040030054662A43826764631A2 + 020AE002CE699D345AA3367AA327600360402499D28349726AF4A21519C9659D + F04736190DBAC33B58532E09861847281884D171F5279F73071EE4B511181735 + 4219A187F70A000A7200704AF3B4188B4965AD667301A3A03C7910F8E78B7A59 + 4F42268E1C9526F0C02895818E7796A15114264EE98E97C56A0310875833A244 + C75230C0031C244F09D04C3EC0121DB31207D06832B0028D287B338AA36B397B + 98BAA9D609063150FF24C8243340F69DBCD65C87255F39742D0DDA000DF05F87 + 79187AE97951DA265C517FB57A9260517F149718C9A8A54F697EBCA6355F6A1D + DB708B54480F27058782EA206AAAA692B115E482184027186F286D145A3006A3 + 10B0B93CE9A8A71A1A659DD7A11E5A2F1F50AE9154005599AEE8BAAEEADAAEEC + 8A45F4C803E449225ED068A2829C1BB8222D902A5C70A99BE89C007B0297AA06 + 044BB0027BB0015BB0086BB09A68B0098BB0070B89012BB110FBB00C6BB1D209 + 06267003C2193316990F6B65313179AAF1A43C02B126AEBA268851076AD70EAE + 30A5B62A9FE0710C253745FAB98C5938445422ACD933ACC80248D8E28DECD00A + 6BA286CD7AB4D8BAFF6CD29A2F8C214BBB538EED83A74B79671F709BD8D7A1ED + 54941236175794952A9595602BA2C2E437875A05DBF0834B171B19582A33912A + 2A900236A0B0131BB115DBB0764BB1189BB775ABB7030BB114FBB77B9BA34DE0 + 5554303B488256F7940DF0058D9C8017E3452E00D6066B16AB83C49FEF00B303 + 78AB8FA90B4598808002A16E9836AEC085DF701F8C5BACC3B6B2D47059678A8D + 8A77B40A8A106B66729E078E7000670591B909C1284AB9731151AEB759264606 + 59F502A250EB26EFEAAECA9BBCEBEA61FB13AA16F0071A4362F74A2ACEB4AF24 + A02A7D50B0DCEBB005DB01DD0BB0DE4BB0E02BBEE41BBE028BBE72FBBDE39BBE + E6AB06E5EBBEE14BFFB047B0A31C8BA8C182566520176160AA3E1B2753C89E93 + 6B6A505A185C91B99721B3B940B3BE64764766486ED277A3148D62BA01038737 + 9095366B70ADA509BB1EFC2F7AE5947CB85FD53AA1B99B668B52A707B3946B50 + B5D050266AC75E9317113863250C10B65829B6CDBBC35E4B6E7869055DF0482C + 729C8BC622FEB805731023296096E17B04F3FBC44E3CBEDD5BBEDC1BC54F7CC5 + 567CC55A3CBF7DA0B11C4B05F97B56B4980D12ECB3DCE0B8689178B743C06722 + A5083C42B86A3DCB935D1CA15FAB903B1FD0053059BADA038D7F347850C28CB2 + 745D74BA6CAFFBC1CD4A6760828CCBE87F728A606C92446FCCADA2F5BB93E51E + E2B38742D40E07C6FFAA88040CCCBBBCA29CBC5A042289A4A807202A34D512EC + 9656480C028D98024E0C041D40C5E45BCBF09BCBB50CBE54CCCBB97CCBBE1CBE + B6ACCBDF8BCB4FECCBBBCCBEDC9BCCBE7C04FB76013C78B867B5BFE84217FF69 + C6A77425353306651064517AC06F9CC0FB640EC730207C82ACF6A4C138B3990B + 35C1BEE6B8714071819CCE6626205693A6888CC899C12767B0A1EB64BB1B752E + DB18CE7293A7544B59EE01C37E662FE5C8159734CA101DCAE83A0225BA034EE0 + 5AE9A638FDC822CFB4AF4F206FBF4CCCC82CD2213DD2E71BCC247DD2254DCCE7 + ABD2BDCCBE28EDCB36D004F76BB85081B8AD46A1117CCD66ECB8C9C2C6DF6CAB + E1ACB9E31C0B9861FFCE0D60C1ACD418A55117A3D4C7BED656D812C8D5605D1B + FC18F99CD504A166AD6A93F404A1EF288E9B45A7758AC0DC9AA71171C94D4326 + 364B3E58B1519B353465110C06A0BC752DD1115D95862A41555081ACAC07ABEC + 315FB00518200339F00465790434A0CBB8BCCB8E0DBF8D1DD9BC2CD9903DD996 + 2DD28E4DD9992DD98D5DD99D9DCC36F0CCF23A1DFA3B255DBD15B5500CE0D0D3 + DF503365554FEDE0C6434DD493B49376F6070FA18B6F27A45DF6D4797158AAA1 + BACC784F0282D55A9DD50D3210F20073759C850BD79A1B6C73657DC0D14AB52E + 9CD0DAB21E30A7770A52CF354C27798DD7E2EDBCD0BC29AA1105AEA107B0D18F + 30E14C8EA3C471DBFF07CCCCD8235DDF986DDF1D7004F85DD9248DCC9FCDDF97 + 6DD226B86F194006CB77D367C50A9B25B95B6D253C3DAC7F741E810142EE00CE + B34DDBD0726DE6B2270FC1CDB0647E1BE09F4BE2DBEBA250E140010D30988384 + 15E3D220877CDC1FEC36F1CC194C988542378E58F3ACA83D6CD856B56ADD1E6E + A1189775BB020D71E381AE775DD7E99AE44CBEE44E8EE44E4E6E54106A0C7027 + 2772AF64542A2F12231210B71D40039B1DE6623EE6645EE6667EE667EECC3100 + 2212D914A5BD59AD9AB226694ABF6DE24F7D43766215C363E1B35D3C0D462E0F + 71671CBEB4E1433DED4CE2A6AB17CA93E2A6C65E8D09C2301EE95B0DE9D16A72 + 04078ED2C6AA0C5EFFA7D19AD6080DE4CDE06C82028FE7D226D45216E19DEACC + DB0414FD37A8410172602219F81204845B2A6003684EE63850E6BB9EEBBECEEB + 65AEE6051E15380DE7FFA5E9F8E7D0A664E7777EC63C749B0C9D33491BCE197E + B20F918E1F3011B85D72E052E85C88E8A6FB0DCD07AB4097418D29DDF82CE9C7 + 8D445CDD27D37AE3CBA0EDD4562161F2E9CFD0CF555B59D3008FE598DA5ED3E4 + 501EF04A2EF0003FF04A5E957FC3023BD01F2AFA1A58DE122C7162B05C9627F0 + E5165FCB608EF1999DF116CFF18E0DE6201FE621FFF1227FE623DFF117BFD929 + F0A941D0E6A3F0E671EEAA87897F727DCDE0BEDAA784C2927CE1704C0BE5BC79 + E51AF40983602557FF7609727EFD7BF3758E17B040850F9A854103682EAEEE54 + 2F309121CF0662C715A53BF632D67676DDEA2159411FBC54268E7268EA97441E + AABEF6CC6BA8857B6E8BBA31C8E9312B712A8F63022A20A31E8FF21CCFF1BB7E + F21A1FF27BAFF124DFEBBB0CF8252FF87CBFF1F9AD02961004074E0AC5DEAA4C + 2AF3C8FEC94EADF4758EAACDC7F308EC1569A10CEC2159FD3CF49BA1E258B101 + 49AFF4D9638CF0778443C451945EF555DF360C21CF55C687677351728A5D2EDC + 16CC80EF69DD4201CD264EF6EF079FFCCABFFCCCDFFC598429AE48014A772263 + 34F731E1032070D82AF0032700043420F838A0F8E2BFF8E30FF2DF4FFEE85FFE + 1D7FFE82CFFEEB9FFFF136F0F8912F0A302FB9327FEC715EC8A9FD9FE00E0821 + 2100008256160C896114718D148F90916193946171017F1F0363630367671F6B + 6B1B7F6D0D0375135A13751B615687B0B2B3B3822116967F6770655E07075A6E + 70670D018D9701C9CACBCCCDCECFD0D1D0718C6D6B1F6709106E5E5ADE5E1365 + 657509A01FD867039E9FE6A1A2679C631F7F5D7161890C8889FAF91606FF000D + 140038F05F418104131A0CA8D0800E111960ECB060A54D1D337E30F8C0C07123 + 0633BF7CC8D04022C69213345276A0B1B225CB972E63C29CD90187CC9B3473E2 + DCA973A60D132B2E382144B468D15F487FB949B0A6419B2E6DA24A9D1AB54B32 + 0AF96869DDBAD582FF57068B1C451A0BA9D2A5066BD27532276A83D35310544D + 80E30A1645AEB442580913608336375A7E791176E68FB1C3C8A4295ECC58DA25 + 645D22EBE235C1173070E3E0AC65D7EE9CBB77EAE6D5BB87A874BED35EFD315C + CDBAB56BD64D46E8C870616296356ECC98F1E191A36F1F5230F86991E3099823 + 2973265FCEBC79F3952A5F3A9FEE1C3AF5EBD157DA48B1224815A3E00124455A + 064ED3A754D337706AD5DEBEBB78E3CB42B4681259B2663169E2E4E95CDBB767 + A4B24A2B14D8259F5DB874B14602654C8054307514664C23873566E185183E46 + A135DAF412183013B801011C09F4E7D967A2A488CD1AF46085DA8BA57DF5DA8C + 34CE58806CB4F160FF01000CBC919B1EC275E49B6E5F30415C0C2AD8909C4BD8 + 353953744E52C76494CCE1201D0D3FAD80C550E111359E524CB1971E55EB5595 + 0C35A45961C8815DF1031623D4DC470125717491C9266BF9B7815BA604C80D2B + 6B14184B7C7AE112C0821058261804096C500F85896128E9A4D34C7849171BA0 + D2CB8321D6A1195B29869A16284D8D06238CA931C0100100B1FA8FAB06C00AEB + 6BB3AE7623442C141102030D9461867019F9C6916EBBCDA1410E49AA41031054 + 360945B3CC3D0BEDB429657981115C86F7E501E59D07D598E04A7555566CCAF7 + D5228CC8F9C82475DEC91F5B7B0258C79F75AC1107457779D515031428A88D83 + BF68E14519097CD0FFC6999426ACB0638C341060191F8258DE18A48A3ACA359F + 3465CC3DFBE0C34FAA0CC451E3C8240744C0AD11F1E044165DC0718014C109C9 + 11CC071429430E26A4801CB3D452CB3373CCFE1CE5CF42370906505850614597 + DB2EE56DB863AEC75E23A4E95B2E57FA542227BBFAC1936728F19AF2012F5E78 + 01C107F75A6DF52C86FE31001CDC041C4E1D036CD0C631152EACF7A489510356 + 1C70A9F2E0381483DDD606A278A6B18BA6359E1A7D01B4D16AAC94B36A79E598 + CB3AF9E5AF6E4EF98D3AD4568513712470C046C10AEB83195FF8606471292C1B + 7472B3A7040510CC3E3B7BEECBD2A0BBEFBDEB8E3BCFBFDFCE7B4AC303CFFBF2 + 40141FFCF329E170FF74504630FD65B762420DB555C66005DFD5B43CAE089C63 + 718D96D7268EC267031F3058F6D971F483202C6B3280C918F3463C010463688C + 77A47B0B20DFECD385F671E343102AC707F6C440C4B1C37F1D6B1C6ACE1500B4 + 94EC821894CD0560C0030654A10110F842CCF4B091126AC40745D2400CB86003 + E4C86E3944EB5DCF902743A0D1AE77459B4E0E9D23B4A3E5E00259D0D6979C96 + 3DED69EF5155FB1EF810343EFC58A2826979979ED637B60699ED0C0148CDFC64 + 9188BE304870C07043841A80A6B03C468068CC903D16E1C5B85826188C3A83FA + F694B88C919171A78A11E4D03280CCF9F17280FCA32039E747038C600410E1C1 + 77BA603A29F8410FFF4012964676D30215E66C670E68DEF036B949E36912779E + 0CE5F03C993C4E9A5276A034E52739494A55D2000C29B8C116AA67946D610F3D + 460C5799DA33278FB1498B6CE3877D247196287E6D147F680054166445086051 + 7E6A430405BCB8A9030C861C0673CF9BF086B0347A331A7E63A35FB6D18D3092 + 438E0CBC063642510C1775EC9DE2E3CBF9C6B01ACDD57346B5AA556B5C558002 + E06A078C904319BE1049497EE40B66785D0C5260031CA83268B8C3A1447737D1 + 894614A218BD282A71A8518A7A74A33C3B420A7EB883A579698861C2652E8FD8 + 1EBF2911418F8B29BE62DA44485CA20D1B409F7F90A94C6B50E68A59D497DAF8 + 85A97F09866006DBFF183ED0F5BFBC7DF3A988B98725DA30B66D54C61B222AC7 + 1CD3E209BBF9CD6379A4201FD531C8B206F2AC66FDE3C91E72813B8421045D08 + 214752373322B92E0724B8A4EF36894ABE96F2A2A7FCEB4307EBD7C00216A37D + E564075210831550E128D7334F11570AB55D06A0973185A94C376B1745D4E789 + 3855CB00764A8A9E32B332CE0C80FC0EE1154B388C6C8B1AC31FE2671ACF3EA2 + A90084AA008F61536B8C010E1028831B54914074220E1D6BB81BC724E8B83DAE + 6113EAD01C5A3B47DDB2766EBA94ABAE21457001165481011B80C0CB4C485E0C + 48C175C7CA590F3A004A87368FA3B973A8F27CE75EE139EFA37FB5EFF34069D1 + DF7D140AF2854207FF6C7083DA9C743C4454296575E994A74CA86AE1DBAC4C59 + EBA6BF45CE98A375476997F9D3D402F32B80D314C0069600323200A69E45179C + 20A5DB34C6891101B0D3077E5B876D3408AB7174C7271678373C32577CD33C1F + 74FB4880221BF9C8483E72AC92BCE4241BB9C94A7E329211998120EC201F1B98 + 407032425798B5CE58C551C1098090492840A1CCEFBD9D9A9B0705256852CD6D + 7EB3261D606636C379CD66CEF39BF3ACE735D319CF727ED69D5FD9581E10C296 + 9255F0828D1899F684616D128E344DA579619D6A3899CBFC2250572B4D87CDAB + 9CC16854FCD4C45A7C8065982BEE668BF556C6695A630009006E8D857BD5FD0D + 23149A388357DD79FF9A77F6C3B9EA08F600D04AECB4165BCA952B7221717401 + 455A600D6538C0AF84151C9899410A66A8240954B0B340A779AF77DEF39FBD2D + E834DBD9CE75C6339FD34DEE76971BC03668EC0EB2D0B4947E6BD1B9949AA3DF + 23E97E3FEE890DF8C3A82AB6610EB9B10C0350ADD5C072285E70AA0E1F50AD2D + 0A55E153DB94C5B95DB585C4729619D7A1C61008B9380EB8BF12B5C3ABCB0D6B + AA2EE12E75A463D84886B29367DE6499CF5CD9373FF28D3290011650A10B5748 + 801BBE3057837EE117DA36C10F68904934A359CF746EBAB8A7BEEEAA5B5DDD57 + BFDDB8FBCCE6A7A71B07F16E010CB610D9A7E17BA596BD442FC945617FD3945F + 37E5EA6879BACC31FF1C7C0C5DE0345FC6E606A49078B616B045DB7B6DDBDB62 + 5CE3927A71BBB2010790873CB8C3F586AD3921C7526893B9BF6E6D1CDA20F097 + BB3CBA99C379B28F2D7ACBE1BCF43547B6E90542659FDB4F0E5A28EF46BCFCE5 + 231D61787F3E3399751FF5DDC3D9EB6676BA9C9DCEFBA9F7DECFBA07F4EF7D3F + 6791DE60054C40A9D9CF7EF6EEEDA3ED6E97293E363F2A6426332A99CADF52DA + 90262B1035400083D019EE96F9499B9A12863F63C6113F8D3935828F0970FCE3 + 836BC555308AF2F4707979F46B2183169A206CC296730AB8800CD88046D6046C + 750701100620740018A007741524C0B1054C80333FD05064E600517766243882 + 4D5782C9878226B8FF7B27B88226A8822C58822C1883BD678222150337D00264 + 471E89766FD48776BBE408CB957D9216329C974C01F707A5D000E10718E3F768 + F9D22FE8173004935C13686A9BF54EF0177FF3477FCDC071153463C0250E65F0 + 78B3365CDD20460AE428B40556F0F41546C8559DB00E09E8804E66737698874D + 003A11910521900563700018182CBDE1653E401C79153B22C88222D888357866 + 22C87B9058838BD8888C688951E7888D98678E28892DA88999F867DB610239C0 + 04470726D3F783F8C63D68C2694448537012634CE8167C247E09407EE4C2701F + 900A4715262D9544DA274C2A760CF2E7855FB846966027D9007264B87FFCC70D + 035307FD138029F7FF63F832551B708008588704800246E68D49068E37278E47 + 268EE4F88DE8188E315700B321115910077CE0051708245D2605ADC304E9A533 + 21088AFCD88FFEF88F001989A1289001098A67D6013F600224D0023EF00BB7E4 + 83AA487D4AF58AFD9608751270A6F05CB6888BF9B27770F30B25B740DF379112 + 46785B488C88618CCA2084C998298DC77FE2E08C90E7066E508605D34E60658D + 202664DB888079F893409973E0B8731740063BE00471151C91D41BE6F50B5B60 + 2C316002C7E18FFBE888558989A0B88F57999558D9749538895CC9956706760A + A98307906010199140C81EDD338414A97D4F940CBE952807300125E63DB0C070 + 6BF09175392297A6FF4CEE51914BC554B8A59262510D2E590764D88CCEB89871 + 849398A7479A670D9ED793C1D68D98E98D9A898E9B59649BF9999C999998E999 + A2D999A5799A10D87359005E13803A0625243E602C24F0043F700435E000B799 + 9BB8D988B72982BAD98FBA199CBBD99BC3B99BBEC99BFC289CCA699CBC09053D + A0020B69060FA9961119190FD67E6F0987E8D2176300317509070DE0229DD570 + 7D674D045331A370308C538483797114E254ABA67817F636B3E698321993D864 + 186BE76BFA205405988D96B98DA4099A043A9A060A9AA439A0079A8E0B9AA0A2 + E94F5A7205DF7506B9E1078F645030C38137B35047E088C4099C0519A222EA8F + 1F8A9CA0789B4760FF0231D00258606FD4A98A65723097558DD909329BC777E1 + 3006E1998B21B3017C3930709061D7C02207A34D1E138C29E69E67D4628F6153 + 32166B30598632B97F9E220F07C331031853AE2577019A8005FAA5A709A6621A + A6644AA006101BA1C302F6F3077520421788A1BAF13A2420014A529CCB79A776 + 9AA778BAA77ADAA77CDA0329F0043A480693F5A28B16A3ACD88AD8992A8CBAA8 + 7F8329BF550E6D80978710327F207482210C42EA1FA5D0525FA5458D7A6AC358 + 98DFC49288B98C8A699F530A0155BA38599A79FC524139D5A5021A9A605A8E65 + 4AA6B8EAA0B71AA688740158700757D005141A33BDB111AC738FF9C874BF99A7 + C7F9ACCC499CD26AFFA27E4AADC209ADD38AAD0E80038C151474D05386FAA2AC + 088C5F1199036891D6C0225D40A91679A9D1060CE5317789C3530D560FEBE97E + 491A7F29E94D65848D63907F221793AB1A7270A0191F500C581A9942D52FD9F8 + 09B4EA939F8902121BB1043AB1167BB1129B9919AB991BABB1183BB1DDF8B104 + 201BD07707F9F0015A705E453724C0C11BE9650364769B49E000495003367BB3 + 385B03339BB3344BB337BBB33A9BB3426BB3335BB3439BB3407BB447CBAD4011 + 048A16AED49776FBC96F84F73139991A7CA10C14305414D000630018E6347788 + A34EA1420A453A09FC063259A3622BD685097398AEB606F813A5523AB0E43000 + 56481A6E3841FAC0FFB0DB5899013AA6829BAB835BB861EA8D28C30271B0031B + 50072F438F32F3115AF0053793333FD0013C7BB3B869B39BAB9C38DBB97EFAB9 + 9A7BA7425BADA37BB34AC0582D10046909B5AA98A86E59AEAFAA47DB84594CD4 + 0603E09D1022B6C775229CAA4CD6C776A18A6A6D0B9F6F2B9FAF3686AA3AA59E + A2191AA3B70A5BA97502A00FDB931B8BB1217BB1D99BBD1FABBD202BB2DFDBBD + D80BB2ACC28E2B00036410320940747390815E96501A000279F5039DABB4F67B + BFF89BBFFA8BBFDCBAA24EEBBA50CB4B1134BBE70A16BF566A5D300010101810 + 220FEA9338E8F04066BB6FDF23BBA21A09A44A2942384D32F65B513AB08F4722 + F280B039892AA9D1FF2FA352BDD6BBBDE1CBB115EBC22C7CBD30FCBD1E1BC333 + ECB17BA803E7CB0259D0066FA005D3568FD87600AF439B1D5ABAA79B9B9C7BBF + A03BB44DBCC450ACC452FCC44AAB04CF190355560A405815004C266C2984036C + AED678A47DEBB5DED9970E4C47EAC419F082695758C1B525AA84D9547CF362F3 + 09B01FBCAA1F47227244C2620C870C0BB82A1C6CE25BC8867CC8889CC8DDCB01 + 286048B3110454100774000152D0BE1988015F2030724AA7F5BBBF44EBC9A01C + CA463BB480BAA249936F4AA84C8DD6C5E9619DD719AA55BBB756AB0897B020E5 + 89C66033B6BEEB193BB64080597ED83798A8C64D6E5B7FF601453416B075ABC7 + 095022791BCB1174FF17218329DA38C808A8C816CBBDD8BCCDDCACBDEC18113B + D00574A005917BACBCE107F8882C0D15CAECDCCEEEFCB9CF4902191005F98638 + DFC7CA47647D624CC0F4D1080A823F82B33F1473311603C19C219256E14E59B8 + B6C384924BBA18AD168600BB98CB2C931F572278CB7EB3FB38282CC8D6AC0E28 + 9007E22BD2164BD2217DB18C2CD22A7DD2129BD228E0D230CDD227BDD28C5CD2 + 337DD3138B3246C9007F500652004916EA1B7E606DF08B3329D00348ABB435BB + D441CBD44C8DB34FFDB34D3DD551FDC94E4DD553ADB9579C0164B03D9C971660 + 73CFABCCCA52E3606D59C2FB1CC770C279BB6819F1BA40635BD0E770D0443A21 + 6B87AF17ACAF0F0DFF4E73C246EC33D1CB6BD155CA636FAC72E732BD1EFDD103 + D0CD236DC826FDD8136BD2D80CD917DB04A9C9023B4081724588E6655EF64849 + 2461023DD0C9417BB4559DD5EFECCEA36CD53500A824700141A0C5ADCCD6F130 + 5A7C32D6F82C158DA6CFFC7C2A4B755B67F0AE9A0AD705AD22BCAC279DAA54ED + 6792277978E0B44641D63EF5C998764B2275A35C594A5317860D8A6DBD22CDC8 + 319D077990D2E37DD32BFDDDE26DDE27CD01E90DD3EDBDDEEAEDD2E27DDEE58D + DE8CEC10DC15047440058118C40665065B7088A17DB9B8B9D44970D5079EE007 + DED40A8ED508EEE00BFEE012AEB3114EE1095E0338009D2CDA6054011539156B + 053BD0F79CDB5E2CFFA353CB9FB2BCB787D0321320D0E859DCA1B2CB6003987D + 7DA4A6D69E5CB892CEC071CAD82181CDBC0930D01A3DCB7CCB70ECD3DD014AD3 + 370DDE2FFDD2E97DDE4BFEDE2B1DD2F21DD2F50DDF50FEDD560EE5ECADE4226D + 48371011B080B2D3A611BE616D2A2B03790506F42BD59FCCDAA31CE76E5EDA58 + FDE6747ED5762EE770DED44A90E1587C0763E2E18C57B09AD11FA55515AD1BAE + 9665D7D5D8DB7A44016E63DBEAB453300EC111CCA98FD28AB09CAFA9967168C2 + 0898B28C740BC27B5C302897DDA9224F5C8AE408D8DEF53DDEB0CEDEB2BEE5B4 + 3EDFE3CD01E0FDE4B03EDF56DEE5E28DEBBAAED2AFFEEBAE4EDEC28EEB2F30B2 + 55460538550729FBFFA65D061222511212000634E0E0165EE1138EE00DBEEDD9 + EEED067EE10A7EE0FDBBBAB3AD0B204EE8CD5C38DF1719243E15AE2C809877E3 + BE0D63C5D4CB956EDC119C31A5B092DEE3DB79DDE93A5E46D3FB36CA0CC266D8 + CC75530F5868D86B8A0EACDE93BE9EEB14FFD2C04EECBFEEE413AFF1F32DEBBB + 5EDE138FEB1AEFE4F61DEB23EFF1BF0EEC2870482BD0738DF001F2A83A9D4D2C + 7E7033464D034A00EED82EE1E3FEE0506DE13B7FE7DACEE7192ECF800EEF9C97 + 0D20FE71A52E0F87FEEE5221B5583AC0F45EF599274F7BF207BD8B221633D70E + 3B774808BCF24E7801EFD067CD176EA3BCD4ADC777BB400C8FEA6235637318F1 + 0888EBC0EEF1B26EFFF77ABFF7B17EF77BCFF779FFF7767FEB82AFF77D8FF785 + 9F076240004D0011C2DA066730014407B9C2C23AE865D43D000544DBF3DFDEF3 + 9EFFF9A0DFF9E32EFAA2EFF945CF0441C0E15081EE844EE8CD1BE49EC022EC81 + DBB9CD3D674DE4568F855F314DC9D0054C880E94DEF5BC0C2F87AEDCB8BF856D + CB928B40553EBEF6F7C9AA412E1A8129CB5A8A09AB4EF7C266F7270FF27F7FF8 + 847FF8776FF281FFF71AEFF783AFFD814FF8DD8FEC2B2F025A72073B4007BEF2 + A6C2E207AC53332231E034CBF9A00F084982493584838583898A8B8C8685888C + 8F87893D2A2417416D9A5D6D7F67090970A2A3A3A109031F1B0D9B9AADAEAFB0 + B1B2B15D01711461FF0C160CBCBDBEBFC0BD616114017F1F671F1F6BCCCDCECE + CAD1CA6B1B7F6DB6B9BADABBBB0CC3C314E1E2E371011B63751065EB10EDEEEF + EE750963677F0114BEDCDBBA16FD0CC61F06081C48B0A0C1830539285CC870E1 + 0B0E0F1F369CE810224585122B4E8C6831E3468D142312687243C4053201EA68 + 31230583CB97307D6CF1A38184891E881E30D2298867129F8D80EE1CDAA8E720 + A1917A98B891E10E2B4FA14891AA5347D4BC33D4FE345835ABABD7595CBBC4B9 + 352C985960FA18946BF0A7ED8635D39E3D93966C9A2AB1B8B6F9EBE6ED9B5F0A + 63396D180047DDBA32F012533DB5C61EBE7DFAFA49F616A041C03108336B2EF8 + 220F45CF10F3741EFF3D113407D3A14F2F342D5A616BD5AE4F8F16FD9A7567D5 + B457AF9648C040C90B777804B852C68C1E3F7E5CFAC0B0DCCC812F7364D80483 + 0352D1EB44B16B5F84B4E803253F4CE4C072A50D27A851A5AA0785799956F35D + 387D9D3FBF96AD5BBDF89EFDA58F58B9005D1C938C5C7249230D350DE0958B64 + 0CEE574E1B1B7C30061CE91C865862F1C833C6070DDCC34B647A4D56CC1F6B9C + B1D9899B75A422472CAEE8E20B30BE28634430C6D8E28D33E6D8190A05307552 + 171B40F0854BC9C184C11766F8E0470B3990F0437535E824E54F544E69659558 + 5EA965965C6EE965964A1CB1D4165150D1C927EAA549CA551FBC47DF9B6FD642 + D67E740213461C10FFC645203406D6D5581B7332E88F361FF2528C656324908E + 61182A764A9B1E122AA9A00C5010A08928668A5044AD714ADA6C9F762AAAA72B + 8E4A1B8BA7A61A2AA8A6AE9A2A07248990010C745001C70466C4F49214CE7DC1 + 444D1250A7445047156B1477C652795D77C41EABEC4FE089D7D499A0A8291555 + 55B1875535ABC4271F9CE0BA62DF2DB864536730DDDCD945036F19B8679F670C + 688D2D79F163811593ED420C408A1A7658A3F1C0718A2A9182C80D83EA463800 + 669A363C508D10472CF1C414576CF1C518675C711E06F8B6020B6AADE1851E18 + 140913AF5FF8300708364930EC9730772973CC34CF5C65B4375C400754D6F66C + 0A668D25E86DB844FF6F621F36E7D2094E65C8D4B5CC9ECD44136F2ADDD2FBA1 + 152184802F2F7732DDAFBFEC00BC182A1D3E66B0BDFEE0B901A60EB73D008E70 + EB38A38D72C76D374474DF4D230A3ACC7AC7151BA894AB72CC31C76B924C3EA1 + C29389F8E478B1533A7BA5E4C93E4EF99692473B1E1D9FA4D7B37A55098C8A2A + 5B156D7A2B72D69B34BA9491484DD450478D8C32D55893BA2E585B51E9836B53 + 0876D88D667B862A718471F6C192DDD9C61A0BBBEDB6C6D0472FFDF4D47746C0 + 084C051107031F1C80C17126632005AF4A6A00C21326FCD083510FB49FA5FB56 + C25FA5FC52C26F7FFDF8CF7CFF4FF0E3A094064140D3E7D44415ABB4272BDD8A + CFE9C035AE72AD0EFF2D6A09007C1A5022A741CD5DCCE0562DF061057C85A132 + C79850852C742180896E0380CA065F5688300996A879CE7358F56648C31A422F + 0F622840DF8240053A4401572E21D9AE306006C469A04912585FE5B0C43E9B5D + CE66316BE2E4A0F5831868000B021BE0E74C71953F0D6D81708A4F00E865AE07 + 0A231CFBF284052F68A068FCC94316B8D33106A0A845FD0B60ED18DB1A525828 + 8335084F2F8CE1F320868717446062878451220D59A34316F2909044E40B0A09 + 3147466C9130A2642323F6C84932529192ECA4239B30821530210864A043190E + D01221EEEA0B4862021390688397BD4F4BFB6B5FFEE2B7CB5CE6727EBBBC5978 + C6632D5368B18070FFA0472ADAC2153032905EE52AE303BBA1B60D589319072A + 90D4A686A06B006830BE031B1E03968054A4F078688B2320CF3006CCC44B909A + A218263F79494646F29E929C67242B29498BE1139FFCFCE7439AD00459D16A00 + 103840920AB79C868ACF0CB39C0E0EA048D19A59B4A25D52420F62D08220A409 + 14201D203205E6CE6E7ED1995E116339C825CDD5E9EB3F1214D01AB539BBA751 + E32DECF41D094B283681D5432C2A840C3FF0A54E089988616C83E7890C190148 + 36B5A9F684EA53997ACFA74E55A057B5271EEEB955AADAD3AB55B5AA58AD0A56 + AA5A15054DD0C10A30F1870DC0E10B7A2059F89893B23934C90412A84194F8A7 + CBBEFAF5AF800DACFF60074BD8C026E10724584119D2D4CE44794E8B06A49A02 + 511AA706B6F48165515E05F5442037466D61A1B0A385C6E98E64A602A8854A6D + 3A3F48C1A42AB561586564274529DBAFE273B6B6CDAD256FABDBDAC656A0B4BD + E7484A9281206C2501B034524BC617CB1668E00936A8C1B080D957BE5617B07C + B5AE2EB3BB5DEC76D797F8C301625B3052920AC4B159146901BBC8CC6652162C + 9B1823192F7B2E6E288F99EDCA2636399B53D19290B455D9D01F808ACEC954AA + 32256AE700DEF9DA4C3575AB0FBEEA56271C010857F8AA1196AA54BB8A61AE5E + 98AA160E71562F9C61129BD8C2207E6A575180BD0C60219575F042AE8EA35C58 + 1E804978ED010EF0FF57D81EFBF8C74056820472C00437AC89610B6B67B5445A + 0A36A9023E937DAF2CC4781FD599B11780B18504D7B660CEC2652E741CE16801 + 6CDA0117AF8F90B9D72EE210A04036B86D61DDB08A9D4A67437258CE510D6B6F + 3F3C56AC4638CF56BDF33FA56AC83CA075042EE60115A2E0BD2239747C664899 + 7349F0841F4C17C898CEB4A675191E531E395E6C432F643F1D342987918C5736 + 0B6BBFDCD9665C134DEDB82399C7D0186C1478326A0BC89B9DD7E75EFBFAD7C0 + 0EB6B0874DEC5FCF200233B8DE0A66150532243488467289737C9038F53960D3 + D8CE3661C3A3812D84EE2AA0C6949297AC5EF32E835B4633F52B9AD94007A65A + 1B87DA0ABBDAE86AFF9C8A9051A46D8769CB969F7E7F08D74012B7405CBB6BCD + CCB9D8084FB8C2175EEC421254042DC00215E2308003808F702D89B419E6C0A4 + E9F052DB20DFB41252F08415789BA4E12EC8B8476D156D510DCAEA9EB29CEE41 + DFD5F9672C4C9B9A9E5E3DA15803AFA702B6B5500FB6353CCDB1E0BC6EEAB197 + FE54A63BBDE95067BAD2914DF5A93FFDD8569F01D6A97E75AE437DEA56F7FAD3 + C33EF63C10E0377738031C14BA9C92C1842510FD550ED237D1C20A00B0776F5F + DE1FB0F7BEEBD2EF7FDD7B6001FF1D0970740B2867F082417DDEC71E93A4EE71 + 6FCCA73C46B294E5DD586E338178AED39F6328C06BE0F7ADD39627A4C790C452 + 8770D72B8C75D507FF5AE97858BAEBADDA7AD9B79EEC5C8F3DB2552FE2AA47BD + EABA1F7BEE59DC379DD1610CDE23D2A3A5F085036CA105E7BB8912424E7D6C8F + 9CA3580037A6C21DEA901EF3DB077C32CC27DF86B0547E2C5636E34B25A80912 + D9C5DE5FF33C3C02CC21380E1D77450FB8E94FAFF5FE8BFDFF5DE77F4ED77F01 + 886C5AC77507388004B8800948800028760EB88008C88048C062117705575007 + 2C116D43C4049376133840787737827FC7772648827A77822A488228B88225C8 + 822698827787031240022DE00651C0789BA1642CD764A39340DF427EE25279E9 + 7765C4100E6A132F379560E1247FEFB06F34A75A2CD44116906BFB174302D880 + 4BA7850678755C28FF815E08860938815DC8805FF8856408865DB886FD474AA6 + 645C01B07652801CD19624D4561395A65DDA26782A587D80A5143980093A6810 + 29075AD5E27804240AF48020A52384AE607E96777957665F6AF30CEC5447F8A6 + 18C9B44701B02043D7206A615457888566588AA6788AA8988AAAB88AACD88AFE + 875637B0023010075700075AD0121CC82B52E08194F62432E88230188CC0388C + C2588CC4C8771A251E4C908304377083B87288D833EE1479E3E788E6215F73F2 + 6EDD9065F3A60CFDE5733C95479B780DF850601D7460F3D68CA38822AED88EEE + F88EF0188F04880704D0373010047750076EF005B858382EC17C07406D39F004 + 499404D3E78731E8FF6307A969E01103E3A1789A9228E9356AA6F083F0618DAF + 903A35875900B10C974815FE327F9BD8219EE847FDE041000191EBD83033B000 + 2DF9922E199330399332599334799336999338B9933AD9933CF9933EB9007820 + 06C485059CE3062D31570FA524B354693D608C50798C51399552898C55D40203 + 100527C27D47855ED1782DEBB588A483919A503A72C25292786596226F6B137F + 3F571503C089E6B242FFE60F1FE4092B2948042893A7E8927BF9925AC7978039 + 98813993A528987E698A89998A36599882F9978BF99262D0622F7606CFE64AFE + 78245E80014824014340582D18782E98827D159A55298CBA448344560728C27D + 03316E5FA926F3B0FF60267552424865E8B7914AB3526CB60609E00E6F090771 + 498EF72719E738226E96976D03930B109440D992CDF99C31199DCE599DCC699D + 41499D34A99D31190162E0865B4006573006D021572713692A030203E9322F78 + 9AEE4995F0B9823D30644C004F2BD783903796649991A886791F12077FE096A5 + 358E67763C82F2416BA38ECA8922D8299D0EDAA010FAA0128A9D5BE586C04106 + 75905C6E5738CC654404890307D977211AA27F37A2A49990225882279AA2A4A9 + 142BE0060EE39A8638913D832D28776E6E126593677ED09496F5A50D008A0E8B + 1230C359A09F381977A96B0BEA3CD7D99CDC499D4EDA934F1AA53949A53539A5 + D7B99D4EDAA456BAFFA5D349A55C0AA5D39906CD3912100703E22924177732CF + F105CE853E96169F72FA9E743A823FF0043718A32A799F14399B58F11EB6799B + 6759844983A0842192B4C64752F86F547897C9B9A40EE3A5560A9D602AA95F4A + A95D7AA95D4AA99C6AA951DAA962FAA99B3AAA934AAA32C93719C0025D400632 + 6624CBD1120DB524BDA804735AAB755A954A7109ACE93C29C783B1F9518F826E + FB893A63844698B516CC134E10A0887BB43DC579A0C6A0A090CAA0996AA51550 + ADD87AADD81AA5DABAADDE9AADDFDA9CDD1AAED54A8FB178012C602910601C6B + FA8F3EF00534D18B3DF08BC528002368AF7C87AFF61A8CFADAAFF7FAAFF90AB0 + FB8A8C43201E58C0FFAB85D858E456A3EBC526A5568DB7797EC6BA9B08860CBF + B90E70B906A865A0220210D32A485F4AAE223BB2245BB2267BB243D923177005 + 0CF007C5D18F0DE5039136131D27013F40AFB76AAB3AFB005759075AF9663CC8 + 725CB4214F16A8824A841BA92E24026A8A82B1B4D60579C1B1A41721D2FAB19B + B100D74AA6598BB55C7BAD5EDBB560FBB562CBB55A0BB6653BB6681BB66A9BB6 + 637BB66B4BB670BBB56DABB664BA0024E16264C0078243246F57443E10514934 + 7D033BB8FEBAAF862BB0877BB8011BB089EBAF8C2B00AAD9513F1B43096B4C90 + 153AC9F4A76E32ACD78896D204180172190B36218AB801504B977D64608064B5 + F024AE4EDAAD63EBFFBAB2CBB5B30BBBAF7BBBB58BBBB4BBBBB1CBBBBA6BBB5F + 9BBBC2EBBBC38B046E8805787206B7F812CB5744BF4202368BB33B3BBDA7C96D + 5B7007F05488497688E56640C9500D46138411BB5256560C9D909C534330466A + 92FD702714A4A4ACEB366FCBB6F35BBFF47BBFF69BBFF8BBBFFA6BBF78D00419 + 700163F01642C2B7E1935C2C63B320DAB88F5BB884ABB80CFCC00DDCB8F84A04 + 771A7157E858BFBA1EECC5B9A8A391861207E958106DB24141C5BE6BD606F01B + BF6EC3BF2EDCBF2F1CC3303CC3329CB6765B4A4CC0023B10076A4A38AF6A065B + F0B747F40429D003B4BA828ECB8249BCC488DBC48B3BB84A50B04CB1ABAFE59A + D0F87D56313ACCE4FFC1830A18AD0543030129E5B81769866BCB03C62CDC3658 + 5B015ECBC66BDCC670CCC66E2CC76F5CC7747CC7729CC778ACC7763CC77E1CC7 + 7B9CC77D0CC76F2CC87AFCC787ECC60BF09D10770701C00765C08F6EE7683EC0 + 7C662003EB19A714BCC99CDCC99EFCC9051B886F26A3DBBBB0D682B97EFA72DE + 22BE93773495A13007B10C1DC20F93622F45B73C559BC69B51C376DCB5730CC3 + 7F1CB6BFECB56980B6C38CB5C54CC3C77CC734FCC6E62A8B77400772C8811870 + 005E7063431CA74FECC04CBCCD4E2CC1E0ACAF166C456540C5196CCA90D5C11E + 5C7EEE97194A78BA648C3CA4B7C2BADC36897CCFF89CCFFABCCFFCDCCFFEFCCF + 007DCF8B7CAE2C40FF0709B581D1A68B1C37909AFCC90EFDD010BDAF43508318 + 5C7032EA95DF972DED21ACE6618D6C41B59BF1018072A42F75C64856CFF61CD0 + 2ABDD22CDDD22E0DD048409426710761B00375E03DE65938332B903160B3FF1A + D1401DD486DB695B607ADA5BCA3DC81E5A0CB131F7D1C8A019F4D00071902FAB + 25C28F8AD20EA3C71E20C75B9DC75BDDD5158006892CD6F90CD6665D015B4DD6 + 689DC8602DD6607DC86DCDD56B7DD66C7CD65F2DD7753DD7727DD779DDD761BD + 001170B730B0037FF0562F6132322BB3186057D0FB034420D4900DD9DC76B0A3 + A878182DB48BB8B98EC82E574D10F4F007CE9A4EBB3022F48CD559FDD26BDDCF + 6F8DD7F8BCDA65CDFFD6FAECDAFCBC04AC7DD7749DDA797CB727710567E00543 + 92D0CCB70572F7A1B41AD9C6EDD04460782D000127BD6B17ADC1344A401ADD65 + C2AAA3EFD5564F9D1998B1019D28DA112420CD6DDA0DA3D7B64DDEE65DDEE87D + DEE4ED01E9DDDEEAEDDEF0FDDEF28DDE1E8006EC3DDF68ED016920066260123B + C0006B3001524063E79924C32D018F6DAF42B0AF0BAEE00CFEE00E1EE102D0E0 + 130EE1152EE1149EE10230D124C004C27985CD286A14696E45CBCA28C5D9D24A + 0F2854A0446501967274E21D43E5EDD7768DDBEE4DE37B2DDF38BEE3E69DD77C + 8DDF330EE47AEDE336BED71E40006B259E7470D3FD98993EF0E46FCA9EC73DE5 + 9CAC043860020094FF97176DB958CC5E8D686A28BE197F7A0F27B96601A76031 + EE3CECBDE66CCEE6F6DDE6701EE772BEE6F93DE76D6EDF62FDE671EED676DEE7 + 7EFEE7807EE76B8E063340942B1004571007DD036D4324054F8EC90499E015BE + E01A4EE9937EE996EEE0969EE917DEE9955EE188559F2B49CA57FC390D5B52E0 + BBCA278E5327B20C6DC041BAC3660A83E669DE36747EEBF7FDD56C5EE7409EEB + 73EDEBF41DECBC7EEBF39DEBC6AEEBC8FEDEC75EE7BB4EECC96EDB317D0317B8 + 0351B0BC98F9E41A2703E7E399C54DE5DE6EB8FF73BDE1BDA012899FA1A0E209 + 4459612EE66D32D5F862295C56EB8214E8F45EEFF67EEFF89EEFFA5EDF683099 + 817807543000CB9BFF1C075C57D1370409FEE99B8EE90CAFE99ECEF00BEFF002 + 30D993ABE53A08DD1B4C210524965A2179A6B3EE27B206DDFDE212E24EB92CEF + 06B1EF2ABFF22CDFF22CBF002A4012E84A0510B0120E75F3527000F16A0243D0 + ED92FEED869BF00F9DDC9750F1A33E88DB1BDD896840B459E2264E1F201FD280 + 22EBD93D7028EF301E500259BFF5F6ADF55E8F065EBFF5613FF6622FF625F0F5 + 649FF6653FF667BFF66EAFF670FFF6721FF75ADFF5737FF7FA6DBCD983816F35 + 871BFA3DCCF705DA4E699FE9F00B7FF8109FF888BFF8973E04786AF4D32A6E22 + 2EB416F9F450CFEAAD690DA278F5F3EEF6EC4DF69F2FF7A11FFA745FF670AEF5 + 6C1EF6A4EFF9AC8FFFFAADBFE6A0BFF5A32FFBB4AFE7AE1FFBAABFE67A9F686D + F006ADEAAA1AB72403D9F386AFF8C6CFF8C80FF1C96D72906FF1BD7AD9A61E96 + A8D04D4513F59AF1BDB36EF59C8FF55EDFF6630FF6737FF6DE0FFE69EFFD590F + F6E6FFFD6C5FFE2500F6E8BFFEE12FFE6FFFFE674FFE77DFFE709FFE72BFDF38 + 0C08645D036E5F18187E8888665F5F3E2D244F434A4202959796999742989D9A + 9F9EA1A09902124F1A5803AAABACADAEAFB0B167B3AD6363090970BABBBCBDBC + B8036B0D6DC4C5C6C7C70D1B6B67B1AE671F1FCDCED4D5D6D7D8B0251EDBDDDC + DFDEE1E0E3E2E5E4E7E6E9E8DC25EAEEECEFF1EBF215624D2B1759716B135289 + 7A3E0E613023C550FF8B1C4F7E0858288408C385A344617A288AA22587A0880C + 9140E2C2986C20B3CD9A762B97AF93BD12046BD005994B64CA98859C49B3A6CD + 55F0DAE9DCA93327CF9F3B7DB6130AB4A8D1A34089225D6A5429539D0AD2DC63 + 42264E17088E30E81198A8A09939087F1091688953D94D684199E5146AAD26B7 + 434CE42813E5A6DD91B406D8C26512651D5D093E7ED8C0B24BCB9788634EA3B6 + 785563BB9023AF0AD70E4DCF1296E171B35C19B367CEE5867ADEDC4D3468D33C + 2D671E7D79B56870AA75828E1D5BF3E7A4A55BA7060ADADE0D265400C41970C0 + DF568152186138F84482C288D0C94A8F9E51420E264124DBCCCBAA24CA5D63CE + 10EE12A07C80C388FF5D2AD6CEBE7DB6A7F0E3CB9F4FBFBEFDFA69C4FCE69185 + 0221337E249208063E980120130839E750276BB1C5D659103E286183694DC8D6 + 0F2668B0857B35E1D5CC5E70F40558786BFCD1451C148411471CE7A5F7D27A1C + C628E364A7C966E34FA0D9E6136CB97516946738DE98DB6CA1F104CE513BB206 + 0F9147EEE6A393A9E9D7020B6184B1070452084420065214F485063990608204 + 435037DD9911B9750911449840021375CC28125EABEC95CB9D2B918762952CB6 + E8224CCB3C26E7A09095A080A188B673E8A13B2D9A28543C395A94A394425AE9 + A59622CA68A49A72BAE94F923EAA68A79B621AEAA7A4768AC40D2D904181050D + B86186565A1E2205FF0820842981040B3AE8EBAFC0062BECB00DFD704A2A84DE + 5452606B9C48C18A1444DB277A7F160363B2D8DA5469A340853AAAA9A266EA6D + AA98723B6EA99D7E1BAEB9DDA6CBA9BAA8B20B2F1A52DE1186707548A1C7715A + E29A6B826556486184035B48B0C0976C745D1D1F655B8D87AAD812DE1F7130C0 + 4095613C3B6DB5C904EAF0C721912B32B8248F6C72C9289FAC72CA2CAF7CF212 + FAAD1004030074518621030AE4EFBFCD0D3116B140072DF40F12685817C8CED0 + C9CA070D0410C6C5D16ACC22B51C5F8BF4D5B12880C6A29C695D6EAAF08AACE8 + D68F6E5B36A4F38E3AF6A55D934B36BA6A9B1CB7D9E8B2CD76CC30EC90451751 + 14B765403BCB90EBFF13098D75968307276EF0E2BF0A40044717C489F535B308 + B367D41A974775B5564FEEB92A0A842EFAE8A4976EFAE9A8A7AEFAEAACB7EEFA + EBB0B38E061731A0B2030014D4F1853F3AEFCC3399870B2DFCF044FC503B1C9F + 3306CD1A6D049022E62B6ACEB1319D278FF42CB12F1ABAA6A593BABDF6A8738F + 72F7A68BFFFDEBE65F4AFEE8DE83CFBEE8E92BC0451322E43D45006F6861C671 + BE8320380891F0195A1007AC8311904207DC44F132842CEBC1A2720DB85CD4A2 + E7A7E9B5A17A0ECCD6484487000E9AAE83AD0321E944383A1192307BAF3B61E8 + 54A80016A2F0851F64DFFC6E70012A848001C4A155FF7616C0E00DEF87C26213 + 47E074B40CB20282FFCECBD804A3B7B93F61D08884A2050CA748C52A5A11755B + BBA2EA66D7041AF2C00914F880160EB14310CC4106609284E180C84661190F15 + 512003141D7306CB3D6F89D2B3E0053D36C76441CC831D0C24205B4848411AB2 + 90883CA42209793A419630918C1C212417F9C8455A7292923421264F78493074 + 31032CB0D81AB4F0851DCA40067368810C22219636BAF257C5AB5D1D54D24724 + DE515A1BD3E313FBE81E0F8D21759A5CA1072BB9C94C42B29191142627597749 + 625E5293941C66323149CC472EA18B176041161870860994F1946794014202F6 + CA720A81682B7043C3E6084109E2328F16DC252F2543A75BC061930878663E0B + B94F43E6F39FFE04FFA8402709507EFE9383FDC4A7400B1AC88532B485FD74E8 + 411B4A51832ED4A20145C035479081203821046D38E50ECF388733B2F267E66C + 63F14880857542D1964AC4E5D4F4B84799CC534623D10B1CEAE0064329F398C5 + 7464249F19D462FEF490472D2A5185BA54A53A95A830BB070CAAC000299CD177 + E09C831FCE08B094AA940824D8C21D78D9CE5B66AE82D393E74DEFF2213840C0 + 0D5A50C11214D00789DAF5AE19C5AB5E2F4A51896274AF800D2844034BD8C222 + 607E2BC0020F0C74D5C0A1720EFB5A654286E05536B6A9050D7C691D9B66560A + 36D1456A5DEB4CE8948BB76AE100311083A1F27A578CFEB5A28A4CA85D13D9DA + BE1A96B5B01DEC43FF6D7BDB81F25601F6C0C7160EF085C6FAEFB125C5C01CD2 + D8CACA12EF141728A211CB1AD3B37E363DA1152D48723A06B7BAC10B07388006 + 622057DDF6F6BCE84DAF7AD7CB5E892256033E68841EE6E02F703E560FA70C0B + 659D2BB4956AA00CB5DC6C12A1C7449A6657BBD8A045774D1BDE032C97044DE0 + C212F06ADE88EE75B0AFB5707BCF5BE1C27678C3B3B5470E348001E22AF794C8 + 2DA98AC549821FF037686C225A0E36C4CECDBAD3BA06E62382B793D3D2C2B5C1 + E17D3079278C001714F9C8F9347292FFA9E4231BF9C94866B240A1DC64805259 + CA576EF295ADECE42E6F39CA5AF63298A73C66282F39CB588EF299BB2C3F15DC + 40034CF8C2017C405B5254DAB9A4F31567E15E1C34633121C0C218301ED15A35 + 1DEF98267859F0774F0B64071F444C5CA82B88274DE94A5B3AB02E58829BE11C + 5E82E499A42A46048B79C567620DE1092D0074043B9BCB781AFAD02151B07719 + 0DE44000003B} + end + end + object PopupMenu1: TPopupMenu + Left = 104 + Top = 16 + object Listadeconexiones1: TMenuItem + Action = actConexiones + end + object N1: TMenuItem + Caption = '-' + end + object Opciones1: TMenuItem + Action = actOpciones + end + object Refrescarconexin1: TMenuItem + Action = actRestart + end + object N2: TMenuItem + Caption = '-' + end + object Cerrar1: TMenuItem + Action = actCerrar + end + end + object ActionList: TActionList + Left = 72 + Top = 16 + object actCerrar: TAction + Caption = '&Cerrar' + OnExecute = actCerrarExecute + end + object actRestart: TAction + Caption = 'Refrescar conexi'#243'n' + OnExecute = actRestartExecute + end + object actOpciones: TAction + Caption = '&Configuraci'#243'n...' + OnExecute = actOpcionesExecute + end + object actConexiones: TAction + Caption = 'Lista de conexiones...' + end + end + object XPManifest1: TXPManifest + Left = 40 + Top = 16 + end + object JvTrayIcon: TJvTrayIcon + IconIndex = 0 + DropDownMenu = PopupMenu1 + PopupMenu = PopupMenu1 + Delay = 300 + Snap = True + Visibility = [tvVisibleTaskBar, tvAutoHide] + Left = 8 + Top = 16 + end +end diff --git a/Servidor/fServerForm.pas b/Servidor/fServerForm.pas new file mode 100644 index 0000000..65676c5 --- /dev/null +++ b/Servidor/fServerForm.pas @@ -0,0 +1,87 @@ +unit fServerForm; + +interface + +uses + Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, + uROClient, uROPoweredByRemObjectsButton, uROClientIntf, uROServer, + uROBinMessage, uROIndyHTTPServer, uROIndyTCPServer, frxClass, frxPreview, + JvComponent, JvTrayIcon, ActnList, Menus, XPMan, JvExControls, + JvGradient, JvGIF, ExtCtrls; + +type + TServerForm = class(TForm) + Memo1: TMemo; + PopupMenu1: TPopupMenu; + ActionList: TActionList; + actCerrar: TAction; + Cerrar1: TMenuItem; + N1: TMenuItem; + actRestart: TAction; + actOpciones: TAction; + actConexiones: TAction; + Listadeconexiones1: TMenuItem; + Opciones1: TMenuItem; + Refrescarconexin1: TMenuItem; + N2: TMenuItem; + XPManifest1: TXPManifest; + JvTrayIcon: TJvTrayIcon; + Panel1: TPanel; + Image1: TImage; + JvGradient1: TJvGradient; + procedure actCerrarExecute(Sender: TObject); + procedure actRestartExecute(Sender: TObject); + procedure actOpcionesExecute(Sender: TObject); + procedure FormCreate(Sender: TObject); + procedure FormClose(Sender: TObject; var Action: TCloseAction); + private + { Private declarations } + public + { Public declarations } + end; + +var + ServerForm: TServerForm; + +implementation + +uses + uDataModuleServer, uConfiguracion; + + +{$R *.dfm} + +procedure TServerForm.actCerrarExecute(Sender: TObject); +begin + Close; +end; + +procedure TServerForm.actRestartExecute(Sender: TObject); +begin + dmServer.RefrescarConexion; +end; + +procedure TServerForm.actOpcionesExecute(Sender: TObject); +var + AForm : TForm; +begin + AForm := TfConfiguracion.Create(NIL); + try + AForm.ShowModal; + finally + AForm.Free; + end; +end; + +procedure TServerForm.FormCreate(Sender: TObject); +begin + JvTrayIcon.HideApplication; + JvTrayIcon.Active := True; +end; + +procedure TServerForm.FormClose(Sender: TObject; var Action: TCloseAction); +begin + JvTrayIcon.Active := False; +end; + +end. diff --git a/Servidor/srvComisiones_Impl.ddp b/Servidor/srvComisiones_Impl.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Servidor/srvComisiones_Impl.ddp differ diff --git a/Servidor/srvComisiones_Impl.dfm b/Servidor/srvComisiones_Impl.dfm new file mode 100644 index 0000000..f91a5eb --- /dev/null +++ b/Servidor/srvComisiones_Impl.dfm @@ -0,0 +1,424 @@ +object srvComisiones: TsrvComisiones + OldCreateOrder = True + RequiresSession = True + SessionManager = dmServer.SessionManager + AcquireConnection = True + ServiceSchema = schComisiones + ServiceAdapter = DABINAdapter + Left = 678 + Top = 193 + Height = 300 + Width = 300 + object schComisiones: TDASchema + ConnectionManager = dmServer.ConnectionManager + DataDictionary = dmServer.DataDictionary + Diagrams = dmServer.DADiagrams + Datasets = < + item + Params = <> + Statements = < + item + Connection = 'IBX' + SQL = + 'select VEN.NOMBRE as VENDEDOR, COM.COMISION as PORCENTAJE, 0 as ' + + 'COMISION'#10'from CONTACTOS VEN, CONTACTOSCATEGORIAS CAT, COMISIONES' + + ' COM'#10'where CAT.CODIGOCONTACTO = VEN.CODIGO'#10'and COM.CODIGOCONTACT' + + 'O = VEN.CODIGO' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'VENDEDOR' + TableField = 'VENDEDOR' + end + item + DatasetField = 'PORCENTAJE' + TableField = 'PORCENTAJE' + end + item + DatasetField = 'COMISION' + TableField = 'COMISION' + end> + end> + Name = 'VENDEDORESCOMISION' + Fields = < + item + Name = 'VENDEDOR' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Vendedor' + ReadOnly = True + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PORCENTAJE' + DataType = datFloat + BlobType = dabtUnknown + DefaultValue = '0' + DisplayWidth = 0 + DisplayLabel = 'Porcentaje' + ReadOnly = True + Alignment = taRightJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'COMISION' + DataType = datFloat + BlobType = dabtUnknown + LogChanges = False + DefaultValue = '0' + DisplayWidth = 0 + DisplayLabel = 'Comisi'#243'n' + Alignment = taRightJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end + item + Params = < + item + Name = 'CODIGOCONTACTO' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'COMISIONES' + SQL = + 'SELECT '#10' COMISION'#10' FROM'#10' COMISIONES'#10'WHERE CODIGOCONTACTO ' + + '= :CODIGOCONTACTO' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'COMISION' + TableField = 'COMISION' + end> + end> + Name = 'COMISIONES' + Fields = < + item + Name = 'COMISION' + DataType = datFloat + BlobType = dabtUnknown + LogChanges = False + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end + item + Params = < + item + Name = 'FECHAINI' + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'FECHAFIN' + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + SQL = + 'SELECT'#10' 1 as SELECCION, PAGOS.CODIGOEMPRESA, PAGOS.CODIGO, PA' + + 'GOS.CODIGOCONTACTO,'#10' CONTACTOS.NOMBRE, PAGOS.FECHAPAGO, PAGOS' + + '.IMPORTE, PAGOS.FORMAPAGO, PAGOS.DESCRIPCION,'#10' CONTACTOSCATEG' + + 'ORIAS.CODIGOCATEGORIA, CATEGORIAS.DESCRIPCION as CATEGORIA'#10#10'FROM' + + ' PAGOS'#10'LEFT JOIN CONTACTOS ON (PAGOS.CODIGOCONTACTO = CONTACTOS.' + + 'CODIGO)'#10'LEFT JOIN CONTACTOSCATEGORIAS ON (CONTACTOS.CODIGO = CON' + + 'TACTOSCATEGORIAS.CODIGOCONTACTO)'#10'LEFT JOIN CATEGORIAS ON (CONTAC' + + 'TOSCATEGORIAS.CODIGOCATEGORIA = CATEGORIAS.CODIGO)'#10#10'WHERE CONTAC' + + 'TOSCATEGORIAS.CODIGOCATEGORIA = 1'#10'AND PAGOS.FECHAPAGO between :F' + + 'ECHAINI and :FECHAFIN'#10'ORDER BY PAGOS.FECHAPAGO DESC' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'SELECCION' + TableField = 'SELECCION' + end + item + DatasetField = 'CODIGOEMPRESA' + TableField = 'CODIGOEMPRESA' + end + item + DatasetField = 'CODIGO' + TableField = 'CODIGO' + end + item + DatasetField = 'CODIGOCONTACTO' + TableField = 'CODIGOCONTACTO' + end + item + DatasetField = 'NOMBRE' + TableField = 'NOMBRE' + end + item + DatasetField = 'FECHAPAGO' + TableField = 'FECHAPAGO' + end + item + DatasetField = 'IMPORTE' + TableField = 'IMPORTE' + end + item + DatasetField = 'FORMAPAGO' + TableField = 'FORMAPAGO' + end + item + DatasetField = 'DESCRIPCION' + TableField = 'DESCRIPCION' + end + item + DatasetField = 'CODIGOCATEGORIA' + TableField = 'CODIGOCATEGORIA' + end + item + DatasetField = 'CATEGORIA' + TableField = 'CATEGORIA' + end> + end> + Name = 'COBROSCOMISION' + Fields = < + item + Name = 'SELECCION' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOEMPRESA' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGO' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOCONTACTO' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NOMBRE' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + ReadOnly = True + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHAPAGO' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + ReadOnly = True + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTE' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + ReadOnly = True + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FORMAPAGO' + DataType = datString + Size = 50 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'DESCRIPCION' + DataType = datString + Size = 2000 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGOCATEGORIA' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CATEGORIA' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end> + Commands = < + item + Params = < + item + Name = 'CODIGOCONTACTO' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'COMISION' + DataType = datFloat + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'COMISIONES' + SQL = + 'INSERT'#10' INTO COMISIONES'#10' (CODIGOCONTACTO, COMISION)'#10' VALUES' + + #10' (:CODIGOCONTACTO, :COMISION)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Insert_COMISIONES' + end + item + Params = < + item + Name = 'CODIGOCONTACTO' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'COMISIONES' + SQL = + 'DELETE '#10' FROM'#10' COMISIONES'#10' WHERE'#10' (CODIGOCONTACTO = :COD' + + 'IGOCONTACTO)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Delete_COMISIONES' + end + item + Params = < + item + Name = 'COMISION' + DataType = datFloat + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'CODIGOCONTACTO' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'COMISIONES' + SQL = + 'UPDATE COMISIONES'#10' SET '#10' COMISION = :COMISION'#10' WHERE'#10' (C' + + 'ODIGOCONTACTO = :CODIGOCONTACTO)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Update_COMISIONES' + end> + RelationShips = <> + UpdateRules = <> + Left = 32 + Top = 24 + end + object DABINAdapter: TDABINAdapter + Left = 32 + Top = 80 + end +end diff --git a/Servidor/srvComisiones_Impl.pas b/Servidor/srvComisiones_Impl.pas new file mode 100644 index 0000000..88ecfc8 --- /dev/null +++ b/Servidor/srvComisiones_Impl.pas @@ -0,0 +1,91 @@ +unit srvComisiones_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:} DARemoteService_Impl, + {Used RODLs:} DataAbstract_Intf, + {Generated:} FactuGES_Intf, uDAClasses, uDataModuleServer, uDADataTable, + uDABINAdapter; + +type + { TsrvComisiones } + TsrvComisiones = class(TDARemoteService, IsrvComisiones) + DABINAdapter: TDABINAdapter; + schComisiones: TDASchema; + private + protected + function GetComision(const CodigoContacto: Integer): Double; + procedure SetComision(const CodigoContacto: Integer; const Value: Double); + end; + +implementation + +{$R *.dfm} +uses + {Generated:} FactuGES_Invk, + uDAInterfaces, Dialogs; + +procedure Create_srvComisiones(out anInstance : IUnknown); +begin + anInstance := TsrvComisiones.Create(NIL); +end; + +{ srvComisiones } +{ TsrvComisiones } + +function TsrvComisiones.GetComision(const CodigoContacto: Integer): Double; +var + dsComision: IDADataset; +begin + Result := 0; + Connection.BeginTransaction; + try + dsComision := schComisiones.NewDataset(Connection, 'COMISIONES', ['CODIGOCONTACTO'], [CodigoContacto]); + dsComision.Open; + if dsComision.RecordCount > 0 then + Result := dsComision.FieldValues[0]; + dsComision.Close; + except + on E: Exception do + Result := 0; + end; + Connection.RollbackTransaction; +end; + +procedure TsrvComisiones.SetComision(const CodigoContacto: Integer; + const Value: Double); +var + dsComision: IDASQLCommand; +begin + Connection.BeginTransaction; + try + dsComision := schComisiones.NewCommand(Connection, 'Update_COMISIONES', ['CODIGOCONTACTO', 'COMISION'], [CodigoContacto, Value], False); + if dsComision.Execute = 0 then + // No Existe la fila asi que la insertamos + dsComision := schComisiones.NewCommand(Connection, 'Insert_COMISIONES', ['CODIGOCONTACTO', 'COMISION'], [CodigoContacto, Value]); + Connection.CommitTransaction; + except + on E: Exception do + begin + Connection.RollbackTransaction; + raise; + end; + end; +end; + +initialization + TROClassFactory.Create('srvComisiones', Create_srvComisiones, TsrvComisiones_Invoker); + +finalization + +end. diff --git a/Servidor/srvConfiguracion_Impl.ddp b/Servidor/srvConfiguracion_Impl.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Servidor/srvConfiguracion_Impl.ddp differ diff --git a/Servidor/srvConfiguracion_Impl.dfm b/Servidor/srvConfiguracion_Impl.dfm new file mode 100644 index 0000000..a094236 --- /dev/null +++ b/Servidor/srvConfiguracion_Impl.dfm @@ -0,0 +1,59 @@ +object srvConfiguracion: TsrvConfiguracion + OldCreateOrder = True + RequiresSession = True + SessionManager = dmServer.SessionManager + AcquireConnection = True + ConnectionName = 'IBX' + ServiceSchema = schConfiguracion + ServiceAdapter = DABINAdapter + Left = 707 + Top = 109 + Height = 161 + Width = 300 + object schConfiguracion: TDASchema + ConnectionManager = dmServer.ConnectionManager + DataDictionary = dmServer.DataDictionary + Diagrams = dmServer.DADiagrams + Datasets = < + item + Params = <> + Statements = < + item + Connection = 'IBX' + TargetTable = 'INTERVALOS' + SQL = 'SELECT VALOR'#10'FROM CONFIGURACION'#10'WHERE CODIGO = '#39'PATH_DOCUMENTOS'#39 + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'VALOR' + TableField = 'VALOR' + end> + end> + Name = 'darRutaDocumentos' + Fields = < + item + Name = 'VALOR' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end> + Commands = <> + RelationShips = <> + UpdateRules = <> + Left = 40 + Top = 16 + end + object DABINAdapter: TDABINAdapter + Left = 40 + Top = 72 + end +end diff --git a/Servidor/srvConfiguracion_Impl.pas b/Servidor/srvConfiguracion_Impl.pas new file mode 100644 index 0000000..1646e54 --- /dev/null +++ b/Servidor/srvConfiguracion_Impl.pas @@ -0,0 +1,66 @@ +unit srvConfiguracion_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, +// {Required:} uRORemoteDataModule, + {Ancestor Implementation:} DARemoteService_Impl, + {Used RODLs:} DataAbstract_Intf, +// {Generated:} FactuGES_Intf, uDAClasses; + {Generated:} FactuGES_Intf, uDAClasses, uDAScriptingProvider, + uDABusinessProcessor, uDADataTable, uDABINAdapter; + + +type + { TsrvConfiguracion } + TsrvConfiguracion = class(TDARemoteService, IsrvConfiguracion) + schConfiguracion: TDASchema; + DABINAdapter: TDABINAdapter; + private + protected + { IsrvConfiguracion methods } + function darRutaDocumentos: String; + end; + +implementation + +{$R *.dfm} +uses + {Generated:} FactuGES_Invk, uDAInterfaces, uDataModuleServer; + +procedure Create_srvConfiguracion(out anInstance : IUnknown); +begin + anInstance := TsrvConfiguracion.Create(NIL); +end; + +{ srvConfiguracion } +function TsrvConfiguracion.darRutaDocumentos: String; +var + ADataSet : IDADataset; +begin + try + Result:= ''; + ADataSet := schConfiguracion.NewDataset(Connection, 'darRutaDocumentos'); + ADataSet.Open; + if ADataSet.Dataset.RecordCount > 0 then + Result := ADataSet.Dataset.Fields[0].AsString; + finally + ADataSet.Close; + end; +end; + +initialization + TROClassFactory.Create('srvConfiguracion', Create_srvConfiguracion, TsrvConfiguracion_Invoker); + +finalization + +end. diff --git a/Servidor/srvLogin_Impl.dfm b/Servidor/srvLogin_Impl.dfm new file mode 100644 index 0000000..424fa49 --- /dev/null +++ b/Servidor/srvLogin_Impl.dfm @@ -0,0 +1,179 @@ +object srvLogin: TsrvLogin + OldCreateOrder = True + SessionManager = dmServer.SessionManager + OnActivate = DALoginServiceActivate + AcquireConnection = True + ConnectionName = 'IBX' + ServiceSchema = schLogin + ServiceAdapter = DABINAdapter + Height = 282 + Width = 282 + object schLogin: TDASchema + ConnectionManager = dmServer.ConnectionManager + Datasets = < + item + Params = < + item + Name = 'USERID' + DataType = datString + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'PASSWORD' + DataType = datString + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'USUARIOS' + SQL = + 'SELECT '#10' ID, PASS, SESSIONID, ROL'#10' FROM'#10' USUARIOS, ROLES'#10 + + ' WHERE ID = :USERID AND'#10' PASS = :PASSWORD AND'#10' US' + + 'ERID = ID;' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'ID' + TableField = 'ID' + end + item + DatasetField = 'PASS' + TableField = 'PASS' + end + item + DatasetField = 'SESSIONID' + TableField = 'SESSIONID' + end + item + DatasetField = 'ROL' + TableField = 'ROL' + end> + end> + Name = 'GetLoginInfo' + Fields = < + item + Name = 'ID' + DataType = datString + Size = 8 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PASS' + DataType = datString + Size = 10 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'SESSIONID' + DataType = datString + Size = 20 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ROL' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end + item + Params = <> + Statements = < + item + Connection = 'IBX' + TargetTable = 'USUARIOS' + SQL = 'SELECT '#10' ID'#10' FROM'#10' USUARIOS' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'ID' + TableField = 'ID' + end> + end> + Name = 'Usuarios' + Fields = < + item + Name = 'ID' + DataType = datString + Size = 8 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end> + Commands = < + item + Params = < + item + Name = 'PASSWORD' + DataType = datString + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'USERID' + DataType = datString + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'USUARIOS' + SQL = + 'UPDATE'#10' USUARIOS'#10' SET'#10' PASS = :PASSWORD'#10' WHERE'#10' ID = ' + + ':USERID' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'SetUserPassword' + end> + RelationShips = <> + UpdateRules = <> + Left = 24 + Top = 24 + end + object DABINAdapter: TDABINAdapter + Left = 24 + Top = 88 + end +end diff --git a/Servidor/srvLogin_Impl.pas b/Servidor/srvLogin_Impl.pas new file mode 100644 index 0000000..93f715f --- /dev/null +++ b/Servidor/srvLogin_Impl.pas @@ -0,0 +1,141 @@ +unit srvLogin_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:} DARemoteService_Impl, + {Used RODLs:} DataAbstract_Intf, + {Generated:} FactuGES_Intf, uDAClasses, uDAInterfaces, uDAEngine, + uDAIBXDriver, uDADataTable, uDABINAdapter; + +type + { TsrvLogin } + TsrvLogin = class(TDARemoteService, IsrvLogin) + schLogin: TDASchema; + DABINAdapter: TDABINAdapter; + procedure DALoginServiceActivate(const aClientID: TGUID; + aSession: TROSession; const aMessage: IROMessage); + private + protected + function Login(const UserID: String; const Password: String; out LoginInfo: TLoginInfo): Boolean; + procedure Logout; + function UpdateUsers(const UsersDelta: Binary): Binary; + function SetUserPassword(const UserID: String; const NewPassword: String): Boolean; + function Ping : Boolean; + end; + +implementation + +{$R *.dfm} +uses + {Generated:} FactuGES_Invk, uDataModuleServer, + Dialogs, IB, Variants, schContactosServer_Intf; + + +procedure Create_srvLogin(out anInstance : IUnknown); +begin + anInstance := TsrvLogin.Create(NIL); +end; + +{ TsrvLogin } + +procedure TsrvLogin.DALoginServiceActivate(const aClientID: TGUID; + aSession: TROSession; const aMessage: IROMessage); +begin + ((Connection as IDAConnectionObjectAccess).ConnectionObject as + TIBXConnection).Database.TraceFlags := [tfQPrepare, tfQExecute, tfQFetch, tfError, tfStmt, tfConnect, tfTransact, tfBlob, tfService, tfMisc]; +end; + +function TsrvLogin.Login(const UserID, Password: String; + out LoginInfo: TLoginInfo): Boolean; +var + dsUserInfo, + dsRoles, + dsPrivilegios : IDADataset; +begin + LoginInfo := NIL; + Result := False; + + dsUserInfo := schLogin.NewDataset(Connection, 'GetLoginInfo', ['UserID', 'Password'], [UserID, Password]); + + if (dsUserInfo.RecordCount = 1) then + try + Result := TRUE; + + // Packages the user information that will be sent back to the client. + // This information will be used in many places client-side and when issing service calls + // so it's good practice to cache it there + LoginInfo := TLoginInfo.Create; + FillROStruct(dsUserInfo, LoginInfo); + LoginInfo.UserID := UserID; + LoginInfo.SessionID := GUIDToString(Session.SessionID); + LoginInfo.Roles.Add(VarToStr(dsUserInfo.FieldValues[3])); + + // Collects the privileges for this user as a comma separated list of strings +{ privs := Schema.NewDataset(Connection, ds_GetUserPrivileges, ['UserInc'], [LoginInfo.UserInc]); + + while not privs.EOF do begin + LoginInfo.Privileges := LoginInfo.Privileges+Trim(VarToStr(privs.FieldValues[0]))+','; + privs.Next; + end; + LoginInfo.Privileges := Copy(LoginInfo.Privileges,1,Length(LoginInfo.Privileges)-1); + + + // Stores all the information we retrieved in the current session since it might be + // necessary for other services} + Session.SaveStruct(LoginInfo); + + except + FreeAndNIL(LoginInfo); + raise + end; +end; + +procedure TsrvLogin.Logout; +begin + DestroySession; +end; + +function TsrvLogin.Ping: Boolean; +begin + Result := True; +end; + +function TsrvLogin.SetUserPassword(const UserID, + NewPassword: String): Boolean; +var + dsCommand : IDASQLCommand; + i : Integer; +begin + Result := False; + dsCommand := schLogin.NewCommand(Connection, 'SetUserPassword'); + with dsCommand do + begin + ParamByName('UserID').AsString := UserID; + ParamByName('Password').AsString := NewPassword; + i := Execute; + end; + if i > 0 then + Result := True; +end; + +function TsrvLogin.UpdateUsers(const UsersDelta: Binary): Binary; +begin + // +end; + +initialization + TROClassFactory.Create('srvLogin', Create_srvLogin, TsrvLogin_Invoker); + +finalization + +end. diff --git a/Servidor/uConexionBD.dfm b/Servidor/uConexionBD.dfm new file mode 100644 index 0000000..4c8ba7e --- /dev/null +++ b/Servidor/uConexionBD.dfm @@ -0,0 +1,153 @@ +inherited frConexionBD: TfrConexionBD + object GroupBox1: TGroupBox + Left = 8 + Top = 8 + Width = 375 + Height = 209 + Caption = 'Servidor de base de datos' + TabOrder = 0 + DesignSize = ( + 375 + 209) + object Label1: TLabel + Left = 18 + Top = 30 + Width = 97 + Height = 13 + Caption = 'Nombre del servidor:' + end + object Label2: TLabel + Left = 18 + Top = 60 + Width = 93 + Height = 13 + Caption = 'Puerto de escucha:' + end + object Label3: TLabel + Left = 18 + Top = 92 + Width = 71 + Height = 13 + Caption = 'Base de datos:' + end + object Label4: TLabel + Left = 18 + Top = 150 + Width = 36 + Height = 13 + Caption = 'Usuario' + end + object Label5: TLabel + Left = 18 + Top = 180 + Width = 57 + Height = 13 + Caption = 'Contrase'#241'a:' + end + object Bevel1: TBevel + Left = 16 + Top = 120 + Width = 343 + Height = 10 + Anchors = [akLeft, akTop, akRight] + Shape = bsBottomLine + end + object edtServer: TEdit + Left = 128 + Top = 24 + Width = 231 + Height = 21 + Anchors = [akLeft, akTop, akRight] + TabOrder = 0 + Text = 'localhost' + end + object edtPort: TEdit + Left = 128 + Top = 56 + Width = 116 + Height = 21 + Anchors = [akLeft, akTop, akRight] + TabOrder = 1 + Text = '3050' + OnExit = edtPortExit + end + object edtUser: TEdit + Left = 128 + Top = 144 + Width = 116 + Height = 21 + Anchors = [akLeft, akTop, akRight] + TabOrder = 3 + Text = 'sysdba' + end + object edtPassword: TEdit + Left = 128 + Top = 176 + Width = 116 + Height = 21 + Anchors = [akLeft, akTop, akRight] + PasswordChar = '*' + TabOrder = 4 + end + object edtPath: TcxButtonEdit + Left = 128 + Top = 88 + Properties.Buttons = < + item + Default = True + Kind = bkEllipsis + end> + Properties.OnButtonClick = cxButtonEdit1PropertiesButtonClick + Style.LookAndFeel.Kind = lfUltraFlat + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.Kind = lfUltraFlat + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.Kind = lfUltraFlat + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.Kind = lfUltraFlat + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 2 + Width = 231 + end + end + object bProbar: TButton + Left = 240 + Top = 224 + Width = 143 + Height = 25 + Caption = 'Probar la conexi'#243'n' + TabOrder = 1 + OnClick = bProbarClick + end + object OpenDialog: TOpenDialog + Filter = 'Base de datos Firebird (*.fdb)|*.FDB' + Options = [ofHideReadOnly, ofPathMustExist, ofFileMustExist, ofEnableSizing] + Title = 'Abrir base de datos Firebird' + Left = 264 + Top = 56 + end + object IBServerProperties: TIBServerProperties + ServerName = 'localhost' + Params.Strings = ( + 'user_name=user' + 'password=pass') + LoginPrompt = False + TraceFlags = [] + Options = [] + Left = 208 + Top = 224 + end + object IBDatabase: TIBDatabase + DatabaseName = 'server:dasadsads' + Params.Strings = ( + 'user_name=sysdba' + 'password=masterkey' + 'lc_ctype=ISO8859_1') + LoginPrompt = False + IdleTimer = 0 + SQLDialect = 3 + TraceFlags = [] + Left = 176 + Top = 224 + end +end diff --git a/Servidor/uConexionBD.pas b/Servidor/uConexionBD.pas new file mode 100644 index 0000000..3e8d65c --- /dev/null +++ b/Servidor/uConexionBD.pas @@ -0,0 +1,107 @@ +unit uConexionBD; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, StdCtrls, ExtCtrls, cxShellBrowserDialog, cxControls, + cxContainer, cxEdit, cxTextEdit, cxMaskEdit, cxButtonEdit, IBServices, + DB, IBDatabase, uConfiguracion, uFrameConfiguracion; + +type + TfrConexionBD = class(TFrameConfiguracion) + GroupBox1: TGroupBox; + edtServer: TEdit; + edtPort: TEdit; + Label1: TLabel; + Label2: TLabel; + Label3: TLabel; + bProbar: TButton; + Label4: TLabel; + edtUser: TEdit; + Label5: TLabel; + edtPassword: TEdit; + Bevel1: TBevel; + OpenDialog: TOpenDialog; + edtPath: TcxButtonEdit; + IBServerProperties: TIBServerProperties; + IBDatabase: TIBDatabase; + procedure cxButtonEdit1PropertiesButtonClick(Sender: TObject; + AButtonIndex: Integer); + procedure bProbarClick(Sender: TObject); + procedure edtPortExit(Sender: TObject); + protected + procedure Finalize; override; + public + procedure Init; override; + end; + +implementation + +uses uDataModuleServer; + +{$R *.dfm} + +procedure TfrConexionBD.cxButtonEdit1PropertiesButtonClick(Sender: TObject; + AButtonIndex: Integer); +begin + if OpenDialog.Execute then + edtPath.Text := OpenDialog.FileName; +end; + +procedure TfrConexionBD.bProbarClick(Sender: TObject); +var + Aux : string; +begin + with IBDatabase do + begin + Connected := False; + DatabaseName := edtServer.Text + '/' + edtPort.Text + ':' + edtPath.Text; + LoginPrompt := False; + + Params.Clear; + Params.Add('lc_ctype=ISO8859_1'); + Params.Add('user_name=' + edtUser.Text); + Params.Add('password=' + edtPassword.Text); + + try + Connected := True; + Application.MessageBox('Conexión válida con la base de datos.', 'FactuGES', MB_OK); + Connected := False; + except + on E : Exception do + begin + Aux := 'No se ha podido establecer la conexión con la base de datos.' + + #13 + #10 + #13 + #10 + PChar(E.Message); + Application.MessageBox(PAnsiChar(Aux), 'Error', MB_OK); + end; + end; + end; +end; + +procedure TfrConexionBD.Init; +begin + edtServer.Text := dmServer.FDBServer; + edtPort.Text := dmServer.FDBPort; + edtPath.Text := dmServer.FDBPath; + edtUser.Text := dmServer.FDBUser; + edtPassword.Text := Decrypt(dmServer.FDBPass); +end; + +procedure TfrConexionBD.Finalize; +begin + dmServer.FDBServer := edtServer.Text; + dmServer.FDBPort := edtPort.Text; + dmServer.FDBPath := edtPath.Text; + dmServer.FDBUser := edtUser.Text; + dmServer.FDBPass := Encrypt(edtPassword.Text); +end; + +procedure TfrConexionBD.edtPortExit(Sender: TObject); +begin + inherited; + if Length(edtPort.Text) = 0 then + edtPort.Text := '3050'; +end; + +end. diff --git a/Servidor/uConfGeneral.dfm b/Servidor/uConfGeneral.dfm new file mode 100644 index 0000000..9edcb03 --- /dev/null +++ b/Servidor/uConfGeneral.dfm @@ -0,0 +1,39 @@ +inherited frConfGeneral: TfrConfGeneral + Width = 519 + object GroupBox1: TGroupBox + Left = 8 + Top = 8 + Width = 375 + Height = 105 + Caption = 'General' + TabOrder = 0 + DesignSize = ( + 375 + 105) + object Label2: TLabel + Left = 18 + Top = 60 + Width = 93 + Height = 13 + Caption = 'Puerto de escucha:' + end + object edtPort: TEdit + Left = 128 + Top = 56 + Width = 116 + Height = 21 + Anchors = [akLeft, akTop, akRight] + TabOrder = 0 + Text = '8099' + OnExit = edtPortExit + end + object cbInicioWin: TCheckBox + Left = 17 + Top = 27 + Width = 232 + Height = 17 + Caption = 'Iniciar con Windows' + TabOrder = 1 + end + end +end diff --git a/Servidor/uConfGeneral.pas b/Servidor/uConfGeneral.pas new file mode 100644 index 0000000..3327901 --- /dev/null +++ b/Servidor/uConfGeneral.pas @@ -0,0 +1,55 @@ +unit uConfGeneral; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uFrameConfiguracion, StdCtrls; + +type + TfrConfGeneral = class(TFrameConfiguracion) + GroupBox1: TGroupBox; + Label2: TLabel; + edtPort: TEdit; + cbInicioWin: TCheckBox; + procedure edtPortExit(Sender: TObject); + private + { Private declarations } + protected + procedure Finalize; override; + public + procedure Init; override; + end; + +var + frConfGeneral: TfrConfGeneral; + +implementation + +uses uDataModuleServer; + +{$R *.dfm} + +{ TfrConfGeneral } + +procedure TfrConfGeneral.Finalize; +begin + inherited; + dmServer.FInicioWindows := cbInicioWin.Checked; + dmServer.FServerPort := edtPort.Text; +end; + +procedure TfrConfGeneral.Init; +begin + cbInicioWin.Checked := dmServer.FInicioWindows; + edtPort.Text := dmServer.FServerPort; +end; + +procedure TfrConfGeneral.edtPortExit(Sender: TObject); +begin + inherited; + if Length(edtPort.Text) = 0 then + edtPort.Text := '8099'; +end; + +end. diff --git a/Servidor/uConfiguracion.ddp b/Servidor/uConfiguracion.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Servidor/uConfiguracion.ddp differ diff --git a/Servidor/uConfiguracion.dfm b/Servidor/uConfiguracion.dfm new file mode 100644 index 0000000..6b819fb --- /dev/null +++ b/Servidor/uConfiguracion.dfm @@ -0,0 +1,165 @@ +object fConfiguracion: TfConfiguracion + Left = 577 + Top = 267 + BorderStyle = bsDialog + Caption = 'Configuraci'#243'n' + ClientHeight = 443 + ClientWidth = 617 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + OldCreateOrder = False + Position = poScreenCenter + OnCreate = FormCreate + PixelsPerInch = 96 + TextHeight = 13 + object tvArbol: TTreeView + Left = 8 + Top = 8 + Width = 193 + Height = 385 + Images = PngImageList1 + Indent = 19 + ReadOnly = True + RowSelect = True + ShowRoot = False + TabOrder = 0 + OnChange = tvArbolChange + end + object Button1: TButton + Left = 445 + Top = 407 + Width = 75 + Height = 25 + Action = actAceptar + ModalResult = 1 + TabOrder = 1 + end + object Button2: TButton + Left = 533 + Top = 407 + Width = 75 + Height = 25 + Action = actCancelar + Cancel = True + ModalResult = 2 + TabOrder = 2 + end + object pnlPagina: TTabControl + Left = 208 + Top = 8 + Width = 401 + Height = 385 + TabOrder = 3 + object pnlHeader: TJvGradientHeaderPanel + Left = 4 + Top = 6 + Width = 393 + Height = 30 + GradientStartColor = clGradientActiveCaption + GradientEndColor = clGradientInactiveCaption + GradientSteps = 255 + GradientStyle = grHorizontal + LabelCaption = 'Put your text here ...' + LabelFont.Charset = DEFAULT_CHARSET + LabelFont.Color = clCaptionText + LabelFont.Height = -11 + LabelFont.Name = 'MS Sans Serif' + LabelFont.Style = [fsBold] + LabelAlignment = taLeftJustify + Align = alTop + BevelInner = bvNone + BevelOuter = bvNone + DoubleBuffered = False + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [fsBold] + TabOrder = 0 + end + end + object ActionList1: TActionList + Left = 8 + Top = 400 + object actAceptar: TAction + Caption = '&Aceptar' + OnExecute = actAceptarExecute + end + object actCancelar: TAction + Caption = '&Cancelar' + OnExecute = actCancelarExecute + end + end + object JvAppRegistryStorage1: TJvAppRegistryStorage + StorageOptions.BooleanStringTrueValues = 'TRUE, YES, Y' + StorageOptions.BooleanStringFalseValues = 'FALSE, NO, N' + Root = 'Software\%APPL_NAME%' + SubStorages = <> + Left = 48 + Top = 400 + end + object PngImageList1: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000AEB00000AEB01828B0D5A000002554944415478DA + A5934D6813411CC5DFA64D9B365A0AA558ACB50D584AA4122D6A695044AC2D88 + 88908B01B137A5B64A7B912214BD79F083B6971C154544F1504F7A5204154405 + 45432818F2614C76B39B36D9EC477793DD71369124C58045E7326F8779BFFDBF + 07C31042C0300C162E37F56FDBEEF1F5F41FF1B6B675B99B5BDABB0D3DEF80A9 + 684A2E9E5473C9101BFFFA9EE5924F67037AC8F2598BB1C4939BDEF903E373F3 + BDEE31BBADC10EEB8C14F230D65914550E86CA52CDA1A824F133F2C90806BFDC + F25FE7E72A808F2F6E14F78F5D69B00E083161EA396AE24A8092B95653D0B760 + 888CCEC46D15C0F3C071E2DAEBC78E81636871384A97ACCBD5BF97218A984022 + F1039F433CA61745A63AC1B30BC47DF00C049E87228974822C485184A1ADA2A8 + E5B02EAF4191F3D0749D1A34C463314CDEC96C040C8E9C43E3963E304D1D5897 + D250F329A862AABCD76A91452C1AD90878F7F82C193A3AB949400AE170189716 + B355C0CBBBA74877FF61383BDC68EFF2C034340AE1A88185924B20BF1A852844 + 4ADF9A9C01971630B5B0F6670462EF84244925833585A664A0AB599805196651 + A63A533FC27F77F0FA818F0C8FCF52806B731D7CA71D2CD574F0E6919F74F60C + A1796B2FDA3A7783B13134AB40412CE46CB9837C260A55E6A1D3582C2760BA5E + 070DCE9D50140DD9F44A69544D11CA1DD0FC4641A2D074FD081F96CF9B7BBC13 + CC3F7710B8BAEFF6E8E98B33AEC113B6BF01F85404A195D8FD6BF7A4890AC07A + CE53271B473CC363BEBE8191438E56E72E43133B1886D0FC311A23B796156269 + 9E4BBD4AB2A9874BCB784B7EBFE75F55B52CFF98E5CC810000000049454E44AE + 426082} + Name = 'PngImage0' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000AEB00000AEB01828B0D5A000002554944415478DA + A5934D6813411CC5DFA64D9B365A0AA558ACB50D584AA4122D6A695044AC2D88 + 88908B01B137A5B64A7B912214BD79F083B6971C154544F1504F7A5204154405 + 45432818F2614C76B39B36D9EC477793DD71369124C58045E7326F8779BFFDBF + 07C31042C0300C162E37F56FDBEEF1F5F41FF1B6B675B99B5BDABB0D3DEF80A9 + 684A2E9E5473C9101BFFFA9EE5924F67037AC8F2598BB1C4939BDEF903E373F3 + BDEE31BBADC10EEB8C14F230D65914550E86CA52CDA1A824F133F2C90806BFDC + F25FE7E72A808F2F6E14F78F5D69B00E083161EA396AE24A8092B95653D0B760 + 888CCEC46D15C0F3C071E2DAEBC78E81636871384A97ACCBD5BF97218A984022 + F1039F433CA61745A63AC1B30BC47DF00C049E87228974822C485184A1ADA2A8 + E5B02EAF4191F3D0749D1A34C463314CDEC96C040C8E9C43E3963E304D1D5897 + D250F329A862AABCD76A91452C1AD90878F7F82C193A3AB949400AE170189716 + B355C0CBBBA74877FF61383BDC68EFF2C034340AE1A88185924B20BF1A852844 + 4ADF9A9C01971630B5B0F6670462EF84244925833585A664A0AB599805196651 + A63A533FC27F77F0FA818F0C8FCF52806B731D7CA71D2CD574F0E6919F74F60C + A1796B2FDA3A7783B13134AB40412CE46CB9837C260A55E6A1D3582C2760BA5E + 070DCE9D50140DD9F44A69544D11CA1DD0FC4641A2D074FD081F96CF9B7BBC13 + CC3F7710B8BAEFF6E8E98B33AEC113B6BF01F85404A195D8FD6BF7A4890AC07A + CE53271B473CC363BEBE8191438E56E72E43133B1886D0FC311A23B796156269 + 9E4BBD4AB2A9874BCB784B7EBFE75F55B52CFF98E5CC810000000049454E44AE + 426082} + Name = 'PngImage1' + Background = clWindow + end> + Left = 88 + Top = 400 + Bitmap = {} + end +end diff --git a/Servidor/uConfiguracion.pas b/Servidor/uConfiguracion.pas new file mode 100644 index 0000000..d79484f --- /dev/null +++ b/Servidor/uConfiguracion.pas @@ -0,0 +1,108 @@ +unit uConfiguracion; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, StdCtrls, ComCtrls, ActnList, JvComponent, + JvAppStorage, JvAppRegistryStorage, Contnrs, ExtCtrls, ImgList, + PngImageList, JvExControls, JvGradientHeaderPanel, uFrameConfiguracion, + JvComponentBase; + +type + TfConfiguracion = class(TForm) + tvArbol: TTreeView; + Button1: TButton; + Button2: TButton; + ActionList1: TActionList; + actAceptar: TAction; + actCancelar: TAction; + JvAppRegistryStorage1: TJvAppRegistryStorage; + pnlPagina: TTabControl; + PngImageList1: TPngImageList; + pnlHeader: TJvGradientHeaderPanel; + procedure FormCreate(Sender: TObject); + procedure tvArbolChange(Sender: TObject; Node: TTreeNode); + procedure actAceptarExecute(Sender: TObject); + procedure actCancelarExecute(Sender: TObject); + private + FPaginaActual : IConfiguracionFrame; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + end; + +var + fConfiguracion: TfConfiguracion; + +implementation + +uses uConexionBD, uDataModuleServer, uConfGeneral; + +{$R *.dfm} + +type + TFrameClass = class of TFrameConfiguracion; + +function CreateFrame(Parent: TWinControl; FrameClass: TFrameClass): IConfiguracionFrame; +var + aFrame : TFrameConfiguracion; +begin + aFrame := FrameClass.Create(NIL); + aFrame.Name:='Frame'+IntToStr(Random(10000)); + aFrame.Parent := Parent; + aFrame.Init; + aFrame.Show; + Result := aFrame; +end; + +constructor TfConfiguracion.Create(AOwner: TComponent); +begin + inherited; +end; + +destructor TfConfiguracion.Destroy; +begin + inherited; +end; + +procedure TfConfiguracion.FormCreate(Sender: TObject); +var + ANode: TTreeNode; +begin + with tvArbol.Items do + begin + ANode := AddChild(NIL, 'General'); + ANode.ImageIndex := ANode.Index; + ANode := AddChild(NIL, 'Conexión con servidor de BD'); + ANode.ImageIndex := ANode.Index; + end; +end; + +procedure TfConfiguracion.tvArbolChange(Sender: TObject; Node: TTreeNode); +begin + if Assigned(FPaginaActual) then + FPaginaActual.Finalize; + + case Node.Index of + 0 : FPaginaActual := CreateFrame(pnlPagina, TfrConfGeneral); + 1 : FPaginaActual := CreateFrame(pnlPagina, TfrConexionBD); + end; + Self.Update; + pnlHeader.LabelCaption := Node.Text; +end; + +procedure TfConfiguracion.actAceptarExecute(Sender: TObject); +begin + if Assigned(FPaginaActual) then + FPaginaActual.Finalize; + dmServer.SalvarConfiguracion; + Close; +end; + +procedure TfConfiguracion.actCancelarExecute(Sender: TObject); +begin + Close; +end; + +end. diff --git a/Servidor/uDataModuleServer.ddp b/Servidor/uDataModuleServer.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Servidor/uDataModuleServer.ddp differ diff --git a/Servidor/uDataModuleServer.dfm b/Servidor/uDataModuleServer.dfm new file mode 100644 index 0000000..40ec0ec --- /dev/null +++ b/Servidor/uDataModuleServer.dfm @@ -0,0 +1,794 @@ +object dmServer: TdmServer + OldCreateOrder = False + OnCreate = DataModuleCreate + OnDestroy = DataModuleDestroy + Height = 307 + Width = 288 + object HTTPServer: TROIndyHTTPServer + Encryption.UseCompression = True + Dispatchers = < + item + Name = 'BINMessage' + Message = BINMessage + Enabled = True + PathInfo = 'Bin' + end> + OnBeforeServerActivate = HTTPServerBeforeServerActivate + IndyServer.Bindings = <> + IndyServer.CommandHandlers = <> + IndyServer.DefaultPort = 8099 + IndyServer.Greeting.NumericCode = 0 + IndyServer.MaxConnectionReply.NumericCode = 0 + IndyServer.ReplyExceptionCode = 0 + IndyServer.ReplyTexts = <> + IndyServer.ReplyUnknownCommand.NumericCode = 0 + IndyServer.KeepAlive = True + Port = 8099 + KeepAlive = True + Left = 40 + Top = 16 + end + object BINMessage: TROBinMessage + Left = 136 + Top = 16 + end + object IBXDriver: TDAIBXDriver + Left = 224 + Top = 80 + end + object DriverManager: TDADriverManager + DriverDirectory = '%SYSTEM%\' + AutoLoad = False + TraceActive = False + TraceFlags = [] + Left = 136 + Top = 80 + end + object ConnectionManager: TDAConnectionManager + MaxPoolSize = 10 + PoolTimeoutSeconds = 60 + PoolBehaviour = pbWait + WaitIntervalSeconds = 1 + Connections = < + item + Name = 'IBX' + ConnectionString = + 'IBX?Server=david;Database=D:\Proyectos\FactuGES (Arribas)\Codigo' + + '\BD\BASEDATOS.FDB;UserID=sysdba;Password=masterkey;dialect=3;' + Default = True + Tag = 0 + end> + DriverManager = DriverManager + PoolingEnabled = True + Left = 40 + Top = 80 + end + object SessionManager: TROInMemorySessionManager + SessionDuration = -1 + Left = 136 + Top = 144 + end + object DataDictionary: TDADataDictionary + Fields = < + item + Name = 'CODIGOEMPRESA' + DataType = datInteger + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'C'#243'd. empresa' + Alignment = taLeftJustify + ServerAutoRefresh = True + end + item + Name = 'NOTAS' + DataType = datString + Size = 2000 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Notas' + Alignment = taLeftJustify + end + item + Name = 'CALLE' + DataType = datString + Size = 150 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Calle' + Alignment = taLeftJustify + end + item + Name = 'PROVINCIA' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Provincia' + Alignment = taLeftJustify + end + item + Name = 'CODIGOPOSTAL' + DataType = datString + Size = 5 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'C'#243'd. postal' + Alignment = taLeftJustify + end + item + Name = 'POBLACION' + DataType = datString + Size = 40 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Poblaci'#243'n' + Alignment = taLeftJustify + end + item + Name = 'TELEFONOPARTICULAR' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Tlf. particular' + Alignment = taLeftJustify + end + item + Name = 'TELEFONOTRABAJO' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Tlf. trabajo' + Alignment = taLeftJustify + end + item + Name = 'MOVIL' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'M'#243'vil' + Alignment = taLeftJustify + end + item + Name = 'FAX' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Fax' + Alignment = taLeftJustify + end + item + Name = 'CORREO1' + DataType = datString + Size = 60 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'E-mail' + Alignment = taLeftJustify + end + item + Name = 'CORREO2' + DataType = datString + Size = 60 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'E-mail' + Alignment = taLeftJustify + end + item + Name = 'PAGINAWEB' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'P'#225'gina web' + Alignment = taLeftJustify + end + item + Name = 'CODIGO (GENERICO)' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'C'#243'digo' + Alignment = taLeftJustify + end + item + Name = 'CODIGO' + DataType = datInteger + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'C'#243'digo' + Alignment = taLeftJustify + ServerAutoRefresh = True + end + item + Name = 'CODIGOCATEGORIA_GEN' + DataType = datAutoInc + BlobType = dabtUnknown + GeneratorName = 'GEN_CATEGORIAS' + Required = True + DisplayWidth = 0 + DisplayLabel = 'C'#243'd. categor'#237'a' + Alignment = taLeftJustify + end + item + Name = 'FECHAALTA' + DataType = datDateTime + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'Fecha de alta' + Alignment = taLeftJustify + end + item + Name = 'USUARIO' + DataType = datString + Size = 100 + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'Usuario de alta' + Alignment = taLeftJustify + end + item + Name = 'NIFCIF' + DataType = datString + Size = 10 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'NIF/CIF' + Alignment = taLeftJustify + end + item + Name = 'NOMBRE' + DataType = datString + Size = 100 + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'Nombre' + Alignment = taLeftJustify + end + item + Name = 'DESCRIPCION' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Descripci'#243'n' + Alignment = taLeftJustify + end + item + Name = 'PERSONACONTACTO' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Persona de contacto' + Alignment = taLeftJustify + end + item + Name = 'CODIGOCATEGORIA' + DataType = datInteger + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'C'#243'd. categor'#237'a' + Alignment = taLeftJustify + end + item + Name = 'CODIGOCONTACTO' + DataType = datInteger + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'C'#243'd. contacto' + Alignment = taLeftJustify + ServerAutoRefresh = True + end + item + Name = 'REFERENCIA' + DataType = datString + Size = 20 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Referencia' + Alignment = taLeftJustify + end + item + Name = 'TIPOPRESUPUESTO' + DataType = datString + Size = 10 + Description = 'Cocina, ba'#241'o, etc' + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'Tipo' + Alignment = taLeftJustify + end + item + Name = 'FECHAPRESUPUESTO' + DataType = datDateTime + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'Fecha' + Alignment = taLeftJustify + end + item + Name = 'VIGENCIAPRESUPUESTO' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Vigencia' + Alignment = taLeftJustify + end + item + Name = 'SITUACIONPRESUPUESTO' + DataType = datString + Size = 30 + Description = 'Pendiente, aceptado o rechazado' + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'Situaci'#243'n' + Alignment = taLeftJustify + end + item + Name = 'FECHADECISION' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Fecha decisi'#243'n' + Alignment = taLeftJustify + end + item + Name = 'BASEIMPONIBLE' + DataType = datCurrency + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Base imponible' + Alignment = taLeftJustify + end + item + Name = 'DESCUENTO' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Descuento' + Alignment = taLeftJustify + end + item + Name = 'IMPORTEDESCUENTO' + DataType = datCurrency + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Importe dto.' + Alignment = taLeftJustify + end + item + Name = 'IVA' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + end + item + Name = 'IMPORTEIVA' + DataType = datCurrency + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Importe IVA' + Alignment = taLeftJustify + end + item + Name = 'IMPORTETOTAL' + DataType = datCurrency + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Importe total' + Alignment = taLeftJustify + end + item + Name = 'OBSERVACIONES' + DataType = datMemo + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Observaciones' + Alignment = taLeftJustify + end + item + Name = 'PLAZOENTREGA' + DataType = datMemo + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Plazo de entrega' + Alignment = taLeftJustify + end + item + Name = 'FORMAPAGO' + DataType = datMemo + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Forma de pago' + Alignment = taLeftJustify + end + item + Name = 'NUMCONCEPTO' + DataType = datInteger + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'Num. concepto' + Alignment = taLeftJustify + end + item + Name = 'CANTIDAD' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Cantidad' + Alignment = taLeftJustify + end + item + Name = 'IMPORTEUNIDAD' + DataType = datCurrency + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Importe unitario' + Alignment = taLeftJustify + end + item + Name = 'TIPODETALLESPRESUPUESTO' + DataType = datString + Size = 1 + Description = 'Cap'#237'tulo, etc' + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Tipo' + Alignment = taLeftJustify + end + item + Name = 'CODIGOPRESUPUESTO' + DataType = datInteger + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'C'#243'd. presupuesto' + Alignment = taLeftJustify + ServerAutoRefresh = True + end + item + Name = 'DESCRIPCIONCONCEPTO' + DataType = datString + Size = 2000 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Descripci'#243'n' + Alignment = taLeftJustify + end + item + Name = 'POSICIONCONCEPTO' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Posici'#243'n' + Alignment = taLeftJustify + end + item + Name = 'CODIGOPEDIDO_GEN' + DataType = datAutoInc + BlobType = dabtUnknown + GeneratorName = 'GEN_PEDIDOS' + Required = True + DisplayWidth = 0 + DisplayLabel = 'C'#243'd. pedido' + Alignment = taLeftJustify + ServerAutoRefresh = True + end + item + Name = 'CODIGOPEDIDO' + DataType = datInteger + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'C'#243'd. pedido' + Alignment = taLeftJustify + ServerAutoRefresh = True + end + item + Name = 'CODIGOALMACEN' + DataType = datInteger + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'C'#243'd. almac'#233'n' + Alignment = taLeftJustify + ServerAutoRefresh = True + end + item + Name = 'CODIGOMONTAJE' + DataType = datInteger + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'C'#243'd. montaje' + Alignment = taLeftJustify + ServerAutoRefresh = True + end + item + Name = 'FECHAPEDIDO' + DataType = datDateTime + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'Fecha' + Alignment = taLeftJustify + end + item + Name = 'FECHACONFIRMACION' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Confirmaci'#243'n' + Alignment = taLeftJustify + end + item + Name = 'SITUACIONPEDIDO' + DataType = datString + Size = 30 + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'Situaci'#243'n' + Alignment = taLeftJustify + end + item + Name = 'FECHAENTREGA' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Entrega' + Alignment = taLeftJustify + end + item + Name = 'PedidosProveedor_DIRECCIONCOMPLETA' + DataType = datMemo + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + end + item + Name = 'PedidosProveedor_INCIDENCIAS' + DataType = datMemo + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + end + item + Name = 'CODIGOALBARANCLIENTE' + DataType = datInteger + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'C'#243'd. albar'#225'n' + Alignment = taLeftJustify + ServerAutoRefresh = True + end + item + Name = 'FECHAALBARANCLIENTE' + DataType = datDateTime + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'Fecha' + Alignment = taLeftJustify + end + item + Name = 'SITUACIONALBARANCLIENTE' + DataType = datString + Size = 30 + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'Situaci'#243'n' + Alignment = taLeftJustify + end + item + Name = 'FECHAPAGO' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Fecha de pago' + Alignment = taLeftJustify + end + item + Name = 'TIPODETALLESALBARANCLIENTE' + DataType = datString + Size = 1 + Description = 'Cap'#237'tulo, etc' + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Tipo' + Alignment = taLeftJustify + end + item + Name = 'TELEFONO' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Tel'#233'fono' + Alignment = taLeftJustify + end + item + Name = 'CODIGOALMACEN_GEN' + DataType = datAutoInc + BlobType = dabtUnknown + GeneratorName = 'GEN_ALMACENES' + Required = True + DisplayWidth = 0 + DisplayLabel = 'C'#243'd. almac'#233'n' + Alignment = taLeftJustify + ServerAutoRefresh = True + end + item + Name = 'CODIGOARTICULO_GEN' + DataType = datAutoInc + BlobType = dabtUnknown + GeneratorName = 'GEN_ARTICULOS' + Required = True + DisplayWidth = 0 + DisplayLabel = 'C'#243'd. art'#237'culo' + Alignment = taLeftJustify + ServerAutoRefresh = True + end + item + Name = 'FECHAINI' + DataType = datDateTime + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'Inicio' + Alignment = taLeftJustify + end + item + Name = 'FECHAFIN' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Finalizaci'#243'n' + Alignment = taLeftJustify + end + item + Name = 'SITUACIONMONTAJE' + DataType = datString + Size = 30 + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'Situaci'#243'n' + Alignment = taLeftJustify + end + item + Name = 'FECHAFACTURA' + DataType = datDateTime + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'Fecha' + Alignment = taLeftJustify + end + item + Name = 'FECHAVENCIMIENTO' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Vencimiento' + Alignment = taLeftJustify + end + item + Name = 'CODIGOFACTURA' + DataType = datInteger + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'C'#243'd. factura' + Alignment = taLeftJustify + ServerAutoRefresh = True + end + item + Name = 'VISIBLE' + DataType = datString + Size = 1 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Visible' + Alignment = taLeftJustify + end + item + Name = 'PUNTOS' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Puntos' + Alignment = taLeftJustify + end + item + Name = 'IMPORTEPUNTOS' + DataType = datCurrency + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Importe puntos' + Alignment = taLeftJustify + end + item + Name = 'FECHAMODIFICACION' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Fecha de pago' + Alignment = taLeftJustify + end + item + Name = 'CODIGOCUENTA_GEN' + DataType = datAutoInc + BlobType = dabtUnknown + GeneratorName = 'GEN_CUENTAS' + Required = True + DisplayWidth = 0 + DisplayLabel = 'C'#243'd. cuenta' + Alignment = taLeftJustify + ServerAutoRefresh = True + end + item + Name = 'CODIGOFACTURACLIENTE' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'CODIGOFACTURA' + Alignment = taLeftJustify + end + item + Name = 'TIPODETALLESFACTURACLIENTE' + DataType = datString + Size = 1 + Description = 'Cap'#237'tulo, etc' + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'TIPO' + Alignment = taLeftJustify + end + item + Name = 'DetallesFacturasCliente_VISIBLE' + DataType = datString + Size = 1 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'VISIBLE' + Alignment = taLeftJustify + end> + Left = 40 + Top = 144 + end + object DADiagrams: TDADiagrams + Left = 224 + Top = 144 + DiagramData = + ''#13#10' '#13#10' '#13#10''#13#10 + end + object JvAppRegistryStorage: TJvAppRegistryStorage + StorageOptions.BooleanStringTrueValues = 'TRUE, YES, Y' + StorageOptions.BooleanStringFalseValues = 'FALSE, NO, N' + Root = 'Software\%APPL_NAME%' + SubStorages = <> + Left = 136 + Top = 208 + end +end diff --git a/Servidor/uDataModuleServer.pas b/Servidor/uDataModuleServer.pas new file mode 100644 index 0000000..16629fa --- /dev/null +++ b/Servidor/uDataModuleServer.pas @@ -0,0 +1,204 @@ +unit uDataModuleServer; + +interface + +uses + SysUtils, Classes, uDAEngine, uDAIBXDriver, uDAClasses, uDADriverManager, + uROClient, uROBinMessage, uROServer, uROIndyTCPServer, uROIndyHTTPServer, + uROSessions, uDADataTable, uDABINAdapter, IBSQLMonitor, JvComponent, + JvAppStorage, JvAppRegistryStorage, uDAInterfaces, JvLogFile, + JvComponentBase; + +type + TdmServer = class(TDataModule) + HTTPServer: TROIndyHTTPServer; + BINMessage: TROBinMessage; + IBXDriver: TDAIBXDriver; + DriverManager: TDADriverManager; + SessionManager: TROInMemorySessionManager; + DADiagrams: TDADiagrams; + JvAppRegistryStorage: TJvAppRegistryStorage; + ConnectionManager: TDAConnectionManager; + DataDictionary: TDADataDictionary; + procedure DataModuleCreate(Sender: TObject); + procedure DataModuleDestroy(Sender: TObject); + procedure HTTPServerBeforeServerActivate(Sender: TObject); + private + FConnectionName : string; + function GetConnectionString: string; + property ConnectionString : string read GetConnectionString; + public + FDBServer : string; + FDBPort : string; + FDBPath : string; + FDBUser : string; + FDBPass : string; + FInicioWindows : Boolean; + FServerPort : string; + procedure LeerConfiguracion; + procedure SalvarConfiguracion; + procedure RefrescarConexion; + property ConnectionName : string read FConnectionName write FConnectionName; + end; + + +function DarRutaInformes : String; +function Encrypt (const Source : string) : String; +function Decrypt (const Source : string) : String; +function GetNextAutoinc(AConnection : IDAConnection; const GeneratorName: string): integer; + +var + dmServer: TdmServer; + +implementation + +{$R *.dfm} + +uses + Forms, fServerForm, Registry, Windows, Dialogs; + +function DarRutaInformes : String; +begin + Result := ExtractFilePath(Application.ExeName) + 'Informes' + PathDelim; +end; + +function GetNextAutoinc(AConnection : IDAConnection; const GeneratorName: string): integer; +var + ds: IDADataset; +begin + ds := AConnection.NewDataset(Format('SELECT Gen_id(%s,1) FROM RDB$Database', [GeneratorName])); + ds.Open; + result := ds.Fields[0].Value; + ds.Close; +end; + +procedure WriteAutoRun(Name, Value : String); +var + reg: TRegistry; +begin + reg := TRegistry.Create; + try + reg.RootKey := HKEY_LOCAL_MACHINE; + reg.LazyWrite := False; + reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run', False); + reg.WriteString(Name, Value); + reg.CloseKey; + finally + reg.free; + end; +end; + +procedure DeleteAutoRun(Name : String); +var + reg: TRegistry; +begin + reg := TRegistry.Create; + try + reg.RootKey := HKEY_LOCAL_MACHINE; + reg.LazyWrite := False; + reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run', False); + if reg.ValueExists(Name) then + reg.DeleteValue(Name); + reg.CloseKey; + finally + reg.free; + end; +end; + + +function Encrypt (const Source : string) : String; +var + i:integer; +begin + Randseed := 28; + Result := ''; + for i:=1 to length(Source) do + Result := Result + chr(ord(Source[i]) + Random(10) + 1); +end; + +function Decrypt (const Source : string) : String; +var + i : integer; +begin + Randseed:= 28; + Result := ''; + for i := 1 to length(Source) do + Result := Result + chr(ord(Source[i]) - Random(10) - 1); +end; + +procedure TdmServer.DataModuleCreate(Sender: TObject); +begin + LeerConfiguracion; + RefrescarConexion; +end; + +function TdmServer.GetConnectionString: string; +begin + Result := 'IBX?Server=' + FDBServer + '/' + FDBPort + + ';Database=' + FDBPath + + ';UserID=' + FDBUser + + ';Password=' + Decrypt(FDBPass) + + ';Dialect=3;Charset=ISO8859_1;'; +end; + +procedure TdmServer.LeerConfiguracion; +begin + with JvAppRegistryStorage do + begin + FDBServer := ReadString('ServerDB'); + FDBPort := ReadString('PortDB'); + FDBPath := ReadString('PathDB'); + FDBUser := ReadString('UserDB'); + FDBPass := ReadString('PassDB'); + + FServerPort := ReadString('ServerPort'); + FInicioWindows := ReadBoolean('InicioWindows'); + end; +end; + +procedure TdmServer.SalvarConfiguracion; +begin + with JvAppRegistryStorage do + begin + BeginUpdate; + try + WriteString('ServerDB', FDBServer); + WriteString('PortDB', FDBPort); + WriteString('PathDB', FDBPath); + WriteString('UserDB', FDBUser); + WriteString('PassDB', FDBPass); + WriteString('ServerPort', FServerPort); + + WriteBoolean('InicioWindows', FInicioWindows); + if FInicioWindows then + WriteAutoRun('FactuGES_Server', Application.ExeName) + else + DeleteAutoRun('FactuGES_Server'); + finally + EndUpdate + end; + end; +end; + +procedure TdmServer.DataModuleDestroy(Sender: TObject); +begin +// HTTPServer.Active := False; +end; + +procedure TdmServer.RefrescarConexion; +begin + HTTPServer.Active := False; + ConnectionManager.Connections.GetDefaultConnection.ConnectionString := ''; + + ConnectionName := ConnectionManager.GetDefaultConnectionName; + ConnectionManager.Connections.GetDefaultConnection.ConnectionString := GetConnectionString; + + HTTPServer.Active := TRUE; +end; + +procedure TdmServer.HTTPServerBeforeServerActivate(Sender: TObject); +begin + HTTPServer.Port := StrToInt(FServerPort); +end; + +end. diff --git a/Servidor/uFrameConfiguracion.dfm b/Servidor/uFrameConfiguracion.dfm new file mode 100644 index 0000000..6c2309a --- /dev/null +++ b/Servidor/uFrameConfiguracion.dfm @@ -0,0 +1,9 @@ +object FrameConfiguracion: TFrameConfiguracion + Left = 0 + Top = 0 + Width = 320 + Height = 240 + Align = alClient + TabOrder = 0 + Visible = False +end diff --git a/Servidor/uFrameConfiguracion.pas b/Servidor/uFrameConfiguracion.pas new file mode 100644 index 0000000..7ac322f --- /dev/null +++ b/Servidor/uFrameConfiguracion.pas @@ -0,0 +1,34 @@ +unit uFrameConfiguracion; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs; + +type + IConfiguracionFrame = interface + ['{07F3EDBF-DFED-4B76-ADC7-0D3B83FB6F9B}'] + procedure Init; + procedure Finalize; + end; + + TFrameConfiguracion = class(TFrame, IConfiguracionFrame) + protected + procedure Finalize; virtual; + public + procedure Init; virtual; abstract; + end; + +implementation + +{$R *.dfm} + +{ TFrameConfiguracion } + +procedure TFrameConfiguracion.Finalize; +begin + Hide; +end; + +end. diff --git a/Usuarios/Usuarios.bdsproj b/Usuarios/Usuarios.bdsproj new file mode 100644 index 0000000..8d65505 --- /dev/null +++ b/Usuarios/Usuarios.bdsproj @@ -0,0 +1,492 @@ + + + + + + + + + + + + Usuarios.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 3 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + Pedidos a proveedor + + + + .\ + ..\Output\Cliente + .\ + $(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\Base;..\Servidor + vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;CEToolsPkgd7;FR7;FRIBX7;Hydra_Core_D7;Hydra_RO_D7;fqb70;frx7;frxADO7;frxBDE7;frxDB7;frxDBX7;frxe7;frxIBX7;fs7;fsADO7;fsBDE7;fsDB7;fsIBX7;DataAbstract_Core_D7;DataAbstract_IDE_D7 + + + False + + + + + + False + + + True + False + + + + $00000000 + C:\Archivos de programa\Borland\Delphi7\Bin\ + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + diff --git a/Usuarios/Usuarios.cfg b/Usuarios/Usuarios.cfg new file mode 100644 index 0000000..e6102f8 --- /dev/null +++ b/Usuarios/Usuarios.cfg @@ -0,0 +1,45 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-GD +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N".\" +-LE"..\Output\Cliente" +-LN".\" +-U"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\Base;..\Servidor" +-O"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\Base;..\Servidor" +-I"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\Base;..\Servidor" +-R"c:\archivos de programa\borland\delphi7\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\Base;..\Servidor" +-Z +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/Usuarios/Usuarios.dcp b/Usuarios/Usuarios.dcp new file mode 100644 index 0000000..f0cfe54 Binary files /dev/null and b/Usuarios/Usuarios.dcp differ diff --git a/Usuarios/Usuarios.dof b/Usuarios/Usuarios.dof new file mode 100644 index 0000000..a286504 --- /dev/null +++ b/Usuarios/Usuarios.dof @@ -0,0 +1,186 @@ +[FileVersion] +Version=7.0 +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=1 +SymbolLibrary=1 +SymbolPlatform=1 +UnitLibrary=1 +UnitPlatform=1 +UnitDeprecated=1 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 +[Linker] +MapFile=3 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=Pedidos a proveedor +[Directories] +OutputDir= +UnitOutputDir=.\ +PackageDLLOutputDir=..\Output\Cliente +PackageDCPOutputDir=.\ +SearchPath=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\Base;..\Servidor +Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;CEToolsPkgd7;FR7;FRIBX7;Hydra_Core_D7;Hydra_RO_D7;fqb70;frx7;frxADO7;frxBDE7;frxDB7;frxDBX7;frxe7;frxIBX7;fs7;fsADO7;fsBDE7;fsDB7;fsIBX7;DataAbstract_Core_D7;DataAbstract_IDE_D7 +Conditionals= +DebugSourceDirs= +UsePackages=0 +[Parameters] +RunParams= +HostApplication= +Launcher= +UseLauncher=0 +DebugCWD= +[Language] +ActiveLang= +ProjectLang= +RootDir=C:\Archivos de programa\Borland\Delphi7\Bin\ +[Version Info] +IncludeVerInfo=1 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=3082 +CodePage=1252 +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= +[Excluded Packages] +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\DJclVcl70.bpl=JEDI Code Library VCL package for Delphi 7 +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\DJcl70.bpl=JEDI Code Library RTL package for Delphi 7 +C:\WINDOWS\system32\fqb70.bpl=FastQueryBuilder 1.01 +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxPSCoreD7.bpl=ExpressPrinting System (core 3.1) by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxComnD7.bpl=ExpressCommonLibrary by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxBarDBNavD7.bpl=ExpressBars DBNavigator by Developer Express Inc. +c:\archivos de programa\borland\delphi7\Projects\Bpl\RodaxFrameD7.bpl=Frames Acana (D7) +C:\Archivos de programa\RemObjects Software\Hydra\Dcu\D7\Hydra_Core_D7.bpl=RemObjects Hydra - Core Library +C:\Archivos de programa\RemObjects Software\Hydra\Dcu\D7\Hydra_IDE_D7.bpl=RemObjects Hydra - IDE Integration +C:\Archivos de programa\RemObjects Software\Hydra\Dcu\D7\Hydra_RO_D7.bpl=RemObjects Hydra - RemObjects SDK Integration Library +[HistoryLists\hlDebugSourcePath] +Count=1 +Item0=D:\Proyectos\Componentes\GUISDK\Sources\;D:\Proyectos\Componentes\PluginSDK\Source\;D:\Proyectos\FactuGES (Estudio)\Codigo\Modulos\Contactos\Cliente;D:\Proyectos\FactuGES (Estudio)\Codigo\Modulos\Contactos\Reglas +[HistoryLists\hlUnitAliases] +Count=1 +Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +[HistoryLists\hlSearchPath] +Count=16 +Item0=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente;..\..\Asientos\Cliente;..\..\Cuentas\Cliente +Item1=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente;..\..\Asientos\Cliente +Item2=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente;..\..\Intervalos\Cliente +Item3=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\Presupuestos\Cliente;..\..\..\Usuarios;..\..\Albaranes de cliente\Cliente;..\..\Documentos asociados;..\..\Pagos\Cliente +Item4=..\Modulos\Presupuestos\Reglas;..\Modulos\Contactos\Reglas;..\Base;..\Configuracion;..\Usuarios;..\Modulos\Albaranes de cliente\Reglas +Item5=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\Base;..\Configuracion;..\Usuarios;..\Modulos\Intervalos;..\Modulos\Documentos asociados;..\Modulos\Contactos\Cliente;..\Modulos\Contactos\Reglas;..\Modulos\Presupuestos\Cliente;..\Modulos\Presupuestos\Reglas;..\Modulos\Albaranes de cliente\Cliente;..\Modulos\Albaranes de cliente\Reglas;..\Modulos\Facturas de cliente\Cliente;..\Modulos\Facturas de cliente\Reglas;..\Modulos\Pedidos a proveedor\Cliente;..\Modulos\Pedidos a proveedor\Reglas;..\Modulos\Facturas de proveedor\Cliente;..\Modulos\Facturas de proveedor\Reglas;..\Modulos\Montajes\Reglas;..\Modulos\Montajes\Cliente;..\Modulos\Articulos\Cliente;..\Modulos\Articulos\Reglas;..\Modulos\Almacenes\Reglas;..\Modulos\Almacenes\Cliente;..\Modulos\Pagos\Reglas;..\Modulos\Pagos\Cliente;..\Modulos\Cuentas\Reglas;..\Modulos\Cuentas\Cliente;..\Modulos\Asientos\Reglas;..\Modulos\Asientos\Cliente;..\Modulos\Calendarios\Cliente;..\Modulos\Calendarios\Reglas +Item6=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente;..\..\Documentos asociados;..\..\Contactos\Cliente;..\..\Almacenes\Cliente +Item7=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados +Item8=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente;..\..\Documentos asociados;..\..\Contactos\Cliente +Item9=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente;..\..\Documentos asociados +Item10=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\..\Usuarios;..\..\Montajes\Cliente +Item11=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados;..\..\Montajes\Cliente;..\..\Almacenes\Cliente +Item12=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\..\Base;..\..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios;..\..\Documentos asociados;..\..\Montajes\Cliente +Item13=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\Servidor +Item14=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\base;..\Modulos\Calendarios\Cliente;..\Modulos\Calendarios\Reglas +Item15=$(DELPHI)\Lib\Debug;D:\PROYEC~1\COMPON~1\jcl\lib\D7\debug;..\..\Base;..\..\Servidor;..\..\Contactos\Cliente;..\..\..\Usuarios +[HistoryLists\hlUnitOutputDirectory] +Count=1 +Item0=.\ +[HistoryLists\hlOutputDirectorry] +Count=2 +Item0=..\Output\Servidor +Item1=..\Output\Cliente +[HistoryLists\hlBPLOutput] +Count=3 +Item0=..\..\..\Output\Cliente +Item1=..\Output\Cliente +Item2=..\..\Output\Cliente +[HistoryLists\hlDCPOutput] +Count=1 +Item0=.\ diff --git a/Usuarios/Usuarios.dpk b/Usuarios/Usuarios.dpk new file mode 100644 index 0000000..3cad34c --- /dev/null +++ b/Usuarios/Usuarios.dpk @@ -0,0 +1,51 @@ +package Usuarios; + +{$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} +{$DESCRIPTION 'Pedidos a proveedor'} +{$IMPLICITBUILD OFF} + +requires + vcl, + vcldb, + PngComponentsD7, + PNG_D7, + vclactnband, + vclx, + vcljpg, + BaseD7, + rtl, + dbrtl, + dsnap, + adortl, + DataAbstract_D7, + JvMMD7R; + +contains + uDataModuleUsuarios in 'uDataModuleUsuarios.pas' {dmUsuarios: TDAClientDataModule}, + uUsuarios in 'uUsuarios.pas' {fUsuarios}, + uUsuario in 'uUsuario.pas' {fUsuario}, + uLoginForm in 'uLoginForm.pas' {fLoginForm}, + uCambiarPassword in 'uCambiarPassword.pas' {fCambiarPassword}; + +end. diff --git a/Usuarios/Usuarios.drc b/Usuarios/Usuarios.drc new file mode 100644 index 0000000..a5d5271 --- /dev/null +++ b/Usuarios/Usuarios.drc @@ -0,0 +1,14 @@ +/* VER150 + Generated by the Borland Delphi Pascal Compiler + because -GD or --drc was supplied to the compiler. + + This file contains compiler-generated resources that + were bound to the executable. + If this file is empty, then no compiler-generated + resources were bound to the produced executable. +*/ + +STRINGTABLE +BEGIN +END + diff --git a/Usuarios/Usuarios.res b/Usuarios/Usuarios.res new file mode 100644 index 0000000..ec5f233 Binary files /dev/null and b/Usuarios/Usuarios.res differ diff --git a/Usuarios/uCambiarPassword.ddp b/Usuarios/uCambiarPassword.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Usuarios/uCambiarPassword.ddp differ diff --git a/Usuarios/uCambiarPassword.dfm b/Usuarios/uCambiarPassword.dfm new file mode 100644 index 0000000..9169827 --- /dev/null +++ b/Usuarios/uCambiarPassword.dfm @@ -0,0 +1,94 @@ +object fCambiarPassword: TfCambiarPassword + Left = 460 + Top = 492 + Width = 361 + Height = 299 + Caption = 'Cambiar la contrase'#241'a' + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + Position = poScreenCenter + PixelsPerInch = 96 + TextHeight = 13 + object bAceptar: TButton + Left = 136 + Top = 230 + Width = 120 + Height = 25 + Caption = '&Cambiar la contrase'#241'a' + Default = True + TabOrder = 0 + OnClick = bAceptarClick + end + object bCancelar: TButton + Left = 269 + Top = 230 + Width = 75 + Height = 25 + Cancel = True + Caption = '&Cancelar' + ModalResult = 2 + TabOrder = 1 + end + object PageControl1: TPageControl + Left = 2 + Top = 2 + Width = 349 + Height = 217 + ActivePage = pagContrasena + TabOrder = 2 + object pagContrasena: TTabSheet + Caption = 'Cambiar la contrase'#241'a' + object Label4: TLabel + Left = 16 + Top = 19 + Width = 167 + Height = 13 + Caption = 'Escriba la nueva contrase'#241'a:' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + ParentFont = False + Transparent = True + end + object Label1: TLabel + Left = 16 + Top = 72 + Width = 257 + Height = 13 + Caption = 'Repita la nueva contrase'#241'a para confirmarla:' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + ParentFont = False + Transparent = True + end + object edtPassword2: TEdit + Left = 16 + Top = 88 + Width = 295 + Height = 21 + CharCase = ecLowerCase + PasswordChar = '*' + TabOrder = 0 + end + object edtPassword: TEdit + Left = 16 + Top = 39 + Width = 295 + Height = 21 + CharCase = ecLowerCase + PasswordChar = '*' + TabOrder = 1 + end + end + end +end diff --git a/Usuarios/uCambiarPassword.pas b/Usuarios/uCambiarPassword.pas new file mode 100644 index 0000000..03a158b --- /dev/null +++ b/Usuarios/uCambiarPassword.pas @@ -0,0 +1,41 @@ +unit uCambiarPassword; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, StdCtrls, ComCtrls; + +type + TfCambiarPassword = class(TForm) + bAceptar: TButton; + bCancelar: TButton; + Label4: TLabel; + edtPassword: TEdit; + Label1: TLabel; + edtPassword2: TEdit; + PageControl1: TPageControl; + pagContrasena: TTabSheet; + procedure bAceptarClick(Sender: TObject); + private + { Private declarations } + public + { Public declarations } + end; + +var + fCambiarPassword: TfCambiarPassword; + +implementation + +{$R *.dfm} + +procedure TfCambiarPassword.bAceptarClick(Sender: TObject); +begin + if edtPassword2.Text <> edtPassword.Text then + raise Exception.Create('Por favor, introduzca la MISMA contraseña en los dos campos') + else + ModalResult := mrOK; +end; + +end. diff --git a/Usuarios/uDataModuleUsuarios.ddp b/Usuarios/uDataModuleUsuarios.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Usuarios/uDataModuleUsuarios.ddp differ diff --git a/Usuarios/uDataModuleUsuarios.dfm b/Usuarios/uDataModuleUsuarios.dfm new file mode 100644 index 0000000..cbce197 --- /dev/null +++ b/Usuarios/uDataModuleUsuarios.dfm @@ -0,0 +1,151 @@ +object dmUsuarios: TdmUsuarios + OldCreateOrder = True + OnCreate = DAClientDataModuleCreate + RemoteService = ROLoginService + Adapter = dmBase.DABINAdapter + SchemaCall.MethodName = 'GetSchemaAsXML' + SchemaCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtString + end> + Left = 520 + Top = 350 + Height = 340 + Width = 423 + object ROLoginService: TRORemoteService + ServiceName = 'srvLogin' + Message = dmBase.ROMessage + Channel = dmBase.ROChannel + Left = 32 + Top = 16 + end + object tbl_Usuarios: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'ID' + DataType = datString + Size = 8 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end> + Params = <> + MasterMappingMode = mmDataRequest + StreamingOptions = [soDisableEventsWhileStreaming] + SchemaCall.MethodName = 'GetDatasetSchema' + SchemaCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBinary + end + item + Name = 'aDatasetName' + ParamType = fIn + DataType = rtString + Value = 'Usuarios' + end> + DataRequestCall.MethodName = 'GetDatasetDataEx' + DataRequestCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBinary + end + item + Name = 'DatasetName' + ParamType = fIn + DataType = rtString + Value = 'Usuarios' + end + item + Name = 'Params' + ParamType = fIn + DataType = rtUserDefined + UserClassName = 'TDADatasetParamArray' + end + item + Name = 'UserFilter' + ParamType = fIn + DataType = rtString + Value = '' + end + item + Name = 'IncludeSchema' + ParamType = fIn + DataType = rtBoolean + Value = False + end + item + Name = 'MaxRecords' + ParamType = fIn + DataType = rtInteger + Value = -1 + end> + DataUpdateCall.Params = <> + ScriptCall.MethodName = 'GetDatasetScripts' + ScriptCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtString + Value = '' + end + item + Name = 'DatasetNames' + ParamType = fIn + DataType = rtString + Value = 'Usuarios' + end> + ReadOnly = False + RemoteService = ROLoginService + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'Usuarios' + IndexDefs = <> + Left = 176 + Top = 40 + end + object ds_Usuarios: TDADataSource + DataTable = tbl_Usuarios + Left = 280 + Top = 40 + end + object DADesigntimeCall: TDADesigntimeCall + RemoteRequest.MethodName = 'Login' + RemoteRequest.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBoolean + end + item + Name = 'UserID' + ParamType = fIn + DataType = rtString + Value = '1' + end + item + Name = 'Password' + ParamType = fIn + DataType = rtString + Value = '1' + end + item + Name = 'LoginInfo' + ParamType = fOut + DataType = rtUserDefined + UserClassName = 'TLoginInfo' + end> + RemoteService = ROLoginService + Left = 32 + Top = 80 + end +end diff --git a/Usuarios/uDataModuleUsuarios.pas b/Usuarios/uDataModuleUsuarios.pas new file mode 100644 index 0000000..4f59d02 --- /dev/null +++ b/Usuarios/uDataModuleUsuarios.pas @@ -0,0 +1,113 @@ +unit uDataModuleUsuarios; + +interface + +uses {vcl:} SysUtils, Classes, DB, DBClient, + {RemObjects:} uDAClientDataModule, uDADataTable, uDABINAdapter, + uROServiceComponent, uRORemoteService, uROClient, uROBinMessage, + uROWinInetHttpChannel, uDAScriptingProvider, uDACDSDataTable, + FactuGES_Intf, uDADesigntimeCall; + +const + ROL_ADMIN = 'Administrador'; + +type + TdmUsuarios = class(TDAClientDataModule) + ROLoginService: TRORemoteService; + tbl_Usuarios: TDACDSDataTable; + ds_Usuarios: TDADataSource; + DADesigntimeCall: TDADesigntimeCall; + procedure DAClientDataModuleCreate(Sender: TObject); + procedure DAClientDataModuleDestroy(Sender: TObject); + private + FLoginInfo: TLoginInfo; + function CambiarPassword (const APassword : String) : boolean; overload; + + public + function Login: Boolean; overload; + function Login(Usuario: String; Password: String): Boolean; overload; + procedure Logout; + procedure CambiarPassword; overload; + function EsAdmin : Boolean; + property LoginInfo: TLoginInfo read FLoginInfo write FLoginInfo; + end; + +var + dmUsuarios: TdmUsuarios; + +implementation + +{$R *.DFM} + +uses + Forms, Controls, uDataTableUtils, uDataModuleBase, uLoginForm, + uCambiarPassword, Dialogs, Windows; + +{ TDAClientDataModule1 } + +procedure TdmUsuarios.DAClientDataModuleCreate(Sender: TObject); +begin + ROLoginService.Channel := dmBase.Channel; + ROLoginService.Message := dmBase.Message; + Adapter := dmBase.Adapter; +end; + +function TdmUsuarios.Login: Boolean; +begin + with TfLoginForm.Create(NIL) do + try + if Assigned(FLoginInfo) then + edtUser.Text := FLoginInfo.UserID; + Result := (ShowModal = mrOK) + finally + Free; + end; +end; + +function TdmUsuarios.Login(Usuario: String; Password: String): Boolean; +begin + Result := (ROLoginService as IsrvLogin).Login(Usuario, Password, FLoginInfo); +end; + +procedure TdmUsuarios.Logout; +begin + (ROLoginService as IsrvLogin).Logout; +end; + +procedure TdmUsuarios.DAClientDataModuleDestroy(Sender: TObject); +begin + FreeAndNIL(FLoginInfo); +end; + +function TdmUsuarios.EsAdmin: Boolean; +begin + Result := (Pos(ROL_ADMIN, LoginInfo.Roles.Items[0]) > 0); +end; + +procedure TdmUsuarios.CambiarPassword; +begin + with TfCambiarPassword.Create(NIL) do + try + if ShowModal = mrOk then + if CambiarPassword(edtPassword.Text) then + Application.MessageBox('La contraseña ha sido cambiada correctamente.', 'FactuGES', MB_OK); + finally + Free; + end; +end; + +function TdmUsuarios.CambiarPassword(const APassword: String): boolean; +begin + Result := False; + if not (ROLoginService as IsrvLogin).SetUserPassword(LoginInfo.UserID, APassword) then + raise Exception.Create('Error en el servidor. No se ha podido cambiar la contraseña'); + Result := True; +end; + +initialization + dmUsuarios := TdmUsuarios.Create(nil); + +finalization + FreeAndNil(dmUsuarios); + +end. diff --git a/Usuarios/uLoginForm.ddp b/Usuarios/uLoginForm.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Usuarios/uLoginForm.ddp differ diff --git a/Usuarios/uLoginForm.dfm b/Usuarios/uLoginForm.dfm new file mode 100644 index 0000000..3d83fcc --- /dev/null +++ b/Usuarios/uLoginForm.dfm @@ -0,0 +1,1123 @@ +object fLoginForm: TfLoginForm + Left = 384 + Top = 376 + ActiveControl = edtUser + BorderStyle = bsDialog + ClientHeight = 243 + ClientWidth = 386 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + Position = poScreenCenter + OnCreate = FormCreate + OnShow = FormShow + DesignSize = ( + 386 + 243) + PixelsPerInch = 96 + TextHeight = 13 + object Label3: TLabel + Left = 24 + Top = 108 + Width = 39 + Height = 13 + Caption = 'Usuario:' + Transparent = False + end + object Label4: TLabel + Left = 24 + Top = 138 + Width = 57 + Height = 13 + Caption = 'Contrase'#241'a:' + Transparent = False + end + object Label1: TLabel + Left = 16 + Top = 72 + Width = 173 + Height = 13 + Caption = 'Inicio de sesi'#243'n en FactuGES:' + Font.Charset = DEFAULT_CHARSET + Font.Color = clActiveCaption + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + ParentFont = False + end + object JvGradient1: TJvGradient + Left = 0 + Top = 57 + Width = 386 + Height = 4 + Align = alTop + StartColor = 2971346 + EndColor = 4828405 + end + object Panel1: TPanel + Left = 0 + Top = 0 + Width = 386 + Height = 57 + Align = alTop + BevelOuter = bvNone + TabOrder = 0 + object Image1: TImage + Left = 0 + Top = 0 + Width = 386 + Height = 57 + Align = alClient + Center = True + Picture.Data = { + 0B544A76474946496D616765F6750000474946383961C201FA00E60000FFFFFF + F5F5F5A92824ECECECEB743DF48545EF7B40DEDEDECD452DEAEAEAD0492EDC5A + 34FAFAFAF2F2F2BC2A26B02724E5E5E5E26236B95B55E1E1E1F8F8F8D95532FC + FCFCF5D6CAD4D4D4F5C8B5D1B5B0F0F0F0E66A39C23428D65131EEEEEEBCBABA + FEFEFEF7B192F49366CB938CD34D30C7726AC63A2AE96E3BC7564CD26958EEB5 + A5F9E9E3D7C5C2C93F2BE46638F8E1D8D2867AC9C5C4E05E35C03027B82725C7 + 453AE79A89B9322ECBA59EF7A47BFCF4F1FCF0EBB93A36D8D5D4B44741BF2D26 + EEE2E0A22925AB3934A7302CFEF8F5FEF9F8C33B33DB5D3DB52724B12E2AD251 + 3AD9CFCDE47D60FEFCFCBC7D75BD2C26EBE9E9D6D6D7FFFEFDF7F1F0FEFBFAFD + FDFDF3F0EFE8DDDCFBF8F7DFDFDFDED7D6D45A43F4F4F4E0E0E0DADADAC94E41 + F9F9F9DF6648EBEBEBF1EBEAE4E4E4D8D8D8EDEDEDD94E2FD95738C53729EFEF + EFFFFFFEF3F3F3E2E2E2EBECEDE8E8E8F7F7F7EFF0F0CDCCCCF1EEEDE7E7E7F1 + F2F3F1E8E5E76035E86B39D1D1D2F2F3F4EEEDEECF3F2AD2D0D0F1F1F12C0000 + 0000C201FA000007FF800582838485868788898A8322173C5300919293949596 + 9798999A9B9C9D9E9FA0A1A2A393560C717F6763670D710C56A4B1B2B3B4B5B1 + 8323B887B982BC05BEC0BABDBBC2BFBF3A193046B6CCCDCECFD0D1A50C011F70 + 1075636B6D71161621E0D2E2B4E02156E7E8E9EAE5E3968BEFF0F1883A8D3BED + F7F8F9FAA2A601677513DC9481A38D5B180BB0F629BC64C502030A7102489C48 + 31401C0A0713EA3336AC23C78FC10C8504590CD808643C16AA5CC9125AC30003 + CA68D1E265421908633E18D4D8529F290A5DFEAC3933A0A8D1A31FFE707BB54F + 9ED3A78B4624EB49B5AAD54DFD621ED8BAD58B9B6C6B5A85796525C4D567211C + 024D05A70E843270FFE3CA850067C0862EDDCAE283CAB76F2F1130CE0A1EDCF3 + A556AE5D05D649F0A141000A0C2C10B665254C805409EA947133C18BE7CF9E27 + 88BEC9F84F808366DBF95DFD54C785296C26CB9E2DAEDF3F2D880FCCD4127031 + ABC7DF688B4A4BA1CD87CC9BBDEC5ECE9CA6CD3A701ABB4A2D8EB5F577272F14 + 7122BCBB77592FCF40505ED38D4037CA0FD88490C02EDEC87ABF33B410A6CB86 + 319A95E35E0E9A79D7E78C75414170D22462006B072A9260010B1E825211B1C9 + 27E18498D8564768742590001C654C3053796580F51E4F1486704A030370881E + 6E5B3967DE8B9C75C6E287E6E1F44737D55DA7E32E52C1C00377140629E44B1F + 5CE8C5408DB5B1C6FF186FA597581DEE0D489D7CE05810C006097488988B37D5 + E1A59710BCB5998C5B0EB4018ED10CB2608387ACA9669B6F1AC2A6200D9E944C + 1542E639615A71AC0107676E24D0401861C4A1247E7079A8DB04741574DA2B53 + D26662351C7AC11588D02530C651638CA1615B6FADC8951603AD110042D0ECA8 + AA21F4C050849EB07AC7E7067FDA344617AF3864E8922A5ACA9B798B49170689 + B3595964194E6AE14686037CB0C6061BFCF107B46B7C4094A76D71C6E2015E45 + 776AA4B53028EE81E48E6B6EB9E89EAB6EBAECAA5B0032F6C42AAF6CE650F047 + 029C95716B59E09862E87DD7ACB8DBB28CB502293B839913C01A00EDC75B8839 + 6DD0461B5D54D445FF1B0D48BBC150F84140E6568C7E100003E0CE42679CE29E + AC72CA2C13E2A69C28BFFC4B062C4032EFCD67D57B6F876524D0C637E5985868 + 5067B4D5A1AF006E13471C631178D5A4D6B871E9570557BCF4D5584B74710319 + 7F304002A1A6A76C1D67E04AAC2CEBA6DDEEDA6AB7CDEE0880155132CE742B64 + 4E180D8CD161A07F8411B4390D3D74D97110B8B15F4D21367B1744929D654535 + 855BAADB57EE5D440146845E0ED1D25A6F3DED0763043CE3047588EC342D32A7 + 1EF3EA2BABDE7A21705FB083CD75D7BED0DD79EF0DC70614F0FB779510357046 + 669CE977A497496D70EA3973EB034E181B5CD8E29170B0C27464D833A03DA161 + 5C1E5144124DDCC0FF50C46F1B72006793E2F6FA6CB7CF3E8376C280A7EDF43B + 5F59DE80C2F147EFBF07AD56000D009D8A6612104611447990499FF318D005BD + 4DAD7AA6699A37B497BDED758F735A9B98508AE6B119B9010E6D600033DC47C2 + F795B05DBF004CBCEAC7C271E82C4B36D1DFB0FAF7B78614AA0DF7A983E166C2 + 2D0336E6348D5B8905FA0410AE7CE50C6D78943796C8C4EC656E7301B818C6A6 + 95A20ECDA80C1FA040F3426100727591415FECA217C70846328AB18C683CA31A + C3C8C60421830555D8620BE7188B17022A017DF31D0DFD770AE3802D39B8395E + 7BFE2020F8C8112DF6FAD37E488744A631511D4C748805A1D805298EAF8A8A52 + 8FA098823A137AF2FF84EF938AEC8044C752D6C28ED4CBE31EFB674343798D43 + 1EA2498D08B28611EDE3710340CFA26C3432F8A80392137448E6302845A1202A + 3D5E80C0194676484E88F199D08CA634A749CD6A5AF3406F7442334DC9CD4CD8 + 312078E4DF2A69D89038D80793DBF20A4E6A09996DD682017FA8038B8E84C791 + 2D9179BF4B47301930CCCE4D917002FBCA1AE2A0C04FACD18C6D7C661ADB5846 + 851E74A1647C1760E2D8CD8A0EE77E7A0BC8EEC4394E1AEAAA0D7F48D15BC8F4 + 1CBB180452D2A8D707CA60C4D201311DE18844D0F4E910615E302295C4D80686 + D7416EE9AB0B418CC535874AD4A256B309B1939B4597FA0913B5610085FBE099 + 80D651720AF3321CFFD4A52C43543057147416698189D474D3B31BF9D27792A8 + E1399648C10B4EA498A0D321D2E0D00092CD62A80DB5665EA3B9D7315ED34E3C + 981F5307EB4D6A14893375182842AADA51FA5C89A7C85A0EC174E2557E35E37E + 7FD28D17C8862B6FA023A6699DE95A9DE8D6286A7028D798408B20B0062DBAF3 + 12468DED350920DB2EC68E07AF252C37ADE4A70EB974B1E5680842F458557F01 + 10A05A7D4E4E4C33A0F8D462880CF350B74CA5BDE15A76126A156E5B6F6A5A9D + 2EA9702C2AC319BA91DB4AD4F6BCE8856613DE958C65E8F6BD941822AD6A643A + 3DD6D4908CED9724E320BC3F1A6F3D1004627931C140A87AC85666F52C5AB12B + 5AE14AB27B10C9A0FF7707A0C3F00E6079B230006D69DBC50D6B588C1CFEB087 + 3DDC611183F8C4252EF1884DCC61418820032B842F7CE5ABA2D2E5858FDD1BCB + 59F36B0E6AFCE1389A91116E7CE89883004D1661F843A5C666BDEA02371CF944 + 075BB7E73D9C8A6F5A458BEC017AD686616538BD6046EFCC5820E332D31858A6 + 7A725A0A15458B60E460F935EEF83A66B84591E60C84F4EA80654AC458226929 + 35C52739D7BA4F7E7A4FC219DB29D814C5B7016578C59066B1A4493CE94A47FA + D21A7E5760CA3CE385C132B1372E87430230C506546C2CC4EDE85A2D631CFCD4 + 994674B10B70F61C02C8E9E7834A73B2A0594968D26ECECA535474E494B5D1A0 + 8A42C5964671A59FFF19624C3B7BD9AED90EA7757B0A3F2156B17AFC09A9B996 + 448BE878B83C1EF5A13453BC992CAB2E7771A47339814B99F83401E9A6A08279 + 4DE8094E929853FCDC31790307C53E5AC3047836A4039E6C81175CD23D8AF1B4 + 2DCADB4F635BB4DB035F4EAD0619AA325698FFFA5A937AB82CB018ECAB94C065 + 9D9309EFF74466DED9AD3705F9595AD3664CDFB0E44D624F250B83DBFCE037C7 + B401EC54B3853315BAB59AB99A67EA0D88943A89154FB5AA1DCB96CDCCC82B8B + 61E7E932D1EE40B227DDDF4679BFA43CE57B5B248A9E839600AD48BA818A3016 + 014FBBDAD7CEF6B6BBFDED708F7BDA33AD0357F97CA90DF7ADC8E0CC4AFA00BB + 62DEAEAED2572938FFCC846DC8109398120BFAB8318CFCEA492494BC7FC9757B + 4F32C219E4DAB4381673D2EDBDE638C739C1731EFAB96F185E7767781CE67BBE + A1E7F3C114907012D5CDE3C059A6BF3A8CA55706D255D4540826EEA6A7D2DEAC + EB5F36F1C1C394F895A935BC20CBDCEC35DFB0DCA74FFDEA4FBF0934A35DEA4B + 69255AF9B66C9149F9EBD90CD23F985ADDBB2E2E35C6879C5806843461111055 + 430EFC4022C93197D3F1C969CA56E473B7BB2FB7316BF03572C56FFE86760067 + 7D6F97806AC780D5E7806EF72E8EA07DDBD74267B62C03D06516471F97835F7C + 14619504786EA63DE9B74A0D113C4BE2162FD2195F511711E40D911207671059 + A4024178917FD813FF49FB847C55F65657B6795E03362B22558E867628A08048 + 9884D6570037A01D15C87D57A222109081A8D12FAC766A7C07380F86535CD300 + 919785E3245C37948280541EECF11B45280914B006E3616E5072176E26793535 + 6592644110F63D60873189B606D522528C465707117D4A388884E8765291124F + 38471738851A185CF5C135155371E0564382536A9168649FC558FE72282AA27B + 93A53C19010EF6822FCAC128091016166139FA775F2BC7723DA87C9A472DD6E2 + 6AE9F1539C440A697784BA4800BB1870BBF88BB9188CC07884BEC88BC6588CC3 + 688CC4788CC6D8042BA00C7B9688F2D17D52380083627182D33912E14816D72F + 86063E60B78D4D33FF78ACC44FA4B60129927B047413E85648FD502407767FDB + 781192D78ADB75875783681AB331D6E25FBAA14CE4258885389085C85E3D278D + F473668C628DA8165C6A614E2FC70D151765B60791D2327B1E585CA660196C01 + 5E1F723CD6C83496315FDC423984348F98638FDC838F5F977989C68F44912D81 + 9458FC5373C97893CA989338B9933AD9933C8902B1333B08693B79B7906DD05C + 35E4585DC06D78713D5AA75F43833114231190B17FE4F83B82A368B9E719BCC1 + 1E1F102DA9504434C11EF13711AAB8924FF48AFE148B02E83588124B811242D1 + 28093FE99376599778799739B9732BC002EE35947BA209D4C0309CC18849874F + A3555A527489DD68FF0EC28479175349DEE67A7B143811114088821EE5E12570 + 902D92432A64A3148077359A539ABF068E79186C02C831FED595E305729C8002 + BA289BBC489BB2799BB6A98CB6899BBB398CBD599BB3199C3AF99B06904D8029 + 2169815296C05BB937850D7098BFE48DA7B094D2E218B4D777A7B06DE68717A1 + 587B9B0864A2F291FA712964A91466499A55C639E09853CBC787D51284CE3736 + BC339774099CF6799BC3299CF8B99FB9E99BFAD99F77999BA2F42AC759155562 + 68E1175FE6F41E30580AABF727CB320609E66043D74ADD6535172178BFF3908B + D994C437898D359214A64BB9911B63A30D5E2899DF9335A8C99E7A382D6D398B + A9B51F7C1306B580FF021C709B392A9B3B8AA3BCF9A33D1AA43FCA9B42CAA33A + 3AA448BAA34D7003198088055A1816B01677E16593C00028E228542A09780343 + 3D038A27F748BED36B6E254553994049F998C056A61919861CC9247556A28861 + 130970061233956679A76F65499AB779EE491442283603D137378AA4848A9B79 + 50A8889AA8B279A885CAA8F80937CA40814F7A0FFA959D21D599224322143083 + 54231D7016066DC024726A2A46765F73F894BA426AD5F985D6954F82439DE699 + 74C515A541E16ADB322A3C444067182D14238216C39E5D282D7CFA01C44A805A + D2225FB17708330A2870A839EAAC43CA017990A3D4EAA3D00AADD55AADD8EAA3 + DA6AADDEFAACDCFAFFAD28600037A04293EA137EB794AF5438FA823E94100709 + 508A5C956B0801AA06D6A58FA25D3785119EF537180776A3498FE1478985B2A0 + 53D990ABA42B44F396255A1E99A42C671816BD9AA72EFAA2FB18A3C31373A3D2 + 2DBFE17BA370A820DBAC3EBAA8221BB2210BAE272BB2E0BAB22A5BB22E6BB2DE + 0AB3204B004D8012E78A0F26B22BE9681E9EE10663E0AE9300AFBBB199DA2020 + 8592371ED3A5EA2649101199DCC82F34A53D11A68718D998A3F510E6346B093B + 9299F9315303266F0A75736A7EBD1A821373B6C17AB1EE692D22F5A61B7B6E9E + 0A9B9630AD79E0ACD3FAAD754BB7752BAD76BBB7758BA3772BADD41AB884EBB7 + 829BB7820BB886ABFFB777DB048DF09737DB0C8E89B5E3566E5C3101FB420901 + 900033627F6F282D5926A7CA137E81137B7A78834DB37F33C54F16E98581F794 + 5562195A3B7E00F40F6E8BABEBC11803F8279F79676B40B667AB87690B2DD4F2 + 9EAAB021E005A72D628ADB604FD7C5097B0BB8D92ABD2DCBB7E17AB8899BBD81 + CBAD843BB879FBB7897BAD742BB848957D91EB0C9B483E2AC8955CA91E991BB4 + 9CFB213CA44E9D89BCE8A1B42453A9B147A695B434B24A7458BB9E80F7BF0EC9 + 4F60080E0FD106CD47A25B22B694456AD63635B19614E6E785E2B3A7305ABC6E + 69349DA1BCA30220783622DBC401824BC2E36BC2D88BA3283CBED34AC22EFCC2 + 307CC2251CC32ECCFFC2D9FBC2742B064CE808F479BED370254C7234E41110E5 + E6B3402B0971300607661E42561E4CAC1CA5C24CAB4B7E2F676A8F6195C6C7BA + AABA9DD7195C30D53FF63A6CB73A39038167F6346AFF20393D341039F12CD539 + BCC5FB9E5F932D99A459EDBB255B856E40D409835BC3348CC37E4CBD33DCBD28 + 2CC8E3CBAD30DCC785ACBD0400A990EBC3A160999791223BE4C45F3252CAF2B3 + 24120703D0195D022A961BA7D91041F855BA10D985185A8F43F73F541B875669 + 82E6D027E361A29BD91E08848D5D10134E529299B20ACE42BC7C48ACD6722D1B + B2BE1F2C10712164251A43212CAB9800C32FE0C2D1FCC2D15CCD1C30CD892CCD + D98CCD896CCDD47CFFCDE0FCCDDC9CC852A17090EC0939DB6A01632900D6C63C + 851E46BCC99D6C8A67C087452357261AA14AD39D930B82C13B954E996D68EA83 + 033CB05EECC5D4201EB72A4B5E699D19690589842C88B17BD840100370066740 + AC185D149E52CC983CD1A4010799A18E25FA30B1868A817809355CCD748BCD2F + 90072F1DD332DCC2D23ACD2DFCD2248CD328ACCD83CCD22B7DCD341DD424EC8C + F273CEA0D00F58D2418BD433CD62C5C22357F1FCAE9D4C39D659BBB0B4CB0F83 + 6E5F18A613B4BF2F679E4E794F90648EF956B5509B898193CBEE7629F7A7675E + 0C347937C666481722AD219FD2166E312658AD5C191D84EBACBC0F132CDC3075 + 9100CED67CD82F70FFD886BDD88ADDD88CFDD88E1DD9906DD88DDC5E46AD09C9 + 197BC2C321CE0117D01131D60914BDE5159A2CD535027E3604C4A06245CBCB7B + 49C19D70B6911171C1002DB020DA63FB7BB6A95CCA95DA402C352A519CD232E5 + 984053195D600D1D52C78B621E7011266112173CABC69A756E110384045838CA + BC25BD911306D1AF9110D3860DD3300DD432CDD2E52DDEE61DDEE75DDE8C3DDE + EB4DDEE81DDF2F8D02632658975D0910DD05BC02480433006E4CB678416A5143 + DA471C099C5C9819787639DB001BE387DA4DDDB916A615E9724C99A193385A18 + 37DB67EB48FDD2DB50F574CAB43C910238CCA32B01C4C1632C9EA2D1195C29D7 + BD51175F099602E8FFA779DDC1B42C1067C85CF90B0089DDE33E5ECD3F1EE442 + 3EE4428E07441EE4467EE43E9EE489CD0162B0A4B273DF94D063A80055020375 + 63A078FE04784F8D2C511DB4B9444FCF6916C411997356800D9C78B06D5D6278 + 99C26AC51FAA6050AB942F277F1D0E38090D01A353077F7076534EE2BD664EE8 + F847CAEDC1266AD204F195C2BAE830BAC1E4369EF9FC6752C2E390EDE3938DD8 + 3D6ED84DDED896FEE38CBDE9950EE48D0DA9042AE5FDA0248B6667BBDA6D5B2E + 116109CFA50DE6F78B47DDF010F6E12C4AA1536DAB5A710A313FB478072ABBFF + 9CCA984874DDA3351C6E0E5B67250ABDBC7CEEE77FEEC5AD74EBF65B3C907EE8 + 5CC22C8ACEE88B2EFF8B03802DE466E313FD4148E465446EE411A0E43E9EEE4C + 9ED8E97EE4EFFE02ECAEEE45DEE3F1EEE36200376466EA96B106C4E37E7441A7 + 162CBCDCD66D61E9E5B18EC4B924BAE1E3EF6132CA6E765CFEB8B1A4E1DFDC09 + 5CDA157BDAB99D93C9E6146AC018DFDBCDBE28A056506F9DAE97143A5E021731 + 021A35F17E5DA22119FD2CC45BF3367FF3FDA882294E3D53C5E3F4FEF3ED6EEF + 4ACEE4F7FEF3F2FEE345FF026240004CBA03F67DBEE5F4D42BA24ED920315696 + 686FDCAB2105D5096FE0613E10FE1D573BB490CF1919470B6447B32D59EDDFF8 + 7756A69C6FAE2BB0BAF6D68829F27A3E3DCA0454F864094949C51B10841E2D26 + 71F1F0D04110190DFF96177BF3C44BB6130152710548131DE2221401949FEE96 + 4FF97860F9F24EF947AFF99EDFF99BFFF9A20FFAA35FFA9C7FF9957FFA2F6000 + 8D805B903C290EBF43E756CFD639DB19FCC6A61614234AE09A1AE61D770DC7DA + 158C6864E6784928FEC15C85672735E7D948A6B53D8E0D165C760FE2542878EB + 165AFA6B5A42E196D8B221F55BD79BD22C347FF3EE59FED0C2F859E3F8A1C3DA + AB7561937FF4E84EFAF21FFFF42FFFA31FFF9A8FFFF06FFFF30F082F11828483 + 2F4D23193046008D8E8F909192939495969798999A92210C011F756E135A5E6E + 75631B017161AC716D1B6B6B1B1B7FB50D0D6D6D7F03A1A563015690140313A5 + 6E65A25E5ACBCA07FF1310630D141656160C14715D7F6B6370651307E107A46E + 1009037F6D710C5621EED50C6171015D6D0DB56D5D01610C16FEFE5602B673F7 + CE5A973310B4842305ED4F1C0AFC0086A05430DE3C7B7F60ADF9F0E18C478F1C + 39C69235ABE4AC912669FDC1A5EA21056CF3B47DF0062EDC843A670230001021 + 029E9E83800A15FA7328D0A246870AFA895450D2A34F813AF549B5E9A11B1958 + 4CDCC4B5ABD7AF6031596170B0CE282F65CCAD51D70F9EAB35673E90ACB532D7 + 065E6E7C017314C2429704CABC286356AE4E9D325E0EA08D368DA0356C0DD60C + 800321AFC28513CAC019B3765F3F6AFEE2050860EF563E5510F97D1618B0E2C1 + 840B17FF6999BAADFFBB4915E58DAE77EB1EDDDFC06BA59C05DCB4BE380F5929 + D7DD6000849ACE20E4B4C0B350A19E53AD4B0D8A9DEA54A14BB907FDAE747CD2 + ECE6C3BF1053002B8F2961E3CB9F4FFF91A733A148693EE390C2E7D0714416D7 + 5CB6D88557290304F0880571AC019B385A9493C007198D5186425E40238D05EF + 30E0E1451B9C91C061A340E886291336A08A87A079A81B3DB9C4881A8BFF0814 + 42357E21741943633884DC8F10D9B61524EFC0130636BB95D61B5DBE05579C69 + A78D06646AAC20D9007E6E8873D3073AF1141550337C09E6984285696604613E + 75669A62AE19159B623471C3053BD467E79D78521407288369B64617FE59139A + 870108281781E9BCFF32462F6EFC124C2771FCE18D388AEDE7D0350D24E00686 + 1AC601DA3FFD30709164245E160E5AE69CB14117AB78F8998B17F9D600ABFE85 + 5A634006E9185B43AAF42A6590D4DCC6C98DA1C913533D31C6D8DBB2CBC6D8C5 + 712D21F7D2B42F2147DA95A168090197D419C566996D0EC5A69B6782DB53B962 + 9E8B6652E86237C20A2C54015F9EF4D61BD68D61487A969F3A718823A801C275 + 2881B770D3CB04094803D94C88693141399BADBACE8D1464BAA962100CD04018 + B70AE48F3C6D70E38D28A64608C16614D24AA30547C2888B3E41BA2A288E64E9 + 3A4E863DFEE82B6DA1B64611B1F1C0E4EBB344174DF46848CF3325B5D52A4DCF + 3D586A59C707EB78FFB9EE0C58839935D6E45E3D66D7E8A6C935D85E8F5B369A + 5B93198118EFC66BEFDB7067D249176324845602A944F40FA86114FAC1000392 + 444BC175E735011C6B34B0C1A21034FC0C1CFCB11A915B7F68AAD0963AFDB777 + B1A4DD35E237A67A91591D906FD0460081F23DCFAFAAC96C6B185D38B723CEB3 + 396DBB4B930F194941D65469ADEDBD02FFE3F0D2BE5425922E678497B6DC0200 + 76516B420F261E664AAF2EB9D2574FF60CD4A3097DF7D1878DE60B2824B28313 + 71A7AFFE820138378A66798726A8FCF234F077E07311DE4B86708C5813397540 + 876770B5390A54EE626E401CEA6CB51A8F89AA0B91E9C6371263A2930D2071AA + D05BEFA8E5AA0E5AFFC3456D90DDAE7236BCE0052F3912A9C48D681634A6C164 + 692E8409D3ACC59B8CC4627936995AD5C6C6C31EFA906B0BF821108548C4221A + D1888398539DD6C744B831E00F6611CCD432C7C25789C67E8013492C6641B8CA + 08E618DF50CC31EA9080CEF48320FF0A8827D600872C69017E0118D407A9E140 + DD6CA31B8D2BD1A9209680C8B50A541D0C64202910C207F1A876D69252D258C7 + 229FE166851F3C5E0C2739496B61A42437CC964DB61547E7F5106D66DA1A1141 + 89441F829294A62C222A45393602ACE0024568A22CE915860F34CC0D09F843EA + 04C5408BFCE16F0308C916556230CB086630285A4BAB3407AAD050A00BA000C7 + 1BC7D00506F2F29AFF4103D119E0D00B4A39CC1490FB833E34B8B750C5C35547 + 6A40DD66D710E2995078C00AD6CF08188F2335AD78337489F19A568F8CA48454 + 59CA21977632C4B105116B072DE80C126AD0853A3488101D22431DDA5084F230 + A2166DE844311AA715C0609620A5CF8D02009852D4610DFDB2E67F44F387338C + 218B0353C90712E0456FDE4463EBA06333551A8F10D621315A38E93A5824485B + 0DCA8E1FA81BE84227A10BAAA856D8FC203A03642176F6285AEFCCEA8F54132C + 611109922EB2E73D8987CF6A8DE6922839090EA3D33C2438D4AD191DA25B8308 + 578ACE60AE0FCDEB46EFCA35BCFE30A11855685C358A3502CC8911214DEC57AC + 90AF3AF0A8019E92FF1F4FE5D1D297C6458B321D515E2074B70D44D6633B2D6A + 002A77A103E012B22B15243683F6B4A4520674E2280504CC91B287341257E6AC + 5F5547E8239D094FABF16C8DEE1A81469A1D8FAC65155A3F35925658AC157304 + 8DA874F54A5D882E60BAD2BD6E7517AA5DEB6277BBDFF5EE7691202718F060B8 + 8A4D2F45EE038152283050AE23AA8B46EB52C05D7624B598694D17528E3354F3 + 5F922DAA6AB2C146706468006D9886548B2AE096E94244A1D02361C82897D34D + 8E9E165167696FC62B9D29F2C33B5B9DB41AE9D5AFE2369B649DE16EEE3192E6 + 3A57936CED6478C14BE319DB58AFDDAD6E8EC51BDE1DCF806D1E8DA57A874C09 + 2B18B08D111A431BFF22A2525EB2D4A563F888306731D36EF257A8D48187933B + B81CDFBD263119E2568019ECBA6265E3979FB34C6CD3B2190CFE51751AB66A6F + 7FA7D53AE34E48E8252E3DC5BAB4D5F106165A1CA65A61BCA5AA5DF7D0884EB4 + A217CDE8463BFAD1908EB4A27F7C0378A18FC8987E84153EF19C0C9D61A84D66 + 60DF2A6BD9CBCA651622AA4CC9CA70D238DEA897E8ECF2713780E4039421014B + 5E2D993DE8220AD0E38E3485EDCD463721D3AD02CEBBE5F0557D6B673B278746 + ED78E4892569D66BD9B0C52E0628F3645C631CDFF8DBDE7EA88FB34BEE70F778 + 011168820E32B0C44C67DA2F0340CC4DD6E0A9A2AE76D4501E807D43826A9A5E + ECCA2865405FB61CFF56E5B83040BC30B0503936E640CA9A155C065195857D33 + 700AB056194EF621DDF9DB8E9FF0D9B699A7719BE6B293607B382F0EA833A6B8 + 93485720D12F6774CC1B3D7345A7610133AFF9A2757E7344BF5CE78A8E799C44 + 004B77BF3B53C540982E172C5F733E790C2FD537480E95EA7F8FC31428F597D3 + EB69F0694D69B4BB3DED3AAAD8E02E37FD1ABF4E6A1DBCC8D4542112321AA71D + 5641BCBA102F5291D2E2EA40F20C80DC200982D76E31CA07ADF267344FD2397F + 34D0612E699C377EF190AE79BA5F2964A3ABF78951BCF5C6984E5427E31BEAFA + B66FE0B6F99C92615D27402B38B55F38BC2ED01AA8D2F92FCD38AFFAE538BC65 + F5904CB0A1438E93FF7D4045C889336F39DE6C8F2B2DEFFF89F6B0E0E16BB49E + 7CF029971AD55A7EDD9F3BBEFA8EB7BEF6B37FE8ED637FFBE0E7BEF7C54FFEF1 + 875FFBE9263A622DAF58066CC0B1CF4030C3ED2D6AFA823EF420B9214DF578F5 + 56FBEBA8AB4756C1134265601370B0010AA66B82F470CAB180BF06619B052137 + 710690552871D76174667CEF94816405715D352C2C431A81E76283A76D9BD43C + 89677DDF477E2B787EDD577EDCD782310883E64783E2D751305005ECA75861B0 + 0617620A1FD0051CB36BB9657F51877F973519A56722AD26705A564F5E477CC7 + F70966310E65A06450554EB4C78010175FD8F060BB4741B6964BFA207CCA3667 + 1AD871BF835CCF06FF1003F108F8F26BCC458225F85C3AB4131590873FA7877C + D8877E88737908887D28887E58887A48888768888A18888B388815D05117A083 + 3B08523DF8832C477BF1F574472875494819FC1721FE472C527524C87577BDB2 + 0109704B5323399A43665C6876BD267123F21CE1804B7F62811B764873677774 + 172D6C986231F381C4C520BA308782067D84B76DD491888CD88C7BF88C82188D + CC088DD3288DCE8888D7588DDA988D798883F332894D544B9B9240018789F1F5 + 799B28751CA1849F787A4E0848A4C86C4E8334A3F14B48162165A40EAD43845C + B71C4CD385B1385AFA951887B31610748124248FC5F78B0CD9861F6801CFB40D + 98858CC361822B37FF7D00D0881AB9911CD99179E8011E19927A485E59B17EE0 + A83EB58418706445F4E721BE466AA117931E8147D0D17F59278AC5F24226448F + 4803418B535A37254EC1032CB0D68F5D472D0D1856CDC746595290F96086BAA8 + 9069D890BF683CB7252AAFB011C7489198F45C9CB48C22199662399664C9876C + 931527C944E2D85929B56B1FF492F916939C884756078A01879339093C3CF92C + 30D25266E1306A810BB7A03245597B47394955828B0E8338A70395B423850B49 + 950C591B1F532873C89515698703050048F091150092A0F999A2199A208906A3 + 799AA4899AAA199AA6599AABF99AA9199BA7D99AAFF988319015DF98966F9392 + 77331BFC28557079FF7F72191767A08496B10C40E86A00E64C3B438F4613236C + 7421110207BF07412F831A49B980B2462D4B032BB1F38378A30F7F8090885477 + E6698AC7279993C90FF2A00DCF87995D49685F0900068004B4299B20E9999E89 + 9FB0599BFDC99F00FA9FAF9906727201EFA19B70B396B7E61043E8962E698431 + 197503E35AAAE6302C87976F59773D5934C9E27AA9A80C98E367CF920FC7C155 + B7E78FDCA94FEC491A55854B42399EB9F898259486BEA89E6CC89DBAF09EF019 + 7D02553524600262900615609AADE901466AA46870A44ABAA44A3A9A46FA994F + 1A9B1E90A44C8A9F557AA5589AA54BCA0505DA6E084A4BB6D49B9EC18F0F0A93 + C3290BBDB101FA85FF0C9AC12D18DA3B896434C8922CBA9070A42054B02282F8 + 90416587A231D40A01808AE3984BF5489E5845A3E969A3C0F8233E29783B1A9F + 85379F1A90034D4000421AA0982AA0991A9AFBA9A99E1AA0041A64B9F9A576A2 + A078B30FE6285FC17984F9B701D7590F9E030770800E63B739A0E26BF4403474 + DA1BB9D052DEB00C6590132CA21BA5112579D7800CF8A7EDC994D3A4226017A3 + ED34A3C557A38A3A3C24D7A8748899165968D4C104931A036280A45A9AA554BA + A4E5AAA4E77AA4E93AAEE2CAAE53AAA5EBEA015C10031EB503A34AAAF3C19BFC + B28F44089709107503323851B262FE244ED3B09C471513749A0BCCA20B49D55E + 63B864AF428A4962FF1CD8A91ADBE942ADD006D1F44608360F302A67BB789E1F + 56AD93A95C8AE3A88FCAA32B476FC1E003DE2A02E0FA91E65AA52550A5F17AA5 + E57AB3EDCAA450AAA43C8BA53B6BB3471AB4430B922AD0362689AFF9FA01E3A8 + 400D4A666F09A1015B17039B9E2D414E9BE392AEB0ABCC720BDBB04D9B72139E + C50EFF62117A9A0E25DA3A198B94A27225A557060856A8D09A9019E86C268B5C + 5128822AFBA8DB9A31D504005F60064CD0021A10030430A4497AB38BEB01416B + A4417BB392FBAE8CEBB8963BB990BBA48F4BB498ABAE96DBB8930BBA97ABB9A3 + EB016930AF1EB5B44C1B1695088A41C8AFAEB8AA558B0BB9C0974A4325F164AB + 7C03234AB22CBF41FF65BFEA69D5341160652C73AA0F7C6A9862F5121FD21C7F + 19ACACF2AC222B955A95B7374A72399AAD5C69912615840C20055FF0053ED002 + 2B30B343FAB9968BAEA43BB9A18BBE9B3BB49BABBEECBBBE94FBAEE25AB9959B + B9F97BA42A50692C7069AB1B1FAD6B0AFE3584B0EB70C1194C5B640BB46BBBB4 + 11332BA5BBEDC9B0BE0B1C54F6A177B3311341409144B1F48871C96A956FEB3E + 68E15FF5988A720699C263BDD78B3C2CA6BD14699100941318E00366E0035B60 + B8E09A068E5B023EFCC33EDCC3920BC4445CC4462CC4420CC4486CC44ACCC43F + 9CC4471CC53EBC04FDCB6E9218C060E17E09117F09E62244D83291211225C1C0 + 0D4C8FC817C1BA8BFF76A5E12474711275937453D40EBA9B9349837146793C5D + 88709D167B208BC2BC35B2E8C9C22DBC3A2FBC95F0699152330018B0C852100E + 3ADC045CB0C4685002933CC98E6BC94F4CC9928BC9419CC9979CC99CBCC9433C + CA92FCC3987CB9981CCA9FBCC469A002AF745E589CC550241857B821E704900B + 380F8A6372C4B1120D8CBCB7CB64D764AB6807784EF24FCEB1298BB131C9C71A + 38B2BCFCFA8ACD4BC2B177C2758B869129C8D65A6D852C387EBB564CC8C81810 + BE3E20031A40024D900668A0004EDCCEEEFCCEF01CCFF23CCF5CA00222C06EB1 + FC15168074A5904BA0C675AE182B3634C650C2975202723B25C11761C1FF9472 + CB306FA8736100B6FF757D6A760CD21CED55C2D18B8AD77CA878ABCDDB2C34DD + BCB2C94829B1B1C8286D06E130072D80CE5C50C94E0CC5F13CC9F37CB9ED4CD3 + F3ACC9335D025CFA4AF69ACF5CE11716F23007F8CFD929607F07B664EC2C7887 + D046B5B56A9C11FE6412282119BF3A0E38711C10BC325A58D1491929162218D5 + 1CA87E7C862ABC8120DD67A331D2248DC8268D017E00D78BFC0507F0057E70CE + 31C00525A0007CFDC3ECFCD7440CD8ED0CD8EC0CC484EDD77B9DD8869DD8828D + D88D7DD890ADD88E5DCF4447057C07D4926001ED831819426FCAEB8A1ECC1B0D + 6BD08C2447CCC439AF50918267D588310E9C742CC89B8550CD60B2F621A425D6 + 5C320F1C3DBD89C4FF8BD40AD25EB7D6DB00C3C8E8D69482D23E80D21800BEE3 + 4BA953FAD88C8DD83E5CD8921DD9D47DD8D31DDDD06DDDDAEDD8DD1DD9D9CDD3 + 4DE0D3008CD99560057B921F9C84ACB008DA7F47C1657CD0C1684DC4EC0AFF84 + 6D233119AD1D549E950DBA50170E99D0B4DD85FE1007B46638ADA6DB65BD71D2 + AA86698D4F843CDC86ACADE06CD25F00D771BDC87A00BE07E0073280CE2A8006 + 7DB0CEDADDD77CCDDD7F6DE2279EE22B0ED92B5EE22DBED72D7EE28C3DE3364E + D82BDED3179005E67D09217064177285090671B5EDA028B61B4653C7C2DC647B + 139126876D5A3400FB87D59E85AB739A347AC353DA49230DF29709940A0ADED1 + D47B3B0F0EE1BA2CFFE1DEBCA3884C0A97E10617AEDC8B6C065FB0057ED00239 + 30022AA0CEDFBDE728CEE77EDEE780FEE7825E0290F8D33D8E1B61D0062DEACF + 41C28064EA3BBD7D34F330DF51B5524E8EDF211112935185FC0DC289640FFA28 + E05BC8550CC227D3D9DF647DCD679DA865BEB7D93BE1DBBB56DF541367E0E6C9 + 1DD7192E0572BE054C900324A0022AB004327EE3C45EECC67EECC89EECCADEE2 + 3D8DCF87CE099EC0275BC28A8E4EA6E8546D664C944D27559C93B21B91E9E02E + E595E1DA08182CCC2782B3B24B99E8703253EA09F14670503B01B0060B2E771E + E6DB65DE670BDDB76A2EEBE5E045F30E0107200518A007CA2D05CC3D071A7003 + 31A002C3BEEC101FFFF1123FF136DED330E004F7FAEC63D1007020D657A5BC47 + CD609E774FB461A295BEBB290BEE1CF1112EC54D6E54071B1006CAD717A22125 + 0C27EA528BDEB6849CFE4C60F51EAD63FEDBC08DBD684ED22C8B16FD93007010 + 028D35F0058FD271CDDCDE7AB8C15E020860EC57CFD759DFE25B7FE35B7FF560 + 6FE35F2FF6271EF65D5FF6CA9EF55C6002AF4405CFBE3B9B5652E4E819AF78C0 + 5F0CE95679F24F0D321299E92C3F93FE46EE32BF15A9D7EE5B4B70AAA5F3D2A9 + 19B5D305D1C9DB5399EF7BCBD62BCBBD81D90000606492E2056650F0C99DDC08 + DFF9857BB8E9FCF061EFF5647FECA7AF0067AFF5588FEC673FF6C4AEE33CFEF6 + 901006B50E9808E6FF1F756FED81D4C149A9F780746670419C2C0F3803D00DD9 + 1254F4D65545E2CC69AC8032A3F83CEF10A4C13029DCE0D5DBEADC5CF46DBD56 + 07D6C58D30166D001852E007B88ED2BAEE03E37BB826F0D27DC0FA0830FF66CF + FAF65FFFF47FFFFA0FF6F30F080A08820883868288878A898C8A85898F8B8B0A + 5C262B1745009A9B9C9D9E9FA0A1A2A3A4A00C1B105E5E6E097F710C61B1B2B3 + 610CB6B7B8B9B916B6B1B7BCB6C00CC216C014010D6B67CBCC03CECE0970106E + 5A5A106701B621DB00DBDE5656C5E2E2BFBAC156716765D565090D71710D6770 + 655E07F75E10637F01F0710100FF0504D8CF9FC18308131AA4C05060833F6B22 + AED940B1A2C58B16FFD70CA8E3E6DE817C03DA5060B06393853803BC489182A1 + A54B295FBE1C6022E3460C1568FA3482246967CF9F3E83027534488150A15C54 + 5CCA52AAA9D3A75045596893C08D970975D6C4A140AB2B2D7360C3F21A3BAC2C + 5906C792395BF6AC6D348EEC06741969C18AB710E0F28EDB6B76D7B093EA0E68 + 2933E65D803F63EAD4F3986FDFC17E90FF299C4C1921430AF002B4812811A367 + 8C1A3932D6F78E018B4C9A2C0480A3E58B143F2E639BF9C2A4C58D265C0AE9DE + CDBBB7EFDFC009F116FE5B3871DFC7811F525042298C2A53A24A9F0E8A9B5374 + 1FE092DEDACBEBD7B0E0FB921DFF975718641ADB0E18C39E7DB469EC0AC3AB75 + 0E6F5E707BC99DFDFF552CC0808E8DFDD1853CD2943141355A4CA00F3FFE44E6 + 6065104E7659669B4934D167186E105A47F86CC740062C1861D21E70B8F10506 + 7AB4E403062BCE465B0B39DC94131ABA25179C728644A29C8DC52157238EC6F1 + C645132BC02022754852875708D785D14002EB9401C71A018C048B77DF85A7CB + 7EE491074B3C1FA8D75E7BEF753458615D00D44517718461817DF7E5A79F7865 + 053006350A8EB1C11F1FD053861B6E4C20A81B0B3E26596411267AD084FF54D8 + 59869F8536C168856523820830EC50456A01AC5186192862009B8A6694CA0413 + 1AC49042097DE0E8AA0BAEEAD6AA72B0CE8AA3ADBFC11AEB6E955CB203934906 + DB5408B030E05408FFAA7D908A820394762596596A295639C100735E03618EB1 + DE98EDC1510704935AD36C005D6CB6411B71BC799F5E721253AD2D5D54A5851B + 758CB10C94135C05A81B7F2E589040900DA4E8C05B35D4286711411AE9461C7E + E4E108226400C31D59301942181B94E1DAA82A62208519F7309103092A7061D4 + AE28A7ACF2CA29DB30E452C2C61C0A5E14B4B14103FD70F5A628C83600872A6E + 4C19402DD076252D785DD20926B76324E0F4D3101828581D1F14A4590373BD09 + 679CEDD2C90B55074AE9343DF608A62FA01024B0C1BF87B64DB0A28C6A86F085 + 0A5FB4A1161D56CA400123E820C2052C44D74D1872D4F1851F29C6E631C83ECC + A1410E2670D16AABFFB52200EBE596675E88AD946BEE79E59863CE79E6A2CBEA + 7921BA22606BE8A49B9E3A022F3F27B8CCB40FDE406275C091C0191BA43B4A08 + AB55039248456379F4B4493310471B1F8CF9F4F3DE5A35F51F6EF6A2B35DDBAC + 8B5FD76315630BD8F3C2117DD91E993D413B541A8AE8DB89C6FD908575833680 + 34933A2CDFDE23F0FD370CA8013095E12B5A51C71667862DC0E8264B50C0E458 + C6C0063AD055B12B49ED6466052741C923F3CA4A1CAC209536B0E61E41A31243 + 8A67B4E36DC96B65595EF312D034E88D0D3E1F4940173868B1BBDC457BE1E0DE + 3818E0C149110A86E5C3E02AE07006AC59AD6D6C631F65260490F73D2A7E15D1 + 4802A691379CEDADFF0058EC9BC48A60310BD8010E0790428A38E6310C98EA71 + 2468C21254D73AD6B9B18D707CA31CE348C739DA918E2E23D2058E3441245981 + 01878112DECA879533B4A14A0C005637D0D28601408052FCB012096561C26905 + 03172A6CA10B75A79803C53000D5B1210E73989F6184E37B0998D4F9A8810F41 + B9D20BD5381F116F4690242A31424C44C6DCA09891F981AB8AAFC022DFF8A603 + 89F16007D1B10205DE700033F8C007645C49A97CD002DBC4C0649DBBA336EBC8 + CD6D7AB39BAD831D91B0C0943E524735F3A8C72031C8AF7AF5CE029BB042A74A + 543FC1D0CB901430CF246751C91392074C9B8CC65B0285B7098C01949FB061F6 + 70D8AEBA14C34970FF085735F041A86F41206A9E1CE2183E60C45BBE2D6E8E4A + 182F29A291120D1224A511A64A21664C3668220E6F3810A812F792D96CA13631 + E2C21AFBE0829E5ACEA7A1E3294F81DA53A1F6F4A83FBDDC5091EA029E5ACEA9 + 4C251D50A17AD4A62AF5A84B2DAA55939A941C5CA09CE67C0AB20270865404F1 + AC07A0D7075EF1C73864679D8C6145EFBAB34F5FF4B31C5E42C61904AABBBE8A + 4F1A5661C719E2B009851A766BECCACF29E3B0818806D10B521AC0199C3186E8 + C5B20CB91BC01A8CB83E8F4AC8607283DF4835C4304806337F59CC623133A589 + 10C4810E3F73A61F02C8A2DA9A01A724CB4D37A11A47A8F2D68DBFAD6370E538 + 5CA0C6D1A7080083FF738CC0C1B096825801C84E3DD15A3E7A0D604F1BD8C874 + 315848E2D5959277F58BB5E2F08779F0F5AFE2FBD6811204813584A1B036EC86 + 61192A8EFBA0A50B652D9B165421258EB6A10DEF4B4CA05C5986B49DE10F87B4 + A5672DD39026EE526122FDC31F367006D1E0434A6BE8421854CAE102AC96629C + 0223A860434633DE1646245B421FB25AD516BBF8C5308EB18C674CE31ABB7809 + 96B880049D3B0A740291BAE54B5081A36620B872571F6B6BD377C11BDE4BF6E2 + 300338EF5FEBF0ADC5ACC21DC66A6D7CB57C43ED8D432FE769EC3AECC92F387C + 402498F94717CA5BA0F50E51B33853F082FDC1C40169E889917A9484295C2276 + D6A18801E83087FDFFB645C12D5363A0EAD88A3EF685C63D4E052A362A516D4C + E9AA26D5D295CEF4A431BD04157895074EE07142C3815FB302F9D4A716DEF9EA + 90800C2B79C94DC68531BAB081CAA237BD54862156B49265C3764294A3144718 + 5488AFFD8A6DA3E8EA0E6634B386CA1679BFF4DADD9E123C67062FDBCEA2C590 + 48F734E10D1D79770D103487B598A94D01E01475686689F5009346A3EA062648 + 41534FA0E97ADBFBDE9556800A6ED002502B52D4DD20EF143D495D23A3BA7C57 + C9D70408E598672D993E77B51605BAD06C6F798BCAB9AB72FD58D1807C7279CB + 1F472CD726FE878D1419B2AD7E08CE0AF698357F20011C59EFAA13006736557B + 21A075E2B6236591FF3DBFFC97F7107266C53DE862EAD8DC0C58C323A1F94CDA + 7ECC99D4D4800914C8E217D31BDF34BE3AD6EFADDC1B64800AE606F8B9375087 + 7C193CE80B27DFC1E3FA27B37BE1CF557A383FC36B1E6263FCEE55969E35B051 + 971AFA3AE422C7CFC45FAE4E63C321C999015840B6020F9BED1586ABC06C023E + C00F39DF12A40F8EDF849BA718F209F9A27520FAB8597A9AD478F00B66800D4D + 4725852D1810725CB0411FE84D7B17D4FEF6B6CF3DEE77AFFBDEF3FEF7BE0F3E + F0876F7B1BA4E0064C6041A8456D8130FCE167059F79D3A6A1F654471BB0780B + 219BE46ED77E8E9740DFC2FBB7027B8009C0817AD83BAC75E4AB7E70288F7926 + F50886E7128634ABFF294D019950B96A0D17B447F666F8576D97B16C21453710 + A60C30576442C42F98257AA31731A7C1245310006FA0127E803802E4313E807A + 3E20031A90462A7602B3277CB97704C1D753B88782BDA78226988224486F2DD8 + 7B3138832FE80231E802CA950319C003FF664E71B006FD87566F07689AD12763 + 866A0952079AF5739372656B3312DC4777681100D93545E2D7497873266D9048 + EA771780274ACDD7057D223DF8403536677FB5544B2DC7668B710FE7A30F1FB0 + 0101C87897C74405688019224551034B70157969E3801D466E3C80741FA005A1 + D2121CF33130511B24106F36700290687B91780247407B952889B407899A6889 + 99B87B974889BB37FF8993F889A3A8899F488A9D0889A8D8752D1022CE750A10 + 70764107016BA5351640017F2048A99627E7D2066BA08B83A13605237711C70B + C4E62D1080777F620FE1D33B34D485D0B850F73586EB242EE8927869988D8B47 + 806B403666B30A10000763B006086679036387DD8667DA363F0A1844D0168E67 + 008882E637170003E564016B30011C382A192805E5474D230369F35683C4377C + 23F87B0749900A5990BA677C37B0022C1076B5435ED08756195435F0144FF1B0 + 5758F858F4A22709D60615563601D20FC41871CA5372C8A88C64A820559348EC + 178DDEF06BBC800CD4E81179E20ACBA68D3C994414470FFC1228FA923B1B558E + E6884B0D612ED916FF29CD430F0417646FA83B1FC06106204C55894557B952AB + 851A0CF0078FC41225E61227F6812A00069B789668898968B9966B89896AC996 + 7019977279966A797C10F92B1334063FF6581AC400CDD55ABC40728E345DE173 + 5DFF95263FC921F302010310490FE770DD271635F98B57B88783E40663D0066E + 22937F575880C47F04157484517987D2933DE90FCCF3344E7959E1A859D43680 + 04D36077485278A821679018ED8841C69636DA3295F228685AA463AD950560B4 + 3117181B8C8601EF1639AAA30673298ACFB9896FF996D1599D72F9962EF39011 + 3941DB15645A90151430935EA8097F845F25A20A43746087542E69928B0D9384 + F8C47DD122166120FF92D2107E1755060A382FAD4001E9C799F1E50D9F493FAA + 202857E60AD8689AA6999414011153044B41176D94774875D8787373213BA721 + 9C477E417615927706096395BFB9522CC5035C040030054662A43826764631A2 + 020AE002CE699D345AA3367AA327600360402499D28349726AF4A21519C9659D + F04736190DBAC33B58532E09861847281884D171F5279F73071EE4B511181735 + 4219A187F70A000A7200704AF3B4188B4965AD667301A3A03C7910F8E78B7A59 + 4F42268E1C9526F0C02895818E7796A15114264EE98E97C56A0310875833A244 + C75230C0031C244F09D04C3EC0121DB31207D06832B0028D287B338AA36B397B + 98BAA9D609063150FF24C8243340F69DBCD65C87255F39742D0DDA000DF05F87 + 79187AE97951DA265C517FB57A9260517F149718C9A8A54F697EBCA6355F6A1D + DB708B54480F27058782EA206AAAA692B115E482184027186F286D145A3006A3 + 10B0B93CE9A8A71A1A659DD7A11E5A2F1F50AE9154005599AEE8BAAEEADAAEEC + 8A45F4C803E449225ED068A2829C1BB8222D902A5C70A99BE89C007B0297AA06 + 044BB0027BB0015BB0086BB09A68B0098BB0070B89012BB110FBB00C6BB1D209 + 06267003C2193316990F6B65313179AAF1A43C02B126AEBA268851076AD70EAE + 30A5B62A9FE0710C253745FAB98C5938445422ACD933ACC80248D8E28DECD00A + 6BA286CD7AB4D8BAFF6CD29A2F8C214BBB538EED83A74B79671F709BD8D7A1ED + 54941236175794952A9595602BA2C2E437875A05DBF0834B171B19582A33912A + 2A900236A0B0131BB115DBB0764BB1189BB775ABB7030BB114FBB77B9BA34DE0 + 5554303B488256F7940DF0058D9C8017E3452E00D6066B16AB83C49FEF00B303 + 78AB8FA90B4598808002A16E9836AEC085DF701F8C5BACC3B6B2D47059678A8D + 8A77B40A8A106B66729E078E7000670591B909C1284AB9731151AEB759264606 + 59F502A250EB26EFEAAECA9BBCEBEA61FB13AA16F0071A4362F74A2ACEB4AF24 + A02A7D50B0DCEBB005DB01DD0BB0DE4BB0E02BBEE41BBE028BBE72FBBDE39BBE + E6AB06E5EBBEE14BFFB047B0A31C8BA8C182566520176160AA3E1B2753C89E93 + 6B6A505A185C91B99721B3B940B3BE64764766486ED277A3148D62BA01038737 + 9095366B70ADA509BB1EFC2F7AE5947CB85FD53AA1B99B668B52A707B3946B50 + B5D050266AC75E9317113863250C10B65829B6CDBBC35E4B6E7869055DF0482C + 729C8BC622FEB805731023296096E17B04F3FBC44E3CBEDD5BBEDC1BC54F7CC5 + 567CC55A3CBF7DA0B11C4B05F97B56B4980D12ECB3DCE0B8689178B743C06722 + A5083C42B86A3DCB935D1CA15FAB903B1FD0053059BADA038D7F347850C28CB2 + 745D74BA6CAFFBC1CD4A6760828CCBE87F728A606C92446FCCADA2F5BB93E51E + E2B38742D40E07C6FFAA88040CCCBBBCA29CBC5A042289A4A807202A34D512EC + 9656480C028D98024E0C041D40C5E45BCBF09BCBB50CBE54CCCBB97CCBBE1CBE + B6ACCBDF8BCB4FECCBBBCCBEDC9BCCBE7C04FB76013C78B867B5BFE84217FF69 + C6A77425353306651064517AC06F9CC0FB640EC730207C82ACF6A4C138B3990B + 35C1BEE6B8714071819CCE6626205693A6888CC899C12767B0A1EB64BB1B752E + DB18CE7293A7544B59EE01C37E662FE5C8159734CA101DCAE83A0225BA034EE0 + 5AE9A638FDC822CFB4AF4F206FBF4CCCC82CD2213DD2E71BCC247DD2254DCCE7 + ABD2BDCCBE28EDCB36D004F76BB85081B8AD46A1117CCD66ECB8C9C2C6DF6CAB + E1ACB9E31C0B9861FFCE0D60C1ACD418A55117A3D4C7BED656D812C8D5605D1B + FC18F99CD504A166AD6A93F404A1EF288E9B45A7758AC0DC9AA71171C94D4326 + 364B3E58B1519B353465110C06A0BC752DD1115D95862A41555081ACAC07ABEC + 315FB00518200339F00465790434A0CBB8BCCB8E0DBF8D1DD9BC2CD9903DD996 + 2DD28E4DD9992DD98D5DD99D9DCC36F0CCF23A1DFA3B255DBD15B5500CE0D0D3 + DF503365554FEDE0C6434DD493B49376F6070FA18B6F27A45DF6D4797158AAA1 + BACC784F0282D55A9DD50D3210F20073759C850BD79A1B6C73657DC0D14AB52E + 9CD0DAB21E30A7770A52CF354C27798DD7E2EDBCD0BC29AA1105AEA107B0D18F + 30E14C8EA3C471DBFF07CCCCD8235DDF986DDF1D7004F85DD9248DCC9FCDDF97 + 6DD226B86F194006CB77D367C50A9B25B95B6D253C3DAC7F741E810142EE00CE + B34DDBD0726DE6B2270FC1CDB0647E1BE09F4BE2DBEBA250E140010D30988384 + 15E3D220877CDC1FEC36F1CC194C988542378E58F3ACA83D6CD856B56ADD1E6E + A1189775BB020D71E381AE775DD7E99AE44CBEE44E8EE44E4E6E54106A0C7027 + 2772AF64542A2F12231210B71D40039B1DE6623EE6645EE6667EE667EECC3100 + 2212D914A5BD59AD9AB226694ABF6DE24F7D43766215C363E1B35D3C0D462E0F + 71671CBEB4E1433DED4CE2A6AB17CA93E2A6C65E8D09C2301EE95B0DE9D16A72 + 04078ED2C6AA0C5EFFA7D19AD6080DE4CDE06C82028FE7D226D45216E19DEACC + DB0414FD37A8410172602219F81204845B2A6003684EE63850E6BB9EEBBECEEB + 65AEE6051E15380DE7FFA5E9F8E7D0A664E7777EC63C749B0C9D33491BCE197E + B20F918E1F3011B85D72E052E85C88E8A6FB0DCD07AB4097418D29DDF82CE9C7 + 8D445CDD27D37AE3CBA0EDD4562161F2E9CFD0CF555B59D3008FE598DA5ED3E4 + 501EF04A2EF0003FF04A5E957FC3023BD01F2AFA1A58DE122C7162B05C9627F0 + E5165FCB608EF1999DF116CFF18E0DE6201FE621FFF1227FE623DFF117BFD929 + F0A941D0E6A3F0E671EEAA87897F727DCDE0BEDAA784C2927CE1704C0BE5BC79 + E51AF40983602557FF7609727EFD7BF3758E17B040850F9A854103682EAEEE54 + 2F309121CF0662C715A53BF632D67676DDEA2159411FBC54268E7268EA97441E + AABEF6CC6BA8857B6E8BBA31C8E9312B712A8F63022A20A31E8FF21CCFF1BB7E + F21A1FF27BAFF124DFEBBB0CF8252FF87CBFF1F9AD02961004074E0AC5DEAA4C + 2AF3C8FEC94EADF4758EAACDC7F308EC1569A10CEC2159FD3CF49BA1E258B101 + 49AFF4D9638CF0778443C451945EF555DF360C21CF55C687677351728A5D2EDC + 16CC80EF69DD4201CD264EF6EF079FFCCABFFCCCDFFC598429AE48014A772263 + 34F731E1032070D82AF0032700043420F838A0F8E2BFF8E30FF2DF4FFEE85FFE + 1D7FFE82CFFEEB9FFFF136F0F8912F0A302FB9327FEC715EC8A9FD9FE00E0821 + 2100008256160C896114718D148F90916193946171017F1F0363630367671F6B + 6B1B7F6D0D0375135A13751B615687B0B2B3B3822116967F6770655E07075A6E + 70670D018D9701C9CACBCCCDCECFD0D1D0718C6D6B1F6709106E5E5ADE5E1365 + 657509A01FD867039E9FE6A1A2679C631F7F5D7161890C8889FAF91606FF000D + 140038F05F418104131A0CA8D0800E111960ECB060A54D1D337E30F8C0C07123 + 0633BF7CC8D04022C69213345276A0B1B225CB972E63C29CD90187CC9B3473E2 + DCA973A60D132B2E382144B468D15F487FB949B0A6419B2E6DA24A9D1AB54B32 + 0AF96869DDBAD582FF57068B1C451A0BA9D2A5066BD27532276A83D35310544D + 80E30A1645AEB442580913608336375A7E791176E68FB1C3C8A4295ECC58DA25 + 645D22EBE235C1173070E3E0AC65D7EE9CBB77EAE6D5BB87A874BED35EFD315C + CDBAB56BD64D46E8C870616296356ECC98F1E191A36F1F5230F86991E3099823 + 2973265FCEBC79F3952A5F3A9FEE1C3AF5EBD157DA48B1224815A3E00124455A + 064ED3A754D337706AD5DEBEBB78E3CB42B4681259B2663169E2E4E95CDBB767 + A4B24A2B14D8259F5DB874B14602654C8054307514664C23873566E185183E46 + A135DAF412183013B801011C09F4E7D967A2A488CD1AF46085DA8BA57DF5DA8C + 34CE58806CB4F160FF01000CBC919B1EC275E49B6E5F30415C0C2AD8909C4BD8 + 353953744E52C76494CCE1201D0D3FAD80C550E111359E524CB1971E55EB5595 + 0C35A45961C8815DF1031623D4DC470125717491C9266BF9B7815BA604C80D2B + 6B14184B7C7AE112C0821058261804096C500F85896128E9A4D34C7849171BA0 + D2CB8321D6A1195B29869A16284D8D06238CA931C0100100B1FA8FAB06C00AEB + 6BB3AE7623442C141102030D9461867019F9C6916EBBCDA1410E49AA41031054 + 360945B3CC3D0BEDB429657981115C86F7E501E59D07D598E04A7555566CCAF7 + D5228CC8F9C82475DEC91F5B7B0258C79F75AC1107457779D515031428A88D83 + BF68E14519097CD0FFC6999426ACB0638C341060191F8258DE18A48A3ACA359F + 3465CC3DFBE0C34FAA0CC451E3C8240744C0AD11F1E044165DC0718014C109C9 + 11CC071429430E26A4801CB3D452CB3373CCFE1CE5CF42370906505850614597 + DB2EE56DB863AEC75E23A4E95B2E57FA542227BBFAC1936728F19AF2012F5E78 + 01C107F75A6DF52C86FE31001CDC041C4E1D036CD0C631152EACF7A489510356 + 1C70A9F2E0381483DDD606A278A6B18BA6359E1A7D01B4D16AAC94B36A79E598 + CB3AF9E5AF6E4EF98D3AD4568513712470C046C10AEB83195FF8606471292C1B + 7472B3A7040510CC3E3B7BEECBD2A0BBEFBDEB8E3BCFBFDFCE7B4AC303CFFBF2 + 40141FFCF329E170FF74504630FD65B762420DB555C66005DFD5B43CAE089C63 + 718D96D7268EC267031F3058F6D971F483202C6B3280C918F3463C010463688C + 77A47B0B20DFECD385F671E343102AC707F6C440C4B1C37F1D6B1C6ACE1500B4 + 94EC821894CD0560C0030654A10110F842CCF4B091126AC40745D2400CB86003 + E4C86E3944EB5DCF902743A0D1AE77459B4E0E9D23B4A3E5E00259D0D6979C96 + 3DED69EF5155FB1EF810343EFC58A2826979979ED637B60699ED0C0148CDFC64 + 9188BE304870C07043841A80A6B03C468068CC903D16E1C5B85826188C3A83FA + F694B88C919171A78A11E4D03280CCF9F17280FCA32039E747038C600410E1C1 + 77BA603A29F8410FFF4012964676D30215E66C670E68DEF036B949E36912779E + 0CE5F03C993C4E9A5276A034E52739494A55D2000C29B8C116AA67946D610F3D + 460C5799DA33278FB1498B6CE3877D247196287E6D147F680054166445086051 + 7E6A430405BCB8A9030C861C0673CF9BF086B0347A331A7E63A35FB6D18D3092 + 438E0CBC063642510C1775EC9DE2E3CBF9C6B01ACDD57346B5AA556B5C558002 + E06A078C904319BE1049497EE40B66785D0C5260031CA83268B8C3A1447737D1 + 894614A218BD282A71A8518A7A74A33C3B420A7EB883A579698861C2652E8FD8 + 1EBF2911418F8B29BE62DA44485CA20D1B409F7F90A94C6B50E68A59D497DAF8 + 85A97F09866006DBFF183ED0F5BFBC7DF3A988B98725DA30B66D54C61B222AC7 + 1CD3E209BBF9CD6379A4201FD531C8B206F2AC66FDE3C91E72813B8421045D08 + 214752373322B92E0724B8A4EF36894ABE96F2A2A7FCEB4307EBD7C00216A37D + E564075210831550E128D7334F11570AB55D06A0973185A94C376B1745D4E789 + 3855CB00764A8A9E32B332CE0C80FC0EE1154B388C6C8B1AC31FE2671ACF3EA2 + A90084AA008F61536B8C010E1028831B54914074220E1D6BB81BC724E8B83DAE + 6113EAD01C5A3B47DDB2766EBA94ABAE21457001165481011B80C0CB4C485E0C + 48C175C7CA590F3A004A87368FA3B973A8F27CE75EE139EFA37FB5EFF34069D1 + DF7D140AF2854207FF6C7083DA9C743C4454296575E994A74CA86AE1DBAC4C59 + EBA6BF45CE98A375476997F9D3D402F32B80D314C0069600323200A69E45179C + 20A5DB34C6891101B0D3077E5B876D3408AB7174C7271678373C32577CD33C1F + 74FB4880221BF9C8483E72AC92BCE4241BB9C94A7E329211998120EC201F1B98 + 407032425798B5CE58C551C1098090492840A1CCEFBD9D9A9B0705256852CD6D + 7EB3261D606636C379CD66CEF39BF3ACE735D319CF727ED69D5FD9581E10C296 + 9255F0828D1899F684616D128E344DA579619D6A3899CBFC2250572B4D87CDAB + 9CC16854FCD4C45A7C8065982BEE668BF556C6695A630009006E8D857BD5FD0D + 23149A388357DD79FF9A77F6C3B9EA08F600D04AECB4165BCA952B7221717401 + 455A600D6538C0AF84151C9899410A66A8240954B0B340A779AF77DEF39FBD2D + E834DBD9CE75C6339FD34DEE76971BC03668EC0EB2D0B4947E6BD1B9949AA3DF + 23E97E3FEE890DF8C3A82AB6610EB9B10C0350ADD5C072285E70AA0E1F50AD2D + 0A55E153DB94C5B95DB585C4729619D7A1C61008B9380EB8BF12B5C3ABCB0D6B + AA2EE12E75A463D84886B29367DE6499CF5CD9373FF28D3290011650A10B5748 + 801BBE3057837EE117DA36C10F68904934A359CF746EBAB8A7BEEEAA5B5DDD57 + BFDDB8FBCCE6A7A71B07F16E010CB610D9A7E17BA596BD442FC945617FD3945F + 37E5EA6879BACC31FF1C7C0C5DE0345FC6E606A49078B616B045DB7B6DDBDB62 + 5CE3927A71BBB2010790873CB8C3F586AD3921C7526893B9BF6E6D1CDA20F097 + BB3CBA99C379B28F2D7ACBE1BCF43547B6E90542659FDB4F0E5A28EF46BCFCE5 + 231D61787F3E3399751FF5DDC3D9EB6676BA9C9DCEFBA9F7DECFBA07F4EF7D3F + 6791DE60054C40A9D9CF7EF6EEEDA3ED6E97293E363F2A6426332A99CADF52DA + 90262B1035400083D019EE96F9499B9A12863F63C6113F8D3935828F0970FCE3 + 836BC555308AF2F4707979F46B2183169A206CC296730AB8800CD88046D6046C + 750701100620740018A007741524C0B1054C80333FD05064E600517766243882 + 4D5782C9878226B8FF7B27B88226A8822C58822C1883BD678222150337D00264 + 471E89766FD48776BBE408CB957D9216329C974C01F707A5D000E10718E3F768 + F9D22FE8173004935C13686A9BF54EF0177FF3477FCDC071153463C0250E65F0 + 78B3365CDD20460AE428B40556F0F41546C8559DB00E09E8804E66737698874D + 003A11910521900563700018182CBDE1653E401C79153B22C88222D888357866 + 22C87B9058838BD8888C688951E7888D98678E28892DA88999F867DB610239C0 + 04470726D3F783F8C63D68C2694448537012634CE8167C247E09407EE4C2701F + 900A4715262D9544DA274C2A760CF2E7855FB846966027D9007264B87FFCC70D + 035307FD138029F7FF63F832551B708008588704800246E68D49068E37278E47 + 268EE4F88DE8188E315700B321115910077CE0051708245D2605ADC304E9A533 + 21088AFCD88FFEF88F001989A1289001098A67D6013F600224D0023EF00BB7E4 + 83AA487D4AF58AFD9608751270A6F05CB6888BF9B27770F30B25B740DF379112 + 46785B488C88618CCA2084C998298DC77FE2E08C90E7066E508605D34E60658D + 202664DB888079F893409973E0B8731740063BE00471151C91D41BE6F50B5B60 + 2C316002C7E18FFBE888558989A0B88F57999558D9749538895CC9956706760A + A98307906010199140C81EDD338414A97D4F940CBE952807300125E63DB0C070 + 6BF09175392297A6FF4CEE51914BC554B8A59262510D2E590764D88CCEB89871 + 849398A7479A670D9ED793C1D68D98E98D9A898E9B59649BF9999C999998E999 + A2D999A5799A10D87359005E13803A0625243E602C24F0043F700435E000B799 + 9BB8D988B72982BAD98FBA199CBBD99BC3B99BBEC99BFC289CCA699CBC09053D + A0020B69060FA9961119190FD67E6F0987E8D2176300317509070DE0229DD570 + 7D674D045331A370308C538483797114E254ABA67817F636B3E698321993D864 + 186BE76BFA205405988D96B98DA4099A043A9A060A9AA439A0079A8E0B9AA0A2 + E94F5A7205DF7506B9E1078F645030C38137B35047E088C4099C0519A222EA8F + 1F8A9CA0789B4760FF0231D00258606FD4A98A65723097558DD909329BC777E1 + 3006E1998B21B3017C3930709061D7C02207A34D1E138C29E69E67D4628F6153 + 32166B30598632B97F9E220F07C331031853AE2577019A8005FAA5A709A6621A + A6644AA006101BA1C302F6F3077520421788A1BAF13A2420014A529CCB79A776 + 9AA778BAA77ADAA77CDA0329F0043A480693F5A28B16A3ACD88AD8992A8CBAA8 + 7F8329BF550E6D80978710327F207482210C42EA1FA5D0525FA5458D7A6AC358 + 98DFC49288B98C8A699F530A0155BA38599A79FC524139D5A5021A9A605A8E65 + 4AA6B8EAA0B71AA688740158700757D005141A33BDB111AC738FF9C874BF99A7 + C7F9ACCC499CD26AFFA27E4AADC209ADD38AAD0E80038C151474D05386FAA2AC + 088C5F1199036891D6C0225D40A91679A9D1060CE5317789C3530D560FEBE97E + 491A7F29E94D65848D63907F221793AB1A7270A0191F500C581A9942D52FD9F8 + 09B4EA939F8902121BB1043AB1167BB1129B9919AB991BABB1183BB1DDF8B104 + 201BD07707F9F0015A705E453724C0C11BE9650364769B49E000495003367BB3 + 385B03339BB3344BB337BBB33A9BB3426BB3335BB3439BB3407BB447CBAD4011 + 048A16AED49776FBC96F84F73139991A7CA10C14305414D000630018E6347788 + A34EA1420A453A09FC063259A3622BD685097398AEB606F813A5523AB0E43000 + 56481A6E3841FAC0FFB0DB5899013AA6829BAB835BB861EA8D28C30271B0031B + 50072F438F32F3115AF0053793333FD0013C7BB3B869B39BAB9C38DBB97EFAB9 + 9A7BA7425BADA37BB34AC0582D10046909B5AA98A86E59AEAFAA47DB84594CD4 + 0603E09D1022B6C775229CAA4CD6C776A18A6A6D0B9F6F2B9FAF3686AA3AA59E + A2191AA3B70A5BA97502A00FDB931B8BB1217BB1D99BBD1FABBD202BB2DFDBBD + D80BB2ACC28E2B00036410320940747390815E96501A000279F5039DABB4F67B + BFF89BBFFA8BBFDCBAA24EEBBA50CB4B1134BBE70A16BF566A5D300010101810 + 220FEA9338E8F04066BB6FDF23BBA21A09A44A2942384D32F65B513AB08F4722 + F280B039892AA9D1FF2FA352BDD6BBBDE1CBB115EBC22C7CBD30FCBD1E1BC333 + ECB17BA803E7CB0259D0066FA005D3568FD87600AF439B1D5ABAA79B9B9C7BBF + A03BB44DBCC450ACC452FCC44AAB04CF190355560A405815004C266C2984036C + AED678A47DEBB5DED9970E4C47EAC419F082695758C1B525AA84D9547CF362F3 + 09B01FBCAA1F47227244C2620C870C0BB82A1C6CE25BC8867CC8889CC8DDCB01 + 286048B3110454100774000152D0BE1988015F2030724AA7F5BBBF44EBC9A01C + CA463BB480BAA249936F4AA84C8DD6C5E9619DD719AA55BBB756AB0897B020E5 + 89C66033B6BEEB193BB64080597ED83798A8C64D6E5B7FF601453416B075ABC7 + 095022791BCB1174FF17218329DA38C808A8C816CBBDD8BCCDDCACBDEC18113B + D00574A005917BACBCE107F8882C0D15CAECDCCEEEFCB9CF4902191005F98638 + DFC7CA47647D624CC0F4D1080A823F82B33F1473311603C19C219256E14E59B8 + B6C384924BBA18AD168600BB98CB2C931F572278CB7EB3FB38282CC8D6AC0E28 + 9007E22BD2164BD2217DB18C2CD22A7DD2129BD228E0D230CDD227BDD28C5CD2 + 337DD3138B3246C9007F500652004916EA1B7E606DF08B3329D00348ABB435BB + D441CBD44C8DB34FFDB34D3DD551FDC94E4DD553ADB9579C0164B03D9C971660 + 73CFABCCCA52E3606D59C2FB1CC770C279BB6819F1BA40635BD0E770D0443A21 + 6B87AF17ACAF0F0DFF4E73C246EC33D1CB6BD155CA636FAC72E732BD1EFDD103 + D0CD236DC826FDD8136BD2D80CD917DB04A9C9023B4081724588E6655EF64849 + 2461023DD0C9417BB4559DD5EFECCEA36CD53500A824700141A0C5ADCCD6F130 + 5A7C32D6F82C158DA6CFFC7C2A4B755B67F0AE9A0AD705AD22BCAC279DAA54ED + 6792277978E0B44641D63EF5C998764B2275A35C594A5317860D8A6DBD22CDC8 + 319D077990D2E37DD32BFDDDE26DDE27CD01E90DD3EDBDDEEAEDD2E27DDEE58D + DE8CEC10DC15047440058118C40665065B7088A17DB9B8B9D44970D5079EE007 + DED40A8ED508EEE00BFEE012AEB3114EE1095E0338009D2CDA6054011539156B + 053BD0F79CDB5E2CFFA353CB9FB2BCB787D0321320D0E859DCA1B2CB6003987D + 7DA4A6D69E5CB892CEC071CAD82181CDBC0930D01A3DCB7CCB70ECD3DD014AD3 + 370DDE2FFDD2E97DDE4BFEDE2B1DD2F21DD2F50DDF50FEDD560EE5ECADE4226D + 48371011B080B2D3A611BE616D2A2B03790506F42BD59FCCDAA31CE76E5EDA58 + FDE6747ED5762EE770DED44A90E1587C0763E2E18C57B09AD11FA55515AD1BAE + 9665D7D5D8DB7A44016E63DBEAB453300EC111CCA98FD28AB09CAFA9967168C2 + 0898B28C740BC27B5C302897DDA9224F5C8AE408D8DEF53DDEB0CEDEB2BEE5B4 + 3EDFE3CD01E0FDE4B03EDF56DEE5E28DEBBAAED2AFFEEBAE4EDEC28EEB2F30B2 + 55460538550729FBFFA65D061222511212000634E0E0165EE1138EE00DBEEDD9 + EEED067EE10A7EE0FDBBBAB3AD0B204EE8CD5C38DF1719243E15AE2C809877E3 + BE0D63C5D4CB956EDC119C31A5B092DEE3DB79DDE93A5E46D3FB36CA0CC266D8 + CC75530F5868D86B8A0EACDE93BE9EEB14FFD2C04EECBFEEE413AFF1F32DEBBB + 5EDE138FEB1AEFE4F61DEB23EFF1BF0EEC2870482BD0738DF001F2A83A9D4D2C + 7E7033464D034A00EED82EE1E3FEE0506DE13B7FE7DACEE7192ECF800EEF9C97 + 0D20FE71A52E0F87FEEE5221B5583AC0F45EF599274F7BF207BD8B221633D70E + 3B774808BCF24E7801EFD067CD176EA3BCD4ADC777BB400C8FEA6235637318F1 + 0888EBC0EEF1B26EFFF77ABFF7B17EF77BCFF779FFF7767FEB82AFF77D8FF785 + 9F076240004D0011C2DA066730014407B9C2C23AE865D43D000544DBF3DFDEF3 + 9EFFF9A0DFF9E32EFAA2EFF945CF0441C0E15081EE844EE8CD1BE49EC022EC81 + DBB9CD3D674DE4568F855F314DC9D0054C880E94DEF5BC0C2F87AEDCB8BF856D + CB928B40553EBEF6F7C9AA412E1A8129CB5A8A09AB4EF7C266F7270FF27F7FF8 + 847FF8776FF281FFF71AEFF783AFFD814FF8DD8FEC2B2F025A72073B4007BEF2 + A6C2E207AC53332231E034CBF9A00F084982493584838583898A8B8C8685888C + 8F87893D2A2417416D9A5D6D7F67090970A2A3A3A109031F1B0D9B9AADAEAFB0 + B1B2B15D01711461FF0C160CBCBDBEBFC0BD616114017F1F671F1F6BCCCDCECE + CAD1CA6B1B7F6DB6B9BADABBBB0CC3C314E1E2E371011B63751065EB10EDEEEF + EE750963677F0114BEDCDBBA16FD0CC61F06081C48B0A0C1830539285CC870E1 + 0B0E0F1F369CE810224585122B4E8C6831E3468D142312687243C4053201EA68 + 31230583CB97307D6CF1A38184891E881E30D2298867129F8D80EE1CDAA8E720 + A1917A98B891E10E2B4FA14891AA5347D4BC33D4FE345835ABABD7595CBBC4B9 + 352C985960FA18946BF0A7ED8635D39E3D93966C9A2AB1B8B6F9EBE6ED9B5F0A + 63396D180047DDBA32F012533DB5C61EBE7DFAFA49F616A041C03108336B2EF8 + 220F45CF10F3741EFF3D113407D3A14F2F342D5A616BD5AE4F8F16FD9A7567D5 + B457AF9648C040C90B777804B852C68C1E3F7E5CFAC0B0DCCC812F7364D80483 + 0352D1EB44B16B5F84B4E803253F4CE4C072A50D27A851A5AA0785799956F35D + 387D9D3FBF96AD5BBDF89EFDA58F58B9005D1C938C5C7249230D350DE0958B64 + 0CEE574E1B1B7C30061CE91C865862F1C833C6070DDCC34B647A4D56CC1F6B9C + B1D9899B75A422472CAEE8E20B30BE28634430C6D8E28D33E6D8190A05307552 + 171B40F0854BC9C184C11766F8E0470B3990F0437535E824E54F544E69659558 + 5EA965965C6EE965964A1CB1D4165150D1C927EAA549CA551FBC47DF9B6FD642 + D67E740213461C10FFC645203406D6D5581B7332E88F361FF2528C656324908E + 61182A764A9B1E122AA9A00C5010A08928668A5044AD714ADA6C9F762AAAA72B + 8E4A1B8BA7A61A2AA8A6AE9A2A07248990010C745001C70466C4F49214CE7DC1 + 444D1250A7445047156B1477C652795D77C41EABEC4FE089D7D499A0A8291555 + 55B1875535ABC4271F9CE0BA62DF2DB864536730DDDCD945036F19B8679F670C + 688D2D79F163811593ED420C408A1A7658A3F1C0718A2A9182C80D83EA463800 + 669A363C508D10472CF1C414576CF1C518675C711E06F8B6020B6AADE1851E18 + 140913AF5FF8300708364930EC9730772973CC34CF5C65B4375C400754D6F66C + 0A668D25E86DB844FF6F621F36E7D2094E65C8D4B5CC9ECD44136F2ADDD2FBA1 + 152184802F2F7732DDAFBFEC00BC182A1D3E66B0BDFEE0B901A60EB73D008E70 + EB38A38D72C76D374474DF4D230A3ACC7AC7151BA894AB72CC31C76B924C3EA1 + C29389F8E478B1533A7BA5E4C93E4EF99692473B1E1D9FA4D7B37A55098C8A2A + 5B156D7A2B72D69B34BA9491484DD450478D8C32D55893BA2E585B51E9836B53 + 0876D88D667B862A718471F6C192DDD9C61A0BBBEDB6C6D0472FFDF4D47746C0 + 084C051107031F1C80C17126632005AF4A6A00C21326FCD083510FB49FA5FB56 + C25FA5FC52C26F7FFDF8CF7CFF4FF0E3A094064140D3E7D44415ABB4272BDD8A + CFE9C035AE72AD0EFF2D6A09007C1A5022A741CD5DCCE0562DF061057C85A132 + C79850852C742180896E0380CA065F5688300996A879CE7358F56648C31A422F + 0F622840DF8240053A4401572E21D9AE306006C469A04912585FE5B0C43E9B5D + CE66316BE2E4A0F5831868000B021BE0E74C71953F0D6D81708A4F00E865AE07 + 0A231CFBF284052F68A068FCC94316B8D33106A0A845FD0B60ED18DB1A525828 + 8335084F2F8CE1F320868717446062878451220D59A34316F2909044E40B0A09 + 3147466C9130A2642323F6C84932529192ECA4239B30821530210864A043190E + D01221EEEA0B4862021390688397BD4F4BFB6B5FFEE2B7CB5CE6727EBBBC5978 + C6632D5368B18070FFA0472ADAC2153032905EE52AE303BBA1B60D589319072A + 90D4A686A06B006830BE031B1E03968054A4F078688B2320CF3006CCC44B909A + A218263F79494646F29E929C67242B29498BE1139FFCFCE7439AD00459D16A00 + 103840920AB79C868ACF0CB39C0E0EA048D19A59B4A25D52420F62D08220A409 + 14201D203205E6CE6E7ED1995E116339C825CDD5E9EB3F1214D01AB539BBA751 + E32DECF41D094B283681D5432C2A840C3FF0A54E089988616C83E7890C190148 + 36B5A9F684EA53997ACFA74E55A057B5271EEEB955AADAD3AB55B5AA58AD0A56 + AA5A15054DD0C10A30F1870DC0E10B7A2059F89893B23934C90412A84194F8A7 + CBBEFAF5AF800DACFF60074BD8C026E10724584119D2D4CE44794E8B06A49A02 + 511AA706B6F48165515E05F5442037466D61A1B0A385C6E98E64A602A8854A6D + 3A3F48C1A42AB561586564274529DBAFE273B6B6CDAD256FABDBDAC656A0B4BD + E7484A9281206C2501B034524BC617CB1668E00936A8C1B080D957BE5617B07C + B5AE2EB3BB5DEC76D797F8C301625B3052920AC4B159146901BBC8CC6652162C + 9B1823192F7B2E6E288F99EDCA2636399B53D19290B455D9D01F808ACEC954AA + 32256AE700DEF9DA4C3575AB0FBEEA56271C010857F8AA1196AA54BB8A61AE5E + 98AA160E71562F9C61129BD8C2207E6A575180BD0C60219575F042AE8EA35C58 + 1E804978ED010EF0FF57D81EFBF8C74056820472C00437AC89610B6B67B5445A + 0A36A9023E937DAF2CC4781FD599B11780B18504D7B660CEC2652E741CE16801 + 6CDA0117AF8F90B9D72EE210A04036B86D61DDB08A9D4A67437258CE510D6B6F + 3F3C56AC4638CF56BDF33FA56AC83CA075042EE60115A2E0BD2239747C664899 + 7349F0841F4C17C898CEB4A675191E531E395E6C432F643F1D342987918C5736 + 0B6BBFDCD9665C134DEDB82399C7D0186C1478326A0BC89B9DD7E75EFBFAD7C0 + 0EB6B0874DEC5FCF200233B8DE0A66150532243488467289737C9038F53960D3 + D8CE3661C3A3812D84EE2AA0C6949297AC5EF32E835B4633F52B9AD94007A65A + 1B87DA0ABBDAE86AFF9C8A9051A46D8769CB969F7E7F08D74012B7405CBB6BCD + CCB9D8084FB8C2175EEC421254042DC00215E2308003808F702D89B419E6C0A4 + E9F052DB20DFB41252F08415789BA4E12EC8B8476D156D510DCAEA9EB29CEE41 + DFD5F9672C4C9B9A9E5E3DA15803AFA702B6B5500FB6353CCDB1E0BC6EEAB197 + FE54A63BBDE95067BAD2914DF5A93FFDD8569F01D6A97E75AE437DEA56F7FAD3 + C33EF63C10E0377738031C14BA9C92C1842510FD550ED237D1C20A00B0776F5F + DE1FB0F7BEEBD2EF7FDD7B6001FF1D0970740B2867F082417DDEC71E93A4EE71 + 6FCCA73C46B294E5DD586E338178AED39F6328C06BE0F7ADD39627A4C790C452 + 8770D72B8C75D507FF5AE97858BAEBADDA7AD9B79EEC5C8F3DB2552FE2AA47BD + EABA1F7BEE59DC379DD1610CDE23D2A3A5F085036CA105E7BB8912424E7D6C8F + 9CA3580037A6C21DEA901EF3DB077C32CC27DF86B0547E2C5636E34B25A80912 + D9C5DE5FF33C3C02CC21380E1D77450FB8E94FAFF5FE8BFDFF5DE77F4ED77F01 + 886C5AC77507388004B8800948800028760EB88008C88048C062117705575007 + 2C116D43C4049376133840787737827FC7772648827A77822A488228B88225C8 + 822698827787031240022DE00651C0789BA1642CD764A39340DF427EE25279E9 + 7765C4100E6A132F379560E1247FEFB06F34A75A2CD44116906BFB174302D880 + 4BA7850678755C28FF815E08860938815DC8805FF8856408865DB886FD474AA6 + 645C01B07652801CD19624D4561395A65DDA26782A587D80A5143980093A6810 + 29075AD5E27804240AF48020A52384AE607E96777957665F6AF30CEC5447F8A6 + 18C9B44701B02043D7206A615457888566588AA6788AA8988AAAB88AACD88AFE + 875637B0023010075700075AD0121CC82B52E08194F62432E88230188CC0388C + C2588CC4C8771A251E4C908304377083B87288D833EE1479E3E788E6215F73F2 + 6EDD9065F3A60CFDE5733C95479B780DF850601D7460F3D68CA38822AED88EEE + F88EF0188F04880704D0373010047750076EF005B858382EC17C07406D39F004 + 499404D3E78731E8FF6307A969E01103E3A1789A9228E9356AA6F083F0618DAF + 903A35875900B10C974815FE327F9BD8219EE847FDE041000191EBD83033B000 + 2DF9922E199330399332599334799336999338B9933AD9933CF9933EB9007820 + 06C485059CE3062D31570FA524B354693D608C50798C51399552898C55D40203 + 100527C27D47855ED1782DEBB588A483919A503A72C25292786596226F6B137F + 3F571503C089E6B242FFE60F1FE4092B2948042893A7E8927BF9925AC7978039 + 98813993A528987E698A89998A36599882F9978BF99262D0622F7606CFE64AFE + 78245E80014824014340582D18782E98827D159A55298CBA448344560728C27D + 03316E5FA926F3B0FF60267552424865E8B7914AB3526CB60609E00E6F090771 + 498EF72719E738226E96976D03930B109440D992CDF99C31199DCE599DCC699D + 41499D34A99D31190162E0865B4006573006D021572713692A030203E9322F78 + 9AEE4995F0B9823D30644C004F2BD783903796649991A886791F12077FE096A5 + 358E67763C82F2416BA38ECA8922D8299D0EDAA010FAA0128A9D5BE586C04106 + 75905C6E5738CC654404890307D977211AA27F37A2A49990225882279AA2A4A9 + 142BE0060EE39A8638913D832D28776E6E126593677ED09496F5A50D008A0E8B + 1230C359A09F381977A96B0BEA3CD7D99CDC499D4EDA934F1AA53949A53539A5 + D7B99D4EDAA456BAFFA5D349A55C0AA5D39906CD3912100703E22924177732CF + F105CE853E96169F72FA9E743A823FF0043718A32A799F14399B58F11EB6799B + 6759844983A0842192B4C64752F86F547897C9B9A40EE3A5560A9D602AA95F4A + A95D7AA95D4AA99C6AA951DAA962FAA99B3AAA934AAA32C93719C0025D400632 + 6624CBD1120DB524BDA804735AAB755A954A7109ACE93C29C783B1F9518F826E + FB893A63844698B516CC134E10A0887BB43DC579A0C6A0A090CAA0996AA51550 + ADD87AADD81AA5DABAADDE9AADDFDA9CDD1AAED54A8FB178012C602910601C6B + FA8F3EF00534D18B3DF08BC528002368AF7C87AFF61A8CFADAAFF7FAAFF90AB0 + FB8A8C43201E58C0FFAB85D858E456A3EBC526A5568DB7797EC6BA9B08860CBF + B90E70B906A865A0220210D32A485F4AAE223BB2245BB2267BB243D923177005 + 0CF007C5D18F0DE5039136131D27013F40AFB76AAB3AFB005759075AF9663CC8 + 725CB4214F16A8824A841BA92E24026A8A82B1B4D60579C1B1A41721D2FAB19B + B100D74AA6598BB55C7BAD5EDBB560FBB562CBB55A0BB6653BB6681BB66A9BB6 + 637BB66B4BB670BBB56DABB664BA0024E16264C0078243246F57443E10514934 + 7D033BB8FEBAAF862BB0877BB8011BB089EBAF8C2B00AAD9513F1B43096B4C90 + 153AC9F4A76E32ACD78896D204180172190B36218AB801504B977D64608064B5 + F024AE4EDAAD63EBFFBAB2CBB5B30BBBAF7BBBB58BBBB4BBBBB1CBBBBA6BBB5F + 9BBBC2EBBBC38B046E8805787206B7F812CB5744BF4202368BB33B3BBDA7C96D + 5B7007F05488497688E56640C9500D46138411BB5256560C9D909C534330466A + 92FD702714A4A4ACEB366FCBB6F35BBFF47BBFF69BBFF8BBBFFA6BBF78D00419 + 700163F01642C2B7E1935C2C63B320DAB88F5BB884ABB80CFCC00DDCB8F84A04 + 771A7157E858BFBA1EECC5B9A8A391861207E958106DB24141C5BE6BD606F01B + BF6EC3BF2EDCBF2F1CC3303CC3329CB6765B4A4CC0023B10076A4A38AF6A065B + F0B747F40429D003B4BA828ECB8249BCC488DBC48B3BB84A50B04CB1ABAFE59A + D0F87D56313ACCE4FFC1830A18AD0543030129E5B81769866BCB03C62CDC3658 + 5B015ECBC66BDCC670CCC66E2CC76F5CC7747CC7729CC778ACC7763CC77E1CC7 + 7B9CC77D0CC76F2CC87AFCC787ECC60BF09D10770701C00765C08F6EE7683EC0 + 7C662003EB19A714BCC99CDCC99EFCC9051B886F26A3DBBBB0D682B97EFA72DE + 22BE93773495A13007B10C1DC20F93622F45B73C559BC69B51C376DCB5730CC3 + 7F1CB6BFECB56980B6C38CB5C54CC3C77CC734FCC6E62A8B77400772C8811870 + 005E7063431CA74FECC04CBCCD4E2CC1E0ACAF166C456540C5196CCA90D5C11E + 5C7EEE97194A78BA648C3CA4B7C2BADC36897CCFF89CCFFABCCFFCDCCFFEFCCF + 007DCF8B7CAE2C40FF0709B581D1A68B1C37909AFCC90EFDD010BDAF43508318 + 5C7032EA95DF972DED21ACE6618D6C41B59BF1018072A42F75C64856CFF61CD0 + 2ABDD22CDDD22E0DD048409426710761B00375E03DE65938332B903160B3FF1A + D1401DD486DB695B607ADA5BCA3DC81E5A0CB131F7D1C8A019F4D00071902FAB + 25C28F8AD20EA3C71E20C75B9DC75BDDD5158006892CD6F90CD6665D015B4DD6 + 689DC8602DD6607DC86DCDD56B7DD66C7CD65F2DD7753DD7727DD779DDD761BD + 001170B730B0037FF0562F6132322BB3186057D0FB034420D4900DD9DC76B0A3 + A878182DB48BB8B98EC82E574D10F4F007CE9A4EBB3022F48CD559FDD26BDDCF + 6F8DD7F8BCDA65CDFFD6FAECDAFCBC04AC7DD7749DDA797CB727710567E00543 + 92D0CCB70572F7A1B41AD9C6EDD04460782D000127BD6B17ADC1344A401ADD65 + C2AAA3EFD5564F9D1998B1019D28DA112420CD6DDA0DA3D7B64DDEE65DDEE87D + DEE4ED01E9DDDEEAEDDEF0FDDEF28DDE1E8006EC3DDF68ED016920066260123B + C0006B3001524063E79924C32D018F6DAF42B0AF0BAEE00CFEE00E1EE102D0E0 + 130EE1152EE1149EE10230D124C004C27985CD286A14696E45CBCA28C5D9D24A + 0F2854A0446501967274E21D43E5EDD7768DDBEE4DE37B2DDF38BEE3E69DD77C + 8DDF330EE47AEDE336BED71E40006B259E7470D3FD98993EF0E46FCA9EC73DE5 + 9CAC043860020094FF97176DB958CC5E8D686A28BE197F7A0F27B96601A76031 + EE3CECBDE66CCEE6F6DDE6701EE772BEE6F93DE76D6EDF62FDE671EED676DEE7 + 7EFEE7807EE76B8E063340942B1004571007DD036D4324054F8EC90499E015BE + E01A4EE9937EE996EEE0969EE917DEE9955EE188559F2B49CA57FC390D5B52E0 + BBCA278E5327B20C6DC041BAC3660A83E669DE36747EEBF7FDD56C5EE7409EEB + 73EDEBF41DECBC7EEBF39DEBC6AEEBC8FEDEC75EE7BB4EECC96EDB317D0317B8 + 0351B0BC98F9E41A2703E7E399C54DE5DE6EB8FF73BDE1BDA012899FA1A0E209 + 4459612EE66D32D5F862295C56EB8214E8F45EEFF67EEFF89EEFFA5EDF683099 + 817807543000CB9BFF1C075C57D1370409FEE99B8EE90CAFE99ECEF00BEFF002 + 30D993ABE53A08DD1B4C210524965A2179A6B3EE27B206DDFDE212E24EB92CEF + 06B1EF2ABFF22CDFF22CBF002A4012E84A0510B0120E75F3527000F16A0243D0 + ED92FEED869BF00F9DDC9750F1A33E88DB1BDD896840B459E2264E1F201FD280 + 22EBD93D7028EF301E500259BFF5F6ADF55E8F065EBFF5613FF6622FF625F0F5 + 649FF6653FF667BFF66EAFF670FFF6721FF75ADFF5737FF7FA6DBCD983816F35 + 871BFA3DCCF705DA4E699FE9F00B7FF8109FF888BFF8973E04786AF4D32A6E22 + 2EB416F9F450CFEAAD690DA278F5F3EEF6EC4DF69F2FF7A11FFA745FF670AEF5 + 6C1EF6A4EFF9AC8FFFFAADBFE6A0BFF5A32FFBB4AFE7AE1FFBAABFE67A9F686D + F006ADEAAA1AB72403D9F386AFF8C6CFF8C80FF1C96D72906FF1BD7AD9A61E96 + A8D04D4513F59AF1BDB36EF59C8FF55EDFF6630FF6737FF6DE0FFE69EFFD590F + F6E6FFFD6C5FFE2500F6E8BFFEE12FFE6FFFFE674FFE77DFFE709FFE72BFDF38 + 0C08645D036E5F18187E8888665F5F3E2D244F434A4202959796999742989D9A + 9F9EA1A09902124F1A5803AAABACADAEAFB0B167B3AD6363090970BABBBCBDBC + B8036B0D6DC4C5C6C7C70D1B6B67B1AE671F1FCDCED4D5D6D7D8B0251EDBDDDC + DFDEE1E0E3E2E5E4E7E6E9E8DC25EAEEECEFF1EBF215624D2B1759716B135289 + 7A3E0E613023C550FF8B1C4F7E0858288408C385A344617A288AA22587A0880C + 9140E2C2986C20B3CD9A762B97AF93BD12046BD005994B64CA98859C49B3A6CD + 55F0DAE9DCA93327CF9F3B7DB6130AB4A8D1A34089225D6A5429539D0AD2DC63 + 42264E17088E30E81198A8A09939087F1091688953D94D684199E5146AAD26B7 + 434CE42813E5A6DD91B406D8C26512651D5D093E7ED8C0B24BCB9788634EA3B6 + 785563BB9023AF0AD70E4DCF1296E171B35C19B367CEE5867ADEDC4D3468D33C + 2D671E7D79B56870AA75828E1D5BF3E7A4A55BA7060ADADE0D265400C41970C0 + DF568152186138F84482C288D0C94A8F9E51420E264124DBCCCBAA24CA5D63CE + 10EE12A07C80C388FF5D2AD6CEBE7DB6A7F0E3CB9F4FBFBEFDFA69C4FCE69185 + 0221337E249208063E980120130839E750276BB1C5D659103E286183694DC8D6 + 0F2668B0857B35E1D5CC5E70F40558786BFCD1451C148411471CE7A5F7D27A1C + C628E364A7C966E34FA0D9E6136CB97516946738DE98DB6CA1F104CE513BB206 + 0F9147EEE6A393A9E9D7020B6184B1070452084420065214F485063990608204 + 435037DD9911B9750911449840021375CC28125EABEC95CB9D2B918762952CB6 + E8224CCB3C26E7A09095A080A188B673E8A13B2D9A28543C395A94A394425AE9 + A59622CA68A49A72BAE94F923EAA68A79B621AEAA7A4768AC40D2D904181050D + B86186565A1E2205FF0820842981040B3AE8EBAFC0062BECB00DFD704A2A84DE + 5452606B9C48C18A1444DB277A7F160363B2D8DA5469A340853AAAA9A266EA6D + AA98723B6EA99D7E1BAEB9DDA6CBA9BAA8B20B2F1A52DE1186707548A1C7715A + E29A6B826556486184035B48B0C0976C745D1D1F655B8D87AAD812DE1F7130C0 + 4095613C3B6DB5C904EAF0C721912B32B8248F6C72C9289FAC72CA2CAF7CF212 + FAAD1004030074518621030AE4EFBFCD0D3116B140072DF40F12685817C8CED0 + C9CA070D0410C6C5D16ACC22B51C5F8BF4D5B12880C6A29C695D6EAAF08AACE8 + D68F6E5B36A4F38E3AF6A55D934B36BA6A9B1CB7D9E8B2CD76CC30EC90451751 + 14B765403BCB90EBFF13098D75968307276EF0E2BF0A40044717C489F535B308 + B367D41A974775B5564FEEB92A0A842EFAE8A4976EFAE9A8A7AEFAEAACB7EEFA + EBB0B38E061731A0B2030014D4F1853F3AEFCC3399870B2DFCF044FC503B1C9F + 3306CD1A6D049022E62B6ACEB1319D278FF42CB12F1ABAA6A593BABDF6A8738F + 72F7A68BFFFDEBE65F4AFEE8DE83CFBEE8E92BC0451322E43D45006F6861C671 + BE8320380891F0195A1007AC8311904207DC44F132842CEBC1A2720DB85CD4A2 + E7A7E9B5A17A0ECCD6484487000E9AAE83AD0321E944383A1192307BAF3B61E8 + 54A80016A2F0851F64DFFC6E70012A848001C4A155FF7616C0E00DEF87C26213 + 47E074B40CB20282FFCECBD804A3B7B93F61D08884A2050CA748C52A5A11755B + BBA2EA66D7041AF2C00914F880160EB14310CC4106609284E180C84661190F15 + 512003141D7306CB3D6F89D2B3E0053D36C76441CC831D0C24205B4848411AB2 + 90883CA42209793A419630918C1C212417F9C8455A7292923421264F78493074 + 31032CB0D81AB4F0851DCA40067368810C22219636BAF257C5AB5D1D54D24724 + DE515A1BD3E313FBE81E0F8D21759A5CA1072BB9C94C42B29191142627597749 + 625E5293941C66323149CC472EA18B176041161870860994F1946794014202F6 + CA720A81682B7043C3E6084109E2328F16DC252F2543A75BC061930878663E0B + B94F43E6F39FFE04FFA8402709507EFE9383FDC4A7400B1AC88532B485FD74E8 + 411B4A51832ED4A20145C035479081203821046D38E50ECF388733B2F267E66C + 63F14880857542D1964AC4E5D4F4B84799CC534623D10B1CEAE0064329F398C5 + 7464249F19D462FEF490472D2A5185BA54A53A95A830BB070CAAC000299CD177 + E09C831FCE08B094AA940824D8C21D78D9CE5B66AE82D393E74DEFF2213840C0 + 0D5A50C11214D00789DAF5AE19C5AB5E2F4A51896274AF800D2844034BD8C222 + 607E2BC0020F0C74D5C0A1720EFB5A654286E05536B6A9050D7C691D9B66560A + 36D1456A5DEB4CE8948BB76AE100311083A1F27A578CFEB5A28A4CA85D13D9DA + BE1A96B5B01DEC43FF6D7BDB81F25601F6C0C7160EF085C6FAEFB125C5C01CD2 + D8CACA12EF141728A211CB1AD3B37E363DA1152D48723A06B7BAC10B07388006 + 622057DDF6F6BCE84DAF7AD7CB5E892256033E68841EE6E02F703E560FA70C0B + 659D2BB4956AA00CB5DC6C12A1C7449A6657BBD8A045774D1BDE032C97044DE0 + C212F06ADE88EE75B0AFB5707BCF5BE1C27678C3B3B5470E348001E22AF794C8 + 2DA98AC549821FF037686C225A0E36C4CECDBAD3BA06E62382B793D3D2C2B5C1 + E17D3079278C001714F9C8F9347292FFA9E4231BF9C94866B240A1DC64805259 + CA576EF295ADECE42E6F39CA5AF63298A73C66282F39CB588EF299BB2C3F15DC + 40034CF8C2017C405B5254DAB9A4F31567E15E1C34633121C0C218301ED15A35 + 1DEF98267859F0774F0B64071F444C5CA82B88274DE94A5B3AB02E58829BE11C + 5E82E499A42A46048B79C567620DE1092D0074043B9BCB781AFAD02151B07719 + 0DE44000003B} + end + end + object edtPassword: TEdit + Left = 96 + Top = 132 + Width = 278 + Height = 21 + CharCase = ecLowerCase + PasswordChar = '*' + TabOrder = 1 + end + object bAceptar: TButton + Left = 208 + Top = 192 + Width = 75 + Height = 25 + Caption = '&Aceptar' + Default = True + TabOrder = 2 + OnClick = bAceptarClick + end + object bCancelar: TButton + Left = 296 + Top = 192 + Width = 75 + Height = 25 + Cancel = True + Caption = '&Salir' + ModalResult = 2 + TabOrder = 3 + end + object edtUser: TEdit + Left = 96 + Top = 104 + Width = 278 + Height = 21 + CharCase = ecLowerCase + TabOrder = 4 + end + object ToolBar2: TToolBar + Left = 96 + Top = 160 + Width = 281 + Height = 22 + Align = alNone + Anchors = [akLeft, akTop, akRight] + ButtonHeight = 21 + ButtonWidth = 110 + Caption = 'ToolBar1' + EdgeBorders = [] + EdgeInner = esNone + EdgeOuter = esNone + Flat = True + ParentShowHint = False + ShowCaptions = True + ShowHint = True + TabOrder = 5 + Transparent = True + object ToolButton4: TToolButton + Left = 0 + Top = 0 + Caption = 'Configurar conexi'#243'n...' + OnClick = ToolButton4Click + end + end + object PngImageList1: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000AC400000AC401666D82D4000002B84944415478DA + 7DD25B4814511807F06FD61DC79DBDB8177577D9B23B4B2E3D84F6500F3D2542 + D20DE902F910FA105D84209F0C45A82048082A562C4DA3A4B21E7C0B12332168 + 438D7523D128D745DDCBAC7B9B9DD9B9CF342B289AAC7F989773BEEFC739F31D + 445114C807411058CBCCDBA64600E9762A4D56C4E2197FE06FF46EE7C08C0F36 + 64BDEF7F60FAE5E56687C3F22C976335C954065692698827C8DC989F38DBF731 + 38B22DF0A6A546E7AEDE17C2755839C70B90CDD21026D2200A3C8457D8D9D61E + FF11B5942A0CB41FAB7539AC9F8A3445C0B0022C1234386C2630EA00E61608E5 + DEE0AFBA60981A29088C3FAE6F4E64F95E4144C06A31817BA7191059049E6381 + 6618783838D5F4EAF3527F41C0E7AD6FD8E1B47FD0A2E8EA9A248A20A8C71738 + 0E588E55DA9F4F340FFB228581A1CEA3CE6AF7EE105A5CBC2AC8B2ACDE5F5845 + 489216CF748CD54653FC976DA730D973FA9DD9885F582DCA0352FE14027C9B5E + 9EBDFAE4C7717539BE2DD0D752E33AE4B14F1A30D421AB7BF96B24D314DFDAEB + BF35F53BD35D708CF9E8DA5ED88CA4CB8BEF92CF77C9FD8811D4374023D026D5 + 294CE2800FA102D788D777A6373EA875C0D4D167290D5ABE32065755AECC0937 + ABE6A1D16381813F08780336D027A250925ECE2AECF773E1F7F747B700FB2FF5 + 3E15A5F21B94D50E399B034AAC18347810E89F33813699528108E02A82318B8B + 11DF83C3742C94D8041C3CE90D7158792563B3036D2A03CE640111D783866501 + A349C05304E049F54BC5202E8F5E8C8F0D0D6D023C271ECD8BA8654FAE34DF6C + 05DE6804495B0C1AF527A25416302A05783A01BA4C1C086EFC7A7462B87B13E0 + 3ED57E45614ABB6483DDCA636644D0E901B45A005E02AD40032690A0A5E33C9F + 9909ACCC0D379189D8CF2D53309BCD658273AF1BAD705582466F4064492329AC + 20F15C0E2882449716226A5930AD66ADE71FDF3497F05E932988000000004945 + 4E44AE426082} + Name = 'PngImage0' + Background = clWindow + end> + Left = 264 + Top = 104 + Bitmap = {} + end +end diff --git a/Usuarios/uLoginForm.pas b/Usuarios/uLoginForm.pas new file mode 100644 index 0000000..582b8ec --- /dev/null +++ b/Usuarios/uLoginForm.pas @@ -0,0 +1,86 @@ +unit uLoginForm; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, StdCtrls, ExtCtrls, ComCtrls, cxGraphics, cxControls, + cxContainer, cxEdit, cxTextEdit, cxMaskEdit, cxDropDownEdit, + cxImageComboBox, ImgList, PngImageList, pngimage, ToolWin, JvExControls, + JvComponent, JvGradient, JvGIF; + +type + TfLoginForm = class(TForm) + Panel1: TPanel; + Label3: TLabel; + Label4: TLabel; + edtPassword: TEdit; + bAceptar: TButton; + bCancelar: TButton; + Label1: TLabel; + PngImageList1: TPngImageList; + edtUser: TEdit; + ToolBar2: TToolBar; + ToolButton4: TToolButton; + Image1: TImage; + JvGradient1: TJvGradient; + procedure bAceptarClick(Sender: TObject); + procedure FormCreate(Sender: TObject); + procedure ToolButton4Click(Sender: TObject); + procedure FormShow(Sender: TObject); + private + FIntentos: Integer; + end; + +var + fLoginForm: TfLoginForm; + +implementation + +uses + uDataModuleUsuarios, uDataModuleBase; + +{$R *.dfm} + +{ +********************************* TfLoginForm ********************************** +} +procedure TfLoginForm.bAceptarClick(Sender: TObject); +var + ACursor: TCursor; + bOk : Boolean; +begin + ACursor := Screen.Cursor; + Screen.Cursor := crHourGlass; + try + bOK := dmUsuarios.Login(edtUser.Text, edtPassword.Text); + finally + Screen.Cursor := ACursor; + end; + if bOk then + ModalResult := mrOK + else begin + Application.MessageBox('Usuario no válido. Compruebe si ha escrito correctamente' + + #13 + #10 + 'el usuario y la contraseña.', 'Atención', MB_OK); + Dec(FIntentos); + if (FIntentos <= 0) then + ModalResult := mrCancel; + end; +end; + +procedure TfLoginForm.FormCreate(Sender: TObject); +begin + FIntentos := 3; +end; + +procedure TfLoginForm.ToolButton4Click(Sender: TObject); +begin + dmBase.ConfigurarConexion; +end; + +procedure TfLoginForm.FormShow(Sender: TObject); +begin + Self.Caption := Application.Title + ' ' + dmBase.DarVersion + ' - Inicio de sesión'; +end; + +end. diff --git a/Usuarios/uUsuario.dfm b/Usuarios/uUsuario.dfm new file mode 100644 index 0000000..93fcc6e --- /dev/null +++ b/Usuarios/uUsuario.dfm @@ -0,0 +1,123 @@ +object fUsuario: TfUsuario + Left = 523 + Top = 415 + BorderStyle = bsDialog + Caption = 'Datos del usuario' + ClientHeight = 309 + ClientWidth = 308 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + Position = poScreenCenter + PixelsPerInch = 96 + TextHeight = 13 + object Button1: TButton + Left = 138 + Top = 273 + Width = 75 + Height = 25 + Action = actAceptar + TabOrder = 1 + end + object Button2: TButton + Left = 226 + Top = 273 + Width = 75 + Height = 25 + Action = actCancelar + TabOrder = 2 + end + object TabControl1: TPageControl + Left = 8 + Top = 8 + Width = 293 + Height = 257 + ActivePage = pagUsuario + TabOrder = 0 + object pagUsuario: TTabSheet + Caption = 'Usuario' + object GroupBox1: TGroupBox + Left = 6 + Top = 5 + Width = 274 + Height = 99 + Caption = 'GroupBox1' + TabOrder = 0 + DesignSize = ( + 274 + 99) + object Label4: TLabel + Left = 34 + Top = 28 + Width = 39 + Height = 13 + Caption = 'Usuario:' + Transparent = False + end + object Label5: TLabel + Left = 16 + Top = 60 + Width = 57 + Height = 13 + Caption = 'Contrase'#241'a:' + Transparent = False + end + object edtUser: TEdit + Left = 88 + Top = 24 + Width = 169 + Height = 21 + Anchors = [akLeft, akTop, akRight] + TabOrder = 0 + end + object edtPassword: TEdit + Left = 88 + Top = 56 + Width = 169 + Height = 21 + Anchors = [akLeft, akTop, akRight] + PasswordChar = '*' + TabOrder = 1 + end + end + object GroupBox2: TGroupBox + Left = 7 + Top = 111 + Width = 273 + Height = 110 + Caption = 'Permisos y seguridad' + TabOrder = 1 + object Label1: TLabel + Left = 47 + Top = 36 + Width = 26 + Height = 13 + Caption = 'Perfil:' + Transparent = False + end + object cbPerfil: TComboBox + Left = 88 + Top = 28 + Width = 169 + Height = 21 + ItemHeight = 13 + TabOrder = 0 + end + end + end + end + object ActionList: TActionList + Left = 8 + Top = 272 + object actAceptar: TAction + Caption = '&Aceptar' + end + object actCancelar: TAction + Caption = '&Cancelar' + end + end +end diff --git a/Usuarios/uUsuario.pas b/Usuarios/uUsuario.pas new file mode 100644 index 0000000..90e722c --- /dev/null +++ b/Usuarios/uUsuario.pas @@ -0,0 +1,39 @@ +unit uUsuario; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, StdCtrls, ComCtrls, ActnList; + +type + TfUsuario = class(TForm) + Button1: TButton; + Button2: TButton; + TabControl1: TPageControl; + pagUsuario: TTabSheet; + GroupBox1: TGroupBox; + Label4: TLabel; + Label5: TLabel; + edtUser: TEdit; + edtPassword: TEdit; + GroupBox2: TGroupBox; + Label1: TLabel; + cbPerfil: TComboBox; + ActionList: TActionList; + actAceptar: TAction; + actCancelar: TAction; + private + { Private declarations } + public + { Public declarations } + end; + +var + fUsuario: TfUsuario; + +implementation + +{$R *.dfm} + +end. diff --git a/Usuarios/uUsuarios.ddp b/Usuarios/uUsuarios.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/Usuarios/uUsuarios.ddp differ diff --git a/Usuarios/uUsuarios.dfm b/Usuarios/uUsuarios.dfm new file mode 100644 index 0000000..a2faae2 --- /dev/null +++ b/Usuarios/uUsuarios.dfm @@ -0,0 +1,119 @@ +object fUsuarios: TfUsuarios + Left = 490 + Top = 417 + BorderStyle = bsDialog + Caption = 'Administraci'#243'n de usuarios' + ClientHeight = 401 + ClientWidth = 550 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + Position = poScreenCenter + OnCreate = FormCreate + PixelsPerInch = 96 + TextHeight = 13 + object Grid: TDBGrid + Left = 8 + Top = 40 + Width = 425 + Height = 313 + DataSource = DADataSource + TabOrder = 0 + TitleFont.Charset = DEFAULT_CHARSET + TitleFont.Color = clWindowText + TitleFont.Height = -11 + TitleFont.Name = 'MS Sans Serif' + TitleFont.Style = [] + end + object JvNavPanelHeader1: TJvNavPanelHeader + Left = 0 + Top = 0 + Width = 550 + Align = alTop + Caption = 'Panel de control' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWhite + Font.Height = -16 + Font.Name = 'Arial' + Font.Style = [fsBold] + ParentFont = False + ColorFrom = 8684164 + ColorTo = 8684164 + ImageIndex = 0 + StyleManager = dmBase.StyleManager + ParentStyleManager = False + end + object Button1: TButton + Left = 448 + Top = 40 + Width = 91 + Height = 25 + Action = actNuevo + TabOrder = 2 + end + object Button2: TButton + Left = 448 + Top = 136 + Width = 91 + Height = 25 + Action = actModificar + TabOrder = 3 + end + object Button3: TButton + Left = 448 + Top = 176 + Width = 91 + Height = 25 + Action = actEliminar + TabOrder = 4 + end + object Button4: TButton + Left = 448 + Top = 368 + Width = 91 + Height = 25 + Action = actCerrar + TabOrder = 5 + end + object Button5: TButton + Left = 448 + Top = 96 + Width = 91 + Height = 25 + Action = actCambiarPassword + TabOrder = 6 + end + object DADataSource: TDADataSource + DataTable = dmUsuarios.tbl_Usuarios + Left = 368 + Top = 40 + end + object ActionList: TActionList + Left = 8 + Top = 360 + object actCerrar: TAction + Caption = '&Cerrar' + OnExecute = actCerrarExecute + end + object actNuevo: TAction + Caption = 'Nuevo usuario' + OnUpdate = actNuevoUpdate + end + object actCambiarPassword: TAction + Caption = 'Cambiar contrase'#241'a' + OnUpdate = actCambiarPasswordUpdate + end + object actModificar: TAction + Caption = 'Modificar usuario' + OnUpdate = actModificarUpdate + end + object actEliminar: TAction + Caption = 'Eliminar usuario' + OnUpdate = actEliminarUpdate + end + end +end diff --git a/Usuarios/uUsuarios.pas b/Usuarios/uUsuarios.pas new file mode 100644 index 0000000..dfad797 --- /dev/null +++ b/Usuarios/uUsuarios.pas @@ -0,0 +1,89 @@ +unit uUsuarios; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, DB, uDADataTable, dbcgrids, uDataModuleUsuarios, StdCtrls, + DBCtrls, uDataModuleBase, JvExControls, JvComponent, JvNavigationPane, + Grids, DBGrids, ActnList; + +type + TfUsuarios = class(TForm) + DADataSource: TDADataSource; + Grid: TDBGrid; + JvNavPanelHeader1: TJvNavPanelHeader; + Button1: TButton; + Button2: TButton; + Button3: TButton; + Button4: TButton; + Button5: TButton; + ActionList: TActionList; + actCerrar: TAction; + actNuevo: TAction; + actCambiarPassword: TAction; + actModificar: TAction; + actEliminar: TAction; + procedure actCerrarExecute(Sender: TObject); + procedure FormCreate(Sender: TObject); + procedure actEliminarUpdate(Sender: TObject); + procedure actModificarUpdate(Sender: TObject); + procedure actCambiarPasswordUpdate(Sender: TObject); + procedure actNuevoUpdate(Sender: TObject); + private + { Private declarations } + public + { Public declarations } + end; + +procedure AdministrarUsuarios; + +implementation + +{$R *.dfm} + + +procedure AdministrarUsuarios; +var + fUsuarios: TfUsuarios; +begin + fUsuarios := TfUsuarios.Create(NIL); + try + fUsuarios.ShowModal; + finally + fUsuarios.Free; + end; +end; + +procedure TfUsuarios.actCerrarExecute(Sender: TObject); +begin + Close; +end; + +procedure TfUsuarios.FormCreate(Sender: TObject); +begin + DADataSource.DataTable := dmUsuarios.tbl_Usuarios; + DADataSource.DataTable.Active := True; +end; + +procedure TfUsuarios.actEliminarUpdate(Sender: TObject); +begin + (Sender as TAction).Enabled := not (DADataSource.DataTable.IsEmpty); +end; + +procedure TfUsuarios.actModificarUpdate(Sender: TObject); +begin + (Sender as TAction).Enabled := not (DADataSource.DataTable.IsEmpty); +end; + +procedure TfUsuarios.actCambiarPasswordUpdate(Sender: TObject); +begin + (Sender as TAction).Enabled := not (DADataSource.DataTable.IsEmpty); +end; + +procedure TfUsuarios.actNuevoUpdate(Sender: TObject); +begin + (Sender as TAction).Enabled := Assigned(DADataSource.DataTable); +end; + +end.