Created
February 21, 2016 06:56
-
-
Save uriee/7c78c4cd589d49a9d828 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/*-Initial Tests-*/ | |
DECLARE E1 CURSOR FOR | |
SELECT SERIAL.SERIAL,SERIALNAME | |
FROM SERIAL,SERIALA | |
WHERE SERIALA.SERIAL = SERIAL.SERIAL | |
AND SERIALSTATUS IN (2,8,4) | |
AND EXISTS( | |
SELECT 'X' FROM TRANSORDER | |
WHERE TRANSORDER.TYPE = 'B' | |
AND SERIAL = SERIAL.SERIAL); | |
/*--*/ | |
OPEN E1; | |
GOTO 19 WHERE :RETVAL <= 0; | |
LABEL 10; | |
:SERIALERR = 0; | |
:PAR1 = ''; | |
FETCH E1 INTO :SERIALERR,:PAR1; | |
GOTO 18 WHERE :RETVAL <=0; | |
WRNMSG 20 WHERE :SERIALERR > 0; | |
LOOP 10; | |
LABEL 18; | |
CLOSE E1; | |
LABEL 19; | |
/*-*/ | |
DECLARE E2 CURSOR FOR | |
SELECT PART,PARTNAME | |
FROM PART P | |
WHERE EXISTS( | |
SELECT 'X' FROM SERIAL,SERIALA | |
WHERE SERIALA.SERIAL = SERIAL.SERIAL | |
AND SERIALSTATUS IN (2,8,4) | |
AND SERIAL.PART = P.PART) | |
AND EXISTS( | |
SELECT 'X' FROM PARTALT,PART P2 | |
WHERE PARTALT.PART = P.PART | |
AND P2.PART = PARTALT.ALT | |
AND P2.TYPE = 'P'); | |
/*--*/ | |
OPEN E2; | |
GOTO 29 WHERE :RETVAL <= 0; | |
LABEL 20; | |
:SERIALERR = 0; | |
:PAR1 = ''; | |
FETCH E2 INTO :SERIALERR,:PAR1; | |
GOTO 28 WHERE :RETVAL <= 0; | |
WRNMSG 22 WHERE :SERIALERR > 0; | |
LOOP 20; | |
LABEL 28; | |
CLOSE E2; | |
LABEL 29; | |
DISPLAY 1 OF 10; | |
/*-End Tests-*/ | |
:RUNDATE = SQL.DATE; | |
INSERT INTO SIL_DEFICIENCIES_RUN(RUNDATE,USER,SAVE) | |
VALUES(:RUNDATE,SQL.USER,:$.SAV); | |
/*---*/ | |
LINK URI_STACK_B TO :$.STB; | |
ERRMSG 1 WHERE :RETVAL <= 0; | |
LINK URI_STACK_C TO :$.STC; | |
ERRMSG 1 WHERE :RETVAL <= 0; | |
LINK URI_STACK_p TO :$.STP; | |
ERRMSG 1 WHERE :RETVAL <= 0; | |
LINK URI_STACK_E TO :$.STE; | |
ERRMSG 1 WHERE :RETVAL <= 0; | |
/*---*/ | |
DELETE FROM SIL_DEFICIENCIES; | |
DELETE FROM SIL_DEFICIENCIES_S; | |
DELETE FROM SIL_DEFICIENCIES_XL; | |
DELETE FROM SIL_DEFICIENCIES_XLP; | |
DELETE FROM SIL_DEFICIENCIES_P; | |
DELETE FROM SIL_DEFICIENCIES_D; | |
DELETE FROM SIL_DEFICIENCIES_SER; | |
DISPLAY 2 OF 10; | |
/*------CALCULATE ALT TYPE 'R' TO TYPE 'P' STOCK -*/ | |
INSERT INTO URI_STACK_B(KEY1,KEY2,INTVAL1) | |
SELECT P.PART,A.PART,ROUND(REALQUANT(SUM(BALANCE))) | |
FROM WARHSBAL,WAREHOUSES,PARTALT,PART P,PART A | |
WHERE PARTALT.PART = P.PART | |
AND A.PART = PARTALT.ALT | |
AND P.TYPE = 'P' | |
AND A.PART > 0 | |
AND A.TYPE = 'R' | |
AND WARHSBAL.PART = A.PART | |
AND WAREHOUSES.WARHS = WARHSBAL.WARHS | |
AND WARHSBAL.BALANCE > 0 | |
AND WAREHOUSES.WARHS <> 0 | |
AND WAREHOUSES.SIL_DEFICIENCIES <> 'Y' | |
AND WARHSBAL.CUST NOT IN(-2,-3,-5) | |
GROUP BY 1,2; | |
/*--CALCULATE ALT TYPE 'R' TO TYPE 'P' PORDERS--*/ | |
INSERT INTO URI_STACK_B(KEY1,KEY2,KEY3,INTVAL1) | |
SELECT P.PART,A.PART,DUEDATE,ROUND(REALQUANT(SUM(ABALANCE))) | |
FROM PORDERITEMS,PARTALT,PART P,PART A | |
WHERE P.PART = PARTALT.PART | |
AND A.PART = PARTALT.ALT | |
AND P.TYPE = 'P' | |
AND A.TYPE = 'R' | |
AND A.PART > 0 | |
AND CLOSED <> 'C' | |
AND PORDERITEMS.PART = A.PART | |
GROUP BY 1,2,3; | |
/*-Update SIL_DEFICIENCIES_XLP according to porders from exland--*/ | |
INSERT INTO SIL_DEFICIENCIES_XLP(PART) | |
SELECT PART | |
FROM PORDERS,PORDERITEMS | |
WHERE PORDERS.ORD = PORDERITEMS.ORD | |
AND PORDERS.SUP = 690 /*Exland*/ | |
AND PORDERITEMS.CLOSED <> 'C'; | |
DISPLAY 3 OF 10; | |
/*----ENTER THE ORDERS INITIAL DEMANDS---*/ | |
INSERT INTO SIL_DEFICIENCIES(ORDI,ORIG,PART,DUEDATE,DEMAND,ODEMAND, | |
INTVAL1,LEVEL,PRIORITY) | |
SELECT ORDERITEMS.ORDI,ORDERITEMS.PART,ORDERITEMS.PART, | |
(SIL_ORDISINGLE.KDUEDATE > 0 ? KDUEDATE : ORDERITEMS.DUEDATE), | |
ROUND(REALQUANT(ORDERITEMS.ABALANCE)), | |
ROUND(REALQUANT(ORDERITEMS.ABALANCE)), | |
(PART.FAMILY = 3 ? 2 : 0),/*IF EMD ENTER THE EMD'S LOOP*/ | |
-1, | |
(SIL_ORDISINGLE.FINAL = 'Y' ? 1 : | |
(SIL_ORDISINGLE.NOPLAN = 'Y' ? 0 : | |
(SIL_ORDISINGLE.CSTAT = 19 ? 3 : 2))) | |
FROM ORDERITEMS,PART P,PART,ORDERS,SIL_ORDISINGLE ? | |
WHERE ORDERITEMS.CLOSED <> 'C' | |
AND SIL_ORDISINGLE.NOPLAN <> 'Y' | |
AND SIL_ORDISINGLE.ORDI = ORDERITEMS.ORDI | |
AND ORDERITEMS.PART = PART.PART | |
AND ORDERITEMS.DUEDATE BETWEEN :$.FDT AND :$.TDT | |
AND ORDERITEMS.ABALANCE > 0 | |
AND ABALANCE <> 0 | |
AND ORDERS.ORD = ORDERITEMS.ORD | |
AND ORDTYPE NOT IN (2,3,4) | |
AND PART.PARTNAME NOT LIKE '%FE'; | |
DISPLAY 4 OF 10; | |
/*-----STACK THE INITAL PARTS STOCK-*/ | |
INSERT INTO SIL_DEFICIENCIES_S(PART,STOCK,INITIALSTOCK) | |
SELECT WARHSBAL.PART, | |
ROUND(REALQUANT(SUM(BALANCE))), | |
ROUND(REALQUANT(SUM(BALANCE))) | |
FROM WARHSBAL,WAREHOUSES,CUSTOMERS | |
WHERE EXISTS( | |
SELECT 'X' FROM SIL_DEFICIENCIES | |
WHERE SIL_DEFICIENCIES.PART = WARHSBAL.PART) | |
AND WAREHOUSES.WARHS = WARHSBAL.WARHS | |
AND WARHSBAL.BALANCE <> 0 | |
AND WAREHOUSES.WARHS <> 0 | |
AND WAREHOUSES.SIL_DEFICIENCIES <> 'Y' | |
AND CUSTOMERS.CUST = WARHSBAL.CUST | |
AND CUSTOMERS.CUST NOT IN(-2,-3,-5) | |
AND CUSTOMERS.CUSTNAME NOT LIKE '%MRB01%' | |
AND CUSTOMERS.CUSTNAME NOT LIKE '%MRB05%' | |
GROUP BY 1; | |
/*----STACK ALL DEMANDED PARTS STOCK--*/ | |
INSERT INTO SIL_DEFICIENCIES_S(PART,STOCK,INITIALSTOCK) | |
SELECT WARHSBAL.PART, | |
ROUND(REALQUANT(SUM(BALANCE))), | |
ROUND(REALQUANT(SUM(BALANCE))) | |
FROM WARHSBAL,WAREHOUSES,CUSTOMERS | |
WHERE EXISTS( | |
SELECT 'X' FROM SIL_DEFICIENCIES,SIL_FLATTREE | |
WHERE SIL_DEFICIENCIES.PART = SIL_FLATTREE.PARENT | |
AND WARHSBAL.PART =SIL_FLATTREE.SON) | |
AND WAREHOUSES.WARHS = WARHSBAL.WARHS | |
AND WARHSBAL.BALANCE <> 0 | |
AND WAREHOUSES.WARHS <> 0 | |
AND WAREHOUSES.SIL_DEFICIENCIES <> 'Y' | |
AND CUSTOMERS.CUST = WARHSBAL.CUST | |
AND CUSTOMERS.CUST NOT IN(-2,-3) | |
AND CUSTOMERS.CUSTNAME NOT LIKE '%MRB01%' | |
AND CUSTOMERS.CUSTNAME NOT LIKE '%MRB05%' | |
GROUP BY 1; | |
DISPLAY 6 OF 10; | |
/*---NV---*/ | |
INSERT INTO SIL_DEFICIENCIES_S(PART) | |
SELECT P1.PART | |
FROM PART P1,PART P2 | |
WHERE P2.PARTNAME = STRCAT(P1.PARTNAME,'NV') | |
AND EXISTS( | |
SELECT 'X' FROM WARHSBAL WHERE PART = P2.PART | |
); | |
/*-*/ | |
DECLARE NV CURSOR FOR | |
SELECT P1.PART ,ROUND(REALQUANT(SUM(BALANCE))) | |
FROM PART P1 ,PART P2,SIL_DEFICIENCIES_S, | |
WAREHOUSES,WARHSBAL,CUSTOMERS | |
WHERE P2.PARTNAME = STRCAT(P1.PARTNAME,'NV') | |
AND P1.PART = SIL_DEFICIENCIES_S.PART | |
AND WARHSBAL.PART = P2.PART | |
AND WAREHOUSES.WARHS = WARHSBAL.WARHS | |
AND WARHSBAL.BALANCE <> 0 | |
AND WAREHOUSES.WARHS <> 0 | |
AND WAREHOUSES.SIL_DEFICIENCIES <> 'Y' | |
AND CUSTOMERS.CUST = WARHSBAL.CUST | |
AND WARHSBAL.CUST NOT IN(-2,-3,-5) | |
AND CUSTOMERS.CUSTNAME NOT LIKE '%MRB01%' | |
AND CUSTOMERS.CUSTNAME NOT LIKE '%MRB05%' | |
GROUP BY 1; | |
OPEN NV; | |
GOTO 110 WHERE :RETVAL <= 0; | |
/*-*/ | |
LABEL 100; | |
:NV = 0; | |
FETCH NV INTO :NV,:STOCK; | |
GOTO 109 WHERE :RETVAL <= 0; | |
UPDATE SIL_DEFICIENCIES_S | |
SET STOCK = STOCK + :STOCK, | |
INITIALSTOCK = INITIALSTOCK +:STOCK | |
WHERE PART = :NV; | |
/*-*/ | |
LOOP 100; | |
LABEL 109; | |
CLOSE NV; | |
LABEL 110; | |
DISPLAY 7 OF 10; | |
/*---GET OPEN SERIAL DEMAND----*/ | |
DECLARE PARTIAL CURSOR FOR | |
SELECT SERIAL.SERIAL,SERIAL.PART,ROUND(REALQUANT(QUANT)) | |
FROM SERIAL,SERIALA,PART P | |
WHERE SERIALA.SERIAL = SERIAL.SERIAL | |
AND SERIALA.SERIALSTATUS = 5 | |
AND P.PART = SERIAL.PART | |
AND P.FAMILY = 3; | |
/*-*/ | |
OPEN PARTIAL; | |
GOTO 209 WHERE :RETVAL <= 0; | |
LABEL 200; | |
:S = :P = :Q = :USED = 0; | |
FETCH PARTIAL INTO :S,:P,:Q; | |
GOTO 208 WHERE :RETVAL <= 0; | |
/*-*/ | |
SELECT SUM(QUANT)/100 INTO :USED | |
FROM TRANSORDER | |
WHERE SERIAL = :S | |
AND TYPE = 'B'; | |
/*--*/ | |
:TOTAL = :Q - :USED; | |
LOOP 200 WHERE :TOTAL <= 0; | |
INSERT INTO SIL_DEFICIENCIES_SER(SERIAL,PART,QUANT) | |
VALUES(:S,:P,:TOTAL); | |
/*---*/ | |
LOOP 200; | |
LABEL 208; | |
CLOSE PARTIAL; | |
LABEL 209; | |
/*---*/ | |
INSERT INTO SIL_DEFICIENCIES_SER(SERIAL,PART,QUANT) | |
SELECT SERIAL.SERIAL,SERIAL.PART,ROUND(REALQUANT(QUANT)) | |
FROM SERIAL,SERIALA,PART P | |
WHERE SERIALA.SERIAL = SERIAL.SERIAL | |
AND P.PART = SERIAL.PART | |
AND P.FAMILY = 3 | |
AND SERIALA.SERIALSTATUS IN (2,8,4); | |
/*--delete ordserial-*/ | |
DELETE FROM ORDSERIAL | |
WHERE SERIAL IN( | |
SELECT SERIAL FROM SIL_DEFICIENCIES_SER WHERE SERIAL > 0); | |
/*----*/ | |
DISPLAY 8 OF 10; | |
/***************************/ | |
DECLARE MAIN CURSOR FOR | |
SELECT DISTINCT | |
S.ORDI,S.PART,S.DEMAND,S.DUEDATE,S.PRIORITY,ORDERS.CURDATE | |
FROM SIL_DEFICIENCIES S,ORDERS,ORDERITEMS | |
WHERE ORDERS.ORD = ORDERITEMS.ORD | |
AND ORDERITEMS.ORDI = S.ORDI | |
ORDER BY 5,4,6,3,2; | |
OPEN MAIN; | |
:N = :RETVAL; | |
:I = 0; | |
GOTO 801 WHERE :N <= 0; | |
/*--------------*/ | |
LABEL 600; | |
:I = :I +1; | |
DISPLAY :I OF :N; | |
:ORDI = :DATE = :DEMAND = :PRIORITY = :PART = :DD = 0; | |
FETCH MAIN INTO :ORDI,:PART,:DEMAND,:DATE,:PRIORITY,:DD; | |
GOTO 800 WHERE :RETVAL <= 0; | |
/*-----RUN ON LEVEL 0-----*/ | |
LABEL 510; | |
:BAL = 0; | |
SELECT STOCK INTO :BAL | |
FROM SIL_DEFICIENCIES_S | |
WHERE PART = :PART; | |
/*----------*/ | |
:BAC = 0; | |
:BAC = (:BAL > 0 ? (:BAL >= :DEMAND ? :DEMAND : :BAL) : 0); | |
GOTO 520 WHERE :BAC = 0; | |
:BAL = :BAL - :BAC; | |
:DEMAND = :DEMAND - :BAC; | |
/*--------------*/ | |
UPDATE SIL_DEFICIENCIES | |
SET DEMAND = :DEMAND, | |
STOCK = :BAC, | |
SDEMAND = :X | |
WHERE ORDI = :ORDI | |
AND PART = :PART; | |
LABEL 520; | |
/*--------------*/ | |
UPDATE SIL_DEFICIENCIES_S | |
SET STOCK = :BAL | |
WHERE PART = :PART; | |
/*******************/ | |
:COUNT = 0; | |
LABEL 700; | |
:CCC = :COUNT; | |
:CH = 0; | |
SELECT COUNT(*) INTO :CH FROM SIL_DEFICIENCIES | |
WHERE INTVAL1 =:COUNT/:COUNT | |
AND ORDI = :ORDI; | |
GOTO 799 WHERE :CH = 0; | |
/*--*/ | |
INSERT INTO SIL_DEFICIENCIES(ORDI,ORIG,PART,DEMAND,DUEDATE,ODEMAND, | |
INTVAL1,LEVEL,PARENT,INTVAL2,PRIORITY) | |
SELECT ORDI,P.PART,P.PART,DEMAND * COEF ,DUEDATE, | |
DEMAND * COEF,2,:COUNT + 1,PARTARC.PART,(STOCK + INTVAL2) * | |
COEF,PRIORITY | |
FROM SIL_DEFICIENCIES,PART P,PARTARC | |
WHERE PARTARC.PART = SIL_DEFICIENCIES.PART | |
AND P.PART = PARTARC.SON | |
AND P.TYPE = 'P' | |
AND ORDI = :ORDI | |
AND SQL.DATE BETWEEN PARTARC.FROMDATE AND PARTARC.TILLDATE | |
AND DEMAND > 0 | |
AND INFOONLY <> 'Y' | |
AND INTVAL1 = (:COUNT/:COUNT); | |
/*-------------*/ | |
:COUNT = :COUNT + 1; | |
DECLARE RECUR CURSOR FOR | |
SELECT SIL_DEFICIENCIES.PART,DEMAND,LEVEL,PARENT,ISALT,INTVAL2 | |
FROM SIL_DEFICIENCIES,PART P | |
WHERE P.PART = SIL_DEFICIENCIES.PART | |
AND ORDI = :ORDI | |
AND INTVAL1 = 2 | |
AND DEMAND > 0 | |
ORDER BY 2; | |
OPEN RECUR; | |
GOTO 799 WHERE :RETVAL <= 0; | |
/*------------------*/ | |
LABEL 710; | |
:PART = :DEMAND = :PARENT = :L = :ISALT = :FSTOCK = :SERDEM = 0; | |
FETCH RECUR INTO :PART,:DEMAND,:L,:PARENT ,:ISALT, :FSTOCK; | |
GOTO 798 WHERE :RETVAL <= 0; | |
/*-----*/ | |
:BAL = :OBAL = :BAC = :XBAL = :XOBAL = :XBAC = 0; | |
/*-----DECREASE STOCK---*/ | |
SELECT STOCK,OSTOCK INTO :BAL,:OBAL | |
FROM SIL_DEFICIENCIES_S | |
WHERE PART = :PART; | |
:BAC = (:BAL > 0 ? (:BAL >= :DEMAND ? :DEMAND : :BAL) : 0); | |
:DEMAND = :DEMAND - :BAC; | |
/*-------END DECREASE STOCK----*/ | |
:SDM = :MDEMAND2 = 0; | |
GOTO 725 WHERE :DEMAND = 0; | |
/*----------CALC DEMAND FROM SERIALS----*/ | |
DECLARE SERIALS CURSOR FOR | |
SELECT SIL_DEFICIENCIES_SER.SERIAL,SIL_DEFICIENCIES_SER.QUANT, | |
USED,PSDATE | |
FROM SIL_DEFICIENCIES_SER,SERIAL | |
WHERE SIL_DEFICIENCIES_SER.SERIAL = SERIAL.SERIAL | |
AND SIL_DEFICIENCIES_SER.PART = :PART | |
AND (SIL_DEFICIENCIES_SER.QUANT > 0 OR USED > 0) | |
ORDER BY 4; | |
/*----*/ | |
OPEN SERIALS; | |
GOTO 716 WHERE :RETVAL <= 0; | |
LABEL 711; | |
:SER = :SERDEM = :USED = :NA = 0; | |
FETCH SERIALS INTO :SER,:SERDEM,:USED,:NA; | |
GOTO 715 WHERE :RETVAL <= 0 OR :DEMAND < 1; | |
GOTO 712 WHERE :SERDEM < 1; | |
/*---decresing demand on serial balance--------*/ | |
:USED = (:SERDEM > :DEMAND ? :SERDEM - :DEMAND : 0); | |
:DEMAND = (:DEMAND > :SERDEM ? :DEMAND : :SERDEM); | |
:SDM = :SERDEM; | |
/*----------*/ | |
GOTO 714 WHERE :DEMAND = :SERDEM; | |
LABEL 712; | |
/*---increase serial use by demand---*/ | |
:MDEMAND1 = :DEMAND; | |
:DEMAND = (:DEMAND > :USED ? :DEMAND - :USED : 0); | |
:USED = (:USED < :MDEMAND1 ? 0 : :USED - :MDEMAND1); | |
:MDEMAND2 = :MDEMAND2 + (:DEMAND - :MDEMAND1); | |
LABEL 714; | |
/*--*/ | |
UPDATE SIL_DEFICIENCIES_SER | |
/*SET QUANT = 0,*/ | |
SET QUANT = (:SERDEM > 0 ? QUANT - :SERDEM : 0), | |
USED = :USED, | |
ORDI = (ORDI > 0 ? ORDI : :ORDI) | |
WHERE SERIAL = :SER; | |
/*--update ordserial-----*/ | |
INSERT INTO ORDSERIAL(ORDI,SERIAL) VALUES(:ORDI,:SER); | |
/*--*/ | |
GOTO 715 WHERE :DEMAND = :SERDEM; | |
LOOP 711; | |
LABEL 715; | |
CLOSE SERIALS; | |
LABEL 716; | |
/*-------END SERIAL DECREASE CALC------------*/ | |
:ALTP = 0; | |
SELECT ALT INTO :ALTP | |
FROM PARTALT,PART P | |
WHERE PARTALT.PART = :PART | |
AND P.PART = PARTALT.ALT | |
AND P.TYPE = 'P' | |
AND (PARENT = 0 OR EXISTS( | |
SELECT 'X' FROM SIL_FLATTREE,SIL_DEFICIENCIES SDALT | |
WHERE SIL_FLATTREE.PARENT = PARTALT.PARENT | |
AND SDALT.PART = SIL_FLATTREE.PARENT | |
AND SDALT.ORDI = :ORDI | |
AND SON = PARTALT.PART)); | |
GOTO 719 WHERE :ALTP = 0; | |
/*-*/ | |
INSERT INTO SIL_DEFICIENCIES_S(PART,STOCK,INITIALSTOCK) | |
SELECT WARHSBAL.PART, | |
ROUND(REALQUANT(SUM(BALANCE))),ROUND(REALQUANT(SUM(BALANCE))) | |
FROM WARHSBAL,WAREHOUSES,CUSTOMERS | |
WHERE EXISTS( | |
SELECT 'X' FROM SIL_FLATTREE | |
WHERE SIL_FLATTREE.PARENT = :ALTP | |
AND WARHSBAL.PART =SIL_FLATTREE.SON) | |
AND WAREHOUSES.WARHS = WARHSBAL.WARHS | |
AND WARHSBAL.BALANCE <> 0 | |
AND WARHSBAL.WARHS <> 0 | |
AND WAREHOUSES.WARHS <> 0 | |
AND WAREHOUSES.SIL_DEFICIENCIES <> 'Y' | |
AND CUSTOMERS.CUST = WARHSBAL.CUST | |
AND CUSTOMERS.CUST NOT IN(-2,-3) | |
AND CUSTOMERS.CUSTNAME NOT LIKE '%MRB01%' | |
AND CUSTOMERS.CUSTNAME NOT LIKE '%MRB05%' | |
GROUP BY 1; | |
/*-*/ | |
LABEL 719; | |
/*---*/ | |
:ALTR = :AAA = 0; | |
SELECT KEY2,INTVAL1 INTO :AAA,:ALTR | |
FROM URI_STACK_B | |
WHERE KEY1 = :PART | |
AND KEY3 = 0 | |
AND INTVAL1 > 0; | |
GOTO 720 WHERE :RETVAL <= 0; | |
/*--------------------*/ | |
:D = :DEMAND; | |
:DEMAND = (:DEMAND >= :ALTR ? :DEMAND - :ALTR : 0); | |
:ALTRBAC = (:ALTR >= :D ? :ALTR - :D : 0); | |
UPDATE URI_STACK_B | |
SET INTVAL1 = :ALTRBAC | |
WHERE KEY1 = :PART | |
AND KEY2 = :AAA | |
AND KEY3 = 0; | |
/*-*/ | |
:ALTR = :ALTR - :ALTRBAC; | |
LABEL 720; | |
/*-------------ALT R------------*/ | |
:ALTRP = 0; | |
:OLDD = :DEMAND; | |
DECLARE ALTRPORD CURSOR FOR | |
SELECT KEY1,KEY2,KEY3,INTVAL1 | |
FROM URI_STACK_B | |
WHERE KEY1 = :PART | |
/*AND KEY3 < :DATE *//*TEMPORARY*/ | |
AND KEY3 > 0 | |
AND INTVAL1 > 0 | |
ORDER BY 3; | |
OPEN ALTRPORD; | |
GOTO 724 WHERE :RETVAL <= 0; | |
/*------------------------*/ | |
LABEL 721; | |
:P = :A = :DUE = :Q = 0; | |
FETCH ALTRPORD INTO :P,:A,:DUE,:Q; | |
GOTO 723 WHERE :RETVAL <= 0; | |
/*------------*/ | |
:ALTRP = (:Q >= :DEMAND ? :DEMAND : :Q); | |
:DEMAND = :DEMAND - :ALTRP; | |
:ALTR = :ALTR + :ALTRP; | |
/*--------------*/ | |
UPDATE URI_STACK_B | |
SET INTVAL1 = INTVAL1 - :ALTRP | |
WHERE KEY1 = :P | |
AND KEY2 = :A | |
AND KEY3 = :DUE; | |
/*--------------*/ | |
GOTO 723 WHERE :DEMAND = 0; | |
/*-------------*/ | |
LOOP 721; | |
LABEL 723; | |
CLOSE ALTRPORD; | |
LABEL 724; | |
/*--------------------------------*/ | |
GOTO 725 WHERE :ALTP = 0 | |
OR :DEMAND = 0 | |
OR :SERDEM <> 0 ; | |
/*----------:ALTP > 0-------------*/ | |
INSERT INTO SIL_DEFICIENCIES(ORDI,ORIG,PART,DUEDATE,DEMAND,ODEMAND, | |
INTVAL1,LEVEL,ISALT,INTVAL1,INTVAL2,PRIORITY,PARENT) | |
VALUES( :ORDI,:PART,:ALTP,:DATE,:DEMAND, | |
:DEMAND , 2, :COUNT + 1 ,1,3 ,:BAC,:PRIORITY,:PART); | |
:DEMAND = 0; | |
/*-*/ | |
INSERT INTO SIL_DEFICIENCIES_S(PART,STOCK,INITIALSTOCK) | |
SELECT WARHSBAL.PART, | |
ROUND(REALQUANT(SUM(BALANCE))),ROUND(REALQUANT(SUM(BALANCE))) | |
FROM WARHSBAL,WAREHOUSES,CUSTOMERS | |
WHERE EXISTS( | |
SELECT 'X' FROM SIL_DEFICIENCIES | |
WHERE PART = :ALTP | |
AND SIL_DEFICIENCIES.PART = WARHSBAL.PART) | |
AND WAREHOUSES.WARHS = WARHSBAL.WARHS | |
AND WARHSBAL.BALANCE <> 0 | |
AND WAREHOUSES.WARHS <> 0 | |
AND WAREHOUSES.SIL_DEFICIENCIES <> 'Y' | |
AND WARHSBAL.CUST NOT IN(-2,-3,-5) | |
AND CUSTOMERS.CUST = WARHSBAL.CUST | |
AND CUSTOMERS.CUSTNAME NOT LIKE '%MRB01%' | |
AND CUSTOMERS.CUSTNAME NOT LIKE '%MRB05%' | |
GROUP BY 1; | |
/*---------------*/ | |
LABEL 725; /*OR 740*/ | |
/*----------*/ | |
UPDATE SIL_DEFICIENCIES | |
SET DEMAND = :DEMAND, | |
STOCK = :BAC + :XBAC, | |
ALTR = :ALTR, | |
SDEMAND = (:SDM > 0 ? :SDM : :MDEMAND2) | |
WHERE ORDI = :ORDI | |
AND PART = :PART | |
AND PARENT = :PARENT; | |
/*--------------*/ | |
GOTO 730 WHERE :ALTR = 0; | |
INSERT INTO SIL_DEFICIENCIES(ORDI,ORIG,PART,DUEDATE,DEMAND,ODEMAND, | |
INTVAL1,LEVEL,PARENT,ISALT,PRIORITY) | |
VALUES( | |
:ORDI,:PART,:AAA,:DATE,:ALTR,:ALTR,2,:PART,:PART,1,:PRIORITY); | |
/*-*/ | |
INSERT INTO SIL_DEFICIENCIES_S(PART,STOCK) | |
SELECT PART,ROUND(REALQUANT(SUM(BALANCE))) | |
FROM WARHSBAL,WAREHOUSES,CUSTOMERS | |
WHERE PART = :AAA | |
AND WAREHOUSES.WARHS = WARHSBAL.WARHS | |
AND WARHSBAL.BALANCE <> 0 | |
AND WAREHOUSES.WARHS <> 0 | |
AND WAREHOUSES.SIL_DEFICIENCIES <> 'Y' | |
AND WARHSBAL.CUST NOT IN(-2,-3,-5) | |
AND CUSTOMERS.CUST = WARHSBAL.CUST | |
AND CUSTOMERS.CUSTNAME NOT LIKE '%MRB01%' | |
AND CUSTOMERS.CUSTNAME NOT LIKE '%MRB05%' | |
GROUP BY 1; | |
/*-*/ | |
LABEL 730; | |
/*--------------------*/ | |
/*GOTO 732 WHERE :BAC <= 0;*/ | |
UPDATE SIL_DEFICIENCIES_S | |
SET STOCK = STOCK - :BAC, | |
OSTOCK = OSTOCK + :SERBAC, | |
FSTOCK = FSTOCK + :FSTOCK | |
WHERE PART = :PART; | |
LABEL 732; | |
/*---------------------*/ | |
/*GOTO 733 WHERE :XBAC <= 0;*/ | |
UPDATE SIL_DEFICIENCIES_XL | |
SET STOCK = STOCK - :XBAC | |
WHERE PART = :PART; | |
LABEL 733; | |
/*---------------------*/ | |
LOOP 710; | |
LABEL 798; | |
CLOSE RECUR; | |
/*------------*/ | |
UPDATE SIL_DEFICIENCIES | |
SET INTVAL1 = INTVAL1 -1 | |
WHERE INTVAL1 > 0; | |
/*----------*/ | |
LOOP 700; | |
LABEL 799; | |
LOOP 600; | |
LABEL 800; | |
CLOSE MAIN; | |
LABEL 801; | |
UPDATE SIL_DEFICIENCIES SET INTVAL1 = 0; | |
/*---STOP---*/ | |
/*הורדת הדרישה להזמנה מקושרת לפק"ע המיוצרת למחסן לא כלול במלאי*/ | |
DECLARE DEV CURSOR FOR | |
SELECT SD.PART,SD.ORDI,SD.ORIG, | |
ROUND(REALQUANT(SUM(TRANSORDER.QUANT))) | |
FROM SIL_DEFICIENCIES SD, SERIALA, | |
WAREHOUSES,TRANSORDER,SERIAL,PART,ORDSERIAL | |
WHERE PART.PART = TRANSORDER.PART | |
AND SERIAL.SERIAL = TRANSORDER.SERIAL | |
AND SERIAL.PART = PART.PART | |
AND SERIAL.SERIAL = SERIALA.SERIAL | |
AND ORDSERIAL.SERIAL = SERIAL.SERIAL | |
AND ORDSERIAL.ORDI = SD.ORDI | |
AND SERIAL.PART = SD.PART | |
AND PART.FAMILY = 3 | |
AND SD.DEMAND >0 | |
/*AND SERIALA.SERIALSTATUS =5*/ | |
AND TRANSORDER.TYPE ='B' | |
AND TRANSORDER.TOWARHS = WAREHOUSES.WARHS | |
AND (WAREHOUSES.WARHSNAME = 'DEV' | |
OR WAREHOUSES.WARHSNAME='GEF' | |
OR WAREHOUSES.WARHS IN(0,966,6,1365,1420)) | |
GROUP BY 1,2,3; | |
/*-*/ | |
OPEN DEV; | |
GOTO 810 WHERE :RETVAL <= 0; | |
LABEL 805; | |
:PA = :ORD = :OG = :Q = 0; | |
FETCH DEV INTO :PA,:ORD,:OG,:Q; | |
GOTO 809 WHERE :RETVAL <= 0; | |
/*-------*/ | |
UPDATE SIL_DEFICIENCIES SET DEMAND = DEMAND - :Q | |
WHERE PART = :PA | |
AND ORDI = :ORD | |
AND ORIG = :OG; | |
/*-------------------*/ | |
LOOP 805 ; | |
LABEL 809; | |
CLOSE DEV; | |
LABEL 810; | |
/*-------------------------*/ | |
DISPLAY 1 OF 10; | |
INSERT INTO SIL_DEFICIENCIES(ORDI,ORIG,PART,DUEDATE,DEMAND,ODEMAND, | |
INTVAL1,LEVEL,PARENT,PRIORITY) | |
SELECT ORDI,P.PART,P.PART,DUEDATE, | |
DEMAND * COEF ,DEMAND * COEF,0,PARTARC.PART,PARTARC.PART,PRIORITY | |
FROM SIL_DEFICIENCIES,PART P,PARTARC | |
WHERE PARTARC.PART = SIL_DEFICIENCIES.PART | |
AND SQL.DATE BETWEEN PARTARC.FROMDATE AND PARTARC.TILLDATE | |
AND P.PART = SON | |
AND P.TYPE = 'R' | |
AND PARTARC.INFOONLY <> 'Y' | |
AND DEMAND > 0 | |
/*EXLAND לא לדרוש רכיבי מכלולי*/ | |
AND NOT EXISTS( | |
SELECT 'X' FROM PART WHERE PART = PARTARC.PART AND PROC = 264) | |
/*מסומן 'לא ליצור חוסרים' ומכלול ולא מקושר לפק"ע */ | |
AND NOT EXISTS( | |
SELECT 'X' FROM SIL_DEFICIENCIES_EXC E | |
WHERE E.PART IN(PARTARC.PART,PARTARC.SON) | |
AND E.ORDI = SIL_DEFICIENCIES.ORDI | |
/*AND SIL_DEFICIENCIES.SDEMAND = 0*/ | |
); | |
DISPLAY 2 OF 10; | |
/*--------BULK-----------*/ | |
UPDATE SIL_DEFICIENCIES | |
SET DEMAND = DEMAND + 20 | |
WHERE ORDI IN( | |
SELECT ORDI FROM SIL_DEFICIENCIES_SER | |
WHERE ORDI > 0 | |
AND EXISTS( | |
SELECT 'X' FROM KITITEMS,PART P | |
WHERE KITITEMS.PART = SIL_DEFICIENCIES.PART | |
AND KITITEMS.SERIAL = SIL_DEFICIENCIES_SER.SERIAL | |
AND P.PART = KITITEMS.PART | |
AND KITITEMS.QUANT > 4900 | |
AND P.KITFLAG <> 'Y')); | |
/*-*/ | |
UPDATE SIL_DEFICIENCIES | |
SET DEMAND = DEMAND + 30 | |
WHERE ORDI IN( | |
SELECT ORDI FROM SIL_DEFICIENCIES_SER | |
WHERE ORDI > 0 | |
AND EXISTS( | |
SELECT 'X' FROM KITITEMS,PART P ,PARTPARAM PA | |
WHERE KITITEMS.PART = SIL_DEFICIENCIES.PART | |
AND KITITEMS.SERIAL = SIL_DEFICIENCIES_SER.SERIAL | |
AND KITITEMS.QUANT > 4900 | |
AND P.PART = KITITEMS.PART | |
AND PA.PART = P.PART | |
AND (P.SECONDCOST < 0.2 OR PA.MINPURQUANT >= 300000) | |
AND P.KITFLAG <> 'Y')); | |
DISPLAY 3 OF 10; | |
/*------איתחול נתוני הזמנות רכש לרכיבים-------*/ | |
INSERT INTO SIL_DEFICIENCIES_P(PART,DUEDATE,STOCK) | |
SELECT P.PART, | |
DUEDATE, | |
ROUND(REALQUANT(SUM(ABALANCE))) | |
FROM PORDERITEMS,PART P,PORDERS | |
WHERE PORDERITEMS.CLOSED <> 'C' | |
AND P.PART = PORDERITEMS.PART | |
AND PORDERS.SUP <> 251 /*Exland*/ | |
AND P.TYPE = 'R' | |
AND PORDERS.ORD = PORDERITEMS.ORD | |
AND PORDERS.UFLAG = 'Y' | |
AND DEAL=0 /*NO CONNECTION TO DEALS*/ | |
GROUP BY 1,2; | |
/*----איתחול נתוני הזמנות מסגרת לרכיבים----*/ | |
INSERT INTO SIL_DEFICIENCIES_D(PART,STOCK) | |
SELECT PART,ROUND(REALQUANT(SUM(TBALANCE))) | |
FROM PDEALITEMS,PDEAL | |
WHERE PDEALITEMS.CLOSED <> 'C' | |
AND PDEAL.DEAL = PDEALITEMS.DEAL | |
AND UFLAG = 'Y' | |
AND TBALANCE > 0 | |
GROUP BY 1; | |
/*----*/ | |
DISPLAY 4 OF 10; | |
INSERT INTO URI_STACK_C(KEY1,KEY2,INTVAL1) | |
SELECT ALT,ORIG,PARTALT.PARENT | |
FROM PARTALT,SIL_DEFICIENCIES S, PART AL | |
WHERE PARTALT.PART = S.ORIG | |
AND AL.PART = ALT | |
AND AL.TYPE = 'R' | |
AND AL.PARTNAME NOT LIKE '%NV' | |
AND LEVEL > 10 | |
/*---- EXISTS STOCK ----*/ | |
AND (PARTALT.PARENT = 0 | |
OR EXISTS( /*----- ALTERNATIVE IN THIS SPESIFIC CASE---------*/ | |
SELECT 'X' FROM SIL_FLATTREE,SIL_DEFICIENCIES SDALT | |
WHERE SIL_FLATTREE.PARENT = PARTALT.PARENT | |
AND SDALT.PART = SIL_FLATTREE.PARENT | |
AND SDALT.ORDI = S.ORDI | |
AND SDALT.LEVEL < 10 | |
AND SDALT.DEMAND > 0 | |
AND SON = PARTALT.PART | |
)); | |
/*--*--*--*-יצור בחוסר-*--**/ | |
DISPLAY 5 OF 10; | |
DECLARE DEFDEF CURSOR FOR | |
SELECT S.SERIAL,SDD.PART,SDD.QUANT | |
FROM SIL_DEFICIENCIES_DEF SDD,SERIAL S | |
WHERE S.SERIAL = SDD.SERIAL | |
AND S.CLOSED = 'C'; | |
OPEN DEFDEF; | |
GOTO 852 WHERE :RETVAL <=0; | |
LABEL 840; | |
:SERIAL = :PART = :QUANT = 0; | |
FETCH DEFDEF INTO :SERIAL,:PART,:QUANT; | |
GOTO 851 WHERE :RETVAL <=0; | |
/*---מביא את מק"ט האב ושורת ההמנה הראשונה המקושרת---*/ | |
:PPART = :ORDI = 0; | |
SELECT S1.PART,MIN(OI.ORDI) INTO :PPART,:ORDI | |
FROM ORDERITEMS OI, SERIAL S1 ,ORDSERIAL OS | |
WHERE S1.SERIAL = :SERIAL | |
AND OS.SERIAL = S1.SERIAL | |
AND OI.ORDI = OS.ORDI | |
AND OI.CLOSED <> 'C' | |
GROUP BY 1; | |
/*-------------*/ | |
INSERT INTO SIL_DEFICIENCIES(ORDI,ORIG,PART,PARENT,LEVEL,DEMAND) | |
VALUES(:ORDI,:PART,:PART,:PPART,:PPART,:QUANT); | |
GOTO 845 WHERE :RETVAL > 0; | |
UPDATE SIL_DEFICIENCIES | |
SET DEMAND = DEMAND + :QUANT | |
WHERE PARENT = :PPART | |
AND PART = :PART | |
AND ORDI = :ORDI; | |
/*---*/ | |
LABEL 845; | |
LOOP 840; | |
LABEL 851; | |
CLOSE DEFDEF; | |
LABEL 852; | |
DISPLAY 8 OF 10; | |
/*=================RUN ON R DEMANDS===================*/ | |
/*:PAR1 = 'BEFORE R'; | |
WRNMSG 2;*/ | |
DECLARE RS CURSOR FOR | |
SELECT | |
ORDI,ORIG,PART,DEMAND,DUEDATE,ALTR,ISALT,LEVEL,PRIORITY,PARENT | |
FROM SIL_DEFICIENCIES | |
WHERE LEVEL >= 10 | |
AND DEMAND > 0 | |
ORDER BY 9,5,4; | |
OPEN RS; | |
:N = :RETVAL; | |
:I = 0; | |
GOTO 999 WHERE :N <= 0; | |
/*------------------*/ | |
LABEL 910; | |
:I = :I +1; | |
DISPLAY :I OF :N; | |
:ORDI = :ORIG = :PART = :DEMAND = :DATE = :ISALT = :ALTR = :LEVEL = | |
:PR = :PARENT = 0; | |
FETCH RS INTO | |
:ORDI,:ORIG,:PART,:DEMAND,:DATE,:ISALT,:ALTR,:LEVEL,:PR,:PARENT; | |
GOTO 998 WHERE :RETVAL <= 0; | |
/*-----------------*/ | |
GOTO 990 WHERE :DEMAND <= 0; | |
/*--------------------הורדת מלאי זמין-------------------*/ | |
:BAL = 0; | |
SELECT STOCK INTO :BAL | |
FROM SIL_DEFICIENCIES_S | |
WHERE PART = :PART; | |
/*----------*/ | |
:BALBAC = 0; | |
:BALBAC = (:BAL > 0 ? (:BAL >= :DEMAND ? :DEMAND : :BAL) : 0); | |
GOTO 915 WHERE :BALBAC = 0; | |
:BAL = :BAL - :BALBAC; | |
:DEMAND = :DEMAND - :BALBAC; | |
/*--------------*/ | |
UPDATE SIL_DEFICIENCIES_S | |
SET STOCK = :BAL | |
WHERE PART = :PART; | |
LABEL 915; | |
GOTO 990 WHERE :DEMAND <= 0; | |
/*--------------PORDERS--PORDES--PORDES--PORDES----------------*/ | |
:LEVELFAMILY = :PDATE = 0; | |
SELECT FAMILY INTO :LEVELFAMILY FROM PART WHERE PART = :LEVEL; | |
:PDATE = :DATE - (:LEVELFAMILY = 3 ? 45 : 32) * 1440; | |
/*-*/ | |
DECLARE PORD CURSOR FOR | |
SELECT DUEDATE,STOCK | |
FROM SIL_DEFICIENCIES_P | |
WHERE PART = :PART | |
AND STOCK > 0 | |
ORDER BY 1; | |
OPEN PORD; | |
GOTO 929 WHERE :RETVAL <= 0; | |
/*-----------------*/ | |
:PORDQ = :FPORDQ = 0; | |
:PDEMAND = :DEMAND; | |
LABEL 920; | |
:PD = :QUANT = 0; | |
FETCH PORD INTO :PD,:QUANT; | |
GOTO 928 WHERE :RETVAL <= 0; | |
/*--------------*/ | |
:PORDBAC = (:QUANT >= :DEMAND ? :DEMAND : :QUANT); | |
:PORDQ = :PORDQ + (:PD <= :PDATE ? :PORDBAC : 0); | |
:FPORDQ = :FPORDQ + (:PD > :PDATE ? :PORDBAC : 0); | |
:DEMAND = :DEMAND - (:PD <= :PDATE ? :PORDBAC : 0); | |
:PDEMAND = :PDEMAND - :PORDBAC; | |
/*--------------*/ | |
UPDATE SIL_DEFICIENCIES_P | |
SET STOCK = STOCK - :PORDBAC | |
WHERE PART = :PART | |
AND DUEDATE = :PD; | |
/*--------------*/ | |
GOTO 928 WHERE :PDEMAND <= 0; | |
LOOP 920; | |
LABEL 928; | |
CLOSE PORD; | |
LABEL 929; | |
/*----*/ | |
GOTO 990 WHERE :DEMAND <= 0; | |
/*--------------DEAL---DEAL---DEAL---DEAL---------------*/ | |
:DEAL = 0; | |
SELECT STOCK INTO :DEAL | |
FROM SIL_DEFICIENCIES_D | |
WHERE PART = :PART; | |
/*------*/ | |
:DEALBAC = 0; | |
:DEALBAC = (:DEAL > 0 ? (:DEAL >= :DEMAND ? :DEMAND : :DEAL) : 0); | |
:DEMAND = :DEMAND - :DEALBAC; | |
/*------*/ | |
GOTO 917 WHERE :DEALBAC = 0; | |
UPDATE SIL_DEFICIENCIES_D | |
SET STOCK = STOCK - :DEALBAC | |
WHERE PART = :PART; | |
LABEL 917; | |
/*------*/ | |
GOTO 990 WHERE :DEMAND <= 0; | |
/*--------- ALT ALT ALT -----------*/ | |
SELECT KEY1 FROM URI_STACK_C WHERE KEY2 = :PART; | |
GOTO 990 WHERE :RETVAL <= 0; | |
/*-----*/ | |
INSERT INTO SIL_DEFICIENCIES | |
(ORDI,ORIG,PART,DEMAND,ODEMAND,DUEDATE,LEVEL,PARENT,ISALT,INTVAL1, | |
PRIORITY) | |
SELECT | |
:ORDI,:ORIG,KEY1,:DEMAND,:DEMAND,:DATE,:LEVEL,:LEVEL,1,KEY2,:PR | |
FROM URI_STACK_C | |
WHERE KEY2 = :PART; | |
GOTO 932 WHERE :RETVAL <= 0; | |
/*-----*/ | |
INSERT INTO SIL_DEFICIENCIES_S(PART,STOCK,INITIALSTOCK) | |
SELECT WARHSBAL.PART, | |
ROUND(REALQUANT(SUM(BALANCE))),ROUND(REALQUANT(SUM(BALANCE))) | |
FROM WARHSBAL,WAREHOUSES,CUSTOMERS | |
WHERE EXISTS( | |
SELECT 'X' FROM URI_STACK_C | |
WHERE KEY1 = WARHSBAL.PART | |
AND KEY2 = :PART) | |
AND WAREHOUSES.WARHS = WARHSBAL.WARHS | |
AND WARHSBAL.BALANCE > 0 | |
AND WAREHOUSES.WARHS <> 0 | |
AND WAREHOUSES.SIL_DEFICIENCIES <> 'Y' | |
AND WARHSBAL.CUST NOT IN(-2,-3) | |
AND CUSTOMERS.CUST = WARHSBAL.CUST | |
AND CUSTOMERS.CUSTNAME NOT LIKE '%MRB01%' | |
AND CUSTOMERS.CUSTNAME NOT LIKE '%MRB05%' | |
GROUP BY 1; | |
LABEL 932; | |
/*--------------------------------*/ | |
DECLARE ALT CURSOR FOR | |
SELECT | |
PART,DEMAND | |
FROM SIL_DEFICIENCIES | |
WHERE ORDI = :ORDI | |
AND ORIG = :PART | |
AND LEVEL = :LEVEL | |
AND ISALT = 1; | |
OPEN ALT; | |
GOTO 949 WHERE :RETVAL <= 0; | |
/*-------*/ | |
:COLLECT = 0; | |
LABEL 930; | |
:ALTPART = :ALTDEMAND = 0; | |
FETCH ALT INTO :ALTPART,:ALTDEMAND; | |
GOTO 948 WHERE :RETVAL <= 0; | |
:ALTDEMAND = (:COLLECT > 0 ? :COLLECT : :ALTDEMAND); | |
/*-----RUN-------*/ | |
:BAL = 0; | |
SELECT STOCK INTO :BAL | |
FROM SIL_DEFICIENCIES_S | |
WHERE PART = :ALTPART; | |
/*--------*/ | |
:ALTBAC = 0; | |
:ALTBAC = (:BAL > 0 ? (:BAL >= :ALTDEMAND ? :ALTDEMAND : :BAL) : 0); | |
GOTO 935 WHERE :ALTBAC = 0; | |
:BAL = :BAL - :ALTBAC; | |
:ALTDEMAND = :ALTDEMAND - :ALTBAC; | |
/*--------*/ | |
UPDATE SIL_DEFICIENCIES_S | |
SET STOCK = STOCK - :ALTBAC | |
WHERE PART = :ALTPART; | |
/*--------*/ | |
LABEL 935; | |
GOTO 945 WHERE :ALTDEMAND <= 0; | |
/*---PORDESALT-----*/ | |
DECLARE PORDALT2 CURSOR FOR | |
SELECT DUEDATE,STOCK | |
FROM SIL_DEFICIENCIES_P | |
WHERE PART = :ALTPART | |
AND STOCK > 0; | |
OPEN PORDALT2; | |
GOTO 939 WHERE :RETVAL <= 0; | |
/*---------*/ | |
:APORDQ = :AFPORDQ = 0; | |
LABEL 936; | |
:PD = :QUANT = 0; | |
FETCH PORDALT2 INTO :PD,:QUANT; | |
GOTO 938 WHERE :RETVAL <= 0; | |
/*--------*/ | |
:APBAC = (:QUANT >= :ALTDEMAND ? :ALTDEMAND : :QUANT); | |
:APORDQ = :APORDQ + (:PD <= :PDATE ? :APBAC : 0); | |
:AFPORDQ = :AFPORDQ + (:PD > :PDATE ? :APBAC : 0); | |
:ALTDEMAND = :ALTDEMAND - (:PD <= :PDATE ? :APBAC : 0); | |
/*--------*/ | |
UPDATE SIL_DEFICIENCIES_P | |
SET STOCK = STOCK - :APBAC /*:QUANT*/ | |
WHERE PART = :ALTPART | |
AND DUEDATE = :PD; | |
/*--------*/ | |
LOOP 936; | |
LABEL 938; | |
CLOSE PORDALT2; | |
LABEL 939; | |
GOTO 945 WHERE :ALTDEMAND <= 0; | |
/*--------*/ | |
:DEAL = 0; | |
SELECT STOCK INTO :DEAL | |
FROM SIL_DEFICIENCIES_D | |
WHERE PART = :ALTPART; | |
:ADAC = 0; | |
:ADAC = (:DEAL > 0 ? (:DEAL >= :ALTDEMAND ? :ALTDEMAND : :DEAL) : | |
0); | |
:ALTDEMAND = :ALTDEMAND - :ADAC; | |
/*-*/ | |
UPDATE SIL_DEFICIENCIES_D | |
SET STOCK = STOCK - :BAC | |
WHERE PART = :ALTPART; | |
/*----write changes --*/ | |
LABEL 945; | |
UPDATE SIL_DEFICIENCIES | |
SET DEMAND = :ALTDEMAND, | |
STOCK = :ALTBAC, | |
DEAL = :ADAC, | |
PORD = :APORDQ, | |
FPORD = :AFPORDQ | |
WHERE ORDI = :ORDI | |
AND ISALT = 1 | |
AND ORIG = :ORIG | |
AND LEVEL = :LEVEL | |
AND PART = :ALTPART; | |
/*--------*/ | |
UPDATE SIL_DEFICIENCIES | |
SET DEMAND = :ALTDEMAND, | |
ODEMAND = :ALTDEMAND | |
WHERE ORDI = :ORDI | |
AND STOCK = 0 | |
AND PORD = 0 | |
AND DEAL = 0 | |
AND ORIG = :ORIG | |
AND ISALT =1 | |
AND LEVEL = :LEVEL | |
AND PART <> :ALTPART; | |
:ALTBAC = :ADAC = :APORDQ = :AFPORDQ = 0; | |
GOTO 948 WHERE :ALTDEMAND <= 0; | |
/*--------*/ | |
:COLLECT = :ALTDEMAND; /*MORE THEN ONE ALT IN CURSOR*/ | |
LOOP 930; | |
LABEL 948; | |
CLOSE ALT; | |
/*--------*/ | |
LABEL 949; | |
/*--------*/ | |
LABEL 990; | |
/*--------*/ | |
UPDATE SIL_DEFICIENCIES | |
SET DEMAND = :DEMAND, | |
STOCK = :BALBAC + :XBALBAC, | |
DEAL = :DEALBAC, | |
PORD = :PORDQ, | |
FPORD = :FPORDQ | |
WHERE ORDI = :ORDI | |
AND ORIG = :ORIG | |
AND LEVEL = :LEVEL /*LIKE PARENT*/ | |
AND PART = :PART; | |
:BALBAC = :XBALBAC = :DEALBAC = :PORDQ = :FPORDQ = :PDATE = 0; | |
LOOP 910; | |
/*----*/ | |
LABEL 998; | |
CLOSE RS; | |
LABEL 999; | |
LABEL 9990; | |
UNLINK URI_STACK_E; | |
UNLINK URI_STACK_p; | |
UNLINK URI_STACK_C; | |
UNLINK URI_STACK_B; | |
/*-update the alts field with the stock+pord of it's alts--*/ | |
DECLARE ALTS CURSOR FOR | |
SELECT ORDI, ORIG,PARENT, SUM(STOCK + PORD) | |
FROM SIL_DEFICIENCIES A | |
WHERE PART <> ORIG | |
AND ISALT > 0 | |
GROUP BY 1,2,3; | |
/*--*/ | |
OPEN ALTS; | |
GOTO 2099 WHERE :RETVAL <= 0; | |
LABEL 2010; | |
:ORIG = :ORDI = :PARENT = :S = 0; | |
FETCH ALTS INTO :ORDI,:ORIG, :PARENT, :S; | |
GOTO 2098 WHERE :RETVAL <= 0; | |
/*--*/ | |
UPDATE SIL_DEFICIENCIES | |
SET ALTS = :S | |
WHERE ORDI = :ORDI | |
AND ORIG = :ORIG | |
AND PARENT = :PARENT | |
AND ISALT = 0; | |
/*--*/ | |
LOOP 2010; | |
LABEL 2098; | |
CLOSE ALTS; | |
LABEL 2099; | |
/*---*/ | |
GOTO 9999 WHERE :$.SAV <> 'Y'; | |
INSERT INTO SIL_DEFICIENCIES_BCK(RUNDATE,ORDI,ORIG,PART,DUEDATE, | |
DEMAND,ISALT,ODEMAND,FPORD,ALTR,PORD,LEVEL,INTVAL1,STOCK,DEAL, | |
SDEMAND,INTVAL2,PRIORITY,PARENT,ALTS) | |
SELECT :RUNDATE,ORDI,ORIG,PART,DUEDATE, | |
DEMAND,ISALT,ODEMAND,FPORD,ALTR,PORD,LEVEL,INTVAL1,STOCK,DEAL, | |
SDEMAND,INTVAL2,PRIORITY,PARENT,ALTS | |
FROM SIL_DEFICIENCIES; | |
LABEL 9999; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment