UWVA#24389 CATALOGUS-import: Functionaliteit igv. artikelen met hetzelfde artikelnummer
svn path=/Database/trunk/; revision=16967
This commit is contained in:
@@ -142,7 +142,8 @@ CREATE_TABLE(bes_srtdeel,0)
|
||||
NUMBER(1)
|
||||
DEFAULT 0,
|
||||
bes_srtdeel_nr
|
||||
VARCHAR2(32),
|
||||
VARCHAR2(32)
|
||||
NOT_NULL(bes_srtdeel_nr, bes_c_bes_srtdeel_nr),
|
||||
prs_bedrijf_key
|
||||
NUMBER(10)
|
||||
CONSTRAINT bes_r_prs_bedrijf_key3 REFERENCES prs_bedrijf(prs_bedrijf_key),
|
||||
|
||||
@@ -1023,6 +1023,14 @@ AS
|
||||
);
|
||||
ccount := ccount + 1;
|
||||
EXCEPTION
|
||||
WHEN DUP_VAL_ON_INDEX
|
||||
THEN
|
||||
v_errormsg := 'Artikelnummer dubbel in importbestand';
|
||||
fac.imp_writelog (p_import_key,
|
||||
'W',
|
||||
v_aanduiding || v_errormsg,
|
||||
'');
|
||||
END;
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
oracle_err_num := SQLCODE;
|
||||
|
||||
140
_UP/DB17to18.src
140
_UP/DB17to18.src
@@ -232,6 +232,146 @@ MENU_INS_AFTER( 'lcl_menu_prs_browser', 'lcl_menu_prs_bedrijf_intern', 2);
|
||||
/////////////////////////////////////////////////////////////////////////////////////////// FSN#25849
|
||||
ALTER TABLE prs_perslid ADD prs_perslid_options VARCHAR2(4000);
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////// UWVA#24389
|
||||
DECLARE
|
||||
CURSOR c1 IS
|
||||
SELECT bes_srtdeel_nr,
|
||||
bes_srtgroep_key,
|
||||
prs_bedrijf_key,
|
||||
bes_srtdeel_verwijder,
|
||||
COUNT ( * )
|
||||
FROM bes_srtdeel
|
||||
GROUP BY bes_srtdeel_nr,
|
||||
bes_srtgroep_key,
|
||||
prs_bedrijf_key,
|
||||
bes_srtdeel_verwijder
|
||||
HAVING COUNT ( * ) > 1;
|
||||
r1 c1%ROWTYPE;
|
||||
|
||||
CURSOR c2( srtdeel_nr VARCHAR2
|
||||
, srtgroep_key NUMBER
|
||||
, bedrijf_key NUMBER
|
||||
, vdatum DATE
|
||||
) IS
|
||||
SELECT S.bes_srtdeel_verwijder + NUMTODSINTERVAL(rownum-1,'SECOND') d1
|
||||
FROM bes_srtdeel S
|
||||
WHERE ((S.bes_srtdeel_nr = srtdeel_nr) OR (S.bes_srtdeel_nr IS NULL))
|
||||
AND S.bes_srtgroep_key = srtgroep_key
|
||||
AND S.prs_bedrijf_key = bedrijf_key
|
||||
AND S.bes_srtdeel_verwijder = vdatum
|
||||
FOR UPDATE;
|
||||
r2 c2%ROWTYPE;
|
||||
|
||||
CURSOR c3( srtdeel_nr VARCHAR2
|
||||
, srtgroep_key NUMBER
|
||||
, bedrijf_key NUMBER
|
||||
) IS
|
||||
SELECT S.bes_srtdeel_key
|
||||
, (SELECT NVL(MAX(1),0)
|
||||
FROM bes_bestelling_item B
|
||||
WHERE B.bes_srtdeel_key = S.bes_srtdeel_key
|
||||
) besteld
|
||||
FROM bes_srtdeel S
|
||||
WHERE ((S.bes_srtdeel_nr = srtdeel_nr) OR (S.bes_srtdeel_nr IS NULL))
|
||||
AND S.bes_srtgroep_key = srtgroep_key
|
||||
AND S.prs_bedrijf_key = bedrijf_key
|
||||
AND S.bes_srtdeel_verwijder IS NULL
|
||||
ORDER BY besteld DESC, S.bes_srtdeel_aanmaak DESC;
|
||||
r3 c3%ROWTYPE;
|
||||
|
||||
vdate1 date;
|
||||
vdate2 date;
|
||||
aantal number;
|
||||
prfkey number;
|
||||
|
||||
BEGIN
|
||||
|
||||
/* Niet verwijderde artikelen naar 1 artikelnummer verplaatsen */
|
||||
OPEN c1;
|
||||
LOOP
|
||||
FETCH c1 INTO r1;
|
||||
EXIT WHEN c1%NOTFOUND;
|
||||
|
||||
IF r1.bes_srtdeel_verwijder IS NULL
|
||||
THEN
|
||||
DBMS_OUTPUT.put_line ('>Artikelnr: ' || r1.bes_srtdeel_nr);
|
||||
aantal := 0;
|
||||
FOR r3 in c3( r1.bes_srtdeel_nr
|
||||
, r1.bes_srtgroep_key
|
||||
, r1.prs_bedrijf_key
|
||||
)
|
||||
LOOP
|
||||
IF aantal = 0
|
||||
THEN
|
||||
prfkey := r3.bes_srtdeel_key;
|
||||
DBMS_OUTPUT.put_line (aantal||'# '||r3.bes_srtdeel_key);
|
||||
ELSE
|
||||
/* Omhangen van artikel in bestel-item */
|
||||
DBMS_OUTPUT.put_line (aantal||'# '||r3.bes_srtdeel_key ||'-->'||prfkey);
|
||||
UPDATE bes_bestelling_item
|
||||
SET bes_srtdeel_key = prfkey
|
||||
WHERE bes_srtdeel_key = r3.bes_srtdeel_key;
|
||||
/* Verwijder het niet meer gebruikte artikel */
|
||||
DBMS_OUTPUT.put_line ('Verwijder: '||r3.bes_srtdeel_key);
|
||||
UPDATE bes_srtdeel
|
||||
SET bes_srtdeel_verwijder = sysdate
|
||||
WHERE bes_srtdeel_key = r3.bes_srtdeel_key;
|
||||
END IF;
|
||||
aantal := aantal + 1;
|
||||
/* Leeg artikelnr met default vullen */
|
||||
IF r1.bes_srtdeel_nr is null
|
||||
THEN
|
||||
DBMS_OUTPUT.put_line ('Artikelnr vullen:'||'Artikel '||prfkey);
|
||||
UPDATE bes_srtdeel
|
||||
SET bes_srtdeel_nr = 'Artikel '||prfkey
|
||||
WHERE bes_srtdeel_key = r3.bes_srtdeel_key;
|
||||
END IF;
|
||||
END LOOP;
|
||||
END IF;
|
||||
END LOOP;
|
||||
CLOSE c1;
|
||||
|
||||
/* verwijderdatum artikelen uniek maken */
|
||||
OPEN c1;
|
||||
LOOP
|
||||
FETCH c1 INTO r1;
|
||||
EXIT WHEN c1%NOTFOUND;
|
||||
|
||||
IF r1.bes_srtdeel_verwijder IS NOT NULL
|
||||
THEN
|
||||
FOR r2 IN c2( r1.bes_srtdeel_nr
|
||||
, r1.bes_srtgroep_key
|
||||
, r1.prs_bedrijf_key
|
||||
, r1.bes_srtdeel_verwijder
|
||||
)
|
||||
LOOP
|
||||
vdate1 := r2.d1;
|
||||
vdate2 := r1.bes_srtdeel_verwijder;
|
||||
DBMS_OUTPUT.put_line ('>Wijzig verwijderdatum: ' ||to_char(vdate2, 'dd-mm-yyyy hh24:mi:ss')
|
||||
||'-->' ||to_char(vdate1, 'dd-mm-yyyy hh24:mi:ss'));
|
||||
UPDATE bes_srtdeel
|
||||
SET bes_srtdeel_verwijder = vdate1
|
||||
WHERE CURRENT OF c2;
|
||||
END LOOP;
|
||||
END IF;
|
||||
|
||||
END LOOP;
|
||||
CLOSE c1;
|
||||
|
||||
/* Al verwijderde artikelen zonder artikelnummer voorzien van artikelnr */
|
||||
UPDATE bes_srtdeel
|
||||
SET bes_srtdeel_nr = 'Artikel '||bes_srtdeel_key
|
||||
WHERE bes_srtdeel_nr IS NULL
|
||||
AND bes_srtdeel_verwijder IS NOT NULL;
|
||||
END;
|
||||
/
|
||||
ALTER TABLE bes_srtdeel MODIFY bes_srtdeel_nr NOT_NULL(bes_srtdeel_nr, bes_c_bes_srtdeel_nr);
|
||||
CREATE INDEX bes_i_bes_srtdeel2 ON bes_srtdeel(bes_srtdeel_nr);
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
Reference in New Issue
Block a user