Tecsitel_FactuGES2/Database/Anterior/VISTAS.SQL.bak

945 lines
25 KiB
Plaintext
Raw Blame History

DROP VIEW V_FACTURAS_CLIENTE;
DROP VIEW V_PRESUPUESTOS_CLIENTE;
DROP VIEW V_ARTICULOS;
DROP VIEW V_EMPLEADOS;
DROP VIEW V_PROVEEDORES;
DROP VIEW V_CLIENTES;
DROP VIEW V_CONTACTOS;
CREATE VIEW V_CONTACTOS(
ID,
ID_CATEGORIA,
NIF_CIF,
NOMBRE,
PERSONA_CONTACTO,
CALLE,
POBLACION,
PROVINCIA,
CODIGO_POSTAL,
TELEFONO_1,
TELEFONO_2,
MOVIL_1,
MOVIL_2,
FAX,
EMAIL_1,
EMAIL_2,
PAGINA_WEB,
NOTAS,
FECHA_ALTA,
FECHA_MODIFICACION,
USUARIO,
ID_EMPRESA,
REFERENCIA)
AS
SELECT CONTACTOS.ID,
CONTACTOS_CATEGORIAS.ID_CATEGORIA,
CONTACTOS.NIF_CIF,
CONTACTOS.NOMBRE,
CONTACTOS.PERSONA_CONTACTO,
CONTACTOS.CALLE,
CONTACTOS.POBLACION,
CONTACTOS.PROVINCIA,
CONTACTOS.CODIGO_POSTAL,
CONTACTOS.TELEFONO_1,
CONTACTOS.TELEFONO_2,
CONTACTOS.MOVIL_1,
CONTACTOS.MOVIL_2,
CONTACTOS.FAX,
CONTACTOS.EMAIL_1,
CONTACTOS.EMAIL_2,
CONTACTOS.PAGINA_WEB,
CONTACTOS.NOTAS,
CONTACTOS.FECHA_ALTA,
CONTACTOS.FECHA_MODIFICACION,
CONTACTOS.USUARIO,
EMPRESAS_CONTACTOS.ID_EMPRESA,
CONTACTOS.REFERENCIA
FROM CONTACTOS
INNER JOIN CONTACTOS_CATEGORIAS ON (CONTACTOS_CATEGORIAS.ID_CONTACTO =
CONTACTOS.ID)
INNER JOIN EMPRESAS_CONTACTOS ON (EMPRESAS_CONTACTOS.ID_CONTACTO =
CONTACTOS.ID);
CREATE VIEW V_CLIENTES(
ID,
ID_CATEGORIA,
NIF_CIF,
NOMBRE,
PERSONA_CONTACTO,
CALLE,
POBLACION,
PROVINCIA,
CODIGO_POSTAL,
TELEFONO_1,
TELEFONO_2,
MOVIL_1,
MOVIL_2,
FAX,
EMAIL_1,
EMAIL_2,
PAGINA_WEB,
NOTAS,
FECHA_ALTA,
FECHA_MODIFICACION,
USUARIO,
ID_EMPRESA,
REFERENCIA,
GRUPO_CLIENTE,
NOMBRE_COMERCIAL,
VENCIMIENTO_FACTURAS,
BLOQUEADO,
REGIMEN_IVA,
MOTIVO_BLOQUEO,
RECARGO_EQUIVALENCIA,
ID_TIPO_IVA,
ID_FORMA_PAGO,
TIENDA_WEB,
CODIGO_ASIGNADO)
AS
SELECT
V_CONTACTOS.ID,
V_CONTACTOS.ID_CATEGORIA,
V_CONTACTOS.NIF_CIF,
V_CONTACTOS.NOMBRE,
V_CONTACTOS.PERSONA_CONTACTO,
V_CONTACTOS.CALLE,
V_CONTACTOS.POBLACION,
V_CONTACTOS.PROVINCIA,
V_CONTACTOS.CODIGO_POSTAL,
V_CONTACTOS.TELEFONO_1,
V_CONTACTOS.TELEFONO_2,
V_CONTACTOS.MOVIL_1,
V_CONTACTOS.MOVIL_2,
V_CONTACTOS.FAX,
V_CONTACTOS.EMAIL_1,
V_CONTACTOS.EMAIL_2,
V_CONTACTOS.PAGINA_WEB,
V_CONTACTOS.NOTAS,
V_CONTACTOS.FECHA_ALTA,
V_CONTACTOS.FECHA_MODIFICACION,
V_CONTACTOS.USUARIO,
V_CONTACTOS.ID_EMPRESA,
V_CONTACTOS.REFERENCIA,
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,
CLIENTES_DATOS.CODIGO_ASIGNADO
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_PROVEEDORES(
ID,
ID_CATEGORIA,
NIF_CIF,
NOMBRE,
PERSONA_CONTACTO,
CALLE,
POBLACION,
PROVINCIA,
CODIGO_POSTAL,
TELEFONO_1,
TELEFONO_2,
MOVIL_1,
MOVIL_2,
FAX,
EMAIL_1,
EMAIL_2,
PAGINA_WEB,
NOTAS,
FECHA_ALTA,
FECHA_MODIFICACION,
USUARIO,
ID_EMPRESA,
REFERENCIA,
DESCUENTO,
DESCRIPCION_PROVEEDOR,
CODIGO_ASIGNADO,
GRUPO_PROVEEDOR,
REGIMEN_IVA,
ID_TIPO_IVA,
ID_FORMA_PAGO,
TIENDA_WEB,
HOMOLOGADO,
CERTIFICACION)
AS
SELECT
V_CONTACTOS.ID,
V_CONTACTOS.ID_CATEGORIA,
V_CONTACTOS.NIF_CIF,
V_CONTACTOS.NOMBRE,
V_CONTACTOS.PERSONA_CONTACTO,
V_CONTACTOS.CALLE,
V_CONTACTOS.POBLACION,
V_CONTACTOS.PROVINCIA,
V_CONTACTOS.CODIGO_POSTAL,
V_CONTACTOS.TELEFONO_1,
V_CONTACTOS.TELEFONO_2,
V_CONTACTOS.MOVIL_1,
V_CONTACTOS.MOVIL_2,
V_CONTACTOS.FAX,
V_CONTACTOS.EMAIL_1,
V_CONTACTOS.EMAIL_2,
V_CONTACTOS.PAGINA_WEB,
V_CONTACTOS.NOTAS,
V_CONTACTOS.FECHA_ALTA,
V_CONTACTOS.FECHA_MODIFICACION,
V_CONTACTOS.USUARIO,
V_CONTACTOS.ID_EMPRESA,
V_CONTACTOS.REFERENCIA,
PROVEEDORES_DATOS.DESCUENTO,
PROVEEDORES_DATOS.DESCRIPCION_PROVEEDOR,
PROVEEDORES_DATOS.CODIGO_ASIGNADO,
PROVEEDORES_DATOS.GRUPO_PROVEEDOR,
PROVEEDORES_DATOS.REGIMEN_IVA,
PROVEEDORES_DATOS.ID_TIPO_IVA,
PROVEEDORES_DATOS.ID_FORMA_PAGO,
PROVEEDORES_DATOS.TIENDA_WEB,
PROVEEDORES_DATOS.HOMOLOGADO,
PROVEEDORES_DATOS.CERTIFICACION
FROM
PROVEEDORES_DATOS
INNER JOIN V_CONTACTOS ON (PROVEEDORES_DATOS.ID_PROVEEDOR = V_CONTACTOS.ID)
WHERE
V_CONTACTOS.ID_CATEGORIA = 2;
CREATE VIEW V_EMPLEADOS(
ID,
ID_CATEGORIA,
NIF_CIF,
NOMBRE,
PERSONA_CONTACTO,
CALLE,
POBLACION,
PROVINCIA,
CODIGO_POSTAL,
TELEFONO_1,
TELEFONO_2,
MOVIL_1,
MOVIL_2,
FAX,
EMAIL_1,
EMAIL_2,
PAGINA_WEB,
NOTAS,
FECHA_ALTA,
FECHA_MODIFICACION,
USUARIO,
ID_EMPRESA,
REFERENCIA,
FECHA_NACIMIENTO,
CATEGORIA,
FECHA_ALTA_EMPRESA,
FORMACION_BASE,
FORMACION_COMPLE,
FORMACION_RECIBIDA,
EXPERIENCIA)
AS
SELECT V_CONTACTOS.ID,
V_CONTACTOS.ID_CATEGORIA,
V_CONTACTOS.NIF_CIF,
V_CONTACTOS.NOMBRE,
V_CONTACTOS.PERSONA_CONTACTO,
V_CONTACTOS.CALLE,
V_CONTACTOS.POBLACION,
V_CONTACTOS.PROVINCIA,
V_CONTACTOS.CODIGO_POSTAL,
V_CONTACTOS.TELEFONO_1,
V_CONTACTOS.TELEFONO_2,
V_CONTACTOS.MOVIL_1,
V_CONTACTOS.MOVIL_2,
V_CONTACTOS.FAX,
V_CONTACTOS.EMAIL_1,
V_CONTACTOS.EMAIL_2,
V_CONTACTOS.PAGINA_WEB,
V_CONTACTOS.NOTAS,
V_CONTACTOS.FECHA_ALTA,
V_CONTACTOS.FECHA_MODIFICACION,
V_CONTACTOS.USUARIO,
V_CONTACTOS.ID_EMPRESA,
V_CONTACTOS.REFERENCIA,
EMPLEADOS_DATOS.FECHA_NACIMIENTO,
EMPLEADOS_DATOS.CATEGORIA,
EMPLEADOS_DATOS.FECHA_ALTA_EMPRESA,
EMPLEADOS_DATOS.FORMACION_BASE,
EMPLEADOS_DATOS.FORMACION_COMPLE,
EMPLEADOS_DATOS.FORMACION_RECIBIDA,
EMPLEADOS_DATOS.EXPERIENCIA
FROM V_CONTACTOS
INNER JOIN EMPLEADOS_DATOS ON (EMPLEADOS_DATOS.ID_EMPLEADO = V_CONTACTOS.ID)
WHERE V_CONTACTOS.ID_CATEGORIA = 3;
CREATE VIEW V_ARTICULOS(
ID, ID_EMPRESA, REFERENCIA, DESCRIPCION,
FAMILIA, IMAGEN, COMISIONABLE, FECHA_ALTA,
FECHA_MODIFICACION, USUARIO,
REFERENCIA_PROV,
PRECIO_COSTE,
PRECIO_PORTE,
DESCUENTO,
PRECIO_NETO,
INVENTARIABLE,
ID_PROVEEDOR,
NOMBRE_PROVEEDOR,
ELIMINADO)
AS
SELECT ARTICULOS.ID, ARTICULOS.ID_EMPRESA, ARTICULOS.REFERENCIA, ARTICULOS.DESCRIPCION,
ARTICULOS.FAMILIA, ARTICULOS.IMAGEN, ARTICULOS.COMISIONABLE, ARTICULOS.FECHA_ALTA,
ARTICULOS.FECHA_MODIFICACION, ARTICULOS.USUARIO,
ARTICULOS.REFERENCIA_PROV,
ARTICULOS.PRECIO_COSTE,
ARTICULOS.PRECIO_PORTE,
ARTICULOS.DESCUENTO,
ARTICULOS.PRECIO_NETO,
ARTICULOS.INVENTARIABLE,
ARTICULOS.ID_PROVEEDOR,
CONTACTOS.NOMBRE AS NOMBRE_PROVEEDOR,
ARTICULOS.ELIMINADO
FROM ARTICULOS
LEFT OUTER JOIN CONTACTOS ON (CONTACTOS.ID = ARTICULOS.ID_PROVEEDOR)
WHERE (ARTICULOS.ELIMINADO = 0);
CREATE VIEW V_PRESUPUESTOS_CLIENTE(
ID,
ID_EMPRESA,
FECHA_PRESUPUESTO,
FECHA_DECISION,
REFERENCIA,
SITUACION,
ID_CLIENTE,
NIF_CIF,
NOMBRE,
REFERENCIA_CLIENTE,
CLIENTE_FINAL,
PORTADA,
MEMORIA,
OBSERVACIONES,
INCIDENCIAS,
INCIDENCIAS_ACTIVAS,
FECHA_ALTA,
FECHA_MODIFICACION,
USUARIO,
IMPORTE_NETO,
IMPORTE_PORTE,
DESCUENTO,
IMPORTE_DESCUENTO,
BASE_IMPONIBLE,
IVA,
IMPORTE_IVA,
IMPORTE_TOTAL,
ID_FORMA_PAGO)
AS
SELECT
PRESUPUESTOS_CLIENTE.ID,
PRESUPUESTOS_CLIENTE.ID_EMPRESA,
PRESUPUESTOS_CLIENTE.FECHA_PRESUPUESTO,
PRESUPUESTOS_CLIENTE.FECHA_DECISION,
PRESUPUESTOS_CLIENTE.REFERENCIA,
PRESUPUESTOS_CLIENTE.SITUACION,
PRESUPUESTOS_CLIENTE.ID_CLIENTE,
V_CLIENTES.NIF_CIF,
V_CLIENTES.NOMBRE,
PRESUPUESTOS_CLIENTE.REFERENCIA_CLIENTE,
PRESUPUESTOS_CLIENTE.CLIENTE_FINAL,
PRESUPUESTOS_CLIENTE.PORTADA,
PRESUPUESTOS_CLIENTE.MEMORIA,
PRESUPUESTOS_CLIENTE.OBSERVACIONES,
PRESUPUESTOS_CLIENTE.INCIDENCIAS,
PRESUPUESTOS_CLIENTE.INCIDENCIAS_ACTIVAS,
PRESUPUESTOS_CLIENTE.FECHA_ALTA,
PRESUPUESTOS_CLIENTE.FECHA_MODIFICACION,
PRESUPUESTOS_CLIENTE.USUARIO,
PRESUPUESTOS_CLIENTE.IMPORTE_NETO,
PRESUPUESTOS_CLIENTE.IMPORTE_PORTE,
PRESUPUESTOS_CLIENTE.DESCUENTO,
PRESUPUESTOS_CLIENTE.IMPORTE_DESCUENTO,
PRESUPUESTOS_CLIENTE.BASE_IMPONIBLE,
PRESUPUESTOS_CLIENTE.IVA,
PRESUPUESTOS_CLIENTE.IMPORTE_IVA,
PRESUPUESTOS_CLIENTE.IMPORTE_TOTAL,
PRESUPUESTOS_CLIENTE.ID_FORMA_PAGO
FROM
PRESUPUESTOS_CLIENTE
LEFT OUTER JOIN V_CLIENTES ON (PRESUPUESTOS_CLIENTE.ID_CLIENTE = V_CLIENTES.ID)
/* Situaci<63>n de los albaranes de cliente */
CREATE VIEW V_ALB_CLI_SITUACION(
ID,
SITUACION)
AS
SELECT ALBARANES_CLIENTE.ID,
case when (FECHA_RECEPCION is not null) then 'SERVIDO'
when (FECHA_ENVIO is null) then 'PENDIENTE'
when (FECHA_ENVIO <= current_date) then 'ENVIADO'
when (FECHA_ENVIO > current_date) then 'PENDIENTE'
else 'N/A'
end as SITUACION
FROM ALBARANES_CLIENTE;
CREATE VIEW V_ALBARANES_CLIENTE(
ID,
ID_EMPRESA,
ID_CLIENTE,
NOMBRE,
FECHA_ALBARAN,
REFERENCIA,
REFERENCIA_CLIENTE,
TIPO,
SITUACION,
ID_ALMACEN,
NOMBRE_ALMACEN,
ID_PEDIDO,
REF_PEDIDO,
ID_FACTURA,
REF_FACTURA,
CALLE,
CODIGO_POSTAL,
POBLACION,
PROVINCIA,
PERSONA_CONTACTO,
TELEFONO,
IMPORTE_NETO,
IMPORTE_PORTE,
DESCUENTO,
IMPORTE_DESCUENTO,
BASE_IMPONIBLE,
IVA,
IMPORTE_IVA,
IMPORTE_TOTAL,
OBSERVACIONES,
INCIDENCIAS,
INCIDENCIAS_ACTIVAS,
FECHA_ALTA,
FECHA_MODIFICACION,
USUARIO,
ID_FORMA_PAGO,
FECHA_PREVISTA_ENVIO,
FECHA_ENVIO,
FECHA_RECEPCION)
AS
SELECT
ALBARANES_CLIENTE.ID,
ALBARANES_CLIENTE.ID_EMPRESA,
ALBARANES_CLIENTE.ID_CLIENTE,
CONTACTOS.NOMBRE,
ALBARANES_CLIENTE.FECHA_ALBARAN,
ALBARANES_CLIENTE.REFERENCIA,
ALBARANES_CLIENTE.REFERENCIA_CLIENTE,
CASE WHEN (ALBARANES_CLIENTE.IMPORTE_TOTAL < 0) THEN 'D' ELSE 'A' END AS TIPO,
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_PREVISTA_ENVIO,
ALBARANES_CLIENTE.FECHA_ENVIO,
ALBARANES_CLIENTE.FECHA_RECEPCION
FROM
ALBARANES_CLIENTE
LEFT OUTER JOIN CONTACTOS ON (CONTACTOS.ID = ALBARANES_CLIENTE.ID_CLIENTE)
LEFT OUTER JOIN PEDIDOS_CLIENTE ON (PEDIDOS_CLIENTE.ID = ALBARANES_CLIENTE.ID_PEDIDO)
LEFT OUTER JOIN FACTURAS_CLIENTE ON (FACTURAS_CLIENTE.ID = ALBARANES_CLIENTE.ID_FACTURA)
LEFT OUTER JOIN V_ALB_CLI_SITUACION ON (V_ALB_CLI_SITUACION.ID = ALBARANES_CLIENTE.ID)
LEFT OUTER JOIN ALMACENES ON (ALMACENES.ID = ALBARANES_CLIENTE.ID_ALMACEN);
/*FACTURAS Y RECIBOS DE CLIENTE*/
DROP VIEW V_FACTURAS_CLIENTE;
DROP VIEW V_FAC_CLI_SITUACION;
DROP VIEW V_REC_FAC_CLI_COBRADOS
DROP VIEW V_RECIBOS_CLIENTE;
DROP VIEW V_REC_FAC_CLI;
DROP VIEW V_REC_CLI_SITUACION;
DROP VIEW V_REC_CLI_COMPENSADOS;
CREATE VIEW V_REC_FAC_CLI(
ID_FACTURA,
NUM_RECIBOS)
AS
SELECT FACTURAS_CLIENTE.ID, COUNT(RECIBOS_CLIENTE.ID)
FROM FACTURAS_CLIENTE
LEFT JOIN RECIBOS_CLIENTE
ON (RECIBOS_CLIENTE.ID_FACTURA = FACTURAS_CLIENTE.ID)
GROUP BY FACTURAS_CLIENTE.ID;
CREATE VIEW V_REC_CLI_SITUACION(
ID_RECIBO,
SITUACION)
AS
SELECT RECIBOS_CLIENTE.ID,
CASE WHEN (COUNT(PAGOS_CLIENTE.ID_RECIBO)=0) THEN 'PENDIENTE'
WHEN (MOD(COUNT(PAGOS_CLIENTE.ID_RECIBO), 2)=0) THEN 'DEVUELTO'
ELSE 'COBRADO'
END
FROM RECIBOS_CLIENTE
LEFT JOIN PAGOS_CLIENTE
ON (PAGOS_CLIENTE.ID_RECIBO = RECIBOS_CLIENTE.ID)
GROUP BY RECIBOS_CLIENTE.ID;
CREATE VIEW V_REC_CLI_COMPENSADOS (
ID_RECIBO,
IMPORTE_TOTAL_COMPENSADO
) as
select ID_RECIBO_COMPENSADO, SUM((IMPORTE + OTROS_GASTOS)) as IMPORTE_TOTAL
from RECIBOS_CLIENTE
where ID_RECIBO_COMPENSADO is not null
group by ID_RECIBO_COMPENSADO;
CREATE VIEW V_RECIBOS_CLIENTE(
ID,
ID_RECIBO_COMPENSADO,
REFERENCIA_REC_COMPENSADO,
REFERENCIA,
SITUACION,
ID_FACTURA,
ID_REMESA,
REFERENCIA_REMESA,
FECHA_EMISION,
FECHA_VENCIMIENTO,
DESCRIPCION,
OBSERVACIONES,
IMPORTE,
OTROS_GASTOS,
IMPORTE_TOTAL,
FECHA_FACTURA,
FORMA_PAGO_FACTURA,
IMPORTE_FACTURA,
ID_EMPRESA,
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.ID_RECIBO_COMPENSADO,
RECIBO_COMPENSADO1.REFERENCIA,
RECIBOS_CLIENTE.REFERENCIA,
CASE
WHEN RECIBOS_CLIENTE.ID_RECIBO_COMPENSADO IS NULL
THEN V_REC_CLI_SITUACION.SITUACION
ELSE RECIBO_COMPENSADO2.SITUACION
END,
RECIBOS_CLIENTE.ID_FACTURA,
RECIBOS_CLIENTE.ID_REMESA, REMESAS_CLIENTE.REFERENCIA as REFERENCIA_REMESA,
RECIBOS_CLIENTE.FECHA_EMISION, RECIBOS_CLIENTE.FECHA_VENCIMIENTO, RECIBOS_CLIENTE.DESCRIPCION,
RECIBOS_CLIENTE.OBSERVACIONES, RECIBOS_CLIENTE.IMPORTE, RECIBOS_CLIENTE.OTROS_GASTOS,
COALESCE(RECIBOS_CLIENTE.IMPORTE, 0) + COALESCE(RECIBOS_CLIENTE.OTROS_GASTOS, 0) + COALESCE(V_REC_CLI_COMPENSADOS.IMPORTE_TOTAL_COMPENSADO, 0),
FACTURAS_CLIENTE.FECHA_FACTURA, FORMAS_PAGO.DESCRIPCION, FACTURAS_CLIENTE.IMPORTE_TOTAL,
FACTURAS_CLIENTE.ID_EMPRESA,
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 RECIBOS_CLIENTE
LEFT JOIN V_REC_CLI_SITUACION
ON (V_REC_CLI_SITUACION.ID_RECIBO = RECIBOS_CLIENTE.ID)
LEFT JOIN FACTURAS_CLIENTE
ON (FACTURAS_CLIENTE.ID = RECIBOS_CLIENTE.ID_FACTURA)
LEFT JOIN FORMAS_PAGO
ON (FORMAS_PAGO.ID = FACTURAS_CLIENTE.ID_FORMA_PAGO)
LEFT JOIN CONTACTOS
ON (CONTACTOS.ID = FACTURAS_CLIENTE.ID_CLIENTE)
LEFT JOIN CONTACTOS_DATOS_BANCO
ON (CONTACTOS_DATOS_BANCO.ID_CONTACTO = CONTACTOS.ID)
LEFT JOIN REMESAS_CLIENTE
ON (REMESAS_CLIENTE.ID = RECIBOS_CLIENTE.ID_REMESA)
LEFT JOIN V_REC_CLI_COMPENSADOS
ON (V_REC_CLI_COMPENSADOS.ID_RECIBO = RECIBOS_CLIENTE.ID)
LEFT JOIN RECIBOS_CLIENTE RECIBO_COMPENSADO1
ON (RECIBO_COMPENSADO1.ID = RECIBOS_CLIENTE.ID_RECIBO_COMPENSADO)
LEFT JOIN V_REC_CLI_SITUACION RECIBO_COMPENSADO2
ON (RECIBO_COMPENSADO2.ID_RECIBO = RECIBOS_CLIENTE.ID_RECIBO_COMPENSADO);
CREATE VIEW V_REC_FAC_CLI_COBRADOS(
ID_FACTURA,
NUM_REC_COBRADOS)
AS
SELECT RECIBOS_CLIENTE.ID_FACTURA, COUNT(V_REC_CLI_SITUACION.ID_RECIBO)
FROM V_REC_CLI_SITUACION LEFT JOIN RECIBOS_CLIENTE ON
(RECIBOS_CLIENTE.ID = V_REC_CLI_SITUACION.ID_RECIBO)
WHERE (V_REC_CLI_SITUACION.SITUACION = 'COBRADO')
GROUP BY RECIBOS_CLIENTE.ID_FACTURA
;
CREATE VIEW V_FAC_CLI_SITUACION(
ID_FACTURA,
SITUACION)
AS
SELECT ID_FACTURA,
CASE
WHEN ((SUM(NUM_RECIBOS) = 0)
OR (SUM(NUM_REC_COBRADOS) = 0)) THEN 'PENDIENTE'
WHEN (SUM(NUM_RECIBOS) = SUM(NUM_REC_COBRADOS)) THEN 'PAGADA'
ELSE 'PARCIALMENTE PAGADA'
END AS SITUACION
FROM
(
SELECT ID_FACTURA, NUM_RECIBOS, 0 AS NUM_REC_COBRADOS
FROM V_REC_FAC_CLI
UNION ALL
SELECT ID_FACTURA, 0 AS NUM_RECIBOS, NUM_REC_COBRADOS
FROM V_REC_FAC_CLI_COBRADOS
)
GROUP BY ID_FACTURA;
CREATE VIEW V_FACTURAS_CLIENTE(
ID,
ID_EMPRESA,
REFERENCIA,
TIPO,
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,
CASE WHEN (FACTURAS_CLIENTE.IMPORTE_TOTAL < 0) THEN 'A' ELSE 'F' END AS TIPO,
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);
/*FACTURAS Y RECIBOS DE PROVEEDOR*/
DROP VIEW V_FACTURAS_PROVEEDOR;
DROP VIEW V_FAC_PRO_SITUACION;
DROP VIEW V_REC_FAC_PRO_PAGADOS;
DROP VIEW V_RECIBOS_PROVEEDOR;
DROP VIEW V_REC_FAC_PRO;
DROP VIEW V_REC_PRO_SITUACION;
DROP VIEW V_REC_PRO_COMPENSADOS;
CREATE VIEW V_REC_PRO_COMPENSADOS (
ID_RECIBO,
IMPORTE_TOTAL_COMPENSADO
) as
select ID_RECIBO_COMPENSADO, SUM((IMPORTE + OTROS_GASTOS)) as IMPORTE_TOTAL
from RECIBOS_PROVEEDOR
where ID_RECIBO_COMPENSADO is not null
group by ID_RECIBO_COMPENSADO;
CREATE VIEW V_REC_PRO_SITUACION(
ID_RECIBO,
SITUACION)
AS
SELECT RECIBOS_PROVEEDOR.ID,
CASE WHEN (COUNT(PAGOS_PROVEEDOR.ID_RECIBO)=0) THEN 'PENDIENTE'
WHEN (MOD(COUNT(PAGOS_PROVEEDOR.ID_RECIBO), 2)=0) THEN 'DEVUELTO'
ELSE 'PAGADO'
END
FROM RECIBOS_PROVEEDOR
LEFT JOIN PAGOS_PROVEEDOR
ON (PAGOS_PROVEEDOR.ID_RECIBO = RECIBOS_PROVEEDOR.ID)
GROUP BY RECIBOS_PROVEEDOR.ID;
CREATE VIEW V_REC_FAC_PRO(
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_RECIBOS_PROVEEDOR(
ID,
ID_RECIBO_COMPENSADO,
REFERENCIA_REC_COMPENSADO,
REFERENCIA,
REFERENCIA_PROVEEDOR,
SITUACION,
ID_FACTURA,
ID_REMESA,
REFERENCIA_REMESA,
FECHA_EMISION,
FECHA_VENCIMIENTO,
DESCRIPCION,
OBSERVACIONES,
IMPORTE,
OTROS_GASTOS,
IMPORTE_TOTAL,
REFERENCIA_FACTURA_PROV,
FECHA_FACTURA,
FORMA_PAGO_FACTURA,
IMPORTE_FACTURA,
ID_EMPRESA,
ID_PROVEEDOR,
NOMBRE_PROVEEDOR,
NIF_CIF_PROVEEDOR,
ENTIDAD_PROVEEDOR,
SUCURSAL_PROVEEDOR,
DC_PROVEEDOR,
CUENTA_PROVEEDOR,
FECHA_ALTA,
FECHA_MODIFICACION,
USUARIO)
AS
SELECT RECIBOS_PROVEEDOR.ID,
RECIBOS_PROVEEDOR.ID_RECIBO_COMPENSADO,
RECIBO_COMPENSADO1.REFERENCIA,
RECIBOS_PROVEEDOR.REFERENCIA,
RECIBOS_PROVEEDOR.REFERENCIA_PROVEEDOR,
CASE
WHEN RECIBOS_PROVEEDOR.ID_RECIBO_COMPENSADO IS NULL
THEN V_REC_PRO_SITUACION.SITUACION
ELSE RECIBO_COMPENSADO2.SITUACION
END,
RECIBOS_PROVEEDOR.ID_FACTURA,
RECIBOS_PROVEEDOR.ID_REMESA, REMESAS_PROVEEDOR.REFERENCIA as REFERENCIA_REMESA,
RECIBOS_PROVEEDOR.FECHA_EMISION, RECIBOS_PROVEEDOR.FECHA_VENCIMIENTO, RECIBOS_PROVEEDOR.DESCRIPCION,
RECIBOS_PROVEEDOR.OBSERVACIONES, RECIBOS_PROVEEDOR.IMPORTE, RECIBOS_PROVEEDOR.OTROS_GASTOS,
COALESCE(RECIBOS_PROVEEDOR.IMPORTE, 0) + COALESCE(RECIBOS_PROVEEDOR.OTROS_GASTOS, 0) + COALESCE(V_REC_PRO_COMPENSADOS.IMPORTE_TOTAL_COMPENSADO, 0),
FACTURAS_PROVEEDOR.REFERENCIA_PROVEEDOR, FACTURAS_PROVEEDOR.FECHA_FACTURA,
FORMAS_PAGO.DESCRIPCION, FACTURAS_PROVEEDOR.IMPORTE_TOTAL,
FACTURAS_PROVEEDOR.ID_EMPRESA,
CONTACTOS.ID as ID_PROVEEDOR, CONTACTOS.NOMBRE, CONTACTOS.NIF_CIF, CONTACTOS_DATOS_BANCO.ENTIDAD,
CONTACTOS_DATOS_BANCO.SUCURSAL, CONTACTOS_DATOS_BANCO.DC, CONTACTOS_DATOS_BANCO.CUENTA,
RECIBOS_PROVEEDOR.FECHA_ALTA,
RECIBOS_PROVEEDOR.FECHA_MODIFICACION,
RECIBOS_PROVEEDOR.USUARIO
FROM RECIBOS_PROVEEDOR
LEFT JOIN V_REC_PRO_SITUACION
ON (V_REC_PRO_SITUACION.ID_RECIBO = RECIBOS_PROVEEDOR.ID)
LEFT JOIN FACTURAS_PROVEEDOR
ON (FACTURAS_PROVEEDOR.ID = RECIBOS_PROVEEDOR.ID_FACTURA)
LEFT JOIN FORMAS_PAGO
ON (FORMAS_PAGO.ID = FACTURAS_PROVEEDOR.ID_FORMA_PAGO)
LEFT JOIN CONTACTOS
ON (CONTACTOS.ID = FACTURAS_PROVEEDOR.ID_PROVEEDOR)
LEFT JOIN CONTACTOS_DATOS_BANCO
ON (CONTACTOS_DATOS_BANCO.ID_CONTACTO = CONTACTOS.ID)
LEFT JOIN REMESAS_PROVEEDOR
ON (REMESAS_PROVEEDOR.ID = RECIBOS_PROVEEDOR.ID_REMESA)
LEFT JOIN V_REC_PRO_COMPENSADOS
ON (V_REC_PRO_COMPENSADOS.ID_RECIBO = RECIBOS_PROVEEDOR.ID)
LEFT JOIN RECIBOS_PROVEEDOR RECIBO_COMPENSADO1
ON (RECIBO_COMPENSADO1.ID = RECIBOS_PROVEEDOR.ID_RECIBO_COMPENSADO)
LEFT JOIN V_REC_PRO_SITUACION RECIBO_COMPENSADO2
ON (RECIBO_COMPENSADO2.ID_RECIBO = RECIBOS_PROVEEDOR.ID_RECIBO_COMPENSADO);
CREATE VIEW V_REC_FAC_PRO_PAGADOS(
ID_FACTURA,
NUM_REC_PAGADOS)
AS
SELECT RECIBOS_PROVEEDOR.ID_FACTURA, COUNT(V_REC_PRO_SITUACION.ID_RECIBO)
FROM V_REC_PRO_SITUACION LEFT JOIN RECIBOS_PROVEEDOR ON
(RECIBOS_PROVEEDOR.ID = V_REC_PRO_SITUACION.ID_RECIBO)
WHERE (V_REC_PRO_SITUACION.SITUACION = 'PAGADO')
GROUP BY RECIBOS_PROVEEDOR.ID_FACTURA;
CREATE VIEW V_FAC_PRO_SITUACION(
ID_FACTURA,
SITUACION)
AS
SELECT ID_FACTURA,
CASE
WHEN ((SUM(NUM_RECIBOS) = 0)
OR (SUM(NUM_REC_PAGADOS) = 0)) THEN 'PENDIENTE'
WHEN (SUM(NUM_RECIBOS) = SUM(NUM_REC_PAGADOS)) THEN 'PAGADA'
ELSE 'PARCIALMENTE PAGADA'
END AS SITUACION
FROM
(
SELECT ID_FACTURA, NUM_RECIBOS, 0 AS NUM_REC_PAGADOS
FROM V_REC_FAC_PRO
UNION ALL
SELECT ID_FACTURA, 0 AS NUM_RECIBOS, NUM_REC_PAGADOS
FROM V_REC_FAC_PRO_PAGADOS
)
GROUP BY ID_FACTURA;
CREATE VIEW V_FACTURAS_PROVEEDOR(
ID,
ID_EMPRESA,
REFERENCIA,
TIPO,
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,
CASE WHEN (FACTURAS_PROVEEDOR.IMPORTE_TOTAL < 0) THEN 'A' ELSE 'F' END AS TIPO,
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);