-- Script containing customer specific configuration sql statements for vebe: Vebego
-- $Revision$
-- $Id$

DEFINE thisfile = 'VEBE.SQL'
DEFINE dbuser   = '^VEBE'
DEFINE custid   = 'VEBE'

SET ECHO ON
SET DEFINE ON
COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT;
WHENEVER SQLERROR EXIT;
SELECT adm.scriptspoolfile('&dbuser', '&thisfile') AS fcltlogfile FROM DUAL;
WHENEVER SQLERROR CONTINUE;
SPOOL &fcltlogfile
SET DEFINE OFF

--
-- Personen import
--

CREATE OR REPLACE PROCEDURE vebe_post_import_perslid (p_import_key IN NUMBER)
AS

	-- Kenmerk 1: Indirect of direct
	-- Kenmerk 2: Adres van medewerker (straatnaam + huisnr)
	-- Kenmerk 3: Woonplaats van medewerker (postcode + woonplaats)
	-- Kenmerk 4: Contact via contactpersoon (maw de contactgegevens als mail, mobile etc zijn van contactpersoon van medewerkers en niet van hem/haar zelf)
  CURSOR c_perslid_kenmerken
  IS
      SELECT prs_perslid_key, prs_perslid_naam, prs_perslid_email, prs_kenmerk1, prs_kenmerk2, prs_kenmerk3, prs_kenmerk4
      FROM fac_imp_perslid
      WHERE fac_import_key = p_import_key;

	 oracle_err_num            NUMBER;
   oracle_err_mes            VARCHAR2 (200);
   v_errormsg                VARCHAR2 (400);
   v_errorhint               VARCHAR2 (400);
BEGIN

	-- Kenmerk 1: Indirect of direct heeft de waarde I of D. Een I wordt vertaald naar 1, een D naar 0. Een andere letter of NULL value wordt naar 0 vertaald.
	UPDATE fac_imp_perslid
	SET prs_kenmerk1 = DECODE(UPPER(prs_kenmerk1),'I','1','D','0','0')
	WHERE fac_import_key = p_import_key;

	-- Kenmerk 4: Contactvia heeft waarde ja of nee of leeg (NULL). Een ja wordt vertaald naar 1, een nee naar 0. Iets anders of NULL value wordt naar 0 vertaald.
	UPDATE fac_imp_perslid
	SET prs_kenmerk4 = DECODE(UPPER(prs_kenmerk4),'JA','1','NEE','0','0')
	WHERE fac_import_key = p_import_key;

EXCEPTION
   WHEN OTHERS
   THEN
      oracle_err_num := SQLCODE;
      oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
      v_errormsg := 'Error ' || oracle_err_num || '/' || oracle_err_mes;
      fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint);
END vebe_post_import_perslid;
/


CREATE OR REPLACE PROCEDURE vebe_import_perslid (p_import_key IN NUMBER)
AS
   oracle_err_num            NUMBER;
   oracle_err_mes            VARCHAR2 (200);
   v_errormsg                VARCHAR2 (400);
   v_errorhint               VARCHAR2 (400);

BEGIN

	   	v_errorhint := 'Generieke update';
	   	-- de sequence array staat beschreven in PRS_PAC.SRC bij de prs.import_perslid proc

	   	-- 1.Roepnaam	2.Voorletters	3.Tussenvoegsel	4.Achternaam	5.Persnr.	6.Afdnr.	7.Functie	8.Email	9.Mobile	10.Telefoon	11.Loginnaam	12.Direct-Indirect	13.Straat-huisnr	14.Postcode-Woonplaats	15.Contactvia

	   	prs.import_perslid (p_import_key,
	                       '0;0;0;0;0;0;6;4;3;1;' ||
	                       '2;0;0;0;0;10;9;8;0;5;' ||
	                       '7;11;0;0;0;0;12;13;14;15;'||
	                       '0;0;0;0;0;0;0;0;0;0;'||
	                       '0;0;0;0;0;0',
                         'Roepnaam;Voorletters;Tussenvoegsel;Achternaam;Persnr.;Afdnr.;Functie;Email;Mobile;Telefoon;Loginnaam%'
	                       );

			vebe_post_import_perslid(p_import_key);

			COMMIT;

EXCEPTION
   WHEN OTHERS
   THEN
      oracle_err_num := SQLCODE;
      oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
      v_errormsg := 'Error ' || oracle_err_num || '/' || oracle_err_mes;
      fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint);
END vebe_import_perslid;
/


CREATE OR REPLACE PROCEDURE vebe_post_update_perslid (p_import_key IN NUMBER)
AS

	-- Kenmerk 1: Indirect of direct
	-- Kenmerk 2: Adres van medewerker (straatnaam + huisnr)
	-- Kenmerk 3: Woonplaats van medewerker (postcode + woonplaats)
	-- Kenmerk 4: Contact via contactpersoon (maw de contactgegevens als mail, mobile etc zijn van contactpersoon van medewerkers en niet van hem/haar zelf)
  CURSOR c_perslid_kenmerken
  IS
      SELECT prs_perslid_key, prs_perslid_naam, prs_perslid_email, prs_kenmerk1, prs_kenmerk2, prs_kenmerk3, prs_kenmerk4
      FROM fac_imp_perslid
      WHERE fac_import_key = p_import_key;



BEGIN
   FOR rc IN c_perslid_kenmerken
   LOOP
        BEGIN
        		-- Indirect of direct heeft vaste kenmerk-key 1000
        	 	prs.upsertkenmerk(1000, rc.prs_perslid_key, rc.prs_kenmerk1);
        	 	-- Adres heeft vaste kenmerk-key 1001
        	 	prs.upsertkenmerk(1001, rc.prs_perslid_key, rc.prs_kenmerk2);
						-- Postcode + Woonplaats heeft vaste kenmerk-key 1002
        	 	prs.upsertkenmerk(1002, rc.prs_perslid_key, rc.prs_kenmerk3);
						-- Contactvia heeft vaste kenmerk-key 1004
        	 	prs.upsertkenmerk(1004, rc.prs_perslid_key, rc.prs_kenmerk4);

        EXCEPTION
            WHEN OTHERS
                THEN
                fac.imp_writelog (p_import_key,
                                'W',
                                'Post update bij persoon' || rc.prs_perslid_key || ' is NIET volledig uitgevoerd )',
                                'Naam:' || rc.prs_perslid_naam || ' Email:' || rc.prs_perslid_email
                                );
        END;
   END LOOP;


END;
/



CREATE OR REPLACE PROCEDURE vebe_update_perslid (
   p_import_key IN NUMBER
) IS
	-- Alle personen verwijderen die niet meer in import bestand voorkomen.
	-- Anker bij vebe is personeelnummer, hieronder de query om alle personen te verwijderen die:
	-- a) niet meer in het importbestand staan, wel in Facilitor, en
	-- b) waarvan de persoon in Facilitor een gevulde personeelsnummer heeft (leeg personeelsnummer van af blijven, dit zijn stagiairs etc die handmatig zijn toegevoegd)
	-- c) waarvan de persoon in Facilitor niet begint met een _ in de loginnaam (ook van af blijven)
	-- d)

	CURSOR c_del
	IS
	    SELECT p.prs_perslid_key, p.prs_perslid_nr, pf.prs_perslid_naam_full
	      FROM fac_imp_perslid i, prs_perslid p, prs_v_perslid_fullnames_all pf
	     WHERE UPPER(p.prs_perslid_nr) = UPPER(i.prs_perslid_nr(+))
	     	 AND p.prs_perslid_verwijder IS NULL
	     	 AND SUBSTR(p.prs_perslid_oslogin,1,1) <> '_'
	     	 AND p.prs_perslid_nr IS NOT NULL
	       AND pf.prs_perslid_key = p.prs_perslid_key
	       AND i.prs_perslid_nr IS NULL
	    ORDER BY 2;

	v_count           NUMBER;

BEGIN
    -- generic update

    SELECT count(*)
      INTO v_count
      FROM fac_imp_perslid;

    IF v_count < 100
    THEN
      fac.imp_writelog (p_import_key,
                        'E',
                        'Het aantal te importeren personen is te klein ('
                        || TO_CHAR (v_count) || ')',
                        'Zie Specificatie (minimaal 100 personen)'
      );
      RETURN;
    END IF;

  -- 'LOGIN' betekent dat op basis van Login wordt gematched.
  -- 'NR' betekent dat op basis van Personeelsnummer wordt gematched.
  -- 'A' betekent altijd alle (andere/overige) werkplekken verwijderen
  prs.update_perslid (p_import_key, 'NR', NULL);

  -- Verwijder personen die niet meer in de import voorkomen.
  FOR rec IN c_del
  LOOP
     BEGIN
       prs.delete_perslid (p_import_key, rec.prs_perslid_key);
     END;
  END LOOP;

	vebe_post_update_perslid(p_import_key);

END vebe_update_perslid;
/

-- View met 1 record voor de combinatie de leasecontractgegevens (ins_discipline_key = 21), de gebruiksovereenkomstgegevens (ins_discipline_key = 22) en de auto-gegevens.

