git-svn-id: https://192.168.0.254/svn/Proyectos.LuisLeon_FactuGES2/trunk@123 b2cfbe5a-eba1-4a0c-8b32-7feea0a119f2
319 lines
10 KiB
SQL
319 lines
10 KiB
SQL
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
|
||
;
|
||
|
||
CREATE VIEW V_INF_ULTCOM(
|
||
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)
|
||
|
||
left outer join v_inf_fec_ultcom
|
||
on (v_inf_fec_ultcom.id_empresa = facturas_proveedor.id_empresa)
|
||
and (v_inf_fec_ultcom.id_articulo = facturas_proveedor_detalles.id_articulo)
|
||
|
||
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 (facturas_proveedor.FECHA_FACTURA = v_inf_fec_ultcom.fecha) /*nos quedamos con las ultimas compras*/
|
||
|
||
group by 1, 2
|
||
;
|
||
|
||
CREATE VIEW V_INF_ULTCOM_PORARTICULO(
|
||
ID_EMPRESA,
|
||
ID_ARTICULO,
|
||
IMPORTE_UNIDAD_COMPRA,
|
||
IMPORTE_NETO_COMPRA,
|
||
IMPORTE_PORTE_COMPRA)
|
||
AS
|
||
select v_inf_ultcom.id_empresa, articulos.id,
|
||
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
|
||
on
|
||
/*((v_inf_ultcom.id_empresa = articulos.id_empresa) and*/
|
||
(v_inf_ultcom.id_articulo = articulos.id)
|
||
;
|
||
|
||
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);
|