MARX#59862: Tobias 365 - Mareon
svn path=/Mareon/trunk/; revision=45192
This commit is contained in:
@@ -29,7 +29,8 @@ CREATE TABLE mar_imp_action_key
|
||||
(
|
||||
fac_import_key NUMBER(10),
|
||||
action_code VARCHAR2(255),
|
||||
ref_key NUMBER(10)
|
||||
ref_key NUMBER(10),
|
||||
extra_omschr VARCHAR2(4000)
|
||||
);
|
||||
|
||||
INSERT INTO fac_import_app (fac_import_app_code, fac_import_app_oms, fac_import_app_xsl, fac_functie_key, fac_import_app_charset, fac_import_app_prefix)
|
||||
@@ -43,6 +44,11 @@ FROM fac_import_app
|
||||
WHERE fac_import_app_code = 'ACTION_REF_KEY';
|
||||
|
||||
|
||||
-- MARX#59862: Tobias 365 - Mareon
|
||||
-- Nieuwe soort notificatie in geval van factuurfout...
|
||||
INSERT INTO fac_srtnotificatie (fac_srtnotificatie_code, fac_srtnotificatie_mode, fac_srtnotificatie_oms, fac_srtnotificatie_xmlnode, fac_srtnotificatie_url, fac_srtnotificatie_groep)
|
||||
VALUES ('CUST04',2, 'Factuur is niet goed bij opdrachtgever verwerkt', 'factuur', 'fin/fin_factuur.asp?fin_key=', 0);
|
||||
---
|
||||
|
||||
|
||||
|
||||
|
||||
222
sql/mareon.sql
222
sql/mareon.sql
@@ -2387,7 +2387,8 @@ IS
|
||||
|
||||
-- De importvelden:
|
||||
v_action_code VARCHAR2 (256);
|
||||
v_ref_key VARCHAR2 (256);
|
||||
v_ref_key VARCHAR2 (256);
|
||||
v_extra_omschr VARCHAR2 (4000);
|
||||
|
||||
|
||||
CURSOR c1
|
||||
@@ -2415,8 +2416,12 @@ BEGIN
|
||||
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 1, v_action_code);
|
||||
-- 02 - MLD_OPDR_KEY
|
||||
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 2, v_ref_key);
|
||||
-- 03 - EXTRA OMSCHRIJVING
|
||||
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 3, v_extra_omschr);
|
||||
|
||||
v_action_code := TRIM (v_action_code);
|
||||
v_ref_key := TRIM (v_ref_key);
|
||||
v_extra_omschr := TRIM(v_extra_omschr);
|
||||
|
||||
--
|
||||
v_aanduiding :=
|
||||
@@ -2439,8 +2444,8 @@ BEGIN
|
||||
--
|
||||
v_errorhint := 'Ongeldige ACTION_CODE (max. 255 tekens) of MLD_OPDR_KEY, moet positieve integer zijn';
|
||||
|
||||
INSERT INTO mar_imp_action_key (fac_import_key, action_code, ref_key)
|
||||
VALUES(p_import_key, v_action_code, v_ref_key);
|
||||
INSERT INTO mar_imp_action_key (fac_import_key, action_code, ref_key, extra_omschr)
|
||||
VALUES(p_import_key, v_action_code, v_ref_key, v_extra_omschr);
|
||||
END IF;
|
||||
END;
|
||||
END LOOP;
|
||||
@@ -2500,6 +2505,7 @@ IS
|
||||
v_result VARCHAR2(1024);
|
||||
v_action_code VARCHAR2 (256);
|
||||
v_ref_key NUMBER(10);
|
||||
v_extra_omschr VARCHAR2 (4000);
|
||||
|
||||
v_prs_perslid_key NUMBER(10);
|
||||
|
||||
@@ -2523,6 +2529,7 @@ BEGIN
|
||||
v_count_tot := v_count_tot + 1;
|
||||
v_action_code := rec_ax.action_code;
|
||||
v_ref_key := rec_ax.ref_key;
|
||||
v_extra_omschr := rec_ax.extra_omschr;
|
||||
|
||||
v_errorhint := 'Error in mar_update_action_ref_key, import-key: ' || p_import_key || '[' || 'Action:' || v_action_code || ' - Ref-key:' || v_ref_key || '] ';
|
||||
|
||||
@@ -2535,8 +2542,10 @@ BEGIN
|
||||
|
||||
IF (v_action_code IS NOT NULL AND v_ref_key IS NOT NULL)
|
||||
THEN
|
||||
CASE
|
||||
CASE
|
||||
WHEN UPPER(v_action_code) = 'OPDR_POST_BIJLAGE' THEN v_result := mar_post_action_bijlages (v_ref_key, v_prs_perslid_key);
|
||||
WHEN UPPER(v_action_code) = 'FIN_FACTUUR_POST_SUCCESS' THEN v_result := mar_post_factuur_verwerking (v_prs_perslid_key, v_ref_key, 1, '');
|
||||
WHEN UPPER(v_action_code) = 'FIN_FACTUUR_POST_FAIL' THEN v_result := mar_post_factuur_verwerking (v_prs_perslid_key, v_ref_key, 0, v_extra_omschr);
|
||||
ELSE v_result := 'Onbekende action_code';
|
||||
END CASE;
|
||||
END IF;
|
||||
@@ -7257,13 +7266,21 @@ SELECT DISTINCT
|
||||
AND f.prs_kostensoort_key = ks.prs_kostensoort_key(+)
|
||||
AND fr.prs_kostensoort_key = ks_regel.prs_kostensoort_key(+)
|
||||
AND t.fac_tracking_refkey = f.fin_factuur_key
|
||||
AND t.fac_tracking_key > (SELECT sync_trackkey_lasttime FROM mar_v_sync_ax s WHERE s.prs_perslid_key = woco.prs_perslid_key)
|
||||
AND t.fac_tracking_key <= (SELECT sync_trackkey_now FROM mar_v_sync_ax s WHERE s.prs_perslid_key = woco.prs_perslid_key)
|
||||
AND (
|
||||
(
|
||||
(t.fac_tracking_key > (SELECT sync_trackkey_lasttime FROM mar_v_sync_ax s WHERE s.prs_perslid_key = woco.prs_perslid_key))
|
||||
AND
|
||||
(t.fac_tracking_key <= (SELECT sync_trackkey_now FROM mar_v_sync_ax s WHERE s.prs_perslid_key = woco.prs_perslid_key))
|
||||
)
|
||||
OR
|
||||
(sn.fac_srtnotificatie_code = 'CUST04')
|
||||
)
|
||||
AND sn.fac_srtnotificatie_key = t.fac_srtnotificatie_key
|
||||
AND sn.fac_srtnotificatie_xmlnode = 'factuur'
|
||||
AND versturen_okee.fin_factuur_key = f.fin_factuur_key
|
||||
AND versturen_okee.fin_kenmerk_key = 9
|
||||
AND versturen_okee.fin_kenmerkfactuur_waarde = 1;
|
||||
AND versturen_okee.fin_kenmerkfactuur_waarde = 1
|
||||
AND fin_factuur_statuses_key IN (2,6);
|
||||
|
||||
CREATE OR REPLACE VIEW mar_v_cnt_factuur_ax (
|
||||
prs_perslid_key,
|
||||
@@ -7456,13 +7473,21 @@ AS
|
||||
AND f.prs_kostensoort_key = ks.prs_kostensoort_key(+)
|
||||
AND fr.prs_kostensoort_key = ks_regel.prs_kostensoort_key(+)
|
||||
AND t.fac_tracking_refkey = f.fin_factuur_key
|
||||
AND t.fac_tracking_key > (SELECT sync_trackkey_lasttime FROM mar_v_sync_ax s WHERE s.prs_perslid_key = COALESCE(woco3.prs_perslid_key, woco2.prs_perslid_key))
|
||||
AND t.fac_tracking_key <= (SELECT sync_trackkey_now FROM mar_v_sync_ax s WHERE s.prs_perslid_key = COALESCE(woco3.prs_perslid_key, woco2.prs_perslid_key))
|
||||
AND (
|
||||
(
|
||||
(t.fac_tracking_key > (SELECT sync_trackkey_lasttime FROM mar_v_sync_ax s WHERE s.prs_perslid_key = COALESCE(woco3.prs_perslid_key, woco2.prs_perslid_key)))
|
||||
AND
|
||||
(t.fac_tracking_key <= (SELECT sync_trackkey_now FROM mar_v_sync_ax s WHERE s.prs_perslid_key = COALESCE(woco3.prs_perslid_key, woco2.prs_perslid_key)))
|
||||
)
|
||||
OR
|
||||
(sn.fac_srtnotificatie_code = 'CUST04')
|
||||
)
|
||||
AND sn.fac_srtnotificatie_key = t.fac_srtnotificatie_key
|
||||
AND sn.fac_srtnotificatie_xmlnode = 'factuur'
|
||||
AND versturen_okee.fin_factuur_key = f.fin_factuur_key
|
||||
AND versturen_okee.fin_kenmerk_key = 9
|
||||
AND versturen_okee.fin_kenmerkfactuur_waarde = 1;
|
||||
AND versturen_okee.fin_kenmerkfactuur_waarde = 1
|
||||
AND fin_factuur_statuses_key IN (2,6);
|
||||
|
||||
CREATE OR REPLACE VIEW mar_v_bes_factuur_ax (
|
||||
prs_perslid_key,
|
||||
@@ -7656,13 +7681,21 @@ SELECT DISTINCT
|
||||
AND f.prs_kostensoort_key = ks.prs_kostensoort_key(+)
|
||||
AND fr.prs_kostensoort_key = ks_regel.prs_kostensoort_key(+)
|
||||
AND t.fac_tracking_refkey = f.fin_factuur_key
|
||||
AND t.fac_tracking_key > (SELECT sync_trackkey_lasttime FROM mar_v_sync_ax s WHERE s.prs_perslid_key = COALESCE(woco.prs_perslid_key,woco2.prs_perslid_key))
|
||||
AND t.fac_tracking_key <= (SELECT sync_trackkey_now FROM mar_v_sync_ax s WHERE s.prs_perslid_key = COALESCE(woco.prs_perslid_key,woco2.prs_perslid_key))
|
||||
AND (
|
||||
(
|
||||
(t.fac_tracking_key > (SELECT sync_trackkey_lasttime FROM mar_v_sync_ax s WHERE s.prs_perslid_key = COALESCE(woco.prs_perslid_key,woco2.prs_perslid_key)))
|
||||
AND
|
||||
(t.fac_tracking_key <= (SELECT sync_trackkey_now FROM mar_v_sync_ax s WHERE s.prs_perslid_key = COALESCE(woco.prs_perslid_key,woco2.prs_perslid_key)))
|
||||
)
|
||||
OR
|
||||
(sn.fac_srtnotificatie_code = 'CUST04')
|
||||
)
|
||||
AND sn.fac_srtnotificatie_key = t.fac_srtnotificatie_key
|
||||
AND sn.fac_srtnotificatie_xmlnode = 'factuur'
|
||||
AND versturen_okee.fin_factuur_key = f.fin_factuur_key
|
||||
AND versturen_okee.fin_kenmerk_key = 9
|
||||
AND versturen_okee.fin_kenmerkfactuur_waarde = 1;
|
||||
AND versturen_okee.fin_kenmerkfactuur_waarde = 1
|
||||
AND fin_factuur_statuses_key IN (2,6);
|
||||
|
||||
CREATE OR REPLACE VIEW mar_v_factuur_ax
|
||||
AS
|
||||
@@ -7680,16 +7713,9 @@ SELECT * from mar_v_bes_factuur_ax;
|
||||
-- Als extra (niet standaard) optie, dus voor uitzonderingsgevallen waarin je wilt dat fout geimporteerde facturen toch AX in gaan), is het mogelijk
|
||||
-- om de facturen met fin_factuur_statuses_key = 3 ook te exporteren (standaard status 2 en 6)
|
||||
|
||||
-- MARX#40934: Performance verbetering MARX
|
||||
CREATE OR REPLACE VIEW mar_v_factuur_ax_export
|
||||
AS
|
||||
SELECT * from mar_v_factuur_ax
|
||||
WHERE fin_factuur_statuses_key IN (2,6);
|
||||
--(SELECT fac.safe_to_number(fac_usrdata_omschr)
|
||||
--FROM fac_usrdata ud
|
||||
--WHERE ud.fac_usrtab_key = 1
|
||||
--AND ud.fac_usrdata_code like '$FIN_FACTUUR_STATUSES_KEY%'
|
||||
--AND ud.fac_usrdata_verwijder IS NULL);
|
||||
SELECT * from mar_v_factuur_ax;
|
||||
|
||||
CREATE OR REPLACE VIEW mar_v_factuur_tobias_export
|
||||
AS
|
||||
@@ -7701,6 +7727,75 @@ SELECT * from mar_v_factuur_ax
|
||||
WHERE fin_factuur_statuses_key = 6;
|
||||
|
||||
|
||||
-- MARX#59862: Tobias 365 - Mareon
|
||||
-- Nieuwe functie omdat deze code vanuit verschillende plekken aangeroepen kan worden....
|
||||
-- mbmb
|
||||
CREATE OR REPLACE FUNCTION mar_post_factuur_verwerking (p_perslid_key IN NUMBER, p_fin_factuur_key IN NUMBER, p_fin_factuur_succes_verwerkt IN NUMBER, p_extra_omschr IN VARCHAR2)
|
||||
RETURN VARCHAR2
|
||||
IS
|
||||
v_result VARCHAR2(1000);
|
||||
v_prs_woco_close_opdracht NUMBER(10);
|
||||
v_mld_opdr_key NUMBER(10);
|
||||
|
||||
l_omschr VARCHAR2(4000);
|
||||
BEGIN
|
||||
BEGIN
|
||||
v_result := NULL;
|
||||
IF (p_fin_factuur_succes_verwerkt = 1)
|
||||
THEN
|
||||
-- Factuur is door ERP opdrachtgever goed verwerkt
|
||||
v_result := 'UPDATE factuur met status 7 is mislukt';
|
||||
UPDATE fin_factuur
|
||||
SET fin_factuur_statuses_key = 7
|
||||
WHERE fin_factuur_key = p_fin_factuur_key;
|
||||
|
||||
v_result := 'INSERT into tracking FINVER mislukt';
|
||||
|
||||
fac.trackaction ('#FINVER', p_fin_factuur_key, p_perslid_key, NULL, 'Factuur is verwerkt');
|
||||
|
||||
v_result := 'SELECT v_prs_woco_close_opdracht mislukt';
|
||||
|
||||
SELECT COALESCE(MAX((SELECT prs_bedrijf_close_opdracht FROM mar_v_bedrijf_kenmerken bc WHERE bc.prs_bedrijf_key = woco.prs_bedrijf_key)), 0), MAX(o.mld_opdr_key)
|
||||
INTO v_prs_woco_close_opdracht, v_mld_opdr_key
|
||||
FROM fin_factuur f, mld_opdr o, mld_melding m, mar_v_woco_perslid woco
|
||||
WHERE f.fin_factuur_key = p_fin_factuur_key
|
||||
AND f.mld_opdr_key = o.mld_opdr_key
|
||||
AND o.mld_melding_key = m.mld_melding_key
|
||||
AND m.prs_perslid_key = woco.prs_perslid_key;
|
||||
|
||||
|
||||
IF v_prs_woco_close_opdracht = 1
|
||||
THEN
|
||||
IF v_mld_opdr_key IS NOT NULL
|
||||
THEN
|
||||
-- Eerst afmelden, daarna op verwerkt.
|
||||
-- Als die al afgemeld was, dan is deze call een dummy call en gebeurt verder niets.
|
||||
v_result := 'mld setopdrachtstatus met 6 mislukt';
|
||||
mld.setopdrachtstatus (v_mld_opdr_key, 6, p_perslid_key);
|
||||
-- Als die al verwerkt was, dan is deze call een dummy call en gebeurt verder niets.
|
||||
v_result := 'mld setopdrachtstatus met 7 mislukt';
|
||||
mld.setopdrachtstatus (v_mld_opdr_key, 7, p_perslid_key);
|
||||
END IF;
|
||||
END IF;
|
||||
ELSE
|
||||
-- Factuur is door ERP opdrachtgever NIET (goed) verwerkt
|
||||
IF fac.gettrackingdate('CUST04', p_fin_factuur_key) IS NULL
|
||||
THEN
|
||||
-- Alleen eenmalig een CUST04 toevoegen is voldoende, we willen de tracking niet onnodig volbouwen)
|
||||
l_omschr := SUBSTR('Factuur kan NIET verwerkt worden: ' || p_extra_omschr, 1, 2048);
|
||||
fac.trackaction ('#CUST04', p_fin_factuur_key, p_perslid_key, NULL, l_omschr);
|
||||
END IF;
|
||||
END IF;
|
||||
COMMIT;
|
||||
RETURN NULL;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
RETURN v_result;
|
||||
END;
|
||||
END;
|
||||
/
|
||||
|
||||
-- Algemeen: sync status...
|
||||
CREATE OR REPLACE PROCEDURE mar_import_ax_sync (
|
||||
p_import_key IN NUMBER
|
||||
@@ -7876,6 +7971,11 @@ BEGIN
|
||||
IF (v_count_tot = 0)
|
||||
THEN
|
||||
v_count_tot := v_count_tot + 1;
|
||||
-- MARX#59862: Tobias 365 - Mareon: Bij Tobias AX365 wordt sync-mode = 2 gestuurd (AX365)
|
||||
-- v_ax_sync_mode heeft de volgende mogelijke waarden:
|
||||
-- 0 = start van de sync
|
||||
-- 1 = einde van de sync (AX2009/2012/REMS/Facilitor)
|
||||
-- 2 = einde van de sync (AX365)
|
||||
v_ax_sync_mode := rec_ax.sync_mode;
|
||||
IF (v_ax_sync_mode IS NOT NULL)
|
||||
THEN
|
||||
@@ -7903,60 +8003,44 @@ BEGIN
|
||||
AND fac_usrdata_verwijder IS NULL;
|
||||
|
||||
END IF;
|
||||
|
||||
-- EINDE SYNC
|
||||
IF (v_ax_sync_mode = '1')
|
||||
THEN
|
||||
-- Einde sync
|
||||
|
||||
-- MARX#59862: Tobias 365 - Mareon: Bij Tobias AX365 wordt sync-mode = 2 gestuurd (AX365)
|
||||
-- voor de ERP's (AX2009/2012/REMS/Facilitor) die sync-mode met 1 aanroepen, worden alle facturen conform cursor c_exporteerde_facturen onvoorwaardelijk op verwerkt gezet....
|
||||
-- voor de ERP's (AX365) die sync mode met 2 aanroepen, wordt deze stap niet hier gedaan, maar in de Mareon sync zelf geregeld, omdat dit afhankelijk is gemaakt van de response uit AX365.
|
||||
|
||||
-- In cursor c_exporteerde_facturen zitten ook eventueel de records van andere woco's...
|
||||
FOR rec_fac IN c_exporteerde_facturen(v_prs_perslid_key)
|
||||
LOOP
|
||||
BEGIN
|
||||
|
||||
v_errorhint := 'UPDATE factuur met status 7 mislukt';
|
||||
UPDATE fin_factuur
|
||||
SET fin_factuur_statuses_key = 7
|
||||
WHERE fin_factuur_key = rec_fac.fin_factuur_key;
|
||||
|
||||
v_errorhint := 'INSERT into tracking FINVER mislukt';
|
||||
-- Verplaatsen van INSERT hierboven die in 1x een insert van alle regels doet, ivm table MARX.FAC_TRACKING is mutating, trigger/function may not see it
|
||||
INSERT INTO fac_tracking (fac_tracking_refkey, fac_srtnotificatie_key, prs_perslid_key)
|
||||
SELECT rec_fac.fin_factuur_key, (SELECT fac_srtnotificatie_key FROM fac_srtnotificatie WHERE fac_srtnotificatie_code = 'FINVER'), v_prs_perslid_key
|
||||
FROM dual;
|
||||
|
||||
IF rec_fac.prs_woco_close_opdracht = 1
|
||||
THEN
|
||||
IF rec_fac.mld_opdr_key IS NOT NULL
|
||||
THEN
|
||||
-- Eerst afmelden, daarna op verwerkt.
|
||||
-- Als die al afgemeld was, dan is deze call een dummy call en gebeurt verder niets.
|
||||
v_errorhint := 'mld setopdrachtstatus met 6 mislukt';
|
||||
mld.setopdrachtstatus (rec_fac.mld_opdr_key, 6, v_prs_perslid_key);
|
||||
-- Als die al verwerkt was, dan is deze call een dummy call en gebeurt verder niets.
|
||||
v_errorhint := 'mld setopdrachtstatus met 7 mislukt';
|
||||
mld.setopdrachtstatus (rec_fac.mld_opdr_key, 7, v_prs_perslid_key);
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
oracle_err_num := SQLCODE;
|
||||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||||
v_errormsg :=
|
||||
'OTHERS (error '
|
||||
|| oracle_err_num
|
||||
|| '/'
|
||||
|| oracle_err_mes
|
||||
|| ')';
|
||||
fac.imp_writelog (p_import_key,
|
||||
'E',
|
||||
v_aanduiding || v_errormsg,
|
||||
v_errorhint
|
||||
);
|
||||
COMMIT;
|
||||
END;
|
||||
END LOOP;
|
||||
|
||||
v_errorhint := mar_post_factuur_verwerking (v_prs_perslid_key, rec_fac.fin_factuur_key, 1, '');
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
oracle_err_num := SQLCODE;
|
||||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||||
v_errormsg :=
|
||||
'OTHERS (error '
|
||||
|| oracle_err_num
|
||||
|| '/'
|
||||
|| oracle_err_mes
|
||||
|| ')';
|
||||
fac.imp_writelog (p_import_key,
|
||||
'E',
|
||||
v_aanduiding || v_errormsg,
|
||||
v_errorhint
|
||||
);
|
||||
COMMIT;
|
||||
END;
|
||||
END LOOP;
|
||||
END IF;
|
||||
-- MARX#59862: Tobias 365 - Mareon: Bij Tobias AX365 wordt sync-mode = 2 gestuurd (AX365).
|
||||
-- Voor alle ERP's (mode =1 of mode = 2) moet onderstaande volgen...
|
||||
IF ((v_ax_sync_mode = '1') OR (v_ax_sync_mode = '2'))
|
||||
THEN
|
||||
v_errorhint := 'SYNC DATE LASTTIME mislukt';
|
||||
UPDATE fac_usrdata ud1
|
||||
SET ud1.fac_usrdata_omschr = (SELECT to_char(sync_date_now,'DD-MM-YYYY HH24:MI:SS') FROM mar_v_sync_ax s WHERE s.prs_perslid_key = v_prs_perslid_key)
|
||||
@@ -12292,7 +12376,7 @@ AND l_prs_bedrijf_key = flex2.prs_bedrijf_key;
|
||||
|
||||
-----------------------------------------------
|
||||
|
||||
BEGIN fac.registercustversion('MARX', 16); END;
|
||||
BEGIN fac.registercustversion('MARX', 17); END;
|
||||
/
|
||||
|
||||
------ payload end ------
|
||||
|
||||
Reference in New Issue
Block a user