FCLT#72820 prs_staffel opknappen of uitfaseren
svn path=/Database/trunk/; revision=61845
This commit is contained in:
139
BES/BES_PAC.SRC
139
BES/BES_PAC.SRC
@@ -20,21 +20,9 @@ AS
|
||||
FUNCTION calcartikelkortingsprijs (pbes_srtdeel_key IN NUMBER, pbestelaantal IN NUMBER)
|
||||
RETURN NUMBER;
|
||||
|
||||
PROCEDURE calcopdrachtbedragkorting (pprs_bedrijf_key IN NUMBER, pbrutoopdrachtbedrag IN NUMBER,
|
||||
pkortingsbedrag OUT NUMBER, pkorting OUT NUMBER);
|
||||
|
||||
FUNCTION calcopdrachtkorting (pprs_bedrijf_key IN NUMBER, pbrutoopdrachtbedrag IN NUMBER)
|
||||
RETURN NUMBER;
|
||||
|
||||
FUNCTION calcopdrachtkortingbedrag (pprs_bedrijf_key IN NUMBER, pbrutoopdrachtbedrag IN NUMBER)
|
||||
RETURN NUMBER;
|
||||
|
||||
FUNCTION calcbesartikelkortingsprijs (pbes_bestelling_item_key IN NUMBER, ppunchout IN NUMBER)
|
||||
RETURN NUMBER;
|
||||
|
||||
FUNCTION calcbesopdrachtkorting (pbes_bestelopdr_key IN NUMBER, pautoupdate IN NUMBER)
|
||||
RETURN NUMBER;
|
||||
|
||||
FUNCTION calcbesopdrachtkosten (pbes_bestelopdr_key IN NUMBER, pautoupdate IN NUMBER)
|
||||
RETURN NUMBER;
|
||||
|
||||
@@ -277,70 +265,6 @@ AS
|
||||
RETURN lkortingsprijs;
|
||||
END;
|
||||
|
||||
PROCEDURE calcopdrachtbedragkorting (pprs_bedrijf_key IN NUMBER, pbrutoopdrachtbedrag IN NUMBER,
|
||||
pkortingsbedrag OUT NUMBER, pkorting OUT NUMBER)
|
||||
AS
|
||||
lkorting prs_staffel.prs_staffel_korting%TYPE; -- percentage
|
||||
lkortingsbedrag NUMBER;
|
||||
BEGIN
|
||||
-- De staffeltabel bevat intervallen waarvan de bovengrens is opgenomen
|
||||
-- bijvoorbeeld
|
||||
-- 10 -> 1%
|
||||
-- 20 -> 2%
|
||||
-- 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
|
||||
-- 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
|
||||
-- er een verrassend probleem optreden, is dit alvast de tip.
|
||||
SELECT COALESCE(MIN(prs_staffel_korting), 0)
|
||||
INTO lkorting
|
||||
FROM prs_staffel s1
|
||||
WHERE (prs_staffel_grenswaarde > pbrutoopdrachtbedrag OR s1.prs_staffel_grenswaarde IS NULL) --s2.prs_staffel_grenswaarde IS NULL)
|
||||
AND NOT EXISTS
|
||||
(SELECT 'X'
|
||||
FROM prs_staffel s2
|
||||
WHERE s1.prs_bedrijf_key = s2.prs_bedrijf_key
|
||||
AND s2.prs_staffel_grenswaarde < s1.prs_staffel_grenswaarde
|
||||
AND (s2.prs_staffel_grenswaarde > pbrutoopdrachtbedrag OR s2.prs_staffel_grenswaarde IS NULL))
|
||||
AND prs_bedrijf_key = pprs_bedrijf_key
|
||||
AND pbrutoopdrachtbedrag > 0;
|
||||
|
||||
lkortingsbedrag := (lkorting / 100) * pbrutoopdrachtbedrag;
|
||||
|
||||
-- RETURN lkortingsbedrag;
|
||||
pkortingsbedrag := lkortingsbedrag;
|
||||
pkorting := lkorting;
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
-- RETURN 0;
|
||||
pkortingsbedrag := 0;
|
||||
pkorting := 0;
|
||||
END;
|
||||
|
||||
FUNCTION calcopdrachtkorting (pprs_bedrijf_key IN NUMBER, pbrutoopdrachtbedrag IN NUMBER)
|
||||
RETURN NUMBER
|
||||
AS
|
||||
lkorting prs_staffel.prs_staffel_korting%TYPE; -- percentage
|
||||
lkortingsbedrag NUMBER;
|
||||
BEGIN
|
||||
BES.calcopdrachtbedragkorting(pprs_bedrijf_key, pbrutoopdrachtbedrag, lkortingsbedrag, lkorting);
|
||||
RETURN lkorting;
|
||||
END;
|
||||
|
||||
FUNCTION calcopdrachtkortingbedrag (pprs_bedrijf_key IN NUMBER, pbrutoopdrachtbedrag IN NUMBER)
|
||||
RETURN NUMBER
|
||||
AS
|
||||
lkorting prs_staffel.prs_staffel_korting%TYPE; -- percentage
|
||||
lkortingsbedrag NUMBER;
|
||||
BEGIN
|
||||
BES.calcopdrachtbedragkorting(pprs_bedrijf_key, pbrutoopdrachtbedrag, lkortingsbedrag, lkorting);
|
||||
RETURN lkortingsbedrag;
|
||||
END;
|
||||
|
||||
FUNCTION calcbesartikelkortingsprijs (pbes_bestelling_item_key IN NUMBER, ppunchout IN NUMBER)
|
||||
RETURN NUMBER
|
||||
AS
|
||||
@@ -414,7 +338,7 @@ AS
|
||||
AND bi.bes_bestelling_item_key = pbes_bestelling_item_key;
|
||||
END IF;
|
||||
|
||||
-- Vindt staffelrecord; zie(!) opmerkingen bij prs_staffel in bes.calcopdrachtkorting.
|
||||
-- Vindt staffelrecord;
|
||||
BEGIN
|
||||
SELECT COALESCE(MIN(bes_staffel_korting), 0)
|
||||
INTO lstaffelkorting
|
||||
@@ -451,62 +375,6 @@ AS
|
||||
RETURN lkortingsprijs;
|
||||
END;
|
||||
|
||||
FUNCTION calcbesopdrachtkorting (pbes_bestelopdr_key IN NUMBER, pautoupdate IN NUMBER)
|
||||
RETURN NUMBER
|
||||
AS
|
||||
lbrutoopdrachtbedrag NUMBER;
|
||||
lkorting prs_staffel.prs_staffel_korting%TYPE; -- percentage
|
||||
lstaffelkortingbedrag NUMBER;
|
||||
lkortingsbedrag NUMBER;
|
||||
BEGIN
|
||||
---- som van de bes_bestelopdr_item_prijs > bedrijf.staffel -> kortingspercentage * (sum aantal * bes_bestelopdr_item_prijs) = bes_bestelopdr_korting
|
||||
-- merk op: deze staffel is op prijs (niet op aantallen)
|
||||
SELECT COALESCE(SUM (bes_bestelopdr_item_prijs * bes_bestelopdr_item_aantal), 0)
|
||||
INTO lbrutoopdrachtbedrag
|
||||
FROM bes_bestelopdr_item
|
||||
WHERE bes_bestelopdr_key = pbes_bestelopdr_key;
|
||||
|
||||
-- De staffeltabel bevat intervallen waarvan de bovengrens is opgenomen
|
||||
-- bijvoorbeeld
|
||||
-- 10 -> 1%
|
||||
-- 20 -> 2%
|
||||
-- 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
|
||||
-- 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
|
||||
-- er een verrassend probleem optreden, is dit alvast de tip.
|
||||
SELECT COALESCE(MIN(prs_staffel_korting), 0)
|
||||
INTO lkorting
|
||||
FROM prs_staffel s1
|
||||
WHERE (prs_staffel_grenswaarde > lbrutoopdrachtbedrag OR s1.prs_staffel_grenswaarde IS NULL)
|
||||
AND NOT EXISTS
|
||||
(SELECT 'X'
|
||||
FROM prs_staffel s2
|
||||
WHERE s1.prs_bedrijf_key = s2.prs_bedrijf_key
|
||||
AND s2.prs_staffel_grenswaarde < s1.prs_staffel_grenswaarde
|
||||
AND (s2.prs_staffel_grenswaarde > lbrutoopdrachtbedrag OR s2.prs_staffel_grenswaarde IS NULL))
|
||||
AND prs_bedrijf_key = (SELECT prs_bedrijf_key
|
||||
FROM bes_bestelopdr
|
||||
WHERE bes_bestelopdr_key = pbes_bestelopdr_key);
|
||||
|
||||
lkortingsbedrag := (lkorting / 100) * lbrutoopdrachtbedrag;
|
||||
|
||||
IF pautoupdate > 0
|
||||
THEN
|
||||
UPDATE bes_bestelopdr
|
||||
SET bes_bestelopdr_korting = lkortingsbedrag
|
||||
WHERE bes_bestelopdr_key = pbes_bestelopdr_key;
|
||||
END IF;
|
||||
|
||||
RETURN lkortingsbedrag;
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
RETURN 0;
|
||||
END;
|
||||
|
||||
FUNCTION calcbesopdrachtkosten (pbes_bestelopdr_key IN NUMBER, pautoupdate IN NUMBER)
|
||||
RETURN NUMBER
|
||||
@@ -780,7 +648,6 @@ AS
|
||||
l_item_brutoprijs bes_bestelopdr_item.bes_bestelopdr_item_brutoprijs%TYPE;
|
||||
l_item_prijs bes_bestelopdr_item.bes_bestelopdr_item_prijs%TYPE;
|
||||
l_item_inkprijs bes_bestelopdr_item.bes_bestelopdr_item_inkprijs%TYPE;
|
||||
besopdrachtkorting NUMBER (8, 2);
|
||||
besopdrachtkosten NUMBER (8, 2);
|
||||
bedrijfvolgnr NUMBER (3);
|
||||
CURSOR tebestellen
|
||||
@@ -908,11 +775,9 @@ AS
|
||||
'');
|
||||
-- Bepaal opdrachtkorting en opdrachtkosten en sla deze op
|
||||
-- Met parameter 1 geven we aan dat de berekende waarde automaisch ook word opgeslagen
|
||||
besopdrachtkorting := bes.calcbesopdrachtkorting(lbord_key, 1);
|
||||
besopdrachtkosten := bes.calcbesopdrachtkosten(lbord_key, 1);
|
||||
UPDATE bes_bestelopdr
|
||||
SET bes_bestelopdr_levkosten = besopdrachtkosten
|
||||
, bes_bestelopdr_korting = besopdrachtkorting
|
||||
WHERE bes_bestelopdr_key = lbord_key;
|
||||
END IF;
|
||||
-- Op naar de volgende
|
||||
@@ -988,11 +853,9 @@ AS
|
||||
'');
|
||||
-- Bepaal opdrachtkorting en opdrachtkosten en sla deze op
|
||||
-- Met parameter 1 geven we aan dat de berekende waarde automaisch ook word opgeslagen
|
||||
besopdrachtkorting := bes.calcbesopdrachtkorting(lbord_key, 1);
|
||||
besopdrachtkosten := bes.calcbesopdrachtkosten(lbord_key, 1);
|
||||
UPDATE bes_bestelopdr
|
||||
SET bes_bestelopdr_levkosten = besopdrachtkosten
|
||||
, bes_bestelopdr_korting = besopdrachtkorting
|
||||
WHERE bes_bestelopdr_key = lbord_key;
|
||||
END IF;
|
||||
END;
|
||||
|
||||
@@ -2850,7 +2850,6 @@ DEF_MENUITEM(2, 'lcl_menu_alg_setting' , '', 'ALG', 'appl/fac/fac_setti
|
||||
DEF_MENUKOP(2, 'lcl_facmgt_prs', 'fa-users');
|
||||
DEF_MENUITEM(2, 'lcl_menu_prs_functies' , '', 'PRS', 'appl/mgt/prs_srtperslid.asp', 0, 0, 'WEB_PRSMSU', 'W', '1', '');
|
||||
DEF_MENUITEM(2, 'lcl_menu_prs_diensten' , '', 'PRS', 'appl/mgt/prs_dienst.asp', 0, 0, 'WEB_PRSMSU', 'W', '1', '');
|
||||
DEF_MENUITEM(2, 'lcl_menu_prs_staffels' , '', 'PRS', 'appl/mgt/prs_staffel.asp', 0, 0, 'WEB_PRSMGT', 'W', '1', '');
|
||||
DEF_MENUITEM(2, 'lcl_menu_prs_relatietypes' , '', 'PRS', 'appl/mgt/prs_relatietype.asp', 0, 0, 'WEB_PRSMGT', 'W', '1', '');
|
||||
DEF_MENUITEM(2, 'lcl_menu_prs_bedrijfkenmerken' , '', 'PRS', 'appl/mgt/prs_kenmerk.asp?level=B', 0, 0, 'WEB_PRSMGT', 'W', '1', '');
|
||||
DEF_MENUITEM(2, 'lcl_menu_prs_afdelingskenmerke', '', 'PRS', 'appl/mgt/prs_kenmerk.asp?level=A', 0, 0, 'WEB_PRSMGT', 'W', '1', '');
|
||||
|
||||
@@ -4294,7 +4294,6 @@ FAC_LCL('lcl_menu_alg_setting', 'Instellingen', 'Settings')
|
||||
FAC_LCL('lcl_facmgt_prs', 'Organisatiebeheer', 'Organisation management')
|
||||
FAC_LCL('lcl_menu_prs_functies', 'Functies', 'Functions')
|
||||
FAC_LCL('lcl_menu_prs_diensten', 'Diensten', 'Services')
|
||||
FAC_LCL('lcl_menu_prs_staffels', 'Staffels', 'Pace lists')
|
||||
FAC_LCL('lcl_menu_prs_relatietypes', 'Relatietypes', 'Relation types')
|
||||
FAC_LCL('lcl_menu_prs_bedrijfkenmerken', 'Kenmerken van Bedrijf', 'Company Properties')
|
||||
FAC_LCL('lcl_menu_prs_afdelingskenmerke', 'Kenmerken van Afdeling', 'Department Properties')
|
||||
@@ -4645,7 +4644,6 @@ FAC_LCL('lcl_bes_RFO_regApprov', 'De bestelaanvraag wordt ter fiattering aangebo
|
||||
FAC_LCL('lcl_bes_date_future', 'Afleverdatum moet in de toekomst liggen', 'Delivery date must be a future date')
|
||||
FAC_LCL('lcl_bes_date_farfuture', 'Deze bestelling is te ver in de toekomst', 'This purchase order is too far in the future')
|
||||
FAC_LCL('lcl_bes_date_holiday', 'De aangegeven dag is geen werkdag! Doorgaan?', 'The chosen day is not a working day! Continue?')
|
||||
FAC_LCL('lcl_bes_staffel_company', 'Staffels van leverancier', 'Supplier pace list')
|
||||
FAC_LCL('lcl_bes_staffel_group', 'Groep staffel', 'Group pace list')
|
||||
FAC_LCL('lcl_bes_staffel_individual', 'Individuele staffel', 'Individual pace list')
|
||||
FAC_LCL('lcl_bes_st_discount_gp', 'Korting groepsstaffel', 'Group pace list discount')
|
||||
@@ -6709,11 +6707,6 @@ FAC_LCL('prs_dienst_omschrijving', 'Dienst', 'Service')
|
||||
FAC_LCL('prs_dienst_hint', 'Hint', 'Hint')
|
||||
FAC_LCL('prs_dienst_key', 'Dienst', 'Service')
|
||||
|
||||
FAC_LCL('prs_staffel', 'Staffel', 'Pace list')
|
||||
FAC_LCL('prs_staffel_m', 'Staffels', 'Pace lists')
|
||||
FAC_LCL('prs_staffel_grenswaarde', 'Grenswaarde tot', 'Limit value till')
|
||||
FAC_LCL('prs_staffel_korting', 'Kortingspercentage', 'Discount percentage')
|
||||
|
||||
FAC_LCL('prs_kenmerk', 'Persoonskenmerk', 'Person property')
|
||||
FAC_LCL('prs_kenmerk_m', 'Details persoonskenmerk', 'Person property details')
|
||||
FAC_LCL('prs_srtperslid_key', 'Functie', 'Function')
|
||||
|
||||
@@ -30,7 +30,6 @@ CREATE SEQUENCE prs_s_prs_kostencombinatie_key MINVALUE 1;
|
||||
CREATE SEQUENCE prs_s_prs_kostensoortgrp_key MINVALUE 1;
|
||||
|
||||
CREATE SEQUENCE prs_s_prs_collega_key MINVALUE 1;
|
||||
CREATE SEQUENCE prs_s_prs_staffel_key MINVALUE 1;
|
||||
CREATE SEQUENCE prs_s_prs_perslid_inzet_key MINVALUE 1;
|
||||
CREATE SEQUENCE prs_s_prs_relatietype_key MINVALUE 10;
|
||||
|
||||
|
||||
@@ -1355,18 +1355,6 @@ CREATE_TABLE(prs_kostencombinatie,0) (
|
||||
DEFAULT SYSDATE
|
||||
);
|
||||
|
||||
CREATE_TABLE(prs_staffel, 0)
|
||||
(
|
||||
prs_staffel_key
|
||||
NUMBER (10) PRIMARY KEY,
|
||||
prs_bedrijf_key
|
||||
NUMBER (10) NOT NULL REFERENCES prs_bedrijf (prs_bedrijf_key) ON DELETE CASCADE,
|
||||
prs_staffel_grenswaarde
|
||||
NUMBER (12),
|
||||
prs_staffel_korting
|
||||
NUMBER (12, 6) NOT NULL
|
||||
);
|
||||
|
||||
CREATE_TABLE(prs_perslid_inzetbaar, 0)
|
||||
(
|
||||
prs_perslid_inzetbaar_key
|
||||
|
||||
@@ -888,14 +888,6 @@ BEGIN
|
||||
END;
|
||||
/
|
||||
|
||||
CREATE_TRIGGER(prs_t_prs_staffel_B_IU)
|
||||
BEFORE INSERT OR UPDATE ON prs_staffel
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
UPDATE_PRIMARY_KEY(prs_staffel_key, prs_s_prs_staffel_key);
|
||||
END;
|
||||
/
|
||||
|
||||
CREATE_TRIGGER(prs_t_prs_perslid_inzet_B_IU)
|
||||
BEFORE INSERT OR UPDATE ON prs_perslid_inzetbaar
|
||||
FOR EACH ROW
|
||||
|
||||
@@ -186,12 +186,12 @@ CREATE INDEX mld_i_mld_opdr_note2 ON mld_opdr_note(fac_tracking_key);
|
||||
DELETE FROM fac_usrrap WHERE LOWER (fac_usrrap_view_name) = 'mld_v_udr_meldingkenmerk_cnd' AND fac_usrrap_functie = 32;
|
||||
DELETE FROM fac_usrrap WHERE LOWER (fac_usrrap_view_name) = 'mld_v_udr_opdrachtkenmerk_cnd' AND fac_usrrap_functie = 32;
|
||||
DELETE FROM fac_usrrap WHERE LOWER (fac_usrrap_view_name) = 'ins_v_udr_deelkenmerk_cnd' AND fac_usrrap_functie = 32;
|
||||
DELETE FROM fac_locale WHERE fac_locale_tekst = 'UDR: Calls plus';
|
||||
DELETE FROM fac_locale WHERE fac_locale_tekst = 'Basic report for call+property reports';
|
||||
DELETE FROM fac_locale WHERE fac_locale_tekst = 'UDR: Calls plus';
|
||||
DELETE FROM fac_locale WHERE fac_locale_tekst = 'Basic report for call+property reports';
|
||||
DELETE FROM fac_locale WHERE fac_locale_tekst = 'UDR: Order plus';
|
||||
DELETE FROM fac_locale WHERE fac_locale_tekst = 'Basic report for order+property reports';
|
||||
DELETE FROM fac_locale WHERE fac_locale_tekst = 'Basic report for order+property reports';
|
||||
DELETE FROM fac_locale WHERE fac_locale_tekst = 'UDR: Objects plus';
|
||||
DELETE FROM fac_locale WHERE fac_locale_tekst = 'Basic report for object+property reports';
|
||||
DELETE FROM fac_locale WHERE fac_locale_tekst = 'Basic report for object+property reports';
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////// SGGR#79416
|
||||
CREATE VIEW ins_v_udr_sensorhistorie AS SELECT * FROM DUAL;
|
||||
@@ -245,6 +245,17 @@ UPDATE fac_setting
|
||||
WHERE fac_setting_pvalue = 2
|
||||
AND fac_setting_name IN ('res_planbord_options','res_forselect_options');
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////// FCLT#72820
|
||||
BEGIN
|
||||
adm.trydrop ('TRIGGER prs_t_prs_staffel_B_IU');
|
||||
adm.trydrop ('SEQUENCE prs_s_prs_staffel_key');
|
||||
adm.trydrop ('TABLE prs_staffel');
|
||||
END;
|
||||
/
|
||||
DELETE FROM fac_menuitems WHERE fac_menuitems_label = 'lcl_menu_prs_staffels';
|
||||
DELETE FROM fac_menu WHERE fac_menu_alturl like 'appl/mgt/prs_staffel.asp%';
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////// FCLT#00000
|
||||
REGISTERONCE('$Id$')
|
||||
|
||||
|
||||
Reference in New Issue
Block a user