/******************************************************************************/ /**** Generated by IBExpert 2007.05.03 23/09/2008 10:55:38 ****/ /******************************************************************************/ SET SQL DIALECT 3; SET NAMES ISO8859_1; CREATE DATABASE 'FACTUGES.FDB' PAGE_SIZE 4096 DEFAULT CHARACTER SET ISO8859_1; /******************************************************************************/ /**** User Defined Functions ****/ /******************************************************************************/ DECLARE EXTERNAL FUNCTION F_RTFTOTEXT CString(32767) RETURNS CString(32767) ENTRY_POINT 'RtfToText' MODULE_NAME 'udf_RtfToText.dll'; DECLARE EXTERNAL FUNCTION "MOD" INTEGER, INTEGER RETURNS DOUBLE PRECISION BY VALUE ENTRY_POINT 'IB_UDF_mod' MODULE_NAME 'ib_udf'; DECLARE EXTERNAL FUNCTION STRLEN CSTRING(254) RETURNS INTEGER BY VALUE ENTRY_POINT 'IB_UDF_strlen' MODULE_NAME 'ib_udf'; DECLARE EXTERNAL FUNCTION SUBSTR CSTRING(254), SMALLINT, SMALLINT RETURNS CSTRING(254) FREE_IT ENTRY_POINT 'IB_UDF_substr' MODULE_NAME 'ib_udf'; DECLARE EXTERNAL FUNCTION DIV INTEGER, INTEGER RETURNS DOUBLE PRECISION BY VALUE ENTRY_POINT 'IB_UDF_div' MODULE_NAME 'ib_udf'; /******************************************************************************/ /**** Domains ****/ /******************************************************************************/ CREATE DOMAIN TIPO_BINARIO AS BLOB SUB_TYPE 0 SEGMENT SIZE 80; CREATE DOMAIN TIPO_BOOLEANO AS SMALLINT; CREATE DOMAIN TIPO_CANTIDAD AS NUMERIC(11,2); CREATE DOMAIN TIPO_CONCEPTO AS VARCHAR(2000); CREATE DOMAIN TIPO_ID AS INTEGER; CREATE DOMAIN TIPO_IMPORTE AS NUMERIC(11,2); CREATE DOMAIN TIPO_NOTAS AS BLOB SUB_TYPE 1 SEGMENT SIZE 80; CREATE DOMAIN TIPO_PERFIL AS VARCHAR(15); CREATE DOMAIN TIPO_PORCENTAJE AS NUMERIC(2,2); CREATE DOMAIN TIPO_USUARIO AS VARCHAR(30); /******************************************************************************/ /**** Generators ****/ /******************************************************************************/ CREATE GENERATOR GEN_AGENTES_COMISIONES_ID; SET GENERATOR GEN_AGENTES_COMISIONES_ID TO 1; CREATE GENERATOR GEN_ALBARANES_CLI_DETALLES_ID; SET GENERATOR GEN_ALBARANES_CLI_DETALLES_ID TO 1; CREATE GENERATOR GEN_ALBARANES_CLI_ID; SET GENERATOR GEN_ALBARANES_CLI_ID TO 1; CREATE GENERATOR GEN_ALBARANES_PRO_DETALLES_ID; SET GENERATOR GEN_ALBARANES_PRO_DETALLES_ID TO 1; CREATE GENERATOR GEN_ALBARANES_PRO_ID; SET GENERATOR GEN_ALBARANES_PRO_ID TO 1; CREATE GENERATOR GEN_ALMACENES_ID; SET GENERATOR GEN_ALMACENES_ID TO 1; CREATE GENERATOR GEN_ARTICULOS_ID; SET GENERATOR GEN_ARTICULOS_ID TO 1; CREATE GENERATOR GEN_ARTICULOS_PROVEEDORES_ID; SET GENERATOR GEN_ARTICULOS_PROVEEDORES_ID TO 1; CREATE GENERATOR GEN_CATEGORIAS_ID; SET GENERATOR GEN_CATEGORIAS_ID TO 1; CREATE GENERATOR GEN_CLIENTES_DTOS_PROV_ID; SET GENERATOR GEN_CLIENTES_DTOS_PROV_ID TO 1; CREATE GENERATOR GEN_CLIENTES_GRUPOS_ID; SET GENERATOR GEN_CLIENTES_GRUPOS_ID TO 1; CREATE GENERATOR GEN_COMISIONES_LIQUID_ID; SET GENERATOR GEN_COMISIONES_LIQUID_ID TO 1; CREATE GENERATOR GEN_CONFIGURACION_ID; SET GENERATOR GEN_CONFIGURACION_ID TO 1; CREATE GENERATOR GEN_CONTACTOS_DATOS_BANCO_ID; SET GENERATOR GEN_CONTACTOS_DATOS_BANCO_ID TO 1; CREATE GENERATOR GEN_CONTACTOS_DIR_ID; SET GENERATOR GEN_CONTACTOS_DIR_ID TO 1; CREATE GENERATOR GEN_CONTACTOS_ID; SET GENERATOR GEN_CONTACTOS_ID TO 1; CREATE GENERATOR GEN_CONTACTOS_PERSONAL_ID; SET GENERATOR GEN_CONTACTOS_PERSONAL_ID TO 1; CREATE GENERATOR GEN_EMPLEADOS_GRUPOS_ID; SET GENERATOR GEN_EMPLEADOS_GRUPOS_ID TO 1; CREATE GENERATOR GEN_EMPRESAS_CONTACTOS_ID; SET GENERATOR GEN_EMPRESAS_CONTACTOS_ID TO 1; CREATE GENERATOR GEN_EMPRESAS_DATOS_BANCO_ID; SET GENERATOR GEN_EMPRESAS_DATOS_BANCO_ID TO 1; CREATE GENERATOR GEN_EMPRESAS_ID; SET GENERATOR GEN_EMPRESAS_ID TO 1; CREATE GENERATOR GEN_EMPRESAS_USUARIOS_ID; SET GENERATOR GEN_EMPRESAS_USUARIOS_ID TO 1; CREATE GENERATOR GEN_FABRICANTES_ID; SET GENERATOR GEN_FABRICANTES_ID TO 1; CREATE GENERATOR GEN_FACTURAS_CLIENTE_ID; SET GENERATOR GEN_FACTURAS_CLIENTE_ID TO 1; CREATE GENERATOR GEN_FACTURAS_PROVEEDOR_ID; SET GENERATOR GEN_FACTURAS_PROVEEDOR_ID TO 1; CREATE GENERATOR GEN_FACTURA_CLIENTE_DETALLES_ID; SET GENERATOR GEN_FACTURA_CLIENTE_DETALLES_ID TO 1; CREATE GENERATOR GEN_FACTURA_PROV_DETALLES_ID; SET GENERATOR GEN_FACTURA_PROV_DETALLES_ID TO 1; CREATE GENERATOR GEN_FAMILIAS_ID; SET GENERATOR GEN_FAMILIAS_ID TO 1; CREATE GENERATOR GEN_FORMAS_PAGO_ID; SET GENERATOR GEN_FORMAS_PAGO_ID TO 1; CREATE GENERATOR GEN_FORMAS_PAGO_PLAZOS_ID; SET GENERATOR GEN_FORMAS_PAGO_PLAZOS_ID TO 1; CREATE GENERATOR GEN_INFORMES_ID; SET GENERATOR GEN_INFORMES_ID TO 1; CREATE GENERATOR GEN_MOVIMIENTOS_ID; SET GENERATOR GEN_MOVIMIENTOS_ID TO 1; CREATE GENERATOR GEN_OBRAS_EJECUCIONES_ID; SET GENERATOR GEN_OBRAS_EJECUCIONES_ID TO 1; CREATE GENERATOR GEN_OBRAS_EJEC_PRESUPUESTOS_ID; SET GENERATOR GEN_OBRAS_EJEC_PRESUPUESTOS_ID TO 1; CREATE GENERATOR GEN_OBRAS_EJEC_PEDIDOS_PROV_ID; SET GENERATOR GEN_OBRAS_EJEC_PEDIDOS_PROV_ID TO 1; CREATE GENERATOR GEN_PAGOS_CLIENTE_ID; SET GENERATOR GEN_PAGOS_CLIENTE_ID TO 1; CREATE GENERATOR GEN_PAGOS_PROVEEDOR_ID; SET GENERATOR GEN_PAGOS_PROVEEDOR_ID TO 1; CREATE GENERATOR GEN_PEDIDOS_CLI_DETALLES_ID; SET GENERATOR GEN_PEDIDOS_CLI_DETALLES_ID TO 1; CREATE GENERATOR GEN_PEDIDOS_CLI_ID; SET GENERATOR GEN_PEDIDOS_CLI_ID TO 1; CREATE GENERATOR GEN_PEDIDOS_PROV_DETALLES_ID; SET GENERATOR GEN_PEDIDOS_PROV_DETALLES_ID TO 1; CREATE GENERATOR GEN_PEDIDOS_PROV_ID; SET GENERATOR GEN_PEDIDOS_PROV_ID TO 1; CREATE GENERATOR GEN_PEDIDOS_PROV_PEDIDOS_ID; SET GENERATOR GEN_PEDIDOS_PROV_PEDIDOS_ID TO 1; CREATE GENERATOR GEN_PERMISOSEX_ID; SET GENERATOR GEN_PERMISOSEX_ID TO 1; CREATE GENERATOR GEN_PERMISOS_ID; SET GENERATOR GEN_PERMISOS_ID TO 1; CREATE GENERATOR GEN_PRESUPUESTOS_CLI_DETALLE_ID; SET GENERATOR GEN_PRESUPUESTOS_CLI_DETALLE_ID TO 1; CREATE GENERATOR GEN_PRESUPUESTOS_CLI_ID; SET GENERATOR GEN_PRESUPUESTOS_CLI_ID TO 1; CREATE GENERATOR GEN_PROVEEDORES_GRUPOS_ID; SET GENERATOR GEN_PROVEEDORES_GRUPOS_ID TO 1; CREATE GENERATOR GEN_RECIBOS_CLIENTE_ID; SET GENERATOR GEN_RECIBOS_CLIENTE_ID TO 1; CREATE GENERATOR GEN_RECIBOS_PROVEEDOR_ID; SET GENERATOR GEN_RECIBOS_PROVEEDOR_ID TO 1; CREATE GENERATOR GEN_REFERENCIAS_ID; SET GENERATOR GEN_REFERENCIAS_ID TO 1; CREATE GENERATOR GEN_REMESAS_CLIENTE_ID; SET GENERATOR GEN_REMESAS_CLIENTE_ID TO 1; CREATE GENERATOR GEN_REMESAS_PROVEEDOR_ID; SET GENERATOR GEN_REMESAS_PROVEEDOR_ID TO 1; CREATE GENERATOR GEN_TIENDA_WEB_ID; SET GENERATOR GEN_TIENDA_WEB_ID TO 1; CREATE GENERATOR GEN_TIPOS_IVA_ID; SET GENERATOR GEN_TIPOS_IVA_ID TO 1; CREATE GENERATOR GEN_UNIDADES_MEDIDA_ID; SET GENERATOR GEN_UNIDADES_MEDIDA_ID TO 1; CREATE GENERATOR GEN_USUARIOS_ID; SET GENERATOR GEN_USUARIOS_ID TO 1; /******************************************************************************/ /**** Tables ****/ /******************************************************************************/ CREATE TABLE PERIODOS_AUX ( ID INTEGER, PERIODO VARCHAR(20) COLLATE ES_ES, VALOR SMALLINT, DESCRIPCION VARCHAR(20) COLLATE ES_ES ); CREATE TABLE AGENTES_COMISIONES ( ID TIPO_ID NOT NULL, ID_AGENTE TIPO_ID DEFAULT 0 NOT NULL, ID_PROVEEDOR SMALLINT DEFAULT 0 NOT NULL, COMISION TIPO_PORCENTAJE DEFAULT 0 ); CREATE TABLE ALBARANES_CLIENTE ( ID TIPO_ID NOT NULL, ID_EMPRESA TIPO_ID, ID_CLIENTE TIPO_ID, FECHA_ALBARAN DATE, ID_ALMACEN TIPO_ID, ID_PEDIDO TIPO_ID, ID_FACTURA TIPO_ID, TIPO VARCHAR(1), REFERENCIA VARCHAR(255), ID_DIRECCION TIPO_ID, CALLE VARCHAR(255), CODIGO_POSTAL VARCHAR(10), POBLACION VARCHAR(255), PROVINCIA VARCHAR(255), PERSONA_CONTACTO VARCHAR(255), TELEFONO VARCHAR(25), IMPORTE_NETO TIPO_IMPORTE, IMPORTE_PORTE TIPO_IMPORTE, DESCUENTO TIPO_PORCENTAJE, IMPORTE_DESCUENTO TIPO_IMPORTE, BASE_IMPONIBLE TIPO_IMPORTE, IVA TIPO_PORCENTAJE, IMPORTE_IVA TIPO_IMPORTE, IMPORTE_TOTAL TIPO_IMPORTE, OBSERVACIONES TIPO_NOTAS, INCIDENCIAS TIPO_NOTAS, INCIDENCIAS_ACTIVAS SMALLINT DEFAULT 0 NOT NULL, FECHA_ALTA TIMESTAMP, FECHA_MODIFICACION TIMESTAMP, USUARIO TIPO_USUARIO, ID_FORMA_PAGO TIPO_ID, FECHA_ENVIO DATE, FECHA_RECEPCION DATE, FECHA_PREVISTA_ENVIO DATE, REFERENCIA_CLIENTE VARCHAR(255) ); CREATE TABLE ALBARANES_CLIENTE_DETALLES ( ID TIPO_ID NOT NULL, ID_ALBARAN TIPO_ID NOT NULL, POSICION INTEGER, TIPO_DETALLE VARCHAR(25), ID_ARTICULO TIPO_ID, CONCEPTO TIPO_CONCEPTO, CANTIDAD TIPO_CANTIDAD, UNIDAD_MEDIDA VARCHAR(255), IMPORTE_UNIDAD TIPO_IMPORTE, DESCUENTO TIPO_PORCENTAJE, IMPORTE_PORTE TIPO_IMPORTE, IMPORTE_TOTAL TIPO_IMPORTE, VISIBLE TIPO_BOOLEANO, FECHA_ALTA TIMESTAMP, FECHA_MODIFICACION TIMESTAMP, ID_PEDIDO TIPO_ID ); CREATE TABLE ALBARANES_PROVEEDOR ( ID TIPO_ID NOT NULL, ID_EMPRESA TIPO_ID, ID_PROVEEDOR TIPO_ID, ID_DIRECCION TIPO_ID, PERSONA_CONTACTO_PROV VARCHAR(255), FECHA_ALBARAN DATE, ID_PEDIDO TIPO_ID, ID_FACTURA TIPO_ID, TIPO VARCHAR(1), REFERENCIA VARCHAR(255), CALLE VARCHAR(255), CODIGO_POSTAL VARCHAR(10), POBLACION VARCHAR(255), PROVINCIA VARCHAR(255), PERSONA_CONTACTO VARCHAR(255), TELEFONO VARCHAR(25), BASE_IMPONIBLE TIPO_IMPORTE, DESCUENTO TIPO_PORCENTAJE, IMPORTE_DESCUENTO TIPO_IMPORTE, IVA TIPO_PORCENTAJE, IMPORTE_IVA TIPO_IMPORTE, IMPORTE_TOTAL TIPO_IMPORTE, OBSERVACIONES TIPO_NOTAS, INCIDENCIAS TIPO_NOTAS, INCIDENCIAS_ACTIVAS SMALLINT DEFAULT 0 NOT NULL, FECHA_ALTA TIMESTAMP, FECHA_MODIFICACION TIMESTAMP, USUARIO TIPO_USUARIO, ID_ALMACEN TIPO_ID, ID_FORMA_PAGO TIPO_ID, IMPORTE_NETO TIPO_IMPORTE, IMPORTE_PORTE TIPO_IMPORTE, REFERENCIA_PROVEEDOR VARCHAR(255), REF_FACTURA_PROV VARCHAR(255), ID_ALBARAN TIPO_ID ); CREATE TABLE ALBARANES_PROVEEDOR_DETALLES ( ID TIPO_ID NOT NULL, ID_ALBARAN TIPO_ID NOT NULL, POSICION INTEGER, TIPO_DETALLE VARCHAR(25), ID_ARTICULO TIPO_ID, CONCEPTO TIPO_CONCEPTO, CANTIDAD TIPO_CANTIDAD, UNIDAD_MEDIDA VARCHAR(255), IMPORTE_UNIDAD TIPO_IMPORTE, DESCUENTO TIPO_PORCENTAJE, IMPORTE_PORTE TIPO_IMPORTE, IMPORTE_TOTAL TIPO_IMPORTE, VISIBLE TIPO_BOOLEANO, FECHA_ALTA TIMESTAMP, FECHA_MODIFICACION TIMESTAMP, ID_PEDIDO TIPO_ID ); CREATE TABLE ALMACENES ( ID TIPO_ID NOT NULL, ID_EMPRESA TIPO_ID NOT NULL, TIPO_ALMACEN VARCHAR(10), NOMBRE VARCHAR(255), CALLE VARCHAR(255), PROVINCIA VARCHAR(255), POBLACION VARCHAR(255), CODIGO_POSTAL VARCHAR(10), TELEFONO VARCHAR(25), MOVIL VARCHAR(25), FAX VARCHAR(25), PERSONA_CONTACTO VARCHAR(255), OBSERVACIONES TIPO_NOTAS, FECHA_ALTA TIMESTAMP, FECHA_MODIFICACION TIMESTAMP, USUARIO TIPO_USUARIO ); CREATE TABLE ARTICULOS ( ID TIPO_ID NOT NULL, ID_EMPRESA TIPO_ID, REFERENCIA VARCHAR(255), DESCRIPCION VARCHAR(255), FAMILIA VARCHAR(255), UNIDAD_MEDIDA VARCHAR(255), IMAGEN TIPO_BINARIO, COMISIONABLE TIPO_BOOLEANO, FABRICANTE VARCHAR(255), REFERENCIA_FABR VARCHAR(255), FECHA_ALTA TIMESTAMP, FECHA_MODIFICACION TIMESTAMP, USUARIO TIPO_USUARIO, INVENTARIABLE TIPO_BOOLEANO, ELIMINADO TIPO_BOOLEANO, PARAM_MARGEN FLOAT, TIEMPO INTEGER, PARAM_TIEMPO FLOAT, MANO_OBRA TIPO_IMPORTE ); CREATE TABLE ARTICULOS_PROVEEDORES ( ID TIPO_ID NOT NULL, ID_ARTICULO TIPO_ID, ID_PROVEEDOR TIPO_ID, REFERENCIA_PROV VARCHAR(255), PRECIO_COSTE TIPO_IMPORTE, DESCUENTO TIPO_PORCENTAJE, PRECIO_NETO TIPO_IMPORTE, PRECIO_PORTE TIPO_IMPORTE, PRECIO_PVP_VENTA TIPO_IMPORTE, PRECIO_PVP_TOTAL TIPO_IMPORTE, FECHA_ACTUALIZACION DATE ); CREATE TABLE CATEGORIAS ( ID TIPO_ID NOT NULL, CATEGORIA VARCHAR(255) NOT NULL ); CREATE TABLE CLIENTES_DATOS ( ID_CLIENTE TIPO_ID NOT NULL, ID_AGENTE TIPO_ID, GRUPO_CLIENTE VARCHAR(255), NOMBRE_COMERCIAL VARCHAR(255), VENCIMIENTO_FACTURAS INTEGER, BLOQUEADO TIPO_BOOLEANO DEFAULT 0 NOT NULL, REGIMEN_IVA VARCHAR(255), MOTIVO_BLOQUEO VARCHAR(255), RECARGO_EQUIVALENCIA TIPO_BOOLEANO, ID_TIPO_IVA TIPO_ID, ID_FORMA_PAGO TIPO_ID, TIENDA_WEB TIPO_BOOLEANO, DESCUENTO TIPO_PORCENTAJE, CODIGO_ASIGNADO VARCHAR(255), VENCIMIENTO_FACTURAS_1 SMALLINT, VENCIMIENTO_FACTURAS_2 SMALLINT, VENCIMIENTO_FACTURAS_3 SMALLINT, FELICITACION TIPO_BOOLEANO ); CREATE TABLE CLIENTES_DTOS_PROVEEDORES ( ID TIPO_ID NOT NULL, ID_CLIENTE TIPO_ID DEFAULT 0 NOT NULL, ID_PROVEEDOR SMALLINT DEFAULT 0 NOT NULL, DESCUENTO TIPO_PORCENTAJE DEFAULT 0 ); CREATE TABLE CLIENTES_GRUPOS ( ID TIPO_ID NOT NULL, DESCRIPCION VARCHAR(255) ); CREATE TABLE COMISIONES_LIQUIDADAS ( ID TIPO_ID NOT NULL, ID_EMPRESA TIPO_ID, REFERENCIA VARCHAR(255), ID_AGENTE TIPO_ID, DESCRIPCION VARCHAR(255), FECHA DATE, IMPORTE_TOTAL TIPO_IMPORTE, FECHA_ALTA TIMESTAMP, FECHA_MODIFICACION TIMESTAMP, USUARIO TIPO_USUARIO ); CREATE TABLE CONFIGURACION ( ID TIPO_ID NOT NULL, CODIGO VARCHAR(50) NOT NULL, VALOR VARCHAR(255) NOT NULL, ID_EMPRESA TIPO_ID ); CREATE TABLE CONTACTOS ( ID TIPO_ID NOT NULL, NIF_CIF VARCHAR(15), NOMBRE VARCHAR(255) NOT NULL, CALLE VARCHAR(255), POBLACION VARCHAR(255), PROVINCIA VARCHAR(255), CODIGO_POSTAL VARCHAR(10), TELEFONO_1 VARCHAR(25), TELEFONO_2 VARCHAR(25), MOVIL_1 VARCHAR(25), MOVIL_2 VARCHAR(25), FAX VARCHAR(25), EMAIL_1 VARCHAR(255), EMAIL_2 VARCHAR(255), PAGINA_WEB VARCHAR(255), NOTAS TIPO_NOTAS, FECHA_ALTA TIMESTAMP, FECHA_MODIFICACION TIMESTAMP, USUARIO TIPO_USUARIO, REFERENCIA VARCHAR(255), PERSONA_CONTACTO VARCHAR(255) ); CREATE TABLE CONTACTOS_CATEGORIAS ( ID_CONTACTO TIPO_ID NOT NULL, ID_CATEGORIA TIPO_ID NOT NULL ); CREATE TABLE CONTACTOS_DATOS_BANCO ( ID TIPO_ID NOT NULL, ID_CONTACTO TIPO_ID NOT NULL, TITULAR VARCHAR(255), ENTIDAD VARCHAR(15), SUCURSAL VARCHAR(15), DC VARCHAR(15), CUENTA VARCHAR(15), FECHA_ALTA TIMESTAMP, FECHA_MODIFICACION TIMESTAMP ); CREATE TABLE CONTACTOS_DATOS_PERSONAL ( ID TIPO_ID NOT NULL, ID_CONTACTO TIPO_ID NOT NULL, NOMBRE VARCHAR(255), PUESTO VARCHAR(255), TELEFONO VARCHAR(25), MOVIL VARCHAR(25), FAX VARCHAR(25), EMAIL VARCHAR(255), FECHA_ALTA TIMESTAMP, FECHA_MODIFICACION TIMESTAMP ); CREATE TABLE CONTACTOS_DIRECCIONES ( ID TIPO_ID NOT NULL, ID_CONTACTO TIPO_ID NOT NULL, CALLE VARCHAR(255), POBLACION VARCHAR(255), PROVINCIA VARCHAR(255), CODIGO_POSTAL VARCHAR(10), PERSONA_CONTACTO VARCHAR(255), NOMBRE VARCHAR(255), TELEFONO VARCHAR(25), MOVIL VARCHAR(25), FAX VARCHAR(25), EMAIL VARCHAR(255), NOTAS TIPO_NOTAS, PORTE TIPO_IMPORTE, FECHA_ALTA TIMESTAMP, FECHA_MODIFICACION TIMESTAMP ); CREATE TABLE EMPLEADOS_DATOS ( ID_EMPLEADO TIPO_ID NOT NULL, FECHA_NACIMIENTO DATE, CATEGORIA VARCHAR(255), FECHA_ALTA_EMPRESA DATE, FORMACION_BASE TIPO_NOTAS, FORMACION_COMPLE TIPO_NOTAS, FORMACION_RECIBIDA TIPO_NOTAS, EXPERIENCIA TIPO_NOTAS, CONTRATO VARCHAR(255), DURACION VARCHAR(255), FECHA_BAJA DATE, CAUSA_BAJA VARCHAR(255) ); CREATE TABLE EMPLEADOS_GRUPOS ( ID TIPO_ID NOT NULL, DESCRIPCION VARCHAR(255) ); CREATE TABLE EMPRESAS ( ID TIPO_ID NOT NULL, NIF_CIF VARCHAR(15), NOMBRE VARCHAR(255), RAZON_SOCIAL VARCHAR(255), CALLE VARCHAR(255), POBLACION VARCHAR(255), PROVINCIA VARCHAR(255), CODIGO_POSTAL VARCHAR(10), TELEFONO_1 VARCHAR(25), TELEFONO_2 VARCHAR(25), MOVIL_1 VARCHAR(25), MOVIL_2 VARCHAR(25), FAX VARCHAR(25), EMAIL_1 VARCHAR(255), EMAIL_2 VARCHAR(255), PAGINA_WEB VARCHAR(255), NOTAS TIPO_NOTAS, FECHA_ALTA TIMESTAMP, FECHA_MODIFICACION TIMESTAMP, USUARIO TIPO_USUARIO, LOGOTIPO TIPO_BINARIO, REGISTRO_MERCANTIL VARCHAR(255), PARAM_TIEMPO TIPO_IMPORTE, PARAM_MARGEN TIPO_PORCENTAJE, ID_TIPO_IVA SMALLINT, ID_FORMA_PAGO SMALLINT, ID_ALMACEN SMALLINT ); CREATE TABLE EMPRESAS_CONTACTOS ( ID TIPO_ID NOT NULL, ID_EMPRESA TIPO_ID NOT NULL, ID_CONTACTO TIPO_ID NOT NULL ); CREATE TABLE EMPRESAS_DATOS_BANCO ( ID TIPO_ID NOT NULL, ID_EMPRESA TIPO_ID NOT NULL, NOMBRE VARCHAR(255), ENTIDAD VARCHAR(15), SUCURSAL VARCHAR(15), DC VARCHAR(15), CUENTA VARCHAR(15), SUFIJO_N19 VARCHAR(3), SUFIJO_N58 VARCHAR(3), IBAN VARCHAR(255) COLLATE ES_ES, SWIFT VARCHAR(255) COLLATE ES_ES ); CREATE TABLE EMPRESAS_USUARIOS ( ID TIPO_ID NOT NULL, ID_EMPRESA TIPO_ID NOT NULL, ID_USUARIO TIPO_ID NOT NULL ); CREATE TABLE FABRICANTES ( ID TIPO_ID NOT NULL, DESCRIPCION VARCHAR(255) ); CREATE TABLE FACTURAS_CLIENTE ( ID TIPO_ID NOT NULL, ID_EMPRESA TIPO_ID, REFERENCIA VARCHAR(255), FECHA_FACTURA DATE, FECHA_VENCIMIENTO DATE, FECHA_RETENCION DATE, BASE_IMPONIBLE TIPO_IMPORTE, DESCUENTO TIPO_PORCENTAJE, IMPORTE_DESCUENTO TIPO_IMPORTE, IVA TIPO_PORCENTAJE, IMPORTE_IVA TIPO_IMPORTE, RE TIPO_PORCENTAJE, IMPORTE_RE TIPO_IMPORTE, IMPORTE_TOTAL TIPO_IMPORTE, OBSERVACIONES TIPO_NOTAS, ID_CLIENTE TIPO_ID, NIF_CIF VARCHAR(15), NOMBRE VARCHAR(255), ID_DIRECCION TIPO_ID, CALLE VARCHAR(255), POBLACION VARCHAR(255), PROVINCIA VARCHAR(255), CODIGO_POSTAL VARCHAR(10), FECHA_ALTA TIMESTAMP, FECHA_MODIFICACION TIMESTAMP, USUARIO TIPO_USUARIO, ID_FORMA_PAGO TIPO_ID, IMPORTE_NETO TIPO_IMPORTE, IMPORTE_PORTE TIPO_IMPORTE, ID_TIPO_IVA TIPO_ID, RECARGO_EQUIVALENCIA TIPO_BOOLEANO, ID_COMISION_LIQUIDADA TIPO_ID, DATOS_BANCARIOS VARCHAR(255), CLIENTE_FINAL VARCHAR(255), RETENCION TIPO_PORCENTAJE, IMPORTE_RETENCION TIPO_IMPORTE, CERTIFICADO_ISO TIPO_BOOLEANO ); CREATE TABLE FACTURAS_CLIENTE_DETALLES ( ID TIPO_ID NOT NULL, ID_FACTURA TIPO_ID NOT NULL, POSICION INTEGER, TIPO_DETALLE VARCHAR(25), ID_ARTICULO TIPO_ID, CONCEPTO TIPO_CONCEPTO, CANTIDAD TIPO_CANTIDAD, UNIDAD_MEDIDA VARCHAR(255), IMPORTE_UNIDAD TIPO_IMPORTE, DESCUENTO TIPO_PORCENTAJE, IMPORTE_PORTE TIPO_IMPORTE, IMPORTE_TOTAL TIPO_IMPORTE, VISIBLE TIPO_BOOLEANO, FECHA_ALTA TIMESTAMP, FECHA_MODIFICACION TIMESTAMP ); CREATE TABLE FACTURAS_PROVEEDOR ( ID TIPO_ID NOT NULL, ID_EMPRESA TIPO_ID, REFERENCIA VARCHAR(255), REFERENCIA_PROVEEDOR VARCHAR(255), FECHA_FACTURA DATE, BASE_IMPONIBLE TIPO_IMPORTE, DESCUENTO TIPO_PORCENTAJE, IMPORTE_DESCUENTO TIPO_IMPORTE, IVA TIPO_PORCENTAJE, IMPORTE_IVA TIPO_IMPORTE, RE TIPO_PORCENTAJE, IMPORTE_RE TIPO_IMPORTE, IMPORTE_TOTAL TIPO_IMPORTE, OBSERVACIONES TIPO_NOTAS, ID_PROVEEDOR TIPO_ID, NIF_CIF VARCHAR(15), NOMBRE VARCHAR(255), CALLE VARCHAR(255), POBLACION VARCHAR(255), PROVINCIA VARCHAR(255), CODIGO_POSTAL VARCHAR(10), FECHA_ALTA TIMESTAMP, FECHA_MODIFICACION TIMESTAMP, USUARIO TIPO_USUARIO, ID_FORMA_PAGO TIPO_ID, IMPORTE_NETO TIPO_IMPORTE, IMPORTE_PORTE TIPO_IMPORTE, ID_TIPO_IVA TIPO_ID, RECARGO_EQUIVALENCIA TIPO_BOOLEANO, DATOS_BANCARIOS VARCHAR(255), FECHA_VENCIMIENTO DATE, FECHA_RECEPCION DATE, RETENCION TIPO_PORCENTAJE, IMPORTE_RETENCION TIPO_IMPORTE ); CREATE TABLE FACTURAS_PROVEEDOR_DETALLES ( ID TIPO_ID NOT NULL, ID_FACTURA TIPO_ID NOT NULL, POSICION INTEGER, TIPO_DETALLE VARCHAR(25), ID_ARTICULO TIPO_ID, CONCEPTO TIPO_CONCEPTO, CANTIDAD TIPO_CANTIDAD, UNIDAD_MEDIDA VARCHAR(255), IMPORTE_UNIDAD TIPO_IMPORTE, DESCUENTO TIPO_PORCENTAJE, IMPORTE_PORTE TIPO_IMPORTE, IMPORTE_TOTAL TIPO_IMPORTE, ID_TIPO_IVA TIPO_ID, IVA TIPO_PORCENTAJE, IMPORTE_IVA TIPO_IMPORTE VISIBLE TIPO_BOOLEANO, FECHA_ALTA TIMESTAMP, FECHA_MODIFICACION TIMESTAMP ); CREATE TABLE FACTURAS_PROVEEDOR_PEDIDOS ( ID TIPO_ID NOT NULL, ID_FACTURA TIPO_ID NOT NULL, ID_PEDIDO TIPO_ID, IMPORTE_TOTAL TIPO_IMPORTE, FECHA_ALTA TIMESTAMP, FECHA_MODIFICACION TIMESTAMP ); CREATE TABLE FAMILIAS ( ID TIPO_ID NOT NULL, DESCRIPCION VARCHAR(255) ); CREATE TABLE FORMAS_PAGO ( ID TIPO_ID NOT NULL, REFERENCIA VARCHAR(255), DESCRIPCION VARCHAR(255), TITULAR VARCHAR(255), ENTIDAD VARCHAR(15), SUCURSAL VARCHAR(15), DC VARCHAR(15), CUENTA VARCHAR(15) ); CREATE TABLE FORMAS_PAGO_PLAZOS ( ID TIPO_ID NOT NULL, ID_FORMA_PAGO TIPO_ID NOT NULL, NUM_DIAS SMALLINT, PORCENTAJE TIPO_PORCENTAJE ); CREATE TABLE INFORMES ( ID SMALLINT NOT NULL, ID_EMPRESA TIPO_ID, CATEGORIA VARCHAR(30), CONTROLLER VARCHAR(255), ICONO SMALLINT, NOMBRE VARCHAR(50), DESCRIPCION VARCHAR(255), ORDEN SMALLINT, MODIFICABLE CHAR(1), VISTA BLOB SUB_TYPE 2 SEGMENT SIZE 4096 ); CREATE TABLE MOVIMIENTOS ( ID TIPO_ID NOT NULL, ID_ALMACEN TIPO_ID, ID_ARTICULO TIPO_ID, FECHA_MOVIMIENTO DATE, TIPO VARCHAR(1), CANTIDAD TIPO_CANTIDAD, CAUSA TIPO_CONCEPTO, ID_ALMACEN_RESERVA TIPO_ID ); CREATE TABLE OBRAS_DATOS ( ID_ALMACEN TIPO_ID NOT NULL, ID_CLIENTE TIPO_ID ); CREATE TABLE OBRAS_EJECUCIONES ( ID TIPO_ID NOT NULL, ID_OBRA TIPO_ID, FECHA_INICIO DATE, FECHA_FIN DATE, ID_SUBCONTRATA TIPO_ID, OBSERVACIONES TIPO_NOTAS, FECHA_ALTA TIMESTAMP, FECHA_MODIFICACION TIMESTAMP ); CREATE TABLE OBRAS_EJECUCIONES_PRESUPUESTOS ( ID TIPO_ID NOT NULL, ID_EJECUCION TIPO_ID, ID_PRESUPUESTO TIPO_ID ); CREATE TABLE OBRAS_EJECUCIONES_PEDIDOS_PROV ( ID TIPO_ID NOT NULL, ID_EJECUCION TIPO_ID, ID_PEDIDO TIPO_ID, ID_PRESUPUESTO TIPO_ID ); CREATE TABLE PAGOS_CLIENTE ( ID TIPO_ID NOT NULL, ID_RECIBO TIPO_ID, TIPO VARCHAR(255), FECHA_PAGO DATE, TITULAR VARCHAR(255), ENTIDAD VARCHAR(15), SUCURSAL VARCHAR(15), DC VARCHAR(15), CUENTA VARCHAR(15), FECHA_ALTA DATE, FECHA_MODIFICACION DATE, USUARIO TIPO_USUARIO ); CREATE TABLE PAGOS_PROVEEDOR ( ID TIPO_ID NOT NULL, ID_RECIBO TIPO_ID, TIPO VARCHAR(255), FECHA_PAGO DATE, TITULAR VARCHAR(255), ENTIDAD VARCHAR(15), SUCURSAL VARCHAR(15), DC VARCHAR(15), CUENTA VARCHAR(15), FECHA_ALTA DATE, FECHA_MODIFICACION DATE, USUARIO TIPO_USUARIO ); CREATE TABLE PEDIDOS_CLIENTE ( ID TIPO_ID NOT NULL, ID_EMPRESA TIPO_ID, ID_CLIENTE TIPO_ID, REFERENCIA VARCHAR(255), FECHA_PEDIDO DATE, CALLE VARCHAR(255), CODIGO_POSTAL VARCHAR(10), POBLACION VARCHAR(255), PROVINCIA VARCHAR(255), PERSONA_CONTACTO VARCHAR(255), TELEFONO VARCHAR(25), OBSERVACIONES TIPO_NOTAS, INCIDENCIAS TIPO_NOTAS, INCIDENCIAS_ACTIVAS SMALLINT DEFAULT 0 NOT NULL, FECHA_ALTA TIMESTAMP, FECHA_MODIFICACION TIMESTAMP, USUARIO TIPO_USUARIO, IMPORTE_NETO TIPO_IMPORTE, IMPORTE_PORTE TIPO_IMPORTE, DESCUENTO TIPO_PORCENTAJE, IMPORTE_DESCUENTO TIPO_IMPORTE, BASE_IMPONIBLE TIPO_IMPORTE, IVA TIPO_PORCENTAJE, IMPORTE_IVA TIPO_IMPORTE, IMPORTE_TOTAL TIPO_IMPORTE, ID_FORMA_PAGO TIPO_ID, REF_TIENDA_WEB INTEGER, FECHA_PREVISTA_ENVIO DATE, REFERENCIA_CLIENTE VARCHAR(255) ); CREATE TABLE PEDIDOS_CLIENTE_DETALLES ( ID TIPO_ID NOT NULL, ID_PEDIDO TIPO_ID NOT NULL, POSICION INTEGER, TIPO_DETALLE VARCHAR(25), ID_ARTICULO TIPO_ID, CONCEPTO TIPO_CONCEPTO, CANTIDAD TIPO_CANTIDAD, IMPORTE_UNIDAD TIPO_IMPORTE, DESCUENTO TIPO_PORCENTAJE, IMPORTE_PORTE TIPO_IMPORTE, IMPORTE_TOTAL TIPO_IMPORTE, VISIBLE TIPO_BOOLEANO, FECHA_ALTA TIMESTAMP, FECHA_MODIFICACION TIMESTAMP ); CREATE TABLE PEDIDOS_PROVEEDOR ( ID TIPO_ID NOT NULL, ID_EMPRESA TIPO_ID, ID_PROVEEDOR TIPO_ID, ID_DIRECCION TIPO_ID, PERSONA_CONTACTO_PROV VARCHAR(255), REFERENCIA VARCHAR(255), FECHA_PEDIDO DATE, FECHA_CONFIRMACION DATE, FECHA_ENTREGA DATE, ID_ALMACEN TIPO_ID, ID_OBRA TIPO_ID, OBSERVACIONES TIPO_NOTAS, INCIDENCIAS TIPO_NOTAS, INCIDENCIAS_ACTIVAS SMALLINT DEFAULT 0 NOT NULL, FECHA_ALTA TIMESTAMP, FECHA_MODIFICACION TIMESTAMP, USUARIO TIPO_USUARIO, CALLE VARCHAR(255), CODIGO_POSTAL VARCHAR(10), POBLACION VARCHAR(255), PROVINCIA VARCHAR(255), PERSONA_CONTACTO VARCHAR(255), TELEFONO VARCHAR(25), ID_PEDIDO_CLIENTE TIPO_ID, IMPORTE_NETO TIPO_IMPORTE, IMPORTE_PORTE TIPO_IMPORTE, DESCUENTO TIPO_PORCENTAJE, IMPORTE_DESCUENTO TIPO_IMPORTE, BASE_IMPONIBLE TIPO_IMPORTE, IVA TIPO_PORCENTAJE, IMPORTE_IVA TIPO_IMPORTE, IMPORTE_TOTAL TIPO_IMPORTE, ID_FORMA_PAGO TIPO_ID, FECHA_ENVIO DATE, ID_FACTURA TIPO_ID, REF_FACTURA_PROV VARCHAR(255) COLLATE ES_ES ); CREATE TABLE PEDIDOS_PROVEEDOR_DETALLES ( ID TIPO_ID NOT NULL, ID_PEDIDO TIPO_ID NOT NULL, POSICION INTEGER, TIPO_DETALLE VARCHAR(25), ID_ARTICULO TIPO_ID, CONCEPTO TIPO_CONCEPTO, CANTIDAD TIPO_CANTIDAD, UNIDAD_MEDIDA VARCHAR(255), IMPORTE_UNIDAD TIPO_IMPORTE, DESCUENTO TIPO_PORCENTAJE, IMPORTE_PORTE TIPO_IMPORTE, IMPORTE_TOTAL TIPO_IMPORTE, VISIBLE TIPO_BOOLEANO, FECHA_ALTA TIMESTAMP, FECHA_MODIFICACION TIMESTAMP ); CREATE TABLE PERMISOS ( ID TIPO_ID NOT NULL, ID_USUARIO TIPO_ID, MODULO VARCHAR(50), NOMBRECOMP VARCHAR(50), CHECKSUM VARCHAR(250) ); CREATE TABLE PERMISOSEX ( ID TIPO_ID NOT NULL, ID_USUARIO TIPO_ID, MODULO VARCHAR(50), NOMBRECOMP VARCHAR(50), NOMBREFORM VARCHAR(50), CHECKSUM VARCHAR(250) ); CREATE TABLE POBLACIONES ( ID TIPO_ID NOT NULL, ID_PROVINCIA TIPO_ID NOT NULL, DESCRIPCION VARCHAR(255) NOT NULL ); CREATE TABLE PRESUPUESTOS_CLIENTE ( ID TIPO_ID NOT NULL, ID_EMPRESA TIPO_ID, ID_CLIENTE TIPO_ID, REFERENCIA VARCHAR(255), REFERENCIA_AUX VARCHAR(255), FECHA_PRESUPUESTO DATE, FECHA_DECISION DATE, SITUACION VARCHAR(255), PORTADA TIPO_NOTAS, MEMORIA TIPO_NOTAS, OBSERVACIONES TIPO_NOTAS, INCIDENCIAS TIPO_NOTAS, INCIDENCIAS_ACTIVAS SMALLINT DEFAULT 0 NOT NULL, FECHA_ALTA TIMESTAMP, FECHA_MODIFICACION TIMESTAMP, USUARIO TIPO_USUARIO, IMPORTE_NETO TIPO_IMPORTE, IMPORTE_PORTE TIPO_IMPORTE, DESCUENTO TIPO_PORCENTAJE, IMPORTE_DESCUENTO TIPO_IMPORTE, BASE_IMPONIBLE TIPO_IMPORTE, IVA TIPO_PORCENTAJE, IMPORTE_IVA TIPO_IMPORTE, IMPORTE_TOTAL TIPO_IMPORTE, ID_FORMA_PAGO TIPO_ID, REFERENCIA_CLIENTE VARCHAR(255), CLIENTE_FINAL VARCHAR(255), ID_FACTURA TIPO_ID, PERSONA_CONTACTO VARCHAR(255), ID_DIRECCION TIPO_ID, DESCRIPCION_BONIFICACION VARCHAR(255) COLLATE ES_ES, IMPORTE_BONIFICACION TIPO_IMPORTE, CERTIFICADO_ISO TIPO_BOOLEANO ); CREATE TABLE PRESUPUESTOS_CLIENTE_DETALLES ( ID TIPO_ID NOT NULL, ID_PRESUPUESTO TIPO_ID NOT NULL, POSICION INTEGER, TIPO_DETALLE VARCHAR(25), ID_ARTICULO TIPO_ID, CONCEPTO TIPO_CONCEPTO, CANTIDAD TIPO_CANTIDAD, UNIDAD_MEDIDA VARCHAR(255), IMPORTE_UNIDAD TIPO_IMPORTE, DESCUENTO TIPO_PORCENTAJE, IMPORTE_PORTE TIPO_IMPORTE, IMPORTE_TOTAL TIPO_IMPORTE, VISIBLE TIPO_BOOLEANO, FECHA_ALTA TIMESTAMP, FECHA_MODIFICACION TIMESTAMP ); CREATE TABLE PROVEEDORES_DATOS ( ID_PROVEEDOR TIPO_ID NOT NULL, DESCUENTO TIPO_PORCENTAJE, REGIMEN_IVA VARCHAR(255), ID_TIPO_IVA TIPO_ID, ID_FORMA_PAGO TIPO_ID, TIENDA_WEB TIPO_BOOLEANO, GRUPO_PROVEEDOR VARCHAR(255), DESCRIPCION_PROVEEDOR VARCHAR(255), CODIGO_ASIGNADO VARCHAR(255), CERTIFICACION VARCHAR(255), HOMOLOGADO SMALLINT, SUBCONTRATA TIPO_BOOLEANO, VENCIMIENTO_FACTURAS_1 SMALLINT, VENCIMIENTO_FACTURAS_2 SMALLINT, VENCIMIENTO_FACTURAS_3 SMALLINT, FELICITACION TIPO_BOOLEANO, /* TIPO_BOOLEANO = SMALLINT */ FECHA_INGRESO DATE ); CREATE TABLE PROVEEDORES_GRUPOS ( ID TIPO_ID NOT NULL, DESCRIPCION VARCHAR(255) ); CREATE TABLE PROVINCIAS ( ID TIPO_ID NOT NULL, DESCRIPCION VARCHAR(255) NOT NULL ); CREATE TABLE RECIBOS_CLIENTE ( ID TIPO_ID NOT NULL, ID_FACTURA TIPO_ID, REFERENCIA VARCHAR(255), FECHA_EMISION DATE, FECHA_VENCIMIENTO DATE, DESCRIPCION VARCHAR(255), OBSERVACIONES VARCHAR(255), IMPORTE TIPO_IMPORTE, OTROS_GASTOS TIPO_IMPORTE, FECHA_ALTA DATE, FECHA_MODIFICACION DATE, USUARIO TIPO_USUARIO, ID_REMESA TIPO_ID, ID_RECIBO_COMPENSADO INTEGER ); CREATE TABLE RECIBOS_PROVEEDOR ( ID TIPO_ID NOT NULL, ID_FACTURA TIPO_ID, REFERENCIA VARCHAR(255), REFERENCIA_PROVEEDOR VARCHAR(255), FECHA_EMISION DATE, FECHA_VENCIMIENTO DATE, DESCRIPCION VARCHAR(255), OBSERVACIONES VARCHAR(255), IMPORTE TIPO_IMPORTE, OTROS_GASTOS TIPO_IMPORTE, FECHA_ALTA DATE, FECHA_MODIFICACION DATE, USUARIO TIPO_USUARIO, ID_REMESA TIPO_ID, ID_RECIBO_COMPENSADO INTEGER ); CREATE TABLE REFERENCIAS ( ID TIPO_ID NOT NULL, ID_EMPRESA TIPO_ID, CODIGO VARCHAR(50) NOT NULL, VALOR VARCHAR(255) NOT NULL, DESCRIPCION VARCHAR(255) ); CREATE TABLE REMESAS_CLIENTE ( ID TIPO_ID NOT NULL, ID_EMPRESA TIPO_ID, REFERENCIA VARCHAR(255), FECHA_REMESA DATE, IMPORTE_TOTAL TIPO_IMPORTE, DESCRIPCION VARCHAR(255), FECHA_ALTA DATE, FECHA_MODIFICACION DATE, USUARIO TIPO_USUARIO, ID_DATOS_BANCO TIPO_ID, TIPO VARCHAR(40) ); CREATE TABLE REMESAS_PROVEEDOR ( ID TIPO_ID NOT NULL, ID_EMPRESA TIPO_ID, REFERENCIA VARCHAR(255), FECHA_REMESA DATE, IMPORTE_TOTAL TIPO_IMPORTE, DESCRIPCION VARCHAR(255), FECHA_ALTA DATE, FECHA_MODIFICACION DATE, USUARIO TIPO_USUARIO, ID_DATOS_BANCO TIPO_ID, TIPO VARCHAR(40) ); CREATE TABLE TIENDA_WEB ( ID TIPO_ID NOT NULL, ID_EMPRESA TIPO_ID NOT NULL, TIENDA_ACTIVA TIPO_BOOLEANO DEFAULT 0 NOT NULL, ULTIMA_ACTUALIZACION TIMESTAMP, BDSERVER VARCHAR(255), BDPORT VARCHAR(20), BDNAME VARCHAR(255), BDUSER VARCHAR(255), BDPASS VARCHAR(255) ); CREATE TABLE TIPOS_IVA ( ID TIPO_ID NOT NULL, REFERENCIA VARCHAR(255), DESCRIPCION VARCHAR(255), IVA TIPO_PORCENTAJE, RE TIPO_PORCENTAJE ); CREATE TABLE UNIDADES_MEDIDA ( ID TIPO_ID NOT NULL, DESCRIPCION VARCHAR(255) ); CREATE TABLE USUARIOS ( ID TIPO_ID NOT NULL, USERNAME VARCHAR(30), LOGIN TIPO_USUARIO, PASS VARCHAR(250), PASSEXPIRED DATE, BLOQUEADO TIPO_BOOLEANO, EMAIL VARCHAR(150), USERDAYSSUN INTEGER, PRIVILEGED INTEGER, TIPO CHAR(1), ID_PERFIL TIPO_ID, CHECKSUM VARCHAR(250) ); CREATE TABLE USUARIOS_EVENTOS ( APLICACION VARCHAR(250), ID_USUARIO TIPO_ID, FECHA CHAR(10), HORA CHAR(8), FORM VARCHAR(250), TITULO_FORM VARCHAR(100), EVENTO VARCHAR(50), NOTAS TIPO_NOTAS, TNAME VARCHAR(20) ); CREATE TABLE USUARIOS_LOGON ( LOGONID CHAR(38) NOT NULL, ID_USUARIO TIPO_ID, APLICACION VARCHAR(50), EQUIPO VARCHAR(50), DATA VARCHAR(14) ); /******************************************************************************/ /**** Views ****/ /******************************************************************************/ /* View: V_ALB_CLI_SITUACION */ CREATE VIEW V_ALB_CLI_SITUACION( ID, SITUACION) AS SELECT ALBARANES_CLIENTE.ID, case when (FECHA_RECEPCION is not null) then 'SERVIDO' when (FECHA_ENVIO is null) then 'PENDIENTE' when (FECHA_ENVIO <= current_date) then 'ENVIADO' when (FECHA_ENVIO > current_date) then 'PENDIENTE' else 'N/A' end as SITUACION FROM ALBARANES_CLIENTE ; /* View: V_ALB_CLI_DETALLES */ CREATE VIEW V_ALB_CLI_DETALLES( ID_ALBARAN, ID_PEDIDO, SITUACION, ID_ALMACEN, ID_ARTICULO, CANTIDAD) AS SELECT ALBARANES_CLIENTE_DETALLES.ID_ALBARAN, ALBARANES_CLIENTE_DETALLES.ID_PEDIDO, V_ALB_CLI_SITUACION.SITUACION, ALBARANES_CLIENTE.ID_ALMACEN, COALESCE(ALBARANES_CLIENTE_DETALLES.ID_ARTICULO, 0), SUM(COALESCE(ALBARANES_CLIENTE_DETALLES.CANTIDAD, 0)) FROM ALBARANES_CLIENTE_DETALLES INNER JOIN ALBARANES_CLIENTE ON (ALBARANES_CLIENTE_DETALLES.ID_ALBARAN = ALBARANES_CLIENTE.ID) INNER JOIN V_ALB_CLI_SITUACION ON (ALBARANES_CLIENTE_DETALLES.ID_ALBARAN = V_ALB_CLI_SITUACION.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 LEFT JOIN ARTICULOS ON (ALBARANES_CLIENTE_DETALLES.ID_ARTICULO = ARTICULOS.ID) WHERE (ALBARANES_CLIENTE_DETALLES.ID_ARTICULO is not null) AND (ARTICULOS.INVENTARIABLE = 1) */ group BY ALBARANES_CLIENTE_DETALLES.ID_ALBARAN, ALBARANES_CLIENTE_DETALLES.ID_PEDIDO, V_ALB_CLI_SITUACION.SITUACION, ALBARANES_CLIENTE.ID_ALMACEN, ALBARANES_CLIENTE_DETALLES.ID_ARTICULO ; /* View: V_ALB_PROV_DETALLES */ CREATE VIEW V_ALB_PROV_DETALLES( ID_ALBARAN, ID_PEDIDO, ID_ALMACEN, ID_ARTICULO, DESCRIPCION, CANTIDAD) AS SELECT ALBARANES_PROVEEDOR_DETALLES.ID_ALBARAN, ALBARANES_PROVEEDOR.ID_PEDIDO, ALBARANES_PROVEEDOR.ID_ALMACEN, COALESCE(ALBARANES_PROVEEDOR_DETALLES.ID_ARTICULO, 0), CASE WHEN ALBARANES_PROVEEDOR_DETALLES.ID_ARTICULO IS NULL THEN ALBARANES_PROVEEDOR_DETALLES.CONCEPTO ELSE NULL END, SUM (COALESCE(ALBARANES_PROVEEDOR_DETALLES.CANTIDAD, 0)) AS CANTIDAD FROM ALBARANES_PROVEEDOR_DETALLES 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 LEFT JOIN ARTICULOS ON (ALBARANES_PROVEEDOR_DETALLES.ID_ARTICULO = ARTICULOS.ID) WHERE (ALBARANES_PROVEEDOR_DETALLES.ID_ARTICULO is not null) AND (ARTICULOS.INVENTARIABLE = 1) */ GROUP BY ALBARANES_PROVEEDOR_DETALLES.ID_ALBARAN, ALBARANES_PROVEEDOR.ID_PEDIDO, ALBARANES_PROVEEDOR.ID_ALMACEN, ALBARANES_PROVEEDOR_DETALLES.ID_ARTICULO, 5 ; /* View: V_ALBARANES_CLIENTE */ CREATE VIEW V_ALBARANES_CLIENTE( ID, ID_EMPRESA, ID_CLIENTE, NOMBRE, FECHA_ALBARAN, REFERENCIA, REFERENCIA_CLIENTE, TIPO, SITUACION, ID_ALMACEN, NOMBRE_ALMACEN, ID_PEDIDO, REF_PEDIDO, ID_FACTURA, REF_FACTURA, ID_DIRECCION, CALLE, CODIGO_POSTAL, POBLACION, PROVINCIA, PERSONA_CONTACTO, TELEFONO, IMPORTE_NETO, IMPORTE_PORTE, DESCUENTO, IMPORTE_DESCUENTO, BASE_IMPONIBLE, IVA, IMPORTE_IVA, IMPORTE_TOTAL, OBSERVACIONES, INCIDENCIAS, INCIDENCIAS_ACTIVAS, FECHA_ALTA, FECHA_MODIFICACION, USUARIO, ID_FORMA_PAGO, FECHA_PREVISTA_ENVIO, FECHA_ENVIO, FECHA_RECEPCION) AS SELECT ALBARANES_CLIENTE.ID, ALBARANES_CLIENTE.ID_EMPRESA, ALBARANES_CLIENTE.ID_CLIENTE, CONTACTOS.NOMBRE, ALBARANES_CLIENTE.FECHA_ALBARAN, ALBARANES_CLIENTE.REFERENCIA, ALBARANES_CLIENTE.REFERENCIA_CLIENTE, ALBARANES_CLIENTE.TIPO, TRIM(V_ALB_CLI_SITUACION.SITUACION), ALBARANES_CLIENTE.ID_ALMACEN, ALMACENES.NOMBRE AS NOMBRE_ALMACEN, ALBARANES_CLIENTE.ID_PEDIDO, PEDIDOS_CLIENTE.REFERENCIA AS REF_PEDIDO, ALBARANES_CLIENTE.ID_FACTURA, FACTURAS_CLIENTE.REFERENCIA AS REF_FACTURA, ALBARANES_CLIENTE.ID_DIRECCION, ALBARANES_CLIENTE.CALLE, ALBARANES_CLIENTE.CODIGO_POSTAL, ALBARANES_CLIENTE.POBLACION, ALBARANES_CLIENTE.PROVINCIA, ALBARANES_CLIENTE.PERSONA_CONTACTO, ALBARANES_CLIENTE.TELEFONO, ALBARANES_CLIENTE.IMPORTE_NETO, ALBARANES_CLIENTE.IMPORTE_PORTE, ALBARANES_CLIENTE.DESCUENTO, ALBARANES_CLIENTE.IMPORTE_DESCUENTO, ALBARANES_CLIENTE.BASE_IMPONIBLE, ALBARANES_CLIENTE.IVA, ALBARANES_CLIENTE.IMPORTE_IVA, ALBARANES_CLIENTE.IMPORTE_TOTAL, ALBARANES_CLIENTE.OBSERVACIONES, ALBARANES_CLIENTE.INCIDENCIAS, ALBARANES_CLIENTE.INCIDENCIAS_ACTIVAS, ALBARANES_CLIENTE.FECHA_ALTA, ALBARANES_CLIENTE.FECHA_MODIFICACION, ALBARANES_CLIENTE.USUARIO, ALBARANES_CLIENTE.ID_FORMA_PAGO, ALBARANES_CLIENTE.FECHA_PREVISTA_ENVIO, ALBARANES_CLIENTE.FECHA_ENVIO, ALBARANES_CLIENTE.FECHA_RECEPCION FROM ALBARANES_CLIENTE LEFT OUTER JOIN CONTACTOS ON (CONTACTOS.ID = ALBARANES_CLIENTE.ID_CLIENTE) LEFT OUTER JOIN PEDIDOS_CLIENTE ON (PEDIDOS_CLIENTE.ID = ALBARANES_CLIENTE.ID_PEDIDO) LEFT OUTER JOIN FACTURAS_CLIENTE ON (FACTURAS_CLIENTE.ID = ALBARANES_CLIENTE.ID_FACTURA) LEFT OUTER JOIN V_ALB_CLI_SITUACION ON (V_ALB_CLI_SITUACION.ID = ALBARANES_CLIENTE.ID) LEFT OUTER JOIN ALMACENES ON (ALMACENES.ID = ALBARANES_CLIENTE.ID_ALMACEN) ; /* View: V_ALBARANES_PROVEEDOR */ CREATE VIEW V_ALBARANES_PROVEEDOR( ID, ID_EMPRESA, ID_PROVEEDOR, NOMBRE, ID_DIRECCION, PERSONA_CONTACTO_PROV, FECHA_ALBARAN, REFERENCIA, REFERENCIA_PROVEEDOR, TIPO, ID_ALMACEN, TIPO_ALMACEN, NOMBRE_ALMACEN, ID_PEDIDO, REF_PED_PROVEEDOR, ID_FACTURA, REF_FACTURA, REF_FACTURA_PROV, CALLE, CODIGO_POSTAL, POBLACION, PROVINCIA, PERSONA_CONTACTO, TELEFONO, IMPORTE_NETO, IMPORTE_PORTE, DESCUENTO, IMPORTE_DESCUENTO, BASE_IMPONIBLE, IVA, IMPORTE_IVA, IMPORTE_TOTAL, OBSERVACIONES, INCIDENCIAS, INCIDENCIAS_ACTIVAS, FECHA_ALTA, FECHA_MODIFICACION, USUARIO, ID_FORMA_PAGO, ID_ALBARAN, REFERENCIA_ALBARAN) AS SELECT ALBARANES_PROVEEDOR.ID, ALBARANES_PROVEEDOR.ID_EMPRESA, ALBARANES_PROVEEDOR.ID_PROVEEDOR, CONTACTOS.NOMBRE, ALBARANES_PROVEEDOR.ID_DIRECCION, ALBARANES_PROVEEDOR.PERSONA_CONTACTO_PROV, ALBARANES_PROVEEDOR.FECHA_ALBARAN, ALBARANES_PROVEEDOR.REFERENCIA, ALBARANES_PROVEEDOR.REFERENCIA_PROVEEDOR, ALBARANES_PROVEEDOR.TIPO, ALBARANES_PROVEEDOR.ID_ALMACEN, ALMACENES.TIPO_ALMACEN, ALMACENES.NOMBRE AS NOMBRE_ALMACEN, ALBARANES_PROVEEDOR.ID_PEDIDO, PEDIDOS_PROVEEDOR.REFERENCIA AS REF_PED_PROVEEDOR, ALBARANES_PROVEEDOR.ID_FACTURA, FACTURAS_PROVEEDOR.REFERENCIA AS REF_FACTURA, ALBARANES_PROVEEDOR.REF_FACTURA_PROV, ALBARANES_PROVEEDOR.CALLE, ALBARANES_PROVEEDOR.CODIGO_POSTAL, ALBARANES_PROVEEDOR.POBLACION, ALBARANES_PROVEEDOR.PROVINCIA, ALBARANES_PROVEEDOR.PERSONA_CONTACTO, ALBARANES_PROVEEDOR.TELEFONO, ALBARANES_PROVEEDOR.IMPORTE_NETO, ALBARANES_PROVEEDOR.IMPORTE_PORTE, ALBARANES_PROVEEDOR.DESCUENTO, ALBARANES_PROVEEDOR.IMPORTE_DESCUENTO, ALBARANES_PROVEEDOR.BASE_IMPONIBLE, ALBARANES_PROVEEDOR.IVA, ALBARANES_PROVEEDOR.IMPORTE_IVA, ALBARANES_PROVEEDOR.IMPORTE_TOTAL, ALBARANES_PROVEEDOR.OBSERVACIONES, ALBARANES_PROVEEDOR.INCIDENCIAS, ALBARANES_PROVEEDOR.INCIDENCIAS_ACTIVAS, ALBARANES_PROVEEDOR.FECHA_ALTA, ALBARANES_PROVEEDOR.FECHA_MODIFICACION, ALBARANES_PROVEEDOR.USUARIO, ALBARANES_PROVEEDOR.ID_FORMA_PAGO, ALBARANES_PROVEEDOR.ID_ALBARAN, ALB2.REFERENCIA AS REFERENCIA_ALBARAN FROM ALBARANES_PROVEEDOR INNER JOIN CONTACTOS ON (CONTACTOS.ID = ALBARANES_PROVEEDOR.ID_PROVEEDOR) LEFT OUTER JOIN PEDIDOS_PROVEEDOR ON (PEDIDOS_PROVEEDOR.ID = ALBARANES_PROVEEDOR.ID_PEDIDO) LEFT OUTER JOIN FACTURAS_PROVEEDOR ON (FACTURAS_PROVEEDOR.ID = ALBARANES_PROVEEDOR.ID_FACTURA) LEFT OUTER JOIN ALMACENES ON (ALMACENES.ID = ALBARANES_PROVEEDOR.ID_ALMACEN) LEFT OUTER JOIN ALBARANES_PROVEEDOR ALB2 ON (ALB2.ID = ALBARANES_PROVEEDOR.ID_ALBARAN) ; /* View: V_ALMACENES */ CREATE VIEW V_ALMACENES( ID, ID_EMPRESA, NOMBRE, CALLE, PROVINCIA, POBLACION, CODIGO_POSTAL, TELEFONO, MOVIL, FAX, PERSONA_CONTACTO, OBSERVACIONES, FECHA_ALTA, FECHA_MODIFICACION, USUARIO) AS SELECT ALMACENES.ID, ALMACENES.ID_EMPRESA, ALMACENES.NOMBRE, ALMACENES.CALLE, ALMACENES.PROVINCIA, ALMACENES.POBLACION, ALMACENES.CODIGO_POSTAL, ALMACENES.TELEFONO, ALMACENES.MOVIL, ALMACENES.FAX, ALMACENES.PERSONA_CONTACTO, ALMACENES.OBSERVACIONES, ALMACENES.FECHA_ALTA, ALMACENES.FECHA_MODIFICACION, ALMACENES.USUARIO FROM ALMACENES WHERE ALMACENES.TIPO_ALMACEN = 'ALMACEN' ; /* View: V_ARTICULOS_PARA_COMPRA */ CREATE VIEW V_ARTICULOS_PARA_COMPRA( ID, ID_EMPRESA, REFERENCIA, DESCRIPCION, UNIDAD_MEDIDA, FAMILIA, IMAGEN, COMISIONABLE, FECHA_ALTA, FECHA_MODIFICACION, USUARIO, REFERENCIA_PROV, PRECIO_COSTE, PRECIO_PORTE, DESCUENTO, PRECIO_NETO, INVENTARIABLE, ID_PROVEEDOR, NOMBRE_PROVEEDOR, ELIMINADO, FABRICANTE, REFERENCIA_FABR, PARAM_MARGEN, PRECIO_PVP_VENTA, TIEMPO, PARAM_TIEMPO, MANO_OBRA, PRECIO_PVP_TOTAL, ID_ARTICULO) AS SELECT ARTICULOS.ID, ARTICULOS.ID_EMPRESA, ARTICULOS.REFERENCIA, ARTICULOS.DESCRIPCION, ARTICULOS.UNIDAD_MEDIDA, ARTICULOS.FAMILIA, ARTICULOS.IMAGEN, ARTICULOS.COMISIONABLE, ARTICULOS.FECHA_ALTA, ARTICULOS.FECHA_MODIFICACION, ARTICULOS.USUARIO, ARTICULOS_PROVEEDORES.REFERENCIA_PROV, ARTICULOS_PROVEEDORES.PRECIO_COSTE, ARTICULOS_PROVEEDORES.PRECIO_PORTE, ARTICULOS_PROVEEDORES.DESCUENTO, ARTICULOS_PROVEEDORES.PRECIO_NETO, ARTICULOS.INVENTARIABLE, ARTICULOS_PROVEEDORES.ID_PROVEEDOR, CONTACTOS.NOMBRE AS NOMBRE_PROVEEDOR, ARTICULOS.ELIMINADO, ARTICULOS.FABRICANTE, ARTICULOS.REFERENCIA_FABR, ARTICULOS.PARAM_MARGEN, ARTICULOS_PROVEEDORES.PRECIO_PVP_VENTA, ARTICULOS.TIEMPO, ARTICULOS.PARAM_TIEMPO, ARTICULOS.MANO_OBRA, ARTICULOS_PROVEEDORES.PRECIO_PVP_TOTAL, ARTICULOS.ID FROM ARTICULOS LEFT OUTER JOIN ARTICULOS_PROVEEDORES ON (ARTICULOS_PROVEEDORES.ID_ARTICULO = ARTICULOS.ID) LEFT OUTER JOIN CONTACTOS ON (CONTACTOS.ID = ARTICULOS_PROVEEDORES.ID_PROVEEDOR) WHERE (ARTICULOS.ELIMINADO = 0) ; /* View: V_ARTICULOS_PVP_MAX */ CREATE VIEW V_ARTICULOS_PVP_MAX( ID_ARTICULO, PRECIO_PVP_VENTA, PRECIO_PVP_TOTAL) AS select ID_ARTICULO, MAX(COALESCE(PRECIO_PVP_VENTA,0)) as PRECIO_PVP_VENTA, MAX(COALESCE(PRECIO_PVP_TOTAL,0)) as PRECIO_PVP_TOTAL from ARTICULOS_PROVEEDORES group by 1 ; /* View: V_ARTICULOS_PARA_VENTA */ CREATE VIEW V_ARTICULOS_PARA_VENTA( ID, ID_EMPRESA, REFERENCIA, DESCRIPCION, UNIDAD_MEDIDA, FAMILIA, IMAGEN, COMISIONABLE, FECHA_ALTA, FECHA_MODIFICACION, USUARIO, REFERENCIA_PROV, PRECIO_COSTE, PRECIO_PORTE, DESCUENTO, PRECIO_NETO, INVENTARIABLE, ELIMINADO, FABRICANTE, REFERENCIA_FABR, PARAM_MARGEN, PRECIO_PVP_VENTA, TIEMPO, PARAM_TIEMPO, MANO_OBRA, PRECIO_PVP_TOTAL) AS SELECT ARTICULOS.ID, ARTICULOS.ID_EMPRESA, ARTICULOS.REFERENCIA, ARTICULOS.DESCRIPCION, ARTICULOS.UNIDAD_MEDIDA, ARTICULOS.FAMILIA, ARTICULOS.IMAGEN, ARTICULOS.COMISIONABLE, ARTICULOS.FECHA_ALTA, ARTICULOS.FECHA_MODIFICACION, ARTICULOS.USUARIO, /*Estos Campos se necesitan para que no se tenga que tocar la lógica de selección de articulos de toda la aplicación*/ '' as REFERENCIA_PROV, 0 as PRECIO_COSTE, 0 as PRECIO_PORTE, 0 as DESCUENTO, 0 as PRECIO_NETO, ARTICULOS.INVENTARIABLE, ARTICULOS.ELIMINADO, ARTICULOS.FABRICANTE, ARTICULOS.REFERENCIA_FABR, ARTICULOS.PARAM_MARGEN, V_ARTICULOS_PVP_MAX.PRECIO_PVP_VENTA, ARTICULOS.TIEMPO, ARTICULOS.PARAM_TIEMPO, ARTICULOS.MANO_OBRA, V_ARTICULOS_PVP_MAX.PRECIO_PVP_TOTAL FROM ARTICULOS LEFT OUTER JOIN V_ARTICULOS_PVP_MAX ON (V_ARTICULOS_PVP_MAX.ID_ARTICULO = ARTICULOS.ID) WHERE (ARTICULOS.ELIMINADO = 0) ; /* View: V_CONTACTOS */ CREATE VIEW V_CONTACTOS( ID, ID_CATEGORIA, NIF_CIF, NOMBRE, PERSONA_CONTACTO, CALLE, POBLACION, PROVINCIA, CODIGO_POSTAL, TELEFONO_1, TELEFONO_2, MOVIL_1, MOVIL_2, FAX, EMAIL_1, EMAIL_2, PAGINA_WEB, NOTAS, FECHA_ALTA, FECHA_MODIFICACION, USUARIO, ID_EMPRESA, REFERENCIA) AS SELECT CONTACTOS.ID, CONTACTOS_CATEGORIAS.ID_CATEGORIA, CONTACTOS.NIF_CIF, CONTACTOS.NOMBRE, CONTACTOS.PERSONA_CONTACTO, CONTACTOS.CALLE, CONTACTOS.POBLACION, CONTACTOS.PROVINCIA, CONTACTOS.CODIGO_POSTAL, CONTACTOS.TELEFONO_1, CONTACTOS.TELEFONO_2, CONTACTOS.MOVIL_1, CONTACTOS.MOVIL_2, CONTACTOS.FAX, CONTACTOS.EMAIL_1, CONTACTOS.EMAIL_2, CONTACTOS.PAGINA_WEB, CONTACTOS.NOTAS, CONTACTOS.FECHA_ALTA, CONTACTOS.FECHA_MODIFICACION, CONTACTOS.USUARIO, EMPRESAS_CONTACTOS.ID_EMPRESA, CONTACTOS.REFERENCIA FROM CONTACTOS INNER JOIN CONTACTOS_CATEGORIAS ON (CONTACTOS_CATEGORIAS.ID_CONTACTO = CONTACTOS.ID) INNER JOIN EMPRESAS_CONTACTOS ON (EMPRESAS_CONTACTOS.ID_CONTACTO = CONTACTOS.ID) ; /* View: V_CLIENTES */ CREATE VIEW V_CLIENTES( ID, ID_CATEGORIA, NIF_CIF, NOMBRE, PERSONA_CONTACTO, CALLE, POBLACION, PROVINCIA, CODIGO_POSTAL, TELEFONO_1, TELEFONO_2, MOVIL_1, MOVIL_2, FAX, EMAIL_1, EMAIL_2, PAGINA_WEB, NOTAS, FECHA_ALTA, FECHA_MODIFICACION, USUARIO, ID_EMPRESA, REFERENCIA, GRUPO_CLIENTE, NOMBRE_COMERCIAL, VENCIMIENTO_FACTURAS_1, VENCIMIENTO_FACTURAS_2, VENCIMIENTO_FACTURAS_3, BLOQUEADO, REGIMEN_IVA, MOTIVO_BLOQUEO, RECARGO_EQUIVALENCIA, ID_TIPO_IVA, ID_FORMA_PAGO, TIENDA_WEB, CODIGO_ASIGNADO, DESCUENTO, FELICITACION) AS SELECT V_CONTACTOS.ID, V_CONTACTOS.ID_CATEGORIA, V_CONTACTOS.NIF_CIF, V_CONTACTOS.NOMBRE, V_CONTACTOS.PERSONA_CONTACTO, V_CONTACTOS.CALLE, V_CONTACTOS.POBLACION, V_CONTACTOS.PROVINCIA, V_CONTACTOS.CODIGO_POSTAL, V_CONTACTOS.TELEFONO_1, V_CONTACTOS.TELEFONO_2, V_CONTACTOS.MOVIL_1, V_CONTACTOS.MOVIL_2, V_CONTACTOS.FAX, V_CONTACTOS.EMAIL_1, V_CONTACTOS.EMAIL_2, V_CONTACTOS.PAGINA_WEB, V_CONTACTOS.NOTAS, V_CONTACTOS.FECHA_ALTA, V_CONTACTOS.FECHA_MODIFICACION, V_CONTACTOS.USUARIO, V_CONTACTOS.ID_EMPRESA, V_CONTACTOS.REFERENCIA, CLIENTES_DATOS.GRUPO_CLIENTE, CLIENTES_DATOS.NOMBRE_COMERCIAL, CLIENTES_DATOS.VENCIMIENTO_FACTURAS_1, CLIENTES_DATOS.VENCIMIENTO_FACTURAS_2, CLIENTES_DATOS.VENCIMIENTO_FACTURAS_3, CLIENTES_DATOS.BLOQUEADO, CLIENTES_DATOS.REGIMEN_IVA, CLIENTES_DATOS.MOTIVO_BLOQUEO, CLIENTES_DATOS.RECARGO_EQUIVALENCIA, CLIENTES_DATOS.ID_TIPO_IVA, CLIENTES_DATOS.ID_FORMA_PAGO, CLIENTES_DATOS.TIENDA_WEB, CLIENTES_DATOS.CODIGO_ASIGNADO, CLIENTES_DATOS.DESCUENTO, CLIENTES_DATOS.FELICITACION FROM V_CONTACTOS LEFT OUTER JOIN CLIENTES_DATOS ON (V_CONTACTOS.ID = CLIENTES_DATOS.ID_CLIENTE) WHERE V_CONTACTOS.ID_CATEGORIA = 1 ; /* View: V_EMPLEADOS */ CREATE VIEW V_EMPLEADOS( ID, ID_CATEGORIA, NIF_CIF, NOMBRE, PERSONA_CONTACTO, CALLE, POBLACION, PROVINCIA, CODIGO_POSTAL, TELEFONO_1, TELEFONO_2, MOVIL_1, MOVIL_2, FAX, EMAIL_1, EMAIL_2, PAGINA_WEB, NOTAS, FECHA_ALTA, FECHA_MODIFICACION, USUARIO, ID_EMPRESA, REFERENCIA, FECHA_NACIMIENTO, CATEGORIA, FECHA_ALTA_EMPRESA, FORMACION_BASE, FORMACION_COMPLE, FORMACION_RECIBIDA, EXPERIENCIA, CONTRATO, DURACION, FECHA_BAJA, CAUSA_BAJA) AS SELECT V_CONTACTOS.ID, V_CONTACTOS.ID_CATEGORIA, V_CONTACTOS.NIF_CIF, V_CONTACTOS.NOMBRE, V_CONTACTOS.PERSONA_CONTACTO, V_CONTACTOS.CALLE, V_CONTACTOS.POBLACION, V_CONTACTOS.PROVINCIA, V_CONTACTOS.CODIGO_POSTAL, V_CONTACTOS.TELEFONO_1, V_CONTACTOS.TELEFONO_2, V_CONTACTOS.MOVIL_1, V_CONTACTOS.MOVIL_2, V_CONTACTOS.FAX, V_CONTACTOS.EMAIL_1, V_CONTACTOS.EMAIL_2, V_CONTACTOS.PAGINA_WEB, V_CONTACTOS.NOTAS, V_CONTACTOS.FECHA_ALTA, V_CONTACTOS.FECHA_MODIFICACION, V_CONTACTOS.USUARIO, V_CONTACTOS.ID_EMPRESA, V_CONTACTOS.REFERENCIA, EMPLEADOS_DATOS.FECHA_NACIMIENTO, EMPLEADOS_DATOS.CATEGORIA, EMPLEADOS_DATOS.FECHA_ALTA_EMPRESA, EMPLEADOS_DATOS.FORMACION_BASE, EMPLEADOS_DATOS.FORMACION_COMPLE, EMPLEADOS_DATOS.FORMACION_RECIBIDA, EMPLEADOS_DATOS.EXPERIENCIA, EMPLEADOS_DATOS.CONTRATO, EMPLEADOS_DATOS.DURACION, EMPLEADOS_DATOS.FECHA_BAJA, EMPLEADOS_DATOS.CAUSA_BAJA FROM V_CONTACTOS INNER JOIN EMPLEADOS_DATOS ON (EMPLEADOS_DATOS.ID_EMPLEADO = V_CONTACTOS.ID) WHERE V_CONTACTOS.ID_CATEGORIA = 3 ; /* View: V_REC_FAC_CLI */ CREATE VIEW V_REC_FAC_CLI( ID_FACTURA, NUM_RECIBOS) AS SELECT FACTURAS_CLIENTE.ID, COUNT(RECIBOS_CLIENTE.ID) FROM FACTURAS_CLIENTE LEFT JOIN RECIBOS_CLIENTE ON (RECIBOS_CLIENTE.ID_FACTURA = FACTURAS_CLIENTE.ID) GROUP BY FACTURAS_CLIENTE.ID ; /* View: V_REC_CLI_SITUACION */ CREATE VIEW V_REC_CLI_SITUACION( ID_RECIBO, SITUACION) AS SELECT RECIBOS_CLIENTE.ID, CASE WHEN (COUNT(PAGOS_CLIENTE.ID_RECIBO)=0) THEN 'PENDIENTE' WHEN (MOD(COUNT(PAGOS_CLIENTE.ID_RECIBO), 2)=0) THEN 'DEVUELTO' ELSE 'COBRADO' END FROM RECIBOS_CLIENTE LEFT JOIN PAGOS_CLIENTE ON (PAGOS_CLIENTE.ID_RECIBO = RECIBOS_CLIENTE.ID) GROUP BY RECIBOS_CLIENTE.ID ; /* View: V_REC_FAC_CLI_COBRADOS */ CREATE VIEW V_REC_FAC_CLI_COBRADOS( ID_FACTURA, NUM_REC_COBRADOS) AS SELECT RECIBOS_CLIENTE.ID_FACTURA, COUNT(V_REC_CLI_SITUACION.ID_RECIBO) FROM V_REC_CLI_SITUACION LEFT JOIN RECIBOS_CLIENTE ON (RECIBOS_CLIENTE.ID = V_REC_CLI_SITUACION.ID_RECIBO) WHERE (TRIM(V_REC_CLI_SITUACION.SITUACION) = 'COBRADO') GROUP BY RECIBOS_CLIENTE.ID_FACTURA ; /* View: V_FAC_CLI_SITUACION */ CREATE VIEW V_FAC_CLI_SITUACION( ID_FACTURA, SITUACION) AS SELECT ID_FACTURA, CASE WHEN ((SUM(NUM_RECIBOS) = 0) OR (SUM(NUM_REC_COBRADOS) = 0)) THEN 'PENDIENTE' WHEN (SUM(NUM_RECIBOS) = SUM(NUM_REC_COBRADOS)) THEN 'PAGADA' ELSE 'PARCIALMENTE PAGADA' END AS SITUACION FROM ( SELECT ID_FACTURA, NUM_RECIBOS, 0 AS NUM_REC_COBRADOS FROM V_REC_FAC_CLI UNION ALL SELECT ID_FACTURA, 0 AS NUM_RECIBOS, NUM_REC_COBRADOS FROM V_REC_FAC_CLI_COBRADOS ) GROUP BY ID_FACTURA ; /* View: V_REC_FAC_PRO */ CREATE VIEW V_REC_FAC_PRO( ID_FACTURA, NUM_RECIBOS) AS SELECT FACTURAS_PROVEEDOR.ID, COUNT(RECIBOS_PROVEEDOR.ID) FROM FACTURAS_PROVEEDOR LEFT JOIN RECIBOS_PROVEEDOR ON (RECIBOS_PROVEEDOR.ID_FACTURA = FACTURAS_PROVEEDOR.ID) GROUP BY FACTURAS_PROVEEDOR.ID ; /* View: V_REC_PRO_SITUACION */ CREATE VIEW V_REC_PRO_SITUACION( ID_RECIBO, SITUACION) AS SELECT RECIBOS_PROVEEDOR.ID, CASE WHEN (COUNT(PAGOS_PROVEEDOR.ID_RECIBO)=0) THEN 'PENDIENTE' WHEN (MOD(COUNT(PAGOS_PROVEEDOR.ID_RECIBO), 2)=0) THEN 'DEVUELTO' ELSE 'PAGADO' END FROM RECIBOS_PROVEEDOR LEFT JOIN PAGOS_PROVEEDOR ON (PAGOS_PROVEEDOR.ID_RECIBO = RECIBOS_PROVEEDOR.ID) GROUP BY RECIBOS_PROVEEDOR.ID ; /* View: V_REC_FAC_PRO_PAGADOS */ CREATE VIEW V_REC_FAC_PRO_PAGADOS( ID_FACTURA, NUM_REC_PAGADOS) AS SELECT RECIBOS_PROVEEDOR.ID_FACTURA, COUNT(V_REC_PRO_SITUACION.ID_RECIBO) FROM V_REC_PRO_SITUACION LEFT JOIN RECIBOS_PROVEEDOR ON (RECIBOS_PROVEEDOR.ID = V_REC_PRO_SITUACION.ID_RECIBO) WHERE (TRIM(V_REC_PRO_SITUACION.SITUACION) = 'PAGADO') GROUP BY RECIBOS_PROVEEDOR.ID_FACTURA ; /* View: V_FAC_PRO_SITUACION */ CREATE VIEW V_FAC_PRO_SITUACION( ID_FACTURA, SITUACION) AS SELECT ID_FACTURA, CASE WHEN ((SUM(NUM_RECIBOS) = 0) OR (SUM(NUM_REC_PAGADOS) = 0)) THEN 'PENDIENTE' WHEN (SUM(NUM_RECIBOS) = SUM(NUM_REC_PAGADOS)) THEN 'PAGADA' ELSE 'PARCIALMENTE PAGADA' END AS SITUACION FROM ( SELECT ID_FACTURA, NUM_RECIBOS, 0 AS NUM_REC_PAGADOS FROM V_REC_FAC_PRO UNION ALL SELECT ID_FACTURA, 0 AS NUM_RECIBOS, NUM_REC_PAGADOS FROM V_REC_FAC_PRO_PAGADOS ) GROUP BY ID_FACTURA ; /* View: V_FACTURAS_CLIENTE */ CREATE VIEW V_FACTURAS_CLIENTE( ID, ID_EMPRESA, REFERENCIA, TIPO, ID_COMISION_LIQUIDADA, FECHA_FACTURA, FECHA_VENCIMIENTO, FECHA_RETENCION, SITUACION, BASE_IMPONIBLE, DESCUENTO, IMPORTE_DESCUENTO, IVA, IMPORTE_IVA, RE, IMPORTE_RE, IMPORTE_TOTAL, OBSERVACIONES, ID_CLIENTE, NIF_CIF, NOMBRE, ID_DIRECCION, CALLE, POBLACION, PROVINCIA, CODIGO_POSTAL, DATOS_BANCARIOS, CLIENTE_FINAL, FECHA_ALTA, FECHA_MODIFICACION, USUARIO, ID_FORMA_PAGO, RECARGO_EQUIVALENCIA, ID_TIPO_IVA, IMPORTE_NETO, IMPORTE_PORTE, ID_AGENTE, REFERENCIA_COMISION, RETENCION, IMPORTE_RETENCION, CERTIFICADO_ISO) AS SELECT FACTURAS_CLIENTE.ID, FACTURAS_CLIENTE.ID_EMPRESA, FACTURAS_CLIENTE.REFERENCIA, CASE WHEN (FACTURAS_CLIENTE.IMPORTE_TOTAL < 0) THEN 'A' ELSE 'F' END AS TIPO, FACTURAS_CLIENTE.ID_COMISION_LIQUIDADA, FACTURAS_CLIENTE.FECHA_FACTURA, FACTURAS_CLIENTE.FECHA_VENCIMIENTO, FACTURAS_CLIENTE.FECHA_RETENCION, TRIM(V_FAC_CLI_SITUACION.SITUACION), FACTURAS_CLIENTE.BASE_IMPONIBLE, FACTURAS_CLIENTE.DESCUENTO, FACTURAS_CLIENTE.IMPORTE_DESCUENTO, FACTURAS_CLIENTE.IVA, FACTURAS_CLIENTE.IMPORTE_IVA, FACTURAS_CLIENTE.RE, FACTURAS_CLIENTE.IMPORTE_RE, FACTURAS_CLIENTE.IMPORTE_TOTAL, FACTURAS_CLIENTE.OBSERVACIONES, FACTURAS_CLIENTE.ID_CLIENTE, FACTURAS_CLIENTE.NIF_CIF, FACTURAS_CLIENTE.NOMBRE, FACTURAS_CLIENTE.ID_DIRECCION, FACTURAS_CLIENTE.CALLE, FACTURAS_CLIENTE.POBLACION, FACTURAS_CLIENTE.PROVINCIA, FACTURAS_CLIENTE.CODIGO_POSTAL, FACTURAS_CLIENTE.DATOS_BANCARIOS, FACTURAS_CLIENTE.CLIENTE_FINAL, FACTURAS_CLIENTE.FECHA_ALTA, FACTURAS_CLIENTE.FECHA_MODIFICACION, FACTURAS_CLIENTE.USUARIO, FACTURAS_CLIENTE.ID_FORMA_PAGO, FACTURAS_CLIENTE.RECARGO_EQUIVALENCIA, FACTURAS_CLIENTE.ID_TIPO_IVA, FACTURAS_CLIENTE.IMPORTE_NETO, FACTURAS_CLIENTE.IMPORTE_PORTE, CLIENTES_DATOS.ID_AGENTE, COMISIONES_LIQUIDADAS.REFERENCIA, FACTURAS_CLIENTE.RETENCION, FACTURAS_CLIENTE.IMPORTE_RETENCION, FACTURAS_CLIENTE.CERTIFICADO_ISO FROM V_FAC_CLI_SITUACION LEFT JOIN FACTURAS_CLIENTE ON (FACTURAS_CLIENTE.ID = V_FAC_CLI_SITUACION.ID_FACTURA) LEFT JOIN COMISIONES_LIQUIDADAS ON (COMISIONES_LIQUIDADAS.ID = FACTURAS_CLIENTE.ID_COMISION_LIQUIDADA) LEFT JOIN CLIENTES_DATOS ON (CLIENTES_DATOS.ID_CLIENTE = FACTURAS_CLIENTE.ID_CLIENTE) ; /* View: V_FACTURAS_PROVEEDOR */ CREATE VIEW V_FACTURAS_PROVEEDOR( ID, ID_EMPRESA, REFERENCIA, TIPO, REFERENCIA_PROVEEDOR, FECHA_FACTURA, FECHA_RECEPCION, FECHA_VENCIMIENTO, SITUACION, BASE_IMPONIBLE, DESCUENTO, IMPORTE_DESCUENTO, IVA, IMPORTE_IVA, RE, IMPORTE_RE, IMPORTE_TOTAL, OBSERVACIONES, ID_PROVEEDOR, NIF_CIF, NOMBRE, CALLE, POBLACION, PROVINCIA, CODIGO_POSTAL, FECHA_ALTA, FECHA_MODIFICACION, USUARIO, ID_FORMA_PAGO, RECARGO_EQUIVALENCIA, ID_TIPO_IVA, IMPORTE_NETO, IMPORTE_PORTE, DATOS_BANCARIOS) AS SELECT FACTURAS_PROVEEDOR.ID, FACTURAS_PROVEEDOR.ID_EMPRESA, FACTURAS_PROVEEDOR.REFERENCIA, CASE WHEN (FACTURAS_PROVEEDOR.IMPORTE_TOTAL < 0) THEN 'A' ELSE 'F' END AS TIPO, FACTURAS_PROVEEDOR.REFERENCIA_PROVEEDOR, FACTURAS_PROVEEDOR.FECHA_FACTURA, FACTURAS_PROVEEDOR.FECHA_RECEPCION, FACTURAS_PROVEEDOR.FECHA_VENCIMIENTO, TRIM(V_FAC_PRO_SITUACION.SITUACION), FACTURAS_PROVEEDOR.BASE_IMPONIBLE, FACTURAS_PROVEEDOR.DESCUENTO, FACTURAS_PROVEEDOR.IMPORTE_DESCUENTO, FACTURAS_PROVEEDOR.IVA, FACTURAS_PROVEEDOR.IMPORTE_IVA, FACTURAS_PROVEEDOR.RE, FACTURAS_PROVEEDOR.IMPORTE_RE, FACTURAS_PROVEEDOR.IMPORTE_TOTAL, FACTURAS_PROVEEDOR.OBSERVACIONES, FACTURAS_PROVEEDOR.ID_PROVEEDOR, FACTURAS_PROVEEDOR.NIF_CIF, FACTURAS_PROVEEDOR.NOMBRE, FACTURAS_PROVEEDOR.CALLE, FACTURAS_PROVEEDOR.POBLACION, FACTURAS_PROVEEDOR.PROVINCIA, FACTURAS_PROVEEDOR.CODIGO_POSTAL, FACTURAS_PROVEEDOR.FECHA_ALTA, FACTURAS_PROVEEDOR.FECHA_MODIFICACION, FACTURAS_PROVEEDOR.USUARIO, FACTURAS_PROVEEDOR.ID_FORMA_PAGO, FACTURAS_PROVEEDOR.RECARGO_EQUIVALENCIA, FACTURAS_PROVEEDOR.ID_TIPO_IVA, FACTURAS_PROVEEDOR.IMPORTE_NETO, FACTURAS_PROVEEDOR.IMPORTE_PORTE, FACTURAS_PROVEEDOR.DATOS_BANCARIOS FROM V_FAC_PRO_SITUACION LEFT JOIN FACTURAS_PROVEEDOR ON (FACTURAS_PROVEEDOR.ID = V_FAC_PRO_SITUACION.ID_FACTURA) LEFT JOIN PROVEEDORES_DATOS ON (PROVEEDORES_DATOS.ID_PROVEEDOR = FACTURAS_PROVEEDOR.ID_PROVEEDOR) ; /* View: V_HIS_MOV_ALB_CLI */ CREATE VIEW V_HIS_MOV_ALB_CLI( FECHA, ID_ALMACEN, ID_ARTICULO, TIPO_MOVIMIENTO, CANTIDAD, CAUSA) AS SELECT ALBARANES_CLIENTE.FECHA_ALBARAN, V_ALB_CLI_DETALLES.ID_ALMACEN, V_ALB_CLI_DETALLES.ID_ARTICULO, CASE WHEN V_ALB_CLI_DETALLES.CANTIDAD < 0 THEN 'E' ELSE 'S' END, (-1)*V_ALB_CLI_DETALLES.CANTIDAD, CASE WHEN ALBARANES_CLIENTE.IMPORTE_TOTAL < 0 THEN 'Orden de devolución de cliente ' || ALBARANES_CLIENTE.REFERENCIA ELSE 'Albarán de cliente ' || ALBARANES_CLIENTE.REFERENCIA END FROM V_ALB_CLI_DETALLES LEFT JOIN ALBARANES_CLIENTE ON (V_ALB_CLI_DETALLES.ID_ALBARAN = ALBARANES_CLIENTE.ID) WHERE (V_ALB_CLI_DETALLES.ID_ALMACEN IS NOT NULL) AND (V_ALB_CLI_DETALLES.SITUACION in ('ENVIADO', 'SERVIDO')) ; /* View: V_HIS_MOV_ALB_PROV */ CREATE VIEW V_HIS_MOV_ALB_PROV( FECHA, ID_ALMACEN, ID_ARTICULO, TIPO_MOVIMIENTO, CANTIDAD, CAUSA) AS SELECT ALBARANES_PROVEEDOR.FECHA_ALBARAN, V_ALB_PROV_DETALLES.ID_ALMACEN, V_ALB_PROV_DETALLES.ID_ARTICULO, CASE WHEN V_ALB_PROV_DETALLES.CANTIDAD < 0 THEN 'S' ELSE 'E' END, V_ALB_PROV_DETALLES.CANTIDAD, CASE WHEN ALBARANES_PROVEEDOR.IMPORTE_TOTAL < 0 THEN 'Orden de devolución ' || ALBARANES_PROVEEDOR.REFERENCIA ELSE 'Albarán de proveedor ' || ALBARANES_PROVEEDOR.REFERENCIA END FROM V_ALB_PROV_DETALLES LEFT JOIN ALBARANES_PROVEEDOR ON (V_ALB_PROV_DETALLES.ID_ALBARAN = ALBARANES_PROVEEDOR.ID) WHERE (V_ALB_PROV_DETALLES.ID_ALMACEN IS NOT NULL) ; /* View: V_HIS_MOV_REGULARIZACIONES */ CREATE VIEW V_HIS_MOV_REGULARIZACIONES( FECHA, ID_ALMACEN, ID_ARTICULO, TIPO_MOVIMIENTO, CANTIDAD, CAUSA) AS SELECT FECHA_MOVIMIENTO, ID_ALMACEN, ID_ARTICULO, TIPO, CASE WHEN TIPO = 'S' THEN (-1)* CANTIDAD ELSE CANTIDAD END, 'Regularizaci¢n por - ' || CAUSA FROM MOVIMIENTOS ; /* View: V_HIS_MOV_AUX */ CREATE VIEW V_HIS_MOV_AUX( FECHA, ID_ALMACEN, ID_ARTICULO, TIPO_MOVIMIENTO, CANTIDAD, CAUSA) AS SELECT FECHA, ID_ALMACEN, ID_ARTICULO, TIPO_MOVIMIENTO, CANTIDAD, CAUSA FROM V_HIS_MOV_ALB_PROV UNION ALL SELECT FECHA, ID_ALMACEN, ID_ARTICULO, TIPO_MOVIMIENTO, CANTIDAD, CAUSA FROM V_HIS_MOV_ALB_CLI UNION ALL SELECT FECHA, ID_ALMACEN, ID_ARTICULO, TIPO_MOVIMIENTO, CANTIDAD, CAUSA FROM V_HIS_MOV_REGULARIZACIONES ; /* View: V_HISTORICO_MOVIMIENTOS */ CREATE VIEW V_HISTORICO_MOVIMIENTOS( FECHA, ID_ALMACEN, ID_EMPRESA, NOMBRE_ALMACEN, ID_ARTICULO, FAMILIA, REFERENCIA, UNIDAD_MEDIDA, FABRICANTE, REFERENCIA_FABR, DESCRIPCION, TIPO_MOVIMIENTO, CANTIDAD, CAUSA) AS SELECT V_HIS_MOV_AUX.FECHA, V_HIS_MOV_AUX.ID_ALMACEN, ALMACENES.ID_EMPRESA, ALMACENES.NOMBRE, V_HIS_MOV_AUX.ID_ARTICULO, ARTICULOS.FAMILIA, ARTICULOS.REFERENCIA, ARTICULOS.UNIDAD_MEDIDA, ARTICULOS.FABRICANTE, ARTICULOS.REFERENCIA_FABR, ARTICULOS.DESCRIPCION, V_HIS_MOV_AUX.TIPO_MOVIMIENTO, V_HIS_MOV_AUX.CANTIDAD, V_HIS_MOV_AUX.CAUSA FROM V_HIS_MOV_AUX LEFT JOIN ALMACENES ON (ALMACENES.ID = V_HIS_MOV_AUX.ID_ALMACEN) LEFT JOIN ARTICULOS ON (ARTICULOS.ID = V_HIS_MOV_AUX.ID_ARTICULO) WHERE (V_HIS_MOV_AUX.ID_ARTICULO <> 0) AND (ARTICULOS.INVENTARIABLE = 1) ; /* View: V_INV_DETALLE_RESERVAS */ CREATE VIEW V_INV_DETALLE_RESERVAS( ID, ID_EMPRESA, ID_ALMACEN, NOMBRE_ALMACEN, FECHA_RESERVA, CAUSA_RESERVA, ID_ARTICULO, REFERENCIA, DESCRIPCION, FAMILIA, UNIDAD_MEDIDA, FABRICANTE, REFERENCIA_FABR, CANTIDAD, ID_ALMACEN_RESERVA, NOMBRE_ALMACEN_RESERVA, ID_EMPRESA_ALMACEN_RESERVA) AS select movimientos.id, almacenes1.ID_EMPRESA, movimientos.ID_ALMACEN, almacenes1.nombre as nombre_almacen, movimientos.fecha_movimiento as fecha_reserva, movimientos.causa, movimientos.id_articulo, articulos.referencia, articulos.descripcion, articulos.familia, articulos.unidad_medida, articulos.fabricante, articulos.referencia_fabr, movimientos.cantidad, movimientos.id_almacen_reserva, almacenes2.nombre as nombre_almacen_reserva, almacenes2.id_empresa from movimientos left join almacenes almacenes1 on (almacenes1.ID = movimientos.ID_ALMACEN) left join almacenes almacenes2 on (almacenes2.ID = movimientos.ID_ALMACEN_RESERVA) left join articulos on (articulos.id = movimientos.id_articulo) where tipo = 'R' ; ; /* View: V_INV_ENTRADAS_ALB */ CREATE VIEW V_INV_ENTRADAS_ALB( ID_ALMACEN, ID_ARTICULO, CANTIDAD) AS SELECT ID_ALMACEN, ID_ARTICULO, SUM(CANTIDAD) FROM V_ALB_PROV_DETALLES WHERE (ID_ALMACEN IS NOT NULL) GROUP BY ID_ALMACEN, ID_ARTICULO ; /* View: V_INV_ENTRADAS_MOV */ CREATE VIEW V_INV_ENTRADAS_MOV( ID_ALMACEN, ID_ARTICULO, CANTIDAD) AS SELECT ID_ALMACEN, ID_ARTICULO, SUM(CANTIDAD) FROM MOVIMIENTOS WHERE TIPO = 'E' GROUP BY ID_ALMACEN, ID_ARTICULO ; /* View: V_INV_ENTRADAS_AUX */ CREATE VIEW V_INV_ENTRADAS_AUX( TIPO, ID_ALMACEN, ID_ARTICULO, CANTIDAD) AS SELECT 'ALB', ID_ALMACEN, ID_ARTICULO, CANTIDAD FROM V_INV_ENTRADAS_ALB UNION ALL SELECT 'MOV', ID_ALMACEN, ID_ARTICULO, CANTIDAD FROM V_INV_ENTRADAS_MOV ; /* View: V_INV_ENTRADAS */ CREATE VIEW V_INV_ENTRADAS( ID_ALMACEN, ID_ARTICULO, CANTIDAD) AS SELECT ID_ALMACEN, ID_ARTICULO, SUM(CANTIDAD) as CANTIDAD FROM V_INV_ENTRADAS_AUX GROUP BY ID_ALMACEN, ID_ARTICULO ; /* View: V_PED_PROV_ARTICULOS_RECIBIDOS */ CREATE VIEW V_PED_PROV_ARTICULOS_RECIBIDOS( ID_PEDIDO, ID_ARTICULO, DESCRIPCION, CANTIDAD) AS SELECT ID_PEDIDO, ID_ARTICULO, DESCRIPCION, SUM(CANTIDAD) AS CANTIDAD FROM V_ALB_PROV_DETALLES WHERE (ID_PEDIDO is not null) GROUP BY ID_PEDIDO, ID_ARTICULO, DESCRIPCION; /* View: V_PED_PROV_DETALLES */ CREATE VIEW V_PED_PROV_DETALLES( ID_PEDIDO, ID_ALMACEN, ID_ARTICULO, DESCRIPCION, CANTIDAD) AS SELECT PEDIDOS_PROVEEDOR_DETALLES.ID_PEDIDO, PEDIDOS_PROVEEDOR.ID_ALMACEN, COALESCE(PEDIDOS_PROVEEDOR_DETALLES.ID_ARTICULO, 0), CASE WHEN PEDIDOS_PROVEEDOR_DETALLES.ID_ARTICULO IS NULL THEN PEDIDOS_PROVEEDOR_DETALLES.CONCEPTO ELSE NULL END, SUM(COALESCE(PEDIDOS_PROVEEDOR_DETALLES.CANTIDAD, 0)) FROM PEDIDOS_PROVEEDOR_DETALLES LEFT JOIN PEDIDOS_PROVEEDOR ON (PEDIDOS_PROVEEDOR_DETALLES.ID_PEDIDO = PEDIDOS_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 LEFT JOIN ARTICULOS ON (PEDIDOS_PROVEEDOR_DETALLES.ID_ARTICULO = ARTICULOS.ID) WHERE (PEDIDOS_PROVEEDOR_DETALLES.ID_ARTICULO is not null) AND (ARTICULOS.INVENTARIABLE = 1) */ GROUP BY PEDIDOS_PROVEEDOR_DETALLES.ID_PEDIDO, PEDIDOS_PROVEEDOR.ID_ALMACEN, PEDIDOS_PROVEEDOR_DETALLES.ID_ARTICULO, 4; /* View: V_PED_PROV_ARTICULOS_AUX */ CREATE VIEW V_PED_PROV_ARTICULOS_AUX( ID_PEDIDO, ID_ARTICULO, DESCRIPCION, CANTIDAD_PEDIDA, CANTIDAD_RECIBIDA) AS SELECT V_PED_PROV_DETALLES.ID_PEDIDO, V_PED_PROV_DETALLES.ID_ARTICULO, V_PED_PROV_DETALLES.DESCRIPCION, V_PED_PROV_DETALLES.CANTIDAD AS CANTIDAD_PEDIDA, 0 as CANTIDAD_RECIBIDA FROM V_PED_PROV_DETALLES UNION ALL SELECT V_PED_PROV_ARTICULOS_RECIBIDOS.ID_PEDIDO, V_PED_PROV_ARTICULOS_RECIBIDOS.ID_ARTICULO, V_PED_PROV_ARTICULOS_RECIBIDOS.DESCRIPCION, NULL as CANTIDAD_PEDIDA, V_PED_PROV_ARTICULOS_RECIBIDOS.CANTIDAD AS CANTIDAD_RECIBIDA FROM V_PED_PROV_ARTICULOS_RECIBIDOS ; /* View: V_PED_PROV_ARTICULOS */ CREATE VIEW V_PED_PROV_ARTICULOS( ID_PEDIDO, ID_ARTICULO, DESCRIPCION, CANTIDAD_PEDIDA, CANTIDAD_RECIBIDA, CANTIDAD_PENDIENTE) AS SELECT ID_PEDIDO, /*PEDIDOS_PROVEEDOR.ID_ALMACEN,*/ ID_ARTICULO, DESCRIPCION, SUM(CANTIDAD_PEDIDA) as CANTIDAD_PEDIDA, SUM(CANTIDAD_RECIBIDA) as CANTIDAD_RECIBIDA, SUM(CANTIDAD_PEDIDA) - SUM(CANTIDAD_RECIBIDA) as CANTIDAD_PENDIENTE FROM V_PED_PROV_ARTICULOS_AUX /* LEFT JOIN PEDIDOS_PROVEEDOR ON (PEDIDOS_PROVEEDOR.ID = V_PED_PROV_ARTICULOS_AUX.ID_PEDIDO) */ GROUP BY ID_PEDIDO, /*PEDIDOS_PROVEEDOR.ID_ALMACEN,*/ ID_ARTICULO, DESCRIPCION HAVING SUM(CANTIDAD_PEDIDA) IS NOT NULL ; /* View: V_INV_ENTRADAS_PENDIENTES */ CREATE VIEW V_INV_ENTRADAS_PENDIENTES( ID_ALMACEN, ID_ARTICULO, CANTIDAD) AS SELECT PEDIDOS_PROVEEDOR.ID_ALMACEN, V_PED_PROV_ARTICULOS.ID_ARTICULO, SUM(V_PED_PROV_ARTICULOS.CANTIDAD_PENDIENTE) FROM V_PED_PROV_ARTICULOS LEFT JOIN PEDIDOS_PROVEEDOR ON (PEDIDOS_PROVEEDOR.ID = V_PED_PROV_ARTICULOS.ID_PEDIDO) WHERE (PEDIDOS_PROVEEDOR.ID_ALMACEN IS NOT NULL) GROUP BY PEDIDOS_PROVEEDOR.ID_ALMACEN, V_PED_PROV_ARTICULOS.ID_ARTICULO ; /* View: V_INV_RESERVAS_AUX */ CREATE VIEW V_INV_RESERVAS_AUX( ID_ALMACEN, ID_ARTICULO, CANTIDAD) AS SELECT ID_ALMACEN, ID_ARTICULO, SUM(CANTIDAD) FROM V_ALB_CLI_DETALLES WHERE (ID_ALMACEN IS NOT NULL) AND (SITUACION = 'PENDIENTE') GROUP BY ID_ALMACEN, ID_ARTICULO UNION ALL SELECT ID_ALMACEN, ID_ARTICULO, CANTIDAD FROM MOVIMIENTOS WHERE TIPO = 'R' ; /* View: V_INV_RESERVAS */ CREATE VIEW V_INV_RESERVAS( ID_ALMACEN, ID_ARTICULO, CANTIDAD) AS SELECT ID_ALMACEN, ID_ARTICULO, SUM(CANTIDAD) FROM V_INV_RESERVAS_AUX GROUP BY ID_ALMACEN, ID_ARTICULO ; /* View: V_INV_SALIDAS_ALB */ CREATE VIEW V_INV_SALIDAS_ALB( ID_ALMACEN, ID_ARTICULO, CANTIDAD) AS SELECT ID_ALMACEN, ID_ARTICULO, SUM(CANTIDAD) FROM V_ALB_CLI_DETALLES WHERE (ID_ALMACEN IS NOT NULL) AND (SITUACION in ('ENVIADO', 'SERVIDO')) GROUP BY ID_ALMACEN, ID_ARTICULO ; /* View: V_INV_SALIDAS_MOV */ CREATE VIEW V_INV_SALIDAS_MOV( ID_ALMACEN, ID_ARTICULO, CANTIDAD) AS SELECT ID_ALMACEN, ID_ARTICULO, SUM(CANTIDAD) FROM MOVIMIENTOS WHERE TIPO = 'S' GROUP BY ID_ALMACEN, ID_ARTICULO ; /* View: V_INV_SALIDAS_AUX */ CREATE VIEW V_INV_SALIDAS_AUX( ID_ALMACEN, ID_ARTICULO, CANTIDAD) AS SELECT ID_ALMACEN, ID_ARTICULO, CANTIDAD FROM V_INV_SALIDAS_ALB UNION ALL SELECT ID_ALMACEN, ID_ARTICULO, CANTIDAD FROM V_INV_SALIDAS_MOV ; /* View: V_INV_SALIDAS */ CREATE VIEW V_INV_SALIDAS( ID_ALMACEN, ID_ARTICULO, CANTIDAD) AS SELECT ID_ALMACEN, ID_ARTICULO, SUM(CANTIDAD) as CANTIDAD FROM V_INV_SALIDAS_AUX GROUP BY ID_ALMACEN, ID_ARTICULO ; /* View: V_INV_STOCK_AUX */ CREATE VIEW V_INV_STOCK_AUX( ID_ALMACEN, ID_ARTICULO, CANTIDAD_ENTRADA, CANTIDAD_SALIDA) AS SELECT ID_ALMACEN, ID_ARTICULO, CANTIDAD as CANTIDAD_ENTRADA, 0 as CANTIDAD_SALIDA FROM V_INV_ENTRADAS UNION ALL SELECT ID_ALMACEN, ID_ARTICULO, 0 as CANTIDAD_ENTRADA, CANTIDAD as CANTIDAD_SALIDA FROM V_INV_SALIDAS ; /* View: V_INV_STOCK */ CREATE VIEW V_INV_STOCK( ID_ALMACEN, ID_ARTICULO, CANTIDAD) AS SELECT ID_ALMACEN, ID_ARTICULO, (SUM(CANTIDAD_ENTRADA) - SUM(CANTIDAD_SALIDA)) as CANTIDAD FROM V_INV_STOCK_AUX GROUP BY ID_ALMACEN, ID_ARTICULO ; /* View: V_INVENTARIO_AUX */ CREATE VIEW V_INVENTARIO_AUX( ID_ALMACEN, ID_ARTICULO, STOCK, PENDIENTE_RECEPCION, RESERVA) AS SELECT ID_ALMACEN, ID_ARTICULO, CANTIDAD as STOCK, 0 as PENDIENTES, 0 as RESERVADAS FROM V_INV_STOCK UNION ALL SELECT ID_ALMACEN, ID_ARTICULO, 0 as STOCK, CANTIDAD as PENDIENTES, 0 AS RESERVADAS FROM V_INV_ENTRADAS_PENDIENTES UNION ALL SELECT ID_ALMACEN, ID_ARTICULO, 0 as STOCK, 0 as PENDIENTES, CANTIDAD AS RESERVADAS FROM V_INV_RESERVAS ; /* View: V_INVENTARIO */ CREATE VIEW V_INVENTARIO( ID_ALMACEN, ID_EMPRESA, TIPO_ALMACEN, NOMBRE, ID_ARTICULO, REFERENCIA, FAMILIA, DESCRIPCION, REFERENCIA_FAB, UNIDAD_MEDIDA, STOCK, UNIDADES_ALMACEN, RESERVA, PENDIENTE_RECEPCION) AS SELECT ID_ALMACEN, ALMACENES.ID_EMPRESA, ALMACENES.TIPO_ALMACEN, ALMACENES.NOMBRE, ID_ARTICULO, ARTICULOS.REFERENCIA, ARTICULOS.FAMILIA, ARTICULOS.DESCRIPCION, ARTICULOS.REFERENCIA_FABR, ARTICULOS.UNIDAD_MEDIDA, /* COALESCE(ARTICULOS.PRECIO_NETO,0) as PRECIO_NETO,*/ (SUM(STOCK) - SUM(RESERVA)) as STOCK, SUM(STOCK) as UNIDADES_ALMACEN, /*Si las unidades son negativas no se tiene en cuenta el coste*/ /* CASE WHEN (SUM(STOCK) < 0) THEN 0 ELSE (COALESCE(ARTICULOS.PRECIO_NETO,0) * SUM(STOCK)) END as COSTE_UNIDADES, */ SUM(RESERVA) as RESERVA, SUM(PENDIENTE_RECEPCION) as PENDIENTE_RECEPCION FROM V_INVENTARIO_AUX LEFT JOIN ARTICULOS ON (ARTICULOS.ID = V_INVENTARIO_AUX.ID_ARTICULO) LEFT JOIN ALMACENES ON (ALMACENES.ID = V_INVENTARIO_AUX.ID_ALMACEN) WHERE (ID_ARTICULO <> 0) AND (ARTICULOS.ELIMINADO = 0) AND (ARTICULOS.INVENTARIABLE = 1) GROUP BY ID_ALMACEN, ALMACENES.ID_EMPRESA, ALMACENES.TIPO_ALMACEN, ALMACENES.NOMBRE, ID_ARTICULO, ARTICULOS.REFERENCIA, ARTICULOS.FAMILIA, ARTICULOS.DESCRIPCION, ARTICULOS.REFERENCIA_FABR, ARTICULOS.UNIDAD_MEDIDA /* ARTICULOS.PRECIO_NETO*/ /*QUITAMOS AQUELLAS TUPLAS DE LAS QUE NO TENEMOS UNIDADES EN EL ALAMCEN, NO HAY RESERVAS NI PEDIDOS PENDIENTES DE RECIBIR*/ HAVING ((SUM(STOCK) <> 0 ) OR (SUM(RESERVA) <> 0) OR (SUM(PENDIENTE_RECEPCION) <> 0)) ; /* View: V_OBRAS */ CREATE VIEW V_OBRAS( ID, ID_EMPRESA, NOMBRE, CALLE, PROVINCIA, POBLACION, CODIGO_POSTAL, TELEFONO, MOVIL, FAX, PERSONA_CONTACTO, OBSERVACIONES, ID_CLIENTE, NOMBRE_CLIENTE, FECHA_ALTA, FECHA_MODIFICACION, USUARIO, ID_EJECUCION) AS SELECT ALMACENES.ID, ALMACENES.ID_EMPRESA, ALMACENES.NOMBRE, ALMACENES.CALLE, ALMACENES.PROVINCIA, ALMACENES.POBLACION, ALMACENES.CODIGO_POSTAL, ALMACENES.TELEFONO, ALMACENES.MOVIL, ALMACENES.FAX, ALMACENES.PERSONA_CONTACTO, ALMACENES.OBSERVACIONES, OBRAS_DATOS.ID_CLIENTE, CLIENTES.NOMBRE AS NOMBRE_CLIENTE, ALMACENES.FECHA_ALTA, ALMACENES.FECHA_MODIFICACION, ALMACENES.USUARIO, CASE WHEN (OBRAS_EJECUCIONES.FECHA_INICIO IS NULL) THEN NULL WHEN (OBRAS_EJECUCIONES.FECHA_INICIO IS NOT NULL) THEN OBRAS_EJECUCIONES.ID END AS ID_EJECUCION FROM ALMACENES INNER JOIN OBRAS_DATOS ON (OBRAS_DATOS.ID_ALMACEN = ALMACENES.ID) LEFT OUTER JOIN CONTACTOS AS CLIENTES ON (CLIENTES.ID = OBRAS_DATOS.ID_CLIENTE) LEFT OUTER JOIN OBRAS_EJECUCIONES ON ((OBRAS_EJECUCIONES.ID_OBRA = ALMACENES.ID) AND (OBRAS_EJECUCIONES.FECHA_FIN IS NULL)) WHERE ALMACENES.TIPO_ALMACEN = 'OBRA'; /* View: V_OBRAS_EJECUCIONES */ CREATE VIEW V_OBRAS_EJECUCIONES( ID, ID_OBRA, FECHA_INICIO, FECHA_FIN, ID_SUBCONTRATA, NOMBRE, IMPORTE_GASTOS, IMPORTE_INGRESOS, IMPORTE_TOTAL, OBSERVACIONES, FECHA_ALTA, FECHA_MODIFICACION) AS SELECT OBRAS_EJECUCIONES.ID, OBRAS_EJECUCIONES.ID_OBRA, OBRAS_EJECUCIONES.FECHA_INICIO, OBRAS_EJECUCIONES.FECHA_FIN, OBRAS_EJECUCIONES.ID_SUBCONTRATA, CONTACTOS.NOMBRE, COALESCE(SUM(PEDIDOS_PROVEEDOR.BASE_IMPONIBLE), 0) IMPORTE_GASTOS, COALESCE(SUM(PRESUPUESTOS_CLIENTE.BASE_IMPONIBLE), 0) IMPORTE_INGRESOS, COALESCE(SUM(PRESUPUESTOS_CLIENTE.BASE_IMPONIBLE), 0) - COALESCE(SUM(PEDIDOS_PROVEEDOR.BASE_IMPONIBLE), 0) IMPORTE_TOTAL, OBRAS_EJECUCIONES.OBSERVACIONES, OBRAS_EJECUCIONES.FECHA_ALTA, OBRAS_EJECUCIONES.FECHA_MODIFICACION FROM OBRAS_EJECUCIONES LEFT OUTER JOIN CONTACTOS ON (CONTACTOS.ID = OBRAS_EJECUCIONES.ID_SUBCONTRATA) LEFT OUTER JOIN OBRAS_EJECUCIONES_PRESUPUESTOS ON (OBRAS_EJECUCIONES_PRESUPUESTOS.ID_EJECUCION = OBRAS_EJECUCIONES.ID) LEFT OUTER JOIN PRESUPUESTOS_CLIENTE ON (PRESUPUESTOS_CLIENTE.ID = OBRAS_EJECUCIONES_PRESUPUESTOS.ID_PRESUPUESTO) LEFT OUTER JOIN OBRAS_EJECUCIONES_PEDIDOS_PROV ON (OBRAS_EJECUCIONES_PEDIDOS_PROV.ID_EJECUCION = OBRAS_EJECUCIONES.ID) LEFT OUTER JOIN PEDIDOS_PROVEEDOR ON (PEDIDOS_PROVEEDOR.ID = OBRAS_EJECUCIONES_PEDIDOS_PROV.ID_PEDIDO) GROUP BY OBRAS_EJECUCIONES.ID, OBRAS_EJECUCIONES.ID_OBRA, OBRAS_EJECUCIONES.FECHA_INICIO, OBRAS_EJECUCIONES.FECHA_FIN, OBRAS_EJECUCIONES.ID_SUBCONTRATA, CONTACTOS.NOMBRE, OBRAS_EJECUCIONES.OBSERVACIONES, OBRAS_EJECUCIONES.FECHA_ALTA, OBRAS_EJECUCIONES.FECHA_MODIFICACION; /* View: V_PED_PROV_SITUACION */ CREATE VIEW V_PED_PROV_SITUACION( ID_PEDIDO, SITUACION) AS SELECT ID_PEDIDO, CASE WHEN (SUM(CANTIDAD_PENDIENTE) > 0) AND (SUM(CANTIDAD_RECIBIDA) = 0) THEN 'PENDIENTE' WHEN (SUM(CANTIDAD_PENDIENTE) <= 0) THEN 'RECIBIDO' WHEN (SUM(CANTIDAD_PENDIENTE) > 0) AND (SUM(CANTIDAD_RECIBIDA) > 0) THEN 'PARCIAL' ELSE 'N/A' END AS SITUACION FROM V_PED_PROV_ARTICULOS GROUP BY V_PED_PROV_ARTICULOS.ID_PEDIDO ; /* View: V_PEDIDOS_PROVEEDOR */ CREATE VIEW V_PEDIDOS_PROVEEDOR( ID, ID_EMPRESA, ID_PROVEEDOR, NOMBRE, ID_DIRECCION, PERSONA_CONTACTO_PROV, REFERENCIA, SITUACION, FECHA_ENVIO, FECHA_PEDIDO, FECHA_CONFIRMACION, FECHA_ENTREGA, ID_ALMACEN, TIPO_ALMACEN, NOMBRE_ALMACEN, ID_OBRA, NOMBRE_OBRA, OBSERVACIONES, IMPORTE_TOTAL, INCIDENCIAS, INCIDENCIAS_ACTIVAS, CALLE, POBLACION, PROVINCIA, CODIGO_POSTAL, PERSONA_CONTACTO, TELEFONO, FECHA_ALTA, FECHA_MODIFICACION, USUARIO, ID_PEDIDO_CLIENTE, REF_PED_CLIENTE, IMPORTE_NETO, IMPORTE_PORTE, DESCUENTO, IMPORTE_DESCUENTO, BASE_IMPONIBLE, IVA, IMPORTE_IVA, ID_FORMA_PAGO, ID_FACTURA, REF_FACTURA_PROV) AS SELECT PEDIDOS_PROVEEDOR.ID, PEDIDOS_PROVEEDOR.ID_EMPRESA, PEDIDOS_PROVEEDOR.ID_PROVEEDOR, CONTACTOS.NOMBRE, PEDIDOS_PROVEEDOR.ID_DIRECCION, PEDIDOS_PROVEEDOR.PERSONA_CONTACTO_PROV, PEDIDOS_PROVEEDOR.REFERENCIA, TRIM(V_PED_PROV_SITUACION.SITUACION), PEDIDOS_PROVEEDOR.FECHA_ENVIO, PEDIDOS_PROVEEDOR.FECHA_PEDIDO, PEDIDOS_PROVEEDOR.FECHA_CONFIRMACION, PEDIDOS_PROVEEDOR.FECHA_ENTREGA, PEDIDOS_PROVEEDOR.ID_ALMACEN, ALMACENES.TIPO_ALMACEN, ALMACENES.NOMBRE AS NOMBRE_ALMACEN, PEDIDOS_PROVEEDOR.ID_OBRA, OBRAS.NOMBRE AS NOMBRE_OBRA, PEDIDOS_PROVEEDOR.OBSERVACIONES, PEDIDOS_PROVEEDOR.IMPORTE_TOTAL, PEDIDOS_PROVEEDOR.INCIDENCIAS, PEDIDOS_PROVEEDOR.INCIDENCIAS_ACTIVAS, PEDIDOS_PROVEEDOR.CALLE, PEDIDOS_PROVEEDOR.POBLACION, PEDIDOS_PROVEEDOR.PROVINCIA, PEDIDOS_PROVEEDOR.CODIGO_POSTAL, PEDIDOS_PROVEEDOR.PERSONA_CONTACTO, PEDIDOS_PROVEEDOR.TELEFONO, PEDIDOS_PROVEEDOR.FECHA_ALTA, PEDIDOS_PROVEEDOR.FECHA_MODIFICACION, PEDIDOS_PROVEEDOR.USUARIO, PEDIDOS_PROVEEDOR.ID_PEDIDO_CLIENTE, PEDIDOS_CLIENTE.REFERENCIA AS REF_PED_CLIENTE, PEDIDOS_PROVEEDOR.IMPORTE_NETO, PEDIDOS_PROVEEDOR.IMPORTE_PORTE, PEDIDOS_PROVEEDOR.DESCUENTO, PEDIDOS_PROVEEDOR.IMPORTE_DESCUENTO, PEDIDOS_PROVEEDOR.BASE_IMPONIBLE, PEDIDOS_PROVEEDOR.IVA, PEDIDOS_PROVEEDOR.IMPORTE_IVA, PEDIDOS_PROVEEDOR.ID_FORMA_PAGO, PEDIDOS_PROVEEDOR.ID_FACTURA, FACTURAS_PROVEEDOR.REFERENCIA FROM PEDIDOS_PROVEEDOR INNER JOIN CONTACTOS ON (PEDIDOS_PROVEEDOR.ID_PROVEEDOR = CONTACTOS.ID) LEFT OUTER 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 ALMACENES OBRAS ON (OBRAS.ID = PEDIDOS_PROVEEDOR.ID_OBRA) LEFT OUTER JOIN PEDIDOS_CLIENTE ON (PEDIDOS_CLIENTE.ID = PEDIDOS_PROVEEDOR.ID_PEDIDO_CLIENTE) LEFT OUTER JOIN FACTURAS_PROVEEDOR ON (FACTURAS_PROVEEDOR.ID = PEDIDOS_PROVEEDOR.ID_FACTURA) ; /* View: V_PRESUPUESTOS_CLIENTE */ CREATE VIEW V_PRESUPUESTOS_CLIENTE( ID, ID_EMPRESA, FECHA_PRESUPUESTO, FECHA_DECISION, REFERENCIA, REFERENCIA_AUX, SITUACION, ID_CLIENTE, ID_DIRECCION, NIF_CIF, NOMBRE, REFERENCIA_CLIENTE, CLIENTE_FINAL, PORTADA, MEMORIA, OBSERVACIONES, INCIDENCIAS, INCIDENCIAS_ACTIVAS, FECHA_ALTA, FECHA_MODIFICACION, USUARIO, IMPORTE_NETO, IMPORTE_PORTE, DESCUENTO, IMPORTE_DESCUENTO, BASE_IMPONIBLE, IVA, IMPORTE_IVA, IMPORTE_TOTAL, ID_FORMA_PAGO, ID_FACTURA, FACTURA, PERSONA_CONTACTO, DESCRIPCION_BONIFICACION, IMPORTE_BONIFICACION, CERTIFICADO_ISO) AS SELECT PRESUPUESTOS_CLIENTE.ID, PRESUPUESTOS_CLIENTE.ID_EMPRESA, PRESUPUESTOS_CLIENTE.FECHA_PRESUPUESTO, PRESUPUESTOS_CLIENTE.FECHA_DECISION, PRESUPUESTOS_CLIENTE.REFERENCIA, PRESUPUESTOS_CLIENTE.REFERENCIA_AUX, PRESUPUESTOS_CLIENTE.SITUACION, PRESUPUESTOS_CLIENTE.ID_CLIENTE, PRESUPUESTOS_CLIENTE.ID_DIRECCION, CONTACTOS.NIF_CIF, CONTACTOS.NOMBRE, PRESUPUESTOS_CLIENTE.REFERENCIA_CLIENTE, PRESUPUESTOS_CLIENTE.CLIENTE_FINAL, PRESUPUESTOS_CLIENTE.PORTADA, PRESUPUESTOS_CLIENTE.MEMORIA, PRESUPUESTOS_CLIENTE.OBSERVACIONES, PRESUPUESTOS_CLIENTE.INCIDENCIAS, PRESUPUESTOS_CLIENTE.INCIDENCIAS_ACTIVAS, PRESUPUESTOS_CLIENTE.FECHA_ALTA, PRESUPUESTOS_CLIENTE.FECHA_MODIFICACION, PRESUPUESTOS_CLIENTE.USUARIO, PRESUPUESTOS_CLIENTE.IMPORTE_NETO, PRESUPUESTOS_CLIENTE.IMPORTE_PORTE, PRESUPUESTOS_CLIENTE.DESCUENTO, PRESUPUESTOS_CLIENTE.IMPORTE_DESCUENTO, PRESUPUESTOS_CLIENTE.BASE_IMPONIBLE, PRESUPUESTOS_CLIENTE.IVA, PRESUPUESTOS_CLIENTE.IMPORTE_IVA, PRESUPUESTOS_CLIENTE.IMPORTE_TOTAL, PRESUPUESTOS_CLIENTE.ID_FORMA_PAGO, PRESUPUESTOS_CLIENTE.ID_FACTURA, FACTURAS_CLIENTE.REFERENCIA, PRESUPUESTOS_CLIENTE.PERSONA_CONTACTO, PRESUPUESTOS_CLIENTE.DESCRIPCION_BONIFICACION, PRESUPUESTOS_CLIENTE.IMPORTE_BONIFICACION, PRESUPUESTOS_CLIENTE.CERTIFICADO_ISO FROM PRESUPUESTOS_CLIENTE INNER JOIN CONTACTOS ON (CONTACTOS.ID = PRESUPUESTOS_CLIENTE.ID_CLIENTE) LEFT OUTER JOIN FACTURAS_CLIENTE ON (FACTURAS_CLIENTE.ID = PRESUPUESTOS_CLIENTE.ID_FACTURA) ; /* View: V_PROVEEDORES */ CREATE VIEW V_PROVEEDORES( ID, ID_CATEGORIA, NIF_CIF, NOMBRE, PERSONA_CONTACTO, CALLE, POBLACION, PROVINCIA, CODIGO_POSTAL, TELEFONO_1, TELEFONO_2, MOVIL_1, MOVIL_2, FAX, EMAIL_1, EMAIL_2, PAGINA_WEB, NOTAS, FECHA_ALTA, FECHA_MODIFICACION, USUARIO, ID_EMPRESA, REFERENCIA, DESCUENTO, DESCRIPCION_PROVEEDOR, CODIGO_ASIGNADO, GRUPO_PROVEEDOR, REGIMEN_IVA, ID_TIPO_IVA, ID_FORMA_PAGO, TIENDA_WEB, HOMOLOGADO, CERTIFICACION, SUBCONTRATA, VENCIMIENTO_FACTURAS_1, VENCIMIENTO_FACTURAS_2, VENCIMIENTO_FACTURAS_3, FELICITACION, FECHA_INGRESO) AS SELECT V_CONTACTOS.ID, V_CONTACTOS.ID_CATEGORIA, V_CONTACTOS.NIF_CIF, V_CONTACTOS.NOMBRE, V_CONTACTOS.PERSONA_CONTACTO, V_CONTACTOS.CALLE, V_CONTACTOS.POBLACION, V_CONTACTOS.PROVINCIA, V_CONTACTOS.CODIGO_POSTAL, V_CONTACTOS.TELEFONO_1, V_CONTACTOS.TELEFONO_2, V_CONTACTOS.MOVIL_1, V_CONTACTOS.MOVIL_2, V_CONTACTOS.FAX, V_CONTACTOS.EMAIL_1, V_CONTACTOS.EMAIL_2, V_CONTACTOS.PAGINA_WEB, V_CONTACTOS.NOTAS, V_CONTACTOS.FECHA_ALTA, V_CONTACTOS.FECHA_MODIFICACION, V_CONTACTOS.USUARIO, V_CONTACTOS.ID_EMPRESA, V_CONTACTOS.REFERENCIA, PROVEEDORES_DATOS.DESCUENTO, PROVEEDORES_DATOS.DESCRIPCION_PROVEEDOR, PROVEEDORES_DATOS.CODIGO_ASIGNADO, PROVEEDORES_DATOS.GRUPO_PROVEEDOR, PROVEEDORES_DATOS.REGIMEN_IVA, PROVEEDORES_DATOS.ID_TIPO_IVA, PROVEEDORES_DATOS.ID_FORMA_PAGO, PROVEEDORES_DATOS.TIENDA_WEB, PROVEEDORES_DATOS.HOMOLOGADO, PROVEEDORES_DATOS.CERTIFICACION, PROVEEDORES_DATOS.SUBCONTRATA, PROVEEDORES_DATOS.VENCIMIENTO_FACTURAS_1, PROVEEDORES_DATOS.VENCIMIENTO_FACTURAS_2, PROVEEDORES_DATOS.VENCIMIENTO_FACTURAS_3, PROVEEDORES_DATOS.FELICITACION, PROVEEDORES_DATOS.FECHA_INGRESO FROM V_CONTACTOS INNER JOIN PROVEEDORES_DATOS ON (PROVEEDORES_DATOS.ID_PROVEEDOR = V_CONTACTOS.ID) WHERE V_CONTACTOS.ID_CATEGORIA = 2 ; /* View: V_REC_CLI_COMPENSADOS */ CREATE VIEW V_REC_CLI_COMPENSADOS( ID_RECIBO, IMPORTE_TOTAL_COMPENSADO) AS select ID_RECIBO_COMPENSADO, SUM((IMPORTE + OTROS_GASTOS)) as IMPORTE_TOTAL from RECIBOS_CLIENTE where ID_RECIBO_COMPENSADO is not null group by ID_RECIBO_COMPENSADO ; /* View: V_REC_PRO_COMPENSADOS */ CREATE VIEW V_REC_PRO_COMPENSADOS( ID_RECIBO, IMPORTE_TOTAL_COMPENSADO) AS select ID_RECIBO_COMPENSADO, SUM((IMPORTE + OTROS_GASTOS)) as IMPORTE_TOTAL from RECIBOS_PROVEEDOR where ID_RECIBO_COMPENSADO is not null group by ID_RECIBO_COMPENSADO ; CREATE VIEW V_RECIBOS_CLIENTE( ID, ID_RECIBO_COMPENSADO, REFERENCIA_REC_COMPENSADO, REFERENCIA, SITUACION, ID_FACTURA, ID_REMESA, REFERENCIA_REMESA, FECHA_EMISION, FECHA_VENCIMIENTO, DESCRIPCION, OBSERVACIONES, IMPORTE, OTROS_GASTOS, IMPORTE_TOTAL, FECHA_FACTURA, FORMA_PAGO_FACTURA, IMPORTE_FACTURA, ID_EMPRESA, DATOS_BANCARIOS, ID_CLIENTE, NOMBRE_CLIENTE, NIF_CIF_CLIENTE, CALLE_CLIENTE, POBLACION_CLIENTE, CODIGO_POSTAL_CLIENTE, PROVINCIA_CLIENTE, FECHA_ALTA, FECHA_MODIFICACION, USUARIO) AS SELECT RECIBOS_CLIENTE.ID, RECIBOS_CLIENTE.ID_RECIBO_COMPENSADO, NULL, /*RECIBO_COMPENSADO1.REFERENCIA, Desactivamos recibos compensados para mejorar rendimiento, ya que no los usan*/ RECIBOS_CLIENTE.REFERENCIA, CASE WHEN RECIBOS_CLIENTE.ID_RECIBO_COMPENSADO IS NULL THEN TRIM(V_REC_CLI_SITUACION.SITUACION) /*ELSE TRIM(RECIBO_COMPENSADO2.SITUACION)*/ END, RECIBOS_CLIENTE.ID_FACTURA, RECIBOS_CLIENTE.ID_REMESA, REMESAS_CLIENTE.REFERENCIA as REFERENCIA_REMESA, RECIBOS_CLIENTE.FECHA_EMISION, RECIBOS_CLIENTE.FECHA_VENCIMIENTO, RECIBOS_CLIENTE.DESCRIPCION, RECIBOS_CLIENTE.OBSERVACIONES, RECIBOS_CLIENTE.IMPORTE, RECIBOS_CLIENTE.OTROS_GASTOS, COALESCE(RECIBOS_CLIENTE.IMPORTE, 0) + COALESCE(RECIBOS_CLIENTE.OTROS_GASTOS, 0), /* + COALESCE(V_REC_CLI_COMPENSADOS.IMPORTE_TOTAL_COMPENSADO, 0),*/ FACTURAS_CLIENTE.FECHA_FACTURA, FORMAS_PAGO.DESCRIPCION, FACTURAS_CLIENTE.IMPORTE_TOTAL, FACTURAS_CLIENTE.ID_EMPRESA, FACTURAS_CLIENTE.DATOS_BANCARIOS, CONTACTOS.ID as ID_CLIENTE, CONTACTOS.NOMBRE, CONTACTOS.NIF_CIF, CONTACTOS.CALLE, CONTACTOS.POBLACION, CONTACTOS.CODIGO_POSTAL, CONTACTOS.PROVINCIA, RECIBOS_CLIENTE.FECHA_ALTA, RECIBOS_CLIENTE.FECHA_MODIFICACION, RECIBOS_CLIENTE.USUARIO FROM RECIBOS_CLIENTE LEFT JOIN V_REC_CLI_SITUACION ON (V_REC_CLI_SITUACION.ID_RECIBO = RECIBOS_CLIENTE.ID) LEFT JOIN FACTURAS_CLIENTE ON (FACTURAS_CLIENTE.ID = RECIBOS_CLIENTE.ID_FACTURA) LEFT JOIN FORMAS_PAGO ON (FORMAS_PAGO.ID = FACTURAS_CLIENTE.ID_FORMA_PAGO) LEFT JOIN CONTACTOS ON (CONTACTOS.ID = FACTURAS_CLIENTE.ID_CLIENTE) LEFT JOIN REMESAS_CLIENTE ON (REMESAS_CLIENTE.ID = RECIBOS_CLIENTE.ID_REMESA) /* LEFT JOIN V_REC_CLI_COMPENSADOS ON (V_REC_CLI_COMPENSADOS.ID_RECIBO = RECIBOS_CLIENTE.ID) LEFT JOIN RECIBOS_CLIENTE RECIBO_COMPENSADO1 ON (RECIBO_COMPENSADO1.ID = RECIBOS_CLIENTE.ID_RECIBO_COMPENSADO) LEFT JOIN V_REC_CLI_SITUACION RECIBO_COMPENSADO2 ON (RECIBO_COMPENSADO2.ID_RECIBO = RECIBOS_CLIENTE.ID_RECIBO_COMPENSADO) */ ; /* View: V_RECIBOS_PROVEEDOR */ CREATE VIEW V_RECIBOS_PROVEEDOR( ID, ID_RECIBO_COMPENSADO, REFERENCIA_REC_COMPENSADO, REFERENCIA, REFERENCIA_PROVEEDOR, SITUACION, ID_FACTURA, ID_REMESA, REFERENCIA_REMESA, FECHA_EMISION, FECHA_VENCIMIENTO, DESCRIPCION, OBSERVACIONES, IMPORTE, OTROS_GASTOS, IMPORTE_TOTAL, REFERENCIA_FACTURA_PROV, FECHA_FACTURA, FORMA_PAGO_FACTURA, IMPORTE_FACTURA, ID_EMPRESA, DATOS_BANCARIOS, ID_PROVEEDOR, NOMBRE_PROVEEDOR, NIF_CIF_PROVEEDOR, FECHA_ALTA, FECHA_MODIFICACION, USUARIO) AS SELECT RECIBOS_PROVEEDOR.ID, RECIBOS_PROVEEDOR.ID_RECIBO_COMPENSADO, NULL, /*RECIBO_COMPENSADO1.REFERENCIA, Desactivamos recibos compensados para mejorar rendimiento, ya que no los usan*/ RECIBOS_PROVEEDOR.REFERENCIA, RECIBOS_PROVEEDOR.REFERENCIA_PROVEEDOR, CASE WHEN RECIBOS_PROVEEDOR.ID_RECIBO_COMPENSADO IS NULL THEN TRIM(V_REC_PRO_SITUACION.SITUACION) /*ELSE TRIM(RECIBO_COMPENSADO2.SITUACION)*/ END, RECIBOS_PROVEEDOR.ID_FACTURA, RECIBOS_PROVEEDOR.ID_REMESA, REMESAS_PROVEEDOR.REFERENCIA as REFERENCIA_REMESA, RECIBOS_PROVEEDOR.FECHA_EMISION, RECIBOS_PROVEEDOR.FECHA_VENCIMIENTO, RECIBOS_PROVEEDOR.DESCRIPCION, RECIBOS_PROVEEDOR.OBSERVACIONES, RECIBOS_PROVEEDOR.IMPORTE, RECIBOS_PROVEEDOR.OTROS_GASTOS, COALESCE(RECIBOS_PROVEEDOR.IMPORTE, 0) + COALESCE(RECIBOS_PROVEEDOR.OTROS_GASTOS, 0), /* + COALESCE(V_REC_PRO_COMPENSADOS.IMPORTE_TOTAL_COMPENSADO, 0),*/ FACTURAS_PROVEEDOR.REFERENCIA_PROVEEDOR, FACTURAS_PROVEEDOR.FECHA_FACTURA, FORMAS_PAGO.DESCRIPCION, FACTURAS_PROVEEDOR.IMPORTE_TOTAL, FACTURAS_PROVEEDOR.ID_EMPRESA, FACTURAS_PROVEEDOR.DATOS_BANCARIOS, CONTACTOS.ID as ID_PROVEEDOR, CONTACTOS.NOMBRE, CONTACTOS.NIF_CIF, RECIBOS_PROVEEDOR.FECHA_ALTA, RECIBOS_PROVEEDOR.FECHA_MODIFICACION, RECIBOS_PROVEEDOR.USUARIO FROM RECIBOS_PROVEEDOR LEFT JOIN V_REC_PRO_SITUACION ON (V_REC_PRO_SITUACION.ID_RECIBO = RECIBOS_PROVEEDOR.ID) LEFT JOIN FACTURAS_PROVEEDOR ON (FACTURAS_PROVEEDOR.ID = RECIBOS_PROVEEDOR.ID_FACTURA) LEFT JOIN FORMAS_PAGO ON (FORMAS_PAGO.ID = FACTURAS_PROVEEDOR.ID_FORMA_PAGO) LEFT JOIN CONTACTOS ON (CONTACTOS.ID = FACTURAS_PROVEEDOR.ID_PROVEEDOR) LEFT JOIN REMESAS_PROVEEDOR ON (REMESAS_PROVEEDOR.ID = RECIBOS_PROVEEDOR.ID_REMESA) /* LEFT JOIN V_REC_PRO_COMPENSADOS ON (V_REC_PRO_COMPENSADOS.ID_RECIBO = RECIBOS_PROVEEDOR.ID) LEFT JOIN RECIBOS_PROVEEDOR RECIBO_COMPENSADO1 ON (RECIBO_COMPENSADO1.ID = RECIBOS_PROVEEDOR.ID_RECIBO_COMPENSADO) LEFT JOIN V_REC_PRO_SITUACION RECIBO_COMPENSADO2 ON (RECIBO_COMPENSADO2.ID_RECIBO = RECIBOS_PROVEEDOR.ID_RECIBO_COMPENSADO) */ ; CREATE VIEW V_REMESAS_CLIENTE( ID, ID_EMPRESA, REFERENCIA, TIPO, FECHA_REMESA, DESCRIPCION, ID_DATOS_BANCO, FECHA_ALTA, FECHA_MODIFICACION, USUARIO, NOMBRE, ENTIDAD, SUCURSAL, DC, CUENTA, SUFIJO_N19, SUFIJO_N58, IMPORTE_TOTAL) AS SELECT REMESAS_CLIENTE.ID, REMESAS_CLIENTE.ID_EMPRESA, REMESAS_CLIENTE.REFERENCIA, REMESAS_CLIENTE.TIPO, REMESAS_CLIENTE.FECHA_REMESA, REMESAS_CLIENTE.DESCRIPCION, REMESAS_CLIENTE.ID_DATOS_BANCO, REMESAS_CLIENTE.FECHA_ALTA, REMESAS_CLIENTE.FECHA_MODIFICACION, REMESAS_CLIENTE.USUARIO, EMPRESAS_DATOS_BANCO.NOMBRE, EMPRESAS_DATOS_BANCO.ENTIDAD, EMPRESAS_DATOS_BANCO.SUCURSAL, EMPRESAS_DATOS_BANCO.DC, EMPRESAS_DATOS_BANCO.CUENTA, EMPRESAS_DATOS_BANCO.SUFIJO_N19, EMPRESAS_DATOS_BANCO.SUFIJO_N58, SUM(COALESCE(RECIBOS_CLIENTE.IMPORTE,0) + COALESCE(RECIBOS_CLIENTE.OTROS_GASTOS,0) + COALESCE(V_REC_CLI_COMPENSADOS.IMPORTE_TOTAL_COMPENSADO,0)) as IMPORTE_TOTAL FROM REMESAS_CLIENTE LEFT OUTER JOIN EMPRESAS_DATOS_BANCO ON (EMPRESAS_DATOS_BANCO.ID = REMESAS_CLIENTE.ID_DATOS_BANCO) LEFT OUTER JOIN RECIBOS_CLIENTE ON (RECIBOS_CLIENTE.ID_REMESA = REMESAS_CLIENTE.ID) LEFT OUTER JOIN V_REC_CLI_COMPENSADOS ON (V_REC_CLI_COMPENSADOS.ID_RECIBO = RECIBOS_CLIENTE.ID) GROUP BY 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17 ; CREATE VIEW V_REMESAS_PROVEEDOR( ID, ID_EMPRESA, REFERENCIA, TIPO, FECHA_REMESA, DESCRIPCION, ID_DATOS_BANCO, FECHA_ALTA, FECHA_MODIFICACION, USUARIO, NOMBRE, ENTIDAD, SUCURSAL, DC, CUENTA, SUFIJO_N19, SUFIJO_N58, IMPORTE_TOTAL) AS SELECT REMESAS_PROVEEDOR.ID, REMESAS_PROVEEDOR.ID_EMPRESA, REMESAS_PROVEEDOR.REFERENCIA, REMESAS_PROVEEDOR.TIPO, REMESAS_PROVEEDOR.FECHA_REMESA, REMESAS_PROVEEDOR.DESCRIPCION, REMESAS_PROVEEDOR.ID_DATOS_BANCO, REMESAS_PROVEEDOR.FECHA_ALTA, REMESAS_PROVEEDOR.FECHA_MODIFICACION, REMESAS_PROVEEDOR.USUARIO, EMPRESAS_DATOS_BANCO.NOMBRE, EMPRESAS_DATOS_BANCO.ENTIDAD, EMPRESAS_DATOS_BANCO.SUCURSAL, EMPRESAS_DATOS_BANCO.DC, EMPRESAS_DATOS_BANCO.CUENTA, EMPRESAS_DATOS_BANCO.SUFIJO_N19, EMPRESAS_DATOS_BANCO.SUFIJO_N58, SUM(COALESCE(RECIBOS_PROVEEDOR.IMPORTE,0) + COALESCE(RECIBOS_PROVEEDOR.OTROS_GASTOS,0) + COALESCE(V_REC_PRO_COMPENSADOS.IMPORTE_TOTAL_COMPENSADO,0)) as IMPORTE_TOTAL FROM REMESAS_PROVEEDOR LEFT OUTER JOIN EMPRESAS_DATOS_BANCO ON (EMPRESAS_DATOS_BANCO.ID = REMESAS_PROVEEDOR.ID_DATOS_BANCO) LEFT OUTER JOIN RECIBOS_PROVEEDOR ON (RECIBOS_PROVEEDOR.ID_REMESA = REMESAS_PROVEEDOR.ID) LEFT OUTER JOIN V_REC_PRO_COMPENSADOS ON (V_REC_PRO_COMPENSADOS.ID_RECIBO = RECIBOS_PROVEEDOR.ID) GROUP BY 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17 ; /*VISTAS PARA INFORMES ESTADISTICOS*/ CREATE VIEW V_INF_FAC_CLIENTE_TOTAL_ANO( ID_EMPRESA, ANO, IMPORTE_TOTAL) AS select ID_EMPRESA, EXTRACT(YEAR FROM FECHA_FACTURA) as ANO, SUM(IMPORTE_TOTAL) as IMPORTE_TOTAL from FACTURAS_CLIENTE group by 1,2 ; CREATE VIEW V_INF_FAC_PROVEEDOR_TOTAL_ANO( ID_EMPRESA, ANO, IMPORTE_TOTAL) AS select ID_EMPRESA, EXTRACT(YEAR FROM FECHA_FACTURA) as ANO, SUM(IMPORTE_TOTAL) as IMPORTE_TOTAL from FACTURAS_PROVEEDOR group by 1,2 ; CREATE VIEW V_INF_PRE_CLIENTE_TOTAL_ANO( ID_EMPRESA, ANO, IMPORTE_TOTAL) AS select ID_EMPRESA, EXTRACT(YEAR FROM FECHA_PRESUPUESTO) as ANO, SUM(IMPORTE_TOTAL) as IMPORTE_TOTAL from PRESUPUESTOS_CLIENTE group by 1,2 ; CREATE VIEW V_INF_PRE_CLIENTE_AUX( ID, ACEPTADOS, ANULADOS, PENDIENTES) AS select ID, CASE WHEN SITUACION = 'ACEPTADO' then 1 ELSE 0 end as ACEPTADOS, CASE WHEN SITUACION = 'ANULADO' then 1 ELSE 0 end as ANULADOS, CASE WHEN SITUACION = 'PENDIENTE' then 1 ELSE 0 end as PENDIENTES from presupuestos_cliente ; CREATE VIEW V_INF_PRE_CLIENTE( ID_EMPRESA, ANO, SEMESTRE, TRIMESTRE, MES, ID_PRESUPUESTO, FECHA_PRESUPUESTO, ID_CLIENTE, ACEPTADOS, ANULADOS, PENDIENTES, IMPORTE_TOTAL, IMPORTE_TOTAL_ANO) AS select P.ID_EMPRESA, EXTRACT(YEAR FROM P.FECHA_PRESUPUESTO) as ANO, CAST((DIV(EXTRACT(MONTH FROM P.FECHA_PRESUPUESTO),7)+1) AS SMALLINT) as SEMESTRE, CAST((DIV(EXTRACT(MONTH FROM P.FECHA_PRESUPUESTO)+2,3)) AS SMALLINT) as TRIMESTRE, EXTRACT(MONTH FROM P.FECHA_PRESUPUESTO) as MES, P.ID as ID_PRESUPUESTO, P.FECHA_PRESUPUESTO, P.ID_CLIENTE, V.ACEPTADOS, V.ANULADOS, V.PENDIENTES, P.IMPORTE_TOTAL, T.IMPORTE_TOTAL as IMPORTE_TOTAL_ANO from V_INF_PRE_CLIENTE_AUX V left join PRESUPUESTOS_CLIENTE P on (V.ID = P.ID) inner join V_INF_PRE_CLIENTE_TOTAL_ANO T on ((T.id_empresa = P.id_empresa) and (T.Ano = EXTRACT(YEAR FROM P.FECHA_PRESUPUESTO))) ; CREATE VIEW V_INF_FAC_CLIENTE( ID_EMPRESA, ANO, SEMESTRE, TRIMESTRE, MES, FECHA_FACTURA, ID_CLIENTE, NOMBRE, IMPORTE_DESCUENTO, BASE_IMPONIBLE, IMPORTE_TOTAL, IMPORTE_TOTAL_ANO) AS select f.ID_EMPRESA, EXTRACT(YEAR FROM f.FECHA_FACTURA) as ANO, CAST((DIV(EXTRACT(MONTH FROM f.FECHA_FACTURA),7)+1) AS SMALLINT) as SEMESTRE, CAST((DIV(EXTRACT(MONTH FROM f.FECHA_FACTURA)+2,3)) AS SMALLINT) as TRIMESTRE, EXTRACT(MONTH FROM f.FECHA_FACTURA) as MES, f.FECHA_FACTURA, f.ID_CLIENTE, f.NOMBRE, f.IMPORTE_DESCUENTO, f.BASE_IMPONIBLE as BASE_IMPONIBLE, f.IMPORTE_TOTAL, v.importe_total as IMPORTE_TOTAL_ANO from FACTURAS_CLIENTE f inner join V_INF_FAC_CLIENTE_TOTAL_ANO v on ((v.id_empresa = f.id_empresa) and (v.Ano = EXTRACT(YEAR FROM f.FECHA_FACTURA))) order by 1,2,3,4,5 asc ; CREATE VIEW V_INF_FAC_PROVEEDOR( ID_EMPRESA, ANO, SEMESTRE, TRIMESTRE, MES, FECHA_FACTURA, ID_PROVEEDOR, NOMBRE, IMPORTE_DESCUENTO, BASE_IMPONIBLE, IMPORTE_TOTAL, IMPORTE_TOTAL_ANO) AS select f.ID_EMPRESA, EXTRACT(YEAR FROM f.FECHA_FACTURA) as ANO, CAST((DIV(EXTRACT(MONTH FROM f.FECHA_FACTURA),7)+1) AS SMALLINT) as SEMESTRE, CAST((DIV(EXTRACT(MONTH FROM f.FECHA_FACTURA)+2,3)) AS SMALLINT) as TRIMESTRE, EXTRACT(MONTH FROM f.FECHA_FACTURA) as MES, f.FECHA_FACTURA, f.ID_PROVEEDOR, f.NOMBRE, f.IMPORTE_DESCUENTO, f.BASE_IMPONIBLE, f.IMPORTE_TOTAL, v.importe_total as IMPORTE_TOTAL_ANO from FACTURAS_PROVEEDOR f inner join V_INF_FAC_PROVEEDOR_TOTAL_ANO v on ((v.id_empresa = f.id_empresa) and (v.Ano = EXTRACT(YEAR FROM f.FECHA_FACTURA))) order by 1,2,3,4,5 asc ; /******************************************************************************/ /**** Primary Keys ****/ /******************************************************************************/ ALTER TABLE AGENTES_COMISIONES ADD CONSTRAINT PK_AGENTES_COMISIONES PRIMARY KEY (ID); ALTER TABLE ALBARANES_CLIENTE ADD CONSTRAINT PK_ALBARAN_CLIENTE PRIMARY KEY (ID); ALTER TABLE ALBARANES_CLIENTE_DETALLES ADD CONSTRAINT PK_ALBARANES_CLIENTE_DETALLES PRIMARY KEY (ID); ALTER TABLE ALBARANES_PROVEEDOR ADD CONSTRAINT PK_ALBARAN_PROVEEDOR PRIMARY KEY (ID); ALTER TABLE ALBARANES_PROVEEDOR_DETALLES ADD CONSTRAINT PK_ALBARANES_PROVEEDOR_DETALLES PRIMARY KEY (ID); ALTER TABLE ALMACENES ADD CONSTRAINT PK_ALMACENES PRIMARY KEY (ID); ALTER TABLE ARTICULOS ADD CONSTRAINT PK_ARTICULOS PRIMARY KEY (ID); ALTER TABLE ARTICULOS_PROVEEDORES ADD CONSTRAINT PK_ARTICULOS_PROVEEDORES PRIMARY KEY (ID); ALTER TABLE CATEGORIAS ADD CONSTRAINT PK_CATEGORIAS PRIMARY KEY (ID); ALTER TABLE CLIENTES_DATOS ADD CONSTRAINT PK_CLIENTES_DATOS PRIMARY KEY (ID_CLIENTE); ALTER TABLE CLIENTES_DTOS_PROVEEDORES ADD CONSTRAINT PK_CLIENTES_DTOS_PROV PRIMARY KEY (ID); ALTER TABLE CLIENTES_GRUPOS ADD CONSTRAINT PK_CLIENTES_GRUPOS PRIMARY KEY (ID); ALTER TABLE COMISIONES_LIQUIDADAS ADD CONSTRAINT PK_COMISIONES_LIQUIDADAS PRIMARY KEY (ID); ALTER TABLE CONFIGURACION ADD CONSTRAINT PK_CONFIGURACION PRIMARY KEY (ID); ALTER TABLE CONTACTOS ADD CONSTRAINT PK_CONTACTOS PRIMARY KEY (ID); ALTER TABLE CONTACTOS_CATEGORIAS ADD CONSTRAINT PK_CONTACTOS_CATEGORIAS PRIMARY KEY (ID_CONTACTO, ID_CATEGORIA); ALTER TABLE CONTACTOS_DATOS_BANCO ADD CONSTRAINT PK_CONTACTOS_DATOS_BANCO PRIMARY KEY (ID); ALTER TABLE CONTACTOS_DATOS_PERSONAL ADD CONSTRAINT PK_CONTACTOS_DATOS_PER PRIMARY KEY (ID); 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 EMPLEADOS_GRUPOS ADD CONSTRAINT PK_EMPLEADOS_GRUPOS PRIMARY KEY (ID); ALTER TABLE EMPRESAS ADD CONSTRAINT PK_EMPRESAS PRIMARY KEY (ID); ALTER TABLE EMPRESAS_CONTACTOS ADD CONSTRAINT PK_EMPRESAS_CONTACTOS PRIMARY KEY (ID); ALTER TABLE EMPRESAS_DATOS_BANCO ADD CONSTRAINT PK_EMPRESAS_DATOS_BANCO PRIMARY KEY (ID); ALTER TABLE EMPRESAS_USUARIOS ADD CONSTRAINT PK_EMPRESAS_USUARIOS PRIMARY KEY (ID); ALTER TABLE FABRICANTES ADD PRIMARY KEY (ID); ALTER TABLE FACTURAS_CLIENTE ADD CONSTRAINT PK_FACTURAS_CLIENTE PRIMARY KEY (ID); ALTER TABLE FACTURAS_CLIENTE_DETALLES ADD CONSTRAINT PK_FACTURAS_CLIENTE_DETALLES PRIMARY KEY (ID); ALTER TABLE FACTURAS_PROVEEDOR ADD CONSTRAINT PK_FACTURAS_PROVEEDOR PRIMARY KEY (ID); ALTER TABLE FACTURAS_PROVEEDOR_DETALLES ADD CONSTRAINT PK_FACTURAS_PROVEEDOR_DETALLES PRIMARY KEY (ID); ALTER TABLE FACTURAS_PROVEEDOR_PEDIDOS ADD CONSTRAINT PK_FACTURAS_PROVEEDOR_PEDIDOS PRIMARY KEY (ID); ALTER TABLE FAMILIAS ADD CONSTRAINT PK_FAMILIAS PRIMARY KEY (ID); ALTER TABLE FORMAS_PAGO ADD PRIMARY KEY (ID); ALTER TABLE FORMAS_PAGO_PLAZOS ADD PRIMARY KEY (ID); ALTER TABLE INFORMES ADD CONSTRAINT PK_INFORMES PRIMARY KEY (ID); ALTER TABLE MOVIMIENTOS ADD CONSTRAINT PK_MOVIMIENTOS PRIMARY KEY (ID); ALTER TABLE OBRAS_EJECUCIONES ADD CONSTRAINT PK_OBRAS_EJE PRIMARY KEY (ID); ALTER TABLE OBRAS_EJECUCIONES_PRESUPUESTOS ADD CONSTRAINT PK_OBRAS_EJE_PRE PRIMARY KEY (ID); ALTER TABLE OBRAS_EJECUCIONES_PEDIDOS_PROV ADD CONSTRAINT PK_OBRAS_EJE_PED_PROV PRIMARY KEY (ID); ALTER TABLE PAGOS_CLIENTE ADD CONSTRAINT PK_PAGOS_CLIENTE PRIMARY KEY (ID); ALTER TABLE PAGOS_PROVEEDOR ADD CONSTRAINT PK_PAGOS_PROVEEDOR PRIMARY KEY (ID); ALTER TABLE PEDIDOS_CLIENTE ADD CONSTRAINT PK_PEDIDOS_CLIENTE PRIMARY KEY (ID); ALTER TABLE PEDIDOS_CLIENTE_DETALLES ADD CONSTRAINT PK_PEDIDOS_CLIENTE_DETALLES PRIMARY KEY (ID); ALTER TABLE PEDIDOS_PROVEEDOR ADD CONSTRAINT PK_PEDIDOS_PROVEEDOR PRIMARY KEY (ID); ALTER TABLE PEDIDOS_PROVEEDOR_DETALLES ADD CONSTRAINT PK_PEDIDOS_PROVEEDOR_DETALLES PRIMARY KEY (ID); ALTER TABLE PERMISOS ADD CONSTRAINT PK_PERMISOS PRIMARY KEY (ID); ALTER TABLE PERMISOSEX ADD CONSTRAINT PK_PERMISOSEX PRIMARY KEY (ID); ALTER TABLE POBLACIONES ADD CONSTRAINT PK_POBLACIONES PRIMARY KEY (ID); ALTER TABLE PRESUPUESTOS_CLIENTE ADD CONSTRAINT PK_PRESUPUESTOS_CLIENTE PRIMARY KEY (ID); ALTER TABLE PRESUPUESTOS_CLIENTE_DETALLES ADD CONSTRAINT PK_PRESUPUESTOS_CLIENTE_DETALLE PRIMARY KEY (ID); ALTER TABLE PROVEEDORES_DATOS ADD CONSTRAINT PK_PROVEEDORES_DATOS PRIMARY KEY (ID_PROVEEDOR); ALTER TABLE PROVEEDORES_GRUPOS ADD CONSTRAINT PK_PROVEEDORES_GRUPOS PRIMARY KEY (ID); ALTER TABLE PROVINCIAS ADD CONSTRAINT PK_PROVINCIAS PRIMARY KEY (ID); ALTER TABLE RECIBOS_CLIENTE ADD CONSTRAINT PK_RECIBOS_CLIENTE PRIMARY KEY (ID); ALTER TABLE RECIBOS_PROVEEDOR ADD CONSTRAINT PK_RECIBOS_PROVEEDOR PRIMARY KEY (ID); ALTER TABLE REFERENCIAS ADD CONSTRAINT PK_REFERENCIAS PRIMARY KEY (ID); ALTER TABLE REMESAS_CLIENTE ADD CONSTRAINT PK_REMESAS_CLIENTE PRIMARY KEY (ID); ALTER TABLE REMESAS_PROVEEDOR ADD CONSTRAINT PK_REMESAS_PROVEEDOR PRIMARY KEY (ID); ALTER TABLE TIENDA_WEB ADD CONSTRAINT PK_TIENDA_WEB PRIMARY KEY (ID); ALTER TABLE TIPOS_IVA ADD PRIMARY KEY (ID); ALTER TABLE UNIDADES_MEDIDA 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); /******************************************************************************/ /**** Foreign Keys ****/ /******************************************************************************/ ALTER TABLE ALBARANES_CLIENTE ADD CONSTRAINT FK_ALBARAN_CLIENTE1 FOREIGN KEY (ID_CLIENTE) REFERENCES CONTACTOS (ID) ON DELETE NO ACTION ON UPDATE NO ACTION; ALTER TABLE ALBARANES_CLIENTE ADD CONSTRAINT FK_ALBARAN_CLIENTE2 FOREIGN KEY (ID_EMPRESA) REFERENCES EMPRESAS (ID) ON DELETE NO ACTION ON UPDATE NO ACTION; ALTER TABLE ALBARANES_CLIENTE ADD CONSTRAINT FK_ALBARAN_CLIENTE3 FOREIGN KEY (ID_PEDIDO) REFERENCES PEDIDOS_CLIENTE (ID) ON DELETE NO ACTION ON UPDATE NO ACTION; ALTER TABLE ALBARANES_CLIENTE ADD CONSTRAINT FK_ALBARAN_CLIENTE4 FOREIGN KEY (ID_FACTURA) REFERENCES FACTURAS_CLIENTE (ID) ON DELETE SET NULL ON UPDATE SET NULL; ALTER TABLE ALBARANES_PROVEEDOR ADD CONSTRAINT FK_ALBARANES_PROVEEDOR3 FOREIGN KEY (ID_PEDIDO) REFERENCES PEDIDOS_PROVEEDOR (ID) ON DELETE NO ACTION ON UPDATE CASCADE; ALTER TABLE ALBARANES_PROVEEDOR ADD CONSTRAINT FK_ALBARANES_PROVEEDOR4 FOREIGN KEY (ID_FACTURA) REFERENCES FACTURAS_PROVEEDOR (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE ALBARANES_PROVEEDOR ADD CONSTRAINT FK_ALBARAN_PROVEEDOR1 FOREIGN KEY (ID_PROVEEDOR) REFERENCES CONTACTOS (ID) ON DELETE NO ACTION ON UPDATE NO ACTION; ALTER TABLE ALBARANES_PROVEEDOR ADD CONSTRAINT FK_ALBARAN_PROVEEDOR2 FOREIGN KEY (ID_EMPRESA) REFERENCES EMPRESAS (ID) ON DELETE NO ACTION ON UPDATE NO ACTION; ALTER TABLE ALMACENES ADD CONSTRAINT FK_ALMACENES_EMPRESAS FOREIGN KEY (ID_EMPRESA) REFERENCES EMPRESAS (ID) ON DELETE NO ACTION ON UPDATE NO ACTION; ALTER TABLE ARTICULOS ADD CONSTRAINT FK_ARTICULOS_EMPRESA FOREIGN KEY (ID_EMPRESA) REFERENCES EMPRESAS (ID) ON DELETE NO ACTION ON UPDATE NO ACTION; ALTER TABLE COMISIONES_LIQUIDADAS ADD CONSTRAINT FK_COMISIONES_LIQUIDADAS FOREIGN KEY (ID_AGENTE) REFERENCES CONTACTOS (ID); ALTER TABLE EMPRESAS_CONTACTOS ADD CONSTRAINT FK_EMPRESAS_CONTACTOS FOREIGN KEY (ID_CONTACTO) REFERENCES CONTACTOS (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE EMPRESAS_DATOS_BANCO ADD CONSTRAINT FK_EMPRESAS_DATOS_BANCO FOREIGN KEY (ID_EMPRESA) REFERENCES EMPRESAS (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE FACTURAS_CLIENTE ADD CONSTRAINT FK_FACTURAS_CLIENTE_EMPRESAS FOREIGN KEY (ID_EMPRESA) REFERENCES EMPRESAS (ID) ON DELETE NO ACTION ON UPDATE NO ACTION; ALTER TABLE FACTURAS_PROVEEDOR ADD CONSTRAINT FK_FACTURAS_PROVEEDOR_EMPRESAS FOREIGN KEY (ID_EMPRESA) REFERENCES EMPRESAS (ID) ON DELETE NO ACTION ON UPDATE NO ACTION; ALTER TABLE MOVIMIENTOS ADD CONSTRAINT FK_MOVIMIENTOS2 FOREIGN KEY (ID_ALMACEN) REFERENCES ALMACENES (ID); ALTER TABLE OBRAS_EJECUCIONES_PRESUPUESTOS ADD CONSTRAINT FK_OBRAS_EJE_PRE_1 FOREIGN KEY (ID_EJECUCION) REFERENCES OBRAS_EJECUCIONES (ID); ALTER TABLE OBRAS_EJECUCIONES_PRESUPUESTOS ADD CONSTRAINT FK_OBRAS_EJE_PRE_2 FOREIGN KEY (ID_PRESUPUESTO) REFERENCES PRESUPUESTOS_CLIENTE (ID); ALTER TABLE OBRAS_EJECUCIONES_PEDIDOS_PROV ADD CONSTRAINT FK_OBRAS_EJE_PED_PROV_1 FOREIGN KEY (ID_EJECUCION) REFERENCES OBRAS_EJECUCIONES (ID); ALTER TABLE OBRAS_EJECUCIONES_PEDIDOS_PROV ADD CONSTRAINT FK_OBRAS_EJE_PED_PROV_2 FOREIGN KEY (ID_PEDIDO) REFERENCES PEDIDOS_PROVEEDOR (ID); ALTER TABLE OBRAS_EJECUCIONES_PEDIDOS_PROV ADD CONSTRAINT FK_OBRAS_EJE_PED_PROV_3 FOREIGN KEY (ID_PRESUPUESTO) REFERENCES PRESUPUESTOS_CLIENTE (ID); ALTER TABLE PAGOS_CLIENTE ADD CONSTRAINT FK_PAGOS_CLIENTE FOREIGN KEY (ID_RECIBO) REFERENCES RECIBOS_CLIENTE (ID); ALTER TABLE PAGOS_PROVEEDOR ADD CONSTRAINT FK_PAGOS_PROVEEDOR FOREIGN KEY (ID_RECIBO) REFERENCES RECIBOS_PROVEEDOR (ID); ALTER TABLE PEDIDOS_CLIENTE ADD CONSTRAINT FK_PEDIDOS_CLIENTE FOREIGN KEY (ID_CLIENTE) REFERENCES CONTACTOS (ID); ALTER TABLE PEDIDOS_CLIENTE ADD CONSTRAINT FK_PEDIDOS_CLIENTE_ID_EMPRESA FOREIGN KEY (ID_EMPRESA) REFERENCES EMPRESAS (ID); ALTER TABLE PEDIDOS_PROVEEDOR ADD CONSTRAINT FK_PEDIDOS_PROVEEDOR FOREIGN KEY (ID_EMPRESA) REFERENCES EMPRESAS (ID); ALTER TABLE PEDIDOS_PROVEEDOR ADD CONSTRAINT FK_PEDIDOS_PROVEEDOR2 FOREIGN KEY (ID_PROVEEDOR) REFERENCES CONTACTOS (ID); ALTER TABLE PEDIDOS_PROVEEDOR ADD CONSTRAINT FK_PEDIDOS_PROVEEDOR_1 FOREIGN KEY (ID_FACTURA) REFERENCES FACTURAS_PROVEEDOR (ID) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE PRESUPUESTOS_CLIENTE ADD CONSTRAINT FK_PRESUPUESTOS_CLIENTE_1 FOREIGN KEY (ID_EMPRESA) REFERENCES EMPRESAS (ID); ALTER TABLE PRESUPUESTOS_CLIENTE ADD CONSTRAINT FK_PRESUPUESTOS_CLIENTE_2 FOREIGN KEY (ID_CLIENTE) REFERENCES CONTACTOS (ID); ALTER TABLE PRESUPUESTOS_CLIENTE ADD CONSTRAINT FK_PRESUPUESTOS_CLIENTE_3 FOREIGN KEY (ID_FACTURA) REFERENCES FACTURAS_CLIENTE (ID) ON DELETE SET NULL ON UPDATE SET NULL; ALTER TABLE RECIBOS_CLIENTE ADD CONSTRAINT FK_RECIBOS_CLIENTE FOREIGN KEY (ID_FACTURA) REFERENCES FACTURAS_CLIENTE (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE RECIBOS_CLIENTE ADD CONSTRAINT FK_RECIBOS_CLIENTE2 FOREIGN KEY (ID_REMESA) REFERENCES REMESAS_CLIENTE (ID) ON DELETE SET NULL ON UPDATE SET NULL; ALTER TABLE RECIBOS_PROVEEDOR ADD CONSTRAINT FK_RECIBOS_PROVEEDOR FOREIGN KEY (ID_FACTURA) REFERENCES FACTURAS_PROVEEDOR (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE RECIBOS_PROVEEDOR ADD CONSTRAINT FK_RECIBOS_PROVEEDOR1 FOREIGN KEY (ID_REMESA) REFERENCES REMESAS_PROVEEDOR (ID) ON DELETE SET NULL ON UPDATE SET NULL; ALTER TABLE REMESAS_CLIENTE ADD CONSTRAINT FK_REMESAS_CLIENTE FOREIGN KEY (ID_EMPRESA) REFERENCES EMPRESAS (ID); ALTER TABLE REMESAS_PROVEEDOR ADD CONSTRAINT FK_REMESAS_PROVEEDOR FOREIGN KEY (ID_EMPRESA) REFERENCES EMPRESAS (ID); ALTER TABLE TIENDA_WEB ADD CONSTRAINT FK_EMPRESAS_TIENDA_WEB FOREIGN KEY (ID_EMPRESA) REFERENCES EMPRESAS (ID) ON DELETE CASCADE ON UPDATE CASCADE; /******************************************************************************/ /**** Indices ****/ /******************************************************************************/ CREATE INDEX IDX_AGENTES_COMISIONES1 ON AGENTES_COMISIONES (ID_AGENTE); CREATE INDEX IDX_AGENTES_COMISIONES2 ON AGENTES_COMISIONES (ID_PROVEEDOR); CREATE INDEX IDX_ALBARANES_CLIENTE1 ON ALBARANES_CLIENTE (ID_FORMA_PAGO); CREATE INDEX IDX_ALBARANES_CLIENTE2 ON ALBARANES_CLIENTE (TIPO); CREATE INDEX ALBARANES_CLIENTE_IDX1 ON ALBARANES_CLIENTE (ID_ALMACEN); CREATE INDEX ALBARANES_CLIENTE_IDX2 ON ALBARANES_CLIENTE (ID_DIRECCION); CREATE INDEX ALBARANES_CLIENTE_IDX3 ON ALBARANES_CLIENTE (FECHA_ALBARAN); 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 ALBARANES_CLIENTE_DETALLES_IDX1 ON ALBARANES_CLIENTE_DETALLES (ID_PEDIDO); 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 ALBARANES_PROVEEDOR_IDX1 ON ALBARANES_PROVEEDOR (ID_ALBARAN); CREATE INDEX ALBARANES_PROVEEDOR_IDX2 ON ALBARANES_PROVEEDOR (FECHA_ALBARAN); 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 ALBARANES_PROVEEDOR_DETALL_IDX1 ON ALBARANES_PROVEEDOR_DETALLES (ID_PEDIDO); CREATE INDEX ALMACENES_IDX1 ON ALMACENES (TIPO_ALMACEN); CREATE INDEX ARTICULOS_PROVEEDORES_IDX1 ON ARTICULOS_PROVEEDORES (ID_ARTICULO); CREATE INDEX ARTICULOS_PROVEEDORES_IDX2 ON ARTICULOS_PROVEEDORES (ID_PROVEEDOR); CREATE INDEX IDX_CLIENTES_DATOS ON CLIENTES_DATOS (ID_TIPO_IVA); CREATE INDEX IDX_CLIENTES_DATOS1 ON CLIENTES_DATOS (ID_FORMA_PAGO); CREATE INDEX IDX_CLIENTES_DATOS_ID_AGENTE ON CLIENTES_DATOS (ID_AGENTE); CREATE INDEX IDX_CLIENTES_DTOS_PROV_ID_CLI ON CLIENTES_DTOS_PROVEEDORES (ID_CLIENTE); CREATE INDEX IDX_CLIENTES_DTOS_PROV_ID_PROV ON CLIENTES_DTOS_PROVEEDORES (ID_PROVEEDOR); CREATE INDEX IDX_COMISIONES_LIQUIDADAS ON COMISIONES_LIQUIDADAS (ID_EMPRESA); CREATE INDEX IDX_CONFIGURACION ON CONFIGURACION (ID_EMPRESA); 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_PER_ID_CONTACTO ON CONTACTOS_DATOS_PERSONAL (ID_CONTACTO); CREATE INDEX IDX_CONTACTOS_DIR_ID_CONTACTO ON CONTACTOS_DIRECCIONES (ID_CONTACTO); CREATE INDEX IDX_EMPRESAS_CONTACTOS ON EMPRESAS_CONTACTOS (ID_EMPRESA, ID_CONTACTO); CREATE INDEX IDX_EMPRESAS_USUARIOS ON EMPRESAS_USUARIOS (ID_EMPRESA, ID_USUARIO); CREATE INDEX IDX_FACTURAS_CLIENTE ON FACTURAS_CLIENTE (ID_FORMA_PAGO); CREATE INDEX IDX_FACTURAS_CLIENTE1 ON FACTURAS_CLIENTE (ID_TIPO_IVA); CREATE INDEX IDX_FACTURAS_CLIENTE2 ON FACTURAS_CLIENTE (ID_COMISION_LIQUIDADA); CREATE INDEX IDX_FACTURAS_CLIENTE3 ON FACTURAS_CLIENTE (ID_CLIENTE); CREATE INDEX FACTURAS_CLIENTE_IDX1 ON FACTURAS_CLIENTE (FECHA_FACTURA); CREATE INDEX FACTURAS_CLIENTE_IDX2 ON FACTURAS_CLIENTE (FECHA_VENCIMIENTO); CREATE INDEX IDX_FACTURAS_CLIENTE_DETALLES1 ON FACTURAS_CLIENTE_DETALLES (ID_FACTURA); CREATE INDEX IDX_FACTURAS_CLIENTE_DETALLES2 ON FACTURAS_CLIENTE_DETALLES (ID_ARTICULO); 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 FACTURAS_PROVEEDOR_IDX1 ON FACTURAS_PROVEEDOR (FECHA_FACTURA); CREATE INDEX FACTURAS_PROVEEDOR_IDX2 ON FACTURAS_PROVEEDOR (FECHA_VENCIMIENTO); CREATE INDEX IDX_FACTURAS_PROVEEDOR_DETALLES ON FACTURAS_PROVEEDOR_DETALLES (ID_ARTICULO); CREATE INDEX FACTURAS_PROVEEDOR_DETALLE_IDX1 ON FACTURAS_PROVEEDOR_DETALLES (ID_FACTURA); CREATE INDEX IDX_FACTURAS_PROVEEDOR_PEDIDOS ON FACTURAS_PROVEEDOR_PEDIDOS (ID_PEDIDO); CREATE INDEX FACTURAS_PROVEEDOR_PEDIDOS_IDX1 ON FACTURAS_PROVEEDOR_PEDIDOS (ID_FACTURA); CREATE INDEX IDX_FORMAS_PAGO_PLAZOS ON FORMAS_PAGO_PLAZOS (ID_FORMA_PAGO); CREATE INDEX IDX_INFORMES ON INFORMES (ID_EMPRESA); CREATE INDEX IDX_MOVIMIENTOS ON MOVIMIENTOS (TIPO); CREATE INDEX MOVIMIENTOS_IDX1 ON MOVIMIENTOS (ID_ARTICULO); CREATE INDEX MOVIMIENTOS_IDX2 ON MOVIMIENTOS (FECHA_MOVIMIENTO); CREATE INDEX MOVIMIENTOS_IDX3 ON MOVIMIENTOS (ID_ALMACEN_RESERVA); CREATE INDEX OBRAS_DATOS_IDX1 ON OBRAS_DATOS (ID_ALMACEN); CREATE INDEX OBRAS_DATOS_IDX2 ON OBRAS_DATOS (ID_CLIENTE); CREATE INDEX PAGOS_CLIENTE_IDX1 ON PAGOS_CLIENTE (FECHA_PAGO); CREATE INDEX PAGOS_PROVEEDOR_IDX1 ON PAGOS_PROVEEDOR (FECHA_PAGO); CREATE INDEX IDX_PEDIDOS_CLIENTE ON PEDIDOS_CLIENTE (ID_FORMA_PAGO); CREATE INDEX PEDIDOS_CLIENTE_IDX1 ON PEDIDOS_CLIENTE (FECHA_PEDIDO); CREATE INDEX IDX_PEDIDOS_CLIENTE_DETALLES ON PEDIDOS_CLIENTE_DETALLES (ID_PEDIDO); CREATE INDEX IDX_PEDIDOS_CLIENTE_DETALLES1 ON PEDIDOS_CLIENTE_DETALLES (ID_ARTICULO); CREATE INDEX IDX_PEDIDOS_PROVEEDOR ON PEDIDOS_PROVEEDOR (ID_PEDIDO_CLIENTE); CREATE INDEX IDX_PEDIDOS_PROVEEDOR1 ON PEDIDOS_PROVEEDOR (ID_ALMACEN); CREATE INDEX IDX_PEDIDOS_PROVEEDOR2 ON PEDIDOS_PROVEEDOR (ID_FORMA_PAGO); CREATE INDEX IDX_PEDIDOS_PROVEEDOR3 ON PEDIDOS_PROVEEDOR (ID_OBRA); CREATE INDEX IDX_PEDIDOS_PROVEEDOR4 ON PEDIDOS_PROVEEDOR (ID_PROVEEDOR); CREATE INDEX PEDIDOS_PROVEEDOR_IDX1 ON PEDIDOS_PROVEEDOR (FECHA_PEDIDO); CREATE INDEX IDX_PEDIDOS_PROVEEDOR_DETALLES ON PEDIDOS_PROVEEDOR_DETALLES (ID_ARTICULO); CREATE INDEX PEDIDOS_PROVEEDOR_DETALLES_IDX1 ON PEDIDOS_PROVEEDOR_DETALLES (ID_PEDIDO); CREATE INDEX POBLACIONES_IDX1 ON POBLACIONES (ID_PROVINCIA); CREATE INDEX PRESUPUESTOS_CLIENTE_IDX1 ON PRESUPUESTOS_CLIENTE (FECHA_PRESUPUESTO); CREATE INDEX PRESUPUESTOS_CLIENTE_DETAL_IDX1 ON PRESUPUESTOS_CLIENTE_DETALLES (ID_PRESUPUESTO); CREATE INDEX PRESUPUESTOS_CLIENTE_DETAL_IDX2 ON PRESUPUESTOS_CLIENTE_DETALLES (ID_ARTICULO); CREATE INDEX IDX_PROVEEDORES_DATOS ON PROVEEDORES_DATOS (ID_TIPO_IVA); CREATE INDEX IDX_PROVEEDORES_DATOS1 ON PROVEEDORES_DATOS (ID_FORMA_PAGO); CREATE INDEX IDX_RECIBOS_CLIENTE ON RECIBOS_CLIENTE (ID_RECIBO_COMPENSADO); CREATE INDEX RECIBOS_CLIENTE_IDX1 ON RECIBOS_CLIENTE (FECHA_EMISION); CREATE INDEX RECIBOS_CLIENTE_IDX2 ON RECIBOS_CLIENTE (FECHA_VENCIMIENTO); CREATE INDEX IDX_RECIBOS_PROVEEDOR ON RECIBOS_PROVEEDOR (ID_RECIBO_COMPENSADO); CREATE INDEX RECIBOS_PROVEEDOR_IDX1 ON RECIBOS_PROVEEDOR (FECHA_EMISION); CREATE INDEX RECIBOS_PROVEEDOR_IDX2 ON RECIBOS_PROVEEDOR (FECHA_VENCIMIENTO); CREATE INDEX IDX_REFERENCIAS ON REFERENCIAS (ID_EMPRESA); CREATE INDEX IDX_REMESAS_CLIENTE ON REMESAS_CLIENTE (ID_DATOS_BANCO); CREATE INDEX REMESAS_CLIENTE_IDX1 ON REMESAS_CLIENTE (FECHA_REMESA); CREATE INDEX IDX_REMESAS_PROVEEDOR ON REMESAS_PROVEEDOR (ID_DATOS_BANCO); CREATE INDEX REMESAS_PROVEEDOR_IDX1 ON REMESAS_PROVEEDOR (FECHA_REMESA); /******************************************************************************/ /**** Stored Procedures ****/ /******************************************************************************/ SET TERM ^ ; CREATE PROCEDURE PRO_ART_RECALCULAR_PVP ( ID_EMPRESA INTEGER, PARAM_MARGEN NUMERIC(2,2), PARAM_TIEMPO NUMERIC(11,2)) AS declare variable id_articulo integer; declare variable mano_obra numeric(11,2); begin UPDATE ARTICULOS SET PARAM_TIEMPO = :PARAM_TIEMPO, PARAM_MARGEN = :PARAM_MARGEN, MANO_OBRA = (TIEMPO * :PARAM_TIEMPO) WHERE ID_EMPRESA = :ID_EMPRESA; for select ID, MANO_OBRA from articulos where ID_EMPRESA = :ID_EMPRESA into :ID_ARTICULO, :MANO_OBRA do begin update articulos_proveedores set PRECIO_PVP_VENTA = (PRECIO_NETO + PRECIO_PORTE) * (((:PARAM_MARGEN) / 100) + 1), PRECIO_PVP_TOTAL = ((PRECIO_NETO + PRECIO_PORTE) * (((:PARAM_MARGEN) / 100) + 1)) + :MANO_OBRA where id_articulo = :ID_ARTICULO; end suspend; end ^ CREATE PROCEDURE PRO_PRES_CAPITULOS ( AID INTEGER) RETURNS ( ID INTEGER, ID_PRESUPUESTO INTEGER, POSICION INTEGER, TIPO_DETALLE VARCHAR(25), 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); declare variable total_acumulado numeric(11,2); begin existe = 0; total_acumulado = 0.0; contador = 0; num_filas = 0; /* ¿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 ((visible <> 0) and (tipo_detalle = 'Concepto')) then total_acumulado = total_acumulado + importe_total; 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 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 = 'Titulo') or (tipo_detalle = 'Titulo opcional'))and id_presupuesto = :AID order by id_presupuesto, posicion into :ID, :ID_PRESUPUESTO, :POSICION, :TIPO_DETALLE, :CONCEPTO, :IMPORTE_TOTAL, :VISIBLE do suspend; end ^ CREATE PROCEDURE PRO_PRES_CAPITULOS_CONCEPTOS ( AID INTEGER) RETURNS ( ID INTEGER, ID_PRESUPUESTO INTEGER, POSICION INTEGER, TIPO_DETALLE VARCHAR(25), ID_CAPITULO INTEGER, ID_ARTICULO INTEGER, REFERENCIA VARCHAR(255), CONCEPTO VARCHAR(2000), CANTIDAD NUMERIC(11,2), UNIDAD_MEDIDA VARCHAR(255), IMPORTE_UNIDAD NUMERIC(11,2), DESCUENTO NUMERIC(2,2), 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, F_RTFTOTEXT(F_RTFTOTEXT(pre.CONCEPTO)) as CONCEPTO, pre.cantidad, pre.unidad_medida, case when (pre.cantidad = 0) then 0 when (pre.descuento <> 0) then (pre.importe_total / pre.cantidad) else pre.importe_unidad end as 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, :UNIDAD_MEDIDA, :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 ^ CREATE PROCEDURE PRO_PRES_RESUMEN ( AID INTEGER) RETURNS ( ID INTEGER, ID_PRESUPUESTO INTEGER, POSICION INTEGER, TIPO_DETALLE VARCHAR(25), 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); declare variable tipo varchar(25); begin existe = 0; total_acumulado = 0.0; contador = 0; num_filas = 0; num_capitulos = 0; concepto_capitulo = ''; tipo = ''; /* ¿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 num_capitulos = 1; if (existe = 1) then begin contador = 0; /* Existen conceptos sin capitulo */ for select tipo_detalle, coalesce(importe_total,0), 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 ((visible <> 0) and (tipo_detalle = 'Concepto')) then total_acumulado = total_acumulado + importe_total; if ((tipo_detalle <> 'Concepto') or (contador = num_filas)) then begin importe_total = total_acumulado; tipo_detalle = 'Titulo'; if (num_capitulos > 1) then concepto = 'CAPÍTULO ' || num_capitulos ||'. General'; else concepto = 'General'; visible = 1; ID = -1; posicion = -1; suspend; break; end end end /* Tratar el resto de las filas */ for select id, id_presupuesto, posicion, tipo_detalle, F_RTFTOTEXT(concepto) as concepto, coalesce(importe_total,0), coalesce(visible, 1) from presupuestos_cliente_detalles where id_presupuesto = :AID and tipo_detalle in ('Titulo', 'Titulo opcional', 'Subtotal') order by posicion into :ID, :ID_PRESUPUESTO, :POSICION, :TIPO_DETALLE, :CONCEPTO, :IMPORTE_TOTAL, :VISIBLE do begin contador = contador + 1; if ((tipo_detalle = 'Titulo') or (tipo_detalle = 'Titulo opcional')) then begin concepto_capitulo = concepto; tipo = tipo_detalle; end if (tipo_detalle = 'Subtotal') then begin concepto = 'CAPÍTULO ' || num_capitulos || '. ' || concepto_capitulo; tipo_detalle = tipo; num_capitulos = num_capitulos + 1; suspend; end end end ^ SET TERM ; ^ /******************************************************************************/ /**** Descriptions ****/ /******************************************************************************/