CREATE OR REPLACE VIEW vebe_cnt_lease_en_gebruiks_ovk
(
   extra_key,
   cnt_lease_key,
   prs_bedrijf_key,
   cnt_gebruik_key,
   prs_berijder_key,
   ins_deel_key,
   prs_lease_perslid_key_eig,
   cnt_lease_nummer_intern,
   cnt_lease_versie,
   cnt_lease_omschr,
   cnt_lease_looptijd_van,
   cnt_lease_looptijd_tot,
   cnt_lease_looptijd_mnd,
   perc_lease_duur,
   lease_weken_tegaan,
   cnt_lease_rappeldatum,
   cnt_lease_opzegdatum,
   cnt_lease_opzegtermijn,
   cnt_lease_rappeltermijn,
   cnt_lease_status,
   lease_fase_actief,
   cnt_lease_status_txt,
   cnt_lease_kosten,
   cnt_lease_termijnkosten,
   lease_disc_key,
   lease_eigenaar_key,
   lease_eigenaar_afdeling_naam,
   prs_bedrijf_naam,
   prs_gebr_perslid_key_eig,
   cnt_gebruik_nummer_intern,
   cnt_gebruik_versie,
   cnt_gebruik_omschr,
   cnt_gebruik_looptijd_van,
   cnt_gebruik_looptijd_tot,
   perc_gebruik_duur,
   gebruik_weken_tegaan,
   cnt_gebruik_rappeldatum,
   cnt_gebruik_opzegdatum,
   cnt_gebruik_opzegtermijn,
   cnt_gebruik_rappeltermijn,
   cnt_gebruik_status,
   gebruik_fase_actief,
   cnt_gebruik_status_txt,
   gebruik_disc_key,
   gebruik_eigenaar_key,
   gebruik_eigenaar_afdeling_naam,
   prs_eigenaar_naam_full,
   prs_eigenaar_naam_friendly,
   prs_berijder_prsnr,
   prs_berijder_naam_full,
   prs_berijder_naam_friendly,
   ins_deel_omschrijving,
   ins_deel_opmerking,
   ins_srtdeel_omschrijving,
   gov_huidig_jaar,
   gov_vorig_jaar
)
AS
   SELECT c1.cnt_contract_key extra_key,
          c1.cnt_contract_key cnt_lease_key,
          b.prs_bedrijf_key,
          c2.cnt_contract_key cnt_gebruik_key,
          p2.prs_perslid_key prs_berijder_key,
          d.ins_deel_key,
          c1.prs_perslid_key_eig prs_lease_perslid_key_eig,
          c1.cnt_contract_nummer_intern cnt_lease_nummer_intern,
          c1.cnt_contract_versie cnt_lease_versie,
          c1.cnt_contract_omschrijving cnt_lease_omschr,
          c1.cnt_contract_looptijd_van cnt_lease_looptijd_van,
          c1.cnt_contract_looptijd_tot cnt_lease_looptijd_tot,
          12
          * (  TO_CHAR (c1.cnt_contract_looptijd_tot, 'YYYY')
             - TO_CHAR (c1.cnt_contract_looptijd_van, 'YYYY')
             - 1)
          + (12 - TO_CHAR (c1.cnt_contract_looptijd_van, 'MM'))
          + (TO_CHAR (c1.cnt_contract_looptijd_tot, 'MM'))
             cnt_lease_looptijd_mnd,
          ROUND(100
                * LEAST (
                     1,
                     (SYSDATE - LEAST (c1.cnt_contract_looptijd_van, SYSDATE))
                     / (GREATEST (
                           c1.cnt_contract_looptijd_tot
                           - c1.cnt_contract_looptijd_van,
                           1
                        ))
                  ))
             perc_lease_duur,
          ROUND( (c1.cnt_contract_looptijd_tot
                  - GREATEST (c1.cnt_contract_looptijd_van,
                              LEAST (SYSDATE, c1.cnt_contract_looptijd_tot)))
                / 7)
             lease_weken_tegaan,
          cnt.cnt_getrappeldatum (c1.cnt_contract_key) cnt_lease_rappeldatum,
          cnt.cnt_getopzegdatum (c1.cnt_contract_key) cnt_lease_opzegdatum,
          (SELECT lcl.x ('cnt_termijn_omschrijving',
                         cnt_termijn_key,
                         cnt_termijn_omschrijving)
             FROM cnt_termijn
            WHERE cnt_termijn_key = c1.cnt_contract_opzegtermijn)
             cnt_lease_opzegtermijn,
          (SELECT lcl.x ('cnt_termijn_omschrijving',
                         cnt_termijn_key,
                         cnt_termijn_omschrijving)
             FROM cnt_termijn
            WHERE cnt_termijn_key = c1.cnt_contract_rappeltermijn)
             cnt_lease_rappeltermijn,
          c1.cnt_contract_status cnt_lease_status,
          DECODE (
             cnt.cnt_contract_status (
                c1.cnt_contract_looptijd_van,
                cnt.cnt_getrappeldatum (c1.cnt_contract_key),
                cnt.cnt_getopzegdatum (c1.cnt_contract_key),
                c1.cnt_contract_looptijd_tot
             ),
             0,
             lcl.l ('lcl_cnt_future'),
             1,
             lcl.l ('lcl_cnt_topical'),
             2,
             lcl.l ('lcl_cnt_warn'),
             3,
             lcl.l ('lcl_cnt_cancel'),
             4,
             lcl.l ('lcl_cnt_past')
          )
             lease_fase_actief,
          DECODE (
             c1.cnt_contract_status,
             0,
             DECODE (fac.getsetting ('cnt_contract_approval'),
                     1, lcl.l ('lcl_cnt_active_approval'),
                     lcl.l ('lcl_cnt_active')),
             1,
             lcl.l ('lcl_cnt_inactive'),
             2,
             lcl.l ('lcl_cnt_new'),
             3,
             lcl.l ('lcl_cnt_forapproval')
          )
             cnt_lease_status_txt,
          c1.cnt_contract_kosten cnt_lease_kosten,
          c1.cnt_contract_termijnkosten cnt_lease_termijnkosten,
          COALESCE (c1.ins_discipline_key, -1) lease_disc_key,
          c1.prs_afdeling_key_eig lease_eigenaar_key,
          (SELECT prs_afdeling_naam
             FROM prs_v_afdeling
            WHERE prs_afdeling_key = c1.prs_afdeling_key_eig)
             lease_eigenaar_afdeling_naam,
          b.prs_bedrijf_naam,
          c2.prs_perslid_key_eig prs_gebr_perslid_key_eig,
          c2.cnt_contract_nummer_intern cnt_gebruik_nummer_intern,
          c2.cnt_contract_versie cnt_gebruik_versie,
          c2.cnt_contract_omschrijving cnt_gebruik_omschr,
          c2.cnt_contract_looptijd_van cnt_gebruik_looptijd_van,
          c2.cnt_contract_looptijd_tot cnt_gebruik_looptijd_tot,
          ROUND(100
                * LEAST (
                     1,
                     (SYSDATE - LEAST (c2.cnt_contract_looptijd_van, SYSDATE))
                     / (GREATEST (
                           c2.cnt_contract_looptijd_tot
                           - c2.cnt_contract_looptijd_van,
                           1
                        ))
                  ))
             perc_gebruik_duur,
          ROUND( (c2.cnt_contract_looptijd_tot
                  - GREATEST (c2.cnt_contract_looptijd_van,
                              LEAST (SYSDATE, c2.cnt_contract_looptijd_tot)))
                / 7)
             gebruik_weken_tegaan,
          cnt.cnt_getrappeldatum (c2.cnt_contract_key)
             cnt_gebruik_rappeldatum,
          cnt.cnt_getopzegdatum (c2.cnt_contract_key) cnt_gebruik_opzegdatum,
          (SELECT lcl.x ('cnt_termijn_omschrijving',
                         cnt_termijn_key,
                         cnt_termijn_omschrijving)
             FROM cnt_termijn
            WHERE cnt_termijn_key = c2.cnt_contract_opzegtermijn)
             cnt_gebruik_opzegtermijn,
          (SELECT lcl.x ('cnt_termijn_omschrijving',
                         cnt_termijn_key,
                         cnt_termijn_omschrijving)
             FROM cnt_termijn
            WHERE cnt_termijn_key = c2.cnt_contract_rappeltermijn)
             cnt_gebruik_rappeltermijn,
          c2.cnt_contract_status cnt_gebruik_status,
          DECODE (
             cnt.cnt_contract_status (
                c2.cnt_contract_looptijd_van,
                cnt.cnt_getrappeldatum (c2.cnt_contract_key),
                cnt.cnt_getopzegdatum (c2.cnt_contract_key),
                c2.cnt_contract_looptijd_tot
             ),
             0,
             lcl.l ('lcl_cnt_future'),
             1,
             lcl.l ('lcl_cnt_topical'),
             2,
             lcl.l ('lcl_cnt_warn'),
             3,
             lcl.l ('lcl_cnt_cancel'),
             4,
             lcl.l ('lcl_cnt_past')
          )
             gebruik_fase_actief,
          DECODE (
             c2.cnt_contract_status,
             0,
             DECODE (fac.getsetting ('cnt_contract_approval'),
                     1, lcl.l ('lcl_cnt_active_approval'),
                     lcl.l ('lcl_cnt_active')),
             1,
             lcl.l ('lcl_cnt_inactive'),
             2,
             lcl.l ('lcl_cnt_new'),
             3,
             lcl.l ('lcl_cnt_forapproval')
          )
             cnt_gebruik_status_txt,
          COALESCE (c2.ins_discipline_key, -1) gebruik_disc_key,
          c2.prs_afdeling_key_eig gebruik_eigenaar_key,
          (SELECT prs_afdeling_naam
             FROM prs_v_afdeling
            WHERE prs_afdeling_key = c2.prs_afdeling_key_eig)
             gebruik_eigenaar_afdeling_naam,
          p1.prs_perslid_naam_full prs_eigenaar_naam_full,
          p1.prs_perslid_naam_friendly prs_eigenaar_naam_friendly,
          p2.prs_perslid_nr prs_berijder_prsnr,
          p2.prs_perslid_naam_full prs_berijder_naam_full,
          p2.prs_perslid_naam_friendly prs_berijder_naam_friendly,
          d.ins_deel_omschrijving,
          d.ins_deel_opmerking,
          sd.ins_srtdeel_omschrijving,
          (SELECT 'Ja'
             FROM cnt_contract
            WHERE TO_CHAR (SYSDATE, 'YYYY') BETWEEN TO_CHAR (
                                                       cnt_contract_looptijd_van,
                                                       'YYYY')
                                                AND  TO_CHAR (
                                                        cnt_contract_looptijd_tot,
                                                        'YYYY')
                  AND cnt_contract_key = c2.cnt_contract_key)
             gov_huidig_jaar,
          (SELECT 'Ja'
             FROM cnt_contract
            WHERE TO_CHAR (ADD_MONTHS (SYSDATE, -12), 'YYYY') BETWEEN TO_CHAR (
                                                                         cnt_contract_looptijd_van,
                                                                         'YYYY')
                                                                  AND  TO_CHAR (
                                                                          cnt_contract_looptijd_tot,
                                                                          'YYYY')
                  AND cnt_contract_key = c2.cnt_contract_key)
             gov_vorig_jaar
     FROM cnt_v_aanwezigcontract c1,
          prs_v_perslid_fullnames_all p1,
          prs_bedrijf b,
          cnt_contract_object co1,
          cnt_v_aanwezigcontract c2,
          (SELECT pf.prs_perslid_key,
                  pf.prs_perslid_naam_friendly,
                  pf.prs_perslid_naam_full,
                  p.prs_perslid_nr
             FROM prs_v_perslid_fullnames_all pf, prs_perslid p
            WHERE pf.prs_perslid_key = p.prs_perslid_key) p2,
          cnt_contract_object co2,
          ins_deel d,
          ins_srtdeel sd
    WHERE b.prs_bedrijf_key = c1.cnt_prs_bedrijf_key
      AND c1.ins_discipline_key = 21
      AND co1.cnt_contract_key = c1.cnt_contract_key
      AND co1.cnt_ins_deel_key = co2.cnt_ins_deel_key
      AND co2.cnt_contract_key = c2.cnt_contract_key
      AND c2.ins_discipline_key = 22
      AND COALESCE (c2.cnt_contract_versie, '0') =
             (SELECT COALESCE (MAX (cnt_contract_versie), '0')
                FROM cnt_contract c3
               WHERE c3.cnt_contract_nummer_intern =
                        c2.cnt_contract_nummer_intern)
      AND c1.prs_perslid_key_eig = p1.prs_perslid_key(+)
      AND c2.cnt_prs_perslid_key = p2.prs_perslid_key(+)
      AND d.ins_srtdeel_key = sd.ins_srtdeel_key
      AND d.ins_deel_key = co1.cnt_ins_deel_key
      AND COALESCE (c1.cnt_contract_versie, '0') =
             (SELECT COALESCE (MAX (cnt_contract_versie), '0')
                FROM cnt_v_aanwezigcontract c4
               WHERE c4.cnt_contract_nummer_intern =
                        c1.cnt_contract_nummer_intern)
      and c2.cnt_contract_looptijd_tot > c1.cnt_contract_looptijd_van
      and c2.cnt_contract_looptijd_van < c1.cnt_contract_looptijd_tot;


