2011-10-03 17:47:25 +00:00
DROP VIEW V_INF_VENTAS_ALB_ARTICULOS;
2010-11-25 12:01:23 +00:00
DROP VIEW V_INF_VENTAS_ARTICULOS;
DROP VIEW V_INF_ULTVEN_PORCLIENTE;
DROP VIEW V_INF_ULTVEN_PORARTICULO;
DROP VIEW V_INF_FEC_ULTVEN_PORCLIENTE;
DROP VIEW V_INF_FEC_ULTVEN_PORARTICULO;
DROP VIEW V_INF_ULTCOM_PORARTICULO;
DROP VIEW V_INF_ULTCOM;
DROP VIEW V_INF_FEC_ULTCOM;
/* **********************************************************************/
/* INFORMES *************************************************************/
/* **********************************************************************/
CREATE VIEW V_INF_FEC_ULTCOM(
ID_EMPRESA,
ID_ARTICULO,
FECHA)
AS
select
facturas_proveedor.ID_EMPRESA,
facturas_proveedor_detalles.ID_ARTICULO,
max(facturas_proveedor.FECHA_FACTURA)
from facturas_proveedor_detalles
left join facturas_proveedor
on (facturas_proveedor.id = facturas_proveedor_detalles.id_factura)
WHERE (ID_ARTICULO IS NOT NULL)
AND (ID_ARTICULO > 0)
and (facturas_proveedor_detalles.cantidad > 0)
group by
facturas_proveedor.ID_EMPRESA,
facturas_proveedor_detalles.ID_ARTICULO
;
2012-08-29 14:36:53 +00:00
2010-11-25 12:01:23 +00:00
CREATE VIEW V_INF_ULTCOM(
ID_EMPRESA,
ID_ARTICULO,
2012-08-29 14:36:53 +00:00
FECHA,
2010-11-25 12:01:23 +00:00
IMPORTE_UNIDAD_COMPRA,
IMPORTE_NETO_COMPRA,
IMPORTE_PORTE_COMPRA)
AS
2012-08-29 14:36:53 +00:00
select id_empresa, id_articulo, fecha_factura, sum(IMPORTE_UNIDAD_COMPRA) as importe_unidad, sum(IMPORTE_NETO_COMPRA) as importe_neto_compra, sum(IMPORTE_PORTE_COMPRA) as importe_porte_compra
from
(
/*Se hace agrupaci<63> n de articulos de los detalles de la factura por si se compra el mismo articulo en distintas lineas con distinto precio por ello se hace la media*/
2010-11-25 12:01:23 +00:00
select
facturas_proveedor.id_empresa,
facturas_proveedor_detalles.ID_ARTICULO,
2012-08-29 14:36:53 +00:00
0 as ult_com,
facturas_proveedor.fecha_factura,
2010-11-25 12:01:23 +00:00
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*/
2012-08-29 14:36:53 +00:00
group by 1,2,3,4
union
/*Se hace la uni<6E> n con la vista de fecha de ultima compra de cada articulo y empresa poniendo un parametro a 1 para cuando se agrupen saber que es la <20> ltima compra*/
/*todo articulo tendr<64> ultima compra ya que tiramos de facturas de proveedor*/
select v_inf_fec_ultcom.id_empresa, v_inf_fec_ultcom.id_articulo, 1, v_inf_fec_ultcom.fecha, 0,0,0
from v_inf_fec_ultcom
)
/*finalmente se hace la grupacion de la uni<6E> n y se suma para el tema del parametro de ultima compra, quitamos las compras de articulos con parametro 0 ya que son compras antiguas*/
group by 1,2,3
having (sum(ult_com)=1);
2010-11-25 12:01:23 +00:00
CREATE VIEW V_INF_ULTCOM_PORARTICULO(
ID_EMPRESA,
ID_ARTICULO,
IMPORTE_UNIDAD_COMPRA,
IMPORTE_NETO_COMPRA,
IMPORTE_PORTE_COMPRA)
AS
2011-03-28 16:24:04 +00:00
select v_inf_ultcom.id_empresa, articulos.id,
2010-11-25 12:01:23 +00:00
coalesce(v_inf_ultcom.importe_unidad_compra, articulos.precio_coste),
coalesce(v_inf_ultcom.importe_neto_compra, articulos.precio_neto),
coalesce(v_inf_ultcom.importe_porte_compra, articulos.precio_porte)
from articulos
left join v_inf_ultcom
2011-03-28 16:24:04 +00:00
on
/*((v_inf_ultcom.id_empresa = articulos.id_empresa) and*/
(v_inf_ultcom.id_articulo = articulos.id)
2010-11-25 12:01:23 +00:00
;
CREATE VIEW V_INF_FEC_ULTVEN_PORARTICULO(
ID_EMPRESA,
ID_ARTICULO,
FECHA)
AS
select
facturas_cliente.ID_EMPRESA,
facturas_cliente_detalles.ID_ARTICULO,
max(facturas_cliente.FECHA_FACTURA)
from facturas_cliente_detalles
left join facturas_cliente
on (facturas_cliente.id = facturas_cliente_detalles.id_factura)
WHERE (ID_ARTICULO IS NOT NULL)
AND (ID_ARTICULO > 0)
and (facturas_cliente_detalles.cantidad > 0)
group by
facturas_cliente.ID_EMPRESA,
facturas_cliente_detalles.ID_ARTICULO
;
CREATE VIEW V_INF_FEC_ULTVEN_PORCLIENTE(
ID_EMPRESA,
ID_CLIENTE,
ID_ARTICULO,
FECHA)
AS
select
facturas_cliente.ID_EMPRESA,
facturas_cliente.ID_CLIENTE,
facturas_cliente_detalles.ID_ARTICULO,
max(facturas_cliente.FECHA_FACTURA)
from facturas_cliente_detalles
left join facturas_cliente
on (facturas_cliente.id = facturas_cliente_detalles.id_factura)
WHERE (ID_ARTICULO IS NOT NULL)
AND (ID_ARTICULO > 0)
and (facturas_cliente_detalles.cantidad > 0)
group by
facturas_cliente.ID_EMPRESA,
facturas_cliente.ID_CLIENTE,
facturas_cliente_detalles.ID_ARTICULO
;
CREATE VIEW V_INF_ULTVEN_PORARTICULO(
ID_EMPRESA,
ID_ARTICULO,
IMPORTE_UNIDAD_VENTA,
IMPORTE_NETO_VENTA,
IMPORTE_PORTE_VENTA)
AS
select
facturas_cliente.id_empresa,
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
inner join facturas_cliente
on (facturas_cliente.id = facturas_cliente_detalles.id_factura)
inner join v_inf_fec_ultven_PORARTICULO
on (v_inf_fec_ultven_PORARTICULO.id_empresa = facturas_cliente.id_empresa)
and (v_inf_fec_ultven_PORARTICULO.id_articulo = facturas_cliente_detalles.id_articulo)
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 (facturas_cliente.FECHA_FACTURA = v_inf_fec_ultven_PORARTICULO.fecha) /*nos quedamos con las ultimas compras*/
group by 1, 2
;
CREATE VIEW V_INF_ULTVEN_PORCLIENTE(
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
inner join facturas_cliente
on (facturas_cliente.id = facturas_cliente_detalles.id_factura)
inner join v_inf_fec_ultven_porcliente
on (v_inf_fec_ultven_porcliente.id_empresa = facturas_cliente.id_empresa)
and (v_inf_fec_ultven_porcliente.id_cliente = facturas_cliente.id_cliente)
and (v_inf_fec_ultven_porcliente.id_articulo = facturas_cliente_detalles.id_articulo)
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 (facturas_cliente.FECHA_FACTURA = v_inf_fec_ultven_porcliente.fecha) /*nos quedamos con las ultimas compras*/
group by 1, 2, 3
;
/* Al igual que en Varela tendremos esta vista para hacer todos los informes que queramos de ventas, ya que estar<61> desglosado por art<72> culo */
CREATE VIEW V_INF_VENTAS_ARTICULOS(
ID_FACTURA,
ID_EMPRESA,
REFERENCIA_FACTURA,
FECHA_FACTURA,
IMPORTE_TOTAL_FACTURA,
ID_COMISION_FACTURA,
ID_ARTICULO,
FAMILIA,
REFERENCIA,
REFERENCIA_PROV,
DESCRIPCION,
COMISIONABLE,
INVENTARIABLE,
IMPORTE_UNIDAD_COSTE,
DESCUENTO_PROVEEDOR_COSTE,
IMPORTE_NETO_COSTE,
IMPORTE_PORTE_COSTE,
CANTIDAD,
IMPORTE_UNIDAD_VENTA,
DESCUENTO_CLIENTE_VENTA,
IMPORTE_NETO_VENTA,
IMPORTE_PORTE_VENTA,
IMPORTE_TOTAL_VENTA,
NIF_CIF_PROVEEDOR,
NOMBRE_PROVEEDOR,
CALLE_PROVEEDOR,
POBLACION_PROVEEDOR,
PROVINCIA_PROVEEDOR,
NIF_CIF_CLIENTE,
NOMBRE_CLIENTE,
NOMBRE_COMERCIAL_CLIENTE,
CALLE_CLIENTE,
POBLACION_CLIENTE,
PROVINCIA_CLIENTE,
NIF_CIF_AGENTE,
NOMBRE_AGENTE,
CALLE_AGENTE,
POBLACION_AGENTE,
PROVINCIA_AGENTE,
COMISION_AGENTE,
IMPORTE_COMISION_AGENTE)
AS
select
FACTURAS_CLIENTE.ID,
FACTURAS_CLIENTE.ID_EMPRESA,
FACTURAS_CLIENTE.REFERENCIA,
FACTURAS_CLIENTE.FECHA_FACTURA,
FACTURAS_CLIENTE.IMPORTE_TOTAL,
FACTURAS_CLIENTE.ID_COMISION_LIQUIDADA,
FACTURAS_CLIENTE_DETALLES.ID_ARTICULO,
ARTICULOS.FAMILIA,
ARTICULOS.REFERENCIA,
ARTICULOS.REFERENCIA_PROV,
ARTICULOS.DESCRIPCION,
ARTICULOS.COMISIONABLE,
ARTICULOS.INVENTARIABLE,
ARTICULOS.PRECIO_COSTE,
ARTICULOS.DESCUENTO,
ARTICULOS.PRECIO_NETO,
ARTICULOS.PRECIO_PORTE,
FACTURAS_CLIENTE_DETALLES.CANTIDAD,
FACTURAS_CLIENTE_DETALLES.IMPORTE_UNIDAD as importe_unidad_venta,
FACTURAS_CLIENTE_DETALLES.DESCUENTO,
case when FACTURAS_CLIENTE_DETALLES.CANTIDAD < 0 then
/*En caso de ser un abono el importe neto venta debe ser negativo para que los informes no salgan falseados*/
(-1)*(FACTURAS_CLIENTE_DETALLES.IMPORTE_UNIDAD - (FACTURAS_CLIENTE_DETALLES.IMPORTE_UNIDAD * (FACTURAS_CLIENTE_DETALLES.DESCUENTO/100)))
else
FACTURAS_CLIENTE_DETALLES.IMPORTE_UNIDAD - (FACTURAS_CLIENTE_DETALLES.IMPORTE_UNIDAD * (FACTURAS_CLIENTE_DETALLES.DESCUENTO/100))
end as importe_neto_venta,
FACTURAS_CLIENTE_DETALLES.IMPORTE_PORTE as importe_porte_venta,
FACTURAS_CLIENTE_DETALLES.IMPORTE_TOTAL,
PROVEEDORES.NIF_CIF,
PROVEEDORES.NOMBRE,
PROVEEDORES.CALLE,
PROVEEDORES.POBLACION,
PROVEEDORES.PROVINCIA,
CLIENTES.NIF_CIF,
CLIENTES.NOMBRE,
CLIENTES_DATOS.NOMBRE_COMERCIAL,
CLIENTES.CALLE,
CLIENTES.POBLACION,
CLIENTES.PROVINCIA,
AGENTES.NIF_CIF,
AGENTES.NOMBRE,
AGENTES.CALLE,
AGENTES.POBLACION,
AGENTES.PROVINCIA,
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 FACTURAS_CLIENTE_DETALLES
left join ARTICULOS on (ARTICULOS.ID = FACTURAS_CLIENTE_DETALLES.ID_ARTICULO)
left join CONTACTOS PROVEEDORES on (PROVEEDORES.ID = ARTICULOS.ID_PROVEEDOR)
left join FACTURAS_CLIENTE on (FACTURAS_CLIENTE.ID = FACTURAS_CLIENTE_DETALLES.ID_FACTURA)
left join CONTACTOS CLIENTES on (CLIENTES.ID = FACTURAS_CLIENTE.ID_CLIENTE)
left join CLIENTES_DATOS on (CLIENTES_DATOS.ID_CLIENTE = CLIENTES.ID)
left join CONTACTOS AGENTES on (AGENTES.ID = CLIENTES_DATOS.ID_AGENTE)
left join AGENTES_COMISIONES
on ((AGENTES_COMISIONES.ID_AGENTE = AGENTES.ID) and (AGENTES_COMISIONES.ID_PROVEEDOR = PROVEEDORES.ID))
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 (ARTICULOS.INVENTARIABLE = 1);
2011-10-03 17:47:25 +00:00
CREATE VIEW V_INF_VENTAS_ALB_ARTICULOS(
ID_ALBARAN,
ID_EMPRESA,
REFERENCIA_ALBARAN,
FECHA_ALBARAN,
IMPORTE_TOTAL_ALBARAN,
ID_ARTICULO,
FAMILIA,
REFERENCIA,
REFERENCIA_PROV,
DESCRIPCION,
COMISIONABLE,
INVENTARIABLE,
IMPORTE_UNIDAD_COSTE,
DESCUENTO_PROVEEDOR_COSTE,
IMPORTE_NETO_COSTE,
IMPORTE_PORTE_COSTE,
CANTIDAD,
IMPORTE_UNIDAD_VENTA,
DESCUENTO_CLIENTE_VENTA,
IMPORTE_NETO_VENTA,
IMPORTE_PORTE_VENTA,
IMPORTE_TOTAL_VENTA,
NIF_CIF_PROVEEDOR,
NOMBRE_PROVEEDOR,
CALLE_PROVEEDOR,
POBLACION_PROVEEDOR,
PROVINCIA_PROVEEDOR,
NIF_CIF_CLIENTE,
NOMBRE_CLIENTE,
NOMBRE_COMERCIAL_CLIENTE,
CALLE_CLIENTE,
POBLACION_CLIENTE,
PROVINCIA_CLIENTE,
NIF_CIF_AGENTE,
NOMBRE_AGENTE,
CALLE_AGENTE,
POBLACION_AGENTE,
PROVINCIA_AGENTE,
COMISION_AGENTE,
IMPORTE_COMISION_AGENTE)
AS
select
albaranes_cliente.ID,
albaranes_cliente.ID_EMPRESA,
albaranes_cliente.REFERENCIA,
albaranes_cliente.FECHA_ALBARAN,
albaranes_cliente.IMPORTE_TOTAL,
ALBARANES_CLIENTE_DETALLES.ID_ARTICULO,
ARTICULOS.FAMILIA,
ARTICULOS.REFERENCIA,
ARTICULOS.REFERENCIA_PROV,
ARTICULOS.DESCRIPCION,
ARTICULOS.COMISIONABLE,
ARTICULOS.INVENTARIABLE,
ARTICULOS.PRECIO_COSTE,
ARTICULOS.DESCUENTO,
ARTICULOS.PRECIO_NETO,
ARTICULOS.PRECIO_PORTE,
ALBARANES_CLIENTE_DETALLES.CANTIDAD,
ALBARANES_CLIENTE_DETALLES.IMPORTE_UNIDAD as importe_unidad_venta,
ALBARANES_CLIENTE_DETALLES.DESCUENTO,
case when ALBARANES_CLIENTE_DETALLES.CANTIDAD < 0 then
/*En caso de ser un abono el importe neto venta debe ser negativo para que los informes no salgan falseados*/
(-1)*(ALBARANES_CLIENTE_DETALLES.IMPORTE_UNIDAD - (ALBARANES_CLIENTE_DETALLES.IMPORTE_UNIDAD * (ALBARANES_CLIENTE_DETALLES.DESCUENTO/100)))
else
ALBARANES_CLIENTE_DETALLES.IMPORTE_UNIDAD - (ALBARANES_CLIENTE_DETALLES.IMPORTE_UNIDAD * (ALBARANES_CLIENTE_DETALLES.DESCUENTO/100))
end as importe_neto_venta,
ALBARANES_CLIENTE_DETALLES.IMPORTE_PORTE as importe_porte_venta,
ALBARANES_CLIENTE_DETALLES.IMPORTE_TOTAL,
PROVEEDORES.NIF_CIF,
PROVEEDORES.NOMBRE,
PROVEEDORES.CALLE,
PROVEEDORES.POBLACION,
PROVEEDORES.PROVINCIA,
CLIENTES.NIF_CIF,
CLIENTES.NOMBRE,
CLIENTES_DATOS.NOMBRE_COMERCIAL,
CLIENTES.CALLE,
CLIENTES.POBLACION,
CLIENTES.PROVINCIA,
AGENTES.NIF_CIF,
AGENTES.NOMBRE,
AGENTES.CALLE,
AGENTES.POBLACION,
AGENTES.PROVINCIA,
COALESCE(AGENTES_COMISIONES.COMISION, 0) AS COMISION,
(CASE COALESCE(AGENTES_COMISIONES.COMISION, 0) WHEN 0 THEN 0
ELSE ((ALBARANES_CLIENTE_DETALLES.IMPORTE_TOTAL * AGENTES_COMISIONES.COMISION)/100) END) as IMPORTE_COMISION
from ALBARANES_CLIENTE_DETALLES
left join ARTICULOS on (ARTICULOS.ID = ALBARANES_CLIENTE_DETALLES.ID_ARTICULO)
left join CONTACTOS PROVEEDORES on (PROVEEDORES.ID = ARTICULOS.ID_PROVEEDOR)
left join ALBARANES_CLIENTE on (ALBARANES_CLIENTE.ID = ALBARANES_CLIENTE_DETALLES.ID_ALBARAN)
left join CONTACTOS CLIENTES on (CLIENTES.ID = ALBARANES_CLIENTE.ID_CLIENTE)
left join CLIENTES_DATOS on (CLIENTES_DATOS.ID_CLIENTE = CLIENTES.ID)
left join CONTACTOS AGENTES on (AGENTES.ID = CLIENTES_DATOS.ID_AGENTE)
left join AGENTES_COMISIONES
on ((AGENTES_COMISIONES.ID_AGENTE = AGENTES.ID) and (AGENTES_COMISIONES.ID_PROVEEDOR = PROVEEDORES.ID))
where (ALBARANES_CLIENTE_DETALLES.ID_ARTICULO is not null) and (ALBARANES_CLIENTE_DETALLES.ID_ARTICULO > 0) /*Quitamos conceptos libres*/
/*and (FACTURAS_CLIENTE_DETALLES.cantidad > 0) Quitamos los abonos*/
and (ARTICULOS.INVENTARIABLE = 1)
;