FCLT#85890 ORDUPD via teverzenden=2 beter ondersteunen

svn path=/Database/trunk/; revision=67843
This commit is contained in:
Jos Groot Lipman
2025-02-04 15:11:11 +00:00
parent a9afe4acb9
commit 4e307945b3
5 changed files with 74 additions and 10 deletions

View File

@@ -3533,7 +3533,7 @@ CREATE OR REPLACE PACKAGE BODY fac AS
fac.trackaction ('ORDSNT', pkey, pperslid_key, NULL, presulttext);
mld.setopdrachtstatus (pkey, 5, NULL);
ELSIF presult = 1 -- (Logische) fout
ELSIF presult = 1 -- (Logische) fout (expliciet afgewezen door uitvoerende)
THEN
UPDATE mld_opdr
SET mld_opdr_verzonden = SYSDATE
@@ -4909,8 +4909,9 @@ CREATE OR REPLACE PACKAGE BODY fac AS
-- Merk op: per bedrijf notificeren we hooguit <20><>n enkel technisch adres
-- Dat adres wordt eerst bepaald op basis van locatie/district/opdrachttype/discipline/bedrijfadres_type
-- Als er meerdere adressen zijn moet je er altijd srtnotificaties aan hangen
-- Als er maar een enkel adres is mag dat eventueel zonder srtnotificatie (dat werkt alleen voor ORDNEW, BES2NE en CNTNEW voor backwards compatibiliteit)
-- Als er meerdere adressen zijn die aan zo'n combinatie voldoen moet je er altijd srtnotificaties aan hangen
-- Alleen als er maar een enkel adres is mag dat eventueel zonder srtnotificatie
-- (dat werkt alleen voor ORDNEW, BES2NE en CNTNEW voor backwards compatibiliteit)
-- Dit is om het begrijpbaar te houden.
-- Ook: je kunt onder een bedrijf een adres maken voor alle locaties maar specifiek opdrachttype
-- en eentje voor specifieke locatie en algemene opdracht
@@ -4974,6 +4975,7 @@ CREATE OR REPLACE PACKAGE BODY fac AS
IF (nn_noti = 0) // geen specifiek record gevonden
THEN
IF (pbedrijfadres_type = 'O' AND l_srtnoti_code = 'ORDNEW')
OR (pbedrijfadres_type = 'O' AND l_srtnoti_code = 'ORDUPD' AND ptrackingkey IS NULL) -- vanuit trigger mld_t_mld_opdr_B_IU toen teverzenden op 2 is gezet
OR (pbedrijfadres_type = 'B' AND l_srtnoti_code = 'BES2NE') -- bestelopdracht aangemaakt
OR (pbedrijfadres_type = 'C' AND l_srtnoti_code = 'CNTNEW')
-- RESNEW nooit automatisch OR (pbedrijfadres_type = 'R' AND l_srtnoti_code = 'RESNEW')

View File

