Files
Customer/onces/VEBE/vebe_convert_wagenpark.sql
Marcel Bourseau 0bda9e470b VEBE#35792: wagenparkbeheer
svn path=/Customer/; revision=28689
2016-03-30 15:00:20 +00:00

122 lines
4.0 KiB
SQL

-- Customer specific once-script VEBE.
--
-- (c) 2011 SG|facilitor bv
-- $Revision$
-- $Id$
--
-- Support: +31 53 4800700
SET ECHO ON
SPOOL vebe_convert_wagenpark
SET DEFINE OFF
CREATE OR REPLACE PROCEDURE vebe_convert_wagenparklinkauto
AS
BEGIN
-- Eerst alle LEASEcontracten die zijn geimporteerd, het ins_deel (= auto) eraan koppelen,
-- Dat doen we door CNT-kenmerk 'Kenteken-Conversie' (key 22) het ins_deel te zoeken en die aan het contract te koppelen.
INSERT INTO cnt_contract_object (cnt_contract_key, cnt_ins_srtdeel_key, cnt_ins_deel_key)
SELECT c.cnt_contract_key, d.ins_srtdeel_key, d.ins_deel_key
FROM cnt_contract c, cnt_kenmerkcontract kc, ins_deel d
WHERE c.ins_discipline_key = 21
AND kc.cnt_contract_key = c.cnt_contract_key
AND KC.CNT_KENMERK_KEY = 22
AND UPPER(D.INS_DEEL_OMSCHRIJVING) = UPPER(KC.CNT_KENMERKCONTRACT_WAARDE);
-- Hetzelfde voor alle GEBRUIKScontracten die zijn geimporteerd, het ins_deel (= auto) eraan koppelen,
INSERT INTO cnt_contract_object (cnt_contract_key, cnt_ins_srtdeel_key, cnt_ins_deel_key)
SELECT c.cnt_contract_key, d.ins_srtdeel_key, d.ins_deel_key
FROM cnt_contract c, cnt_kenmerkcontract kc, ins_deel d
WHERE c.ins_discipline_key = 22
AND kc.cnt_contract_key = c.cnt_contract_key
AND KC.CNT_KENMERK_KEY = 23
AND UPPER(D.INS_DEEL_OMSCHRIJVING) = UPPER(KC.CNT_KENMERKCONTRACT_WAARDE);
END;
/
CREATE OR REPLACE PROCEDURE vebe_convert_wagenparkberijder
AS
-- Tenslotte gaan we de berijders nog registreren bij de GEBRUIKScontracten, dus alle GEBRUIKSCONTRACTEN (key 22) die nog geen berijder hebben (zodat deze conversie herhaaldelijk kan plaatsvinden)
CURSOR c1
IS
SELECT * FROM cnt_contract c
WHERE c.ins_discipline_key = 22
AND c.cnt_prs_perslid_key IS NULL;
v_prs_perslid_key NUMBER (10);
v_perslid_nr VARCHAR2 (100);
BEGIN
-- Tenslotte gaan we de berijders nog registreren bij de GEBRUIKScontracten
FOR rc IN c1
LOOP
SELECT MAX(CNT_KENMERKCONTRACT_WAARDE)
INTO v_perslid_nr
FROM cnt_kenmerkcontract kc
WHERE kc.cnt_contract_key = rc.cnt_contract_key
AND KC.CNT_KENMERK_KEY = 24;
IF v_perslid_nr IS NOT NULL
THEN
-- Er is een persoonsnummer bekend, die gaan we converteren in cnt_prs_perslid_key
SELECT MAX(p.prs_perslid_key)
INTO v_prs_perslid_key
FROM prs_perslid p
WHERE p.prs_perslid_nr = v_perslid_nr;
IF v_prs_perslid_key IS NOT NULL
THEN
-- En van dat persoonsnummer bestaat werkelijk een prs_perslid record,
-- Het bedrijf moet dan leeg worden gemaakt, anders gaat de contraint fout.
UPDATE cnt_contract c
SET cnt_prs_bedrijf_key = NULL,
cnt_prs_perslid_key = v_prs_perslid_key
WHERE c.cnt_contract_key = rc.cnt_contract_key;
ELSE
-- Er is geen persoon bekend met dat personeelsnummer, die willen we wel loggen
-- Dat doen we door bij het contract in het kenmerk 'Personeelsnr-Conversie' (key 24) een !!! ervoor te plaatsen
UPDATE cnt_kenmerkcontract kc
SET CNT_KENMERKCONTRACT_WAARDE = '!!!' || CNT_KENMERKCONTRACT_WAARDE
WHERE kc.cnt_contract_key = rc.cnt_contract_key
AND KC.CNT_KENMERK_KEY = 24;
END IF;
ELSE
-- Er is geen persoon bij de gebruiksovereenkomst geregistreerd, waarschijnlijk betreft het geen gebruiksovereenkomst en kan die handmatig verwijderd worden.
-- Dat willen we markeren door bij het contract in het kenmerk 'Personeelsnr-Conversie' (key 24) een @@@ ervoor te plaatsen
UPDATE cnt_kenmerkcontract kc
SET CNT_KENMERKCONTRACT_WAARDE = '@@@' || CNT_KENMERKCONTRACT_WAARDE
WHERE kc.cnt_contract_key = rc.cnt_contract_key
AND KC.CNT_KENMERK_KEY = 24;
END IF;
END LOOP;
END;
/
BEGIN
vebe_convert_wagenparklinkauto ();
vebe_convert_wagenparkberijder ();
END;
/
DROP PROCEDURE vebe_convert_wagenparklinkauto;
DROP PROCEDURE vebe_convert_wagenparkberijder;
COMMIT:
SPOOL OFF