SET SQL DIALECT 3;
SET NAMES ISO8859_1;

/******************************************************************************/
/****                        User Defined Functions                        ****/
/******************************************************************************/

DECLARE EXTERNAL FUNCTION F_RTFTOTEXT
    CSTRING(254)
    RETURNS CSTRING(254)
    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';




/******************************************************************************/
/****                               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_PASSWORD AS
VARCHAR(10);

CREATE DOMAIN TIPO_PERFIL AS
VARCHAR(15);

CREATE DOMAIN TIPO_PORCENTAJE AS
FLOAT;

CREATE DOMAIN TIPO_USUARIO AS
VARCHAR(20);



/******************************************************************************/
/****                              Generators                              ****/
/******************************************************************************/

CREATE GENERATOR GEN_IMPRESIONES_ID;
CREATE GENERATOR GEN_REGISTRO_CORREOS_ID;
CREATE GENERATOR GEN_AGENTES_COMISIONES_ID;
CREATE GENERATOR GEN_ALBARANES_CLI_DETALLES_ID;
CREATE GENERATOR GEN_ALBARANES_CLI_ID;
CREATE GENERATOR GEN_ALBARANES_PRO_DETALLES_ID;
CREATE GENERATOR GEN_ALBARANES_PRO_ID;
CREATE GENERATOR GEN_ALMACENES_ID;
CREATE GENERATOR GEN_ARTICULOS_ID;
CREATE GENERATOR GEN_CATEGORIAS_ID;
CREATE GENERATOR GEN_CHANGECODE;
CREATE GENERATOR GEN_CLIENTES_DTOS_PROV_ID;
CREATE GENERATOR GEN_CLIENTES_GRUPOS_ID;
CREATE GENERATOR GEN_COMISIONES_LIQUID_ID;
CREATE GENERATOR GEN_CONTACTOS_DATOS_BANCO_ID;
CREATE GENERATOR GEN_CONTACTOS_DIR_ID;
CREATE GENERATOR GEN_CONTACTOS_ID;
CREATE GENERATOR GEN_EMPRESAS_DATOS_BANCO_ID;
CREATE GENERATOR GEN_EMPRESAS_ID;
CREATE GENERATOR GEN_FACTURAS_CLIENTE_ID;
CREATE GENERATOR GEN_FACTURAS_PROVEEDOR_ID;
CREATE GENERATOR GEN_FACTURA_CLIENTE_DETALLES_ID;
CREATE GENERATOR GEN_FACTURA_PROV_DETALLES_ID;
CREATE GENERATOR GEN_FORMAS_PAGO_ID;
CREATE GENERATOR GEN_FORMAS_PAGO_PLAZOS_ID;
CREATE GENERATOR GEN_INFORMES_ID;
CREATE GENERATOR GEN_MOVIMIENTOS_ID;
CREATE GENERATOR GEN_PAGOS_CLIENTE_ID;
CREATE GENERATOR GEN_PAGOS_PROVEEDOR_ID;
CREATE GENERATOR GEN_PEDIDOS_CLI_DETALLES_ID;
CREATE GENERATOR GEN_PEDIDOS_CLI_ID;
CREATE GENERATOR GEN_PEDIDOS_PROV_DETALLES_ID;
CREATE GENERATOR GEN_PEDIDOS_PROV_ID;
CREATE GENERATOR GEN_PERFILES_ID;
CREATE GENERATOR GEN_RECIBOS_CLIENTE_ID;
CREATE GENERATOR GEN_RECIBOS_PROVEEDOR_ID;
CREATE GENERATOR GEN_REMESAS_CLIENTE_ID;
CREATE GENERATOR GEN_REMESAS_PROVEEDOR_ID;
CREATE GENERATOR GEN_TIENDA_WEB_ID;
CREATE GENERATOR GEN_TIPOS_IVA_ID;
CREATE GENERATOR GEN_USUARIOS_ID;


/******************************************************************************/
/****                                Tables                                ****/
/******************************************************************************/

CREATE TABLE IMPRESIONES(
  ID TIPO_ID NOT NULL,
  ID_TABLA TIPO_ID,
  TABLA VARCHAR(50) COLLATE ES_ES,
  NUM_COPIAS SMALLINT
);

CREATE TABLE REGISTRO_CORREOS (
    ID          TIPO_ID NOT NULL /* TIPO_ID = INTEGER */,
    ID_TABLA    TIPO_ID /* TIPO_ID = INTEGER */,
    TABLA       VARCHAR(50) COLLATE ES_ES,
    NUM_CORREOS SMALLINT
);


CREATE TABLE AGENTES_COMISIONES (
    ID            TIPO_ID NOT NULL,
    ID_AGENTE     TIPO_ID DEFAULT 0 NOT NULL,
    ID_PROVEEDOR  SMALLINT DEFAULT 0 NOT NULL,
    COMISION      TIPO_PORCENTAJE DEFAULT 0
);


CREATE TABLE ALBARANES_CLIENTE (
    ID                    TIPO_ID NOT NULL,
    ID_EMPRESA            TIPO_ID,
    ID_CLIENTE            TIPO_ID,
    FECHA_ALBARAN         DATE,
    ID_ALMACEN            TIPO_ID,
    ID_PEDIDO             TIPO_ID,
    ID_FACTURA            TIPO_ID,
    REFERENCIA            VARCHAR(255),
    CALLE                 VARCHAR(255),
    CODIGO_POSTAL         VARCHAR(10),
    POBLACION             VARCHAR(255),
    PROVINCIA             VARCHAR(255),
    PERSONA_CONTACTO      VARCHAR(255),
    TELEFONO              VARCHAR(25),
    IMPORTE_NETO          TIPO_IMPORTE,
    IMPORTE_PORTE         TIPO_IMPORTE,
    DESCUENTO             TIPO_PORCENTAJE,
    IMPORTE_DESCUENTO     TIPO_IMPORTE,
    BASE_IMPONIBLE        TIPO_IMPORTE,
    IVA                   TIPO_PORCENTAJE,
    IMPORTE_IVA           TIPO_IMPORTE,
    IMPORTE_TOTAL         TIPO_IMPORTE,
    OBSERVACIONES         TIPO_NOTAS,
    INCIDENCIAS           TIPO_NOTAS,
    INCIDENCIAS_ACTIVAS   SMALLINT DEFAULT 0 NOT NULL,
    FECHA_ALTA            TIMESTAMP,
    FECHA_MODIFICACION    TIMESTAMP,
    USUARIO               TIPO_USUARIO,
    ID_FORMA_PAGO         TIPO_ID,
    FECHA_ENVIO           DATE,
    FECHA_RECEPCION       DATE,
    FECHA_PREVISTA_ENVIO  DATE,
    REFERENCIA_CLIENTE    VARCHAR(255) COLLATE ES_ES,
    TIPO                  VARCHAR(1),
    ID_ALBARAN_DEV        TIPO_ID
);


CREATE TABLE ALBARANES_CLIENTE_DETALLES (
    ID                  TIPO_ID NOT NULL,
    ID_ALBARAN          TIPO_ID NOT NULL,
    POSICION            INTEGER,
    TIPO_DETALLE        VARCHAR(10),
    ID_ARTICULO         TIPO_ID,
    CONCEPTO            TIPO_CONCEPTO,
    CANTIDAD            INTEGER,
    IMPORTE_UNIDAD      TIPO_IMPORTE,
    DESCUENTO           TIPO_PORCENTAJE,
    IMPORTE_PORTE       TIPO_IMPORTE,
    IMPORTE_TOTAL       TIPO_IMPORTE,
    VISIBLE             TIPO_BOOLEANO,
    FECHA_ALTA          TIMESTAMP,
    FECHA_MODIFICACION  TIMESTAMP,
    ID_PEDIDO           TIPO_ID
);


CREATE TABLE ALBARANES_PROVEEDOR (
    ID                    TIPO_ID NOT NULL,
    ID_EMPRESA            TIPO_ID,
    ID_PROVEEDOR          TIPO_ID,
    FECHA_ALBARAN         DATE,
    ID_PEDIDO             TIPO_ID,
    ID_FACTURA            TIPO_ID,
    REFERENCIA            VARCHAR(255),
    CALLE                 VARCHAR(255),
    CODIGO_POSTAL         VARCHAR(10),
    POBLACION             VARCHAR(255),
    PROVINCIA             VARCHAR(255),
    PERSONA_CONTACTO      VARCHAR(255),
    TELEFONO              VARCHAR(25),
    BASE_IMPONIBLE        TIPO_IMPORTE,
    DESCUENTO             TIPO_PORCENTAJE,
    IMPORTE_DESCUENTO     TIPO_IMPORTE,
    IVA                   TIPO_PORCENTAJE,
    IMPORTE_IVA           TIPO_IMPORTE,
    IMPORTE_TOTAL         TIPO_IMPORTE,
    OBSERVACIONES         TIPO_NOTAS,
    INCIDENCIAS           TIPO_NOTAS,
    INCIDENCIAS_ACTIVAS   SMALLINT DEFAULT 0 NOT NULL,
    FECHA_ALTA            TIMESTAMP,
    FECHA_MODIFICACION    TIMESTAMP,
    USUARIO               TIPO_USUARIO,
    ID_ALMACEN            TIPO_ID,
    ID_FORMA_PAGO         TIPO_ID,
    IMPORTE_NETO          TIPO_IMPORTE,
    IMPORTE_PORTE         TIPO_IMPORTE,
    REFERENCIA_PROVEEDOR  VARCHAR(255),
    REF_FACTURA_PROV      VARCHAR(255),
    TIPO                  VARCHAR(1),
    ID_ALBARAN_DEV        TIPO_ID
);


CREATE TABLE ALBARANES_PROVEEDOR_DETALLES (
    ID                  TIPO_ID NOT NULL,
    ID_ALBARAN          TIPO_ID NOT NULL,
    POSICION            INTEGER,
    TIPO_DETALLE        VARCHAR(10),
    ID_ARTICULO         TIPO_ID,
    CONCEPTO            TIPO_CONCEPTO,
    CANTIDAD            INTEGER,
    IMPORTE_UNIDAD      TIPO_IMPORTE,
    DESCUENTO           TIPO_PORCENTAJE,
    IMPORTE_PORTE       TIPO_IMPORTE,
    IMPORTE_TOTAL       TIPO_IMPORTE,
    VISIBLE             TIPO_BOOLEANO,
    FECHA_ALTA          TIMESTAMP,
    FECHA_MODIFICACION  TIMESTAMP,
    ID_PEDIDO           TIPO_ID
);


