DSMA#83868 Korton-koppeling/Implementatie
svn path=/Customer/trunk/; revision=67477
This commit is contained in:
178
DSMA/dsma.sql
178
DSMA/dsma.sql
@@ -428,7 +428,7 @@ CREATE OR REPLACE PROCEDURE DSMA_SELECT_BASE27 (p_applname IN VARCHAR2,
|
||||
p_applrun IN VARCHAR2)
|
||||
AS
|
||||
-- Nieuwe notitie(s) sinds laatste sync!
|
||||
-- TODO:Aanname is nooit tegelijk Notitie(s) op zowel melding als opdracht!
|
||||
-- TODO:Aanname is nooit tegelijk notitie(s) op zowel melding als opdracht!
|
||||
CURSOR c_dsm2base
|
||||
IS
|
||||
SELECT '[' || TO_CHAR (o.mld_melding_key) || '/' || TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr) || '] '
|
||||
@@ -475,7 +475,7 @@ AS
|
||||
AND n.mld_opdr_note_aanmaak > fac.safe_to_date ('01-02-2023', 'dd-mm-yyyy') -- Sync-en vanaf 01-02-2023!
|
||||
AND n.mld_opdr_note_aanmaak = mld_opdr_note_wijzigdatum;
|
||||
*/
|
||||
v_errormsg VARCHAR2 (1000);
|
||||
v_errormsg VARCHAR2 (1000) := '';
|
||||
oracle_err_num NUMBER;
|
||||
oracle_err_mes VARCHAR2 (200);
|
||||
v_count NUMBER;
|
||||
@@ -580,7 +580,7 @@ EXCEPTION
|
||||
oracle_err_num := SQLCODE;
|
||||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||||
v_errormsg := 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||||
fac.writelog (p_applname, 'E', 'Base27-export afgebroken!', v_errormsg);
|
||||
fac.writelog (p_applname, 'E', 'Export afgebroken!', v_errormsg);
|
||||
END DSMA_SELECT_BASE27;
|
||||
/
|
||||
|
||||
@@ -675,7 +675,7 @@ AS
|
||||
END LOOP;
|
||||
fac.writelog (c_applname, 'S', '#Base27-meldingen gesloten: ' || TO_CHAR (v_count_tot), '');
|
||||
COMMIT;
|
||||
|
||||
/*
|
||||
--Alle lopende Korton-opdrachten automatisch sluiten.
|
||||
v_count_tot := 0;
|
||||
FOR rec IN c_ord_korton
|
||||
@@ -699,6 +699,7 @@ AS
|
||||
END LOOP;
|
||||
fac.writelog (c_applname, 'S', '#Korton-meldingen gesloten: ' || TO_CHAR (v_count_tot), '');
|
||||
COMMIT;
|
||||
*/
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
@@ -1029,6 +1030,175 @@ AS
|
||||
AND aog.alg_locatie_key = l.alg_locatie_key
|
||||
;
|
||||
|
||||
CREATE OR REPLACE VIEW DSMA_V_RAP_EXP_KORTON
|
||||
AS
|
||||
SELECT fac.safe_to_number (n.note_key) extra_key, -- Moet zo heten!
|
||||
o.mld_opdr_key,
|
||||
o.mld_melding_key,
|
||||
o.mld_opdr_bedrijfopdr_volgnr,
|
||||
o.mld_statusopdr_key,
|
||||
refnr.mld_kenmerkopdr_waarde mld_opdr_externnr, -- TODO:Korton kan 'externalnr' niet zetten?
|
||||
n.reftype,
|
||||
o.mld_opdr_externsyncdate syncdate_old,
|
||||
n.note_datum syncdate_new,
|
||||
n.note_oms,
|
||||
p.prs_perslid_email,
|
||||
pf.prs_perslid_naam_friendly
|
||||
FROM mld_opdr o,
|
||||
(SELECT *
|
||||
FROM mld_kenmerkopdr
|
||||
WHERE mld_kenmerk_key = 621) refnr, -- Ref.nr. leverancier
|
||||
(SELECT '1' || SUBSTR ('00000' || TO_CHAR (mld_opdr_note_key), -9) note_key,
|
||||
'ORD' reftype,
|
||||
mld_opdr_key refkey,
|
||||
GREATEST (mld_opdr_note_aanmaak, mld_opdr_note_wijzigdatum) note_datum,
|
||||
prs_perslid_key,
|
||||
mld_opdr_note_omschrijving note_oms
|
||||
FROM mld_opdr_note
|
||||
WHERE prs_perslid_key != 5383 -- API-user tbv. Korton
|
||||
AND BITAND (mld_opdr_note_flag, 4) = 4 -- Bitje 4 = 1/Notitie voor Korton
|
||||
UNION ALL
|
||||
SELECT '2' || SUBSTR ('00000' || TO_CHAR (mld_melding_note_key), -9) note_key,
|
||||
'MLD' reftype,
|
||||
mld_melding_key refkey,
|
||||
GREATEST (mld_melding_note_aanmaak, mld_melding_note_wijzigdatum) note_datum,
|
||||
prs_perslid_key,
|
||||
mld_melding_note_omschrijving note_oms
|
||||
FROM mld_melding_note
|
||||
WHERE prs_perslid_key != 5383 -- API-user tbv. Korton
|
||||
AND BITAND (mld_melding_note_flag, 1) = 1) n, -- Bitje 1 = 1/Notitie voor Korton
|
||||
prs_perslid p,
|
||||
prs_v_perslid_fullnames_all pf
|
||||
WHERE o.mld_uitvoerende_keys = 841 -- Korton
|
||||
AND o.mld_opdr_key = refnr.mld_opdr_key(+)
|
||||
--AND o.mld_opdr_key = n.mld_opdr_key
|
||||
AND ((n.reftype = 'ORD' AND o.mld_opdr_key = n.refkey)
|
||||
OR (n.reftype = 'MLD' AND o.mld_melding_key = n.refkey))
|
||||
AND n.note_datum > TRUNC (SYSDATE, 'IW') -- Alle notities deze week!
|
||||
AND n.prs_perslid_key = p.prs_perslid_key
|
||||
AND p.prs_perslid_key = pf.prs_perslid_key;
|
||||
|
||||
CREATE OR REPLACE PROCEDURE DSMA_KORTON_UPDATE
|
||||
AS
|
||||
-- Nieuwe notitie(s) sinds laatste sync!
|
||||
-- TODO:Aanname is nooit tegelijk notitie(s) op zowel melding als opdracht!
|
||||
CURSOR c_dsm2korton
|
||||
IS
|
||||
SELECT '[' || TO_CHAR (x.mld_melding_key) || '/' || TO_CHAR (x.mld_opdr_bedrijfopdr_volgnr) || '] '
|
||||
aanduiding,
|
||||
x.extra_key,
|
||||
x.mld_opdr_key,
|
||||
x.mld_melding_key,
|
||||
x.mld_opdr_bedrijfopdr_volgnr,
|
||||
x.mld_statusopdr_key,
|
||||
x.reftype,
|
||||
x.syncdate_old,
|
||||
x.syncdate_new
|
||||
FROM dsma_v_rap_exp_korton x
|
||||
WHERE x.mld_opdr_externnr IS NOT NULL -- Dan pas kunnen updates worden doorgezet!
|
||||
AND x.mld_statusopdr_key IN (5, 8) -- Toegekend/Geaccepteerd
|
||||
AND x.syncdate_new > COALESCE (x.syncdate_old, TRUNC (SYSDATE, 'IW'))
|
||||
--AND NOT EXISTS -- Alleen laatste notitie op basis van key (MLD voor ORD)!
|
||||
-- (SELECT 1
|
||||
-- FROM dsma_v_rap_exp_korton
|
||||
-- WHERE mld_opdr_key = x.mld_opdr_key
|
||||
-- AND extra_key > x.extra_key)
|
||||
AND NOT EXISTS -- Alleen laatste notitie op basis van datum (ORD voor MLD)!
|
||||
(SELECT 1
|
||||
FROM dsma_v_rap_exp_korton
|
||||
WHERE mld_opdr_key = x.mld_opdr_key
|
||||
AND syncdate_new > x.syncdate_new)
|
||||
ORDER BY x.extra_key;
|
||||
|
||||
v_errormsg VARCHAR2 (1000) := '';
|
||||
oracle_err_num NUMBER;
|
||||
oracle_err_mes VARCHAR2 (200);
|
||||
v_count NUMBER;
|
||||
BEGIN
|
||||
v_count := 0;
|
||||
|
||||
-- Sync-en notities door DSM in opdracht of melding naar Korton!
|
||||
FOR rec IN c_dsm2korton
|
||||
LOOP
|
||||
BEGIN
|
||||
v_errormsg := 'Fout dsm2korton-sync';
|
||||
|
||||
-- TRUC: Zet wijzigdatum van te notificeren notities op syncdate_new!
|
||||
-- Bij 1 notitie zal gelden syncdate_new = wijzigdatum (en wijzigt er
|
||||
-- niets), maar truc gaat pas echt werken als er >1 notities zijn!
|
||||
IF (rec.reftype = 'ORD')
|
||||
THEN
|
||||
UPDATE mld_opdr_note
|
||||
SET mld_opdr_note_wijzigdatum = rec.syncdate_new
|
||||
WHERE prs_perslid_key != 5383 -- API-user tbv. Korton
|
||||
AND mld_opdr_key = rec.mld_opdr_key
|
||||
AND GREATEST (mld_opdr_note_aanmaak, mld_opdr_note_wijzigdatum) > rec.syncdate_old;
|
||||
|
||||
--fac.trackaction ('ORDUPD', rec.refkey, NULL, NULL, 'Notitie doorgezet naar Korton');
|
||||
ELSE
|
||||
UPDATE mld_melding_note
|
||||
SET mld_melding_note_wijzigdatum = rec.syncdate_new
|
||||
WHERE prs_perslid_key != 5383 -- API-user tbv. Korton
|
||||
AND mld_melding_key = rec.mld_melding_key
|
||||
AND GREATEST (mld_melding_note_aanmaak, mld_melding_note_wijzigdatum) > rec.syncdate_old;
|
||||
|
||||
--fac.trackaction ('MLDUPD', rec.refkey, NULL, NULL, 'Notitie doorgezet naar Korton');
|
||||
END IF;
|
||||
|
||||
v_errormsg := 'Fout toevoegen CUST01-noti (Korton)';
|
||||
INSERT INTO fac_notificatie (fac_srtnotificatie_key,
|
||||
fac_notificatie_status,
|
||||
fac_notificatie_refkey,
|
||||
fac_notificatie_extrakey,
|
||||
fac_notificatie_prioriteit,
|
||||
prs_bedrijfadres_key
|
||||
)
|
||||
VALUES (321, -- CUST01
|
||||
0, -- Don't care
|
||||
201, -- DSMA_V_RAP_EXP_KORTON
|
||||
fac.safe_to_number (rec.extra_key),
|
||||
2,
|
||||
61 -- 4Me-kanaal voor updates naar Korton
|
||||
);
|
||||
|
||||
v_errormsg := 'Fout bijwerken opdracht';
|
||||
UPDATE mld_opdr
|
||||
SET mld_opdr_externsyncdate = rec.syncdate_new
|
||||
WHERE mld_opdr_key = rec.mld_opdr_key;
|
||||
|
||||
v_count := v_count + 1;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
oracle_err_num := SQLCODE;
|
||||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||||
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||||
fac.writelog ('KORTON', 'E', rec.aanduiding || v_errormsg, '');
|
||||
COMMIT;
|
||||
END;
|
||||
END LOOP;
|
||||
|
||||
IF v_count > 0
|
||||
THEN
|
||||
fac.writelog ('KORTON', 'S', 'DSM-notities to Korton/#sync: ' || TO_CHAR (v_count), '');
|
||||
END IF;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
oracle_err_num := SQLCODE;
|
||||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||||
v_errormsg := 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||||
fac.writelog ('KORTON', 'E', 'Update afgebroken!', v_errormsg);
|
||||
END DSMA_KORTON_UPDATE;
|
||||
/
|
||||
|
||||
CREATE OR REPLACE PROCEDURE DSMA_PRE_PUTORDERS
|
||||
AS
|
||||
BEGIN
|
||||
dsma_korton_update;
|
||||
END DSMA_PRE_PUTORDERS;
|
||||
/
|
||||
|
||||
------ payload end ------
|
||||
|
||||
SET DEFINE OFF
|
||||
|
||||
Reference in New Issue
Block a user