This repository has been archived on 2024-11-28. You can view files and clone it, but cannot push or open issues or pull requests.
LuisLeon_FactuGES/SCRIPTS/SCRIPT_SITUACIONES_PEDIDOS.SQL

129 lines
3.3 KiB
SQL

//SCRIPT PARA MAÑANA
DROP VIEW V_PEDIDOS_CLIENTE;
DROP VIEW V_PED_CLI_SITUACION;
DROP VIEW V_PED_CLI_ENPROCESO;
DROP VIEW V_PED_CLI_SERVIDOS;
DROP VIEW V_PED_CLI_NUM_ARTICULOS;
DROP VIEW V_PED_CLI_ARTICULOS_SERVIDOS;
CREATE VIEW V_PED_CLI_SITUACION(
ID_PEDIDO,
SITUACION)
AS
SELECT
PEDIDOS_CLIENTE.ID,
/* Si (num. artículos servidos - num. artículos pedidos) = 0 -> Ped. servido
Si no
Si el pedido tiene albaranes -> Ped. servido
Si no -> Ped. pendiente
*/
CASE
WHEN
COALESCE(
(SELECT
COUNT(V_PED_CLI_ARTICULOS.ID_ARTICULO)
FROM
V_PED_CLI_ARTICULOS
WHERE (V_PED_CLI_ARTICULOS.CANTIDAD_PEDIDA <= V_PED_CLI_ARTICULOS.CANTIDAD_SERVIDA)
AND (V_PED_CLI_ARTICULOS.ID_PEDIDO = PEDIDOS_CLIENTE.ID)
GROUP BY ID_PEDIDO), 0)
-
COALESCE(
(SELECT
COUNT(V_PED_CLI_DETALLES.ID_ARTICULO)
FROM
V_PED_CLI_DETALLES
WHERE (V_PED_CLI_DETALLES.ID_PEDIDO = PEDIDOS_CLIENTE.ID)
GROUP BY ID_PEDIDO), 0)
= 0 THEN 'SERVIDO'
ELSE
CASE
WHEN
(COALESCE(
(SELECT
COUNT(ALBARANES_CLIENTE.ID)
FROM
ALBARANES_CLIENTE
WHERE (ALBARANES_CLIENTE.ID_PEDIDO = PEDIDOS_CLIENTE.ID)
GROUP BY ALBARANES_CLIENTE.ID_PEDIDO), 0)
<> 0) THEN 'EN PROCESO'
ELSE 'PENDIENTE'
END
END AS SITUACION
FROM
PEDIDOS_CLIENTE
;
CREATE VIEW V_PEDIDOS_CLIENTE(
ID,
ID_EMPRESA,
ID_CLIENTE,
NOMBRE,
REFERENCIA,
SITUACION,
FECHA_PEDIDO,
CALLE,
CODIGO_POSTAL,
POBLACION,
PROVINCIA,
PERSONA_CONTACTO,
TELEFONO,
OBSERVACIONES,
INCIDENCIAS,
INCIDENCIAS_ACTIVAS,
FECHA_ALTA,
FECHA_MODIFICACION,
USUARIO,
IMPORTE_NETO,
IMPORTE_PORTE,
DESCUENTO,
IMPORTE_DESCUENTO,
BASE_IMPONIBLE,
IVA,
IMPORTE_IVA,
IMPORTE_TOTAL,
ID_FORMA_PAGO)
AS
SELECT
PEDIDOS_CLIENTE.ID,
PEDIDOS_CLIENTE.ID_EMPRESA,
PEDIDOS_CLIENTE.ID_CLIENTE,
V_CLIENTES.NOMBRE,
PEDIDOS_CLIENTE.REFERENCIA,
V_PED_CLI_SITUACION.SITUACION,
PEDIDOS_CLIENTE.FECHA_PEDIDO,
PEDIDOS_CLIENTE.CALLE,
PEDIDOS_CLIENTE.CODIGO_POSTAL,
PEDIDOS_CLIENTE.POBLACION,
PEDIDOS_CLIENTE.PROVINCIA,
PEDIDOS_CLIENTE.PERSONA_CONTACTO,
PEDIDOS_CLIENTE.TELEFONO,
PEDIDOS_CLIENTE.OBSERVACIONES,
PEDIDOS_CLIENTE.INCIDENCIAS,
PEDIDOS_CLIENTE.INCIDENCIAS_ACTIVAS,
PEDIDOS_CLIENTE.FECHA_ALTA,
PEDIDOS_CLIENTE.FECHA_MODIFICACION,
PEDIDOS_CLIENTE.USUARIO,
PEDIDOS_CLIENTE.IMPORTE_NETO,
PEDIDOS_CLIENTE.IMPORTE_PORTE,
PEDIDOS_CLIENTE.DESCUENTO,
PEDIDOS_CLIENTE.IMPORTE_DESCUENTO,
PEDIDOS_CLIENTE.BASE_IMPONIBLE,
PEDIDOS_CLIENTE.IVA,
PEDIDOS_CLIENTE.IMPORTE_IVA,
PEDIDOS_CLIENTE.IMPORTE_TOTAL,
PEDIDOS_CLIENTE.ID_FORMA_PAGO
FROM
PEDIDOS_CLIENTE
LEFT OUTER JOIN V_CLIENTES ON (PEDIDOS_CLIENTE.ID_CLIENTE = V_CLIENTES.ID)
LEFT OUTER JOIN V_PED_CLI_SITUACION ON (V_PED_CLI_SITUACION.ID_PEDIDO = PEDIDOS_CLIENTE.ID);