CREATE TABLE ALMACENES (
    ID                  TIPO_ID NOT NULL,
    ID_EMPRESA          TIPO_ID NOT NULL,
    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,
    TIENDA_WEB          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),
    VENCIMIENTO_FACTURAS  INTEGER,
    BLOQUEADO             TIPO_BOOLEANO DEFAULT 0 NOT NULL,
    REGIMEN_IVA           VARCHAR(255),
    MOTIVO_BLOQUEO        VARCHAR(255),
    RECARGO_EQUIVALENCIA  TIPO_BOOLEANO,
    ID_TIPO_IVA           TIPO_ID,
    ID_FORMA_PAGO         TIPO_ID,
    TIENDA_WEB            TIPO_BOOLEANO,
    RAPEL                 SMALLINT,
	EMAIL_ADMINISTRACION  VARCHAR(255)
);


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 (
    DESCRIPCION  VARCHAR(255),
    ID           TIPO_ID
);


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 (
    CODIGO      VARCHAR(50) NOT NULL,
    VALOR       VARCHAR(255) NOT NULL,
    ID_EMPRESA  TIPO_ID
);


CREATE TABLE CONTACTOS (
    ID                  TIPO_ID NOT NULL,
    NIF_CIF             VARCHAR(15),
    NOMBRE              VARCHAR(255) NOT NULL,
    CALLE               VARCHAR(255),
    POBLACION           VARCHAR(255),
    PROVINCIA           VARCHAR(255),
    CODIGO_POSTAL       VARCHAR(10),
    TELEFONO_1          VARCHAR(25),
    TELEFONO_2          VARCHAR(25),
    MOVIL_1             VARCHAR(25),
    MOVIL_2             VARCHAR(25),
    FAX                 VARCHAR(25),
    EMAIL_1             VARCHAR(255),
    EMAIL_2             VARCHAR(255),
    PAGINA_WEB          VARCHAR(255),
    NOTAS               TIPO_NOTAS,
    FECHA_ALTA          TIMESTAMP,
    FECHA_MODIFICACION  TIMESTAMP,
    USUARIO             TIPO_USUARIO,
    REFERENCIA          VARCHAR(255)
);


CREATE TABLE CONTACTOS_CATEGORIAS (
    ID_CONTACTO   TIPO_ID NOT NULL,
    ID_CATEGORIA  TIPO_ID NOT NULL
);


CREATE TABLE CONTACTOS_DATOS_BANCO (
    ID                  TIPO_ID NOT NULL,
    ID_CONTACTO         TIPO_ID NOT NULL,
    TITULAR             VARCHAR(255),
    ENTIDAD             VARCHAR(15),
    SUCURSAL            VARCHAR(15),
    DC                  VARCHAR(15),
    CUENTA              VARCHAR(15),
    FECHA_ALTA          TIMESTAMP,
    FECHA_MODIFICACION  TIMESTAMP
);


CREATE TABLE CONTACTOS_DIRECCIONES (
    ID                  TIPO_ID NOT NULL,
    ID_CONTACTO         TIPO_ID NOT NULL,
    CALLE               VARCHAR(255),
    POBLACION           VARCHAR(255),
    PROVINCIA           VARCHAR(255),
    CODIGO_POSTAL       VARCHAR(10),
    PERSONA_CONTACTO    VARCHAR(255),
    NOMBRE              VARCHAR(255),
    TELEFONO            VARCHAR(25),
    EMAIL               VARCHAR(255),
    NOTAS               TIPO_NOTAS,
    PORTE               TIPO_IMPORTE,
    FECHA_ALTA          TIMESTAMP,
    FECHA_MODIFICACION  TIMESTAMP
);


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),
    IVA                 TIPO_PORCENTAJE
);


CREATE TABLE EMPRESAS_CONTACTOS (
    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_USUARIOS (
    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
);


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            INTEGER,
    IMPORTE_UNIDAD      TIPO_IMPORTE,
    DESCUENTO           TIPO_PORCENTAJE,
    IMPORTE_PORTE       TIPO_IMPORTE,
    IMPORTE_TOTAL       TIPO_IMPORTE,
    VISIBLE             TIPO_BOOLEANO,
    FECHA_ALTA          TIMESTAMP,
    FECHA_MODIFICACION  TIMESTAMP
);


CREATE TABLE FACTURAS_PROVEEDOR (
    ID                    TIPO_ID NOT NULL,
    ID_EMPRESA            TIPO_ID,
    REFERENCIA            VARCHAR(255),
    REFERENCIA_PROVEEDOR  VARCHAR(255),
    FECHA_FACTURA         DATE,
    BASE_IMPONIBLE        TIPO_IMPORTE,
    DESCUENTO             TIPO_PORCENTAJE,
    IMPORTE_DESCUENTO     TIPO_IMPORTE,
    IVA                   TIPO_PORCENTAJE,
    IMPORTE_IVA           TIPO_IMPORTE,
    RE                    TIPO_PORCENTAJE,
    IMPORTE_RE            TIPO_IMPORTE,
    IMPORTE_TOTAL         TIPO_IMPORTE,
    OBSERVACIONES         TIPO_NOTAS,
    ID_PROVEEDOR          TIPO_ID,
    NIF_CIF               VARCHAR(15),
    NOMBRE                VARCHAR(255),
    CALLE                 VARCHAR(255),
    POBLACION             VARCHAR(255),
    PROVINCIA             VARCHAR(255),
    CODIGO_POSTAL         VARCHAR(10),
    FECHA_ALTA            TIMESTAMP,
    FECHA_MODIFICACION    TIMESTAMP,
    USUARIO               TIPO_USUARIO,
    ID_FORMA_PAGO         TIPO_ID,
    IMPORTE_NETO          TIPO_IMPORTE,
    IMPORTE_PORTE         TIPO_IMPORTE,
    ID_TIPO_IVA           TIPO_ID,
    RECARGO_EQUIVALENCIA  TIPO_BOOLEANO
);


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            INTEGER,
    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 FAMILIAS (
    DESCRIPCION  VARCHAR(255)
);


CREATE TABLE FORMAS_PAGO (
    ID           TIPO_ID NOT NULL,
    REFERENCIA   VARCHAR(255),
    DESCRIPCION  VARCHAR(255),
    TITULAR      VARCHAR(255),
    ENTIDAD      VARCHAR(15),
    SUCURSAL     VARCHAR(15),
    DC           VARCHAR(15),
    CUENTA       VARCHAR(15)
);


CREATE TABLE FORMAS_PAGO_PLAZOS (
    ID             TIPO_ID NOT NULL,
    ID_FORMA_PAGO  TIPO_ID NOT NULL,
    NUM_DIAS       SMALLINT,
    PORCENTAJE     TIPO_PORCENTAJE
);


CREATE TABLE INFORMES (
    ID               SMALLINT NOT NULL,
    ID_EMPRESA       TIPO_ID,
    CATEGORIA        VARCHAR(30),
    CONTROLLER       VARCHAR(255),
    ICONO            SMALLINT,
    NOMBRE           VARCHAR(50),
    DESCRIPCION      VARCHAR(255),
    ORDEN            SMALLINT,
    MODIFICABLE      CHAR(1),
    VISTA            BLOB SUB_TYPE 2 SEGMENT SIZE 4096,
    TIPO_AGRUPACION  TIPO_ID
);


CREATE TABLE MOVIMIENTOS (
    ID                TIPO_ID NOT NULL,
    ID_ALMACEN        TIPO_ID,
    ID_ARTICULO       TIPO_ID,
    FECHA_MOVIMIENTO  DATE,
    TIPO              VARCHAR(1),
    CANTIDAD          INTEGER,
    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
);


CREATE TABLE PAGOS_PROVEEDOR (
    ID                  TIPO_ID NOT NULL,
    ID_RECIBO           TIPO_ID,
    TIPO                VARCHAR(255),
    FECHA_PAGO          DATE,
    TITULAR             VARCHAR(255),
    ENTIDAD             VARCHAR(15),
    SUCURSAL            VARCHAR(15),
    DC                  VARCHAR(15),
    CUENTA              VARCHAR(15),
    FECHA_ALTA          DATE,
    FECHA_MODIFICACION  DATE,
    USUARIO             TIPO_USUARIO
);


CREATE TABLE PEDIDOS_CLIENTE (
    ID                    TIPO_ID NOT NULL,
    ID_EMPRESA            TIPO_ID,
    ID_CLIENTE            TIPO_ID,
    REFERENCIA            VARCHAR(255),
    FECHA_PEDIDO          DATE,
    CALLE                 VARCHAR(255),
    CODIGO_POSTAL         VARCHAR(10),
    POBLACION             VARCHAR(255),
    PROVINCIA             VARCHAR(255),
    PERSONA_CONTACTO      VARCHAR(255),
    TELEFONO              VARCHAR(25),
    OBSERVACIONES         TIPO_NOTAS,
    INCIDENCIAS           TIPO_NOTAS,
    INCIDENCIAS_ACTIVAS   SMALLINT DEFAULT 0 NOT NULL,
    FECHA_ALTA            TIMESTAMP,
    FECHA_MODIFICACION    TIMESTAMP,
    USUARIO               TIPO_USUARIO,
    IMPORTE_NETO          TIPO_IMPORTE,
    IMPORTE_PORTE         TIPO_IMPORTE,
    DESCUENTO             TIPO_PORCENTAJE,
    IMPORTE_DESCUENTO     TIPO_IMPORTE,
    BASE_IMPONIBLE        TIPO_IMPORTE,
    IVA                   TIPO_PORCENTAJE,
    IMPORTE_IVA           TIPO_IMPORTE,
    IMPORTE_TOTAL         TIPO_IMPORTE,
    ID_FORMA_PAGO         TIPO_ID,
    REF_TIENDA_WEB        INTEGER,
    FECHA_PREVISTA_ENVIO  DATE,
    REFERENCIA_CLIENTE    VARCHAR(255) COLLATE ES_ES
);


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            INTEGER,
    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
);


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            INTEGER,
    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 PERFILES (
    ID      TIPO_ID NOT NULL,
    PERFIL  TIPO_PERFIL NOT NULL
);


