ALTER TABLE PROVEEDORES_DATOS 
ADD TIENDA_WEB TIPO_BOOLEANO;

UPDATE PROVEEDORES_DATOS SET
TIENDA_WEB = 0;

ALTER TABLE CLIENTES_DATOS 
ADD TIENDA_WEB TIPO_BOOLEANO;

UPDATE CLIENTES_DATOS SET
TIENDA_WEB = 0;


/***********************************************************************************************

Ahora hay que cambiar las vistas v_clientes y v_proveedores por lo que tengo que borrar
las vistas que dependen de ellas, cambiarlas y volver a rehacer las otras vistas.

***********************************************************************************************/

/* Drop the `V_CLIENTES` table with dependent objects :  */
DROP VIEW V_ALBARANES_CLIENTE;
DROP VIEW V_PEDIDOS_CLIENTE;
DROP VIEW V_CLIENTES;
/* Drop the `V_PROVEEDORES` table with dependent objects :  */
DROP VIEW V_ALBARANES_PROVEEDOR;
DROP VIEW V_PEDIDOS_PROVEEDOR;
DROP VIEW V_PROVEEDORES;

/* Definition for the `V_CLIENTES` view :  */

CREATE VIEW V_CLIENTES(
  ID,
  ID_CATEGORIA,
  NIF_CIF,
  NOMBRE,
  CALLE,
  POBLACION,
  PROVINCIA,
  CODIGO_POSTAL,
  TELEFONO_1,
  TELEFONO_2,
  MOVIL_1,
  MOVIL_2,
  FAX,
  EMAIL_1,
  EMAIL_2,
  PAGINA_WEB,
  NOTAS,
  FECHA_ALTA,
  FECHA_MODIFICACION,
  USUARIO,
  ID_EMPRESA,
  REFERENCIA,
  ID_AGENTE,
  GRUPO_CLIENTE,
  NOMBRE_COMERCIAL,
  VENCIMIENTO_FACTURAS,
  BLOQUEADO,
  REGIMEN_IVA,
  MOTIVO_BLOQUEO,
  RECARGO_EQUIVALENCIA,
  ID_TIPO_IVA,
  ID_FORMA_PAGO,
  TIENDA_WEB)
AS
SELECT
  V_CONTACTOS.ID,
  V_CONTACTOS.ID_CATEGORIA,
  V_CONTACTOS.NIF_CIF,
  V_CONTACTOS.NOMBRE,
  V_CONTACTOS.CALLE,
  V_CONTACTOS.POBLACION,
  V_CONTACTOS.PROVINCIA,
  V_CONTACTOS.CODIGO_POSTAL,
  V_CONTACTOS.TELEFONO_1,
  V_CONTACTOS.TELEFONO_2,
  V_CONTACTOS.MOVIL_1,
  V_CONTACTOS.MOVIL_2,
  V_CONTACTOS.FAX,
  V_CONTACTOS.EMAIL_1,
  V_CONTACTOS.EMAIL_2,
  V_CONTACTOS.PAGINA_WEB,
  V_CONTACTOS.NOTAS,
  V_CONTACTOS.FECHA_ALTA,
  V_CONTACTOS.FECHA_MODIFICACION,
  V_CONTACTOS.USUARIO,
  V_CONTACTOS.ID_EMPRESA,
  V_CONTACTOS.REFERENCIA,
  CLIENTES_DATOS.ID_AGENTE,
  CLIENTES_DATOS.GRUPO_CLIENTE,
  CLIENTES_DATOS.NOMBRE_COMERCIAL,
  CLIENTES_DATOS.VENCIMIENTO_FACTURAS,
  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
FROM
  V_CONTACTOS
  LEFT OUTER JOIN CLIENTES_DATOS ON (V_CONTACTOS.ID = CLIENTES_DATOS.ID_CLIENTE)
WHERE
  V_CONTACTOS.ID_CATEGORIA = 1
;

