-- Customer specific once-script UWVA91.
--
-- (c) 2014 SG|facilitor bv
SET ECHO ON
SPOOL xuwva91.lst
SET DEFINE OFF

--UWVA#31084: PRS_DUMP-export ontmantelen
DROP VIEW uwva_v_export_prs_dump;

--UWVA#30448: PWP-import
--LOGIN;LOCATIE;GEBOUW;VERDIEPINGCODE;RUIMTENR;PWP_VOLGNR;BEZETTING
CREATE TABLE uwva_imp_pwp
(
   login            VARCHAR2 (30),                      -- prs_perslid_oslogin
   locatie          VARCHAR2 (10),                         -- alg_locatie_code
   gebouw           VARCHAR2 (12),                          -- alg_gebouw_code
   verdiepingcode   VARCHAR2 (10),                      -- alg_verdieping_code
   ruimtenr         VARCHAR2 (10),                            -- alg_ruimte_nr
   pwp_volgnr       NUMBER (2),                  -- prs_perslidwerkplek_volgnr
   bezetting        NUMBER (3)                -- prs_perslidwerkplek_bezetting
);

-- 61=PRSSYS
INSERT INTO fac_import_app (fac_import_app_code,
                            fac_import_app_oms,
                            fac_import_app_xsl,
                            fac_functie_key,
                            fac_import_app_charset,
                            fac_import_app_folder,
                            fac_import_app_files,
                            fac_import_app_prefix)
   SELECT 'PWP',
          'BEHEER: Toewijzen (extra) werkplekken',
          NULL,
          fac_functie_key,
          NULL,
          NULL,
          NULL,
          'UWVA'
     FROM fac_functie
    WHERE fac_functie_code = 'WEB_PRSSYS';

COMMIT;

--UWVA#31122: KTO-uitzetten alle modules (tijdelijk?);
-- MLD door percentage/drempel én KTO-bitje op NULL 
-- BES + RES alleen door percentage/drempel op NULL
UPDATE ins_tab_discipline
   SET ins_discipline_ktopercentage = NULL, ins_discipline_ktodrempel = NULL
 WHERE (ins_discipline_ktopercentage IS NOT NULL
        OR ins_discipline_ktodrempel IS NOT NULL);

UPDATE mld_stdmelding
   SET mld_stdmelding_kto = NULL
 WHERE mld_stdmelding_kto = 1;

COMMIT;

--UWVA#30417: 'prs_perslid_ingids' voor K(etenpartners) eenmalig op onzichtbaar
UPDATE prs_perslid p
   SET p.prs_perslid_ingids = NULL                              -- onzichtbaar
 WHERE EXISTS
          (SELECT 1
             FROM prs_kenmerklink kl, fac_usrdata ud
            WHERE kl.prs_link_key = p.prs_perslid_key
                  AND kl.prs_kenmerk_key = 1040                -- employeetype
                  AND fac.safe_to_number (kl.prs_kenmerklink_waarde) =
                        ud.fac_usrdata_key
                  AND ud.fac_usrtab_key = 301           -- employeetype-domein
                  AND ud.fac_usrdata_upper = 'K');

-- UWVA#30470: Notificatiejob VC-reserveringen naar iMotions
INSERT INTO fac_srtnotificatie (fac_srtnotificatie_code,
                                fac_srtnotificatie_mode,
                                fac_srtnotificatie_oms,
                                fac_srtnotificatie_xmlnode,
                                fac_srtnotificatie_url,
                                fac_srtnotificatie_groep)
    VALUES ('CUST24',
            0,
            'VC-reservering ##KEY## is aangemaakt/gewijzigd/verwijderd',
            'reservering',
            'res/res_reservering.asp?rsv_ruimte_key=',
            0);

INSERT INTO fac_notificatie_job (fac_notificatie_job_view,
                                 fac_notificatie_job_oms,
                                 fac_notificatie_job_mode,
                                 fac_notificatie_job_interval,
                                 fac_notificatie_job_nextrun,
                                 fac_notificatie_job_flags)
    VALUES ('UWVA_V_NOTI_RES_VC_NEWUPDDEL',
            'RESNEW/UPD/DEL-notificatie VC-reserveringen naar iMotions',
            0,
            1,
            NULL,
            0);

-- ***************************************************** --
-- UWVA#30272: HV-contracten converteren en onder mantel --
-- ***************************************************** --
-- STAP1: Te verwijderen/converteren velden eerst onderaan zetten:
-- 381 Termijn informatie/Label
-- 182 Contractant => KOPIE NAAR MANTEL
-- 622 Eigenaar => VERVALLEN
-- 642 Pand eigenaar => KOPIE NAAR MANTEL
-- 641 Aan wie moeten we betalen => VERVALLEN
-- 190 Stilzwijgende verlenging => KOPIE BINNEN SOORT
-- 195 Index systematiek => KOPIE BINNEN SOORT
-- 781 Huurprijsherziening => KOPIE NAAR MANTEL
-- 782 Breakmoment => KOPIE BINNEN SOORT
-- 783 BTW herziening => VERVALLEN
-- 397 BTW tarief 4 => VERVALLEN
-- 399 Aantal 5 => VERVALLEN
-- 422 Eenheid 5 => VERVALLEN
UPDATE cnt_kenmerk SET cnt_kenmerk_volgnummer = 981, cnt_kenmerk_default = '***Te verwijderen***' WHERE cnt_kenmerk_key = 381;
UPDATE cnt_kenmerk SET cnt_kenmerk_volgnummer = 982 WHERE cnt_kenmerk_key = 182;
UPDATE cnt_kenmerk SET cnt_kenmerk_volgnummer = 983 WHERE cnt_kenmerk_key = 622;
UPDATE cnt_kenmerk SET cnt_kenmerk_volgnummer = 984 WHERE cnt_kenmerk_key = 642;
UPDATE cnt_kenmerk SET cnt_kenmerk_volgnummer = 985 WHERE cnt_kenmerk_key = 641;
UPDATE cnt_kenmerk SET cnt_kenmerk_volgnummer = 986 WHERE cnt_kenmerk_key = 190;
UPDATE cnt_kenmerk SET cnt_kenmerk_volgnummer = 987 WHERE cnt_kenmerk_key = 195;
UPDATE cnt_kenmerk SET cnt_kenmerk_volgnummer = 988 WHERE cnt_kenmerk_key = 781;
UPDATE cnt_kenmerk SET cnt_kenmerk_volgnummer = 989 WHERE cnt_kenmerk_key = 782;
UPDATE cnt_kenmerk SET cnt_kenmerk_volgnummer = 990 WHERE cnt_kenmerk_key = 783;
UPDATE cnt_kenmerk SET cnt_kenmerk_volgnummer = 991 WHERE cnt_kenmerk_key = 397;
UPDATE cnt_kenmerk SET cnt_kenmerk_volgnummer = 992 WHERE cnt_kenmerk_key = 399;
UPDATE cnt_kenmerk SET cnt_kenmerk_volgnummer = 993 WHERE cnt_kenmerk_key = 422;

COMMIT;