CREATE TABLE PERFILES_USUARIOS (
    ID_PERFIL   TIPO_ID NOT NULL,
    ID_USUARIO  TIPO_ID NOT NULL
);


CREATE TABLE PROVEEDORES_DATOS (
    ID_PROVEEDOR   TIPO_ID NOT NULL,
    DESCUENTO      TIPO_PORCENTAJE,
    REGIMEN_IVA    VARCHAR(255),
    ID_TIPO_IVA    TIPO_ID,
    ID_FORMA_PAGO  TIPO_ID,
    TIENDA_WEB     TIPO_BOOLEANO,
	EMAIL_ADMINISTRACION  VARCHAR(255)
);


CREATE TABLE RECIBOS_CLIENTE (
    ID                    TIPO_ID NOT NULL,
    ID_FACTURA            TIPO_ID,
    REFERENCIA            VARCHAR(255),
    FECHA_EMISION         DATE,
    FECHA_VENCIMIENTO     DATE,
    DESCRIPCION           VARCHAR(255),
    OBSERVACIONES         VARCHAR(255),
    IMPORTE               TIPO_IMPORTE,
    OTROS_GASTOS          TIPO_IMPORTE,
    FECHA_ALTA            DATE,
    FECHA_MODIFICACION    DATE,
    USUARIO               TIPO_USUARIO,
    ID_REMESA             TIPO_ID,
    ID_RECIBO_COMPENSADO  INTEGER
);


CREATE TABLE RECIBOS_PROVEEDOR (
    ID                    TIPO_ID NOT NULL,
    ID_FACTURA            TIPO_ID,
    REFERENCIA            VARCHAR(255),
    REFERENCIA_PROVEEDOR  VARCHAR(255),
    FECHA_EMISION         DATE,
    FECHA_VENCIMIENTO     DATE,
    DESCRIPCION           VARCHAR(255),
    OBSERVACIONES         VARCHAR(255),
    IMPORTE               TIPO_IMPORTE,
    OTROS_GASTOS          TIPO_IMPORTE,
    FECHA_ALTA            DATE,
    FECHA_MODIFICACION    DATE,
    USUARIO               TIPO_USUARIO,
    ID_REMESA             TIPO_ID,
    ID_RECIBO_COMPENSADO  INTEGER
);


CREATE TABLE REFERENCIAS (
    CODIGO       VARCHAR(50) NOT NULL,
    VALOR        VARCHAR(255) NOT NULL,
    ID_EMPRESA   TIPO_ID,
    DESCRIPCION  VARCHAR(255) COLLATE ES_ES
);


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 USUARIOS (
    ID          TIPO_ID NOT NULL,
    USUARIO     TIPO_USUARIO NOT NULL,
    PASS        TIPO_PASSWORD,
    ACTIVO      TIPO_BOOLEANO,
    LAST_LOGIN  TIMESTAMP
);


INSERT INTO CATEGORIAS (ID, CATEGORIA) VALUES (1, 'CLIENTE');
INSERT INTO CATEGORIAS (ID, CATEGORIA) VALUES (2, 'PROVEEDOR');
INSERT INTO CATEGORIAS (ID, CATEGORIA) VALUES (3, 'AGENTE');

COMMIT WORK;

INSERT INTO INFORMES (ID, ID_EMPRESA, CATEGORIA, CONTROLLER, ICONO, NOMBRE, DESCRIPCION, ORDEN, MODIFICABLE, TIPO_AGRUPACION) VALUES (2, 1, 'VENTAS ARTICULOS', 'InfVentasArticuloController', 4, 'Ventas por artículo', 'Informe de ventas por artículo', NULL, 'S', NULL);
INSERT INTO INFORMES (ID, ID_EMPRESA, CATEGORIA, CONTROLLER, ICONO, NOMBRE, DESCRIPCION, ORDEN, MODIFICABLE, TIPO_AGRUPACION) VALUES (5, 1, 'VENTAS ARTICULOS', 'InfVentasArticuloController', 4, 'Ventas por cliente', 'Informe de ventas por cliente y artículo', NULL, 'S', NULL);
INSERT INTO INFORMES (ID, ID_EMPRESA, CATEGORIA, CONTROLLER, ICONO, NOMBRE, DESCRIPCION, ORDEN, MODIFICABLE, TIPO_AGRUPACION) VALUES (7, 1, 'VENTAS ARTICULOS', 'InfVentasArticuloController', 4, 'Ventas por agente y cliente', 'Informe de ventas por agente y cliente', NULL, 'S', NULL);
INSERT INTO INFORMES (ID, ID_EMPRESA, CATEGORIA, CONTROLLER, ICONO, NOMBRE, DESCRIPCION, ORDEN, MODIFICABLE, TIPO_AGRUPACION) VALUES (17, 1, 'MARGEN ARTICULOS', 'InfMargenArticuloController', 0, 'Margen (promedio) por artículo', 'Informe de margen por artículo teniendo en cuenta el precio neto de venta promedio', NULL, 'S', 0);
INSERT INTO INFORMES (ID, ID_EMPRESA, CATEGORIA, CONTROLLER, ICONO, NOMBRE, DESCRIPCION, ORDEN, MODIFICABLE, TIPO_AGRUPACION) VALUES (15, 1, 'VENTAS ARTICULOS', 'InfVentasArticuloController', 4, 'Ventas por proveedor', 'Informe de ventas por proveedor y artículo', NULL, 'S', NULL);
INSERT INTO INFORMES (ID, ID_EMPRESA, CATEGORIA, CONTROLLER, ICONO, NOMBRE, DESCRIPCION, ORDEN, MODIFICABLE, TIPO_AGRUPACION) VALUES (19, 1, 'MARGEN ARTICULOS', 'InfMargenArticuloController', 0, 'Margen (promedio) por cliente', 'Informe de margen por artículo agrupado por cliente teniendo en cuenta el precio neto de venta promedio', NULL, 'S', 1);
INSERT INTO INFORMES (ID, ID_EMPRESA, CATEGORIA, CONTROLLER, ICONO, NOMBRE, DESCRIPCION, ORDEN, MODIFICABLE, TIPO_AGRUPACION) VALUES (20, 1, 'MARGEN ARTICULOS', 'InfMargenArticuloController', 0, 'Margen (promedio) por agente y cliente', 'Informe de margen por artículo agrupado por agente y cliente teniendo en cuenta el precio neto de venta promedio', NULL, 'S', 1);
INSERT INTO INFORMES (ID, ID_EMPRESA, CATEGORIA, CONTROLLER, ICONO, NOMBRE, DESCRIPCION, ORDEN, MODIFICABLE, TIPO_AGRUPACION) VALUES (21, 1, 'MARGEN ARTICULOS', 'InfMargenArticuloController', 2, 'Margen (ult. venta) por artículo', 'Informe de margen por artículo teniendo en cuenta el precio neto de última venta', NULL, 'S', 0);
INSERT INTO INFORMES (ID, ID_EMPRESA, CATEGORIA, CONTROLLER, ICONO, NOMBRE, DESCRIPCION, ORDEN, MODIFICABLE, TIPO_AGRUPACION) VALUES (22, 1, 'MARGEN ARTICULOS', 'InfMargenArticuloController', 2, 'Margen (ult.venta) por clientes', 'Informe de margen por artículo agrupado por cliente teniendo en cuenta el precio neto de última venta', NULL, 'S', 1);
INSERT INTO INFORMES (ID, ID_EMPRESA, CATEGORIA, CONTROLLER, ICONO, NOMBRE, DESCRIPCION, ORDEN, MODIFICABLE, TIPO_AGRUPACION) VALUES (23, 1, 'MARGEN ARTICULOS', 'InfMargenArticuloController', 2, 'Margen (ult. venta) por agente y cliente', 'Informe de margen por artículo agrupado por agente y cliente teniendo en cuenta el precio neto de última venta', NULL, 'S', 1);
INSERT INTO INFORMES (ID, ID_EMPRESA, CATEGORIA, CONTROLLER, ICONO, NOMBRE, DESCRIPCION, ORDEN, MODIFICABLE, TIPO_AGRUPACION) VALUES (31, 1, 'VENTAS ARTICULOS', 'InfVentasArticuloController', 4, 'Ventas articulo por fecha y cliente', 'Informe de ventas con frcha y factura agrupado por cliente', NULL, 'S', NULL);
INSERT INTO INFORMES (ID, ID_EMPRESA, CATEGORIA, CONTROLLER, ICONO, NOMBRE, DESCRIPCION, ORDEN, MODIFICABLE, TIPO_AGRUPACION) VALUES (32, 1, 'MARGEN ARTICULOS', 'InfMargenArticuloController', 0, 'Margen ventas - compras pro', 'Informe que nos da el margen de las ventas de un periodo de tiempo en base al importe neto de compras promedio', NULL, 'S', 2);

COMMIT WORK;

INSERT INTO REFERENCIAS (CODIGO, VALOR, ID_EMPRESA, DESCRIPCION) VALUES ('REF_FACTURAS_CLIENTE', 'EL/1710', 1, 'Ref. facturas de cliente');
INSERT INTO REFERENCIAS (CODIGO, VALOR, ID_EMPRESA, DESCRIPCION) VALUES ('REF_PEDIDOS_CLIENTE', '00443', 1, 'Ref. pedidos de cliente');
INSERT INTO REFERENCIAS (CODIGO, VALOR, ID_EMPRESA, DESCRIPCION) VALUES ('REF_PEDIDOS_PROVEEDOR', '00508', 1, 'Ref. pedidos de proveedor');
INSERT INTO REFERENCIAS (CODIGO, VALOR, ID_EMPRESA, DESCRIPCION) VALUES ('REF_ALBARANES_CLIENTE', '02250', 1, 'Ref. albaranes de cliente');
INSERT INTO REFERENCIAS (CODIGO, VALOR, ID_EMPRESA, DESCRIPCION) VALUES ('REF_ALBARANES_PROVEEDOR', '00359', 1, 'Ref. albaranes de proveedor');
INSERT INTO REFERENCIAS (CODIGO, VALOR, ID_EMPRESA, DESCRIPCION) VALUES ('REF_REMESAS_CLIENTE', '00396', 1, 'Ref. remesas de cliente');
INSERT INTO REFERENCIAS (CODIGO, VALOR, ID_EMPRESA, DESCRIPCION) VALUES ('REF_COMISIONES', '00015', 1, 'Ref. liquidaciones de comision');
INSERT INTO REFERENCIAS (CODIGO, VALOR, ID_EMPRESA, DESCRIPCION) VALUES ('REF_FACTURAS_PROVEEDOR', '2008/0164', 1, 'Ref. facturas de proveedor');
INSERT INTO REFERENCIAS (CODIGO, VALOR, ID_EMPRESA, DESCRIPCION) VALUES ('REF_ALBARANES_DEV_CLIENTE', '00096', 1, 'Ref. ordenes de devolucion de cliente');
INSERT INTO REFERENCIAS (CODIGO, VALOR, ID_EMPRESA, DESCRIPCION) VALUES ('REF_ALBARANES_DEV_PROVEEDOR', '00013', 1, 'Ref. ordenes de devolucion de proveedor');
INSERT INTO REFERENCIAS (CODIGO, VALOR, ID_EMPRESA, DESCRIPCION) VALUES ('REF_REMESAS_PROVEEDOR', '00022', 1, 'Ref. remesas de proveedor');
INSERT INTO REFERENCIAS (CODIGO, VALOR, ID_EMPRESA, DESCRIPCION) VALUES ('REF_ABONOS_CLIENTE', 'AB-EL/0143', 1, 'Ref. abonos de cliente');
INSERT INTO REFERENCIAS (CODIGO, VALOR, ID_EMPRESA, DESCRIPCION) VALUES ('REF_ABONOS_PROVEEDOR', 'A. 2008/0007', 1, 'Ref. abonos de proveedor');

