NFIB#21853: Tool voor koppelen artikel aan product
svn path=/Customer/trunk/; revision=15123
This commit is contained in:
413
NFIB/nfib.sql
413
NFIB/nfib.sql
@@ -1,7 +1,7 @@
|
||||
-- Script containing customer specific configuration sql statements for NFIB
|
||||
-- (c) 2011 SG|facilitor bv
|
||||
-- $Revision: 5 $
|
||||
-- $Modtime: 7-12-11 11:23 $
|
||||
-- $Revision: 6 $
|
||||
-- $Modtime: 20-01-12 14:54 $
|
||||
--
|
||||
-- Support: +31 53 4800710
|
||||
|
||||
@@ -141,6 +141,33 @@ END;
|
||||
/
|
||||
|
||||
|
||||
CREATE OR REPLACE PROCEDURE nfib_copy_melding_2_bedrijf (
|
||||
p_melding_key IN NUMBER
|
||||
)
|
||||
IS
|
||||
l_prs_bedrijf_naam VARCHAR2 (1000);
|
||||
BEGIN
|
||||
-- key 61 = bedrijfsnaam/prospect naam
|
||||
SELECT mld_kenmerkmelding_waarde
|
||||
INTO l_prs_bedrijf_naam
|
||||
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;
|
||||
/
|
||||
|
||||
|
||||
|
||||
|
||||
-----------------------------------------------------------------------------------------------------------
|
||||
|
||||
-- Het klantenbestand, oftewel de NeFib abonnees.
|
||||
@@ -155,7 +182,7 @@ FROM prs_v_aanwezigbedrijf b
|
||||
WHERE b.prs_bedrijf_intern = 1
|
||||
AND b.prs_bedrijf_ingids = 1;
|
||||
|
||||
-- Prospects die door administratie (Penny) in het klantenbestand zijn ingevoerd.
|
||||
-- Prospects die door administratie (Penny) in het klantenbestand zijn ingevoerd, en (nog) geen klant zijn. Ook eventuele prospects door sales komen in deze view...
|
||||
CREATE OR REPLACE FORCE view nfib_v_prs_prospect
|
||||
(nfib_prospect_key, nfib_prospect_naam)
|
||||
AS
|
||||
@@ -164,13 +191,17 @@ FROM prs_v_aanwezigbedrijf b
|
||||
WHERE b.prs_bedrijf_intern = 1
|
||||
AND b.prs_bedrijf_ingids is null;
|
||||
|
||||
-- Prospects die door vertegenwoordiger worden opgevoerd via de melding 'Nieuwe prospect'
|
||||
CREATE OR REPLACE FORCE view nfib_v_mld_prospect
|
||||
(nfib_prospect_key, nfib_prospect_naam)
|
||||
-- Prospects die door vertegenwoordiger worden opgevoerd via de melding 'Nieuwe prospect' en nog niet in het klantenbestand (prs_bedrijf) staan.
|
||||
-- Dit rapport is voor de vertegenwoordiger om een prospect in het klantenbestand in te schieten (om een quickscan te kunnen doen).
|
||||
CREATE OR REPLACE FORCE view nfib_v_rap_my_prospects
|
||||
(fclt_3d_user_key, nfib_prospect_naam)
|
||||
AS
|
||||
select distinct mld_kenmerkmelding_key , mld_kenmerkmelding_waarde
|
||||
select m.prs_perslid_key, mld_kenmerkmelding_waarde
|
||||
from mld_kenmerkmelding km, mld_melding m
|
||||
where mld_kenmerk_key = 61;
|
||||
where mld_kenmerk_key = 61
|
||||
and m.mld_melding_key = km.mld_melding_key
|
||||
and not exists (select 'x' from prs_bedrijf b where UPPER(b.prs_bedrijf_naam) = UPPER(mld_kenmerkmelding_waarde));
|
||||
|
||||
|
||||
|
||||
CREATE OR REPLACE VIEW nfib_v_ketenmoeder (
|
||||
@@ -190,13 +221,6 @@ AND EXISTS (select 'x' FROM prs_kenmerklink kl
|
||||
|
||||
|
||||
|
||||
CREATE OR REPLACE FORCE view nfib_v_prospect
|
||||
(nfib_prospect_key, nfib_prospect_naam)
|
||||
AS
|
||||
select distinct mld_kenmerkmelding_key , mld_kenmerkmelding_waarde
|
||||
from mld_kenmerkmelding km, mld_melding m
|
||||
where mld_kenmerk_key = 61;
|
||||
|
||||
|
||||
CREATE OR REPLACE FORCE VIEW nfib_v_rap_bes_prod
|
||||
(
|
||||
@@ -249,10 +273,367 @@ AS
|
||||
AND sd.prs_bedrijf_key = b.prs_bedrijf_key(+);
|
||||
|
||||
|
||||
|
||||
|
||||
CREATE OR REPLACE FORCE VIEW nfib_v_rap_art_2_prod_75
|
||||
(
|
||||
fclt_f_leverancier,
|
||||
fclt_f_catalogus,
|
||||
fclt_f_groep,
|
||||
hide_f_bes_srtdeel_key,
|
||||
artikelnr,
|
||||
omschrijving,
|
||||
eenheid,
|
||||
hide_f_match,
|
||||
fclt_f_prodnr,
|
||||
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
|
||||
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
|
||||
AND d1.bes_srtgroep_key = g1.bes_srtgroep_key
|
||||
AND c1.ins_discipline_key = g1.ins_discipline_key
|
||||
AND d1.bes_srtprod_key = pd1.bes_srtprod_key (+);
|
||||
|
||||
|
||||
CREATE OR REPLACE FORCE VIEW nfib_v_rap_art_2_art_75
|
||||
(
|
||||
hide_f_match,
|
||||
fclt_f_matchpercentage,
|
||||
fclt_f_leverancier1,
|
||||
fclt_f_catalogus1,
|
||||
fclt_f_groep1,
|
||||
hide_f_bes_srtdeel_key1,
|
||||
artikelnr1,
|
||||
omschrijving1,
|
||||
eenheid,
|
||||
fclt_f_prodnr1,
|
||||
product1,
|
||||
prijs1,
|
||||
prijs2,
|
||||
fclt_f_leverancier2,
|
||||
fclt_f_catalogus2,
|
||||
fclt_f_groep2,
|
||||
hide_f_bes_srtdeel_key2,
|
||||
artikelnr2,
|
||||
omschrijving2,
|
||||
eenheid2,
|
||||
fclt_f_prodnr2,
|
||||
product2
|
||||
)
|
||||
AS
|
||||
SELECT 1-ROUND(utl_match.jaro_winkler( d2.bes_srtdeel_omschrijving, d1.bes_srtdeel_omschrijving),2),
|
||||
CASE
|
||||
WHEN ROUND(utl_match.jaro_winkler( d2.bes_srtdeel_omschrijving, d1.bes_srtdeel_omschrijving),2) >= 0.99
|
||||
THEN
|
||||
'>= 99%'
|
||||
WHEN ROUND(utl_match.jaro_winkler( d2.bes_srtdeel_omschrijving, d1.bes_srtdeel_omschrijving),2) >= 0.95
|
||||
THEN
|
||||
'95-99%'
|
||||
WHEN ROUND(utl_match.jaro_winkler( d2.bes_srtdeel_omschrijving, d1.bes_srtdeel_omschrijving),2) >= 0.90
|
||||
THEN
|
||||
'90-95%'
|
||||
ELSE
|
||||
'80-90%'
|
||||
END,
|
||||
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,
|
||||
COALESCE(pd1.bes_srtprod_nr, 'NEE'), pd1.bes_srtprod_omschrijving,
|
||||
pr1.bes_srtdeel_prijs_prijs,pr2.bes_srtdeel_prijs_prijs,
|
||||
p2.prs_bedrijf_naam, c2.ins_discipline_omschrijving, g2.bes_srtgroep_omschrijving, d2.bes_srtdeel_key, d2.bes_srtdeel_nr, d2.bes_srtdeel_omschrijving, d2.bes_srtdeel_eenheid,
|
||||
COALESCE(pd2.bes_srtprod_nr, 'NEE'), pd2.bes_srtprod_omschrijving
|
||||
FROM bes_srtdeel d1, prs_bedrijf p1, bes_srtdeel d2, prs_bedrijf p2, bes_srtgroep g1, bes_srtgroep g2, bes_discipline c1,bes_discipline c2, bes_srtprod pd1, bes_srtprod pd2,
|
||||
bes_srtdeel_prijs pr1, bes_srtdeel_prijs pr2
|
||||
WHERE d1.prs_bedrijf_key = p1.prs_bedrijf_key
|
||||
AND utl_match.jaro_winkler( UPPER(d2.bes_srtdeel_omschrijving), UPPER(d1.bes_srtdeel_omschrijving)) >= 0.80
|
||||
AND d2.prs_bedrijf_key = p2.prs_bedrijf_key
|
||||
AND d1.bes_srtdeel_key <> d2.bes_srtdeel_key
|
||||
AND d1.bes_srtdeel_key = pr1.bes_srtdeel_key
|
||||
AND COALESCE(pr1.bes_srtdeel_prijs_vervaldatum, SYSDATE) >= SYSDATE
|
||||
AND COALESCE(pr2.bes_srtdeel_prijs_vervaldatum, SYSDATE) >= SYSDATE
|
||||
AND d2.bes_srtdeel_key = pr2.bes_srtdeel_key
|
||||
AND p1.prs_bedrijf_key <> p2.prs_bedrijf_key
|
||||
AND d1.bes_srtgroep_key = g1.bes_srtgroep_key
|
||||
AND d2.bes_srtgroep_key = g2.bes_srtgroep_key
|
||||
AND c1.ins_discipline_key = g1.ins_discipline_key
|
||||
AND c2.ins_discipline_key = g2.ins_discipline_key
|
||||
AND d1.bes_srtprod_key = pd1.bes_srtprod_key (+)
|
||||
AND d2.bes_srtprod_key = pd2.bes_srtprod_key (+);
|
||||
|
||||
|
||||
--CREATE OR REPLACE PROCEDURE nfib_import_catalogus_prd (
|
||||
-- p_applname IN VARCHAR2,
|
||||
-- p_applrun IN VARCHAR2,
|
||||
-- p_filedir IN VARCHAR2,
|
||||
-- p_filename IN VARCHAR2
|
||||
--)
|
||||
--IS
|
||||
--BEGIN
|
||||
-- fac_import_catalogus(p_applname, p_applrun, p_filedir, p_filename, NULL, NULL);
|
||||
--END;
|
||||
--/
|
||||
|
||||
--CREATE OR REPLACE PROCEDURE nfib_update_catalogus_prd (
|
||||
-- p_applname IN VARCHAR2,
|
||||
-- p_applrun IN VARCHAR2
|
||||
--)
|
||||
--IS
|
||||
-- CURSOR c_distinct_bedrijven
|
||||
-- IS
|
||||
-- SELECT DISTINCT prs_bedrijf_key from fac_imp_catalogus;
|
||||
--
|
||||
--BEGIN
|
||||
-- fac_update_catalogus(p_applname, p_applrun, NULL, NULL);
|
||||
--
|
||||
-- FOR rec IN c_distinct_bedrijven
|
||||
-- LOOP
|
||||
-- BEGIN
|
||||
-- nfib_update_catalogus(p_applname, p_applrun, NULL, rec.prs_bedrijf_key);
|
||||
-- END;
|
||||
-- END LOOP;
|
||||
--END;
|
||||
--/
|
||||
|
||||
|
||||
CREATE OR REPLACE PROCEDURE nfib_update_catalogus (
|
||||
p_applname IN VARCHAR2,
|
||||
p_applrun IN VARCHAR2,
|
||||
p_discipline_key IN NUMBER,
|
||||
p_bedrijf_key IN NUMBER
|
||||
)
|
||||
IS
|
||||
|
||||
l_bes_srtprod_key bes_srtprod.bes_srtprod_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.
|
||||
-- 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,
|
||||
d1.bes_srtdeel_key bes_srtdeel_key1,
|
||||
d1.bes_srtdeel_nr artikelnr1,
|
||||
d1.bes_srtdeel_omschrijving omschrijving1,
|
||||
d1.bes_srtdeel_eenheid eenheid1,
|
||||
pd1.bes_srtprod_key bes_srtprod_key1,
|
||||
pd1.bes_srtprod_nr prodnr1,
|
||||
pd1.bes_srtprod_omschrijving product1,
|
||||
pr1.bes_srtdeel_prijs_prijs prijs1,
|
||||
p2.prs_bedrijf_naam leverancier2,
|
||||
c2.ins_discipline_omschrijving catalogus2,
|
||||
g2.bes_srtgroep_omschrijving groep2,
|
||||
d2.bes_srtdeel_key bes_srtdeel_key2,
|
||||
d2.bes_srtdeel_nr artikelnr2,
|
||||
d2.bes_srtdeel_omschrijving omschrijving2,
|
||||
d2.bes_srtdeel_eenheid eenheid2,
|
||||
pd1.bes_srtprod_key bes_srtprod_key2,
|
||||
pd2.bes_srtprod_nr prodnr2,
|
||||
pd2.bes_srtprod_omschrijving product2,
|
||||
pr2.bes_srtdeel_prijs_prijs prijs2
|
||||
FROM bes_srtdeel d1, prs_bedrijf p1, bes_srtdeel d2, prs_bedrijf p2, bes_srtgroep g1, bes_srtgroep g2, bes_discipline c1,bes_discipline c2, bes_srtprod pd1, bes_srtprod pd2,
|
||||
bes_srtdeel_prijs pr1, bes_srtdeel_prijs pr2
|
||||
WHERE d1.prs_bedrijf_key = p_bedrijf_key
|
||||
AND p1.prs_bedrijf_key <> p2.prs_bedrijf_key
|
||||
AND d1.prs_bedrijf_key = p1.prs_bedrijf_key
|
||||
AND d2.prs_bedrijf_key = p2.prs_bedrijf_key
|
||||
AND d1.bes_srtdeel_key <> d2.bes_srtdeel_key
|
||||
AND d1.bes_srtdeel_key = pr1.bes_srtdeel_key
|
||||
AND d2.bes_srtdeel_key = pr2.bes_srtdeel_key
|
||||
AND d1.bes_srtgroep_key = g1.bes_srtgroep_key
|
||||
AND d2.bes_srtgroep_key = g2.bes_srtgroep_key
|
||||
AND c1.ins_discipline_key = g1.ins_discipline_key
|
||||
AND c2.ins_discipline_key = g2.ins_discipline_key
|
||||
AND UPPER(d2.bes_srtdeel_omschrijving) = UPPER(d1.bes_srtdeel_omschrijving)
|
||||
AND UPPER(d2.bes_srtdeel_eenheid) = UPPER(d1.bes_srtdeel_eenheid)
|
||||
AND COALESCE(pr1.bes_srtdeel_prijs_vervaldatum, SYSDATE) >= SYSDATE
|
||||
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:
|
||||
-- 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).
|
||||
CURSOR c_matching_art_without_prd (
|
||||
p_bedrijf_key IN NUMBER
|
||||
)
|
||||
IS
|
||||
SELECT d1.bes_srtdeel_key, MIN(d1.bes_srtdeel_nr) artikelnr, MIN(d1.bes_srtdeel_omschrijving) omschrijving, MIN(d1.bes_srtdeel_eenheid) eenheid, MIN(d1.bes_srtgroep_key) bes_srtgroep_key
|
||||
FROM bes_srtdeel d1, bes_srtgroep g1, bes_discipline c1, bes_srtdeel_prijs pr1, bes_srtdeel d2
|
||||
WHERE d1.prs_bedrijf_key = p_bedrijf_key
|
||||
AND d1.bes_srtdeel_key = pr1.bes_srtdeel_key
|
||||
AND d1.bes_srtgroep_key = g1.bes_srtgroep_key
|
||||
AND c1.ins_discipline_key = g1.ins_discipline_key
|
||||
AND UPPER(d2.bes_srtdeel_omschrijving) = UPPER(d1.bes_srtdeel_omschrijving)
|
||||
AND UPPER(d2.bes_srtdeel_eenheid) = UPPER(d1.bes_srtdeel_eenheid)
|
||||
AND d1.prs_bedrijf_key <> d2.prs_bedrijf_key
|
||||
AND d1.bes_srtdeel_key <> d2.bes_srtdeel_key
|
||||
AND d1.bes_srtdeel_verwijder is null
|
||||
AND d2.bes_srtdeel_verwijder is null
|
||||
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
|
||||
)
|
||||
IS
|
||||
SELECT d2.bes_srtdeel_key
|
||||
FROM bes_srtdeel d1, bes_srtdeel d2
|
||||
WHERE d1.bes_srtdeel_key = p_bes_srtdeel_key
|
||||
AND UPPER(d2.bes_srtdeel_omschrijving) = UPPER(d1.bes_srtdeel_omschrijving)
|
||||
AND UPPER(d2.bes_srtdeel_eenheid) = UPPER(d1.bes_srtdeel_eenheid)
|
||||
AND d1.prs_bedrijf_key <> d2.prs_bedrijf_key
|
||||
AND d1.bes_srtdeel_key <> d2.bes_srtdeel_key
|
||||
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)
|
||||
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
|
||||
WHERE d1.bes_srtdeel_key = rec.bes_srtdeel_key
|
||||
AND UPPER(d2.bes_srtdeel_omschrijving) = UPPER(d1.bes_srtdeel_omschrijving)
|
||||
AND UPPER(d2.bes_srtdeel_eenheid) = UPPER(d1.bes_srtdeel_eenheid)
|
||||
AND d1.prs_bedrijf_key <> d2.prs_bedrijf_key
|
||||
AND d1.bes_srtdeel_key <> d2.bes_srtdeel_key
|
||||
AND d1.bes_srtdeel_verwijder is null
|
||||
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!
|
||||
l_maak_new_prod := l_maak_new_prod + 1;
|
||||
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
|
||||
INTO l_bes_srtprod_key
|
||||
FROM bes_srtprod
|
||||
WHERE UPPER(bes_srtprod_omschrijving) = UPPER(rec.omschrijving)
|
||||
AND UPPER(bes_srtprod_eenheid) = UPPER(rec.eenheid);
|
||||
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
SELECT bes_s_bes_srtprod_key.NEXTVAL
|
||||
INTO l_bes_srtprod_key
|
||||
FROM DUAL;
|
||||
-- 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
|
||||
THEN
|
||||
-- Er zijn meerdere artikelen met 100% match, die aan verschillende producten hangen.
|
||||
-- Vanwege deze arbitriare situatie niet koppelen, maar rapporteren.
|
||||
oracle_err_num := SQLCODE;
|
||||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||||
v_errormsg :=
|
||||
v_errormsg
|
||||
|| ' ORACLE (error '
|
||||
|| oracle_err_num
|
||||
|| '/'
|
||||
|| oracle_err_mes
|
||||
|| ')';
|
||||
fac.imp_writelog (p_applname,
|
||||
p_applrun,
|
||||
'W',
|
||||
v_aanduiding || v_errormsg,
|
||||
'');
|
||||
END;
|
||||
END LOOP;
|
||||
COMMIT;
|
||||
|
||||
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.imp_writelog (p_applname,
|
||||
p_applrun,
|
||||
'E',
|
||||
v_aanduiding || v_errormsg,
|
||||
'Verwerken catalogus afgebroken!');
|
||||
END;
|
||||
/
|
||||
|
||||
|
||||
BEGIN adm.systrackscript('$Workfile: nfib.sql $', '$Revision: 5 $', 0); END;
|
||||
|
||||
BEGIN adm.systrackscript('$Workfile: nfib.sql $', '$Revision: 6 $', 0); END;
|
||||
/
|
||||
|
||||
BEGIN fac.registercustversion('NFIB', 1); END;
|
||||
|
||||
Reference in New Issue
Block a user