-- TEMP view t.b.v. Basis UDR rapport...
CREATE OR REPLACE VIEW vebe_rap_wagenpark_tmp
(
   extra_key,
   cnt_lease_key,
   prs_bedrijf_key,
   cnt_gebruik_key,
   prs_berijder_key,
   ins_deel_key,
   prs_lease_perslid_key_eig,
   cnt_lease_nummer_intern,
   cnt_lease_versie,
   cnt_lease_omschr,
   cnt_lease_looptijd_van,
   cnt_lease_looptijd_tot,
   cnt_lease_looptijd_mnd,
   perc_lease_duur,
   lease_weken_tegaan,
   cnt_lease_rappeldatum,
   cnt_lease_opzegdatum,
   cnt_lease_opzegtermijn,
   cnt_lease_rappeltermijn,
   cnt_lease_status,
   lease_fase_actief,
   cnt_lease_status_txt,
   cnt_lease_kosten,
   cnt_lease_termijnkosten,
   lease_disc_key,
   lease_eigenaar_key,
   lease_eigenaar_afdeling_naam,
   prs_bedrijf_naam,
   prs_gebr_perslid_key_eig,
   cnt_gebruik_nummer_intern,
   cnt_gebruik_versie,
   cnt_gebruik_omschr,
   cnt_gebruik_looptijd_van,
   cnt_gebruik_looptijd_tot,
   perc_gebruik_duur,
   gebruik_weken_tegaan,
   cnt_gebruik_rappeldatum,
   cnt_gebruik_opzegdatum,
   cnt_gebruik_opzegtermijn,
   cnt_gebruik_rappeltermijn,
   cnt_gebruik_status,
   gebruik_fase_actief,
   cnt_gebruik_status_txt,
   gebruik_disc_key,
   gebruik_eigenaar_key,
   gebruik_eigenaar_afdeling_naam,
   prs_eigenaar_naam_full,
   prs_eigenaar_naam_friendly,
   prs_berijder_prsnr,
   prs_berijder_naam_full,
   prs_berijder_naam_friendly,
   ins_srtdeel_omschrijving,
   ins_deel_omschrijving,
   ins_deel_opmerking,
   gov_huidig_jaar,
   gov_vorig_jaar,
   ins_deel_belettering,
   ins_deel_brandstof,
   ins_deel_leasecategorie,
   ins_deel_perc_bijtelling,
   ins_deel_merk,
   ins_deel_type,
   ins_deel_fiscale_waarde,
   ins_deel_kleur,
   cnt_lease_jaarkilometrage,
   cnt_lease_rayon,
   cnt_gebruik_verklaring,
   prs_berijder_indirect,
   mut_datum_fiscale_waardehuidig,
   mut_datum_gebr_ovkhuidig,
   mut_datum_verklaringhuidig,
   mut_datum_in_directhuidig,
   mut_datum_fiscale_waardevorig,
   mut_datum_gebr_ovkvorig,
   mut_datum_verklaringvorig,
   mut_datum_in_directvorig
)
AS
   SELECT extra_key,
          cnt_lease_key,
          prs_bedrijf_key,
          cnt_gebruik_key,
          prs_berijder_key,
          ins_deel_key,
          prs_lease_perslid_key_eig,
          cnt_lease_nummer_intern,
          cnt_lease_versie,
          cnt_lease_omschr,
          cnt_lease_looptijd_van,
          cnt_lease_looptijd_tot,
          cnt_lease_looptijd_mnd,
          perc_lease_duur,
          lease_weken_tegaan,
          cnt_lease_rappeldatum,
          cnt_lease_opzegdatum,
          cnt_lease_opzegtermijn,
          cnt_lease_rappeltermijn,
          cnt_lease_status,
          lease_fase_actief,
          cnt_lease_status_txt,
          cnt_lease_kosten,
          cnt_lease_termijnkosten,
          lease_disc_key,
          lease_eigenaar_key,
          lease_eigenaar_afdeling_naam,
          prs_bedrijf_naam,
          prs_gebr_perslid_key_eig,
          cnt_gebruik_nummer_intern,
          cnt_gebruik_versie,
          cnt_gebruik_omschr,
          cnt_gebruik_looptijd_van,
          cnt_gebruik_looptijd_tot,
          perc_gebruik_duur,
          gebruik_weken_tegaan,
          cnt_gebruik_rappeldatum,
          cnt_gebruik_opzegdatum,
          cnt_gebruik_opzegtermijn,
          cnt_gebruik_rappeltermijn,
          cnt_gebruik_status,
          gebruik_fase_actief,
          cnt_gebruik_status_txt,
          gebruik_disc_key,
          gebruik_eigenaar_key,
          gebruik_eigenaar_afdeling_naam,
          prs_eigenaar_naam_full,
          prs_eigenaar_naam_friendly,
          prs_berijder_prsnr,
          prs_berijder_naam_full,
          prs_berijder_naam_friendly,
          ins_srtdeel_omschrijving,
          ins_deel_omschrijving,
          ins_deel_opmerking,
          COALESCE (gov_huidig_jaar, 'Nee') gov_huidig_jaar,
          COALESCE (gov_vorig_jaar, 'Nee') gov_vorig_jaar,
          (SELECT ud.fac_usrdata_code
             FROM fac_usrdata ud
            WHERE ud.fac_usrdata_key =
                     (SELECT fac.safe_to_number (ins_kenmerkdeel_waarde)
                        FROM ins_kenmerkdeel kd
                       WHERE kd.ins_deel_key = lg.ins_deel_key
                         AND kd.ins_kenmerk_key = 1
                         AND kd.ins_kenmerkdeel_verwijder IS NULL)
              AND ud.fac_usrtab_key = 1)
             belettering,
          (SELECT ud.fac_usrdata_code
             FROM fac_usrdata ud
            WHERE ud.fac_usrdata_key =
                     (SELECT fac.safe_to_number (ins_kenmerkdeel_waarde)
                        FROM ins_kenmerkdeel kd
                       WHERE kd.ins_deel_key = lg.ins_deel_key
                         AND kd.ins_kenmerk_key = 3
                         AND kd.ins_kenmerkdeel_verwijder IS NULL)
              AND ud.fac_usrtab_key = 24)
             brandstof,
          (SELECT ud.fac_usrdata_code
             FROM fac_usrdata ud
            WHERE ud.fac_usrdata_key =
                     (SELECT fac.safe_to_number (ins_kenmerkdeel_waarde)
                        FROM ins_kenmerkdeel kd
                       WHERE kd.ins_deel_key = lg.ins_deel_key
                         AND kd.ins_kenmerk_key = 6
                         AND kd.ins_kenmerkdeel_verwijder IS NULL)
              AND ud.fac_usrtab_key = 21)
             leasecategorie,
          (SELECT ud.fac_usrdata_code
             FROM fac_usrdata ud
            WHERE ud.fac_usrdata_key =
                     (SELECT fac.safe_to_number (ins_kenmerkdeel_waarde)
                        FROM ins_kenmerkdeel kd
                       WHERE kd.ins_deel_key = lg.ins_deel_key
                         AND kd.ins_kenmerk_key = 2
                         AND kd.ins_kenmerkdeel_verwijder IS NULL)
              AND ud.fac_usrtab_key = 22)
             perc_bijtelling,
          (SELECT ud.fac_usrdata_code
             FROM fac_usrdata ud
            WHERE ud.fac_usrdata_key =
                     (SELECT fac.safe_to_number (ins_kenmerkdeel_waarde)
                        FROM ins_kenmerkdeel kd
                       WHERE kd.ins_deel_key = lg.ins_deel_key
                         AND kd.ins_kenmerk_key = 7
                         AND kd.ins_kenmerkdeel_verwijder IS NULL)
              AND ud.fac_usrtab_key = 23)
             merk,
          (SELECT ud.fac_usrdata_code
             FROM fac_usrdata ud
            WHERE ud.fac_usrdata_key =
                     (SELECT fac.safe_to_number (ins_kenmerkdeel_waarde)
                        FROM ins_kenmerkdeel kd
                       WHERE kd.ins_deel_key = lg.ins_deel_key
                         AND kd.ins_kenmerk_key = 8
                         AND kd.ins_kenmerkdeel_verwijder IS NULL)
              AND ud.fac_usrtab_key = 26)
             ins_deel_type,
          (SELECT fac.safe_to_number (ins_kenmerkdeel_waarde)
             FROM ins_kenmerkdeel kd
            WHERE kd.ins_deel_key = lg.ins_deel_key
              AND kd.ins_kenmerk_key = 4
              AND kd.ins_kenmerkdeel_verwijder IS NULL)
             fiscale_waarde,
          (SELECT ins_kenmerkdeel_waarde
             FROM ins_kenmerkdeel kd
            WHERE kd.ins_deel_key = lg.ins_deel_key
              AND kd.ins_kenmerk_key = 5
              AND kd.ins_kenmerkdeel_verwijder IS NULL)
             kleur,
          (SELECT ud.fac_usrdata_code
             FROM fac_usrdata ud
            WHERE ud.fac_usrdata_key =
                     (SELECT fac.safe_to_number (cnt_kenmerkcontract_waarde)
                        FROM cnt_kenmerkcontract kc
                       WHERE kc.cnt_contract_key = lg.cnt_lease_key
                         AND kc.cnt_kenmerk_key = 21
                         AND kc.cnt_kenmerkcontract_verwijder IS NULL)
              AND ud.fac_usrtab_key = 25)
             jaarkilometrage,
             (SELECT ud.fac_usrdata_code
             FROM fac_usrdata ud
            WHERE ud.fac_usrdata_key =
                     (SELECT fac.safe_to_number (cnt_kenmerkcontract_waarde)
                        FROM cnt_kenmerkcontract kc
                       WHERE kc.cnt_contract_key = lg.cnt_lease_key
                         AND kc.cnt_kenmerk_key = 141
                         AND kc.cnt_kenmerkcontract_verwijder IS NULL)
              AND ud.fac_usrtab_key = 141)
             Rayon,
          (SELECT ud.fac_usrdata_code
             FROM fac_usrdata ud
            WHERE ud.fac_usrdata_key =
                     (SELECT fac.safe_to_number (cnt_kenmerkcontract_waarde)
                        FROM cnt_kenmerkcontract kc
                       WHERE kc.cnt_contract_key = lg.cnt_gebruik_key
                         AND kc.cnt_kenmerk_key = 41
                         AND kc.cnt_kenmerkcontract_verwijder IS NULL)
              AND ud.fac_usrtab_key = 1)
             verklaring,
         	(SELECT DECODE (fac.safe_to_number (COALESCE(MAX(prs_kenmerklink_waarde), '0')), 0, 'Direct', 'Indirect')
             FROM prs_kenmerklink kl
            WHERE kl.prs_link_key = lg.prs_berijder_key
              AND kl.prs_kenmerk_key = 1000
              AND kl.prs_kenmerklink_verwijder IS NULL
              AND kl.prs_kenmerklink_niveau = 'P')
          in_direct,
          (SELECT fac.safe_to_date (ins_kenmerkdeel_waarde, 'dd-mm-yyyy')
             FROM ins_kenmerkdeel kd
            WHERE     kd.ins_deel_key = lg.ins_deel_key
                  AND kd.ins_kenmerk_key = 101
                  AND kd.ins_kenmerkdeel_verwijder IS NULL
                  and  to_char(fac.safe_to_date (ins_kenmerkdeel_waarde, 'dd-mm-yyyy'), 'YYYY') = to_char(sysdate, 'YYYY'))
             mut_datum_fiscale_waardehuidig,
          (SELECT fac.safe_to_date (cnt_kenmerkcontract_waarde, 'dd-mm-yyyy')
             FROM cnt_kenmerkcontract kc
            WHERE     kc.cnt_contract_key = lg.cnt_gebruik_key
                  AND kc.cnt_kenmerk_key = 81
                  AND kc.cnt_kenmerkcontract_verwijder IS NULL
                 and  to_char(fac.safe_to_date (cnt_kenmerkcontract_waarde, 'dd-mm-yyyy'), 'YYYY') = to_char(sysdate, 'YYYY'))
             mut_datum_gebr_ovkhuidig,
          (SELECT fac.safe_to_date (cnt_kenmerkcontract_waarde, 'dd-mm-yyyy')
             FROM cnt_kenmerkcontract kc
            WHERE     kc.cnt_contract_key = lg.cnt_gebruik_key
                  AND kc.cnt_kenmerk_key = 82
                  AND kc.cnt_kenmerkcontract_verwijder IS NULL
                  and  to_char(fac.safe_to_date (cnt_kenmerkcontract_waarde, 'dd-mm-yyyy'), 'YYYY') = to_char(sysdate, 'YYYY'))
             mut_datum_verklaringhuidig,
          (SELECT fac.safe_to_date (prs_kenmerklink_waarde, 'dd-mm-yyyy')
             FROM prs_kenmerklink kl
            WHERE     kl.prs_link_key = lg.prs_berijder_key
                  AND kl.prs_kenmerk_key = 1020
                  AND kl.prs_kenmerklink_verwijder IS NULL
                  AND kl.prs_kenmerklink_niveau = 'P'
                  and  to_char(fac.safe_to_date (prs_kenmerklink_waarde, 'dd-mm-yyyy'), 'YYYY') = to_char(sysdate, 'YYYY'))
             mut_datum_in_directhuidig,
          (SELECT fac.safe_to_date (ins_kenmerkdeel_waarde, 'dd-mm-yyyy')
             FROM ins_kenmerkdeel kd
            WHERE     kd.ins_deel_key = lg.ins_deel_key
                  AND kd.ins_kenmerk_key = 101
                  AND kd.ins_kenmerkdeel_verwijder IS NULL
                  and  to_char(fac.safe_to_date (ins_kenmerkdeel_waarde, 'dd-mm-yyyy'), 'YYYY') = to_char(ADD_MONTHS (SYSDATE, -12), 'YYYY'))
             mut_datum_fiscale_waardevorig,
          (SELECT fac.safe_to_date (cnt_kenmerkcontract_waarde, 'dd-mm-yyyy')
             FROM cnt_kenmerkcontract kc
            WHERE     kc.cnt_contract_key = lg.cnt_gebruik_key
                  AND kc.cnt_kenmerk_key = 81
                  AND kc.cnt_kenmerkcontract_verwijder IS NULL
                 and  to_char(fac.safe_to_date (cnt_kenmerkcontract_waarde, 'dd-mm-yyyy'), 'YYYY') = to_char(ADD_MONTHS (SYSDATE, -12), 'YYYY'))
             mut_datum_gebr_ovkvorig,
          (SELECT fac.safe_to_date (cnt_kenmerkcontract_waarde, 'dd-mm-yyyy')
             FROM cnt_kenmerkcontract kc
            WHERE     kc.cnt_contract_key = lg.cnt_gebruik_key
                  AND kc.cnt_kenmerk_key = 82
                  AND kc.cnt_kenmerkcontract_verwijder IS NULL
                  and  to_char(fac.safe_to_date (cnt_kenmerkcontract_waarde, 'dd-mm-yyyy'), 'YYYY') = to_char(ADD_MONTHS (SYSDATE, -12), 'YYYY'))
             mut_datum_verklaringvorig,
          (SELECT fac.safe_to_date (prs_kenmerklink_waarde, 'dd-mm-yyyy')
             FROM prs_kenmerklink kl
            WHERE     kl.prs_link_key = lg.prs_berijder_key
                  AND kl.prs_kenmerk_key = 1020
                  AND kl.prs_kenmerklink_verwijder IS NULL
                  AND kl.prs_kenmerklink_niveau = 'P'
                  and  to_char(fac.safe_to_date (prs_kenmerklink_waarde, 'dd-mm-yyyy'), 'YYYY') = to_char(ADD_MONTHS (SYSDATE, -12), 'YYYY'))
             mut_datum_in_directvorig
     FROM vebe_cnt_lease_en_gebruiks_ovk lg;




----- Hulptabellen tbv de salarisverwerking.


----------------------------------- Periodetabellen ----------------------------------------
CREATE OR REPLACE VIEW vebe_v_startperiode_per_jaar
(jaar, periode, week, maandag, aantal_weken)
AS
SELECT ud.fac_usrdata_code, 1, 1, fac.safe_to_date(fac_usrdata_omschr, 'dd-mm-yyyy'), fac_usrdata_volgnr
FROM  fac_usrdata ud
WHERE ud.fac_usrtab_key = 121
AND ud.fac_usrdata_verwijder IS NULL
AND ud.fac_usrdata_vervaldatum IS NULL OR ud.fac_usrdata_vervaldatum > SYSDATE;


--CREATE OR REPLACE VIEW vebe_v_periodeweektabel_2jaar
--(jaar, periode, week, maandag)
--AS
--SELECT
--    TO_CHAR (SYSDATE - 7*(LEVEL-1), 'IYYY') jaar,
--    LEAST(FLOOR((TO_CHAR (SYSDATE - 7*(LEVEL-1),'IW') - 1) /4) + 1, 13) periode,
--    TO_CHAR (SYSDATE - 7*(LEVEL-1), 'IW') week,
--    TRUNC (SYSDATE - 7*(LEVEL-1), 'IW') startdatum
--FROM  DUAL
--CONNECT BY LEVEL <= 1*52+1
--UNION ALL
--SELECT
--    TO_CHAR (SYSDATE + 7*(LEVEL), 'IYYY') jaar,
--    LEAST(FLOOR((TO_CHAR (SYSDATE + 7*(LEVEL),'IW') - 1) /4) + 1, 13) periode,
--    TO_CHAR (SYSDATE + 7*(LEVEL), 'IW') week,
--    TRUNC (SYSDATE + 7*(LEVEL), 'IW') startdatum
--FROM  DUAL
--CONNECT BY LEVEL <= 1*52+1;