CREATE VIEW V_PEDIDOS_CLIENTE(
  ID,
  ID_EMPRESA,
  ID_CLIENTE,
  NOMBRE,
  REFERENCIA,
  SITUACION,
  FECHA_PEDIDO,
  CALLE,
  CODIGO_POSTAL,
  POBLACION,
  PROVINCIA,
  PERSONA_CONTACTO,
  TELEFONO,
  OBSERVACIONES,
  INCIDENCIAS,
  INCIDENCIAS_ACTIVAS,
  FECHA_ALTA,
  FECHA_MODIFICACION,
  USUARIO,
  IMPORTE_NETO,
  IMPORTE_PORTE,
  DESCUENTO,
  IMPORTE_DESCUENTO,
  BASE_IMPONIBLE,
  IVA,
  IMPORTE_IVA,
  IMPORTE_TOTAL,
  ID_FORMA_PAGO)
AS
SELECT
  PEDIDOS_CLIENTE.ID,
  PEDIDOS_CLIENTE.ID_EMPRESA,
  PEDIDOS_CLIENTE.ID_CLIENTE,
  V_CLIENTES.NOMBRE,
  PEDIDOS_CLIENTE.REFERENCIA,
  V_PED_CLI_SITUACION.SITUACION,
  PEDIDOS_CLIENTE.FECHA_PEDIDO,
  PEDIDOS_CLIENTE.CALLE,
  PEDIDOS_CLIENTE.CODIGO_POSTAL,
  PEDIDOS_CLIENTE.POBLACION,
  PEDIDOS_CLIENTE.PROVINCIA,
  PEDIDOS_CLIENTE.PERSONA_CONTACTO,
  PEDIDOS_CLIENTE.TELEFONO,
  PEDIDOS_CLIENTE.OBSERVACIONES,
  PEDIDOS_CLIENTE.INCIDENCIAS,
  PEDIDOS_CLIENTE.INCIDENCIAS_ACTIVAS,
  PEDIDOS_CLIENTE.FECHA_ALTA,
  PEDIDOS_CLIENTE.FECHA_MODIFICACION,
  PEDIDOS_CLIENTE.USUARIO,
  PEDIDOS_CLIENTE.IMPORTE_NETO,
  PEDIDOS_CLIENTE.IMPORTE_PORTE,
  PEDIDOS_CLIENTE.DESCUENTO,
  PEDIDOS_CLIENTE.IMPORTE_DESCUENTO,
  PEDIDOS_CLIENTE.BASE_IMPONIBLE,
  PEDIDOS_CLIENTE.IVA,
  PEDIDOS_CLIENTE.IMPORTE_IVA,
  PEDIDOS_CLIENTE.IMPORTE_TOTAL,
  PEDIDOS_CLIENTE.ID_FORMA_PAGO
FROM
  PEDIDOS_CLIENTE
  LEFT OUTER JOIN V_CLIENTES ON (PEDIDOS_CLIENTE.ID_CLIENTE = V_CLIENTES.ID)
  LEFT OUTER JOIN V_PED_CLI_SITUACION ON (V_PED_CLI_SITUACION.ID_PEDIDO = PEDIDOS_CLIENTE.ID)
;

CREATE VIEW V_ALBARANES_CLIENTE(
  ID,
  ID_EMPRESA,
  ID_CLIENTE,
  NOMBRE,
  FECHA_ALBARAN,
  REFERENCIA,
  SITUACION,
  ID_ALMACEN,
  NOMBRE_ALMACEN,
  ID_PEDIDO,
  REF_PEDIDO,
  ID_FACTURA,
  REF_FACTURA,
  CALLE,
  CODIGO_POSTAL,
  POBLACION,
  PROVINCIA,
  PERSONA_CONTACTO,
  TELEFONO,
  IMPORTE_NETO,
  IMPORTE_PORTE,
  DESCUENTO,
  IMPORTE_DESCUENTO,
  BASE_IMPONIBLE,
  IVA,
  IMPORTE_IVA,
  IMPORTE_TOTAL,
  OBSERVACIONES,
  INCIDENCIAS,
  INCIDENCIAS_ACTIVAS,
  FECHA_ALTA,
  FECHA_MODIFICACION,
  USUARIO,
  ID_FORMA_PAGO,
  FECHA_ENVIO,
  FECHA_RECEPCION)