-- STAP2: Nieuwe velden toevoegen/kopieren van HV-template (v2 zoals voorbereid door PFo) op volgorde van volgnummer:
-- 923 =>  981 Geconditioneerd contr.
-- 943 =>  982 Verlenging
-- 946 =>  983 bijdrage verhuurdr bij verleng
-- 957 =>  984 invest.btw bij voortijd beeind
-- 931 =>  985 Omschrijving Breakmoment
-- 891 =>  986 1e Breakmoment
-- 966 =>  987 opzegtermijn voor 1e break
-- 964 =>  988 opz.datum voor 1e break
-- 969 =>  989 sanctie bij gebruik 1e break
-- 892 =>  990 2e Breakmoment
-- 967 =>  991 opzegtermijn voor 2e break
-- 965 =>  992 opz.datum voor 2e break
-- 970 =>  993 sanctie bij gebruik 2e break
-- 959 =>  994 korteomschr. Terugbwverplicht.
-- 960 =>  995 mogelijke indeplaatsstelling
-- 963 =>  996 onderverhuur toegestaan
--[Contract regel 1]
-- 958 =>  997 jaarlijkse indexdatum
-- 956 =>  998 indexcijfer volgens systeem
-- 962 =>  999 omschrijving aftopping index
--[Contract regel 4]
-- 972 => 1000 Blanco 535
-- 945 => 1001 berekening over huur ktr/park
-- 971 => 1002 verplichte aftrek BTW
-- 968 => 1003 periode laatste afrekening
-- 944 => 1004 aanpass % afhank van fiscus
-- 955 => 1005 herzieningsdatum van %
--[Contract regel 5]
-- 953 => 1006 datum laatste afrekening
-- 952 => 1007 datum bijstelling voorschot
-- 911 => 1008 Contract regel 6
-- 942 => 1009 Rubriek 6
-- 973 => 1010 Blanco 715
-- 897 => 1011 Aantal 6
-- 920 => 1012 Eenheid 6
-- 929 => 1013 Kosten excl. BTW 6
-- 974 => 1014 Blanco 735
-- 961 => 1015 omschr. BTW compensat invest
-- 954 => 1016 herzien.datum BTW comp invest
INSERT INTO cnt_kenmerk (cnt_kenmerk_key,
                         cnt_srtkenmerk_key,
                         cnt_srtcontract_key,
                         cnt_kenmerk_niveau,
                         cnt_kenmerk_verplicht,
                         cnt_kenmerk_toonbaar,
                         cnt_kenmerk_volgnummer,
                         cnt_kenmerk_locatiekolom,
                         cnt_kenmerk_uniek,
                         cnt_kenmerk_default,
                         cnt_kenmerk_hint,
                         cnt_kenmerk_regexp,
                         cnt_kenmerk_groep)
     SELECT 980 + ROWNUM, -- Vrije range in PROD (en ik moet keys weten met oog op rapportages)!!!
            x.cnt_srtkenmerk_key,
            198,                                             -- HV-target (v1)
            x.cnt_kenmerk_niveau,
            x.cnt_kenmerk_verplicht,
            x.cnt_kenmerk_toonbaar,
            x.cnt_kenmerk_volgnummer,
            x.cnt_kenmerk_locatiekolom,
            x.cnt_kenmerk_uniek,
            x.cnt_kenmerk_default,
            x.cnt_kenmerk_hint,
            x.cnt_kenmerk_regexp,
            x.cnt_kenmerk_groep
       FROM (  SELECT *
                 FROM cnt_kenmerk
                WHERE cnt_srtcontract_key = 411
                      AND cnt_kenmerk_key IN
                               (923,
                                943,
                                946,
                                957,
                                931,
                                891,
                                966,
                                964,
                                969,
                                892,
                                967,
                                965,
                                970,
                                959,
                                960,
                                963,
                                958,
                                956,
                                962,
                                972,
                                945,
                                971,
                                968,
                                944,
                                955,
                                953,
                                952,
                                911,
                                942,
                                973,
                                897,
                                920,
                                929,
                                974,
                                961,
                                954)
             ORDER BY cnt_kenmerk_volgnummer) x
   ORDER BY 1;

COMMIT;

-- STAP3a: Verschuiven Blanco 155 (later naam wijzigen in Blanco 135?):
UPDATE cnt_kenmerk SET cnt_kenmerk_volgnummer = 135 WHERE cnt_kenmerk_key = 341;
-- STAP3b: Verschuiven Blanco 16 (later naam wijzigen in Blanco 176?):
UPDATE cnt_kenmerk SET cnt_kenmerk_volgnummer = 176 WHERE cnt_kenmerk_key = 621;

COMMIT;

-- STAP4: Extra regel toevoegen met alleen de basis-velden zoals regels 2+3
-- (tussen 3 en 4; nieuwe regel IV dus en huidige 4-5-6 later hernoemen+1):
INSERT INTO cnt_srtkenmerk (cnt_srtkenmerk_key,
                            cnt_srtkenmerk_omschrijving,
                            cnt_srtkenmerk_kenmerktype,
                            cnt_srtkenmerk_lengte,
                            cnt_srtkenmerk_dec,
                            cnt_srtkenmerk_nmin,
                            cnt_srtkenmerk_nmax,
                            fac_kenmerkdomein_key)
     SELECT DECODE (cnt_srtkenmerk_key,
                    90, 590,
                    92, 592,
                    93, 593,
                    94, 594,
                    95, 595,
                    145, 596,
                    597)
               cnt_srtkenmerk_key,
            DECODE (cnt_srtkenmerk_key,
                    90, 'Rubriek IV',
                    92, 'Aantal IV',
                    93, 'Eenheid IV',
                    94, 'Kosten excl. BTW IV',
                    95, 'BTW-tarief IV',
                    145, 'Contract regel IV',
                    'blanco 465')
               cnt_srtkenmerk_omschrijving,
            cnt_srtkenmerk_kenmerktype,
            cnt_srtkenmerk_lengte,
            cnt_srtkenmerk_dec,
            cnt_srtkenmerk_nmin,
            cnt_srtkenmerk_nmax,
            fac_kenmerkdomein_key
       FROM cnt_srtkenmerk
      WHERE cnt_srtkenmerk_key IN (90, 92, 93, 94, 95, 145, 150)
   ORDER BY cnt_srtkenmerk_key;

INSERT INTO cnt_kenmerk (cnt_kenmerk_key,
                         cnt_srtkenmerk_key,
                         cnt_srtcontract_key,
                         cnt_kenmerk_niveau,
                         cnt_kenmerk_verplicht,
                         cnt_kenmerk_toonbaar,
                         cnt_kenmerk_volgnummer,
                         cnt_kenmerk_locatiekolom,
                         cnt_kenmerk_uniek,
                         cnt_kenmerk_default,
                         cnt_kenmerk_hint,
                         cnt_kenmerk_regexp,
                         cnt_kenmerk_groep)
     SELECT DECODE (cnt_srtkenmerk_key,
                    90, 851,
                    92, 852,
                    93, 853,
                    94, 854,
                    95, 855,
                    145, 856,
                    857)
               cnt_kenmerk_key,
            DECODE (cnt_srtkenmerk_key,
                    90, 590,
                    92, 592,
                    93, 593,
                    94, 594,
                    95, 595,
                    145, 596,
                    597)
               cnt_srtkenmerk_key,
            198,                                             -- HV-target (v1)
            cnt_kenmerk_niveau,
            cnt_kenmerk_verplicht,
            cnt_kenmerk_toonbaar,
            cnt_kenmerk_volgnummer + 50,
            cnt_kenmerk_locatiekolom,
            cnt_kenmerk_uniek,
            cnt_kenmerk_default,
            cnt_kenmerk_hint,
            cnt_kenmerk_regexp,
            cnt_kenmerk_groep
       FROM cnt_kenmerk
      WHERE cnt_srtcontract_key = 198                        -- HV-target (v1)
            AND cnt_srtkenmerk_key IN (90, 92, 93, 94, 95, 145, 150)
   ORDER BY cnt_srtkenmerk_key;

COMMIT; 

-- STAP5: Verhuizen (binnen soort/oude weg):
-- Stilzwijgende verlenging (190) => Verlenging (v2-943/soort 559): van Referentie/Tabel naar Referentie/Tabel???
INSERT INTO cnt_kenmerkcontract (cnt_contract_key, cnt_kenmerk_key, cnt_kenmerkcontract_waarde)
   SELECT kc.cnt_contract_key,
          (SELECT cnt_kenmerk_key FROM cnt_kenmerk WHERE cnt_kenmerk_verwijder IS NULL AND cnt_srtcontract_key = 198 AND cnt_srtkenmerk_key = 559),
          DECODE (ud.fac_usrdata_key, 1221, '17466', '17467') -- Resp. 'Actie' en 'Geen' ('Stilzwijgend' = 17468)
     FROM cnt_kenmerkcontract kc, cnt_kenmerk k, fac_usrdata ud
    WHERE     kc.cnt_kenmerkcontract_verwijder IS NULL
          AND kc.cnt_kenmerk_key = 190
          AND kc.cnt_kenmerk_key = k.cnt_kenmerk_key
          AND k.cnt_srtcontract_key = 198
          AND ud.fac_usrdata_verwijder IS NULL
          AND ud.fac_usrtab_key = 223                                 -- JaNee
          AND fac.safe_to_number (kc.cnt_kenmerkcontract_waarde) =
                ud.fac_usrdata_key;

-- Breakmoment (782) => 1e Breakmoment (v2-891/soort 550): van Datum naar Datum
INSERT INTO cnt_kenmerkcontract (cnt_contract_key, cnt_kenmerk_key, cnt_kenmerkcontract_waarde)
   SELECT kc.cnt_contract_key,
          (SELECT cnt_kenmerk_key FROM cnt_kenmerk WHERE cnt_kenmerk_verwijder IS NULL AND cnt_srtcontract_key = 198 AND cnt_srtkenmerk_key = 550),
          kc.cnt_kenmerkcontract_waarde
     FROM cnt_kenmerkcontract kc, cnt_kenmerk k
    WHERE kc.cnt_kenmerkcontract_verwijder IS NULL
          AND kc.cnt_kenmerk_key = 782
          AND kc.cnt_kenmerk_key = k.cnt_kenmerk_key
          AND k.cnt_srtcontract_key = 198;

