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:
@@ -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
|
||||
|
||||
151
sql/mareon.sql
151
sql/mareon.sql
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user