AS
SELECT
  ALBARANES_CLIENTE.ID,
  ALBARANES_CLIENTE.ID_EMPRESA,
  ALBARANES_CLIENTE.ID_CLIENTE,
  V_CLIENTES.NOMBRE,
  ALBARANES_CLIENTE.FECHA_ALBARAN,
  ALBARANES_CLIENTE.REFERENCIA,
  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.CALLE,
  ALBARANES_CLIENTE.CODIGO_POSTAL,
  ALBARANES_CLIENTE.POBLACION,
  ALBARANES_CLIENTE.PROVINCIA,
  ALBARANES_CLIENTE.PERSONA_CONTACTO,
  ALBARANES_CLIENTE.TELEFONO,
  ALBARANES_CLIENTE.IMPORTE_NETO,
  ALBARANES_CLIENTE.IMPORTE_PORTE,
  ALBARANES_CLIENTE.DESCUENTO,
  ALBARANES_CLIENTE.IMPORTE_DESCUENTO,
  ALBARANES_CLIENTE.BASE_IMPONIBLE,
  ALBARANES_CLIENTE.IVA,
  ALBARANES_CLIENTE.IMPORTE_IVA,
  ALBARANES_CLIENTE.IMPORTE_TOTAL,
  ALBARANES_CLIENTE.OBSERVACIONES,
  ALBARANES_CLIENTE.INCIDENCIAS,
  ALBARANES_CLIENTE.INCIDENCIAS_ACTIVAS,
  ALBARANES_CLIENTE.FECHA_ALTA,
  ALBARANES_CLIENTE.FECHA_MODIFICACION,
  ALBARANES_CLIENTE.USUARIO,
  ALBARANES_CLIENTE.ID_FORMA_PAGO,
  ALBARANES_CLIENTE.FECHA_ENVIO,
  ALBARANES_CLIENTE.FECHA_RECEPCION