-- Index systematiek (195) => Indexcijfer volgens systeem (v2-956/soort 567): van Referentie/Tabel naar Karakter
INSERT INTO cnt_kenmerkcontract (cnt_contract_key, cnt_kenmerk_key, cnt_kenmerkcontract_waarde)
   SELECT kc.cnt_contract_key,
          (SELECT cnt_kenmerk_key FROM cnt_kenmerk WHERE cnt_kenmerk_verwijder IS NULL AND cnt_srtcontract_key = 198 AND cnt_srtkenmerk_key = 567),
          ud.fac_usrdata_omschr
     FROM cnt_kenmerkcontract kc, cnt_kenmerk k, fac_usrdata ud
    WHERE     kc.cnt_kenmerkcontract_verwijder IS NULL
          AND kc.cnt_kenmerk_key = 195
          AND kc.cnt_kenmerk_key = k.cnt_kenmerk_key
          AND k.cnt_srtcontract_key = 198
          AND ud.fac_usrdata_verwijder IS NULL
          AND ud.fac_usrtab_key = 244                          -- Indexmethode
          AND fac.safe_to_number (kc.cnt_kenmerkcontract_waarde) =
                ud.fac_usrdata_key;

COMMIT;

-- STAP6: Verwijderen huidige contractregels, maar eerst naar tijdelijke tabel uwva_tmp_hv_contractregels:
CREATE TABLE uwva_tmp_hv_contractregels
(
   cnt_contract_key   NUMBER,
   volgorde           NUMBER,
   rubriek            VARCHAR2 (100),
   aantal             VARCHAR2 (100),
   eenheid            VARCHAR2 (100),
   kosten_excl_btw    VARCHAR2 (100),
   btw_tarief         VARCHAR2 (100)
);

INSERT INTO uwva_tmp_hv_contractregels (cnt_contract_key,
                                        volgorde,
                                        rubriek,
                                        aantal,
                                        eenheid,
                                        kosten_excl_btw,
                                        btw_tarief)
   SELECT basis.cnt_contract_key,
          DECODE (regels.contractregelrubriek,
                  '2407', 1,
                  '2427', 1,
                  '2601', 1,
                  '2622', 4,
                  '2412', 5,
                  '2431', 5,
                  '2410', 6,
                  2)
             volgorde,
          regels.contractregelrubriek,
          regels.aantal,
          regels.eenheid,
          regels.kostenexcl,
          regels.btw
     FROM    (SELECT c.cnt_contract_key
                FROM cnt_v_aanwezigcontract c
               WHERE c.ins_discipline_key = 198) basis
          LEFT JOIN
             (SELECT cr1.cnt_contract_key cntkey,
                     (SELECT kc.cnt_kenmerkcontract_waarde
                        FROM cnt_kenmerkcontract kc, fac_usrdata ud
                       WHERE     kc.cnt_kenmerkcontract_verwijder IS NULL
                             AND kc.cnt_contract_key = cr1.cnt_contract_key
                             AND kc.cnt_kenmerk_key = 201
                             AND kc.cnt_kenmerkcontract_waarde =
                                   ud.fac_usrdata_key)
                        contractregelrubriek,
                     (SELECT kc.cnt_kenmerkcontract_waarde
                        FROM cnt_kenmerkcontract kc
                       WHERE     kc.cnt_kenmerkcontract_verwijder IS NULL
                             AND kc.cnt_contract_key = cr1.cnt_contract_key
                             AND kc.cnt_kenmerk_key = 202)
                        aantal,
                     (SELECT kc.cnt_kenmerkcontract_waarde
                        FROM cnt_kenmerkcontract kc, fac_usrdata ud
                       WHERE     kc.cnt_kenmerkcontract_verwijder IS NULL
                             AND kc.cnt_contract_key = cr1.cnt_contract_key
                             AND kc.cnt_kenmerk_key = 203
                             AND kc.cnt_kenmerkcontract_waarde =
                                   ud.fac_usrdata_key)
                        eenheid,
                     (SELECT kc.cnt_kenmerkcontract_waarde
                        FROM cnt_kenmerkcontract kc
                       WHERE     kc.cnt_kenmerkcontract_verwijder IS NULL
                             AND kc.cnt_contract_key = cr1.cnt_contract_key
                             AND kc.cnt_kenmerk_key = 221)
                        kostenexcl,
                     (SELECT kc.cnt_kenmerkcontract_waarde
                        FROM cnt_kenmerkcontract kc, fac_usrdata ud
                       WHERE     kc.cnt_kenmerkcontract_verwijder IS NULL
                             AND kc.cnt_contract_key = cr1.cnt_contract_key
                             AND kc.cnt_kenmerk_key = 242
                             AND kc.cnt_kenmerkcontract_waarde =
                                   ud.fac_usrdata_key)
                        btw
                FROM cnt_contract cr1
               WHERE cr1.ins_discipline_key = 198                   -- regel 1
              UNION
              SELECT cr2.cnt_contract_key cntkey,
                     (SELECT kc.cnt_kenmerkcontract_waarde
                        FROM cnt_kenmerkcontract kc, fac_usrdata ud
                       WHERE     kc.cnt_kenmerkcontract_verwijder IS NULL
                             AND kc.cnt_contract_key = cr2.cnt_contract_key
                             AND kc.cnt_kenmerk_key = 241
                             AND kc.cnt_kenmerkcontract_waarde =
                                   ud.fac_usrdata_key)
                        contractregelrubriek,
                     (SELECT kc.cnt_kenmerkcontract_waarde
                        FROM cnt_kenmerkcontract kc
                       WHERE     kc.cnt_kenmerkcontract_verwijder IS NULL
                             AND kc.cnt_contract_key = cr2.cnt_contract_key
                             AND kc.cnt_kenmerk_key = 261)
                        aantal,
                     (SELECT kc.cnt_kenmerkcontract_waarde
                        FROM cnt_kenmerkcontract kc, fac_usrdata ud
                       WHERE     kc.cnt_kenmerkcontract_verwijder IS NULL
                             AND kc.cnt_contract_key = cr2.cnt_contract_key
                             AND kc.cnt_kenmerk_key = 262
                             AND kc.cnt_kenmerkcontract_waarde =
                                   ud.fac_usrdata_key)
                        eenheid,
                     (SELECT kc.cnt_kenmerkcontract_waarde
                        FROM cnt_kenmerkcontract kc
                       WHERE     kc.cnt_kenmerkcontract_verwijder IS NULL
                             AND kc.cnt_contract_key = cr2.cnt_contract_key
                             AND kc.cnt_kenmerk_key = 263)
                        kostenexcl,
                     (SELECT kc.cnt_kenmerkcontract_waarde
                        FROM cnt_kenmerkcontract kc, fac_usrdata ud
                       WHERE     kc.cnt_kenmerkcontract_verwijder IS NULL
                             AND kc.cnt_contract_key = cr2.cnt_contract_key
                             AND kc.cnt_kenmerk_key = 281
                             AND kc.cnt_kenmerkcontract_waarde =
                                   ud.fac_usrdata_key)
                        btw
                FROM cnt_contract cr2
               WHERE cr2.ins_discipline_key = 198                   -- regel 2
              UNION
              SELECT cr3.cnt_contract_key cntkey,
                     (SELECT kc.cnt_kenmerkcontract_waarde
                        FROM cnt_kenmerkcontract kc, fac_usrdata ud
                       WHERE     kc.cnt_kenmerkcontract_verwijder IS NULL
                             AND kc.cnt_contract_key = cr3.cnt_contract_key
                             AND kc.cnt_kenmerk_key = 302
                             AND kc.cnt_kenmerkcontract_waarde =
                                   ud.fac_usrdata_key)
                        contractregelrubriek,
                     (SELECT kc.cnt_kenmerkcontract_waarde
                        FROM cnt_kenmerkcontract kc
                       WHERE     kc.cnt_kenmerkcontract_verwijder IS NULL
                             AND kc.cnt_contract_key = cr3.cnt_contract_key
                             AND kc.cnt_kenmerk_key = 321)
                        aantal,
                     (SELECT kc.cnt_kenmerkcontract_waarde
                        FROM cnt_kenmerkcontract kc, fac_usrdata ud
                       WHERE     kc.cnt_kenmerkcontract_verwijder IS NULL
                             AND kc.cnt_contract_key = cr3.cnt_contract_key
                             AND kc.cnt_kenmerk_key = 322
                             AND kc.cnt_kenmerkcontract_waarde =
                                   ud.fac_usrdata_key)
                        eenheid,
                     (SELECT kc.cnt_kenmerkcontract_waarde
                        FROM cnt_kenmerkcontract kc
                       WHERE     kc.cnt_kenmerkcontract_verwijder IS NULL
                             AND kc.cnt_contract_key = cr3.cnt_contract_key
                             AND kc.cnt_kenmerk_key = 392)
                        kostenexcl,
                     (SELECT kc.cnt_kenmerkcontract_waarde
                        FROM cnt_kenmerkcontract kc, fac_usrdata ud
                       WHERE     kc.cnt_kenmerkcontract_verwijder IS NULL
                             AND kc.cnt_contract_key = cr3.cnt_contract_key
                             AND kc.cnt_kenmerk_key = 393
                             AND kc.cnt_kenmerkcontract_waarde =
                                   ud.fac_usrdata_key)
                        btw
                FROM cnt_contract cr3
               WHERE cr3.ins_discipline_key = 198                   -- regel 3
              UNION
              SELECT cr4.cnt_contract_key cntkey,
                     (SELECT kc.cnt_kenmerkcontract_waarde
                        FROM cnt_kenmerkcontract kc, fac_usrdata ud
                       WHERE     kc.cnt_kenmerkcontract_verwijder IS NULL
                             AND kc.cnt_contract_key = cr4.cnt_contract_key
                             AND kc.cnt_kenmerk_key = 394
                             AND kc.cnt_kenmerkcontract_waarde =
                                   ud.fac_usrdata_key)
                        contractregelrubriek,
                     (SELECT kc.cnt_kenmerkcontract_waarde
                        FROM cnt_kenmerkcontract kc
                       WHERE     kc.cnt_kenmerkcontract_verwijder IS NULL
                             AND kc.cnt_contract_key = cr4.cnt_contract_key
                             AND kc.cnt_kenmerk_key = 395)
                        aantal,
                     (SELECT kc.cnt_kenmerkcontract_waarde
                        FROM cnt_kenmerkcontract kc, fac_usrdata ud
                       WHERE     kc.cnt_kenmerkcontract_verwijder IS NULL
                             AND kc.cnt_contract_key = cr4.cnt_contract_key
                             AND kc.cnt_kenmerk_key = 396
                             AND kc.cnt_kenmerkcontract_waarde =
                                   ud.fac_usrdata_key)
                        eenheid,
                     (SELECT kc.cnt_kenmerkcontract_waarde
                        FROM cnt_kenmerkcontract kc
                       WHERE     kc.cnt_kenmerkcontract_verwijder IS NULL
                             AND kc.cnt_contract_key = cr4.cnt_contract_key
                             AND kc.cnt_kenmerk_key = 421)
                        kostenexcl,
                     (SELECT kc.cnt_kenmerkcontract_waarde
                        FROM cnt_kenmerkcontract kc, fac_usrdata ud
                       WHERE     kc.cnt_kenmerkcontract_verwijder IS NULL
                             AND kc.cnt_contract_key = cr4.cnt_contract_key
                             AND kc.cnt_kenmerk_key = 397
                             AND kc.cnt_kenmerkcontract_waarde =
                                   ud.fac_usrdata_key)
                        btw
                FROM cnt_contract cr4
               WHERE cr4.ins_discipline_key = 198                   -- regel 4
              UNION
              SELECT cr5.cnt_contract_key cntkey,
                     (SELECT kc.cnt_kenmerkcontract_waarde
                        FROM cnt_kenmerkcontract kc, fac_usrdata ud
                       WHERE     kc.cnt_kenmerkcontract_verwijder IS NULL
                             AND kc.cnt_contract_key = cr5.cnt_contract_key
                             AND kc.cnt_kenmerk_key = 398
                             AND kc.cnt_kenmerkcontract_waarde =
                                   ud.fac_usrdata_key)
                        contractregelrubriek,
                     (SELECT kc.cnt_kenmerkcontract_waarde
                        FROM cnt_kenmerkcontract kc
                       WHERE     kc.cnt_kenmerkcontract_verwijder IS NULL
                             AND kc.cnt_contract_key = cr5.cnt_contract_key
                             AND kc.cnt_kenmerk_key = 399)
                        aantal,
                     (SELECT kc.cnt_kenmerkcontract_waarde
                        FROM cnt_kenmerkcontract kc, fac_usrdata ud
                       WHERE     kc.cnt_kenmerkcontract_verwijder IS NULL
                             AND kc.cnt_contract_key = cr5.cnt_contract_key
                             AND kc.cnt_kenmerk_key = 422
                             AND kc.cnt_kenmerkcontract_waarde =
                                   ud.fac_usrdata_key)
                        eenheid,
                     (SELECT kc.cnt_kenmerkcontract_waarde
                        FROM cnt_kenmerkcontract kc
                       WHERE     kc.cnt_kenmerkcontract_verwijder IS NULL
                             AND kc.cnt_contract_key = cr5.cnt_contract_key
                             AND kc.cnt_kenmerk_key = 400)
                        kostenexcl,
                     (SELECT kc.cnt_kenmerkcontract_waarde
                        FROM cnt_kenmerkcontract kc, fac_usrdata ud
                       WHERE     kc.cnt_kenmerkcontract_verwijder IS NULL
                             AND kc.cnt_contract_key = cr5.cnt_contract_key
                             AND kc.cnt_kenmerk_key = 401
                             AND kc.cnt_kenmerkcontract_waarde =
                                   ud.fac_usrdata_key)
                        btw
                FROM cnt_contract cr5
               WHERE cr5.ins_discipline_key = 198) regels           -- regel 5
          ON basis.cnt_contract_key = regels.cntkey
    WHERE regels.contractregelrubriek IS NOT NULL;

