VGLD#26906 BES: transportkosten, niet op de bestelopdracht en hoe komt die in FIN terug
svn path=/Database/trunk/; revision=19240
This commit is contained in:
358
BES/BES_PAC.SRC
358
BES/BES_PAC.SRC
@@ -737,202 +737,210 @@ AS
|
|||||||
|
|
||||||
PROCEDURE makeorders (i_userkey IN NUMBER, bes_key IN NUMBER)
|
PROCEDURE makeorders (i_userkey IN NUMBER, bes_key IN NUMBER)
|
||||||
AS
|
AS
|
||||||
lfound BOOLEAN;
|
lfound BOOLEAN;
|
||||||
niveau NUMBER (10);
|
niveau NUMBER (10);
|
||||||
afd_key NUMBER (10);
|
afd_key NUMBER (10);
|
||||||
afd_key_temp NUMBER (10);
|
afd_key_temp NUMBER (10);
|
||||||
link_key NUMBER (10);
|
link_key NUMBER (10);
|
||||||
lbord_key NUMBER (10);
|
lbord_key NUMBER (10);
|
||||||
lbord_id bes_bestelopdr.bes_bestelopdr_id%TYPE;
|
lbord_id bes_bestelopdr.bes_bestelopdr_id%TYPE;
|
||||||
i_cnt_sum NUMBER (5);
|
i_cnt_sum NUMBER (5);
|
||||||
i_price_sum NUMBER (8, 2);
|
i_price_sum NUMBER (8, 2);
|
||||||
current_leverancier_key NUMBER (10);
|
current_leverancier_key NUMBER (10);
|
||||||
aantalopdrachtregels NUMBER;
|
aantalopdrachtregels NUMBER;
|
||||||
factura_key mld_adres.mld_adres_key%TYPE;
|
factura_key mld_adres.mld_adres_key%TYPE;
|
||||||
bedrijf_email prs_bedrijf.prs_bedrijf_email%TYPE;
|
bedrijf_email prs_bedrijf.prs_bedrijf_email%TYPE;
|
||||||
bedrijf_telefoon2 prs_bedrijf.prs_bedrijf_telefoon2%TYPE;
|
bedrijf_telefoon2 prs_bedrijf.prs_bedrijf_telefoon2%TYPE;
|
||||||
itemprijsmetkorting NUMBER (12, 6);
|
itemprijsmetkorting NUMBER (12, 6);
|
||||||
besopdrachtkorting NUMBER (8, 2);
|
besopdrachtkorting NUMBER (8, 2);
|
||||||
besopdrachtkosten NUMBER (8, 2);
|
besopdrachtkosten NUMBER (8, 2);
|
||||||
bedrijfvolgnr NUMBER (3);
|
bedrijfvolgnr NUMBER (3);
|
||||||
CURSOR tebestellen
|
CURSOR tebestellen
|
||||||
IS
|
IS
|
||||||
SELECT bd.prs_bedrijf_key,
|
SELECT bd.prs_bedrijf_key,
|
||||||
bd.prs_bedrijf_naam,
|
bd.prs_bedrijf_naam,
|
||||||
s.bes_srtdeel_omschrijving,
|
s.bes_srtdeel_omschrijving,
|
||||||
NVL (s.bes_srtdeel_eenheid, '') bes_srtdeel_eenheid,
|
NVL (s.bes_srtdeel_eenheid, '') bes_srtdeel_eenheid,
|
||||||
bes.getsrtdeelprijs (s.bes_srtdeel_key, NULL) bes_srtdeel_prijs,
|
bes.getsrtdeelprijs (s.bes_srtdeel_key, NULL) bes_srtdeel_prijs,
|
||||||
s.bes_srtdeel_key,
|
s.bes_srtdeel_key,
|
||||||
bi.bes_bestelling_item_key,
|
bi.bes_bestelling_item_key,
|
||||||
bi.bes_bestelling_item_aantal,
|
bi.bes_bestelling_item_aantal,
|
||||||
NVL (b.mld_adres_key_lev, abd.mld_adres_key_lev) mld_adres_key_lev,
|
NVL (b.mld_adres_key_lev, abd.mld_adres_key_lev) mld_adres_key_lev,
|
||||||
p.prs_afdeling_key,
|
p.prs_afdeling_key,
|
||||||
abd.mld_adres_key_fac,
|
abd.mld_adres_key_fac,
|
||||||
bes.getsrtdeelinkprijs (s.bes_srtdeel_key, NULL) bes_srtdeel_inkprijs,
|
bes.getsrtdeelinkprijs (s.bes_srtdeel_key, NULL) bes_srtdeel_inkprijs,
|
||||||
b.bes_bestelling_parentkey
|
b.bes_bestelling_parentkey
|
||||||
FROM prs_bedrijf bd,
|
FROM prs_bedrijf bd,
|
||||||
bes_srtdeel s,
|
bes_srtdeel s,
|
||||||
bes_bestelling_item bi,
|
bes_bestelling_item bi,
|
||||||
bes_bestelling b,
|
bes_bestelling b,
|
||||||
prs_perslid p,
|
prs_perslid p,
|
||||||
prs_v_afdeling d,
|
prs_v_afdeling d,
|
||||||
prs_bedrijf abd
|
prs_bedrijf abd
|
||||||
WHERE abd.prs_bedrijf_key = d.prs_bedrijf_key
|
WHERE abd.prs_bedrijf_key = d.prs_bedrijf_key
|
||||||
AND p.prs_afdeling_key = d.prs_afdeling_key
|
AND p.prs_afdeling_key = d.prs_afdeling_key
|
||||||
AND b.prs_perslid_key = p.prs_perslid_key
|
AND b.prs_perslid_key = p.prs_perslid_key
|
||||||
AND bi.bes_bestelling_key = b.bes_bestelling_key
|
AND bi.bes_bestelling_key = b.bes_bestelling_key
|
||||||
AND s.bes_srtdeel_key = bi.bes_srtdeel_key
|
AND s.bes_srtdeel_key = bi.bes_srtdeel_key
|
||||||
AND s.prs_bedrijf_key = bd.prs_bedrijf_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_status IN (1, 2, 3, 4) -- om dubbelen te vermijden
|
||||||
AND b.bes_bestelling_key = bes_key
|
AND b.bes_bestelling_key = bes_key
|
||||||
ORDER BY 1, 7;
|
ORDER BY 1, 7;
|
||||||
BEGIN
|
BEGIN
|
||||||
-- Maakt bestelopdrachten van bestelaanvragen
|
-- Maakt bestelopdrachten van bestelaanvragen
|
||||||
current_leverancier_key := -1;
|
current_leverancier_key := -1;
|
||||||
bedrijfvolgnr := 0;
|
bedrijfvolgnr := 0;
|
||||||
FOR rec1 IN tebestellen
|
FOR rec1 IN tebestellen
|
||||||
LOOP
|
LOOP
|
||||||
--DBMS_OUTPUT.put_line ('Een regel');
|
--DBMS_OUTPUT.put_line ('Een regel');
|
||||||
-- Moeten we van leverancier wisselen?
|
-- Moeten we van leverancier wisselen?
|
||||||
IF current_leverancier_key <> rec1.prs_bedrijf_key
|
IF current_leverancier_key <> rec1.prs_bedrijf_key
|
||||||
THEN
|
THEN
|
||||||
BEGIN
|
BEGIN
|
||||||
--DBMS_OUTPUT.put_line ('Een nieuwe leverancier:' || TO_CHAR (rec1.prs_bedrijf_key));
|
--DBMS_OUTPUT.put_line ('Een nieuwe leverancier:' || TO_CHAR (rec1.prs_bedrijf_key));
|
||||||
-- Bepaal het factuuradres. Deze kan binnen 1 aanvraag verschillen als er meerdere leveranciers betrokken zijn.
|
-- Bepaal het factuuradres. Deze kan binnen 1 aanvraag verschillen als er meerdere leveranciers betrokken zijn.
|
||||||
-- Dit is het factuuradres van de leverancier indien gedefinieerd,
|
-- Dit is het factuuradres van de leverancier indien gedefinieerd,
|
||||||
-- en zo niet, dan het factuuradres van de afdeling (daarbij zover omhoog zoeken tot gevonden)
|
-- en zo niet, dan het factuuradres van de afdeling (daarbij zover omhoog zoeken tot gevonden)
|
||||||
-- van de aanvrager. Is die er niet, dan is het het factuuradres van het bedrijf van de aanvrager.
|
-- van de aanvrager. Is die er niet, dan is het het factuuradres van het bedrijf van de aanvrager.
|
||||||
-- Er zou geen factuuraders gevonden kunnen worden, dan blijft die gewoon leeg.
|
-- Er zou geen factuuraders gevonden kunnen worden, dan blijft die gewoon leeg.
|
||||||
-- Van de aanvrager:
|
-- Van de aanvrager:
|
||||||
factura_key := rec1.mld_adres_key_fac;
|
factura_key := rec1.mld_adres_key_fac;
|
||||||
-- Van de leverancier:
|
-- Van de leverancier:
|
||||||
SELECT mld_adres_key_fac, prs_bedrijf_email, prs_bedrijf_telefoon2
|
SELECT mld_adres_key_fac, prs_bedrijf_email, prs_bedrijf_telefoon2
|
||||||
INTO factura_key, bedrijf_email, bedrijf_telefoon2
|
INTO factura_key, bedrijf_email, bedrijf_telefoon2
|
||||||
FROM prs_bedrijf
|
FROM prs_bedrijf
|
||||||
WHERE prs_bedrijf_key = rec1.prs_bedrijf_key AND mld_adres_key_fac IS NOT NULL;
|
WHERE prs_bedrijf_key = rec1.prs_bedrijf_key AND mld_adres_key_fac IS NOT NULL;
|
||||||
EXCEPTION
|
EXCEPTION
|
||||||
WHEN NO_DATA_FOUND
|
WHEN NO_DATA_FOUND
|
||||||
THEN
|
THEN
|
||||||
-- Van de afdeling:
|
-- Van de afdeling:
|
||||||
SELECT a.niveau, a.prs_afdeling_key
|
SELECT a.niveau, a.prs_afdeling_key
|
||||||
INTO niveau, afd_key
|
INTO niveau, afd_key
|
||||||
FROM prs_v_aanwezigafdeling a
|
FROM prs_v_aanwezigafdeling a
|
||||||
WHERE a.prs_afdeling_key = rec1.prs_afdeling_key;
|
WHERE a.prs_afdeling_key = rec1.prs_afdeling_key;
|
||||||
lfound := FALSE;
|
lfound := FALSE;
|
||||||
WHILE (niveau >= 1 AND NOT lfound)
|
WHILE (niveau >= 1 AND NOT lfound)
|
||||||
LOOP
|
LOOP
|
||||||
-- zoek kenmerk
|
-- zoek kenmerk
|
||||||
BEGIN
|
BEGIN
|
||||||
SELECT prs_kenmerklink_waarde
|
SELECT prs_kenmerklink_waarde
|
||||||
INTO link_key
|
INTO link_key
|
||||||
FROM prs_kenmerklink kl, prs_kenmerk k
|
FROM prs_kenmerklink kl, prs_kenmerk k
|
||||||
WHERE kl.prs_kenmerk_key = k.prs_kenmerk_key
|
WHERE kl.prs_kenmerk_key = k.prs_kenmerk_key
|
||||||
AND kl.prs_link_key = afd_key
|
AND kl.prs_link_key = afd_key
|
||||||
AND k.prs_kenmerk_key = 6
|
AND k.prs_kenmerk_key = 6
|
||||||
AND kl.prs_kenmerklink_waarde IS NOT NULL;
|
AND kl.prs_kenmerklink_waarde IS NOT NULL;
|
||||||
EXCEPTION
|
EXCEPTION
|
||||||
WHEN NO_DATA_FOUND
|
WHEN NO_DATA_FOUND
|
||||||
THEN
|
THEN
|
||||||
link_key := NULL;
|
link_key := NULL;
|
||||||
END;
|
END;
|
||||||
IF link_key IS NULL
|
IF link_key IS NULL
|
||||||
THEN -- -- kenmerk factuuradres niet aanwezig, zoek parent afdeling
|
THEN -- -- kenmerk factuuradres niet aanwezig, zoek parent afdeling
|
||||||
BEGIN
|
BEGIN
|
||||||
SELECT a.prs_afdeling_parentkey
|
SELECT a.prs_afdeling_parentkey
|
||||||
INTO afd_key_temp
|
INTO afd_key_temp
|
||||||
FROM prs_v_aanwezigafdeling a
|
FROM prs_v_aanwezigafdeling a
|
||||||
WHERE a.prs_afdeling_key = afd_key;
|
WHERE a.prs_afdeling_key = afd_key;
|
||||||
IF niveau != 1
|
IF niveau != 1
|
||||||
THEN
|
THEN
|
||||||
afd_key := afd_key_temp; -- als niveau=1 en geen kenmerk gevonden dan nog afd_key van niveau=1 nodig
|
afd_key := afd_key_temp; -- als niveau=1 en geen kenmerk gevonden dan nog afd_key van niveau=1 nodig
|
||||||
END IF;
|
|
||||||
niveau := niveau - 1;
|
|
||||||
END;
|
|
||||||
ELSE
|
|
||||||
lfound := TRUE; -- kenmerk aanwezig
|
|
||||||
END IF;
|
END IF;
|
||||||
END LOOP;
|
niveau := niveau - 1;
|
||||||
IF link_key IS NOT NULL
|
END;
|
||||||
THEN
|
ELSE
|
||||||
factura_key := link_key;
|
lfound := TRUE; -- kenmerk aanwezig
|
||||||
END IF;
|
END IF;
|
||||||
END;
|
END LOOP;
|
||||||
-- factuuradres is bepaald, maak nu de opdracht aan
|
IF link_key IS NOT NULL
|
||||||
IF current_leverancier_key <> -1
|
THEN
|
||||||
THEN
|
factura_key := link_key;
|
||||||
-- Afronden vorige opdracht
|
END IF;
|
||||||
UPDATE bes_bestelopdr
|
END;
|
||||||
SET bes_bestelopdr_status = 3 -- JGL: stond hij hier nog niet op dan?
|
-- factuuradres is bepaald, maak nu de opdracht aan
|
||||||
WHERE bes_bestelopdr_key = lbord_key;
|
IF current_leverancier_key <> -1
|
||||||
fac.trackaction ('BES2NE',
|
THEN
|
||||||
lbord_key,
|
-- Afronden vorige opdracht
|
||||||
i_userkey,
|
UPDATE bes_bestelopdr
|
||||||
NULL,
|
SET bes_bestelopdr_status = 3 -- JGL: stond hij hier nog niet op dan?
|
||||||
'');
|
WHERE bes_bestelopdr_key = lbord_key;
|
||||||
-- Bepaal opdrachtkorting en opdrachtkosten en sla deze op
|
fac.trackaction ('BES2NE',
|
||||||
-- Met parameter 1 geven we aan dat de berekende waarde automaisch ook word opgeslagen
|
lbord_key,
|
||||||
besopdrachtkorting := bes.calcbesopdrachtkorting(lbord_key, 1);
|
i_userkey,
|
||||||
besopdrachtkosten := bes.calcbesopdrachtkosten(lbord_key, 1);
|
NULL,
|
||||||
END IF;
|
'');
|
||||||
-- Op naar de volgende
|
-- Bepaal opdrachtkorting en opdrachtkosten en sla deze op
|
||||||
current_leverancier_key := rec1.prs_bedrijf_key;
|
-- Met parameter 1 geven we aan dat de berekende waarde automaisch ook word opgeslagen
|
||||||
bedrijfvolgnr := bedrijfvolgnr + 1;
|
besopdrachtkorting := bes.calcbesopdrachtkorting(lbord_key, 1);
|
||||||
SELECT bes_s_bes_bestelopdr_key.NEXTVAL
|
besopdrachtkosten := bes.calcbesopdrachtkosten(lbord_key, 1);
|
||||||
INTO lbord_key
|
UPDATE bes_bestelopdr
|
||||||
FROM DUAL;
|
SET bes_bestelopdr_levkosten = besopdrachtkosten
|
||||||
-- UWVA#13420, als zichtbaar opdrachtnummer wordt het aanvraagnummer gebruikt
|
, bes_bestelopdr_korting = besopdrachtkorting
|
||||||
-- Indien dit ooit anders moet, bv bundeling, dan moet alleen dit anders
|
WHERE bes_bestelopdr_key = lbord_key;
|
||||||
-- Met UWVA#21074 hanteren we voor mutaties toch hetzelfde opdrachtnummer, zodat
|
END IF;
|
||||||
-- de leverancier de link met het origineel kan vinden.
|
-- Op naar de volgende
|
||||||
lbord_id := TO_CHAR(COALESCE(rec1.bes_bestelling_parentkey, bes_key))||'/'|| bedrijfvolgnr;
|
current_leverancier_key := rec1.prs_bedrijf_key;
|
||||||
--DBMS_OUTPUT.put_line ('Bestelopdracht maken: ' || TO_CHAR (lbord_key));
|
bedrijfvolgnr := bedrijfvolgnr + 1;
|
||||||
INSERT INTO bes_bestelopdr
|
SELECT bes_s_bes_bestelopdr_key.NEXTVAL
|
||||||
(bes_bestelopdr_key, bes_bestelopdr_status, prs_bedrijf_key,
|
INTO lbord_key
|
||||||
bes_bestelopdr_datum, mld_adres_key_lev, mld_adres_key_fac,
|
FROM DUAL;
|
||||||
prs_perslid_key,
|
-- UWVA#13420, als zichtbaar opdrachtnummer wordt het aanvraagnummer gebruikt
|
||||||
bes_bestelopdr_id
|
-- Indien dit ooit anders moet, bv bundeling, dan moet alleen dit anders
|
||||||
)
|
-- Met UWVA#21074 hanteren we voor mutaties toch hetzelfde opdrachtnummer, zodat
|
||||||
VALUES (lbord_key, 3, rec1.prs_bedrijf_key,
|
-- de leverancier de link met het origineel kan vinden.
|
||||||
SYSDATE, rec1.mld_adres_key_lev, factura_key,
|
lbord_id := TO_CHAR(COALESCE(rec1.bes_bestelling_parentkey, bes_key))||'/'|| bedrijfvolgnr;
|
||||||
i_userkey,
|
--DBMS_OUTPUT.put_line ('Bestelopdracht maken: ' || TO_CHAR (lbord_key));
|
||||||
lbord_id
|
INSERT INTO bes_bestelopdr
|
||||||
);
|
(bes_bestelopdr_key, bes_bestelopdr_status, prs_bedrijf_key,
|
||||||
aantalopdrachtregels := 0;
|
bes_bestelopdr_datum, mld_adres_key_lev, mld_adres_key_fac,
|
||||||
|
prs_perslid_key,
|
||||||
|
bes_bestelopdr_id
|
||||||
|
)
|
||||||
|
VALUES (lbord_key, 3, rec1.prs_bedrijf_key,
|
||||||
|
SYSDATE, rec1.mld_adres_key_lev, factura_key,
|
||||||
|
i_userkey,
|
||||||
|
lbord_id
|
||||||
|
);
|
||||||
|
aantalopdrachtregels := 0;
|
||||||
END IF;
|
END IF;
|
||||||
itemprijsmetkorting := bes.calcbesartikelkortingsprijs(rec1.bes_bestelling_item_key);
|
itemprijsmetkorting := bes.calcbesartikelkortingsprijs(rec1.bes_bestelling_item_key);
|
||||||
--DBMS_OUTPUT.put_line ('Bestelregel maken: ' || TO_CHAR (aantalopdrachtregels + 1));
|
--DBMS_OUTPUT.put_line ('Bestelregel maken: ' || TO_CHAR (aantalopdrachtregels + 1));
|
||||||
INSERT INTO bes_bestelopdr_item
|
INSERT INTO bes_bestelopdr_item
|
||||||
(bes_bestelopdr_item_key, bes_bestelopdr_item_posnr, bes_bestelopdr_key,
|
(bes_bestelopdr_item_key, bes_bestelopdr_item_posnr, bes_bestelopdr_key,
|
||||||
bes_bestelopdr_item_aantal, bes_bestelopdr_item_aantalontv, bes_bestelopdr_item_omschrijv,
|
bes_bestelopdr_item_aantal, bes_bestelopdr_item_aantalontv, bes_bestelopdr_item_omschrijv,
|
||||||
bes_bestelopdr_item_brutoprijs, bes_bestelopdr_item_ontvangen, bes_bestelopdr_item_inkprijs,
|
bes_bestelopdr_item_brutoprijs, bes_bestelopdr_item_ontvangen, bes_bestelopdr_item_inkprijs,
|
||||||
bes_bestelopdr_item_prijs
|
bes_bestelopdr_item_prijs
|
||||||
)
|
)
|
||||||
VALUES (bes_s_bes_bestelopdr_item_key.NEXTVAL, aantalopdrachtregels + 1, lbord_key,
|
VALUES (bes_s_bes_bestelopdr_item_key.NEXTVAL, aantalopdrachtregels + 1, lbord_key,
|
||||||
rec1.bes_bestelling_item_aantal, NULL, rec1.bes_srtdeel_omschrijving,
|
rec1.bes_bestelling_item_aantal, NULL, rec1.bes_srtdeel_omschrijving,
|
||||||
rec1.bes_srtdeel_prijs, NULL, rec1.bes_srtdeel_inkprijs,
|
rec1.bes_srtdeel_prijs, NULL, rec1.bes_srtdeel_inkprijs,
|
||||||
itemprijsmetkorting
|
itemprijsmetkorting
|
||||||
);
|
);
|
||||||
aantalopdrachtregels := aantalopdrachtregels + 1;
|
aantalopdrachtregels := aantalopdrachtregels + 1;
|
||||||
UPDATE bes_bestelling_item
|
UPDATE bes_bestelling_item
|
||||||
SET bes_bestelopdr_item_key = bes_s_bes_bestelopdr_item_key.CURRVAL
|
SET bes_bestelopdr_item_key = bes_s_bes_bestelopdr_item_key.CURRVAL
|
||||||
WHERE bes_bestelling_item_key = rec1.bes_bestelling_item_key;
|
WHERE bes_bestelling_item_key = rec1.bes_bestelling_item_key;
|
||||||
END LOOP;
|
END LOOP;
|
||||||
IF current_leverancier_key <> -1
|
IF current_leverancier_key <> -1
|
||||||
THEN
|
THEN
|
||||||
-- Afronden vorige opdracht
|
-- Afronden vorige opdracht
|
||||||
UPDATE bes_bestelopdr
|
UPDATE bes_bestelopdr
|
||||||
SET bes_bestelopdr_status = 3
|
SET bes_bestelopdr_status = 3
|
||||||
WHERE bes_bestelopdr_key = lbord_key;
|
WHERE bes_bestelopdr_key = lbord_key;
|
||||||
fac.trackaction ('BES2NE',
|
fac.trackaction ('BES2NE',
|
||||||
lbord_key,
|
lbord_key,
|
||||||
i_userkey,
|
i_userkey,
|
||||||
NULL,
|
NULL,
|
||||||
'');
|
'');
|
||||||
-- Bepaal opdrachtkorting en opdrachtkosten en sla deze op
|
-- Bepaal opdrachtkorting en opdrachtkosten en sla deze op
|
||||||
-- Met parameter 1 geven we aan dat de berekende waarde automaisch ook word opgeslagen
|
-- Met parameter 1 geven we aan dat de berekende waarde automaisch ook word opgeslagen
|
||||||
besopdrachtkorting := bes.calcbesopdrachtkorting(lbord_key, 1);
|
besopdrachtkorting := bes.calcbesopdrachtkorting(lbord_key, 1);
|
||||||
besopdrachtkosten := bes.calcbesopdrachtkosten(lbord_key, 1);
|
besopdrachtkosten := bes.calcbesopdrachtkosten(lbord_key, 1);
|
||||||
END IF;
|
UPDATE bes_bestelopdr
|
||||||
|
SET bes_bestelopdr_levkosten = besopdrachtkosten
|
||||||
|
, bes_bestelopdr_korting = besopdrachtkorting
|
||||||
|
WHERE bes_bestelopdr_key = lbord_key;
|
||||||
|
END IF;
|
||||||
END;
|
END;
|
||||||
|
|
||||||
PROCEDURE makecontract (bestelopdr_key IN NUMBER)
|
PROCEDURE makecontract (bestelopdr_key IN NUMBER)
|
||||||
|
|||||||
Reference in New Issue
Block a user