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á desglosado por artí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);