UPDATE cnt_kenmerkcontract
   SET cnt_kenmerkcontract_verwijder = SYSDATE
 WHERE cnt_kenmerkcontract_verwijder IS NULL
       AND cnt_kenmerk_key IN
                (201,
                 202,
                 203,
                 221,
                 242,
                 241,
                 261,
                 262,
                 263,
                 281,
                 302,
                 321,
                 322,
                 392,
                 393,
                 394,
                 395,
                 396,
                 421,
                 397,
                 398,
                 399,
                 422,
                 400,
                 401);

COMMIT;

-- STAP6: In juiste volgorde aanmaken/vullen nieuwe regels vanuit tijdelijk tabel (en veel voorkennis):
SET SERVEROUTPUT ON size 1000000;

DECLARE
   oracle_err_num   NUMBER;
   oracle_err_mes   VARCHAR2 (255);
   v_aanduiding     VARCHAR2 (255);
   v_errormsg       VARCHAR2 (1024);
   v_errorhint      VARCHAR2 (1024);
   v_lines_cnt      NUMBER;
   v_line2_cnt      NUMBER;
   v_line4_cnt      NUMBER;
   v_line5_cnt      NUMBER;
   v_line6_cnt      NUMBER;

   CURSOR c
   IS
        SELECT DISTINCT x.cnt_contract_key, c.cnt_contract_nummer_intern
          FROM uwva_tmp_hv_contractregels x, cnt_contract c
         WHERE x.cnt_contract_key = c.cnt_contract_key
      ORDER BY x.cnt_contract_key;