CREATE OR REPLACE VIEW vebe_v_vebe_weektabel_2jaar
(jaar, periode, week, maandag)
AS
WITH
    thisyear AS
    (SELECT * FROM vebe_v_startperiode_per_jaar
    WHERE jaar = to_char(SYSDATE, 'yyyy')),
    nextyear AS
    (SELECT * FROM vebe_v_startperiode_per_jaar
    WHERE jaar = to_char(SYSDATE, 'yyyy') + 1)
SELECT
    jaar,
    LEAST(13, ROUND((LEVEL + 1) / 4)) periode,
    LEVEL week,
    TRUNC (maandag + 7*(LEVEL-1), 'IW') startdatum
FROM  thisyear
CONNECT BY LEVEL <= 1* (COALESCE(aantal_weken, 52))
UNION ALL
SELECT
    jaar,
    LEAST(13, ROUND((LEVEL + 1) / 4)) periode,
    LEVEL week,
    TRUNC (maandag + 7*(LEVEL-1), 'IW') startdatum
FROM  nextyear
CONNECT BY LEVEL <= 1* (COALESCE(aantal_weken, 52));


CREATE OR REPLACE VIEW vebe_v_vebe_periodetabel_2jaar
(jaar, periode, dag_start, dag_eind, aant_dagen_jaar)
AS
SELECT
    jaar,
    periode,
    MIN(maandag),
    MAX(maandag) + 6,
    to_date('31-12-' || jaar, 'dd-mm-yyyy') - to_date('1-1-' || jaar, 'dd-mm-yyyy') + 1
FROM  vebe_v_vebe_weektabel_2jaar
GROUP BY jaar, periode;

----------------------------------- Maandtabellen ----------------------------------------


CREATE OR REPLACE VIEW vebe_v_maandtabel_2jaar
(jaar, periode, dag_start, dag_eind, aant_dagen_jaar)
AS
WITH
    thisyear AS
    (SELECT * FROM vebe_v_startperiode_per_jaar
    WHERE jaar = to_char(SYSDATE, 'yyyy')),
    nextyear AS
    (SELECT * FROM vebe_v_startperiode_per_jaar
    WHERE jaar = to_char(SYSDATE, 'yyyy') + 1)
SELECT
    jaar,
    LEVEL periode,
    to_date('01-' || LEVEL || '-' || jaar, 'dd-mm-yyyy') startdatum,
    TRUNC(to_date('01-' || LEVEL || '-' || jaar, 'dd-mm-yyyy') + 32, 'MM') - 1 einddatum,
    to_date('31-12-' || jaar, 'dd-mm-yyyy') - to_date('1-1-' || jaar, 'dd-mm-yyyy') + 1
FROM  thisyear
CONNECT BY LEVEL <= 1* 12
UNION ALL
SELECT
    jaar,
    13 periode,
    NULL startdatum,
    NULL einddatum,
    to_date('31-12-' || jaar, 'dd-mm-yyyy') - to_date('1-1-' || jaar, 'dd-mm-yyyy') + 1
FROM  thisyear
UNION ALL
SELECT
    jaar,
    LEVEL periode,
    to_date('01-' || LEVEL || '-' || jaar, 'dd-mm-yyyy') startdatum,
    TRUNC(to_date('01-' || LEVEL || '-' || jaar, 'dd-mm-yyyy') + 32, 'MM') - 1 einddatum,
    to_date('31-12-' || jaar, 'dd-mm-yyyy') - to_date('1-1-' || jaar, 'dd-mm-yyyy') + 1
FROM  nextyear
CONNECT BY LEVEL <= 1* 12
UNION ALL
SELECT
    jaar,
    13 periode,
    NULL startdatum,
    NULL einddatum,
    to_date('31-12-' || jaar, 'dd-mm-yyyy') - to_date('1-1-' || jaar, 'dd-mm-yyyy') + 1
FROM  nextyear;


CREATE OR REPLACE VIEW vebe_v_total_periodtable_2jaar
(jaar, periode, dag_start, dag_eind, aant_dagen_jaar, berijder_indirect)
AS
SELECT jaar, periode, dag_start, dag_eind, aant_dagen_jaar, 'Direct'
FROM vebe_v_vebe_periodetabel_2jaar
UNION ALL
SELECT jaar, periode, dag_start, dag_eind, aant_dagen_jaar, 'Indirect'
FROM vebe_v_maandtabel_2jaar;



-- Basis UDR rapport...
CREATE OR REPLACE VIEW vebe_rap_wagenpark
(
   extra_key,
   cnt_lease_key,
   prs_bedrijf_key,
   cnt_gebruik_key,
   prs_berijder_key,
   ins_deel_key,
   prs_lease_perslid_eig_key,
   cnt_lease_nummer_intern,
   cnt_lease_versie,
   cnt_lease_omschr,
   cnt_lease_looptijd_van,
   cnt_lease_looptijd_tot,
   cnt_lease_looptijd_mnd,
   perc_lease_duur,
   lease_weken_tegaan,
   cnt_lease_rappeldatum,
   cnt_lease_opzegdatum,
   cnt_lease_opzegtermijn,
   cnt_lease_rappeltermijn,
   cnt_lease_status,
   lease_fase_actief,
   cnt_lease_status_txt,
   cnt_lease_kosten,
   cnt_lease_termijnkosten,
   lease_disc_key,
   lease_eigenaar_key,
   fclt_3d_afdeling_key,
   lease_eigenaar_afdeling_naam,
   prs_bedrijf_naam,
   prs_gebr_perslid_key_eig,
   cnt_gebruik_nummer_intern,
   cnt_gebruik_versie,
   cnt_gebruik_omschr,
   cnt_gebruik_looptijd_van,
   cnt_gebruik_looptijd_tot,
   cnt_gebruik_huidig_jaar,
   cnt_gebruik_vorig_jaar,
   perc_gebruik_duur,
   gebruik_weken_tegaan,
   cnt_gebruik_rappeldatum,
   cnt_gebruik_opzegdatum,
   cnt_gebruik_opzegtermijn,
   cnt_gebruik_rappeltermijn,
   cnt_gebruik_status,
   gebruik_fase_actief,
   cnt_gebruik_status_txt,
   gebruik_disc_key,
   gebruik_eigenaar_key,
   gebruik_eigenaar_afdeling_naam,
   prs_eigenaar_naam_full,
   prs_eigenaar_naam_friendly,
   prs_berijder_prsnr,
   prs_berijder_naam_full,
   prs_berijder_naam_friendly,
   ins_srtdeel_omschrijving,
   ins_deel_omschrijving,
   ins_deel_opmerking,
   ins_deel_belettering,
   ins_deel_brandstof,
   ins_deel_leasecategorie,
   ins_deel_perc_bijtelling,
   ins_deel_merk,
   ins_deel_type,
   ins_deel_fiscale_waarde,
   ins_deel_kleur,
   cnt_lease_jaarkilometrage,
   cnt_lease_rayon,
   cnt_gebruik_verklaring,
   prs_berijder_indirect,
   mut_datum_fiscale_waardehuidig,
   mut_datum_gebr_ovkhuidig,
   mut_datum_verklaringhuidig,
   mut_datum_in_directhuidig,
   mut_datum_totaalhuidig,
   mut_datum_fiscale_waardevorig,
   mut_datum_gebr_ovkvorig,
   mut_datum_verklaringvorig,
   mut_datum_in_directvorig,
   mut_datum_totaalvorig
)
AS SELECT
	 extra_key,
   cnt_lease_key,
   prs_bedrijf_key,
   cnt_gebruik_key,
   prs_berijder_key,
   ins_deel_key,
   prs_lease_perslid_key_eig,
   cnt_lease_nummer_intern,
   cnt_lease_versie,
   cnt_lease_omschr,
   cnt_lease_looptijd_van,
   cnt_lease_looptijd_tot,
   cnt_lease_looptijd_mnd,
   perc_lease_duur,
   lease_weken_tegaan,
   cnt_lease_rappeldatum,
   cnt_lease_opzegdatum,
   cnt_lease_opzegtermijn,
   cnt_lease_rappeltermijn,
   cnt_lease_status,
   lease_fase_actief,
   cnt_lease_status_txt,
   cnt_lease_kosten,
   cnt_lease_termijnkosten,
   lease_disc_key,
   lease_eigenaar_key,
   lease_eigenaar_key fclt_3d_afdeling_key,
   lease_eigenaar_afdeling_naam,
   prs_bedrijf_naam,
   prs_gebr_perslid_key_eig,
   cnt_gebruik_nummer_intern,
   cnt_gebruik_versie,
   cnt_gebruik_omschr,
   cnt_gebruik_looptijd_van,
   cnt_gebruik_looptijd_tot,
   gov_huidig_jaar,
   gov_vorig_jaar,
   perc_gebruik_duur,
   gebruik_weken_tegaan,
   cnt_gebruik_rappeldatum,
   cnt_gebruik_opzegdatum,
   cnt_gebruik_opzegtermijn,
   cnt_gebruik_rappeltermijn,
   cnt_gebruik_status,
   gebruik_fase_actief,
   cnt_gebruik_status_txt,
   gebruik_disc_key,
   gebruik_eigenaar_key,
   gebruik_eigenaar_afdeling_naam,
   prs_eigenaar_naam_full,
   prs_eigenaar_naam_friendly,
   prs_berijder_prsnr,
   prs_berijder_naam_full,
   prs_berijder_naam_friendly,
   ins_srtdeel_omschrijving,
   ins_deel_omschrijving,
   ins_deel_opmerking,
   ins_deel_belettering,
   ins_deel_brandstof,
   ins_deel_leasecategorie,
   ins_deel_perc_bijtelling,
   ins_deel_merk,
   ins_deel_type,
   ins_deel_fiscale_waarde,
   ins_deel_kleur,
   cnt_lease_jaarkilometrage,
   cnt_lease_rayon,
   cnt_gebruik_verklaring,
   prs_berijder_indirect,
  mut_datum_fiscale_waardehuidig,
  mut_datum_gebr_ovkhuidig,
  mut_datum_verklaringhuidig,
  mut_datum_in_directhuidig,
  decode (
     greatest (
        coalesce (mut_datum_fiscale_waardehuidig,
                  to_date ('01-01-2000', 'dd-mm-yyyy')),
        coalesce (mut_datum_gebr_ovkhuidig,
                  to_date ('01-01-2000', 'dd-mm-yyyy')),
        coalesce (mut_datum_verklaringhuidig,
                  to_date ('01-01-2000', 'dd-mm-yyyy')),
        coalesce (mut_datum_in_directhuidig,
                  to_date ('01-01-2000', 'dd-mm-yyyy'))),
     to_date ('01-01-2000', 'dd-mm-yyyy'),
     null,
     to_char (
        greatest (
           coalesce (mut_datum_fiscale_waardehuidig,
                     to_date ('01-01-2000', 'dd-mm-yyyy')),
           coalesce (mut_datum_gebr_ovkhuidig,
                     to_date ('01-01-2000', 'dd-mm-yyyy')),
           coalesce (mut_datum_verklaringhuidig,
                     to_date ('01-01-2000', 'dd-mm-yyyy')),
           coalesce (mut_datum_in_directhuidig,
                     to_date ('01-01-2000', 'dd-mm-yyyy'))),
        'yyyy-mm'))
     mut_datum_totaalhuidig,
  mut_datum_fiscale_waardevorig,
  mut_datum_gebr_ovkvorig,
  mut_datum_verklaringvorig,
  mut_datum_in_directvorig,
  decode (
     greatest (
        coalesce (mut_datum_fiscale_waardevorig,
                  to_date ('01-01-2000', 'dd-mm-yyyy')),
        coalesce (mut_datum_gebr_ovkvorig,
                  to_date ('01-01-2000', 'dd-mm-yyyy')),
        coalesce (mut_datum_verklaringvorig,
                  to_date ('01-01-2000', 'dd-mm-yyyy')),
        coalesce (mut_datum_in_directvorig,
                  to_date ('01-01-2000', 'dd-mm-yyyy'))),
     to_date ('01-01-2000', 'dd-mm-yyyy'),
     null,
     to_char (
        greatest (
           coalesce (mut_datum_fiscale_waardevorig,
                     to_date ('01-01-2000', 'dd-mm-yyyy')),
           coalesce (mut_datum_gebr_ovkvorig,
                     to_date ('01-01-2000', 'dd-mm-yyyy')),
           coalesce (mut_datum_verklaringvorig,
                     to_date ('01-01-2000', 'dd-mm-yyyy')),
           coalesce (mut_datum_in_directvorig,
                     to_date ('01-01-2000', 'dd-mm-yyyy'))),
        'yyyy-mm'))
     mut_datum_totaalvorig
FROM  vebe_rap_wagenpark_tmp tmp;

