1 PACKAGE BODY WIP_CLOSE_UTILITIES AS
2 /* $Header: wipclutb.pls 115.10 2003/10/06 19:28:01 ccai ship $ */
3
4 FUNCTION UNCLOSE_JOB
5 (P_wip_entity_id NUMBER,
6 P_organization_id NUMBER,
7 P_class_code VARCHAR2) RETURN NUMBER IS
8
9 CURSOR c1 IS
10 SELECT WDJ.DATE_RELEASED,
11 WDJ.DATE_COMPLETED,
12 WDJ.DATE_CLOSED
13 FROM ORG_ACCT_PERIODS OAP,
14 WIP_DISCRETE_JOBS WDJ
15 WHERE WDJ.WIP_ENTITY_ID = P_Wip_Entity_Id
16 AND WDJ.ORGANIZATION_ID = P_Organization_Id
17 AND OAP.ORGANIZATION_ID = WDJ.ORGANIZATION_ID
18 AND INV_LE_TIMEZONE_PUB.GET_LE_DAY_FOR_INV_ORG (WDJ.DATE_CLOSED,
19 wdj.organization_id)
20 BETWEEN OAP.PERIOD_START_DATE AND OAP.SCHEDULE_CLOSE_DATE
21 AND OAP.OPEN_FLAG = 'Y';
22
23 X_Date_Released DATE;
24 X_Date_Completed DATE;
25 X_Date_Closed DATE;
26 BEGIN
27
28 OPEN C1;
29 FETCH C1 INTO X_Date_Released,
30 X_Date_Completed,
31 X_Date_Closed;
32 IF C1%NOTFOUND THEN
33 CLOSE C1;
34 RETURN(0);
35 END IF;
36 CLOSE C1;
37
38 IF (X_Date_Released IS NOT NULL) THEN
39 WIP_CHANGE_STATUS.INSERT_PERIOD_BALANCES
40 (P_wip_entity_id, P_organization_id, '', '',
41 P_class_code, X_Date_closed);
42 END IF;
43
44 -- reset back to 6 (eam rel) if 7 (eam close), set to 5 (osfm rel)
45 -- if 8 (osfm close), otherwise, set it back to 1 (discrete)
46 UPDATE WIP_ENTITIES
47 SET ENTITY_TYPE = decode(ENTITY_TYPE, 7, 6, 8, 5, 1)
48 WHERE WIP_ENTITY_ID = P_wip_entity_id;
49
50 RETURN(1);
51
52 END UNCLOSE_JOB;
53
54 FUNCTION Check_Pending_Close
55 (P_wip_entity_id NUMBER,
56 P_organization_id NUMBER,
57 P_request_id NUMBER) RETURN NUMBER IS
58 old_status NUMBER;
59 rid varchar2(30);
60 req_id NUMBER := P_request_id;
61 dummy BOOLEAN;
62 dev_phase VARCHAR2(30);
63 dev_status VARCHAR2(30);
64 rphase VARCHAR2(30);
65 rstatus VARCHAR2(30);
66 msg VARCHAR2(240);
67 BEGIN
68 dummy := FND_CONCURRENT.get_request_status(
69 req_id,
70 '',
71 '',
72 rphase, rstatus,
73 dev_phase, dev_status,
74 msg);
75 IF dev_phase IN ('PENDING', 'RUNNING', 'NORMAL') OR
76 (dev_phase = 'COMPLETE'
77 AND dev_status IN ('NORMAL','WARNING')) THEN
78 return(0);
79 ELSE
80 DECLARE CURSOR C1 IS
81 SELECT WDCT.STATUS_TYPE,
82 WDCT.rowid
83 FROM WIP_DISCRETE_JOBS WDJ,
84 WIP_DJ_CLOSE_TEMP WDCT
85 WHERE WDCT.WIP_ENTITY_ID = P_wip_entity_id
86 AND WDCT.ORGANIZATION_ID = P_organization_id
87 AND WDJ.WIP_ENTITY_ID = WDCT.WIP_ENTITY_ID
88 AND WDJ.STATUS_TYPE = WIP_CONSTANTS.PEND_CLOSE;
89 BEGIN
90 OPEN C1;
91 FETCH C1 INTO old_status, rid;
92
93 -- This should never happen but if it does...
94 -- Actually could happen in the COMPLETE Error Case
95 IF C1%NOTFOUND THEN
96 CLOSE C1;
97 return(0);
98 END IF;
99
100 DELETE FROM WIP_DJ_CLOSE_TEMP
101 WHERE ROWID = rid;
102
103 CLOSE C1;
104 return(old_status);
105 END;
106 END IF;
107 END Check_Pending_Close;
108
109 END WIP_CLOSE_UTILITIES;