BEGIN
   FOR r1 IN c
   LOOP
      BEGIN
         v_aanduiding :=
               '['
            || TO_CHAR (r1.cnt_contract_key)
            || '| '
            || r1.cnt_contract_nummer_intern
            || '] ';


         v_errorhint := 'Fout bepalen contractregels';

         v_lines_cnt := 1;
         v_line2_cnt := 1;
         v_line4_cnt := 1;
         v_line5_cnt := 1;
         v_line6_cnt := 1;

         FOR r2 IN (  SELECT x.volgorde,
                             x.rubriek,
                             x.aantal,
                             x.eenheid,
                             x.kosten_excl_btw,
                             x.btw_tarief
                        FROM uwva_tmp_hv_contractregels x
                       WHERE x.cnt_contract_key = r1.cnt_contract_key
                    ORDER BY x.volgorde, x.aantal DESC)
         LOOP
            BEGIN
               v_errorhint :=
                  'Fout toevoegen contractregel: ' || TO_CHAR (v_lines_cnt);

               IF (r2.volgorde = 1)   -- INSERT op 1, anders eerstvrije 2/3/IV!
               THEN
                  IF (v_lines_cnt = 1)
                  THEN
                     --INSERT op 1; 201, 202, 203, 221, 242
                     INSERT INTO cnt_kenmerkcontract (cnt_contract_key,
                                                      cnt_kenmerk_key,
                                                      cnt_kenmerkcontract_waarde)
                         VALUES (r1.cnt_contract_key, 201, r2.rubriek);

                     IF r2.aantal IS NOT NULL
                     THEN
                        INSERT INTO cnt_kenmerkcontract (cnt_contract_key,
                                                         cnt_kenmerk_key,
                                                         cnt_kenmerkcontract_waarde)
                            VALUES (r1.cnt_contract_key, 202, r2.aantal);
                     END IF;

                     IF r2.eenheid IS NOT NULL
                     THEN
                        INSERT INTO cnt_kenmerkcontract (cnt_contract_key,
                                                         cnt_kenmerk_key,
                                                         cnt_kenmerkcontract_waarde)
                            VALUES (r1.cnt_contract_key, 203, r2.eenheid);
                     END IF;

                     IF r2.kosten_excl_btw IS NOT NULL
                     THEN
                        INSERT INTO cnt_kenmerkcontract (cnt_contract_key,
                                                         cnt_kenmerk_key,
                                                         cnt_kenmerkcontract_waarde)
                            VALUES (r1.cnt_contract_key,
                                    221,
                                    r2.kosten_excl_btw);
                     END IF;

                     IF r2.btw_tarief IS NOT NULL
                     THEN
                        INSERT INTO cnt_kenmerkcontract (cnt_contract_key,
                                                         cnt_kenmerk_key,
                                                         cnt_kenmerkcontract_waarde)
                            VALUES (r1.cnt_contract_key, 242, r2.btw_tarief);
                     END IF;
                  ELSE
                     IF (v_line2_cnt = 1)
                     THEN
                        --INSERT op 2; 241, 261, 262, 263, 281
                        INSERT INTO cnt_kenmerkcontract (cnt_contract_key,
                                                         cnt_kenmerk_key,
                                                         cnt_kenmerkcontract_waarde)
                            VALUES (r1.cnt_contract_key, 241, r2.rubriek);

                        IF r2.aantal IS NOT NULL
                        THEN
                           INSERT INTO cnt_kenmerkcontract (cnt_contract_key,
                                                            cnt_kenmerk_key,
                                                            cnt_kenmerkcontract_waarde)
                               VALUES (r1.cnt_contract_key, 261, r2.aantal);
                        END IF;

                        IF r2.eenheid IS NOT NULL
                        THEN
                           INSERT INTO cnt_kenmerkcontract (cnt_contract_key,
                                                            cnt_kenmerk_key,
                                                            cnt_kenmerkcontract_waarde)
                               VALUES (r1.cnt_contract_key, 262, r2.eenheid);
                        END IF;

                        IF r2.kosten_excl_btw IS NOT NULL
                        THEN
                           INSERT INTO cnt_kenmerkcontract (cnt_contract_key,
                                                            cnt_kenmerk_key,
                                                            cnt_kenmerkcontract_waarde)
                               VALUES (r1.cnt_contract_key,
                                       263,
                                       r2.kosten_excl_btw);
                        END IF;

                        IF r2.btw_tarief IS NOT NULL
                        THEN
                           INSERT INTO cnt_kenmerkcontract (cnt_contract_key,
                                                            cnt_kenmerk_key,
                                                            cnt_kenmerkcontract_waarde)
                               VALUES (r1.cnt_contract_key,
                                       281,
                                       r2.btw_tarief);
                        END IF;
                     ELSIF (v_line2_cnt = 2)
                     THEN
                        --INSERT op 3; 302, 321, 322, 392, 393
                        INSERT INTO cnt_kenmerkcontract (cnt_contract_key,
                                                         cnt_kenmerk_key,
                                                         cnt_kenmerkcontract_waarde)
                            VALUES (r1.cnt_contract_key, 302, r2.rubriek);

                        IF r2.aantal IS NOT NULL
                        THEN
                           INSERT INTO cnt_kenmerkcontract (cnt_contract_key,
                                                            cnt_kenmerk_key,
                                                            cnt_kenmerkcontract_waarde)
                               VALUES (r1.cnt_contract_key, 321, r2.aantal);
                        END IF;

                        IF r2.eenheid IS NOT NULL
                        THEN
                           INSERT INTO cnt_kenmerkcontract (cnt_contract_key,
                                                            cnt_kenmerk_key,
                                                            cnt_kenmerkcontract_waarde)
                               VALUES (r1.cnt_contract_key, 322, r2.eenheid);
                        END IF;

                        IF r2.kosten_excl_btw IS NOT NULL
                        THEN
                           INSERT INTO cnt_kenmerkcontract (cnt_contract_key,
                                                            cnt_kenmerk_key,
                                                            cnt_kenmerkcontract_waarde)
                               VALUES (r1.cnt_contract_key,
                                       392,
                                       r2.kosten_excl_btw);
                        END IF;

                        IF r2.btw_tarief IS NOT NULL
                        THEN
                           INSERT INTO cnt_kenmerkcontract (cnt_contract_key,
                                                            cnt_kenmerk_key,
                                                            cnt_kenmerkcontract_waarde)
                               VALUES (r1.cnt_contract_key,
                                       393,
                                       r2.btw_tarief);
                        END IF;
                     ELSIF (v_line2_cnt = 3)
                     THEN
                        --INSERT op IV; 851, 852, 853, 854, 855
                        INSERT INTO cnt_kenmerkcontract (cnt_contract_key,
                                                         cnt_kenmerk_key,
                                                         cnt_kenmerkcontract_waarde)
                            VALUES (r1.cnt_contract_key, 851, r2.rubriek);

                        IF r2.aantal IS NOT NULL
                        THEN
                           INSERT INTO cnt_kenmerkcontract (cnt_contract_key,
                                                            cnt_kenmerk_key,
                                                            cnt_kenmerkcontract_waarde)
                               VALUES (r1.cnt_contract_key, 852, r2.aantal);
                        END IF;

                        IF r2.eenheid IS NOT NULL
                        THEN
                           INSERT INTO cnt_kenmerkcontract (cnt_contract_key,
                                                            cnt_kenmerk_key,
                                                            cnt_kenmerkcontract_waarde)
                               VALUES (r1.cnt_contract_key, 853, r2.eenheid);
                        END IF;

                        IF r2.kosten_excl_btw IS NOT NULL
                        THEN
                           INSERT INTO cnt_kenmerkcontract (cnt_contract_key,
                                                            cnt_kenmerk_key,
                                                            cnt_kenmerkcontract_waarde)
                               VALUES (r1.cnt_contract_key,
                                       854,
                                       r2.kosten_excl_btw);
                        END IF;

                        IF r2.btw_tarief IS NOT NULL
                        THEN
                           INSERT INTO cnt_kenmerkcontract (cnt_contract_key,
                                                            cnt_kenmerk_key,
                                                            cnt_kenmerkcontract_waarde)
                               VALUES (r1.cnt_contract_key,
                                       855,
                                       r2.btw_tarief);
                        END IF;
                     ELSE
                        -- Iets loopt niet zoals verwacht!
                        DBMS_OUTPUT.PUT_LINE (
                           'Error: Teveel 1=2-regels; Hint: ' || v_errorhint);
                     END IF;

                     v_line2_cnt := v_line2_cnt + 1;
                  END IF;
               ELSIF (r2.volgorde = 2)         -- INSERT op eerstvrije 2/3/IV!
               THEN
                  IF (v_line2_cnt = 1)
                  THEN
                     --INSERT op 2; 241, 261, 262, 263, 281
                     INSERT INTO cnt_kenmerkcontract (cnt_contract_key,
                                                      cnt_kenmerk_key,
                                                      cnt_kenmerkcontract_waarde)
                         VALUES (r1.cnt_contract_key, 241, r2.rubriek);

                     IF r2.aantal IS NOT NULL
                     THEN
                        INSERT INTO cnt_kenmerkcontract (cnt_contract_key,
                                                         cnt_kenmerk_key,
                                                         cnt_kenmerkcontract_waarde)
                            VALUES (r1.cnt_contract_key, 261, r2.aantal);
                     END IF;

                     IF r2.eenheid IS NOT NULL
                     THEN
                        INSERT INTO cnt_kenmerkcontract (cnt_contract_key,
                                                         cnt_kenmerk_key,
                                                         cnt_kenmerkcontract_waarde)
                            VALUES (r1.cnt_contract_key, 262, r2.eenheid);
                     END IF;

                     IF r2.kosten_excl_btw IS NOT NULL
                     THEN
                        INSERT INTO cnt_kenmerkcontract (cnt_contract_key,
                                                         cnt_kenmerk_key,
                                                         cnt_kenmerkcontract_waarde)
                            VALUES (r1.cnt_contract_key,
                                    263,
                                    r2.kosten_excl_btw);
                     END IF;

                     IF r2.btw_tarief IS NOT NULL
                     THEN
                        INSERT INTO cnt_kenmerkcontract (cnt_contract_key,
                                                         cnt_kenmerk_key,
                                                         cnt_kenmerkcontract_waarde)
                            VALUES (r1.cnt_contract_key, 281, r2.btw_tarief);
                     END IF;
                  ELSIF (v_line2_cnt = 2)
                  THEN
                     --INSERT op 3; 302, 321, 322, 392, 393
                     INSERT INTO cnt_kenmerkcontract (cnt_contract_key,
                                                      cnt_kenmerk_key,
                                                      cnt_kenmerkcontract_waarde)
                         VALUES (r1.cnt_contract_key, 302, r2.rubriek);

                     IF r2.aantal IS NOT NULL
                     THEN
                        INSERT INTO cnt_kenmerkcontract (cnt_contract_key,
                                                         cnt_kenmerk_key,
                                                         cnt_kenmerkcontract_waarde)
                            VALUES (r1.cnt_contract_key, 321, r2.aantal);
                     END IF;

                     IF r2.eenheid IS NOT NULL
                     THEN
                        INSERT INTO cnt_kenmerkcontract (cnt_contract_key,
                                                         cnt_kenmerk_key,
                                                         cnt_kenmerkcontract_waarde)
                            VALUES (r1.cnt_contract_key, 322, r2.eenheid);
                     END IF;

                     IF r2.kosten_excl_btw IS NOT NULL
                     THEN
                        INSERT INTO cnt_kenmerkcontract (cnt_contract_key,
                                                         cnt_kenmerk_key,
                                                         cnt_kenmerkcontract_waarde)
                            VALUES (r1.cnt_contract_key,
                                    392,
                                    r2.kosten_excl_btw);
                     END IF;

                     IF r2.btw_tarief IS NOT NULL
                     THEN
                        INSERT INTO cnt_kenmerkcontract (cnt_contract_key,
                                                         cnt_kenmerk_key,
                                                         cnt_kenmerkcontract_waarde)
                            VALUES (r1.cnt_contract_key, 393, r2.btw_tarief);
                     END IF;
                  ELSIF (v_line2_cnt = 3)
                  THEN
                     --INSERT op IV; 851, 852, 853, 854, 855
                     INSERT INTO cnt_kenmerkcontract (cnt_contract_key,
                                                      cnt_kenmerk_key,
                                                      cnt_kenmerkcontract_waarde)
                         VALUES (r1.cnt_contract_key, 851, r2.rubriek);

                     IF r2.aantal IS NOT NULL
                     THEN
                        INSERT INTO cnt_kenmerkcontract (cnt_contract_key,
                                                         cnt_kenmerk_key,
                                                         cnt_kenmerkcontract_waarde)
                            VALUES (r1.cnt_contract_key, 852, r2.aantal);
                     END IF;

                     IF r2.eenheid IS NOT NULL
                     THEN
                        INSERT INTO cnt_kenmerkcontract (cnt_contract_key,
                                                         cnt_kenmerk_key,
                                                         cnt_kenmerkcontract_waarde)
                            VALUES (r1.cnt_contract_key, 853, r2.eenheid);
                     END IF;

                     IF r2.kosten_excl_btw IS NOT NULL
                     THEN
                        INSERT INTO cnt_kenmerkcontract (cnt_contract_key,
                                                         cnt_kenmerk_key,
                                                         cnt_kenmerkcontract_waarde)
                            VALUES (r1.cnt_contract_key,
                                    854,
                                    r2.kosten_excl_btw);
                     END IF;

                     IF r2.btw_tarief IS NOT NULL
                     THEN
                        INSERT INTO cnt_kenmerkcontract (cnt_contract_key,
                                                         cnt_kenmerk_key,
                                                         cnt_kenmerkcontract_waarde)
                            VALUES (r1.cnt_contract_key, 855, r2.btw_tarief);
                     END IF;
                  ELSE
                     -- Iets loopt niet zoals verwacht!
                     DBMS_OUTPUT.PUT_LINE (
                        'Error: Teveel 2-regels; Hint: ' || v_errorhint);
                  END IF;

                  v_line2_cnt := v_line2_cnt + 1;
               ELSIF (r2.volgorde = 4)            -- INSERT op 4, anders fout!
               THEN
                  IF (v_line4_cnt = 1)
                  THEN
                     --INSERT op 4; 394, 395, 396, 421, 397
                     INSERT INTO cnt_kenmerkcontract (cnt_contract_key,
                                                      cnt_kenmerk_key,
                                                      cnt_kenmerkcontract_waarde)
                         VALUES (r1.cnt_contract_key, 394, r2.rubriek);

                     IF r2.aantal IS NOT NULL
                     THEN
                        INSERT INTO cnt_kenmerkcontract (cnt_contract_key,
                                                         cnt_kenmerk_key,
                                                         cnt_kenmerkcontract_waarde)
                            VALUES (r1.cnt_contract_key, 395, r2.aantal);
                     END IF;

                     IF r2.eenheid IS NOT NULL
                     THEN
                        INSERT INTO cnt_kenmerkcontract (cnt_contract_key,
                                                         cnt_kenmerk_key,
                                                         cnt_kenmerkcontract_waarde)
                            VALUES (r1.cnt_contract_key, 396, r2.eenheid);
                     END IF;

                     IF r2.kosten_excl_btw IS NOT NULL
                     THEN
                        INSERT INTO cnt_kenmerkcontract (cnt_contract_key,
                                                         cnt_kenmerk_key,
                                                         cnt_kenmerkcontract_waarde)
                            VALUES (r1.cnt_contract_key,
                                    421,
                                    r2.kosten_excl_btw);
                     END IF;

                     IF r2.btw_tarief IS NOT NULL
                     THEN
                        INSERT INTO cnt_kenmerkcontract (cnt_contract_key,
                                                         cnt_kenmerk_key,
                                                         cnt_kenmerkcontract_waarde)
                            VALUES (r1.cnt_contract_key, 397, r2.btw_tarief);
                     END IF;

                     v_line4_cnt := v_line4_cnt + 1;
                  ELSE
                     -- Iets loopt niet zoals verwacht!
                     DBMS_OUTPUT.PUT_LINE (
                        'Error: Teveel 4-regels; Hint: ' || v_errorhint);
                  END IF;
               ELSIF (r2.volgorde = 5) -- INSERT op 5, anders eerstvrije 2/3/IV!
               THEN
                  IF (v_line5_cnt = 1)
                  THEN
                     --INSERT op 5; 398, 399, 422, 400, 401
                     INSERT INTO cnt_kenmerkcontract (cnt_contract_key,
                                                      cnt_kenmerk_key,
                                                      cnt_kenmerkcontract_waarde)
                         VALUES (r1.cnt_contract_key, 398, r2.rubriek);

                     IF r2.aantal IS NOT NULL
                     THEN
                        INSERT INTO cnt_kenmerkcontract (cnt_contract_key,
                                                         cnt_kenmerk_key,
                                                         cnt_kenmerkcontract_waarde)
                            VALUES (r1.cnt_contract_key, 399, r2.aantal);
                     END IF;

                     IF r2.eenheid IS NOT NULL
                     THEN
                        INSERT INTO cnt_kenmerkcontract (cnt_contract_key,
                                                         cnt_kenmerk_key,
                                                         cnt_kenmerkcontract_waarde)
                            VALUES (r1.cnt_contract_key, 422, r2.eenheid);
                     END IF;

                     IF r2.kosten_excl_btw IS NOT NULL
                     THEN
                        INSERT INTO cnt_kenmerkcontract (cnt_contract_key,
                                                         cnt_kenmerk_key,
                                                         cnt_kenmerkcontract_waarde)
                            VALUES (r1.cnt_contract_key,
                                    400,
                                    r2.kosten_excl_btw);
                     END IF;

                     IF r2.btw_tarief IS NOT NULL
                     THEN
                        INSERT INTO cnt_kenmerkcontract (cnt_contract_key,
                                                         cnt_kenmerk_key,
                                                         cnt_kenmerkcontract_waarde)
                            VALUES (r1.cnt_contract_key, 401, r2.btw_tarief);
                     END IF;

                     v_line5_cnt := v_line5_cnt + 1;
                  ELSE
                     IF (v_line2_cnt = 1)
                     THEN
                        --INSERT op 2; 241, 261, 262, 263, 281
                        INSERT INTO cnt_kenmerkcontract (cnt_contract_key,
                                                         cnt_kenmerk_key,
                                                         cnt_kenmerkcontract_waarde)
                            VALUES (r1.cnt_contract_key, 241, r2.rubriek);

                        IF r2.aantal IS NOT NULL
                        THEN
                           INSERT INTO cnt_kenmerkcontract (cnt_contract_key,
                                                            cnt_kenmerk_key,
                                                            cnt_kenmerkcontract_waarde)
                               VALUES (r1.cnt_contract_key, 261, r2.aantal);
                        END IF;

                        IF r2.eenheid IS NOT NULL
                        THEN
                           INSERT INTO cnt_kenmerkcontract (cnt_contract_key,
                                                            cnt_kenmerk_key,
                                                            cnt_kenmerkcontract_waarde)
                               VALUES (r1.cnt_contract_key, 262, r2.eenheid);
                        END IF;

                        IF r2.kosten_excl_btw IS NOT NULL
                        THEN
                           INSERT INTO cnt_kenmerkcontract (cnt_contract_key,
                                                            cnt_kenmerk_key,
                                                            cnt_kenmerkcontract_waarde)
                               VALUES (r1.cnt_contract_key,
                                       263,
                                       r2.kosten_excl_btw);
                        END IF;

                        IF r2.btw_tarief IS NOT NULL
                        THEN
                           INSERT INTO cnt_kenmerkcontract (cnt_contract_key,
                                                            cnt_kenmerk_key,
                                                            cnt_kenmerkcontract_waarde)
                               VALUES (r1.cnt_contract_key,
                                       281,
                                       r2.btw_tarief);
                        END IF;
                     ELSIF (v_line2_cnt = 2)
                     THEN
                        --INSERT op 3; 302, 321, 322, 392, 393
                        INSERT INTO cnt_kenmerkcontract (cnt_contract_key,
                                                         cnt_kenmerk_key,
                                                         cnt_kenmerkcontract_waarde)
                            VALUES (r1.cnt_contract_key, 302, r2.rubriek);

                        IF r2.aantal IS NOT NULL
                        THEN
                           INSERT INTO cnt_kenmerkcontract (cnt_contract_key,
                                                            cnt_kenmerk_key,
                                                            cnt_kenmerkcontract_waarde)
                               VALUES (r1.cnt_contract_key, 321, r2.aantal);
                        END IF;

                        IF r2.eenheid IS NOT NULL
                        THEN
                           INSERT INTO cnt_kenmerkcontract (cnt_contract_key,
                                                            cnt_kenmerk_key,
                                                            cnt_kenmerkcontract_waarde)
                               VALUES (r1.cnt_contract_key, 322, r2.eenheid);
                        END IF;

                        IF r2.kosten_excl_btw IS NOT NULL
                        THEN
                           INSERT INTO cnt_kenmerkcontract (cnt_contract_key,
                                                            cnt_kenmerk_key,
                                                            cnt_kenmerkcontract_waarde)
                               VALUES (r1.cnt_contract_key,
                                       392,
                                       r2.kosten_excl_btw);
                        END IF;

                        IF r2.btw_tarief IS NOT NULL
                        THEN
                           INSERT INTO cnt_kenmerkcontract (cnt_contract_key,
                                                            cnt_kenmerk_key,
                                                            cnt_kenmerkcontract_waarde)
                               VALUES (r1.cnt_contract_key,
                                       393,
                                       r2.btw_tarief);
                        END IF;
                     ELSIF (v_line2_cnt = 3)
                     THEN
                        --INSERT op IV; 851, 852, 853, 854, 855
                        INSERT INTO cnt_kenmerkcontract (cnt_contract_key,
                                                         cnt_kenmerk_key,
                                                         cnt_kenmerkcontract_waarde)
                            VALUES (r1.cnt_contract_key, 851, r2.rubriek);

                        IF r2.aantal IS NOT NULL
                        THEN
                           INSERT INTO cnt_kenmerkcontract (cnt_contract_key,
                                                            cnt_kenmerk_key,
                                                            cnt_kenmerkcontract_waarde)
                               VALUES (r1.cnt_contract_key, 852, r2.aantal);
                        END IF;

                        IF r2.eenheid IS NOT NULL
                        THEN
                           INSERT INTO cnt_kenmerkcontract (cnt_contract_key,
                                                            cnt_kenmerk_key,
                                                            cnt_kenmerkcontract_waarde)
                               VALUES (r1.cnt_contract_key, 853, r2.eenheid);
                        END IF;

                        IF r2.kosten_excl_btw IS NOT NULL
                        THEN
                           INSERT INTO cnt_kenmerkcontract (cnt_contract_key,
                                                            cnt_kenmerk_key,
                                                            cnt_kenmerkcontract_waarde)
                               VALUES (r1.cnt_contract_key,
                                       854,
                                       r2.kosten_excl_btw);
                        END IF;

                        IF r2.btw_tarief IS NOT NULL
                        THEN
                           INSERT INTO cnt_kenmerkcontract (cnt_contract_key,
                                                            cnt_kenmerk_key,
                                                            cnt_kenmerkcontract_waarde)
                               VALUES (r1.cnt_contract_key,
                                       855,
                                       r2.btw_tarief);
                        END IF;
                     ELSE
                        -- Iets loopt niet zoals verwacht!
                        DBMS_OUTPUT.PUT_LINE (
                           'Error: Teveel 5=2-regels; Hint: ' || v_errorhint);
                     END IF;

                     v_line2_cnt := v_line2_cnt + 1;
                  END IF;
               ELSIF (r2.volgorde = 6)            -- INSERT op 6, anders fout!
               THEN
                  IF (v_line6_cnt = 1)
                  THEN
                     --INSERT op 6; 1009, 1010, 1011, 1012, 1013
                     INSERT INTO cnt_kenmerkcontract (cnt_contract_key,
                                                      cnt_kenmerk_key,
                                                      cnt_kenmerkcontract_waarde)
                         VALUES (r1.cnt_contract_key, 1009, r2.rubriek);

                     IF r2.aantal IS NOT NULL
                     THEN
                        INSERT INTO cnt_kenmerkcontract (cnt_contract_key,
                                                         cnt_kenmerk_key,
                                                         cnt_kenmerkcontract_waarde)
                            VALUES (r1.cnt_contract_key, 1010, r2.aantal);
                     END IF;

                     IF r2.eenheid IS NOT NULL
                     THEN
                        INSERT INTO cnt_kenmerkcontract (cnt_contract_key,
                                                         cnt_kenmerk_key,
                                                         cnt_kenmerkcontract_waarde)
                            VALUES (r1.cnt_contract_key, 1011, r2.eenheid);
                     END IF;

                     IF r2.kosten_excl_btw IS NOT NULL
                     THEN
                        INSERT INTO cnt_kenmerkcontract (cnt_contract_key,
                                                         cnt_kenmerk_key,
                                                         cnt_kenmerkcontract_waarde)
                            VALUES (r1.cnt_contract_key,
                                    1012,
                                    r2.kosten_excl_btw);
                     END IF;

                     IF r2.btw_tarief IS NOT NULL
                     THEN
                        INSERT INTO cnt_kenmerkcontract (cnt_contract_key,
                                                         cnt_kenmerk_key,
                                                         cnt_kenmerkcontract_waarde)
                            VALUES (r1.cnt_contract_key, 1013, r2.btw_tarief);
                     END IF;

                     v_line6_cnt := v_line6_cnt + 1;
                  ELSE
                     -- Iets loopt niet zoals verwacht!
                     DBMS_OUTPUT.PUT_LINE (
                        'Error: Teveel 6-regels; Hint: ' || v_errorhint);
                  END IF;
               END IF;

               v_lines_cnt := v_lines_cnt + 1;
            EXCEPTION
               WHEN OTHERS
               THEN
                  oracle_err_num := SQLCODE;
                  oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
                  v_errormsg :=
                        v_aanduiding
                     || '(ORACLE error '
                     || oracle_err_num
                     || '/'
                     || oracle_err_mes
                     || ')';
                  DBMS_OUTPUT.PUT_LINE (
                     'Error: ' || v_errormsg || '; Hint: ' || v_errorhint);
            END;
         END LOOP;

         COMMIT;
      EXCEPTION
         WHEN OTHERS
         THEN
            oracle_err_num := SQLCODE;
            oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
            v_errormsg :=
                  v_aanduiding
               || '(ORACLE error '
               || oracle_err_num
               || '/'
               || oracle_err_mes
               || ')';
            DBMS_OUTPUT.PUT_LINE (
               'Error: ' || v_errormsg || '; Hint: ' || v_errorhint);
      END;
   END LOOP;
