UWVA#31062 markorderassent moet al jaren een 4e parameter hebben

svn path=/Customer/; revision=23449
This commit is contained in:
Jos Groot Lipman
2014-11-25 22:03:59 +00:00
parent 08d5fe59ae
commit b05e1c8b5c

921
onces/UWVA/UWVA#31062.sql Normal file
View File

@@ -0,0 +1,921 @@
-- Customer specific once-script.
--
-- (c) 2014 Facilitor bv
SET ECHO ON
SPOOL xuwva#31062.lst
SET DEFINE OFF
--UWVA#31062: MARKORDERASSENT moet vier parameters hebben
-- Als losse patch opgeleverd omdat uwva_misc ondertussen al te veel andere wijzigingen heeft
CREATE OR REPLACE PACKAGE uwva
AS
FUNCTION bepaal_iss_doorlooptijd (van_date IN DATE, tot_date IN DATE)
RETURN NUMBER;
FUNCTION bepaal_uwv_doorlooptijd (van_date IN DATE, tot_date IN DATE)
RETURN NUMBER;
PROCEDURE markorderassent (pxmlnode VARCHAR2, pkey NUMBER, presult NUMBER, presulttext VARCHAR2);
PROCEDURE format_telefoonnummers (p_import_key IN NUMBER);
PROCEDURE abo_verhuisd (p_import_key NUMBER,
p_perslid_key NUMBER,
p_locatie_key NUMBER);
END uwva;
/
CREATE OR REPLACE PACKAGE BODY uwva
AS
FUNCTION bepaal_iss_doorlooptijd (van_date IN DATE, tot_date IN DATE)
RETURN NUMBER
IS
c_kt_van NUMBER := 8;
c_kt_tot NUMBER := 17;
v_dl NUMBER;
lbackwards BOOLEAN;
v_van_date DATE;
v_van_uur NUMBER;
v_tot_date DATE;
v_tot_uur NUMBER;
v_loop_date DATE;
v_count NUMBER;
BEGIN
v_dl := 0;
IF (van_date > tot_date)
THEN
v_van_date := TO_DATE (TO_CHAR (tot_date, 'yyyymmddhh24mi'), 'yyyymmddhh24mi');
v_tot_date := TO_DATE (TO_CHAR (van_date, 'yyyymmddhh24mi'), 'yyyymmddhh24mi');
lbackwards := TRUE;
ELSE
v_van_date := TO_DATE (TO_CHAR (van_date, 'yyyymmddhh24mi'), 'yyyymmddhh24mi');
v_tot_date := TO_DATE (TO_CHAR (tot_date, 'yyyymmddhh24mi'), 'yyyymmddhh24mi');
lbackwards := FALSE;
END IF;
IF ( ( ( (v_van_date - TRUNC (v_van_date)) * 24) - c_kt_van) < 0)
THEN
v_van_uur := c_kt_van;
ELSE
IF ( ( ( (v_van_date - TRUNC (v_van_date)) * 24) - c_kt_tot) < 0)
THEN
v_van_uur := (v_van_date - TRUNC (v_van_date)) * 24;
ELSE
v_van_uur := c_kt_tot;
END IF;
END IF;
IF ( ( ( (v_tot_date - TRUNC (v_tot_date)) * 24) - c_kt_van) < 0)
THEN
v_tot_uur := c_kt_van;
ELSE
IF ( ( ( (v_tot_date - TRUNC (v_tot_date)) * 24) - c_kt_tot) < 0)
THEN
v_tot_uur := (v_tot_date - TRUNC (v_tot_date)) * 24;
ELSE
v_tot_uur := c_kt_tot;
END IF;
END IF;
v_loop_date := TRUNC (v_van_date);
WHILE (v_loop_date <= v_tot_date)
LOOP
SELECT COUNT ( * )
INTO v_count
FROM mld_vrije_dagen
WHERE mld_vrije_dagen_datum = v_loop_date;
IF (v_count = 0 AND TO_CHAR (v_loop_date, 'd') NOT IN ('1', '7'))
THEN
CASE
WHEN TRUNC (v_van_date) = TRUNC (v_tot_date)
THEN
v_dl := v_dl + (v_tot_uur - v_van_uur);
WHEN v_loop_date = TRUNC (v_van_date)
THEN
v_dl := v_dl + (c_kt_tot - v_van_uur);
WHEN v_loop_date = TRUNC (v_tot_date)
THEN
v_dl := v_dl + (v_tot_uur - c_kt_van);
ELSE
v_dl := v_dl + (c_kt_tot - c_kt_van);
END CASE;
END IF;
v_loop_date := v_loop_date + 1;
END LOOP;
IF lbackwards
THEN
RETURN 0 - v_dl;
ELSE
RETURN v_dl;
END IF;
END;
-- UWVA#25539: Nu nog klantspecifiek, maar zou in 5.3.1 standaard mogen
-- worden.
-- Toch niet (mmm), want UWV heeft een verschillende berekening voor en
-- na 01-03-2013!
-- En per UWVA#27868 nog een volgende grens, nl. voor en na 01-11-2013!
FUNCTION bepaal_uwv_doorlooptijd (van_date IN DATE, tot_date IN DATE)
RETURN NUMBER
IS
c_kt_van_v1311 NUMBER := 7; -- De van-tijd voor 01-11-2013!
c_kt_tot_v1311 NUMBER := 19; -- De tot-tijd voor 01-11-2013!
c_kt_van_v1303 NUMBER := 8; -- De van-tijd voor 01-03-2013!
c_kt_tot_v1303 NUMBER := 17; -- De tot-tijd voor 01-03-2013!
v_kt_van NUMBER;
v_kt_tot NUMBER;
v_dl NUMBER;
lbackwards BOOLEAN;
v_van_date DATE;
v_van_uur NUMBER;
v_tot_date DATE;
v_tot_uur NUMBER;
v_loop_date DATE;
v_count NUMBER;
BEGIN
v_dl := 0;
-- Bepaal 'Start time of working day' (21=fac_t_startofworkday)!
v_kt_van := fac.safe_to_number (fac.getsetting ('fac_t_startofworkday'));
-- Bepaal 'End time of working day' (22=fac_t_endofworkday)!
v_kt_van := fac.safe_to_number (fac.getsetting ('fac_t_endofworkday'));
IF (van_date > tot_date)
THEN
v_van_date :=
TO_DATE (TO_CHAR (tot_date, 'yyyymmddhh24mi'), 'yyyymmddhh24mi');
v_tot_date :=
TO_DATE (TO_CHAR (van_date, 'yyyymmddhh24mi'), 'yyyymmddhh24mi');
lbackwards := TRUE;
ELSE
v_van_date :=
TO_DATE (TO_CHAR (van_date, 'yyyymmddhh24mi'), 'yyyymmddhh24mi');
v_tot_date :=
TO_DATE (TO_CHAR (tot_date, 'yyyymmddhh24mi'), 'yyyymmddhh24mi');
lbackwards := FALSE;
END IF;
v_loop_date := TRUNC (v_van_date);
WHILE (v_loop_date <= v_tot_date)
LOOP
SELECT COUNT ( * )
INTO v_count
FROM mld_vrije_dagen
WHERE mld_vrije_dagen_datum = v_loop_date;
IF (v_count = 0 AND TO_CHAR (v_loop_date, 'd') NOT IN ('1', '7'))
THEN
IF (v_loop_date >= TO_DATE ('01-11-2013', 'dd-mm-yyyy'))
THEN -- Settings-kantoortijden!
IF ( ( ( (v_van_date - TRUNC (v_van_date)) * 24) - v_kt_van) <
0)
THEN
v_van_uur := v_kt_van;
ELSE
IF ( ( ( (v_van_date - TRUNC (v_van_date)) * 24) - v_kt_tot) <
0)
THEN
v_van_uur := (v_van_date - TRUNC (v_van_date)) * 24;
ELSE
v_van_uur := v_kt_tot;
END IF;
END IF;
IF ( ( ( (v_tot_date - TRUNC (v_tot_date)) * 24) - v_kt_van) <
0)
THEN
v_tot_uur := v_kt_van;
ELSE
IF ( ( ( (v_tot_date - TRUNC (v_tot_date)) * 24) - v_kt_tot) <
0)
THEN
v_tot_uur := (v_tot_date - TRUNC (v_tot_date)) * 24;
ELSE
v_tot_uur := v_kt_tot;
END IF;
END IF;
CASE
WHEN TRUNC (v_van_date) = TRUNC (v_tot_date)
THEN
v_dl := v_dl + (v_tot_uur - v_van_uur);
WHEN v_loop_date = TRUNC (v_van_date)
THEN
v_dl := v_dl + (v_kt_tot - v_van_uur);
WHEN v_loop_date = TRUNC (v_tot_date)
THEN
v_dl := v_dl + (v_tot_uur - v_kt_van);
ELSE
v_dl := v_dl + (v_kt_tot - v_kt_van);
END CASE;
ELSIF (v_loop_date >= TO_DATE ('01-03-2013', 'dd-mm-yyyy'))
THEN -- Oude setings: 7-tot-19-kantoortijden!
IF ( ( ( (v_van_date - TRUNC (v_van_date)) * 24)
- c_kt_van_v1311) < 0)
THEN
v_van_uur := c_kt_van_v1311;
ELSE
IF ( ( ( (v_van_date - TRUNC (v_van_date)) * 24)
- c_kt_tot_v1311) < 0)
THEN
v_van_uur := (v_van_date - TRUNC (v_van_date)) * 24;
ELSE
v_van_uur := c_kt_tot_v1311;
END IF;
END IF;
IF ( ( ( (v_tot_date - TRUNC (v_tot_date)) * 24)
- c_kt_van_v1311) < 0)
THEN
v_tot_uur := c_kt_van_v1311;
ELSE
IF ( ( ( (v_tot_date - TRUNC (v_tot_date)) * 24)
- c_kt_tot_v1311) < 0)
THEN
v_tot_uur := (v_tot_date - TRUNC (v_tot_date)) * 24;
ELSE
v_tot_uur := c_kt_tot_v1311;
END IF;
END IF;
CASE
WHEN TRUNC (v_van_date) = TRUNC (v_tot_date)
THEN
v_dl := v_dl + (v_tot_uur - v_van_uur);
WHEN v_loop_date = TRUNC (v_van_date)
THEN
v_dl := v_dl + (c_kt_tot_v1311 - v_van_uur);
WHEN v_loop_date = TRUNC (v_tot_date)
THEN
v_dl := v_dl + (v_tot_uur - c_kt_van_v1311);
ELSE
v_dl := v_dl + (c_kt_tot_v1311 - c_kt_van_v1311);
END CASE;
ELSE -- Nog oudere setings: 8-tot-17-kantoortijden!
IF ( ( ( (v_van_date - TRUNC (v_van_date)) * 24)
- c_kt_van_v1303) < 0)
THEN
v_van_uur := c_kt_van_v1303;
ELSE
IF ( ( ( (v_van_date - TRUNC (v_van_date)) * 24)
- c_kt_tot_v1303) < 0)
THEN
v_van_uur := (v_van_date - TRUNC (v_van_date)) * 24;
ELSE
v_van_uur := c_kt_tot_v1303;
END IF;
END IF;
IF ( ( ( (v_tot_date - TRUNC (v_tot_date)) * 24)
- c_kt_van_v1303) < 0)
THEN
v_tot_uur := c_kt_van_v1303;
ELSE
IF ( ( ( (v_tot_date - TRUNC (v_tot_date)) * 24)
- c_kt_tot_v1303) < 0)
THEN
v_tot_uur := (v_tot_date - TRUNC (v_tot_date)) * 24;
ELSE
v_tot_uur := c_kt_tot_v1303;
END IF;
END IF;
CASE
WHEN TRUNC (v_van_date) = TRUNC (v_tot_date)
THEN
v_dl := v_dl + (v_tot_uur - v_van_uur);
WHEN v_loop_date = TRUNC (v_van_date)
THEN
v_dl := v_dl + (c_kt_tot_v1303 - v_van_uur);
WHEN v_loop_date = TRUNC (v_tot_date)
THEN
v_dl := v_dl + (v_tot_uur - c_kt_van_v1303);
ELSE
v_dl := v_dl + (c_kt_tot_v1303 - c_kt_van_v1303);
END CASE;
END IF;
END IF;
v_loop_date := v_loop_date + 1;
END LOOP;
IF lbackwards
THEN
RETURN 0 - v_dl;
ELSE
RETURN v_dl;
END IF;
END;
-- MarkOrderAsSent
-- Markeert dat een opdracht is verzonden, zoals door PutOrders.exe.
-- Hoe dat moet hangt af van het soort opdracht: contract, opdracht e.d.
-- pxmlnode is (lowercase!) de xml-naam van de entiteit (contract, opdracht,
-- bestelopdr of iets klantspecifieks zoals ooit 'folder').
-- pkey is de key daarvan.
-- presult geeft het succes van verzending aan: 0(/2)=succesvol, 1=geweigerd
-- wat gebruikt *kan* worden bij het bepalen van een te zetten status.
-- Voor customer-orderqueues dient overeenkomstige CUST.markorderassent() te
-- worden gedefinieerd.
PROCEDURE markorderassent (pxmlnode VARCHAR2, pkey NUMBER, presult NUMBER, presulttext VARCHAR2)
AS
v_count NUMBER;
BEGIN
CASE pxmlnode
WHEN 'contract'
THEN
IF presult = 0 or presult = 2
THEN
SELECT COUNT ( * )
INTO v_count
FROM cnt_kenmerkcontract
WHERE cnt_contract_key = pkey
AND cnt_kenmerk_key = 700 -- 'Laatste cXML-update'
AND cnt_kenmerkcontract_verwijder IS NULL;
IF (v_count = 0)
THEN
INSERT INTO cnt_kenmerkcontract (
cnt_contract_key,
cnt_kenmerk_key,
cnt_kenmerkcontract_waarde
)
VALUES (pkey,
700, -- 'Laatste cXML-update'
TO_CHAR (SYSDATE, 'dd-mm-yyyy'));
ELSE
UPDATE cnt_kenmerkcontract
SET cnt_kenmerkcontract_waarde =
TO_CHAR (SYSDATE, 'dd-mm-yyyy'),
cnt_kenmerkcontract_wijzig = SYSDATE
WHERE cnt_contract_key = pkey
AND cnt_kenmerk_key = 700 -- 'Laatste cXML-update'
AND cnt_kenmerkcontract_verwijder IS NULL;
END IF;
END IF;
END CASE;
END;
-- UWVA#20205 en UWVA#20219: Procedure om telefoonnummers netjes op te maken.
-- Wordt aangeroepen aan het einde van uwva_update_abs().
--
-- Voor een specificatie van de opmaak, zie UWVA#20205.
-- FSN#23352: (sub)query's opschonen
PROCEDURE format_telefoonnummers (p_import_key IN NUMBER)
AS
v_fac_usrtab_key NUMBER;
c_faxnr_key NUMBER (10) := 7;
BEGIN
-- Eigen Tabel met alle netnummers, om netnummers in telefoonnummers-zonder-opmaak
-- te kunnen achterhalen.
SELECT fac_usrtab_key
INTO v_fac_usrtab_key
FROM fac_usrtab
WHERE fac_usrtab_naam = 'netnummers';
-- UWVA#21779: Door een foutieve trigger (FSN#21781) bestaan er prs_kenmerklinks waarvan de
-- prs_perslid verwijderd is. Deze prs_kenmerklinks mogen (moeten) verwijderd.
DELETE FROM prs_kenmerklink
WHERE prs_kenmerklink_niveau = 'P'
AND NOT EXISTS (SELECT 1
FROM prs_perslid
WHERE prs_perslid_key = prs_link_key);
--
-- TELEFOONNUMMER --------------------------------------------------------------
--
-- Verwijder landinformatie (alleen van Nederlandse nummers; buitenlandse
-- worden helaas verminkt!)
UPDATE prs_perslid SET prs_perslid_telefoonnr = SUBSTR (prs_perslid_telefoonnr, 2) WHERE prs_perslid_telefoonnr LIKE '+%';
UPDATE prs_perslid SET prs_perslid_telefoonnr = SUBSTR (prs_perslid_telefoonnr, 3) WHERE prs_perslid_telefoonnr LIKE '31%';
UPDATE prs_perslid SET prs_perslid_telefoonnr = SUBSTR (prs_perslid_telefoonnr, 5) WHERE prs_perslid_telefoonnr LIKE '0031%';
-- Verwijder non-digit tekens (leestekens en spaties)
UPDATE prs_perslid
SET prs_perslid_telefoonnr = REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(prs_perslid_telefoonnr,
'.', ''),
'(', ''),
')', ''),
'-', ''),
' ', '');
UPDATE prs_perslid SET prs_perslid_telefoonnr = '20' || prs_perslid_telefoonnr WHERE prs_perslid_telefoonnr LIKE '687____';
UPDATE prs_perslid SET prs_perslid_telefoonnr = SUBSTR (prs_perslid_telefoonnr, 2) WHERE prs_perslid_telefoonnr LIKE '0%';
-- 06-nummers bijwerken
-- (NB: format "06 - xx xx xx xx" is 16 digits, dus gebruik ik
-- "06-xx xx xx xx", om het binnen de 15 karakters te houden.)
UPDATE prs_perslid
SET prs_perslid_telefoonnr = SUBSTR( TRIM( '0' || SUBSTR (prs_perslid_telefoonnr, 1, 1) || '-'
|| SUBSTR (prs_perslid_telefoonnr, 2, 2)
|| ' '
|| SUBSTR (prs_perslid_telefoonnr, 4, 2)
|| ' '
|| SUBSTR (prs_perslid_telefoonnr, 6, 2)
|| ' '
|| SUBSTR (prs_perslid_telefoonnr, 8, 2) ), 1, 15)
WHERE prs_perslid_telefoonnr LIKE '6%'
AND prs_perslid_telefoonnr IS NOT NULL
AND LENGTH(prs_perslid_telefoonnr) > 5;
-- 0800- en 0900-nummers met een even aantal digits
-- (NB: MOD(prs_perslid_telefoonnr, 2) = 1, omdat prs_perslid_telefoonnr begint met 900 ipv 0900!)
UPDATE prs_perslid
SET prs_perslid_telefoonnr = SUBSTR( TRIM( '0' || SUBSTR (prs_perslid_telefoonnr, 1, 3) || ' - '
|| SUBSTR (prs_perslid_telefoonnr, 4, 2)
|| ' '
|| SUBSTR (prs_perslid_telefoonnr, 6, 2)
|| ' '
|| SUBSTR (prs_perslid_telefoonnr, 8, 2) ), 1, 15)
WHERE prs_perslid_telefoonnr IS NOT NULL
AND LENGTH(prs_perslid_telefoonnr) > 5
AND MOD( LENGTH(prs_perslid_telefoonnr), 2) = 1
AND ( prs_perslid_telefoonnr LIKE '800%'
OR prs_perslid_telefoonnr LIKE '900%');
-- 0800- en 0900-nummers met een oneven aantal digits
UPDATE prs_perslid
SET prs_perslid_telefoonnr = SUBSTR( TRIM('0' || SUBSTR (prs_perslid_telefoonnr, 1, 3) || '-'
|| SUBSTR (prs_perslid_telefoonnr, 4, 3)
|| ' '
|| SUBSTR (prs_perslid_telefoonnr, 7, 2)
|| ' '
|| SUBSTR (prs_perslid_telefoonnr, 9, 2)) , 1, 15)
WHERE prs_perslid_telefoonnr IS NOT NULL
AND LENGTH(prs_perslid_telefoonnr) > 5
AND MOD( LENGTH(prs_perslid_telefoonnr), 2) = 0
AND ( prs_perslid_telefoonnr LIKE '800%'
OR prs_perslid_telefoonnr LIKE '900%');
-- 088-nummers met een even aantal digits
UPDATE prs_perslid
SET prs_perslid_telefoonnr = SUBSTR( TRIM( '0' || SUBSTR (prs_perslid_telefoonnr, 1, 2) || ' - '
|| SUBSTR (prs_perslid_telefoonnr, 3, 3)
|| ' '
|| SUBSTR (prs_perslid_telefoonnr, 6, 2)
|| ' '
|| SUBSTR (prs_perslid_telefoonnr, 8, 2) ), 1, 15)
WHERE prs_perslid_telefoonnr IS NOT NULL
AND LENGTH(prs_perslid_telefoonnr) > 5
AND MOD( LENGTH(prs_perslid_telefoonnr), 2) = 1
AND prs_perslid_telefoonnr LIKE '88%';
-- 088-nummers met een oneven aantal digits
UPDATE prs_perslid
SET prs_perslid_telefoonnr = SUBSTR( TRIM('0' || SUBSTR (prs_perslid_telefoonnr, 1, 2) || '-'
|| SUBSTR (prs_perslid_telefoonnr, 3, 2)
|| ' '
|| SUBSTR (prs_perslid_telefoonnr, 5, 2)
|| ' '
|| SUBSTR (prs_perslid_telefoonnr, 7, 2)
|| ' '
|| SUBSTR (prs_perslid_telefoonnr, 9, 2)) , 1, 15)
WHERE prs_perslid_telefoonnr IS NOT NULL
AND LENGTH(prs_perslid_telefoonnr) > 5
AND MOD( LENGTH(prs_perslid_telefoonnr), 2) = 0
AND prs_perslid_telefoonnr LIKE '88%';
-- netnummers met 2 digits na-de-nul (bijv "020")
UPDATE prs_perslid
SET prs_perslid_telefoonnr = SUBSTR('(0' || SUBSTR (prs_perslid_telefoonnr, 1, 2) || ') '
|| SUBSTR (prs_perslid_telefoonnr, 3, 3)
|| ' '
|| SUBSTR (prs_perslid_telefoonnr, 6, 2)
|| ' '
|| SUBSTR (prs_perslid_telefoonnr, 8, 2), 1, 15)
WHERE prs_perslid_telefoonnr IS NOT NULL
AND LENGTH(prs_perslid_telefoonnr) > 5
AND EXISTS (SELECT 1
FROM fac_usrdata
WHERE fac_usrtab_key = v_fac_usrtab_key
AND fac_usrdata_verwijder IS NULL
AND prs_perslid_telefoonnr LIKE fac_usrdata_code || '%'
AND LENGTH (fac_usrdata_code) = 2);
-- netnummers met 3 digits na-de-nul (bijv "0118")
UPDATE prs_perslid
SET prs_perslid_telefoonnr = SUBSTR('(0' || SUBSTR (prs_perslid_telefoonnr, 1, 3) || ') '
|| SUBSTR (prs_perslid_telefoonnr, 4, 2)
|| ' '
|| SUBSTR (prs_perslid_telefoonnr, 6, 2)
|| ' '
|| SUBSTR (prs_perslid_telefoonnr, 8, 2), 1, 15)
WHERE prs_perslid_telefoonnr IS NOT NULL
AND LENGTH(prs_perslid_telefoonnr) > 5
AND EXISTS (SELECT 1
FROM fac_usrdata
WHERE fac_usrtab_key = v_fac_usrtab_key
AND fac_usrdata_verwijder IS NULL
AND prs_perslid_telefoonnr LIKE fac_usrdata_code || '%'
AND LENGTH (fac_usrdata_code) = 3);
--
-- MOBIELE NUMMER --------------------------------------------------------------
--
-- Verwijder landinformatie (alleen van Nederlandse nummers; buitenlandse
-- worden helaas verminkt!)
UPDATE prs_perslid SET prs_perslid_mobiel = SUBSTR (prs_perslid_mobiel, 2) WHERE prs_perslid_mobiel LIKE '+%';
UPDATE prs_perslid SET prs_perslid_mobiel = SUBSTR (prs_perslid_mobiel, 3) WHERE prs_perslid_mobiel LIKE '31%';
UPDATE prs_perslid SET prs_perslid_mobiel = SUBSTR (prs_perslid_mobiel, 5) WHERE prs_perslid_mobiel LIKE '0031%';
-- Verwijder non-digit tekens (leestekens en spaties)
UPDATE prs_perslid
SET prs_perslid_mobiel = REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(prs_perslid_mobiel,
'.', ''),
'(', ''),
')', ''),
'-', ''),
' ', '');
UPDATE prs_perslid SET prs_perslid_mobiel = '20' || prs_perslid_mobiel WHERE prs_perslid_mobiel LIKE '687____';
UPDATE prs_perslid SET prs_perslid_mobiel = SUBSTR (prs_perslid_mobiel, 2) WHERE prs_perslid_mobiel LIKE '0%';
-- 06-nummers bijwerken
-- (NB: format "06 - xx xx xx xx" is 16 digits, dus gebruik ik
-- "06-xx xx xx xx", om het binnen de 15 karakters te houden.)
UPDATE prs_perslid
SET prs_perslid_mobiel = SUBSTR( TRIM( '0' || SUBSTR (prs_perslid_mobiel, 1, 1) || '-'
|| SUBSTR (prs_perslid_mobiel, 2, 2)
|| ' '
|| SUBSTR (prs_perslid_mobiel, 4, 2)
|| ' '
|| SUBSTR (prs_perslid_mobiel, 6, 2)
|| ' '
|| SUBSTR (prs_perslid_mobiel, 8, 2) ), 1, 15)
WHERE prs_perslid_mobiel LIKE '6%'
AND prs_perslid_mobiel IS NOT NULL
AND LENGTH(prs_perslid_mobiel) > 5;
-- 0800- en 0900-nummers met een even aantal digits
-- (NB: MOD(prs_perslid_mobiel, 2) = 1, omdat prs_perslid_mobiel begint met 900 ipv 0900!)
UPDATE prs_perslid
SET prs_perslid_mobiel = SUBSTR( TRIM( '0' || SUBSTR (prs_perslid_mobiel, 1, 3) || ' - '
|| SUBSTR (prs_perslid_mobiel, 4, 2)
|| ' '
|| SUBSTR (prs_perslid_mobiel, 6, 2)
|| ' '
|| SUBSTR (prs_perslid_mobiel, 8, 2) ), 1, 15)
WHERE prs_perslid_mobiel IS NOT NULL
AND LENGTH(prs_perslid_mobiel) > 5
AND MOD( LENGTH(prs_perslid_mobiel), 2) = 1
AND ( prs_perslid_mobiel LIKE '800%'
OR prs_perslid_mobiel LIKE '900%');
-- 0800- en 0900-nummers met een oneven aantal digits
UPDATE prs_perslid
SET prs_perslid_mobiel = SUBSTR( TRIM('0' || SUBSTR (prs_perslid_mobiel, 1, 3) || '-'
|| SUBSTR (prs_perslid_mobiel, 4, 3)
|| ' '
|| SUBSTR (prs_perslid_mobiel, 7, 2)
|| ' '
|| SUBSTR (prs_perslid_mobiel, 9, 2)) , 1, 15)
WHERE prs_perslid_mobiel IS NOT NULL
AND LENGTH(prs_perslid_mobiel) > 5
AND MOD( LENGTH(prs_perslid_mobiel), 2) = 0
AND ( prs_perslid_mobiel LIKE '800%'
OR prs_perslid_mobiel LIKE '900%');
-- 088-nummers met een even aantal digits
UPDATE prs_perslid
SET prs_perslid_mobiel = SUBSTR( TRIM( '0' || SUBSTR (prs_perslid_mobiel, 1, 2) || ' - '
|| SUBSTR (prs_perslid_mobiel, 3, 3)
|| ' '
|| SUBSTR (prs_perslid_mobiel, 6, 2)
|| ' '
|| SUBSTR (prs_perslid_mobiel, 8, 2) ), 1, 15)
WHERE prs_perslid_mobiel IS NOT NULL
AND LENGTH(prs_perslid_mobiel) > 5
AND MOD( LENGTH(prs_perslid_mobiel), 2) = 1
AND prs_perslid_mobiel LIKE '88%';
-- 088-nummers met een oneven aantal digits
UPDATE prs_perslid
SET prs_perslid_mobiel = SUBSTR( TRIM('0' || SUBSTR (prs_perslid_mobiel, 1, 2) || '-'
|| SUBSTR (prs_perslid_mobiel, 3, 2)
|| ' '
|| SUBSTR (prs_perslid_mobiel, 5, 2)
|| ' '
|| SUBSTR (prs_perslid_mobiel, 7, 2)
|| ' '
|| SUBSTR (prs_perslid_mobiel, 9, 2)) , 1, 15)
WHERE prs_perslid_mobiel IS NOT NULL
AND LENGTH(prs_perslid_mobiel) > 5
AND MOD( LENGTH(prs_perslid_mobiel), 2) = 0
AND prs_perslid_mobiel LIKE '88%';
-- netnummers met 2 digits na-de-nul (bijv "020")
UPDATE prs_perslid
SET prs_perslid_mobiel = SUBSTR('(0' || SUBSTR (prs_perslid_mobiel, 1, 2) || ') '
|| SUBSTR (prs_perslid_mobiel, 3, 3)
|| ' '
|| SUBSTR (prs_perslid_mobiel, 6, 2)
|| ' '
|| SUBSTR (prs_perslid_mobiel, 8, 2), 1, 15)
WHERE prs_perslid_mobiel IS NOT NULL
AND LENGTH(prs_perslid_mobiel) > 5
AND EXISTS (SELECT 1
FROM fac_usrdata
WHERE fac_usrtab_key = v_fac_usrtab_key
AND fac_usrdata_verwijder IS NULL
AND prs_perslid_mobiel LIKE fac_usrdata_code || '%'
AND LENGTH (fac_usrdata_code) = 2);
-- netnummers met 3 digits na-de-nul (bijv "0118")
UPDATE prs_perslid
SET prs_perslid_mobiel = SUBSTR('(0' || SUBSTR (prs_perslid_mobiel, 1, 3) || ') '
|| SUBSTR (prs_perslid_mobiel, 4, 2)
|| ' '
|| SUBSTR (prs_perslid_mobiel, 6, 2)
|| ' '
|| SUBSTR (prs_perslid_mobiel, 8, 2), 1, 15)
WHERE prs_perslid_mobiel IS NOT NULL
AND LENGTH(prs_perslid_mobiel) > 5
AND EXISTS (SELECT 1
FROM fac_usrdata
WHERE fac_usrtab_key = v_fac_usrtab_key
AND fac_usrdata_verwijder IS NULL
AND prs_perslid_mobiel LIKE fac_usrdata_code || '%'
AND LENGTH (fac_usrdata_code) = 3);
--
-- FAXNUMMER -------------------------------------------------------------------
--
-- Verwijder landinformatie (alleen van Nederlandse nummers; buitenlandse
-- worden helaas verminkt!)
UPDATE prs_kenmerklink SET prs_kenmerklink_waarde = SUBSTR (prs_kenmerklink_waarde, 2)
WHERE prs_kenmerk_key = c_faxnr_key
AND prs_kenmerklink_waarde LIKE '+%';
UPDATE prs_kenmerklink SET prs_kenmerklink_waarde = SUBSTR (prs_kenmerklink_waarde, 3)
WHERE prs_kenmerk_key = c_faxnr_key
AND prs_kenmerklink_waarde LIKE '31%';
UPDATE prs_kenmerklink SET prs_kenmerklink_waarde = SUBSTR (prs_kenmerklink_waarde, 5)
WHERE prs_kenmerk_key = c_faxnr_key
AND prs_kenmerklink_waarde LIKE '0031%';
-- Verwijder non-digit tekens (leestekens en spaties)
UPDATE prs_kenmerklink
SET prs_kenmerklink_waarde = REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(prs_kenmerklink_waarde,
'.', ''),
'(', ''),
')', ''),
'-', ''),
' ', '')
WHERE prs_kenmerk_key = c_faxnr_key;
UPDATE prs_kenmerklink SET prs_kenmerklink_waarde = '20' || prs_kenmerklink_waarde
WHERE prs_kenmerk_key = c_faxnr_key
AND prs_kenmerklink_waarde LIKE '687____';
UPDATE prs_kenmerklink SET prs_kenmerklink_waarde = SUBSTR (prs_kenmerklink_waarde, 2)
WHERE prs_kenmerk_key = c_faxnr_key
AND prs_kenmerklink_waarde LIKE '0%';
-- 06-nummers bijwerken
-- (NB: format "06 - xx xx xx xx" is 16 digits, dus gebruik ik
-- "06-xx xx xx xx", om het binnen de 15 karakters te houden.)
UPDATE prs_kenmerklink
SET prs_kenmerklink_waarde = SUBSTR( TRIM( '0' || SUBSTR (prs_kenmerklink_waarde, 1, 1) || '-'
|| SUBSTR (prs_kenmerklink_waarde, 2, 2)
|| ' '
|| SUBSTR (prs_kenmerklink_waarde, 4, 2)
|| ' '
|| SUBSTR (prs_kenmerklink_waarde, 6, 2)
|| ' '
|| SUBSTR (prs_kenmerklink_waarde, 8, 2) ), 1, 15)
WHERE prs_kenmerk_key = c_faxnr_key
AND prs_kenmerklink_waarde LIKE '6%'
AND prs_kenmerklink_waarde IS NOT NULL
AND LENGTH(prs_kenmerklink_waarde) > 5;
-- 0800- en 0900-nummers met een even aantal digits
-- (NB: MOD(prs_kenmerklink_waarde, 2) = 1, omdat prs_kenmerklink_waarde begint met 900 ipv 0900!)
UPDATE prs_kenmerklink
SET prs_kenmerklink_waarde = SUBSTR( TRIM( '0' || SUBSTR (prs_kenmerklink_waarde, 1, 3) || ' - '
|| SUBSTR (prs_kenmerklink_waarde, 4, 2)
|| ' '
|| SUBSTR (prs_kenmerklink_waarde, 6, 2)
|| ' '
|| SUBSTR (prs_kenmerklink_waarde, 8, 2) ), 1, 15)
WHERE prs_kenmerk_key = c_faxnr_key
AND prs_kenmerklink_waarde IS NOT NULL
AND LENGTH(prs_kenmerklink_waarde) > 5
AND MOD( LENGTH(prs_kenmerklink_waarde), 2) = 1
AND ( prs_kenmerklink_waarde LIKE '800%'
OR prs_kenmerklink_waarde LIKE '900%');
-- 0800- en 0900-nummers met een oneven aantal digits
UPDATE prs_kenmerklink
SET prs_kenmerklink_waarde = SUBSTR( TRIM('0' || SUBSTR (prs_kenmerklink_waarde, 1, 3) || '-'
|| SUBSTR (prs_kenmerklink_waarde, 4, 3)
|| ' '
|| SUBSTR (prs_kenmerklink_waarde, 7, 2)
|| ' '
|| SUBSTR (prs_kenmerklink_waarde, 9, 2)) , 1, 15)
WHERE prs_kenmerk_key = c_faxnr_key
AND prs_kenmerklink_waarde IS NOT NULL
AND LENGTH(prs_kenmerklink_waarde) > 5
AND MOD( LENGTH(prs_kenmerklink_waarde), 2) = 0
AND ( prs_kenmerklink_waarde LIKE '800%'
OR prs_kenmerklink_waarde LIKE '900%');
-- 088-nummers met een even aantal digits
UPDATE prs_kenmerklink
SET prs_kenmerklink_waarde = SUBSTR( TRIM( '0' || SUBSTR (prs_kenmerklink_waarde, 1, 2) || ' - '
|| SUBSTR (prs_kenmerklink_waarde, 3, 3)
|| ' '
|| SUBSTR (prs_kenmerklink_waarde, 6, 2)
|| ' '
|| SUBSTR (prs_kenmerklink_waarde, 8, 2) ), 1, 15)
WHERE prs_kenmerk_key = c_faxnr_key
AND prs_kenmerklink_waarde IS NOT NULL
AND LENGTH(prs_kenmerklink_waarde) > 5
AND MOD( LENGTH(prs_kenmerklink_waarde), 2) = 1
AND prs_kenmerklink_waarde LIKE '88%';
-- 088-nummers met een oneven aantal digits
UPDATE prs_kenmerklink
SET prs_kenmerklink_waarde = SUBSTR( TRIM('0' || SUBSTR (prs_kenmerklink_waarde, 1, 2) || '-'
|| SUBSTR (prs_kenmerklink_waarde, 3, 2)
|| ' '
|| SUBSTR (prs_kenmerklink_waarde, 5, 2)
|| ' '
|| SUBSTR (prs_kenmerklink_waarde, 7, 2)
|| ' '
|| SUBSTR (prs_kenmerklink_waarde, 9, 2)) , 1, 15)
WHERE prs_kenmerk_key = c_faxnr_key
AND prs_kenmerklink_waarde IS NOT NULL
AND LENGTH(prs_kenmerklink_waarde) > 5
AND MOD( LENGTH(prs_kenmerklink_waarde), 2) = 0
AND prs_kenmerklink_waarde LIKE '88%';
-- netnummers met 2 digits na-de-nul (bijv "020")
UPDATE prs_kenmerklink
SET prs_kenmerklink_waarde = SUBSTR('(0' || SUBSTR (prs_kenmerklink_waarde, 1, 2) || ') '
|| SUBSTR (prs_kenmerklink_waarde, 3, 3)
|| ' '
|| SUBSTR (prs_kenmerklink_waarde, 6, 2)
|| ' '
|| SUBSTR (prs_kenmerklink_waarde, 8, 2), 1, 15)
WHERE prs_kenmerk_key = c_faxnr_key
AND prs_kenmerklink_waarde IS NOT NULL
AND LENGTH(prs_kenmerklink_waarde) > 5
AND EXISTS (SELECT 1
FROM fac_usrdata
WHERE fac_usrtab_key = v_fac_usrtab_key
AND fac_usrdata_verwijder IS NULL
AND prs_kenmerklink_waarde LIKE fac_usrdata_code || '%'
AND LENGTH (fac_usrdata_code) = 2);
-- netnummers met 3 digits na-de-nul (bijv "0118")
UPDATE prs_kenmerklink
SET prs_kenmerklink_waarde = SUBSTR('(0' || SUBSTR (prs_kenmerklink_waarde, 1, 3) || ') '
|| SUBSTR (prs_kenmerklink_waarde, 4, 2)
|| ' '
|| SUBSTR (prs_kenmerklink_waarde, 6, 2)
|| ' '
|| SUBSTR (prs_kenmerklink_waarde, 8, 2), 1, 15)
WHERE prs_kenmerk_key = c_faxnr_key
AND prs_kenmerklink_waarde IS NOT NULL
AND LENGTH(prs_kenmerklink_waarde) > 5
AND EXISTS (SELECT prs_kenmerklink_key
FROM fac_usrdata
WHERE fac_usrtab_key = v_fac_usrtab_key
AND fac_usrdata_verwijder IS NULL
AND prs_kenmerklink_waarde LIKE fac_usrdata_code || '%'
AND LENGTH (fac_usrdata_code) = 3);
EXCEPTION
WHEN OTHERS
THEN
fac.imp_writelog (p_import_key,
'W',
'Fout bij formatteren telefoonnummers',
SQLCODE||': '||SUBSTR(SQLERRM, 1, 200) );
END format_telefoonnummers;
PROCEDURE abo_verhuisd (p_import_key NUMBER,
p_perslid_key NUMBER,
p_locatie_key NUMBER)
AS
oracle_err_num VARCHAR (20);
oracle_err_mes VARCHAR (100);
v_errorhint VARCHAR (200);
v_errormsg VARCHAR (200);
v_aanduiding VARCHAR (200);
v_count NUMBER;
-- Contract is een abonnement en deze persoon is contracteigenaar!
CURSOR c_cnt
IS
SELECT c.cnt_contract_key,
c.cnt_contract_nummer_intern,
pf.prs_perslid_naam_full,
l.alg_locatie_omschrijving,
l.alg_locatie_post_adres,
l.alg_locatie_post_postcode,
l.alg_locatie_post_plaats,
sn.fac_srtnotificatie_oms
FROM cnt_v_aanwezigcontract c,
prs_v_perslid_fullnames pf,
alg_locatie l,
fac_srtnotificatie sn
WHERE c.ins_discipline_key = 360 -- Abonnementen
AND c.cnt_contract_status = 0 -- NIET Gesloten!
AND NOT EXISTS -- Beschouw alleen laatste versie van contracten
(SELECT 1
FROM cnt_v_aanwezigcontract
WHERE cnt_contract_nummer_intern =
c.cnt_contract_nummer_intern
AND cnt_contract_versie >
c.cnt_contract_versie)
AND c.cnt_contract_looptijd_tot > SYSDATE
AND c.prs_perslid_key_eig = p_perslid_key
AND pf.prs_perslid_key = p_perslid_key
AND l.alg_locatie_key = p_locatie_key
AND sn.fac_srtnotificatie_code = 'CUST19';
BEGIN
FOR rec IN c_cnt
LOOP
BEGIN
v_aanduiding :=
rec.prs_perslid_naam_full
|| '/'
|| rec.cnt_contract_nummer_intern;
-- Op basis van CUST19-tracking wordt via PutOrders ook aansluitend
-- een cXML - uit customer orderqueue! - naar leverancier gestuurd!
fac.trackaction ('CUST19',
rec.cnt_contract_key,
NULL,
NULL,
rec.fac_srtnotificatie_oms);
-- Ook nog maar even in ABS-logging noemen of niet?
fac.imp_writelog (
p_import_key,
'I',
rec.cnt_contract_nummer_intern
|| ': abonnee '
|| rec.prs_perslid_naam_full
|| ' verhuisd.',
rec.alg_locatie_omschrijving
|| ', '
|| rec.alg_locatie_post_adres
|| ', '
|| rec.alg_locatie_post_postcode
|| ' '
|| rec.alg_locatie_post_plaats
);
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errorhint := 'abo_verhuisd {' || v_errormsg || '}';
v_errormsg :=
v_aanduiding
|| '(ORACLE error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'W',
v_errormsg,
v_errorhint);
END;
END LOOP;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errorhint := 'abo_verhuisd {' || v_errormsg || '}';
v_errormsg :=
v_aanduiding
|| '(ORACLE error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'W',
v_errormsg,
v_errorhint);
END;
END uwva;
/
COMMIT;
BEGIN adm.systrackscriptId('$Id$'); END;
/
SPOOL OFF;
COMMIT;