COMMIT WORK;

INSERT INTO EMPRESAS (ID, NIF_CIF, NOMBRE, RAZON_SOCIAL, CALLE, POBLACION, PROVINCIA, CODIGO_POSTAL, TELEFONO_1, TELEFONO_2, MOVIL_1, MOVIL_2, FAX, EMAIL_1, EMAIL_2, PAGINA_WEB, FECHA_ALTA, FECHA_MODIFICACION, USUARIO, REGISTRO_MERCANTIL, IVA) VALUES (1, 'B82780453', 'Luis León Representaciones S.L.', NULL, 'C/ Sur, 4, Bajo 1', 'Moraleja de Enmedio', 'Madrid', '28950', '916004041', NULL, NULL, NULL, '916093287', NULL, NULL, NULL, NULL, NULL, NULL, '', 16);
COMMIT WORK;
SET GENERATOR GEN_EMPRESAS_ID TO 2


INSERT INTO TIENDA_WEB (ID, ID_EMPRESA, TIENDA_ACTIVA, ULTIMA_ACTUALIZACION, BDSERVER, BDPORT, BDNAME, BDUSER, BDPASS) VALUES (2, 1, 1, '2008-06-04 09:17:19', 'luisleonrepresentaciones.com', '1', 'rodaxcs_luisleonosc', 'rodaxcs_luisleon', 'gLzPcZ7N');
COMMIT WORK;
SET GENERATOR GEN_TIENDA_WEB_ID TO 3

INSERT INTO TIPOS_IVA (ID, REFERENCIA, DESCRIPCION, IVA, RE) VALUES (2, 'IVA16', 'IVA16', 16, 4);
INSERT INTO TIPOS_IVA (ID, REFERENCIA, DESCRIPCION, IVA, RE) VALUES (3, 'IVA4', 'IVA4', 4, 0.5);
INSERT INTO TIPOS_IVA (ID, REFERENCIA, DESCRIPCION, IVA, RE) VALUES (4, 'IVA7', 'IVA7', 7, 1);
INSERT INTO TIPOS_IVA (ID, REFERENCIA, DESCRIPCION, IVA, RE) VALUES (6, 'EXENTO', 'EXTRANJERO', 0, 0);
COMMIT WORK;
SET GENERATOR GEN_TIPOS_IVA_ID TO 3

INSERT INTO FORMAS_PAGO (ID, REFERENCIA, DESCRIPCION, TITULAR, ENTIDAD, SUCURSAL, DC, CUENTA) VALUES (8, '15', '15 dias', NULL, NULL, NULL, NULL, NULL);
INSERT INTO FORMAS_PAGO (ID, REFERENCIA, DESCRIPCION, TITULAR, ENTIDAD, SUCURSAL, DC, CUENTA) VALUES (12, 'TALON30', 'Talon 30 DIAS', NULL, NULL, NULL, NULL, NULL);
INSERT INTO FORMAS_PAGO (ID, REFERENCIA, DESCRIPCION, TITULAR, ENTIDAD, SUCURSAL, DC, CUENTA) VALUES (7, 'CONTADO', 'Pago al contado', NULL, NULL, NULL, NULL, NULL);
INSERT INTO FORMAS_PAGO (ID, REFERENCIA, DESCRIPCION, TITULAR, ENTIDAD, SUCURSAL, DC, CUENTA) VALUES (13, '30', '30 DIAS', NULL, NULL, NULL, NULL, NULL);
INSERT INTO FORMAS_PAGO (ID, REFERENCIA, DESCRIPCION, TITULAR, ENTIDAD, SUCURSAL, DC, CUENTA) VALUES (14, '30-60-90', '3 PLAZOS', NULL, NULL, NULL, NULL, NULL);
INSERT INTO FORMAS_PAGO (ID, REFERENCIA, DESCRIPCION, TITULAR, ENTIDAD, SUCURSAL, DC, CUENTA) VALUES (15, '30-60', '2 PLAZOS', NULL, NULL, NULL, NULL, NULL);
INSERT INTO FORMAS_PAGO (ID, REFERENCIA, DESCRIPCION, TITULAR, ENTIDAD, SUCURSAL, DC, CUENTA) VALUES (20, '60', '60 dias', NULL, NULL, NULL, NULL, NULL);
INSERT INTO FORMAS_PAGO (ID, REFERENCIA, DESCRIPCION, TITULAR, ENTIDAD, SUCURSAL, DC, CUENTA) VALUES (21, '90', '90 dias', NULL, NULL, NULL, NULL, NULL);
INSERT INTO FORMAS_PAGO (ID, REFERENCIA, DESCRIPCION, TITULAR, ENTIDAD, SUCURSAL, DC, CUENTA) VALUES (23, 'TALON60', 'TALON 60 DIAS', NULL, NULL, NULL, NULL, NULL);
INSERT INTO FORMAS_PAGO (ID, REFERENCIA, DESCRIPCION, TITULAR, ENTIDAD, SUCURSAL, DC, CUENTA) VALUES (29, '45', '45 dias', NULL, NULL, NULL, NULL, NULL);
INSERT INTO FORMAS_PAGO (ID, REFERENCIA, DESCRIPCION, TITULAR, ENTIDAD, SUCURSAL, DC, CUENTA) VALUES (30, '90-120-150', '90-120-150', NULL, NULL, NULL, NULL, NULL);
INSERT INTO FORMAS_PAGO (ID, REFERENCIA, DESCRIPCION, TITULAR, ENTIDAD, SUCURSAL, DC, CUENTA) VALUES (32, 'TALON90', 'TALON 90 DIAS', NULL, NULL, NULL, NULL, NULL);
INSERT INTO FORMAS_PAGO (ID, REFERENCIA, DESCRIPCION, TITULAR, ENTIDAD, SUCURSAL, DC, CUENTA) VALUES (33, 'GRATUITO', 'SIN CARGO', NULL, NULL, NULL, NULL, NULL);
INSERT INTO FORMAS_PAGO (ID, REFERENCIA, DESCRIPCION, TITULAR, ENTIDAD, SUCURSAL, DC, CUENTA) VALUES (34, '30-60-90-120', '30-60-90-120', NULL, NULL, NULL, NULL, NULL);
INSERT INTO FORMAS_PAGO (ID, REFERENCIA, DESCRIPCION, TITULAR, ENTIDAD, SUCURSAL, DC, CUENTA) VALUES (35, '30-60-90-120-150-180', '30-60-90-120-150-180', NULL, NULL, NULL, NULL, NULL);
INSERT INTO FORMAS_PAGO (ID, REFERENCIA, DESCRIPCION, TITULAR, ENTIDAD, SUCURSAL, DC, CUENTA) VALUES (36, '60-90-120', '60-90-120', NULL, NULL, NULL, NULL, NULL);
INSERT INTO FORMAS_PAGO (ID, REFERENCIA, DESCRIPCION, TITULAR, ENTIDAD, SUCURSAL, DC, CUENTA) VALUES (37, '90-120', '90-120', NULL, NULL, NULL, NULL, NULL);
INSERT INTO FORMAS_PAGO (ID, REFERENCIA, DESCRIPCION, TITULAR, ENTIDAD, SUCURSAL, DC, CUENTA) VALUES (38, 'TRANSF/CCM 30 DIAS', 'TRANSFERENCIA  BANCARIA', NULL, NULL, NULL, NULL, NULL);
INSERT INTO FORMAS_PAGO (ID, REFERENCIA, DESCRIPCION, TITULAR, ENTIDAD, SUCURSAL, DC, CUENTA) VALUES (39, 'CARGO EN CCM', 'CARGO EN CCM', NULL, NULL, NULL, NULL, NULL);
INSERT INTO FORMAS_PAGO (ID, REFERENCIA, DESCRIPCION, TITULAR, ENTIDAD, SUCURSAL, DC, CUENTA) VALUES (40, 'TRASF/ CAIXA C.', 'TRANSFERENCIA CAIXA CATALUÑA', NULL, NULL, NULL, NULL, NULL);
INSERT INTO FORMAS_PAGO (ID, REFERENCIA, DESCRIPCION, TITULAR, ENTIDAD, SUCURSAL, DC, CUENTA) VALUES (44, '60-90', '2 PLAZOS', NULL, NULL, NULL, NULL, NULL);
INSERT INTO FORMAS_PAGO (ID, REFERENCIA, DESCRIPCION, TITULAR, ENTIDAD, SUCURSAL, DC, CUENTA) VALUES (41, '7 PAGOS', '120-150-180-210-240-270-300', NULL, NULL, NULL, NULL, NULL);
COMMIT WORK;
SET GENERATOR GEN_FORMAS_PAGO_ID TO 42;