END;
/

-- STAP7: Actuele HV-contracten onder - eerst aan te maken - mantel hangen en 3 kenmerken verhuizen:
-- Pand eigenaar (642) => Act. verhuurder=eigenaar (867)
-- Contractant (182) => Oorspr. ondertekenaar (884)
-- Huurprijsherziening (781) => Marktprijs herziening (878)
SET SERVEROUTPUT ON size 1000000;

DECLARE
   oracle_err_num     NUMBER;
   oracle_err_mes     VARCHAR2 (255);
   v_aanduiding       VARCHAR2 (255);
   v_errormsg         VARCHAR2 (1024);
   v_errorhint        VARCHAR2 (1024);
   v_count            NUMBER;
   v_cnt_mantel_key   NUMBER;

   CURSOR c
   IS
        SELECT c.cnt_contract_key,
               c.adres_oms,
               c.cnt_contract_nummer,
               c.cnt_contract_nummer_intern,
               c.cnt_contract_omschrijving,
               c.cnt_prs_bedrijf_key,
               c.cnt_contract_contact_persoon,
               c.prs_afdeling_key_eig,
               c.prs_perslid_key_eig,
               c.cnt_prs_afdeling_key,
               c.prs_perslid_key_beh,
               c.prs_kostenplaats_key,
               c.cnt_contract_looptijd_van,
               c.cnt_contract_looptijd_tot,
               c.cnt_contract_opzegtermijn,
               c.cnt_contract_rappeltermijn,
               kc1.contractant,
               kc2.pandeigenaar,
               kc3.huurprijsherz
          FROM (SELECT c.cnt_contract_key,
                       DECODE (
                          cp.cnt_alg_plaats_code,
                          'G',
                          (SELECT    l.alg_locatie_adres
                                  || ' '
                                  || l.alg_locatie_plaats
                             FROM alg_gebouw g, alg_locatie l
                            WHERE g.alg_gebouw_key = cp.cnt_alg_plaats_key
                                  AND g.alg_locatie_key = l.alg_locatie_key),
                          (SELECT    alg_locatie_adres
                                  || ' '
                                  || alg_locatie_plaats
                             FROM alg_locatie
                            WHERE alg_locatie_key = cp.cnt_alg_plaats_key))
                          adres_oms,
                       c.cnt_contract_nummer,       -- 4x gevuld; de rest NULL
                       c.cnt_contract_nummer_intern,
                       c.cnt_contract_omschrijving,
                       c.cnt_prs_bedrijf_key,
                       c.cnt_contract_contact_persoon,
                       c.prs_afdeling_key_eig, -- 2x 1152=Facilitair Bedrijf Facilitair; de rest 4101/HF Vastgoed!
                       c.prs_perslid_key_eig,
                       c.cnt_prs_afdeling_key,                  -- Altijd NULL
                       c.prs_perslid_key_beh, -- Altijd 16406/Richard Reijnders
                       c.prs_kostenplaats_key, -- 2x 10703/HROTH1=Herenwaard 21 Rotterdam; de rest 4421/404410=HF Vastgoed!
                       c.cnt_contract_looptijd_van,
                       c.cnt_contract_looptijd_tot,
                       c.cnt_contract_opzegtermijn,
                       c.cnt_contract_rappeltermijn
                  FROM cnt_contract c, cnt_v_aanwezigcontract_plaats cp
                 WHERE c.cnt_contract_verwijder IS NULL
                       AND c.ins_discipline_key = 198
                       AND c.cnt_contract_looptijd_tot > TO_DATE ('01012014', 'ddmmyyyy')
                       AND c.cnt_contract_key = cp.cnt_contract_key(+)) c
               LEFT JOIN (SELECT cnt_contract_key,
                                 cnt_kenmerkcontract_waarde contractant
                            FROM cnt_kenmerkcontract
                           WHERE cnt_kenmerkcontract_verwijder IS NULL
                                 AND cnt_kenmerk_key = 182) kc1
                  ON c.cnt_contract_key = kc1.cnt_contract_key
               LEFT JOIN (SELECT cnt_contract_key,
                                 cnt_kenmerkcontract_waarde pandeigenaar
                            FROM cnt_kenmerkcontract
                           WHERE cnt_kenmerkcontract_verwijder IS NULL
                                 AND cnt_kenmerk_key = 642) kc2
                  ON c.cnt_contract_key = kc2.cnt_contract_key
               LEFT JOIN (SELECT cnt_contract_key,
                                 cnt_kenmerkcontract_waarde huurprijsherz
                            FROM cnt_kenmerkcontract
                           WHERE cnt_kenmerkcontract_verwijder IS NULL
                                 AND cnt_kenmerk_key = 781) kc3
                  ON c.cnt_contract_key = kc3.cnt_contract_key
      ORDER BY cnt_contract_nummer_intern;
