BLST#66395 -- inrichten kv6

svn path=/Customer/trunk/; revision=55720
This commit is contained in:
Norbert Wassink
2022-04-28 14:49:55 +00:00
parent 18c4b1f4ec
commit eba82e0a8a

View File

@@ -96,6 +96,8 @@ AS
PROCEDURE bes_bgd_lyreco (p_bestelling_key IN NUMBER);
PROCEDURE bes_geen_cpv_btw (p_bestelling_key IN NUMBER);
END;
/
@@ -1041,59 +1043,66 @@ AS
v_kenmerk_key NUMBER (10);
CURSOR bestelitem IS
SELECT bi.bes_bestelling_item_key,
sd.bes_srtdeel_notitie,
fac.safe_to_number (btw_key.btw_key) btw_key,
btw_key.catalogus catalogus
FROM bes_bestelling b,
bes_srtdeel sd,
bes_srtgroep sg,
bes_discipline cat,
bes_bestelling_item bi,
prs_bedrijf l,
(SELECT ud.fac_usrdata_key btw_key,
ud.fac_usrdata_upper btw,
k.bes_srtinstallatie_key catalogus
FROM bes_srtkenmerk sk,
fac_kenmerkdomein kd,
fac_usrtab ut,
fac_usrdata ud,
bes_kenmerk k
WHERE sk.bes_srtkenmerk_upper = 'BTW'
AND sk.fac_kenmerkdomein_key = kd.fac_kenmerkdomein_key
AND kd.fac_usrtab_key = ut.fac_usrtab_key
AND ut.fac_usrtab_key = ud.fac_usrtab_key
AND k.bes_srtkenmerk_key = sk.bes_srtkenmerk_key) btw_key
WHERE sd.bes_srtdeel_notitie IS NOT NULL -- notitie wordt vanuit OCI gevuld met BTW
AND b.bes_bestelling_key = bi.bes_bestelling_key
AND bi.bes_srtdeel_key = sd.bes_srtdeel_key
AND sd.prs_bedrijf_key = l.prs_bedrijf_key
AND l.prs_bedrijf_naam_upper LIKE '%LYRECO%' --- alleen voor Lyreco
AND UPPER (sd.bes_srtdeel_notitie) = btw_key.BTW
AND sg.bes_srtgroep_key = sd.bes_srtgroep_key
AND cat.ins_discipline_key = sg.ins_discipline_key
AND btw_key.catalogus = cat.ins_discipline_key
AND b.bes_bestelling_key = p_bestelling_key;
BEGIN
SELECT DISTINCT bi.bes_bestelling_item_key,
sd.bes_srtdeel_key,
sd.bes_srtdeel_notitie,
fac.safe_to_number (btw_key.btw_key) btw_key,
btw_key.btw_perc btw_perc,
btw_key.catalogus catalogus
FROM bes_bestelling b,
bes_srtdeel sd,
bes_srtgroep sg,
bes_discipline cat,
bes_bestelling_item bi,
prs_bedrijf l,
(SELECT ud.fac_usrdata_key btw_key,
ud.fac_usrdata_upper btw,
ud.fac_usrdata_prijs btw_perc,
k.bes_srtinstallatie_key catalogus
FROM bes_srtkenmerk sk,
fac_kenmerkdomein kd,
fac_usrtab ut,
fac_usrdata ud,
bes_kenmerk k
WHERE sk.bes_srtkenmerk_upper = 'BTW'
AND sk.fac_kenmerkdomein_key =
kd.fac_kenmerkdomein_key
AND kd.fac_usrtab_key = ut.fac_usrtab_key
AND ut.fac_usrtab_key = ud.fac_usrtab_key
AND k.bes_srtkenmerk_key = sk.bes_srtkenmerk_key)
btw_key
WHERE sd.bes_srtdeel_notitie IS NOT NULL -- notitie wordt vanuit OCI gevuld met BTW
AND b.bes_bestelling_key = bi.bes_bestelling_key
AND bi.bes_srtdeel_key = sd.bes_srtdeel_key
AND sd.prs_bedrijf_key = l.prs_bedrijf_key
AND l.prs_bedrijf_naam_upper LIKE '%LYRECO%' --- alleen voor Lyreco
AND UPPER (sd.bes_srtdeel_notitie) = btw_key.BTW
AND sg.bes_srtgroep_key = sd.bes_srtgroep_key
AND cat.ins_discipline_key = sg.ins_discipline_key
AND btw_key.catalogus = cat.ins_discipline_key
AND b.bes_bestelling_key = p_bestelling_key;
BEGIN
FOR rec IN bestelitem
LOOP
SELECT k.bes_kenmerk_key
INTO v_kenmerk_key
FROM bes_srtkenmerk sk, bes_kenmerk k
WHERE sk.bes_srtkenmerk_upper = 'BTW'
AND sk.bes_srtkenmerk_key = k.bes_srtkenmerk_key
AND k.bes_kenmerk_verwijder is null
AND k.bes_srtinstallatie_key = rec.catalogus;
SELECT k.bes_kenmerk_key
INTO v_kenmerk_key
FROM bes_srtkenmerk sk, bes_kenmerk k
WHERE sk.bes_srtkenmerk_upper = 'BTW'
AND sk.bes_srtkenmerk_key = k.bes_srtkenmerk_key
AND k.bes_kenmerk_verwijder IS NULL
AND k.bes_srtinstallatie_key = rec.catalogus;
-- we kunnen rustig een insert doen, het is nooit een update
INSERT INTO bes_kenmerkbesteli (bes_bestelling_item_key,
bes_kenmerk_key,
bes_kenmerkbesteli_waarde)
VALUES (rec.bes_bestelling_item_key, v_kenmerk_key, rec.btw_key);
--- we werken dan ook direct maar even netjes de BTW bij het soortdeel bij met het juiste BTW perc.
UPDATE bes_srtdeel sd
SET sd.bes_srtdeel_btw = fac.safe_to_number(rec.btw_perc)
WHERE sd.bes_srtdeel_key = rec.bes_srtdeel_key;
COMMIT;
END LOOP;
EXCEPTION
@@ -1251,6 +1260,101 @@ AS
'');
END;
PROCEDURE bes_geen_cpv_btw (p_bestelling_key IN NUMBER)
AS
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_errormsg VARCHAR2 (200);
v_srtnotificatie_key NUMBER;
v_onderwerp VARCHAR2 (200);
-- Artikelen zonder CPV code of zonder BTW code, de hele order moet geannuleerd worden
-- Omdat een bestelling in theorie tot meer bestelopdrachten kunnen leiden splitsen we
-- Eerst bestelopdrachten dan bestelaanvragen
CURSOR bestelopdracht IS
SELECT DISTINCT (bo.bes_bestelopdr_key)
FROM bes_bestelling b,
bes_srtdeel sd,
bes_bestelling_item bi,
bes_bestelopdr bo,
bes_bestelopdr_item boi,
prs_bedrijf l
WHERE (sd.bes_srtdeel_details_loc IS NULL -- details loc wordt vanuit OCI gevuld met BGD codes
OR sd.bes_srtdeel_notitie IS NULL) -- notitie wordt vanuit OCI gevuld met BTW
AND b.bes_bestelling_key = bi.bes_bestelling_key
AND bi.bes_srtdeel_key = sd.bes_srtdeel_key
AND sd.prs_bedrijf_key = l.prs_bedrijf_key
AND l.prs_bedrijf_naam_upper LIKE '%LYRECO%'
AND bi.bes_bestelopdr_item_key =
boi.bes_bestelopdr_item_key(+)
AND boi.bes_bestelopdr_key = bo.bes_bestelopdr_key(+)
AND b.bes_bestelling_key = p_bestelling_key;
CURSOR bestelling IS
SELECT DISTINCT (b.bes_bestelling_key)
FROM bes_bestelling b,
bes_srtdeel sd,
bes_bestelling_item bi,
prs_bedrijf l
WHERE (sd.bes_srtdeel_details_loc IS NULL -- details loc wordt vanuit OCI gevuld met BGD codes
OR sd.bes_srtdeel_notitie IS NULL) -- notitie wordt vanuit OCI gevuld met BTW
AND b.bes_bestelling_key = bi.bes_bestelling_key
AND bi.bes_srtdeel_key = sd.bes_srtdeel_key
AND sd.prs_bedrijf_key = l.prs_bedrijf_key
AND l.prs_bedrijf_naam_upper LIKE '%LYRECO%'
AND b.bes_bestelling_key = p_bestelling_key;
BEGIN
SELECT sn.fac_srtnotificatie_key
INTO v_srtnotificatie_key
FROM fac_srtnotificatie sn
WHERE sn.fac_srtnotificatie_code = 'BESCAN';
FOR rec IN bestelopdracht
LOOP
bes.setbestelopdrstatus (rec.bes_bestelopdr_key, 8, 3);
SELECT 'Bestelling '
|| rec.bes_bestelopdr_key
|| ' geannuleerd ivm ontbreken CVP of BTW'
INTO v_onderwerp
FROM DUAL;
INSERT INTO fac_notificatie (fac_srtnotificatie_key,
fac_notificatie_status,
fac_notificatie_receiver_email,
fac_notificatie_oms,
fac_notificatie_refkey,
fac_notificatie_prioriteit)
VALUES (v_srtnotificatie_key,
2,
'FCC@BELASTINGDIENST.NL',
v_onderwerp,
rec.bes_bestelopdr_key,
2);
END LOOP;
FOR rec IN bestelling
LOOP
bes.setbestellingstatus (rec.bes_bestelling_key, 8, 3);
END LOOP;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
'OTHERS (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.writelog ('Annuleren order',
'E',
v_errormsg,
'');
END;
END;
/
@@ -2460,7 +2564,8 @@ AS
AND bki.bes_bestelling_item_key=ba.bes_bestelling_item_key
AND bk.bes_kenmerk_key = bki.bes_kenmerk_key
AND bsk.bes_srtkenmerk_key = bk.bes_srtkenmerk_key
AND bsk.bes_srtkenmerk_upper='BTW') meta_art,
AND bsk.bes_srtkenmerk_upper='BTW') meta_art,
(SELECT bkb.bes_kenmerkbesteli_waarde
FROM bes_kenmerk bk, bes_srtkenmerk bs, bes_kenmerkbesteli bkb
WHERE bs.bes_srtkenmerk_upper='CPV_CODE'
@@ -2585,13 +2690,14 @@ AS
CURSOR sel
IS
SELECT distinct b.bes_bestelopdr_key bes_key,
bb.bes_bestelling_key bes_bestel_key,
COALESCE(b.bes_bestelopdr_leverdatum,b.bes_bestelopdr_datum) leverdatum,
(SELECT prs_kostenplaats_nr FROM prs_kostenplaats WHERE prs_kostenplaats_key=bb.prs_kostenplaats_key) kostenplaats,
(SELECT prs_kostenplaats_extern FROM prs_kostenplaats WHERE prs_kostenplaats_key=bb.prs_kostenplaats_key) extern,
(SELECT prs_bedrijf.prs_leverancier_nr FROM prs_bedrijf WHERE prs_bedrijf_key=b.prs_bedrijf_key) leveranciernr,
(SELECT prs_perslid_naam_friendly FROM prs_v_perslid_fullnames WHERE prs_perslid_key = b.prs_perslid_key) besteller,
--(SELECT ins_discipline_externnr FROM bes_discipline where UPPER(ins_discipline_omschrijving)='LYRECO - KANTOORARTIKELEN') catalogus_id,
'Lyreco bestelling' omschrijving,
'Bestelling '||b.bes_bestelopdr_key omschrijving,
b.bes_bestelopdr_opmerking opmerking,
ma.mld_adres_gebouw_ruimte gebouwCode,
(SELECT alg_onrgoedkenmerk_waarde
@@ -2706,8 +2812,8 @@ BEGIN
FOR rec in sel
LOOP
--v_SAPID := blst.get_SAPid ();
v_SAPID := 'BHCATERING';
v_SAPID := blst.get_SAPid ();
--v_SAPID := 'BHCATERING';
v_guid := blst.getguid ();
v_aanvraagnr := blst.getAanvraagNr (rec.bes_key, 'BES');
v_bestand := v_base || '-' || v_counter || '-';
@@ -2737,7 +2843,7 @@ BEGIN
ELSE
SELECT bk.bes_kenmerk_key
INTO v_kenmerk_key
FROM bes_srtkenmerk bs, bes_kenmerk bk
FROM bes_srtkenmerk bs, bes_kenmerk bk
WHERE bs.bes_srtkenmerk_upper='SAP_ID'
AND bk.bes_srtkenmerk_key = bs.bes_srtkenmerk_key
AND bk.bes_kenmerk_verwijder IS NULL;
@@ -2746,7 +2852,7 @@ BEGIN
IF v_kenmerk_key > 0
THEN
flx.setflex ('BES', v_kenmerk_key, rec.bes_key, v_aanvraagNr);
flx.setflex ('BES', v_kenmerk_key, rec.bes_bestel_key, v_aanvraagNr);
END IF;
--blst.add_xml_element (v_bestand,'ReserveringNr', blst.getAanvraagNr (TO_CHAR (rec.res_key)));
@@ -5908,7 +6014,8 @@ AS
prs_afdeling a,
prs_afdeling bu,
(SELECT m.mld_melding_key,
TRUNC (mld.getmeldingstatusdate (m.mld_melding_key, 5))
--- TRUNC (mld.getmeldingstatusdate (m.mld_melding_key, 5))
(mld.getmeldingstatusdate (m.mld_melding_key, 5))
afgemeld,
mld.getactualuitvoer (m.mld_melding_key)
t_doorlooptijd,
@@ -6178,7 +6285,8 @@ AS
END
afdeling,
m.mld_melding_key,
TRUNC (mld.getmeldingstatusdate (m.mld_melding_key, 5))
--- TRUNC (mld.getmeldingstatusdate (m.mld_melding_key, 5))
(mld.getmeldingstatusdate (m.mld_melding_key, 5))
afgemeld,
m.mld_melding_satisfaction,
CASE WHEN m.mld_melding_satisfaction IS NOT NULL THEN 1 ELSE 0 END
@@ -6959,15 +7067,52 @@ AS
m.mld_melding_datum,
afgemeld,
CASE
WHEN sla.t_doorlooptijd.tijdsduur <= sla.sla_werkuren
WHEN sla.t_doorlooptijd.eenheid = 'U'
THEN
'Ja'
CASE
WHEN -- dan berekenen of aan de SLA in uren wordt voldaan als sla.t_doorlooptijd.tijdsduur <= sla.sla_werkuren dan sla behaald
sla.t_doorlooptijd.tijdsduur <= sla.sla_werkuren
THEN
'Ja'
ELSE
'Nee'
END
WHEN sla.t_doorlooptijd.eenheid = 'D'
THEN
CASE
WHEN -- dan berekenen of aan de SLA in uren wordt voldaan als sla.t_doorlooptijd.tijdsduur <= sla.sla_werkuren dan sla behaald
sla.t_doorlooptijd.tijdsduur <= sla.sla_werkdgn
THEN
'Ja'
ELSE
'Nee'
END
ELSE
'Nee'
'Onbekend'
END sla_behaald,
CASE
WHEN sla.t_doorlooptijd.tijdsduur <= sla.sla_werkuren THEN 1
ELSE 0
WHEN sla.t_doorlooptijd.eenheid = 'U'
THEN
CASE
WHEN -- dan berekenen of aan de SLA in uren wordt voldaan als sla.t_doorlooptijd.tijdsduur <= sla.sla_werkuren dan sla behaald
sla.t_doorlooptijd.tijdsduur <= sla.sla_werkuren
THEN
1
ELSE
0
END
WHEN sla.t_doorlooptijd.eenheid = 'D'
THEN
CASE
WHEN -- dan berekenen of aan de SLA in uren wordt voldaan als sla.t_doorlooptijd.tijdsduur <= sla.sla_werkuren dan sla behaald
sla.t_doorlooptijd.tijdsduur <= sla.sla_werkdgn
THEN
1
ELSE
0
END
ELSE
0
END telling_sla
FROM mld_melding m,
mld_stdmelding sm,
@@ -7017,7 +7162,7 @@ AS
AND vgt.ins_srtdiscipline_key = vg.ins_srtdiscipline_key
AND m.prs_perslid_key_voor = p.prs_perslid_key
AND a.prs_afdeling_key = p.prs_afdeling_key
AND a.prs_afdeling_parentkey = bu.prs_afdeling_key(+);
AND a.prs_afdeling_parentkey = bu.prs_afdeling_key(+);
CREATE OR REPLACE VIEW BLST_V_RAP_URGENTE_MELDINGEN_VG
(