@@ -1702,6 +1702,7 @@ AS
v_cp_tussenv prs_contactpersoon.prs_contactpersoon_tussenv%TYPE;
v_cp_functie prs_contactpersoon.prs_contactpersoon_functie%TYPE;
v_cp_titel prs_contactpersoon.prs_contactpersoon_titel%TYPE;
v_cp_systeem prs_contactpersoon.prs_contactpersoon_systeem%TYPE;
v_externnr prs_contactpersoon.prs_contactpersoon_externnr%TYPE;
v_externsyncdate prs_contactpersoon.prs_contactpersoon_extsyncdate%TYPE;
v_naam_full VARCHAR2 (255);
@@ -1741,7 +1742,8 @@ AS
|| prs_contactpersoon_naam
naam_full,
prs_contactpersoon_externnr,
prs_contactpersoon_extsyncdate
prs_contactpersoon_extsyncdate,
prs_contactpersoon_systeem
INTO v_cp_naam,
v_cp_voorletters,
v_cp_voornaam,
@@ -1756,7 +1758,8 @@ AS
v_cp_titel,
v_naam_full,
v_externnr,
v_externsyncdate
v_externsyncdate,
v_cp_systeem
FROM prs_contactpersoon
WHERE prs_contactpersoon_key = p_key;
@@ -1776,6 +1779,8 @@ AS
createxmltagvalue ('titel', v_cp_titel);
createxmltagvalue ('externnr', v_externnr);
mydatetochar ('externsyncdate', v_externsyncdate);
createxmltagvalue ('systeem', v_cp_systeem);
FOR rec1 IN c1
LOOP
@@ -1824,7 +1829,8 @@ AS
createopentag ('bedrijfadres');
createxmltagvalue ('key', rec.prs_bedrijfadres_key);
createxmltagvalue ('type', rec.prs_bedrijfadres_type);
createxmltagvalue ('typeopdr', rec.mld_typeopdr_key);
createxmltagvalue ('type', rec.prs_bedrijfadres_type);
createxmltagvalue ('omschrijving', rec.prs_bedrijfadres_omschrijving);
createxmltagvalue ('soapversion', rec.prs_bedrijfadres_soapversion);
createxmltagvalue ('soapaction', rec.prs_bedrijfadres_soapaction);
createxmltagvalue ('authmethod', rec.prs_bedrijfadres_authmethod);
@@ -1833,6 +1839,7 @@ AS
createxmltagvalue ('resource', rec.prs_bedrijfadres_oa_resource);
createxmltagvalue ('district_key', rec.alg_district_key);
createxmltagvalue ('locatie_key', rec.alg_locatie_key);
createxmltagvalue ('discipline_key', rec.ins_discipline_key);
create_prs_bedrijf_node (rec.prs_bedrijf_key2, 'client', TRUE);
createxmltagvalue ('mailsender', rec.prs_bedrijfadres_sender);
createxmltagvalue ('mailreply', rec.prs_bedrijfadres_replyaddress);
@@ -1891,6 +1898,7 @@ AS
v_xmldetails_loc prs_bedrijf.prs_bedrijf_xmldetails_loc%TYPE;
v_bes_limiet prs_bedrijf.prs_bedrijf_bes_limiet%TYPE;
v_bes_kosten prs_bedrijf.prs_bedrijf_bes_kosten%TYPE;
v_mld_limiet prs_bedrijf.prs_bedrijf_mld_limiet%TYPE;
v_relatietype_key prs_bedrijf.prs_relatietype_key%TYPE;
v_x prs_bedrijf.prs_bedrijf_x%TYPE;
v_y prs_bedrijf.prs_bedrijf_y%TYPE;
@@ -1941,6 +1949,7 @@ AS
prs_bedrijf_xmldetails_loc,
prs_bedrijf_bes_limiet,
prs_bedrijf_bes_kosten,
prs_bedrijf_mld_limiet,
prs_relatietype_key,
prs_bedrijf_x,
prs_bedrijf_y
@@ -1979,6 +1988,7 @@ AS
v_xmldetails_loc,
v_bes_limiet,
v_bes_kosten,
v_mld_limiet,
v_relatietype_key,
v_x,
v_y
@@ -2022,6 +2032,7 @@ AS
create_prs_kenmerken (p_bedrijf_key, 'B');
createxmltagvalue ('beslimiet', v_bes_limiet);
createxmltagvalue ('beskosten', v_bes_kosten);
createxmltagvalue ('mldlimiet', v_mld_limiet);
createxmltagvalue ('x', v_x);
createxmltagvalue ('y', v_y);
@@ -3298,7 +3309,7 @@ AS
v_mjb_score1 alg_gebouw.alg_gebouw_mjb_score1%TYPE;
v_externnr alg_gebouw.alg_gebouw_externnr%TYPE;
v_externsyncdate alg_gebouw.alg_gebouw_externsyncdate%TYPE;
v_virtueel alg_gebouw.alg_gebouw_virtueel%TYPE;
v_virtueel alg_gebouw.alg_gebouw_virtueel%TYPE;
CURSOR c1
IS
@@ -10028,6 +10039,7 @@ AS
l_jaarfactor NUMBER;
l_locatiekosten cnt_contract.cnt_contract_kosten%TYPE;
v_bestelopdr_key cnt_contract.bes_bestelopdr_key%TYPE;
v_inactiveren cnt_contract.cnt_contract_inactiveren%TYPE;
CURSOR c1
IS
SELECT cnt_contract_object_key,
@@ -10099,7 +10111,8 @@ AS
c.cnt_contract_termijntermijn,
cnt_contract_versie,
cnt_contract_verlenging,
bes_bestelopdr_key
bes_bestelopdr_key,
cnt_contract_inactiveren
INTO v_nummer,
v_omschrijving,
v_looptijd_tot,
@@ -10133,7 +10146,8 @@ AS
v_termijntermijn_key,
v_versie,
v_verlenging,
v_bestelopdr_key
v_bestelopdr_key,
v_inactiveren
FROM cnt_contract c, cnt_termijn t1, cnt_termijn t2, cnt_termijn t3, cnt_termijn t4
WHERE c.cnt_contract_rappeltermijn = t1.cnt_termijn_key(+)
AND c.cnt_contract_opzegtermijn = t2.cnt_termijn_key(+)
@@ -10184,6 +10198,7 @@ AS
create_prs_kostenplaats_node (v_kostenplaats_key, FALSE);
create_prs_kostensoort_node (v_kostensoort_key);
createxmltagvalue ('opmerking', v_opmerking);
createxmltagvalue ('inactiveren', v_inactiveren);
create_cnt_contract_node (v_mantel_key, p_concise);
IF NOT p_concise
THEN

View File