-- Basis UDR rapport (zonder financiele gegevens)
CREATE OR REPLACE VIEW vebe_rap_wagenpark_basis
(
   extra_key,
   cnt_lease_key,
   prs_bedrijf_key,
   cnt_gebruik_key,
   prs_berijder_key,
   ins_deel_key,
   prs_lease_perslid_eig_key,
   cnt_lease_nummer_intern,
   cnt_lease_versie,
   cnt_lease_omschr,
   cnt_lease_looptijd_van,
   cnt_lease_looptijd_tot,
   cnt_lease_looptijd_mnd,
   perc_lease_duur,
   lease_weken_tegaan,
   cnt_lease_rappeldatum,
   cnt_lease_opzegdatum,
   cnt_lease_opzegtermijn,
   cnt_lease_rappeltermijn,
   cnt_lease_status,
   lease_fase_actief,
   cnt_lease_status_txt,
   cnt_lease_kosten,
   cnt_lease_termijnkosten,
   lease_disc_key,
   lease_eigenaar_key,
   lease_eigenaar_afdeling_naam,
   prs_bedrijf_naam,
   prs_gebr_perslid_key_eig,
   cnt_gebruik_nummer_intern,
   cnt_gebruik_versie,
   cnt_gebruik_omschr,
   cnt_gebruik_looptijd_van,
   cnt_gebruik_looptijd_tot,
   perc_gebruik_duur,
   gebruik_weken_tegaan,
   cnt_gebruik_rappeldatum,
   cnt_gebruik_opzegdatum,
   cnt_gebruik_opzegtermijn,
   cnt_gebruik_rappeltermijn,
   cnt_gebruik_status,
   gebruik_fase_actief,
   cnt_gebruik_status_txt,
   gebruik_disc_key,
   gebruik_eigenaar_key,
   gebruik_eigenaar_afdeling_naam,
   prs_eigenaar_naam_full,
   prs_eigenaar_naam_friendly,
   prs_berijder_prsnr,
   prs_berijder_naam_full,
   prs_berijder_naam_friendly,
   ins_srtdeel_omschrijving,
   ins_deel_omschrijving,
   ins_deel_opmerking,
   ins_deel_belettering,
   ins_deel_brandstof,
   ins_deel_leasecategorie,
   ins_deel_perc_bijtelling,
   ins_deel_merk,
   ins_deel_type,
   ins_deel_fiscale_waarde,
   ins_deel_kleur,
   cnt_lease_jaarkilometrage,
   cnt_gebruik_verklaring,
   prs_berijder_indirect
)
AS
   SELECT extra_key,
          cnt_lease_key,
          prs_bedrijf_key,
          cnt_gebruik_key,
          prs_berijder_key,
          ins_deel_key,
          prs_lease_perslid_key_eig,
          cnt_lease_nummer_intern,
          cnt_lease_versie,
          cnt_lease_omschr,
          cnt_lease_looptijd_van,
          cnt_lease_looptijd_tot,
          cnt_lease_looptijd_mnd,
          perc_lease_duur,
          lease_weken_tegaan,
          cnt_lease_rappeldatum,
          cnt_lease_opzegdatum,
          cnt_lease_opzegtermijn,
          cnt_lease_rappeltermijn,
          cnt_lease_status,
          lease_fase_actief,
          cnt_lease_status_txt,
          cnt_lease_kosten,
          cnt_lease_termijnkosten,
          lease_disc_key,
          lease_eigenaar_key,
          lease_eigenaar_afdeling_naam,
          prs_bedrijf_naam,
          prs_gebr_perslid_key_eig,
          cnt_gebruik_nummer_intern,
          cnt_gebruik_versie,
          cnt_gebruik_omschr,
          cnt_gebruik_looptijd_van,
          cnt_gebruik_looptijd_tot,
          perc_gebruik_duur,
          gebruik_weken_tegaan,
          cnt_gebruik_rappeldatum,
          cnt_gebruik_opzegdatum,
          cnt_gebruik_opzegtermijn,
          cnt_gebruik_rappeltermijn,
          cnt_gebruik_status,
          gebruik_fase_actief,
          cnt_gebruik_status_txt,
          gebruik_disc_key,
          gebruik_eigenaar_key,
          gebruik_eigenaar_afdeling_naam,
          prs_eigenaar_naam_full,
          prs_eigenaar_naam_friendly,
          prs_berijder_prsnr,
          prs_berijder_naam_full,
          prs_berijder_naam_friendly,
          ins_srtdeel_omschrijving,
          ins_deel_omschrijving,
          ins_deel_opmerking,
          ins_deel_belettering,
          ins_deel_brandstof,
          ins_deel_leasecategorie,
          ins_deel_perc_bijtelling,
          ins_deel_merk,
          ins_deel_type,
          ins_deel_fiscale_waarde,
          ins_deel_kleur,
          cnt_lease_jaarkilometrage,
          cnt_gebruik_verklaring,
          prs_berijder_indirect
     FROM vebe_rap_wagenpark_tmp;

---------- Gebruiksovereenkomst TIJDELIJKE Tankpassen

CREATE OR REPLACE VIEW vebe_cnt_tankpas_gebruiks_ovk
(
   cnt_gebruik_key,
   prs_berijder_key,
   ins_deel_key,
   prs_gebr_perslid_key_beh,
   prs_gebr_perslid_key_eig,
   cnt_gebruik_nummer_intern,
   cnt_gebruik_versie,
   cnt_gebruik_omschr,
   cnt_gebruik_looptijd_van,
   cnt_gebruik_looptijd_tot,
   perc_gebruik_duur,
   gebruik_weken_tegaan,
   cnt_gebruik_rappeldatum,
   cnt_gebruik_opzegdatum,
   cnt_gebruik_opzegtermijn,
   cnt_gebruik_rappeltermijn,
   cnt_gebruik_status,
   gebruik_fase_actief,
   cnt_gebruik_status_txt,
   gebruik_disc_key,
   gebruik_eigenaar_key,
   gebruik_eigenaar_afdeling_naam,
   prs_berijder_prsnr,
   prs_berijder_naam_full,
   prs_berijder_naam_friendly,
   ins_deel_omschrijving,
   ins_deel_opmerking
)
AS
   SELECT
          c2.cnt_contract_key cnt_gebruik_key,
          p2.prs_perslid_key prs_berijder_key,
          d.ins_deel_key,
          c2.prs_perslid_key_beh prs_gebr_perslid_key_beh,
          c2.prs_perslid_key_eig prs_gebr_perslid_key_eig,
          c2.cnt_contract_nummer_intern cnt_gebruik_nummer_intern,
          c2.cnt_contract_versie cnt_gebruik_versie,
          c2.cnt_contract_omschrijving cnt_gebruik_omschr,
          c2.cnt_contract_looptijd_van cnt_gebruik_looptijd_van,
          c2.cnt_contract_looptijd_tot cnt_gebruik_looptijd_tot,
          ROUND(100
                * LEAST (
                     1,
                     (SYSDATE - LEAST (c2.cnt_contract_looptijd_van, SYSDATE))
                     / (GREATEST (
                           c2.cnt_contract_looptijd_tot
                           - c2.cnt_contract_looptijd_van,
                           1
                        ))
                  ))
             perc_gebruik_duur,
          ROUND( (c2.cnt_contract_looptijd_tot
                  - GREATEST (c2.cnt_contract_looptijd_van,
                              LEAST (SYSDATE, c2.cnt_contract_looptijd_tot)))
                / 7)
             gebruik_weken_tegaan,
          cnt.cnt_getrappeldatum (c2.cnt_contract_key)
             cnt_gebruik_rappeldatum,
          cnt.cnt_getopzegdatum (c2.cnt_contract_key) cnt_gebruik_opzegdatum,
          (SELECT lcl.x ('cnt_termijn_omschrijving',
                         cnt_termijn_key,
                         cnt_termijn_omschrijving)
             FROM cnt_termijn
            WHERE cnt_termijn_key = c2.cnt_contract_opzegtermijn)
             cnt_gebruik_opzegtermijn,
          (SELECT lcl.x ('cnt_termijn_omschrijving',
                         cnt_termijn_key,
                         cnt_termijn_omschrijving)
             FROM cnt_termijn
            WHERE cnt_termijn_key = c2.cnt_contract_rappeltermijn)
             cnt_gebruik_rappeltermijn,
          c2.cnt_contract_status cnt_gebruik_status,
          DECODE (
             cnt.cnt_contract_status (
                c2.cnt_contract_looptijd_van,
                cnt.cnt_getrappeldatum (c2.cnt_contract_key),
                cnt.cnt_getopzegdatum (c2.cnt_contract_key),
                c2.cnt_contract_looptijd_tot
             ),
             0,
             lcl.l ('lcl_cnt_future'),
             1,
             lcl.l ('lcl_cnt_topical'),
             2,
             lcl.l ('lcl_cnt_warn'),
             3,
             lcl.l ('lcl_cnt_cancel'),
             4,
             lcl.l ('lcl_cnt_past')
          )
             gebruik_fase_actief,
          DECODE (
             c2.cnt_contract_status,
             0,
             DECODE (fac.getsetting ('cnt_contract_approval'),
                     1, lcl.l ('lcl_cnt_active_approval'),
                     lcl.l ('lcl_cnt_active')),
             1,
             lcl.l ('lcl_cnt_inactive'),
             2,
             lcl.l ('lcl_cnt_new'),
             3,
             lcl.l ('lcl_cnt_forapproval')
          )
             cnt_gebruik_status_txt,
          COALESCE (c2.ins_discipline_key, -1) gebruik_disc_key,
          c2.prs_afdeling_key_eig gebruik_eigenaar_key,
          (SELECT prs_afdeling_naam
             FROM prs_v_afdeling
            WHERE prs_afdeling_key = c2.prs_afdeling_key_eig)
             gebruik_eigenaar_afdeling_naam,
          p2.prs_perslid_nr prs_berijder_prsnr,
          p2.prs_perslid_naam_full prs_berijder_naam_full,
          p2.prs_perslid_naam_friendly prs_berijder_naam_friendly,
          d.ins_deel_omschrijving,
          d.ins_deel_opmerking
     FROM cnt_v_aanwezigcontract c2,
          (SELECT pf.prs_perslid_key,
                  pf.prs_perslid_naam_friendly,
                  pf.prs_perslid_naam_full,
                  p.prs_perslid_nr
             FROM prs_v_perslid_fullnames_all pf, prs_perslid p
            WHERE pf.prs_perslid_key = p.prs_perslid_key) p2,
          cnt_contract_object co2,
          ins_deel d
    WHERE c2.ins_discipline_key = 22
    	AND d.ins_srtdeel_key = 4
    	AND co2.cnt_contract_key = c2.cnt_contract_key
      AND COALESCE (c2.cnt_contract_versie, '0') =
             (SELECT COALESCE (MAX (cnt_contract_versie), '0')
                FROM cnt_contract c3
               WHERE c3.cnt_contract_nummer_intern =
                        c2.cnt_contract_nummer_intern)
      AND c2.cnt_prs_perslid_key = p2.prs_perslid_key(+)
      AND d.ins_deel_key = co2.cnt_ins_deel_key;

-- rapportage tankpassen
CREATE OR REPLACE VIEW vebe_v_rap_tankpassen
(
   ins_deel_key,
   ins_deel_omschrijving,
   object_eignaar,
   afdeling_object_eig,
   pincode,
   pasnummer,
   ins_deel_vervaldatum,
   cnt_contract_key,
   cnt_contract_nummer,
   cnt_contract_versie,
   cnt_contract_omschrijving,
   cnt_contract_opmerking,
   cnt_contract_nummer_intern,
   cnt_prs_perslid_key,
   cnt_contractant,
   cnt_eigenaar,
   prs_afdeling_omschrijving,
   cnt_contract_looptijd_van,
   cnt_contract_looptijd_tot,
   fase,
   cnt_status_txt,
   ovk_aanwezig
)
AS
   SELECT ins_deel_key,
          ins_deel_omschrijving,
          pf3.prs_perslid_naam_full object_eigenaar,
          a.prs_afdeling_omschrijving afdeling_object_eig,
          (SELECT ins_kenmerkdeel_waarde
             FROM ins_kenmerkdeel
            WHERE ins_kenmerk_key = 122 AND ins_deel_key = d.ins_deel_key)
             pincode,
          (SELECT ins_kenmerkdeel_waarde
             FROM ins_kenmerkdeel
            WHERE ins_kenmerk_key = 121 AND ins_deel_key = d.ins_deel_key)
             pasnummer,
          ins_deel_vervaldatum,
          cnt_contract_key,
          cnt_contract_nummer,
          cnt_contract_versie,
          cnt_contract_omschrijving,
          cnt_contract_opmerking,
          cnt_contract_nummer_intern,
          cnt_prs_perslid_key,
          cnt_contractant,
          cnt_eigenaar,
          cco.prs_afdeling_omschrijving,
          cnt_contract_looptijd_van,
          cnt_contract_looptijd_tot,
          fase,
          cnt_status_txt,
          DECODE (COALESCE (cnt_contract_key, 0), 0, 'Nee', 'Ja')
             ovk_aanwezig
     FROM ins_deel d,
          ins_srtdeel sd,
          prs_perslid p,
          prs_v_perslid_fullnames pf3,
          prs_afdeling a,
          (SELECT c.cnt_contract_key,
                  cnt_contract_nummer,
                  cnt_contract_versie,
                  cnt_contract_omschrijving,
                  cnt_contract_opmerking,
                  cnt_contract_nummer_intern,
                  cnt_prs_perslid_key,
                  pf2.prs_perslid_naam_full cnt_contractant,
                  prs_perslid_key_eig,
                  pf.prs_perslid_naam_full cnt_eigenaar,
                  prs_afdeling_omschrijving,
                  cnt_contract_looptijd_van,
                  cnt_contract_looptijd_tot,
                  cnt_ins_deel_key,
                  DECODE (
                     cnt.cnt_contract_status (
                        c.cnt_contract_looptijd_van,
                        cnt.cnt_getrappeldatum (c.cnt_contract_key),
                        cnt.cnt_getopzegdatum (c.cnt_contract_key),
                        c.cnt_contract_looptijd_tot),
                     0,
                     lcl.l ('lcl_cnt_future'),
                     1,
                     lcl.l ('lcl_cnt_topical'),
                     2,
                     lcl.l ('lcl_cnt_warn'),
                     3,
                     lcl.l ('lcl_cnt_cancel'),
                     4,
                     lcl.l ('lcl_cnt_past'))
                     fase,
                  DECODE (
                     c.cnt_contract_status,
                     0,
                     DECODE (fac.getsetting ('cnt_contract_approval'),
                             1, lcl.l ('lcl_cnt_active_approval'),
                             lcl.l ('lcl_cnt_active')),
                     1,
                     lcl.l ('lcl_cnt_inactive'),
                     2,
                     lcl.l ('lcl_cnt_new'),
                     3,
                     lcl.l ('lcl_cnt_forapproval'))
                     cnt_status_txt
             FROM cnt_contract c,
                  cnt_contract_object co,
                  prs_v_perslid_fullnames pf,
                  prs_v_perslid_fullnames pf2,
                  prs_afdeling a
            WHERE     cnt_contract_verwijder IS NULL
                  AND c.ins_discipline_key = 22
                  AND cnt_contract_verwijder IS NULL
                  AND c.cnt_contract_key = co.cnt_contract_key
                  AND prs_perslid_key_eig = pf.prs_perslid_key
                  AND a.prs_afdeling_key = prs_afdeling_key_eig
                  AND c.cnt_prs_perslid_key = pf2.prs_perslid_key(+)
                  AND COALESCE (c.cnt_contract_versie, '0') =
                        (SELECT COALESCE (MAX (cnt_contract_versie), '0')
                           FROM cnt_v_aanwezigcontract c2
                          WHERE c2.cnt_contract_nummer_intern =
                                   c.cnt_contract_nummer_intern)) cco
    WHERE     ins_deel_verwijder IS NULL
          AND sd.ins_srtdeel_verwijder IS NULL
          AND ins_alg_ruimte_type = 'P'
          AND ins_alg_ruimte_key = p.prs_perslid_key
          AND pf3.prs_perslid_key = p.prs_perslid_key
          AND a.prs_afdeling_key = p.prs_afdeling_key
          AND d.ins_srtdeel_key = sd.ins_srtdeel_key
          AND sd.ins_srtgroep_key = 3
          AND cco.cnt_ins_deel_key(+) = d.ins_deel_key;

