This repository has been archived on 2024-11-28. You can view files and clone it, but cannot push or open issues or pull requests.
LuisLeon_FactuGES2/Database/scripts/factuges.sql

6230 lines
199 KiB
MySQL
Raw Permalink Normal View History

/******************************************************************************/
/**** 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 DIV
INTEGER,
INTEGER
RETURNS DOUBLE PRECISION BY VALUE
ENTRY_POINT 'IB_UDF_div' MODULE_NAME 'ib_udf';
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_DTOS_ART_ID;
SET GENERATOR GEN_CLIENTES_DTOS_ART_ID TO 1;
CREATE GENERATOR GEN_CLIENTES_GRUPOS_ID;
SET GENERATOR GEN_CLIENTES_GRUPOS_ID TO 1;
CREATE GENERATOR GEN_CLIENTES_TIPOS_ID;
SET GENERATOR GEN_CLIENTES_TIPOS_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_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_PROFORMA_ID;
SET GENERATOR GEN_FACTURAS_PROFORMA_ID TO 1;
CREATE GENERATOR GEN_FACTURAS_PROFORMA_DET_ID;
SET GENERATOR GEN_FACTURAS_PROFORMA_DET_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_TIPOS_DOCUMENTO_ID;
SET GENERATOR GEN_TIPOS_DOCUMENTO_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;
CREATE GENERATOR GEN_OBJETIVOS_ALB_ID;
SET GENERATOR GEN_OBJETIVOS_ALB_ID TO 1;
CREATE GENERATOR GEN_OBJETIVOS_FAC_ID;
SET GENERATOR GEN_OBJETIVOS_FAC_ID TO 1;
/******************************************************************************/
/**** Tables ****/
/******************************************************************************/
CREATE TABLE PERIODOS_AUX (
ID INTEGER,
PERIODO VARCHAR(20) COLLATE ES_ES,
VALOR SMALLINT,
DESCRIPCION VARCHAR(20) COLLATE ES_ES
);
CREATE TABLE 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 PAISES (
ID TIPO_ID NOT NULL,
ISO_NUM TIPO_ID NOT NULL,
ISO_DES1 VARCHAR(2) NOT NULL,
ISO_DES2 VARCHAR(3) NOT NULL,
DESCRIPCION VARCHAR(255) NOT NULL
);
CREATE TABLE IDIOMAS (
ID TIPO_ID NOT NULL,
ISO VARCHAR(2) NOT NULL,
DESCRIPCION VARCHAR(255) NOT NULL
);
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,
PAIS VARCHAR(255) COLLATE ES_ES
);
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_CLIENTE_FINAL 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,
ID_CLIENTE_FINAL TIPO_ID,
ID_TIPO_IVA TIPO_ID,
RECARGO_EQUIVALENCIA TIPO_BOOLEANO,
RE TIPO_PORCENTAJE,
IMPORTE_RE TIPO_IMPORTE,
FECHA_SERVICIO DATE
);
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,
TIPO_CLIENTE VARCHAR(255) COLLATE ES_ES,
SEPA TIPO_BOOLEANO DEFAULT 0 NOT NULL,
ID_CENTRAL TIPO_ID
);
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_DTOS_ARTICULOS (
ID TIPO_ID NOT NULL /* TIPO_ID = INTEGER */,
ID_CLIENTE TIPO_ID DEFAULT 0 NOT NULL /* TIPO_ID = INTEGER */,
ID_ARTICULO SMALLINT DEFAULT 0 NOT NULL,
DESCUENTO TIPO_PORCENTAJE DEFAULT 0 /* TIPO_PORCENTAJE = FLOAT */
);
CREATE TABLE CLIENTES_GRUPOS (
ID TIPO_ID NOT NULL,
DESCRIPCION VARCHAR(255)
);
CREATE TABLE CLIENTES_TIPOS (
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),
PAIS VARCHAR(255),
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),
AGENTE VARCHAR(255) COLLATE ES_ES,
PAIS VARCHAR(255) COLLATE ES_ES,
IDIOMA_ISO VARCHAR(2) COLLATE ES_ES,
ELIMINADO TIPO_BOOLEANO DEFAULT 0 NOT NULL
);
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,
PAIS VARCHAR(255) COLLATE ES_ES
);
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,
VALIDEZ_PRESUPUESTOS 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 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,
PAIS VARCHAR(255) COLLATE ES_ES
);
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_PROFORMA (
ID TIPO_ID NOT NULL /* TIPO_ID = INTEGER */,
ID_EMPRESA TIPO_ID /* TIPO_ID = INTEGER */,
REFERENCIA VARCHAR(255),
FECHA_FACTURA DATE,
FECHA_VENCIMIENTO DATE,
BASE_IMPONIBLE TIPO_IMPORTE /* TIPO_IMPORTE = NUMERIC(11,2) */,
DESCUENTO TIPO_PORCENTAJE /* TIPO_PORCENTAJE = FLOAT */,
IMPORTE_DESCUENTO TIPO_IMPORTE /* TIPO_IMPORTE = NUMERIC(11,2) */,
DESCRIPCION_DESCUENTO VARCHAR(255) COLLATE ES_ES,
IVA TIPO_PORCENTAJE /* TIPO_PORCENTAJE = FLOAT */,
IMPORTE_IVA TIPO_IMPORTE /* TIPO_IMPORTE = NUMERIC(11,2) */,
RE TIPO_PORCENTAJE /* TIPO_PORCENTAJE = FLOAT */,
IMPORTE_RE TIPO_IMPORTE /* TIPO_IMPORTE = NUMERIC(11,2) */,
IMPORTE_TOTAL TIPO_IMPORTE /* TIPO_IMPORTE = NUMERIC(11,2) */,
OBSERVACIONES TIPO_NOTAS /* TIPO_NOTAS = BLOB SUB_TYPE 1 SEGMENT SIZE 80 */,
ID_CLIENTE TIPO_ID /* TIPO_ID = INTEGER */,
NIF_CIF VARCHAR(15),
NOMBRE VARCHAR(255),
ID_DIRECCION TIPO_ID /* TIPO_ID = INTEGER */,
CALLE VARCHAR(255),
POBLACION VARCHAR(255),
PROVINCIA VARCHAR(255),
CODIGO_POSTAL VARCHAR(10),
FECHA_ALTA TIMESTAMP,
FECHA_MODIFICACION TIMESTAMP,
USUARIO TIPO_USUARIO /* TIPO_USUARIO = VARCHAR(30) */,
ID_FORMA_PAGO TIPO_ID /* TIPO_ID = INTEGER */,
IMPORTE_NETO TIPO_IMPORTE /* TIPO_IMPORTE = NUMERIC(11,2) */,
IMPORTE_PORTE TIPO_IMPORTE /* TIPO_IMPORTE = NUMERIC(11,2) */,
ID_TIPO_IVA TIPO_ID /* TIPO_ID = INTEGER */,
RECARGO_EQUIVALENCIA TIPO_BOOLEANO /* TIPO_BOOLEANO = SMALLINT */,
DATOS_BANCARIOS VARCHAR(255),
SITUACION VARCHAR(255),
ID_PEDIDO TIPO_ID /* TIPO_ID = INTEGER */,
ID_FACTURA_FINAL TIPO_ID /* TIPO_ID = INTEGER */,
PAIS VARCHAR(255) COLLATE ES_ES,
ID_PRESUPUESTO TIPO_ID /* TIPO_ID = INTEGER */
);
CREATE TABLE FACTURAS_PROFORMA_DETALLES (
ID TIPO_ID NOT NULL /* TIPO_ID = INTEGER */,
ID_FACTURA TIPO_ID NOT NULL /* TIPO_ID = INTEGER */,
POSICION INTEGER,
TIPO_DETALLE VARCHAR(25),
ID_ARTICULO TIPO_ID /* TIPO_ID = INTEGER */,
CONCEPTO TIPO_CONCEPTO /* TIPO_CONCEPTO = VARCHAR(2000) */,
CANTIDAD TIPO_CANTIDAD /* TIPO_CANTIDAD = NUMERIC(11,2) */,
UNIDAD_MEDIDA VARCHAR(255),
IMPORTE_UNIDAD TIPO_IMPORTE /* TIPO_IMPORTE = NUMERIC(11,2) */,
DESCUENTO TIPO_PORCENTAJE /* TIPO_PORCENTAJE = FLOAT */,
IMPORTE_PORTE TIPO_IMPORTE /* TIPO_IMPORTE = NUMERIC(11,2) */,
IMPORTE_TOTAL TIPO_IMPORTE /* TIPO_IMPORTE = NUMERIC(11,2) */,
VISIBLE TIPO_BOOLEANO /* TIPO_BOOLEANO = SMALLINT */,
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),
ID_PRESUPUESTO TIPO_ID,
TIPO_PEDIDO VARCHAR(255) COLLATE ES_ES,
PAIS VARCHAR(255) COLLATE ES_ES
);
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,
REFERENCIA_CLIENTE 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 TIPOS_DOCUMENTO (
ID TIPO_ID NOT NULL /* TIPO_ID = INTEGER */,
DESCRIPCION VARCHAR(255)
);
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,
FECHA_VIGENCIA DATE,
TIPO_PRESUPUESTO VARCHAR(255) COLLATE ES_ES,
ID_PEDIDO TIPO_ID,
ID_TIPO_IVA TIPO_ID
);
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)
);
CREATE TABLE AGENTES_OBJETIVOS_ALB (
ID TIPO_ID NOT NULL,
ID_AGENTE TIPO_ID,
ANO SMALLINT,
MES SMALLINT,
UNIDADES_OBJETIVO SMALLINT,
IMPORTE_OBJETIVO TIPO_IMPORTE
);
CREATE TABLE AGENTES_OBJETIVOS_FAC (
ID TIPO_ID NOT NULL,
ID_AGENTE TIPO_ID,
ANO SMALLINT,
MES SMALLINT,
UNIDADES_OBJETIVO SMALLINT,
IMPORTE_OBJETIVO TIPO_IMPORTE
);
/******************************************************************************/
/**** Views ****/
/******************************************************************************/
CREATE VIEW V_EMPRESAS(
ID,
NIF_CIF,
NOMBRE,
RAZON_SOCIAL,
CALLE,
POBLACION,
PROVINCIA,
CODIGO_POSTAL,
TELEFONO_1,
TELEFONO_2,
MOVIL_1,
MOVIL_2,
FAX,
EMAIL_1,
EMAIL_2,
PAGINA_WEB,
NOTAS,
FECHA_ALTA,
FECHA_MODIFICACION,
USUARIO,
LOGOTIPO,
REGISTRO_MERCANTIL,
PARAM_TIEMPO,
PARAM_MARGEN,
ID_TIPO_IVA,
ID_FORMA_PAGO,
ID_ALMACEN,
ID_PERFIL,
VALIDEZ_PRESUPUESTOS)
AS
select E.ID, E.NIF_CIF, E.NOMBRE, E.RAZON_SOCIAL, E.CALLE, E.POBLACION,
E.PROVINCIA, E.CODIGO_POSTAL, E.TELEFONO_1, E.TELEFONO_2, E.MOVIL_1, E.MOVIL_2,
E.FAX, E.EMAIL_1, E.EMAIL_2, E.PAGINA_WEB, E.NOTAS, E.FECHA_ALTA, E.FECHA_MODIFICACION,
E.USUARIO, E.LOGOTIPO, E.REGISTRO_MERCANTIL, E.PARAM_TIEMPO, E.PARAM_MARGEN, E.ID_TIPO_IVA,
E.ID_FORMA_PAGO, E.ID_ALMACEN, EP.id_perfil, E.VALIDEZ_PRESUPUESTOS
from empresas E
left join empresas_PERFILES EP on (EP.ID_EMPRESA = E.ID)
;
/* 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<61>logo con el fin de no falsear la situaci<63>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 (COALESCE(ALBARANES_PROVEEDOR_DETALLES.ID_ARTICULO, 0)=0) 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<61>logo con el fin de no falsear la situaci<63>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,
PAIS)
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,
ALBARANES_CLIENTE.PAIS
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,
ID_CLIENTE_FINAL,
NOMBRE,
NOMBRE_CLIENTE_FINAL,
ID_DIRECCION,
PERSONA_CONTACTO_PROV,
FECHA_ALBARAN,
REFERENCIA,
REFERENCIA_PROVEEDOR,
TIPO,
SITUACION,
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,
ID_TIPO_IVA,
RECARGO_EQUIVALENCIA,
RE,
IMPORTE_RE,
FECHA_SERVICIO)
AS
SELECT
ALBARANES_PROVEEDOR.ID,
ALBARANES_PROVEEDOR.ID_EMPRESA,
ALBARANES_PROVEEDOR.ID_PROVEEDOR,
ALBARANES_PROVEEDOR.ID_CLIENTE_FINAL,
PROVEEDORES.NOMBRE,
CLIENTES.NOMBRE as NOMBRE_CLI_FINAL,
ALBARANES_PROVEEDOR.ID_DIRECCION,
ALBARANES_PROVEEDOR.PERSONA_CONTACTO_PROV,
ALBARANES_PROVEEDOR.FECHA_ALBARAN,
ALBARANES_PROVEEDOR.REFERENCIA,
ALBARANES_PROVEEDOR.REFERENCIA_PROVEEDOR,
ALBARANES_PROVEEDOR.TIPO,
case when (ALBARANES_PROVEEDOR.FECHA_SERVICIO is null) then 'PENDIENTE'
else 'REALIZADO'
end as SITUACION,
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,
ALBARANES_PROVEEDOR.ID_TIPO_IVA,
ALBARANES_PROVEEDOR.RECARGO_EQUIVALENCIA,
ALBARANES_PROVEEDOR.RE,
ALBARANES_PROVEEDOR.IMPORTE_RE,
ALBARANES_PROVEEDOR.FECHA_SERVICIO
FROM
ALBARANES_PROVEEDOR
INNER JOIN CONTACTOS PROVEEDORES ON (PROVEEDORES.ID = ALBARANES_PROVEEDOR.ID_PROVEEDOR)
LEFT JOIN CONTACTOS CLIENTES ON (CLIENTES.ID = ALBARANES_PROVEEDOR.ID_CLIENTE_FINAL)
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 <20>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<63>n de articulos de toda la aplicaci<63>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,
PAIS,
IDIOMA_ISO,
IDIOMA,
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.PAIS,
CONTACTOS.IDIOMA_ISO,
IDIOMAS.DESCRIPCION,
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)
left JOIN IDIOMAS ON (IDIOMAS.ISO =
CONTACTOS.IDIOMA_ISO)
;
/* View: V_CLIENTES */
CREATE VIEW V_CLIENTES(
ID,
ID_CATEGORIA,
NIF_CIF,
NOMBRE,
PERSONA_CONTACTO,
CALLE,
POBLACION,
PROVINCIA,
CODIGO_POSTAL,
PAIS,
IDIOMA_ISO,
IDIOMA,
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,
TIPO_CLIENTE,
SEPA,
ID_CENTRAL)
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.PAIS,
V_CONTACTOS.IDIOMA_ISO,
V_CONTACTOS.IDIOMA,
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,
CLIENTES_DATOS.TIPO_CLIENTE,
CLIENTES_DATOS.SEPA,
CLIENTES_DATOS.ID_CENTRAL
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
;
/* View: V_EMPLEADOS */
CREATE VIEW V_EMPLEADOS(
ID,
ID_CATEGORIA,
NIF_CIF,
NOMBRE,
PERSONA_CONTACTO,
CALLE,
POBLACION,
PROVINCIA,
CODIGO_POSTAL,
PAIS,
IDIOMA_ISO,
IDIOMA,
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.PAIS,
V_CONTACTOS.IDIOMA_ISO,
V_CONTACTOS.IDIOMA,
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
;
CREATE VIEW V_AGENTES(
ID,
ID_CATEGORIA,
NIF_CIF,
NOMBRE,
PERSONA_CONTACTO,
CALLE,
POBLACION,
PROVINCIA,
CODIGO_POSTAL,
PAIS,
IDIOMA_ISO,
IDIOMA,
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.PAIS,
V_CONTACTOS.IDIOMA_ISO,
V_CONTACTOS.IDIOMA,
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_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
;
CREATE VIEW V_REC_CLI_PAGOS(
ID_REC,
ID_PAG)
AS
SELECT RECIBOS_CLIENTE.ID,
CASE WHEN RECIBOS_CLIENTE.ID_RECIBO_COMPENSADO IS NULL THEN PAGOS_CLIENTE.ID_RECIBO
ELSE PAGOS_COMPENSADOS.ID_RECIBO
END
FROM RECIBOS_CLIENTE
LEFT JOIN PAGOS_CLIENTE ON (PAGOS_CLIENTE.ID_RECIBO = RECIBOS_CLIENTE.ID)
LEFT JOIN PAGOS_CLIENTE PAGOS_COMPENSADOS ON (PAGOS_COMPENSADOS.ID_RECIBO = RECIBOS_CLIENTE.ID_RECIBO_COMPENSADO)
;
/* View: V_REC_CLI_SITUACION */
CREATE VIEW V_REC_CLI_SITUACION(
ID_RECIBO,
SITUACION)
AS
SELECT RECIBOS_CLIENTE.ID,
CASE WHEN (COUNT(V_REC_CLI_PAGOS.ID_PAG)=0) THEN 'PENDIENTE'
WHEN (MOD(COUNT(V_REC_CLI_PAGOS.ID_PAG), 2)=0) THEN 'DEVUELTO'
ELSE 'COBRADO'
END
FROM RECIBOS_CLIENTE
LEFT JOIN V_REC_CLI_PAGOS
ON (V_REC_CLI_PAGOS.ID_REC = 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
;
CREATE VIEW V_REC_PRO_PAGOS(
ID_REC,
ID_PAG)
AS
SELECT RECIBOS_PROVEEDOR.ID,
CASE WHEN RECIBOS_PROVEEDOR.ID_RECIBO_COMPENSADO IS NULL THEN PAGOS_PROVEEDOR.ID_RECIBO
ELSE PAGOS_COMPENSADOS.ID_RECIBO
END
FROM RECIBOS_PROVEEDOR
LEFT JOIN PAGOS_PROVEEDOR ON (PAGOS_PROVEEDOR.ID_RECIBO = RECIBOS_PROVEEDOR.ID)
LEFT JOIN PAGOS_PROVEEDOR PAGOS_COMPENSADOS ON (PAGOS_COMPENSADOS.ID_RECIBO = RECIBOS_PROVEEDOR.ID_RECIBO_COMPENSADO)
;
/* View: V_REC_PRO_SITUACION */
CREATE VIEW V_REC_PRO_SITUACION(
ID_RECIBO,
SITUACION)
AS
SELECT RECIBOS_PROVEEDOR.ID,
CASE WHEN (COUNT(V_REC_PRO_PAGOS.ID_PAG)=0) THEN 'PENDIENTE'
WHEN (MOD(COUNT(V_REC_PRO_PAGOS.ID_PAG), 2)=0) THEN 'DEVUELTO'
ELSE 'PAGADO'
END
FROM RECIBOS_PROVEEDOR
LEFT JOIN V_REC_PRO_PAGOS
ON (V_REC_PRO_PAGOS.ID_REC = 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,
DESCRIPCION_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,
ID_ALBARAN,
PAIS)
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.DESCRIPCION_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,
Null as ID_ALBARAN, /*CAMPO FICTICIO QUE SE A<>ADE PARA PODER COMPARTIR Clase de negocio IBizFacturaProveedor, el modulo de facturas proveedor y el modulo procesopresupuestocliente*/
FACTURAS_CLIENTE.PAIS
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'))
;
CREATE VIEW V_FACTURAS_PROFORMA(
ID,
ID_EMPRESA,
REFERENCIA,
FECHA_FACTURA,
FECHA_VENCIMIENTO,
SITUACION,
BASE_IMPONIBLE,
DESCUENTO,
IMPORTE_DESCUENTO,
DESCRIPCION_DESCUENTO,
IVA,
IMPORTE_IVA,
RE,
IMPORTE_RE,
IMPORTE_TOTAL,
OBSERVACIONES,
ID_CLIENTE,
NIF_CIF,
NOMBRE,
ID_DIRECCION,
CALLE,
POBLACION,
PROVINCIA,
CODIGO_POSTAL,
FECHA_ALTA,
FECHA_MODIFICACION,
USUARIO,
ID_FORMA_PAGO,
RECARGO_EQUIVALENCIA,
ID_TIPO_IVA,
IMPORTE_NETO,
IMPORTE_PORTE,
NUM_COPIAS,
NUM_CORREOS,
DATOS_BANCARIOS,
ID_PRESUPUESTO,
ID_PEDIDO,
REF_PRE_CLIENTE,
REF_PRE_DEL_CLIENTE,
REF_PED_CLIENTE,
REF_PED_DEL_CLIENTE,
PAIS)
AS
SELECT FACTURAS_PROFORMA.ID,
FACTURAS_PROFORMA.ID_EMPRESA,
FACTURAS_PROFORMA.REFERENCIA,
FACTURAS_PROFORMA.FECHA_FACTURA,
FACTURAS_PROFORMA.FECHA_VENCIMIENTO,
FACTURAS_PROFORMA.SITUACION,
FACTURAS_PROFORMA.BASE_IMPONIBLE,
FACTURAS_PROFORMA.DESCUENTO,
FACTURAS_PROFORMA.IMPORTE_DESCUENTO,
FACTURAS_PROFORMA.DESCRIPCION_DESCUENTO,
FACTURAS_PROFORMA.IVA,
FACTURAS_PROFORMA.IMPORTE_IVA,
FACTURAS_PROFORMA.RE,
FACTURAS_PROFORMA.IMPORTE_RE,
FACTURAS_PROFORMA.IMPORTE_TOTAL,
FACTURAS_PROFORMA.OBSERVACIONES,
FACTURAS_PROFORMA.ID_CLIENTE,
FACTURAS_PROFORMA.NIF_CIF,
FACTURAS_PROFORMA.NOMBRE,
FACTURAS_PROFORMA.ID_DIRECCION,
FACTURAS_PROFORMA.CALLE,
FACTURAS_PROFORMA.POBLACION,
FACTURAS_PROFORMA.PROVINCIA,
FACTURAS_PROFORMA.CODIGO_POSTAL,
FACTURAS_PROFORMA.FECHA_ALTA,
FACTURAS_PROFORMA.FECHA_MODIFICACION,
FACTURAS_PROFORMA.USUARIO,
FACTURAS_PROFORMA.ID_FORMA_PAGO,
FACTURAS_PROFORMA.RECARGO_EQUIVALENCIA,
FACTURAS_PROFORMA.ID_TIPO_IVA,
FACTURAS_PROFORMA.IMPORTE_NETO,
FACTURAS_PROFORMA.IMPORTE_PORTE,
IMPRESIONES.NUM_COPIAS,
REGISTRO_CORREOS.NUM_CORREOS,
FACTURAS_PROFORMA.DATOS_BANCARIOS,
FACTURAS_PROFORMA.ID_PRESUPUESTO,
FACTURAS_PROFORMA.ID_PEDIDO,
PRESUPUESTOS_CLIENTE.REFERENCIA,
PRESUPUESTOS_CLIENTE.REFERENCIA_CLIENTE,
PEDIDOS_CLIENTE.REFERENCIA,
PEDIDOS_CLIENTE.REFERENCIA_CLIENTE,
FACTURAS_PROFORMA.PAIS
FROM FACTURAS_PROFORMA
LEFT JOIN PRESUPUESTOS_CLIENTE
ON (PRESUPUESTOS_CLIENTE.ID = FACTURAS_PROFORMA.ID_PRESUPUESTO)
LEFT JOIN PEDIDOS_CLIENTE
ON (PEDIDOS_CLIENTE.ID = FACTURAS_PROFORMA.ID_PEDIDO)
LEFT JOIN IMPRESIONES
ON ((IMPRESIONES.ID_TABLA = FACTURAS_PROFORMA.ID) AND (IMPRESIONES.TABLA = 'FACTURASPROFORMA'))
LEFT JOIN REGISTRO_CORREOS
ON ((REGISTRO_CORREOS.ID_TABLA = FACTURAS_PROFORMA.ID) AND (REGISTRO_CORREOS.TABLA = 'FACTURASPROFORMA'))
;
CREATE VIEW V_ALBARANES_CLI_FACTURADOS(
ID_ALBARAN,
ID_FACTURA)
AS
select ID, ID_FACTURA
from albaranes_cliente
where id_FACTURA is not null
;
CREATE VIEW V_FACTURAS_CLI_DE_ALBARANES(
ID,
ID_EMPRESA,
REFERENCIA,
TIPO,
ID_COMISION_LIQUIDADA,
FECHA_FACTURA,
FECHA_VENCIMIENTO,
FECHA_RETENCION,
SITUACION,
BASE_IMPONIBLE,
DESCUENTO,
IMPORTE_DESCUENTO,
DESCRIPCION_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,
ID_ALBARAN)
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.DESCRIPCION_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,
V_ALBARANES_CLI_FACTURADOS.ID_ALBARAN
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'))
LEFT JOIN V_ALBARANES_CLI_FACTURADOS
ON (V_ALBARANES_CLI_FACTURADOS.ID_FACTURA = FACTURAS_CLIENTE.ID)
WHERE V_ALBARANES_CLI_FACTURADOS.ID_ALBARAN IS NOT NULL
;
/* 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,
ID_ALBARAN)
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,
Null as ID_ALBARAN /*CAMPO FICTICIO QUE SE A<>ADE PARA PODER COMPARTIR Clase de negocio IBizFacturaProveedor, el modulo de facturas proveedor y el modulo procesopresupuestocliente*/
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'))
;
CREATE VIEW V_ALBARANES_PROV_FACTURADOS(
ID_ALBARAN,
ID_FACTURA)
AS
select ID, ID_FACTURA
from albaranes_proveedor
where id_FACTURA is not null
;
CREATE VIEW V_FACTURAS_PROV_DE_ALBARANES(
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,
ID_ALBARAN)
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,
V_ALBARANES_PROV_FACTURADOS.ID_ALBARAN
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'))
LEFT JOIN V_ALBARANES_PROV_FACTURADOS
ON (V_ALBARANES_PROV_FACTURADOS.ID_FACTURA = FACTURAS_PROVEEDOR.ID)
WHERE V_ALBARANES_PROV_FACTURADOS.ID_ALBARAN IS NOT NULL
;
/* 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<63>n de cliente ' || ALBARANES_CLIENTE.REFERENCIA
ELSE 'Albar<EFBFBD>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<63>n ' || ALBARANES_PROVEEDOR.REFERENCIA
ELSE 'Albar<EFBFBD>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<EFBFBD>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_ALB,
ID_EMPRESA,
REFERENCIA_ALB,
SITUACION_ALB,
FECHA_PREVISTA_ENVIO_ALB,
ID_ALMACEN_ALB,
ALMACEN_ALB,
ID_CLIENTE_ALB,
CLIENTE_ALB,
ID_ART,
FAMILIA_ART,
REFERENCIA_ART,
REFERENCIA_PROV_ART,
DESCRIPCION_ART,
CANTIDAD_ART)
AS
SELECT
ALBARANES_CLIENTE_DETALLES.ID_ALBARAN,
ALBARANES_CLIENTE.ID_EMPRESA,
ALBARANES_CLIENTE.REFERENCIA,
V_ALB_CLI_SITUACION.SITUACION,
ALBARANES_CLIENTE.FECHA_PREVISTA_ENVIO,
ALBARANES_CLIENTE.ID_ALMACEN,
ALMACENES.NOMBRE AS ALMACEN,
ALBARANES_CLIENTE.ID_CLIENTE,
CONTACTOS.NOMBRE AS CLIENTE,
ARTICULOS.ID,
ARTICULOS.FAMILIA,
ARTICULOS.REFERENCIA,
ARTICULOS.REFERENCIA_PROV,
ARTICULOS.DESCRIPCION,
SUM(COALESCE(ALBARANES_CLIENTE_DETALLES.CANTIDAD, 0))
FROM ALBARANES_CLIENTE_DETALLES
LEFT JOIN ALBARANES_CLIENTE
ON (ALBARANES_CLIENTE_DETALLES.ID_ALBARAN = ALBARANES_CLIENTE.ID)
LEFT JOIN CONTACTOS
ON (ALBARANES_CLIENTE.ID_CLIENTE = CONTACTOS.ID)
LEFT JOIN ALMACENES
ON (ALBARANES_CLIENTE.ID_ALMACEN = ALMACENES.ID)
LEFT JOIN ARTICULOS
ON (ALBARANES_CLIENTE_DETALLES.ID_ARTICULO = ARTICULOS.ID)
LEFT JOIN V_ALB_CLI_SITUACION
ON (ALBARANES_CLIENTE_DETALLES.ID_ALBARAN = V_ALB_CLI_SITUACION.ID)
/*Quitamos aquellos detalles que no tengan cabecera existente
aquellos que no se correspondan con un almac<EFBFBD>n es decir albaranes libres
que el albaran este pendiente (los articulos estan reservados en el almacen)
aquellos que no se correspondan con art<EFBFBD>culos existentes en el catalogo
y que no sean inventariables*/
WHERE (ALBARANES_CLIENTE.ID IS NOT NULL)
AND (ALBARANES_CLIENTE.ID_ALMACEN IS NOT NULL)
AND (V_ALB_CLI_SITUACION.SITUACION = 'PENDIENTE')
AND (ARTICULOS.ID is not null)
AND (ARTICULOS.ELIMINADO = 0)
AND (ARTICULOS.INVENTARIABLE = 1)
GROUP BY
ALBARANES_CLIENTE_DETALLES.ID_ALBARAN,
ALBARANES_CLIENTE.ID_EMPRESA,
ALBARANES_CLIENTE.REFERENCIA,
V_ALB_CLI_SITUACION.SITUACION,
ALBARANES_CLIENTE.FECHA_PREVISTA_ENVIO,
ALBARANES_CLIENTE.ID_ALMACEN,
ALMACENES.NOMBRE,
ALBARANES_CLIENTE.ID_CLIENTE,
CONTACTOS.NOMBRE,
ARTICULOS.ID,
ARTICULOS.FAMILIA,
ARTICULOS.REFERENCIA,
ARTICULOS.REFERENCIA_PROV,
ARTICULOS.DESCRIPCION;
;
/* 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 (COALESCE(PEDIDOS_PROVEEDOR_DETALLES.ID_ARTICULO, 0) = 0) 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<61>logo con el fin de no falsear la situaci<63>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_PROV,
REFERENCIA_FAB,
UNIDAD_MEDIDA,
PRECIO_NETO,
STOCK,
UNIDADES_ALMACEN,
COSTE_UNIDADES,
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_PROV,
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_PROV,
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,
REFERENCIA_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.REFERENCIA_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,
PERSONA_CONTACTO,
DESCRIPCION_BONIFICACION,
IMPORTE_BONIFICACION,
FECHA_VIGENCIA,
TIPO_PRESUPUESTO,
ID_TIPO_IVA,
ID_PEDIDO,
REFERENCIA_PEDIDO_CLIENTE,
ID_AGENTE,
AGENTE,
NUM_COPIAS,
NUM_CORREOS)
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.PERSONA_CONTACTO,
PRESUPUESTOS_CLIENTE.DESCRIPCION_BONIFICACION,
PRESUPUESTOS_CLIENTE.IMPORTE_BONIFICACION,
PRESUPUESTOS_CLIENTE.FECHA_VIGENCIA,
PRESUPUESTOS_CLIENTE.TIPO_PRESUPUESTO,
PRESUPUESTOS_CLIENTE.ID_TIPO_IVA,
PRESUPUESTOS_CLIENTE.ID_PEDIDO,
PEDIDOS_CLIENTE.REFERENCIA,
CLIENTES_DATOS.ID_AGENTE,
AGENTES.NOMBRE,
IMPRESIONES.NUM_COPIAS,
REGISTRO_CORREOS.NUM_CORREOS
FROM
PRESUPUESTOS_CLIENTE
INNER JOIN CONTACTOS ON (CONTACTOS.ID = PRESUPUESTOS_CLIENTE.ID_CLIENTE)
LEFT JOIN PEDIDOS_CLIENTE ON (PEDIDOS_CLIENTE.ID = PRESUPUESTOS_CLIENTE.ID_PEDIDO)
LEFT OUTER JOIN CLIENTES_DATOS ON (CLIENTES_DATOS.ID_CLIENTE = PRESUPUESTOS_CLIENTE.ID_CLIENTE)
LEFT OUTER JOIN CONTACTOS AGENTES ON (AGENTES.ID = CLIENTES_DATOS.ID_AGENTE)
LEFT JOIN IMPRESIONES
ON ((IMPRESIONES.ID_TABLA = PRESUPUESTOS_CLIENTE.ID) AND (IMPRESIONES.TABLA = 'PRESUPUESTOSCLIENTE'))
LEFT JOIN REGISTRO_CORREOS
ON ((REGISTRO_CORREOS.ID_TABLA = PRESUPUESTOS_CLIENTE.ID) AND (REGISTRO_CORREOS.TABLA = 'PRESUPUESTOSCLIENTE'))
;
/* View: V_PROVEEDORES */
CREATE VIEW V_PROVEEDORES(
ID,
ID_CATEGORIA,
NIF_CIF,
NOMBRE,
PERSONA_CONTACTO,
CALLE,
POBLACION,
PROVINCIA,
CODIGO_POSTAL,
PAIS,
IDIOMA_ISO,
IDIOMA,
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.PAIS,
V_CONTACTOS.IDIOMA_ISO,
V_CONTACTOS.IDIOMA,
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<72>culos de un mismo pedido (ya que en un pedido puede existir varias lineas con el mismo art<72>culo).
Se quitan todos los art<EFBFBD>culos que no tengamos en cat<EFBFBD>logo (ID_ARTICULO nulo, lineas de detalle libres) -> esta premisa la cambiamos para que
no se falsee la situaci<EFBFBD>n de los pedidos, asi pues todo articulo que no este en el cat<EFBFBD>logo lo pondremos con ID_ARTICULO 0.
Se quitan tambi<EFBFBD>n aquellos que no se<EFBFBD>n inventariables -> esta premisa nos falsear<EFBFBD>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<61>logo con el fin de no falsear la situaci<63>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<72>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<6C> o va a salir ya que un mismo pedido podr<64>a tener varios albaranes con distintos almacenes de origen*/
/*Aquellos articulos que no tengan ID_PEDIDO es porque el albar<61>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<72>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<69>a la consulta de la segunda disparando tiempos, por ello teniendo las*/
/*dos vistas ejecutadas hacemos una union obteniendo todos los art<72>culos del pedido, tanto recibidos como pendientes,*/
/*luego haremos la agrupaci<63>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<72>culos del pedido de cliente*/
/*Despreciamos aquellas tuplas cuya cantidad pedida sea null, porque son articulos a<>adidos en el albar<61>n que*/
/*no est<73>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<72>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<63>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,
CASE when (CLIENTES_DTOS_ARTICULOS.DESCUENTO IS not NULL) then CLIENTES_DTOS_ARTICULOS.DESCUENTO
else CLIENTES_DTOS_PROVEEDORES.DESCUENTO
end as DESCUENTO,
CASE when (CLIENTES_DTOS_ARTICULOS.DESCUENTO IS not NULL) then (ARTICULOS.PRECIO_COSTE * CLIENTES_DTOS_ARTICULOS.DESCUENTO)/100
else (ARTICULOS.PRECIO_COSTE * CLIENTES_DTOS_PROVEEDORES.DESCUENTO)/100
end 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))
LEFT OUTER JOIN CLIENTES_DTOS_ARTICULOS
ON ((CLIENTES_DTOS_ARTICULOS.ID_ARTICULO = ARTICULOS.ID)
AND (CLIENTES_DTOS_ARTICULOS.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_PED_CLI_SITUACION_X_ALBARANES(
ID_PEDIDO,
NUM_ALBARANES,
SITUACION)
AS
select ID_PEDIDO, count(ID), 'ALBARANADO' as SITUACION
from albaranes_cliente
where ID_PEDIDO is not null
group by 1
;
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,
TIPO_PEDIDO,
PAIS,
REFERENCIA_FACTURA_PROFORMA,
ID_AGENTE,
AGENTE)
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 (CASE
when V_PED_CLI_SITUACION_X_ALBARANES.id_pedido is not null then V_PED_CLI_SITUACION_X_ALBARANES.SITUACION
else 'PENDIENTE'
end) as SITUACION,
/* TRIM(V_PED_CLI_SITUACION2.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,
PEDIDOS_CLIENTE.TIPO_PEDIDO,
PEDIDOS_CLIENTE.PAIS,
FACTURAS_PROFORMA.REFERENCIA,
CLIENTES_DATOS.ID_AGENTE,
AGENTES.NOMBRE
FROM
PEDIDOS_CLIENTE
LEFT JOIN V_PED_CLI_SITUACION_X_ALBARANES ON (V_PED_CLI_SITUACION_X_ALBARANES.ID_PEDIDO = PEDIDOS_CLIENTE.ID)
LEFT JOIN FACTURAS_PROFORMA ON (FACTURAS_PROFORMA.ID_PEDIDO = PEDIDOS_CLIENTE.ID)
/* 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 OUTER JOIN CLIENTES_DATOS ON (CLIENTES_DATOS.ID_CLIENTE = PEDIDOS_CLIENTE.ID_CLIENTE)
LEFT OUTER JOIN CONTACTOS AGENTES ON (AGENTES.ID = CLIENTES_DATOS.ID_AGENTE)
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;
CREATE VIEW V_COMISIONES(
ID, ID_EMPRESA, REFERENCIA, ID_AGENTE, DESCRIPCION, FECHA, IMPORTE_TOTAL, USUARIO, NOMBRE
)
AS
SELECT
COMISIONES_LIQUIDADAS.ID, COMISIONES_LIQUIDADAS.ID_EMPRESA,
COMISIONES_LIQUIDADAS.REFERENCIA, COMISIONES_LIQUIDADAS.ID_AGENTE,
COMISIONES_LIQUIDADAS.DESCRIPCION, COMISIONES_LIQUIDADAS.FECHA,
COMISIONES_LIQUIDADAS.IMPORTE_TOTAL, COMISIONES_LIQUIDADAS.USUARIO,
CONTACTOS.NOMBRE
FROM COMISIONES_LIQUIDADAS
LEFT JOIN CONTACTOS ON (CONTACTOS.ID = COMISIONES_LIQUIDADAS.ID_AGENTE);
CREATE VIEW V_AGENTES_COMISIONES_DET_FAC(
ID_FACTURA,
ID_EMPRESA,
FECHA,
REFERENCIA,
SITUACION,
ID_COMISION_LIQUIDADA,
ID_CLIENTE,
ID_AGENTE,
ID_ARTICULO,
ID_PROVEEDOR,
IMPORTE_TOTAL,
COMISION,
IMPORTE_COMISION)
AS
SELECT V_FACTURAS_CLIENTE.ID,
V_FACTURAS_CLIENTE.ID_EMPRESA,
V_FACTURAS_CLIENTE.FECHA_FACTURA,
V_FACTURAS_CLIENTE.REFERENCIA,
V_FACTURAS_CLIENTE.SITUACION,
V_FACTURAS_CLIENTE.ID_COMISION_LIQUIDADA,
V_FACTURAS_CLIENTE.ID_CLIENTE,
V_FACTURAS_CLIENTE.ID_AGENTE,
FACTURAS_CLIENTE_DETALLES.ID_ARTICULO, ARTICULOS.ID_PROVEEDOR,
FACTURAS_CLIENTE_DETALLES.IMPORTE_TOTAL, COALESCE(AGENTES_COMISIONES.COMISION, 0) as COMISION,
(CASE COALESCE(AGENTES_COMISIONES.COMISION, 0) WHEN 0 THEN 0
ELSE ((FACTURAS_CLIENTE_DETALLES.IMPORTE_TOTAL * AGENTES_COMISIONES.COMISION)/100) END) as IMPORTE_COMISION
FROM V_FACTURAS_CLIENTE
LEFT JOIN FACTURAS_CLIENTE_DETALLES ON (FACTURAS_CLIENTE_DETALLES.ID_FACTURA = V_FACTURAS_CLIENTE.ID)
LEFT JOIN ARTICULOS ON (ARTICULOS.ID = FACTURAS_CLIENTE_DETALLES.ID_ARTICULO)
LEFT JOIN AGENTES_COMISIONES ON ((AGENTES_COMISIONES.ID_AGENTE = V_FACTURAS_CLIENTE.ID_AGENTE)
AND (AGENTES_COMISIONES.ID_PROVEEDOR = ARTICULOS.ID_PROVEEDOR))
WHERE (FACTURAS_CLIENTE_DETALLES.TIPO_DETALLE = 'Concepto')
AND (ARTICULOS.ID is not null)
AND (ARTICULOS.COMISIONABLE = 1)
;
CREATE VIEW V_INF_FAC_CLIENTE_TOTAL_ANO(
ID_EMPRESA,
ANO,
BASE_IMPONIBLE,
IMPORTE_TOTAL)
AS
select ID_EMPRESA, EXTRACT(YEAR FROM FECHA_FACTURA) as ANO, SUM(BASE_IMPONIBLE) as BASE_IMPONIBLE, SUM(IMPORTE_TOTAL) as IMPORTE_TOTAL
from FACTURAS_CLIENTE
group by 1,2
;
CREATE VIEW V_INF_ALB_CLI_IMPORTE_TOTAL_ANO(
ID_EMPRESA,
ANO,
IMPORTE_TOTAL)
AS
select ID_EMPRESA, EXTRACT(YEAR FROM FECHA_ALBARAN) as ANO, SUM(IMPORTE_TOTAL) as IMPORTE_TOTAL
from ALBARANES_CLIENTE
where tipo = 'A'
group by 1,2
;
CREATE VIEW V_INF_ALB_CLI_INCIDEN_TOTAL_ANO(
ID_EMPRESA,
ANO,
INCIDENCIAS_TOTALES)
AS
select ID_EMPRESA, EXTRACT(YEAR FROM FECHA_ALBARAN) as ANO, COUNT(ID) as INCIDENCIAS_TOTALES
from ALBARANES_CLIENTE
where tipo = 'A'
and ALBARANES_CLIENTE.INCIDENCIAS <> ''
group by 1,2
;
CREATE VIEW V_INF_ALB_CLI_ORDDEV_TOTAL_ANO(
ID_EMPRESA,
ANO,
ORDENES_DEV_TOTALES)
AS
select ID_EMPRESA, EXTRACT(YEAR FROM FECHA_ALBARAN) as ANO, COUNT(ID) as ORDENES_DEV_TOTALES
from ALBARANES_CLIENTE
where tipo = 'D'
group by 1,2
;
CREATE VIEW V_INF_FAC_PROVEEDOR_TOTAL_ANO(
ID_EMPRESA,
ANO,
BASE_IMPONIBLE,
IMPORTE_TOTAL)
AS
select ID_EMPRESA, EXTRACT(YEAR FROM FECHA_FACTURA) as ANO, SUM(BASE_IMPONIBLE) as BASE_IMPONIBLE, SUM(IMPORTE_TOTAL) as IMPORTE_TOTAL
from FACTURAS_PROVEEDOR
group by 1,2
;
CREATE VIEW V_INF_FAC_CLIENTE(
ID_EMPRESA,
ANO,
SEMESTRE,
TRIMESTRE,
MES,
FECHA_FACTURA,
ID_CLIENTE,
NOMBRE,
IMPORTE_DESCUENTO,
BASE_IMPONIBLE,
IMPORTE_TOTAL,
IMPORTE_TOTAL_ANO)
AS
select f.ID_EMPRESA, EXTRACT(YEAR FROM f.FECHA_FACTURA) as ANO,
CAST((DIV(EXTRACT(MONTH FROM f.FECHA_FACTURA),7)+1) AS SMALLINT) as SEMESTRE,
CAST((DIV(EXTRACT(MONTH FROM f.FECHA_FACTURA)+2,3)) AS SMALLINT) as TRIMESTRE,
EXTRACT(MONTH FROM f.FECHA_FACTURA) as MES,
f.FECHA_FACTURA, f.ID_CLIENTE, f.NOMBRE, f.IMPORTE_DESCUENTO, f.BASE_IMPONIBLE, f.IMPORTE_TOTAL, v.base_imponible as IMPORTE_TOTAL_ANO
from FACTURAS_CLIENTE f
inner join V_INF_FAC_CLIENTE_TOTAL_ANO v on ((v.id_empresa = f.id_empresa) and (v.Ano = EXTRACT(YEAR FROM f.FECHA_FACTURA)))
order by 1,2,3,4,5 asc
;
CREATE VIEW V_INF_FAC_PROVEEDOR(
ID_EMPRESA,
ANO,
SEMESTRE,
TRIMESTRE,
MES,
FECHA_FACTURA,
ID_PROVEEDOR,
NOMBRE,
IMPORTE_DESCUENTO,
BASE_IMPONIBLE,
IMPORTE_TOTAL,
IMPORTE_TOTAL_ANO)
AS
select f.ID_EMPRESA, EXTRACT(YEAR FROM f.FECHA_FACTURA) as ANO,
CAST((DIV(EXTRACT(MONTH FROM f.FECHA_FACTURA),7)+1) AS SMALLINT) as SEMESTRE,
CAST((DIV(EXTRACT(MONTH FROM f.FECHA_FACTURA)+2,3)) AS SMALLINT) as TRIMESTRE,
EXTRACT(MONTH FROM f.FECHA_FACTURA) as MES,
f.FECHA_FACTURA, f.ID_PROVEEDOR, f.NOMBRE, f.IMPORTE_DESCUENTO, f.BASE_IMPONIBLE, f.IMPORTE_TOTAL, v.base_imponible as IMPORTE_TOTAL_ANO
from FACTURAS_PROVEEDOR f
inner join V_INF_FAC_PROVEEDOR_TOTAL_ANO v on ((v.id_empresa = f.id_empresa) and (v.Ano = EXTRACT(YEAR FROM f.FECHA_FACTURA)))
order by 1,2,3,4,5 asc
;
CREATE VIEW V_INF_FAC_DET_PROVEEDOR(
ID,
ID_EMPRESA,
ANO,
SEMESTRE,
TRIMESTRE,
MES,
FECHA_FACTURA,
ID_FACTURA,
ID_PROVEEDOR,
NOMBRE,
ID_ARTICULO,
CONCEPTO,
CANTIDAD,
IMPORTE_UNIDAD,
IMPORTE_NETO,
DESCUENTO,
IMPORTE_PORTE,
IMPORTE_DESCUENTO,
IMPORTE_TOTAL,
IMPORTE_TOTAL_ANO)
AS
select FD.ID,
F.ID_EMPRESA,
EXTRACT(YEAR FROM f.FECHA_FACTURA) as ANO,
CAST((DIV(EXTRACT(MONTH FROM f.FECHA_FACTURA),7)+1) AS SMALLINT) as SEMESTRE,
CAST((DIV(EXTRACT(MONTH FROM f.FECHA_FACTURA)+2,3)) AS SMALLINT) as TRIMESTRE,
EXTRACT(MONTH FROM f.FECHA_FACTURA) as MES,
f.FECHA_FACTURA,
FD.ID_FACTURA, F.ID_PROVEEDOR, f.NOMBRE, FD.ID_ARTICULO, FD.CONCEPTO, FD.CANTIDAD, FD.IMPORTE_UNIDAD, (FD.CANTIDAD * FD.IMPORTE_UNIDAD) as IMPORTE_NETO,
FD.DESCUENTO, FD.IMPORTE_PORTE,
CASE
when FD.DESCUENTO = 0 then 0
else ((FD.CANTIDAD * FD.IMPORTE_UNIDAD) - FD.IMPORTE_TOTAL)
end as IMPORTE_DESCUENTO,
FD.IMPORTE_TOTAL,
v.base_imponible as IMPORTE_TOTAL_ANO
from facturas_proveedor_detalles FD
left join facturas_proveedor F on (F.ID = FD.ID_FACTURA)
inner join V_INF_FAC_PROVEEDOR_TOTAL_ANO v on ((v.id_empresa = f.id_empresa) and (v.Ano = EXTRACT(YEAR FROM f.FECHA_FACTURA)))
where (FD.TIPO_DETALLE = 'Concepto')
;
CREATE VIEW V_INF_FAC_DET_CLIENTE(
ID,
ID_EMPRESA,
ANO,
SEMESTRE,
TRIMESTRE,
MES,
FECHA_FACTURA,
ID_FACTURA,
ID_CLIENTE,
NOMBRE,
ID_AGENTE,
ID_ARTICULO,
CONCEPTO,
CANTIDAD,
IMPORTE_UNIDAD,
IMPORTE_NETO,
DESCUENTO,
IMPORTE_PORTE,
IMPORTE_DESCUENTO,
IMPORTE_TOTAL,
IMPORTE_TOTAL_ANO)
AS
select FD.ID,
F.ID_EMPRESA,
EXTRACT(YEAR FROM f.FECHA_FACTURA) as ANO,
CAST((DIV(EXTRACT(MONTH FROM f.FECHA_FACTURA),7)+1) AS SMALLINT) as SEMESTRE,
CAST((DIV(EXTRACT(MONTH FROM f.FECHA_FACTURA)+2,3)) AS SMALLINT) as TRIMESTRE,
EXTRACT(MONTH FROM f.FECHA_FACTURA) as MES,
f.FECHA_FACTURA,
FD.ID_FACTURA, F.ID_CLIENTE, f.NOMBRE, CD.ID_AGENTE, FD.ID_ARTICULO, FD.CONCEPTO, FD.CANTIDAD, FD.IMPORTE_UNIDAD, (FD.CANTIDAD * FD.IMPORTE_UNIDAD) as IMPORTE_NETO,
FD.DESCUENTO, FD.IMPORTE_PORTE,
CASE
when FD.DESCUENTO = 0 then 0
else ((FD.CANTIDAD * FD.IMPORTE_UNIDAD) - FD.IMPORTE_TOTAL)
end as IMPORTE_DESCUENTO,
FD.IMPORTE_TOTAL,
v.base_imponible as IMPORTE_TOTAL_ANO
from facturas_cliente_detalles FD
left join facturas_cliente F on (F.ID = FD.ID_FACTURA)
left join clientes_datos cd on (cd.ID_CLIENTE = F.ID_CLIENTE)
inner join V_INF_FAC_CLIENTE_TOTAL_ANO v on ((v.id_empresa = f.id_empresa) and (v.Ano = EXTRACT(YEAR FROM f.FECHA_FACTURA)))
where (FD.TIPO_DETALLE = 'Concepto')
;
CREATE VIEW V_INF_ALB_CLIENTE_AUX(
ID_ALBARAN,
SERVIDOS,
PENDIENTES,
ENVIADOS,
INCIDENCIAS,
PASADOS_FECHA_PREVISTA,
ORDENES_DEV)
AS
select ID, SUM(SERVIDOS), SUM(PENDIENTES), SUM(ENVIADOS), SUM(INCIDENCIAS), SUM(PASADOS_FECHA_PREVISTA), SUM(ORDENES_DEV)
FROM(
select ID, 1 as SERVIDOS, 0 as PENDIENTES, 0 as ENVIADOS, 0 as INCIDENCIAS, 0 as PASADOS_FECHA_PREVISTA, 0 as ORDENES_DEV
from V_ALB_CLI_SITUACION
where TRIM(V_ALB_CLI_SITUACION.situacion) = 'SERVIDO'
union
select ID, 0 as SERVIDOS, 1 as PENDIENTES, 0 as ENVIADOS, 0 as INCIDENCIAS, 0 as PASADOS_FECHA_PREVISTA, 0 as ORDENES_DEV
from V_ALB_CLI_SITUACION
where TRIM(V_ALB_CLI_SITUACION.situacion) = 'PENDIENTE'
union
select ID, 0 as SERVIDOS, 0 as PENDIENTES, 1 as ENVIADOS, 0 as INCIDENCIAS, 0 as PASADOS_FECHA_PREVISTA, 0 as ORDENES_DEV
from V_ALB_CLI_SITUACION
where TRIM(V_ALB_CLI_SITUACION.situacion) = 'ENVIADO'
union
select ID, 0 as SERVIDOS, 0 as PENDIENTES, 0 as ENVIADOS, 1 as INCIDENCIAS, 0 as PASADOS_FECHA_PREVISTA, 0 as ORDENES_DEV
from ALBARANES_CLIENTE
where ALBARANES_CLIENTE.INCIDENCIAS <> ''
union
select ID, 0 as SERVIDOS, 0 as PENDIENTES, 0 as ENVIADOS, 0 as INCIDENCIAS, 1 as PASADOS_FECHA_PREVISTA, 0 as ORDENES_DEV
from ALBARANES_CLIENTE
where ALBARANES_CLIENTE.fecha_prevista_envio > ALBARANES_CLIENTE.fecha_envio
union
select ID, 0 as SERVIDOS, 0 as PENDIENTES, 0 as ENVIADOS, 0 as INCIDENCIAS, 0 as PASADOS_FECHA_PREVISTA, 1 as ORDENES_DEV
from ALBARANES_CLIENTE
where ALBARANES_CLIENTE.TIPO = 'D'
)
group by 1
;
CREATE VIEW V_INF_ALB_CLIENTE(
ID_EMPRESA,
ANO,
SEMESTRE,
TRIMESTRE,
MES,
FECHA_ALBARAN,
ID_CLIENTE,
SERVIDOS,
PENDIENTES,
ENVIADOS,
INCIDENCIAS,
PASADOS_FECHA_PREVISTA,
ORDENES_DEV,
IMPORTE_TOTAL)
AS
select A.ID_EMPRESA,
EXTRACT(YEAR FROM A.FECHA_ALBARAN) as ANO,
CAST((DIV(EXTRACT(MONTH FROM A.FECHA_ALBARAN),7)+1) AS SMALLINT) as SEMESTRE,
CAST((DIV(EXTRACT(MONTH FROM A.FECHA_ALBARAN)+2,3)) AS SMALLINT) as TRIMESTRE,
EXTRACT(MONTH FROM A.FECHA_ALBARAN) as MES,
A.FECHA_ALBARAN, A.ID_CLIENTE,
cast(V.SERVIDOS as float), cast(V.PENDIENTES as float), cast(V.ENVIADOS as float),
cast(V.INCIDENCIAS as float), cast(V.PASADOS_FECHA_PREVISTA as float), cast(V.ORDENES_DEV as float),
A.IMPORTE_TOTAL
from V_INF_ALB_CLIENTE_AUX V
left join ALBARANES_CLIENTE A on (V.ID_ALBARAN = A.ID)
;
CREATE VIEW V_INF_OBJETIVOS_ALBARANES_AUX(
ID_EMPRESA,
ID_AGENTE,
AGENTE,
ANO,
MES,
CANTIDAD_CONSEGUIDA,
CANTIDAD_DEVUELTA,
IMPORTE_CONSEGUIDO,
IMPORTE_DEVUELTO)
AS
select
albaranes_cliente.ID_EMPRESA,
coalesce (clientes_datos.id_agente, -1) as ID_AGENTE,
coalesce (contactos.nombre, 'N/A') as AGENTE,
EXTRACT(YEAR FROM albaranes_cliente.FECHA_ALBARAN) as ANO,
EXTRACT(MONTH FROM albaranes_cliente.FECHA_ALBARAN) as MES,
case when (albaranes_cliente_detalles.cantidad > 0) then albaranes_cliente_detalles.cantidad
else 0
end as cantidad,
/*As<EFBFBD> solo se tendr<64>nen cuenta las ordenes de devoluci<63>n, en el caso de que una linea de albar<61>n sea negativa no se tendr<64> en cuenta "productos que deja de exposici<63>n"*/
case when ((albaranes_cliente_detalles.cantidad < 0) and (albaranes_cliente.tipo = 'D')) then albaranes_cliente_detalles.cantidad
else 0
end as cantidad_dev,
case when (albaranes_cliente_detalles.importe_total > 0) then albaranes_cliente_detalles.importe_total
else 0
end as importe_total,
/*As<EFBFBD> solo se tendr<64>nen cuenta las ordenes de devoluci<63>n, en el caso de que una linea de albar<61>n sea negativa no se tendr<64> en cuenta "productos que deja de exposici<63>n"*/
case when ((albaranes_cliente_detalles.importe_total < 0) and (albaranes_Cliente.tipo = 'D')) then albaranes_cliente_detalles.importe_total
else 0
end as importe_total_dev
from albaranes_cliente_detalles
left join albaranes_cliente on (albaranes_cliente.id = albaranes_cliente_detalles.id_albaran)
left join articulos on (articulos.id = albaranes_cliente_detalles.id_articulo)
left join clientes_datos on (clientes_datos.id_cliente = albaranes_cliente.id_cliente)
left join contactos on (contactos.id = clientes_datos.id_agente)
where ((ARTICULOS.COMISIONABLE = 1) and (albaranes_cliente.FECHA_ALBARAN is not null))
;
CREATE VIEW V_INF_OBJETIVOS_FACTURAS_AUX(
ID_EMPRESA,
ID_AGENTE,
AGENTE,
ANO,
MES,
CANTIDAD_CONSEGUIDA,
CANTIDAD_DEVUELTA,
IMPORTE_CONSEGUIDO,
IMPORTE_DEVUELTO)
AS
select
facturas_cliente.ID_EMPRESA,
coalesce (clientes_datos.id_agente, -1) as ID_AGENTE,
coalesce (contactos.nombre, 'N/A') as AGENTE,
EXTRACT(YEAR FROM facturas_cliente.FECHA_FACTURA) as ANO,
EXTRACT(MONTH FROM facturas_cliente.FECHA_FACTURA) as MES,
case when (facturas_cliente_detalles.cantidad > 0) then facturas_cliente_detalles.cantidad
else 0
end as cantidad,
/*As<EFBFBD> solo se tendr<64>nen cuenta los abonos, en el caso de que una linea de la factura sea negativa no se tendr<64> en cuenta "productos que deja de exposici<63>n"*/
case when ((facturas_cliente_detalles.cantidad < 0) and (facturas_cliente.importe_total < 0)) then facturas_cliente_detalles.cantidad
else 0
end as cantidad_dev,
case when (facturas_cliente_detalles.importe_total > 0) then facturas_cliente_detalles.importe_total
else 0
end as importe_total,
/*As<EFBFBD> solo se tendr<64>nen cuenta los abonos, en el caso de que una linea de la factura sea negativa no se tendr<64> en cuenta "productos que deja de exposici<63>n"*/
case when ((facturas_cliente_detalles.importe_total < 0) and (facturas_cliente.importe_total < 0)) then facturas_cliente_detalles.importe_total
else 0
end as importe_total_dev
from facturas_cliente_detalles
left join facturas_cliente on (facturas_cliente.id = facturas_cliente_detalles.id_factura)
left join articulos on (articulos.id = facturas_cliente_detalles.id_articulo)
left join clientes_datos on (clientes_datos.id_cliente = facturas_cliente.id_cliente)
left join contactos on (contactos.id = clientes_datos.id_agente)
where ((ARTICULOS.COMISIONABLE = 1) and (facturas_cliente.FECHA_FACTURA is not null))
;
CREATE VIEW V_INF_OBJETIVOS_ALBARANES(
ID_EMPRESA,
ID_AGENTE,
AGENTE,
ANO,
SEMESTRE,
TRIMESTRE,
MES,
CANTIDAD_CONSEGUIDA,
CANTIDAD_DEVUELTA,
IMPORTE_CONSEGUIDO,
IMPORTE_DEVUELTO)
AS
select
ID_EMPRESA,
ID_AGENTE,
AGENTE,
ANO,
CAST((DIV(MES,7)+1) AS SMALLINT) as SEMESTRE,
CAST((DIV((MES+2),3)) AS SMALLINT) as TRIMESTRE,
MES,
sum(cantidad_conseguida),
sum(cantidad_devuelta),
sum(importe_conseguido),
sum(importe_devuelto)
from v_inf_objetivos_albaranes_aux
group by 1,2,3,4,5,6,7
;
CREATE VIEW V_INF_OBJETIVOS_FACTURAS(
ID_EMPRESA,
ID_AGENTE,
AGENTE,
ANO,
SEMESTRE,
TRIMESTRE,
MES,
CANTIDAD_CONSEGUIDA,
CANTIDAD_DEVUELTA,
IMPORTE_CONSEGUIDO,
IMPORTE_DEVUELTO)
AS
select
ID_EMPRESA,
ID_AGENTE,
AGENTE,
ANO,
CAST((DIV(MES,7)+1) AS SMALLINT) as SEMESTRE,
CAST((DIV((MES+2),3)) AS SMALLINT) as TRIMESTRE,
MES,
sum(cantidad_conseguida),
sum(cantidad_devuelta),
sum(importe_conseguido),
sum(importe_devuelto)
from v_inf_objetivos_facturas_aux
group by 1,2,3,4,5,6,7
;
CREATE VIEW V_INF_OBJETIVOS_ALB_AGENTES(
ID_AGENTE,
ANO,
SEMESTRE,
TRIMESTRE,
MES,
CANTIDAD_OBJETIVO,
IMPORTE_OBJETIVO)
AS
select
id_agente,
ANO,
CAST((DIV(MES,7)+1) AS SMALLINT) as SEMESTRE,
CAST((DIV((MES+2),3)) AS SMALLINT) as TRIMESTRE,
MES,
coalesce(UNIDADES_OBJETIVO,0),
coalesce(IMPORTE_OBJETIVO,0)
from agentes_objetivos_alb
;
CREATE VIEW V_INF_OBJ_CLIENTES_AGENTES(
ID_AGENTE,
ANO,
SEMESTRE,
TRIMESTRE,
MES,
ID_CLIENTE,
NOMBRE)
AS
select CD.id_agente, EXTRACT(YEAR FROM C.fecha_alta) as ANO,
CAST((DIV(EXTRACT(MONTH FROM C.fecha_alta),7)+1) AS SMALLINT) as SEMESTRE,
CAST((DIV((EXTRACT(MONTH FROM C.fecha_alta)+2),3)) AS SMALLINT) as TRIMESTRE,
EXTRACT(MONTH FROM C.fecha_alta) as MES,
C.id, C.nombre
from contactos C
inner join contactos_categorias CC on (CC.id_contacto = C.id)
left join clientes_datos CD on (CD.id_cliente = C.id)
where (CC.id_categoria = 1)
and (CD.id_agente is not null)
;
CREATE VIEW V_INF_OBJ_CLI_ACTIVOS_ALB_AGE(
ID_EMPRESA,
ID_AGENTE,
ANO,
SEMESTRE,
TRIMESTRE,
MES,
ID_CLIENTE)
AS
select C.id_empresa, CD.id_agente, EXTRACT(YEAR FROM C.fecha_albaran) as ANO,
CAST((DIV(EXTRACT(MONTH FROM C.fecha_albaran),7)+1) AS SMALLINT) as SEMESTRE,
CAST((DIV((EXTRACT(MONTH FROM C.fecha_albaran)+2),3)) AS SMALLINT) as TRIMESTRE,
EXTRACT(MONTH FROM C.fecha_albaran) as MES,
C.id_cliente
from albaranes_cliente C
left join clientes_datos CD on (CD.id_cliente = C.id_cliente)
where (CD.id_agente is not null) /*quitamos aquellos clientes que no tienen agente asociado*/
;
CREATE VIEW V_INF_OBJ_CLI_ACTIVOS_FAC_AGE(
ID_EMPRESA,
ID_AGENTE,
ANO,
SEMESTRE,
TRIMESTRE,
MES,
ID_CLIENTE)
AS
select C.id_empresa, CD.id_agente, EXTRACT(YEAR FROM C.fecha_factura) as ANO,
CAST((DIV(EXTRACT(MONTH FROM C.fecha_factura),7)+1) AS SMALLINT) as SEMESTRE,
CAST((DIV((EXTRACT(MONTH FROM C.fecha_factura)+2),3)) AS SMALLINT) as TRIMESTRE,
EXTRACT(MONTH FROM C.fecha_factura) as MES,
C.id_cliente
from facturas_cliente C
left join clientes_datos CD on (CD.id_cliente = C.id_cliente)
where (CD.id_agente is not null) /*quitamos aquellos clientes que no tienen agente asociado*/
;
/******************************************************************************/
/**** 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_DTOS_ARTICULOS ADD CONSTRAINT PK_CLIENTES_DTOS_ART PRIMARY KEY (ID);
ALTER TABLE CLIENTES_GRUPOS ADD CONSTRAINT PK_CLIENTES_GRUPOS PRIMARY KEY (ID);
ALTER TABLE CLIENTES_TIPOS ADD CONSTRAINT PK_CLIENTES_TIPOS 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 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_PROFORMA ADD CONSTRAINT PK_FACTURAS_PROFORMA PRIMARY KEY (ID);
ALTER TABLE FACTURAS_PROFORMA_DETALLES ADD CONSTRAINT PK_FACTURAS_PROFORMA_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 TIPOS_DOCUMENTO ADD CONSTRAINT PK_TIPOS_DOCUMENTO 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);
ALTER TABLE AGENTES_OBJETIVOS_ALB ADD CONSTRAINT PK_AGENTES_OBJETIVOS_ALB PRIMARY KEY (ID);
ALTER TABLE AGENTES_OBJETIVOS_FAC ADD CONSTRAINT PK_AGENTES_OBJETIVOS_FAC PRIMARY KEY (ID);
ALTER TABLE IDIOMAS ADD CONSTRAINT PK_IDIOMAS PRIMARY KEY (ID);
ALTER TABLE PAISES ADD CONSTRAINT PK_PAISES PRIMARY KEY (ID);
/******************************************************************************/
/**** 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_PROFORMA ADD CONSTRAINT FK_FACTURAS_PROFORMA_1 FOREIGN KEY (ID_FACTURA_FINAL) REFERENCES FACTURAS_CLIENTE (ID) ON DELETE SET NULL ON UPDATE SET NULL;
ALTER TABLE FACTURAS_PROFORMA ADD CONSTRAINT FK_FACTURAS_PROFORMA_2 FOREIGN KEY (ID_PEDIDO) REFERENCES PEDIDOS_CLIENTE (ID) ON UPDATE CASCADE;
ALTER TABLE FACTURAS_PROFORMA ADD CONSTRAINT FK_FACTURAS_PROFORMA_3 FOREIGN KEY (ID_PRESUPUESTO) REFERENCES PRESUPUESTOS_CLIENTE (ID) ON UPDATE CASCADE;
ALTER TABLE FACTURAS_PROFORMA ADD CONSTRAINT FK_FACTURAS_PROFORMA_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_CLIENTE add constraint FK_PEDIDOS_CLIENTE_1 foreign key (ID_PRESUPUESTO) references PRESUPUESTOS_CLIENTE(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 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 CLIENTES_DTOS_ARTICULOS_IDX1 ON CLIENTES_DTOS_ARTICULOS (ID_CLIENTE);
CREATE INDEX CLIENTES_DTOS_ARTICULOS_IDX2 ON CLIENTES_DTOS_ARTICULOS (ID_ARTICULO);
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_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 FACTURAS_PROFORMA_IDX1 ON FACTURAS_PROFORMA (FECHA_FACTURA);
CREATE INDEX FACTURAS_PROFORMA_IDX2 ON FACTURAS_PROFORMA (FECHA_VENCIMIENTO);
CREATE INDEX IDX_FACTURAS_PROFORMA ON FACTURAS_PROFORMA (ID_FORMA_PAGO);
CREATE INDEX IDX_FACTURAS_PROFORMA1 ON FACTURAS_PROFORMA (ID_TIPO_IVA);
CREATE INDEX IDX_FACTURAS_PROFORMA3 ON FACTURAS_PROFORMA (ID_CLIENTE);
CREATE INDEX IDX_FACTURAS_PROFORMA_DETALLES1 ON FACTURAS_PROFORMA_DETALLES (ID_FACTURA);
CREATE INDEX IDX_FACTURAS_PROFORMA_DETALLES2 ON FACTURAS_PROFORMA_DETALLES (ID_ARTICULO);
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 ****/
/******************************************************************************/
/******************************************************************************/
/**** Generated by IBExpert 2007.05.03 16/09/2010 12:53:40 ****/
/******************************************************************************/
SET SQL DIALECT 3;
SET NAMES ISO8859_1;
SET TERM ^ ;
/******************************************************************************/
/**** Stored Procedures ****/
/******************************************************************************/
CREATE PROCEDURE PRO_ANADIR_EMPRESA (
ID_EMPRESA INTEGER)
AS
BEGIN
EXIT;
END^
CREATE PROCEDURE PRO_ANADIR_MARCA_ENVIO_CORREO (
TABLA VARCHAR(255),
ID_TABLA INTEGER)
AS
BEGIN
EXIT;
END^
CREATE PROCEDURE PRO_ANADIR_MARCA_IMPRESION (
TABLA VARCHAR(255),
ID_TABLA INTEGER)
AS
BEGIN
EXIT;
END^
CREATE PROCEDURE PRO_ART_RECALCULAR_PVP (
ID_EMPRESA INTEGER,
PARAM_MARGEN NUMERIC(2,2),
PARAM_TIEMPO NUMERIC(11,2))
AS
BEGIN
EXIT;
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
BEGIN
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
BEGIN
SUSPEND;
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
BEGIN
SUSPEND;
END^
CREATE PROCEDURE PRO_ANADIR_OBJETIVOS (
id_agente integer,
ano integer)
as
BEGIN
SUSPEND;
END^
CREATE PROCEDURE PRO_ANADIR_OBJETIVOS_AGENTES (
ano integer)
as
BEGIN
SUSPEND;
END^
CREATE PROCEDURE PRO_ETIQUETAS_ALBARAN (
aid integer)
returns (
id integer,
id_albaran integer,
referencia_albaran varchar(255),
fecha_prevista_envio date,
referencia_cliente varchar(255),
cliente varchar(255),
idioma_iso varchar(2),
posicion integer,
tipo_detalle varchar(25),
referencia varchar(255),
concepto varchar(2000),
cantidad numeric(11,2),
importe_unidad numeric(11,2),
descuento float,
importe_total numeric(11,2),
referencia_proveedor varchar(255))
as
begin
SUSPEND;
END^
/******************************************************************************/
/**** Stored Procedures ****/
/******************************************************************************/
SET TERM ^ ;
ALTER PROCEDURE PRO_ANADIR_EMPRESA (
ID_EMPRESA INTEGER)
AS
begin
INSERT INTO REFERENCIAS (ID, CODIGO, VALOR, ID_EMPRESA, DESCRIPCION) VALUES (GEN_ID(GEN_REFERENCIAS_ID, 1), 'REF_FACTURAS_CLIENTE', 'EL/0001', :ID_EMPRESA, 'Ref. facturas de cliente');
INSERT INTO REFERENCIAS (ID, CODIGO, VALOR, ID_EMPRESA, DESCRIPCION) VALUES (GEN_ID(GEN_REFERENCIAS_ID, 1), 'REF_PEDIDOS_CLIENTE', '00001', :ID_EMPRESA, 'Ref. pedidos de cliente');
INSERT INTO REFERENCIAS (ID, CODIGO, VALOR, ID_EMPRESA, DESCRIPCION) VALUES (GEN_ID(GEN_REFERENCIAS_ID, 1), 'REF_PEDIDOS_PROVEEDOR', '00001', :ID_EMPRESA, 'Ref. pedidos de proveedor');
INSERT INTO REFERENCIAS (ID, CODIGO, VALOR, ID_EMPRESA, DESCRIPCION) VALUES (GEN_ID(GEN_REFERENCIAS_ID, 1), 'REF_ALBARANES_CLIENTE', '00001', :ID_EMPRESA, 'Ref. albaranes de cliente');
INSERT INTO REFERENCIAS (ID, CODIGO, VALOR, ID_EMPRESA, DESCRIPCION) VALUES (GEN_ID(GEN_REFERENCIAS_ID, 1), 'REF_ALBARANES_PROVEEDOR', '00001', :ID_EMPRESA, 'Ref. albaranes de proveedor');
INSERT INTO REFERENCIAS (ID, CODIGO, VALOR, ID_EMPRESA, DESCRIPCION) VALUES (GEN_ID(GEN_REFERENCIAS_ID, 1), 'REF_REMESAS_CLIENTE', '00001', :ID_EMPRESA, 'Ref. remesas de cliente');
INSERT INTO REFERENCIAS (ID, CODIGO, VALOR, ID_EMPRESA, DESCRIPCION) VALUES (GEN_ID(GEN_REFERENCIAS_ID, 1), 'REF_COMISIONES', '00001', :ID_EMPRESA, 'Ref. liquidaciones de comision');
INSERT INTO REFERENCIAS (ID, CODIGO, VALOR, ID_EMPRESA, DESCRIPCION) VALUES (GEN_ID(GEN_REFERENCIAS_ID, 1), 'REF_FACTURAS_PROVEEDOR', '2010/0001', :ID_EMPRESA, 'Ref. facturas de proveedor');
INSERT INTO REFERENCIAS (ID, CODIGO, VALOR, ID_EMPRESA, DESCRIPCION) VALUES (GEN_ID(GEN_REFERENCIAS_ID, 1), 'REF_ALBARANES_DEV_CLIENTE', '00001', :ID_EMPRESA, 'Ref. ordenes de devolucion de cliente');
INSERT INTO REFERENCIAS (ID, CODIGO, VALOR, ID_EMPRESA, DESCRIPCION) VALUES (GEN_ID(GEN_REFERENCIAS_ID, 1), 'REF_ALBARANES_DEV_PROVEEDOR', '00001', :ID_EMPRESA, 'Ref. ordenes de devolucion de proveedor');
INSERT INTO REFERENCIAS (ID, CODIGO, VALOR, ID_EMPRESA, DESCRIPCION) VALUES (GEN_ID(GEN_REFERENCIAS_ID, 1), 'REF_REMESAS_PROVEEDOR', '00001', :ID_EMPRESA, 'Ref. remesas de proveedor');
INSERT INTO REFERENCIAS (ID, CODIGO, VALOR, ID_EMPRESA, DESCRIPCION) VALUES (GEN_ID(GEN_REFERENCIAS_ID, 1), 'REF_ABONOS_CLIENTE', 'AB-EL/0001', :ID_EMPRESA, 'Ref. abonos de cliente');
INSERT INTO REFERENCIAS (ID, CODIGO, VALOR, ID_EMPRESA, DESCRIPCION) VALUES (GEN_ID(GEN_REFERENCIAS_ID, 1), 'REF_ABONOS_PROVEEDOR', 'A. 2010/0001', :ID_EMPRESA, 'Ref. abonos de proveedor');
suspend;
end
^
ALTER PROCEDURE PRO_ANADIR_MARCA_ENVIO_CORREO (
TABLA VARCHAR(255),
ID_TABLA INTEGER)
AS
declare variable id integer;
begin
select ID
from REGISTRO_CORREOS
where ID_TABLA = :ID_TABLA
and TABLA = UPPER(:TABLA)
into :ID;
/*En el caso de que ya exista se modifica la cantidad en caso contrario se anade el elemento */
if (ID > 0) then
begin
update REGISTRO_CORREOS
set NUM_CORREOS = NUM_CORREOS + 1
where ID = :ID;
end
else
begin
insert into REGISTRO_CORREOS (ID, TABLA, ID_TABLA, NUM_CORREOS)
values (GEN_ID(GEN_REGISTRO_CORREOS_ID, 1), UPPER(:TABLA), :ID_TABLA, 1);
end
suspend;
end
^
ALTER PROCEDURE PRO_ANADIR_MARCA_IMPRESION (
TABLA VARCHAR(255),
ID_TABLA INTEGER)
AS
declare variable id integer;
begin
select ID
from IMPRESIONES
where ID_TABLA = :ID_TABLA
and TABLA = UPPER(:TABLA)
into :ID;
/*En el caso de que ya exista se modifica la cantidad en caso contrario se anade el elemetno*/
if (ID > 0) then
begin
update IMPRESIONES
set NUM_COPIAS = NUM_COPIAS + 1
where ID = :ID;
end
else
begin
insert into IMPRESIONES (ID, TABLA, ID_TABLA, NUM_COPIAS)
values (GEN_ID(GEN_IMPRESIONES_ID, 1), UPPER(:TABLA), :ID_TABLA, 1);
end
suspend;
end
^
ALTER 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
^
ALTER 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;
/* <20>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
^
ALTER 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
^
ALTER 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 = '';
/* <20>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<EFBFBD>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<EFBFBD>TULO ' || num_capitulos || '. ' || concepto_capitulo;
tipo_detalle = tipo;
num_capitulos = num_capitulos + 1;
suspend;
end
end
end
^
SET TERM ; ^
ALTER PROCEDURE PRO_ANADIR_OBJETIVOS (
id_agente integer,
ano integer)
as
declare variable num_filas integer;
begin
select count(ID_AGENTE)
from AGENTES_OBJETIVOS_ALB
where ID_AGENTE = :ID_AGENTE and ANO = :ANO
into :num_filas;
if (num_filas = 0) then
begin
INSERT INTO AGENTES_OBJETIVOS_ALB (ID, ID_AGENTE, ANO, MES, UNIDADES_OBJETIVO, IMPORTE_OBJETIVO) VALUES (GEN_ID(GEN_OBJETIVOS_ALB_ID, 1), :ID_AGENTE, :ANO, 1, null, null);
INSERT INTO AGENTES_OBJETIVOS_ALB (ID, ID_AGENTE, ANO, MES, UNIDADES_OBJETIVO, IMPORTE_OBJETIVO) VALUES (GEN_ID(GEN_OBJETIVOS_ALB_ID, 1), :ID_AGENTE, :ANO, 2, null, null);
INSERT INTO AGENTES_OBJETIVOS_ALB (ID, ID_AGENTE, ANO, MES, UNIDADES_OBJETIVO, IMPORTE_OBJETIVO) VALUES (GEN_ID(GEN_OBJETIVOS_ALB_ID, 1), :ID_AGENTE, :ANO, 3, null, null);
INSERT INTO AGENTES_OBJETIVOS_ALB (ID, ID_AGENTE, ANO, MES, UNIDADES_OBJETIVO, IMPORTE_OBJETIVO) VALUES (GEN_ID(GEN_OBJETIVOS_ALB_ID, 1), :ID_AGENTE, :ANO, 4, null, null);
INSERT INTO AGENTES_OBJETIVOS_ALB (ID, ID_AGENTE, ANO, MES, UNIDADES_OBJETIVO, IMPORTE_OBJETIVO) VALUES (GEN_ID(GEN_OBJETIVOS_ALB_ID, 1), :ID_AGENTE, :ANO, 5, null, null);
INSERT INTO AGENTES_OBJETIVOS_ALB (ID, ID_AGENTE, ANO, MES, UNIDADES_OBJETIVO, IMPORTE_OBJETIVO) VALUES (GEN_ID(GEN_OBJETIVOS_ALB_ID, 1), :ID_AGENTE, :ANO, 6, null, null);
INSERT INTO AGENTES_OBJETIVOS_ALB (ID, ID_AGENTE, ANO, MES, UNIDADES_OBJETIVO, IMPORTE_OBJETIVO) VALUES (GEN_ID(GEN_OBJETIVOS_ALB_ID, 1), :ID_AGENTE, :ANO, 7, null, null);
INSERT INTO AGENTES_OBJETIVOS_ALB (ID, ID_AGENTE, ANO, MES, UNIDADES_OBJETIVO, IMPORTE_OBJETIVO) VALUES (GEN_ID(GEN_OBJETIVOS_ALB_ID, 1), :ID_AGENTE, :ANO, 8, null, null);
INSERT INTO AGENTES_OBJETIVOS_ALB (ID, ID_AGENTE, ANO, MES, UNIDADES_OBJETIVO, IMPORTE_OBJETIVO) VALUES (GEN_ID(GEN_OBJETIVOS_ALB_ID, 1), :ID_AGENTE, :ANO, 9, null, null);
INSERT INTO AGENTES_OBJETIVOS_ALB (ID, ID_AGENTE, ANO, MES, UNIDADES_OBJETIVO, IMPORTE_OBJETIVO) VALUES (GEN_ID(GEN_OBJETIVOS_ALB_ID, 1), :ID_AGENTE, :ANO, 10, null, null);
INSERT INTO AGENTES_OBJETIVOS_ALB (ID, ID_AGENTE, ANO, MES, UNIDADES_OBJETIVO, IMPORTE_OBJETIVO) VALUES (GEN_ID(GEN_OBJETIVOS_ALB_ID, 1), :ID_AGENTE, :ANO, 11, null, null);
INSERT INTO AGENTES_OBJETIVOS_ALB (ID, ID_AGENTE, ANO, MES, UNIDADES_OBJETIVO, IMPORTE_OBJETIVO) VALUES (GEN_ID(GEN_OBJETIVOS_ALB_ID, 1), :ID_AGENTE, :ANO, 12, null, null);
end
select count(ID_AGENTE)
from AGENTES_OBJETIVOS_FAC
where ID_AGENTE = :ID_AGENTE and ANO = :ANO
into :num_filas;
if (num_filas = 0) then
begin
INSERT INTO AGENTES_OBJETIVOS_FAC (ID, ID_AGENTE, ANO, MES, UNIDADES_OBJETIVO, IMPORTE_OBJETIVO) VALUES (GEN_ID(GEN_OBJETIVOS_FAC_ID, 1), :ID_AGENTE, :ANO, 1, null, null);
INSERT INTO AGENTES_OBJETIVOS_FAC (ID, ID_AGENTE, ANO, MES, UNIDADES_OBJETIVO, IMPORTE_OBJETIVO) VALUES (GEN_ID(GEN_OBJETIVOS_FAC_ID, 1), :ID_AGENTE, :ANO, 2, null, null);
INSERT INTO AGENTES_OBJETIVOS_FAC (ID, ID_AGENTE, ANO, MES, UNIDADES_OBJETIVO, IMPORTE_OBJETIVO) VALUES (GEN_ID(GEN_OBJETIVOS_FAC_ID, 1), :ID_AGENTE, :ANO, 3, null, null);
INSERT INTO AGENTES_OBJETIVOS_FAC (ID, ID_AGENTE, ANO, MES, UNIDADES_OBJETIVO, IMPORTE_OBJETIVO) VALUES (GEN_ID(GEN_OBJETIVOS_FAC_ID, 1), :ID_AGENTE, :ANO, 4, null, null);
INSERT INTO AGENTES_OBJETIVOS_FAC (ID, ID_AGENTE, ANO, MES, UNIDADES_OBJETIVO, IMPORTE_OBJETIVO) VALUES (GEN_ID(GEN_OBJETIVOS_FAC_ID, 1), :ID_AGENTE, :ANO, 5, null, null);
INSERT INTO AGENTES_OBJETIVOS_FAC (ID, ID_AGENTE, ANO, MES, UNIDADES_OBJETIVO, IMPORTE_OBJETIVO) VALUES (GEN_ID(GEN_OBJETIVOS_FAC_ID, 1), :ID_AGENTE, :ANO, 6, null, null);
INSERT INTO AGENTES_OBJETIVOS_FAC (ID, ID_AGENTE, ANO, MES, UNIDADES_OBJETIVO, IMPORTE_OBJETIVO) VALUES (GEN_ID(GEN_OBJETIVOS_FAC_ID, 1), :ID_AGENTE, :ANO, 7, null, null);
INSERT INTO AGENTES_OBJETIVOS_FAC (ID, ID_AGENTE, ANO, MES, UNIDADES_OBJETIVO, IMPORTE_OBJETIVO) VALUES (GEN_ID(GEN_OBJETIVOS_FAC_ID, 1), :ID_AGENTE, :ANO, 8, null, null);
INSERT INTO AGENTES_OBJETIVOS_FAC (ID, ID_AGENTE, ANO, MES, UNIDADES_OBJETIVO, IMPORTE_OBJETIVO) VALUES (GEN_ID(GEN_OBJETIVOS_FAC_ID, 1), :ID_AGENTE, :ANO, 9, null, null);
INSERT INTO AGENTES_OBJETIVOS_FAC (ID, ID_AGENTE, ANO, MES, UNIDADES_OBJETIVO, IMPORTE_OBJETIVO) VALUES (GEN_ID(GEN_OBJETIVOS_FAC_ID, 1), :ID_AGENTE, :ANO, 10, null, null);
INSERT INTO AGENTES_OBJETIVOS_FAC (ID, ID_AGENTE, ANO, MES, UNIDADES_OBJETIVO, IMPORTE_OBJETIVO) VALUES (GEN_ID(GEN_OBJETIVOS_FAC_ID, 1), :ID_AGENTE, :ANO, 11, null, null);
INSERT INTO AGENTES_OBJETIVOS_FAC (ID, ID_AGENTE, ANO, MES, UNIDADES_OBJETIVO, IMPORTE_OBJETIVO) VALUES (GEN_ID(GEN_OBJETIVOS_FAC_ID, 1), :ID_AGENTE, :ANO, 12, null, null);
end
end^
SET TERM ; ^
ALTER PROCEDURE PRO_ANADIR_OBJETIVOS_AGENTES (
ano integer)
as
declare variable idagente integer;
begin
/* Existe el presupuesto? */
for select ID
from V_AGENTES
into :idAgente
do
begin
execute procedure pro_anadir_objetivos (:idAgente, :ANO);
end
suspend;
end^
SET TERM ; ^
ALTER PROCEDURE PRO_ETIQUETAS_ALBARAN (
aid integer)
returns (
id integer,
id_albaran integer,
referencia_albaran varchar(255),
fecha_prevista_envio date,
referencia_cliente varchar(255),
cliente varchar(255),
idioma_iso varchar(2),
posicion integer,
tipo_detalle varchar(25),
referencia varchar(255),
concepto varchar(2000),
cantidad numeric(11,2),
importe_unidad numeric(11,2),
descuento float,
importe_total numeric(11,2),
referencia_proveedor varchar(255))
as
begin
for SELECT DET.ID, DET.CANTIDAD
FROM ALBARANES_CLIENTE_DETALLES DET
WHERE (DET.CANTIDAD IS NOT NULL)
AND DET.ID_ALBARAN = :AID
ORDER BY DET.ID_ALBARAN, DET.POSICION
into :ID, :CANTIDAD
do
while (CANTIDAD > 0)
do begin
SELECT DET.ID, DET.ID_ALBARAN, ALBARANES_CLIENTE.REFERENCIA, ALBARANES_CLIENTE.FECHA_PREVISTA_ENVIO,
ALBARANES_CLIENTE.REFERENCIA_CLIENTE, CON.NOMBRE, CON.IDIOMA_ISO,
DET.POSICION, DET.TIPO_DETALLE,
ARTICULOS.REFERENCIA, F_RTFTOTEXT(DET.CONCEPTO) as CONCEPTO,
DET.IMPORTE_UNIDAD,
DET.DESCUENTO,
DET.IMPORTE_TOTAL,
ARTICULOS.REFERENCIA_PROV as REFERENCIA_PROVEEDOR
FROM ALBARANES_CLIENTE_DETALLES DET
LEFT OUTER JOIN ALBARANES_CLIENTE ON (DET.ID_ALBARAN = ALBARANES_CLIENTE.ID)
LEFT OUTER JOIN CONTACTOS CON ON (ALBARANES_CLIENTE.ID_CLIENTE = CON.ID)
LEFT OUTER JOIN ARTICULOS ON (DET.ID_ARTICULO = ARTICULOS.ID)
WHERE (DET.CANTIDAD IS NOT NULL)
AND DET.ID = :ID
ORDER BY DET.ID_ALBARAN, DET.POSICION
into :ID, :ID_ALBARAN, :REFERENCIA_ALBARAN, :FECHA_PREVISTA_ENVIO, :REFERENCIA_CLIENTE,
:CLIENTE, :IDIOMA_ISO, :POSICION, :TIPO_DETALLE, :REFERENCIA, :CONCEPTO, :IMPORTE_UNIDAD, :DESCUENTO,
:IMPORTE_TOTAL, REFERENCIA_PROVEEDOR;
suspend;
CANTIDAD = CANTIDAD - 1;
end
end^
SET TERM ; ^