FROM
  ALBARANES_CLIENTE
  LEFT OUTER JOIN V_CLIENTES ON (ALBARANES_CLIENTE.ID_CLIENTE = V_CLIENTES.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 V_ALB_CLI_SITUACION ON (V_ALB_CLI_SITUACION.ID = ALBARANES_CLIENTE.ID)
  LEFT OUTER JOIN ALMACENES ON (ALMACENES.ID = ALBARANES_CLIENTE.ID_ALMACEN)
;

CREATE VIEW V_PROVEEDORES(
  ID,
  ID_CATEGORIA,
  NIF_CIF,
  NOMBRE,
  CALLE,
  POBLACION,
  PROVINCIA,
  CODIGO_POSTAL,
  TELEFONO_1,
  TELEFONO_2,
  MOVIL_1,
  MOVIL_2,
  FAX,
  EMAIL_1,
  EMAIL_2,
  PAGINA_WEB,
  NOTAS,
  FECHA_ALTA,
  FECHA_MODIFICACION,
  USUARIO,
  ID_EMPRESA,
  REFERENCIA,
  DESCUENTO,
  REGIMEN_IVA,
  ID_TIPO_IVA,
  ID_FORMA_PAGO,
  TIENDA_WEB)
AS
SELECT
  V_CONTACTOS.ID,
  V_CONTACTOS.ID_CATEGORIA,
  V_CONTACTOS.NIF_CIF,
  V_CONTACTOS.NOMBRE,
  V_CONTACTOS.CALLE,
  V_CONTACTOS.POBLACION,
  V_CONTACTOS.PROVINCIA,
  V_CONTACTOS.CODIGO_POSTAL,
  V_CONTACTOS.TELEFONO_1,
  V_CONTACTOS.TELEFONO_2,
  V_CONTACTOS.MOVIL_1,
  V_CONTACTOS.MOVIL_2,
  V_CONTACTOS.FAX,
  V_CONTACTOS.EMAIL_1,
  V_CONTACTOS.EMAIL_2,
  V_CONTACTOS.PAGINA_WEB,
  V_CONTACTOS.NOTAS,
  V_CONTACTOS.FECHA_ALTA,
  V_CONTACTOS.FECHA_MODIFICACION,
  V_CONTACTOS.USUARIO,
  V_CONTACTOS.ID_EMPRESA,
  V_CONTACTOS.REFERENCIA,
  PROVEEDORES_DATOS.DESCUENTO,
  PROVEEDORES_DATOS.REGIMEN_IVA,
  PROVEEDORES_DATOS.ID_TIPO_IVA,
  PROVEEDORES_DATOS.ID_FORMA_PAGO,
  PROVEEDORES_DATOS.TIENDA_WEB
FROM
  PROVEEDORES_DATOS
  INNER JOIN V_CONTACTOS ON (PROVEEDORES_DATOS.ID_PROVEEDOR = V_CONTACTOS.ID)
WHERE
  V_CONTACTOS.ID_CATEGORIA = 2
;

CREATE VIEW V_ALBARANES_PROVEEDOR(
  ID,
  ID_EMPRESA,
  ID_PROVEEDOR,
  NOMBRE,
  FECHA_ALBARAN,
  REFERENCIA,
  ID_ALMACEN,
  NOMBRE_ALMACEN,
  ID_PEDIDO,
  REF_PED_PROVEEDOR,
  ID_FACTURA,
  CALLE,
  CODIGO_POSTAL,
  POBLACION,
  PROVINCIA,
  PERSONA_CONTACTO,
  TELEFONO,
  IMPORTE_NETO,
  IMPORTE_PORTE,
  DESCUENTO,
  IMPORTE_DESCUENTO,
  BASE_IMPONIBLE,
  IVA,
  IMPORTE_IVA,
  IMPORTE_TOTAL,
  OBSERVACIONES,
  INCIDENCIAS,
  INCIDENCIAS_ACTIVAS,
  FECHA_ALTA,
  FECHA_MODIFICACION,
  USUARIO,
  ID_FORMA_PAGO)
AS
SELECT
  ALBARANES_PROVEEDOR.ID,
  ALBARANES_PROVEEDOR.ID_EMPRESA,
  ALBARANES_PROVEEDOR.ID_PROVEEDOR,
  V_PROVEEDORES.NOMBRE,
  ALBARANES_PROVEEDOR.FECHA_ALBARAN,
  ALBARANES_PROVEEDOR.REFERENCIA,
  ALBARANES_PROVEEDOR.ID_ALMACEN,
  ALMACENES.NOMBRE AS NOMBRE_ALMACEN,
  ALBARANES_PROVEEDOR.ID_PEDIDO,
  PEDIDOS_PROVEEDOR.REFERENCIA AS REF_PED_PROVEEDOR,
  ALBARANES_PROVEEDOR.ID_FACTURA,
  ALBARANES_PROVEEDOR.CALLE,
  ALBARANES_PROVEEDOR.CODIGO_POSTAL,
  ALBARANES_PROVEEDOR.POBLACION,
  ALBARANES_PROVEEDOR.PROVINCIA,
  ALBARANES_PROVEEDOR.PERSONA_CONTACTO,
  ALBARANES_PROVEEDOR.TELEFONO,
  ALBARANES_PROVEEDOR.IMPORTE_NETO,
  ALBARANES_PROVEEDOR.IMPORTE_PORTE,
  ALBARANES_PROVEEDOR.DESCUENTO,
  ALBARANES_PROVEEDOR.IMPORTE_DESCUENTO,
  ALBARANES_PROVEEDOR.BASE_IMPONIBLE,
  ALBARANES_PROVEEDOR.IVA,
  ALBARANES_PROVEEDOR.IMPORTE_IVA,
  ALBARANES_PROVEEDOR.IMPORTE_TOTAL,
  ALBARANES_PROVEEDOR.OBSERVACIONES,
  ALBARANES_PROVEEDOR.INCIDENCIAS,
  ALBARANES_PROVEEDOR.INCIDENCIAS_ACTIVAS,
  ALBARANES_PROVEEDOR.FECHA_ALTA,
  ALBARANES_PROVEEDOR.FECHA_MODIFICACION,
  ALBARANES_PROVEEDOR.USUARIO,
  ALBARANES_PROVEEDOR.ID_FORMA_PAGO
FROM
  ALBARANES_PROVEEDOR
  LEFT OUTER JOIN V_PROVEEDORES ON (ALBARANES_PROVEEDOR.ID_PROVEEDOR = V_PROVEEDORES.ID)
  LEFT OUTER JOIN PEDIDOS_PROVEEDOR ON (PEDIDOS_PROVEEDOR.ID = ALBARANES_PROVEEDOR.ID_PEDIDO)
  LEFT OUTER JOIN ALMACENES ON (ALMACENES.ID = ALBARANES_PROVEEDOR.ID_ALMACEN)
;

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)
AS
SELECT
  PEDIDOS_PROVEEDOR.ID,
  PEDIDOS_PROVEEDOR.ID_EMPRESA,
  PEDIDOS_PROVEEDOR.ID_PROVEEDOR,
  V_PROVEEDORES.NOMBRE,
  PEDIDOS_PROVEEDOR.REFERENCIA,
  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