INSERT INTO FORMAS_PAGO_PLAZOS (ID, ID_FORMA_PAGO, NUM_DIAS, PORCENTAJE) VALUES (15, 15, 30, 50);
INSERT INTO FORMAS_PAGO_PLAZOS (ID, ID_FORMA_PAGO, NUM_DIAS, PORCENTAJE) VALUES (65, 42, 60, 50);
INSERT INTO FORMAS_PAGO_PLAZOS (ID, ID_FORMA_PAGO, NUM_DIAS, PORCENTAJE) VALUES (12, 14, 30, 33.3300018310547);
INSERT INTO FORMAS_PAGO_PLAZOS (ID, ID_FORMA_PAGO, NUM_DIAS, PORCENTAJE) VALUES (13, 14, 60, 33.3300018310547);
INSERT INTO FORMAS_PAGO_PLAZOS (ID, ID_FORMA_PAGO, NUM_DIAS, PORCENTAJE) VALUES (14, 14, 90, 33.3400001525879);
INSERT INTO FORMAS_PAGO_PLAZOS (ID, ID_FORMA_PAGO, NUM_DIAS, PORCENTAJE) VALUES (16, 15, 60, 50);
INSERT INTO FORMAS_PAGO_PLAZOS (ID, ID_FORMA_PAGO, NUM_DIAS, PORCENTAJE) VALUES (19, 12, 30, 100);
INSERT INTO FORMAS_PAGO_PLAZOS (ID, ID_FORMA_PAGO, NUM_DIAS, PORCENTAJE) VALUES (20, 23, 60, 100);
INSERT INTO FORMAS_PAGO_PLAZOS (ID, ID_FORMA_PAGO, NUM_DIAS, PORCENTAJE) VALUES (6, 8, 15, 100);
INSERT INTO FORMAS_PAGO_PLAZOS (ID, ID_FORMA_PAGO, NUM_DIAS, PORCENTAJE) VALUES (29, 29, 45, 100);
INSERT INTO FORMAS_PAGO_PLAZOS (ID, ID_FORMA_PAGO, NUM_DIAS, PORCENTAJE) VALUES (30, 30, 90, 33.3300018310547);
INSERT INTO FORMAS_PAGO_PLAZOS (ID, ID_FORMA_PAGO, NUM_DIAS, PORCENTAJE) VALUES (23, 20, 60, 100);
INSERT INTO FORMAS_PAGO_PLAZOS (ID, ID_FORMA_PAGO, NUM_DIAS, PORCENTAJE) VALUES (24, 21, 90, 100);
INSERT INTO FORMAS_PAGO_PLAZOS (ID, ID_FORMA_PAGO, NUM_DIAS, PORCENTAJE) VALUES (31, 30, 120, 33.3300018310547);
INSERT INTO FORMAS_PAGO_PLAZOS (ID, ID_FORMA_PAGO, NUM_DIAS, PORCENTAJE) VALUES (32, 30, 150, 33.3400001525879);
INSERT INTO FORMAS_PAGO_PLAZOS (ID, ID_FORMA_PAGO, NUM_DIAS, PORCENTAJE) VALUES (33, 32, 90, 100);
INSERT INTO FORMAS_PAGO_PLAZOS (ID, ID_FORMA_PAGO, NUM_DIAS, PORCENTAJE) VALUES (34, 7, 1, 100);
INSERT INTO FORMAS_PAGO_PLAZOS (ID, ID_FORMA_PAGO, NUM_DIAS, PORCENTAJE) VALUES (35, 34, 30, 25);
INSERT INTO FORMAS_PAGO_PLAZOS (ID, ID_FORMA_PAGO, NUM_DIAS, PORCENTAJE) VALUES (36, 34, 60, 25);
INSERT INTO FORMAS_PAGO_PLAZOS (ID, ID_FORMA_PAGO, NUM_DIAS, PORCENTAJE) VALUES (37, 34, 90, 25);
INSERT INTO FORMAS_PAGO_PLAZOS (ID, ID_FORMA_PAGO, NUM_DIAS, PORCENTAJE) VALUES (38, 34, 120, 25);
INSERT INTO FORMAS_PAGO_PLAZOS (ID, ID_FORMA_PAGO, NUM_DIAS, PORCENTAJE) VALUES (39, 35, 30, 16.6666603088379);
INSERT INTO FORMAS_PAGO_PLAZOS (ID, ID_FORMA_PAGO, NUM_DIAS, PORCENTAJE) VALUES (40, 35, 60, 16.6666603088379);
INSERT INTO FORMAS_PAGO_PLAZOS (ID, ID_FORMA_PAGO, NUM_DIAS, PORCENTAJE) VALUES (41, 35, 90, 16.6666603088379);
INSERT INTO FORMAS_PAGO_PLAZOS (ID, ID_FORMA_PAGO, NUM_DIAS, PORCENTAJE) VALUES (42, 35, 120, 16.6599998474121);
INSERT INTO FORMAS_PAGO_PLAZOS (ID, ID_FORMA_PAGO, NUM_DIAS, PORCENTAJE) VALUES (43, 35, 150, 16.6666603088379);
INSERT INTO FORMAS_PAGO_PLAZOS (ID, ID_FORMA_PAGO, NUM_DIAS, PORCENTAJE) VALUES (44, 35, 180, 16.6666603088379);
INSERT INTO FORMAS_PAGO_PLAZOS (ID, ID_FORMA_PAGO, NUM_DIAS, PORCENTAJE) VALUES (45, 36, 60, 33.3333320617676);
INSERT INTO FORMAS_PAGO_PLAZOS (ID, ID_FORMA_PAGO, NUM_DIAS, PORCENTAJE) VALUES (46, 36, 90, 33.3333015441895);
INSERT INTO FORMAS_PAGO_PLAZOS (ID, ID_FORMA_PAGO, NUM_DIAS, PORCENTAJE) VALUES (47, 36, 120, 33.3333282470703);
INSERT INTO FORMAS_PAGO_PLAZOS (ID, ID_FORMA_PAGO, NUM_DIAS, PORCENTAJE) VALUES (48, 37, 90, 50);
INSERT INTO FORMAS_PAGO_PLAZOS (ID, ID_FORMA_PAGO, NUM_DIAS, PORCENTAJE) VALUES (49, 37, 120, 50);
INSERT INTO FORMAS_PAGO_PLAZOS (ID, ID_FORMA_PAGO, NUM_DIAS, PORCENTAJE) VALUES (50, 38, 0, 100);
INSERT INTO FORMAS_PAGO_PLAZOS (ID, ID_FORMA_PAGO, NUM_DIAS, PORCENTAJE) VALUES (66, 42, 90, 50);
INSERT INTO FORMAS_PAGO_PLAZOS (ID, ID_FORMA_PAGO, NUM_DIAS, PORCENTAJE) VALUES (67, 43, 60, 50);
INSERT INTO FORMAS_PAGO_PLAZOS (ID, ID_FORMA_PAGO, NUM_DIAS, PORCENTAJE) VALUES (68, 43, 90, 50);
INSERT INTO FORMAS_PAGO_PLAZOS (ID, ID_FORMA_PAGO, NUM_DIAS, PORCENTAJE) VALUES (69, 44, 60, 50);
INSERT INTO FORMAS_PAGO_PLAZOS (ID, ID_FORMA_PAGO, NUM_DIAS, PORCENTAJE) VALUES (70, 44, 90, 50);
INSERT INTO FORMAS_PAGO_PLAZOS (ID, ID_FORMA_PAGO, NUM_DIAS, PORCENTAJE) VALUES (57, 13, 30, 100);
INSERT INTO FORMAS_PAGO_PLAZOS (ID, ID_FORMA_PAGO, NUM_DIAS, PORCENTAJE) VALUES (58, 41, 120, 14.2856998443604);
INSERT INTO FORMAS_PAGO_PLAZOS (ID, ID_FORMA_PAGO, NUM_DIAS, PORCENTAJE) VALUES (59, 41, 150, 14.2856998443604);
INSERT INTO FORMAS_PAGO_PLAZOS (ID, ID_FORMA_PAGO, NUM_DIAS, PORCENTAJE) VALUES (60, 41, 180, 14.2856998443604);
INSERT INTO FORMAS_PAGO_PLAZOS (ID, ID_FORMA_PAGO, NUM_DIAS, PORCENTAJE) VALUES (61, 41, 210, 14.2856998443604);
INSERT INTO FORMAS_PAGO_PLAZOS (ID, ID_FORMA_PAGO, NUM_DIAS, PORCENTAJE) VALUES (62, 41, 240, 14.2856998443604);
INSERT INTO FORMAS_PAGO_PLAZOS (ID, ID_FORMA_PAGO, NUM_DIAS, PORCENTAJE) VALUES (63, 41, 270, 14.2856998443604);
INSERT INTO FORMAS_PAGO_PLAZOS (ID, ID_FORMA_PAGO, NUM_DIAS, PORCENTAJE) VALUES (64, 41, 300, 14.2856998443604);
COMMIT WORK;
SET GENERATOR GEN_FORMAS_PAGO_PLAZOS_ID TO 80;


/******************************************************************************/
/****                             Primary Keys                             ****/
/******************************************************************************/

ALTER TABLE IMPRESIONES ADD CONSTRAINT PK_IMPRESIONES PRIMARY KEY (ID);
ALTER TABLE AGENTES_COMISIONES ADD CONSTRAINT PK_AGENTES_COMISIONES PRIMARY KEY (ID);
ALTER TABLE ALBARANES_CLIENTE ADD CONSTRAINT PK_ALBARAN_CLIENTE PRIMARY KEY (ID);
ALTER TABLE ALBARANES_CLIENTE_DETALLES ADD CONSTRAINT PK_ALBARANES_CLIENTE_DETALLES PRIMARY KEY (ID);
ALTER TABLE ALBARANES_PROVEEDOR ADD CONSTRAINT PK_ALBARAN_PROVEEDOR PRIMARY KEY (ID);
ALTER TABLE ALBARANES_PROVEEDOR_DETALLES ADD CONSTRAINT PK_ALBARANES_PROVEEDOR_DETALLES PRIMARY KEY (ID);
ALTER TABLE ALMACENES ADD CONSTRAINT PK_ALMACENES PRIMARY KEY (ID);
ALTER TABLE ARTICULOS ADD CONSTRAINT PK_ARTICULOS PRIMARY KEY (ID);
ALTER TABLE 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 COMISIONES_LIQUIDADAS ADD CONSTRAINT PK_COMISIONES_LIQUIDADAS 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 EMPRESAS ADD CONSTRAINT PK_EMPRESAS PRIMARY KEY (ID);
ALTER TABLE EMPRESAS_CONTACTOS ADD CONSTRAINT PK_EMPRESAS_CONTACTOS PRIMARY KEY (ID_EMPRESA, ID_CONTACTO);
ALTER TABLE EMPRESAS_DATOS_BANCO ADD CONSTRAINT PK_EMPRESAS_DATOS_BANCO PRIMARY KEY (ID);
ALTER TABLE EMPRESAS_USUARIOS ADD CONSTRAINT PK_EMPRESAS_USUARIOS PRIMARY KEY (ID_EMPRESA, ID_USUARIO);
ALTER TABLE 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 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 PERFILES ADD CONSTRAINT PK_PERFILES PRIMARY KEY (ID);
ALTER TABLE PERFILES_USUARIOS ADD CONSTRAINT PK_PERFILES_USUARIOS PRIMARY KEY (ID_PERFIL, ID_USUARIO);
ALTER TABLE PROVEEDORES_DATOS ADD CONSTRAINT PK_PROVEEDORES_DATOS PRIMARY KEY (ID_PROVEEDOR);
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 USUARIOS ADD CONSTRAINT PK_USUARIOS PRIMARY KEY (ID);
ALTER TABLE REGISTRO_CORREOS ADD CONSTRAINT PK_REGISTRO_CORREOS PRIMARY KEY (ID);


