HEIN#64438 -- Implementatie Cosource - Heineken (Exact en personen import)

svn path=/Customer/trunk/; revision=49072
This commit is contained in:
Arthur Egberink
2020-12-03 18:56:05 +00:00
parent 2a3233a4f9
commit 044706732d

View File

@@ -269,6 +269,148 @@ AS
END;
/
--
-- Personeelskoppeling met Heineken
--
CREATE OR REPLACE PROCEDURE hein_import_perslid (p_import_key IN NUMBER)
AS
v_seq_of_columns VARCHAR (255);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_errormsg VARCHAR2 (200);
v_errorhint VARCHAR2 (200);
BEGIN
v_seq_of_columns := '18;0;0;0;0;0;11;23;22;20;'
-- v_alg_locatie_code 1
-- v_alg_gebouw_code 2
-- v_alg_verdieping_volgnr 3
-- v_alg_ruimte_nr 4
-- v_prs_werkplek_volgnr 5
-- v_prs_werkplek_omschrijving 6
-- v_prs_afdeling_naam 7
-- v_prs_perslid_naam 8
-- v_prs_perslid_tussenvoegsel 9
-- v_prs_perslid_voornaam 10
|| '21;0;0;0;0;0;0;4;0;1;'
-- v_prs_perslid_voorletters 11
-- v_prs_perslid_partner_naam 12
-- v_prs_perslid_partner_tussenv 13
-- v_prs_naamgebruik_code 14 0 (default) perslid_naam en perslid_tussenvoegsel worden gebruikt
-- 1 personen die de geboortenaam van de partner icm de eigen naam willen gebruiken
-- 2 personen die de geboortenaam van de partner willen gebruiken
-- 3 personen die de eigen naam icm de geboortenaam van de partner willen gebruiken
-- v_prs_perslid_geslacht 15 Gebruik 'man', 'm' of 1 voor man en 'vrouw', 'v' of 0 voor vrouw case insensitive geen default
-- v_prs_perslid_telefoonnr 16
-- v_prs_perslid_mobiel 17
-- v_prs_perslid_email 18
-- v_prs_perslid_dienstverband 19
-- v_prs_perslid_nr 20
|| '8;3;0;0;0;0;12;5;6;17;'
-- v_prs_srtperslid_omschrijving 21
-- v_prs_perslid_oslogin 22
-- v_prs_perslid_wachtwoord 23
-- v_prs_perslid_titel 24
-- v_prs_perslid_apikey 25
-- v_dummy 26
-- v_prs_kenmerk1 27
-- v_prs_kenmerk2 28
-- v_prs_kenmerk3 29
-- v_prs_kenmerk4 30
|| '25;0;0;0;0;0;0;0;0;0;'
|| '0;0;0;0;0;0';
prs.import_perslid(p_import_key, v_seq_of_columns, 'Pers.no.;Personnel Number;ID/number;E-mail address;Cost ctr;Cost Center;Position;Position;PerAdm;Administrator for HR Master Da;Org.unit;Organizational Unit;Pers.no.;Personnel Number of Superior (;ID/number Manager;SPLCODE;Standplaatscodes;CoCd;Company Code;Known as;Initials;Name prefix;Last name;Birth date;Language of communication%');
-- Uitleg van de kenmerkvelden:
-- kenmerk1: Afdeling omschrijving
-- kenmerk2: Kostenplaatscode
-- kenmerk3: Kostenplaatsomschrijving
-- kenmerk4: Standplaats
-- kenmerk5: Default taal
DELETE fac_imp_organisatie;
INSERT INTO fac_imp_organisatie (prs_bedrijf_naam, prs_afdeling_naam, prs_afdeling_omschrijving)
SELECT DISTINCT 'Heineken', prs_afdeling_naam, prs_kenmerk1
FROM fac_imp_perslid
WHERE fac_import_key = p_import_key;
END;
/
CREATE OR REPLACE PROCEDURE hein_update_perslid (p_import_key IN NUMBER)
IS
-- personen pas verwijderen als ze langer dan 80 dagen bestaan. Hiermee voorkomen we dat nieuw handmatig ingevoerde
-- personen direct verwijderd worden, omdat HR data altijd wat ouder is.
CURSOR c_del IS
SELECT p.prs_perslid_key, p.prs_perslid_nr, pf.prs_perslid_naam_full, p.prs_perslid_oslogin
FROM fac_imp_perslid i, prs_perslid p, prs_v_perslid_fullnames_all pf
WHERE p.prs_perslid_nr = i.prs_perslid_nr(+)
AND pf.prs_perslid_key = p.prs_perslid_key
AND p.prs_perslid_nr IS NOT NULL
AND i.prs_perslid_nr IS NULL
AND p.prs_perslid_verwijder IS NULL
AND p.prs_perslid_aanmaak < SYSDATE -80;
v_bedrijf_key NUMBER (10);
v_afdeling_key1 NUMBER (10);
v_afdeling_key2 NUMBER (10);
v_kostenplaats_key NUMBER (10);
v_kpn_nr_prev VARCHAR2 (20);
v_aanduiding VARCHAR2 (100);
v_errorhint VARCHAR2 (1000);
v_errormsg VARCHAR2 (1000);
v_count NUMBER;
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
BEGIN
v_aanduiding := '';
fac_update_organisatie (p_import_key);
SELECT COUNT(*)
INTO v_count
FROM fac_imp_perslid;
IF v_count > 500
THEN
-- Voordat we gaan importeren gaan we op zoek of we nog mensen moeten verwijderen die niet in de import voorkomen.
-- Nu komt het ook regelmatig voor dat mensen een ander personeelsnummer krijgen terwijl ze de login behouden. Deze
-- mensen proberen we om te hangen en het personeelsnummer aan te passen.
FOR rec IN c_del LOOP
BEGIN
v_errorhint := 'Verwijderen persoon: ' || rec.prs_perslid_key || '-' || rec.prs_perslid_nr || '-' || rec.prs_perslid_oslogin;
prs.delete_perslid (p_import_key, rec.prs_perslid_key);
EXCEPTION WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := 'error ' || oracle_err_num || '/' || oracle_err_mes;
fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint);
END;
END LOOP;
END IF;
prs.update_perslid (p_import_key, 'NR', NULL);
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, v_errorhint);
END;
/
--
-- Koppeling met Exact
--
@@ -411,7 +553,7 @@ AS
k.prs_kostensoort_refcode,
k.prs_kostensoort_opmerking,
k.prs_kostensoort_key,
'Heineken' prs_kostenplaats_nr, -- Let op: nog niet duidelijk of dit de fixed waarde moet zijn
'440.00' prs_kostenplaats_nr, -- Let op: Vaste waarde, niet overgenomen uit de kostenplaatsen van Heineken
o.mld_opdr_key,
c.cnt_contract_key,
bo.bes_bestelopdr_key,