-- LEASECONTRACT NOTIFICATIES naar contractbeheerder, contracteigenaren, (nog) niet naar berijders.
-- Elke dag de bij aflopende leaseonctracten notificaties de deur 'uitgooien', die NIET met de standaard noti-jobs gaan (omdat de export nog iets extra's doet, insert of zo).

-- 1. LEASEcontracten (soortcontract met disckey 21) die in rappel staat, en waarvan nog niet eerder een noti naar contracteigenaar is uitgegaan
-- 2. Afgemelde GUNNINGSOpdracht (type opdracht met mld_typeopdr_key = 5) een noti met 2 links naar de melder (= AP/aanspreekpunt) van de bijbehorende melding zodat deze 2 acties kan uitvoeren:
--    a) LINK 1: naar opdracht zodat de bijlage bij de opdracht kan downloaden/openen, printen en laten ondertekenen
--    b) LINK 2: Nieuwe melding 'Stuur getekende leaseovk' zodat de getekende leaseovk kan worden geupload.


CREATE OR REPLACE PROCEDURE vebe_export_noti_wagenpark (
   p_applname   IN   VARCHAR2,
   p_applrun    IN   VARCHAR2,
   p_filedir    IN   VARCHAR2,
   p_filename   IN   VARCHAR2
)
IS
    v_aanduiding             VARCHAR2 (200);
    v_errorhint              VARCHAR2 (1000);
    v_errorhint2              VARCHAR2 (1000);
    v_errormsg               VARCHAR2 (1000);
    oracle_err_num           NUMBER;
    oracle_err_mes           VARCHAR2 (200);
    v_count_tot              NUMBER (10);
    v_count_error            NUMBER (10);
    v_count                  NUMBER (10);
    v_tracking               VARCHAR2 (1000);

		v_fac_usrrap_key         NUMBER(10);

    -- Leasecontracten (met disckey 21) die in rappel staat, en waarvan nog niet eerder een noti naar contracteigenaar is uitgegaan
    -- Als het kenmerk Vaker notificeren (key 121) aan staat dan wordt er vaker dan 1x genotificeerd.
    CURSOR c_noti_leasecontract_1st_time
    IS
    SELECT 	c.prs_lease_perslid_key_eig,
          	c.prs_eigenaar_naam_friendly,
          	'Rappèl: Leaseovereenkomst ' || c.cnt_lease_nummer_intern
	          || DECODE (c.cnt_lease_versie,
	                     NULL, '',
	                     '.' || c.cnt_lease_versie)
	          || ' ('
	          || c.cnt_lease_omschr
	          || ' '
	          || c.prs_bedrijf_naam
	          || ')'
	          || ' loopt af op '
	          || TO_CHAR (c.cnt_lease_looptijd_tot, 'DD-MM-YYYY')
	          || '.' mail_subject,
	          c.cnt_lease_key,
	          c.cnt_lease_nummer_intern,
	          c.cnt_lease_versie
    FROM 		vebe_cnt_lease_en_gebruiks_ovk c
    WHERE 	cnt_lease_status = 0
    AND 		(SYSDATE BETWEEN c.cnt_lease_rappeldatum
                     AND  	 c.cnt_lease_opzegdatum)
 		AND  c.cnt_lease_looptijd_tot >= to_date('01-10-2016','dd-mm-yyyy')
 		AND NOT EXISTS
        (SELECT 'x'
        FROM  fac_tracking t, fac_srtnotificatie sn
        WHERE c.cnt_lease_key = t.fac_tracking_refkey
        AND   t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
        AND   sn.fac_srtnotificatie_code = 'CUST02'
        AND t.fac_tracking_refkey NOT IN
         (SELECT kc.cnt_contract_key
            FROM cnt_kenmerkcontract kc
           WHERE kc.cnt_kenmerk_key = 121
                 AND kc.cnt_kenmerkcontract_waarde = 1
                 AND TRUNC (t.fac_tracking_datum) <
                       TRUNC (SYSDATE)));


		CURSOR c_noti_krabbel_leaseovk
		IS
	 	SELECT m.prs_perslid_key prs_perslid_key_aanspreekpunt, p1.prs_perslid_naam_friendly prs_perslid_naam_aanspreekpunt, 'Verzoek ondertekenen van leaseovereenkomst voor ' ||  p2.prs_perslid_naam_friendly mail_subject, o.mld_opdr_key
    FROM mld_opdr o,  fac_tracking t, fac_srtnotificatie sn, mld_melding m, prs_v_perslid_fullnames_all p1, prs_v_perslid_fullnames_all p2
    WHERE o.mld_typeopdr_key = 5
    AND  o.mld_opdr_key = t.fac_tracking_refkey
    AND m.mld_melding_key = o.mld_melding_key
    AND p1.prs_perslid_key = m.prs_perslid_key
    AND p2.prs_perslid_key = m.prs_perslid_key_voor
    AND sn.fac_srtnotificatie_key = t.fac_srtnotificatie_key
    AND sn.fac_srtnotificatie_xmlnode = 'opdracht'
    AND o.mld_statusopdr_key = 6
    AND sn.fac_srtnotificatie_key = (select fac_srtnotificatie_key from fac_srtnotificatie where fac_srtnotificatie_code = 'ORDAFM')
    AND NOT EXISTS
        (SELECT 'x'
        FROM  fac_tracking t, fac_srtnotificatie sn
        WHERE o.mld_opdr_key = t.fac_tracking_refkey
        AND   t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
        AND   sn.fac_srtnotificatie_code = 'CUST03');


    CURSOR c_noti_cnt_tankpas
    IS
    SELECT 	c.prs_gebr_perslid_key_beh,
          	NULL,
          	'Rappèl: Tijdelijke tankpas van gebruiksovereenkomst ' || c.cnt_gebruik_nummer_intern
	          || DECODE (c.cnt_gebruik_versie,
	                     NULL, '',
	                     '.' || c.cnt_gebruik_versie)
	          || ' ('
	          || c.cnt_gebruik_omschr
	          || ')'
	          || ' loopt af op '
	          || TO_CHAR (c.cnt_gebruik_looptijd_tot, 'DD-MM-YYYY')
	          || '.' mail_subject,
	          c.cnt_gebruik_key,
	          c.cnt_gebruik_nummer_intern,
	          c.cnt_gebruik_versie
    FROM 		vebe_cnt_tankpas_gebruiks_ovk c
    WHERE 	cnt_gebruik_status = 0
    AND TO_CHAR (SYSDATE, 'd') = '4'
    AND 		(SYSDATE BETWEEN c.cnt_gebruik_rappeldatum
                     AND  	 c.cnt_gebruik_opzegdatum)
 		AND  c.cnt_gebruik_looptijd_tot >= to_date('01-05-2017','dd-mm-yyyy');



BEGIN

		-- Userrapportage key 81 waar de view vebe_cnt_lease_en_gebruiks_ovk met alle leasecontract info staat.
		v_fac_usrrap_key := 81;


		-- Alle leasecontracten in rappel die niet al eerder naar eigenaar zijn genotificeerd, dus alleen 1x, notificeren.
    FOR rc IN c_noti_leasecontract_1st_time
    LOOP
        BEGIN

            v_errorhint := rc.mail_subject;
            v_errormsg := '';
						-- Mailen van eenmalige notificatie naar de eigenaar/aanspreekpunt via CUST01 (rapport-node).
            -- fac.putnotificationsrtprio ( NULL, rc.prs_lease_perslid_key_eig, 'CUST01', v_fac_usrrap_key, rc.mail_subject, NULL, NULL, NULL, rc.cnt_lease_key, 2, NULL);
            fac.putnotificationsrtprio ( NULL, rc.prs_lease_perslid_key_eig, 'CUST01', v_fac_usrrap_key, rc.mail_subject, NULL, NULL, NULL, rc.cnt_lease_key, 2, NULL);
            v_tracking := 'Rappel mail naar aanspreekpunt ' || rc.prs_eigenaar_naam_friendly || ':  Leaseovereenkomst ' || rc.cnt_lease_nummer_intern || ' loopt af';
            -- En we tracken via CUST02 (contract-node)
        	  fac.trackaction ('CUST02', rc.cnt_lease_key, NULL, NULL, v_tracking);
			  DELETE cnt_kenmerkcontract WHERE cnt_kenmerk_key = 121 AND cnt_contract_key = rc.cnt_lease_key;
            COMMIT;



        EXCEPTION
        WHEN OTHERS
          THEN
             v_count_error := v_count_error + 1;
             oracle_err_num := SQLCODE;
             oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
             v_errormsg := 'OTHERS (error ' || oracle_err_num  || '/' || oracle_err_mes || ')';
             COMMIT;
      	END;
    END LOOP;


    FOR rc IN c_noti_krabbel_leaseovk
    LOOP
	  		BEGIN

	          v_errorhint := rc.mail_subject;
	          v_errormsg := '';
						-- Mailen van eenmalige notificatie naar de aanspreekpunt via CUST03 (opdracht-node).
	          fac.putnotificationsrtprio ( NULL, rc.prs_perslid_key_aanspreekpunt, 'CUST03', rc.mld_opdr_key, rc.mail_subject, NULL, NULL, NULL, NULL, 2, NULL);
	          -- En we tracken via CUST03 (opdracht-node)
	          v_tracking := 'Mail naar aanspreekpunt ' || rc.prs_perslid_naam_aanspreekpunt || ':  ' || rc.mail_subject;
	          fac.trackaction ('#CUST03', rc.mld_opdr_key, NULL, NULL, v_tracking);

	          COMMIT;

	      EXCEPTION
	      WHEN OTHERS
	          THEN
	             v_count_error := v_count_error + 1;
	             oracle_err_num := SQLCODE;
	             oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
	             v_errormsg := 'OTHERS (error ' || oracle_err_num  || '/' || oracle_err_mes || ')';
	             COMMIT;
	      END;
    END LOOP;

    FOR rc IN c_noti_cnt_tankpas
    LOOP
	  		BEGIN

	          v_errorhint := rc.mail_subject;
	          v_errormsg := '';
						-- Mailen van een notificatie naar de beheerder van de gebruiksovereenkomst van de tijdelijke tankpas.
	          -- fac.putnotificationsrtprio (NULL, rc.prs_gebr_perslid_key_beh, '', rc.cnt_gebruik_key, rc.mail_subject, NULL, NULL, NULL, NULL, 2, NULL);

						-- fac.putnotificationprio (pfrom, pto, pmessage, pmode, poptemail, poptmobile, 2);
						fac.putnotificationprio (NULL, rc.prs_gebr_perslid_key_beh, rc.mail_subject, 2, NULL, NULL, 2);
	          COMMIT;

	      EXCEPTION
	      WHEN OTHERS
	          THEN
	             v_count_error := v_count_error + 1;
	             oracle_err_num := SQLCODE;
	             oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
	             v_errormsg := 'OTHERS (error ' || oracle_err_num  || '/' || oracle_err_mes || ')';
	             COMMIT;
	      END;
    END LOOP;


    COMMIT;