FROM
  PEDIDOS_PROVEEDOR
  LEFT OUTER JOIN V_PROVEEDORES ON (PEDIDOS_PROVEEDOR.ID_PROVEEDOR = V_PROVEEDORES.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 V_PED_PROV_SITUACION ON (V_PED_PROV_SITUACION.ID_PEDIDO = PEDIDOS_PROVEEDOR.ID)
;

/***********************************************************************************************

AQUI SE ACABA

***********************************************************************************************/





INSERT INTO REFERENCIAS ("CODIGO", "VALOR", "ID_EMPRESA")
VALUES ('REF_COMISIONES', '00001', 1);

ALTER TABLE FACTURAS_CLIENTE
ADD ID_COMISION_LIQUIDADA TIPO_ID;

ALTER TABLE CONTACTOS_DIRECCIONES 
ADD  FECHA_ALTA         TIMESTAMP,
ADD FECHA_MODIFICACION TIMESTAMP;

UPDATE CONTACTOS_DIRECCIONES SET
CONTACTOS_DIRECCIONES.FECHA_ALTA = (SELECT CONTACTOS.FECHA_ALTA FROM CONTACTOS WHERE CONTACTOS.ID = CONTACTOS_DIRECCIONES.ID_CONTACTO)
WHERE CONTACTOS_DIRECCIONES.FECHA_ALTA IS NULL;

COMMIT;

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;

CREATE TRIGGER TRI_UPDATE_CONTACTOS_DIR FOR CONTACTOS_DIRECCIONES
ACTIVE BEFORE UPDATE POSITION 0
AS
begin
  NEW.FECHA_MODIFICACION = current_timestamp;
end;



ALTER TABLE CONTACTOS_DATOS_BANCO 
ADD  FECHA_ALTA         TIMESTAMP,
ADD FECHA_MODIFICACION TIMESTAMP;

UPDATE CONTACTOS_DATOS_BANCO SET
CONTACTOS_DATOS_BANCO.FECHA_ALTA = (SELECT CONTACTOS.FECHA_ALTA FROM CONTACTOS WHERE CONTACTOS.ID = CONTACTOS_DATOS_BANCO.ID_CONTACTO)
WHERE CONTACTOS_DATOS_BANCO.FECHA_ALTA IS NULL;

COMMIT;

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;

CREATE TRIGGER TRI_UPDATE_CONTACTOS_BANCO FOR CONTACTOS_DATOS_BANCO
ACTIVE BEFORE UPDATE POSITION 0
AS
begin
  NEW.FECHA_MODIFICACION = current_timestamp;
end;




ALTER TABLE FACTURAS_CLIENTE
ADD ID_COMISION_LIQUIDADA TIPO_ID;

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


ALTER TABLE EMPRESAS_DATOS_BANCO ADD CONSTRAINT PK_EMPRESAS_DATOS_BANCO PRIMARY KEY (ID);

ALTER TABLE EMPRESAS_DATOS_BANCO ADD CONSTRAINT FK_EMPRESAS_DATOS_BANCO FOREIGN KEY (ID_EMPRESA) 
REFERENCES EMPRESAS(ID) ON DELETE CASCADE ON UPDATE CASCADE;

CREATE GENERATOR GEN_EMPRESAS_DATOS_BANCO_ID;
SET GENERATOR GEN_EMPRESAS_DATOS_BANCO_ID TO 1;




ALTER TABLE REMESAS_CLIENTE ADD ID_DATOS_BANCO TIPO_ID;
ALTER TABLE REMESAS_CLIENTE DROP TITULAR;
ALTER TABLE REMESAS_CLIENTE DROP ENTIDAD;
ALTER TABLE REMESAS_CLIENTE DROP SUCURSAL;
ALTER TABLE REMESAS_CLIENTE DROP DC;
ALTER TABLE REMESAS_CLIENTE DROP CUENTA;




DROP VIEW V_FACTURAS_CLIENTE;
DROP VIEW V_FAC_CLI_SITUACION;
DROP VIEW V_REC_FAC_CLI_COBRADOS;
DROP VIEW V_RECIBOS_CLIENTE;


CREATE VIEW V_RECIBOS_CLIENTE(
  ID,
  REFERENCIA,
  SITUACION,
  ID_FACTURA,
  ID_REMESA,
  REFERENCIA_REMESA,
  FECHA_VENCIMIENTO,
  DESCRIPCION,
  OBSERVACIONES,
  IMPORTE,
  OTROS_GASTOS,
  FECHA_FACTURA,
  FORMA_PAGO_FACTURA,
  IMPORTE_FACTURA,
  ID_EMPRESA,
  ID_CLIENTE,
  NOMBRE_CLIENTE,
  NIF_CIF_CLIENTE,
  ENTIDAD_CLIENTE,
  SUCURSAL_CLIENTE,
  DC_CLIENTE,
  CUENTA_CLIENTE,
  FECHA_ALTA,
  FECHA_MODIFICACION,
  USUARIO)
AS
SELECT RECIBOS_CLIENTE.ID, RECIBOS_CLIENTE.REFERENCIA,
       V_REC_CLI_SITUACION.SITUACION,
       RECIBOS_CLIENTE.ID_FACTURA,
       RECIBOS_CLIENTE.ID_REMESA, REMESAS_CLIENTE.REFERENCIA as REFERENCIA_REMESA,
       RECIBOS_CLIENTE.FECHA_VENCIMIENTO, RECIBOS_CLIENTE.DESCRIPCION,
       RECIBOS_CLIENTE.OBSERVACIONES, RECIBOS_CLIENTE.IMPORTE, RECIBOS_CLIENTE.OTROS_GASTOS,

       FACTURAS_CLIENTE.FECHA_FACTURA, FORMAS_PAGO.DESCRIPCION, FACTURAS_CLIENTE.IMPORTE_TOTAL,
       FACTURAS_CLIENTE.ID_EMPRESA,

       CONTACTOS.ID as ID_CLIENTE, CONTACTOS.NOMBRE, CONTACTOS.NIF_CIF, CONTACTOS_DATOS_BANCO.ENTIDAD,
       CONTACTOS_DATOS_BANCO.SUCURSAL, CONTACTOS_DATOS_BANCO.DC, CONTACTOS_DATOS_BANCO.CUENTA,

       RECIBOS_CLIENTE.FECHA_ALTA,
       RECIBOS_CLIENTE.FECHA_MODIFICACION,
       RECIBOS_CLIENTE.USUARIO

FROM V_REC_CLI_SITUACION
LEFT JOIN RECIBOS_CLIENTE
ON (RECIBOS_CLIENTE.ID = V_REC_CLI_SITUACION.ID_RECIBO)
LEFT JOIN FACTURAS_CLIENTE
ON (FACTURAS_CLIENTE.ID = RECIBOS_CLIENTE.ID_FACTURA)
LEFT JOIN FORMAS_PAGO
ON (FORMAS_PAGO.ID = FACTURAS_CLIENTE.ID_FORMA_PAGO)
LEFT JOIN CONTACTOS
ON (CONTACTOS.ID = FACTURAS_CLIENTE.ID_CLIENTE)
LEFT JOIN CONTACTOS_DATOS_BANCO
ON (CONTACTOS_DATOS_BANCO.ID_CONTACTO = CONTACTOS.ID)
LEFT JOIN REMESAS_CLIENTE
ON (REMESAS_CLIENTE.ID = RECIBOS_CLIENTE.ID_REMESA)
;

CREATE VIEW V_REC_FAC_CLI_COBRADOS(
  ID_FACTURA,
  NUM_REC_COBRADOS)
AS
SELECT V_RECIBOS_CLIENTE.ID_FACTURA, COUNT(V_RECIBOS_CLIENTE.ID)
FROM V_RECIBOS_CLIENTE
WHERE (V_RECIBOS_CLIENTE.SITUACION = 'COBRADO')
GROUP BY V_RECIBOS_CLIENTE.ID_FACTURA
;


CREATE VIEW V_FAC_CLI_SITUACION(
  ID_FACTURA,
  SITUACION)
AS
SELECT V_REC_FAC_CLI.ID_FACTURA,
CASE
    WHEN ((V_REC_FAC_CLI.NUM_RECIBOS = 0)
         OR (COALESCE (V_REC_FAC_CLI_COBRADOS.NUM_REC_COBRADOS,0) = 0)) THEN 'PENDIENTE'
    WHEN (V_REC_FAC_CLI.NUM_RECIBOS = COALESCE (V_REC_FAC_CLI_COBRADOS.NUM_REC_COBRADOS, 0)) THEN 'PAGADA'
    ELSE 'PARCIALMENTE PAGADA'
END
FROM V_REC_FAC_CLI
LEFT JOIN V_REC_FAC_CLI_COBRADOS
ON (V_REC_FAC_CLI_COBRADOS.ID_FACTURA = V_REC_FAC_CLI.ID_FACTURA)
;

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
);
ALTER TABLE COMISIONES_LIQUIDADAS ADD CONSTRAINT PK_COMISIONES_LIQUIDADAS PRIMARY KEY (ID);
ALTER TABLE COMISIONES_LIQUIDADAS ADD CONSTRAINT FK_COMISIONES_LIQUIDADAS FOREIGN KEY (ID_AGENTE) REFERENCES CONTACTOS (ID);