/******************************************************************************/
/****                             Foreign Keys                             ****/
/******************************************************************************/

ALTER TABLE ALBARANES_CLIENTE ADD CONSTRAINT FK_ALBARAN_CLIENTE1 FOREIGN KEY (ID_CLIENTE) REFERENCES CONTACTOS (ID) ON DELETE NO ACTION ON UPDATE NO ACTION;
ALTER TABLE ALBARANES_CLIENTE ADD CONSTRAINT FK_ALBARAN_CLIENTE2 FOREIGN KEY (ID_EMPRESA) REFERENCES EMPRESAS (ID) ON DELETE NO ACTION ON UPDATE NO ACTION;
ALTER TABLE ALBARANES_CLIENTE ADD CONSTRAINT FK_ALBARAN_CLIENTE3 FOREIGN KEY (ID_PEDIDO) REFERENCES PEDIDOS_CLIENTE (ID) ON DELETE NO ACTION ON UPDATE NO ACTION;
ALTER TABLE ALBARANES_CLIENTE ADD CONSTRAINT FK_ALBARAN_CLIENTE4 FOREIGN KEY (ID_FACTURA) REFERENCES FACTURAS_CLIENTE (ID) ON DELETE SET NULL ON UPDATE SET NULL;
ALTER TABLE ALBARANES_PROVEEDOR ADD CONSTRAINT FK_ALBARANES_PROVEEDOR3 FOREIGN KEY (ID_PEDIDO) REFERENCES PEDIDOS_PROVEEDOR (ID) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE ALBARANES_PROVEEDOR ADD CONSTRAINT FK_ALBARANES_PROVEEDOR4 FOREIGN KEY (ID_FACTURA) REFERENCES FACTURAS_PROVEEDOR (ID) ON DELETE SET NULL ON UPDATE CASCADE;
ALTER TABLE ALBARANES_PROVEEDOR ADD CONSTRAINT FK_ALBARAN_PROVEEDOR1 FOREIGN KEY (ID_PROVEEDOR) REFERENCES CONTACTOS (ID) ON DELETE NO ACTION ON UPDATE NO ACTION;
ALTER TABLE ALBARANES_PROVEEDOR ADD CONSTRAINT FK_ALBARAN_PROVEEDOR2 FOREIGN KEY (ID_EMPRESA) REFERENCES EMPRESAS (ID) ON DELETE NO ACTION ON UPDATE NO ACTION;
ALTER TABLE ALMACENES ADD CONSTRAINT FK_ALMACENES_EMPRESAS FOREIGN KEY (ID_EMPRESA) REFERENCES EMPRESAS (ID) ON DELETE NO ACTION ON UPDATE NO ACTION;
ALTER TABLE ARTICULOS ADD CONSTRAINT FK_ARTICULOS_EMPRESA FOREIGN KEY (ID_EMPRESA) REFERENCES EMPRESAS (ID) ON DELETE NO ACTION ON UPDATE NO ACTION;
ALTER TABLE COMISIONES_LIQUIDADAS ADD CONSTRAINT FK_COMISIONES_LIQUIDADAS FOREIGN KEY (ID_AGENTE) REFERENCES CONTACTOS (ID);
ALTER TABLE EMPRESAS_CONTACTOS ADD CONSTRAINT FK_EMPRESAS_CONTACTOS FOREIGN KEY (ID_CONTACTO) REFERENCES CONTACTOS (ID) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE EMPRESAS_DATOS_BANCO ADD CONSTRAINT FK_EMPRESAS_DATOS_BANCO FOREIGN KEY (ID_EMPRESA) REFERENCES EMPRESAS (ID) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE FACTURAS_CLIENTE ADD CONSTRAINT FK_FACTURAS_CLIENTE_EMPRESAS FOREIGN KEY (ID_EMPRESA) REFERENCES EMPRESAS (ID) ON DELETE NO ACTION ON UPDATE NO ACTION;
ALTER TABLE FACTURAS_CLIENTE_DETALLES ADD CONSTRAINT FK_FACTURAS_CLI_DET_ID_FACTURA FOREIGN KEY (ID_FACTURA) REFERENCES FACTURAS_CLIENTE (ID) ON DELETE CASCADE ON UPDATE CASCADE;
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 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 PAGOS_CLIENTE ADD CONSTRAINT FK_PAGOS_CLIENTE FOREIGN KEY (ID_RECIBO) REFERENCES RECIBOS_CLIENTE (ID);
ALTER TABLE PAGOS_PROVEEDOR ADD CONSTRAINT FK_PAGOS_PROVEEDOR FOREIGN KEY (ID_RECIBO) REFERENCES RECIBOS_PROVEEDOR (ID);
ALTER TABLE PEDIDOS_CLIENTE ADD CONSTRAINT FK_PEDIDOS_CLIENTE FOREIGN KEY (ID_CLIENTE) REFERENCES CONTACTOS (ID);
ALTER TABLE PEDIDOS_CLIENTE ADD CONSTRAINT FK_PEDIDOS_CLIENTE_ID_EMPRESA FOREIGN KEY (ID_EMPRESA) REFERENCES EMPRESAS (ID);
ALTER TABLE PEDIDOS_PROVEEDOR ADD CONSTRAINT FK_PEDIDOS_PROVEEDOR FOREIGN KEY (ID_EMPRESA) REFERENCES EMPRESAS (ID);
ALTER TABLE PEDIDOS_PROVEEDOR ADD CONSTRAINT FK_PEDIDOS_PROVEEDOR2 FOREIGN KEY (ID_PROVEEDOR) REFERENCES CONTACTOS (ID);
ALTER TABLE PEDIDOS_PROVEEDOR_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 RECIBOS_CLIENTE ADD CONSTRAINT FK_RECIBOS_CLIENTE FOREIGN KEY (ID_FACTURA) REFERENCES FACTURAS_CLIENTE (ID) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE RECIBOS_CLIENTE ADD CONSTRAINT FK_RECIBOS_CLIENTE2 FOREIGN KEY (ID_REMESA) REFERENCES REMESAS_CLIENTE (ID) ON DELETE SET NULL ON UPDATE SET NULL;
ALTER TABLE RECIBOS_PROVEEDOR ADD CONSTRAINT FK_RECIBOS_PROVEEDOR FOREIGN KEY (ID_FACTURA) REFERENCES FACTURAS_PROVEEDOR (ID) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE RECIBOS_PROVEEDOR ADD CONSTRAINT FK_RECIBOS_PROVEEDOR1 FOREIGN KEY (ID_REMESA) REFERENCES REMESAS_PROVEEDOR (ID) ON DELETE SET NULL ON UPDATE SET NULL;
ALTER TABLE REMESAS_CLIENTE ADD CONSTRAINT FK_REMESAS_CLIENTE FOREIGN KEY (ID_EMPRESA) REFERENCES EMPRESAS (ID);
ALTER TABLE REMESAS_PROVEEDOR ADD CONSTRAINT FK_REMESAS_PROVEEDOR FOREIGN KEY (ID_EMPRESA) REFERENCES EMPRESAS (ID);
ALTER TABLE TIENDA_WEB ADD CONSTRAINT FK_EMPRESAS_TIENDA_WEB FOREIGN KEY (ID_EMPRESA) REFERENCES EMPRESAS (ID) ON DELETE CASCADE ON UPDATE CASCADE;


/******************************************************************************/
/****                               Indices                                ****/
/******************************************************************************/

CREATE INDEX IMPRESIONES_IDX1 ON IMPRESIONES(ID_TABLA);
CREATE INDEX IMPRESIONES_IDX2 ON IMPRESIONES(TABLA);
CREATE INDEX REGISTRO_CORREOS_IDX1 ON REGISTRO_CORREOS (ID_TABLA);
CREATE INDEX REGISTRO_CORREOS_IDX2 ON REGISTRO_CORREOS (TABLA);
CREATE INDEX IDX_AGENTES_COMISIONES1 ON AGENTES_COMISIONES (ID_AGENTE);
CREATE INDEX IDX_AGENTES_COMISIONES2 ON AGENTES_COMISIONES (ID_PROVEEDOR);
CREATE INDEX ALBARANES_CLIENTE_IDX1 ON ALBARANES_CLIENTE (TIPO);
CREATE INDEX IDX_ALBARANES_CLIENTE ON ALBARANES_CLIENTE (ID_FORMA_PAGO);
CREATE INDEX IDX_ALBARANES_CLIENTE_DETALLES ON ALBARANES_CLIENTE_DETALLES (ID_ARTICULO);
CREATE INDEX IDX_ALBARANES_CLIENTE_DETALLES1 ON ALBARANES_CLIENTE_DETALLES (ID_ALBARAN);
CREATE INDEX ALBARANES_PROVEEDOR_IDX1 ON ALBARANES_PROVEEDOR (TIPO);
CREATE INDEX IDX_ALBARANES_PROVEEDOR ON ALBARANES_PROVEEDOR (ID_ALMACEN);
CREATE INDEX IDX_ALBARANES_PROVEEDOR1 ON ALBARANES_PROVEEDOR (ID_FORMA_PAGO);
CREATE INDEX IDX_ALBARANES_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_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 FORMAS_PAGO_PLAZOS_IDX1 ON FORMAS_PAGO_PLAZOS (ID_FORMA_PAGO);
CREATE INDEX IDX_INFORMES ON INFORMES (ID_EMPRESA);
CREATE INDEX MOVIMIENTOS_IDX1 ON MOVIMIENTOS (TIPO);
CREATE INDEX IDX_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_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_REMESAS_CLIENTE ON REMESAS_CLIENTE (ID_DATOS_BANCO);
CREATE INDEX IDX_REMESAS_PROVEEDOR ON REMESAS_PROVEEDOR (ID_DATOS_BANCO);


