MARX#87282 Nieuwe API koppeling voor activeren leveranciers vanuit ERP naar Mareon
svn path=/Mareon/trunk/; revision=67651
This commit is contained in:
162
sql/mareon.sql
162
sql/mareon.sql
@@ -9244,6 +9244,167 @@ SET DEFINE OFF
|
||||
END;
|
||||
END;
|
||||
/
|
||||
|
||||
|
||||
-- p_perslid_key = woco die deze functie uitvoert
|
||||
-- lev_naam_id = combi van leveranciersnaam (die in Mareon moet bestaan) en leveranciersid (bv GLN, lev-id uit ERP opdrgever, of Mareon id) gescheiden door pipe |, dus b.v. 'Coen Hagedoorn|123456'
|
||||
CREATE OR REPLACE FUNCTION mar_post_action_bedrijfx2 (p_perslid_key IN NUMBER,
|
||||
p_levnaam_levid IN VARCHAR2)
|
||||
RETURN VARCHAR2
|
||||
IS
|
||||
v_result VARCHAR2 (1000);
|
||||
v_levnaam VARCHAR2 (1000);
|
||||
v_levid VARCHAR2 (1000);
|
||||
v_levid_oud VARCHAR2 (1000);
|
||||
|
||||
v_prs_bedrijf_woco_key NUMBER (10);
|
||||
v_woco_prs_bedrijf_naam VARCHAR2 (250);
|
||||
|
||||
v_prs_bedrijf_lev_key NUMBER (10);
|
||||
v_prs_bedrijf_bedrijf_status NUMBER (10);
|
||||
|
||||
v_aantal NUMBER (10);
|
||||
l_force_error NUMBER (10);
|
||||
|
||||
BEGIN
|
||||
BEGIN
|
||||
v_result := NULL;
|
||||
v_result := 'Geen autorisatie om leverancier te koppelen';
|
||||
|
||||
-- Heeft perslid voldoende rechten, dwz WEB_MLDBOF autorisatie, zodat we zeker weten dat dit een WOCO-API user is?
|
||||
SELECT 1/marx_auth(p_perslid_key,'MARXREP') INTO l_force_error FROM dual;
|
||||
|
||||
v_result := 'Opdrachtgever is niet gevonden/bestaat niet in Mareon, leverancier kan niet gekoppeld worden';
|
||||
SELECT prs_bedrijf_key, prs_bedrijf_naam
|
||||
INTO v_prs_bedrijf_woco_key, v_woco_prs_bedrijf_naam
|
||||
FROM mar_v_woco_perslid
|
||||
WHERE prs_perslid_key = p_perslid_key;
|
||||
|
||||
v_result := 'Id en/of naam van leverancier ontbreekt';
|
||||
|
||||
v_levnaam:= SUBSTR(p_levnaam_levid, 1, INSTR(p_levnaam_levid,'|')-1);
|
||||
v_levid:= SUBSTR(p_levnaam_levid, INSTR(p_levnaam_levid,'|')+1);
|
||||
|
||||
IF v_levnaam IS NOT NULL AND v_levid IS NOT NULL
|
||||
THEN
|
||||
v_result := 'Leveranciersnaam ' || v_levnaam || ' bestaat niet in Mareon';
|
||||
|
||||
SELECT prs_bedrijf_key
|
||||
INTO v_prs_bedrijf_lev_key
|
||||
FROM prs_bedrijf
|
||||
WHERE prs_bedrijf_naam_upper = UPPER (v_levnaam) AND prs_bedrijf_intern IS NULL AND prs_bedrijf_verwijder IS NULL;
|
||||
|
||||
-- Wanneer het lev-id bestaat bij een leverancier, dan kan deze niet nog eens worden geregistreerd, deze moet(!!) uniek zijn t.b.v. bepalen van juiste leverancier bij ontvangst / aanmaak opdrachten.
|
||||
SELECT COUNT (*)
|
||||
INTO v_aantal
|
||||
FROM prs_bedrijf_bedrijf
|
||||
WHERE prs_bedrijf_key1 = v_prs_bedrijf_woco_key AND prs_bedrijf_key2 <> v_prs_bedrijf_lev_key AND prs_bedrijf_externid2 = v_levid;
|
||||
|
||||
IF v_aantal > 0
|
||||
THEN
|
||||
-- Forceer error
|
||||
v_result := 'Leveranciersnaam ' || v_levnaam || ' kan niet met ID ' || v_levid || ' worden geactiveerd omdat dit ID bij een andere leverancier al wordt toegepast';
|
||||
SELECT 1/0 INTO l_force_error FROM dual;
|
||||
END IF;
|
||||
|
||||
SELECT COUNT (*)
|
||||
INTO v_aantal
|
||||
FROM prs_bedrijf_bedrijf
|
||||
WHERE prs_bedrijf_key1 = v_prs_bedrijf_woco_key AND prs_bedrijf_key2 = v_prs_bedrijf_lev_key;
|
||||
|
||||
IF v_aantal = 0
|
||||
THEN
|
||||
-- Combi bestaat nog niet, we gaan inserten
|
||||
v_result := 'Het toevoegen/koppelen van leverancier [' || v_woco_prs_bedrijf_naam || ' x ' || v_levnaam || '] is niet gelukt';
|
||||
v_prs_bedrijf_bedrijf_status := 0; -- Altijd premium uit.
|
||||
INSERT INTO prs_bedrijf_bedrijf (prs_bedrijf_key1,
|
||||
prs_bedrijf_key2,
|
||||
prs_bedrijf_externid2,
|
||||
prs_bedrijf_bedrijf_status)
|
||||
SELECT v_prs_bedrijf_woco_key,
|
||||
v_prs_bedrijf_lev_key,
|
||||
v_levid,
|
||||
v_prs_bedrijf_bedrijf_status
|
||||
FROM DUAL;
|
||||
-- We tracken tbv o.a. support dat opdrachtgever de combi heeft toegevoegd.
|
||||
fac.trackaction ('#PRSUPB',
|
||||
v_prs_bedrijf_woco_key,
|
||||
p_perslid_key,
|
||||
NULL,
|
||||
'Mareon deelnemer ' || v_levnaam || ' is als leverancier met ID ' || v_levid || ' succesvol geactiveerd t.b.v. het ontvangen van uw (uitvoerings)opdrachten');
|
||||
ELSE
|
||||
-- Combi bestaat al, we gaan updaten
|
||||
v_result := 'Het updaten/koppelen van leverancier [' || v_woco_prs_bedrijf_naam || ' x ' || v_levnaam || '] is niet gelukt';
|
||||
|
||||
-- LEV ID is hier gevuld, die mogen we dan updaten (en eenzelfde LEV-ID blijft na update dus gelijk, geen punt ;)
|
||||
SELECT prs_bedrijf_externid2
|
||||
INTO v_levid_oud
|
||||
FROM prs_bedrijf_bedrijf
|
||||
WHERE prs_bedrijf_key1 = v_prs_bedrijf_woco_key AND prs_bedrijf_key2 = v_prs_bedrijf_lev_key;
|
||||
|
||||
IF v_levid_oud IS NULL OR v_levid_oud <> v_levid
|
||||
THEN
|
||||
UPDATE prs_bedrijf_bedrijf
|
||||
SET prs_bedrijf_externid2 = v_levid
|
||||
WHERE prs_bedrijf_key1 = v_prs_bedrijf_woco_key AND prs_bedrijf_key2 = v_prs_bedrijf_lev_key;
|
||||
|
||||
-- We tracken tbv o.a. support dat opdrachtgever het leveranciersid heeft aangepast (van old -> new value)
|
||||
fac.trackaction ('#PRSUPB',
|
||||
v_prs_bedrijf_woco_key,
|
||||
p_perslid_key,
|
||||
NULL,
|
||||
'Mareon deelnemer ' || v_levnaam || ' is als leverancier van uw (uitvoerings)opdrachten succesvol aangepast van ID ' || COALESCE(v_levid_oud, 'Leeg') || ' naar ID ' || v_levid);
|
||||
END IF;
|
||||
END IF;
|
||||
ELSE
|
||||
IF v_levid IS NULL AND v_levnaam IS NOT NULL
|
||||
THEN
|
||||
-- Mogelijkheid om combi prs_bedrijf_bedrijf te verwijderen, alleen als nog geen opdrachten van deze opdrachtgever.
|
||||
v_result := 'Leveranciersnaam ' || v_levnaam || ' bestaat niet in Mareon';
|
||||
SELECT prs_bedrijf_key
|
||||
INTO v_prs_bedrijf_lev_key
|
||||
FROM prs_bedrijf
|
||||
WHERE prs_bedrijf_naam_upper = UPPER (v_levnaam) AND prs_bedrijf_intern IS NULL AND prs_bedrijf_verwijder IS NULL;
|
||||
|
||||
SELECT count(*)
|
||||
INTO v_aantal
|
||||
FROM mld_opdr
|
||||
WHERE mld_uitvoerende_keys = v_prs_bedrijf_lev_key
|
||||
AND prs_perslid_key = p_perslid_key;
|
||||
|
||||
IF v_aantal = 0
|
||||
THEN
|
||||
-- bedrijf_bedrijf kan/mag nog verwijderd worden.
|
||||
DELETE prs_bedrijf_bedrijf
|
||||
WHERE prs_bedrijf_key1 = v_prs_bedrijf_woco_key AND prs_bedrijf_key2 = v_prs_bedrijf_lev_key;
|
||||
-- Tracking dat de combi is verwijderd...
|
||||
fac.trackaction ('#PRSUPB',
|
||||
v_prs_bedrijf_woco_key,
|
||||
p_perslid_key,
|
||||
NULL,
|
||||
'Mareon deelnemer ' || v_levnaam || ' is als leverancier inactief gemaakt.');
|
||||
|
||||
ELSE
|
||||
v_result := 'Mareon deelnemer ' || v_levnaam || ' heeft reeds opdrachten en kan daarom niet inactief worden gemaakt.';
|
||||
SELECT 1/0 INTO l_force_error FROM dual;
|
||||
END IF;
|
||||
ELSE
|
||||
-- v_levnaam is NULL en/of v_levid is evt. leeg
|
||||
v_result := 'Naam van leverancier ontbreekt';
|
||||
SELECT 1/0 INTO l_force_error FROM dual;
|
||||
END IF;
|
||||
END IF;
|
||||
v_result := NULL;
|
||||
COMMIT;
|
||||
RETURN NULL;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
RETURN v_result;
|
||||
END;
|
||||
END;
|
||||
/
|
||||
|
||||
-----
|
||||
|
||||
-- View van opdrachten met een opmerking sinds de 'laatste' keer.
|
||||
@@ -20548,6 +20709,7 @@ SET DEFINE OFF
|
||||
WHEN UPPER (v_action_code) = 'FAC_USRDATA_VAARDIGHEID' THEN v_result := mar_post_action_vaardigheid (v_prs_perslid_key, v_extra_omschr, 0);
|
||||
WHEN UPPER (v_action_code) = 'FAC_USRDATA_EIGENAAR' THEN v_result := mar_post_action_eigenaar (v_prs_perslid_key, v_extra_omschr, 0);
|
||||
WHEN UPPER (v_action_code) = 'FAC_USRDATA_POSTCODEGLN' THEN v_result := mar_post_action_postcodegln (v_prs_perslid_key, v_extra_omschr, 0);
|
||||
WHEN UPPER (v_action_code) = 'PRS_BEDRIJF_BEDRIJF' THEN v_result := mar_post_action_bedrijfx2 (v_prs_perslid_key, v_extra_omschr);
|
||||
ELSE v_result := 'Onbekende action_code';
|
||||
END CASE;
|
||||
ELSE
|
||||
|
||||
Reference in New Issue
Block a user