/******************************************************************************/ /**** Generated by IBExpert 2007.05.03 14/03/2008 10:23:14 ****/ /******************************************************************************/ SET SQL DIALECT 3; SET NAMES ISO8859_1; CREATE DATABASE 'FACTUGES.FDB' PAGE_SIZE 4096 DEFAULT CHARACTER SET ISO8859_1; /******************************************************************************/ /**** User Defined Functions ****/ /******************************************************************************/ DECLARE EXTERNAL FUNCTION F_RTFTOTEXT CString(32767) RETURNS CString(32767) ENTRY_POINT 'RtfToText' MODULE_NAME 'udf_RtfToText.dll'; DECLARE EXTERNAL FUNCTION MOD INTEGER, INTEGER RETURNS DOUBLE PRECISION BY VALUE ENTRY_POINT 'IB_UDF_mod' MODULE_NAME 'ib_udf'; DECLARE EXTERNAL FUNCTION STRLEN CSTRING(32767) RETURNS INTEGER BY VALUE ENTRY_POINT 'IB_UDF_strlen' MODULE_NAME 'ib_udf'; DECLARE EXTERNAL FUNCTION SUBSTR CSTRING(255), SMALLINT, SMALLINT RETURNS CSTRING(255) 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_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); CREATE DOMAIN TIPO_CANTIDAD AS NUMERIC(11,2); /******************************************************************************/ /**** Generators ****/ /******************************************************************************/ 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_BALANCES_ID; SET GENERATOR GEN_BALANCES_ID TO 1; CREATE GENERATOR GEN_CATEGORIAS_ID; SET GENERATOR GEN_CATEGORIAS_ID TO 1; CREATE GENERATOR GEN_CLIENTES_DTOS_PROV_ID; SET GENERATOR GEN_CLIENTES_DTOS_PROV_ID TO 1; CREATE GENERATOR GEN_CLIENTES_GRUPOS_ID; SET GENERATOR GEN_CLIENTES_GRUPOS_ID TO 1; CREATE GENERATOR GEN_CLIENTES_PROCEDENCIAS_ID; SET GENERATOR GEN_CLIENTES_PROCEDENCIAS_ID TO 1; CREATE GENERATOR GEN_COMISIONES_LIQUID_ID; SET GENERATOR GEN_COMISIONES_LIQUID_ID TO 1; CREATE GENERATOR GEN_COMISIONES_VENDEDORES_ID; SET GENERATOR GEN_COMISIONES_VENDEDORES_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_CONT_APUNTES_ID; SET GENERATOR GEN_CONT_APUNTES_ID TO 1; CREATE GENERATOR GEN_CONT_ASIENTOS_ID; SET GENERATOR GEN_CONT_ASIENTOS_ID TO 1; CREATE GENERATOR GEN_CONT_BALANCES_ID; SET GENERATOR GEN_CONT_BALANCES_ID TO 1; CREATE GENERATOR GEN_CONT_CUENTAS_ESP_ID; SET GENERATOR GEN_CONT_CUENTAS_ESP_ID TO 1; CREATE GENERATOR GEN_CONT_CUENTAS_ID; SET GENERATOR GEN_CONT_CUENTAS_ID TO 1; CREATE GENERATOR GEN_CONT_EJERCICIOS_ID; SET GENERATOR GEN_CONT_EJERCICIOS_ID TO 1; CREATE GENERATOR GEN_CONT_EPIGRAFES_ID; SET GENERATOR GEN_CONT_EPIGRAFES_ID TO 1; CREATE GENERATOR GEN_CONT_SUBCUENTAS_ID; SET GENERATOR GEN_CONT_SUBCUENTAS_ID TO 1; CREATE GENERATOR GEN_EJERCICIOS_ID; SET GENERATOR GEN_EJERCICIOS_ID TO 1; CREATE GENERATOR GEN_EMPRESAS_CONTACTOS_ID; SET GENERATOR GEN_EMPRESAS_CONTACTOS_ID TO 1; CREATE GENERATOR GEN_EMPRESAS_DATOS_BANCO_ID; SET GENERATOR GEN_EMPRESAS_DATOS_BANCO_ID TO 1; CREATE GENERATOR GEN_EMPRESAS_ID; SET GENERATOR GEN_EMPRESAS_ID TO 1; CREATE GENERATOR GEN_EMPRESAS_TIENDAS_ID; SET GENERATOR GEN_EMPRESAS_TIENDAS_ID TO 1; CREATE GENERATOR GEN_EMPRESAS_USUARIOS_ID; SET GENERATOR GEN_EMPRESAS_USUARIOS_ID TO 1; CREATE GENERATOR GEN_FACTURAS_CLIENTE_ID; SET GENERATOR GEN_FACTURAS_CLIENTE_ID TO 1; CREATE GENERATOR GEN_FACTURAS_PROVEEDOR_ID; SET GENERATOR GEN_FACTURAS_PROVEEDOR_ID TO 1; CREATE GENERATOR GEN_FACTURA_CLIENTE_DETALLES_ID; SET GENERATOR GEN_FACTURA_CLIENTE_DETALLES_ID TO 1; CREATE GENERATOR GEN_FACTURAS_PROV_CONTRATOS_ID; SET GENERATOR GEN_FACTURAS_PROV_CONTRATOS_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_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_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_CONTRATOS_CLI_ID; SET GENERATOR GEN_CONTRATOS_CLI_ID TO 1; CREATE GENERATOR GEN_CONTRATOS_CLI_DETALLE_ID; SET GENERATOR GEN_CONTRATOS_CLI_DETALLE_ID TO 1; CREATE GENERATOR GEN_PRESUPUESTOS_CLI_ID; SET GENERATOR GEN_PRESUPUESTOS_CLI_ID TO 1; CREATE GENERATOR GEN_PROVEEDORES_GRUPOS_ID; SET GENERATOR GEN_PROVEEDORES_GRUPOS_ID TO 1; CREATE GENERATOR GEN_RECIBOS_CLIENTE_ID; SET GENERATOR GEN_RECIBOS_CLIENTE_ID TO 1; CREATE GENERATOR GEN_RECIBOS_PROVEEDOR_ID; SET GENERATOR GEN_RECIBOS_PROVEEDOR_ID TO 1; CREATE GENERATOR GEN_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; SET TERM ^ ; /******************************************************************************/ /**** Stored Procedures ****/ /******************************************************************************/ CREATE PROCEDURE PROC_CIERRE_APERTURA ( ID_EJERCICIO_CIERRE INTEGER, ID_EJERCICIO_APERTURA INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE PROC_DELETE_ASIENTO_FACTURA ( IDFACTURA INTEGER, TIPO VARCHAR(1)) AS BEGIN EXIT; END^ CREATE PROCEDURE PROC_DELETE_ASIENTO_PAGO ( IDPAGO INTEGER, TIPO VARCHAR(1)) AS BEGIN EXIT; END^ CREATE PROCEDURE PROC_NEW_ASIENTO_FACTURA_CLI ( IDFACTURA INTEGER, ID_SUBCUENTA_VENTA INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE PROC_NEW_ASIENTO_FACTURA_PROV ( IDFACTURA INTEGER, ID_SUBCUENTA_COMPRA INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE PROC_NEW_ASIENTO_PAGO_CLI ( IDPAGO INTEGER, IDSUBCUENTAPAGO INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE PROC_NEW_ASIENTO_PAGO_PROV ( IDPAGO INTEGER, IDSUBCUENTAPAGO INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE PROC_NEW_CUENTAS ( ID_EJERCICIO_COPIA INTEGER, ID_EJERCICIO INTEGER, ID_EPIGRAFE_COPIA INTEGER, ID_EPIGRAFE INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE PROC_NEW_EPIGRAFES ( ID_EJERCICIO_COPIA INTEGER, ID_EJERCICIO INTEGER, ID_EPIGRAFE_COPIA INTEGER, ID_EPIGRAFE INTEGER, ID_PADRE INTEGER, REF_EPIGRAFE VARCHAR(6), DESCRIPCION VARCHAR(255)) AS BEGIN EXIT; END^ CREATE PROCEDURE PROC_NEW_PGC ( ID_EJERCICIO_COPIA INTEGER, ID_EJERCICIO INTEGER) RETURNS ( RESULTADO INTEGER) AS BEGIN SUSPEND; END^ CREATE PROCEDURE PROC_NEW_SUBCUENTAS ( ID_EJERCICIO_COPIA INTEGER, ID_EJERCICIO INTEGER, ID_CUENTA_COPIA INTEGER, ID_CUENTA INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE PROC_SET_EJERCICIOS_NOACTIVOS ( ID_EMPRESA INTEGER) AS BEGIN EXIT; END^ CREATE PROCEDURE PROC_PRE_CON_CAPITULOS ( aid integer, tipo varchar(15)) as begin exit; end^ CREATE PROCEDURE PROC_PRE_CON_CAPITULOS_CONCEP( aid integer, tipo varchar(15)) as begin exit; end^ SET TERM ; ^ /******************************************************************************/ /**** Tables ****/ /******************************************************************************/ CREATE TABLE COMISIONES_LIQ_VENDEDORES( ID TIPO_ID NOT NULL, ID_COMISION TIPO_ID, ID_VENDEDOR TIPO_ID, NOMBRE VARCHAR(255), COMISION TIPO_PORCENTAJE, IMPORTE_TOTAL TIPO_IMPORTE); 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), MOVIL VARCHAR(25), IMPORTE_NETO TIPO_IMPORTE, IMPORTE_PORTE TIPO_IMPORTE, DESCUENTO TIPO_PORCENTAJE, IMPORTE_DESCUENTO TIPO_IMPORTE, BASE_IMPONIBLE TIPO_IMPORTE, ID_TIPO_IVA TIPO_ID, 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_TIENDA TIPO_ID ); CREATE TABLE ALBARANES_CLIENTE_DETALLES ( ID TIPO_ID NOT NULL, ID_ALBARAN TIPO_ID NOT NULL, POSICION INTEGER, TIPO_DETALLE VARCHAR(10), 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 ALBARANES_PROVEEDOR ( ID TIPO_ID NOT NULL, ID_EMPRESA TIPO_ID, ID_PROVEEDOR TIPO_ID, 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, ID_TIPO_IVA TIPO_ID, 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_TIENDA TIPO_ID ); CREATE TABLE ALBARANES_PROVEEDOR_DETALLES ( ID TIPO_ID NOT NULL, ID_ALBARAN TIPO_ID NOT NULL, POSICION INTEGER, TIPO_DETALLE VARCHAR(10), 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 ALMACENES ( ID TIPO_ID NOT NULL, ID_EMPRESA TIPO_ID NOT NULL, 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), 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, FECHA_ALTA TIMESTAMP, FECHA_MODIFICACION TIMESTAMP, USUARIO TIPO_USUARIO, INVENTARIABLE TIPO_BOOLEANO, ELIMINADO TIPO_BOOLEANO ); 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), BLOQUEADO TIPO_BOOLEANO DEFAULT 0 NOT NULL, REGIMEN_IVA VARCHAR(255), MOTIVO_BLOQUEO VARCHAR(255), RECARGO_EQUIVALENCIA TIPO_BOOLEANO, ID_TIPO_IVA TIPO_ID, ID_FORMA_PAGO TIPO_ID, TIENDA_WEB TIPO_BOOLEANO, DESCUENTO TIPO_PORCENTAJE, CODIGO_ASIGNADO VARCHAR(255), IGNORAR_CONTABILIDAD TIPO_ID, TIENE_SUBCUENTA TIPO_ID, PROCEDENCIA_CLIENTE VARCHAR(255), VENCIMIENTO_FACTURAS_1 INTEGER, VENCIMIENTO_FACTURAS_2 INTEGER, VENCIMIENTO_FACTURAS_3 INTEGER ); CREATE TABLE CLIENTES_DTOS_PROVEEDORES ( ID TIPO_ID NOT NULL, ID_CLIENTE TIPO_ID DEFAULT 0 NOT NULL, ID_PROVEEDOR SMALLINT DEFAULT 0 NOT NULL, DESCUENTO TIPO_PORCENTAJE DEFAULT 0 ); CREATE TABLE CLIENTES_GRUPOS ( ID TIPO_ID NOT NULL, DESCRIPCION VARCHAR(255) ); CREATE TABLE CLIENTES_PROCEDENCIAS ( 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 TIPO_CONCEPTO NOT NULL, ID_EMPRESA TIPO_ID, VALOR_BLOB TIPO_NOTAS ); CREATE TABLE CONT_APUNTES ( ID TIPO_ID NOT NULL, ID_ASIENTO TIPO_ID, ID_SUBCUENTA TIPO_ID, NUM_ORDEN TIPO_ID, CONCEPTO VARCHAR(255), DOCUMENTO VARCHAR(255), PUNTEADO SMALLINT, DEBE TIPO_IMPORTE, HABER TIPO_IMPORTE ); CREATE TABLE CONT_ASIENTOS ( ID TIPO_ID NOT NULL, FECHA_ASIENTO DATE, ORDEN INTEGER, ID_FACTURA TIPO_ID, ID_PAGO TIPO_ID, TIPO VARCHAR(1) ); CREATE TABLE CONT_BALANCES ( ID TIPO_ID NOT NULL, REF_BALANCE VARCHAR(255), NATURALEZA VARCHAR(255), NIVEL1 TIPO_PERFIL, DESCRIPCION1 VARCHAR(255), NIVEL2 TIPO_PERFIL, DESCRIPCION2 VARCHAR(255), NIVEL3 TIPO_PERFIL, DESCRIPCION3 VARCHAR(255) ); CREATE TABLE CONT_CUENTAS ( ID TIPO_ID NOT NULL, REF_CUENTA VARCHAR(10), ID_EJERCICIO TIPO_ID, ID_EPIGRAFE TIPO_ID, DESCRIPCION VARCHAR(255), ID_BALANCE TIPO_ID, ID_CUENTA_ESPECIAL TIPO_ID ); CREATE TABLE CONT_CUENTAS_ESPECIALES ( ID TIPO_ID NOT NULL, REFERENCIA VARCHAR(6), DESCRIPCION VARCHAR(255) ); CREATE TABLE CONT_EJERCICIOS ( ID TIPO_ID NOT NULL, ID_EMPRESA TIPO_ID, NOMBRE VARCHAR(255), FECHA_INICIO DATE, FECHA_FIN DATE, ESTADO VARCHAR(255), LONG_SUB_CUENTA SMALLINT, ID_ASIENTO_APERTURA TIPO_ID, ID_ASIENTO_PERYGAN TIPO_ID, ID_ASIENTO_CIERRE TIPO_ID, ACTIVO SMALLINT ); CREATE TABLE CONT_EPIGRAFES ( ID TIPO_ID NOT NULL, REF_EPIGRAFE VARCHAR(6), ID_PADRE TIPO_ID, DESCRIPCION VARCHAR(255), ID_EJERCICIO TIPO_ID ); CREATE TABLE CONT_SUBCUENTAS ( ID TIPO_ID NOT NULL, REF_SUBCUENTA VARCHAR(15), DESCRIPCION VARCHAR(255), ID_CUENTA TIPO_ID, ID_EJERCICIO TIPO_ID, ID_CONTACTO TIPO_ID ); CREATE TABLE CONTACTOS ( ID TIPO_ID NOT NULL, NIF_CIF VARCHAR(15), NOMBRE VARCHAR(255) NOT NULL, CALLE VARCHAR(255), POBLACION VARCHAR(255), PROVINCIA VARCHAR(255), CODIGO_POSTAL VARCHAR(10), TELEFONO_1 VARCHAR(25), TELEFONO_2 VARCHAR(25), MOVIL_1 VARCHAR(25), MOVIL_2 VARCHAR(25), FAX VARCHAR(25), EMAIL_1 VARCHAR(255), EMAIL_2 VARCHAR(255), PAGINA_WEB VARCHAR(255), NOTAS TIPO_NOTAS, FECHA_ALTA TIMESTAMP, FECHA_MODIFICACION TIMESTAMP, USUARIO TIPO_USUARIO, REFERENCIA VARCHAR(255), PERSONA_CONTACTO VARCHAR(255), ID_TIENDA TIPO_ID ); CREATE TABLE CONTACTOS_CATEGORIAS ( ID_CONTACTO TIPO_ID NOT NULL, ID_CATEGORIA TIPO_ID NOT NULL ); 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_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_DIRECCIONES ( ID TIPO_ID NOT NULL, ID_CONTACTO TIPO_ID NOT NULL, NIF_CIF VARCHAR(15), CALLE VARCHAR(255), POBLACION VARCHAR(255), PROVINCIA VARCHAR(255), CODIGO_POSTAL VARCHAR(10), PERSONA_CONTACTO VARCHAR(255), NOMBRE VARCHAR(255), TELEFONO VARCHAR(25), MOVIL VARCHAR(25), FAX VARCHAR(25), EMAIL VARCHAR(255), NOTAS TIPO_NOTAS, PORTE TIPO_IMPORTE, FECHA_ALTA TIMESTAMP, FECHA_MODIFICACION TIMESTAMP ); CREATE TABLE VENDEDORES_DATOS( ID_VENDEDOR TIPO_ID NOT NULL, COMISION TIPO_PORCENTAJE, ID_USUARIO TIPO_ID); 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), ID_TIPO_IVA SMALLINT, ID_FORMA_PAGO 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) ); CREATE TABLE EMPRESAS_TIENDAS ( ID TIPO_ID NOT NULL, ID_EMPRESA 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, FECHA_ALTA TIMESTAMP, FECHA_MODIFICACION TIMESTAMP, CODIGO_CONTABLE VARCHAR(2) ); CREATE TABLE EMPRESAS_USUARIOS ( ID TIPO_ID NOT NULL, ID_EMPRESA TIPO_ID NOT NULL, ID_USUARIO TIPO_ID NOT NULL ); CREATE TABLE FACTURAS_CLIENTE ( ID TIPO_ID NOT NULL, ID_EMPRESA TIPO_ID, REFERENCIA 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_CLIENTE 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, ID_COMISION_LIQUIDADA TIPO_ID, IGNORAR_CONTABILIDAD SMALLINT, ID_TIENDA TIPO_ID, FECHA_VENCIMIENTO DATE, ID_DIRECCION TIPO_ID, ID_CONTRATO TIPO_ID, SIN_COMISION SMALLINT ); CREATE TABLE FACTURAS_CLIENTE_DETALLES ( ID TIPO_ID NOT NULL, ID_FACTURA TIPO_ID NOT NULL, POSICION INTEGER, TIPO_DETALLE VARCHAR(10), 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 FACTURAS_PROVEEDOR ( ID TIPO_ID NOT NULL, ID_EMPRESA TIPO_ID, REFERENCIA VARCHAR(255), REFERENCIA_PROVEEDOR VARCHAR(255), FECHA_FACTURA DATE, FECHA_VENCIMIENTO 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, IGNORAR_CONTABILIDAD SMALLINT, ID_TIENDA TIPO_ID ); CREATE TABLE FACTURAS_PROVEEDOR_DETALLES ( ID TIPO_ID NOT NULL, ID_FACTURA TIPO_ID NOT NULL, POSICION INTEGER, TIPO_DETALLE VARCHAR(10), 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 FACTURAS_PROVEEDOR_CONTRATOS ( ID TIPO_ID NOT NULL, ID_FACTURA TIPO_ID NOT NULL, ID_CONTRATO TIPO_ID NOT NULL, IMPORTE TIPO_IMPORTE ); CREATE TABLE FAMILIAS ( ID TIPO_ID NOT NULL, DESCRIPCION VARCHAR(255) ); CREATE TABLE FORMAS_PAGO ( ID TIPO_ID NOT NULL, REFERENCIA VARCHAR(255), DESCRIPCION VARCHAR(255), TITULAR VARCHAR(255), ENTIDAD VARCHAR(15), SUCURSAL VARCHAR(15), DC VARCHAR(15), CUENTA VARCHAR(15) ); CREATE TABLE FORMAS_PAGO_PLAZOS ( ID TIPO_ID NOT NULL, ID_FORMA_PAGO TIPO_ID NOT NULL, NUM_DIAS SMALLINT, PORCENTAJE TIPO_PORCENTAJE ); CREATE TABLE INFORMES ( ID SMALLINT NOT NULL, ID_EMPRESA TIPO_ID, CATEGORIA VARCHAR(30), CONTROLLER VARCHAR(255), ICONO SMALLINT, NOMBRE VARCHAR(50), DESCRIPCION VARCHAR(255), ORDEN SMALLINT, MODIFICABLE CHAR(1), VISTA BLOB SUB_TYPE 2 SEGMENT SIZE 4096 ); CREATE TABLE MOVIMIENTOS ( ID TIPO_ID NOT NULL, ID_ALMACEN TIPO_ID, ID_ARTICULO TIPO_ID, FECHA_MOVIMIENTO DATE, TIPO VARCHAR(1), CANTIDAD TIPO_CANTIDAD, CAUSA TIPO_CONCEPTO ); 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, IGNORAR_CONTABILIDAD SMALLINT ); 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, IGNORAR_CONTABILIDAD SMALLINT ); CREATE TABLE PEDIDOS_CLIENTE ( ID TIPO_ID NOT NULL, ID_EMPRESA TIPO_ID, ID_CLIENTE TIPO_ID, REFERENCIA VARCHAR(255), FECHA_PEDIDO DATE, CALLE VARCHAR(255), CODIGO_POSTAL VARCHAR(10), POBLACION VARCHAR(255), PROVINCIA VARCHAR(255), PERSONA_CONTACTO VARCHAR(255), TELEFONO VARCHAR(25), OBSERVACIONES TIPO_NOTAS, INCIDENCIAS TIPO_NOTAS, INCIDENCIAS_ACTIVAS SMALLINT DEFAULT 0 NOT NULL, FECHA_ALTA TIMESTAMP, FECHA_MODIFICACION TIMESTAMP, USUARIO TIPO_USUARIO, IMPORTE_NETO TIPO_IMPORTE, IMPORTE_PORTE TIPO_IMPORTE, DESCUENTO TIPO_PORCENTAJE, IMPORTE_DESCUENTO TIPO_IMPORTE, BASE_IMPONIBLE TIPO_IMPORTE, IVA TIPO_PORCENTAJE, IMPORTE_IVA TIPO_IMPORTE, IMPORTE_TOTAL TIPO_IMPORTE, ID_FORMA_PAGO TIPO_ID, REF_TIENDA_WEB INTEGER, FECHA_PREVISTA_ENVIO DATE, REFERENCIA_CLIENTE VARCHAR(255), ID_TIENDA TIPO_ID ); CREATE TABLE PEDIDOS_CLIENTE_DETALLES ( ID TIPO_ID NOT NULL, ID_PEDIDO TIPO_ID NOT NULL, POSICION INTEGER, TIPO_DETALLE VARCHAR(10), 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, REFERENCIA VARCHAR(255), FECHA_PEDIDO DATE, FECHA_CONFIRMACION DATE, FECHA_ENTREGA DATE, ID_ALMACEN 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_TIENDA TIPO_ID ); CREATE TABLE PEDIDOS_PROVEEDOR_DETALLES ( ID TIPO_ID NOT NULL, ID_PEDIDO TIPO_ID NOT NULL, POSICION INTEGER, TIPO_DETALLE VARCHAR(10), 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 PERMISOS ( ID TIPO_ID NOT NULL, ID_USUARIO TIPO_ID, MODULO VARCHAR(50), NOMBRECOMP VARCHAR(50), CHECKSUM VARCHAR(250) ); CREATE TABLE PERMISOSEX ( ID TIPO_ID NOT NULL, ID_USUARIO TIPO_ID, MODULO VARCHAR(50), NOMBRECOMP VARCHAR(50), NOMBREFORM VARCHAR(50), CHECKSUM VARCHAR(250) ); CREATE TABLE POBLACIONES ( ID TIPO_ID NOT NULL, ID_PROVINCIA TIPO_ID NOT NULL, DESCRIPCION VARCHAR(255) NOT NULL ); CREATE TABLE PRESUPUESTOS_CLIENTE_CAPITULOS ( ID TIPO_ID NOT NULL, POSICION INTEGER, TIPO_DETALLE VARCHAR(10), TIPO_ARTICULO VARCHAR(2) COLLATE ES_ES, ID_ARTICULO TIPO_ID, CONCEPTO TIPO_CONCEPTO ); CREATE TABLE PRESUPUESTOS_VALORES ( ID TIPO_ID NOT NULL, ID_PROPIEDAD TIPO_ID, DESCRIPCION TIPO_CONCEPTO ); CREATE TABLE PRESUPUESTOS_PROPIEDADES ( ID TIPO_ID NOT NULL, DESCRIPCION VARCHAR(50), ID_PADRE TIPO_ID ); CREATE TABLE PRESUPUESTOS_CLIENTE ( ID TIPO_ID NOT NULL, ID_EMPRESA TIPO_ID, ID_CLIENTE TIPO_ID, REFERENCIA VARCHAR(255), FECHA_PRESUPUESTO DATE, FECHA_VIGENCIA DATE, FECHA_DECISION DATE, SITUACION VARCHAR(255), FORMA_PAGO TIPO_NOTAS, PLAZO_ENTREGA 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, ID_TIENDA TIPO_ID, ID_VENDEDOR TIPO_ID, ID_DIRECCION TIPO_ID, ID_TIPO_IVA TIPO_ID, PERSONA_CONTACTO VARCHAR(255) COLLATE ES_ES, RECARGO_EQUIVALENCIA TIPO_BOOLEANO, RE TIPO_PORCENTAJE, IMPORTE_RE TIPO_IMPORTE, ID_CONTRATO TIPO_ID, NO_VALORADO TIPO_BOOLEANO, TIPO_PRESUPUESTO VARCHAR(255) ); CREATE TABLE PRESUPUESTOS_CLIENTE_DETALLES ( ID TIPO_ID NOT NULL, ID_PRESUPUESTO TIPO_ID NOT NULL, POSICION INTEGER, TIPO_DETALLE VARCHAR(10), ID_ARTICULO TIPO_ID, TIPO_ARTICULO VARCHAR(2) COLLATE ES_ES, 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 CONTRATOS_CLIENTE ( ID TIPO_ID NOT NULL, ID_EMPRESA TIPO_ID, 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), TELEFONO VARCHAR(25), MOVIL VARCHAR(25), REFERENCIA VARCHAR(255), FECHA_CONTRATO DATE, SITUACION VARCHAR(255), FORMA_PAGO TIPO_NOTAS, PLAZO_ENTREGA 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, ID_TIENDA TIPO_ID, ID_VENDEDOR TIPO_ID, ID_TIPO_IVA TIPO_ID, PERSONA_CONTACTO VARCHAR(255) COLLATE ES_ES, RECARGO_EQUIVALENCIA TIPO_BOOLEANO, RE TIPO_PORCENTAJE, IMPORTE_RE TIPO_IMPORTE, TIPO_CONTRATO VARCHAR(255) ); CREATE TABLE CONTRATOS_CLIENTE_DETALLES ( ID TIPO_ID NOT NULL, ID_CONTRATO TIPO_ID NOT NULL, POSICION INTEGER, TIPO_DETALLE VARCHAR(10), ID_ARTICULO TIPO_ID, TIPO_ARTICULO VARCHAR(2) COLLATE ES_ES, 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 PROVEEDORES_DATOS ( ID_PROVEEDOR TIPO_ID NOT NULL, DESCUENTO TIPO_PORCENTAJE, REGIMEN_IVA VARCHAR(255), ID_TIPO_IVA TIPO_ID, ID_FORMA_PAGO TIPO_ID, TIENDA_WEB TIPO_BOOLEANO, GRUPO_PROVEEDOR VARCHAR(255), DESCRIPCION_PROVEEDOR VARCHAR(255), CODIGO_ASIGNADO VARCHAR(255), CERTIFICACION VARCHAR(255), HOMOLOGADO SMALLINT, IGNORAR_CONTABILIDAD TIPO_ID, TIENE_SUBCUENTA TIPO_ID, NOMBRE_COMERCIAL VARCHAR(255), ES_ACREEDOR SMALLINT, VENCIMIENTO_FACTURAS_1 INTEGER, VENCIMIENTO_FACTURAS_2 INTEGER, VENCIMIENTO_FACTURAS_3 INTEGER ); 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_EMPRESA TIPO_ID, ID_CLIENTE TIPO_ID, 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, ID_TIENDA TIPO_ID, NIF_CIF VARCHAR(15), NOMBRE VARCHAR(255), CALLE VARCHAR(255), POBLACION VARCHAR(255), PROVINCIA VARCHAR(255), CODIGO_POSTAL VARCHAR(10) ); CREATE TABLE RECIBOS_PROVEEDOR ( ID TIPO_ID NOT NULL, ID_EMPRESA TIPO_ID, ID_PROVEEDOR TIPO_ID, 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, ID_TIENDA TIPO_ID, NIF_CIF VARCHAR(15), NOMBRE VARCHAR(255), CALLE VARCHAR(255), POBLACION VARCHAR(255), PROVINCIA VARCHAR(255), CODIGO_POSTAL VARCHAR(10) ); CREATE TABLE REFERENCIAS ( ID TIPO_ID NOT NULL, ID_EMPRESA TIPO_ID, ID_TIENDA TIPO_ID, CODIGO VARCHAR(50) NOT NULL, VALOR VARCHAR(255) NOT NULL, DESCRIPCION VARCHAR(255) ); CREATE TABLE REMESAS_CLIENTE ( ID TIPO_ID NOT NULL, ID_EMPRESA TIPO_ID, REFERENCIA VARCHAR(255), FECHA_REMESA DATE, IMPORTE_TOTAL TIPO_IMPORTE, DESCRIPCION VARCHAR(255), FECHA_ALTA DATE, FECHA_MODIFICACION DATE, USUARIO TIPO_USUARIO, ID_DATOS_BANCO TIPO_ID, TIPO VARCHAR(40) ); CREATE TABLE REMESAS_PROVEEDOR ( ID TIPO_ID NOT NULL, ID_EMPRESA TIPO_ID, REFERENCIA VARCHAR(255), FECHA_REMESA DATE, IMPORTE_TOTAL TIPO_IMPORTE, DESCRIPCION VARCHAR(255), FECHA_ALTA DATE, FECHA_MODIFICACION DATE, USUARIO TIPO_USUARIO, ID_DATOS_BANCO TIPO_ID, TIPO VARCHAR(40) ); CREATE TABLE TIENDA_WEB ( ID TIPO_ID NOT NULL, ID_EMPRESA TIPO_ID NOT NULL, TIENDA_ACTIVA TIPO_BOOLEANO DEFAULT 0 NOT NULL, ULTIMA_ACTUALIZACION TIMESTAMP, BDSERVER VARCHAR(255), BDPORT VARCHAR(20), BDNAME VARCHAR(255), BDUSER VARCHAR(255), BDPASS VARCHAR(255) ); CREATE TABLE TIPOS_IVA ( ID TIPO_ID NOT NULL, REFERENCIA VARCHAR(255), DESCRIPCION VARCHAR(255), IVA TIPO_PORCENTAJE, RE TIPO_PORCENTAJE ); CREATE TABLE UNIDADES_MEDIDA ( ID TIPO_ID NOT NULL, DESCRIPCION VARCHAR(255) ); CREATE TABLE USUARIOS ( ID TIPO_ID NOT NULL, USERNAME VARCHAR(30), LOGIN TIPO_USUARIO, PASS VARCHAR(250), PASSEXPIRED DATE, BLOQUEADO TIPO_BOOLEANO, EMAIL VARCHAR(150), USERDAYSSUN INTEGER, PRIVILEGED INTEGER, TIPO CHAR(1), ID_PERFIL TIPO_ID, CHECKSUM VARCHAR(250) ); CREATE TABLE USUARIOS_EVENTOS ( APLICACION VARCHAR(250), ID_USUARIO TIPO_ID, FECHA CHAR(10), HORA CHAR(8), FORM VARCHAR(250), TITULO_FORM VARCHAR(100), EVENTO VARCHAR(50), NOTAS TIPO_NOTAS, TNAME VARCHAR(20) ); CREATE TABLE USUARIOS_LOGON ( LOGONID CHAR(38) NOT NULL, ID_USUARIO TIPO_ID, APLICACION VARCHAR(50), EQUIPO VARCHAR(50), DATA VARCHAR(14) ); /******************************************************************************/ /**** Views ****/ /******************************************************************************/ /* View: V_ALB_CLI_SITUACION */ CREATE VIEW V_ALB_CLI_SITUACION( ID, SITUACION) AS SELECT ALBARANES_CLIENTE.ID, case when (FECHA_RECEPCION is not null) then 'SERVIDO' when (FECHA_ENVIO is null) then 'PENDIENTE' when (FECHA_ENVIO <= current_date) then 'ENVIADO' when (FECHA_ENVIO > current_date) then 'PENDIENTE' else 'N/A' end as SITUACION FROM ALBARANES_CLIENTE ; /* View: V_ALB_CLI_DETALLES */ CREATE VIEW V_ALB_CLI_DETALLES( ID_ALBARAN, ID_PEDIDO, SITUACION, ID_ALMACEN, ID_ARTICULO, CANTIDAD) AS SELECT ALBARANES_CLIENTE_DETALLES.ID_ALBARAN, ALBARANES_CLIENTE.ID_PEDIDO, V_ALB_CLI_SITUACION.SITUACION, ALBARANES_CLIENTE.ID_ALMACEN, COALESCE(ALBARANES_CLIENTE_DETALLES.ID_ARTICULO, 0), SUM(COALESCE(ALBARANES_CLIENTE_DETALLES.CANTIDAD, 0)) FROM ALBARANES_CLIENTE_DETALLES INNER JOIN ALBARANES_CLIENTE ON (ALBARANES_CLIENTE_DETALLES.ID_ALBARAN = ALBARANES_CLIENTE.ID) INNER JOIN V_ALB_CLI_SITUACION ON (ALBARANES_CLIENTE_DETALLES.ID_ALBARAN = V_ALB_CLI_SITUACION.ID) /*Mantenemos los articulos inventariables y aquellos que no existan en nuestro catálogo con el fin de no falsear la situación de los pedidos LEFT JOIN ARTICULOS ON (ALBARANES_CLIENTE_DETALLES.ID_ARTICULO = ARTICULOS.ID) WHERE (ALBARANES_CLIENTE_DETALLES.ID_ARTICULO is not null) AND (ARTICULOS.INVENTARIABLE = 1) */ group BY ALBARANES_CLIENTE_DETALLES.ID_ALBARAN, ALBARANES_CLIENTE.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, CANTIDAD) AS SELECT ALBARANES_PROVEEDOR_DETALLES.ID_ALBARAN, ALBARANES_PROVEEDOR.ID_PEDIDO, ALBARANES_PROVEEDOR.ID_ALMACEN, COALESCE(ALBARANES_PROVEEDOR_DETALLES.ID_ARTICULO, 0), SUM (COALESCE(ALBARANES_PROVEEDOR_DETALLES.CANTIDAD, 0)) AS CANTIDAD FROM ALBARANES_PROVEEDOR_DETALLES INNER JOIN ALBARANES_PROVEEDOR ON (ALBARANES_PROVEEDOR_DETALLES.ID_ALBARAN = ALBARANES_PROVEEDOR.ID) /*Mantenemos los articulos inventariables y aquellos que no existan en nuestro catálogo con el fin de no falsear la situación de los pedidos LEFT JOIN ARTICULOS ON (ALBARANES_PROVEEDOR_DETALLES.ID_ARTICULO = ARTICULOS.ID) WHERE (ALBARANES_PROVEEDOR_DETALLES.ID_ARTICULO is not null) AND (ARTICULOS.INVENTARIABLE = 1) */ GROUP BY ALBARANES_PROVEEDOR_DETALLES.ID_ALBARAN, ALBARANES_PROVEEDOR.ID_PEDIDO, ALBARANES_PROVEEDOR.ID_ALMACEN, ALBARANES_PROVEEDOR_DETALLES.ID_ARTICULO ; /* View: V_ALBARANES_CLIENTE */ CREATE VIEW V_ALBARANES_CLIENTE( ID, ID_EMPRESA, ID_CLIENTE, NOMBRE, FECHA_ALBARAN, REFERENCIA, REFERENCIA_CLIENTE, TIPO, SITUACION, ID_ALMACEN, NOMBRE_ALMACEN, ID_PEDIDO, REF_PEDIDO, ID_FACTURA, REF_FACTURA, ID_DIRECCION, CALLE, CODIGO_POSTAL, POBLACION, PROVINCIA, PERSONA_CONTACTO, TELEFONO, MOVIL, IMPORTE_NETO, IMPORTE_PORTE, DESCUENTO, IMPORTE_DESCUENTO, BASE_IMPONIBLE, ID_TIPO_IVA, 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_TIENDA, TIENDA) AS SELECT ALBARANES_CLIENTE.ID, ALBARANES_CLIENTE.ID_EMPRESA, ALBARANES_CLIENTE.ID_CLIENTE, CONTACTOS.NOMBRE, ALBARANES_CLIENTE.FECHA_ALBARAN, ALBARANES_CLIENTE.REFERENCIA, ALBARANES_CLIENTE.REFERENCIA_CLIENTE, ALBARANES_CLIENTE.TIPO, TRIM(V_ALB_CLI_SITUACION.SITUACION), ALBARANES_CLIENTE.ID_ALMACEN, ALMACENES.NOMBRE AS NOMBRE_ALMACEN, ALBARANES_CLIENTE.ID_PEDIDO, PEDIDOS_CLIENTE.REFERENCIA AS REF_PEDIDO, ALBARANES_CLIENTE.ID_FACTURA, FACTURAS_CLIENTE.REFERENCIA AS REF_FACTURA, ALBARANES_CLIENTE.ID_DIRECCION, ALBARANES_CLIENTE.CALLE, ALBARANES_CLIENTE.CODIGO_POSTAL, ALBARANES_CLIENTE.POBLACION, ALBARANES_CLIENTE.PROVINCIA, ALBARANES_CLIENTE.PERSONA_CONTACTO, ALBARANES_CLIENTE.TELEFONO, ALBARANES_CLIENTE.MOVIL, ALBARANES_CLIENTE.IMPORTE_NETO, ALBARANES_CLIENTE.IMPORTE_PORTE, ALBARANES_CLIENTE.DESCUENTO, ALBARANES_CLIENTE.IMPORTE_DESCUENTO, ALBARANES_CLIENTE.BASE_IMPONIBLE, ALBARANES_CLIENTE.ID_TIPO_IVA, 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, ALBARANES_CLIENTE.ID_TIENDA, COALESCE(EMPRESAS_TIENDAS.NOMBRE, 'Todas') AS TIENDA FROM ALBARANES_CLIENTE INNER JOIN CONTACTOS ON (CONTACTOS.ID = ALBARANES_CLIENTE.ID_CLIENTE) INNER JOIN V_ALB_CLI_SITUACION ON (V_ALB_CLI_SITUACION.ID = ALBARANES_CLIENTE.ID) 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 EMPRESAS_TIENDAS ON (EMPRESAS_TIENDAS.ID = ALBARANES_CLIENTE.ID_TIENDA) ; /* View: V_ALBARANES_PROVEEDOR */ CREATE VIEW V_ALBARANES_PROVEEDOR( ID, ID_EMPRESA, ID_PROVEEDOR, NOMBRE, FECHA_ALBARAN, REFERENCIA, REFERENCIA_PROVEEDOR, TIPO, ID_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, ID_TIPO_IVA, IVA, IMPORTE_IVA, IMPORTE_TOTAL, OBSERVACIONES, INCIDENCIAS, INCIDENCIAS_ACTIVAS, FECHA_ALTA, FECHA_MODIFICACION, USUARIO, ID_FORMA_PAGO, ID_TIENDA, TIENDA) AS SELECT ALBARANES_PROVEEDOR.ID, ALBARANES_PROVEEDOR.ID_EMPRESA, ALBARANES_PROVEEDOR.ID_PROVEEDOR, CONTACTOS.NOMBRE, ALBARANES_PROVEEDOR.FECHA_ALBARAN, ALBARANES_PROVEEDOR.REFERENCIA, ALBARANES_PROVEEDOR.REFERENCIA_PROVEEDOR, ALBARANES_PROVEEDOR.TIPO, ALBARANES_PROVEEDOR.ID_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.ID_TIPO_IVA, ALBARANES_PROVEEDOR.IVA, ALBARANES_PROVEEDOR.IMPORTE_IVA, ALBARANES_PROVEEDOR.IMPORTE_TOTAL, ALBARANES_PROVEEDOR.OBSERVACIONES, ALBARANES_PROVEEDOR.INCIDENCIAS, ALBARANES_PROVEEDOR.INCIDENCIAS_ACTIVAS, ALBARANES_PROVEEDOR.FECHA_ALTA, ALBARANES_PROVEEDOR.FECHA_MODIFICACION, ALBARANES_PROVEEDOR.USUARIO, ALBARANES_PROVEEDOR.ID_FORMA_PAGO, ALBARANES_PROVEEDOR.ID_TIENDA, COALESCE(EMPRESAS_TIENDAS.NOMBRE, 'Todas') AS TIENDA FROM ALBARANES_PROVEEDOR INNER JOIN CONTACTOS ON (CONTACTOS.ID = ALBARANES_PROVEEDOR.ID_PROVEEDOR) LEFT OUTER JOIN PEDIDOS_PROVEEDOR ON (PEDIDOS_PROVEEDOR.ID = ALBARANES_PROVEEDOR.ID_PEDIDO) LEFT OUTER JOIN FACTURAS_PROVEEDOR ON (FACTURAS_PROVEEDOR.ID = ALBARANES_PROVEEDOR.ID_FACTURA) LEFT OUTER JOIN ALMACENES ON (ALMACENES.ID = ALBARANES_PROVEEDOR.ID_ALMACEN) LEFT OUTER JOIN EMPRESAS_TIENDAS ON (EMPRESAS_TIENDAS.ID = ALBARANES_PROVEEDOR.ID_TIENDA) ; /* View: V_ARTICULOS */ 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) 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 FROM ARTICULOS LEFT OUTER JOIN CONTACTOS ON (CONTACTOS.ID = ARTICULOS.ID_PROVEEDOR) WHERE (ARTICULOS.ELIMINADO = 0) ; /* View: V_CONTACTOS */ CREATE VIEW V_CONTACTOS( ID, ID_CATEGORIA, NIF_CIF, NOMBRE, PERSONA_CONTACTO, CALLE, POBLACION, PROVINCIA, CODIGO_POSTAL, TELEFONO_1, TELEFONO_2, MOVIL_1, MOVIL_2, FAX, EMAIL_1, EMAIL_2, PAGINA_WEB, NOTAS, FECHA_ALTA, FECHA_MODIFICACION, USUARIO, ID_EMPRESA, REFERENCIA, ID_TIENDA, TIENDA) AS SELECT CONTACTOS.ID, CONTACTOS_CATEGORIAS.ID_CATEGORIA, CONTACTOS.NIF_CIF, CONTACTOS.NOMBRE, CONTACTOS.PERSONA_CONTACTO, CONTACTOS.CALLE, CONTACTOS.POBLACION, CONTACTOS.PROVINCIA, CONTACTOS.CODIGO_POSTAL, CONTACTOS.TELEFONO_1, CONTACTOS.TELEFONO_2, CONTACTOS.MOVIL_1, CONTACTOS.MOVIL_2, CONTACTOS.FAX, CONTACTOS.EMAIL_1, CONTACTOS.EMAIL_2, CONTACTOS.PAGINA_WEB, CONTACTOS.NOTAS, CONTACTOS.FECHA_ALTA, CONTACTOS.FECHA_MODIFICACION, CONTACTOS.USUARIO, EMPRESAS_CONTACTOS.ID_EMPRESA, CONTACTOS.REFERENCIA, CONTACTOS.ID_TIENDA, COALESCE(EMPRESAS_TIENDAS.NOMBRE, 'Todas') as TIENDA 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 EMPRESAS_TIENDAS ON (EMPRESAS_TIENDAS.ID = CONTACTOS.ID_TIENDA) ; /* View: V_CLIENTES */ CREATE VIEW V_CLIENTES( ID, ID_CATEGORIA, NIF_CIF, NOMBRE, PERSONA_CONTACTO, CALLE, POBLACION, PROVINCIA, CODIGO_POSTAL, TELEFONO_1, TELEFONO_2, MOVIL_1, MOVIL_2, FAX, EMAIL_1, EMAIL_2, PAGINA_WEB, NOTAS, FECHA_ALTA, FECHA_MODIFICACION, USUARIO, ID_EMPRESA, REFERENCIA, ID_TIENDA, TIENDA, GRUPO_CLIENTE, NOMBRE_COMERCIAL, BLOQUEADO, REGIMEN_IVA, MOTIVO_BLOQUEO, RECARGO_EQUIVALENCIA, ID_TIPO_IVA, ID_FORMA_PAGO, TIENDA_WEB, CODIGO_ASIGNADO, IGNORAR_CONTABILIDAD, TIENE_SUBCUENTA, PROCEDENCIA_CLIENTE, VENCIMIENTO_FACTURAS_1, VENCIMIENTO_FACTURAS_2, VENCIMIENTO_FACTURAS_3) AS SELECT V_CONTACTOS.ID, V_CONTACTOS.ID_CATEGORIA, V_CONTACTOS.NIF_CIF, V_CONTACTOS.NOMBRE, V_CONTACTOS.PERSONA_CONTACTO, V_CONTACTOS.CALLE, V_CONTACTOS.POBLACION, V_CONTACTOS.PROVINCIA, V_CONTACTOS.CODIGO_POSTAL, V_CONTACTOS.TELEFONO_1, V_CONTACTOS.TELEFONO_2, V_CONTACTOS.MOVIL_1, V_CONTACTOS.MOVIL_2, V_CONTACTOS.FAX, V_CONTACTOS.EMAIL_1, V_CONTACTOS.EMAIL_2, V_CONTACTOS.PAGINA_WEB, V_CONTACTOS.NOTAS, V_CONTACTOS.FECHA_ALTA, V_CONTACTOS.FECHA_MODIFICACION, V_CONTACTOS.USUARIO, V_CONTACTOS.ID_EMPRESA, V_CONTACTOS.REFERENCIA, V_CONTACTOS.ID_TIENDA, V_CONTACTOS.TIENDA, CLIENTES_DATOS.GRUPO_CLIENTE, CLIENTES_DATOS.NOMBRE_COMERCIAL, CLIENTES_DATOS.BLOQUEADO, CLIENTES_DATOS.REGIMEN_IVA, CLIENTES_DATOS.MOTIVO_BLOQUEO, CLIENTES_DATOS.RECARGO_EQUIVALENCIA, CLIENTES_DATOS.ID_TIPO_IVA, CLIENTES_DATOS.ID_FORMA_PAGO, CLIENTES_DATOS.TIENDA_WEB, CLIENTES_DATOS.CODIGO_ASIGNADO, CLIENTES_DATOS.IGNORAR_CONTABILIDAD, CLIENTES_DATOS.TIENE_SUBCUENTA, CLIENTES_DATOS.PROCEDENCIA_CLIENTE, CLIENTES_DATOS.VENCIMIENTO_FACTURAS_1, CLIENTES_DATOS.VENCIMIENTO_FACTURAS_2, CLIENTES_DATOS.VENCIMIENTO_FACTURAS_3 FROM V_CONTACTOS LEFT OUTER JOIN CLIENTES_DATOS ON (V_CONTACTOS.ID = CLIENTES_DATOS.ID_CLIENTE) WHERE V_CONTACTOS.ID_CATEGORIA = 1 ; /* View: V_PROVEEDORES */ CREATE VIEW V_PROVEEDORES( ID, ID_CATEGORIA, NIF_CIF, NOMBRE, PERSONA_CONTACTO, CALLE, POBLACION, PROVINCIA, CODIGO_POSTAL, TELEFONO_1, TELEFONO_2, MOVIL_1, MOVIL_2, FAX, EMAIL_1, EMAIL_2, PAGINA_WEB, NOTAS, FECHA_ALTA, FECHA_MODIFICACION, USUARIO, ID_EMPRESA, REFERENCIA, ID_TIENDA, TIENDA, DESCUENTO, DESCRIPCION_PROVEEDOR, CODIGO_ASIGNADO, GRUPO_PROVEEDOR, REGIMEN_IVA, ID_TIPO_IVA, ID_FORMA_PAGO, TIENDA_WEB, HOMOLOGADO, CERTIFICACION, IGNORAR_CONTABILIDAD, TIENE_SUBCUENTA, NOMBRE_COMERCIAL, ES_ACREEDOR, VENCIMIENTO_FACTURAS_1, VENCIMIENTO_FACTURAS_2, VENCIMIENTO_FACTURAS_3) AS SELECT V_CONTACTOS.ID, V_CONTACTOS.ID_CATEGORIA, V_CONTACTOS.NIF_CIF, V_CONTACTOS.NOMBRE, V_CONTACTOS.PERSONA_CONTACTO, V_CONTACTOS.CALLE, V_CONTACTOS.POBLACION, V_CONTACTOS.PROVINCIA, V_CONTACTOS.CODIGO_POSTAL, V_CONTACTOS.TELEFONO_1, V_CONTACTOS.TELEFONO_2, V_CONTACTOS.MOVIL_1, V_CONTACTOS.MOVIL_2, V_CONTACTOS.FAX, V_CONTACTOS.EMAIL_1, V_CONTACTOS.EMAIL_2, V_CONTACTOS.PAGINA_WEB, V_CONTACTOS.NOTAS, V_CONTACTOS.FECHA_ALTA, V_CONTACTOS.FECHA_MODIFICACION, V_CONTACTOS.USUARIO, V_CONTACTOS.ID_EMPRESA, V_CONTACTOS.REFERENCIA, V_CONTACTOS.ID_TIENDA, V_CONTACTOS.TIENDA, 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.IGNORAR_CONTABILIDAD, PROVEEDORES_DATOS.TIENE_SUBCUENTA, PROVEEDORES_DATOS.NOMBRE_COMERCIAL, PROVEEDORES_DATOS.ES_ACREEDOR, PROVEEDORES_DATOS.VENCIMIENTO_FACTURAS_1, PROVEEDORES_DATOS.VENCIMIENTO_FACTURAS_2, PROVEEDORES_DATOS.VENCIMIENTO_FACTURAS_3 FROM PROVEEDORES_DATOS INNER JOIN V_CONTACTOS ON (PROVEEDORES_DATOS.ID_PROVEEDOR = V_CONTACTOS.ID) WHERE V_CONTACTOS.ID_CATEGORIA = 2 ; /* View: V_CONT_CUENTAS */ CREATE VIEW V_CONT_CUENTAS( ID, REF_CUENTA, ID_EJERCICIO, ESTADO, DESCRIPCION, ID_EPIGRAFE, EPIGRAFE, ID_BALANCE, BALANCE, ID_CUENTA_ESPECIAL, CUENTA_ESPECIAL) AS select CONT_CUENTAS.ID, CONT_CUENTAS.REF_CUENTA, CONT_CUENTAS.ID_EJERCICIO, CONT_EJERCICIOS.ESTADO, CONT_CUENTAS.DESCRIPCION, CONT_CUENTAS.ID_EPIGRAFE, CONT_EPIGRAFES.DESCRIPCION as EPIGRAFE, CONT_CUENTAS.ID_BALANCE, CONT_BALANCES.REF_BALANCE as BALANCE, CONT_CUENTAS.ID_CUENTA_ESPECIAL, CONT_CUENTAS_ESPECIALES.DESCRIPCION as CUENTA_ESPECIAL from CONT_CUENTAS left join CONT_EPIGRAFES on (CONT_EPIGRAFES.ID = CONT_CUENTAS.ID_EPIGRAFE) left join CONT_BALANCES on (CONT_BALANCES.ID = CONT_CUENTAS.ID_BALANCE) left join CONT_CUENTAS_ESPECIALES on (CONT_CUENTAS_ESPECIALES.ID = CONT_CUENTAS.ID_CUENTA_ESPECIAL) left join CONT_EJERCICIOS on (CONT_EJERCICIOS.ID = CONT_CUENTAS.ID_EJERCICIO); /* View: V_CONT_DIARIO */ CREATE VIEW V_CONT_DIARIO( ID_APUNTE, ID_ASIENTO, ID_FACTURA, ID_PAGO, TIPO, ORDEN_ASIENTO, FECHA_ASIENTO, ID_SUBCUENTA, REF_SUBCUENTA, SUBCUENTA, ID_EJERCICIO, ESTADO, CONCEPTO, DOCUMENTO, DEBE, HABER, PUNTEADO) AS SELECT CONT_APUNTES.ID, CONT_APUNTES.ID_ASIENTO, CONT_ASIENTOS.ID_FACTURA, CONT_ASIENTOS.ID_PAGO, CONT_ASIENTOS.TIPO, CONT_ASIENTOS.ORDEN, CONT_ASIENTOS.FECHA_ASIENTO, CONT_APUNTES.ID_SUBCUENTA, CONT_SUBCUENTAS.REF_SUBCUENTA as REF_SUBCUENTA, CONT_SUBCUENTAS.DESCRIPCION as SUBCUENTA, CONT_SUBCUENTAS.ID_EJERCICIO, CONT_EJERCICIOS.ESTADO, CONT_APUNTES.CONCEPTO, CONT_APUNTES.DOCUMENTO, CONT_APUNTES.DEBE, CONT_APUNTES.HABER, CONT_APUNTES.PUNTEADO FROM CONT_APUNTES LEFT JOIN CONT_ASIENTOS ON (CONT_ASIENTOS.ID = CONT_APUNTES.ID_ASIENTO) LEFT JOIN CONT_SUBCUENTAS ON (CONT_SUBCUENTAS.ID = CONT_APUNTES.ID_SUBCUENTA) LEFT JOIN CONT_EJERCICIOS ON (CONT_EJERCICIOS.ID = CONT_SUBCUENTAS.ID_EJERCICIO) order by CONT_ASIENTOS.FECHA_ASIENTO desc, CONT_ASIENTOS.ORDEN desc ; /* View: V_CONT_EPIGRAFES */ CREATE VIEW V_CONT_EPIGRAFES( ID, REF_EPIGRAFE, DESCRIPCION, ID_EJERCICIO, ESTADO, ID_PADRE, EPIGRAFE_PADRE) AS select CONT_EPI1.ID, CONT_EPI1.REF_EPIGRAFE, CONT_EPI1.DESCRIPCION, CONT_EPI1.ID_EJERCICIO, CONT_EJERCICIOS.ESTADO, CONT_EPI1.ID_PADRE, CONT_EPI2.DESCRIPCION as EPIGRAFE_PADRE from CONT_EPIGRAFES CONT_EPI1 left join CONT_EPIGRAFES CONT_EPI2 on (CONT_EPI2.ID = CONT_EPI1.ID_PADRE) left join CONT_EJERCICIOS on (CONT_EJERCICIOS.ID = CONT_EPI1.ID_EJERCICIO) ; /* View: V_CONT_FAC_CLI_VENTAS */ CREATE VIEW V_CONT_FAC_CLI_VENTAS( ID_FACTURA, ID_SUBCUENTA, SUBCUENTA, ID_EJERCICIO, ESTADO_EJERCICIO, ASIENTO_PUNTEADO) AS select CONT_ASIENTOS.ID_FACTURA, CONT_SUBCUENTAS.ID as ID_SUBCUENTA, CONT_SUBCUENTAS.DESCRIPCION as SUBCUENTA, CONT_SUBCUENTAS.ID_EJERCICIO, CONT_EJERCICIOS.ESTADO, CONT_APUNTES.PUNTEADO from CONT_ASIENTOS LEFT JOIN CONT_APUNTES ON (CONT_APUNTES.ID_ASIENTO = CONT_ASIENTOS.ID) LEFT JOIN CONT_SUBCUENTAS ON (CONT_SUBCUENTAS.ID = CONT_APUNTES.ID_SUBCUENTA) LEFT JOIN CONT_CUENTAS ON (CONT_CUENTAS.ID = CONT_SUBCUENTAS.ID_CUENTA) LEFT JOIN CONT_EJERCICIOS ON (CONT_EJERCICIOS.ID = CONT_SUBCUENTAS.ID_EJERCICIO) left join CONT_EPIGRAFES CONT_EPI1 on (CONT_EPI1.ID = CONT_CUENTAS.ID_EPIGRAFE) left join CONT_EPIGRAFES CONT_EPI2 on (CONT_EPI2.ID = CONT_EPI1.ID_PADRE) /* Solo sacaremos aquellas tuplas de apuntes cuya subcuenta contable pertenezca ventas*/ where (CONT_ASIENTOS.ID_FACTURA is not null) and (CONT_ASIENTOS.TIPO = 'c') and (COALESCE(CONT_EPI2.REF_EPIGRAFE, CONT_EPI1.REF_EPIGRAFE) = 7) ; CREATE VIEW V_CONT_PAGOS_CLI_VENTAS( ID_PAGO, ID_SUBCUENTA, SUBCUENTA, ID_EJERCICIO, ESTADO_EJERCICIO, ASIENTO_PUNTEADO) AS select CONT_ASIENTOS.ID_PAGO, CONT_SUBCUENTAS.ID as ID_SUBCUENTA, CONT_SUBCUENTAS.DESCRIPCION as SUBCUENTA, CONT_SUBCUENTAS.ID_EJERCICIO, CONT_EJERCICIOS.ESTADO, CONT_APUNTES.PUNTEADO from CONT_ASIENTOS LEFT JOIN CONT_APUNTES ON (CONT_APUNTES.ID_ASIENTO = CONT_ASIENTOS.ID) LEFT JOIN CONT_SUBCUENTAS ON (CONT_SUBCUENTAS.ID = CONT_APUNTES.ID_SUBCUENTA) LEFT JOIN CONT_CUENTAS ON (CONT_CUENTAS.ID = CONT_SUBCUENTAS.ID_CUENTA) LEFT JOIN CONT_EJERCICIOS ON (CONT_EJERCICIOS.ID = CONT_SUBCUENTAS.ID_EJERCICIO) left join CONT_EPIGRAFES CONT_EPI1 on (CONT_EPI1.ID = CONT_CUENTAS.ID_EPIGRAFE) left join CONT_EPIGRAFES CONT_EPI2 on (CONT_EPI2.ID = CONT_EPI1.ID_PADRE) /* Solo sacaremos aquellas tuplas de apuntes cuya subcuenta contable pertenezca ventas*/ where (CONT_ASIENTOS.ID_PAGO is not null) and (CONT_ASIENTOS.TIPO = 'c') and (COALESCE(CONT_EPI2.REF_EPIGRAFE, CONT_EPI1.REF_EPIGRAFE) = 5); /* View: V_CONT_FAC_PRO_COMPRAS */ CREATE VIEW V_CONT_FAC_PRO_COMPRAS( ID_FACTURA, ID_SUBCUENTA, SUBCUENTA, ID_EJERCICIO, ESTADO_EJERCICIO, ASIENTO_PUNTEADO) AS select CONT_ASIENTOS.ID_FACTURA, CONT_SUBCUENTAS.ID as ID_SUBCUENTA, CONT_SUBCUENTAS.DESCRIPCION as SUBCUENTA, CONT_SUBCUENTAS.ID_EJERCICIO, CONT_EJERCICIOS.ESTADO, CONT_APUNTES.PUNTEADO from CONT_ASIENTOS LEFT JOIN CONT_APUNTES ON (CONT_APUNTES.ID_ASIENTO = CONT_ASIENTOS.ID) LEFT JOIN CONT_SUBCUENTAS ON (CONT_SUBCUENTAS.ID = CONT_APUNTES.ID_SUBCUENTA) LEFT JOIN CONT_CUENTAS ON (CONT_CUENTAS.ID = CONT_SUBCUENTAS.ID_CUENTA) LEFT JOIN CONT_EJERCICIOS ON (CONT_EJERCICIOS.ID = CONT_SUBCUENTAS.ID_EJERCICIO) left join CONT_EPIGRAFES CONT_EPI1 on (CONT_EPI1.ID = CONT_CUENTAS.ID_EPIGRAFE) left join CONT_EPIGRAFES CONT_EPI2 on (CONT_EPI2.ID = CONT_EPI1.ID_PADRE) /* Solo sacaremos aquellas tuplas de apuntes cuya subcuenta contable pertenezca compras*/ where (CONT_ASIENTOS.ID_FACTURA is not null) and (CONT_ASIENTOS.TIPO = 'p') and (COALESCE(CONT_EPI2.REF_EPIGRAFE, CONT_EPI1.REF_EPIGRAFE) = 6); CREATE VIEW V_CONT_PAGOS_PRO_COMPRAS( ID_PAGO, ID_SUBCUENTA, SUBCUENTA, ID_EJERCICIO, ESTADO_EJERCICIO, ASIENTO_PUNTEADO) AS select CONT_ASIENTOS.ID_PAGO, CONT_SUBCUENTAS.ID as ID_SUBCUENTA, CONT_SUBCUENTAS.DESCRIPCION as SUBCUENTA, CONT_SUBCUENTAS.ID_EJERCICIO, CONT_EJERCICIOS.ESTADO, CONT_APUNTES.PUNTEADO from CONT_ASIENTOS LEFT JOIN CONT_APUNTES ON (CONT_APUNTES.ID_ASIENTO = CONT_ASIENTOS.ID) LEFT JOIN CONT_SUBCUENTAS ON (CONT_SUBCUENTAS.ID = CONT_APUNTES.ID_SUBCUENTA) LEFT JOIN CONT_CUENTAS ON (CONT_CUENTAS.ID = CONT_SUBCUENTAS.ID_CUENTA) LEFT JOIN CONT_EJERCICIOS ON (CONT_EJERCICIOS.ID = CONT_SUBCUENTAS.ID_EJERCICIO) left join CONT_EPIGRAFES CONT_EPI1 on (CONT_EPI1.ID = CONT_CUENTAS.ID_EPIGRAFE) left join CONT_EPIGRAFES CONT_EPI2 on (CONT_EPI2.ID = CONT_EPI1.ID_PADRE) /* Solo sacaremos aquellas tuplas de apuntes cuya subcuenta contable pertenezca compras*/ where (CONT_ASIENTOS.ID_PAGO is not null) and (CONT_ASIENTOS.TIPO = 'p') and (COALESCE(CONT_EPI2.REF_EPIGRAFE, CONT_EPI1.REF_EPIGRAFE) = 5); CREATE VIEW V_PAGOS_PROVEEDOR( ID, ID_RECIBO, TIPO, FECHA_PAGO, TITULAR, ENTIDAD, SUCURSAL, DC, CUENTA, FECHA_ALTA, FECHA_MODIFICACION, USUARIO, IGNORAR_CONTABILIDAD, ID_SUBCUENTA, SUBCUENTA, ID_EJERCICIO, ESTADO_EJERCICIO, ASIENTO_PUNTEADO) AS SELECT PAGOS_PROVEEDOR.ID, PAGOS_PROVEEDOR.ID_RECIBO, PAGOS_PROVEEDOR.TIPO, PAGOS_PROVEEDOR.FECHA_PAGO, PAGOS_PROVEEDOR.TITULAR, PAGOS_PROVEEDOR.ENTIDAD, PAGOS_PROVEEDOR.SUCURSAL, PAGOS_PROVEEDOR.DC, PAGOS_PROVEEDOR.CUENTA, PAGOS_PROVEEDOR.FECHA_ALTA, PAGOS_PROVEEDOR.FECHA_MODIFICACION, PAGOS_PROVEEDOR.USUARIO, PAGOS_PROVEEDOR.IGNORAR_CONTABILIDAD, V_CONT_PAGOS_PRO_COMPRAS.ID_SUBCUENTA, V_CONT_PAGOS_PRO_COMPRAS.SUBCUENTA, V_CONT_PAGOS_PRO_COMPRAS.ID_EJERCICIO, V_CONT_PAGOS_PRO_COMPRAS.ESTADO_EJERCICIO, V_CONT_PAGOS_PRO_COMPRAS.ASIENTO_PUNTEADO FROM PAGOS_PROVEEDOR LEFT JOIN V_CONT_PAGOS_PRO_COMPRAS ON (V_CONT_PAGOS_PRO_COMPRAS.ID_PAGO = PAGOS_PROVEEDOR.ID) ; CREATE VIEW V_PAGOS_CLIENTE( ID, ID_RECIBO, TIPO, FECHA_PAGO, TITULAR, ENTIDAD, SUCURSAL, DC, CUENTA, FECHA_ALTA, FECHA_MODIFICACION, USUARIO, IGNORAR_CONTABILIDAD, ID_SUBCUENTA, SUBCUENTA, ID_EJERCICIO, ESTADO_EJERCICIO, ASIENTO_PUNTEADO) AS SELECT PAGOS_CLIENTE.ID, PAGOS_CLIENTE.ID_RECIBO, PAGOS_CLIENTE.TIPO, PAGOS_CLIENTE.FECHA_PAGO, PAGOS_CLIENTE.TITULAR, PAGOS_CLIENTE.ENTIDAD, PAGOS_CLIENTE.SUCURSAL, PAGOS_CLIENTE.DC, PAGOS_CLIENTE.CUENTA, PAGOS_CLIENTE.FECHA_ALTA, PAGOS_CLIENTE.FECHA_MODIFICACION, PAGOS_CLIENTE.USUARIO, PAGOS_CLIENTE.IGNORAR_CONTABILIDAD, V_CONT_PAGOS_CLI_VENTAS.ID_SUBCUENTA, V_CONT_PAGOS_CLI_VENTAS.SUBCUENTA, V_CONT_PAGOS_CLI_VENTAS.ID_EJERCICIO, V_CONT_PAGOS_CLI_VENTAS.ESTADO_EJERCICIO, V_CONT_PAGOS_CLI_VENTAS.ASIENTO_PUNTEADO FROM PAGOS_CLIENTE LEFT JOIN V_CONT_PAGOS_CLI_VENTAS ON (V_CONT_PAGOS_CLI_VENTAS.ID_PAGO = PAGOS_CLIENTE.ID) ; /* View: V_CONT_SUBCUENTAS_SALDO */ CREATE VIEW V_CONT_SUBCUENTAS_SALDO( ID_SUBCUENTA, DEBE, HABER, SALDO) AS select cont_subcuentas.ID, COALESCE(SUM(cont_apuntes.DEBE), 0) as DEBE, COALESCE(SUM(cont_apuntes.HABER), 0) as HABER, COALESCE(SUM(cont_apuntes.DEBE), 0) - COALESCE(SUM(cont_apuntes.HABER), 0) as SALDO from cont_subcuentas left join cont_apuntes on (cont_apuntes.id_subcuenta = cont_subcuentas.ID) group by cont_subcuentas.ID ; /* View: V_CONT_SUBCUENTAS */ CREATE VIEW V_CONT_SUBCUENTAS( ID, REF_SUBCUENTA, DESCRIPCION, ID_EJERCICIO, ESTADO, REF_EPIGRAFE_PADRE, ID_CONTACTO, ID_CUENTA, REF_CUENTA, CUENTA, DEBE, HABER, SALDO) AS select CONT_SUBCUENTAS.ID, CONT_SUBCUENTAS.REF_SUBCUENTA, CONT_SUBCUENTAS.DESCRIPCION, CONT_SUBCUENTAS.ID_EJERCICIO, CONT_EJERCICIOS.ESTADO, COALESCE(CONT_EPI2.REF_EPIGRAFE, CONT_EPI1.REF_EPIGRAFE), CONT_SUBCUENTAS.ID_CONTACTO, CONT_SUBCUENTAS.ID_CUENTA, CONT_CUENTAS.REF_CUENTA, CONT_CUENTAS.DESCRIPCION as CUENTA, V_CONT_SUBCUENTAS_SALDO.DEBE, V_CONT_SUBCUENTAS_SALDO.HABER, V_CONT_SUBCUENTAS_SALDO.SALDO from V_CONT_SUBCUENTAS_SALDO left join CONT_SUBCUENTAS on (CONT_SUBCUENTAS.ID = V_CONT_SUBCUENTAS_SALDO.ID_SUBCUENTA) left join CONT_CUENTAS on (CONT_CUENTAS.ID = CONT_SUBCUENTAS.ID_CUENTA) left join CONT_EPIGRAFES CONT_EPI1 on (CONT_EPI1.ID = CONT_CUENTAS.ID_EPIGRAFE) left join CONT_EPIGRAFES CONT_EPI2 on (CONT_EPI2.ID = CONT_EPI1.ID_PADRE) left join CONT_EJERCICIOS on (CONT_EJERCICIOS.ID = CONT_SUBCUENTAS.ID_EJERCICIO) order by CONT_CUENTAS.REF_CUENTA ; /* View: V_VENDEDORES */ CREATE VIEW V_VENDEDORES( ID, ID_CATEGORIA, NIF_CIF, NOMBRE, PERSONA_CONTACTO, CALLE, POBLACION, PROVINCIA, CODIGO_POSTAL, TELEFONO_1, TELEFONO_2, MOVIL_1, MOVIL_2, FAX, EMAIL_1, EMAIL_2, PAGINA_WEB, NOTAS, FECHA_ALTA, FECHA_MODIFICACION, USUARIO, ID_EMPRESA, REFERENCIA, ID_TIENDA, TIENDA, COMISION, ID_USUARIO) AS SELECT V_CONTACTOS.ID, V_CONTACTOS.ID_CATEGORIA, V_CONTACTOS.NIF_CIF, V_CONTACTOS.NOMBRE, V_CONTACTOS.PERSONA_CONTACTO, V_CONTACTOS.CALLE, V_CONTACTOS.POBLACION, V_CONTACTOS.PROVINCIA, V_CONTACTOS.CODIGO_POSTAL, V_CONTACTOS.TELEFONO_1, V_CONTACTOS.TELEFONO_2, V_CONTACTOS.MOVIL_1, V_CONTACTOS.MOVIL_2, V_CONTACTOS.FAX, V_CONTACTOS.EMAIL_1, V_CONTACTOS.EMAIL_2, V_CONTACTOS.PAGINA_WEB, V_CONTACTOS.NOTAS, V_CONTACTOS.FECHA_ALTA, V_CONTACTOS.FECHA_MODIFICACION, V_CONTACTOS.USUARIO, V_CONTACTOS.ID_EMPRESA, V_CONTACTOS.REFERENCIA, V_CONTACTOS.ID_TIENDA, V_CONTACTOS.TIENDA, VENDEDORES_DATOS.COMISION, VENDEDORES_DATOS.ID_USUARIO FROM V_CONTACTOS INNER JOIN VENDEDORES_DATOS ON (VENDEDORES_DATOS.ID_VENDEDOR = V_CONTACTOS.ID) WHERE V_CONTACTOS.ID_CATEGORIA = 3; ; /* Create 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_SITUACION */ CREATE VIEW V_REC_CLI_SITUACION( ID_RECIBO, SITUACION) AS SELECT RECIBOS_CLIENTE.ID, CASE WHEN (COUNT(PAGOS_CLIENTE.ID_RECIBO)=0) THEN 'PENDIENTE' WHEN (MOD(COUNT(PAGOS_CLIENTE.ID_RECIBO), 2)=0) THEN 'DEVUELTO' ELSE 'COBRADO' END FROM RECIBOS_CLIENTE LEFT JOIN PAGOS_CLIENTE ON (PAGOS_CLIENTE.ID_RECIBO = RECIBOS_CLIENTE.ID) GROUP BY RECIBOS_CLIENTE.ID; ; /* Create 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') AND (RECIBOS_CLIENTE.ID_FACTURA IS NOT NULL) GROUP BY RECIBOS_CLIENTE.ID_FACTURA; ; /* Create 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; /* Create 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_SITUACION */ CREATE VIEW V_REC_PRO_SITUACION( ID_RECIBO, SITUACION) AS SELECT RECIBOS_PROVEEDOR.ID, CASE WHEN (COUNT(PAGOS_PROVEEDOR.ID_RECIBO)=0) THEN 'PENDIENTE' WHEN (MOD(COUNT(PAGOS_PROVEEDOR.ID_RECIBO), 2)=0) THEN 'DEVUELTO' ELSE 'PAGADO' END FROM RECIBOS_PROVEEDOR LEFT JOIN PAGOS_PROVEEDOR ON (PAGOS_PROVEEDOR.ID_RECIBO = RECIBOS_PROVEEDOR.ID) GROUP BY RECIBOS_PROVEEDOR.ID; ; /* Create 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') AND (RECIBOS_PROVEEDOR.ID_FACTURA IS NOT NULL) GROUP BY RECIBOS_PROVEEDOR.ID_FACTURA; /* Create 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; /* Create view: V_FACTURAS_CLIENTE */ CREATE VIEW V_FACTURAS_CLIENTE( ID, ID_EMPRESA, REFERENCIA, TIPO, ID_COMISION_LIQUIDADA, FECHA_FACTURA, FECHA_VENCIMIENTO, SITUACION, BASE_IMPONIBLE, DESCUENTO, IMPORTE_DESCUENTO, IVA, IMPORTE_IVA, RE, IMPORTE_RE, IMPORTE_TOTAL, OBSERVACIONES, ID_CLIENTE, NOMBRE_CLIENTE, NOMBRE_COMERCIAL_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, ID_AGENTE, REFERENCIA_COMISION, IGNORAR_CONTABILIDAD, ID_TIENDA, TIENDA, ID_SUBCUENTA, SUBCUENTA, ID_EJERCICIO, ESTADO_EJERCICIO, ASIENTO_PUNTEADO, ID_CONTRATO, REF_CONTRATO, SIN_COMISION) 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, TRIM(V_FAC_CLI_SITUACION.SITUACION), FACTURAS_CLIENTE.BASE_IMPONIBLE, FACTURAS_CLIENTE.DESCUENTO, FACTURAS_CLIENTE.IMPORTE_DESCUENTO, FACTURAS_CLIENTE.IVA, FACTURAS_CLIENTE.IMPORTE_IVA, FACTURAS_CLIENTE.RE, FACTURAS_CLIENTE.IMPORTE_RE, FACTURAS_CLIENTE.IMPORTE_TOTAL, FACTURAS_CLIENTE.OBSERVACIONES, FACTURAS_CLIENTE.ID_CLIENTE, CONTACTOS.NOMBRE, CLIENTES_DATOS.NOMBRE_COMERCIAL, 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.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.IGNORAR_CONTABILIDAD, FACTURAS_CLIENTE.ID_TIENDA, COALESCE(EMPRESAS_TIENDAS.NOMBRE, 'Todas') AS TIENDA, V_CONT_FAC_CLI_VENTAS.ID_SUBCUENTA, V_CONT_FAC_CLI_VENTAS.SUBCUENTA, V_CONT_FAC_CLI_VENTAS.ID_EJERCICIO, V_CONT_FAC_CLI_VENTAS.ESTADO_EJERCICIO, V_CONT_FAC_CLI_VENTAS.ASIENTO_PUNTEADO, FACTURAS_CLIENTE.ID_CONTRATO, CONTRATOS_CLIENTE.REFERENCIA, FACTURAS_CLIENTE.SIN_COMISION 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) INNER JOIN CONTACTOS ON (CONTACTOS.ID = FACTURAS_CLIENTE.ID_CLIENTE) INNER JOIN CLIENTES_DATOS ON (CLIENTES_DATOS.ID_CLIENTE = FACTURAS_CLIENTE.ID_CLIENTE) LEFT JOIN EMPRESAS_TIENDAS ON (EMPRESAS_TIENDAS.ID = FACTURAS_CLIENTE.ID_TIENDA) LEFT JOIN V_CONT_FAC_CLI_VENTAS ON (V_CONT_FAC_CLI_VENTAS.ID_FACTURA = FACTURAS_CLIENTE.ID) LEFT JOIN CONTRATOS_CLIENTE ON (CONTRATOS_CLIENTE.ID = FACTURAS_CLIENTE.ID_CONTRATO) ; /* Create 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, NOMBRE_PROVEEDOR, NOMBRE_COMERCIAL_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, IGNORAR_CONTABILIDAD, ID_TIENDA, TIENDA, ID_SUBCUENTA, SUBCUENTA, ID_EJERCICIO, ESTADO_EJERCICIO, ASIENTO_PUNTEADO) 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, CONTACTOS.NOMBRE, PROVEEDORES_DATOS.NOMBRE_COMERCIAL, 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.IGNORAR_CONTABILIDAD, FACTURAS_PROVEEDOR.ID_TIENDA, COALESCE(EMPRESAS_TIENDAS.NOMBRE, 'Todas') AS TIENDA, V_CONT_FAC_PRO_COMPRAS.ID_SUBCUENTA, V_CONT_FAC_PRO_COMPRAS.SUBCUENTA, V_CONT_FAC_PRO_COMPRAS.ID_EJERCICIO, V_CONT_FAC_PRO_COMPRAS.ESTADO_EJERCICIO, V_CONT_FAC_PRO_COMPRAS.ASIENTO_PUNTEADO FROM V_FAC_PRO_SITUACION LEFT JOIN FACTURAS_PROVEEDOR ON (FACTURAS_PROVEEDOR.ID = V_FAC_PRO_SITUACION.ID_FACTURA) LEFT JOIN CONTACTOS ON (CONTACTOS.ID = FACTURAS_PROVEEDOR.ID_PROVEEDOR) LEFT JOIN PROVEEDORES_DATOS ON (PROVEEDORES_DATOS.ID_PROVEEDOR = FACTURAS_PROVEEDOR.ID_PROVEEDOR) LEFT JOIN EMPRESAS_TIENDAS ON (EMPRESAS_TIENDAS.ID = FACTURAS_PROVEEDOR.ID_TIENDA) LEFT JOIN V_CONT_FAC_PRO_COMPRAS ON (V_CONT_FAC_PRO_COMPRAS.ID_FACTURA = FACTURAS_PROVEEDOR.ID); /* Create view: V_COMISIONES */ 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); ; /* 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 'Entrada' ELSE 'Salida' END, (-1)*V_ALB_CLI_DETALLES.CANTIDAD, CASE WHEN ALBARANES_CLIENTE.IMPORTE_TOTAL < 0 THEN 'Orden de devolución de cliente ' || ALBARANES_CLIENTE.REFERENCIA ELSE 'Albarán de cliente ' || ALBARANES_CLIENTE.REFERENCIA END FROM V_ALB_CLI_DETALLES LEFT JOIN ALBARANES_CLIENTE ON (V_ALB_CLI_DETALLES.ID_ALBARAN = ALBARANES_CLIENTE.ID) WHERE (V_ALB_CLI_DETALLES.ID_ALMACEN IS NOT NULL) AND (V_ALB_CLI_DETALLES.SITUACION in ('ENVIADO', 'SERVIDO')) ; /* View: V_HIS_MOV_ALB_PROV */ CREATE VIEW V_HIS_MOV_ALB_PROV( FECHA, ID_ALMACEN, ID_ARTICULO, TIPO_MOVIMIENTO, CANTIDAD, CAUSA) AS SELECT ALBARANES_PROVEEDOR.FECHA_ALBARAN, V_ALB_PROV_DETALLES.ID_ALMACEN, V_ALB_PROV_DETALLES.ID_ARTICULO, CASE WHEN V_ALB_PROV_DETALLES.CANTIDAD < 0 THEN 'Salida' ELSE 'Entrada' END, V_ALB_PROV_DETALLES.CANTIDAD, CASE WHEN ALBARANES_PROVEEDOR.IMPORTE_TOTAL < 0 THEN 'Orden de devolución ' || ALBARANES_PROVEEDOR.REFERENCIA ELSE 'Albarán de proveedor ' || ALBARANES_PROVEEDOR.REFERENCIA END FROM V_ALB_PROV_DETALLES LEFT JOIN ALBARANES_PROVEEDOR ON (V_ALB_PROV_DETALLES.ID_ALBARAN = ALBARANES_PROVEEDOR.ID) WHERE (V_ALB_PROV_DETALLES.ID_ALMACEN IS NOT NULL) ; /* View: V_HIS_MOV_REGULARIZACIONES */ CREATE VIEW V_HIS_MOV_REGULARIZACIONES( FECHA, ID_ALMACEN, ID_ARTICULO, TIPO_MOVIMIENTO, CANTIDAD, CAUSA) AS SELECT FECHA_MOVIMIENTO, ID_ALMACEN, ID_ARTICULO, CASE WHEN TIPO = 'E' THEN 'Entrada' ELSE 'Salida' END, CASE WHEN TIPO = 'S' THEN (-1)* CANTIDAD ELSE CANTIDAD END, 'Regularización por - ' || CAUSA FROM MOVIMIENTOS ; /* View: V_HIS_MOV_AUX */ CREATE VIEW V_HIS_MOV_AUX( FECHA, ID_ALMACEN, ID_ARTICULO, TIPO_MOVIMIENTO, CANTIDAD, CAUSA) AS SELECT FECHA, ID_ALMACEN, ID_ARTICULO, TIPO_MOVIMIENTO, CANTIDAD, CAUSA FROM V_HIS_MOV_ALB_PROV UNION ALL SELECT FECHA, ID_ALMACEN, ID_ARTICULO, TIPO_MOVIMIENTO, CANTIDAD, CAUSA FROM V_HIS_MOV_ALB_CLI UNION ALL SELECT FECHA, ID_ALMACEN, ID_ARTICULO, TIPO_MOVIMIENTO, CANTIDAD, CAUSA FROM V_HIS_MOV_REGULARIZACIONES ; /* View: V_HISTORICO_MOVIMIENTOS */ CREATE VIEW V_HISTORICO_MOVIMIENTOS( FECHA, ID_ALMACEN, ID_EMPRESA, NOMBRE_ALMACEN, ID_ARTICULO, FAMILIA, REFERENCIA, REFERENCIA_PROV, 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.REFERENCIA_PROV, 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én es decir albaranes libres que el albaran este pendiente (los articulos estan reservados en el almacen) aquellos que no se correspondan con artí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, CANTIDAD) AS SELECT ID_PEDIDO, ID_ARTICULO, SUM(CANTIDAD) AS CANTIDAD FROM V_ALB_PROV_DETALLES WHERE (ID_PEDIDO is not null) GROUP BY ID_PEDIDO, ID_ARTICULO ; /* View: V_PED_PROV_DETALLES */ CREATE VIEW V_PED_PROV_DETALLES( ID_PEDIDO, ID_ALMACEN, ID_ARTICULO, CANTIDAD) AS SELECT PEDIDOS_PROVEEDOR_DETALLES.ID_PEDIDO, PEDIDOS_PROVEEDOR.ID_ALMACEN, COALESCE(PEDIDOS_PROVEEDOR_DETALLES.ID_ARTICULO, 0), SUM(COALESCE(PEDIDOS_PROVEEDOR_DETALLES.CANTIDAD, 0)) FROM PEDIDOS_PROVEEDOR_DETALLES LEFT JOIN PEDIDOS_PROVEEDOR ON (PEDIDOS_PROVEEDOR_DETALLES.ID_PEDIDO = PEDIDOS_PROVEEDOR.ID) /*Mantenemos los articulos inventariables y aquellos que no existan en nuestro catálogo con el fin de no falsear la situación de los pedidos LEFT JOIN ARTICULOS ON (PEDIDOS_PROVEEDOR_DETALLES.ID_ARTICULO = ARTICULOS.ID) WHERE (PEDIDOS_PROVEEDOR_DETALLES.ID_ARTICULO is not null) AND (ARTICULOS.INVENTARIABLE = 1) */ GROUP BY PEDIDOS_PROVEEDOR_DETALLES.ID_PEDIDO, PEDIDOS_PROVEEDOR.ID_ALMACEN, PEDIDOS_PROVEEDOR_DETALLES.ID_ARTICULO ; /* View: V_PED_PROV_ARTICULOS_AUX */ CREATE VIEW V_PED_PROV_ARTICULOS_AUX( ID_PEDIDO, ID_ARTICULO, CANTIDAD_PEDIDA, CANTIDAD_RECIBIDA) AS SELECT V_PED_PROV_DETALLES.ID_PEDIDO, V_PED_PROV_DETALLES.ID_ARTICULO, 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, 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, CANTIDAD_PEDIDA, CANTIDAD_RECIBIDA, CANTIDAD_PENDIENTE) AS SELECT ID_PEDIDO, /*PEDIDOS_PROVEEDOR.ID_ALMACEN,*/ ID_ARTICULO, 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 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 */ CREATE VIEW V_INV_RESERVAS( 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 ; /* 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, NOMBRE, ID_ARTICULO, REFERENCIA, FAMILIA, DESCRIPCION, REFERENCIA_PROV, PRECIO_NETO, STOCK, UNIDADES_ALMACEN, COSTE_UNIDADES, RESERVA, PENDIENTE_RECEPCION) AS SELECT ID_ALMACEN, ALMACENES.ID_EMPRESA, ALMACENES.NOMBRE, ID_ARTICULO, ARTICULOS.REFERENCIA, ARTICULOS.FAMILIA, ARTICULOS.DESCRIPCION, ARTICULOS.REFERENCIA_PROV, 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.NOMBRE, ID_ARTICULO, ARTICULOS.REFERENCIA, ARTICULOS.FAMILIA, ARTICULOS.DESCRIPCION, ARTICULOS.REFERENCIA_PROV, ARTICULOS.PRECIO_NETO ; /* 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, REFERENCIA, SITUACION, FECHA_ENVIO, FECHA_PEDIDO, FECHA_CONFIRMACION, FECHA_ENTREGA, ID_ALMACEN, NOMBRE_ALMACEN, OBSERVACIONES, IMPORTE_TOTAL, INCIDENCIAS, INCIDENCIAS_ACTIVAS, CALLE, POBLACION, PROVINCIA, CODIGO_POSTAL, PERSONA_CONTACTO, TELEFONO, FECHA_ALTA, FECHA_MODIFICACION, USUARIO, ID_PEDIDO_CLIENTE, REF_PED_CLIENTE, IMPORTE_NETO, IMPORTE_PORTE, DESCUENTO, IMPORTE_DESCUENTO, BASE_IMPONIBLE, IVA, IMPORTE_IVA, ID_FORMA_PAGO, ID_TIENDA, TIENDA) AS SELECT PEDIDOS_PROVEEDOR.ID, PEDIDOS_PROVEEDOR.ID_EMPRESA, PEDIDOS_PROVEEDOR.ID_PROVEEDOR, CONTACTOS.NOMBRE, 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.NOMBRE AS NOMBRE_ALMACEN, PEDIDOS_PROVEEDOR.OBSERVACIONES, PEDIDOS_PROVEEDOR.IMPORTE_TOTAL, PEDIDOS_PROVEEDOR.INCIDENCIAS, PEDIDOS_PROVEEDOR.INCIDENCIAS_ACTIVAS, PEDIDOS_PROVEEDOR.CALLE, PEDIDOS_PROVEEDOR.POBLACION, PEDIDOS_PROVEEDOR.PROVINCIA, PEDIDOS_PROVEEDOR.CODIGO_POSTAL, PEDIDOS_PROVEEDOR.PERSONA_CONTACTO, PEDIDOS_PROVEEDOR.TELEFONO, PEDIDOS_PROVEEDOR.FECHA_ALTA, PEDIDOS_PROVEEDOR.FECHA_MODIFICACION, PEDIDOS_PROVEEDOR.USUARIO, PEDIDOS_PROVEEDOR.ID_PEDIDO_CLIENTE, PEDIDOS_CLIENTE.REFERENCIA AS REF_PED_CLIENTE, PEDIDOS_PROVEEDOR.IMPORTE_NETO, PEDIDOS_PROVEEDOR.IMPORTE_PORTE, PEDIDOS_PROVEEDOR.DESCUENTO, PEDIDOS_PROVEEDOR.IMPORTE_DESCUENTO, PEDIDOS_PROVEEDOR.BASE_IMPONIBLE, PEDIDOS_PROVEEDOR.IVA, PEDIDOS_PROVEEDOR.IMPORTE_IVA, PEDIDOS_PROVEEDOR.ID_FORMA_PAGO, PEDIDOS_PROVEEDOR.ID_TIENDA, COALESCE(EMPRESAS_TIENDAS.NOMBRE, 'Todas') AS TIENDA FROM PEDIDOS_PROVEEDOR INNER JOIN CONTACTOS ON (CONTACTOS.ID = PEDIDOS_PROVEEDOR.ID_PROVEEDOR) INNER JOIN V_PED_PROV_SITUACION ON (V_PED_PROV_SITUACION.ID_PEDIDO = PEDIDOS_PROVEEDOR.ID) LEFT OUTER JOIN ALMACENES ON (ALMACENES.ID = PEDIDOS_PROVEEDOR.ID_ALMACEN) LEFT OUTER JOIN PEDIDOS_CLIENTE ON (PEDIDOS_CLIENTE.ID = PEDIDOS_PROVEEDOR.ID_PEDIDO_CLIENTE) LEFT OUTER JOIN EMPRESAS_TIENDAS ON (EMPRESAS_TIENDAS.ID = PEDIDOS_PROVEEDOR.ID_TIENDA) ; /* View: V_PERFILES */ CREATE VIEW V_PERFILES( ID, USERNAME, LOGIN, TIPO) AS SELECT ID, USERNAME, LOGIN, TIPO FROM USUARIOS WHERE TIPO = 'P' ORDER BY USERNAME ; /* View: V_PRESUPUESTOS_CLIENTE */ CREATE VIEW V_PRESUPUESTOS_CLIENTE( ID, ID_EMPRESA, FECHA_PRESUPUESTO, FECHA_VIGENCIA, FECHA_DECISION, REFERENCIA, SITUACION, ID_CLIENTE, ID_DIRECCION, NIF_CIF, NOMBRE, PERSONA_CONTACTO, FORMA_PAGO, PLAZO_ENTREGA, OBSERVACIONES, INCIDENCIAS, INCIDENCIAS_ACTIVAS, FECHA_ALTA, FECHA_MODIFICACION, USUARIO, IMPORTE_NETO, IMPORTE_PORTE, DESCUENTO, IMPORTE_DESCUENTO, BASE_IMPONIBLE, ID_TIPO_IVA, IVA, IMPORTE_IVA, RE, IMPORTE_RE, RECARGO_EQUIVALENCIA, IMPORTE_TOTAL, ID_FORMA_PAGO, ID_TIENDA, TIENDA, ID_VENDEDOR, VENDEDOR, ID_CONTRATO, REF_CONTRATO, NO_VALORADO, TIPO_PRESUPUESTO) AS SELECT PRESUPUESTOS_CLIENTE.ID, /* PRESUPUESTOS_CLIENTE.ID_EMPRESA,*/ EMPRESAS_CONTACTOS.ID_EMPRESA, PRESUPUESTOS_CLIENTE.FECHA_PRESUPUESTO, PRESUPUESTOS_CLIENTE.FECHA_VIGENCIA, PRESUPUESTOS_CLIENTE.FECHA_DECISION, PRESUPUESTOS_CLIENTE.REFERENCIA, PRESUPUESTOS_CLIENTE.SITUACION, PRESUPUESTOS_CLIENTE.ID_CLIENTE, PRESUPUESTOS_CLIENTE.ID_DIRECCION, CONTACTOS.NIF_CIF, CONTACTOS.NOMBRE, PRESUPUESTOS_CLIENTE.PERSONA_CONTACTO, PRESUPUESTOS_CLIENTE.FORMA_PAGO, PRESUPUESTOS_CLIENTE.PLAZO_ENTREGA, 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.ID_TIPO_IVA, PRESUPUESTOS_CLIENTE.IVA, PRESUPUESTOS_CLIENTE.IMPORTE_IVA, PRESUPUESTOS_CLIENTE.RE, PRESUPUESTOS_CLIENTE.IMPORTE_RE, PRESUPUESTOS_CLIENTE.RECARGO_EQUIVALENCIA, PRESUPUESTOS_CLIENTE.IMPORTE_TOTAL, PRESUPUESTOS_CLIENTE.ID_FORMA_PAGO, PRESUPUESTOS_CLIENTE.id_tienda, COALESCE(EMPRESAS_TIENDAS.NOMBRE, 'Todas') AS TIENDA, PRESUPUESTOS_CLIENTE.ID_VENDEDOR, CONTACTOS2.NOMBRE AS VENDEDOR, PRESUPUESTOS_CLIENTE.ID_CONTRATO, CONTRATOS_CLIENTE.REFERENCIA, PRESUPUESTOS_CLIENTE.NO_VALORADO, PRESUPUESTOS_CLIENTE.TIPO_PRESUPUESTO FROM PRESUPUESTOS_CLIENTE LEFT OUTER JOIN CONTACTOS ON (PRESUPUESTOS_CLIENTE.ID_CLIENTE = CONTACTOS.ID) LEFT JOIN EMPRESAS_CONTACTOS ON (EMPRESAS_CONTACTOS.ID_CONTACTO = CONTACTOS.ID) LEFT OUTER JOIN CONTACTOS CONTACTOS2 ON (PRESUPUESTOS_CLIENTE.ID_VENDEDOR = CONTACTOS2.ID) LEFT OUTER JOIN EMPRESAS_TIENDAS ON (EMPRESAS_TIENDAS.ID = PRESUPUESTOS_CLIENTE.ID_TIENDA) LEFT OUTER JOIN CONTRATOS_CLIENTE ON (CONTRATOS_CLIENTE.ID = PRESUPUESTOS_CLIENTE.ID_CONTRATO) ; /* View: V_CONTRATOS_CLIENTE */ CREATE VIEW V_CONTRATOS_CLIENTE( ID, ID_EMPRESA, ID_CLIENTE, NOMBRE_CLIENTE, REF_CLIENTE, NOMBRE_COMERCIAL_CLIENTE, NIF_CIF, NOMBRE, ID_DIRECCION, CALLE, POBLACION, PROVINCIA, CODIGO_POSTAL, TELEFONO, MOVIL, REFERENCIA, FECHA_CONTRATO, SITUACION, FORMA_PAGO, PLAZO_ENTREGA, OBSERVACIONES, INCIDENCIAS, INCIDENCIAS_ACTIVAS, FECHA_ALTA, FECHA_MODIFICACION, USUARIO, RECARGO_EQUIVALENCIA, RE, IMPORTE_RE, ID_TIPO_IVA, IVA, IMPORTE_IVA, IMPORTE_NETO, IMPORTE_PORTE, ID_TIENDA, TIENDA, BASE_IMPONIBLE, DESCUENTO, IMPORTE_DESCUENTO, IMPORTE_TOTAL, ID_FORMA_PAGO, ID_VENDEDOR, VENDEDOR, PERSONA_CONTACTO, TIPO_CONTRATO) AS SELECT CONTRATOS_CLIENTE.ID, /* CONTRATOS_CLIENTE.ID_EMPRESA,*/ EMPRESAS_CONTACTOS.ID_EMPRESA, CONTRATOS_CLIENTE.ID_CLIENTE, CONTACTOS.NOMBRE, CONTACTOS.REFERENCIA, CLIENTES_DATOS.NOMBRE_COMERCIAL, CONTRATOS_CLIENTE.NIF_CIF, CONTRATOS_CLIENTE.NOMBRE, CONTRATOS_CLIENTE.ID_DIRECCION, CONTRATOS_CLIENTE.CALLE, CONTRATOS_CLIENTE.POBLACION, CONTRATOS_CLIENTE.PROVINCIA, CONTRATOS_CLIENTE.CODIGO_POSTAL, CONTRATOS_CLIENTE.TELEFONO, CONTRATOS_CLIENTE.MOVIL, CONTRATOS_CLIENTE.REFERENCIA, CONTRATOS_CLIENTE.FECHA_CONTRATO, CONTRATOS_CLIENTE.SITUACION, CONTRATOS_CLIENTE.FORMA_PAGO, CONTRATOS_CLIENTE.PLAZO_ENTREGA, CONTRATOS_CLIENTE.OBSERVACIONES, CONTRATOS_CLIENTE.INCIDENCIAS, CONTRATOS_CLIENTE.INCIDENCIAS_ACTIVAS, CONTRATOS_CLIENTE.FECHA_ALTA, CONTRATOS_CLIENTE.FECHA_MODIFICACION, CONTRATOS_CLIENTE.USUARIO, CONTRATOS_CLIENTE.RECARGO_EQUIVALENCIA, CONTRATOS_CLIENTE.RE, CONTRATOS_CLIENTE.IMPORTE_RE, CONTRATOS_CLIENTE.ID_TIPO_IVA, CONTRATOS_CLIENTE.IVA, CONTRATOS_CLIENTE.IMPORTE_IVA, CONTRATOS_CLIENTE.IMPORTE_NETO, CONTRATOS_CLIENTE.IMPORTE_PORTE, CONTRATOS_CLIENTE.ID_TIENDA, COALESCE(EMPRESAS_TIENDAS.NOMBRE, 'Todas') AS TIENDA, CONTRATOS_CLIENTE.BASE_IMPONIBLE, CONTRATOS_CLIENTE.DESCUENTO, CONTRATOS_CLIENTE.IMPORTE_DESCUENTO, CONTRATOS_CLIENTE.IMPORTE_TOTAL, CONTRATOS_CLIENTE.ID_FORMA_PAGO, CONTRATOS_CLIENTE.ID_VENDEDOR, CONTACTOS2.NOMBRE AS VENDEDOR, CONTRATOS_CLIENTE.PERSONA_CONTACTO, CONTRATOS_CLIENTE.TIPO_CONTRATO FROM CONTRATOS_CLIENTE LEFT OUTER JOIN CONTACTOS ON (CONTACTOS.ID = CONTRATOS_CLIENTE.ID_CLIENTE) LEFT JOIN EMPRESAS_CONTACTOS ON (EMPRESAS_CONTACTOS.ID_CONTACTO = CONTACTOS.ID) LEFT OUTER JOIN CONTACTOS CONTACTOS2 ON (CONTRATOS_CLIENTE.ID_VENDEDOR = CONTACTOS2.ID) INNER JOIN CLIENTES_DATOS ON (CLIENTES_DATOS.ID_CLIENTE = CONTRATOS_CLIENTE.ID_CLIENTE) LEFT JOIN EMPRESAS_TIENDAS ON (EMPRESAS_TIENDAS.ID = CONTRATOS_CLIENTE.ID_TIENDA) ; /* 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 ; /* Create view: V_REC_PRO_COMPENSADOS (ViwData.CreateDependDef) */ CREATE VIEW V_REC_PRO_COMPENSADOS( ID_RECIBO, IMPORTE_TOTAL_COMPENSADO) AS select ID_RECIBO_COMPENSADO, SUM((IMPORTE + OTROS_GASTOS)) as IMPORTE_TOTAL from RECIBOS_PROVEEDOR where ID_RECIBO_COMPENSADO is not null group by ID_RECIBO_COMPENSADO; /* Create view: V_RECIBOS_CLIENTE */ CREATE VIEW V_RECIBOS_CLIENTE( ID, ID_RECIBO_COMPENSADO, REFERENCIA_REC_COMPENSADO, REFERENCIA, SITUACION, ID_FACTURA, FECHA_FACTURA, FORMA_PAGO_FACTURA, IMPORTE_FACTURA, ID_REMESA, REFERENCIA_REMESA, FECHA_EMISION, FECHA_VENCIMIENTO, DESCRIPCION, OBSERVACIONES, IMPORTE, OTROS_GASTOS, IMPORTE_TOTAL, ID_EMPRESA, ID_CLIENTE, NOMBRE_CLIENTE, ENTIDAD_CLIENTE, SUCURSAL_CLIENTE, DC_CLIENTE, CUENTA_CLIENTE, NIF_CIF, NOMBRE, CALLE, POBLACION, CODIGO_POSTAL, PROVINCIA, FECHA_ALTA, FECHA_MODIFICACION, USUARIO, ID_TIENDA, TIENDA) 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, FACTURAS_CLIENTE.FECHA_FACTURA, FORMAS_PAGO.DESCRIPCION, FACTURAS_CLIENTE.IMPORTE_TOTAL, 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), RECIBOS_CLIENTE.ID_EMPRESA, RECIBOS_CLIENTE.ID_CLIENTE, CONTACTOS.NOMBRE, CONTACTOS_DATOS_BANCO.ENTIDAD, CONTACTOS_DATOS_BANCO.SUCURSAL, CONTACTOS_DATOS_BANCO.DC, CONTACTOS_DATOS_BANCO.CUENTA, RECIBOS_CLIENTE.NIF_CIF, RECIBOS_CLIENTE.NOMBRE, RECIBOS_CLIENTE.CALLE, RECIBOS_CLIENTE.POBLACION, RECIBOS_CLIENTE.CODIGO_POSTAL, RECIBOS_CLIENTE.PROVINCIA, RECIBOS_CLIENTE.FECHA_ALTA, RECIBOS_CLIENTE.FECHA_MODIFICACION, RECIBOS_CLIENTE.USUARIO, RECIBOS_CLIENTE.ID_TIENDA, COALESCE(EMPRESAS_TIENDAS.NOMBRE, 'Todas') AS TIENDA 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 = RECIBOS_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 EMPRESAS_TIENDAS ON (EMPRESAS_TIENDAS.ID = RECIBOS_CLIENTE.ID_TIENDA); ; /* Create view: V_RECIBOS_PROVEEDOR (ViwData.CreateDependDef) */ CREATE VIEW V_RECIBOS_PROVEEDOR( ID, ID_RECIBO_COMPENSADO, REFERENCIA_REC_COMPENSADO, REFERENCIA, REFERENCIA_PROVEEDOR, SITUACION, ID_FACTURA, REFERENCIA_FACTURA_PROV, FECHA_FACTURA, FORMA_PAGO_FACTURA, IMPORTE_FACTURA, ID_REMESA, REFERENCIA_REMESA, FECHA_EMISION, FECHA_VENCIMIENTO, DESCRIPCION, OBSERVACIONES, IMPORTE, OTROS_GASTOS, IMPORTE_TOTAL, ID_EMPRESA, ID_PROVEEDOR, NOMBRE_PROVEEDOR, ENTIDAD_PROVEEDOR, SUCURSAL_PROVEEDOR, DC_PROVEEDOR, CUENTA_PROVEEDOR, NIF_CIF, NOMBRE, CALLE, POBLACION, CODIGO_POSTAL, PROVINCIA, FECHA_ALTA, FECHA_MODIFICACION, USUARIO, ID_TIENDA, TIENDA) 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, FACTURAS_PROVEEDOR.REFERENCIA_PROVEEDOR, FACTURAS_PROVEEDOR.FECHA_FACTURA, FORMAS_PAGO.DESCRIPCION, FACTURAS_PROVEEDOR.IMPORTE_TOTAL, 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), RECIBOS_PROVEEDOR.ID_EMPRESA, RECIBOS_PROVEEDOR.ID_PROVEEDOR, CONTACTOS.NOMBRE, CONTACTOS_DATOS_BANCO.ENTIDAD, CONTACTOS_DATOS_BANCO.SUCURSAL, CONTACTOS_DATOS_BANCO.DC, CONTACTOS_DATOS_BANCO.CUENTA, RECIBOS_PROVEEDOR.NIF_CIF, RECIBOS_PROVEEDOR.NOMBRE, RECIBOS_PROVEEDOR.CALLE, RECIBOS_PROVEEDOR.POBLACION, RECIBOS_PROVEEDOR.CODIGO_POSTAL, RECIBOS_PROVEEDOR.PROVINCIA, RECIBOS_PROVEEDOR.FECHA_ALTA, RECIBOS_PROVEEDOR.FECHA_MODIFICACION, RECIBOS_PROVEEDOR.USUARIO, RECIBOS_PROVEEDOR.ID_TIENDA, COALESCE(EMPRESAS_TIENDAS.NOMBRE, 'Todas') AS TIENDA 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 = RECIBOS_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) LEFT JOIN EMPRESAS_TIENDAS ON (EMPRESAS_TIENDAS.ID = RECIBOS_PROVEEDOR.ID_TIENDA); ; /* Create view: V_REMESAS_CLIENTE */ CREATE VIEW V_REMESAS_CLIENTE( ID, ID_EMPRESA, REFERENCIA, TIPO, FECHA_REMESA, DESCRIPCION, ID_DATOS_BANCO, FECHA_ALTA, FECHA_MODIFICACION, USUARIO, NOMBRE, ENTIDAD, SUCURSAL, DC, CUENTA, SUFIJO_N19, SUFIJO_N58, IMPORTE_TOTAL) AS SELECT REMESAS_CLIENTE.ID, REMESAS_CLIENTE.ID_EMPRESA, REMESAS_CLIENTE.REFERENCIA, REMESAS_CLIENTE.TIPO, REMESAS_CLIENTE.FECHA_REMESA, REMESAS_CLIENTE.DESCRIPCION, REMESAS_CLIENTE.ID_DATOS_BANCO, REMESAS_CLIENTE.FECHA_ALTA, REMESAS_CLIENTE.FECHA_MODIFICACION, REMESAS_CLIENTE.USUARIO, EMPRESAS_DATOS_BANCO.NOMBRE, EMPRESAS_DATOS_BANCO.ENTIDAD, EMPRESAS_DATOS_BANCO.SUCURSAL, EMPRESAS_DATOS_BANCO.DC, EMPRESAS_DATOS_BANCO.CUENTA, EMPRESAS_DATOS_BANCO.SUFIJO_N19, EMPRESAS_DATOS_BANCO.SUFIJO_N58, SUM(COALESCE(RECIBOS_CLIENTE.IMPORTE,0) + COALESCE(RECIBOS_CLIENTE.OTROS_GASTOS,0) + COALESCE(V_REC_CLI_COMPENSADOS.IMPORTE_TOTAL_COMPENSADO,0)) as IMPORTE_TOTAL FROM REMESAS_CLIENTE LEFT OUTER JOIN EMPRESAS_DATOS_BANCO ON (EMPRESAS_DATOS_BANCO.ID = REMESAS_CLIENTE.ID_DATOS_BANCO) LEFT OUTER JOIN RECIBOS_CLIENTE ON (RECIBOS_CLIENTE.ID_REMESA = REMESAS_CLIENTE.ID) LEFT OUTER JOIN V_REC_CLI_COMPENSADOS ON (V_REC_CLI_COMPENSADOS.ID_RECIBO = RECIBOS_CLIENTE.ID) GROUP BY 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17; ; /* Create view: V_REMESAS_PROVEEDOR (ViwData.CreateDependDef) */ 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; ; CREATE VIEW V_USUARIOS( ID, USERNAME, LOGIN, PASS, PASSEXPIRED, BLOQUEADO, EMAIL, USERDAYSSUN, PRIVILEGED, TIPO, ID_PERFIL, CHECKSUM) AS SELECT USUARIOS.ID, USUARIOS.USERNAME, USUARIOS.LOGIN, USUARIOS.PASS, USUARIOS.PASSEXPIRED, USUARIOS.BLOQUEADO, USUARIOS.EMAIL, USUARIOS.USERDAYSSUN, USUARIOS.PRIVILEGED, USUARIOS.TIPO, USUARIOS.ID_PERFIL, USUARIOS.CHECKSUM FROM USUARIOS WHERE TIPO = 'U' ORDER BY USERNAME; ; create view V_CONTRATOS_FACTURAS_PROVEEDOR (ID_CONTRATO, IMPORTE) AS select ID_CONTRATO, SUM(IMPORTE) as IMPORTE_GASTOS_PROVEEDORES from facturas_proveedor_contratos group by 1; create view V_CONTRATOS_BENEFICIOS (ID, REFERENCIA, FECHA_CONTRATO, NOMBRE, NIF_CIF, IMPORTE_NETO, IMPORTE_DESCUENTO, BASE_IMPONIBLE, IMPORTE_FACTURAS_PROVEEDOR, IMPORTE_BENEFICIO, PORCENTAJE_BENEFICIO) AS select contratos_cliente.ID, contratos_cliente.referencia, contratos_cliente.fecha_contrato, contratos_cliente.nombre, contratos_cliente.nif_cif, contratos_cliente.importe_neto, contratos_cliente.importe_descuento, contratos_cliente.base_imponible, v_contratos_facturas_proveedor.importe as importe_facturas_proveedor, (contratos_cliente.base_imponible - coalesce(v_contratos_facturas_proveedor.importe, 0)) as importe_beneficio, case when (contratos_cliente.base_imponible - coalesce(v_contratos_facturas_proveedor.importe, 0)) = 0 then 0 else (((contratos_cliente.base_imponible - coalesce(v_contratos_facturas_proveedor.importe, 0))*100)/contratos_cliente.importe_neto) end as porcentaje_beneficio from contratos_cliente left join v_contratos_facturas_proveedor on (v_contratos_facturas_proveedor.ID_CONTRATO = contratos_cliente.ID); /******************************************************************************/ /**** Primary Keys ****/ /******************************************************************************/ ALTER TABLE ALBARANES_CLIENTE ADD CONSTRAINT PK_ALBARANES_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 CATEGORIAS ADD CONSTRAINT PK_CATEGORIAS PRIMARY KEY (ID); ALTER TABLE CLIENTES_DATOS ADD CONSTRAINT PK_CLIENTES_DATOS PRIMARY KEY (ID_CLIENTE); ALTER TABLE CLIENTES_DTOS_PROVEEDORES ADD CONSTRAINT PK_CLIENTES_DTOS_PROV PRIMARY KEY (ID); ALTER TABLE CLIENTES_GRUPOS ADD CONSTRAINT PK_CLIENTES_GRUPOS PRIMARY KEY (ID); ALTER TABLE CLIENTES_PROCEDENCIAS ADD CONSTRAINT PK_CLIENTES_PROCEDENCIAS PRIMARY KEY (ID); ALTER TABLE COMISIONES_LIQUIDADAS ADD CONSTRAINT PK_COMISIONES_LIQUIDADAS PRIMARY KEY (ID); ALTER TABLE COMISIONES_LIQ_VENDEDORES ADD CONSTRAINT PK_COMISIONES_LIQ_VENDEDORES 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_DIRECCIONES ADD CONSTRAINT PK_CONTACTOS_DIR PRIMARY KEY (ID); ALTER TABLE CONTACTOS_DATOS_PERSONAL ADD CONSTRAINT PK_CONTACTOS_DATOS_PER PRIMARY KEY (ID); ALTER TABLE CONT_APUNTES ADD CONSTRAINT PK_CONT_APUNTES PRIMARY KEY (ID); ALTER TABLE CONT_ASIENTOS ADD CONSTRAINT PK_CONT_ASIENTOS PRIMARY KEY (ID); ALTER TABLE CONT_BALANCES ADD CONSTRAINT PK_CONT_BALANCES PRIMARY KEY (ID); ALTER TABLE CONT_CUENTAS ADD CONSTRAINT PK_CONT_CUENTAS PRIMARY KEY (ID); ALTER TABLE CONT_CUENTAS_ESPECIALES ADD CONSTRAINT PK_CONT_CUENTAS_ESPECIALES PRIMARY KEY (ID); ALTER TABLE CONT_EJERCICIOS ADD CONSTRAINT PK_CONT_EJERCICIOS PRIMARY KEY (ID); ALTER TABLE CONT_EPIGRAFES ADD CONSTRAINT PK_CONT_EPIGRAFES PRIMARY KEY (ID); ALTER TABLE CONT_SUBCUENTAS ADD CONSTRAINT PK_CONT_SUBCUENTAS PRIMARY KEY (ID); ALTER TABLE VENDEDORES_DATOS ADD CONSTRAINT PK_VENDEDORES_DATOS PRIMARY KEY (ID_VENDEDOR); ALTER TABLE EMPRESAS ADD CONSTRAINT PK_EMPRESAS PRIMARY KEY (ID); ALTER TABLE EMPRESAS_CONTACTOS ADD CONSTRAINT PK_EMPRESAS_CONTACTOS PRIMARY KEY (ID); ALTER TABLE EMPRESAS_DATOS_BANCO ADD CONSTRAINT PK_EMPRESAS_DATOS_BANCO PRIMARY KEY (ID); ALTER TABLE EMPRESAS_TIENDAS ADD CONSTRAINT PK_EMPRESAS_TIENDAS PRIMARY KEY (ID); ALTER TABLE EMPRESAS_USUARIOS ADD CONSTRAINT PK_EMPRESAS_USUARIOS PRIMARY KEY (ID); ALTER TABLE FACTURAS_CLIENTE ADD CONSTRAINT PK_FACTURAS_CLIENTE PRIMARY KEY (ID); ALTER TABLE FACTURAS_CLIENTE_DETALLES ADD CONSTRAINT PK_FACTURAS_CLIENTE_DETALLES PRIMARY KEY (ID); ALTER TABLE FACTURAS_PROVEEDOR ADD CONSTRAINT PK_FACTURAS_PROVEEDOR PRIMARY KEY (ID); ALTER TABLE FACTURAS_PROVEEDOR_DETALLES ADD CONSTRAINT PK_FACTURAS_PROVEEDOR_DETALLES PRIMARY KEY (ID); ALTER TABLE FACTURAS_PROVEEDOR_CONTRATOS ADD CONSTRAINT PK_FACTURAS_PROVEEDOR_CONTRATOS 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 PAGOS_CLIENTE ADD CONSTRAINT PK_PAGOS_CLIENTE PRIMARY KEY (ID); ALTER TABLE PAGOS_PROVEEDOR ADD CONSTRAINT PK_PAGOS_PROVEEDOR PRIMARY KEY (ID); ALTER TABLE PEDIDOS_CLIENTE ADD CONSTRAINT PK_PEDIDOS_CLIENTE PRIMARY KEY (ID); ALTER TABLE PEDIDOS_CLIENTE_DETALLES ADD CONSTRAINT PK_PEDIDOS_CLIENTE_DETALLES PRIMARY KEY (ID); ALTER TABLE PEDIDOS_PROVEEDOR ADD CONSTRAINT PK_PEDIDOS_PROVEEDOR PRIMARY KEY (ID); ALTER TABLE PEDIDOS_PROVEEDOR_DETALLES ADD CONSTRAINT PK_PEDIDOS_PROVEEDOR_DETALLES PRIMARY KEY (ID); ALTER TABLE PERMISOS ADD CONSTRAINT PK_PERMISOS PRIMARY KEY (ID); ALTER TABLE PERMISOSEX ADD CONSTRAINT PK_PERMISOSEX PRIMARY KEY (ID); ALTER TABLE POBLACIONES ADD CONSTRAINT PK_POBLACIONES PRIMARY KEY (ID); ALTER TABLE PRESUPUESTOS_PROPIEDADES ADD CONSTRAINT PK_PRESUPUESTOS_PROPIEDADES PRIMARY KEY (ID); ALTER TABLE PRESUPUESTOS_VALORES ADD CONSTRAINT PK_PRESUPUESTOS_VALORES PRIMARY KEY (ID); ALTER TABLE PRESUPUESTOS_CLIENTE_CAPITULOS ADD CONSTRAINT PK_PRESUPUESTOS_CLIENTE_CAPITUL 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 CONTRATOS_CLIENTE ADD CONSTRAINT PK_CONTRATOS_CLIENTE PRIMARY KEY (ID); ALTER TABLE CONTRATOS_CLIENTE_DETALLES ADD CONSTRAINT PK_CONTRATOS_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 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 REFERENCIAS ADD CONSTRAINT PK_REFERENCIAS PRIMARY KEY (ID); /******************************************************************************/ /**** Foreign Keys ****/ /******************************************************************************/ ALTER TABLE ALBARANES_CLIENTE ADD CONSTRAINT FK_ALBARANES_CLIENTE_1 FOREIGN KEY (ID_FACTURA) REFERENCES FACTURAS_CLIENTE (ID) ON DELETE SET NULL ON UPDATE SET NULL; ALTER TABLE ALBARANES_CLIENTE ADD CONSTRAINT FK_ALBARAN_CLIENTE_2 FOREIGN KEY (ID_EMPRESA) REFERENCES EMPRESAS (ID) ON DELETE NO ACTION ON UPDATE NO ACTION; ALTER TABLE ALBARANES_PROVEEDOR ADD CONSTRAINT FK_ALBARAN_PROVEEDOR_2 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 CONT_CUENTAS ADD CONSTRAINT FK_CONT_CUENTAS_1 FOREIGN KEY (ID_EJERCICIO) REFERENCES CONT_EJERCICIOS (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE CONT_EPIGRAFES ADD CONSTRAINT FK_CONT_EPIGRAFES_1 FOREIGN KEY (ID_EJERCICIO) REFERENCES CONT_EJERCICIOS (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE CONT_SUBCUENTAS ADD CONSTRAINT FK_CONT_SUBCUENTAS_1 FOREIGN KEY (ID_EJERCICIO) REFERENCES CONT_EJERCICIOS (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 EMPRESAS_TIENDAS ADD CONSTRAINT FK_EMPRESAS_TIENDAS_1 FOREIGN KEY (ID_EMPRESA) REFERENCES EMPRESAS (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE FACTURAS_CLIENTE ADD CONSTRAINT FK_FACTURAS_CLIENTE_EMPRESAS FOREIGN KEY (ID_EMPRESA) REFERENCES EMPRESAS (ID) ON DELETE NO ACTION ON UPDATE NO ACTION; ALTER TABLE FACTURAS_PROVEEDOR ADD CONSTRAINT FK_FACTURAS_PROVEEDOR_EMPRESAS FOREIGN KEY (ID_EMPRESA) REFERENCES EMPRESAS (ID) ON DELETE NO ACTION ON UPDATE NO ACTION; ALTER TABLE FACTURAS_PROVEEDOR_DETALLES ADD CONSTRAINT FK_FACTURAS_PRO_DET_ID_FACTURA FOREIGN KEY (ID_FACTURA) REFERENCES FACTURAS_PROVEEDOR (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE FACTURAS_PROVEEDOR_CONTRATOS ADD CONSTRAINT FK_FACTURAS_PROVEEDOR_CONTRATO2 FOREIGN KEY (ID_CONTRATO) REFERENCES CONTRATOS_CLIENTE (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE FACTURAS_PROVEEDOR_CONTRATOS ADD CONSTRAINT FK_FACTURAS_PROVEEDOR_CONTRATOS FOREIGN KEY (ID_FACTURA) REFERENCES FACTURAS_PROVEEDOR (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE MOVIMIENTOS ADD CONSTRAINT FK_MOVIMIENTOS FOREIGN KEY (ID_ARTICULO) REFERENCES ARTICULOS (ID); ALTER TABLE MOVIMIENTOS ADD CONSTRAINT FK_MOVIMIENTOS2 FOREIGN KEY (ID_ALMACEN) REFERENCES ALMACENES (ID); ALTER TABLE PEDIDOS_CLIENTE ADD CONSTRAINT FK_PEDIDOS_CLIENTE FOREIGN KEY (ID_CLIENTE) REFERENCES CONTACTOS (ID); ALTER TABLE PEDIDOS_CLIENTE ADD CONSTRAINT FK_PEDIDOS_CLIENTE_ID_EMPRESA FOREIGN KEY (ID_EMPRESA) REFERENCES EMPRESAS (ID); ALTER TABLE PEDIDOS_PROVEEDOR ADD CONSTRAINT FK_PEDIDOS_PROVEEDOR FOREIGN KEY (ID_EMPRESA) REFERENCES EMPRESAS (ID); ALTER TABLE PEDIDOS_PROVEEDOR ADD CONSTRAINT FK_PEDIDOS_PROVEEDOR2 FOREIGN KEY (ID_PROVEEDOR) REFERENCES CONTACTOS (ID); ALTER TABLE PEDIDOS_PROVEEDOR_DETALLES ADD CONSTRAINT FK_PEDIDOS_PROV_DET_ID_PEDIDO FOREIGN KEY (ID_PEDIDO) REFERENCES PEDIDOS_PROVEEDOR (ID) ON DELETE CASCADE ON UPDATE CASCADE; 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; ALTER TABLE PAGOS_CLIENTE ADD CONSTRAINT FK_PAGOS_CLIENTE_1 FOREIGN KEY (ID_RECIBO) REFERENCES RECIBOS_CLIENTE (ID); ALTER TABLE PAGOS_PROVEEDOR ADD CONSTRAINT FK_PAGOS_PROVEEDOR_1 FOREIGN KEY (ID_RECIBO) REFERENCES RECIBOS_PROVEEDOR (ID); ALTER TABLE PRESUPUESTOS_CLIENTE ADD CONSTRAINT FK_PRESUPUESTOS_CLIENTE_1 FOREIGN KEY (ID_CONTRATO) REFERENCES CONTRATOS_CLIENTE (ID) ON DELETE SET NULL ON UPDATE CASCADE; /******************************************************************************/ /**** Indices ****/ /******************************************************************************/ CREATE INDEX IDX_ALBARANES_CLIENTE1 ON ALBARANES_CLIENTE (ID_FORMA_PAGO); CREATE INDEX IDX_ALBARANES_CLIENTE2 ON ALBARANES_CLIENTE (TIPO); CREATE INDEX IDX_ALBARANES_CLIENTE_DETALLES1 ON ALBARANES_CLIENTE_DETALLES (ID_ARTICULO); CREATE INDEX IDX_ALBARANES_CLIENTE_DETALLES2 ON ALBARANES_CLIENTE_DETALLES (ID_ALBARAN); CREATE INDEX IDX_ALBARANES_PROVEEDOR_1 ON ALBARANES_PROVEEDOR (ID_ALMACEN); CREATE INDEX IDX_ALBARANES_PROVEEDOR_2 ON ALBARANES_PROVEEDOR (ID_FORMA_PAGO); CREATE INDEX IDX_ALBARANES_PROVEEDOR_3 ON ALBARANES_PROVEEDOR (ID_PEDIDO); CREATE INDEX IDX_ALBARANES_PROVEEDOR_4 ON ALBARANES_PROVEEDOR (ID_FACTURA); CREATE INDEX IDX_ALBARANES_PROVEEDOR_5 ON ALBARANES_PROVEEDOR (TIPO); CREATE INDEX IDX_ALBARANES_PROV_DETALLES ON ALBARANES_PROVEEDOR_DETALLES (ID_ALBARAN); CREATE INDEX IDX_ALBARANES_PROV_DETALLES1 ON ALBARANES_PROVEEDOR_DETALLES (ID_ARTICULO); CREATE INDEX IDX_ARTICULOS ON ARTICULOS (ID_PROVEEDOR); CREATE INDEX IDX_CLIENTES_DATOS ON CLIENTES_DATOS (ID_TIPO_IVA); CREATE INDEX IDX_CLIENTES_DATOS1 ON CLIENTES_DATOS (ID_FORMA_PAGO); CREATE INDEX IDX_CLIENTES_DATOS_ID_AGENTE ON CLIENTES_DATOS (ID_AGENTE); CREATE INDEX IDX_CLIENTES_DTOS_PROV_ID_CLI ON CLIENTES_DTOS_PROVEEDORES (ID_CLIENTE); CREATE INDEX IDX_CLIENTES_DTOS_PROV_ID_PROV ON CLIENTES_DTOS_PROVEEDORES (ID_PROVEEDOR); CREATE INDEX IDX_COMISIONES_LIQUIDADAS ON COMISIONES_LIQUIDADAS (ID_EMPRESA); CREATE INDEX IDX_CONFIGURACION ON CONFIGURACION (ID_EMPRESA); CREATE INDEX IDX_CONTACTOS_CATEGORIAS ON CONTACTOS_CATEGORIAS (ID_CONTACTO); CREATE INDEX IDX_CONTACTOS_CATEGORIAS1 ON CONTACTOS_CATEGORIAS (ID_CATEGORIA); CREATE INDEX IDX_CONTACTOS_DATOS_BANCO ON CONTACTOS_DATOS_BANCO (ID_CONTACTO); CREATE INDEX IDX_CONTACTOS_DIR_ID_CONTACTO ON CONTACTOS_DIRECCIONES (ID_CONTACTO); CREATE INDEX IDX_CONTACTOS_PER_ID_CONTACTO ON CONTACTOS_DATOS_PERSONAL (ID_CONTACTO); CREATE INDEX CONT_APUNTES_IDX1 ON CONT_APUNTES (ID_ASIENTO); CREATE INDEX CONT_APUNTES_IDX2 ON CONT_APUNTES (ID_SUBCUENTA); CREATE INDEX CONT_ASIENTOS_IDX1 ON CONT_ASIENTOS (ID_FACTURA); CREATE INDEX CONT_ASIENTOS_IDX2 ON CONT_ASIENTOS (ID_PAGO); CREATE INDEX CONT_CUENTAS_IDX1 ON CONT_CUENTAS (ID_BALANCE); CREATE INDEX CONT_CUENTAS_IDX2 ON CONT_CUENTAS (ID_EPIGRAFE); CREATE INDEX CONT_SUBCUENTAS_IDX1 ON CONT_SUBCUENTAS (ID_CONTACTO); CREATE INDEX IDX_EMPRESAS_CONTACTOS ON EMPRESAS_CONTACTOS (ID_EMPRESA, ID_CONTACTO); CREATE INDEX IDX_EMPRESAS_USUARIOS ON EMPRESAS_USUARIOS (ID_EMPRESA, ID_USUARIO); CREATE INDEX IDX_FACTURAS_CLIENTE ON FACTURAS_CLIENTE (ID_FORMA_PAGO); CREATE INDEX IDX_FACTURAS_CLIENTE1 ON FACTURAS_CLIENTE (ID_TIPO_IVA); CREATE INDEX IDX_FACTURAS_CLIENTE2 ON FACTURAS_CLIENTE (ID_COMISION_LIQUIDADA); CREATE INDEX IDX_FACTURAS_CLIENTE3 ON FACTURAS_CLIENTE (ID_CLIENTE); CREATE INDEX 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 IDX_FACTURAS_PROVEEDOR_DETALLES ON FACTURAS_PROVEEDOR_DETALLES (ID_ARTICULO); 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 IDX_PEDIDOS_CLIENTE ON PEDIDOS_CLIENTE (ID_FORMA_PAGO); CREATE INDEX IDX_PEDIDOS_CLIENTE_DETALLES ON PEDIDOS_CLIENTE_DETALLES (ID_PEDIDO); CREATE INDEX IDX_PEDIDOS_CLIENTE_DETALLES1 ON PEDIDOS_CLIENTE_DETALLES (ID_ARTICULO); 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_PROVEEDOR_DETALLES ON PEDIDOS_PROVEEDOR_DETALLES (ID_ARTICULO); CREATE INDEX IDX_PERMISOS ON PERMISOS (ID_USUARIO); CREATE INDEX IDX_PERMISOSEX ON PERMISOSEX (ID_USUARIO); 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 IDX_RECIBOS_PROVEEDOR ON RECIBOS_PROVEEDOR (ID_RECIBO_COMPENSADO); CREATE INDEX IDX_REFERENCIAS ON REFERENCIAS (ID_EMPRESA); CREATE INDEX IDX_REFERENCIAS2 ON REFERENCIAS (ID_TIENDA); CREATE INDEX IDX_REMESAS_CLIENTE ON REMESAS_CLIENTE (ID_DATOS_BANCO); CREATE INDEX IDX_REMESAS_PROVEEDOR ON REMESAS_PROVEEDOR (ID_DATOS_BANCO); /******************************************************************************/ /**** Stored Procedures ****/ /******************************************************************************/ SET TERM ^ ; ALTER PROCEDURE PROC_DELETE_ASIENTO_FACTURA ( IDFACTURA INTEGER, TIPO VARCHAR(1)) AS declare variable idasiento integer; begin SELECT ID FROM CONT_ASIENTOS WHERE ID_FACTURA = :IDFACTURA AND TIPO = :TIPO INTO :IDASIENTO; DELETE FROM CONT_APUNTES WHERE ID_ASIENTO = :IDASIENTO; DELETE FROM CONT_ASIENTOS WHERE ID = :IDASIENTO; suspend; end ^ ALTER PROCEDURE PROC_DELETE_ASIENTO_PAGO ( IDPAGO INTEGER, TIPO VARCHAR(1)) AS declare variable idasiento integer; begin SELECT ID FROM CONT_ASIENTOS WHERE ID_PAGO = :IDPAGO AND TIPO = :TIPO INTO :IDASIENTO; DELETE FROM CONT_APUNTES WHERE ID_ASIENTO = :IDASIENTO; DELETE FROM CONT_ASIENTOS WHERE ID = :IDASIENTO; suspend; end ^ ALTER PROCEDURE PROC_NEW_ASIENTO_FACTURA_CLI ( idfactura integer, id_subcuenta_venta integer) as declare variable ignorarcontabilidad integer; declare variable referenciafactura varchar(255); declare variable razon varchar(255); declare variable fechafactura date; declare variable baseimponible numeric(11,2); declare variable idsubcuenta integer; declare variable idasiento integer; declare variable idejercicio integer; declare variable orden integer; declare variable importetotal numeric(11,2); declare variable importeiva numeric(11,2); declare variable importere numeric(11,2); declare variable idempresa integer; declare variable idcontacto integer; begin /*BUSCAMOS LA FACTURA DE LA QUE COMPROBAR SI HACER ASIENTO*/ SELECT FACTURAS_CLIENTE.ID_EMPRESA, FACTURAS_CLIENTE.IGNORAR_CONTABILIDAD, FACTURAS_CLIENTE.REFERENCIA, FACTURAS_CLIENTE.ID_CLIENTE, FACTURAS_CLIENTE.NOMBRE, FACTURAS_CLIENTE.FECHA_FACTURA, FACTURAS_CLIENTE.BASE_IMPONIBLE, FACTURAS_CLIENTE.IMPORTE_IVA, FACTURAS_CLIENTE.IMPORTE_RE, FACTURAS_CLIENTE.IMPORTE_TOTAL FROM FACTURAS_CLIENTE WHERE FACTURAS_CLIENTE.ID = :IDFACTURA INTO :IDEMPRESA, :IGNORARCONTABILIDAD, :REFERENCIAFACTURA, :IDCONTACTO, :RAZON, :FECHAFACTURA, :BASEIMPONIBLE, :IMPORTEIVA, :IMPORTERE, :IMPORTETOTAL; /*BUSCAMOS EL EJERCICIO ACTIVO PARA LA EMPRESA DE LA FACTURA*/ SELECT ID FROM CONT_EJERCICIOS WHERE ID_EMPRESA = :IDEMPRESA AND ACTIVO = 1 INTO :IDEJERCICIO; /*BUSCAMOS LA SUBCUENTA DEL EJERCICIO ACTIVO DE LA EMPRESA DE LA FACTURA PARA EL CLIENTE DE LA FACTURA*/ SELECT ID FROM CONT_SUBCUENTAS WHERE ID_CONTACTO = :IDCONTACTO AND ID_EJERCICIO = :IDEJERCICIO INTO :IDSUBCUENTA; SELECT ID FROM CONT_ASIENTOS WHERE ID_FACTURA = :IDFACTURA AND TIPO = 'c' INTO :IDASIENTO; /*SIEMPRE ELIMIAREMOS LOS APUNTES EXISTENTES DEL ASIENTO PARA VOLVERLOS A GENERAR*/ DELETE FROM CONT_APUNTES WHERE ID_ASIENTO = :IDASIENTO; /*EN EL CASO DE QUE SE DESEE IGNORAR LA FACTURA EN CONTABILIDAD BORRAMOS EL ASIENTO Y SE ACABO*/ if (IGNORARCONTABILIDAD <> 0) then BEGIN DELETE FROM CONT_ASIENTOS WHERE ID = :IDASIENTO; END /*EN EL DE CONTABILIZAR LA FACTURA COMPROBAMOS SI EXISTE ASIENTO ASOCIADO A LA FACTURA*/ ELSE BEGIN /*MODIFICAMOS LOS DATOS DEL ASIENTO*/ IF (IDASIENTO <> 0) THEN BEGIN UPDATE CONT_ASIENTOS SET FECHA_ASIENTO = :FECHAFACTURA WHERE ID = :IDASIENTO; END /*INSERTAMOS LOS DATOS DEL NUEVO ASIENTO*/ ELSE BEGIN SELECT GEN_ID(GEN_CONT_ASIENTOS_ID, 1), COALESCE(max(V_CONT_DIARIO.ORDEN_ASIENTO),0) + 1 FROM V_CONT_DIARIO WHERE V_CONT_DIARIO.ID_EJERCICIO = :IDEJERCICIO INTO :IDASIENTO, :ORDEN; INSERT INTO CONT_ASIENTOS (ID, FECHA_ASIENTO, ORDEN, ID_FACTURA, TIPO) VALUES (:IDASIENTO, :FECHAFACTURA, :ORDEN, :IDFACTURA, 'c'); END IF (IMPORTETOTAL < 0) THEN BEGIN /*INSERTAMOS LOS APUNTES DEL ABONO*/ INSERT INTO CONT_APUNTES (ID, ID_ASIENTO, ID_SUBCUENTA, NUM_ORDEN, PUNTEADO, CONCEPTO, DOCUMENTO, DEBE, HABER) VALUES (GEN_ID(GEN_CONT_APUNTES_ID, 1), :IDASIENTO, :IDSUBCUENTA, 1, -1, 'Abono de cliente: ' || :RAZON, :REFERENCIAFACTURA, NULL, -1*(:IMPORTETOTAL)); END ELSE BEGIN /*INSERTAMOS LOS APUNTES DE LA FACTURA*/ INSERT INTO CONT_APUNTES (ID, ID_ASIENTO, ID_SUBCUENTA, NUM_ORDEN, PUNTEADO, CONCEPTO, DOCUMENTO, DEBE, HABER) VALUES (GEN_ID(GEN_CONT_APUNTES_ID, 1), :IDASIENTO, :IDSUBCUENTA, 1, -1, 'Factura de cliente: ' || :RAZON, :REFERENCIAFACTURA, :IMPORTETOTAL, NULL); END IF (IMPORTEIVA <> 0) THEN BEGIN SELECT CONT_SUBCUENTAS.ID FROM CONT_SUBCUENTAS LEFT JOIN CONT_CUENTAS ON (CONT_CUENTAS.ID = CONT_SUBCUENTAS.ID_CUENTA) WHERE CONT_CUENTAS.REF_CUENTA = 477 AND CONT_SUBCUENTAS.ID_EJERCICIO = :IDEJERCICIO INTO :IDSUBCUENTA; IF (IMPORTETOTAL < 0) THEN BEGIN INSERT INTO CONT_APUNTES (ID, ID_ASIENTO, ID_SUBCUENTA, NUM_ORDEN, PUNTEADO, CONCEPTO, DOCUMENTO, DEBE, HABER) VALUES (GEN_ID(GEN_CONT_APUNTES_ID, 1), :IDASIENTO, :IDSUBCUENTA, 2, -1, 'Abono de cliente: ' || :RAZON, :REFERENCIAFACTURA || ' (IVA)', -1*(:IMPORTEIVA), NULL); END ELSE BEGIN INSERT INTO CONT_APUNTES (ID, ID_ASIENTO, ID_SUBCUENTA, NUM_ORDEN, PUNTEADO, CONCEPTO, DOCUMENTO, DEBE, HABER) VALUES (GEN_ID(GEN_CONT_APUNTES_ID, 1), :IDASIENTO, :IDSUBCUENTA, 2, -1, 'Factura de cliente: ' || :RAZON, :REFERENCIAFACTURA || ' (IVA)', NULL, :IMPORTEIVA); END END IF (IMPORTERE <> 0) THEN BEGIN SELECT CONT_SUBCUENTAS.ID FROM CONT_SUBCUENTAS LEFT JOIN CONT_CUENTAS ON (CONT_CUENTAS.ID = CONT_SUBCUENTAS.ID_CUENTA) WHERE CONT_CUENTAS.REF_CUENTA = 475 AND CONT_SUBCUENTAS.ID_EJERCICIO = :IDEJERCICIO INTO :IDSUBCUENTA; IF (IMPORTETOTAL < 0) THEN BEGIN INSERT INTO CONT_APUNTES (ID, ID_ASIENTO, ID_SUBCUENTA, NUM_ORDEN, PUNTEADO, CONCEPTO, DOCUMENTO, DEBE, HABER) VALUES (GEN_ID(GEN_CONT_APUNTES_ID, 1), :IDASIENTO, :IDSUBCUENTA, 3, -1, 'Abono de cliente: ' || :RAZON, :REFERENCIAFACTURA || ' (RE)', -1*(:IMPORTERE), NULL); END ELSE BEGIN INSERT INTO CONT_APUNTES (ID, ID_ASIENTO, ID_SUBCUENTA, NUM_ORDEN, PUNTEADO, CONCEPTO, DOCUMENTO, DEBE, HABER) VALUES (GEN_ID(GEN_CONT_APUNTES_ID, 1), :IDASIENTO, :IDSUBCUENTA, 3, -1, 'Factura de cliente: ' || :RAZON, :REFERENCIAFACTURA || ' (RE)', NULL, :IMPORTERE); END END IF (BASEIMPONIBLE <> 0) THEN BEGIN IF (IMPORTETOTAL < 0) THEN BEGIN INSERT INTO CONT_APUNTES (ID, ID_ASIENTO, ID_SUBCUENTA, NUM_ORDEN, PUNTEADO, CONCEPTO, DOCUMENTO, DEBE, HABER) VALUES (GEN_ID(GEN_CONT_APUNTES_ID, 1), :IDASIENTO, :ID_SUBCUENTA_VENTA, 4, -1, 'Abono de cliente: ' || :RAZON, :REFERENCIAFACTURA || ' (Base imponible)', -1*(:BASEIMPONIBLE), NULL); END ELSE BEGIN INSERT INTO CONT_APUNTES (ID, ID_ASIENTO, ID_SUBCUENTA, NUM_ORDEN, PUNTEADO, CONCEPTO, DOCUMENTO, DEBE, HABER) VALUES (GEN_ID(GEN_CONT_APUNTES_ID, 1), :IDASIENTO, :ID_SUBCUENTA_VENTA, 4, -1, 'Factura de cliente: ' || :RAZON, :REFERENCIAFACTURA || ' (Base imponible)', NULL, :BASEIMPONIBLE); END END END suspend; end ^ ALTER PROCEDURE PROC_NEW_ASIENTO_FACTURA_PROV ( idfactura integer, id_subcuenta_compra integer) as declare variable ignorarcontabilidad integer; declare variable referenciafactura varchar(255); declare variable razon varchar(255); declare variable fechafactura date; declare variable baseimponible numeric(11,2); declare variable idsubcuenta integer; declare variable idasiento integer; declare variable idejercicio integer; declare variable orden integer; declare variable importetotal numeric(11,2); declare variable importeiva numeric(11,2); declare variable importere numeric(11,2); declare variable idempresa integer; declare variable idcontacto integer; begin /*BUSCAMOS LA FACTURA DE LA QUE COMPROBAR SI HACER ASIENTO*/ SELECT FACTURAS_PROVEEDOR.ID_EMPRESA, FACTURAS_PROVEEDOR.IGNORAR_CONTABILIDAD, FACTURAS_PROVEEDOR.REFERENCIA, FACTURAS_PROVEEDOR.ID_PROVEEDOR, FACTURAS_PROVEEDOR.NOMBRE, FACTURAS_PROVEEDOR.FECHA_FACTURA, FACTURAS_PROVEEDOR.BASE_IMPONIBLE, FACTURAS_PROVEEDOR.IMPORTE_IVA, FACTURAS_PROVEEDOR.IMPORTE_RE, FACTURAS_PROVEEDOR.IMPORTE_TOTAL FROM FACTURAS_PROVEEDOR WHERE FACTURAS_PROVEEDOR.ID = :IDFACTURA INTO :IDEMPRESA, :IGNORARCONTABILIDAD, :REFERENCIAFACTURA, :IDCONTACTO, :RAZON, :FECHAFACTURA, :BASEIMPONIBLE, :IMPORTEIVA, :IMPORTERE, :IMPORTETOTAL; /*BUSCAMOS EL EJERCICIO ACTIVO PARA LA EMPRESA DE LA FACTURA*/ SELECT ID FROM CONT_EJERCICIOS WHERE ID_EMPRESA = :IDEMPRESA AND ACTIVO = 1 INTO :IDEJERCICIO; /*BUSCAMOS LA SUBCUENTA DEL EJERCICIO ACTIVO DE LA EMPRESA DE LA FACTURA PARA EL CLIENTE DE LA FACTURA*/ SELECT ID FROM CONT_SUBCUENTAS WHERE ID_CONTACTO = :IDCONTACTO AND ID_EJERCICIO = :IDEJERCICIO INTO :IDSUBCUENTA; SELECT ID FROM CONT_ASIENTOS WHERE ID_FACTURA = :IDFACTURA AND TIPO = 'p' INTO :IDASIENTO; /*SIEMPRE ELIMIAREMOS LOS APUNTES EXISTENTES DEL ASIENTO PARA VOLVERLOS A GENERAR*/ DELETE FROM CONT_APUNTES WHERE ID_ASIENTO = :IDASIENTO; /*EN EL CASO DE QUE SE DESEE IGNORAR LA FACTURA EN CONTABILIDAD BORRAMOS EL ASIENTO Y SE ACABO*/ if (IGNORARCONTABILIDAD <> 0) then BEGIN DELETE FROM CONT_ASIENTOS WHERE ID = :IDASIENTO; END /*EN EL DE CONTABILIZAR LA FACTURA COMPROBAMOS SI EXISTE ASIENTO ASOCIADO A LA FACTURA*/ ELSE BEGIN /*MODIFICAMOS LOS DATOS DEL ASIENTO*/ IF (IDASIENTO <> 0) THEN BEGIN UPDATE CONT_ASIENTOS SET FECHA_ASIENTO = :FECHAFACTURA WHERE ID = :IDASIENTO; END /*INSERTAMOS LOS DATOS DEL NUEVO ASIENTO*/ ELSE BEGIN SELECT GEN_ID(GEN_CONT_ASIENTOS_ID, 1), COALESCE(max(V_CONT_DIARIO.ORDEN_ASIENTO),0) + 1 FROM V_CONT_DIARIO WHERE V_CONT_DIARIO.ID_EJERCICIO = :IDEJERCICIO INTO :IDASIENTO, :ORDEN; INSERT INTO CONT_ASIENTOS (ID, FECHA_ASIENTO, ORDEN, ID_FACTURA, TIPO) VALUES (:IDASIENTO, :FECHAFACTURA, :ORDEN, :IDFACTURA, 'p'); END IF (IMPORTETOTAL < 0) THEN BEGIN /*INSERTAMOS LOS APUNTES DEL ABONO*/ INSERT INTO CONT_APUNTES (ID, ID_ASIENTO, ID_SUBCUENTA, NUM_ORDEN, PUNTEADO, CONCEPTO, DOCUMENTO, DEBE, HABER) VALUES (GEN_ID(GEN_CONT_APUNTES_ID, 1), :IDASIENTO, :IDSUBCUENTA, 1, -1, 'Abono de proveedor: ' || :RAZON, :REFERENCIAFACTURA, -1*(:IMPORTETOTAL), NULL); END ELSE BEGIN /*INSERTAMOS LOS APUNTES DE LA FACTURA*/ INSERT INTO CONT_APUNTES (ID, ID_ASIENTO, ID_SUBCUENTA, NUM_ORDEN, PUNTEADO, CONCEPTO, DOCUMENTO, DEBE, HABER) VALUES (GEN_ID(GEN_CONT_APUNTES_ID, 1), :IDASIENTO, :IDSUBCUENTA, 1, -1, 'Factura de proveedor: ' || :RAZON, :REFERENCIAFACTURA, NULL, :IMPORTETOTAL); END IF (IMPORTEIVA <> 0) THEN BEGIN SELECT CONT_SUBCUENTAS.ID FROM CONT_SUBCUENTAS LEFT JOIN CONT_CUENTAS ON (CONT_CUENTAS.ID = CONT_SUBCUENTAS.ID_CUENTA) WHERE CONT_CUENTAS.REF_CUENTA = 472 AND CONT_SUBCUENTAS.ID_EJERCICIO = :IDEJERCICIO INTO :IDSUBCUENTA; IF (IMPORTETOTAL < 0) THEN BEGIN INSERT INTO CONT_APUNTES (ID, ID_ASIENTO, ID_SUBCUENTA, NUM_ORDEN, PUNTEADO, CONCEPTO, DOCUMENTO, DEBE, HABER) VALUES (GEN_ID(GEN_CONT_APUNTES_ID, 1), :IDASIENTO, :IDSUBCUENTA, 2, -1, 'Abono de proveedor: ' || :RAZON, :REFERENCIAFACTURA || ' (IVA)', NULL, -1*(:IMPORTEIVA)); END ELSE BEGIN INSERT INTO CONT_APUNTES (ID, ID_ASIENTO, ID_SUBCUENTA, NUM_ORDEN, PUNTEADO, CONCEPTO, DOCUMENTO, DEBE, HABER) VALUES (GEN_ID(GEN_CONT_APUNTES_ID, 1), :IDASIENTO, :IDSUBCUENTA, 2, -1, 'Factura de proveedor: ' || :RAZON, :REFERENCIAFACTURA || ' (IVA)', :IMPORTEIVA, NULL); END END IF (IMPORTERE <> 0) THEN BEGIN SELECT CONT_SUBCUENTAS.ID FROM CONT_SUBCUENTAS LEFT JOIN CONT_CUENTAS ON (CONT_CUENTAS.ID = CONT_SUBCUENTAS.ID_CUENTA) WHERE CONT_CUENTAS.REF_CUENTA = 470 AND CONT_SUBCUENTAS.ID_EJERCICIO = :IDEJERCICIO INTO :IDSUBCUENTA; IF (IMPORTETOTAL < 0) THEN BEGIN INSERT INTO CONT_APUNTES (ID, ID_ASIENTO, ID_SUBCUENTA, NUM_ORDEN, PUNTEADO, CONCEPTO, DOCUMENTO, DEBE, HABER) VALUES (GEN_ID(GEN_CONT_APUNTES_ID, 1), :IDASIENTO, :IDSUBCUENTA, 3, -1, 'Abono de proveedor: ' || :RAZON, :REFERENCIAFACTURA || ' (RE)', NULL, -1*(:IMPORTERE)); END ELSE BEGIN INSERT INTO CONT_APUNTES (ID, ID_ASIENTO, ID_SUBCUENTA, NUM_ORDEN, PUNTEADO, CONCEPTO, DOCUMENTO, DEBE, HABER) VALUES (GEN_ID(GEN_CONT_APUNTES_ID, 1), :IDASIENTO, :IDSUBCUENTA, 3, -1, 'Factura de proveedor: ' || :RAZON, :REFERENCIAFACTURA || ' (RE)', :IMPORTERE, NULL); END END IF (BASEIMPONIBLE <> 0) THEN BEGIN IF (IMPORTETOTAL < 0) THEN BEGIN INSERT INTO CONT_APUNTES (ID, ID_ASIENTO, ID_SUBCUENTA, NUM_ORDEN, PUNTEADO, CONCEPTO, DOCUMENTO, DEBE, HABER) VALUES (GEN_ID(GEN_CONT_APUNTES_ID, 1), :IDASIENTO, :ID_SUBCUENTA_COMPRA, 4, -1, 'Abono de proveedor: ' || :RAZON, :REFERENCIAFACTURA || ' (Base imponible)', NULL, -1*(:BASEIMPONIBLE)); END ELSE BEGIN INSERT INTO CONT_APUNTES (ID, ID_ASIENTO, ID_SUBCUENTA, NUM_ORDEN, PUNTEADO, CONCEPTO, DOCUMENTO, DEBE, HABER) VALUES (GEN_ID(GEN_CONT_APUNTES_ID, 1), :IDASIENTO, :ID_SUBCUENTA_COMPRA, 4, -1, 'Factura de proveedor: ' || :RAZON, :REFERENCIAFACTURA || ' (Base imponible)', :BASEIMPONIBLE, NULL); END END END suspend; end ^ ALTER PROCEDURE PROC_NEW_ASIENTO_PAGO_CLI ( idpago integer, idsubcuentapago integer) as declare variable ignorarcontabilidad integer; declare variable referenciarecibo varchar(255); declare variable fechapago date; declare variable tipopago varchar(255); declare variable importe numeric(11,2); declare variable idsubcuenta integer; declare variable idasiento integer; declare variable idejercicio integer; declare variable orden integer; declare variable debe numeric(11,2); declare variable haber numeric(11,2); declare variable idempresa integer; declare variable idcontacto integer; declare variable concepto varchar(2000); begin /*BUSCAMOS EL PAGO PARA COMPROBAR SI HACER ASIENTO*/ SELECT PAGOS_CLIENTE.IGNORAR_CONTABILIDAD, RECIBOS_CLIENTE.ID_EMPRESA, RECIBOS_CLIENTE.ID_CLIENTE, RECIBOS_CLIENTE.REFERENCIA || ': ' || RECIBOS_CLIENTE.NOMBRE, PAGOS_CLIENTE.FECHA_PAGO, PAGOS_CLIENTE.TIPO, PAGOS_CLIENTE.TIPO || ': ' || COALESCE(RECIBOS_CLIENTE.DESCRIPCION, 'No hay descripción'), RECIBOS_CLIENTE.IMPORTE FROM PAGOS_CLIENTE LEFT JOIN RECIBOS_CLIENTE ON (RECIBOS_CLIENTE.ID = PAGOS_CLIENTE.ID_RECIBO) WHERE PAGOS_CLIENTE.ID = :IDPAGO INTO :IGNORARCONTABILIDAD, :IDEMPRESA, :IDCONTACTO, :REFERENCIARECIBO, :FECHAPAGO, :TIPOPAGO, :CONCEPTO, :IMPORTE; /*BUSCAMOS EL EJERCICIO ACTIVO PARA LA EMPRESA DE LA FACTURA*/ SELECT ID FROM CONT_EJERCICIOS WHERE ID_EMPRESA = :IDEMPRESA AND ACTIVO = 1 INTO :IDEJERCICIO; /*BUSCAMOS LA SUBCUENTA DEL EJERCICIO ACTIVO DE LA EMPRESA DE LA FACTURA PARA EL CLIENTE DE LA FACTURA*/ SELECT ID FROM CONT_SUBCUENTAS WHERE ID_CONTACTO = :IDCONTACTO AND ID_EJERCICIO = :IDEJERCICIO INTO :IDSUBCUENTA; SELECT ID FROM CONT_ASIENTOS WHERE ID_PAGO = :IDPAGO AND TIPO = 'c' INTO :IDASIENTO; /*SIEMPRE ELIMIAREMOS LOS APUNTES EXISTENTES DEL ASIENTO PARA VOLVERLOS A GENERAR*/ DELETE FROM CONT_APUNTES WHERE ID_ASIENTO = :IDASIENTO; /*EN EL CASO DE QUE SE DESEE IGNORAR EL PAGO EN CONTABILIDAD BORRAMOS EL ASIENTO Y SE ACABO*/ if (IGNORARCONTABILIDAD <> 0) then BEGIN DELETE FROM CONT_ASIENTOS WHERE ID = :IDASIENTO; END /*EN EL DE CONTABILIZAR EL PAGO COMPROBAMOS SI EXISTE ASIENTO ASOCIADO AL PAGO*/ ELSE BEGIN /*MODIFICAMOS LOS DATOS DEL ASIENTO*/ IF (IDASIENTO <> 0) THEN BEGIN UPDATE CONT_ASIENTOS SET FECHA_ASIENTO = :FECHAPAGO WHERE ID = :IDASIENTO; END /*INSERTAMOS LOS DATOS DEL NUEVO ASIENTO*/ ELSE BEGIN SELECT GEN_ID(GEN_CONT_ASIENTOS_ID, 1), COALESCE(max(V_CONT_DIARIO.ORDEN_ASIENTO),0) + 1 FROM V_CONT_DIARIO WHERE V_CONT_DIARIO.ID_EJERCICIO = :IDEJERCICIO INTO :IDASIENTO, :ORDEN; INSERT INTO CONT_ASIENTOS (ID, FECHA_ASIENTO, ORDEN, ID_PAGO, TIPO) VALUES (:IDASIENTO, :FECHAPAGO, :ORDEN, :IDPAGO, 'c'); END /*INSERTAMOS LOS APUNTES*/ if (TIPOPAGO = 'Pago') then begin DEBE = NULL; HABER = :IMPORTE; end else begin DEBE = :IMPORTE; HABER = NULL; end INSERT INTO CONT_APUNTES (ID, ID_ASIENTO, ID_SUBCUENTA, NUM_ORDEN, PUNTEADO, CONCEPTO, DOCUMENTO, DEBE, HABER) VALUES (GEN_ID(GEN_CONT_APUNTES_ID, 1), :IDASIENTO, :IDSUBCUENTA, 1, -1, :CONCEPTO, :REFERENCIARECIBO, :DEBE, :HABER); INSERT INTO CONT_APUNTES (ID, ID_ASIENTO, ID_SUBCUENTA, NUM_ORDEN, PUNTEADO, CONCEPTO, DOCUMENTO, DEBE, HABER) VALUES (GEN_ID(GEN_CONT_APUNTES_ID, 1), :IDASIENTO, :IDSUBCUENTAPAGO, 2, -1, :CONCEPTO, :REFERENCIARECIBO, :HABER, :DEBE); END suspend; end ^ ALTER PROCEDURE PROC_NEW_ASIENTO_PAGO_PROV ( idpago integer, idsubcuentapago integer) as declare variable ignorarcontabilidad integer; declare variable referenciarecibo varchar(255); declare variable fechapago date; declare variable tipopago varchar(255); declare variable importe numeric(11,2); declare variable idsubcuenta integer; declare variable idasiento integer; declare variable idejercicio integer; declare variable orden integer; declare variable debe numeric(11,2); declare variable haber numeric(11,2); declare variable idempresa integer; declare variable idcontacto integer; declare variable concepto varchar(2000); begin /*BUSCAMOS EL PAGO PARA COMPROBAR SI HACER ASIENTO*/ SELECT PAGOS_PROVEEDOR.IGNORAR_CONTABILIDAD, RECIBOS_PROVEEDOR.ID_EMPRESA, RECIBOS_PROVEEDOR.ID_PROVEEDOR, RECIBOS_PROVEEDOR.REFERENCIA || ': ' || RECIBOS_PROVEEDOR.NOMBRE, PAGOS_PROVEEDOR.FECHA_PAGO, PAGOS_PROVEEDOR.TIPO, PAGOS_PROVEEDOR.TIPO || ': ' || COALESCE(RECIBOS_PROVEEDOR.DESCRIPCION, 'No hay descripción'), RECIBOS_PROVEEDOR.IMPORTE FROM PAGOS_PROVEEDOR LEFT JOIN RECIBOS_PROVEEDOR ON (RECIBOS_PROVEEDOR.ID = PAGOS_PROVEEDOR.ID_RECIBO) WHERE PAGOS_PROVEEDOR.ID = :IDPAGO INTO :IGNORARCONTABILIDAD, :IDEMPRESA, :IDCONTACTO, :REFERENCIARECIBO, :FECHAPAGO, :TIPOPAGO, :CONCEPTO, :IMPORTE; /*BUSCAMOS EL EJERCICIO ACTIVO PARA LA EMPRESA DE LA FACTURA*/ SELECT ID FROM CONT_EJERCICIOS WHERE ID_EMPRESA = :IDEMPRESA AND ACTIVO = 1 INTO :IDEJERCICIO; /*BUSCAMOS LA SUBCUENTA DEL EJERCICIO ACTIVO DE LA EMPRESA DE LA FACTURA PARA EL CLIENTE DE LA FACTURA*/ SELECT ID FROM CONT_SUBCUENTAS WHERE ID_CONTACTO = :IDCONTACTO AND ID_EJERCICIO = :IDEJERCICIO INTO :IDSUBCUENTA; SELECT ID FROM CONT_ASIENTOS WHERE ID_PAGO = :IDPAGO AND TIPO = 'p' INTO :IDASIENTO; /*SIEMPRE ELIMIAREMOS LOS APUNTES EXISTENTES DEL ASIENTO PARA VOLVERLOS A GENERAR*/ DELETE FROM CONT_APUNTES WHERE ID_ASIENTO = :IDASIENTO; /*EN EL CASO DE QUE SE DESEE IGNORAR EL PAGO EN CONTABILIDAD BORRAMOS EL ASIENTO Y SE ACABO*/ if (IGNORARCONTABILIDAD <> 0) then BEGIN DELETE FROM CONT_ASIENTOS WHERE ID = :IDASIENTO; END /*EN EL DE CONTABILIZAR EL PAGO COMPROBAMOS SI EXISTE ASIENTO ASOCIADO AL PAGO*/ ELSE BEGIN /*MODIFICAMOS LOS DATOS DEL ASIENTO*/ IF (IDASIENTO <> 0) THEN BEGIN UPDATE CONT_ASIENTOS SET FECHA_ASIENTO = :FECHAPAGO WHERE ID = :IDASIENTO; END /*INSERTAMOS LOS DATOS DEL NUEVO ASIENTO*/ ELSE BEGIN SELECT GEN_ID(GEN_CONT_ASIENTOS_ID, 1), COALESCE(max(V_CONT_DIARIO.ORDEN_ASIENTO),0) + 1 FROM V_CONT_DIARIO WHERE V_CONT_DIARIO.ID_EJERCICIO = :IDEJERCICIO INTO :IDASIENTO, :ORDEN; INSERT INTO CONT_ASIENTOS (ID, FECHA_ASIENTO, ORDEN, ID_PAGO, TIPO) VALUES (:IDASIENTO, :FECHAPAGO, :ORDEN, :IDPAGO, 'p'); END /*INSERTAMOS LOS APUNTES*/ if (TIPOPAGO = 'Pago') then begin DEBE = :IMPORTE; HABER = NULL; end else begin DEBE = NULL; HABER = :IMPORTE; end INSERT INTO CONT_APUNTES (ID, ID_ASIENTO, ID_SUBCUENTA, NUM_ORDEN, PUNTEADO, CONCEPTO, DOCUMENTO, DEBE, HABER) VALUES (GEN_ID(GEN_CONT_APUNTES_ID, 1), :IDASIENTO, :IDSUBCUENTA, 1, -1, :CONCEPTO, :REFERENCIARECIBO, :DEBE, :HABER); INSERT INTO CONT_APUNTES (ID, ID_ASIENTO, ID_SUBCUENTA, NUM_ORDEN, PUNTEADO, CONCEPTO, DOCUMENTO, DEBE, HABER) VALUES (GEN_ID(GEN_CONT_APUNTES_ID, 1), :IDASIENTO, :IDSUBCUENTAPAGO, 2, -1, :CONCEPTO, :REFERENCIARECIBO, :HABER, :DEBE); END suspend; end ^ ALTER PROCEDURE PROC_NEW_CUENTAS ( ID_EJERCICIO_COPIA INTEGER, ID_EJERCICIO INTEGER, ID_EPIGRAFE_COPIA INTEGER, ID_EPIGRAFE INTEGER) AS declare variable id_cuenta_especial integer; declare variable id_balance integer; declare variable id_cuenta integer; declare variable id_cuenta_copia integer; declare variable descripcion varchar(255); declare variable ref_cuenta varchar(10); begin if (id_ejercicio_copia = 0) then begin for select GEN_ID(gen_cont_cuentas_id, 1), ID, REF_CUENTA, DESCRIPCION, ID_BALANCE, ID_CUENTA_ESPECIAL from CONT_CUENTAS where (ID_EJERCICIO IS NULL) and (ID_EPIGRAFE = :id_epigrafe_copia) order by ID into :id_cuenta, :id_cuenta_copia, :ref_cuenta, :descripcion, :id_balance, :id_cuenta_especial do begin insert into CONT_CUENTAS (ID, REF_CUENTA, DESCRIPCION, ID_BALANCE, ID_CUENTA_ESPECIAL, ID_EJERCICIO, ID_EPIGRAFE) values (:id_cuenta, :ref_cuenta, :descripcion, :id_balance, :id_cuenta_especial, :id_ejercicio, :id_epigrafe); /*INSERTAR SUBCUENTAS*/ execute procedure proc_new_subcuentas :id_ejercicio_copia, :id_ejercicio, :id_cuenta_copia, :id_cuenta; end end else begin for select GEN_ID(gen_cont_cuentas_id, 1), ID, REF_CUENTA, DESCRIPCION, ID_BALANCE, ID_CUENTA_ESPECIAL from CONT_CUENTAS where (ID_EJERCICIO = :id_ejercicio_copia) and (ID_EPIGRAFE = :id_epigrafe_copia) order by ID into :id_cuenta, :id_cuenta_copia, :ref_cuenta, :descripcion, :id_balance, :id_cuenta_especial do begin insert into CONT_CUENTAS (ID, REF_CUENTA, DESCRIPCION, ID_BALANCE, ID_CUENTA_ESPECIAL, ID_EJERCICIO, ID_EPIGRAFE) values (:id_cuenta, :ref_cuenta, :descripcion, :id_balance, :id_cuenta_especial, :id_ejercicio, :id_epigrafe); /*INSERTAR SUBCUENTAS*/ execute procedure proc_new_subcuentas :id_ejercicio_copia, :id_ejercicio, :id_cuenta_copia, :id_cuenta; end end suspend; end ^ ALTER PROCEDURE PROC_NEW_EPIGRAFES ( ID_EJERCICIO_COPIA INTEGER, ID_EJERCICIO INTEGER, ID_EPIGRAFE_COPIA INTEGER, ID_EPIGRAFE INTEGER, ID_PADRE INTEGER, REF_EPIGRAFE VARCHAR(6), DESCRIPCION VARCHAR(255)) AS begin insert into CONT_EPIGRAFES (ID, REF_EPIGRAFE, DESCRIPCION, ID_EJERCICIO) values (:id_epigrafe, :ref_epigrafe, :descripcion, :id_ejercicio); /*MIRAMOS EL NUEVO ID CORREPONDIENTE AL PADRE*/ if (id_padre <> 0) then begin select REF_EPIGRAFE from cont_epigrafes where (ID = :id_padre) into :ref_epigrafe; select ID from cont_epigrafes where (REF_EPIGRAFE = :ref_epigrafe and ID_EJERCICIO = :ID_ejercicio) into :id_padre; end /*ASIGNAMOS EL ID DEL PADRE*/ update cont_epigrafes set ID_PADRE = :id_padre where (ID = :id_epigrafe); /*INSERTAR CUENTAS*/ execute procedure proc_new_cuentas :id_ejercicio_copia, :id_ejercicio, :id_epigrafe_copia, :id_epigrafe; suspend; end ^ ALTER PROCEDURE PROC_NEW_PGC ( ID_EJERCICIO_COPIA INTEGER, ID_EJERCICIO INTEGER) RETURNS ( RESULTADO INTEGER) AS declare variable id_epigrafe_copia integer; declare variable ref_epigrafe varchar(6); declare variable swhere integer; declare variable descripcion varchar(255); declare variable id_padre integer; declare variable id_epigrafe integer; declare variable id_ejercicio_acopiar integer; begin select ID from CONT_EJERCICIOS WHERE ID = :id_ejercicio_copia into :id_ejercicio_acopiar; /* SI EL EJERCICIO DE COPIA NO EXISTE COPIAMOS EL PGC BASICO*/ if (id_ejercicio_acopiar is null) then begin for select GEN_ID(gen_cont_epigrafes_id, 1), ID, REF_EPIGRAFE, DESCRIPCION, ID_PADRE from CONT_EPIGRAFES where (ID_EJERCICIO IS NULL) order by ID, ID_PADRE into :id_epigrafe, :id_epigrafe_copia, :ref_epigrafe, :descripcion, :id_padre do begin /*INSERTAR EPIGRAFES*/ execute procedure proc_new_epigrafes :id_ejercicio_copia, :id_ejercicio, :id_epigrafe_copia, :id_epigrafe, :id_padre, :ref_epigrafe, :descripcion; end end /* SI EL EJERCICIO DE COPIA EXISTE COPIAMOS EL PGC DEL EJERCICIO*/ else begin for select GEN_ID(gen_cont_epigrafes_id, 1), ID, REF_EPIGRAFE, DESCRIPCION, ID_PADRE from CONT_EPIGRAFES where (ID_EJERCICIO = :id_ejercicio_copia) order by ID, ID_PADRE into :id_epigrafe, :id_epigrafe_copia, :ref_epigrafe, :descripcion, :id_padre do begin /*INSERTAR EPIGRAFES*/ execute procedure proc_new_epigrafes :id_ejercicio_copia, :id_ejercicio, :id_epigrafe_copia, :id_epigrafe, :id_padre, :ref_epigrafe, :descripcion; end end suspend; end ^ ALTER PROCEDURE PROC_NEW_SUBCUENTAS ( id_ejercicio_copia integer, id_ejercicio integer, id_cuenta_copia integer, id_cuenta integer) as declare variable descripcion varchar(255); declare variable ref_subcuenta varchar(15); declare variable id_subcuenta integer; declare variable id_contacto integer; begin if (id_ejercicio_copia = 0) then begin for select GEN_ID(gen_cont_subcuentas_id, 1), REF_SUBCUENTA, DESCRIPCION from CONT_SUBCUENTAS where (ID_EJERCICIO IS NULL) and (ID_CUENTA = :id_cuenta_copia) order by ID into :id_subcuenta, :ref_subcuenta, :descripcion do begin insert into CONT_SUBCUENTAS (ID, REF_SUBCUENTA, DESCRIPCION, ID_EJERCICIO, ID_CUENTA) values (:id_subcuenta, :ref_subcuenta, :descripcion, :id_ejercicio, :id_cuenta); end end else begin for select GEN_ID(gen_cont_subcuentas_id, 1), REF_SUBCUENTA, DESCRIPCION, ID_CONTACTO from CONT_SUBCUENTAS where (ID_EJERCICIO = :id_ejercicio_copia) and (ID_CUENTA = :id_cuenta_copia) order by ID into :id_subcuenta, :ref_subcuenta, :descripcion, :id_contacto do begin insert into CONT_SUBCUENTAS (ID, REF_SUBCUENTA, DESCRIPCION, ID_EJERCICIO, ID_CUENTA, ID_CONTACTO) values (:id_subcuenta, :ref_subcuenta, :descripcion, :id_ejercicio, :id_cuenta, :id_contacto); end end suspend; end ^ ALTER PROCEDURE PROC_SET_EJERCICIOS_NOACTIVOS ( ID_EMPRESA INTEGER) AS begin update CONT_EJERCICIOS set ACTIVO = 0 where ID_EMPRESA = :id_empresa; suspend; end ^ ALTER PROCEDURE PROC_CIERRE_APERTURA ( ID_EJERCICIO_CIERRE INTEGER, ID_EJERCICIO_APERTURA INTEGER) AS declare variable id_subcuenta_apertura integer; declare variable id_subcuenta_cierre integer; declare variable ref_subcuenta varchar(255); declare variable subcuenta varchar(255); declare variable num_orden integer; declare variable diferencia numeric(11,2); declare variable estado_ejercicio_cierre varchar(255); declare variable estado_ejercicio_apertura varchar(255); declare variable nombre_ejercicio_cierre varchar(255); declare variable nombre_ejercicio_apertura varchar(255); declare variable id_asiento_cierre integer; declare variable id_asiento_apertura integer; declare variable id_apunte_apertura integer; declare variable id_apunte_cierre integer; begin /*Seleccionamos el ejercicio de cierre*/ select ESTADO, NOMBRE, GEN_ID(gen_cont_asientos_id, 1) from cont_ejercicios where id = :id_ejercicio_cierre into :estado_ejercicio_cierre, :nombre_ejercicio_cierre, :id_asiento_cierre; /*Seleccionamos el ejercicio de apertura*/ select ESTADO, NOMBRE, GEN_ID(gen_cont_asientos_id, 1) from cont_ejercicios where id = :id_ejercicio_apertura into :estado_ejercicio_apertura, :nombre_ejercicio_apertura, :id_asiento_apertura; /*Si los ejercicios no estan abiertos no hacemos nada*/ if ((estado_ejercicio_cierre = 'ABIERTO') and (estado_ejercicio_apertura = 'ABIERTO')) then begin select COALESCE(max(V_CONT_DIARIO.ORDEN_ASIENTO),0) + 1 from V_CONT_DIARIO into :num_orden; /* Añadimos asiento de cierre*/ insert into CONT_ASIENTOS (ID, FECHA_ASIENTO, ORDEN, TIPO) values (:id_asiento_cierre, current_date, :num_orden, 'x'); num_orden = num_orden + 1; /* Añadimos asiento de apertura*/ insert into CONT_ASIENTOS (ID, FECHA_ASIENTO, ORDEN, TIPO) values (:id_asiento_apertura, current_date, :num_orden, 'a'); num_orden = 1; /* Para cada cuenta descuadrada se inserta un apunte de cierre asociado al asiento creado anteriormente*/ for select ID_SUBCUENTA, REF_SUBCUENTA, SUBCUENTA, SUM(COALESCE(DEBE,0))-SUM(COALESCE(HABER,0)) as DIFERENCIA, GEN_ID(gen_cont_apuntes_id, 1), GEN_ID(gen_cont_apuntes_id, 1) from v_cont_diario where (ID_EJERCICIO = :ID_EJERCICIO_CIERRE) group by 1, 2, 3 having (SUM(COALESCE(DEBE,0))-SUM(COALESCE(HABER,0))) <> 0 into :id_subcuenta_cierre, :ref_subcuenta, :subcuenta, :diferencia, :id_apunte_cierre, :id_apunte_apertura do begin /*Buscamos la subcuenta equibalente en el ejericio de apertura*/ select ID from cont_subcuentas where REF_SUBCUENTA = :ref_subcuenta and DESCRIPCION = :subcuenta and ID_EJERCICIO = :id_ejercicio_apertura into :id_subcuenta_apertura; if (diferencia > 0) then begin /*APUNTE DE CIERRE*/ insert into CONT_APUNTES (ID, ID_ASIENTO, ID_SUBCUENTA, NUM_ORDEN, PUNTEADO, CONCEPTO, HABER) values (:id_apunte_cierre, :id_asiento_cierre, :id_subcuenta_cierre, :num_orden, -1, 'Asiento de cierre ' || :nombre_ejercicio_cierre, :diferencia); /*APUNTE DE APERTURA*/ insert into CONT_APUNTES (ID, ID_ASIENTO, ID_SUBCUENTA, NUM_ORDEN, PUNTEADO, CONCEPTO, DEBE) values (:id_apunte_apertura, :id_asiento_apertura, :id_subcuenta_apertura, :num_orden, -1, 'Asiento de apertura ' || :nombre_ejercicio_apertura, :diferencia); end else begin /*APUNTE DE CIERRE*/ insert into CONT_APUNTES (ID, ID_ASIENTO, ID_SUBCUENTA, NUM_ORDEN, PUNTEADO, CONCEPTO, DEBE) values (:id_apunte_cierre, :id_asiento_cierre, :id_subcuenta_cierre, :num_orden, -1, 'Asiento de cierre ' || :nombre_ejercicio_cierre, (:diferencia)*-1); /*APUNTE DE APERTURA*/ insert into CONT_APUNTES (ID, ID_ASIENTO, ID_SUBCUENTA, NUM_ORDEN, PUNTEADO, CONCEPTO, HABER) values (:id_apunte_apertura, :id_asiento_apertura, :id_subcuenta_apertura, :num_orden, -1, 'Asiento de apertura ' || :nombre_ejercicio_apertura, (:diferencia)*-1); end num_orden = num_orden + 1; end /*Finalmente cambiamos de estado los ejercicio cerrado*/ update cont_ejercicios set ESTADO = 'CERRADO' where id = :id_ejercicio_cierre; end suspend; end ^ ALTER PROCEDURE PROC_PRE_CON_CAPITULOS ( aid integer, tipo varchar(15)) returns ( id integer, id_pre_con integer, posicion integer, tipo_detalle varchar(25), concepto varchar(2000), importe_total numeric(11,4), visible smallint, tipo_articulo varchar(2), descuento float, importe_descuento numeric(11,4)) as declare variable num_filas integer; declare variable contador integer; declare variable id_aux integer; declare variable id_aux_temp integer; declare variable total_acumulado numeric(11,2); declare variable posicion_aux integer; declare variable posicion_aux_temp integer; declare variable ultimo_tipo_detalle varchar(25); declare variable tipo_detalle_aux varchar(25); declare variable tipo_detalle_aux_temp varchar(25); declare variable concepto_aux varchar(2000); declare variable concepto_aux_temp varchar(2000); declare variable tipo_articulo_aux varchar(2); declare variable tipo_articulo_aux_temp varchar(2); declare variable importe_descuento_aux numeric(11,2); declare variable descuento_aux float; declare variable importe_aux numeric(11,2); begin total_acumulado = 0.0; importe_descuento_aux = 0.0; descuento_aux = 0.0; contador = 0; num_filas = 0; ID_AUX = -1; posicion_aux = -1; concepto_aux = 'General'; tipo_detalle_aux = 'Titulo'; tipo_articulo_aux = 'NA'; if (TIPO = 'Presupuesto') then begin /* ¿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 end else if (TIPO = 'Contrato') then begin /* ¿Existe el contrato? */ for select count(*) from contratos_cliente_detalles where id_contrato = :AID into :num_filas do begin if (num_filas = 0) then suspend; end end if (TIPO = 'Presupuesto') then begin for select id, id_presupuesto, posicion, tipo_detalle, tipo_articulo, F_RTFTOTEXT(concepto) as concepto, coalesce(descuento,0), coalesce(importe_total,0), coalesce(visible, 1) from presupuestos_cliente_detalles where id_presupuesto = :AID order by id_presupuesto, posicion into :ID, :ID_PRE_CON, :POSICION, :TIPO_DETALLE, :TIPO_ARTICULO, :CONCEPTO, :DESCUENTO, :IMPORTE_TOTAL, :VISIBLE do begin contador = contador + 1; /*CONCEPTO*/ if ((visible <> 0) and (tipo_detalle = 'Concepto')) then begin /*Escribimos capitulo anterior*/ if ((Importe_total > 0) and ((ultimo_tipo_detalle = 'Descuento') or (ultimo_tipo_detalle = 'Subtotal'))) then begin Importe_aux = Importe_total; id = id_aux; posicion = posicion_aux; tipo_detalle = tipo_detalle_aux; tipo_articulo = tipo_articulo_aux; concepto = concepto_aux; importe_total = total_acumulado; importe_descuento = importe_descuento_aux; descuento = descuento_aux; visible = 1; suspend; total_acumulado = 0.0; importe_descuento_aux = 0.0; descuento_aux = 0.0; /*Inicializamos*/ ID_AUX = -1; posicion_aux = -1; concepto_aux = 'General'; tipo_detalle_aux = 'Titulo'; tipo_articulo_aux = 'NA'; importe_total = Importe_aux; end total_acumulado = total_acumulado + importe_total; ultimo_tipo_detalle = tipo_detalle; end /*TITULO*/ else if ((tipo_detalle = 'Titulo') or (tipo_detalle = 'Titulo_opc')) then begin ultimo_tipo_detalle = tipo_detalle; id_aux_temp = id; posicion_aux_temp = posicion; tipo_detalle_aux_temp = tipo_detalle; tipo_articulo_aux_temp = tipo_articulo; concepto_aux_temp = concepto; /*Escribimos capitulo anterior*/ if (id_aux > 0) then begin id = id_aux; posicion = posicion_aux; tipo_detalle = tipo_detalle_aux; tipo_articulo = tipo_articulo_aux; concepto = concepto_aux; importe_total = total_acumulado; importe_descuento = importe_descuento_aux; descuento = descuento_aux; visible = 1; suspend; total_acumulado = 0.0; importe_descuento_aux = 0.0; descuento_aux = 0.0; end id_aux = id_aux_temp; posicion_aux = posicion_aux_temp; tipo_detalle_aux = tipo_detalle_aux_temp; tipo_articulo_aux = tipo_articulo_aux_temp; concepto_aux = concepto_aux_temp; end /*SUBTOTAL*/ else if (tipo_detalle = 'Subtotal') then begin ultimo_tipo_detalle = tipo_detalle; end else if (tipo_detalle = 'Descuento') then begin ultimo_tipo_detalle = tipo_detalle; importe_descuento_aux = importe_total; descuento_aux = descuento; end if (contador = num_filas) then begin id = id_aux; posicion = posicion_aux; tipo_detalle = tipo_detalle_aux; tipo_articulo = tipo_articulo_aux; concepto = concepto_aux; importe_total = total_acumulado; importe_descuento = importe_descuento_aux; descuento = descuento_aux; visible = 1; suspend; break; end end end else if (TIPO = 'Contrato') then begin for select id, id_contrato, posicion, tipo_detalle, tipo_articulo, F_RTFTOTEXT(concepto) as concepto, coalesce(descuento,0), coalesce(importe_total,0), coalesce(visible, 1) from contratos_cliente_detalles where id_contrato = :AID order by id_contrato, posicion into :ID, :ID_PRE_CON, :POSICION, :TIPO_DETALLE, :TIPO_ARTICULO, :CONCEPTO, :DESCUENTO, :IMPORTE_TOTAL, :VISIBLE do begin contador = contador + 1; /*CONCEPTO*/ if ((visible <> 0) and (tipo_detalle = 'Concepto')) then begin /*Escribimos capitulo anterior*/ if ((Importe_total > 0) and ((ultimo_tipo_detalle = 'Descuento') or (ultimo_tipo_detalle = 'Subtotal'))) then begin Importe_aux = Importe_total; id = id_aux; posicion = posicion_aux; tipo_detalle = tipo_detalle_aux; tipo_articulo = tipo_articulo_aux; concepto = concepto_aux; importe_total = total_acumulado; importe_descuento = importe_descuento_aux; descuento = descuento_aux; visible = 1; suspend; total_acumulado = 0.0; importe_descuento_aux = 0.0; descuento_aux = 0.0; /*Inicializamos*/ ID_AUX = -1; posicion_aux = -1; concepto_aux = 'General'; tipo_detalle_aux = 'Titulo'; tipo_articulo_aux = 'NA'; importe_total = Importe_aux; end total_acumulado = total_acumulado + importe_total; ultimo_tipo_detalle = tipo_detalle; end /*TITULO*/ else if ((tipo_detalle = 'Titulo') or (tipo_detalle = 'Titulo_opc')) then begin ultimo_tipo_detalle = tipo_detalle; id_aux_temp = id; posicion_aux_temp = posicion; tipo_detalle_aux_temp = tipo_detalle; tipo_articulo_aux_temp = tipo_articulo; concepto_aux_temp = concepto; /*Escribimos capitulo anterior*/ if (id_aux > 0) then begin id = id_aux; posicion = posicion_aux; tipo_detalle = tipo_detalle_aux; tipo_articulo = tipo_articulo_aux; concepto = concepto_aux; importe_total = total_acumulado; importe_descuento = importe_descuento_aux; descuento = descuento_aux; visible = 1; suspend; total_acumulado = 0.0; importe_descuento_aux = 0.0; descuento_aux = 0.0; end id_aux = id_aux_temp; posicion_aux = posicion_aux_temp; tipo_detalle_aux = tipo_detalle_aux_temp; tipo_articulo_aux = tipo_articulo_aux_temp; concepto_aux = concepto_aux_temp; end /*SUBTOTAL*/ else if (tipo_detalle = 'Subtotal') then begin ultimo_tipo_detalle = tipo_detalle; end else if (tipo_detalle = 'Descuento') then begin ultimo_tipo_detalle = tipo_detalle; importe_descuento_aux = importe_total; descuento_aux = descuento; end if (contador = num_filas) then begin id = id_aux; posicion = posicion_aux; tipo_detalle = tipo_detalle_aux; tipo_articulo = tipo_articulo_aux; concepto = concepto_aux; importe_total = total_acumulado; importe_descuento = importe_descuento_aux; descuento = descuento_aux; visible = 1; suspend; break; end end end end^ ALTER PROCEDURE PROC_PRE_CON_CAPITULOS_CONCEP ( aid integer, tipo varchar(15)) returns ( id integer, id_pre_con integer, posicion integer, tipo_detalle varchar(25), id_capitulo integer, tipo_articulo varchar(2), id_articulo integer, propiedad varchar(50), concepto varchar(2000), cantidad numeric(11,2), importe_unidad numeric(11,4), descuento numeric(2,2), importe_porte numeric(11,4), importe_total numeric(11,4), visible smallint) as declare variable capitulo_actual integer; begin capitulo_actual = -1; ID_CAPITULO = -1; if (TIPO = 'Presupuesto') then begin for select pre.id, pre.id_presupuesto, pre.posicion, pre.tipo_detalle, coalesce(pre.tipo_articulo,'NA'), pre.id_articulo, presupuestos_propiedades.descripcion, /* F_RTFTOTEXT(F_RTFTOTEXT(pre.CONCEPTO)) as CONCEPTO,*/ pre.CONCEPTO, pre.cantidad, 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 presupuestos_propiedades on (pre.id_articulo = presupuestos_propiedades.id) where pre.id_presupuesto = :AID order by pre.id_presupuesto, pre.posicion into :ID, :ID_PRE_CON, :POSICION, :TIPO_DETALLE, :TIPO_ARTICULO, :ID_ARTICULO, :PROPIEDAD, :CONCEPTO, :CANTIDAD, :IMPORTE_UNIDAD, :DESCUENTO, :IMPORTE_PORTE, :IMPORTE_TOTAL, :VISIBLE do begin if ((:tipo_detalle = 'Titulo') or (:tipo_detalle = 'Titulo_opc')) then begin capitulo_actual = :ID; ID_CAPITULO = capitulo_actual; end else if ((:tipo_detalle = 'Subtotal') or (:tipo_detalle = 'Descuento')) then begin capitulo_actual = -1; ID_CAPITULO = capitulo_actual; end else if (:tipo_detalle = 'Concepto') then begin suspend; end end end else if (TIPO = 'Contrato') then begin for select pre.id, pre.id_contrato, pre.posicion, pre.tipo_detalle, coalesce(pre.tipo_articulo,'NA'), pre.id_articulo, presupuestos_propiedades.descripcion, /* F_RTFTOTEXT(F_RTFTOTEXT(pre.CONCEPTO)) as CONCEPTO,*/ pre.CONCEPTO, pre.cantidad, 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 contratos_cliente_detalles pre left join presupuestos_propiedades on (pre.id_articulo = presupuestos_propiedades.id) where pre.id_contrato = :AID order by pre.id_contrato, pre.posicion into :ID, :ID_PRE_CON, :POSICION, :TIPO_DETALLE, :TIPO_ARTICULO, :ID_ARTICULO, :PROPIEDAD, :CONCEPTO, :CANTIDAD, :IMPORTE_UNIDAD, :DESCUENTO, :IMPORTE_PORTE, :IMPORTE_TOTAL, :VISIBLE do begin if ((:tipo_detalle = 'Titulo') or (:tipo_detalle = 'Titulo_opc') ) then begin capitulo_actual = :ID; ID_CAPITULO = capitulo_actual; end else if ((:tipo_detalle = 'Subtotal') or (:tipo_detalle = 'Descuento')) then begin capitulo_actual = -1; ID_CAPITULO = capitulo_actual; end else if (:tipo_detalle = 'Concepto') then begin suspend; end end end end^ SET TERM ; ^