MARX#82808 Alternatief op GLN eigenaar
svn path=/Mareon/trunk/; revision=64132
This commit is contained in:
@@ -63,6 +63,26 @@ INSERT INTO mld_kenmerk (mld_kenmerk_key, mld_srtkenmerk_key, mld_typeopdr_key,
|
||||
SELECT 104, 4, 5, 'O', 70, 1 FROM DUAL;
|
||||
|
||||
|
||||
-- En tenslotte voor de Premium LEVERANCIER nog een flexprop waarmee deze kan instellen op welke alternatieve wijze de eigenaar via Affiliate gestuurd moet worden.
|
||||
INSERT INTO prs_kenmerk (prs_kenmerk_key, prs_kenmerk_niveau, prs_kenmerk_volgnr, prs_kenmerk_omschrijving, prs_kenmerk_kenmerktype, prs_kenmerk_lengte, prs_kenmerk_nmin, prs_kenmerk_nmax, prs_kenmerk_hint)
|
||||
SELECT 65, 'B', 292, 'DICO Affiliate (eigenaar)','N', 2, 0, 4, 'Uitleg: Afwijkend gebruik van Affiliate in DICO opdrachtbericht als GLN onbekend is: Leeg/0 (= default, standaard), 1 (= Affiliate sturen zonder GLN), 2 (= Affiliate sturen met lege GLN), 3 (= Affiliate sturen met GLN 13x0), 4 (= GLN via vertaaltabel).'
|
||||
FROM DUAL;
|
||||
|
||||
UPDATE fac_locale_xsl
|
||||
SET fac_locale_xsl_cust = 'GLN / Relatienr'
|
||||
WHERE fac_locale_xsl_label = 'lcl_prs_companies_leverancier_nr'
|
||||
AND fac_locale_xsl_lang = 'NL'
|
||||
AND fac_locale_xsl_module = 'ASP';
|
||||
|
||||
-- Vertaling van eigenaarnaam naar GLN (Relatienr) zoals in ERP systeem van leverancier is geregistreerd.
|
||||
INSERT INTO fac_usrtab (fac_usrtab_key, fac_usrtab_naam, fac_usrtab_omschrijving)
|
||||
VALUES(11,'Eigenaren','Vertaling eigenaar naar GLN');
|
||||
-- Rapportage van vertaling van eigenaarsnaam (like % %) naar GLN : beschikbaar voor de beheerder van leverancier (= WEB_EXTREL)
|
||||
INSERT INTO fac_menu (fac_menu_altgroep, fac_menu_level, fac_menu_volgnr, fac_menu_altlabel, fac_menu_info, fac_menu_alturl, fac_functie_key, fac_menu_portal)
|
||||
SELECT 1, 2, 12134, 'Vertaaltabel eigenaren', 'Voor de opdrachtnemer: registratie van eigenaren (namen) vanuit uw opdrachtgevers met bijbehorende vertaling naar GLN (of relatienr) voor naar eigen systeem', (SELECT 'appl/marx/AffiliateVertaalGLN.asp' from dual), (SELECT fac_functie_key FROM fac_functie WHERE fac_functie_code = 'WEB_EXTREL'), NULL
|
||||
FROM DUAL;
|
||||
|
||||
|
||||
------ payload end ------
|
||||
|
||||
SET DEFINE OFF
|
||||
|
||||
207
sql/mareon.sql
207
sql/mareon.sql
@@ -1993,6 +1993,71 @@ BEGIN
|
||||
END;
|
||||
/
|
||||
|
||||
|
||||
-- MARX#82808 Alternatief op GLN eigenaar
|
||||
CREATE OR REPLACE FUNCTION marx_auth_vertaal_affiliate (v_prs_bedrijf_key IN NUMBER)
|
||||
RETURN NUMBER
|
||||
AS
|
||||
v_geautoriseerd NUMBER(10);
|
||||
BEGIN
|
||||
SELECT COALESCE (MAX ('1'), '0')
|
||||
INTO v_geautoriseerd
|
||||
FROM prs_kenmerklink
|
||||
WHERE prs_kenmerk_key = 65 AND prs_kenmerklink_niveau = 'B' AND prs_link_key = v_prs_bedrijf_key AND prs_kenmerklink_waarde = '4' ;
|
||||
|
||||
RETURN v_geautoriseerd;
|
||||
END;
|
||||
/
|
||||
|
||||
CREATE OR REPLACE VIEW marx_v_gelieerde_lev_bedrijven
|
||||
(prs_bedrijf_key1, prs_bedrijf_naam1, prs_bedrijf_key2, prs_bedrijf_naam2)
|
||||
AS
|
||||
SELECT DISTINCT c1.prs_bedrijf_key, b1.prs_bedrijf_naam, c2.prs_bedrijf_key, b2.prs_bedrijf_naam
|
||||
FROM prs_contactpersoon c1, prs_contactpersoon c2,
|
||||
prs_bedrijf b1, prs_bedrijf b2
|
||||
WHERE c1.prs_perslid_key = c2.prs_perslid_key
|
||||
and b1.prs_bedrijf_key = c1.prs_bedrijf_key
|
||||
and b2.prs_bedrijf_key = c2.prs_bedrijf_key;
|
||||
|
||||
-- Rapportage van de vertaaltabel van eigenaarnaam naar GLN die leverancier kan instellen.
|
||||
-- De eigenaarsnaam vanuit opdrachtgever kan worden vertaald naar de GLN die leverancier in zijn systeem heeft geregistreerd...
|
||||
CREATE OR REPLACE VIEW marx_udr_vertaal_eigenaren
|
||||
(FCLT_3D_USER_KEY, naam_eigenaar, gln_eigenaar, prs_bedrijf_key)
|
||||
AS
|
||||
SELECT cp.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, prs_contactpersoon cp
|
||||
WHERE fac_usrtab_key = 11
|
||||
AND SUBSTR(fac_usrdata_upper, 1, INSTR(fac_usrdata_upper,'|')-1) = cp.prs_bedrijf_key
|
||||
AND fac_usrdata_verwijder IS NULL
|
||||
AND cp.prs_contactpersoon_verwijder IS NULL
|
||||
AND cp.prs_perslid_key IS NOT NULL;
|
||||
|
||||
-- Kijkt of leverancier een vertaling heeft ingesteld voor de eigenaarsnaam, er wordt gezocht op een deel van de naam, indien er meerdere vertalingen (records) zijn,
|
||||
-- dan wordt het GLN van het meest waarschijnlijke record als resultaat gegeven.
|
||||
CREATE OR REPLACE FUNCTION marx_vertaalde_affiliate_GLN (v_prs_bedrijf_key IN NUMBER, v_eigenaar_naam IN VARCHAR2)
|
||||
RETURN VARCHAR2
|
||||
AS
|
||||
v_result VARCHAR2(1000);
|
||||
CURSOR c1
|
||||
IS
|
||||
SELECT DISTINCT gln_eigenaar, naam_eigenaar, UTL_MATCH.jaro_winkler(UPPER(naam_eigenaar), UPPER(v_eigenaar_naam)) AS score
|
||||
FROM marx_udr_vertaal_eigenaren
|
||||
WHERE prs_bedrijf_key IN (SELECT prs_bedrijf_key2 FROM marx_v_gelieerde_lev_bedrijven WHERE prs_bedrijf_key1 = v_prs_bedrijf_key)
|
||||
AND UPPER(v_eigenaar_naam) LIKE '%' || naam_eigenaar || '%'
|
||||
ORDER BY score DESC;
|
||||
|
||||
BEGIN
|
||||
FOR r IN c1
|
||||
LOOP
|
||||
IF v_result IS NULL
|
||||
THEN
|
||||
v_result := r.gln_eigenaar;
|
||||
END IF;
|
||||
END LOOP;
|
||||
RETURN v_result;
|
||||
END;
|
||||
/
|
||||
|
||||
-- MARX#66907: Opdrachten overzichtsscherm: kolom locatiegegevens compact en volgorde fixed
|
||||
-- Levert een string op in formaat:
|
||||
-- Straatnaam huisnr huisnrtoev gevolgd door CR gevolgd door postcode plaatsnaam, dus bv
|
||||
@@ -5337,6 +5402,8 @@ IS
|
||||
v_straatnaam VARCHAR2 (100);
|
||||
v_huisnr VARCHAR2 (100);
|
||||
v_huisnr_toev VARCHAR2 (100);
|
||||
|
||||
v_vertaalde_GLN_eigenaar VARCHAR2 (1000);
|
||||
|
||||
c_mld_typeopdr_key NUMBER (10);
|
||||
v_prev_mld_opdr_externnr VARCHAR2 (100);
|
||||
@@ -5856,6 +5923,12 @@ BEGIN
|
||||
-- MARX#77050 Vastgoed eigenaar in opdrachtbericht meesturen tbv debiteur (in factuurbericht)
|
||||
mld.upsertopdrachtkenmerk (c_kenmerkopdr_key_opdr_gln_eig, v_mld_opdr_key, rec_vervolg_ax.mld_opdr_gln_vve);
|
||||
-- MARX#82808 Alternatief op GLN eigenaar
|
||||
IF marx_auth_vertaal_affiliate(v_lev_prs_bedrijf_key) = 1 AND rec_vervolg_ax.mld_opdr_gln_vve IS NULL AND rec_vervolg_ax.mld_melding_cust_name IS NOT NULL
|
||||
THEN
|
||||
-- Er is geen GLN voor eigenaar, EN leverancier heeft vertalingtabel actief (ingesteld), EN de eigenaarsnaam is bekend, dan gaan we kijken of de eigenaarsnaam een vertaald GLN heeft
|
||||
v_vertaalde_GLN_eigenaar := marx_vertaalde_affiliate_GLN(v_lev_prs_bedrijf_key, rec_vervolg_ax.mld_melding_cust_name);
|
||||
mld.upsertopdrachtkenmerk (c_kenmerkopdr_key_opdr_gln_eig, v_mld_opdr_key, v_vertaalde_GLN_eigenaar);
|
||||
END IF;
|
||||
mld.upsertopdrachtkenmerk (c_kenmerkopdr_key_eig_naam, v_mld_opdr_key, rec_vervolg_ax.mld_melding_cust_name);
|
||||
mld.upsertopdrachtkenmerk (c_kenmerkopdr_key_eig_adres, v_mld_opdr_key, rec_vervolg_ax.mld_melding_cust_straat);
|
||||
mld.upsertopdrachtkenmerk (c_kenmerkopdr_key_eig_pc, v_mld_opdr_key, rec_vervolg_ax.mld_melding_cust_postcode);
|
||||
@@ -9258,6 +9331,139 @@ END;
|
||||
|
||||
-----
|
||||
|
||||
-- In tabel fac_usrdata (van fac_usrtab_key 11 cq. Vertaaltabel Eigenaren) wordt een record:
|
||||
-- toegevoegd (INSERT) indien code1 nog niet bestaat
|
||||
-- aangepast (UPDATE) idien code1 al bestaat, en code2 niet leeg is
|
||||
-- verwijderd (DELETE) indien code1 al bestaat, en code 2 leeg is.
|
||||
|
||||
CREATE OR REPLACE FUNCTION mar_post_action_eigenaar(p_perslid_key IN NUMBER,
|
||||
p_code1_code2 IN VARCHAR2,
|
||||
p_ref_key IN NUMBER)
|
||||
RETURN VARCHAR2
|
||||
IS
|
||||
v_result VARCHAR2 (1000);
|
||||
v_prs_bedrijf_key NUMBER (10);
|
||||
v_fac_functie_key NUMBER (10);
|
||||
|
||||
v_code1 VARCHAR2 (1000);
|
||||
v_code2 VARCHAR2 (1000);
|
||||
v_aantal NUMBER(10);
|
||||
|
||||
l_fac_usrtab_key NUMBER(10);
|
||||
l_force_error NUMBER (10);
|
||||
BEGIN
|
||||
BEGIN
|
||||
-- Key van eigen tabel voor eigenaar vertalingen is 11.
|
||||
l_fac_usrtab_key := 11;
|
||||
|
||||
v_result := NULL;
|
||||
|
||||
v_result := 'U heeft geen beheerrechten voor de vertaaltabel van eigenaren.';
|
||||
|
||||
-- Heeft perslid voldoende rechten, dwz WEB_EXTREL autorisatie?
|
||||
SELECT fac_functie_key
|
||||
INTO v_fac_functie_key
|
||||
FROM fac_v_webgebruiker
|
||||
WHERE fac_functie_key = (SELECT fac_functie_key
|
||||
FROM fac_functie
|
||||
WHERE fac_functie_code = 'WEB_EXTREL')
|
||||
AND prs_perslid_key = p_perslid_key;
|
||||
|
||||
v_result := 'Leverancier is niet gevonden/bestaat niet in Mareon';
|
||||
-- We gaan op zoek naar het "1e" (= MIN functie) bedrijf waar p_perslid_key contactpersoon is.
|
||||
-- ALternatief zou zijn om een loop om ALLE bedrijven te doen waar p_perslid_key contactpersoon is.
|
||||
-- Of 100 punten opolossing, de leverancier (=bedrijf) door te geven via bv parameter p_ref_key die nu nog niet gebruikt wordt. oftewel dummy is.
|
||||
-- Maar zoals gezegd, we doen nu vooralsnog "1e" bedrijf, dat volstaat wel in 1e instantie...
|
||||
|
||||
SELECT MIN(b.prs_bedrijf_key)
|
||||
INTO v_prs_bedrijf_key
|
||||
FROM prs_bedrijf b, prs_contactpersoon cp
|
||||
WHERE b.prs_bedrijf_intern IS NULL
|
||||
AND b.prs_bedrijf_verwijder IS NULL
|
||||
AND cp.prs_bedrijf_key = b.prs_bedrijf_key
|
||||
AND cp.prs_perslid_key = p_perslid_key;
|
||||
|
||||
v_result := 'U heeft geen rechten voor de vertaaltabel van eigenaren';
|
||||
v_aantal := marx_auth_vertaal_affiliate (v_prs_bedrijf_key);
|
||||
IF v_aantal = 0
|
||||
THEN
|
||||
SELECT 1 / 0
|
||||
INTO l_force_error
|
||||
FROM DUAL;
|
||||
END IF;
|
||||
|
||||
v_result := 'Er is iets mis met de vertaling: geef eigenaarnaam en GLN op';
|
||||
|
||||
v_code1:= SUBSTR(p_code1_code2, 1, INSTR(p_code1_code2,'|')-1);
|
||||
v_code2:= SUBSTR(p_code1_code2, INSTR(p_code1_code2,'|')+1);
|
||||
|
||||
IF v_code1 IS NOT NULL
|
||||
THEN
|
||||
-- Bestaat fac_usrdata al met code 1?
|
||||
v_result := 'Er kan niet worden bepaald a.d.h.v. de eigenaar al bestaat';
|
||||
SELECT count(*)
|
||||
INTO v_aantal
|
||||
FROM fac_usrdata
|
||||
WHERE fac_usrtab_key = l_fac_usrtab_key
|
||||
AND fac_usrdata_upper = UPPER(v_prs_bedrijf_key || '|' || v_code1)
|
||||
AND fac_usrdata_verwijder IS NULL;
|
||||
|
||||
IF v_aantal = 0
|
||||
THEN
|
||||
-- Insert/Nieuw record
|
||||
IF v_code2 IS NOT NULL
|
||||
THEN
|
||||
v_result := 'Het toevoegen van de vertaling eigenaar-GLN is mislukt';
|
||||
INSERT INTO fac_usrdata(fac_usrtab_key, fac_usrdata_code, fac_usrdata_omschr)
|
||||
VALUES(l_fac_usrtab_key, v_prs_bedrijf_key || '|' || v_code1, v_code2);
|
||||
ELSE
|
||||
v_result := 'GLN van eigenaar mag niet leeg zijn.';
|
||||
SELECT 1 / 0
|
||||
INTO l_force_error
|
||||
FROM DUAL;
|
||||
END IF;
|
||||
ELSE
|
||||
IF v_aantal = 1
|
||||
THEN
|
||||
IF v_code2 IS NOT NULL
|
||||
THEN
|
||||
-- Update/wijzig record
|
||||
v_result := 'Het wijzigen van de vertaling eigenaar-GLN is mislukt';
|
||||
UPDATE fac_usrdata
|
||||
SET fac_usrdata_omschr = v_code2
|
||||
WHERE fac_usrtab_key = l_fac_usrtab_key
|
||||
AND fac_usrdata_upper = UPPER(v_prs_bedrijf_key || '|' || v_code1)
|
||||
AND fac_usrdata_verwijder IS NULL;
|
||||
ELSE
|
||||
-- Delete/verwijder record
|
||||
v_result := 'Het verwijderen van de vertaling eigenaar-GLN is mislukt';
|
||||
UPDATE fac_usrdata
|
||||
SET fac_usrdata_verwijder = SYSDATE
|
||||
WHERE fac_usrtab_key = l_fac_usrtab_key
|
||||
AND fac_usrdata_upper = UPPER(v_prs_bedrijf_key || '|' || v_code1)
|
||||
AND fac_usrdata_verwijder IS NULL;
|
||||
END IF;
|
||||
END IF;
|
||||
END IF;
|
||||
ELSE
|
||||
v_result := 'Naam van eigenaar mag niet leeg zijn.';
|
||||
SELECT 1 / 0
|
||||
INTO l_force_error
|
||||
FROM DUAL;
|
||||
END IF;
|
||||
v_result := NULL;
|
||||
COMMIT;
|
||||
RETURN NULL;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
RETURN v_result;
|
||||
END;
|
||||
END;
|
||||
/
|
||||
|
||||
|
||||
-----
|
||||
|
||||
|
||||
-- View van opdrachten met een opmerking sinds de 'laatste' keer.
|
||||
@@ -20174,6 +20380,7 @@ BEGIN
|
||||
WHEN UPPER (v_action_code) = 'MLD_OPDR_DELETE_NQ' THEN v_result := mar_post_action_del_mldopdr_nq (v_prs_perslid_key, v_extra_omschr, v_ref_key);
|
||||
WHEN UPPER (v_action_code) = 'PRS_BEDRIJF_ACTIVEER_NQ' THEN v_result := mar_post_action_activate_nq (v_prs_perslid_key, v_extra_omschr, v_ref_key);
|
||||
WHEN UPPER (v_action_code) = 'FAC_USRDATA_VAARDIGHEID' THEN v_result := mar_post_action_vaardigheid (v_prs_perslid_key, v_extra_omschr, 0);
|
||||
WHEN UPPER (v_action_code) = 'FAC_USRDATA_EIGENAAR' THEN v_result := mar_post_action_eigenaar (v_prs_perslid_key, v_extra_omschr, 0);
|
||||
ELSE v_result := 'Onbekende action_code';
|
||||
END CASE;
|
||||
ELSE
|
||||
|
||||
Reference in New Issue
Block a user