67 lines
2.7 KiB
SQL
67 lines
2.7 KiB
SQL
-- CONN29
|
|
--
|
|
--
|
|
SET ECHO ON
|
|
SPOOL xconn29.lst
|
|
PROMPT $Revision: 1 $
|
|
|
|
/* 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
|