/******************************************************************************/ /**** 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'; /******************************************************************************/ /**** 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 FLOAT; CREATE DOMAIN TIPO_USUARIO AS VARCHAR(30); /******************************************************************************/ /**** Generators ****/ /******************************************************************************/ CREATE GENERATOR GEN_IMPRESIONES_ID; SET GENERATOR GEN_IMPRESIONES_ID TO 1; CREATE GENERATOR GEN_REGISTRO_CORREOS_ID; SET GENERATOR GEN_REGISTRO_CORREOS_ID TO 1; 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 IMPRESIONES ( ID TIPO_ID NOT NULL /* TIPO_ID = INTEGER */, ID_TABLA TIPO_ID /* TIPO_ID = INTEGER */, TABLA VARCHAR(50) COLLATE ES_ES, NUM_COPIAS SMALLINT ); CREATE TABLE REGISTRO_CORREOS ( ID TIPO_ID NOT NULL /* TIPO_ID = INTEGER */, ID_TABLA TIPO_ID /* TIPO_ID = INTEGER */, TABLA VARCHAR(50) COLLATE ES_ES, NUM_CORREOS SMALLINT ); 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), ID_ALBARAN_DEV TIPO_ID ); 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, ID_ALBARAN_DEV 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, ID_PROVEEDOR TIPO_ID, REFERENCIA_PROV VARCHAR(255), PRECIO_COSTE TIPO_IMPORTE, DESCUENTO TIPO_PORCENTAJE, PRECIO_NETO TIPO_IMPORTE, PRECIO_PORTE TIPO_IMPORTE, TIENDA_WEB TIPO_BOOLEANO DEFAULT 0, 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 ); 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, RAPEL SMALLINT, EMAIL_ADMINISTRACION VARCHAR(255), 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 AGENTES_DATOS ( ID_AGENTE TIPO_ID NOT NULL, FECHA_ALTA_EMPRESA DATE, 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, DESCRIPCION_DESCUENTO VARCHAR(255) COLLATE ES_ES, 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 ); 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 ); 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, 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, TIPO_AGRUPACION TIPO_ID ); 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, ID_DIRECCION 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 ); 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, EMAIL_ADMINISTRACION VARCHAR(255), 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 ); 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, TRIM(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, ID_ALBARAN_DEV, REFERENCIA_ALB_DEV, ID_FAC_ALB_DEV, REFERENCIA_FAC_ALB_DEV, 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, ID_AGENTE, AGENTE, NUM_COPIAS, NUM_CORREOS, BLOQUEADO) 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, ALBARANES_CLIENTE.ID_ALBARAN_DEV, ALB_DEV.REFERENCIA, ALB_DEV.ID_FACTURA, FAC_CLI_ALB_DEV.REFERENCIA, 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, CLIENTES_DATOS.ID_AGENTE, AGENTES.NOMBRE, IMPRESIONES.NUM_COPIAS, REGISTRO_CORREOS.NUM_CORREOS, CLIENTES_DATOS.BLOQUEADO FROM ALBARANES_CLIENTE INNER JOIN V_ALB_CLI_SITUACION ON (V_ALB_CLI_SITUACION.ID = ALBARANES_CLIENTE.ID) INNER 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 ALMACENES ON (ALMACENES.ID = ALBARANES_CLIENTE.ID_ALMACEN) LEFT OUTER JOIN ALBARANES_CLIENTE ALB_DEV ON (ALB_DEV.ID = ALBARANES_CLIENTE.ID_ALBARAN_DEV) LEFT OUTER JOIN FACTURAS_CLIENTE FAC_CLI_ALB_DEV ON (FAC_CLI_ALB_DEV.ID = ALB_DEV.ID_FACTURA) LEFT OUTER JOIN CLIENTES_DATOS ON (CLIENTES_DATOS.ID_CLIENTE = ALBARANES_CLIENTE.ID_CLIENTE) LEFT OUTER JOIN CONTACTOS AGENTES ON (AGENTES.ID = CLIENTES_DATOS.ID_AGENTE) LEFT JOIN IMPRESIONES ON ((IMPRESIONES.ID_TABLA = ALBARANES_CLIENTE.ID) AND (IMPRESIONES.TABLA = 'ALBARANESCLIENTE')) LEFT JOIN REGISTRO_CORREOS ON ((REGISTRO_CORREOS.ID_TABLA = ALBARANES_CLIENTE.ID) AND (REGISTRO_CORREOS.TABLA = 'ALBARANESCLIENTE')) ; /* 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_ALBARAN_DEV, REFERENCIA_ALB_DEV, ID_FAC_ALB_DEV, REFERENCIA_FAC_ALB_DEV, 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, NUM_COPIAS, NUM_CORREOS) 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_ALBARAN_DEV, ALB_DEV.REFERENCIA, ALB_DEV.ID_FACTURA, FAC_PROV_ALB_DEV.REFERENCIA, 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, IMPRESIONES.NUM_COPIAS, REGISTRO_CORREOS.NUM_CORREOS FROM ALBARANES_PROVEEDOR INNER JOIN CONTACTOS ON (CONTACTOS.ID = ALBARANES_PROVEEDOR.ID_PROVEEDOR) LEFT OUTER JOIN ALBARANES_PROVEEDOR ALB_DEV ON (ALB_DEV.ID = ALBARANES_PROVEEDOR.ID_ALBARAN_DEV) LEFT OUTER JOIN FACTURAS_PROVEEDOR FAC_PROV_ALB_DEV ON (FAC_PROV_ALB_DEV.ID = ALB_DEV.ID_FACTURA) LEFT OUTER JOIN FACTURAS_PROVEEDOR ON (FACTURAS_PROVEEDOR.ID = ALBARANES_PROVEEDOR.ID_FACTURA) LEFT OUTER JOIN PEDIDOS_PROVEEDOR ON (PEDIDOS_PROVEEDOR.ID = ALBARANES_PROVEEDOR.ID_PEDIDO) LEFT OUTER JOIN ALMACENES ON (ALMACENES.ID = ALBARANES_PROVEEDOR.ID_ALMACEN) LEFT OUTER JOIN ALBARANES_PROVEEDOR ALB2 ON (ALB2.ID = ALBARANES_PROVEEDOR.ID_ALBARAN) LEFT JOIN IMPRESIONES ON ((IMPRESIONES.ID_TABLA = ALBARANES_PROVEEDOR.ID) AND (IMPRESIONES.TABLA = 'ALBARANESPROVEEDOR')) LEFT JOIN REGISTRO_CORREOS ON ((REGISTRO_CORREOS.ID_TABLA = ALBARANES_PROVEEDOR.ID) AND (REGISTRO_CORREOS.TABLA = 'ALBARANESPROVEEDOR')) ; /* 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' ; /* Para el caso de tener un £nico proveedor*/ CREATE VIEW V_ARTICULOS( ID, ID_EMPRESA, REFERENCIA, DESCRIPCION, FAMILIA, IMAGEN, COMISIONABLE, FECHA_ALTA, FECHA_MODIFICACION, USUARIO, REFERENCIA_PROV, PRECIO_COSTE, PRECIO_PORTE, DESCUENTO, PRECIO_NETO, INVENTARIABLE, ID_PROVEEDOR, NOMBRE_PROVEEDOR, ELIMINADO, TIENDA_WEB) AS SELECT ARTICULOS.ID, ARTICULOS.ID_EMPRESA, ARTICULOS.REFERENCIA, ARTICULOS.DESCRIPCION, ARTICULOS.FAMILIA, ARTICULOS.IMAGEN, ARTICULOS.COMISIONABLE, ARTICULOS.FECHA_ALTA, ARTICULOS.FECHA_MODIFICACION, ARTICULOS.USUARIO, ARTICULOS.REFERENCIA_PROV, ARTICULOS.PRECIO_COSTE, ARTICULOS.PRECIO_PORTE, ARTICULOS.DESCUENTO, ARTICULOS.PRECIO_NETO, ARTICULOS.INVENTARIABLE, ARTICULOS.ID_PROVEEDOR, CONTACTOS.NOMBRE AS NOMBRE_PROVEEDOR, ARTICULOS.ELIMINADO, ARTICULOS.TIENDA_WEB FROM ARTICULOS LEFT OUTER JOIN CONTACTOS ON (CONTACTOS.ID = ARTICULOS.ID_PROVEEDOR) WHERE (ARTICULOS.ELIMINADO = 0) ; /* En el caso de tener varios proveedores para un mismo articulo 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) ; /* En el caso de tener varios proveedores para un mismo articulo 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 ; /* En el caso de tener varios proveedores para un mismo articulo 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, TIENDA_WEB, 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.TIENDA_WEB, 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 */ /* 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, ID_AGENTE, GRUPO_CLIENTE, NOMBRE_COMERCIAL, VENCIMIENTO_FACTURAS_1, VENCIMIENTO_FACTURAS_2, VENCIMIENTO_FACTURAS_3, BLOQUEADO, AGENTE, RAPEL, EMAIL_ADMINISTRACION, 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.ID_AGENTE, 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, CONTACTOS.NOMBRE AS AGENTE, CLIENTES_DATOS.RAPEL, CLIENTES_DATOS.EMAIL_ADMINISTRACION, 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) LEFT OUTER JOIN CONTACTOS ON (CLIENTES_DATOS.ID_AGENTE = CONTACTOS.ID) WHERE V_CONTACTOS.ID_CATEGORIA = 1 ; CREATE VIEW V_AGENTES( 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_ALTA_EMPRESA, 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, AGENTES_DATOS.FECHA_ALTA_EMPRESA, AGENTES_DATOS.FECHA_BAJA, AGENTES_DATOS.CAUSA_BAJA FROM V_CONTACTOS LEFT JOIN AGENTES_DATOS ON (AGENTES_DATOS.ID_AGENTE = V_CONTACTOS.ID) WHERE V_CONTACTOS.ID_CATEGORIA = 3 ; /* 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, NUM_COPIAS, NUM_CORREOS) 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, IMPRESIONES.NUM_COPIAS, REGISTRO_CORREOS.NUM_CORREOS 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) LEFT JOIN IMPRESIONES ON ((IMPRESIONES.ID_TABLA = FACTURAS_CLIENTE.ID) AND (IMPRESIONES.TABLA = 'FACTURASCLIENTE')) LEFT JOIN REGISTRO_CORREOS ON ((REGISTRO_CORREOS.ID_TABLA = FACTURAS_CLIENTE.ID) AND (REGISTRO_CORREOS.TABLA = 'FACTURASCLIENTE')) ; /* View: V_FACTURAS_PROVEEDOR */ CREATE VIEW V_FACTURAS_PROVEEDOR( ID, ID_EMPRESA, REFERENCIA, TIPO, REFERENCIA_PROVEEDOR, FECHA_FACTURA, 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, NUM_COPIAS, NUM_CORREOS) 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_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, IMPRESIONES.NUM_COPIAS, REGISTRO_CORREOS.NUM_CORREOS 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) LEFT JOIN IMPRESIONES ON ((IMPRESIONES.ID_TABLA = FACTURAS_PROVEEDOR.ID) AND (IMPRESIONES.TABLA = 'FACTURASPROVEEDOR')) LEFT JOIN REGISTRO_CORREOS ON ((REGISTRO_CORREOS.ID_TABLA = FACTURAS_PROVEEDOR.ID) AND (REGISTRO_CORREOS.TABLA = 'FACTURASPROVEEDOR')) ; /* 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, NUM_COPIAS, NUM_CORREOS) 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, IMPRESIONES.NUM_COPIAS, REGISTRO_CORREOS.NUM_CORREOS 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) LEFT JOIN IMPRESIONES ON ((IMPRESIONES.ID_TABLA = PEDIDOS_PROVEEDOR.ID) AND (IMPRESIONES.TABLA = 'PEDIDOSPROVEEDOR')) LEFT JOIN REGISTRO_CORREOS ON ((REGISTRO_CORREOS.ID_TABLA = PEDIDOS_PROVEEDOR.ID) AND (REGISTRO_CORREOS.TABLA = 'PEDIDOSPROVEEDOR')) ; /* 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) 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 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, EMAIL_ADMINISTRACION, VENCIMIENTO_FACTURAS_1, VENCIMIENTO_FACTURAS_2, VENCIMIENTO_FACTURAS_3) 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.EMAIL_ADMINISTRACION, PROVEEDORES_DATOS.VENCIMIENTO_FACTURAS_1, PROVEEDORES_DATOS.VENCIMIENTO_FACTURAS_2, PROVEEDORES_DATOS.VENCIMIENTO_FACTURAS_3 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 ; /* View: V_RECIBOS_CLIENTE */ 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, ENTIDAD_CLIENTE, SUCURSAL_CLIENTE, DC_CLIENTE, CUENTA_CLIENTE, FECHA_ALTA, FECHA_MODIFICACION, USUARIO, NUM_COPIAS, NUM_CORREOS) AS SELECT RECIBOS_CLIENTE.ID, RECIBOS_CLIENTE.ID_RECIBO_COMPENSADO, RECIBO_COMPENSADO1.REFERENCIA, 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, CONTACTOS_DATOS_BANCO.ENTIDAD, CONTACTOS_DATOS_BANCO.SUCURSAL, CONTACTOS_DATOS_BANCO.DC, CONTACTOS_DATOS_BANCO.CUENTA, RECIBOS_CLIENTE.FECHA_ALTA, RECIBOS_CLIENTE.FECHA_MODIFICACION, RECIBOS_CLIENTE.USUARIO, IMPRESIONES.NUM_COPIAS, REGISTRO_CORREOS.NUM_CORREOS 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 CONTACTOS_DATOS_BANCO ON (CONTACTOS_DATOS_BANCO.ID_CONTACTO = CONTACTOS.ID) 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) LEFT JOIN IMPRESIONES ON ((IMPRESIONES.ID_TABLA = RECIBOS_CLIENTE.ID) AND (IMPRESIONES.TABLA = 'RECIBOSCLIENTE')) LEFT JOIN REGISTRO_CORREOS ON ((REGISTRO_CORREOS.ID_TABLA = RECIBOS_CLIENTE.ID) AND (REGISTRO_CORREOS.TABLA = 'RECIBOSCLIENTE')) ; /* 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, ENTIDAD_PROVEEDOR, SUCURSAL_PROVEEDOR, DC_PROVEEDOR, CUENTA_PROVEEDOR, FECHA_ALTA, FECHA_MODIFICACION, USUARIO) AS SELECT RECIBOS_PROVEEDOR.ID, RECIBOS_PROVEEDOR.ID_RECIBO_COMPENSADO, RECIBO_COMPENSADO1.REFERENCIA, 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, CONTACTOS_DATOS_BANCO.ENTIDAD, CONTACTOS_DATOS_BANCO.SUCURSAL, CONTACTOS_DATOS_BANCO.DC, CONTACTOS_DATOS_BANCO.CUENTA, 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 CONTACTOS_DATOS_BANCO ON (CONTACTOS_DATOS_BANCO.ID_CONTACTO = CONTACTOS.ID) 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, NUM_COPIAS, 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, IMPRESIONES.NUM_COPIAS, 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) LEFT JOIN IMPRESIONES ON ((IMPRESIONES.ID_TABLA = REMESAS_CLIENTE.ID) AND (IMPRESIONES.TABLA = 'REMESASCLIENTE')) GROUP BY 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18 ; 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 ; /*Agrupa los artículos de un mismo pedido (ya que en un pedido puede existir varias lineas con el mismo artículo). Se quitan todos los artículos que no tengamos en catálogo (ID_ARTICULO nulo, lineas de detalle libres) -> esta premisa la cambiamos para que no se falsee la situación de los pedidos, asi pues todo articulo que no este en el catálogo lo pondremos con ID_ARTICULO 0. Se quitan también aquellos que no seán inventariables -> esta premisa nos falsearía la situacion de los pedidos*/ CREATE VIEW V_PED_CLI_DETALLES( ID_PEDIDO, ID_ARTICULO, CANTIDAD) AS SELECT PEDIDOS_CLIENTE_DETALLES.ID_PEDIDO, COALESCE(PEDIDOS_CLIENTE_DETALLES.ID_ARTICULO, 0), SUM(COALESCE(PEDIDOS_CLIENTE_DETALLES.CANTIDAD, 0)) AS CANTIDAD FROM PEDIDOS_CLIENTE_DETALLES /*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_CLIENTE_DETALLES.ID_ARTICULO = ARTICULOS.ID) WHERE (PEDIDOS_CLIENTE_DETALLES.ID_ARTICULO is not null) AND (ARTICULOS.INVENTARIABLE = 1) */ GROUP BY PEDIDOS_CLIENTE_DETALLES.ID_PEDIDO, PEDIDOS_CLIENTE_DETALLES.ID_ARTICULO; /*Agrupa todos los artículos de un pedido por situacion (a partir de albaranes de cliente) de cada uno de los pedidos asociados en los albaranes existentes*/ /*No le ponemos el almacen donde salió o va a salir ya que un mismo pedido podría tener varios albaranes con distintos almacenes de origen*/ /*Aquellos articulos que no tengan ID_PEDIDO es porque el albarán al que pertenecen no tiene pedido asociado por ello no los tendremos en cuenta*/ CREATE VIEW V_PED_CLI_ART_SITUACION( ID_PEDIDO, SITUACION, ID_ARTICULO, CANTIDAD) AS SELECT ID_PEDIDO, SITUACION, ID_ARTICULO, SUM(CANTIDAD) AS CANTIDAD FROM V_ALB_CLI_DETALLES WHERE (ID_PEDIDO is not null) GROUP BY ID_PEDIDO, SITUACION, ID_ARTICULO; /*Nos desglosa las cantidades del artículo*/ CREATE VIEW V_PED_CLI_ART_SITUACION_CANT( ID_PEDIDO, ID_ARTICULO, CANTIDAD_RESERVADA, CANTIDAD_ENVIADA, CANTIDAD_SERVIDA) AS SELECT ID_PEDIDO, ID_ARTICULO, COALESCE((CASE SITUACION when 'PENDIENTE' THEN CANTIDAD END), 0) as CANTIDAD_RESERVADA, COALESCE((CASE SITUACION when 'ENVIADO' THEN CANTIDAD END), 0) as CANTIDAD_ENVIADA, COALESCE((CASE SITUACION when 'SERVIDO' THEN CANTIDAD END), 0) as CANTIDAD_SERVIDA FROM V_PED_CLI_ART_SITUACION; /*Al igual que en la parte de proveedores, no hacemos LEFT JOIN entre V_PED_CLI_DETALLES y V_PED_CLI_ART_SITUACION_CANT,*/ /*porque por cada tupla de la primera repetiría la consulta de la segunda disparando tiempos, por ello teniendo las*/ /*dos vistas ejecutadas hacemos una union obteniendo todos los artículos del pedido, tanto recibidos como pendientes,*/ /*luego haremos la agrupación sobre este resultado*/ CREATE VIEW V_PED_CLI_ARTICULOS_AUX( ID_PEDIDO, ID_ARTICULO, CANTIDAD_PEDIDA, CANTIDAD_RESERVADA, CANTIDAD_ENVIADA, CANTIDAD_SERVIDA) AS SELECT V_PED_CLI_DETALLES.ID_PEDIDO, V_PED_CLI_DETALLES.ID_ARTICULO, V_PED_CLI_DETALLES.CANTIDAD AS CANTIDAD_PEDIDA, 0 AS CANTIDAD_RESERVADA, 0 AS CANTIDAD_ENVIADA, 0 AS CANTIDAD_SERVIDA FROM V_PED_CLI_DETALLES UNION ALL SELECT V_PED_CLI_ART_SITUACION_CANT.ID_PEDIDO, V_PED_CLI_ART_SITUACION_CANT.ID_ARTICULO, NULL AS CANTIDAD_PEDIDA, V_PED_CLI_ART_SITUACION_CANT.CANTIDAD_RESERVADA AS CANTIDAD_RESERVADA, V_PED_CLI_ART_SITUACION_CANT.CANTIDAD_ENVIADA AS CANTIDAD_ENVIADA, V_PED_CLI_ART_SITUACION_CANT.CANTIDAD_SERVIDA AS CANTIDAD_SERVIDA FROM V_PED_CLI_ART_SITUACION_CANT; /*A partir de la vista anterior obtenemos el estado de cada uno de los artículos del pedido de cliente*/ /*Despreciamos aquellas tuplas cuya cantidad pedida sea null, porque son articulos añadidos en el albarán que*/ /*no están en su pedido correspondiente por lo tanto no los tendremos en cuenta para saber si los articulos del*/ /*pedido se han recibido todos. De todas formas no tiene mucho sentido este caso*/ /*Esta vista nos determina el estado de cada uno de los artículos del pedido de cliente*/ CREATE VIEW V_PED_CLI_ARTICULOS( ID_PEDIDO, ID_ARTICULO, CANTIDAD_PEDIDA, CANTIDAD_RESERVADA, CANTIDAD_ENVIADA, CANTIDAD_SERVIDA, CANTIDAD_PENDIENTE) AS SELECT ID_PEDIDO, ID_ARTICULO, SUM(CANTIDAD_PEDIDA), SUM(CANTIDAD_RESERVADA) as CANTIDAD_RESERVADA, SUM(CANTIDAD_ENVIADA) as CANTIDAD_ENVIADA, SUM(CANTIDAD_SERVIDA) as CANTIDAD_SERVIDA, (SUM(CANTIDAD_PEDIDA) - (SUM(CANTIDAD_RESERVADA) + SUM(CANTIDAD_ENVIADA) + SUM(CANTIDAD_SERVIDA))) as CANTIDAD_PENDIENTE FROM V_PED_CLI_ARTICULOS_AUX GROUP BY ID_PEDIDO, ID_ARTICULO HAVING SUM(CANTIDAD_PEDIDA) IS NOT NULL; /*Aqui tendremos todos los pedidos de cliente pendientes o en proceso*/ CREATE VIEW V_PED_CLI_PENDIENTES_PROCESO( ID_PEDIDO) AS SELECT distinct V_PED_CLI_ARTICULOS.id_pedido FROM V_PED_CLI_ARTICULOS WHERE (V_PED_CLI_ARTICULOS.CANTIDAD_PEDIDA > V_PED_CLI_ARTICULOS.CANTIDAD_SERVIDA) ; /*Aqui tendremos todos los pedidos de cliente que tienen algun albaran relacionado*/ CREATE VIEW V_PED_CLI_CON_ALBARANES( ID_PEDIDO) AS SELECT distinct ID_PEDIDO FROM (SELECT DISTINCT ALBARANES_CLIENTE_DETALLES.ID_PEDIDO, ALBARANES_CLIENTE_DETALLES.ID_ALBARAN FROM ALBARANES_CLIENTE_DETALLES) GROUP BY ID_PEDIDO having COUNT(ID_ALBARAN) > 0 ; /*Aqui tendremos todos los pedidos de cliente en proceso*/ CREATE VIEW V_PED_CLI_PROCESO( ID_PEDIDO) AS select v_ped_cli_pendientes_proceso.ID_PEDIDO from v_ped_cli_pendientes_proceso inner join v_ped_cli_con_albaranes on (v_ped_cli_con_albaranes.ID_PEDIDO = v_ped_cli_pendientes_proceso.ID_PEDIDO) ; CREATE VIEW V_PED_CLI_ART_SIN_ALBARAN( ID, ID_PEDIDO, ID_EMPRESA, REFERENCIA_PEDIDO, REFERENCIA_CLI_PEDIDO, FECHA_PEDIDO, FECHA_PREVISTA_PEDIDO, ID_CLIENTE, CALLE, CODIGO_POSTAL, POBLACION, PROVINCIA, PERSONA_CONTACTO, TELEFONO, IVA, ID_FORMA_PAGO, CLIENTE, ID_ARTICULO, FAMILIA, REFERENCIA, REFERENCIA_PROVEEDOR, DESCRIPCION, CANTIDAD_PEDIDA, CANTIDAD_RESERVADA, CANTIDAD_ENVIADA, CANTIDAD_SERVIDA, CANTIDAD_PENDIENTE, PRECIO_COSTE, DESCUENTO, PRECION_NETO) AS SELECT V_PED_CLI_ARTICULOS.ID_PEDIDO || 0 || V_PED_CLI_ARTICULOS.ID_ARTICULO as ID, /*Para tener un ID unico sobre el que poder consultar en la sentencia de selección del grid*/ V_PED_CLI_ARTICULOS.ID_PEDIDO, PEDIDOS_CLIENTE.ID_EMPRESA, PEDIDOS_CLIENTE.referencia, PEDIDOS_CLIENTE.referencia_cliente, PEDIDOS_CLIENTE.fecha_pedido, PEDIDOS_CLIENTE.fecha_prevista_envio, PEDIDOS_CLIENTE.id_cliente, PEDIDOS_CLIENTE.CALLE, PEDIDOS_CLIENTE.CODIGO_POSTAL, PEDIDOS_CLIENTE.POBLACION, PEDIDOS_CLIENTE.PROVINCIA, PEDIDOS_CLIENTE.PERSONA_CONTACTO, PEDIDOS_CLIENTE.TELEFONO, PEDIDOS_CLIENTE.IVA, PEDIDOS_CLIENTE.ID_FORMA_PAGO, CONTACTOS.nombre, V_PED_CLI_ARTICULOS.ID_ARTICULO, articulos.familia, articulos.referencia, articulos.referencia_prov, articulos.descripcion, V_PED_CLI_ARTICULOS.CANTIDAD_PEDIDA, V_PED_CLI_ARTICULOS.CANTIDAD_RESERVADA, V_PED_CLI_ARTICULOS.CANTIDAD_ENVIADA, V_PED_CLI_ARTICULOS.CANTIDAD_SERVIDA, V_PED_CLI_ARTICULOS.CANTIDAD_PENDIENTE, ARTICULOS.PRECIO_COSTE, CLIENTES_DTOS_PROVEEDORES.DESCUENTO, (ARTICULOS.PRECIO_COSTE * CLIENTES_DTOS_PROVEEDORES.DESCUENTO)/100 as PRECIO_NETO from V_PED_CLI_ARTICULOS left join PEDIDOS_CLIENTE on (PEDIDOS_CLIENTE.id = V_PED_CLI_ARTICULOS.id_pedido) left join CONTACTOS on (contactos.id = PEDIDOS_CLIENTE.id_cliente) left join articulos on (articulos.id = V_PED_CLI_ARTICULOS.ID_ARTICULO) LEFT OUTER JOIN CLIENTES_DTOS_PROVEEDORES ON ((CLIENTES_DTOS_PROVEEDORES.ID_PROVEEDOR = ARTICULOS.ID_PROVEEDOR) AND (CLIENTES_DTOS_PROVEEDORES.ID_CLIENTE = contactos.id)) where cantidad_pendiente > 0; /*Aqui tendremos la situacion de todos los pedidos, por lógica de grupos*/ CREATE VIEW V_PED_CLI_SITUACION( ID_PEDIDO, SITUACION) AS select id_pedido, case when sum(enpro) = 3 then 'EN PROCESO' when sum(enpro) = 2 then 'PENDIENTE' when sum(enpro) = 1 then 'SERVIDO' end from ( select id as id_pedido, 1 as ser, 1 as pend, 1 as enpro from pedidos_cliente union select id_pedido, 0 as ser, 1 as pend, 1 as enpro from v_ped_cli_pendientes_proceso union select id_pedido, 0 as ser, 0 as pend, 1 as enpro from v_ped_cli_proceso ) group by id_pedido ; CREATE VIEW V_PEDIDOS_CLIENTE( ID, ID_EMPRESA, ID_CLIENTE, ID_DIRECCION, NOMBRE, REFERENCIA, REFERENCIA_CLIENTE, SITUACION, FECHA_PEDIDO, CALLE, CODIGO_POSTAL, POBLACION, PROVINCIA, PERSONA_CONTACTO, TELEFONO, 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, REF_TIENDA_WEB, FECHA_PREVISTA_ENVIO, NUM_COPIAS, NUM_CORREOS) AS SELECT PEDIDOS_CLIENTE.ID, PEDIDOS_CLIENTE.ID_EMPRESA, PEDIDOS_CLIENTE.ID_CLIENTE, PEDIDOS_CLIENTE.ID_DIRECCION, CONTACTOS.NOMBRE, PEDIDOS_CLIENTE.REFERENCIA, PEDIDOS_CLIENTE.REFERENCIA_CLIENTE, TRIM(V_PED_CLI_SITUACION.SITUACION), PEDIDOS_CLIENTE.FECHA_PEDIDO, PEDIDOS_CLIENTE.CALLE, PEDIDOS_CLIENTE.CODIGO_POSTAL, PEDIDOS_CLIENTE.POBLACION, PEDIDOS_CLIENTE.PROVINCIA, PEDIDOS_CLIENTE.PERSONA_CONTACTO, PEDIDOS_CLIENTE.TELEFONO, PEDIDOS_CLIENTE.OBSERVACIONES, PEDIDOS_CLIENTE.INCIDENCIAS, PEDIDOS_CLIENTE.INCIDENCIAS_ACTIVAS, PEDIDOS_CLIENTE.FECHA_ALTA, PEDIDOS_CLIENTE.FECHA_MODIFICACION, PEDIDOS_CLIENTE.USUARIO, PEDIDOS_CLIENTE.IMPORTE_NETO, PEDIDOS_CLIENTE.IMPORTE_PORTE, PEDIDOS_CLIENTE.DESCUENTO, PEDIDOS_CLIENTE.IMPORTE_DESCUENTO, PEDIDOS_CLIENTE.BASE_IMPONIBLE, PEDIDOS_CLIENTE.IVA, PEDIDOS_CLIENTE.IMPORTE_IVA, PEDIDOS_CLIENTE.IMPORTE_TOTAL, PEDIDOS_CLIENTE.ID_FORMA_PAGO, PEDIDOS_CLIENTE.REF_TIENDA_WEB, PEDIDOS_CLIENTE.FECHA_PREVISTA_ENVIO, IMPRESIONES.NUM_COPIAS, REGISTRO_CORREOS.NUM_CORREOS FROM V_PED_CLI_SITUACION INNER JOIN PEDIDOS_CLIENTE ON (PEDIDOS_CLIENTE.ID = V_PED_CLI_SITUACION.ID_PEDIDO) INNER JOIN CONTACTOS ON (PEDIDOS_CLIENTE.ID_CLIENTE = CONTACTOS.ID) LEFT JOIN IMPRESIONES ON ((IMPRESIONES.ID_TABLA = PEDIDOS_CLIENTE.ID) AND (IMPRESIONES.TABLA = 'PEDIDOSCLIENTE')) LEFT JOIN REGISTRO_CORREOS ON ((REGISTRO_CORREOS.ID_TABLA = PEDIDOS_CLIENTE.ID) AND (REGISTRO_CORREOS.TABLA = 'PEDIDOSCLIENTE')) ; CREATE VIEW V_PED_CLI_ART_PEND_PEDIR_PROV( ID_PEDIDO, ID_ARTICULO, CANT_PEDIDA_CLIENTE, ID_PROVEEDOR, CANT_PEDIDA_PROVEEDOR, CANT_PENDIENTE_PEDIR) AS SELECT V_PED_CLI_ARTICULOS.ID_PEDIDO, V_PED_CLI_ARTICULOS.ID_ARTICULO, V_PED_CLI_ARTICULOS.CANTIDAD_PENDIENTE AS CANT_PED_CLI, ARTICULOS.ID_PROVEEDOR, SUM(COALESCE(V_PED_PROV_ARTICULOS.CANTIDAD_PEDIDA, 0)) AS CANT_PED_PROV, V_PED_CLI_ARTICULOS.CANTIDAD_PENDIENTE - SUM(COALESCE(V_PED_PROV_ARTICULOS.CANTIDAD_PEDIDA, 0)) AS CANT_PEND_PEDIR FROM V_PED_CLI_ARTICULOS LEFT OUTER JOIN ARTICULOS ON (ARTICULOS.ID = V_PED_CLI_ARTICULOS.ID_ARTICULO) LEFT OUTER JOIN PEDIDOS_PROVEEDOR ON (PEDIDOS_PROVEEDOR.ID_PEDIDO_CLIENTE = V_PED_CLI_ARTICULOS.ID_PEDIDO) LEFT OUTER JOIN V_PED_PROV_ARTICULOS ON ((V_PED_PROV_ARTICULOS.ID_PEDIDO = PEDIDOS_PROVEEDOR.ID) AND (V_PED_PROV_ARTICULOS.ID_ARTICULO = V_PED_CLI_ARTICULOS.ID_ARTICULO)) WHERE (V_PED_CLI_ARTICULOS.ID_ARTICULO <> 0) AND (ARTICULOS.INVENTARIABLE = 1) GROUP BY V_PED_CLI_ARTICULOS.ID_PEDIDO, V_PED_CLI_ARTICULOS.ID_ARTICULO, V_PED_CLI_ARTICULOS.CANTIDAD_PENDIENTE, ARTICULOS.ID_PROVEEDOR HAVING V_PED_CLI_ARTICULOS.CANTIDAD_PENDIENTE - SUM(COALESCE(V_PED_PROV_ARTICULOS.CANTIDAD_PEDIDA, 0)) > 0; /******************************************************************************/ /**** Primary Keys ****/ /******************************************************************************/ ALTER TABLE IMPRESIONES ADD CONSTRAINT PK_IMPRESIONES PRIMARY KEY (ID); ALTER TABLE REGISTRO_CORREOS ADD CONSTRAINT PK_REGISTRO_CORREOS PRIMARY KEY (ID); 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 AGENTES_DATOS ADD CONSTRAINT PK_AGENTES_DATOS PRIMARY KEY (ID_AGENTE); 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 IMPRESIONES_IDX1 ON IMPRESIONES (ID_TABLA); CREATE INDEX IMPRESIONES_IDX2 ON IMPRESIONES (TABLA); CREATE INDEX REGISTRO_CORREOS_IDX1 ON REGISTRO_CORREOS (ID_TABLA); CREATE INDEX REGISTRO_CORREOS_IDX2 ON REGISTRO_CORREOS (TABLA); 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.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 ****/ /******************************************************************************/