FSN#22410 fac_functie_key als param is genoeg
svn path=/Customer/trunk/; revision=15165
This commit is contained in:
128
NFIB/nfib.sql
128
NFIB/nfib.sql
@@ -1,7 +1,7 @@
|
||||
-- Script containing customer specific configuration sql statements for NFIB
|
||||
-- (c) 2011 SG|facilitor bv
|
||||
-- $Revision: 7 $
|
||||
-- $Modtime: 20-02-12 11:32 $
|
||||
-- $Revision: 8 $
|
||||
-- $Modtime: 12-03-12 13:11 $
|
||||
--
|
||||
-- Support: +31 53 4800710
|
||||
|
||||
@@ -22,7 +22,7 @@ DECLARE
|
||||
v_fac_profiel_key FAC_PROFIEL.FAC_PROFIEL_KEY%TYPE;
|
||||
v_mld_adres_key MLD_ADRES.MLD_ADRES_KEY%TYPE;
|
||||
v_prs_kenmerk_key PRS_KENMERK.PRS_KENMERK_KEY%TYPE;
|
||||
|
||||
|
||||
BEGIN
|
||||
-- Een stuk Pseudocode als dit standaard in 5.1.3 wordt...?
|
||||
-- IF get_facsetting('IMPLICIETE_PRS_AFDELING')==1 of iets dergelijks
|
||||
@@ -30,37 +30,37 @@ BEGIN
|
||||
IF (:new.prs_bedrijf_intern = 1 AND :new.prs_bedrijf_ingids = 1)
|
||||
THEN
|
||||
SELECT PRS_S_PRS_AFDELING_KEY.NEXTVAL into v_prs_afdeling_key FROM DUAL;
|
||||
|
||||
|
||||
INSERT INTO PRS_AFDELING (PRS_BEDRIJF_KEY, PRS_AFDELING_KEY, PRS_AFDELING_NAAM, PRS_AFDELING_OMSCHRIJVING, MLD_ADRES_KEY)
|
||||
VALUES (:new.prs_bedrijf_key, v_prs_afdeling_key, 'Intern', :new.prs_bedrijf_naam, NULL);
|
||||
|
||||
|
||||
-- Onderstaande nog ff uitcommentarieren.
|
||||
-- Minimum srtperslid is deelnemer/klant (standaard srt_perslid met key = 1 is initieel aanwezig: Onbekend).
|
||||
|
||||
|
||||
--SELECT MIN(PRS_SRTPERSLID_KEY) into v_prs_srtperslid_key from PRS_SRTPERSLID WHERE PRS_SRTPERSLID_VERWIJDER IS NULL;
|
||||
--INSERT INTO PRS_PERSLID(PRS_AFDELING_KEY,
|
||||
-- PRS_SRTPERSLID_KEY,
|
||||
-- PRS_SRTPERSLID_KEY,
|
||||
-- PRS_PERSLID_MODULE,
|
||||
-- PRS_PERSLID_NAAM,
|
||||
-- PRS_PERSLID_OSLOGIN,
|
||||
-- PRS_PERSLID_NAAM,
|
||||
-- PRS_PERSLID_OSLOGIN,
|
||||
-- PRS_PERSLID_TELEFOONNR,
|
||||
-- PRS_PERSLID_MOBIEL,
|
||||
-- PRS_PERSLID_EMAIL
|
||||
-- )
|
||||
-- VALUES(v_prs_afdeling_key,
|
||||
-- v_prs_srtperslid_key,
|
||||
-- v_prs_srtperslid_key,
|
||||
-- 'PRS',
|
||||
-- COALESCE(:new.prs_bedrijf_contact_persoon, :new.prs_bedrijf_naam),
|
||||
-- COALESCE(SUBSTR(:new.prs_bedrijf_email,1,30),:new.prs_bedrijf_naam),
|
||||
-- SUBSTR(:new.prs_bedrijf_telefoon,1,15),
|
||||
-- SUBSTR(:new.prs_bedrijf_telefoon2,1,15),
|
||||
-- :new.prs_bedrijf_email);
|
||||
|
||||
|
||||
--fac.putsystemnotification( 'Account voor bedrijf: '|| :new.prs_bedrijf_naam || 'is geactiveerd ' || chr(10) ||
|
||||
-- 'Gebruikersnaam: ' || COALESCE(SUBSTR(:new.prs_bedrijf_email,1,30),:new.prs_bedrijf_naam) || chr(10) ||
|
||||
-- 'Via menutaak Profiel is het wachtwoord naar wens te wijzigen'
|
||||
-- , 2);
|
||||
|
||||
|
||||
END IF;
|
||||
-- END IF;
|
||||
END;
|
||||
@@ -86,7 +86,7 @@ BEGIN
|
||||
AND a.prs_afdeling_verwijder IS NULL
|
||||
AND UPPER(a.prs_afdeling_omschrijving) = UPPER(:old.prs_bedrijf_naam);
|
||||
END IF;
|
||||
|
||||
|
||||
-- Het is een intern bedrijf (dus geen leverancier)
|
||||
IF (:old.prs_bedrijf_ingids is null and :new.prs_bedrijf_ingids = 1)
|
||||
THEN
|
||||
@@ -109,10 +109,10 @@ BEGIN
|
||||
-- De afdeling bestond nog niet, dus een insert...
|
||||
SELECT PRS_S_PRS_AFDELING_KEY.NEXTVAL into v_prs_afdeling_key FROM DUAL;
|
||||
INSERT INTO PRS_AFDELING (PRS_BEDRIJF_KEY, PRS_AFDELING_KEY, PRS_AFDELING_NAAM, PRS_AFDELING_OMSCHRIJVING, MLD_ADRES_KEY)
|
||||
VALUES (:new.prs_bedrijf_key, v_prs_afdeling_key, 'Intern', :new.prs_bedrijf_naam, NULL);
|
||||
VALUES (:new.prs_bedrijf_key, v_prs_afdeling_key, 'Intern', :new.prs_bedrijf_naam, NULL);
|
||||
END;
|
||||
END IF;
|
||||
|
||||
|
||||
IF (:old.prs_bedrijf_ingids = 1 and :new.prs_bedrijf_ingids is null)
|
||||
THEN
|
||||
-- Intern bedrijf was klant, en wordt nu geen klant meer (terug naar af, naar prospect...)
|
||||
@@ -135,7 +135,7 @@ BEGIN
|
||||
-- Dus indien nog personen bestaan bij afdeling, dan wordt alertbox met melding 'prs_m015' getoond, en kan het vinkje niet worden uitgezet,
|
||||
-- Of indien er nog lopende contracten bij afdeling bestaan, dan wordt alertbox 'cnt_m022' getoond, en kan het vinkje niet worden uitgezet...
|
||||
END;
|
||||
END IF;
|
||||
END IF;
|
||||
END IF;
|
||||
END;
|
||||
/
|
||||
@@ -153,15 +153,15 @@ BEGIN
|
||||
FROM mld_kenmerkmelding km
|
||||
WHERE mld_kenmerk_key = 61
|
||||
AND mld_melding_key=p_melding_key;
|
||||
|
||||
|
||||
INSERT INTO prs_bedrijf (prs_bedrijf_naam, prs_bedrijf_intern)
|
||||
SELECT l_prs_bedrijf_naam, 1 FROM DUAL;
|
||||
|
||||
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
raise_application_error (-20000, 'Naam van klant/prospect bestaat al.');
|
||||
|
||||
|
||||
END;
|
||||
/
|
||||
|
||||
@@ -291,7 +291,7 @@ product
|
||||
AS
|
||||
SELECT p1.prs_bedrijf_naam, c1.ins_discipline_omschrijving, g1.bes_srtgroep_omschrijving, d1.bes_srtdeel_key, d1.bes_srtdeel_nr, d1.bes_srtdeel_omschrijving, d1.bes_srtdeel_eenheid,
|
||||
ROUND(utl_match.jaro_winkler( d1.bes_srtdeel_omschrijving, pd1.bes_srtprod_omschrijving),2),
|
||||
COALESCE(pd1.bes_srtprod_nr, 'NEE'), pd1.bes_srtprod_omschrijving
|
||||
COALESCE(pd1.bes_srtprod_nr, 'NEE'), pd1.bes_srtprod_omschrijving
|
||||
FROM bes_srtdeel d1, prs_bedrijf p1, bes_srtgroep g1, bes_discipline c1, bes_srtprod pd1
|
||||
WHERE d1.prs_bedrijf_key = p1.prs_bedrijf_key
|
||||
AND utl_match.jaro_winkler( UPPER(d1.bes_srtdeel_omschrijving), UPPER(pd1.bes_srtprod_omschrijving)) >= 0.75
|
||||
@@ -383,10 +383,10 @@ AS
|
||||
--
|
||||
--BEGIN
|
||||
-- fac_update_catalogus(p_import_key, NULL, NULL);
|
||||
--
|
||||
--
|
||||
-- FOR rec IN c_distinct_bedrijven
|
||||
-- LOOP
|
||||
-- BEGIN
|
||||
-- BEGIN
|
||||
-- nfib_update_catalogus(p_import_key, NULL, rec.prs_bedrijf_key);
|
||||
-- END;
|
||||
-- END LOOP;
|
||||
@@ -395,31 +395,30 @@ AS
|
||||
|
||||
|
||||
CREATE OR REPLACE PROCEDURE nfib_update_catalogus (
|
||||
p_import_key IN NUMBER,
|
||||
p_discipline_key IN NUMBER,
|
||||
p_bedrijf_key IN NUMBER
|
||||
p_import_key IN NUMBER
|
||||
)
|
||||
IS
|
||||
|
||||
|
||||
l_bes_srtprod_key bes_srtprod.bes_srtprod_key%TYPE;
|
||||
l_bedrijf_key fac_import_app.prs_bedrijf_key%TYPE;
|
||||
l_maak_new_prod NUMBER;
|
||||
v_errormsg VARCHAR2 (1000);
|
||||
v_errorhint VARCHAR2 (1000);
|
||||
oracle_err_num NUMBER;
|
||||
oracle_err_mes VARCHAR2 (200);
|
||||
v_aanduiding VARCHAR2 (200);
|
||||
|
||||
-- Cursor c_prd_naam_eenheid bevat de artikelen van levernacier p_bedrijf_key (zojuist ingelezen) die een match hebben met 1 of meer artikelen van andere leveranciers.
|
||||
|
||||
-- Cursor c_prd_naam_eenheid bevat de artikelen van levernacier l_bedrijf_key (zojuist ingelezen) die een match hebben met 1 of meer artikelen van andere leveranciers.
|
||||
-- De match bestaat uit 100% overeenkomst in naam en eenheid (merk van artikel kent nu (nog) geen eigen kolom, zou nog sterkere match zijn geweest).
|
||||
|
||||
|
||||
CURSOR c_prd_naam_eenheid (
|
||||
p_bedrijf_key IN NUMBER
|
||||
)
|
||||
IS
|
||||
SELECT
|
||||
p1.prs_bedrijf_naam leverancier1,
|
||||
c1.ins_discipline_omschrijving catalogus1,
|
||||
g1.bes_srtgroep_omschrijving groep1,
|
||||
SELECT
|
||||
p1.prs_bedrijf_naam leverancier1,
|
||||
c1.ins_discipline_omschrijving catalogus1,
|
||||
g1.bes_srtgroep_omschrijving groep1,
|
||||
d1.bes_srtdeel_key bes_srtdeel_key1,
|
||||
d1.bes_srtdeel_nr artikelnr1,
|
||||
d1.bes_srtdeel_omschrijving omschrijving1,
|
||||
@@ -458,9 +457,9 @@ IS
|
||||
AND COALESCE(pr2.bes_srtdeel_prijs_vervaldatum, SYSDATE) >= SYSDATE
|
||||
AND d1.bes_srtprod_key = pd1.bes_srtprod_key (+)
|
||||
AND d2.bes_srtprod_key = pd2.bes_srtprod_key (+);
|
||||
|
||||
|
||||
-- Cursor c_art_without_prd bevat de artikelen van leverancier 'p_bedrijf_key' (zojuist ingelezen) die:
|
||||
|
||||
|
||||
-- Cursor c_art_without_prd bevat de artikelen van leverancier 'l_bedrijf_key' (zojuist ingelezen) die:
|
||||
-- a)geen koppeling hebben met een product
|
||||
-- b)een match hebben met 1 of meer artikelen van andere leveranciers
|
||||
-- De match bestaat uit 100% overeenkomst in naam en eenheid (merk van artikel kent nu (nog) geen eigen kolom, zou nog sterkere match zijn geweest).
|
||||
@@ -483,9 +482,9 @@ IS
|
||||
AND COALESCE(pr1.bes_srtdeel_prijs_vervaldatum, SYSDATE) >= SYSDATE
|
||||
AND d1.bes_srtprod_key IS NULL
|
||||
GROUP BY d1.bes_srtdeel_key;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
CURSOR c_art_match_art_without_prod (
|
||||
p_bes_srtdeel_key IN NUMBER
|
||||
)
|
||||
@@ -500,21 +499,26 @@ IS
|
||||
AND d1.bes_srtdeel_verwijder is null
|
||||
AND d2.bes_srtdeel_verwijder is null
|
||||
AND d2.bes_srtprod_key IS NULL;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
BEGIN
|
||||
|
||||
-- Voor ieder geimporteerd artikel van leverancier 'p_bedrijf_key' dat nog niet gekoppeld is aan product (als die in eerdere imports gekoppeld was, dan nu met rust laten)
|
||||
FOR rec IN c_matching_art_without_prd (p_bedrijf_key)
|
||||
SELECT prs_bedrijf_key
|
||||
INTO l_bedrijf_key
|
||||
FROM fac_import fi, fac_import_app fia
|
||||
WHERE fi.fac_import_app_key = fia.fac_import_app_key
|
||||
AND fac_import_key = p_import_key;
|
||||
|
||||
-- Voor ieder geimporteerd artikel van leverancier 'l_bedrijf_key' dat nog niet gekoppeld is aan product (als die in eerdere imports gekoppeld was, dan nu met rust laten)
|
||||
FOR rec IN c_matching_art_without_prd (l_bedrijf_key)
|
||||
LOOP
|
||||
BEGIN
|
||||
v_aanduiding := '[' || rec.artikelnr || ' - ' || rec.omschrijving || '( ' || rec.eenheid || ') ' || '] ';
|
||||
v_errormsg := 'Eenduidigheid mist: meerdere artikelen matchen maar hebebn verschillende producten';
|
||||
|
||||
|
||||
-- Artikel is niet gekoppeld aan product, laten we proberen deze te koppelen:
|
||||
-- Zoek aan product-gekoppelde-artikelen van andere leverancier(s), en knoop hem aan die...
|
||||
|
||||
|
||||
SELECT d2.bes_srtprod_key
|
||||
INTO l_bes_srtprod_key
|
||||
FROM bes_srtdeel d1, bes_srtdeel d2
|
||||
@@ -527,22 +531,22 @@ BEGIN
|
||||
AND d2.bes_srtdeel_verwijder is null
|
||||
AND d2.bes_srtprod_key IS NOT NULL
|
||||
GROUP BY d2.bes_srtprod_key;
|
||||
|
||||
|
||||
-- Hier eenduidig 1 product gevonden die aan de gematch-te artikel(en) zijn gekoppeld.
|
||||
UPDATE bes_srtdeel d1
|
||||
SET d1.bes_srtprod_key = l_bes_srtprod_key
|
||||
WHERE d1.bes_srtdeel_key = rec.bes_srtdeel_key;
|
||||
|
||||
|
||||
EXCEPTION
|
||||
-- Geen (=0) of meer (>1) producten gevonden..
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
-- Geen artikel die aan product is gekoppeld gevonden, dus dan is gematch-te artikel nog ongekoppeld
|
||||
-- We gaan dan alle productloze artikelen die matchen alsnog bombaderen tot product-koppeling door 1 product aan te maken en ze allemaal daaraan te koppelen...
|
||||
|
||||
|
||||
-- Default geen product maken, tenzij er een productloos match-artikel bestaat
|
||||
l_maak_new_prod := 0;
|
||||
|
||||
|
||||
FOR rec2 IN c_art_match_art_without_prod (rec.bes_srtdeel_key)
|
||||
LOOP
|
||||
-- Productloos match-artikel bestaat!
|
||||
@@ -550,7 +554,7 @@ BEGIN
|
||||
IF l_maak_new_prod = 1
|
||||
THEN
|
||||
-- Alleen de 1e keer een product maken...
|
||||
|
||||
|
||||
-- Maar eerst ff checken of toevallig/theoretisch/handmatig toch niet het product al bestaat met dezelfde naam en eenheid, want dan hoef ik die niet aan te maken...
|
||||
BEGIN
|
||||
SELECT bes_srtprod_key
|
||||
@@ -558,9 +562,9 @@ BEGIN
|
||||
FROM bes_srtprod
|
||||
WHERE UPPER(bes_srtprod_omschrijving) = UPPER(rec.omschrijving)
|
||||
AND UPPER(bes_srtprod_eenheid) = UPPER(rec.eenheid);
|
||||
|
||||
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
SELECT bes_s_bes_srtprod_key.NEXTVAL
|
||||
INTO l_bes_srtprod_key
|
||||
@@ -568,23 +572,23 @@ BEGIN
|
||||
-- bes_srtgroep_key = 1 (harde key), dit is de default/standaard groep onder de standaard productencatalogus (met key 3): zie nfib003.sql
|
||||
INSERT INTO bes_srtprod (bes_srtprod_key, bes_srtgroep_key, bes_srtprod_omschrijving, bes_srtprod_eenheid)
|
||||
SELECT l_bes_srtprod_key, 1, rec.omschrijving, rec.eenheid FROM DUAL;
|
||||
|
||||
|
||||
END;
|
||||
|
||||
|
||||
END IF;
|
||||
|
||||
|
||||
-- Elk productloos artikel nu aan product koppelen
|
||||
UPDATE bes_srtdeel d1
|
||||
SET d1.bes_srtprod_key = l_bes_srtprod_key
|
||||
WHERE d1.bes_srtdeel_key = rec2.bes_srtdeel_key;
|
||||
|
||||
|
||||
END LOOP;
|
||||
-- En tenslotte het artikel van leverancier p_prs_bedrijf_key zelf nog
|
||||
UPDATE bes_srtdeel d1
|
||||
SET d1.bes_srtprod_key = l_bes_srtprod_key
|
||||
WHERE d1.bes_srtdeel_key = rec.bes_srtdeel_key;
|
||||
|
||||
WHEN OTHERS
|
||||
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
-- Er zijn meerdere artikelen met 100% match, die aan verschillende producten hangen.
|
||||
-- Vanwege deze arbitriare situatie niet koppelen, maar rapporteren.
|
||||
@@ -604,7 +608,7 @@ BEGIN
|
||||
END;
|
||||
END LOOP;
|
||||
COMMIT;
|
||||
|
||||
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
@@ -626,7 +630,7 @@ END;
|
||||
|
||||
|
||||
|
||||
BEGIN adm.systrackscript('$Workfile: nfib.sql $', '$Revision: 7 $', 0); END;
|
||||
BEGIN adm.systrackscript('$Workfile: nfib.sql $', '$Revision: 8 $', 0); END;
|
||||
/
|
||||
|
||||
BEGIN fac.registercustversion('NFIB', 1); END;
|
||||
|
||||
Reference in New Issue
Block a user