@@ -883,6 +883,7 @@ DEFINE_SETTING('PUO', 0001, 'WEB_FACTAB', 'puo_forceallowedgroep' , 'string
DEFINE_SETTING('PUO', 0001, 'WEB_FACTAB', 'puo_fromaddress' , 'string' , '' , 'The fixed From address for Facilitor orders')
DEFINE_SETTING('PUO', 0001, 'WEB_FACTAB', 'puo_logdestination' , 'number' , '1' , 'Where to log: 1=detailed file, 2=csv file, 3=both')
DEFINE_SETTING('PUO', 0001, 'WEB_FACTAB', 'puo_loglevel' , 'number' , '1' , 'Level of logging (0-3) for troubleshooting purposes')
DEFINE_SETTING('PUO', 0001, 'WEB_FACTAB', 'puo_schedule_putorders' , 'number' , '0' , 'Force putorders run at least every ## minutes even with empty queue (for pre_putorders)')
DEFINE_SETTING('PUO', 0001, 'WEB_FACTAB', 'puo_mailbodycharset' , 'string' , 'unicode-1-1-utf-8' , 'Putorders e-mail charset')
DEFINE_SETTING('PUO', 0001, 'WEB_FACTAB', 'puo_notificationinmailbody' , 'boolean' , 'true' , 'false = as attachments, true = in body (deprecated)')
DEFINE_SETTING('PUO', 0001, 'WEB_FACTAB', 'puo_notificationxsl' , 'string' , '' , 'stylesheet to be applied for notifications')

View File

@@ -198,6 +198,7 @@ $(EXE)\$(NEXTROOT)\FCLT$(NEXTVERSION)$(FILEVERSION).SQL: \
$(MSRC)\fac\fac_tab.src \
$(MSRC)\fac\fac_tri.src \
$(MSRC)\fac\fac_vie.src \
$(MSRC)\fac\fac_vieexp.src \
$(MSRC)\ini\ini_ind.src \
$(MSRC)\ini\ini_ini.src \
$(MSRC)\ini\ini_pac.src \
@@ -206,6 +207,7 @@ $(EXE)\$(NEXTROOT)\FCLT$(NEXTVERSION)$(FILEVERSION).SQL: \
$(MSRC)\ini\ini_tri.src \
$(MSRC)\ini\fmis\fmis_ini.sql \
$(MSRC)\ini\itsm\itsm_ini.sql \
$(MSRC)\ini\plat\plat_ini.sql \
$(MSRC)\ins\ins_ind.src \
$(MSRC)\ins\ins_ini.src \
$(MSRC)\ins\ins_lcl.src \

View File

@@ -10,8 +10,52 @@
/////////////////////////////////////////////////////////////////////////////////////////// FCLT#85545
-- TODO: Kijk in fac_v_orderqueue_OLD wat nog een laatste keer een notificatie
-- Kijk in fac_v_orderqueue_OLD wat nog een laatste keer een notificatie
-- naar een systeemadres moet krijgen
-- Afgekeken van mld_t_mld_opdr_B_IU
BEGIN
FOR bedrijfrec
IN (SELECT b.prs_bedrijf_key,
COALESCE (l1.alg_locatie_key, l2.alg_locatie_key) alg_locatie_key,
COALESCE (l1.alg_locatie_email, l2.alg_locatie_email) alg_locatie_email,
o.mld_melding_key || '/' || o.mld_opdr_bedrijfopdr_volgnr reference,
d.prs_bedrijf_key persoon_bedrijf_key, -- van de melder, niet de uitvoerende
fac_srtnotificatie_key,
o.mld_opdr_key,
o.mld_typeopdr_key
FROM mld_melding m,
mld_adres ma,
alg_locatie l1,
alg_locatie l2,
prs_perslid p,
prs_v_afdeling d,
prs_bedrijf b,
fac_v_orderqueue q,
mld_opdr o,
fac_srtnotificatie fsn
WHERE q.xmlnode = 'opdracht'
AND q.key = o.mld_opdr_key
AND b.prs_bedrijf_key = o.mld_uitvoerende_keys
AND o.mld_melding_key = m.mld_melding_key
AND m.mld_adres_key = ma.mld_adres_key(+)
AND ma.alg_locatie_key = l1.alg_locatie_key(+)
AND m.mld_alg_locatie_key = l2.alg_locatie_key(+)
AND d.prs_afdeling_key = p.prs_afdeling_key
AND p.prs_perslid_key = m.prs_perslid_key
AND fac_srtnotificatie_code = 'ORDUPD') -- hardcoded ORDUPD, het gaat uiteindelijk vooral om de XMLnode 'opdracht' in putorders
LOOP
fac.notifybedrijf (pbedrijf_key => bedrijfrec.prs_bedrijf_key,
pbedrijfadres_type => 'O',
prefkey => bedrijfrec.mld_opdr_key,
ptrackingkey => NULL,
psrtnoti_key => bedrijfrec.fac_srtnotificatie_key,
preference => bedrijfrec.reference,
ptypeopdr_key => bedrijfrec.mld_typeopdr_key,
plocatie_key => bedrijfrec.alg_locatie_key,
psender => bedrijfrec.alg_locatie_email);
END LOOP;
END;
/
// En nu kan hij echt weg
DROP VIEW fac_v_orderqueue_OLD;