FCLT#72820 prs_staffel opknappen of uitfaseren

svn path=/Database/trunk/; revision=61845
This commit is contained in:
Erik Groener
2023-09-20 06:37:15 +00:00
parent 0780e37890
commit 973fcf9253
7 changed files with 16 additions and 171 deletions

View File

@@ -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;

View File

@@ -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', '');

View File

@@ -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')

View File

@@ -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;

View File

@@ -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

View File

@@ -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

View File

@@ -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$')