FSN#21545 Annuleren

svn path=/Database/trunk/; revision=10936
This commit is contained in:
Jos Groot Lipman
2011-10-26 11:14:28 +00:00
parent 3c9fd48987
commit 838b00d02c

View File

@@ -1,7 +1,7 @@
#ifdef BES // 03-11-2000 PF
/* BES_PAC.SRC
* $Revision: 80 $
* $Modtime: 19-10-11 12:30 $
* $Revision: 81 $
* $Modtime: 26-10-11 13:01 $
*/
-- STATUS: TESTEN
@@ -842,7 +842,12 @@ AS
SET bes_bestelopdr_item_cnt = aantalopdrachtregels,
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',
lbord_key,
i_userkey,
NULL,
'');
-- 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);
@@ -897,6 +902,11 @@ AS
SET bes_bestelopdr_item_cnt = aantalopdrachtregels,
bes_bestelopdr_status = 3
WHERE bes_bestelopdr_key = lbord_key;
fac.trackaction ('BES2NE',
lbord_key,
i_userkey,
NULL,
'');
-- 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);
@@ -959,6 +969,12 @@ AS
THEN
eventcode := 'BESVER';
END IF;
WHEN 8 -- Annuleer
THEN
IF currentstatus <> 8
THEN
eventcode := 'BESCAN';
END IF;
ELSE
-- Invalid statuschange or no change
eventcode := NULL;
@@ -1134,26 +1150,21 @@ AS
AND bi.bes_bestelling_key = b.bes_bestelling_key
AND boi.bes_bestelopdr_key = pbestelopdr_key;
-- We hebben nu alles in geval van een mutatieopdracht:
-- Later: orgopdrkey = de key van de oude opdracht BO1
-- pkey = de key van de nieuwe opdracht BO2
-- orgopdrkey = de key van de oude opdracht BO1
-- pbestelopdr_key = de key van de nieuwe opdracht BO2
-- orgbeskey = de key van de oude aanvraag BA1
-- beskey = de key van de nieuwe aanvraag BA2
DBMS_OUTPUT.put_line ('orgbeskey' || orgbeskey);
DBMS_OUTPUT.put_line ('pbestelopdr_key' || pbestelopdr_key);
DBMS_OUTPUT.put_line ('beskey' || beskey);
-- Ook gewoon op change-opdracht
bes.setbestelopdrstatus (pbestelopdr_key, 4, user_key);
IF orgbeskey IS NULL
THEN
-- dit is geen kopie of zo, gewoon een bestelling/opdracht
UPDATE bes_bestelopdr
SET bes_bestelopdr_status = 4
WHERE bes_bestelopdr_key = pbestelopdr_key;
fac.trackaction ('BES2CO', -- confirm
pbestelopdr_key,
user_key,
NULL,
NULL);
NULL; -- we zijn klaar
ELSE
-- Deze opdracht behoort bij een kopie-bestelaanvraag, waarvan de opdracht
-- nu dus is goedgekeurd door de leverancier. Aan het werk!
@@ -1165,6 +1176,15 @@ AS
AND bi.bes_bestelling_key = orgbeskey;
DBMS_OUTPUT.put_line ('orgopdrkey' || orgopdrkey);
-- Nieuwe tracking toevoegen aan de oude (die we straks weggooien);
UPDATE fac_tracking
SET fac_tracking_refkey = orgopdrkey
WHERE fac_tracking_refkey = pbestelopdr_key
AND fac_srtnotificatie_key IN
(SELECT fac_srtnotificatie_key
FROM fac_srtnotificatie
WHERE fac_srtnotificatie_xmlnode = 'bestelopdr');
-- Als het totaal van de mutatie-opdracht 0 is, is het een annulering, die nu
-- dus door de leverancier is goedgekeurd. Het kan echter zo zijn dat de
-- annuleringshorizon verstreken is, en dat er toch nog betaald moet worden
@@ -1183,17 +1203,6 @@ AS
--
-- Nu alle nieuwe gegevens aan de oorspronkelijke hangen (behoud van nummer/key)
-- Eerst de opdracht.
DBMS_OUTPUT.put_line ('0');
-- Nieuwe tracking toevoegen aan de oude; op dit moment is er niet
-- veel (geen) opdrachttracking, maar ALS het er zou zijn..
UPDATE fac_tracking
SET fac_tracking_refkey = orgopdrkey
WHERE fac_tracking_refkey = pbestelopdr_key
AND fac_srtnotificatie_key IN
(SELECT fac_srtnotificatie_key
FROM fac_srtnotificatie
WHERE fac_srtnotificatie_xmlnode = 'bestelopdr');
-- Let op: we *verwijderen* de originele bes_bestelling_item en bes_bestelopdr_item
-- (en flex) maar *houden* de originele bes_bestelling en bes_bestelopdr
@@ -1214,8 +1223,6 @@ AS
DELETE FROM bes_kenmerkbestell
WHERE bes_bestelling_key = orgbeskey;
DBMS_OUTPUT.put_line ('1');
UPDATE bes_bestelopdr_item -- de concept opdracht regels actueel maken
SET bes_bestelopdr_key = orgopdrkey
WHERE bes_bestelopdr_key = pbestelopdr_key;
@@ -1236,10 +1243,9 @@ AS
WHERE bes_bestelopdr_key = pbestelopdr_key)
WHERE bes_bestelopdr_key = orgopdrkey;
DELETE FROM bes_bestelopdr -- de concept opdracht mag nu weg
WHERE bes_bestelopdr_key = pbestelopdr_key;
-- De opdracht is weg, nu de aanvraag
-- Merk op: bij een annuleer doen we dit niet, bestelling-tracking
-- is niet interessant
UPDATE fac_tracking
SET fac_tracking_refkey = orgbeskey
WHERE fac_tracking_refkey = beskey
@@ -1248,8 +1254,6 @@ AS
FROM fac_srtnotificatie
WHERE fac_srtnotificatie_xmlnode = 'bestelling');
DBMS_OUTPUT.put_line ('2');
UPDATE bes_bestelling_item -- de concept aanvraagregels actueel maken
SET bes_bestelling_key = orgbeskey
WHERE bes_bestelling_key = beskey;
@@ -1282,43 +1286,32 @@ AS
WHERE bes_bestelling_key = beskey)
WHERE bes_bestelling_key = orgbeskey;
DELETE FROM bes_bestelling -- de concept bestelling mag nu weg
WHERE bes_bestelling_key = beskey;
DBMS_OUTPUT.put_line ('3');
--
UPDATE bes_bestelopdr
SET bes_bestelopdr_status = 4
WHERE bes_bestelopdr_key = orgopdrkey;
bes.setbestelopdrstatus (orgopdrkey, 4, user_key);
fac.trackaction ('BES2CO',
orgopdrkey,
user_key,
NULL,
NULL);
DBMS_OUTPUT.put_line ('4');
-- Anders nog iets?
ELSE
-- Een annulering
-- We behouden de oude opdracht, maar zetten die op Geannuleerd,
-- We behouden de oude opdracht/ bestelling, maar zetten die op Geannuleerd,
-- De nieuwe gooien we weg, die heeft zijn werk gedaan
-- Eindstand is dus BA2 en BO1
UPDATE bes_bestelopdr
SET bes_bestelopdr_status = 8
WHERE bes_bestelopdr_key = orgopdrkey;
-- Eindstand is dus BA1 en BO1
fac.trackaction ('BES2CA',
orgopdrkey,
user_key,
NULL,
NULL);
--TODO: (kan wellicht dieper in de bovenste THEN tak)
-- BA2 -> BA1
-- Delete BO2
bes.setbestelopdrstatus (orgopdrkey, 8, user_key);
bes.setbestellingstatus (orgbeskey, 8, user_key);
DELETE FROM bes_bestelling_item
WHERE bes_bestelling_key = beskey;
DELETE FROM bes_bestelopdr_item -- de concept opdracht regels mogen weg
WHERE bes_bestelopdr_key = pbestelopdr_key;
END IF;
-- De concept bestelling en bestelopdracht records mogen nu altijd weg
DELETE FROM bes_bestelopdr
WHERE bes_bestelopdr_key = pbestelopdr_key;
DELETE FROM bes_bestelling
WHERE bes_bestelling_key = beskey;
END IF;
END;
@@ -1339,19 +1332,8 @@ AS
IF orgbeskey IS NULL
THEN
-- dit is geen kopie of zo, gewoon een bestelling/opdracht, dus gewoon vervallen
UPDATE bes_bestelopdr
SET bes_bestelopdr_status = 1
WHERE bes_bestelopdr_key = pbestelopdr_key;
UPDATE bes_bestelling
SET bes_bestelling_status = 1
WHERE bes_bestelling_key = beskey;
fac.trackaction ('BES2RE',
pbestelopdr_key,
user_key,
NULL,
presulttext);
bes.setbestelopdrstatus (pbestelopdr_key, 1, user_key);
bes.setbestellingstatus(beskey, 1, user_key);
ELSE
-- rollback
fac.trackaction ('BESXXX',
@@ -1359,7 +1341,6 @@ AS
user_key,
NULL,
presulttext); -- mutatie gefaalt
DBMS_OUTPUT.put_line ('failed -1');
DELETE FROM bes_bestelling_item
WHERE bes_bestelling_key = beskey;
@@ -1367,8 +1348,6 @@ AS
DELETE FROM bes_bestelopdr_item
WHERE bes_bestelopdr_key = pbestelopdr_key;
DBMS_OUTPUT.put_line ('failed -2');
DELETE FROM bes_bestelopdr
WHERE bes_bestelopdr_key = pbestelopdr_key;
@@ -1484,6 +1463,6 @@ END bes;
/
REGISTERRUN('$Workfile: BES_PAC.SRC $','$Revision: 80 $')
REGISTERRUN('$Workfile: BES_PAC.SRC $','$Revision: 81 $')
#endif // BES