Files
Customer/CONN/Once/CONN29.sql
2012-09-23 15:37:06 +00:00

67 lines
2.7 KiB
SQL

-- CONN29
--
--
SET ECHO ON
SPOOL xconn29.lst
PROMPT $Revision$
/* Update de status van een bestelaanvraag met de laagste status van de aanvraagitems
indien het een aanvraag betreft waaraan spook opdrachten zitten */
UPDATE bes_bestelling b
SET bes_bestelling_status =
(SELECT MIN (bes_bestelling_item_status)
FROM bes_bestelling_item bi
WHERE b.bes_bestelling_key = bi.bes_bestelling_key)
WHERE b.bes_bestelling_key IN
(SELECT b.bes_bestelling_key
FROM bes_bestelling b, bes_bestelopdr_item oi, bes_bestelopdr o
WHERE b.bes_bestelling_key || '/1' = bes_bestelopdr_id
AND o.bes_bestelopdr_key = oi.bes_bestelopdr_key
AND NOT EXISTS
(SELECT b.bes_bestelopdr_item_key
FROM bes_bestelling_item b
WHERE b.bes_bestelopdr_item_key =
oi.bes_bestelopdr_item_key));
/* Verwijder bestelopdrachtitems als deze niet gekoppeld zijn aan bestelaanvraag items */
DELETE bes_bestelopdr_item oi
WHERE NOT EXISTS
(SELECT b.bes_bestelopdr_item_key
FROM bes_bestelling_item b
WHERE b.bes_bestelopdr_item_key = oi.bes_bestelopdr_item_key)
AND NOT EXISTS (SELECT f.bes_bestelopdr_key
FROM fin_factuur f
WHERE f.bes_bestelopdr_key = oi.bes_bestelopdr_key);
/* Verwijder bestelopdracht records indien deze geen kinderen (bes_bestelopdr_items) heeft */
DELETE bes_bestelopdr bo
WHERE NOT EXISTS (SELECT boi.bes_bestelopdr_item_key
FROM bes_bestelopdr_item boi
WHERE bo.bes_bestelopdr_key = boi.bes_bestelopdr_key)
AND NOT EXISTS (SELECT f.bes_bestelopdr_key
FROM fin_factuur f
WHERE f.bes_bestelopdr_key = bo.bes_bestelopdr_key);
/* de bes_bestelling_item_cnt moet altijd gelijk zijn aan het aantal bestel_item records. */
UPDATE bes_bestelling b
SET bes_bestelling_item_cnt =
(SELECT COUNT ( * )
FROM bes_bestelling_item i
WHERE i.bes_bestelling_key = b.bes_bestelling_key)
WHERE bes_bestelling_key IN
(SELECT bkey
FROM (SELECT bes_bestelling_key bkey,
bes_bestelling_item_cnt bcnt,
(SELECT COUNT ( * )
FROM bes_bestelling_item i
WHERE i.bes_bestelling_key = b.bes_bestelling_key)
bitem
FROM bes_bestelling b)
WHERE bcnt <> bitem);
COMMIT;
SPOOL OFF
--@conn.sql