MARX#87282 Nieuwe API voor activeren leveranciers vanuit (opdrachtgevers)ERP naar Mareon - Wijziging API en Toevoeging van noti-view/job

svn path=/Mareon/trunk/; revision=67733
This commit is contained in:
Marcel Bourseau
2025-01-26 18:48:53 +00:00
parent 11bdc367d8
commit f1869a77a2
2 changed files with 123 additions and 48 deletions

View File

@@ -56,6 +56,26 @@ WHERE prs_kenmerk_key = 31 ;
-- End MARX#86119 Integratie Viadata CI365 en Mareon voor inspectieproces
-- MARX#87282 Nieuwe API voor activeren leveranciers vanuit (opdrachtgevers)ERP naar Mareon
-- API ACTION_REF_KEY2 is alternatief op bestaande ACTION_REF_KEY, met het verschil dat deze ACTION_REF_KEY2 een HTTP-error bij fouten terugstuurt (waar bestaande ACTION_REF_KEY altijd HTTP200 oke terugstuurt)
-- Oftewel: veld fac_api_errorhandling is hier waarde 1 (true).
INSERT INTO fac_api(fac_api_name, fac_api_omschrijving, fac_api_filepath, fac_api_stylesheet, fac_api_stylesheet_out, fac_api_errorhandling)
SELECT 'ACTION_REF_KEY2', 'Algemene API die voor elke ref-key een action uitvoert', 'appl/MARX/API_mareon_postaction.asp', NULL, 'cust/MARX/xsl/F_Response_API_Import.xsl', 1
FROM DUAL;
-- Tbv notificatiemail naar de (zojuist door opdrachtgever) aangesloten leverancier, zodat leverancier op de hoogte wordt gebracht.
-- Is de leverancier overigens Premium (voor andere opdrachtgevers), dan geven we deze leverancier in dit noti-rapportje de gelegenheid om (op enig moment) voor deze nieuwe opdrachtgever Premium te worden...
INSERT INTO fac_srtnotificatie (fac_srtnotificatie_code, fac_srtnotificatie_mode, fac_srtnotificatie_oms, fac_srtnotificatie_xmlnode, fac_srtnotificatie_url, fac_srtnotificatie_groep)
VALUES ('CUST10', 2, 'Mareon info: Opdrachtgever heeft u als leverancier in Mareon bij zichzelf toegevoegd / geactiveerd', 'rapport', 'fac/fac_report.asp?usrrap_key=', 0);
INSERT INTO fac_notificatie_job (fac_notificatie_job_view, fac_notificatie_job_oms, fac_notificatie_job_interval, fac_notificatie_job_mode, fac_notificatie_job_flags)
VALUES ('mar_v_noti_bedrijfx2', 'Notify leverancier: activatie bij opdrachtgever', 1, 2, 1);
UPDATE fac_notificatie_job
SET fac_notificatie_job_lastrun = SYSDATE
WHERE UPPER(fac_notificatie_job_view) = 'MAR_V_NOTI_BEDRIJFX2';
------ payload end ------
SET DEFINE OFF

View File