EXCEPTION
   WHEN OTHERS
   THEN
      oracle_err_num := SQLCODE;
      oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
      v_errormsg :=
           'OTHERS (vebe_noti_wagenpark error ' || oracle_err_num || '/' || oracle_err_mes || ')';
      COMMIT;

END vebe_export_noti_wagenpark;
/


CREATE OR REPLACE VIEW vebe_v_export_noti_wagenpark (
   result,
   result_order
   )
AS
	SELECT  'notificatie;key contract;contractnr;key aanspreekpunt;aanspreekpunt;mailsubject;contractomschrijving;leasemaatschappij;einddatum', 0
	FROM DUAL
UNION ALL
	SELECT 	REPLACE(REPLACE('CUST01'
						|| ';'
						|| c.cnt_lease_key
						|| ';'
						|| cnt_lease_nummer_intern
						|| ';'
						|| c.prs_lease_perslid_key_eig
						|| ';'
          	|| c.prs_eigenaar_naam_friendly
          	|| ';'
          	|| 'Rappèl: Leaseovereenkomst ' || c.cnt_lease_nummer_intern || ' loopt af'
	          || DECODE (c.cnt_lease_versie, NULL, '', '.' || c.cnt_lease_versie)
	          || ';'
	          || c.cnt_lease_omschr
	          || ';'
	          || c.prs_bedrijf_naam
	          || ';'
	          || TO_CHAR (c.cnt_lease_looptijd_tot, 'DD-MM-YYYY')
	          ,CHR (13), ''), CHR (10), '<ret>'), cnt_lease_key
    FROM 		(  SELECT MAX (cnt_gebruik_looptijd_tot),
                 cnt_lease_key,
                 cnt_lease_nummer_intern,
                 prs_lease_perslid_key_eig,
                 cnt_lease_omschr,
                 prs_eigenaar_naam_friendly,
                 cnt_lease_versie,
                 prs_bedrijf_naam,
                 cnt_lease_looptijd_tot,
                 cnt_lease_opzegdatum,
                 cnt_lease_rappeldatum,
                 cnt_lease_status
            FROM vebe_cnt_lease_en_gebruiks_ovk
        GROUP BY cnt_lease_key,
                 cnt_lease_nummer_intern,
                 prs_lease_perslid_key_eig,
                 cnt_lease_omschr,
                 prs_eigenaar_naam_friendly,
                 cnt_lease_versie,
                 prs_bedrijf_naam,
                 cnt_lease_looptijd_tot,
                 cnt_lease_opzegdatum,
                 cnt_lease_rappeldatum,
                 cnt_lease_status) c
    WHERE 	cnt_lease_status = 0
    AND 		(SYSDATE BETWEEN c.cnt_lease_rappeldatum
                     AND  	 c.cnt_lease_opzegdatum)
    AND  c.cnt_lease_looptijd_tot >= to_date('01-10-2016','dd-mm-yyyy')
 		AND NOT EXISTS
        (SELECT 'x'
        FROM  fac_tracking t, fac_srtnotificatie sn
        WHERE c.cnt_lease_key = t.fac_tracking_refkey
        AND   t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
        AND   sn.fac_srtnotificatie_code = 'CUST02'
        AND t.fac_tracking_refkey NOT IN
         (SELECT kc.cnt_contract_key
            FROM cnt_kenmerkcontract kc
           WHERE kc.cnt_kenmerk_key = 121
                 AND kc.cnt_kenmerkcontract_waarde = 1
                 AND TRUNC (t.fac_tracking_datum) <
                       TRUNC (SYSDATE)))
UNION ALL
	SELECT  'notificatie; key opdracht;opdrachtnr;key aanspreekpunt;aanspreekpunt;mailsubject;opdrachtomschrijving;;', 10000
	FROM DUAL
UNION ALL
	SELECT REPLACE(REPLACE( 'CUST03'
						|| ';'
						|| o.mld_opdr_key
						|| ';'
						|| m.mld_melding_key || '/' || o.mld_opdr_bedrijfopdr_volgnr
						|| ';'
						|| m.prs_perslid_key
						|| ';'
						|| p1.prs_perslid_naam_friendly
						|| ';'
						|| 'Verzoek ondertekenen van leaseovereenkomst voor ' ||  p2.prs_perslid_naam_friendly
						|| ';'
						|| ''
						|| ';'
						|| ''
						,CHR (13), ''), CHR (10), '<ret>'), 10000 + m.mld_melding_key
  FROM mld_opdr o,  fac_tracking t, fac_srtnotificatie sn, mld_melding m, prs_v_perslid_fullnames_all p1, prs_v_perslid_fullnames_all p2
  WHERE o.mld_typeopdr_key = 5
  AND  o.mld_opdr_key = t.fac_tracking_refkey
  AND m.mld_melding_key = o.mld_melding_key
  AND p1.prs_perslid_key = m.prs_perslid_key
  AND p2.prs_perslid_key = m.prs_perslid_key_voor
  AND sn.fac_srtnotificatie_key = t.fac_srtnotificatie_key
  AND sn.fac_srtnotificatie_xmlnode = 'opdracht'
  AND o.mld_statusopdr_key = 6
  AND sn.fac_srtnotificatie_key = (select fac_srtnotificatie_key from fac_srtnotificatie where fac_srtnotificatie_code = 'ORDAFM')
  AND NOT EXISTS
      (SELECT 'x'
      FROM  fac_tracking t, fac_srtnotificatie sn
      WHERE o.mld_opdr_key = t.fac_tracking_refkey
      AND   t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
      AND   sn.fac_srtnotificatie_code = 'CUST03')
UNION ALL
	SELECT  'notificatie;key contract;contractnr;key wagenparkbeh;berijder;mailsubject;contractomschrijving;afdeling;einddatum', (select max(mld_melding_key) + 20000 from mld_melding)
	FROM DUAL
UNION ALL
	SELECT 	REPLACE(REPLACE(''
						|| ';'
						|| c.cnt_gebruik_key
						|| ';'
						|| c.cnt_gebruik_nummer_intern
						|| ';'
						|| c.prs_gebr_perslid_key_beh
						|| ';'
          	|| c.prs_berijder_naam_friendly
          	|| ';'
          	|| 'Rappèl: Tijdelijke tankpas ' || c.cnt_gebruik_nummer_intern || ' loopt af'
	          || DECODE (c.cnt_gebruik_versie, NULL, '', '.' || c.cnt_gebruik_versie)
	          || ';'
	          || c.cnt_gebruik_omschr
	          || ';'
	          || c.gebruik_eigenaar_afdeling_naam
	          || ';'
	          || TO_CHAR (c.cnt_gebruik_looptijd_tot, 'DD-MM-YYYY')
	          ,CHR (13), ''), CHR (10), '<ret>'), (select max(mld_melding_key) + 20000 from mld_melding) + cnt_gebruik_key
    FROM 		vebe_cnt_tankpas_gebruiks_ovk c
    WHERE 	cnt_gebruik_status = 0
    AND 		(SYSDATE BETWEEN c.cnt_gebruik_rappeldatum
                     AND  	 c.cnt_gebruik_opzegdatum)
 		AND  c.cnt_gebruik_looptijd_tot >= to_date('01-10-2016','dd-mm-yyyy');


CREATE OR REPLACE PROCEDURE vebe_processemail
      				  (pfrom      IN VARCHAR2,
                       pto        IN VARCHAR2,
                       psubject   IN VARCHAR2,
                       pbody      IN VARCHAR2,
                       psessionid IN VARCHAR2,
                       puserkey   IN NUMBER DEFAULT NULL)
AS
  sender              					prs_perslid.prs_perslid_key%TYPE;
  kostenplaats        		      prs_afdeling.prs_kostenplaats_key%TYPE;
  v_mldkey                        mld_melding.mld_melding_key%TYPE;
  defaultstdmelding   	        fac_setting.fac_setting_default%TYPE;
  kkey                          mld_kenmerk.mld_kenmerk_key%TYPE;
  errormsg                      fac_result.fac_result_waarde%TYPE;
  v_mailadres_kenmerk_key 			mld_kenmerk.mld_kenmerk_key%TYPE;
  v_flexprop_mail								VARCHAR2(1000);
  v_from												VARCHAR2 (1000);

  subject_regexp     						fac_setting.fac_setting_default%TYPE;
  v_behandelaar_key  						mld_melding.mld_melding_behandelaar_key%TYPE;
  v_mldnum             					VARCHAR2 (4000);
  v_srtdisc            					VARCHAR2 (4000);
  v_flag_on_fenote              NUMBER (10);
  v_flag_on_bonote              NUMBER (10);
	v_mld_meldbron_key						NUMBER (10);

	v_prs_perslid_sysuser_key     NUMBER (10);
	v_mailadres_to_wagenpark      VARCHAR2(100);

