CONN#22385
svn path=/Customer/trunk/; revision=15102
This commit is contained in:
393
CONN/Once/CONN#22385.sql
Normal file
393
CONN/Once/CONN#22385.sql
Normal file
@@ -0,0 +1,393 @@
|
||||
-- Customer specific once-script CONN#22385.
|
||||
--
|
||||
-- (c) 2012 SG|facilitor bv
|
||||
-- $Revision: 1 $
|
||||
-- $Modtime: 2-02-12 12:09 $
|
||||
--
|
||||
-- Support: +31 53 4800700
|
||||
SET ECHO ON
|
||||
SPOOL xconn#22385.lst
|
||||
SET DEFINE OFF
|
||||
|
||||
CREATE OR REPLACE PACKAGE BODY perman
|
||||
AS
|
||||
PROCEDURE verwerk (
|
||||
p_ind_toekomstmutatie IN VARCHAR2,
|
||||
p_dvb_personeelsnummer IN VARCHAR2,
|
||||
p_per_naam IN VARCHAR2,
|
||||
p_per_partnernaam IN VARCHAR2,
|
||||
p_per_indnaamsvoegen IN VARCHAR2,
|
||||
p_per_tussenvoegsels IN VARCHAR2,
|
||||
p_per_partussenvoegs IN VARCHAR2,
|
||||
p_per_voorletters IN VARCHAR2,
|
||||
p_per_roepnaam IN VARCHAR2,
|
||||
p_per_username IN VARCHAR2,
|
||||
p_per_titel IN VARCHAR2,
|
||||
p_per_achtervoegsel IN VARCHAR2,
|
||||
p_dvb_datum_in_dienst IN DATE,
|
||||
p_dvb_datum_uit_dienst IN DATE,
|
||||
p_fnc_omschrijving IN VARCHAR2,
|
||||
p_dvb_k_emailzake IN VARCHAR2,
|
||||
p_dvb_divisie IN VARCHAR2,
|
||||
p_dvb_divisie_label IN VARCHAR2,
|
||||
p_dvb_k_regio IN VARCHAR2,
|
||||
p_dvb_k_regio_label IN VARCHAR2,
|
||||
p_dvb_k_regiozoeknaam IN VARCHAR2,
|
||||
p_afd_code IN VARCHAR2,
|
||||
p_afd_omschrijving IN VARCHAR2,
|
||||
p_dvb_k_standplts_label IN VARCHAR2
|
||||
)
|
||||
IS
|
||||
v_prs_srtperslid_key prs_srtperslid.prs_srtperslid_key%TYPE;
|
||||
v_prs_afdeling_key prs_afdeling.prs_afdeling_key%TYPE;
|
||||
v_prs_afdeling_key_old prs_afdeling.prs_afdeling_key%TYPE;
|
||||
v_prs_perslid_key prs_perslid.prs_perslid_key%TYPE;
|
||||
v_fac_groep_key fac_groep.fac_groep_key%TYPE;
|
||||
v_prs_perslid_naam prs_perslid.prs_perslid_naam%TYPE;
|
||||
v_prs_perslid_tussenvoegsels prs_perslid.prs_perslid_tussenvoegsel%TYPE;
|
||||
v_prs_perslid_titel prs_perslid.prs_perslid_titel%TYPE := NULL;
|
||||
v_prs_perslid_einddatum prs_perslid.prs_perslid_einddatum%TYPE;
|
||||
v_standplaats_kenmerk_key prs_kenmerk.prs_kenmerk_key%TYPE;
|
||||
v_standplaats_kenmerklink_key prs_kenmerklink.prs_kenmerklink_key%TYPE;
|
||||
v_count NUMBER (10);
|
||||
BEGIN
|
||||
v_prs_srtperslid_key := prs_srtperslid_key (p_fnc_omschrijving);
|
||||
v_prs_afdeling_key :=
|
||||
prs_afdeling_key (p_dvb_divisie,
|
||||
p_dvb_divisie_label,
|
||||
p_dvb_k_regiozoeknaam,
|
||||
p_dvb_k_regio_label,
|
||||
p_afd_code,
|
||||
p_afd_omschrijving
|
||||
);
|
||||
v_prs_perslid_key := prs_perslid_key (p_dvb_personeelsnummer);
|
||||
v_prs_afdeling_key_old := prs_afdeling_key_old (p_dvb_personeelsnummer);
|
||||
v_prs_perslid_naam := SUBSTR (p_per_naam, 1, 30);
|
||||
v_prs_perslid_tussenvoegsels := p_per_tussenvoegsels;
|
||||
|
||||
IF p_per_indnaamsvoegen = 'J'
|
||||
OR p_per_indnaamsvoegen = 'W'
|
||||
OR p_per_indnaamsvoegen = 'E'
|
||||
OR p_per_indnaamsvoegen = 'P'
|
||||
THEN
|
||||
v_prs_perslid_tussenvoegsels := p_per_partussenvoegs;
|
||||
|
||||
IF p_per_tussenvoegsels IS NOT NULL
|
||||
THEN
|
||||
v_prs_perslid_naam := SUBSTR (p_per_partnernaam || '-' || p_per_tussenvoegsels || ' ' || p_per_naam, 1, 30);
|
||||
ELSE
|
||||
v_prs_perslid_naam := SUBSTR (p_per_partnernaam || '-' || p_per_naam, 1, 30);
|
||||
END IF;
|
||||
ELSIF p_per_indnaamsvoegen = 'A'
|
||||
THEN
|
||||
v_prs_perslid_tussenvoegsels := p_per_partussenvoegs;
|
||||
v_prs_perslid_naam := SUBSTR (p_per_partnernaam, 1, 30);
|
||||
ELSIF p_per_indnaamsvoegen = 'G'
|
||||
THEN
|
||||
IF p_per_partussenvoegs IS NOT NULL
|
||||
THEN
|
||||
v_prs_perslid_naam :=
|
||||
SUBSTR (v_prs_perslid_naam || '-' || p_per_partussenvoegs || ' ' || p_per_partnernaam, 1, 30);
|
||||
ELSE
|
||||
v_prs_perslid_naam := SUBSTR (v_prs_perslid_naam || '-' || p_per_partnernaam, 1, 30);
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
IF p_ind_toekomstmutatie = 'N'
|
||||
THEN -- Toekomstmutaties niet meenemen
|
||||
IF p_per_titel IS NOT NULL OR p_per_achtervoegsel IS NOT NULL
|
||||
THEN
|
||||
v_prs_perslid_titel := SUBSTR (p_per_titel || '()' || p_per_achtervoegsel, 1, 15);
|
||||
END IF;
|
||||
|
||||
-- controleren op onbepaald (dwz dvb_datum_uit_dienst=31 dec 2999)
|
||||
v_prs_perslid_einddatum := p_dvb_datum_uit_dienst;
|
||||
|
||||
IF p_dvb_datum_uit_dienst IS NULL
|
||||
THEN
|
||||
v_prs_perslid_einddatum := TO_DATE ('31-12-2999', 'DD-MM-YYYY');
|
||||
END IF;
|
||||
|
||||
IF v_prs_perslid_key = 0
|
||||
THEN --nieuwe medewerker
|
||||
INSERT INTO prs_perslid
|
||||
(prs_perslid_nr, prs_perslid_module, prs_perslid_naam,
|
||||
prs_perslid_tussenvoegsel, prs_perslid_voorletters,
|
||||
prs_perslid_voornaam
|
||||
-- , prs_perslid_oslogin
|
||||
, prs_perslid_titel, prs_perslid_ingangsdatum,
|
||||
prs_perslid_einddatum, prs_afdeling_key, prs_srtperslid_key
|
||||
)
|
||||
VALUES (p_dvb_personeelsnummer, 'PRS', v_prs_perslid_naam,
|
||||
SUBSTR (v_prs_perslid_tussenvoegsels, 1, 15), SUBSTR (p_per_voorletters, 1, 10),
|
||||
SUBSTR (p_per_roepnaam, 1, 30)
|
||||
-- , substr(p_per_username,1,30)
|
||||
, v_prs_perslid_titel, p_dvb_datum_in_dienst,
|
||||
v_prs_perslid_einddatum, v_prs_afdeling_key, v_prs_srtperslid_key
|
||||
);
|
||||
|
||||
SELECT prs_perslid_key
|
||||
INTO v_prs_perslid_key
|
||||
FROM prs_perslid
|
||||
WHERE prs_perslid_nr = p_dvb_personeelsnummer;
|
||||
|
||||
-- Default autorisatie toekennen aan deze nieuwe persoon
|
||||
BEGIN
|
||||
SELECT fac_groep_key
|
||||
INTO v_fac_groep_key
|
||||
FROM fac_groep
|
||||
WHERE fac_groep_upper = 'ALGEMEEN2808' AND fac_groep_verwijder IS NULL;
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
INSERT INTO fac_groep
|
||||
(fac_groep_omschrijving
|
||||
)
|
||||
VALUES ('Algemeen2808'
|
||||
);
|
||||
|
||||
SELECT fac_groep_key
|
||||
INTO v_fac_groep_key
|
||||
FROM fac_groep
|
||||
WHERE fac_groep_upper = 'ALGEMEEN2808' AND fac_groep_verwijder IS NULL;
|
||||
END;
|
||||
|
||||
INSERT INTO fac_gebruikersgroep
|
||||
(fac_groep_key, prs_perslid_key
|
||||
)
|
||||
VALUES (v_fac_groep_key, v_prs_perslid_key
|
||||
);
|
||||
ELSE
|
||||
UPDATE prs_perslid
|
||||
SET prs_perslid_naam = v_prs_perslid_naam,
|
||||
prs_perslid_tussenvoegsel = SUBSTR (v_prs_perslid_tussenvoegsels, 1, 15),
|
||||
prs_perslid_voorletters = SUBSTR (p_per_voorletters, 1, 10),
|
||||
prs_perslid_voornaam = SUBSTR (p_per_roepnaam, 1, 30)
|
||||
-- , prs_perslid_oslogin=substr(p_per_username,1,30)
|
||||
,
|
||||
prs_perslid_titel = v_prs_perslid_titel,
|
||||
prs_perslid_ingangsdatum = p_dvb_datum_in_dienst,
|
||||
prs_perslid_einddatum = v_prs_perslid_einddatum,
|
||||
prs_afdeling_key = v_prs_afdeling_key,
|
||||
prs_srtperslid_key = v_prs_srtperslid_key
|
||||
WHERE prs_perslid_key = v_prs_perslid_key;
|
||||
END IF;
|
||||
|
||||
--standplaats-kenmerk!!!
|
||||
SELECT prs_kenmerk.prs_kenmerk_key
|
||||
INTO v_standplaats_kenmerk_key
|
||||
FROM prs_kenmerk
|
||||
WHERE prs_kenmerk_upper = 'STANDPLAATS';
|
||||
|
||||
BEGIN
|
||||
SELECT prs_kenmerklink_key
|
||||
INTO v_standplaats_kenmerklink_key
|
||||
FROM prs_kenmerklink
|
||||
WHERE prs_link_key = v_prs_perslid_key AND prs_kenmerk_key = v_standplaats_kenmerk_key;
|
||||
|
||||
IF p_dvb_k_standplts_label IS NULL
|
||||
THEN
|
||||
DELETE FROM prs_kenmerklink
|
||||
WHERE prs_kenmerklink_key = v_standplaats_kenmerklink_key;
|
||||
ELSE
|
||||
UPDATE prs_kenmerklink
|
||||
SET prs_kenmerklink_waarde = p_dvb_k_standplts_label
|
||||
WHERE prs_kenmerklink_key = v_standplaats_kenmerklink_key;
|
||||
END IF;
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN -- nieuwe toevoegen indien niet leeg
|
||||
IF p_dvb_k_standplts_label IS NOT NULL
|
||||
THEN
|
||||
INSERT INTO prs_kenmerklink
|
||||
(prs_link_key, prs_kenmerklink_niveau, prs_kenmerk_key, prs_kenmerklink_waarde
|
||||
)
|
||||
VALUES (v_prs_perslid_key, 'P', v_standplaats_kenmerk_key, p_dvb_k_standplts_label
|
||||
);
|
||||
END IF;
|
||||
END;
|
||||
END IF;
|
||||
|
||||
v_count := prs_perslid_verwijder; -- CONN#410
|
||||
END;
|
||||
|
||||
FUNCTION prs_perslid_key (p_dvb_personeelsnummer IN VARCHAR2)
|
||||
RETURN NUMBER
|
||||
IS
|
||||
v_prs_perslid_key prs_perslid.prs_perslid_key%TYPE;
|
||||
-- CONN#613 only search for active persons
|
||||
BEGIN
|
||||
SELECT prs_perslid_key
|
||||
INTO v_prs_perslid_key
|
||||
FROM prs_v_aanwezigperslid
|
||||
WHERE prs_perslid_nr = p_dvb_personeelsnummer;
|
||||
|
||||
RETURN v_prs_perslid_key;
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
RETURN 0;
|
||||
END;
|
||||
|
||||
FUNCTION prs_srtperslid_key (p_fnc_omschrijving IN VARCHAR2)
|
||||
RETURN NUMBER
|
||||
IS
|
||||
v_prs_srtperslid_key prs_perslid.prs_srtperslid_key%TYPE;
|
||||
BEGIN
|
||||
SELECT prs_srtperslid_key
|
||||
INTO v_prs_srtperslid_key
|
||||
FROM prs_srtperslid
|
||||
WHERE prs_srtperslid_upper = UPPER (p_fnc_omschrijving);
|
||||
|
||||
RETURN v_prs_srtperslid_key;
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
INSERT INTO prs_srtperslid
|
||||
(prs_srtperslid_omschrijving
|
||||
)
|
||||
VALUES (p_fnc_omschrijving
|
||||
);
|
||||
|
||||
SELECT prs_srtperslid_key
|
||||
INTO v_prs_srtperslid_key
|
||||
FROM prs_srtperslid
|
||||
WHERE prs_srtperslid_upper = UPPER (p_fnc_omschrijving);
|
||||
|
||||
RETURN v_prs_srtperslid_key;
|
||||
END;
|
||||
|
||||
-- CONN#410
|
||||
FUNCTION prs_perslid_verwijder
|
||||
RETURN NUMBER
|
||||
IS
|
||||
CURSOR c_prs_del
|
||||
IS
|
||||
SELECT DISTINCT p.prs_perslid_key
|
||||
FROM prs_perslid p, prs_v_verplichting pv
|
||||
WHERE p.prs_perslid_verwijder IS NULL
|
||||
AND NOT (p.prs_perslid_einddatum IS NULL)
|
||||
AND p.prs_perslid_einddatum <= SYSDATE
|
||||
AND p.prs_perslid_key = pv.prs_perslid_key(+)
|
||||
AND pv.prs_perslid_key IS NULL;
|
||||
|
||||
rec_prs_del c_prs_del%ROWTYPE;
|
||||
v_count_verwijderd NUMBER (10);
|
||||
v_errmes VARCHAR2 (512);
|
||||
BEGIN
|
||||
v_count_verwijderd := 0;
|
||||
|
||||
FOR rec_prs_del IN c_prs_del
|
||||
LOOP
|
||||
BEGIN
|
||||
UPDATE prs_perslidwerkplek
|
||||
SET prs_perslidwerkplek_verwijder = SYSDATE
|
||||
WHERE prs_perslid_key = rec_prs_del.prs_perslid_key AND prs_perslidwerkplek_verwijder IS NULL;
|
||||
|
||||
UPDATE prs_perslid
|
||||
SET prs_perslid_verwijder = SYSDATE
|
||||
WHERE prs_perslid_key = rec_prs_del.prs_perslid_key;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
v_errmes := 'Error bij verwijderen persoon. Negeer fouten, verwerk de volgende persoon.';
|
||||
END;
|
||||
END LOOP;
|
||||
|
||||
RETURN v_count_verwijderd;
|
||||
END;
|
||||
|
||||
FUNCTION prs_afdeling_key (
|
||||
p_dvb_divisie IN VARCHAR2,
|
||||
p_dvb_divisie_label IN VARCHAR2,
|
||||
p_dvb_k_regiozoeknaam IN VARCHAR2,
|
||||
p_dvb_k_regio_label IN VARCHAR2,
|
||||
p_afd_code IN VARCHAR2,
|
||||
p_afd_omschrijving IN VARCHAR2
|
||||
)
|
||||
RETURN NUMBER
|
||||
IS
|
||||
v_mh_bedrijf_key prs_afdeling.prs_afdeling_key%TYPE;
|
||||
v_mh_afdeling_parentkey prs_afdeling.prs_afdeling_key%TYPE;
|
||||
v_afdeling_key prs_afdeling.prs_afdeling_key%TYPE;
|
||||
v_divisie_key prs_afdeling.prs_afdeling_key%TYPE;
|
||||
BEGIN
|
||||
BEGIN
|
||||
SELECT a.prs_afdeling_key
|
||||
INTO v_afdeling_key
|
||||
FROM prs_afdeling a
|
||||
WHERE TRIM(a.prs_afdeling_upper) = UPPER (TRIM(p_afd_code)) AND a.prs_afdeling_verwijder IS NULL;
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
v_afdeling_key := NULL;
|
||||
END;
|
||||
|
||||
IF v_afdeling_key IS NULL
|
||||
THEN -- afdeling bestaat niet zoek de divisie en maak de afdeling aan.
|
||||
BEGIN
|
||||
SELECT a.prs_afdeling_key
|
||||
INTO v_divisie_key
|
||||
FROM prs_v_afdeling a
|
||||
WHERE UPPER (TRIM(a.prs_afdeling_omschrijving)) = UPPER (TRIM(p_dvb_divisie)) AND a.prs_afdeling_verwijder IS NULL AND a.niveau = 1;
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
BEGIN
|
||||
v_divisie_key := NULL;
|
||||
-- als we geen afdeling en divisie kunnen vinden dan plaatsen we de persoon in de afdeling perman nieuw
|
||||
-- bestaat afdeling "perman nieuw"
|
||||
SELECT a.prs_afdeling_key
|
||||
INTO v_afdeling_key
|
||||
FROM prs_afdeling a
|
||||
WHERE a.prs_afdeling_upper = UPPER ('Perman')
|
||||
AND UPPER (a.prs_afdeling_omschrijving) = UPPER ('Perman nieuw')
|
||||
AND a.prs_afdeling_verwijder IS NULL;
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
v_afdeling_key := NULL;
|
||||
END;
|
||||
END;
|
||||
|
||||
IF v_divisie_key IS NOT NULL
|
||||
THEN -- nieuwe afdeling onder bekende divisie plaatsen
|
||||
-- maak de afdeling aan
|
||||
INSERT INTO prs_afdeling
|
||||
(prs_afdeling_parentkey, prs_afdeling_naam, prs_afdeling_omschrijving, prs_bedrijf_key
|
||||
)
|
||||
VALUES (v_divisie_key, p_afd_code, p_afd_omschrijving, null
|
||||
)
|
||||
RETURNING prs_afdeling_key INTO v_afdeling_key;
|
||||
END IF;
|
||||
-- else -- afdeling bestaat: return v-afdeling_key.
|
||||
END IF;
|
||||
|
||||
RETURN v_afdeling_key;
|
||||
END;
|
||||
|
||||
FUNCTION prs_afdeling_key_old (p_dvb_personeelsnummer IN VARCHAR2)
|
||||
RETURN NUMBER
|
||||
IS
|
||||
v_prs_afdeling_key prs_perslid.prs_afdeling_key%TYPE;
|
||||
BEGIN
|
||||
SELECT prs_afdeling_key
|
||||
INTO v_prs_afdeling_key
|
||||
FROM prs_perslid
|
||||
WHERE prs_perslid_nr = p_dvb_personeelsnummer;
|
||||
|
||||
RETURN v_prs_afdeling_key;
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
RETURN 0;
|
||||
END;
|
||||
END perman;
|
||||
/
|
||||
|
||||
BEGIN adm.systrackscript('$Workfile: conn#22385.sql $', '$Revision: 1 $', 1); END;
|
||||
/
|
||||
|
||||
COMMIT;
|
||||
|
||||
SPOOL OFF
|
||||
Reference in New Issue
Block a user