@@ -9245,22 +9245,23 @@ SET DEFINE OFF
END;
/
-- MARX#87282 Nieuwe API voor activeren leveranciers vanuit (opdrachtgevers)ERP naar Mareon
-- 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'
-- p_mareonid_erpid = combi van MareonID (die in Mareon moet bestaan) en ERP 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)
p_mareonid_erpid IN VARCHAR2)
RETURN VARCHAR2
IS
v_result VARCHAR2 (1000);
v_levnaam VARCHAR2 (1000);
v_levid VARCHAR2 (1000);
v_levid_oud VARCHAR2 (1000);
v_mareon_id VARCHAR2 (1000);
v_erp_id VARCHAR2 (1000);
v_erpid_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_lev_naam VARCHAR2(250);
v_prs_bedrijf_bedrijf_status NUMBER (10);
v_aantal NUMBER (10);
@@ -9282,28 +9283,28 @@ SET DEFINE OFF
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);
v_mareon_id:= SUBSTR(p_mareonid_erpid, 1, INSTR(p_mareonid_erpid,'|')-1);
v_erp_id:= SUBSTR(p_mareonid_erpid, INSTR(p_mareonid_erpid,'|')+1);
IF v_levnaam IS NOT NULL AND v_levid IS NOT NULL
IF v_mareon_id IS NOT NULL AND v_erp_id IS NOT NULL
THEN
v_result := 'Leveranciersnaam ' || v_levnaam || ' bestaat niet in Mareon';
v_result := 'MareonID ' || v_mareon_id || ' bestaat niet in Mareon';
SELECT prs_bedrijf_key
INTO v_prs_bedrijf_lev_key
SELECT prs_bedrijf_key, prs_bedrijf_naam
INTO v_prs_bedrijf_lev_key, v_prs_bedrijf_lev_naam
FROM prs_bedrijf
WHERE prs_bedrijf_naam_upper = UPPER (v_levnaam) AND prs_bedrijf_intern IS NULL AND prs_bedrijf_verwijder IS NULL;
WHERE prs_bedrijf_key = v_mareon_id 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.
-- Wanneer het erp-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;
WHERE prs_bedrijf_key1 = v_prs_bedrijf_woco_key AND prs_bedrijf_key2 <> v_prs_bedrijf_lev_key AND prs_bedrijf_externid2 = v_erp_id;
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';
v_result := 'MareonID ' || v_mareon_id || ' kan niet met ERP ID ' || v_erp_id || ' worden geactiveerd omdat dit ERPID bij een andere leverancier al wordt toegepast';
SELECT 1/0 INTO l_force_error FROM dual;
END IF;
@@ -9315,7 +9316,7 @@ SET DEFINE OFF
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_result := 'Het toevoegen/koppelen van leverancier [' || v_woco_prs_bedrijf_naam || ' x ' || v_prs_bedrijf_lev_naam || '] is niet gelukt';
v_prs_bedrijf_bedrijf_status := 0; -- Altijd premium uit.
INSERT INTO prs_bedrijf_bedrijf (prs_bedrijf_key1,
prs_bedrijf_key2,
@@ -9323,7 +9324,7 @@ SET DEFINE OFF
prs_bedrijf_bedrijf_status)
SELECT v_prs_bedrijf_woco_key,
v_prs_bedrijf_lev_key,
v_levid,
v_erp_id,
v_prs_bedrijf_bedrijf_status
FROM DUAL;
-- We tracken tbv o.a. support dat opdrachtgever de combi heeft toegevoegd.
@@ -9331,21 +9332,26 @@ SET DEFINE OFF
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');
'Mareon deelnemer ' || v_prs_bedrijf_lev_naam || ' (MareonID: ' || v_mareon_id || ') is als leverancier met ID ' || v_erp_id || ' succesvol geactiveerd t.b.v. het ontvangen van uw (uitvoerings)opdrachten');
fac.trackaction ('#CUST10',
v_prs_bedrijf_lev_key,
p_perslid_key,
NULL,
'Opdrachtgever ' || v_woco_prs_bedrijf_naam || ' heeft Mareon deelnemer ' || v_prs_bedrijf_lev_naam || ' geactiveerd t.b.v. het ontvangen van (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';
v_result := 'Het updaten/koppelen van leverancier [' || v_woco_prs_bedrijf_naam || ' x ' || v_prs_bedrijf_lev_naam || '] 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
INTO v_erpid_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
IF v_erpid_oud IS NULL OR v_erpid_oud <> v_erp_id
THEN
UPDATE prs_bedrijf_bedrijf
SET prs_bedrijf_externid2 = v_levid
SET prs_bedrijf_externid2 = v_erp_id
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)
@@ -9353,44 +9359,57 @@ SET DEFINE OFF
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);
'Mareon deelnemer ' || v_prs_bedrijf_lev_naam || ' (MareonID: ' || v_mareon_id || ') is als leverancier van uw (uitvoerings)opdrachten succesvol aangepast van ID ' || COALESCE(v_erpid_oud, 'Leeg') || ' naar ID ' || v_erp_id);
END IF;
END IF;
ELSE
IF v_levid IS NULL AND v_levnaam IS NOT NULL
IF v_erp_id IS NULL AND v_mareon_id 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
v_result := 'MareonID ' || v_mareon_id || ' bestaat niet in Mareon';
SELECT prs_bedrijf_key, prs_bedrijf_naam
INTO v_prs_bedrijf_lev_key, v_prs_bedrijf_lev_naam
FROM prs_bedrijf
WHERE prs_bedrijf_naam_upper = UPPER (v_levnaam) AND prs_bedrijf_intern IS NULL AND prs_bedrijf_verwijder IS NULL;
WHERE prs_bedrijf_key = v_mareon_id AND prs_bedrijf_intern IS NULL AND prs_bedrijf_verwijder IS NULL;
SELECT count(*)
SELECT COUNT (*)
INTO v_aantal
FROM mld_opdr
WHERE mld_uitvoerende_keys = v_prs_bedrijf_lev_key
AND prs_perslid_key = p_perslid_key;
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
-- 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.');
-- Combi bestaat nietm en kan dus helemaal niet verwijderd worden
v_result := 'Mareon deelnemer ' || v_prs_bedrijf_lev_naam || ' (MareonID: ' || v_mareon_id || ') is niet actief en daarom niet inactief worden gemaakt.';
SELECT 1/0 INTO l_force_error FROM dual;
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;
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_prs_bedrijf_lev_naam || ' (MareonID: ' || v_mareon_id || ') is als leverancier inactief gemaakt.');
ELSE
v_result := 'Mareon deelnemer ' || v_prs_bedrijf_lev_naam || ' (MareonID: ' || v_mareon_id || ') heeft reeds opdrachten en kan daarom niet inactief worden gemaakt.';
SELECT 1/0 INTO l_force_error FROM dual;
END IF;
END IF;
ELSE
-- v_levnaam is NULL en/of v_levid is evt. leeg
v_result := 'Naam van leverancier ontbreekt';
-- v_mareon_id is NULL en/of v_erp_id is evt. leeg
v_result := 'MareonID van leverancier ontbreekt';
SELECT 1/0 INTO l_force_error FROM dual;
END IF;
END IF;
@@ -18284,6 +18303,42 @@ SET DEFINE OFF
AND rap.fac_tracking_datum >= (SELECT MIN(nj.fac_notificatie_job_lastrun) FROM fac_notificatie_job nj
WHERE nj.fac_notificatie_job_view = 'MAR_V_NOTI_SYNC_UITVAL');
-- MARX#87282 Nieuwe API voor activeren leveranciers vanuit (opdrachtgevers)ERP naar Mareon
-- Nieuwe view t.b.v. notificeren naar leverancier (en ook naar Mareon helpdesk)...
CREATE OR REPLACE VIEW mar_v_noti_bedrijfx2
(
code,
sender,
receiver,
text,
key,
xkey,
xemail,
xmobile
)
AS
SELECT DISTINCT 'CUST10', '', lev.prs_perslid_key, fac_tracking_oms,
(SELECT fac_usrrap_key FROM fac_usrrap WHERE fac_usrrap_code = 'NOTIBEDRIJFX2'),
NULL, NULL, NULL
FROM fac_tracking rap, mar_v_leverancier_api_perslid lev
WHERE rap.fac_srtnotificatie_key = (select fac_srtnotificatie_key from fac_srtnotificatie where fac_srtnotificatie_code = 'CUST10')
AND rap.fac_tracking_refkey = lev.prs_bedrijf_key
AND rap.fac_tracking_datum >= (SELECT MIN(nj.fac_notificatie_job_lastrun) FROM fac_notificatie_job nj
WHERE nj.fac_notificatie_job_view = 'MAR_V_NOTI_BEDRIJFX2')
UNION
SELECT DISTINCT 'CUST10', '', applbeheer.prs_perslid_key, fac_tracking_oms,
(SELECT fac_usrrap_key FROM fac_usrrap WHERE fac_usrrap_code = 'NOTIBEDRIJFX2'),
NULL, NULL, NULL
FROM fac_tracking rap, mar_v_leverancier_api_perslid lev, fac_v_webgebruiker applbeheer
WHERE rap.fac_srtnotificatie_key = (select fac_srtnotificatie_key from fac_srtnotificatie where fac_srtnotificatie_code = 'CUST10')
AND rap.fac_tracking_refkey = lev.prs_bedrijf_key
AND applbeheer.fac_functie_key = (SELECT fac_functie_key FROM fac_functie WHERE fac_functie_code = 'WEB_PRSSYS')
AND rap.fac_tracking_datum >= (SELECT MIN(nj.fac_notificatie_job_lastrun) FROM fac_notificatie_job nj
WHERE nj.fac_notificatie_job_view = 'MAR_V_NOTI_BEDRIJFX2');
-- Temp view t.b.v. basis UDR rapport voor alle info plat geslagen van woco x lev: melding->opdracht. Hier zitten GEEN factuur (en geen factuurregels) erbij.
CREATE OR REPLACE VIEW mar_v_tmp_opdr_woco_x_lev