/* 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_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;

CREATE VIEW V_FACTURAS_CLIENTE(
    ID,
    ID_EMPRESA,
    REFERENCIA,
    ID_COMISION_LIQUIDADA,
    FECHA_FACTURA,
    SITUACION,
    BASE_IMPONIBLE,
    DESCUENTO,
    IMPORTE_DESCUENTO,
    IVA,
    IMPORTE_IVA,
    RE,
    IMPORTE_RE,
    IMPORTE_TOTAL,
    OBSERVACIONES,
    ID_CLIENTE,
    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,
    ID_AGENTE,
    REFERENCIA_COMISION)
AS
SELECT FACTURAS_CLIENTE.ID,
  FACTURAS_CLIENTE.ID_EMPRESA,
  FACTURAS_CLIENTE.REFERENCIA,
  FACTURAS_CLIENTE.ID_COMISION_LIQUIDADA,
  FACTURAS_CLIENTE.FECHA_FACTURA,
  V_FAC_CLI_SITUACION.SITUACION,
  FACTURAS_CLIENTE.BASE_IMPONIBLE,
  FACTURAS_CLIENTE.DESCUENTO,
  FACTURAS_CLIENTE.IMPORTE_DESCUENTO,
  FACTURAS_CLIENTE.IVA,
  FACTURAS_CLIENTE.IMPORTE_IVA,
  FACTURAS_CLIENTE.RE,
  FACTURAS_CLIENTE.IMPORTE_RE,
  FACTURAS_CLIENTE.IMPORTE_TOTAL,
  FACTURAS_CLIENTE.OBSERVACIONES,
  FACTURAS_CLIENTE.ID_CLIENTE,
  FACTURAS_CLIENTE.NIF_CIF,
  FACTURAS_CLIENTE.NOMBRE,
  FACTURAS_CLIENTE.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
  FROM V_FAC_CLI_SITUACION
  LEFT JOIN FACTURAS_CLIENTE
  ON (FACTURAS_CLIENTE.ID = V_FAC_CLI_SITUACION.ID_FACTURA)
  LEFT JOIN COMISIONES_LIQUIDADAS
  ON (COMISIONES_LIQUIDADAS.ID = FACTURAS_CLIENTE.ID_COMISION_LIQUIDADA)
  LEFT JOIN CLIENTES_DATOS 
  ON (CLIENTES_DATOS.ID_CLIENTE = FACTURAS_CLIENTE.ID_CLIENTE);



CREATE VIEW V_AGENTES_COMISIONES_DET_FAC(
    ID_FACTURA,
    ID_EMPRESA,
    FECHA,
    REFERENCIA,
    SITUACION,
    ID_COMISION_LIQUIDADA,
    ID_CLIENTE,
    ID_AGENTE,
    ID_ARTICULO,
    ID_PROVEEDOR,
    IMPORTE_TOTAL,
    COMISION,
    IMPORTE_COMISION)
AS
SELECT V_FACTURAS_CLIENTE.ID,
       V_FACTURAS_CLIENTE.ID_EMPRESA,
       V_FACTURAS_CLIENTE.FECHA_FACTURA,
       V_FACTURAS_CLIENTE.REFERENCIA,
       V_FACTURAS_CLIENTE.SITUACION,
       V_FACTURAS_CLIENTE.ID_COMISION_LIQUIDADA,
       V_FACTURAS_CLIENTE.ID_CLIENTE,
       V_FACTURAS_CLIENTE.ID_AGENTE,

       FACTURAS_CLIENTE_DETALLES.ID_ARTICULO, ARTICULOS.ID_PROVEEDOR,
       FACTURAS_CLIENTE_DETALLES.IMPORTE_TOTAL, COALESCE(AGENTES_COMISIONES.COMISION, 0) as COMISION,

       (CASE COALESCE(AGENTES_COMISIONES.COMISION, 0) WHEN 0 THEN 0
       ELSE ((FACTURAS_CLIENTE_DETALLES.IMPORTE_TOTAL * AGENTES_COMISIONES.COMISION)/100) END) as IMPORTE_COMISION

FROM V_FACTURAS_CLIENTE
LEFT JOIN FACTURAS_CLIENTE_DETALLES ON (FACTURAS_CLIENTE_DETALLES.ID_FACTURA = V_FACTURAS_CLIENTE.ID)
LEFT JOIN ARTICULOS ON (ARTICULOS.ID = FACTURAS_CLIENTE_DETALLES.ID_ARTICULO)
LEFT JOIN AGENTES_COMISIONES
ON ((AGENTES_COMISIONES.ID_AGENTE = V_FACTURAS_CLIENTE.ID_AGENTE)
AND (AGENTES_COMISIONES.ID_PROVEEDOR = ARTICULOS.ID_PROVEEDOR));




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

ALTER TABLE TIENDA_WEB ADD CONSTRAINT PK_TIENDA_WEB PRIMARY KEY (ID);  
  
ALTER TABLE TIENDA_WEB ADD CONSTRAINT FK_EMPRESAS_TIENDA_WEB FOREIGN KEY (ID_EMPRESA)
REFERENCES EMPRESAS(ID) ON DELETE CASCADE ON UPDATE CASCADE;

CREATE GENERATOR GEN_TIENDA_WEB_ID;
SET GENERATOR GEN_TIENDA_WEB_ID TO 1;







