FSN#19935

svn path=/Database/trunk/; revision=10595
This commit is contained in:
Peter Feij
2011-02-24 17:52:00 +00:00
parent a321b68ae1
commit 2bea19bd29
12 changed files with 742 additions and 357 deletions

View File

@@ -1,14 +1,14 @@
#ifdef BES // 03-11-2000 PF
/* BES_PAC.SRC
* $Revision: 73 $
* $Modtime: 25-01-11 13:26 $
* $Revision: 74 $
* $Modtime: 24-02-11 16:18 $
*/
-- STATUS: TESTEN
-- Wens is om met 5i alle bes-functies in de BES-package te hebben
CREATE OR REPLACE PACKAGE bes
AS
FUNCTION calcartikelkortingsprijs (pins_srtdeel_key IN NUMBER, pbestelaantal IN NUMBER)
FUNCTION calcartikelkortingsprijs (pbes_srtdeel_key IN NUMBER, pbestelaantal IN NUMBER)
RETURN NUMBER;
PROCEDURE calcopdrachtbedragkorting (pprs_bedrijf_key IN NUMBER, pbrutoopdrachtbedrag IN NUMBER,
@@ -42,11 +42,11 @@ END bes;
CREATE OR REPLACE PACKAGE BODY bes
AS
FUNCTION calcartikelkortingsprijs (pins_srtdeel_key IN NUMBER, pbestelaantal IN NUMBER)
FUNCTION calcartikelkortingsprijs (pbes_srtdeel_key IN NUMBER, pbestelaantal IN NUMBER)
RETURN NUMBER
AS
lstaffeltabelkey bes_staffeltabel.bes_staffeltabel_key%TYPE;
lprijs ins_srtdeel.ins_srtdeel_prijs%TYPE;
lprijs bes_srtdeel.bes_srtdeel_prijs%TYPE;
lstaffeltype bes_staffeltabel.fac_typestaffel_key%TYPE;
lstaffelkorting bes_staffel.bes_staffel_korting%TYPE;
lkortingsprijs NUMBER;
@@ -60,15 +60,15 @@ AS
BEGIN
SELECT sd.bes_staffeltabel_key,
sd.ins_srtdeel_prijs,
sd.bes_srtdeel_prijs,
st.fac_typestaffel_key
INTO lstaffeltabelkey,
lprijs,
lstaffeltype
FROM ins_srtdeel sd,
FROM bes_srtdeel sd,
bes_staffeltabel st
WHERE sd.bes_staffeltabel_key = st.bes_staffeltabel_key
AND sd.ins_srtdeel_key = pins_srtdeel_key;
AND sd.bes_srtdeel_key = pbes_srtdeel_key;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
@@ -80,7 +80,7 @@ AS
SELECT COALESCE(MIN(bes_staffel_korting), 0)
INTO lstaffelkorting
FROM bes_staffel s1
WHERE s1.bes_staffeltabel_key = lstaffeltabelkey
WHERE s1.bes_staffeltabel_key = lstaffeltabelkey
AND (s1.bes_staffel_grenswaarde > pbestelaantal OR s1.bes_staffel_grenswaarde IS NULL)
AND NOT EXISTS
(SELECT 'X'
@@ -125,10 +125,10 @@ AS
-- 50 -> 5%
-- Dan is 30 (euro) tussen 20 en 50 en geldt 5% korting
-- Je moet dus het laagste hogere record vinden. Voor de bovengrens (hooogste staffel) is de grenswaarde NULL
-- ATTENTIE: Nu wordt de laagste *korting* gekozen indien je in de hoogste staffel zit, terwijl je
-- ATTENTIE: Nu wordt de laagste *korting* gekozen indien je in de hoogste staffel zit, terwijl je
-- de laagste grenswaarde moet pakken. Levert nu de verkeerde waarde op in het rare geval dat
-- de korting *lager* wordt als je in de hoogste staffel komt, bijvoorbeeld
-- bij tot10000 artikelen 30% korting, en boven10000 25%. Aanname om technische redenen, maar mocht
-- bij tot10000 artikelen 30% korting, en boven10000 25%. Aanname om technische redenen, maar mocht
-- er een verrassend probleem optreden, is dit alvast de tip.
SELECT COALESCE(MIN(prs_staffel_korting), 0)
INTO lkorting
@@ -181,7 +181,7 @@ AS
AS
lstaffelgroep bes_staffeltabel.bes_staffeltabel_groep%TYPE;
lstaffeltabelkey bes_staffeltabel.bes_staffeltabel_key%TYPE;
lprijs ins_srtdeel.ins_srtdeel_prijs%TYPE;
lprijs bes_srtdeel.bes_srtdeel_prijs%TYPE;
lstaffeltype bes_staffeltabel.fac_typestaffel_key%TYPE;
lstaffelkorting bes_staffel.bes_staffel_korting%TYPE;
lkortingsprijs NUMBER;
@@ -198,25 +198,25 @@ AS
SELECT st.bes_staffeltabel_groep,
sd.bes_staffeltabel_key,
st.fac_typestaffel_key,
sd.ins_srtdeel_prijs,
sd.bes_srtdeel_prijs,
bi.bes_bestelling_item_aantal
INTO lstaffelgroep,
lstaffeltabelkey,
lstaffeltype,
lprijs,
laantalbesteld
FROM ins_srtdeel sd, bes_staffeltabel st, bes_bestelling_item bi
FROM bes_srtdeel sd, bes_staffeltabel st, bes_bestelling_item bi
WHERE sd.bes_staffeltabel_key = st.bes_staffeltabel_key
AND sd.ins_srtdeel_key = bi.ins_srtdeel_key
AND sd.bes_srtdeel_key = bi.bes_srtdeel_key
AND bi.bes_bestelling_item_key = pbes_bestelling_item_key;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
BEGIN
SELECT sd.ins_srtdeel_prijs
SELECT sd.bes_srtdeel_prijs
INTO lprijs
FROM ins_srtdeel sd, bes_bestelling_item bi
WHERE sd.ins_srtdeel_key = bi.ins_srtdeel_key
FROM bes_srtdeel sd, bes_bestelling_item bi
WHERE sd.bes_srtdeel_key = bi.bes_srtdeel_key
AND bi.bes_bestelling_item_key = pbes_bestelling_item_key;
RETURN lprijs;
END;
@@ -226,8 +226,8 @@ AS
THEN
SELECT SUM (bi.bes_bestelling_item_aantal)
INTO laantalbesteld
FROM bes_bestelling_item bi, ins_srtdeel sd
WHERE sd.ins_srtdeel_key = bi.ins_srtdeel_key
FROM bes_bestelling_item bi, bes_srtdeel sd
WHERE sd.bes_srtdeel_key = bi.bes_srtdeel_key
AND sd.bes_staffeltabel_key = lstaffeltabelkey
AND bi.bes_bestelling_item_key = pbes_bestelling_item_key;
END IF;
@@ -237,7 +237,7 @@ AS
SELECT COALESCE(MIN(bes_staffel_korting), 0)
INTO lstaffelkorting
FROM bes_staffel s1
WHERE s1.bes_staffeltabel_key = lstaffeltabelkey
WHERE s1.bes_staffeltabel_key = lstaffeltabelkey
AND (s1.bes_staffel_grenswaarde > laantalbesteld OR s1.bes_staffel_grenswaarde IS NULL)
AND NOT EXISTS
(SELECT 'X'
@@ -291,10 +291,10 @@ AS
-- 50 -> 5%
-- Dan is 30 (euro) tussen 20 en 50 en geldt 5% korting
-- Je moet dus het laagste hogere record vinden. Voor de bovengrens (hooogste staffel) is de grenswaarde NULL
-- ATTENTIE: Nu wordt de laagste *korting* gekozen indien je in de hoogste staffel zit, terwijl je
-- ATTENTIE: Nu wordt de laagste *korting* gekozen indien je in de hoogste staffel zit, terwijl je
-- de laagste grenswaarde moet pakken. Levert nu de verkeerde waarde op in het rare geval dat
-- de korting *lager* wordt als je in de hoogste staffel komt, bijvoorbeeld
-- bij tot10000 artikelen 30% korting, en boven10000 25%. Aanname om technische redenen, maar mocht
-- bij tot10000 artikelen 30% korting, en boven10000 25%. Aanname om technische redenen, maar mocht
-- er een verrassend probleem optreden, is dit alvast de tip.
SELECT COALESCE(MIN(prs_staffel_korting), 0)
INTO lkorting
@@ -608,7 +608,7 @@ AS
DATE_TO_CHAR (lbes_bestelling_datum, 'DD-MM-YY HH24:MI')
);
END IF;
RETURN s;
END;
FUNCTION opdrsprintf (ps IN VARCHAR2, pbes_bestelopdr_key IN NUMBER)
@@ -648,13 +648,13 @@ IS
IS
SELECT TO_CHAR (boi.bes_bestelopdr_item_aantal)
|| 'x '
|| s.ins_srtdeel_omschrijving
|| s.bes_srtdeel_omschrijving /* lcl.x()?*/
|| ' ('
|| s.ins_srtdeel_eenheid
|| s.bes_srtdeel_eenheid
|| ') ' besitemdsc
FROM bes_bestelopdr_item boi, bes_bestelling_item bi, ins_srtdeel s
FROM bes_bestelopdr_item boi, bes_bestelling_item bi, bes_srtdeel s
WHERE boi.bes_bestelopdr_item_key = bi.bes_bestelopdr_item_key
AND bi.ins_srtdeel_key = s.ins_srtdeel_key
AND bi.bes_srtdeel_key = s.bes_srtdeel_key
AND boi.bes_bestelopdr_key = besopdrkey;
BEGIN
lret := NULL;
@@ -690,44 +690,42 @@ END;
CREATE OR REPLACE PROCEDURE BES_Check_or_Create_Item (
p_ins_discipline_key IN NUMBER,
p_ins_srtgroep_omschrijving IN VARCHAR2, -- VARCHAR2(60)
p_ins_srtdeel_omschrijving IN VARCHAR2, -- VARCHAR2 (60)
p_ins_srtdeel_prijs IN NUMBER, -- NUMBER (8,2)
p_ins_srtdeel_btw IN NUMBER, -- NUMBER (3)
p_ins_srtdeel_eenheid IN VARCHAR2, -- VARCHAR2 (30)
p_ins_srtdeel_nr IN VARCHAR2, -- VARCHAR2 (32)
p_bes_srtgroep_omschrijving IN VARCHAR2, -- VARCHAR2(60)
p_bes_srtdeel_omschrijving IN VARCHAR2, -- VARCHAR2 (60)
p_bes_srtdeel_prijs IN NUMBER, -- NUMBER (8,2)
p_bes_srtdeel_btw IN NUMBER, -- NUMBER (3)
p_bes_srtdeel_eenheid IN VARCHAR2, -- VARCHAR2 (30)
p_bes_srtdeel_nr IN VARCHAR2, -- VARCHAR2 (32)
p_prs_bedrijf_key IN NUMBER,
p_ins_srtdeel_vervaldatum IN DATE,
p_ins_srtdeel_image IN VARCHAR2, -- VARCHAR2 (255)
p_ins_srtdeel_veelvoud IN NUMBER -- NUMBER (6)
p_bes_srtdeel_vervaldatum IN DATE,
p_bes_srtdeel_image IN VARCHAR2, -- VARCHAR2 (255)
p_bes_srtdeel_veelvoud IN NUMBER -- NUMBER (6)
) IS
v_ins_srtgroep_key NUMBER(10);
v_ins_srtdeel_key NUMBER(10);
v_bes_srtgroep_key NUMBER(10);
v_bes_srtdeel_key NUMBER(10);
v_prs_bedrijf_key NUMBER(10);
BEGIN
BEGIN
SELECT ins_srtgroep_key
INTO v_ins_srtgroep_key
FROM ins_srtgroep
SELECT bes_srtgroep_key
INTO v_bes_srtgroep_key
FROM bes_srtgroep
WHERE ins_discipline_key = p_ins_discipline_key
AND ins_srtgroep_module = 'BES'
AND ins_srtgroep_upper = upper(p_ins_srtgroep_omschrijving);
AND UPPER(bes_srtgroep_omschrijving) = UPPER(p_bes_srtgroep_omschrijving);
EXCEPTION WHEN NO_DATA_FOUND THEN
v_ins_srtgroep_key := -1;
v_bes_srtgroep_key := -1;
END;
IF v_ins_srtgroep_key = -1 THEN
INSERT INTO ins_srtgroep
(ins_discipline_key, ins_srtgroep_omschrijving, ins_srtgroep_module)
IF v_bes_srtgroep_key = -1 THEN
INSERT INTO bes_srtgroep
(ins_discipline_key, bes_srtgroep_omschrijving)
VALUES
(p_ins_discipline_key, p_ins_srtgroep_omschrijving, 'BES');
(p_ins_discipline_key, p_bes_srtgroep_omschrijving);
SELECT ins_srtgroep_key
INTO v_ins_srtgroep_key
FROM ins_srtgroep
SELECT bes_srtgroep_key
INTO v_bes_srtgroep_key
FROM bes_srtgroep
WHERE ins_discipline_key = p_ins_discipline_key
AND ins_srtgroep_module = 'BES'
AND ins_srtgroep_upper = upper(p_ins_srtgroep_omschrijving);
AND UPPER(bes_srtgroep_omschrijving) = UPPER(p_bes_srtgroep_omschrijving);
END IF;
IF p_prs_bedrijf_key = -1 THEN
@@ -738,61 +736,59 @@ BEGIN
WHERE bes_ins_discipline_key = p_ins_discipline_key;
EXCEPTION WHEN NO_DATA_FOUND THEN
v_prs_bedrijf_key := -1;
END;
END;
ELSE
v_prs_bedrijf_key := p_prs_bedrijf_key;
END IF;
BEGIN
SELECT INS_SRTDEEL_KEY
INTO v_INS_SRTDEEL_KEY
FROM ins_srtdeel sd
WHERE ins_srtgroep_key = v_ins_srtgroep_key
AND ins_srtdeel_nr = p_ins_srtdeel_nr
AND ins_srtdeel_omschrijving = p_ins_srtdeel_omschrijving
AND ins_srtdeel_prijs = p_ins_srtdeel_prijs
AND ins_srtdeel_btw = p_ins_srtdeel_btw
AND ins_srtdeel_eenheid = p_ins_srtdeel_eenheid
SELECT bes_srtDEEL_KEY
INTO v_bes_srtDEEL_KEY
FROM bes_srtdeel sd
WHERE bes_srtgroep_key = v_bes_srtgroep_key
AND bes_srtdeel_nr = p_bes_srtdeel_nr
AND bes_srtdeel_omschrijving = p_bes_srtdeel_omschrijving
AND bes_srtdeel_prijs = p_bes_srtdeel_prijs
AND bes_srtdeel_btw = p_bes_srtdeel_btw
AND bes_srtdeel_eenheid = p_bes_srtdeel_eenheid
AND prs_bedrijf_key = v_prs_bedrijf_key
AND ins_srtdeel_veelvoud = p_ins_srtdeel_veelvoud
AND bes_srtdeel_veelvoud = p_bes_srtdeel_veelvoud
AND rownum = 1;
EXCEPTION WHEN NO_DATA_FOUND THEN
v_ins_srtdeel_key := -1;
v_bes_srtdeel_key := -1;
END;
commit;
IF v_ins_srtdeel_key = -1 THEN
SELECT ins_s_ins_srtinst_keys.nextval INTO v_ins_srtdeel_key FROM DUAL;
IF v_bes_srtdeel_key = -1 THEN
SELECT bes_s_bes_srtdeel_key.nextval INTO v_bes_srtdeel_key FROM DUAL;
INSERT INTO ins_srtdeel
( ins_srtdeel_key
, ins_srtdeel_code
, ins_srtgroep_key
, ins_srtdeel_omschrijving
, ins_srtdeel_prijs
, ins_srtdeel_btw
, ins_srtdeel_eenheid
, ins_srtdeel_nr
INSERT INTO bes_srtdeel
( bes_srtdeel_key
, bes_srtdeel_code
, bes_srtgroep_key
, bes_srtdeel_omschrijving
, bes_srtdeel_prijs
, bes_srtdeel_btw
, bes_srtdeel_eenheid
, bes_srtdeel_nr
, prs_bedrijf_key
, ins_srtdeel_vervaldatum
, ins_srtdeel_image
, ins_srtdeel_veelvoud
, ins_srtdeel_verwijder
, ins_srtdeel_module )
, bes_srtdeel_vervaldatum
, bes_srtdeel_image
, bes_srtdeel_veelvoud
, bes_srtdeel_verwijder)
VALUES
( v_ins_srtdeel_key
, v_ins_srtdeel_key
, v_ins_srtgroep_key
, p_ins_srtdeel_omschrijving
, p_ins_srtdeel_prijs
, p_ins_srtdeel_btw
, p_ins_srtdeel_eenheid
, p_ins_srtdeel_nr
( v_bes_srtdeel_key
, v_bes_srtdeel_key
, v_bes_srtgroep_key
, p_bes_srtdeel_omschrijving
, p_bes_srtdeel_prijs
, p_bes_srtdeel_btw
, p_bes_srtdeel_eenheid
, p_bes_srtdeel_nr
, v_prs_bedrijf_key
, p_ins_srtdeel_vervaldatum
, p_ins_srtdeel_image
, p_ins_srtdeel_veelvoud
, sysdate
, 'BES');
END IF;
, p_bes_srtdeel_vervaldatum
, p_bes_srtdeel_image
, p_bes_srtdeel_veelvoud
, sysdate);
END IF;
END BES_Check_or_Create_Item;
/
@@ -822,13 +818,13 @@ AS
CURSOR tebestellen
IS
SELECT bd.prs_bedrijf_key, bd.prs_bedrijf_naam, s.ins_srtdeel_omschrijving,
NVL (s.ins_srtdeel_eenheid, '') ins_srtdeel_eenheid, NVL (s.ins_srtdeel_prijs, 0) ins_srtdeel_prijs,
s.ins_srtdeel_key, bi.bes_bestelling_item_key, bi.bes_bestelling_item_aantal,
SELECT bd.prs_bedrijf_key, bd.prs_bedrijf_naam, s.bes_srtdeel_omschrijving,
NVL (s.bes_srtdeel_eenheid, '') bes_srtdeel_eenheid, NVL (s.bes_srtdeel_prijs, 0) bes_srtdeel_prijs,
s.bes_srtdeel_key, bi.bes_bestelling_item_key, bi.bes_bestelling_item_aantal,
NVL (b.mld_adres_key_lev, abd.mld_adres_key_lev) mld_adres_key_lev, p.prs_afdeling_key,
abd.mld_adres_key_fac, NVL (s.ins_srtdeel_inkprijs, 0) ins_srtdeel_inkprijs
abd.mld_adres_key_fac, NVL (s.bes_srtdeel_inkprijs, 0) bes_srtdeel_inkprijs
FROM prs_bedrijf bd,
ins_srtdeel s,
bes_srtdeel s,
bes_bestelling_item bi,
bes_bestelling b,
prs_perslid p,
@@ -838,7 +834,7 @@ AS
AND p.prs_afdeling_key = d.prs_afdeling_key
AND b.prs_perslid_key = p.prs_perslid_key
AND bi.bes_bestelling_key = b.bes_bestelling_key
AND s.ins_srtdeel_key = bi.ins_srtdeel_key
AND s.bes_srtdeel_key = bi.bes_srtdeel_key
AND s.prs_bedrijf_key = bd.prs_bedrijf_key
AND b.bes_bestelling_status IN (1, 2, 3, 4) -- om dubbelen te vermijden
AND b.bes_bestelling_key = rfo_key
@@ -950,15 +946,15 @@ BEGIN
-- Indien dit ooit anders moet, bv bundeling, dan moet alleen dit anders:
lbord_id := TO_CHAR(rfo_key)||'/'|| bedrijfvolgnr;
--DBMS_OUTPUT.put_line ('Bestelopdracht maken: ' || TO_CHAR (lbord_key));
INSERT INTO bes_bestelopdr
(bes_bestelopdr_key, bes_bestelopdr_module, bes_bestelopdr_status, prs_bedrijf_key,
(bes_bestelopdr_key, bes_bestelopdr_status, prs_bedrijf_key,
bes_bestelopdr_datum, mld_adres_key_lev, mld_adres_key_fac,
prs_perslid_key,
bes_bestelopdr_item_cnt, bes_bestelopdr_item_cnt_lev, bes_bestelopdr_id
)
VALUES (lbord_key, 'BES', 3, rec1.prs_bedrijf_key,
VALUES (lbord_key, 3, rec1.prs_bedrijf_key,
SYSDATE, rec1.mld_adres_key_lev, factura_key,
i_userkey,
0, 0, lbord_id
@@ -977,8 +973,8 @@ BEGIN
bes_bestelopdr_item_prijs
)
VALUES (bes_s_bes_bestelopdr_item_key.NEXTVAL, aantalopdrachtregels + 1, lbord_key,
rec1.bes_bestelling_item_aantal, NULL, rec1.ins_srtdeel_omschrijving,
rec1.ins_srtdeel_prijs, NULL, rec1.ins_srtdeel_inkprijs,
rec1.bes_bestelling_item_aantal, NULL, rec1.bes_srtdeel_omschrijving,
rec1.bes_srtdeel_prijs, NULL, rec1.bes_srtdeel_inkprijs,
itemprijsmetkorting
);
@@ -1003,6 +999,6 @@ BEGIN
END;
/
REGISTERRUN('$Workfile: BES_PAC.SRC $','$Revision: 73 $')
REGISTERRUN('$Workfile: BES_PAC.SRC $','$Revision: 74 $')
#endif // BES