DBA Data[Home] [Help]

PACKAGE BODY: APPS.WIP_CLOSE_UTILITIES

Source


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;