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)
|
p_applrun IN VARCHAR2)
|
||||||
AS
|
AS
|
||||||
-- Nieuwe notitie(s) sinds laatste sync!
|
-- 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
|
CURSOR c_dsm2base
|
||||||
IS
|
IS
|
||||||
SELECT '[' || TO_CHAR (o.mld_melding_key) || '/' || TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr) || '] '
|
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 > 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;
|
AND n.mld_opdr_note_aanmaak = mld_opdr_note_wijzigdatum;
|
||||||
*/
|
*/
|
||||||
v_errormsg VARCHAR2 (1000);
|
v_errormsg VARCHAR2 (1000) := '';
|
||||||
oracle_err_num NUMBER;
|
oracle_err_num NUMBER;
|
||||||
oracle_err_mes VARCHAR2 (200);
|
oracle_err_mes VARCHAR2 (200);
|
||||||
v_count NUMBER;
|
v_count NUMBER;
|
||||||
@@ -580,7 +580,7 @@ EXCEPTION
|
|||||||
oracle_err_num := SQLCODE;
|
oracle_err_num := SQLCODE;
|
||||||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||||||
v_errormsg := 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
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;
|
END DSMA_SELECT_BASE27;
|
||||||
/
|
/
|
||||||
|
|
||||||
@@ -675,7 +675,7 @@ AS
|
|||||||
END LOOP;
|
END LOOP;
|
||||||
fac.writelog (c_applname, 'S', '#Base27-meldingen gesloten: ' || TO_CHAR (v_count_tot), '');
|
fac.writelog (c_applname, 'S', '#Base27-meldingen gesloten: ' || TO_CHAR (v_count_tot), '');
|
||||||
COMMIT;
|
COMMIT;
|
||||||
|
/*
|
||||||
--Alle lopende Korton-opdrachten automatisch sluiten.
|
--Alle lopende Korton-opdrachten automatisch sluiten.
|
||||||
v_count_tot := 0;
|
v_count_tot := 0;
|
||||||
FOR rec IN c_ord_korton
|
FOR rec IN c_ord_korton
|
||||||
@@ -699,6 +699,7 @@ AS
|
|||||||
END LOOP;
|
END LOOP;
|
||||||
fac.writelog (c_applname, 'S', '#Korton-meldingen gesloten: ' || TO_CHAR (v_count_tot), '');
|
fac.writelog (c_applname, 'S', '#Korton-meldingen gesloten: ' || TO_CHAR (v_count_tot), '');
|
||||||
COMMIT;
|
COMMIT;
|
||||||
|
*/
|
||||||
EXCEPTION
|
EXCEPTION
|
||||||
WHEN OTHERS
|
WHEN OTHERS
|
||||||
THEN
|
THEN
|
||||||
@@ -1029,6 +1030,175 @@ AS
|
|||||||
AND aog.alg_locatie_key = l.alg_locatie_key
|
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 ------
|
------ payload end ------
|
||||||
|
|
||||||
SET DEFINE OFF
|
SET DEFINE OFF
|
||||||
|
|||||||
Reference in New Issue
Block a user