DBA Data[Home] [Help]

PACKAGE BODY: APPS.OE_EXPORT_COMPLIANCE_CONC

Source


1 PACKAGE BODY OE_EXPORT_COMPLIANCE_CONC AS
2 /* $Header: OEXCITMB.pls 120.5.12010000.2 2009/01/12 10:36:13 sahvivek ship $ */
3 
4 
5 
6 /*-----------------------------------------------------+
7  | Name        :   Screening_Eligible                  |
8  | Parameters  :   IN  p_line_id                       |
9  |                                                     |
10  | Description :   This Procedure returns whether the  |
11  |                 line is eligible for Screening.     |
12  |                 The line is eligible for screening  |
13  |                 if it has line status code as       |
14  |                 EXPORT COMPLIANCE ELIGIBLE          |
15  |                 (The line had a data error)         |
16  +-----------------------------------------------------*/
17 
18 FUNCTION Screening_Eligible(
19                            p_line_id NUMBER
20                            ) RETURN BOOLEAN IS
21 
22 l_activity_status VARCHAR2(20);
23 
24 BEGIN
25 
26      -- Get Work Flow status for Line Id
27 
28         SELECT WIAS.Activity_Status
29         INTO   l_activity_status
30         FROM   wf_item_activity_statuses WIAS,
31 	       wf_process_activities WPA
32         WHERE  WIAS.Process_Activity = WPA.instance_id
33           AND  WPA.activity_name     = 'EXPORT_COMPLIANCE_ELIGIBLE'
34           AND  WIAS.item_type        = 'OEOL'
35           AND  WIAS.item_key         = to_char(p_line_id)
36           AND  WIAS.activity_status  = 'NOTIFIED' ;
37 
38       RETURN TRUE;
39 
40 EXCEPTION
41         WHEN NO_DATA_FOUND THEN
42            RETURN FALSE;
43         WHEN OTHERS THEN
44            RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
45 
46 END Screening_Eligible;
47 
48 
49 
50 
51 
52 /*-----------------------------------------------------+
53  | Name        :   Screening                           |
54  | Parameters  :   IN  p_order_num_low                 |
55  |                     p_order_num_high                |
56  |                     p_customer_name                 |
57  |                     p_customer_po_num               |
58  |                     p_order_type                    |
59  |                     p_warehouse                     |
60  |                     p_ship_to_location              |
61  |                     p_inventory_item_id             |
62  |                     p_schedule_date_low             |
63  |                     p_schedule_date_high            |
64  |                     p_ordered_date_low              |
65  |                     p_ordered_date_high             |
66  |                 OUT NOCOPY ERRBUF                   |
67  |                     RETCODE                         |
68  | Description :   This Procedure is called from       |
69  |                 concurrent Program for Performing   |
70  |                 Export Compliance Screening         |
71  +-----------------------------------------------------*/
72 
73 
74 PROCEDURE Screening  (
75                       ERRBUF                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
76                      ,RETCODE                OUT NOCOPY /* file.sql.39 change */ VARCHAR2
77      		      /* Moac */
78                      ,p_org_id		     IN   NUMBER
79                      ,p_order_num_low        IN   NUMBER
80                      ,p_order_num_high       IN   NUMBER
81                      ,p_customer             IN   NUMBER
82                      ,p_customer_po_num      IN   VARCHAR2
83                      ,p_order_type           IN   NUMBER
84                      ,p_warehouse            IN   NUMBER
85                      ,p_ship_to_location     IN   NUMBER
86                      ,p_inventory_item_id    IN   NUMBER
87                      ,p_schedule_date_low    IN   VARCHAR2
88                      ,p_schedule_date_high   IN   VARCHAR2
89                      ,p_ordered_date_low     IN   VARCHAR2
90                      ,p_ordered_date_high    IN   VARCHAR2
91                      ) IS
92   /* bug 4632747
93       CURSOR C_GET_LINES (
94                       cp_order_num_low        NUMBER
95                      ,cp_order_num_high       NUMBER
96                      ,cp_customer             NUMBER
97                      ,cp_customer_po_num      VARCHAR2
98                      ,cp_order_type           NUMBER
99                      ,cp_warehouse            NUMBER
100                      ,cp_ship_to_location     NUMBER
101                      ,cp_inventory_item_id    NUMBER
102                      ,cp_schedule_date_low    DATE
103                      ,cp_schedule_date_high   DATE
104                      ,cp_ordered_date_low     DATE
105                      ,cp_ordered_date_high    DATE
106                      )
107       IS
108         SELECT -- MOAC_SQL_CHANGE
109                L.line_id , L.org_id
110         FROM     oe_order_lines L
111                  ,oe_order_headers_all H
112                  ,mtl_system_items MSI
113         WHERE      L.header_id             =   H.header_id
114           AND  L.inventory_item_id         =   MSI.inventory_item_id
115           AND  L.ship_from_org_id          =   MSI.organization_id
116           AND  H.order_number             >=   NVL(cp_order_num_low,
117                                                   H.order_number)
118           AND  H.order_number             <=   NVL(cp_order_num_high,
119                                                   H.order_number)
120           AND  NVL(H.sold_to_org_id,-99)   =   NVL(cp_customer,
121                                                    NVL(H.sold_to_org_id,-99))
122           AND  NVL(H.cust_po_number,-99)   =   NVL(cp_customer_po_num,
123                                                    NVL(H.cust_po_number,-99))
124           AND  H.order_type_id             =   NVL(cp_order_type,
125                                                    H.order_type_id)
126           AND  NVL(L.ship_from_org_id,-99) =   NVL(cp_warehouse,
127                                                    NVL(L.ship_from_org_id,-99))
128           AND  NVL(L.ship_to_org_id,-99)   =   NVL(cp_ship_to_location,
129                                                    NVL(L.ship_to_org_id,-99))
130           AND  L.inventory_item_id         =   NVL(cp_inventory_item_id,
131                                                    L.inventory_item_id)
132           AND  L.schedule_ship_date       >=   NVL(cp_schedule_date_low,
133                                                    L.schedule_ship_date)
134           AND  L.schedule_ship_date       <=   NVL(cp_schedule_date_high,
135                                                    L.schedule_ship_date)
136           AND  H.ordered_date             >=   NVL(cp_ordered_date_low,
137                                                    H.ordered_date)
138           AND  H.ordered_date             <=   NVL(cp_ordered_date_high,
139                                                    H.ordered_date)
140           AND  H.open_flag                 =   'Y' --for 3631462
141           AND  L.open_flag                 =   'Y' --for 3631462
142           ORDER BY H.org_id, H.header_id;
143 
144  commented for bug 4632747 */
145 -- added for bug 4632747
146 l_sql_stmt      VARCHAR2(20900);
147 l_sqlCursor     INTEGER;
148 l_dummy         NUMBER;
149 
150 l_line_id   NUMBER;
151 l_msg_count NUMBER;
152 l_msg_data  VARCHAR2(2000)  := NULL;
153 l_schedule_date_low        DATE;
154 l_schedule_date_high       DATE;
155 l_ordered_date_low         DATE;
156 l_ordered_date_high        DATE;
157 
158 -- MOAC
159 l_single_org		   BOOLEAN := FALSE;
160 l_old_org_id		   NUMBER  := -99;
161 l_org_id                   NUMBER;
162 
163 BEGIN
164    --Initialze retcode #4220950
165    ERRBUF  := '';
166    RETCODE := 0;
167 
168     FND_FILE.PUT_LINE(FND_FILE.LOG,'Starting EC Screening Program..');
169 
170 
171     FND_FILE.PUT_LINE(FND_FILE.LOG,'Program Parameters');
172     FND_FILE.PUT_LINE(FND_FILE.LOG,'------------------');
173 
174     FND_FILE.PUT_LINE(FND_FILE.LOG,'p_org_id:'||p_org_id);
175     FND_FILE.PUT_LINE(FND_FILE.LOG,'Order Num Low:'||p_order_num_low);
176     FND_FILE.PUT_LINE(FND_FILE.LOG,'Order Num High:'||p_order_num_high);
177     FND_FILE.PUT_LINE(FND_FILE.LOG,'Customer Id:'||p_customer);
178     FND_FILE.PUT_LINE(FND_FILE.LOG,'Customer PO Num:'||p_customer_po_num);
179     FND_FILE.PUT_LINE(FND_FILE.LOG,'Order Type:'||p_order_type);
180     FND_FILE.PUT_LINE(FND_FILE.LOG,'Warehouse:'||p_warehouse);
181     FND_FILE.PUT_LINE(FND_FILE.LOG,'Ship To Location:'||p_ship_to_location);
182     FND_FILE.PUT_LINE(FND_FILE.LOG,'Item:'||p_inventory_item_id);
183     FND_FILE.PUT_LINE(FND_FILE.LOG,'Schedule Date Low:'||p_schedule_date_low);
184     FND_FILE.PUT_LINE(FND_FILE.LOG,'Schedule Date High:'||p_schedule_date_high);
185     FND_FILE.PUT_LINE(FND_FILE.LOG,'Ordered Date Low:'||p_ordered_date_low);
186     FND_FILE.PUT_LINE(FND_FILE.LOG,'Ordered Date High:'||p_ordered_date_high);
187 
188     SELECT
189           FND_DATE.Canonical_To_Date(p_schedule_date_low),
190           FND_DATE.Canonical_To_Date(p_schedule_date_high),
191           FND_DATE.Canonical_To_Date(p_ordered_date_low),
192           FND_DATE.Canonical_To_Date(p_ordered_date_high)
193     INTO
194           l_schedule_date_low,
195           l_schedule_date_high,
196           l_ordered_date_low,
197           l_ordered_date_high
198     FROM   DUAL;
199 
200     -- MOAC Start
201     IF MO_GLOBAL.get_access_mode =  'S' THEN
202        l_single_org := TRUE;
203     ELSIF p_org_id IS NOT NULL THEN
204        l_single_org := TRUE;
205        MO_GLOBAL.set_policy_context(p_access_mode => 'S', p_org_id  => p_org_id);
206     END IF;
207     -- MOAC End
208 
209  -- The cursor is being built based on the parameters passed, bug 4632747
210   l_sql_stmt := 'SELECT L.line_id, L.org_id '||
211                 'FROM   oe_order_lines L, oe_order_headers_all H, '||
212                        'wf_item_activity_statuses WIAS, wf_process_activities WPA ' ||
213                 'WHERE  L.header_id =   H.header_id '||
214                 'AND  WIAS.item_key         = to_char(L.line_id) '||
215                 'AND  WIAS.Process_Activity = WPA.instance_id '||
216                 'AND  WPA.activity_name     = ''EXPORT_COMPLIANCE_ELIGIBLE'' '||
217                 'AND  WIAS.item_type        = ''OEOL'' ' ||
218                 'AND  WIAS.activity_status  = ''NOTIFIED'' '||
219                 'AND  H.open_flag = ''Y'' ' ||
220                 'AND  L.open_flag = ''Y'' ';
221 
222   IF p_order_num_low is not null then
223     l_sql_stmt := l_sql_stmt ||  ' AND H.ORDER_NUMBER >= :p1 ';
224   END IF;
225   IF p_order_num_high is not null then
226     l_sql_stmt := l_sql_stmt || ' AND H.ORDER_NUMBER <= :p2 ';
227   END IF;
228   IF p_customer is not null then
229     l_sql_stmt := l_sql_stmt || ' AND H.SOLD_TO_ORG_ID = :p3 ';
230   END IF;
231   IF p_customer_po_num is not null then
232     l_sql_stmt := l_sql_stmt || ' AND H.cust_po_number = :p4 ' ;
233   END IF;
234   IF p_order_type is not null then
235     l_sql_stmt := l_sql_stmt || ' AND H.order_type_id = :p5 ';
236   END IF;
237   IF p_warehouse is not null then
238     l_sql_stmt := l_sql_stmt || ' AND L.ship_from_org_id = :p6 ';
239   END IF;
240   IF p_ship_to_location is not null then
241     l_sql_stmt := l_sql_stmt || ' AND L.ship_to_org_id = :p7 ';
242   END IF;
243   IF p_inventory_item_id is not null then
244     l_sql_stmt := l_sql_stmt || ' AND L.inventory_item_id = :p8';
245   END IF;
246   IF l_schedule_date_low is not null then
247     l_sql_stmt := l_sql_stmt || ' AND L.schedule_ship_date >= :p9 ' ;
248   END IF;
249   IF l_schedule_date_high is not null then
250     l_sql_stmt := l_sql_stmt || ' AND L.schedule_ship_date <= :p10 ' ;
251   END IF;
252   IF l_ordered_date_low is not null then
253     l_sql_stmt := l_sql_stmt || ' AND H.ordered_date >= :p11 ';
254   END IF;
255   IF l_ordered_date_high is not null then
256     l_sql_stmt := l_sql_stmt || ' AND H.ordered_date <= :p12';
257   END IF;
258   IF p_org_id is NOT NULL THEN
259     l_sql_stmt := l_sql_stmt || ' AND L.org_id = :p13';
260   END IF;
261 
262   l_sql_stmt := l_sql_stmt || ' ORDER BY H.header_id';
263   FND_FILE.PUT_LINE(FND_FILE.LOG,'Sql built = '|| l_sql_stmt);
264 
265   l_sqlCursor := DBMS_SQL.Open_Cursor;
266 
267   DBMS_SQL.PARSE(l_sqlCursor, l_sql_stmt, DBMS_SQL.NATIVE);
268 
269   IF p_order_num_low IS NOT NULL THEN
270     DBMS_SQL.BIND_VARIABLE(l_sqlCursor,':p1',p_order_num_low);
271   END IF;
272   IF p_order_num_high IS NOT NULL THEN
273     dbms_sql.bind_variable(l_sqlCursor,':p2',p_order_num_high);
274   END IF;
275   IF p_customer IS NOT NULL THEN
276     dbms_sql.bind_variable(l_sqlCursor,':p3',p_customer);
277   END IF;
278   IF p_customer_po_num IS NOT NULL THEN
279     dbms_sql.bind_variable(l_sqlCursor,':p4',p_customer_po_num);
280   END IF;
281   IF p_order_type IS NOT NULL THEN
282     dbms_sql.bind_variable(l_sqlCursor,':p5',p_order_type);
283   END IF;
284   IF p_warehouse IS NOT NULL THEN
285     dbms_sql.bind_variable(l_sqlCursor,':p6',p_warehouse);
286   END IF;
287   IF p_ship_to_location IS NOT NULL THEN
288     dbms_sql.bind_variable(l_sqlCursor,':p7',p_ship_to_location);
289   END IF;
290   IF p_inventory_item_id IS NOT NULL THEN
291     dbms_sql.bind_variable(l_sqlCursor,':p8',p_inventory_item_id);
292   END IF;
293   IF l_schedule_date_low IS NOT NULL THEN
294     dbms_sql.bind_variable(l_sqlCursor,':p9',l_schedule_date_low);
295   END IF;
296   IF l_schedule_date_high IS NOT NULL THEN
297     dbms_sql.bind_variable(l_sqlCursor,':p10',l_schedule_date_high);
298   END IF;
299   IF l_ordered_date_low IS NOT NULL THEN
300     dbms_sql.bind_variable(l_sqlCursor,':p11',l_ordered_date_low);
301   END IF;
302   IF l_ordered_date_high IS NOT NULL THEN
303     dbms_sql.bind_variable(l_sqlCursor,':p12',l_ordered_date_high);
304   END IF;
305   IF p_org_id IS NOT NULL THEN
306     dbms_sql.bind_variable(l_sqlCursor,':p13',p_org_id);
307   END IF;
308 
309   DBMS_SQL.DEFINE_COLUMN (l_sqlCursor,1,l_line_id);
310   DBMS_SQL.DEFINE_COLUMN (l_sqlCursor,2,l_org_id);
311   l_dummy := DBMS_SQL.execute(l_sqlCursor);
312 
313   LOOP
314 
315     IF DBMS_SQL.FETCH_ROWS(l_sqlCursor) = 0 THEN
316       EXIT;
317     END IF;
318 
319     DBMS_SQL.COLUMN_VALUE(l_sqlCursor,1,l_line_id);
320     DBMS_SQL.COLUMN_VALUE(l_sqlCursor,2,l_org_id);
321 
322     /*
323     FOR  c_lines IN C_GET_LINES(
324                      p_order_num_low,
325                      p_order_num_high,
326                      p_customer,
327                      p_customer_po_num,
328                      p_order_type,
329                      p_warehouse,
330                      p_ship_to_location,
331                      p_inventory_item_id,
332                      l_schedule_date_low,
333                      l_schedule_date_high,
334                      l_ordered_date_low,
335                      l_ordered_date_high
336                      )
337     LOOP
338        l_line_id  :=   c_lines.Line_Id;
339 
340          IF Screening_Eligible(p_line_id => l_line_id) THEN
341     */
342             FND_FILE.PUT_LINE(FND_FILE.LOG,'Line:'||l_line_id||
343                                        ' is Eligible for Screening');
344 
345             -- MOAC Start
346 	    -- l_org_id := c_lines.org_id; commented for bug 4632747
347             IF NOT l_single_org and l_org_id <> l_old_org_id THEN
348                l_old_org_id := l_org_id;
349                MO_GLOBAL.set_policy_context(p_access_mode => 'S', p_org_id  => l_org_id);
350             END IF;
351             -- MOAC End
352 
353             WF_ENGINE.CompleteActivityInternalName(
354                         itemtype  =>  'OEOL',
355                         itemkey   =>  to_char(l_line_id),
356                         activity  =>  'EXPORT_COMPLIANCE_ELIGIBLE',
357                         result    =>  'COMPLETE'); -- Bug 7688120
358 
359            -- Write messages in to the log file
360 
361                 OE_MSG_PUB.Count_And_Get (
362                                  p_count  => l_msg_count,
363                                  p_data   => l_msg_data);
364 
365                 FOR I IN 1..l_msg_count
366                 LOOP
367                    l_msg_data  :=  OE_MSG_PUB.Get(I,'F');
368                    FND_FILE.PUT_LINE(FND_FILE.LOG,l_msg_data);
369                 END LOOP;
370      --  END IF;
371     END LOOP;
372 
373     DBMS_SQL.CLOSE_CURSOR(l_sqlCursor); -- bug 4632747
374 
375     FND_FILE.PUT_LINE(FND_FILE.LOG,'Exiting EC Screening Program..');
376 
377 
378 EXCEPTION
379         WHEN FND_API.G_EXC_ERROR THEN
380           FND_FILE.PUT_LINE(FND_FILE.LOG,'Expected Error in '||
381                   'Export Compliance Screening Concurrent Program '||sqlerrm);
382 
383         WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
384           FND_FILE.PUT_LINE(FND_FILE.LOG,'Unexpected Error in '||
385                   'Export Compliance Screening Concurrent Program '||sqlerrm);
386 END Screening;
387 
388 END OE_EXPORT_COMPLIANCE_CONC;