AASA#82181 -- Verrekenen Stategeld inpassen in proces van bundel-catering

svn path=/Customer/trunk/; revision=65398
This commit is contained in:
Jos Migo
2024-07-03 08:03:19 +00:00
parent a4fb873443
commit 399fc7b4dc

View File

@@ -133,15 +133,23 @@ CREATE OR REPLACE VIEW aasa_v_export_budget_tracker (RESULT, result_order) AS
-- Als de kostenplaats bij de reservering begint met 77 dan wordt de (top)kostenplaats bepaald a.d.h.v. de cateraar.
CREATE OR REPLACE VIEW aasa_v_catering_kpn
(
res_rsv_ruimte_key,
res_reservering_nr,
res_rsv_artikel_key,
res_rsv_artikel_prijs,
res_artikel_kostenalgemeen_tot,
res_rsv_artikel_levering,
prs_bedrijf_key,
bu_kostenplaats_key
)
AS
SELECT res_rsv_artikel_key,
SELECT rrr.res_rsv_ruimte_key,
rrr.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr
res_reservering_nr,
res_rsv_artikel_key,
res_rsv_artikel_prijs,
ra.res_artikel_kostenalgemeen * rra.res_rsv_artikel_aantal
res_artikel_kostenalgemeen_tot,
res_rsv_artikel_levering,
rdp.prs_bedrijf_key,
DECODE(SUBSTR(k.prs_kostenplaats_nr, 1,2)
@@ -175,7 +183,7 @@ CREATE OR REPLACE VIEW aasa_v_export_bundel_catering
result_order
)
AS
SELECT res_rsv_artikel_key || ';' || res_rsv_artikel_prijs result,
SELECT res_rsv_artikel_key || ';' || res_rsv_artikel_prijs || ';' || res_artikel_kostenalgemeen_tot result,
res_rsv_artikel_key result_order
FROM aasa_v_catering_kpn;
@@ -186,19 +194,47 @@ CREATE OR REPLACE PROCEDURE aasa_export_bundel_catering (
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2)
AS
-- De cateraars onder SABIC
CURSOR c_bedr
IS
SELECT prs_bedrijf_key
FROM res_disc_params
GROUP BY prs_bedrijf_key;
SELECT dp.prs_bedrijf_key, b.prs_bedrijf_naam
FROM res_disc_params dp, prs_bedrijf b
WHERE dp.prs_bedrijf_key = b.prs_bedrijf_key
GROUP BY dp.prs_bedrijf_key, b.prs_bedrijf_naam;
-- Twee soorten bundelopdrachten (per cateraar, per BU_kp):
----- van de totaal-prijs van de catering
----- van de algemene kosten (intern administratief) die op artikel zijn vastgelegd - betreft voor Sabic het statiegeld (zie ook ticket AASA#82181)
CURSOR c_kpn (lev_date DATE, p_bedrijf_key NUMBER)
IS
SELECT bu_kostenplaats_key, sum(res_rsv_artikel_prijs) prijs
FROM aasa_v_catering_kpn
WHERE res_rsv_artikel_levering < lev_date
AND prs_bedrijf_key = p_bedrijf_key
GROUP BY bu_kostenplaats_key;
SELECT v.prs_bedrijf_key,
v.bu_kostenplaats_key,
v.bedrag,
v.soort,
v.volgorde
FROM ( SELECT prs_bedrijf_key,
bu_kostenplaats_key,
SUM (res_rsv_artikel_prijs) bedrag,
'prijs_catering' soort,
2 volgorde
FROM aasa_v_catering_kpn
WHERE res_rsv_artikel_levering < lev_date
AND prs_bedrijf_key = p_bedrijf_key
GROUP BY prs_bedrijf_key, bu_kostenplaats_key
UNION
SELECT prs_bedrijf_key,
bu_kostenplaats_key,
SUM (res_artikel_kostenalgemeen_tot) bedrag,
'kosten_algemeen' soort,
1 volgorde
FROM aasa_v_catering_kpn
WHERE res_rsv_artikel_levering < lev_date
AND prs_bedrijf_key = p_bedrijf_key
AND res_artikel_kostenalgemeen_tot IS NOT NULL
GROUP BY prs_bedrijf_key, bu_kostenplaats_key) v
ORDER BY v.prs_bedrijf_key, v.bu_kostenplaats_key, v.volgorde ;
c_catmld_uitvoertijd mld_stdmelding.mld_stdmelding_t_uitvoertijd%TYPE := MLD_T_UITVOERTIJD(2, 'D');
v_errormsg VARCHAR (200);
@@ -360,9 +396,9 @@ BEGIN
v_date - 1,
fac.datumtijdplusuitvoertijd (SYSDATE, 1, 'DAGEN'),
'MLD',
'Cateringreserveringen maand: ' || v_month,
rec.prijs,
rec.prijs,
'Cateringreserveringen maand: ' || v_month || DECODE(rec.soort, 'kosten_algemeen', ' - statiegeld', ''),
rec.bedrag,
rec.bedrag,
v_mld_opdr_bedrijfopdr_volgnr)
RETURNING mld_opdr_key INTO v_mld_opdr_key;
@@ -371,25 +407,33 @@ BEGIN
-- meld de opdracht af
MLD.setopdrachtstatus (v_mld_opdr_key, 6, v_aanvrager);
v_errormsg := 'Voeg regels toe aan mapping tabel';
-- Indien van toepassing/aanwezig wordt eerst de bundelopdracht voor 'kosten_algemeen' aangemaakt (volgnr 1) en daarna de bundelopdracht voor prijs_catering.
-- Na deze laatste prijs_catering-opdracht gaan we de regels aan de mapping-tabel toevoegen en desbetreffende artikelregels op verwerkt zetten
IF rec.soort = 'prijs_catering'
THEN
v_errormsg := 'Voeg regels toe aan mapping tabel';
INSERT INTO aaxx_bundel_catering_ref (mld_opdr_key, res_rsv_artikel_key, res_rsv_artikel_prijs, res_rsv_artikel_verwerkt)
SELECT v_mld_opdr_key, res_rsv_artikel_key, res_rsv_artikel_prijs, v_date
FROM aasa_v_catering_kpn c
WHERE res_rsv_artikel_levering < v_date
AND COALESCE(c.bu_kostenplaats_key, -1) = COALESCE(rec.bu_kostenplaats_key, -1)
AND c.prs_bedrijf_key = rec1.prs_bedrijf_key -- ivm probleem 58219
;
INSERT INTO aaxx_bundel_catering_ref (mld_opdr_key, res_rsv_artikel_key, res_rsv_artikel_prijs, res_artikel_kostenalgemeen_tot, res_rsv_artikel_verwerkt)
SELECT v_mld_opdr_key, res_rsv_artikel_key, res_rsv_artikel_prijs, res_artikel_kostenalgemeen_tot, v_date
FROM aasa_v_catering_kpn c
WHERE res_rsv_artikel_levering < v_date
AND COALESCE(c.bu_kostenplaats_key, -1) = COALESCE(rec.bu_kostenplaats_key, -1)
AND c.prs_bedrijf_key = rec1.prs_bedrijf_key -- ivm probleem 58219
;
v_errormsg := 'Pas de status van de artikelen aan ' || v_mld_opdr_key;
UPDATE res_rsv_artikel rra
SET res_rsv_artikel_verwerkt = SYSDATE,
res_status_bo_key = 6
WHERE EXISTS
(SELECT mld_opdr_key
FROM aaxx_bundel_catering_ref bc
WHERE bc.mld_opdr_key = v_mld_opdr_key
AND bc.res_rsv_artikel_key = rra.res_rsv_artikel_key);
v_errormsg := 'Pas de status van de artikelen aan ' || v_mld_opdr_key;
UPDATE res_rsv_artikel rra
SET res_rsv_artikel_verwerkt = SYSDATE,
res_status_bo_key = 6
WHERE EXISTS
(SELECT mld_opdr_key
FROM aaxx_bundel_catering_ref bc
WHERE bc.mld_opdr_key = v_mld_opdr_key
AND bc.res_rsv_artikel_key = rra.res_rsv_artikel_key);
END IF;
EXCEPTION
@@ -402,7 +446,7 @@ BEGIN
END;
ELSE
fac.writelog (p_applname, 'E', 'Een bedrag van: ' || rec.prijs || ' euro kan niet aan een kostenplaats gekoppeld worden!', '');
fac.writelog (p_applname, 'E', 'Een bedrag van: ' || rec.bedrag || ' euro kan niet aan een kostenplaats gekoppeld worden!', '');
END IF;
END;
END LOOP;
@@ -426,6 +470,7 @@ CREATE OR REPLACE VIEW aasa_v_rap_catering_inkoop
fclt_f_artikelnummer,
artikelomschrijving,
interne_artikelprijs,
res_artikel_kostenalgemeen_st,
aantal,
fclt_f_besteller,
afdeling
@@ -457,6 +502,8 @@ AS
ROUND ((rra.res_rsv_artikel_prijs / rra.res_rsv_artikel_aantal),
5)
interneprijs,
res_artikel_kostenalgemeen
res_artikel_kostenalgemeen_st,
rra.res_rsv_artikel_aantal
aantal,
pf.prs_perslid_naam_full