/******************************************************************************/
/****                               Triggers                               ****/
/******************************************************************************/


SET TERM ^ ;


/******************************************************************************/
/****                         Triggers for tables                          ****/
/******************************************************************************/



/* Trigger: TRI_INSERT_ALBARANES_CLIENTE */
CREATE TRIGGER TRI_INSERT_ALBARANES_CLIENTE FOR ALBARANES_CLIENTE
ACTIVE BEFORE INSERT POSITION 0
AS
begin
  NEW.FECHA_ALTA = current_timestamp;
  NEW.FECHA_MODIFICACION = Null;
end
^


/* Trigger: TRI_INSERT_ALBARANES_CLI_DET */
CREATE TRIGGER TRI_INSERT_ALBARANES_CLI_DET FOR ALBARANES_CLIENTE_DETALLES
ACTIVE BEFORE INSERT POSITION 0
AS
begin
  NEW.FECHA_ALTA = current_timestamp;
  NEW.FECHA_MODIFICACION = Null;
end
^


/* Trigger: TRI_INSERT_ALBARANES_PROVEEDOR */
CREATE TRIGGER TRI_INSERT_ALBARANES_PROVEEDOR FOR ALBARANES_PROVEEDOR
ACTIVE BEFORE INSERT POSITION 0
AS
begin
  NEW.FECHA_ALTA = current_timestamp;
  NEW.FECHA_MODIFICACION = Null;
end
^


/* Trigger: TRI_INSERT_ALBARANES_PRO_DET */
CREATE TRIGGER TRI_INSERT_ALBARANES_PRO_DET FOR ALBARANES_PROVEEDOR_DETALLES
ACTIVE BEFORE INSERT POSITION 0
AS
begin
  NEW.FECHA_ALTA = current_timestamp;
  NEW.FECHA_MODIFICACION = Null;
end
^


/* Trigger: TRI_INSERT_ALMACENES */
CREATE TRIGGER TRI_INSERT_ALMACENES FOR ALMACENES
ACTIVE BEFORE INSERT POSITION 0
AS
begin
  NEW.FECHA_ALTA = current_timestamp;
  NEW.FECHA_MODIFICACION = Null;
end
^


/* Trigger: TRI_INSERT_ARTICULOS */
CREATE TRIGGER TRI_INSERT_ARTICULOS FOR ARTICULOS
ACTIVE BEFORE INSERT POSITION 0
AS
begin
  NEW.FECHA_ALTA = current_timestamp;
  NEW.FECHA_MODIFICACION = Null;
end
^


/* Trigger: TRI_INSERT_COMISIONES_LIQUID */
CREATE TRIGGER TRI_INSERT_COMISIONES_LIQUID FOR COMISIONES_LIQUIDADAS
ACTIVE BEFORE INSERT POSITION 0
AS
begin
  NEW.FECHA_ALTA = current_timestamp;
  NEW.FECHA_MODIFICACION = Null;
end
^


/* Trigger: TRI_INSERT_CONTACTOS */
CREATE TRIGGER TRI_INSERT_CONTACTOS FOR CONTACTOS
ACTIVE BEFORE INSERT POSITION 0
AS
begin
  NEW.FECHA_ALTA = current_timestamp;
  NEW.FECHA_MODIFICACION = Null;
end
^


/* Trigger: TRI_INSERT_CONTACTOS_BANCO */
CREATE TRIGGER TRI_INSERT_CONTACTOS_BANCO FOR CONTACTOS_DATOS_BANCO
ACTIVE BEFORE INSERT POSITION 0
AS
begin
  NEW.FECHA_ALTA = current_timestamp;
  NEW.FECHA_MODIFICACION = Null;
end
^


/* Trigger: TRI_INSERT_CONTACTOS_DIR */
CREATE TRIGGER TRI_INSERT_CONTACTOS_DIR FOR CONTACTOS_DIRECCIONES
ACTIVE BEFORE INSERT POSITION 0
AS
begin
  NEW.FECHA_ALTA = current_timestamp;
  NEW.FECHA_MODIFICACION = Null;
end
^


/* Trigger: TRI_INSERT_FACTURAS_CLIENTE */
CREATE TRIGGER TRI_INSERT_FACTURAS_CLIENTE FOR FACTURAS_CLIENTE
ACTIVE BEFORE INSERT POSITION 0
AS
begin
  NEW.FECHA_ALTA = current_timestamp;
  NEW.FECHA_MODIFICACION = Null;
end
^


/* Trigger: TRI_INSERT_FACTURAS_CLIENTE_DET */
CREATE TRIGGER TRI_INSERT_FACTURAS_CLIENTE_DET FOR FACTURAS_CLIENTE_DETALLES
ACTIVE BEFORE INSERT POSITION 0
AS
begin
  NEW.FECHA_ALTA = current_timestamp;
  NEW.FECHA_MODIFICACION = Null;
end
^


/* Trigger: TRI_INSERT_FACTURAS_PROVEEDOR */
CREATE TRIGGER TRI_INSERT_FACTURAS_PROVEEDOR FOR FACTURAS_PROVEEDOR
ACTIVE BEFORE INSERT POSITION 0
AS
begin
  NEW.FECHA_ALTA = current_timestamp;
  NEW.FECHA_MODIFICACION = Null;
end
^


/* Trigger: TRI_INSERT_FACTURAS_PROV_DET */
CREATE TRIGGER TRI_INSERT_FACTURAS_PROV_DET FOR FACTURAS_PROVEEDOR_DETALLES
ACTIVE BEFORE INSERT POSITION 0
AS
begin
  NEW.FECHA_ALTA = current_timestamp;
  NEW.FECHA_MODIFICACION = Null;
end
^


/* Trigger: TRI_INSERT_PAGOS_CLIENTE */
CREATE TRIGGER TRI_INSERT_PAGOS_CLIENTE FOR PAGOS_CLIENTE
ACTIVE BEFORE INSERT POSITION 0
AS
begin
  NEW.FECHA_ALTA = current_timestamp;
  NEW.FECHA_MODIFICACION = Null;
end
^


/* Trigger: TRI_INSERT_PAGOS_PROVEEDOR */
CREATE TRIGGER TRI_INSERT_PAGOS_PROVEEDOR FOR PAGOS_PROVEEDOR
ACTIVE BEFORE INSERT POSITION 0
AS
begin
  NEW.FECHA_ALTA = current_timestamp;
  NEW.FECHA_MODIFICACION = Null;
end
^


/* Trigger: TRI_INSERT_PEDIDOS_CLIENTE */
CREATE TRIGGER TRI_INSERT_PEDIDOS_CLIENTE FOR PEDIDOS_CLIENTE
ACTIVE BEFORE INSERT POSITION 0
AS
begin
  NEW.FECHA_ALTA = current_timestamp;
  NEW.FECHA_MODIFICACION = Null;
end
^


/* Trigger: TRI_INSERT_PEDIDOS_CLI_DET */
CREATE TRIGGER TRI_INSERT_PEDIDOS_CLI_DET FOR PEDIDOS_CLIENTE_DETALLES
ACTIVE BEFORE INSERT POSITION 0
AS
begin
  NEW.FECHA_ALTA = current_timestamp;
  NEW.FECHA_MODIFICACION = Null;
end
^


/* Trigger: TRI_INSERT_PEDIDOS_PROVEEDOR */
CREATE TRIGGER TRI_INSERT_PEDIDOS_PROVEEDOR FOR PEDIDOS_PROVEEDOR
ACTIVE BEFORE INSERT POSITION 0
AS
begin
  NEW.FECHA_ALTA = current_timestamp;
  NEW.FECHA_MODIFICACION = Null;
end
^


/* Trigger: TRI_INSERT_PEDIDOS_PROV_DET */
CREATE TRIGGER TRI_INSERT_PEDIDOS_PROV_DET FOR PEDIDOS_PROVEEDOR_DETALLES
ACTIVE BEFORE INSERT POSITION 0
AS
begin
  NEW.FECHA_ALTA = current_timestamp;
  NEW.FECHA_MODIFICACION = Null;
end
^


/* Trigger: TRI_INSERT_RECIBOS_CLIENTE */
CREATE TRIGGER TRI_INSERT_RECIBOS_CLIENTE FOR RECIBOS_CLIENTE
ACTIVE BEFORE INSERT POSITION 0
AS
begin
  NEW.FECHA_ALTA = current_timestamp;
  NEW.FECHA_MODIFICACION = Null;
end
^


/* Trigger: TRI_INSERT_RECIBOS_PROVEEDOR */
CREATE TRIGGER TRI_INSERT_RECIBOS_PROVEEDOR FOR RECIBOS_PROVEEDOR
ACTIVE BEFORE INSERT POSITION 0
AS
begin
  NEW.FECHA_ALTA = current_timestamp;
  NEW.FECHA_MODIFICACION = Null;
end
^


/* Trigger: TRI_INSERT_REMESAS_CLIENTE */
CREATE TRIGGER TRI_INSERT_REMESAS_CLIENTE FOR REMESAS_CLIENTE
ACTIVE BEFORE INSERT POSITION 0
AS
begin
  NEW.FECHA_ALTA = current_timestamp;
  NEW.FECHA_MODIFICACION = Null;
end
^


/* Trigger: TRI_INSERT_REMESAS_PROVEEDOR */
CREATE TRIGGER TRI_INSERT_REMESAS_PROVEEDOR FOR REMESAS_PROVEEDOR
ACTIVE BEFORE INSERT POSITION 0
AS
begin
  NEW.FECHA_ALTA = current_timestamp;
  NEW.FECHA_MODIFICACION = Null;
end
^


