From d9c1370ba7695ce6c07db78ccbdda483bbd9c4b0 Mon Sep 17 00:00:00 2001 From: david Date: Mon, 4 Feb 2008 16:33:54 +0000 Subject: [PATCH] Repaso general git-svn-id: https://192.168.0.254/svn/Proyectos.Tecsitel_FactuGES2/trunk@239 0c75b7a4-871f-7646-8a2f-f78d34cc349f --- Database/FACTUGES.FDB | Bin 2482176 -> 2482176 bytes Database/scripts/factuges.sql | 518 +++++++----------- Database/scripts/factuges_sysdata.sql | 5 + Source/Base/Base.dproj | 102 ++-- Source/Cliente/FactuGES.rc | 3 +- Source/Cliente/FactuGES.res | Bin 172128 -> 171932 bytes Source/GUIBase/GUIBase.dproj | 32 +- .../Servidor/srvAlbaranesCliente_Impl.dfm | 82 +-- .../Contactos/Data/uDataModuleClientes.dfm | 11 +- .../Contactos/Data/uDataModuleEmpleados.dfm | 11 +- .../Contactos/Data/uDataModuleProveedores.dfm | 11 +- .../Contactos/Model/Contactos_model.dproj | 12 +- .../Model/schContactosClient_Intf.pas | 155 +++++- .../Model/schContactosServer_Intf.pas | 173 +++++- .../Contactos/Servidor/srvContactos_Impl.dfm | 127 +++-- .../Modulos/Contactos/Views/uViewClientes.dfm | 5 +- .../Familias/Data/uDataModuleFamilias.dfm | 11 + .../Modulos/Familias/Familias_Group.groupproj | 16 +- .../Modulos/Familias/Model/Familias_model.dpk | 3 +- .../Familias/Model/Familias_model.dproj | 13 +- .../Familias/Model/schFamiliasClient_Intf.pas | 62 ++- .../Familias/Model/schFamiliasServer_Intf.pas | 72 ++- .../Familias/Servidor/srvFamilias_Impl.dfm | 86 +-- Source/Servidor/FactuGES_Server.RES | Bin 23404 -> 23208 bytes Source/Servidor/FactuGES_Server.dproj | 464 ++++++++-------- Source/Servidor/FactuGES_Server.rc | 2 +- 26 files changed, 1140 insertions(+), 836 deletions(-) diff --git a/Database/FACTUGES.FDB b/Database/FACTUGES.FDB index af8ce7082459dd68ca25ece2d74d11317d86a071..b68cf4e90affe2aae2ec7072b86b5864c3d65145 100644 GIT binary patch delta 65967 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 'Concepto') or (contador = num_filas)) then - begin - importe_total = total_acumulado; - tipo_detalle = 'Titulo'; - concepto = 'General'; - visible = 1; - ID = -1; - posicion = -1; - suspend; - break; - end - else begin - if (visible <> 0) then - total_acumulado = total_acumulado + importe_total; - end - end - end - - - for select id, id_presupuesto, posicion, tipo_detalle, F_RTFTOTEXT(concepto) as concepto, - importe_total, coalesce(visible, 1) - from presupuestos_cliente_detalles - where tipo_detalle <> 'Concepto' and id_presupuesto = :AID - order by id_presupuesto, posicion - into :ID, :ID_PRESUPUESTO, :POSICION, :TIPO_DETALLE, :CONCEPTO, - :IMPORTE_TOTAL, :VISIBLE - do - suspend; - -end^ - -SET TERM ; ^ -GRANT SELECT ON PRESUPUESTOS_CLIENTE_DETALLES TO PROCEDURE PRO_PRES_CAPITULOS; -GRANT EXECUTE ON PROCEDURE PRO_PRES_CAPITULOS TO TO "PUBLIC"; - -SET TERM ^ ; - -CREATE PROCEDURE PRO_PRES_CAPITULOS_CONCEPTOS ( - aid integer) -returns ( - id integer, - id_presupuesto integer, - posicion integer, - tipo_detalle varchar(10), - id_capitulo integer, - id_articulo integer, - referencia varchar(255), - concepto varchar(2000), - cantidad integer, - importe_unidad numeric(11,2), - descuento float, - importe_porte numeric(11,2), - importe_total numeric(11,2), - visible smallint) -as -declare variable capitulo_actual integer; -begin -capitulo_actual = -1; -ID_CAPITULO = -1; -for select pre.id, pre.id_presupuesto, pre.posicion, pre.tipo_detalle, - pre.id_articulo, articulos.referencia, pre.concepto, pre.cantidad, - pre.importe_unidad, pre.descuento, pre.importe_porte, - pre.importe_total, coalesce(pre.visible, 1) - from presupuestos_cliente_detalles pre - left join articulos on (pre.id_articulo = articulos.id) - where pre.id_presupuesto = :AID - order by pre.id_presupuesto, pre.posicion - into :ID, :ID_PRESUPUESTO, :POSICION, :TIPO_DETALLE, :ID_ARTICULO, - :REFERENCIA, :CONCEPTO, :CANTIDAD, :IMPORTE_UNIDAD, :DESCUENTO, - :IMPORTE_PORTE, :IMPORTE_TOTAL, :VISIBLE -do - begin - if (:tipo_detalle <> 'Concepto') then - begin - capitulo_actual = :ID; - ID_CAPITULO = capitulo_actual; - end - else - suspend; - end -end^ - -SET TERM ; ^ - -GRANT SELECT ON PRESUPUESTOS_CLIENTE_DETALLES TO PROCEDURE PRO_PRES_CAPITULOS_CONCEPTOS; -GRANT SELECT ON ARTICULOS TO PROCEDURE PRO_PRES_CAPITULOS_CONCEPTOS; -GRANT EXECUTE ON PROCEDURE PRO_PRES_CAPITULOS_CONCEPTOS TO "PUBLIC"; - - -SET TERM ^ ; - -CREATE PROCEDURE PRO_PRES_RESUMEN ( - aid integer) -returns ( - id integer, - id_presupuesto integer, - posicion integer, - tipo_detalle varchar(10), - concepto varchar(2000), - importe_total numeric(11,2), - visible smallint) -as -declare variable num_capitulos integer; -declare variable num_filas integer; -declare variable contador integer; -declare variable existe numeric(11,2); -declare variable total_acumulado numeric(11,2); -declare variable concepto_capitulo varchar(2000) character set iso8859_1; -begin - existe = 0; - total_acumulado = 0.0; - contador = 0; - num_filas = 0; - num_capitulos = 0; - concepto_capitulo = ''; - - /* ¿Existe el presupuesto? */ - for select count(*) - from presupuestos_cliente_detalles - where id_presupuesto = :AID - into :num_filas - do - begin - if (num_filas = 0) then - suspend; - end - - /* Ver si hay conceptos al principio sin capitulos */ - for select id, id_presupuesto, posicion, tipo_detalle - from presupuestos_cliente_detalles - where id_presupuesto = :AID - order by id_presupuesto, posicion - rows 1 - into :ID, :ID_PRESUPUESTO, :POSICION, :TIPO_DETALLE - do - begin - if (TIPO_DETALLE = 'Concepto') then - EXISTE = 1; - end - - if (existe = 1) then - begin - contador = 0; - /* Existen conceptos sin capitulo */ - for select tipo_detalle, importe_total, coalesce(visible, 1) - from presupuestos_cliente_detalles - where id_presupuesto = :AID - order by id_presupuesto, posicion - into :TIPO_DETALLE, :IMPORTE_TOTAL, :VISIBLE - do - begin - contador = contador + 1; - if ((tipo_detalle <> 'Concepto') or (contador = num_filas)) then - begin - importe_total = total_acumulado; - tipo_detalle = 'Titulo'; - concepto = 'General'; - visible = 1; - ID = -1; - posicion = -1; - suspend; - break; - end - else begin - if (visible <> 0) then - total_acumulado = total_acumulado + importe_total; - end - end - end - - - /* Tratar el resto de las filas */ - for select id, id_presupuesto, posicion, tipo_detalle, F_RTFTOTEXT(concepto) as concepto, - importe_total, coalesce(visible, 1) - from presupuestos_cliente_detalles - where tipo_detalle = 'Subtotal' and id_presupuesto = :AID - order by id_presupuesto, posicion - into :ID, :ID_PRESUPUESTO, :POSICION, :TIPO_DETALLE, :CONCEPTO, - :IMPORTE_TOTAL, :VISIBLE - do - suspend; -end^ - -SET TERM ; ^ -GRANT SELECT ON PRESUPUESTOS_CLIENTE_DETALLES TO PROCEDURE PRO_PRES_RESUMEN; -GRANT EXECUTE ON PROCEDURE PRO_PRES_RESUMEN TO "PUBLIC"; +CREATE GENERATOR GEN_PERMISOSEX_ID; +SET GENERATOR GEN_PERMISOSEX_ID TO 1; /******************************************************************************/ @@ -482,6 +250,7 @@ CREATE TABLE ALBARANES_CLIENTE ( ID_ALMACEN TIPO_ID, ID_PEDIDO TIPO_ID, ID_FACTURA TIPO_ID, + TIPO VARCHAR(1), REFERENCIA VARCHAR(255), CALLE VARCHAR(255), CODIGO_POSTAL VARCHAR(10), @@ -536,6 +305,7 @@ CREATE TABLE ALBARANES_PROVEEDOR ( FECHA_ALBARAN DATE, ID_PEDIDO TIPO_ID, ID_FACTURA TIPO_ID, + TIPO VARCHAR(1), REFERENCIA VARCHAR(255), CALLE VARCHAR(255), CODIGO_POSTAL VARCHAR(10), @@ -607,7 +377,7 @@ CREATE TABLE ARTICULOS ( REFERENCIA VARCHAR(255), DESCRIPCION VARCHAR(255), FAMILIA VARCHAR(255), - UNIDAD_MEDIDA VARCHAR(255), + UNIDAD_MEDIDA VARCHAR(255), IMAGEN TIPO_BINARIO, COMISIONABLE TIPO_BOOLEANO, ID_PROVEEDOR TIPO_ID, @@ -657,6 +427,7 @@ CREATE TABLE CLIENTES_DTOS_PROVEEDORES ( CREATE TABLE CLIENTES_GRUPOS ( + ID TIPO_ID NOT NULL, DESCRIPCION VARCHAR(255) ); @@ -676,6 +447,7 @@ CREATE TABLE COMISIONES_LIQUIDADAS ( CREATE TABLE CONFIGURACION ( + ID TIPO_ID NOT NULL, CODIGO VARCHAR(50) NOT NULL, VALOR VARCHAR(255) NOT NULL, ID_EMPRESA TIPO_ID @@ -759,7 +531,8 @@ CREATE TABLE EMPLEADOS_DATOS ( CREATE TABLE EMPLEADOS_GRUPOS ( - DESCRIPCION VARCHAR(255) + ID TIPO_ID NOT NULL, + DESCRIPCION VARCHAR(255) ); @@ -791,8 +564,9 @@ CREATE TABLE EMPRESAS ( CREATE TABLE EMPRESAS_CONTACTOS ( - ID_EMPRESA TIPO_ID NOT NULL, - ID_CONTACTO TIPO_ID NOT NULL + ID TIPO_ID NOT NULL, + ID_EMPRESA TIPO_ID NOT NULL, + ID_CONTACTO TIPO_ID NOT NULL ); @@ -810,6 +584,7 @@ CREATE TABLE EMPRESAS_DATOS_BANCO ( CREATE TABLE EMPRESAS_USUARIOS ( + ID TIPO_ID NOT NULL, ID_EMPRESA TIPO_ID NOT NULL, ID_USUARIO TIPO_ID NOT NULL ); @@ -939,6 +714,7 @@ CREATE TABLE FACTURAS_PROVEEDOR_DETALLES ( CREATE TABLE FAMILIAS ( + ID TIPO_ID NOT NULL, DESCRIPCION VARCHAR(255) ); @@ -1125,6 +901,7 @@ CREATE TABLE PEDIDOS_PROVEEDOR_DETALLES ( CREATE TABLE PERMISOS ( + ID TIPO_ID NOT NULL, ID_USUARIO TIPO_ID, MODULO VARCHAR(50), NOMBRECOMP VARCHAR(50), @@ -1133,6 +910,7 @@ CREATE TABLE PERMISOS ( CREATE TABLE PERMISOSEX ( + ID TIPO_ID NOT NULL, ID_USUARIO TIPO_ID, MODULO VARCHAR(50), NOMBRECOMP VARCHAR(50), @@ -1205,7 +983,8 @@ CREATE TABLE PROVEEDORES_DATOS ( CREATE TABLE PROVEEDORES_GRUPOS ( - DESCRIPCION VARCHAR(255) + ID TIPO_ID NOT NULL, + DESCRIPCION VARCHAR(255) ); @@ -1307,6 +1086,12 @@ CREATE TABLE TIPOS_IVA ( ); +CREATE TABLE UNIDADES_MEDIDA ( + ID TIPO_ID NOT NULL, + DESCRIPCION VARCHAR(255) +); + + CREATE TABLE USUARIOS ( ID TIPO_ID NOT NULL, USERNAME VARCHAR(30), @@ -1345,11 +1130,6 @@ CREATE TABLE USUARIOS_LOGON ( ); -CREATE TABLE UNIDADES_MEDIDA ( - ID TIPO_ID NOT NULL, - DESCRIPCION VARCHAR(255) -); - /******************************************************************************/ @@ -1389,7 +1169,7 @@ SELECT ALBARANES_PROVEEDOR_DETALLES.ID_ALBARAN, SUM (COALESCE(ALBARANES_PROVEEDOR_DETALLES.CANTIDAD, 0)) AS CANTIDAD FROM ALBARANES_PROVEEDOR_DETALLES -LEFT JOIN ALBARANES_PROVEEDOR +INNER JOIN ALBARANES_PROVEEDOR ON (ALBARANES_PROVEEDOR_DETALLES.ID_ALBARAN = ALBARANES_PROVEEDOR.ID) /*Mantenemos los articulos inventariables y aquellos que no existan en nuestro catálogo con el fin de no falsear la situación de los pedidos @@ -1458,7 +1238,7 @@ SELECT ALBARANES_CLIENTE.FECHA_ALBARAN, ALBARANES_CLIENTE.REFERENCIA, ALBARANES_CLIENTE.REFERENCIA_CLIENTE, - CASE WHEN (ALBARANES_CLIENTE.IMPORTE_TOTAL < 0) THEN 'D' ELSE 'A' END AS TIPO, + ALBARANES_CLIENTE.TIPO, V_ALB_CLI_SITUACION.SITUACION, ALBARANES_CLIENTE.ID_ALMACEN, ALMACENES.NOMBRE AS NOMBRE_ALMACEN, @@ -1548,7 +1328,7 @@ SELECT ALBARANES_PROVEEDOR.FECHA_ALBARAN, ALBARANES_PROVEEDOR.REFERENCIA, ALBARANES_PROVEEDOR.REFERENCIA_PROVEEDOR, - CASE WHEN (ALBARANES_PROVEEDOR.IMPORTE_TOTAL < 0) THEN 'D' ELSE 'A' END AS TIPO, + ALBARANES_PROVEEDOR.TIPO, ALBARANES_PROVEEDOR.ID_ALMACEN, ALMACENES.NOMBRE AS NOMBRE_ALMACEN, ALBARANES_PROVEEDOR.ID_PEDIDO, @@ -1593,7 +1373,7 @@ CREATE VIEW V_ARTICULOS( ID_EMPRESA, REFERENCIA, DESCRIPCION, - UNIDAD_MEDIDA, + UNIDAD_MEDIDA, FAMILIA, IMAGEN, COMISIONABLE, @@ -2406,10 +2186,10 @@ SELECT PEDIDOS_PROVEEDOR.ID_FORMA_PAGO FROM PEDIDOS_PROVEEDOR - LEFT OUTER JOIN V_PROVEEDORES ON (PEDIDOS_PROVEEDOR.ID_PROVEEDOR = V_PROVEEDORES.ID) + INNER JOIN V_PROVEEDORES ON (PEDIDOS_PROVEEDOR.ID_PROVEEDOR = V_PROVEEDORES.ID) + INNER JOIN V_PED_PROV_SITUACION ON (V_PED_PROV_SITUACION.ID_PEDIDO = PEDIDOS_PROVEEDOR.ID) LEFT OUTER JOIN ALMACENES ON (ALMACENES.ID = PEDIDOS_PROVEEDOR.ID_ALMACEN) - LEFT OUTER JOIN PEDIDOS_CLIENTE ON (PEDIDOS_CLIENTE.ID = PEDIDOS_PROVEEDOR.ID_PEDIDO_CLIENTE) - LEFT OUTER JOIN V_PED_PROV_SITUACION ON (V_PED_PROV_SITUACION.ID_PEDIDO = PEDIDOS_PROVEEDOR.ID) + LEFT OUTER JOIN PEDIDOS_CLIENTE ON (PEDIDOS_CLIENTE.ID = PEDIDOS_PROVEEDOR.ID_PEDIDO_CLIENTE) ; @@ -2693,9 +2473,9 @@ ALTER TABLE CONTACTOS_DATOS_BANCO ADD CONSTRAINT PK_CONTACTOS_DATOS_BANCO PRIMAR ALTER TABLE CONTACTOS_DIRECCIONES ADD CONSTRAINT PK_CONTACTOS_DIR PRIMARY KEY (ID); ALTER TABLE EMPLEADOS_DATOS ADD CONSTRAINT PK_EMPLEADOS_DATOS PRIMARY KEY (ID_EMPLEADO); ALTER TABLE EMPRESAS ADD CONSTRAINT PK_EMPRESAS PRIMARY KEY (ID); -ALTER TABLE EMPRESAS_CONTACTOS ADD CONSTRAINT PK_EMPRESAS_CONTACTOS PRIMARY KEY (ID_EMPRESA, ID_CONTACTO); +ALTER TABLE EMPRESAS_CONTACTOS ADD CONSTRAINT PK_EMPRESAS_CONTACTOS PRIMARY KEY (ID); ALTER TABLE EMPRESAS_DATOS_BANCO ADD CONSTRAINT PK_EMPRESAS_DATOS_BANCO PRIMARY KEY (ID); -ALTER TABLE EMPRESAS_USUARIOS ADD CONSTRAINT PK_EMPRESAS_USUARIOS PRIMARY KEY (ID_EMPRESA, ID_USUARIO); +ALTER TABLE EMPRESAS_USUARIOS ADD CONSTRAINT PK_EMPRESAS_USUARIOS PRIMARY KEY (ID); ALTER TABLE FACTURAS_CLIENTE ADD CONSTRAINT PK_FACTURAS_CLIENTE PRIMARY KEY (ID); ALTER TABLE FACTURAS_CLIENTE_DETALLES ADD CONSTRAINT PK_FACTURAS_CLIENTE_DETALLES PRIMARY KEY (ID); ALTER TABLE FACTURAS_PROVEEDOR ADD CONSTRAINT PK_FACTURAS_PROVEEDOR PRIMARY KEY (ID); @@ -2724,6 +2504,13 @@ ALTER TABLE TIPOS_IVA ADD PRIMARY KEY (ID); ALTER TABLE USUARIOS ADD CONSTRAINT PK_USUARIOS PRIMARY KEY (ID); ALTER TABLE USUARIOS_LOGON ADD CONSTRAINT PK_USUARIOS_LOGON PRIMARY KEY (LOGONID); ALTER TABLE UNIDADES_MEDIDA ADD PRIMARY KEY (ID); +ALTER TABLE CLIENTES_GRUPOS ADD CONSTRAINT PK_CLIENTES_GRUPOS PRIMARY KEY (ID); +ALTER TABLE PROVEEDORES_GRUPOS ADD CONSTRAINT PK_PROVEEDORES_GRUPOS PRIMARY KEY (ID); +ALTER TABLE CONFIGURACION ADD CONSTRAINT PK_CONFIGURACION PRIMARY KEY (ID); +ALTER TABLE EMPLEADOS_GRUPOS ADD CONSTRAINT PK_EMPLEADOS_GRUPOS PRIMARY KEY (ID); +ALTER TABLE FAMILIAS ADD CONSTRAINT PK_FAMILIAS PRIMARY KEY (ID); +ALTER TABLE PERMISOS ADD CONSTRAINT PK_PERMISOS PRIMARY KEY (ID); +ALTER TABLE PERMISOSEX ADD CONSTRAINT PK_PERMISOSEX PRIMARY KEY (ID); /******************************************************************************/ @@ -2770,11 +2557,13 @@ ALTER TABLE TIENDA_WEB ADD CONSTRAINT FK_EMPRESAS_TIENDA_WEB FOREIGN KEY (ID_EMP CREATE INDEX IDX_AGENTES_COMISIONES1 ON AGENTES_COMISIONES (ID_AGENTE); CREATE INDEX IDX_AGENTES_COMISIONES2 ON AGENTES_COMISIONES (ID_PROVEEDOR); -CREATE INDEX IDX_ALBARANES_CLIENTE ON ALBARANES_CLIENTE (ID_FORMA_PAGO); +CREATE INDEX IDX_ALBARANES_CLIENTE1 ON ALBARANES_CLIENTE (ID_FORMA_PAGO); +CREATE INDEX IDX_ALBARANES_CLIENTE2 ON ALBARANES_CLIENTE (TIPO); CREATE INDEX IDX_ALBARANES_CLIENTE_DETALLES ON ALBARANES_CLIENTE_DETALLES (ID_ARTICULO); CREATE INDEX IDX_ALBARANES_CLIENTE_DETALLES1 ON ALBARANES_CLIENTE_DETALLES (ID_ALBARAN); -CREATE INDEX IDX_ALBARANES_PROVEEDOR ON ALBARANES_PROVEEDOR (ID_ALMACEN); -CREATE INDEX IDX_ALBARANES_PROVEEDOR1 ON ALBARANES_PROVEEDOR (ID_FORMA_PAGO); +CREATE INDEX IDX_ALBARANES_PROVEEDOR1 ON ALBARANES_PROVEEDOR (ID_ALMACEN); +CREATE INDEX IDX_ALBARANES_PROVEEDOR2 ON ALBARANES_PROVEEDOR (ID_FORMA_PAGO); +CREATE INDEX IDX_ALBARANES_PROVEEDOR3 ON ALBARANES_PROVEEDOR (TIPO); CREATE INDEX IDX_ALBARANES_PROV_DETALLES ON ALBARANES_PROVEEDOR_DETALLES (ID_ALBARAN); CREATE INDEX IDX_ALBARANES_PROV_DETALLES1 ON ALBARANES_PROVEEDOR_DETALLES (ID_ARTICULO); CREATE INDEX IDX_ARTICULOS ON ARTICULOS (ID_PROVEEDOR); @@ -2789,6 +2578,8 @@ CREATE INDEX IDX_CONTACTOS_CATEGORIAS ON CONTACTOS_CATEGORIAS (ID_CONTACTO); CREATE INDEX IDX_CONTACTOS_CATEGORIAS1 ON CONTACTOS_CATEGORIAS (ID_CATEGORIA); CREATE INDEX IDX_CONTACTOS_DATOS_BANCO ON CONTACTOS_DATOS_BANCO (ID_CONTACTO); CREATE INDEX IDX_CONTACTOS_DIR_ID_CONTACTO ON CONTACTOS_DIRECCIONES (ID_CONTACTO); +CREATE INDEX IDX_EMPRESAS_CONTACTOS ON EMPRESAS_CONTACTOS (ID_EMPRESA, ID_CONTACTO); +CREATE INDEX IDX_EMPRESAS_USUARIOS ON EMPRESAS_USUARIOS (ID_EMPRESA, ID_USUARIO); CREATE INDEX IDX_FACTURAS_CLIENTE ON FACTURAS_CLIENTE (ID_FORMA_PAGO); CREATE INDEX IDX_FACTURAS_CLIENTE1 ON FACTURAS_CLIENTE (ID_TIPO_IVA); CREATE INDEX IDX_FACTURAS_CLIENTE2 ON FACTURAS_CLIENTE (ID_COMISION_LIQUIDADA); @@ -2799,9 +2590,9 @@ CREATE INDEX IDX_FACTURAS_PROVEEDOR ON FACTURAS_PROVEEDOR (ID_PROVEEDOR); CREATE INDEX IDX_FACTURAS_PROVEEDOR1 ON FACTURAS_PROVEEDOR (ID_FORMA_PAGO); CREATE INDEX IDX_FACTURAS_PROVEEDOR2 ON FACTURAS_PROVEEDOR (ID_TIPO_IVA); CREATE INDEX IDX_FACTURAS_PROVEEDOR_DETALLES ON FACTURAS_PROVEEDOR_DETALLES (ID_ARTICULO); -CREATE INDEX FORMAS_PAGO_PLAZOS_IDX1 ON FORMAS_PAGO_PLAZOS (ID_FORMA_PAGO); +CREATE INDEX IDX_FORMAS_PAGO_PLAZOS ON FORMAS_PAGO_PLAZOS (ID_FORMA_PAGO); CREATE INDEX IDX_INFORMES ON INFORMES (ID_EMPRESA); -CREATE INDEX MOVIMIENTOS_IDX1 ON MOVIMIENTOS (TIPO); +CREATE INDEX IDX_MOVIMIENTOS ON MOVIMIENTOS (TIPO); CREATE INDEX IDX_PEDIDOS_CLIENTE ON PEDIDOS_CLIENTE (ID_FORMA_PAGO); CREATE INDEX IDX_PEDIDOS_CLIENTE_DETALLES ON PEDIDOS_CLIENTE_DETALLES (ID_PEDIDO); CREATE INDEX IDX_PEDIDOS_CLIENTE_DETALLES1 ON PEDIDOS_CLIENTE_DETALLES (ID_ARTICULO); @@ -2825,17 +2616,17 @@ CREATE INDEX IDX_REMESAS_PROVEEDOR ON REMESAS_PROVEEDOR (ID_DATOS_BANCO); SET TERM ^ ; -ALTER PROCEDURE PRO_PRES_CAPITULOS ( - AID INTEGER) -RETURNS ( - ID INTEGER, - ID_PRESUPUESTO INTEGER, - POSICION INTEGER, - TIPO_DETALLE VARCHAR(10), - CONCEPTO VARCHAR(2000), - IMPORTE_TOTAL NUMERIC(11,2), - VISIBLE SMALLINT) -AS +CREATE PROCEDURE PRO_PRES_CAPITULOS ( + aid integer) +returns ( + id integer, + id_presupuesto integer, + posicion integer, + tipo_detalle varchar(10), + concepto varchar(2000), + importe_total numeric(11,2), + visible smallint) +as declare variable num_filas integer; declare variable contador integer; declare variable existe numeric(11,2); @@ -2904,34 +2695,40 @@ begin for select id, id_presupuesto, posicion, tipo_detalle, F_RTFTOTEXT(concepto) as concepto, importe_total, coalesce(visible, 1) from presupuestos_cliente_detalles - where tipo_detalle <> 'Concepto' and id_presupuesto = :AID + where tipo_detalle = 'Titulo' and id_presupuesto = :AID order by id_presupuesto, posicion into :ID, :ID_PRESUPUESTO, :POSICION, :TIPO_DETALLE, :CONCEPTO, :IMPORTE_TOTAL, :VISIBLE do suspend; -end -^ +end^ -ALTER PROCEDURE PRO_PRES_CAPITULOS_CONCEPTOS ( - AID INTEGER) -RETURNS ( - ID INTEGER, - ID_PRESUPUESTO INTEGER, - POSICION INTEGER, - TIPO_DETALLE VARCHAR(10), - ID_CAPITULO INTEGER, - ID_ARTICULO INTEGER, - REFERENCIA VARCHAR(255), - CONCEPTO VARCHAR(2000), - CANTIDAD INTEGER, - IMPORTE_UNIDAD NUMERIC(11,2), - DESCUENTO FLOAT, - IMPORTE_PORTE NUMERIC(11,2), - IMPORTE_TOTAL NUMERIC(11,2), - VISIBLE SMALLINT) -AS +SET TERM ; ^ + +GRANT SELECT ON PRESUPUESTOS_CLIENTE_DETALLES TO PROCEDURE PRO_PRES_CAPITULOS; +GRANT EXECUTE ON PROCEDURE PRO_PRES_CAPITULOS TO "PUBLIC"; + +SET TERM ^ ; + +CREATE PROCEDURE PRO_PRES_CAPITULOS_CONCEPTOS ( + aid integer) +returns ( + id integer, + id_presupuesto integer, + posicion integer, + tipo_detalle varchar(10), + id_capitulo integer, + id_articulo integer, + referencia varchar(255), + concepto varchar(2000), + cantidad integer, + importe_unidad numeric(11,2), + descuento float, + importe_porte numeric(11,2), + importe_total numeric(11,2), + visible smallint) +as declare variable capitulo_actual integer; begin capitulo_actual = -1; @@ -2957,8 +2754,109 @@ do else suspend; end -end -^ +end^ + +SET TERM ; ^ + +GRANT SELECT ON PRESUPUESTOS_CLIENTE_DETALLES TO PROCEDURE PRO_PRES_CAPITULOS_CONCEPTOS; +GRANT SELECT ON ARTICULOS TO PROCEDURE PRO_PRES_CAPITULOS_CONCEPTOS; +GRANT EXECUTE ON PROCEDURE PRO_PRES_CAPITULOS_CONCEPTOS TO "PUBLIC"; + +SET TERM ^ ; + +CREATE PROCEDURE PRO_PRES_RESUMEN ( + aid integer) +returns ( + id integer, + id_presupuesto integer, + posicion integer, + tipo_detalle varchar(10), + concepto varchar(2000), + importe_total numeric(11,2), + visible smallint) +as +declare variable num_capitulos integer; +declare variable num_filas integer; +declare variable contador integer; +declare variable existe numeric(11,2); +declare variable total_acumulado numeric(11,2); +declare variable concepto_capitulo varchar(2000) character set iso8859_1; +begin + existe = 0; + total_acumulado = 0.0; + contador = 0; + num_filas = 0; + num_capitulos = 0; + concepto_capitulo = ''; + + /* ¿Existe el presupuesto? */ + for select count(*) + from presupuestos_cliente_detalles + where id_presupuesto = :AID + into :num_filas + do + begin + if (num_filas = 0) then + suspend; + end + + /* Ver si hay conceptos al principio sin capitulos */ + for select id, id_presupuesto, posicion, tipo_detalle + from presupuestos_cliente_detalles + where id_presupuesto = :AID + order by id_presupuesto, posicion + rows 1 + into :ID, :ID_PRESUPUESTO, :POSICION, :TIPO_DETALLE + do + begin + if (TIPO_DETALLE = 'Concepto') then + EXISTE = 1; + end + + if (existe = 1) then + begin + contador = 0; + /* Existen conceptos sin capitulo */ + for select tipo_detalle, importe_total, coalesce(visible, 1) + from presupuestos_cliente_detalles + where id_presupuesto = :AID + order by id_presupuesto, posicion + into :TIPO_DETALLE, :IMPORTE_TOTAL, :VISIBLE + do + begin + contador = contador + 1; + if ((tipo_detalle <> 'Concepto') or (contador = num_filas)) then + begin + importe_total = total_acumulado; + tipo_detalle = 'Titulo'; + concepto = 'General'; + visible = 1; + ID = -1; + posicion = -1; + suspend; + break; + end + else begin + if (visible <> 0) then + total_acumulado = total_acumulado + importe_total; + end + end + end -SET TERM ; ^ \ No newline at end of file + /* Tratar el resto de las filas */ + for select id, id_presupuesto, posicion, tipo_detalle, F_RTFTOTEXT(concepto) as concepto, + importe_total, coalesce(visible, 1) + from presupuestos_cliente_detalles + where tipo_detalle = 'Subtotal' and id_presupuesto = :AID + order by id_presupuesto, posicion + into :ID, :ID_PRESUPUESTO, :POSICION, :TIPO_DETALLE, :CONCEPTO, + :IMPORTE_TOTAL, :VISIBLE + do + suspend; +end^ + +SET TERM ; ^ + +GRANT SELECT ON PRESUPUESTOS_CLIENTE_DETALLES TO PROCEDURE PRO_PRES_RESUMEN; +GRANT EXECUTE ON PROCEDURE PRO_PRES_RESUMEN TO "PUBLIC"; diff --git a/Database/scripts/factuges_sysdata.sql b/Database/scripts/factuges_sysdata.sql index 04313688..2066b0f2 100644 --- a/Database/scripts/factuges_sysdata.sql +++ b/Database/scripts/factuges_sysdata.sql @@ -117,3 +117,8 @@ INSERT INTO UNIDADES_MEDIDA (ID, DESCRIPCION) VALUES (15, 'COCINA'); INSERT INTO UNIDADES_MEDIDA (ID, DESCRIPCION) VALUES (16, 'ARMARIOS'); SET GENERATOR GEN_UNIDADES_MEDIDA_ID TO 17; COMMIT WORK; + + +INSERT INTO EMPRESAS (ID, NIF_CIF, NOMBRE, RAZON_SOCIAL, CALLE, POBLACION, PROVINCIA, CODIGO_POSTAL, TELEFONO_1, TELEFONO_2, MOVIL_1, MOVIL_2, FAX, EMAIL_1, EMAIL_2, PAGINA_WEB, FECHA_ALTA, FECHA_MODIFICACION, USUARIO, REGISTRO_MERCANTIL, IVA) VALUES (1, 'B81747396', 'TECSITEL S.L.', 'TECSITEL S.L.', 'C\ Buendía, 25', 'MADRID', 'MADRID', '28053', '91-507-56-92 / 63', NULL, NULL, NULL, '91-785-96-35', 'tecsitel@tecsitel.com', NULL, 'www.tecsitel.com', '2008-01-14 11:53:52', NULL, 'Administrador', 'Insc. en el Reg. Merc. de Madrid, Tomo 12.291, Libro 0, Folio 131, Sección 8, Hoja M-194886 CIF: B81747396', NULL); +SET GENERATOR GEN_EMPRESAS_ID TO 2; +COMMIT WORK; diff --git a/Source/Base/Base.dproj b/Source/Base/Base.dproj index 8cd78f35..c89094a1 100644 --- a/Source/Base/Base.dproj +++ b/Source/Base/Base.dproj @@ -44,8 +44,6 @@ Package FalseTrueFalseLibreria base de FactuGESTrueFalseFalseTrueFalse1000FalseFalseFalseFalseFalse308212521.0.0.01.0.0.0 - - Microsoft Office 2000 Sample Automation Server Wrapper Components Microsoft Office XP Sample Automation Server Wrapper Components Base.dpk @@ -55,57 +53,57 @@ MainSource + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
fConfigurarConexion
TForm diff --git a/Source/Cliente/FactuGES.rc b/Source/Cliente/FactuGES.rc index 3a2145a3..4be492fe 100644 --- a/Source/Cliente/FactuGES.rc +++ b/Source/Cliente/FactuGES.rc @@ -15,8 +15,7 @@ BEGIN VALUE "CompanyName", "Rodax Software S.L.\0" VALUE "FileVersion", "1.0.0.0\0" VALUE "InternalName", "FactuGES\0" - VALUE "ProductName", "FactuGES\0" - VALUE "ProductVersion", "2.1.4\0" + VALUE "ProductVersion", "1.0.0.0\0" END END BLOCK "VarFileInfo" diff --git a/Source/Cliente/FactuGES.res b/Source/Cliente/FactuGES.res index 35af6f796cff20404bd6514046757a8219f161c3..ef3676423ad59b9e4e13001ebad3409d67da8262 100644 GIT binary patch delta 308 zcmY+9y^6w65QV=xMvd`@fK3F8hzMIr7HkEvF%Mv^B3tZRn8Lyb5N@McOCP{e*e&-l z#M*wh(<=!H9vFs?Gjo`^{5ZRBCt9nMSo>ArIyEvWYPc>aJU)xho{5d^8%fO1Yf=GcrziTO5$3SpSgW(p3AMY_0!Dp8b9+RsDbtiU(@ zes@h7Fbc>YIxBtMOW3r`Bd==fVJuzwM=xWU>02xxg#oty`;t!moxX`lOScX(c>uL@ BDZKyy delta 503 zcmY+9zfQtX6vlt|3J8^$CN7LsqoPw^z=Wt#2BQwRD)=XbC_)eiCptLr047}o);@rf ziP6!gFvb_b)7~O_lG}T~oZolO*QYn@>)rAn)U!?vdbVxl`7K2r+Xh9JdOEs|a;T?3 zQz)3;M+RmR<tAc*c|F*{i1@ip*~sP5J0g@ zgKI9?k#oyA9no#N@@;Wr{K4x`d%e{d-xtiICYEgh+T6zmkGfb)nXyx@B1DY~@ipb{ za3yOdW!S@HMne`xlP8fP)f8V`MV8_KM*_EG+?{0Ya_|=sPC^E2BfY2yjz@a$2hXlW AWdHyG diff --git a/Source/GUIBase/GUIBase.dproj b/Source/GUIBase/GUIBase.dproj index 37767160..429c936b 100644 --- a/Source/GUIBase/GUIBase.dproj +++ b/Source/GUIBase/GUIBase.dproj @@ -58,22 +58,22 @@ MainSource - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + +
fDialogBase
diff --git a/Source/Modulos/Albaranes de cliente/Servidor/srvAlbaranesCliente_Impl.dfm b/Source/Modulos/Albaranes de cliente/Servidor/srvAlbaranesCliente_Impl.dfm index 62353d58..4932ad2c 100644 --- a/Source/Modulos/Albaranes de cliente/Servidor/srvAlbaranesCliente_Impl.dfm +++ b/Source/Modulos/Albaranes de cliente/Servidor/srvAlbaranesCliente_Impl.dfm @@ -577,6 +577,10 @@ object srvAlbaranesCliente: TsrvAlbaranesCliente Name = 'FECHA_ALBARAN' Value = '' end + item + Name = 'TIPO' + Value = '' + end item Name = 'REFERENCIA' Value = '' @@ -700,22 +704,22 @@ object srvAlbaranesCliente: TsrvAlbaranesCliente TargetTable = 'ALBARANES_CLIENTE' SQL = 'INSERT'#10' INTO ALBARANES_CLIENTE'#10' (ID, ID_EMPRESA, ID_CLIENTE,' + - ' FECHA_ALBARAN, REFERENCIA,'#10' REFERENCIA_CLIENTE, ID_ALMACEN,' + - ' ID_PEDIDO, ID_FACTURA, CALLE,'#10' CODIGO_POSTAL, POBLACION, PR' + - 'OVINCIA, PERSONA_CONTACTO, '#10' TELEFONO, IMPORTE_NETO, IMPORTE' + - '_PORTE, DESCUENTO, IMPORTE_DESCUENTO, '#10' BASE_IMPONIBLE, IVA,' + - ' IMPORTE_IVA, IMPORTE_TOTAL, OBSERVACIONES, '#10' INCIDENCIAS, I' + - 'NCIDENCIAS_ACTIVAS, FECHA_ALTA, FECHA_MODIFICACION, '#10' USUARI' + - 'O, ID_FORMA_PAGO, FECHA_PREVISTA_ENVIO, FECHA_ENVIO, '#10' FECHA' + - '_RECEPCION)'#10' VALUES'#10' (:ID, :ID_EMPRESA, :ID_CLIENTE, :FECHA_' + - 'ALBARAN, :REFERENCIA,'#10' :REFERENCIA_CLIENTE, :ID_ALMACEN, :ID' + - '_PEDIDO, :ID_FACTURA, :CALLE,'#10' :CODIGO_POSTAL, :POBLACION, :' + - 'PROVINCIA, :PERSONA_CONTACTO,'#10' :TELEFONO, :IMPORTE_NETO, :IM' + - 'PORTE_PORTE, :DESCUENTO, :IMPORTE_DESCUENTO,'#10' :BASE_IMPONIBL' + - 'E, :IVA, :IMPORTE_IVA, :IMPORTE_TOTAL, :OBSERVACIONES,'#10' :INC' + - 'IDENCIAS, :INCIDENCIAS_ACTIVAS, :FECHA_ALTA, :FECHA_MODIFICACION' + - ','#10' :USUARIO, :ID_FORMA_PAGO, :FECHA_PREVISTA_ENVIO, :FECHA_E' + - 'NVIO, :FECHA_RECEPCION)'#10' '#10' '#10#10 + ' FECHA_ALBARAN, TIPO, REFERENCIA,'#10' REFERENCIA_CLIENTE, ID_AL' + + 'MACEN, ID_PEDIDO, ID_FACTURA, CALLE,'#10' CODIGO_POSTAL, POBLACI' + + 'ON, PROVINCIA, PERSONA_CONTACTO, '#10' TELEFONO, IMPORTE_NETO, I' + + 'MPORTE_PORTE, DESCUENTO, IMPORTE_DESCUENTO, '#10' BASE_IMPONIBLE' + + ', IVA, IMPORTE_IVA, IMPORTE_TOTAL, OBSERVACIONES, '#10' INCIDENC' + + 'IAS, INCIDENCIAS_ACTIVAS, FECHA_ALTA, FECHA_MODIFICACION, '#10' ' + + 'USUARIO, ID_FORMA_PAGO, FECHA_PREVISTA_ENVIO, FECHA_ENVIO, '#10' ' + + ' FECHA_RECEPCION)'#10' VALUES'#10' (:ID, :ID_EMPRESA, :ID_CLIENTE, :' + + 'FECHA_ALBARAN, :TIPO, :REFERENCIA,'#10' :REFERENCIA_CLIENTE, :ID' + + '_ALMACEN, :ID_PEDIDO, :ID_FACTURA, :CALLE,'#10' :CODIGO_POSTAL, ' + + ':POBLACION, :PROVINCIA, :PERSONA_CONTACTO,'#10' :TELEFONO, :IMPO' + + 'RTE_NETO, :IMPORTE_PORTE, :DESCUENTO, :IMPORTE_DESCUENTO,'#10' :' + + 'BASE_IMPONIBLE, :IVA, :IMPORTE_IVA, :IMPORTE_TOTAL, :OBSERVACION' + + 'ES,'#10' :INCIDENCIAS, :INCIDENCIAS_ACTIVAS, :FECHA_ALTA, :FECHA' + + '_MODIFICACION,'#10' :USUARIO, :ID_FORMA_PAGO, :FECHA_PREVISTA_EN' + + 'VIO, :FECHA_ENVIO, :FECHA_RECEPCION)'#10' '#10' '#10#10 StatementType = stSQL ColumnMappings = <> end> @@ -740,10 +744,6 @@ object srvAlbaranesCliente: TsrvAlbaranesCliente end item Params = < - item - Name = 'ID' - Value = '' - end item Name = 'ID_EMPRESA' Value = '' @@ -756,6 +756,10 @@ object srvAlbaranesCliente: TsrvAlbaranesCliente Name = 'FECHA_ALBARAN' Value = '' end + item + Name = 'TIPO' + Value = '' + end item Name = 'REFERENCIA' Value = '' @@ -882,25 +886,25 @@ object srvAlbaranesCliente: TsrvAlbaranesCliente Default = True TargetTable = 'ALBARANES_CLIENTE' SQL = - 'UPDATE ALBARANES_CLIENTE'#10' SET '#10' ID = :ID,'#10' ID_EMPRESA = :' + - 'ID_EMPRESA, '#10' ID_CLIENTE = :ID_CLIENTE, '#10' FECHA_ALBARAN = ' + - ':FECHA_ALBARAN,'#10' REFERENCIA = :REFERENCIA, '#10' REFERENCIA_CL' + - 'IENTE = :REFERENCIA_CLIENTE, '#10' ID_ALMACEN = :ID_ALMACEN,'#10' ' + - 'ID_PEDIDO = :ID_PEDIDO,'#10' ID_FACTURA = :ID_FACTURA,'#10' CALLE ' + - '= :CALLE,'#10' CODIGO_POSTAL = :CODIGO_POSTAL, '#10' POBLACION = :' + - 'POBLACION, '#10' PROVINCIA = :PROVINCIA, '#10' PERSONA_CONTACTO = ' + - ':PERSONA_CONTACTO, '#10' TELEFONO = :TELEFONO, '#10' IMPORTE_NETO ' + - '= :IMPORTE_NETO, '#10' IMPORTE_PORTE = :IMPORTE_PORTE, '#10' DESCU' + - 'ENTO = :DESCUENTO, '#10' IMPORTE_DESCUENTO = :IMPORTE_DESCUENTO, ' + - #10' BASE_IMPONIBLE = :BASE_IMPONIBLE, '#10' IVA = :IVA, '#10' IMP' + - 'ORTE_IVA = :IMPORTE_IVA, '#10' IMPORTE_TOTAL = :IMPORTE_TOTAL, '#10' ' + - ' OBSERVACIONES = :OBSERVACIONES, '#10' INCIDENCIAS = :INCIDENCI' + - 'AS, '#10' INCIDENCIAS_ACTIVAS = :INCIDENCIAS_ACTIVAS, '#10' FECHA_' + - 'ALTA = :FECHA_ALTA, '#10' FECHA_MODIFICACION = :FECHA_MODIFICACIO' + - 'N, '#10' USUARIO = :USUARIO, '#10' ID_FORMA_PAGO = :ID_FORMA_PAGO,' + - ' '#10' FECHA_PREVISTA_ENVIO = :FECHA_PREVISTA_ENVIO, '#10' FECHA_E' + - 'NVIO = :FECHA_ENVIO, '#10' FECHA_RECEPCION = :FECHA_RECEPCION'#10' W' + - 'HERE'#10' (ID = :OLD_ID)'#10 + 'UPDATE ALBARANES_CLIENTE'#10' SET '#10' ID_EMPRESA = :ID_EMPRESA,'#10' ' + + ' ID_CLIENTE = :ID_CLIENTE, '#10' FECHA_ALBARAN = :FECHA_ALBARAN,' + + #10' TIPO = :TIPO,'#10' REFERENCIA = :REFERENCIA, '#10' REFERENCIA' + + '_CLIENTE = :REFERENCIA_CLIENTE, '#10' ID_ALMACEN = :ID_ALMACEN,'#10' ' + + ' ID_PEDIDO = :ID_PEDIDO,'#10' ID_FACTURA = :ID_FACTURA,'#10' CAL' + + 'LE = :CALLE,'#10' CODIGO_POSTAL = :CODIGO_POSTAL, '#10' POBLACION ' + + '= :POBLACION, '#10' PROVINCIA = :PROVINCIA, '#10' PERSONA_CONTACTO' + + ' = :PERSONA_CONTACTO, '#10' TELEFONO = :TELEFONO, '#10' IMPORTE_NE' + + 'TO = :IMPORTE_NETO, '#10' IMPORTE_PORTE = :IMPORTE_PORTE, '#10' DE' + + 'SCUENTO = :DESCUENTO, '#10' IMPORTE_DESCUENTO = :IMPORTE_DESCUENT' + + 'O, '#10' BASE_IMPONIBLE = :BASE_IMPONIBLE, '#10' IVA = :IVA, '#10' ' + + 'IMPORTE_IVA = :IMPORTE_IVA, '#10' IMPORTE_TOTAL = :IMPORTE_TOTAL,' + + ' '#10' OBSERVACIONES = :OBSERVACIONES, '#10' INCIDENCIAS = :INCIDE' + + 'NCIAS, '#10' INCIDENCIAS_ACTIVAS = :INCIDENCIAS_ACTIVAS, '#10' FEC' + + 'HA_ALTA = :FECHA_ALTA, '#10' FECHA_MODIFICACION = :FECHA_MODIFICA' + + 'CION, '#10' USUARIO = :USUARIO, '#10' ID_FORMA_PAGO = :ID_FORMA_PA' + + 'GO, '#10' FECHA_PREVISTA_ENVIO = :FECHA_PREVISTA_ENVIO, '#10' FECH' + + 'A_ENVIO = :FECHA_ENVIO, '#10' FECHA_RECEPCION = :FECHA_RECEPCION'#10 + + ' WHERE'#10' (ID = :OLD_ID)'#10 StatementType = stSQL ColumnMappings = <> end> diff --git a/Source/Modulos/Contactos/Data/uDataModuleClientes.dfm b/Source/Modulos/Contactos/Data/uDataModuleClientes.dfm index f53d5462..ff0aea99 100644 --- a/Source/Modulos/Contactos/Data/uDataModuleClientes.dfm +++ b/Source/Modulos/Contactos/Data/uDataModuleClientes.dfm @@ -473,11 +473,20 @@ inherited DataModuleClientes: TDataModuleClientes object tbl_GruposCliente: TDAMemDataTable RemoteUpdatesOptions = [] Fields = < + item + Name = 'ID' + DataType = datAutoInc + GeneratorName = 'GEN_CLIENTES_GRUPOS_ID' + Required = True + DictionaryEntry = 'GruposCliente_ID' + InPrimaryKey = True + end item Name = 'DESCRIPCION' DataType = datString Size = 255 - DisplayLabel = 'Descripci'#195#179'n' + DisplayLabel = 'Descripci'#243'n' + DictionaryEntry = 'GruposCliente_DESCRIPCION' end> Params = <> StreamingOptions = [soDisableEventsWhileStreaming] diff --git a/Source/Modulos/Contactos/Data/uDataModuleEmpleados.dfm b/Source/Modulos/Contactos/Data/uDataModuleEmpleados.dfm index d80d16ea..fbc9a308 100644 --- a/Source/Modulos/Contactos/Data/uDataModuleEmpleados.dfm +++ b/Source/Modulos/Contactos/Data/uDataModuleEmpleados.dfm @@ -386,11 +386,20 @@ inherited DataModuleEmpleados: TDataModuleEmpleados object tbl_GruposEmpleado: TDAMemDataTable RemoteUpdatesOptions = [] Fields = < + item + Name = 'ID' + DataType = datAutoInc + GeneratorName = 'GEN_EMPLEADOS_GRUPOS_ID' + Required = True + DictionaryEntry = 'GruposEmpleado_ID' + InPrimaryKey = True + end item Name = 'DESCRIPCION' DataType = datString Size = 255 - DisplayLabel = 'Descripci'#195#179'n' + DisplayLabel = 'Descripci'#243'n' + DictionaryEntry = 'GruposEmpleado_DESCRIPCION' end> Params = <> StreamingOptions = [soDisableEventsWhileStreaming] diff --git a/Source/Modulos/Contactos/Data/uDataModuleProveedores.dfm b/Source/Modulos/Contactos/Data/uDataModuleProveedores.dfm index acc78d38..1b6a286f 100644 --- a/Source/Modulos/Contactos/Data/uDataModuleProveedores.dfm +++ b/Source/Modulos/Contactos/Data/uDataModuleProveedores.dfm @@ -13,11 +13,20 @@ inherited DataModuleProveedores: TDataModuleProveedores object tbl_GruposProveedor: TDAMemDataTable RemoteUpdatesOptions = [] Fields = < + item + Name = 'ID' + DataType = datAutoInc + GeneratorName = 'GEN_PROVEEDORES_GRUPOS_ID' + Required = True + DictionaryEntry = 'GruposProveedor_ID' + InPrimaryKey = True + end item Name = 'DESCRIPCION' DataType = datString Size = 255 - DisplayLabel = 'Descripci'#195#179'n' + DisplayLabel = 'Descripci'#243'n' + DictionaryEntry = 'GruposProveedor_DESCRIPCION' end> Params = <> StreamingOptions = [soDisableEventsWhileStreaming] diff --git a/Source/Modulos/Contactos/Model/Contactos_model.dproj b/Source/Modulos/Contactos/Model/Contactos_model.dproj index 9374c0a5..e85714a2 100644 --- a/Source/Modulos/Contactos/Model/Contactos_model.dproj +++ b/Source/Modulos/Contactos/Model/Contactos_model.dproj @@ -50,17 +50,16 @@ MainSource - - - - - + + + + @@ -70,11 +69,12 @@ +