This repository has been archived on 2024-11-28. You can view files and clone it, but cannot push or open issues or pull requests.
LuisLeon_FactuGES/script.sql
2007-06-11 17:36:55 +00:00

616 lines
18 KiB
SQL

alter table "FACTURAS_CLIENTE" drop "FECHA_PAGADO";
ALTER TABLE RECIBOS_CLIENTE
ADD FECHA_EMISION DATE;
DROP VIEW V_AGENTES_COMISIONES_DET_FAC;
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_EMISION,
FECHA_VENCIMIENTO,
DESCRIPCION,
OBSERVACIONES,
IMPORTE,
OTROS_GASTOS,
IMPORTE_TOTAL,
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_EMISION, RECIBOS_CLIENTE.FECHA_VENCIMIENTO, RECIBOS_CLIENTE.DESCRIPCION,
RECIBOS_CLIENTE.OBSERVACIONES, RECIBOS_CLIENTE.IMPORTE, RECIBOS_CLIENTE.OTROS_GASTOS,
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 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 VIEW V_REMESAS_CLIENTE(
ID,
ID_EMPRESA,
REFERENCIA,
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.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(RECIBOS_CLIENTE.IMPORTE + RECIBOS_CLIENTE.OTROS_GASTOS) 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)
GROUP BY 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16;
CREATE TABLE FACTURAS_PROVEEDOR (
ID TIPO_ID NOT NULL,
ID_EMPRESA TIPO_ID,
REFERENCIA VARCHAR(255),
REFERENCIA_PROVEEDOR VARCHAR(255),
FECHA_FACTURA DATE,
VENCIMIENTO INTEGER,
SITUACION VARCHAR(255),
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
);
ALTER TABLE FACTURAS_PROVEEDOR ADD CONSTRAINT PK_FACTURAS_PROVEEDOR PRIMARY KEY (ID);
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;
/* 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_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;
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
);
ALTER TABLE FACTURAS_PROVEEDOR_DETALLES ADD CONSTRAINT PK_FACTURAS_PROVEEDOR_DETALLES PRIMARY KEY (ID);
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;
/* Trigger: TRI_INSERT_FACTURAS_PROVEEDOR_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_UPDATE_FACTURAS_PROVEEDOR_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;
CREATE GENERATOR GEN_FACTURAS_PROVEEDOR_ID;
SET GENERATOR GEN_FACTURAS_PROVEEDOR_ID TO 1;
CREATE GENERATOR GEN_FACTURA_PROV_DETALLES_ID;
SET GENERATOR GEN_FACTURA_PROV_DETALLES_ID TO 1;
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
);
ALTER TABLE RECIBOS_PROVEEDOR ADD CONSTRAINT PK_RECIBOS_PROVEEDOR PRIMARY KEY (ID);
ALTER TABLE RECIBOS_PROVEEDOR ADD CONSTRAINT FK_RECIBOS_PROVEEDOR FOREIGN KEY (ID_FACTURA) REFERENCES FACTURAS_PROVEEDOR (ID) ON DELETE CASCADE ON UPDATE CASCADE;
/* 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_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;
CREATE GENERATOR GEN_RECIBOS_PROVEEDOR_ID;
SET GENERATOR GEN_RECIBOS_PROVEEDOR_ID TO 1;
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
);
ALTER TABLE PAGOS_PROVEEDOR ADD CONSTRAINT PK_PAGOS_PROVEEDOR PRIMARY KEY (ID);
ALTER TABLE PAGOS_PROVEEDOR ADD CONSTRAINT FK_PAGOS_PROVEEDOR FOREIGN KEY (ID_RECIBO) REFERENCES RECIBOS_PROVEEDOR (ID);
/* Trigger: TRI_INSERT_PAGOS_CLIENTE */
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_UPDATE_PAGOS_CLIENTE */
CREATE TRIGGER TRI_UPDATE_PAGOS_PROVEEDOR FOR PAGOS_PROVEEDOR
ACTIVE BEFORE UPDATE POSITION 0
AS
begin
NEW.FECHA_MODIFICACION = current_timestamp;
end;
CREATE GENERATOR GEN_PAGOS_PROVEEDOR_ID;
SET GENERATOR GEN_PAGOS_PROVEEDOR_ID TO 1;
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_RECIBOS_PROVEEDOR(
ID,
REFERENCIA,
REFERENCIA_PROVEEDOR,
SITUACION,
ID_FACTURA,
FECHA_EMISION,
FECHA_VENCIMIENTO,
DESCRIPCION,
OBSERVACIONES,
IMPORTE,
OTROS_GASTOS,
IMPORTE_TOTAL,
FECHA_FACTURA,
FORMA_PAGO_FACTURA,
IMPORTE_FACTURA,
ID_EMPRESA,
ID_PROVEEDOR,
NOMBRE_PROVEEDOR,
NIF_CIF_PROVEEDOR,
ENTIDAD_PROVEEDOR,
SUCURSAL_PROVEEDOR,
DC_PROVEEDOR,
CUENTA_PROVEEDOR,
FECHA_ALTA,
FECHA_MODIFICACION,
USUARIO)
AS
SELECT RECIBOS_PROVEEDOR.ID, RECIBOS_PROVEEDOR.REFERENCIA, RECIBOS_PROVEEDOR.REFERENCIA_PROVEEDOR,
V_REC_PRO_SITUACION.SITUACION,
RECIBOS_PROVEEDOR.ID_FACTURA,
RECIBOS_PROVEEDOR.FECHA_EMISION, RECIBOS_PROVEEDOR.FECHA_VENCIMIENTO, RECIBOS_PROVEEDOR.DESCRIPCION,
RECIBOS_PROVEEDOR.OBSERVACIONES, RECIBOS_PROVEEDOR.IMPORTE, RECIBOS_PROVEEDOR.OTROS_GASTOS,
RECIBOS_PROVEEDOR.IMPORTE + RECIBOS_PROVEEDOR.OTROS_GASTOS,
FACTURAS_PROVEEDOR.FECHA_FACTURA, FORMAS_PAGO.DESCRIPCION, FACTURAS_PROVEEDOR.IMPORTE_TOTAL,
FACTURAS_PROVEEDOR.ID_EMPRESA,
CONTACTOS.ID as ID_PROVEEDOR, CONTACTOS.NOMBRE, CONTACTOS.NIF_CIF, CONTACTOS_DATOS_BANCO.ENTIDAD,
CONTACTOS_DATOS_BANCO.SUCURSAL, CONTACTOS_DATOS_BANCO.DC, CONTACTOS_DATOS_BANCO.CUENTA,
RECIBOS_PROVEEDOR.FECHA_ALTA,
RECIBOS_PROVEEDOR.FECHA_MODIFICACION,
RECIBOS_PROVEEDOR.USUARIO
FROM V_REC_PRO_SITUACION
LEFT JOIN RECIBOS_PROVEEDOR
ON (RECIBOS_PROVEEDOR.ID = V_REC_PRO_SITUACION.ID_RECIBO)
LEFT JOIN FACTURAS_PROVEEDOR
ON (FACTURAS_PROVEEDOR.ID = RECIBOS_PROVEEDOR.ID_FACTURA)
LEFT JOIN FORMAS_PAGO
ON (FORMAS_PAGO.ID = FACTURAS_PROVEEDOR.ID_FORMA_PAGO)
LEFT JOIN CONTACTOS
ON (CONTACTOS.ID = FACTURAS_PROVEEDOR.ID_PROVEEDOR)
LEFT JOIN CONTACTOS_DATOS_BANCO
ON (CONTACTOS_DATOS_BANCO.ID_CONTACTO = CONTACTOS.ID);
/*CREAR
REF_FACTURAS_PROVEEDOR*/
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_FAC_PRO_PAGADOS(
ID_FACTURA,
NUM_REC_PAGADOS)
AS
SELECT V_RECIBOS_PROVEEDOR.ID_FACTURA, COUNT(V_RECIBOS_PROVEEDOR.ID)
FROM V_RECIBOS_PROVEEDOR
WHERE (V_RECIBOS_PROVEEDOR.SITUACION = 'PAGADO')
GROUP BY V_RECIBOS_PROVEEDOR.ID_FACTURA;
CREATE VIEW V_FAC_PRO_SITUACION(
ID_FACTURA,
SITUACION)
AS
SELECT V_REC_FAC_PRO.ID_FACTURA,
CASE
WHEN ((V_REC_FAC_PRO.NUM_RECIBOS = 0)
OR (COALESCE (V_REC_FAC_PRO_PAGADOS.NUM_REC_PAGADOS,0) = 0)) THEN 'PENDIENTE'
WHEN (V_REC_FAC_PRO.NUM_RECIBOS = COALESCE (V_REC_FAC_PRO_PAGADOS.NUM_REC_PAGADOS, 0)) THEN 'PAGADA'
ELSE 'PARCIALMENTE PAGADA'
END
FROM V_REC_FAC_PRO
LEFT JOIN V_REC_FAC_PRO_PAGADOS
ON (V_REC_FAC_PRO_PAGADOS.ID_FACTURA = V_REC_FAC_PRO.ID_FACTURA);
CREATE VIEW V_FACTURAS_PROVEEDOR(
ID,
ID_EMPRESA,
REFERENCIA,
REFERENCIA_PROVEEDOR,
FECHA_FACTURA,
SITUACION,
BASE_IMPONIBLE,
DESCUENTO,
IMPORTE_DESCUENTO,
IVA,
IMPORTE_IVA,
RE,
IMPORTE_RE,
IMPORTE_TOTAL,
OBSERVACIONES,
ID_PROVEEDOR,
NIF_CIF,
NOMBRE,
CALLE,
POBLACION,
PROVINCIA,
CODIGO_POSTAL,
FECHA_ALTA,
FECHA_MODIFICACION,
USUARIO,
ID_FORMA_PAGO,
RECARGO_EQUIVALENCIA,
ID_TIPO_IVA,
IMPORTE_NETO,
IMPORTE_PORTE)
AS
SELECT FACTURAS_PROVEEDOR.ID,
FACTURAS_PROVEEDOR.ID_EMPRESA,
FACTURAS_PROVEEDOR.REFERENCIA,
FACTURAS_PROVEEDOR.REFERENCIA_PROVEEDOR,
FACTURAS_PROVEEDOR.FECHA_FACTURA,
V_FAC_PRO_SITUACION.SITUACION,
FACTURAS_PROVEEDOR.BASE_IMPONIBLE,
FACTURAS_PROVEEDOR.DESCUENTO,
FACTURAS_PROVEEDOR.IMPORTE_DESCUENTO,
FACTURAS_PROVEEDOR.IVA,
FACTURAS_PROVEEDOR.IMPORTE_IVA,
FACTURAS_PROVEEDOR.RE,
FACTURAS_PROVEEDOR.IMPORTE_RE,
FACTURAS_PROVEEDOR.IMPORTE_TOTAL,
FACTURAS_PROVEEDOR.OBSERVACIONES,
FACTURAS_PROVEEDOR.ID_PROVEEDOR,
FACTURAS_PROVEEDOR.NIF_CIF,
FACTURAS_PROVEEDOR.NOMBRE,
FACTURAS_PROVEEDOR.CALLE,
FACTURAS_PROVEEDOR.POBLACION,
FACTURAS_PROVEEDOR.PROVINCIA,
FACTURAS_PROVEEDOR.CODIGO_POSTAL,
FACTURAS_PROVEEDOR.FECHA_ALTA,
FACTURAS_PROVEEDOR.FECHA_MODIFICACION,
FACTURAS_PROVEEDOR.USUARIO,
FACTURAS_PROVEEDOR.ID_FORMA_PAGO,
FACTURAS_PROVEEDOR.RECARGO_EQUIVALENCIA,
FACTURAS_PROVEEDOR.ID_TIPO_IVA,
FACTURAS_PROVEEDOR.IMPORTE_NETO,
FACTURAS_PROVEEDOR.IMPORTE_PORTE
FROM V_FAC_PRO_SITUACION
LEFT JOIN FACTURAS_PROVEEDOR
ON (FACTURAS_PROVEEDOR.ID = V_FAC_PRO_SITUACION.ID_FACTURA)
LEFT JOIN PROVEEDORES_DATOS
ON (PROVEEDORES_DATOS.ID_PROVEEDOR = FACTURAS_PROVEEDOR.ID_PROVEEDOR);