/* Trigger: TRI_UPDATE_ALBARANES_CLIENTE */
CREATE TRIGGER TRI_UPDATE_ALBARANES_CLIENTE FOR ALBARANES_CLIENTE
ACTIVE BEFORE UPDATE POSITION 0
AS
begin
  NEW.FECHA_MODIFICACION = current_timestamp;
end
^


/* Trigger: TRI_UPDATE_ALBARANES_CLI_DET */
CREATE TRIGGER TRI_UPDATE_ALBARANES_CLI_DET FOR ALBARANES_CLIENTE_DETALLES
ACTIVE BEFORE UPDATE POSITION 0
AS
begin
  NEW.FECHA_MODIFICACION = current_timestamp;
end
^


/* Trigger: TRI_UPDATE_ALBARANES_PROVEEDOR */
CREATE TRIGGER TRI_UPDATE_ALBARANES_PROVEEDOR FOR ALBARANES_PROVEEDOR
ACTIVE BEFORE UPDATE POSITION 0
AS
begin
  NEW.FECHA_MODIFICACION = current_timestamp;
end
^


/* Trigger: TRI_UPDATE_ALBARANES_PRO_DET */
CREATE TRIGGER TRI_UPDATE_ALBARANES_PRO_DET FOR ALBARANES_PROVEEDOR_DETALLES
ACTIVE BEFORE UPDATE POSITION 0
AS
begin
  NEW.FECHA_MODIFICACION = current_timestamp;
end
^


/* Trigger: TRI_UPDATE_ALMACENES */
CREATE TRIGGER TRI_UPDATE_ALMACENES FOR ALMACENES
ACTIVE BEFORE UPDATE POSITION 0
AS
begin
  NEW.FECHA_MODIFICACION = current_timestamp;
end
^


/* Trigger: TRI_UPDATE_ARTICULOS */
CREATE TRIGGER TRI_UPDATE_ARTICULOS FOR ARTICULOS
ACTIVE BEFORE UPDATE POSITION 0
AS
begin
  NEW.FECHA_MODIFICACION = current_timestamp;
end
^


/* Trigger: TRI_UPDATE_COMISIONES_LIQUID */
CREATE TRIGGER TRI_UPDATE_COMISIONES_LIQUID FOR COMISIONES_LIQUIDADAS
ACTIVE BEFORE UPDATE POSITION 0
AS
begin
  NEW.FECHA_MODIFICACION = current_timestamp;
end
^


/* Trigger: TRI_UPDATE_CONTACTOS */
CREATE TRIGGER TRI_UPDATE_CONTACTOS FOR CONTACTOS
ACTIVE BEFORE UPDATE POSITION 0
AS
begin
  NEW.FECHA_MODIFICACION = current_timestamp;
end
^


/* Trigger: TRI_UPDATE_CONTACTOS_BANCO */
CREATE TRIGGER TRI_UPDATE_CONTACTOS_BANCO FOR CONTACTOS_DATOS_BANCO
ACTIVE BEFORE UPDATE POSITION 0
AS
begin
  NEW.FECHA_MODIFICACION = current_timestamp;
end
^


/* Trigger: TRI_UPDATE_CONTACTOS_DIR */
CREATE TRIGGER TRI_UPDATE_CONTACTOS_DIR FOR CONTACTOS_DIRECCIONES
ACTIVE BEFORE UPDATE POSITION 0
AS
begin
  NEW.FECHA_MODIFICACION = current_timestamp;
end
^


/* Trigger: TRI_UPDATE_FACTURAS_CLIENTE */
CREATE TRIGGER TRI_UPDATE_FACTURAS_CLIENTE FOR FACTURAS_CLIENTE
ACTIVE BEFORE UPDATE POSITION 0
AS
begin
  NEW.FECHA_MODIFICACION = current_timestamp;
end
^


/* Trigger: TRI_UPDATE_FACTURAS_CLIENTE_DET */
CREATE TRIGGER TRI_UPDATE_FACTURAS_CLIENTE_DET FOR FACTURAS_CLIENTE_DETALLES
ACTIVE BEFORE UPDATE POSITION 0
AS
begin
  NEW.FECHA_MODIFICACION = current_timestamp;
end
^


/* Trigger: TRI_UPDATE_FACTURAS_PROVEEDOR */
CREATE TRIGGER TRI_UPDATE_FACTURAS_PROVEEDOR FOR FACTURAS_PROVEEDOR
ACTIVE BEFORE UPDATE POSITION 0
AS
begin
  NEW.FECHA_MODIFICACION = current_timestamp;
end
^


/* Trigger: TRI_UPDATE_FACTURAS_PROV_DET */
CREATE TRIGGER TRI_UPDATE_FACTURAS_PROV_DET FOR FACTURAS_PROVEEDOR_DETALLES
ACTIVE BEFORE UPDATE POSITION 0
AS
begin
  NEW.FECHA_MODIFICACION = current_timestamp;
end
^


/* Trigger: TRI_UPDATE_PAGOS_CLIENTE */
CREATE TRIGGER TRI_UPDATE_PAGOS_CLIENTE FOR PAGOS_CLIENTE
ACTIVE BEFORE UPDATE POSITION 0
AS
begin
  NEW.FECHA_MODIFICACION = current_timestamp;
end
^


/* Trigger: TRI_UPDATE_PAGOS_PROVEEDOR */
CREATE TRIGGER TRI_UPDATE_PAGOS_PROVEEDOR FOR PAGOS_PROVEEDOR
ACTIVE BEFORE UPDATE POSITION 0
AS
begin
  NEW.FECHA_MODIFICACION = current_timestamp;
end
^


/* Trigger: TRI_UPDATE_PEDIDOS_CLIENTE */
CREATE TRIGGER TRI_UPDATE_PEDIDOS_CLIENTE FOR PEDIDOS_CLIENTE
ACTIVE BEFORE UPDATE POSITION 0
AS
begin
  NEW.FECHA_MODIFICACION = current_timestamp;
end
^


/* Trigger: TRI_UPDATE_PEDIDOS_CLI_DET */
CREATE TRIGGER TRI_UPDATE_PEDIDOS_CLI_DET FOR PEDIDOS_CLIENTE_DETALLES
ACTIVE BEFORE UPDATE POSITION 0
AS
begin
  NEW.FECHA_MODIFICACION = current_timestamp;
end
^


/* Trigger: TRI_UPDATE_PEDIDOS_PROVEEDOR */
CREATE TRIGGER TRI_UPDATE_PEDIDOS_PROVEEDOR FOR PEDIDOS_PROVEEDOR
ACTIVE BEFORE UPDATE POSITION 0
AS
begin
  NEW.FECHA_MODIFICACION = current_timestamp;
end
^


/* Trigger: TRI_UPDATE_PEDIDOS_PROV_DET */
CREATE TRIGGER TRI_UPDATE_PEDIDOS_PROV_DET FOR PEDIDOS_PROVEEDOR_DETALLES
ACTIVE BEFORE UPDATE POSITION 0
AS
begin
  NEW.FECHA_MODIFICACION = current_timestamp;
end
^


/* Trigger: TRI_UPDATE_RECIBOS_CLIENTE */
CREATE TRIGGER TRI_UPDATE_RECIBOS_CLIENTE FOR RECIBOS_CLIENTE
ACTIVE BEFORE UPDATE POSITION 0
AS
begin
  NEW.FECHA_MODIFICACION = current_timestamp;
end
^


/* Trigger: TRI_UPDATE_RECIBOS_PROVEEDOR */
CREATE TRIGGER TRI_UPDATE_RECIBOS_PROVEEDOR FOR RECIBOS_PROVEEDOR
ACTIVE BEFORE UPDATE POSITION 0
AS
begin
  NEW.FECHA_MODIFICACION = current_timestamp;
end
^


/* Trigger: TRI_UPDATE_REMESAS_CLI */
CREATE TRIGGER TRI_UPDATE_REMESAS_CLI FOR REMESAS_CLIENTE
ACTIVE BEFORE UPDATE POSITION 0
AS
begin
  NEW.FECHA_MODIFICACION = current_timestamp;
end
^


/* Trigger: TRI_UPDATE_REMESAS_PROV */
CREATE TRIGGER TRI_UPDATE_REMESAS_PROV FOR REMESAS_PROVEEDOR
ACTIVE BEFORE UPDATE POSITION 0
AS
begin
  NEW.FECHA_MODIFICACION = current_timestamp;
end
^


SET TERM ; ^


CREATE PROCEDURE PRO_ANADIR_MARCA_IMPRESION (
    tabla varchar(255),
    id_tabla integer)
as
declare variable id integer;
begin
  select ID
  from IMPRESIONES
  where ID_TABLA = :ID_TABLA
  and TABLA = UPPER(:TABLA)
  into :ID;

  /*En el caso de que ya exista se modifica la cantidad en caso contrario se anade el elemetno*/
  if (ID > 0) then
  begin
    update IMPRESIONES
    set NUM_COPIAS = NUM_COPIAS + 1
    where ID = :ID;
  end
  else
  begin
    insert into IMPRESIONES (ID, TABLA, ID_TABLA, NUM_COPIAS)
    values (GEN_ID(GEN_IMPRESIONES_ID, 1), UPPER(:TABLA), :ID_TABLA, 1);
  end
  suspend;
end;

SET TERM ^ ;

CREATE PROCEDURE PRO_ANADIR_MARCA_ENVIO_CORREO (
    tabla varchar(255),
    id_tabla integer)
as
declare variable id integer;
begin
  select ID
  from REGISTRO_CORREOS
  where ID_TABLA = :ID_TABLA
  and TABLA = UPPER(:TABLA)
  into :ID;

  /*En el caso de que ya exista se modifica la cantidad en caso contrario se anade el elemento */
  if (ID > 0) then
  begin
    update REGISTRO_CORREOS
    set NUM_CORREOS = NUM_CORREOS + 1
    where ID = :ID;
  end
  else
  begin
    insert into REGISTRO_CORREOS (ID, TABLA, ID_TABLA, NUM_CORREOS)
    values (GEN_ID(GEN_REGISTRO_CORREOS_ID, 1), UPPER(:TABLA), :ID_TABLA, 1);
  end
  suspend;
end^

SET TERM ; ^

GRANT SELECT,INSERT,UPDATE ON REGISTRO_CORREOS TO PROCEDURE PRO_ANADIR_MARCA_ENVIO_CORREO;

GRANT EXECUTE ON PROCEDURE PRO_ANADIR_MARCA_ENVIO_CORREO TO SYSDBA;