BEGIN
   FOR r IN c
   LOOP
      BEGIN
         v_aanduiding :=
               '['
            || r.cnt_contract_nummer_intern
            || '| '
            || r.adres_oms
            || '] ';

         v_errorhint := 'Fout toevoegen HV-mantel';

         INSERT INTO cnt_contract (ins_discipline_key,
                                   cnt_contract_omschrijving,
                                   cnt_contract_nummer_intern,
                                   cnt_contract_status,
                                   cnt_prs_bedrijf_key,
                                   cnt_contract_contact_persoon,
                                   prs_afdeling_key_eig,
                                   prs_perslid_key_eig,
                                   cnt_prs_afdeling_key,
                                   prs_perslid_key_beh,
                                   prs_kostenplaats_key,
                                   cnt_contract_looptijd_van,
                                   cnt_contract_looptijd_tot,
                                   cnt_contract_opzegtermijn,
                                   cnt_contract_rappeltermijn)
             VALUES (412,                                         -- HV-mantel
                     SUBSTR ('Mantel ' || r.adres_oms, 1, 50),
                     'M-' || r.cnt_contract_nummer_intern,
                     0,
                     r.cnt_prs_bedrijf_key,
                     r.cnt_contract_contact_persoon,
                     r.prs_afdeling_key_eig,
                     r.prs_perslid_key_eig,
                     r.cnt_prs_afdeling_key,
                     r.prs_perslid_key_beh,
                     r.prs_kostenplaats_key,
                     r.cnt_contract_looptijd_van,
                     r.cnt_contract_looptijd_tot,
                     r.cnt_contract_opzegtermijn,
                     r.cnt_contract_rappeltermijn)
          RETURNING cnt_contract_key
               INTO v_cnt_mantel_key;

         -- Verhuizen (naar mantel/oude weg):
         -- Contractant (182) => Oorspr. ondertekenaar (v2-884/soort 543): van Karakter naar Karakter
         -- Pand eigenaar (642) => Act. verhuurder=eigenaar (v2-867/soort 526): van Referentie/View naar Referentie/View
         -- Huurprijsherziening (781) => Marktpr. herz datum (v2-878/soort 537): van Datum naar Datum
         v_errorhint := 'Fout bijwerken HV-mantel/Contractant';

         INSERT INTO cnt_kenmerkcontract (cnt_contract_key,
                                          cnt_kenmerk_key,
                                          cnt_kenmerkcontract_waarde)
             VALUES (v_cnt_mantel_key, 884, r.contractant);

         v_errorhint := 'Fout bijwerken HV-mantel/Pand eigenaar';

         INSERT INTO cnt_kenmerkcontract (cnt_contract_key,
                                          cnt_kenmerk_key,
                                          cnt_kenmerkcontract_waarde)
             VALUES (v_cnt_mantel_key, 867, r.pandeigenaar);

         v_errorhint := 'Fout bijwerken HV-mantel/Huurprijsherziening';

         INSERT INTO cnt_kenmerkcontract (cnt_contract_key,
                                          cnt_kenmerk_key,
                                          cnt_kenmerkcontract_waarde)
             VALUES (v_cnt_mantel_key, 878, r.huurprijsherz);

         v_errorhint := 'Fout bijwerken HV-contract';

         UPDATE cnt_contract
            SET cnt_contract_mantel_key = v_cnt_mantel_key
          WHERE cnt_contract_key = r.cnt_contract_key;

         COMMIT;
      EXCEPTION
         WHEN OTHERS
         THEN
            oracle_err_num := SQLCODE;
            oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
            v_errormsg :=
                  v_aanduiding
               || '(ORACLE error '
               || oracle_err_num
               || '/'
               || oracle_err_mes
               || ')';
            DBMS_OUTPUT.PUT_LINE (
               'Error: ' || v_errormsg || '; Hint: ' || v_errorhint);
      END;
   END LOOP;
