-- 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