BEGIN
	v_prs_perslid_sysuser_key := 81;
	v_mailadres_to_wagenpark := 'XrTeMOZ@vebe.facilitor.nl';

  -- We beschouwen dit als een nieuwe melding
	IF (UPPER(pto) = UPPER(v_mailadres_to_wagenpark))
	THEN
	  -- Mailmelding (onder vakgroep 'Mailmelding') met mld_stdmelding_key 161, deze staat in de setting defaultmelding.
		defaultstdmelding := fac.getsetting ('defaultstdmelding');
		v_mld_meldbron_key := 4;
	END IF;

	-- Selecteer de kostenplaats van prs_perslid_key = v_prs_perslid_sysuser_key (Dit is de system-user 'SYSTEM API Mail2Melding')
  SELECT prs_perslid_key, d.prs_kostenplaats_key
  INTO sender, kostenplaats
  FROM prs_perslid p, prs_afdeling d
  WHERE p.prs_afdeling_key = d.prs_afdeling_key
  AND prs_perslid_key = v_prs_perslid_sysuser_key;


  -- Bepaal kenmerk-key van kenmerksoort 'mailadres' (key 61) op vakgroeptype niveau van vakgroeptype-key 1 die niet verwijderd is
  SELECT MAX(mld_kenmerk_key)
	INTO v_mailadres_kenmerk_key
	FROM mld_kenmerk
	WHERE mld_srtkenmerk_key = 27
	AND mld_kenmerk_verwijder IS NULL
	AND mld_kenmerk_niveau = 'T'
	AND mld_stdmelding_key = 1;


  -- Check of de afzender pfrom een reply op een bestaande melding doet, in dat geval wordt dat in notities genoteerd.

  -- Eerst uit het onderwerp het meldingnummer proberen te onderscheppen, uitgangspunt dat in het onderwerp 'MLD123' kan worden opgevist, waarbij het deel achter MLD minimaal uit 1 cijfer bestaat.
  subject_regexp := '[[:alpha:]]*MLD[[:digit:]]{1,}';
  v_mldnum :=
      REGEXP_SUBSTR (psubject,
                     subject_regexp,
                     1,
                     1,
                     'i');                                    -- M123, of M12345, of M12, of M1

  v_srtdisc :=
      REGEXP_SUBSTR (v_mldnum,
                     '[[:alpha:]]*',
                     1,
                     1,
                     'i');                                         -- M
  v_mldkey := fac.safe_to_number (SUBSTR (v_mldnum, LENGTH (v_srtdisc) + 1)); -- 123, of 12345, of 12, of 1


	--  Uit onderwerp is de vermoedelijke juiste v_mldkey geparsed.
	-- Final check: is de afzender van de mail dezelfde als die van v_mldkey, deze afzender (mailadres) staat in flexprop (zie verderop hieronder in gedeelte bij insert melding).

	SELECT MAX(SUBSTR(TRIM(km.mld_kenmerkmelding_waarde),1,50))
	INTO v_flexprop_mail
	FROM mld_kenmerkmelding km
	WHERE mld_melding_key = v_mldkey
	AND mld_kenmerk_key = v_mailadres_kenmerk_key
	AND mld_kenmerkmelding_verwijder IS NULL;


  v_from := SUBSTR(TRIM(pfrom),1,50);

	IF v_flexprop_mail = v_from
  THEN
  		-- Gotcha: van deze afzender is een eerdere melding geregistreerd, die  we plakken de subject en body nu als notitie toe (als perslid system-user 'SYSTEM API Mail2Melding').


  		INSERT INTO mld_melding_note (mld_melding_key,
                                    mld_melding_note_omschrijving,
                                    prs_perslid_key,
                                    mld_melding_note_flag)
              VALUES (v_mldkey,
                      SUBSTR (
                         psubject || CHR (13) || CHR (10)
                         || REPLACE (
                               SUBSTR (pbody,
                                       1,
                                       4000 - (LENGTH (psubject) + 2)),
                               CHR (13) || CHR (10) || CHR (13) || CHR (10),
                               CHR (13) || CHR (10)),
                         1,
                         4000),              -- verwijder onnodige witregels
                      sender,
                      0);          -- 0 is NIET zichtbaar FE (want is system-user, zinloos).

			-- Default tracking is even goed genoeg
      fac.trackaction ('MLDNOT',
                       v_mldkey,
                       sender,
                       NULL,
                       '#Notitie toegevoegd vanuit e-mail'); -- # voorkomt notificatie

      INSERT INTO fac_result (fac_result_sessionid,
                              fac_result_naam,
                              fac_result_waarde)
          VALUES (psessionid, 'maillog', 'Als notitie toegevoegd aan melding ' || v_mldkey);

      -- We gaan GEEN Vlaggetjes zetten zoals mld_edit_note.asp dat doet, VEBE werkt hier niet mee.
  ELSE

      -- suggested extensions:
      -- check for MLDUSE-write autorisations
      -- parse the subject to find an appropriate stdmelding, if uniquely possible
      -- append (as a note?) to an existing melding if #key is found in the subject
      BEGIN
         INSERT INTO mld_melding (mld_melding_module,
                                  mld_meldbron_key,
                                  mld_melding_datum,
                                  mld_alg_locatie_key,
                                  mld_melding_omschrijving,
                                  mld_melding_status,
                                  mld_stdmelding_key,
                                  prs_perslid_key,
                                  prs_perslid_key_voor,
                                  prs_kostenplaats_key,
                                  mld_melding_spoed)
             VALUES ('MLD',
                     v_mld_meldbron_key,                           -- email (4)
                     SYSDATE,
                     NULL,																				-- Geen locatie bekend
                     SUBSTR (
                        psubject || CHR (13)
                        || REPLACE (
                              SUBSTR (pbody,
                                       1,
                                       4000 - (LENGTH (psubject) + 2)),
                              CHR (13) || CHR (10) || CHR (13) || CHR (10),
                              CHR (13) || CHR (10)),
                        1,
                        4000),              -- verwijder onnodige witregels
                     NULL,
                     defaultstdmelding,
                     sender,
                     sender,
                     kostenplaats,
                     3)
          RETURNING mld_melding_key
               INTO v_mldkey;

				-- Vullen van kenmerkwaarde "e-mail adres"
				IF v_from IS NOT NULL AND v_mailadres_kenmerk_key IS NOT NULL
				THEN
					-- v_from is gevuld, en kenmerk mailadres bestaat, zet v_from met maximaal 50 tekens als kenmerk bij de zojuist aangemaakte melding.
					INSERT INTO mld_kenmerkmelding (mld_melding_key, mld_kenmerk_key, mld_kenmerkmelding_waarde)
					VALUES (v_mldkey, v_mailadres_kenmerk_key, v_from);
				END IF;

         mld.setmeldingstatus (v_mldkey, 2, sender);

         INSERT INTO fac_result (fac_result_sessionid,
                                fac_result_naam,
                                fac_result_waarde)
            VALUES (psessionid, 'maillog', 'Geregistreerd onder melding ' || v_mldkey);

      END;
	END IF;


 	-- find the lowest volgnummer of the flexfield of type folder.
 	SELECT MIN (mld_kenmerk_key)
   INTO kkey
   FROM mld_kenmerk k,
        mld_srtkenmerk sk,
        mld_stdmelding std,
        ins_tab_discipline d
  	WHERE     mld_srtkenmerk_kenmerktype = 'M'
        AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key
        AND std.mld_stdmelding_key = defaultstdmelding
        AND std.mld_ins_discipline_key = d.ins_discipline_key
        AND ( (k.mld_stdmelding_key = std.mld_stdmelding_key
               AND k.mld_kenmerk_niveau = 'S')
             OR (k.mld_stdmelding_key = d.ins_discipline_key
                 AND k.mld_kenmerk_niveau = 'D')
             OR (k.mld_stdmelding_key = d.ins_srtdiscipline_key
                 AND k.mld_kenmerk_niveau = 'T'))
        AND k.mld_kenmerk_verwijder IS NULL
        AND NOT EXISTS
              (SELECT mld_kenmerk_volgnummer
                 FROM mld_kenmerk k1,
                      mld_srtkenmerk sk1,
                      mld_stdmelding std1,
                      ins_tab_discipline d1
                WHERE sk1.mld_srtkenmerk_kenmerktype = 'M'
                      AND sk1.mld_srtkenmerk_key =
                            k1.mld_srtkenmerk_key
                      AND std1.mld_stdmelding_key =
                            defaultstdmelding
                      AND std1.mld_ins_discipline_key =
                            d1.ins_discipline_key
                      AND ( (k1.mld_stdmelding_key =
                                std1.mld_stdmelding_key
                             AND k1.mld_kenmerk_niveau = 'S')
                           OR (k1.mld_stdmelding_key =
                                  d1.ins_discipline_key
                               AND k1.mld_kenmerk_niveau = 'D')
                           OR (k1.mld_stdmelding_key =
                                  d1.ins_srtdiscipline_key
                               AND k1.mld_kenmerk_niveau = 'T'))
                      AND k1.mld_kenmerk_verwijder IS NULL
                      AND k1.mld_kenmerk_volgnummer <
                            k.mld_kenmerk_volgnummer);

 	IF kkey IS NOT NULL
 	THEN
    INSERT INTO fac_result (fac_result_sessionid,
                            fac_result_naam,
                            fac_result_waarde)
        VALUES (psessionid,
                'kenmerkpath',
                'MLD\M' || to_char( TRUNC(v_mldkey/1000), 'FM0000') || '___\M' || v_mldkey || '\' || kkey || '\');
 	END IF;


  IF errormsg IS NOT NULL
  THEN
     INSERT INTO fac_result (fac_result_sessionid,
                             fac_result_naam,
                             fac_result_waarde)
         VALUES (psessionid, 'errormsg', errormsg);
  END IF;
EXCEPTION
  WHEN OTHERS
  THEN
     fac.writelog (
                  'PROCESSEMAIL',
                  'W',
                     'Mail kon niet verwerkt worden afzender: '
                  || pfrom
                  || '['
                  || errormsg
                  || ']',
                     'OTHERS (error '
                  || SQLCODE
                  || '/'
                  || SUBSTR (SQLERRM, 1, 100)
                  || ')');
     INSERT INTO fac_result (fac_result_sessionid,
                             fac_result_naam,
                             fac_result_waarde)
         VALUES (psessionid,
                 'errormsg',
                 'Database fout - Neem contact op met uw systeembeheerder');
END;
/

 -- Selectie doorlooptijden leaseovereenkomst
CREATE OR REPLACE VIEW vebe_v_doorlooptijden
AS
   SELECT mld_melding_key,
          mld_melding_status,
          naam_berijder,
          naam_ap,
          key_bedrijf1,
          bedrijf1,
          off_mld_opdr_key,
          datum_einde_off_athlon,
          key_bedrijf2,
          bedrijf2,
          off1_mld_opdr_key,
          datum_start_off_pon,
          datum_einde_off_pon,
          gun_mld_opdr_key,
          datum_start_gunning,
          datum_einde_gunning,
          mld_vervolgmelding_key,
          datum_start_vervolgmelding,
          uitv_mld_opdr_key,
          datum_start_uitvoering,
          datum_einde_uitvoering
     FROM (SELECT m.mld_melding_key,
                  m.mld_melding_status,
                  berijder.prs_perslid_naam naam_berijder,
                  ap.prs_perslid_naam naam_ap,
                  lm.prs_bedrijf_key key_bedrijf1,
                  lm.prs_bedrijf_naam bedrijf1,
                  off.mld_opdr_key off_mld_opdr_key,
                  fac.gettrackingdate ('ORDAFM', off.mld_opdr_key)
                     datum_einde_off_athlon,
                  lm1.prs_bedrijf_key key_bedrijf2,
                  lm1.prs_bedrijf_naam bedrijf2,
                  off1.mld_opdr_key off1_mld_opdr_key,
                  fac.gettrackingdate ('ORDNEW', off1.mld_opdr_key)
                     datum_start_off_pon,
                  fac.gettrackingdate ('ORDAFM', off1.mld_opdr_key)
                     datum_einde_off_pon,
                  gun.mld_opdr_key gun_mld_opdr_key,
                  fac.gettrackingdate ('ORDNEW', gun.mld_opdr_key)
                     datum_start_gunning,
                  fac.gettrackingdate ('ORDAFM', gun.mld_opdr_key)
                     datum_einde_gunning,
                  m1.mld_melding_key mld_vervolgmelding_key,
                  fac.gettrackingdate ('MLDNEW', m1.mld_melding_key)
                     datum_start_vervolgmelding,
                  uitv.mld_opdr_key uitv_mld_opdr_key,
                  fac.gettrackingdate ('ORDNEW', uitv.mld_opdr_key)
                     datum_start_uitvoering,
                  fac.gettrackingdate ('ORDAFM', uitv.mld_opdr_key)
                     datum_einde_uitvoering,
                  (SELECT MAX (mld_melding_key)
                     FROM mld_melding m1a
                    WHERE m.mld_melding_key = m1a.mld_melding_start_key
                          AND m1a.mld_stdmelding_key = 82)
                     incl_start_key,
                  m1.mld_melding_key mld_vervolg_melding
             FROM mld_melding m,
                  prs_perslid berijder,
                  prs_perslid ap,
                  mld_opdr off,
                  mld_opdr off1,
                  mld_opdr gun,
                  prs_bedrijf lm,
                  prs_bedrijf lm1,
                  mld_melding m1,
                  mld_opdr uitv
            WHERE     m.mld_stdmelding_key IN (1, 21)
                  AND m.prs_perslid_key_voor = berijder.prs_perslid_key
                  AND m.prs_perslid_key = ap.prs_perslid_key
                  AND off.mld_melding_key = m.mld_melding_key
                  AND off.mld_typeopdr_key = 41
                  AND lm.prs_bedrijf_key = off.mld_uitvoerende_keys
                  AND lm.prs_bedrijf_key = 23
                  AND off1.mld_melding_key = m.mld_melding_key
                  AND off1.mld_typeopdr_key = 41
                  AND lm1.prs_bedrijf_key = off1.mld_uitvoerende_keys
                  AND lm1.prs_bedrijf_key = 22
                  AND gun.mld_melding_key = m.mld_melding_key
                  AND gun.mld_typeopdr_key = 5
                  AND m.mld_melding_key = m1.mld_melding_start_key(+)
                  AND uitv.mld_melding_key = m.mld_melding_key
                  AND uitv.mld_typeopdr_key = 81
                  AND off1.mld_opdr_key =
                        (SELECT MAX (mld_opdr_key)
                           FROM mld_opdr off1a, prs_bedrijf lm1a
                          WHERE off1a.mld_melding_key = m.mld_melding_key
                                AND off1a.mld_typeopdr_key = 41
                                AND lm1a.prs_bedrijf_key =
                                      off1a.mld_uitvoerende_keys
                                AND lm1a.prs_bedrijf_key = 22)
                  AND off.mld_opdr_key =
                        (SELECT MAX (mld_opdr_key)
                           FROM mld_opdr offat, prs_bedrijf lma
                          WHERE offat.mld_melding_key = m.mld_melding_key
                                AND offat.mld_typeopdr_key = 41
                                AND lma.prs_bedrijf_key =
                                      offat.mld_uitvoerende_keys
                                AND lma.prs_bedrijf_key = 23)
                  AND gun.mld_opdr_key =
                        (SELECT MAX (mld_opdr_key)
                           FROM mld_opdr gun_a
                          WHERE gun_a.mld_melding_key = m.mld_melding_key
                                AND gun_a.mld_typeopdr_key = 5)
                  AND uitv.mld_opdr_key =
                        (SELECT MAX (mld_opdr_key)
                           FROM mld_opdr uitv_a
                          WHERE (uitv_a.mld_melding_key = m.mld_melding_key
                                 OR uitv_a.mld_melding_key =
                                      m1.mld_melding_key)
                                AND uitv_a.mld_typeopdr_key = 81))
    WHERE mld_vervolg_melding = incl_start_key OR incl_start_key IS NULL;

 -- Rapport doorlooptijden
CREATE OR REPLACE VIEW VEBE_V_RAP_DOORLOOPTIJDEN
AS
   SELECT mld_melding_key,
          naam_berijder,
          naam_ap,
          key_bedrijf1,
          bedrijf1,
          off_mld_opdr_key,
          datum_einde_off_athlon,
          key_bedrijf2,
          bedrijf2,
          off1_mld_opdr_key,
          datum_start_off_pon,
          datum_einde_off_pon,
          gun_mld_opdr_key,
          datum_start_gunning,
          datum_einde_gunning,
          mld_vervolgmelding_key,
          datum_start_vervolgmelding,
          uitv_mld_opdr_key,
          datum_start_uitvoering,
          ROUND (
             datum_start_gunning
             - GREATEST (datum_einde_off_athlon, datum_einde_off_pon),
             0)
             dagen_off_gun,
          ROUND (datum_einde_gunning - datum_start_gunning, 0)
             dagen_srtgun_endgun,
          ROUND (datum_start_vervolgmelding - datum_einde_gunning)
             dagen_endgun_verv,
          ROUND (datum_start_uitvoering - datum_start_vervolgmelding, 0)
             dagen_verv_uitv,
          ROUND (datum_einde_off_pon - datum_start_off_pon, 0)
             dagen_off_pon,
          ROUND (
             datum_start_uitvoering
             - LEAST (datum_einde_off_athlon, datum_einde_off_pon),
             0)
             totaal_doorlooptijd
     FROM vebe_v_doorlooptijden
    WHERE mld_melding_status IN (1, 5, 6);

-- payload end ---

SET DEFINE OFF
BEGIN adm.systrackscriptId('$Id$', 0); END;
/

COMMIT;
SET ECHO OFF
SPOOL OFF
SET DEFINE ON
PROMPT Logfile of this upgrade is: &fcltlogfile