129 lines
3.3 KiB
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);
|
|
|