DBA Data[Home] [Help]

PACKAGE BODY: APPS.OE_INC_ITEMS_FREEZE_CONC

Source


1 PACKAGE BODY OE_INC_ITEMS_FREEZE_CONC AS
2 /* $Header: OEXCFIIB.pls 120.5 2006/09/13 18:30:10 akurella noship $ */
3 
4 
5 
6 /*-----------------------------------------------------+
7  | Name        :   Request                             |
8  | Parameters  :   IN  p_order_num_low                 |
9  |                     p_order_num_high                |
10  |                     p_inventory_item_id             |
11  |                     p_schedule_date_low             |
12  |                     p_schedule_date_high            |
13  |                     p_num_of_days                   |
14  |                     p_ship_set_id                   |
15  |                 OUT ERRBUF                          |
16  |                     RETCODE                         |
17  | Description :   This Procedure is called from       |
18  |                 concurrent Program for progressing  |
19  |                 all the lines that are eligible for |
20  |                 Freezing the included items         |
21  |                 First select all the lines depending|
22  |                 upon the parameters and eligibility |
23  |                 and complete the activity.          |
24  +-----------------------------------------------------*/
25 
26 
27 PROCEDURE Request
28 ( ERRBUF                 OUT  NOCOPY VARCHAR2
29  ,RETCODE                OUT  NOCOPY VARCHAR2
30  ,p_org_id		 IN          NUMBER
31  ,p_order_num_low        IN          NUMBER
32  ,p_order_num_high       IN          NUMBER
33  ,p_inventory_item_id    IN          NUMBER
34  ,p_schedule_date_low    IN          VARCHAR2
35  ,p_schedule_date_high   IN          VARCHAR2
36  ,p_num_of_days          IN          NUMBER
37  ,p_ship_set_id          IN          NUMBER
38 ) IS
39 
40 l_line_id                  NUMBER;
41 l_msg_count                NUMBER;
42 l_msg_data                 VARCHAR2(2000)  := NULL;
43 l_schedule_date_low        DATE;
44 l_schedule_date_high       DATE;
45 l_sql_stmt                 VARCHAR2(20900);
46 l_sqlCursor                INTEGER;
47 l_dummy                    NUMBER;
48 
49 -- Moac
50 l_single_org		   BOOLEAN := FALSE;
51 l_old_org_id		   NUMBER  := -99;
52 l_org_id		   NUMBER;
53 
54 BEGIN
55    --Initialze retcode #4220950
56    ERRBUF  := '';
57    RETCODE := 0;
58 
59     -- MOAC Start
60     IF MO_GLOBAL.Get_Access_Mode = 'S' THEN
61        l_single_org := TRUE;
62     ELSIF p_org_id IS NOT NULL THEN
63        l_single_org := TRUE;
64        MO_GLOBAL.set_policy_context(p_access_mode => 'S', p_org_id => p_org_id);
65     END IF;
66 
67    l_sql_stmt := 'SELECT   L.line_id, L.org_id  FROM     oe_order_lines L'     ||
68                  ',oe_order_headers_all H '                                    ||
69                  ',wf_item_activity_statuses WIAS'                             ||
70 	         ',wf_process_activities WPA'                                  ||
71                  ' WHERE  l.open_flag           =   ''Y'' '                      ||
72                  ' AND  WIAS.Process_Activity =   WPA.instance_id'             ||
73                  ' AND  WPA.activity_name     =  ''FREEZE_INCLUDED_ITEMS_ELIGIBLE'''  ||
74                  ' AND  WIAS.item_type        =   ''OEOL'''                    ||
75                  ' AND  WPA.activity_item_type =  ''OEOL'''                    ||
76                  ' AND  WIAS.item_key         =   l.line_id'          ||
77                  ' AND  WIAS.activity_status  =   ''NOTIFIED''' ;
78 
79 
80    IF p_org_id is NOT NULL THEN
81       l_sql_stmt := l_sql_stmt || ' AND  H.org_id        =  :bindvar_org_id';
82    END IF;
83    -- MOAC End
84 
85    IF p_order_num_low is NOT NULL THEN
86       l_sql_stmt := l_sql_stmt || ' AND  H.order_number        >=  :p1';
87    END IF;
88 
89    IF p_order_num_high is NOT NULL THEN
90       l_sql_stmt := l_sql_stmt || ' AND  H.order_number        <=  :p2';
91    END IF;
92 
93    IF p_inventory_item_id is NOT NULL THEN
94       l_sql_stmt := l_sql_stmt || ' AND  L.inventory_item_id   =  :p3';
95    END IF;
96 
97    IF p_schedule_date_low is NOT NULL OR
98                p_num_of_days is NOT NULL THEN
99       l_sql_stmt := l_sql_stmt || ' AND  L.schedule_ship_date  >=  :p4';
100    END IF;
101 
102    IF p_schedule_date_high is NOT NULL OR
103                p_num_of_days is NOT NULL THEN
104       l_sql_stmt := l_sql_stmt || ' AND  L.schedule_ship_date  <=  :p5';
105    END IF;
106 
107    IF p_ship_set_id is NOT NULL THEN
108       l_sql_stmt := l_sql_stmt || ' AND  L.ship_set_id         =  :p6';
109    END IF;
110 
111    -- MOAC Start
112    If not l_single_org then
113       l_sql_stmt := l_sql_stmt || ' ORDER BY L.org_id, L.header_id';
114    else
115       l_sql_stmt := l_sql_stmt || ' ORDER BY L.header_id';
116    end if;
117    -- MOAC End
118 
119     FND_FILE.PUT_LINE(FND_FILE.LOG,'Starting Freeze Included Items Program..');
120 
121     FND_FILE.PUT_LINE(FND_FILE.LOG,'Program Parameters');
122     FND_FILE.PUT_LINE(FND_FILE.LOG,'------------------');
123     FND_FILE.PUT_LINE(FND_FILE.LOG,'Order Num Low:'||p_order_num_low);
124     FND_FILE.PUT_LINE(FND_FILE.LOG,'Order Num High:'||p_order_num_high);
125     FND_FILE.PUT_LINE(FND_FILE.LOG,'Item:'||p_inventory_item_id);
126     FND_FILE.PUT_LINE(FND_FILE.LOG,'Schedule Date Low:'||p_schedule_date_low);
127     FND_FILE.PUT_LINE(FND_FILE.LOG,'Schedule Date High:'||p_schedule_date_high);
128     FND_FILE.PUT_LINE(FND_FILE.LOG,'Ship Set:'||p_ship_set_id);
129     FND_FILE.PUT_LINE(FND_FILE.LOG,'Num of Days:'||p_num_of_days);
130 
131     SELECT
132           FND_DATE.Canonical_To_Date(p_schedule_date_low),
133           FND_DATE.Canonical_To_Date(p_schedule_date_high)
134     INTO
135           l_schedule_date_low,
136           l_schedule_date_high
137     FROM   DUAL;
138 
139    l_sqlCursor := DBMS_SQL.Open_Cursor;
140 
141    DBMS_SQL.PARSE(l_sqlCursor, l_sql_stmt, DBMS_SQL.NATIVE);
142 
143     -- Moac Start
144     IF p_org_id IS NOT NULL THEN
145        DBMS_SQL.BIND_VARIABLE(l_sqlCursor,':bindvar_org_id',p_org_id);
146     END IF;
147     -- Moac End
148 
149    IF p_order_num_low IS NOT NULL THEN
150       DBMS_SQL.BIND_VARIABLE(l_sqlCursor,':p1',p_order_num_low);
151    END IF;
152 
153    IF p_order_num_high IS NOT NULL THEN
154       DBMS_SQL.BIND_VARIABLE(l_sqlCursor,':p2',p_order_num_high);
155    END IF;
156 
157    IF p_inventory_item_id is NOT NULL THEN
158       DBMS_SQL.BIND_VARIABLE(l_sqlCursor,':p3',p_inventory_item_id);
159    END IF;
160 
161    IF p_schedule_date_low is NOT NULL THEN
162       DBMS_SQL.BIND_VARIABLE(l_sqlCursor,':p4',l_schedule_date_low);
163    END IF;
164 
165    IF p_schedule_date_high is NOT NULL THEN
166       DBMS_SQL.BIND_VARIABLE(l_sqlCursor,':p5',l_schedule_date_high);
167    END IF;
168 
169    IF p_ship_set_id is NOT NULL THEN
170       DBMS_SQL.BIND_VARIABLE(l_sqlCursor,':p6',p_ship_set_id);
171    END IF;
172 
173    IF (p_schedule_date_low is NULL   AND
174         p_schedule_date_high is NULL) AND
175           p_num_of_days is NOT NULL    THEN
176       DBMS_SQL.BIND_VARIABLE(l_sqlCursor,':p4',sysdate);
177       DBMS_SQL.BIND_VARIABLE(l_sqlCursor,':p5',sysdate+p_num_of_days);
178    END IF;
179 
180    Oe_debug_pub.add('Sql Stmt: ' || l_sql_stmt,1);
181    DBMS_SQL.DEFINE_COLUMN (l_sqlCursor,1,l_line_id);
182    -- Moac
183    DBMS_SQL.DEFINE_COLUMN (l_sqlCursor,2,l_org_id);
184 
185    l_dummy := DBMS_SQL.execute(l_sqlCursor);
186 
187     Oe_debug_pub.add('After Executing the Cusrsor',1);
188     LOOP
189 
190       IF DBMS_SQL.FETCH_ROWS(l_sqlCursor) = 0 THEN
191          EXIT;
192       END IF;
193 
194       DBMS_SQL.COLUMN_VALUE(l_sqlCursor,1,l_line_id);
195       -- Moac
196       DBMS_SQL.COLUMN_VALUE(l_sqlCursor,2,l_org_id);
197 
198             FND_FILE.PUT_LINE(FND_FILE.LOG,'Processing Line:'||l_line_id);
199 
200 	    -- MOAC Start
201 	    IF not l_single_org and l_org_id <> l_old_org_id THEN
202 	       l_old_org_id := l_org_id;
203 	       MO_GLOBAL.set_policy_context(p_access_mode => 'S', p_org_id  => l_org_id);
204 	    END IF;
205 	    -- MOAC End
206 
207            Oe_debug_pub.add('Processing Line : ' || to_char(l_line_id),1);
208 
209             WF_ENGINE.CompleteActivityInternalName(
210                         itemtype  =>  'OEOL',
211                         itemkey   =>  to_char(l_line_id),
212                         activity  =>  'FREEZE_INCLUDED_ITEMS_ELIGIBLE',
213                         result    =>  'COMPLETED');
214 
215            -- Write messages in to the log file
216 
217                 OE_MSG_PUB.Count_And_Get (
218                                  p_count  => l_msg_count,
219                                  p_data   => l_msg_data);
220 
221                 FOR I IN 1..l_msg_count
222                 LOOP
223                    l_msg_data  :=  OE_MSG_PUB.Get(I,'F');
224                    FND_FILE.PUT_LINE(FND_FILE.LOG,l_msg_data);
225                 END LOOP;
226     END LOOP;
227 
228     DBMS_SQL.CLOSE_CURSOR(l_sqlCursor);
229 
230     FND_FILE.PUT_LINE(FND_FILE.LOG,'Exiting Freeze Included Items Program:..');
231 
232 
233 EXCEPTION
234         WHEN FND_API.G_EXC_ERROR THEN
235           FND_FILE.PUT_LINE(FND_FILE.LOG,'Expected Error in '||
236                   'Freeze Included Items Concurrent Program '||sqlerrm);
237 
238         WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
239           FND_FILE.PUT_LINE(FND_FILE.LOG,'Unexpected Error in '||
240                   'Freeze Included Items Concurrent Program '||sqlerrm);
241 END Request;
242 
243 END OE_INC_ITEMS_FREEZE_CONC;