Se quitan las vistas que ya no son necesarias para el los informes de margen

git-svn-id: https://192.168.0.254/svn/Proyectos.LuisLeon_FactuGES/trunk@136 c93665c3-c93d-084d-9b98-7d5f4a9c3376
This commit is contained in:
roberto 2007-08-21 16:17:05 +00:00
parent e86b8adb5c
commit 670350fbac

View File

@ -1,9 +1,12 @@
DROP VIEW V_INF_VENTAS_ARTICULOS;
DROP VIEW V_INF_MARGEN_ARTICULOS;
DROP VIEW V_INF_MARGEN_COMPRAS;
DROP VIEW V_INF_MARGEN_VENTAS;
DROP VIEW V_INF_PROMEDIO_COMPRA;
DROP VIEW V_INF_PROMEDIO_VENTA;
DROP VIEW V_INF_VENTAS_ARTICULOS;
DROP VIEW V_INF_ULTIMA_COMPRA;
DROP VIEW V_INF_ULTIMA_VENTA;
DROP VIEW V_INF_FEC_ULTIMA_COMPRA;
@ -2369,354 +2372,6 @@ and (facturas_cliente.FECHA_FACTURA = v_inf_fec_ultima_venta.fecha) /*nos quedam
group by 1, 2, 3;
CREATE VIEW V_INF_PROMEDIO_COMPRA(
ID_EMPRESA,
ID_ARTICULO,
IMPORTE_UNIDAD_COMPRA,
IMPORTE_NETO_COMPRA,
IMPORTE_PORTE_COMPRA)
AS
select
facturas_proveedor.id_empresa,
facturas_proveedor_detalles.ID_ARTICULO,
avg(facturas_proveedor_detalles.IMPORTE_UNIDAD) as IMPORTE_UNIDAD_COMPRA,
avg(facturas_proveedor_detalles.IMPORTE_UNIDAD - (facturas_proveedor_detalles.IMPORTE_UNIDAD * (facturas_proveedor_detalles.DESCUENTO / 100))) AS IMPORTE_NETO_COMPRA,
avg(facturas_proveedor_detalles.IMPORTE_PORTE) as IMPORTE_PORTE_COMPRA
from facturas_proveedor_detalles
left outer join facturas_proveedor
on (facturas_proveedor.id = facturas_proveedor_detalles.id_factura)
WHERE (facturas_proveedor_detalles.ID_ARTICULO IS NOT NULL) AND (facturas_proveedor_detalles.ID_ARTICULO > 0) /*Quitamos conceptos libres*/
and (facturas_proveedor_detalles.cantidad > 0) /*Quitamos los abonos*/
group by 1, 2;
CREATE VIEW V_INF_PROMEDIO_VENTA(
ID_EMPRESA,
ID_CLIENTE,
ID_ARTICULO,
IMPORTE_UNIDAD_VENTA,
IMPORTE_NETO_VENTA,
IMPORTE_PORTE_VENTA)
AS
select
facturas_cliente.id_empresa,
facturas_cliente.id_cliente,
facturas_cliente_detalles.ID_ARTICULO,
avg(facturas_cliente_detalles.IMPORTE_UNIDAD) as IMPORTE_UNIDAD_VENTA,
avg(facturas_cliente_detalles.IMPORTE_UNIDAD - (facturas_cliente_detalles.IMPORTE_UNIDAD * (facturas_cliente_detalles.DESCUENTO / 100))) AS IMPORTE_NETO_VENTA,
avg(facturas_cliente_detalles.IMPORTE_PORTE) as IMPORTE_PORTE_VENTA
from facturas_cliente_detalles
left outer join facturas_cliente
on (facturas_cliente.id = facturas_cliente_detalles.id_factura)
WHERE (facturas_cliente_detalles.ID_ARTICULO IS NOT NULL) AND (facturas_cliente_detalles.ID_ARTICULO > 0) /*Quitamos conceptos libres*/
and (facturas_cliente_detalles.cantidad > 0) /*Quitamos los abonos*/
group by 1, 2, 3;
CREATE VIEW V_INF_MARGEN_COMPRAS(
ID_EMPRESA,
ID_ARTICULO,
IMPORTE_UNIDAD_ULT_COMP,
IMPORTE_NETO_ULT_COMP,
IMPORTE_PORTE_ULT_COMP,
IMPORTE_UNIDAD_PRO_COMP,
IMPORTE_NETO_PRO_COMP,
IMPORTE_PORTE_PRO_COMP)
AS
select ID_EMPRESA, ID_ARTICULO, COALESCE(SUM(IMPORTE_UNIDAD_ULT_COMP),0), COALESCE(SUM(IMPORTE_NETO_ULT_COMP),0), COALESCE(SUM(IMPORTE_PORTE_ULT_COMP),0),
COALESCE(SUM(IMPORTE_UNIDAD_PRO_COMP),0), COALESCE(SUM(IMPORTE_NETO_PRO_COMP),0), COALESCE(SUM(IMPORTE_PORTE_PRO_COMP),0)
from
(select ID_EMPRESA, ID_ARTICULO,
IMPORTE_UNIDAD_COMPRA as IMPORTE_UNIDAD_ULT_COMP, IMPORTE_NETO_COMPRA as IMPORTE_NETO_ULT_COMP, IMPORTE_PORTE_COMPRA as IMPORTE_PORTE_ULT_COMP,
null as IMPORTE_UNIDAD_PRO_COMP, null as IMPORTE_NETO_PRO_COMP, null as IMPORTE_PORTE_PRO_COMP
from v_inf_ultima_compra
union all
select ID_EMPRESA, ID_ARTICULO,
null, null, null,
IMPORTE_UNIDAD_COMPRA as IMPORTE_UNIDAD_PRO_COMP, IMPORTE_NETO_COMPRA as IMPORTE_NETO_PRO_COMP, IMPORTE_PORTE_COMPRA as IMPORTE_PORTE_PRO_COMP
from v_inf_promedio_compra)
GROUP BY 1, 2;
CREATE VIEW V_INF_MARGEN_VENTAS(
ID_EMPRESA,
ID_CLIENTE,
ID_ARTICULO,
IMPORTE_UNIDAD_ULT_VENT,
IMPORTE_NETO_ULT_VENT,
IMPORTE_PORTE_ULT_VENT,
IMPORTE_UNIDAD_PRO_VENT,
IMPORTE_NETO_PRO_VENT,
IMPORTE_PORTE_PRO_VENT)
AS
select ID_EMPRESA, ID_CLIENTE, ID_ARTICULO, COALESCE(SUM(IMPORTE_UNIDAD_ULT_VENT),0), COALESCE(SUM(IMPORTE_NETO_ULT_VENT),0), COALESCE(SUM(IMPORTE_PORTE_ULT_VENT),0), COALESCE(SUM(IMPORTE_UNIDAD_PRO_VENT),0),
COALESCE(SUM(IMPORTE_NETO_PRO_VENT),0), COALESCE(SUM(IMPORTE_PORTE_PRO_VENT),0)
from
(select ID_EMPRESA, ID_CLIENTE, ID_ARTICULO,
IMPORTE_UNIDAD_VENTA as IMPORTE_UNIDAD_ULT_VENT, IMPORTE_NETO_VENTA as IMPORTE_NETO_ULT_VENT, IMPORTE_PORTE_VENTA as IMPORTE_PORTE_ULT_VENT,
null as IMPORTE_UNIDAD_PRO_VENT, null as IMPORTE_NETO_PRO_VENT, null as IMPORTE_PORTE_PRO_VENT
from v_inf_ultima_venta
union all
select ID_EMPRESA, ID_CLIENTE, ID_ARTICULO,
null, null, null,
IMPORTE_UNIDAD_VENTA as IMPORTE_UNIDAD_PRO_VENT, IMPORTE_NETO_VENTA as IMPORTE_NETO_PRO_VENT, IMPORTE_PORTE_VENTA as IMPORTE_PORTE_PRO_VENT
from v_inf_promedio_venta)
GROUP BY 1, 2, 3;
CREATE VIEW V_INF_MARGEN_ARTICULOS(
ID_EMPRESA,
ID_CLIENTE,
ID_ARTICULO,
NIF_CIF_CLIENTE,
NOMBRE_CLIENTE,
NOMBRE_COMERCIAL_CLIENTE,
NIF_CIF_AGENTE,
NOMBRE_AGENTE,
FAMILIA,
REFERENCIA,
REFERENCIA_PROV,
DESCRIPCION,
COMISIONABLE,
INVENTARIABLE,
IMP_UNIDAD_ULT_VENT,
IMP_NETO_ULT_VENT,
IMP_PORTE_ULT_VENT,
IMP_UNIDAD_PRO_VENT,
IMP_NETO_PRO_VENT,
IMP_PORTE_PRO_VENT,
IMP_UNIDAD_COMPRA,
IMP_NETO_COMPRA,
IMP_PORTE_COMPRA,
IMP_UNIDAD_ULT_COMP,
IMP_NETO_ULT_COMP,
IMP_PORTE_ULT_COMP,
IMP_UNIDAD_PRO_COMP,
IMP_NETO_PRO_COMP,
IMP_PORTE_PRO_COMP,
IMP_MARGEN_ULT_VENT_COMPRA,
POR_MARGEN_ULT_VENT_COMPRA,
IMP_MARGEN_ULT_VENT_ULT_COMP,
POR_MARGEN_ULT_VENT_ULT_COMP,
IMP_MARGEN_ULT_VENT_PRO_COMP,
POR_MARGEN_ULT_VENT_PRO_COMP,
IMP_MARGEN_PRO_VENT_COMPRA,
POR_MARGEN_PRO_VENT_COMPRA,
IMP_MARGEN_PRO_VENT_ULT_COMP,
POR_MARGEN_PRO_VENT_ULT_COMP,
IMP_MARGEN_PRO_VENT_PRO_COMP,
POR_MARGEN_PRO_VENT_PRO_COMP)
AS
select
MARGEN_VENTAS.id_empresa,
MARGEN_VENTAS.id_cliente,
MARGEN_VENTAS.id_articulo,
CLIENTES.NIF_CIF,
CLIENTES.NOMBRE,
CLIENTES_DATOS.NOMBRE_COMERCIAL,
AGENTES.NIF_CIF,
AGENTES.NOMBRE,
ARTICULOS.FAMILIA,
ARTICULOS.REFERENCIA,
ARTICULOS.REFERENCIA_PROV,
ARTICULOS.DESCRIPCION,
ARTICULOS.COMISIONABLE,
ARTICULOS.INVENTARIABLE,
COALESCE(MARGEN_VENTAS.importe_unidad_ult_vent, 0),
COALESCE(MARGEN_VENTAS.importe_neto_ult_vent, 0),
COALESCE(MARGEN_VENTAS.importe_porte_ult_vent, 0),
COALESCE(MARGEN_VENTAS.importe_unidad_pro_vent, 0),
COALESCE(MARGEN_VENTAS.importe_neto_pro_vent, 0),
COALESCE(MARGEN_VENTAS.importe_porte_pro_vent, 0),
COALESCE(ARTICULOS.PRECIO_COSTE, 0),
COALESCE(ARTICULOS.PRECIO_NETO, 0),
COALESCE(ARTICULOS.PRECIO_PORTE, 0),
COALESCE(MARGEN_COMPRAS.importe_unidad_ult_comp, 0),
COALESCE(MARGEN_COMPRAS.importe_neto_ult_comp, 0),
COALESCE(MARGEN_COMPRAS.importe_porte_ult_comp, 0),
COALESCE(MARGEN_COMPRAS.importe_unidad_pro_comp, 0),
COALESCE(MARGEN_COMPRAS.importe_neto_pro_comp, 0),
COALESCE(MARGEN_COMPRAS.importe_porte_pro_comp, 0),
/*MARGEN CON ULTIMA VENTA*/
MARGEN_VENTAS.importe_neto_ult_vent - ARTICULOS.PRECIO_NETO as imp_margen_ult_vent_compra,
CASE
WHEN ARTICULOS.PRECIO_NETO = 0 THEN 100
WHEN (MARGEN_VENTAS.importe_neto_ult_vent - ARTICULOS.PRECIO_NETO) > 0 THEN
(ARTICULOS.PRECIO_NETO * 100) / MARGEN_VENTAS.importe_neto_ult_vent
ELSE 0
END
as por_margen_ult_vent_compra,
MARGEN_VENTAS.importe_neto_ult_vent - MARGEN_COMPRAS.importe_neto_ult_comp as imp_margen_ult_vent_ult_comp,
CASE
WHEN MARGEN_COMPRAS.importe_neto_ult_comp = 0 THEN 100
WHEN (MARGEN_VENTAS.importe_neto_ult_vent - MARGEN_COMPRAS.importe_neto_ult_comp) > 0 THEN
(MARGEN_COMPRAS.importe_neto_ult_comp * 100) / MARGEN_VENTAS.importe_neto_ult_vent
ELSE 0
END
as por_margen_ult_vent_ult_comp,
MARGEN_VENTAS.importe_neto_ult_vent - MARGEN_COMPRAS.importe_neto_pro_comp as imp_margen_ult_vent_pro_comp,
CASE
WHEN MARGEN_COMPRAS.importe_neto_pro_comp = 0 THEN 100
WHEN (MARGEN_VENTAS.importe_neto_ult_vent - MARGEN_COMPRAS.importe_neto_pro_comp) > 0 THEN
(MARGEN_COMPRAS.importe_neto_pro_comp * 100) / MARGEN_VENTAS.importe_neto_ult_vent
ELSE 0
END
as por_margen_ult_vent_pro_comp,
/*MARGEN CON VENTAS PROMEDIO*/
MARGEN_VENTAS.importe_neto_pro_vent - ARTICULOS.PRECIO_NETO as imp_margen_pro_vent_compra,
CASE
WHEN ARTICULOS.PRECIO_NETO = 0 THEN 100
WHEN (MARGEN_VENTAS.importe_neto_pro_vent - ARTICULOS.PRECIO_NETO) > 0 THEN
(ARTICULOS.PRECIO_NETO * 100) / MARGEN_VENTAS.importe_neto_pro_vent
ELSE 0
END
as por_margen_pro_vent_compra,
MARGEN_VENTAS.importe_neto_pro_vent - MARGEN_COMPRAS.importe_neto_ult_comp as imp_margen_pro_vent_ult_comp,
CASE
WHEN MARGEN_COMPRAS.importe_neto_ult_comp = 0 THEN 100
WHEN (MARGEN_VENTAS.importe_neto_pro_vent - MARGEN_COMPRAS.importe_neto_ult_comp) > 0 THEN
(MARGEN_COMPRAS.importe_neto_ult_comp * 100) / MARGEN_VENTAS.importe_neto_pro_vent
ELSE 0
END
as por_margen_pro_vent_ult_comp,
MARGEN_VENTAS.importe_neto_pro_vent - MARGEN_COMPRAS.importe_neto_pro_comp as imp_margen_pro_vent_pro_comp,
CASE
WHEN MARGEN_COMPRAS.importe_neto_pro_comp = 0 THEN 100
WHEN (MARGEN_VENTAS.importe_neto_pro_vent - MARGEN_COMPRAS.importe_neto_pro_comp) > 0 THEN
(MARGEN_COMPRAS.importe_neto_pro_comp * 100) / MARGEN_VENTAS.importe_neto_pro_vent
ELSE 0
END
as por_margen_pro_vent_pro_comp
FROM
/*Antigua V_INF_MARGEN_VENTAS*/
(select ID_EMPRESA, ID_CLIENTE, ID_ARTICULO, COALESCE(SUM(IMPORTE_UNIDAD_ULT_VENT),0) as importe_unidad_ult_vent,
COALESCE(SUM(IMPORTE_NETO_ULT_VENT),0) as importe_neto_ult_vent, COALESCE(SUM(IMPORTE_PORTE_ULT_VENT),0) as importe_porte_ult_vent,
COALESCE(SUM(IMPORTE_UNIDAD_PRO_VENT),0) as importe_unidad_pro_vent, COALESCE(SUM(IMPORTE_NETO_PRO_VENT),0) as importe_neto_pro_vent,
COALESCE(SUM(IMPORTE_PORTE_PRO_VENT),0) as importe_porte_pro_vent
from
(select
ID_EMPRESA, ID_CLIENTE, ID_ARTICULO,
IMPORTE_UNIDAD_VENTA as IMPORTE_UNIDAD_ULT_VENT, IMPORTE_NETO_VENTA as IMPORTE_NETO_ULT_VENT, IMPORTE_PORTE_VENTA as IMPORTE_PORTE_ULT_VENT,
null as IMPORTE_UNIDAD_PRO_VENT, null as IMPORTE_NETO_PRO_VENT, null as IMPORTE_PORTE_PRO_VENT
from v_inf_ultima_venta
union all
/*Antigua V_INF_PROMEDIO_VENTA*/
select
facturas_cliente.id_empresa,
facturas_cliente.id_cliente,
facturas_cliente_detalles.ID_ARTICULO,
null, null, null,
avg(facturas_cliente_detalles.IMPORTE_UNIDAD) as IMPORTE_UNIDAD_PRO_VENT,
avg(facturas_cliente_detalles.IMPORTE_UNIDAD - (facturas_cliente_detalles.IMPORTE_UNIDAD * (facturas_cliente_detalles.DESCUENTO / 100))) AS IMPORTE_NETO_PRO_VENT,
avg(facturas_cliente_detalles.IMPORTE_PORTE) as IMPORTE_PORTE_PRO_VENT
from facturas_cliente_detalles
left outer join facturas_cliente
on (facturas_cliente.id = facturas_cliente_detalles.id_factura)
where (facturas_cliente_detalles.ID_ARTICULO IS NOT NULL) and (facturas_cliente_detalles.ID_ARTICULO > 0) /*Quitamos conceptos libres*/
and (facturas_cliente_detalles.cantidad > 0) /*Quitamos los abonos*/
/*AND INTERVALO DE FECHAS*/
group by 1, 2, 3)
group by 1, 2, 3) MARGEN_VENTAS
LEFT JOIN
/*Antigua V_INF_MARGEN_COMPRAS*/
(select
ID_EMPRESA, ID_ARTICULO, COALESCE(SUM(IMPORTE_UNIDAD_ULT_COMP),0) as importe_unidad_ult_comp, COALESCE(SUM(IMPORTE_NETO_ULT_COMP),0) as importe_neto_ult_comp,
COALESCE(SUM(IMPORTE_PORTE_ULT_COMP),0) as importe_porte_ult_comp, COALESCE(SUM(IMPORTE_UNIDAD_PRO_COMP),0) as importe_unidad_pro_comp,
COALESCE(SUM(IMPORTE_NETO_PRO_COMP),0) as importe_neto_pro_comp, COALESCE(SUM(IMPORTE_PORTE_PRO_COMP),0) as importe_porte_pro_comp
from
(select
ID_EMPRESA, ID_ARTICULO,
IMPORTE_UNIDAD_COMPRA as IMPORTE_UNIDAD_ULT_COMP, IMPORTE_NETO_COMPRA as IMPORTE_NETO_ULT_COMP, IMPORTE_PORTE_COMPRA as IMPORTE_PORTE_ULT_COMP,
null as IMPORTE_UNIDAD_PRO_COMP, null as IMPORTE_NETO_PRO_COMP, null as IMPORTE_PORTE_PRO_COMP
from v_inf_ultima_compra
union all
/*Antigua V_INF_PROMEDIO_COMPRA*/
select
facturas_proveedor.id_empresa,
facturas_proveedor_detalles.ID_ARTICULO,
null, null, null,
avg(facturas_proveedor_detalles.IMPORTE_UNIDAD) as IMPORTE_UNIDAD_PRO_COMP,
avg(facturas_proveedor_detalles.IMPORTE_UNIDAD - (facturas_proveedor_detalles.IMPORTE_UNIDAD * (facturas_proveedor_detalles.DESCUENTO / 100))) AS IMPORTE_NETO_PRO_COMP,
avg(facturas_proveedor_detalles.IMPORTE_PORTE) as IMPORTE_PORTE_PRO_COMP
from facturas_proveedor_detalles
left outer join facturas_proveedor
on (facturas_proveedor.id = facturas_proveedor_detalles.id_factura)
where (facturas_proveedor_detalles.ID_ARTICULO IS NOT NULL) and (facturas_proveedor_detalles.ID_ARTICULO > 0) /*Quitamos conceptos libres*/
and (facturas_proveedor_detalles.cantidad > 0) /*Quitamos los abonos*/
/*AND INTERVALO DE FECHAS*/
group by 1, 2)
group by 1, 2) MARGEN_COMPRAS
ON (MARGEN_COMPRAS.id_empresa = MARGEN_VENTAS.id_empresa)
AND (MARGEN_COMPRAS.id_articulo = MARGEN_VENTAS.id_articulo)
LEFT JOIN ARTICULOS ON (ARTICULOS.ID = MARGEN_VENTAS.id_articulo)
LEFT JOIN CONTACTOS CLIENTES on (CLIENTES.ID = MARGEN_VENTAS.ID_CLIENTE)
LEFT JOIN CLIENTES_DATOS on (CLIENTES_DATOS.ID_CLIENTE = CLIENTES.ID)
LEFT JOIN CONTACTOS AGENTES on (AGENTES.ID = CLIENTES_DATOS.ID_AGENTE)
WHERE (ARTICULOS.INVENTARIABLE = 1);
/* Al igual que en Varela tendremos esta vista para hacer todos los informes que queramos de ventas, ya que estará desglosado por artículo */
CREATE VIEW V_INF_VENTAS_ARTICULOS(
ID_FACTURA,