END;
/

COMMIT;

-- STAP8: Verwijder nu (toch maar direct) de velden die in stap1 onderaan zijn gezet:
UPDATE cnt_kenmerk
   SET cnt_kenmerk_verwijder = SYSDATE
 WHERE cnt_kenmerk_key IN
             (381, 182, 622, 642, 641, 190, 195, 781, 782, 783, 397, 399, 422);

COMMIT;

CREATE OR REPLACE VIEW UWVA_V_RAP_FAC_WEBUSR AS SELECT NULL x FROM DUAL;
INSERT INTO fac_usrrap (fac_usrrap_omschrijving,
                        fac_usrrap_view_name,
                        fac_usrrap_in_huidige_locatie,
                        fac_usrrap_template,
                        fac_usrrap_macro,
                        fac_usrrap_vraagbegindatum,
                        fac_usrrap_vraageinddatum,
                        fac_usrrap_functie,
                        fac_usrrap_info,
                        fac_functie_key,
                        fac_usrrap_autorefresh)
   SELECT   'BEHEER: Overzicht WEB_USERXX autorisaties',
            'UWVA_V_RAP_FAC_WEBUSR',
            NULL,
            NULL,
            NULL,
            0,
            0,
            0,
            'Overzicht WEB_USERXX autorisaties in rapportages, autorisatiegroepen, themas, labels en menuitems',
            fac_functie_key,
            0
     FROM   fac_functie
    WHERE   fac_functie_code = 'WEB_PRSSYS'; 
    
COMMIT;
    
BEGIN adm.systrackscriptId('$Id$'); END;
/
SPOOL OFF

@@uwva_prs.sql
--@@uwva_fin.sql
@@uwva_hv.sql
@@uwva_misc.sql

BEGIN fac.registercustversion('UWVA', 91); END;
/
COMMIT;
