MARX#88858 De GLN van de VvE vertalen/ombuigen naar opdracht voor de VvE beheerder
svn path=/Mareon/trunk/; revision=68901
This commit is contained in:
56
sql/Onces/marx26a.sql
Normal file
56
sql/Onces/marx26a.sql
Normal file
@@ -0,0 +1,56 @@
|
||||
--
|
||||
-- $Id$
|
||||
--
|
||||
-- Korte beschrijving wat het script doet
|
||||
-- Voor dbuser invullen: - indien script voor 1 klant is: 'MARX' (de klantcode, zoals vermeld in fac_version_cust)
|
||||
-- - script is voor meerdere klanten: 'AAXX' (de groepcode, zoals vermeld in fac_version_group)
|
||||
-- - script is voor meerdere klanten met naam volgens een bepaald patroon: '^AA|^ASMS|^GULU|^NMMS|^RABO|^ZKHM'
|
||||
--
|
||||
DEFINE thisfile = 'MARX26A.SQL'
|
||||
DEFINE dbuser = '^MARX'
|
||||
|
||||
SET ECHO ON
|
||||
SET DEFINE ON
|
||||
COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT;
|
||||
COLUMN fcltcusterr NEW_VALUE fcltcusterr NOPRINT;
|
||||
WHENEVER SQLERROR CONTINUE;
|
||||
SELECT adm.getscriptspoolfile('&thisfile') AS fcltlogfile FROM DUAL;
|
||||
SPOOL &fcltlogfile
|
||||
WHENEVER SQLERROR EXIT;
|
||||
SELECT adm.checkscriptcust('&dbuser') AS fcltcusterr FROM DUAL;
|
||||
WHENEVER SQLERROR CONTINUE;
|
||||
PROMPT &fcltcusterr
|
||||
SET DEFINE OFF
|
||||
|
||||
------ payload begin ------
|
||||
|
||||
-- Start MARX#86957 Nieuwe mogelijkheid voor dispatching Vesteda-opdrachten naar JH-vestigingen
|
||||
|
||||
-- Vertaling van postcode-gebied (bereik van - t/m) naar GLN zodat Mareon de dispatching naar juiste vestiging van leverancier verzorgt.
|
||||
-- Voorbeeld:
|
||||
-- GLN leverancier suppliercode
|
||||
-- 1234567890123 arlanda
|
||||
-- 1234567890999 arlanda
|
||||
-- etc
|
||||
-- Zodat een GLN van de VvE wordt vertaald naar de VvE beheerder (d.w.z. naar de leverancierscode van die VvE beheerder, b.v. code 'arlanda').
|
||||
-- En waarbij de GLN van leverancier (VvE) in kenmerk(key 26) "GLN VvE" wordt geregistreerd.
|
||||
|
||||
-- Speciale notatie
|
||||
-- GLN leverancier suppliercode
|
||||
-- * arlanda --> betekent elke GLN die niet gevonden kan worden bij deze opdrachtgever, wordt vertaald naar leverancier 'arlanda'.
|
||||
|
||||
|
||||
INSERT INTO fac_usrtab (fac_usrtab_key, fac_usrtab_naam, fac_usrtab_omschrijving)
|
||||
VALUES(13,'VvE-GLN','Vertaling VvE - VvEbeheerder');
|
||||
|
||||
------ payload end ------
|
||||
|
||||
SET DEFINE OFF
|
||||
BEGIN adm.systrackscriptId ('$Id$', 1); END;
|
||||
/
|
||||
|
||||
COMMIT;
|
||||
SET ECHO OFF
|
||||
SPOOL OFF
|
||||
SET DEFINE ON
|
||||
PROMPT Logfile of this upgrade is: &fcltlogfile
|
||||
110
sql/mareon.sql
110
sql/mareon.sql
@@ -2493,6 +2493,47 @@ SET DEFINE OFF
|
||||
END;
|
||||
/
|
||||
|
||||
-- MARX#88858 Bij de opdrachtgever (met prs_bedrijfskey en API-usr prs_perslid_key) de GLN van de VvE vertalen/ombuigen naar opdracht voor de VvE beheerder
|
||||
CREATE OR REPLACE VIEW marx_v_vertaal_vve_2_beheerder
|
||||
(prs_perslid_key, GLN_VvE, GLN_Beheerder, prs_bedrijf_key)
|
||||
AS
|
||||
SELECT wp.prs_perslid_key, SUBSTR(fac_usrdata_upper, INSTR(fac_usrdata_upper,'|')+1), fac_usrdata_omschr, fac.safe_to_number(SUBSTR(fac_usrdata_upper, 1, INSTR(fac_usrdata_upper,'|') -1))
|
||||
FROM fac_usrdata, mar_v_woco_perslid wp
|
||||
WHERE fac_usrtab_key = 13
|
||||
AND SUBSTR(fac_usrdata_upper, 1, INSTR(fac_usrdata_upper,'|')-1) = wp.prs_bedrijf_key
|
||||
AND wp.prs_perslid_apikey IS NOT NULL
|
||||
AND fac_usrdata_verwijder IS NULL;
|
||||
|
||||
CREATE OR REPLACE FUNCTION marx_do_vertaal_vve2beheerder (v_prs_perslid_key IN NUMBER, v_gln_vve IN VARCHAR2)
|
||||
RETURN VARCHAR2
|
||||
AS
|
||||
v_gln_beheerder VARCHAR2(1000);
|
||||
BEGIN
|
||||
SELECT MAX(gln_beheerder)
|
||||
INTO v_gln_beheerder
|
||||
FROM marx_v_vertaal_vve_2_beheerder
|
||||
WHERE prs_perslid_key = v_prs_perslid_key
|
||||
AND gln_vve = UPPER(v_gln_vve);
|
||||
|
||||
IF v_gln_beheerder IS NULL
|
||||
THEN
|
||||
-- Vertaal regel is niet gevonden, we gaan nu nog checken obv wildchard '*', dus niet op exacte match.
|
||||
-- En dan naar de vertaalregel die dichts in de buurt zit bij v_gln_vve (iets met grootste stringlengte)
|
||||
SELECT MAX(gln_beheerder)
|
||||
INTO v_gln_beheerder
|
||||
FROM marx_v_vertaal_vve_2_beheerder
|
||||
WHERE prs_perslid_key = v_prs_perslid_key
|
||||
AND UPPER(v_gln_vve) like REPLACE(gln_vve,'*','%')
|
||||
AND LENGTH(gln_vve) = ( SELECT MAX(LENGTH(gln_vve))
|
||||
FROM marx_v_vertaal_vve_2_beheerder
|
||||
WHERE prs_perslid_key = v_prs_perslid_key
|
||||
AND UPPER(v_gln_vve) like REPLACE(gln_vve,'*','%')
|
||||
);
|
||||
END IF;
|
||||
|
||||
RETURN v_gln_beheerder;
|
||||
END;
|
||||
/
|
||||
|
||||
|
||||
-- MARX#66907: Opdrachten overzichtsscherm: kolom locatiegegevens compact en volgorde fixed
|
||||
@@ -6100,6 +6141,10 @@ SET DEFINE OFF
|
||||
v_mld_opdr_updates_allowed NUMBER (10);
|
||||
|
||||
v_ax_company_id prs_bedrijf.prs_overeenkomst_nr%TYPE;
|
||||
v_ax_leverancier_id VARCHAR2(100);
|
||||
v_vertaalde_leverancier_id VARCHAR2(100);
|
||||
l_mld_opdr_gln_vve VARCHAR2(100);
|
||||
|
||||
v_mld_opdr_bedrijfopdr_volgnr NUMBER (10);
|
||||
v_flexsummary mld_opdr.mld_opdr_omschrijving%TYPE;
|
||||
v_mld_opdr_kosten mld_opdr.mld_opdr_kosten%TYPE;
|
||||
@@ -6401,7 +6446,11 @@ SET DEFINE OFF
|
||||
|| '] ',
|
||||
1,
|
||||
1000);
|
||||
|
||||
|
||||
-- We leggen het leveranciersnummer even vast in een variabele, en gaan met deze variabele verder (agv MARX#88858 - De GLN van de VvE vertalen/ombuigen naar opdracht voor de VvE beheerder)
|
||||
v_ax_leverancier_id := rec_ax.ax_supplier_id;
|
||||
l_mld_opdr_gln_vve := NULL;
|
||||
|
||||
-- Eerst checken of opdracht met externe opdrachtnummer al bestaat (bij deze of een andere melding), want dan niet aanmaken en (vooralsnog) ook niet updaten.
|
||||
-- MARX#56368: Aanmaak opdracht en direct annuleer opdracht moet leiden tot geen opdracht: En indien direct geannuleerd (ec_ax.ax_supplier_id = 1) dan wordt de opdracht niet gevonden, en zal v_mld_opdr_key NULL opleveren.
|
||||
-- MARX#58610: Mareon AVG Proof: een (nieuwe) opdracht op een bestaande melding die in archief (status 6) staat, moet via een nieuwe melding lopen (en kan niet op gearchiveerde melding)
|
||||
@@ -6449,7 +6498,7 @@ SET DEFINE OFF
|
||||
END IF;
|
||||
|
||||
-- MARX#56368: Aanmaak opdracht en direct annuleer opdracht moet leiden tot geen opdracht: indien direct geannuleerd (ec_ax.ax_supplier_id = 1) dan geen melding aanmaken (als die er nog niet was).
|
||||
IF (v_mld_melding_key IS NULL) AND (rec_ax.ax_supplier_id <> '-1')
|
||||
IF (v_mld_melding_key IS NULL) AND (v_ax_leverancier_id <> '-1')
|
||||
THEN
|
||||
-- Melding is nieuw, dus inserten...
|
||||
|
||||
@@ -6520,7 +6569,7 @@ SET DEFINE OFF
|
||||
-- Eerst de juiste leverancier obv ax_supplier_id bepalen, rekening houdende met de WOCO die opdracht plaatst.
|
||||
v_errorhint :=
|
||||
'Leverancier '
|
||||
|| UPPER (rec_ax.ax_supplier_id)
|
||||
|| UPPER (v_ax_leverancier_id)
|
||||
|| ' bij opdrachtgever met company_id ['
|
||||
|| v_ax_company_id
|
||||
|| '] niet gevonden, er is geen opdracht aangemaakt';
|
||||
@@ -6529,21 +6578,42 @@ SET DEFINE OFF
|
||||
SELECT MAX (l_prs_bedrijf_key)
|
||||
INTO v_lev_prs_bedrijf_key
|
||||
FROM mar_v_woco_x_lev
|
||||
WHERE w_prs_perslid_key = v_prs_perslid_key AND UPPER (l_ax_supplier_id) = UPPER (rec_ax.ax_supplier_id);
|
||||
WHERE w_prs_perslid_key = v_prs_perslid_key AND UPPER (l_ax_supplier_id) = UPPER (v_ax_leverancier_id);
|
||||
|
||||
-- MARX#56368: Aanmaak opdracht en direct annuleer opdracht moet leiden tot geen opdracht: En indien direct geannuleerd (rec_ax.ax_supplier_id = -1) dan zal v_lev_prs_bedrijf_key NULL opleveren.
|
||||
-- MARX#56368: Aanmaak opdracht en direct annuleer opdracht moet leiden tot geen opdracht: En indien direct geannuleerd (v_ax_leverancier_id = -1) dan zal v_lev_prs_bedrijf_key NULL opleveren.
|
||||
|
||||
-- MARX#70877 Bij T365-opdracht voor onbekende leverancier in Mareon graag reden retour, onbekende leverancier is geval als:
|
||||
-- 1. we moeten -1 uitsluiten hier (betekent ANN)
|
||||
-- 2. en als v_lev_prs_bedrijf_key IS NULL
|
||||
IF (rec_ax.ax_supplier_id <> '-1' AND v_lev_prs_bedrijf_key IS NULL)
|
||||
IF (v_ax_leverancier_id <> '-1' AND v_lev_prs_bedrijf_key IS NULL)
|
||||
THEN
|
||||
-- Hier is een goed gevulde leverancier-id (b.v. met waarde 1234) onbekend icm de woco, nu gaan we actief een logging toevoegen (W of E)
|
||||
fac.imp_writelog (
|
||||
p_import_key,
|
||||
v_push_err_warn,
|
||||
v_aanduiding || ':' || v_errorhint,
|
||||
'Opdracht wordt niet aangemaakt/bijgewerkt');
|
||||
-- Lev-id is niet gevonden / niet geregistreerd in prs_bedrijf_bedrijf: MARX#88858 De GLN van de VvE vertalen/ombuigen naar opdracht voor de VvE beheerder?
|
||||
-- Mss dat deze in de vertaaltabel (usrtab key 13) staat, dan gaan we die vertalen...
|
||||
v_vertaalde_leverancier_id := marx_do_vertaal_vve2beheerder (v_prs_perslid_key, v_ax_leverancier_id);
|
||||
SELECT MAX (l_prs_bedrijf_key)
|
||||
INTO v_lev_prs_bedrijf_key
|
||||
FROM mar_v_woco_x_lev
|
||||
WHERE w_prs_perslid_key = v_prs_perslid_key AND UPPER (l_ax_supplier_id) = UPPER (v_vertaalde_leverancier_id);
|
||||
|
||||
IF (v_ax_leverancier_id <> '-1' AND v_lev_prs_bedrijf_key IS NULL)
|
||||
THEN
|
||||
-- Hier is een goed gevulde leverancier-id (b.v. met waarde 1234) onbekend icm de woco, dwz niet gevonden in de prs_bedrijf_bedrijf tabel, nu gaan we actief een logging toevoegen (W of E): Leverancier niet bekend!
|
||||
fac.imp_writelog (
|
||||
p_import_key,
|
||||
v_push_err_warn,
|
||||
v_aanduiding || ':' || v_errorhint,
|
||||
'Opdracht wordt niet aangemaakt/bijgewerkt');
|
||||
ELSE
|
||||
-- Vertaling van VvE naar VvE beheerder is succesvol, we moeten dan nog wel het GLN van de VvE registeren om niet verloren te gaan, d.w.z. als supplier gebruiken in de DICO/SALES005 koppeling.
|
||||
IF LENGTH (v_ax_leverancier_id) = 13 AND TRIM (TRANSLATE (v_ax_leverancier_id, '0123456789', ' ')) IS NULL
|
||||
THEN
|
||||
-- Het is een GLN bestaande uit 13 cijfers, in dat geval registeren als opdrachtkenmerk (met key c_kenmerkopdr_key_opdr_gln_vve / 29)
|
||||
-- Dat verloopt dan hieronder, met MARX#59976: zie verderop hieronder in geval van Tobias... kan nl. nog niet hier, omdat opdr_key nog niet bekend is hiero.
|
||||
-- We gaan wel vlaggetje meegeven (door zetten van var l_mld_opdr_gln_vve) dat opdrachtkenmerk (key 29) moet worden gezet hieronder (zodat dit bekend is straks)...
|
||||
l_mld_opdr_gln_vve := v_ax_leverancier_id;
|
||||
END IF;
|
||||
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
IF (v_mld_opdr_key IS NULL) AND (v_lev_prs_bedrijf_key IS NOT NULL)
|
||||
@@ -6630,10 +6700,16 @@ SET DEFINE OFF
|
||||
mld.upsertopdrachtkenmerk (c_kenmerkopdr_key_PO_companyID,
|
||||
v_mld_opdr_key,
|
||||
rec_ax.mld_opdr_purchordercompanyid);
|
||||
|
||||
-- MARX#59976: Koppeling Twinq: “Onderhoudsopdrachten vanuit Tobias via Mareon voor de VvE
|
||||
mld.upsertopdrachtkenmerk (c_kenmerkopdr_key_opdr_gln_vve, v_mld_opdr_key, rec_ax.mld_opdr_gln_vve);
|
||||
|
||||
|
||||
IF l_mld_opdr_gln_vve IS NOT NULL
|
||||
THEN
|
||||
-- MARX#88858 De GLN van de VvE vertalen/ombuigen naar opdracht voor de VvE beheerder
|
||||
mld.upsertopdrachtkenmerk (c_kenmerkopdr_key_opdr_gln_vve, v_mld_opdr_key, l_mld_opdr_gln_vve);
|
||||
ELSE
|
||||
-- MARX#59976: Koppeling Twinq: “Onderhoudsopdrachten vanuit Tobias via Mareon voor de VvE
|
||||
mld.upsertopdrachtkenmerk (c_kenmerkopdr_key_opdr_gln_vve, v_mld_opdr_key, rec_ax.mld_opdr_gln_vve);
|
||||
END IF;
|
||||
|
||||
-- MARX#54417: Opdrachtsoort - INS Inspectie MUT Mutatie REP Reparatie
|
||||
mld.upsertopdrachtkenmerk (c_kenmerkopdr_key_opdr_soort,
|
||||
v_mld_opdr_key,
|
||||
@@ -7096,7 +7172,7 @@ SET DEFINE OFF
|
||||
|
||||
IF (v_mld_opdr_updates_allowed = 1)
|
||||
THEN
|
||||
IF (v_mld_opdr_key IS NOT NULL) AND (rec_ax.ax_supplier_id = '-1')
|
||||
IF (v_mld_opdr_key IS NOT NULL) AND (v_ax_leverancier_id = '-1')
|
||||
THEN
|
||||
-- aanduiding vanuit AX is annuleer
|
||||
fac.imp_writelog (p_import_key,
|
||||
|
||||
Reference in New Issue
Block a user