diff --git a/Database/VISTAS.SQL b/Database/VISTAS.SQL index b7a5d5c0..782ca90a 100644 --- a/Database/VISTAS.SQL +++ b/Database/VISTAS.SQL @@ -54,8 +54,11 @@ DROP VIEW V_ALB_CLI_DETALLES; DROP VIEW V_ALBARANES_CLIENTE; DROP VIEW V_ALB_CLI_SITUACION; +DROP VIEW V_PED_PROV_ART_SIN_ALBARAN; DROP VIEW V_PEDIDOS_PROVEEDOR; DROP VIEW V_PED_PROV_SITUACION; +DROP VIEW V_PED_PROV_PROCESO; +DROP VIEW V_PED_PROV_PENDIENTES_PROCESO; DROP VIEW V_PED_PROV_ARTICULOS; DROP VIEW V_PED_PROV_ARTICULOS_AUX; @@ -1476,18 +1479,117 @@ HAVING SUM(CANTIDAD_PEDIDA) IS NOT NULL; /*POR COMENTAR*/ -CREATE VIEW V_PED_PROV_SITUACION( - ID_PEDIDO, - SITUACION) +CREATE VIEW V_PED_PROV_PENDIENTES_PROCESO( + ID_PEDIDO) AS -SELECT ID_PEDIDO, -CASE WHEN (SUM(CANTIDAD_PENDIENTE) > 0) AND (SUM(CANTIDAD_RECIBIDA) = 0) THEN 'PENDIENTE' - WHEN (SUM(CANTIDAD_PENDIENTE) <= 0) THEN 'RECIBIDO' - WHEN (SUM(CANTIDAD_PENDIENTE) > 0) AND (SUM(CANTIDAD_RECIBIDA) > 0) THEN 'PARCIAL' - ELSE 'N/A' -END AS SITUACION +SELECT distinct V_PED_PROV_ARTICULOS.id_pedido FROM V_PED_PROV_ARTICULOS -GROUP BY V_PED_PROV_ARTICULOS.ID_PEDIDO; +WHERE (V_PED_PROV_ARTICULOS.CANTIDAD_PEDIDA > V_PED_PROV_ARTICULOS.CANTIDAD_RECIBIDA) +; + +CREATE VIEW V_PED_PROV_PROCESO( + ID_PEDIDO) +AS +select v_ped_prov_pendientes_proceso.ID_PEDIDO +from v_ped_prov_pendientes_proceso +inner join v_ped_prov_con_albaranes on (v_ped_prov_con_albaranes.ID_PEDIDO = v_ped_prov_pendientes_proceso.ID_PEDIDO) +; + +CREATE VIEW V_PED_PROV_ART_SIN_ALBARAN( + ID, + ID_PEDIDO, + ID_EMPRESA, + REFERENCIA_PEDIDO, + FECHA_PEDIDO, + FECHA_CONFIRMACION, + ID_PROVEEDOR, + CALLE, + CODIGO_POSTAL, + POBLACION, + PROVINCIA, + PERSONA_CONTACTO, + TELEFONO, + IVA, + ID_FORMA_PAGO, + PROVEEDOR, + ID_ARTICULO, + FAMILIA, + REFERENCIA, + REFERENCIA_PROVEEDOR, + DESCRIPCION, + CANTIDAD_PEDIDA, + CANTIDAD_RECIBIDA, + CANTIDAD_PENDIENTE, + PRECIO_COSTE, + DESCUENTO, + PRECIO_NETO, + PRECIO_PORTE) +AS +SELECT + V_PED_PROV_ARTICULOS.ID_PEDIDO || V_PED_PROV_ARTICULOS.ID_ARTICULO as ID, /*Para tener un ID unico sobre el que poder consultar en la sentencia de selección del grid*/ + V_PED_PROV_ARTICULOS.ID_PEDIDO, + PEDIDOS_PROVEEDOR.ID_EMPRESA, + PEDIDOS_PROVEEDOR.referencia, + PEDIDOS_PROVEEDOR.fecha_pedido, + PEDIDOS_PROVEEDOR.fecha_confirmacion, + PEDIDOS_PROVEEDOR.id_proveedor, + PEDIDOS_PROVEEDOR.CALLE, + PEDIDOS_PROVEEDOR.CODIGO_POSTAL, + PEDIDOS_PROVEEDOR.POBLACION, + PEDIDOS_PROVEEDOR.PROVINCIA, + PEDIDOS_PROVEEDOR.PERSONA_CONTACTO, + PEDIDOS_PROVEEDOR.TELEFONO, + PEDIDOS_PROVEEDOR.IVA, + PEDIDOS_PROVEEDOR.ID_FORMA_PAGO, + CONTACTOS.nombre, + V_PED_PROV_ARTICULOS.ID_ARTICULO, + articulos.familia, + articulos.referencia, + articulos.referencia_prov, + articulos.descripcion, + V_PED_PROV_ARTICULOS.CANTIDAD_PEDIDA, + V_PED_PROV_ARTICULOS.CANTIDAD_RECIBIDA, + V_PED_PROV_ARTICULOS.CANTIDAD_PENDIENTE, + + ARTICULOS.PRECIO_COSTE, + ARTICULOS.DESCUENTO, + ARTICULOS.PRECIO_NETO, + ARTICULOS.PRECIO_PORTE + +from V_PED_PROV_ARTICULOS +left join PEDIDOS_PROVEEDOR on (PEDIDOS_PROVEEDOR.id = V_PED_PROV_ARTICULOS.id_pedido) +left join CONTACTOS on (contactos.id = PEDIDOS_PROVEEDOR.id_proveedor) +left join articulos on (articulos.id = V_PED_PROV_ARTICULOS.ID_ARTICULO) +where cantidad_pendiente > 0; + + +CREATE VIEW V_PED_PROV_SITUACION( + ID_PEDIDO, + SITUACION) +AS +select id_pedido, +case when sum(enpro) = 3 then 'PARCIAL' + when sum(enpro) = 2 then 'PENDIENTE' + when sum(enpro) = 1 then 'RECIBIDO' +end as situacion +from +( +select id as id_pedido, 1 as ser, 1 as pend, 1 as enpro +from pedidos_proveedor + +union + +select id_pedido, 0 as ser, 1 as pend, 1 as enpro +from v_ped_prov_pendientes_proceso + +union + +select id_pedido, 0 as ser, 0 as pend, 1 as enpro +from v_ped_prov_proceso + +) +group by id_pedido +; CREATE VIEW V_PEDIDOS_CLIENTE(