[Home] [Help]
PACKAGE BODY: APPS.OKS_AUTH_UTIL_PVT
Source
1 PACKAGE BODY OKS_AUTH_UTIL_PVT AS
2 /* $Header: OKSRAUTB.pls 120.24 2007/12/24 06:31:26 rriyer ship $ */
3
4 ------------------------ Internal Type Declarations ---------------------------------
5 TYPE num_tbl_type IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
6 TYPE date_tbl_type IS TABLE OF DATE INDEX BY BINARY_INTEGER;
7 TYPE chr_tbl_type IS TABLE OF VARCHAR2(2000) INDEX BY BINARY_INTEGER;
8
9
10 --GLOBAL VARIABLES
11 g_clvl_filter_rec clvl_filter_rec;
12 g_clvl_selections_tbl clvl_selections_tbl;
13 g_chr_id NUMBER;
14
15 -- This procedure is to create a table of party ids based on Default criteria Customer/Related or Both
16
17 FUNCTION Get_selling_price(p_order_line_id IN NUMBER)
18 RETURN NUMBER
19 IS
20 CURSOR l_csr_get_selling_price(p_order_line_id IN NUMBER )
21 IS
22 SELECT unit_selling_price
23 FROM oe_order_lines_all
24 WHERE line_id = p_order_line_id;
25
26 l_selling_price NUMBER := 0;
27 BEGIN
28 OPEN l_csr_get_selling_price(p_order_line_id);
29 FETCH l_csr_get_selling_price INTO l_selling_price;
30 IF l_Csr_get_selling_price%NOTFOUND THEN
31 l_selling_price := 0;
32 END IF;
33 CLOSE l_csr_get_selling_price;
34
35
36 RETURN l_selling_price;
37
38 END;
39
40 PROCEDURE get_item_name_desc(p_inv_id IN NUMBER,
41 x_name OUT NOCOPY VARCHAR2,
42 x_description OUT NOCOPY VARCHAR2 )
43 IS
44 CURSOR l_csr_get_name_desc(p_inv_id IN NUMBER) IS
45 SELECT name, description
46 FROM OKX_SYSTEM_ITEMS_V
47 WHERE id1 = p_inv_id
48 AND TRUNC(SYSDATE) BETWEEN trunc(nvl(start_date_active, SYSDATE)) AND trunc(nvl(end_date_active, SYSDATE)) ;
49
50 l_sp_flag VARCHAR2(1);
51 l_name OKX_SYSTEM_ITEMS_V.name%TYPE;
52 l_description OKX_SYSTEM_ITEMS_V.name%TYPE;
53
54 BEGIN
55 OPEN l_csr_get_name_desc(p_inv_id) ;
56 FETCH l_csr_get_name_desc INTO l_name, l_description ;
57 x_name := l_name;
58 x_description := l_description;
59 CLOSE l_csr_get_name_desc;
60
61 END;
62
63 PROCEDURE get_party_id(p_default IN VARCHAR2,
64 p_party_id IN NUMBER,
65 p_org_id IN NUMBER,
66 x_party_id_tbl OUT NOCOPY party_id_tbl )
67 IS
68
69
70 CURSOR l_csr_cust_party (p_party_id IN NUMBER)
71 IS
72 SELECT id1, name
73 FROM okx_parties_v
74 WHERE id1 = p_party_id;
75
76 CURSOR l_csr_rel_party (p_party_id IN NUMBER,
77 p_org_id IN NUMBER) IS
78 SELECT P.id1, P.name
79 FROM OKX_PARTIES_V P,
80 OKX_CUSTOMER_ACCOUNTS_V CA1
81 WHERE P.id1 = CA1.party_id
82 AND CA1.id1 IN(SELECT A.related_cust_account_id
83 FROM OKX_CUST_ACCT_RELATE_ALL_V A,
84 OKX_CUSTOMER_ACCOUNTS_V B
85 WHERE B.ID1 = A.CUST_ACCOUNT_ID
86 AND B.party_id = p_party_id
87 AND B.status = 'A'
88 AND A.status = 'A'
89 AND A.org_id = p_org_id)
90 AND CA1.status = 'A';
91
92 CURSOR l_csr_both_party(p_party_id IN NUMBER,
93 p_org_id IN NUMBER) IS
94 SELECT id1, name
95 FROM okx_parties_v
96 WHERE id1 = p_party_id
97 UNION
98 SELECT P.id1, p.name
99 FROM OKX_PARTIES_V P,
100 OKX_CUSTOMER_ACCOUNTS_V CA1
101 WHERE P.id1 = CA1.party_id
102 AND CA1.id1 IN(SELECT A.related_cust_account_id
103 FROM OKX_CUST_ACCT_RELATE_ALL_V A,
104 OKX_CUSTOMER_ACCOUNTS_V B
105 WHERE B.ID1 = A.CUST_ACCOUNT_ID
106 AND B.party_id = p_party_id
107 AND B.status = 'A'
108 AND A.status = 'A'
109 AND A.org_id = p_org_id)
110 AND CA1.status = 'A';
111
112 i NUMBER := 1;
113 l_party_id OKX_PARTIES_V.id1%TYPE;
114 l_party_name OKX_PARTIES_V.name%TYPE;
115 BEGIN
116 IF p_default = 'CUSTOMER' THEN
117
118 OPEN l_csr_cust_party(p_party_id
119 );
120 FETCH l_csr_cust_party INTO l_party_id, l_party_name;
121 IF l_csr_cust_party%FOUND THEN
122 x_party_id_tbl(1).party_id := l_party_id;
123 x_party_id_tbl(1).party_name := l_party_name;
124 END IF;
125 CLOSE l_csr_cust_party;
126
127 ELSIF p_default = 'RELATED' THEN
128
129 OPEN l_csr_rel_party(p_party_id,
130 p_org_id );
131 LOOP
132
133 FETCH l_csr_rel_party INTO l_party_id, l_party_name;
134 EXIT WHEN l_csr_rel_party%NOTFOUND;
135 x_party_id_tbl(i).party_id := l_party_id;
136 x_party_id_tbl(i).party_name := l_party_name;
137 i := i + 1;
138 END LOOP ;
139 CLOSE l_csr_rel_party;
140 ELSIF p_default = 'BOTH' THEN
141 OPEN l_csr_both_party(p_party_id,
142 p_org_id );
143 LOOP
144
145 FETCH l_csr_both_party INTO l_party_id, l_party_name;
146 EXIT WHEN l_csr_both_party%NOTFOUND;
147 x_party_id_tbl(i).party_id := l_party_id;
148 x_party_id_tbl(i).party_name := l_party_name;
149 i := i + 1;
150 END LOOP ;
151 CLOSE l_csr_both_party;
152 -- Bug 5054171 --
153 ELSIF p_default = 'ALL' THEN
154
155 OPEN l_csr_cust_party(p_party_id
156 );
157 FETCH l_csr_cust_party INTO l_party_id, l_party_name;
158 IF l_csr_cust_party%FOUND THEN
159 x_party_id_tbl(1).party_id := l_party_id;
160 x_party_id_tbl(1).party_name := l_party_name;
161 END IF;
162 CLOSE l_csr_cust_party;
163 END IF;
164 -- Bug 5054171 --
165
166 END ;
167
168 -- This procedure is to create a table of customer ids based on Default criteria Customer/Related or Both
169 PROCEDURE get_customer_id(p_default IN VARCHAR2,
170 p_party_id IN NUMBER,
171 p_org_id IN NUMBER,
172 x_cust_id_tbl OUT NOCOPY cust_id_tbl )
173 IS
174
175 CURSOR l_csr_customer (p_party_id IN NUMBER,
176 p_org_id IN NUMBER)
177 IS
178 SELECT CA1.Id1, CA1.name
179 FROM OKX_CUSTOMER_ACCOUNTS_V CA1
180 WHERE CA1.party_id = p_party_id
181 AND CA1.status = 'A'
182 ORDER BY ca1.name ;
183
184
185 CURSOR l_csr_rel_customer (p_party_id IN NUMBER,
186 p_org_id IN NUMBER) IS
187 SELECT CA2.id1, CA2.name
188 FROM OKX_CUSTOMER_ACCOUNTS_V CA2
189 WHERE CA2.id1 IN(SELECT A.RELATED_CUST_ACCOUNT_ID
190 FROM OKX_CUST_ACCT_RELATE_ALL_V A,
191 OKX_CUSTOMER_ACCOUNTS_V B
192 WHERE B.ID1 = A.CUST_ACCOUNT_ID
193 AND B.party_id = p_party_id
194 AND B.status = 'A'
195 AND A.status = 'A'
196 AND A.org_id = p_org_id)
197 AND CA2.status = 'A'
198 ORDER BY ca2.name ;
199
200 CURSOR l_csr_both_customer(p_party_id IN NUMBER,
201 p_org_id IN NUMBER) IS
202 SELECT CA1.Id1, CA1.name
203 FROM OKX_CUSTOMER_ACCOUNTS_V CA1
204 WHERE CA1.party_id = p_party_id
205 AND CA1.status = 'A'
206 UNION
207 SELECT CA2.id1, CA2.name
208 FROM OKX_CUSTOMER_ACCOUNTS_V CA2
209 WHERE CA2.id1 IN(SELECT A.RELATED_CUST_ACCOUNT_ID
210 FROM OKX_CUST_ACCT_RELATE_ALL_V A,
211 OKX_CUSTOMER_ACCOUNTS_V B
212 WHERE B.ID1 = A.CUST_ACCOUNT_ID
213 AND B.party_id = p_party_id
214 AND B.status = 'A'
215 AND A.status = 'A'
216 AND A.org_id = p_org_id)
217 AND CA2.status = 'A'
218 ORDER BY 2 ;
219
220 i NUMBER := 1;
221 l_customer_id OKX_CUSTOMER_ACCOUNTS_V.id1%TYPE;
222 l_customer_name OKX_CUSTOMER_ACCOUNTS_V.name%TYPE;
223
224 BEGIN
225 --------------------------------errorout(' IN customer id func '||p_default||' '||p_party_id||' '||p_org_id);
226
227 IF p_default = 'CUSTOMER' THEN
228
229 OPEN l_csr_customer(p_party_id,
230 p_org_id );
231 LOOP
232
233 FETCH l_csr_customer INTO l_customer_id, l_customer_name;
234 EXIT WHEN l_csr_customer%NOTFOUND;
235
236 x_cust_id_tbl(i).customer_id := l_customer_id;
237 x_cust_id_tbl(i).customer_name := l_customer_name;
238 i := i + 1;
239 END LOOP ;
240 CLOSE l_csr_customer;
241 ELSIF p_default = 'RELATED' THEN
242 OPEN l_csr_rel_customer(p_party_id,
243 p_org_id );
244 LOOP
245
246 FETCH l_csr_rel_customer INTO l_customer_id, l_customer_name;
247 EXIT WHEN l_csr_rel_customer%NOTFOUND;
248 x_cust_id_tbl(i).customer_id := l_customer_id;
249 x_cust_id_tbl(i).customer_name := l_customer_name;
250 i := i + 1;
251 END LOOP ;
252 CLOSE l_csr_rel_customer;
253 ELSIF p_default = 'BOTH' THEN
254 OPEN l_csr_both_customer(p_party_id,
255 p_org_id );
256 LOOP
257 ----------------------------------errorout(' In loop for both ');
258 FETCH l_csr_both_customer INTO l_customer_id, l_customer_name;
259 IF l_csr_both_customer%NOTFOUND THEN
260 EXIT;
261 ELSE
262 ----------------------------------------errorout(' both customer_id '||l_customer_id);
263 x_cust_id_tbl(i).customer_id := l_customer_id;
264 x_cust_id_tbl(i).customer_name := l_customer_name;
265 i := i + 1;
266 END IF;
267 END LOOP ;
268 CLOSE l_csr_both_customer;
269 END IF;
270
271 END ;
272
273
274 /*****************************************************************/
275 PROCEDURE get_products(p_filter IN VARCHAR2,
276 p_id IN NUMBER DEFAULT NULL,
277 p_default IN VARCHAR2,
278 p_cust_id_list IN VARCHAR2,
279 p_party_id IN VARCHAR2,
280 p_org_id IN NUMBER,
281 p_organization_id IN NUMBER,
282 x_prod_tbl OUT NOCOPY prod_tbl)
283 IS
284
285
286 /* Select Products for a single customer or for all customers belonging to a Party */
287 -- This cursor is not used --
288 CURSOR l_csr_party_products(p_party_id IN NUMBER,
289 p_organization_id IN NUMBER)
290 IS
291 SELECT CII.instance_id id1,
292 CII.install_location_id,
293 CII.quantity,
294 CII.instance_number,
295 CII.unit_of_measure,
296 0,
297 CII.inventory_item_id,
298 CII.serial_number,
299 '#' id2,
300 CII.last_oe_order_line_id
301 FROM CSI_ITEM_INSTANCES CII,
302 CSI_INSTANCE_STATUSES CIS
303 WHERE CII.owner_party_account_id IN
304 (SELECT id1 FROM okx_customer_accounts_v
305 WHERE party_id = p_party_id)
306 AND CII.Instance_status_id = CIS.instance_status_id
307 AND CIS.service_order_allowed_flag = 'Y';
308
309
310 l_get_prod_rec get_prod_rec;
311
312 TYPE var_cur_type IS REF CURSOR ;
313
314 csr_get_products var_cur_type;
315 get_prod_sql VARCHAR2(5000);
316 l_prod_rec prod_rec;
317 l_id NUMBER;
318 i NUMBER := 1;
319 l_add_condition_sql VARCHAR2(500) := '';
320 l_customer_id OKX_CUSTOMER_ACCOUNTS_V.id1%TYPE ;
321 l_org_id NUMBER;get_prod_sql_all VARCHAR2(5000);
322 l_order_by VARCHAR2(2000);
323 get_prod_sql_cust VARCHAR2(10000);
324 get_prod_sql_rel VARCHAR2(10000);
325 get_prod_sql_both VARCHAR2(10000);
326
327 BEGIN
328
329
330 ----------------------errorout_an(' in get product ');
331
332 get_prod_sql := ' SELECT CII.instance_id id1 '
333 ||', CII.install_location_id install_location_id '
334 ||', CII.quantity quantity '
335 ||', CII.instance_number instance_number '
336 ||', CII.unit_of_measure unit_of_measure '
337 ||', 0 '
338 ||', CII.inventory_item_id inventory_item_id'
339 ||', CII.serial_number serial_number '
340 ||', ''#'' id2 '
341 ||', CII.last_oe_order_line_id '
342 ||', CII.external_reference ' -- new bug 4372877
343 ||' FROM CSI_ITEM_INSTANCES CII, CSI_INSTANCE_STATUSES CIS '
344 ||' WHERE '
345 ||' CIS.instance_status_id = CII.instance_status_id '
346 ||' AND CIS.service_order_allowed_flag = ''Y''' ;
347
348
349 /*** These queries will hold when filter = Item/Site/System/Party ***/
350
351 /**** Get products when default = customer ***/
352
353 get_prod_sql_cust := ' SELECT CII.instance_id id1 '
354 ||', CII.install_location_id install_location_id '
355 ||', CII.quantity quantity '
356 ||', CII.instance_number instance_number '
357 ||', CII.unit_of_measure unit_of_measure '
358 ||', 0 unit_selling_price '
359 ||', CII.inventory_item_id inventory_item_id'
360 ||', CII.serial_number serial_number '
361 ||', ''#'' id2 '
362 ||', CII.last_oe_order_line_id '
363 ||', CII.external_reference ' -- new bug 4372877
364 ||' FROM CSI_ITEM_INSTANCES CII, CSI_INSTANCE_STATUSES CIS , MTL_SYSTEM_ITEMS_KFV IT'
365 ||' WHERE IT.inventory_item_id = CII.inventory_item_id '
366 ||' AND IT.serviceable_product_flag = ''Y'''
367 ||' AND IT.organization_id = :p_organization_id '
368 ||' AND CIS.instance_status_id = CII.instance_status_id '
369 ||' AND CIS.service_order_allowed_flag = ''Y'''
370 ||' AND CII.owner_party_account_id in (select id1 '
371 ||' from okx_customer_accounts_v '
372 ||' where party_id = :l_party_id ) ';
373
374
375 /**** Get products when default = related ***/
376
377 get_prod_sql_rel := ' SELECT CII.instance_id id1 '
378 ||', CII.install_location_id install_location_id '
379 ||', CII.quantity quantity '
380 ||', CII.instance_number instance_number '
381 ||', CII.unit_of_measure unit_of_measure '
382 ||', 0 unit_selling_price '
383 ||', CII.inventory_item_id inventory_item_id'
384 ||', CII.serial_number serial_number '
385 ||', ''#'' id2 '
386 ||', last_oe_order_line_id '
387 ||', CII.external_reference ' -- new bug 4372877
388 ||' FROM CSI_ITEM_INSTANCES CII, CSI_INSTANCE_STATUSES CIS , MTL_SYSTEM_ITEMS_KFV IT'
389 ||' WHERE IT.inventory_item_id = CII.inventory_item_id '
390 ||' AND IT.serviceable_product_flag = ''Y'''
391 ||' AND IT.organization_id = :p_organization_id '
392 ||' AND '
393 ||' CIS.instance_status_id = CII.instance_status_id '
394 ||' AND CIS.service_order_allowed_flag = ''Y'''
395 ||' AND CII.owner_party_account_id in '
396 ||' (select A.RELATED_CUST_ACCOUNT_ID '
397 ||' FROM OKX_CUST_ACCT_RELATE_ALL_V A, '
398 ||' OKX_CUSTOMER_ACCOUNTS_V B '
399 ||' WHERE B.ID1 = A.CUST_ACCOUNT_ID '
400 ||' AND B.party_id = :l_party_id '
401 ||' AND B.status = ''A'''
402 ||' AND A.status = ''A'''
403 ||' AND A.org_id = :l_org_id '
404 ||' ) ' ;
405
406 /**** Get products when default = both ***/
407
408 get_prod_sql_both := ' SELECT CII.instance_id id1 '
409 ||', CII.install_location_id install_location_id '
410 ||', CII.quantity quantity '
411 ||', CII.instance_number instance_number '
412 ||', CII.unit_of_measure unit_of_measure '
413 ||',0 unit_selling_price '
414 ||', CII.inventory_item_id inventory_item_id'
415 ||', CII.serial_number serial_number '
416 ||', ''#'' id2 '
417 ||', last_oe_order_line_id '
418 ||', CII.external_reference ' -- new bug 4372877
419 ||' FROM CSI_ITEM_INSTANCES CII, CSI_INSTANCE_STATUSES CIS , MTL_SYSTEM_ITEMS_KFV IT'
420 ||' WHERE IT.inventory_item_id = CII.inventory_item_id '
421 ||' AND IT.serviceable_product_flag = ''Y'''
422 ||' AND IT.organization_id = :p_organization_id '
423 ||' AND '
424 ||' CIS.instance_status_id = CII.instance_status_id '
425 ||' AND CIS.service_order_allowed_flag = ''Y'''
426 ||' AND CII.owner_party_account_id in (select id1 '
427 ||' from okx_customer_accounts_v '
428 ||' where party_id = to_char(:l_party_id) '
429 ||' UNION '
430 ||' select A.RELATED_CUST_ACCOUNT_ID '
431 ||' FROM OKX_CUST_ACCT_RELATE_ALL_V A, '
432 ||' OKX_CUSTOMER_ACCOUNTS_V B '
433 ||' WHERE B.ID1 = A.CUST_ACCOUNT_ID '
434
435 ||' AND B.party_id = :l_party_id'
436 ||' AND B.status = ''A'''
437 ||' AND A.status = ''A'''
438 ||' AND A.org_id = :l_org_id '
439 ||' ) ';
440
441
442 get_prod_sql_all := ' SELECT CII.instance_id id1 '
443 ||', CII.install_location_id install_location_id '
444 ||', CII.quantity quantity '
445 ||', CII.instance_number instance_number '
446 ||', CII.unit_of_measure unit_of_measure '
447 ||', 0 unit_selling_price '
448 ||', CII.inventory_item_id inventory_item_id'
449 ||', CII.serial_number serial_number '
450 ||', ''#'' id2 '
451 ||', CII.last_oe_order_line_id '
452 ||', CII.external_reference ' -- new bug 4372877
453 ||' FROM CSI_ITEM_INSTANCES CII, CSI_INSTANCE_STATUSES CIS , MTL_SYSTEM_ITEMS_KFV IT'
454 ||' WHERE IT.inventory_item_id = CII.inventory_item_id '
455 ||' AND IT.serviceable_product_flag = ''Y'''
456 ||' AND IT.organization_id = :p_organization_id '
457 ||' AND '
458 ||' CIS.instance_status_id = CII.instance_status_id '
459 ||' AND CIS.service_order_allowed_flag = ''Y''';
460
461
462 l_order_by := ' Order by CII.serial_number, CII.instance_number ';
463 -- removed CII.instance_id for bug3944182
464
465 l_id := p_id;
466 l_org_id := p_org_id;
467
468 -----------------------errorout('before condition '||get_prod_sql);
469 -- errorout('before condition '||get_prod_sql);
470
471 --------------errorout_ad('before condition '||get_prod_sql);
472
473 IF p_filter <> ('Model') THEN
474
475
476 /* If filter = Customer, then the above additional criteria is not required */
477
478 IF p_filter NOT IN ('Party', 'Customer') THEN /** these two conditions are handled seperately **/
479 -- errorout( 'P_filter ' || p_filter);
480 IF p_default = 'CUSTOMER' THEN
481
482 IF p_filter = 'Item' THEN
483 IF l_id IS NOT NULL THEN
484 get_prod_sql_cust := get_prod_sql_cust ||' '||' AND CII.inventory_item_id = :l_id'||' '|| l_order_by;
485 OPEN csr_get_products FOR get_prod_sql_cust USING p_organization_id, p_party_id, l_id ;
486 ELSE
487 get_prod_sql_cust := get_prod_sql_cust ||' '|| l_order_by;
488 OPEN csr_get_products FOR get_prod_sql_cust USING p_organization_id, p_party_id ;
489 END IF;
490 ELSE
491 IF p_filter = 'Site' THEN
492 l_add_condition_sql := ' AND CII.install_location_id = :l_id';
493 ELSIF p_filter = 'System' THEN
494 l_add_condition_sql := ' AND CII.system_id = :l_id';
495 END IF;
496 -- ------------------------errorout_an('after condition '||get_prod_sql_cust);
497 get_prod_sql_cust := get_prod_sql_cust ||' '|| l_add_condition_sql ||' '|| l_order_by;
498 OPEN csr_get_products FOR get_prod_sql_cust USING p_organization_id, p_party_id, l_id ;
499 END IF;
500
501 ELSIF p_default = 'RELATED' THEN
502
503 IF p_filter = 'Item' THEN
504 IF l_id IS NOT NULL THEN
505 get_prod_sql_rel := get_prod_sql_rel ||' '||' AND CII.inventory_item_id = :l_id'||' '|| l_order_by;
506 OPEN csr_get_products FOR get_prod_sql_rel USING p_organization_id, p_party_id, l_org_id, l_id ;
507 ELSE
508 get_prod_sql_rel := get_prod_sql_rel ||' '|| l_order_by;
509 OPEN csr_get_products FOR get_prod_sql_rel USING p_organization_id, p_party_id, l_org_id;
510 END IF;
511 ELSE
512 IF p_filter = 'Site' THEN
513 l_add_condition_sql := ' AND CII.install_location_id = :l_id';
514 ELSIF p_filter = 'System' THEN
515 l_add_condition_sql := ' AND CII.system_id = :l_id';
516 END IF;
517 get_prod_sql_rel := get_prod_sql_rel ||' '|| l_add_condition_sql ||' '|| l_order_by;
518 OPEN csr_get_products FOR get_prod_sql_rel USING p_organization_id, p_party_id, l_org_id, l_id ;
519 END IF;
520
521 ELSIF p_default = 'BOTH' THEN
522 IF p_filter = 'Item' THEN
523 IF l_id IS NOT NULL THEN
524 get_prod_sql_both := get_prod_sql_both ||' '||' AND CII.inventory_item_id = :l_id'||' '|| l_order_by;
525 OPEN csr_get_products FOR get_prod_sql_both USING p_organization_id, p_party_id, p_party_id, l_org_id, l_id ;
526 ELSE
527 get_prod_sql_both := get_prod_sql_both ||' '|| l_order_by;
528 OPEN csr_get_products FOR get_prod_sql_both USING p_organization_id, p_party_id, p_party_id, l_org_id ;
529 END IF;
530 ELSE
531 IF p_filter = 'Site' THEN
532 l_add_condition_sql := ' AND CII.install_location_id = :l_id';
533 ELSIF p_filter = 'System' THEN
534 l_add_condition_sql := ' AND CII.system_id = :l_id';
535 END IF;
536
537 get_prod_sql_both := get_prod_sql_both ||' '|| l_add_condition_sql ||' '|| l_order_by;
538 -- ------------------errorout_an('after condition both '||get_prod_sql_both);
539 OPEN csr_get_products FOR get_prod_sql_both USING p_organization_id, p_party_id, p_party_id, l_org_id, l_id ;
540 END IF;
541
542 ELSIF p_default = 'ALL' THEN
543 IF p_filter = 'Item' THEN
544 IF l_id IS NOT NULL THEN
545 get_prod_sql_all := get_prod_sql_all ||' '||' AND CII.inventory_item_id = :l_id'||' '|| l_order_by;
546 -- BUG 3643410 31-MAY-2004 --
547 -- GCHADHA --
548 -- OPEN csr_get_products FOR get_prod_sql_all USING l_id, p_organization_id;
549 OPEN csr_get_products FOR get_prod_sql_all USING p_organization_id, l_id;
550 -- GCHADHA --
551 ELSE
552 -- BUG 3643410 31-MAY-2004 --
553 -- GCHADHA --
554 -- get_prod_sql_all := get_prod_sql_both||' '||' AND CII.inventory_item_id = :l_id'||l_order_by;
555 get_prod_sql_all := get_prod_sql_all ||' '|| l_order_by;
556 -- OPEN csr_get_products FOR get_prod_sql_all USING l_id, p_organization_id;
557 OPEN csr_get_products FOR get_prod_sql_all USING p_organization_id;
558 -- END GCHADHA --
559 END IF;
560 ELSE
561 IF l_id IS NOT NULL THEN
562 IF p_filter = 'Site' THEN
563 l_add_condition_sql := ' AND CII.install_location_id = :l_id';
564 ELSIF p_filter = 'System' THEN
565 l_add_condition_sql := ' AND CII.system_id = :l_id';
566 END IF;
567 get_prod_sql_all := get_prod_sql_all ||' '|| l_add_condition_sql ||' '|| l_order_by;
568 -- BUG 3643410 31-MAY-2004 --
569 -- GCHADHA --
570 -- OPEN csr_get_products FOR get_prod_sql_all USING l_id, p_organization_id ;
571 OPEN csr_get_products FOR get_prod_sql_all USING p_organization_id, l_id ;
572 -- GCHADHA --
573 ELSE
574 get_prod_sql_all := get_prod_sql_all ||' '|| l_order_by;
575 OPEN csr_get_products FOR get_prod_sql_all USING p_organization_id ;
576 END IF;
577
578 END IF;
579
580 END IF;
581
582 ELSIF p_filter = 'Party' THEN
583 -- ----------------errorout_an(' party id '||p_party_id);
584
585 IF l_id IS NOT NULL THEN
586 OPEN csr_get_products FOR get_prod_sql_cust USING p_organization_id, l_id;
587 ELSE
588
589 IF p_default = 'CUSTOMER' THEN
590 get_prod_sql_cust := get_prod_sql_cust ||' '|| l_order_by;
591 OPEN csr_get_products FOR get_prod_sql_cust USING p_organization_id, p_party_id;
592 ELSIF p_default = 'RELATED' THEN
593 get_prod_sql_rel := get_prod_sql_rel ||' '|| l_order_by;
594 OPEN csr_get_products FOR get_prod_sql_rel USING p_organization_id, p_party_id, p_org_id;
595 ELSIF p_default = 'BOTH' THEN
596 get_prod_sql_both := get_prod_sql_both ||' '|| l_order_by;
597 OPEN csr_get_products FOR get_prod_sql_both USING p_organization_id, p_party_id, p_party_id, p_org_id ;
598 ELSIF p_default = 'ALL' THEN
599 -- Bug 5054171 --
600 -- P_cust_id_list is not null when the
601 -- name field is not Null
602 If p_cust_id_list is not NULL
603 THEN
604 get_prod_sql_cust := get_prod_sql_cust ||' '|| l_order_by;
605 OPEN csr_get_products FOR get_prod_sql_cust USING p_organization_id, p_party_id;
606
607 ELSE
608 get_prod_sql_all := get_prod_sql_all ||' '|| l_order_by;
609 OPEN csr_get_products FOR get_prod_sql_all USING p_organization_id ; -- USING
610 END IF;
611 -- Bug 5054171 --
612 END IF;
613 END IF;
614
615
616 ELSIF p_filter = 'Customer' THEN
617 l_add_condition_sql := ' AND CII.owner_party_account_id = :p_id';
618 get_prod_sql := get_prod_sql ||' '|| l_add_condition_sql ||' '|| l_order_by;
619 -- --------------errorout_an('after condition customer '||get_prod_sql||' l_id '||l_id ||' p_id '||p_id);
620 OPEN csr_get_products FOR get_prod_sql USING p_id ;
621 END IF;
622
623
624 LOOP
625
626 FETCH csr_get_products INTO l_get_prod_rec;
627 IF csr_get_products%NOTFOUND THEN
628 EXIT;
629 ELSE
630 x_prod_tbl(i).id1 := l_get_prod_rec.id1;
631 x_prod_tbl(i).install_location_Id := l_get_prod_rec.install_location_id ;
632 x_prod_tbl(i).quantity := l_get_prod_rec.quantity;
633 x_prod_tbl(i).instance_number := l_get_prod_rec.instance_number;
634 x_prod_tbl(i).unit_of_measure := l_get_prod_rec.unit_of_measure;
635 x_prod_tbl(i).unit_selling_price := get_selling_price(l_get_prod_rec.oe_line_id);
636 x_prod_tbl(i).inventory_item_id := l_get_prod_rec.inventory_item_id;
637 x_prod_tbl(i).serial_number := l_get_prod_rec.serial_number;
638 x_prod_tbl(i).id2 := l_get_prod_rec.id2;
639 -- GCHADHA --
640 -- 4372877 --
641 -- 5/25/2005 --
642 x_prod_tbl(i).external_reference := l_get_prod_rec.external_reference;
643 -- END GCHADHA --
644 i := i + 1 ;
645
646 END IF;
647 END LOOP;
648 CLOSE csr_get_products;
649 --------------------------errorout_an(' inv id '||l_id||' count '||x_prod_tbl.count);
650 END IF;
651 END ;
652
653
654
655 /*****************************************************************/
656
657
658 PROCEDURE populate_table(p_prod_tbl IN prod_tbl,
659 p_filter IN VARCHAR2,
660 px_rowcount IN OUT NOCOPY NUMBER,
661 p_display_pref IN VARCHAR2,
662 x_prod_selections_tbl IN OUT NOCOPY prod_selections_tbl )
663 IS
664 l_price NUMBER;
665 l_name VARCHAR2(1000);
666 l_install_site_id OKX_PARTY_SITES_V.id1%TYPE;
667 -- Bug 4915711 --
668 -- l_install_site_name OKX_PARTY_SITES_V.DESCRIPTION%TYPE;
669 l_install_site_name VARCHAR2(2000);
670 -- Bug 4915711 --
671
672 rowcount NUMBER ;
673 l_display_name VARCHAR2(2000); -- 4915711 --
674 j NUMBER;
675 l_uom_desc OKx_UNITS_OF_MEASURE_v.unit_of_measure_tl%TYPE;
676
677 CURSOR l_site_name_csr(l_install_site_id NUMBER) IS
678 SELECT S.DESCRIPTION
679 FROM OKX_PARTY_SITES_V S
680 WHERE S.ID1 = l_install_site_id;
681
682 CURSOR l_csr_uom_desc(p_uom_code IN VARCHAR2)
683 IS
684 SELECT unit_of_measure_tl
685 FROM OKX_UNITS_OF_MEASURE_V
686 WHERE uom_code = p_uom_code ;
687
688
689 l_gen_name OKX_SYSTEM_ITEMS_V.name%TYPE;
690 l_gen_desc OKX_SYSTEM_ITEMS_V.description%TYPE;
691 BEGIN
692 rowcount := px_rowcount;
693
694 ----------------------errorout_an(' in populate table ');
695
696 FOR j IN 1 .. p_prod_tbl.COUNT LOOP
697 x_prod_selections_tbl(rowcount).rec_type := 'C';
698 x_prod_selections_tbl(rowcount).rec_name := p_filter;
699 x_prod_selections_tbl(rowcount).rec_no := rowcount;
700 x_prod_selections_tbl(rowcount).cp_id := p_prod_tbl(j).id1;
701
702 IF p_filter = 'Model' THEN
703 x_prod_selections_tbl(rowcount).config_parent_id := p_prod_tbl(j).config_parent_id;
704 x_prod_selections_tbl(rowcount).model_level := p_prod_tbl(j).model_level;
705
706 END IF;
707
708 x_prod_selections_tbl(rowcount).cp_id2 := p_prod_tbl(j).id2;
709 x_prod_selections_tbl(rowcount).ser_number := p_prod_tbl(j).serial_number ;
710 x_prod_selections_tbl(rowcount).ref_number := p_prod_tbl(j).instance_number ;
711 x_prod_selections_tbl(rowcount).quantity := p_prod_tbl(j).quantity;
712 x_prod_selections_tbl(rowcount).orig_net_amt := p_prod_tbl(j).unit_selling_price;
713 -- GCHADHA --
714 -- BUG 4372877 --
715 -- 5/25/2005 --
716 x_prod_selections_tbl(rowcount).ext_reference := p_prod_tbl(j).external_reference;
717
718 -- END GCHADHA --
719
720
721
722
723 IF NVL(p_prod_tbl(j).quantity, 1) = 0 THEN
724 l_price := 0 ;
725 ELSE
726 l_price := p_prod_tbl(j).unit_selling_price / NVL(p_prod_tbl(j).quantity, 1);
727 END IF;
728
729
730 x_prod_selections_tbl(rowcount).price := l_price;
731 x_prod_selections_tbl(rowcount).inventory_item_id := p_prod_tbl(j).inventory_item_id;
732 x_prod_selections_tbl(rowcount).site_id := p_prod_tbl(j).install_location_id;
733 x_prod_selections_tbl(rowcount).uom_code := p_prod_tbl(j).unit_of_measure;
734
735 l_install_site_id := p_prod_tbl(j).install_location_id;
736 l_install_site_name := '';
737
738 IF l_install_site_id IS NOT NULL THEN
739 OPEN l_site_name_csr(l_install_site_id);
740 FETCH l_site_name_csr INTO l_install_site_name;
741 CLOSE l_site_name_csr;
742 END IF;
743
744 -- l_install_site_name := ' Install description ';
745 x_prod_selections_tbl(rowcount).orig_net_amt := get_selling_price(p_prod_tbl(j).oe_line_id);
746
747
748
749 OPEN l_csr_uom_desc(p_prod_tbl(j).unit_of_measure);
750 FETCH l_csr_uom_desc INTO l_uom_desc;
751 CLOSE l_csr_uom_desc;
752
753 -- Get item name and description for the inventory item id
754
755 get_item_name_desc(p_prod_tbl(j).inventory_item_id, l_gen_name, l_gen_desc) ;
756
757 IF p_display_pref = 'DISPLAY_DESC' THEN
758 x_prod_selections_tbl(rowcount).name := l_gen_name;
759 x_prod_selections_tbl(rowcount).description := l_gen_desc;
760
761 ELSIF p_display_pref = 'DISPLAY_NAME' THEN
762 x_prod_selections_tbl(rowcount).name := l_gen_desc;
763 x_prod_selections_tbl(rowcount).description := l_gen_name;
764 END IF;
765
766 x_prod_selections_tbl(rowcount).site_name := l_install_site_name;
767
768 /*bugfix 5698684 - FP of 5675692 */
769 IF p_filter = 'Item' THEN
770 l_display_name := g_serial_number || NVL(p_prod_tbl(j).serial_number, 'N/A') ||
771 g_ref || NVL(p_prod_tbl(j).instance_number, 'N/A') ||
772 g_quantity || to_char(p_prod_tbl(j).quantity) || '/' || l_uom_desc ||
773 g_installed_at || NVL(l_install_site_name, 'N/A');
774 ELSE
775 l_display_name := x_prod_selections_tbl(rowcount).name||'; '||g_serial_number ||
776 NVL(p_prod_tbl(j).serial_number, 'N/A') ||
777 g_ref || NVL(p_prod_tbl(j).instance_number, 'N/A') ||
778 g_quantity || to_char(p_prod_tbl(j).quantity) || '/' || l_uom_desc ||
779 g_installed_at || NVL(l_install_site_name, 'N/A');
780 END IF;
781 /*bugfix 5698684 - FP of 5675692 */
782
783 x_prod_selections_tbl(rowcount).display_name := l_display_name;
784
785 rowcount := rowcount + 1;
786
787 END LOOP;
788 px_rowcount := rowcount - 1;
789 ----------------------errorout(' after populate table count '||rowcount);
790 END populate_table;
791
792
793
794 /************************** get model ***************************/
795
796 PROCEDURE get_model(p_organization_id IN NUMBER,
797 p_clvl_id IN NUMBER,
798 p_party_id IN NUMBER,
799 p_display_pref IN VARCHAR2,
800 p_default IN VARCHAR2,
801 p_org_id IN VARCHAR2,
802 x_prod_selections_tbl IN OUT NOCOPY OKS_AUTH_UTIL_PVT.prod_selections_tbl)
803
804 IS
805 /* Cursor to select all Model having Covered Products for a given Party ID */
806 CURSOR l_csr_all_models(p_party_id IN NUMBER,
807 p_organization_id IN NUMBER)
808 IS
809 SELECT DISTINCT id1,
810 name,
811 description
812 FROM okx_system_items_v it
813 WHERE id1 IN
814 (SELECT inventory_item_id FROM
815 csi_item_instances
816 WHERE instance_id IN (SELECT PR.object_id
817 FROM csi_ii_relationships PR
818 WHERE relationship_type_code = 'COMPONENT-OF'
819 AND NOT EXISTS (SELECT cp.subject_id FROM csi_ii_relationships cp
820 WHERE pr.object_id = cp.subject_id )))
821 AND IT.serviceable_product_flag = 'Y'
822 --And IT.organization_id = p_organization_id
823 AND SYSDATE BETWEEN nvl(it.start_date_active, SYSDATE) AND nvl(it.end_date_active, SYSDATE) ;
824
825
826
827 /** get parent child hierarchy from csi_ii_realtionships **/
828 CURSOR l_csr_configuration (p_inventory_id IN NUMBER,
829 p_party_id IN NUMBER)
830 IS
831 SELECT ciir.object_id config_parent_id,
832 ciir.subject_id cp_id,
833 LEVEL
834 FROM csi_ii_relationships ciir
835 WHERE active_end_date IS NULL
836 START WITH subject_id
837 IN (SELECT ciir_pr.subject_id
838 FROM csi_ii_relationships ciir_pr
839 WHERE object_id IN
840 (SELECT instance_id
841 FROM csi_item_instances
842 WHERE inventory_item_id = p_inventory_id
843 AND owner_party_account_id IN (SELECT id1
844 FROM okx_customer_accounts_v
845 WHERE party_id = p_party_id)))
846 CONNECT BY ciir.object_id = PRIOR ciir.subject_id ;
847
848 /** Cursor to get product + system item details for select instance id ***/
849
850
851 CURSOR l_csr_model_products(p_instance_id IN NUMBER,
852 p_organization_id IN NUMBER
853 )
854 IS
855 SELECT CII.instance_id
856 , IT.name
857 , IT.description
858 , CII.install_location_id
859 , CII.quantity
860 , CII.instance_number
861 , CII.unit_of_measure
862 , CII.inventory_item_id
863 , CII.serial_number
864 , OOL.unit_selling_price
865 , '#' id2
866 , CII.external_reference -- bug 4372877
867 FROM CSI_ITEM_INSTANCES CII
868 , CSI_INSTANCE_STATUSES CIS
869 , OE_ORDER_LINES_ALL OOL
870 , OKX_SYSTEM_ITEMS_V IT
871 WHERE CII.INSTANCE_ID = p_instance_id
872 AND CII.inventory_item_id = IT.id1
873 AND IT.serviceable_product_flag = 'Y'
874 AND IT.organization_id = p_organization_id
875 AND SYSDATE BETWEEN nvl(it.start_date_active, SYSDATE) AND nvl(it.end_date_active, SYSDATE)
876 AND CII.last_oe_order_line_id = OOL.line_id ( + )
877 AND CII.instance_status_id = CIS.instance_status_id
878 AND CIS.service_order_allowed_flag = 'Y' ;
879
880 l_config_parent_id CSI_II_RELATIONSHIPS.object_id%TYPE := - 99;
881 l_config_rec l_csr_configuration%ROWTYPE;
882 l_model_prod_rec l_csr_model_products%ROWTYPE;
883 l_id CSI_ITEM_INSTANCES.inventory_item_id%TYPE;
884 l_inv_id NUMBER := - 99;
885 l_id_old NUMBER := - 99;
886 rowcount NUMBER := 1;
887 i NUMBER := 1;
888 l_display_pref VARCHAR2(20) := p_display_pref;
889 l_name VARCHAR2(500);
890
891 l_prod_tbl prod_tbl;
892
893 TYPE var_cur_type5 IS REF CURSOR ;
894 csr_model_config var_cur_type5;
895
896 l_config_cust VARCHAR2(10000);
897 l_config_rel VARCHAR2(10000);
898 l_config_both VARCHAR2(10000);
899 l_config_all VARCHAR2(10000);
900
901 BEGIN
902 rowcount := 1;
903
904
905 /** Set up dynamic queries to fetch config items **/
906
907 l_config_cust := 'SELECT ciir.object_id config_parent_id,'
908 ||'ciir.subject_id cp_id,'
909 ||'level '
910 ||' FROM csi_ii_relationships ciir '
911 ||' WHERE active_end_date IS NULL '
912 ||' START WITH subject_id '
913 ||' IN (SELECT ciir_pr.subject_id '
914 ||' FROM csi_ii_relationships ciir_pr '
915 ||' WHERE object_id IN '
916 ||' ( SELECT instance_id '
917 ||' FROM csi_item_instances '
918 ||' WHERE inventory_item_id = to_char(:l_id)'
919 ||' AND owner_party_account_id in (select id1 '
920 ||' from okx_customer_accounts_v '
921 ||' where party_id = to_char(:p_party_id) ))) '
922 ||'CONNECT BY ciir.object_id = PRIOR ciir.subject_id ' ;
923
924
925 l_config_rel := 'SELECT ciir.object_id config_parent_id,'
926 ||'ciir.subject_id cp_id,'
927 ||'level '
928 ||' FROM csi_ii_relationships ciir '
929 ||' WHERE active_end_date IS NULL '
930 ||' START WITH subject_id '
931 ||' IN (SELECT ciir_pr.subject_id '
932 ||' FROM csi_ii_relationships ciir_pr '
933 ||' WHERE object_id IN '
934 ||' ( SELECT instance_id '
935 ||' FROM csi_item_instances '
936 ||' WHERE inventory_item_id = to_char(:l_id ) '
937 ||' AND owner_party_account_id in '
938 ||' (select A.RELATED_CUST_ACCOUNT_ID '
939 ||' FROM OKX_CUST_ACCT_RELATE_ALL_V A, '
940 ||' OKX_CUSTOMER_ACCOUNTS_V B '
941 ||' WHERE B.ID1 = A.CUST_ACCOUNT_ID '
942 ||' AND B.party_id = to_char(:p_party_id) '
943 ||' AND B.status = ''A'''
944 ||' AND A.status = ''A'''
945 ||' AND A.org_id = to_char(:p_org_id) '
946 ||' ))) '
947 ||'CONNECT BY ciir.object_id = PRIOR ciir.subject_id ' ;
948
949 l_config_both := 'SELECT ciir.object_id config_parent_id,'
950 ||'ciir.subject_id cp_id,'
951 ||'level '
952 ||' FROM csi_ii_relationships ciir '
953 ||' WHERE active_end_date IS NULL '
954 ||' START WITH subject_id '
955 ||' IN (SELECT ciir_pr.subject_id '
956 ||' FROM csi_ii_relationships ciir_pr '
957 ||' WHERE object_id IN '
958 ||' ( SELECT instance_id '
959 ||' FROM csi_item_instances '
960 ||' WHERE inventory_item_id = to_char(:l_id)'
961 ||' AND owner_party_account_id in (select id1 '
962 ||' from okx_customer_accounts_v '
963 ||' where party_id = to_char(:p_party_id)) '
964 ||' UNION '
965 ||' (select A.RELATED_CUST_ACCOUNT_ID '
966 ||' FROM OKX_CUST_ACCT_RELATE_ALL_V A, '
967 ||' OKX_CUSTOMER_ACCOUNTS_V B '
968 ||' WHERE B.ID1 = A.CUST_ACCOUNT_ID '
969 ||' AND B.party_id = to_char(:p_party_id)'
970 ||' AND B.status = ''A'''
971 ||' AND A.status = ''A'''
972 ||' AND A.org_id = to_Char(:p_org_id) '
973 ||' ))) '
974 ||'CONNECT BY ciir.object_id = PRIOR ciir.subject_id ' ;
975
976 l_config_all := 'SELECT ciir.object_id config_parent_id,'
977 ||'ciir.subject_id cp_id,'
978 ||'level '
979 ||' FROM csi_ii_relationships ciir '
980 ||' WHERE active_end_date IS NULL '
981 ||' START WITH subject_id '
982 ||' IN (SELECT ciir_pr.subject_id '
983 ||' FROM csi_ii_relationships ciir_pr '
984 ||' WHERE object_id IN '
985 ||' ( SELECT instance_id '
986 ||' FROM csi_item_instances '
987 ||' WHERE inventory_item_id = to_char(:l_id))) '
988 ||'CONNECT BY ciir.object_id = PRIOR ciir.subject_id ' ;
989
990
991 IF p_clvl_id IS NULL THEN /* 1st if */
992
993 /* Select all Items for given party first */
994
995 FOR l_get_all_models_rec IN l_csr_all_models(p_party_id, p_organization_id)
996 LOOP /** 1st loop **/
997
998 l_id := l_get_all_models_rec.id1;
999
1000 /** Get config items for an inventory_item_id **/
1001
1002 IF p_default = 'CUSTOMER' THEN
1003 OPEN csr_model_config FOR l_config_cust USING l_id, p_party_id;
1004 ELSIF p_default = 'RELATED' THEN
1005 OPEN csr_model_config FOR l_config_rel USING l_id, p_party_id, p_org_id;
1006 ELSIF p_default = 'BOTH' THEN
1007 OPEN csr_model_config FOR l_config_both USING l_id, p_party_id, p_party_id, p_org_id ;
1008 ELSIF p_default = 'ALL' THEN
1009 OPEN csr_model_config FOR l_config_all USING l_id, p_party_id, p_org_id;
1010 END IF;
1011
1012 LOOP
1013 FETCH csr_model_config INTO l_config_rec;
1014 IF csr_model_config%NOTFOUND THEN /* 2nd if */
1015 CLOSE csr_model_config;
1016 EXIT;
1017 ELSE
1018
1019 IF (l_prod_tbl.COUNT > 0) THEN
1020
1021 populate_table (l_prod_tbl,
1022 'Model',
1023 rowcount,
1024 l_display_pref,
1025 x_prod_selections_tbl);
1026
1027 l_prod_tbl.DELETE;
1028 rowcount := rowcount + 1;
1029 i := 1;
1030 END IF;
1031 IF l_config_parent_id <> l_config_rec.config_parent_id AND l_config_rec.LEVEL = 1 THEN /* 3rd if */
1032
1033 /* select product details for config parent */
1034 /** Build parent **/
1035 OPEN l_csr_model_products(l_config_rec.config_parent_id,
1036 p_organization_id);
1037 FETCH l_csr_model_products INTO l_model_prod_rec;
1038 IF l_csr_model_products%FOUND THEN
1039
1040 IF l_id <> l_id_old THEN
1041 /* Populate parent records */
1042 x_prod_selections_tbl(rowcount).cp_id := l_model_prod_rec.instance_id;
1043 x_prod_selections_tbl(rowcount).config_parent_id := '';
1044 x_prod_selections_tbl(rowcount).name := l_model_prod_rec.name;
1045
1046 x_prod_selections_tbl(rowcount).description := l_model_prod_rec.description;
1047
1048 IF l_display_pref = 'DISPLAY_DESC' THEN /* 5 if */
1049 l_name := rpad(l_model_prod_rec.name, 30, ' ') || rpad(l_model_prod_rec.description, 40,' ');
1050 ELSIF l_display_pref = 'DISPLAY_NAME' THEN
1051 x_prod_selections_tbl(rowcount).description := l_model_prod_rec.name;
1052 x_prod_selections_tbl(rowcount).name := l_model_prod_rec.description;
1053 l_name := rpad(l_model_prod_rec.description, 40,' ') || rpad(l_model_prod_rec.name, 30, ' ');
1054 END IF; /* end if 5 */
1055
1056 x_prod_selections_tbl(rowcount).name := l_name;
1057 x_prod_selections_tbl(rowcount).rec_type := 'P';
1058 x_prod_selections_tbl(rowcount).rec_name := 'Model';
1059 x_prod_selections_tbl(rowcount).rec_no := rowcount;
1060 x_prod_selections_tbl(rowcount).model_level := l_config_rec.LEVEL;
1061 x_prod_selections_tbl(rowcount).cp_id2 := '';
1062 x_prod_selections_tbl(rowcount).ser_number := '';
1063 x_prod_selections_tbl(rowcount).ref_number := '' ;
1064 x_prod_selections_tbl(rowcount).quantity := '';
1065 x_prod_selections_tbl(rowcount).orig_net_amt := '';
1066 x_prod_selections_tbl(rowcount).price := '';
1067 x_prod_selections_tbl(rowcount).inventory_item_id := '';
1068 x_prod_selections_tbl(rowcount).site_id := '';
1069 x_prod_selections_tbl(rowcount).uom_code := '';
1070 x_prod_selections_tbl(rowcount).display_name := '';
1071 x_prod_selections_tbl(rowcount).site_name := '';
1072 x_prod_selections_tbl(rowcount).model_level := - 1;
1073 -- BUG 4372877 --
1074 -- GCHADHA --
1075 -- 5/25/2005 --
1076 x_prod_selections_tbl(rowcount).ext_reference := '';
1077 -- END GCHADHA --
1078
1079
1080
1081 l_id_old := l_id;
1082 rowcount := rowcount + 1;
1083 END IF;
1084
1085 l_config_parent_id := l_config_rec.config_parent_id;
1086
1087 /* populate product details of the model */
1088 l_prod_tbl(i).id1 := l_config_rec.config_parent_id;
1089 l_prod_tbl(i).config_parent_id := '';
1090
1091 l_prod_tbl(i).install_location_Id := l_model_prod_rec.install_location_id ;
1092 l_prod_tbl(i).quantity := l_model_prod_rec.quantity;
1093 l_prod_tbl(i).instance_number := l_model_prod_rec.instance_number;
1094 l_prod_tbl(i).unit_of_measure := l_model_prod_rec.unit_of_measure;
1095 l_prod_tbl(i).unit_selling_price := l_model_prod_rec.unit_selling_price;
1096 l_prod_tbl(i).inventory_item_id := l_model_prod_rec.inventory_item_id;
1097 l_prod_tbl(i).serial_number := l_model_prod_rec.serial_number;
1098 l_prod_tbl(i).id2 := l_model_prod_rec.id2;
1099 l_prod_tbl(i).model_level := 0;
1100 -- BUG 4372877 --
1101 -- GCHADHA --
1102 -- 5/25/2005 --
1103 l_prod_tbl(i).external_reference := l_model_prod_rec.external_reference;
1104 -- END GCHADHA --
1105
1106 i := i + 1 ;
1107 END IF; /* end if l_csr_model_products */
1108
1109 CLOSE l_csr_model_products;
1110
1111 END IF ; /* Populate parent records end if 3 */
1112 -- END IF; /** items found csr_configuration cursor end if 2 **/
1113
1114 /* populate product details of the model */
1115
1116 OPEN l_csr_model_products(l_config_rec.cp_id,
1117 p_organization_id);
1118 FETCH l_csr_model_products INTO l_model_prod_rec;
1119 IF l_csr_model_products%FOUND THEN /** if 3 */
1120
1121 l_prod_tbl(i).id1 := l_config_rec.cp_id;
1122 l_prod_tbl(i).config_parent_id := l_config_rec.config_parent_id;
1123
1124 l_prod_tbl(i).install_location_Id := l_model_prod_rec.install_location_id ;
1125 l_prod_tbl(i).quantity := l_model_prod_rec.quantity;
1126 l_prod_tbl(i).instance_number := l_model_prod_rec.instance_number;
1127 l_prod_tbl(i).unit_of_measure := l_model_prod_rec.unit_of_measure;
1128 l_prod_tbl(i).unit_selling_price := l_model_prod_rec.unit_selling_price;
1129 l_prod_tbl(i).inventory_item_id := l_model_prod_rec.inventory_item_id;
1130 l_prod_tbl(i).serial_number := l_model_prod_rec.serial_number;
1131 l_prod_tbl(i).id2 := l_model_prod_rec.id2;
1132 l_prod_tbl(i).model_level := l_config_rec.LEVEL;
1133 -- BUG 4372877 --
1134 -- GCHADHA --
1135 -- 5/25/2005 --
1136 l_prod_tbl(i).external_reference := l_model_prod_rec.external_reference;
1137 -- END GCHADHA --
1138
1139 i := i + 1 ;
1140 END IF; /* end if 3 */
1141 CLOSE l_csr_model_products;
1142
1143 END IF;
1144 END LOOP; /* end loop of l_csr_configuration cursror end loop 2*/
1145 -- ----------------------errorout(' before populate table '||l_prod_tbl.count);
1146
1147 END LOOP; /* end loop of inventory item id end loop 1 */
1148
1149 ELSIF p_clvl_id IS NOT NULL THEN
1150 l_id := p_clvl_id;
1151 /** Get config items for an inventory_item_id **/
1152 IF p_default = 'CUSTOMER' THEN
1153 OPEN csr_model_config FOR l_config_cust USING l_id, p_party_id;
1154 ELSIF p_default = 'RELATED' THEN
1155 OPEN csr_model_config FOR l_config_rel USING l_id, p_party_id, p_org_id;
1156 ELSIF p_default = 'BOTH' THEN
1157 OPEN csr_model_config FOR l_config_both USING l_id, p_party_id, p_party_id, p_org_id ;
1158 ELSIF p_default = 'ALL' THEN
1159 OPEN csr_model_config FOR l_config_all USING l_id; --, p_party_id, p_org_id;
1160 END IF;
1161
1162 LOOP
1163 FETCH csr_model_config INTO l_config_rec;
1164 IF csr_model_config%NOTFOUND THEN /* 2nd if */
1165 CLOSE csr_model_config;
1166 EXIT;
1167 ELSE
1168
1169 IF (l_prod_tbl.COUNT > 0) THEN
1170
1171 populate_table (l_prod_tbl,
1172 'Model',
1173 rowcount,
1174 l_display_pref,
1175 x_prod_selections_tbl);
1176
1177 l_prod_tbl.DELETE;
1178 rowcount := rowcount + 1;
1179 i := 1;
1180 END IF;
1181 IF l_config_parent_id <> l_config_rec.config_parent_id AND l_config_rec.LEVEL = 1 THEN /* 3rd if */
1182
1183 /* select product details for config parent */
1184 /** Build parent **/
1185 OPEN l_csr_model_products(l_config_rec.config_parent_id,
1186 p_organization_id);
1187 FETCH l_csr_model_products INTO l_model_prod_rec;
1188 IF l_csr_model_products%FOUND THEN
1189
1190 IF l_id <> l_id_old THEN
1191 /* Populate parent records */
1192 x_prod_selections_tbl(rowcount).cp_id := l_model_prod_rec.instance_id;
1193 x_prod_selections_tbl(rowcount).config_parent_id := '';
1194 x_prod_selections_tbl(rowcount).name := l_model_prod_rec.name;
1195
1196 x_prod_selections_tbl(rowcount).description := l_model_prod_rec.description;
1197
1198 IF l_display_pref = 'DISPLAY_DESC' THEN /* 5 if */
1199 l_name := rpad(l_model_prod_rec.name, 30, ' ') || rpad(l_model_prod_rec.description, 40,' ');
1200 ELSIF l_display_pref = 'DISPLAY_NAME' THEN
1201 x_prod_selections_tbl(rowcount).description := l_model_prod_rec.name;
1202 x_prod_selections_tbl(rowcount).name := l_model_prod_rec.description;
1203 l_name := rpad(l_model_prod_rec.description, 40,' ') || rpad(l_model_prod_rec.name, 30, ' ');
1204 END IF; /* end if 5 */
1205
1206 x_prod_selections_tbl(rowcount).name := l_name;
1207 x_prod_selections_tbl(rowcount).rec_type := 'P';
1208 x_prod_selections_tbl(rowcount).rec_name := 'Model';
1209 x_prod_selections_tbl(rowcount).rec_no := rowcount;
1210 x_prod_selections_tbl(rowcount).model_level := l_config_rec.LEVEL;
1211 x_prod_selections_tbl(rowcount).cp_id2 := '';
1212 x_prod_selections_tbl(rowcount).ser_number := '';
1213 x_prod_selections_tbl(rowcount).ref_number := '' ;
1214 x_prod_selections_tbl(rowcount).quantity := '';
1215 x_prod_selections_tbl(rowcount).orig_net_amt := '';
1216 x_prod_selections_tbl(rowcount).price := '';
1217 x_prod_selections_tbl(rowcount).inventory_item_id := '';
1218 x_prod_selections_tbl(rowcount).site_id := '';
1219 x_prod_selections_tbl(rowcount).uom_code := '';
1220 x_prod_selections_tbl(rowcount).display_name := '';
1221 x_prod_selections_tbl(rowcount).site_name := '';
1222 x_prod_selections_tbl(rowcount).model_level := - 1;
1223 -- BUG 4372877 --
1224 -- GCHADHA --
1225 -- 5/25/2005 --
1226 x_prod_selections_tbl(rowcount).ext_reference := '';
1227 -- END GCHADHA --
1228 l_id_old := l_id;
1229 rowcount := rowcount + 1;
1230 END IF;
1231
1232 l_config_parent_id := l_config_rec.config_parent_id;
1233
1234 /* populate product details of the model */
1235 l_prod_tbl(i).id1 := l_config_rec.config_parent_id;
1236 l_prod_tbl(i).config_parent_id := '';
1237 l_prod_tbl(i).install_location_Id := l_model_prod_rec.install_location_id ;
1238 l_prod_tbl(i).quantity := l_model_prod_rec.quantity;
1239 l_prod_tbl(i).instance_number := l_model_prod_rec.instance_number;
1240 l_prod_tbl(i).unit_of_measure := l_model_prod_rec.unit_of_measure;
1241 l_prod_tbl(i).unit_selling_price := l_model_prod_rec.unit_selling_price;
1242 l_prod_tbl(i).inventory_item_id := l_model_prod_rec.inventory_item_id;
1243 l_prod_tbl(i).serial_number := l_model_prod_rec.serial_number;
1244 l_prod_tbl(i).id2 := l_model_prod_rec.id2;
1245 l_prod_tbl(i).model_level := 0;
1246 -- BUG 4372877 --
1247 -- GCHADHA --
1248 -- 5/25/2005 --
1249 l_prod_tbl(i).external_reference := l_model_prod_rec.external_reference;
1250 -- END GCHADHA --
1251
1252
1253 i := i + 1 ;
1254 END IF; /* end if l_csr_model_products */
1255
1256 CLOSE l_csr_model_products;
1257
1258 END IF ; /* Populate parent records end if 3 */
1259
1260 /* populate product details of the model */
1261
1262 OPEN l_csr_model_products(l_config_rec.cp_id,
1263 p_organization_id);
1264 FETCH l_csr_model_products INTO l_model_prod_rec;
1265 IF l_csr_model_products%FOUND THEN /** if 3 */
1266
1267 l_prod_tbl(i).id1 := l_config_rec.cp_id;
1268 l_prod_tbl(i).config_parent_id := l_config_rec.config_parent_id;
1269
1270 l_prod_tbl(i).install_location_Id := l_model_prod_rec.install_location_id ;
1271 l_prod_tbl(i).quantity := l_model_prod_rec.quantity;
1272 l_prod_tbl(i).instance_number := l_model_prod_rec.instance_number;
1273 l_prod_tbl(i).unit_of_measure := l_model_prod_rec.unit_of_measure;
1274 l_prod_tbl(i).unit_selling_price := l_model_prod_rec.unit_selling_price;
1275 l_prod_tbl(i).inventory_item_id := l_model_prod_rec.inventory_item_id;
1276 l_prod_tbl(i).serial_number := l_model_prod_rec.serial_number;
1277 l_prod_tbl(i).id2 := l_model_prod_rec.id2;
1278 l_prod_tbl(i).model_level := l_config_rec.LEVEL;
1279 -- BUG 4372877 --
1280 -- GCHADHA --
1281 -- 5/25/2005 --
1282 l_prod_tbl(i).external_reference := l_model_prod_rec.external_reference;
1283 -- END GCHADHA --
1284
1285
1286 i := i + 1 ;
1287 END IF; /* end if 3 */
1288 CLOSE l_csr_model_products;
1289
1290 END IF;
1291 END LOOP; /* end loop of l_csr_configuration cursror end loop 2*/
1292
1293 /*******************/
1294
1295 END IF;
1296 END ; /** end of procedure get_model **/
1297
1298 /*********************************/
1299
1300
1301 PROCEDURE get_product_selection(p_clvl_filter_rec IN clvl_filter_rec,
1302 x_prod_selections_tbl OUT NOCOPY prod_selections_tbl)
1303 IS
1304
1305 l_param_organization_id NUMBER := okc_context.get_okc_organization_id;
1306 l_find NUMBER := p_clvl_filter_rec.clvl_find_id;
1307
1308 TYPE items_rec IS RECORD (inventory_item_id MTL_SYSTEM_ITEMS_KFV.inventory_item_id%TYPE,
1309 description VARCHAR2(10000),
1310 name VARCHAR2(10000));
1311
1312
1313 l_items_rec items_rec;
1314
1315 -- Setting up cursor types + record types to fetch Party Sites using Dynamic cursor
1316 l_get_all_sites_sql VARCHAR2(2000);
1317 TYPE var_cur_type1 IS REF CURSOR ;
1318 l_csr_get_all_sites var_cur_type1;
1319 TYPE get_all_sites_rec IS RECORD (id1 OKX_PARTY_SITES_V.id1%TYPE,
1320 name OKX_PARTY_SITES_V.name%TYPE,
1321 party_site_number OKX_PARTY_SITES_V.party_site_number%TYPE,
1322 -- description OKX_PARTY_SITES_V.description%TYPE -- Bug 4915711
1323 description VARCHAR2(2000));
1324
1325 l_get_all_sites_rec get_all_sites_rec;
1326
1327 -- Setting up cursor types + record types to fetch Systems using Dynamic cursor
1328 l_get_all_systems_sql VARCHAR2(2000);
1329 TYPE var_cur_type IS REF CURSOR;
1330 l_csr_get_all_systems var_cur_type;
1331
1332 TYPE get_all_systems_rec IS RECORD (id1 CSI_SYSTEMS_B.system_id%TYPE,
1333 NAME CSI_SYSTEMS_TL.name%TYPE,
1334 Description CSI_SYSTEMS_TL.description%TYPE);
1335
1336 l_get_all_systems_rec get_all_systems_rec;
1337
1338 l_item_cust VARCHAR2(2000);
1339 l_item_rel VARCHAR2(2000);
1340 l_item_both VARCHAR2(2000);
1341 l_item_all VARCHAR2(2000);
1342 l_select_for_name VARCHAR2(2000);
1343 l_select_for_desc VARCHAR2(2000);
1344 l_order_by_name VARCHAR2(2000);
1345 l_order_by_desc VARCHAR2(2000);
1346
1347 TYPE var_cur_item IS REF CURSOR;
1348 l_get_items var_cur_item;
1349
1350 l_party_id NUMBER;
1351 l_org_id NUMBER;
1352 l_clvl_id NUMBER ;
1353 l_customer_id VARCHAR2(10);
1354 l_clvl_filter VARCHAR2(15);
1355 l_id NUMBER;
1356 l_prod_tbl prod_tbl;
1357 l_price NUMBER;
1358 l_default VARCHAR2(15);
1359 rowcount NUMBER := 1;
1360 l_prod_selections_tbl prod_selections_tbl;
1361 l_cust_id_tbl cust_id_tbl;
1362 l_party_id_tbl party_id_tbl;
1363 cust_count NUMBER := 1;
1364 l_organization_id NUMBER;
1365 l_display_pref VARCHAR2(25);
1366 l_config_parent_id NUMBER := - 99 ;
1367 l_name VARCHAR2(500);
1368
1369 l_get_all_systems_sql_c VARCHAR2(2000);
1370 l_get_all_systems_sql_r VARCHAR2(2000);
1371 l_get_all_systems_sql_b VARCHAR2(2000);
1372 l_get_all_systems_sql_a VARCHAR2(2000);
1373
1374 l_get_all_sites_sql_c VARCHAR2(2000);
1375 l_get_all_sites_sql_r VARCHAR2(2000);
1376 l_get_all_sites_sql_b VARCHAR2(2000);
1377 l_get_all_sites_sql_a VARCHAR2(2000);
1378
1379 l_chk_id_flag VARCHAR2(1) := 'N' ;
1380 id_counter NUMBER := 1;
1381 l_cust_id_list VARCHAR2(500);
1382
1383 k NUMBER := 1;
1384 j NUMBER := 1;
1385 start_sort NUMBER := 1;
1386 l_prod_tbl_sort prod_tbl ;
1387 l_inv_id NUMBER ;
1388 l_old_inv_id NUMBER := - 99;
1389 l_gen_name VARCHAR2(2000);
1390 l_gen_desc VARCHAR2(2000);
1391 l_tmp_prod_tbl prod_tbl;
1392
1393
1394 BEGIN
1395
1396 l_default := p_clvl_filter_rec.clvl_default;
1397 l_party_id := p_clvl_filter_rec.clvl_party_id;
1398 l_org_id := p_clvl_filter_rec.clvl_auth_org_id;
1399 l_clvl_id := p_clvl_filter_rec.clvl_find_id;
1400 l_clvl_filter := p_clvl_filter_rec.clvl_filter;
1401 l_organization_id := p_clvl_filter_rec.clvl_organization_id;
1402 l_display_pref := p_clvl_filter_rec.clvl_display_pref;
1403
1404
1405 g_serial_number := p_clvl_filter_rec.lbl_serial_number;
1406 g_quantity := p_clvl_filter_rec.lbl_quantity;
1407 g_price := p_clvl_filter_rec.lbl_price;
1408 g_installed_at := p_clvl_filter_rec.lbl_installed_at;
1409 g_ref := p_clvl_filter_rec.lbl_ref;
1410
1411 --IF l_default IN ('CUSTOMER','RELATED','BOTH') THEN
1412
1413 IF l_clvl_filter <> 'Party' THEN /* if filter is Party then party id and name should be fetched */
1414
1415
1416 IF l_clvl_filter = 'Item' THEN
1417
1418 /*CURSOR l_csr_item_name_cust(p_party_id IN NUMBER, l_organization_id IN NUMBER)
1419 IS
1420 select inventory_item_id, concatenated_segments name , description description */
1421
1422 l_select_for_name := 'select inventory_item_id, concatenated_segments name , description description ';
1423 l_select_for_desc := 'select inventory_item_id, description description , concatenated_segments name ';
1424
1425
1426
1427 l_order_by_name := ' order by name ' ;
1428
1429 l_order_by_desc := ' order by description ';
1430
1431 l_item_cust := ' from mtl_system_items_kfv '
1432 ||' where inventory_item_id in ( select inventory_item_id from csi_item_instances '
1433 ||' where owner_party_account_id in (select id1 '
1434 ||' FROM okx_customer_accounts_v '
1435 ||' WHERE party_id = :l_party_id)) '
1436 ||' and organization_id = :l_organization_id '
1437 ||' and serviceable_product_flag = ''Y''';
1438
1439 l_item_rel := ' FROM mtl_system_items_kfv '
1440 ||' where inventory_item_id in ( select inventory_item_id from csi_item_instances '
1441 ||' where owner_party_account_id in (select A.RELATED_CUST_ACCOUNT_ID '
1442 ||' FROM OKX_CUST_ACCT_RELATE_ALL_V A, '
1443 ||' OKX_CUSTOMER_ACCOUNTS_V B '
1444 ||' WHERE B.ID1 = A.CUST_ACCOUNT_ID '
1445 ||' AND B.party_id = :l_party_id '
1446 ||' AND B.status = ''A'''
1447 ||' AND A.status = ''A'''
1448 ||' AND A.org_id = :l_org_id '
1449 ||' )) '
1450 ||' and organization_id = :l_organization_id '
1451 ||' and serviceable_product_flag = ''Y''';
1452
1453 l_item_both := ' from mtl_system_items_kfv '
1454 ||' where inventory_item_id in ( select inventory_item_id from csi_item_instances '
1455 ||' where owner_party_account_id in (select id1 '
1456 ||' FROM okx_customer_accounts_v '
1457 ||' WHERE party_id = :p_party_id '
1458 ||' UNION '
1459 ||' select A.RELATED_CUST_ACCOUNT_ID '
1460 ||' FROM OKX_CUST_ACCT_RELATE_ALL_V A, '
1461 ||' OKX_CUSTOMER_ACCOUNTS_V B '
1462 ||' WHERE B.ID1 = A.CUST_ACCOUNT_ID '
1463 ||' AND B.party_id = :l_party_id '
1464 ||' AND B.status = ''A'''
1465 ||' AND A.status = ''A'''
1466 ||' AND A.org_id = :l_org_id '
1467 ||' )) '
1468 ||' and organizatioN_id = :l_organization_id '
1469 ||' and serviceable_product_flag = ''Y''';
1470
1471 l_item_all := ' from mtl_system_items_kfv '
1472 ||' where organizatioN_id = :l_organization_id '
1473 ||' and serviceable_product_flag = ''Y''';
1474
1475 IF l_clvl_id IS NULL THEN
1476 /* Select all Items for given party first */
1477 IF l_default = 'CUSTOMER' THEN
1478 IF l_display_pref = 'NAME' THEN
1479 l_item_cust := l_select_for_name ||' '|| l_item_cust ||' '|| l_order_by_name;
1480 ELSE
1481 l_item_cust := l_select_for_desc ||' '|| l_item_cust ||' '|| l_order_by_desc;
1482 END IF;
1483 --------------------------------------------------------errorout_an(' item customer '||l_item_cust);
1484
1485 OPEN l_get_items FOR l_item_cust USING l_party_id, l_organization_id;
1486 ELSIF l_default = 'RELATED' THEN
1487 IF l_display_pref = 'NAME' THEN
1488 l_item_rel := l_select_for_name ||' '|| l_item_rel ||' '|| l_order_by_name;
1489 ELSE
1490 l_item_rel := l_select_for_desc ||' '|| l_item_rel ||' '|| l_order_by_desc;
1491 END IF;
1492 -- ----------------------errorout_an(' item rel '||l_item_rel);
1493 -- ----------------------errorout_an(' party '||l_party_id||' org id '||l_org_id||' '||l_organization_id);
1494 OPEN l_get_items FOR l_item_rel USING l_party_id, l_org_id, l_organization_id;
1495 ELSIF l_default = 'BOTH' THEN
1496 IF l_display_pref = 'NAME' THEN
1497 l_item_both := l_select_for_name ||' '|| l_item_both ||' '|| l_order_by_name;
1498 ELSE
1499 l_item_both := l_select_for_desc ||' '|| l_item_both ||' '|| l_order_by_desc;
1500 END IF;
1501 OPEN l_get_items FOR l_item_both USING l_party_id, l_party_id, l_org_id, l_organization_id;
1502 --------------------------------------------------------errorout_an(' item both '||l_item_both);
1503 ELSIF l_default = 'ALL' THEN
1504 IF l_display_pref = 'NAME' THEN
1505 l_item_all := l_select_for_name ||' '|| l_item_all ||' '|| l_order_by_name;
1506 ELSE
1507 l_item_all := l_select_for_desc ||' '|| l_item_all ||' '|| l_order_by_desc;
1508 END IF;
1509 OPEN l_get_items FOR l_item_all USING l_organization_id;
1510 --------------------------------------------------------errorout_an(' item all '||l_item_all);
1511 END IF;
1512
1513
1514 /* Find cp id in the record group */
1515
1516 LOOP
1517 ------errorout_an(' in loop ');
1518 FETCH l_get_items INTO l_items_rec ;
1519 IF l_get_items%NOTFOUND THEN
1520 EXIT;
1521 ELSE
1522 ------errorout_an(' before get prod ');
1523
1524 get_products(l_clvl_filter,
1525 l_items_rec.inventory_item_id,
1526 l_default,
1527 l_cust_id_list,
1528 l_party_id,
1529 l_org_id,
1530 l_organization_id,
1531 l_prod_tbl);
1532
1533 IF l_prod_tbl.COUNT > 0 THEN
1534
1535 x_prod_selections_tbl(rowcount).cp_id := l_items_rec.inventory_item_id;
1536 x_prod_selections_tbl(rowcount).name := l_items_rec.name;
1537 x_prod_selections_tbl(rowcount).description := l_items_rec.description;
1538
1539 IF l_display_pref = 'DISPLAY_NAME' THEN
1540 l_name := rpad(l_items_rec.name, 30, ' ') || rpad(l_items_rec.description, 40,' ');
1541 ELSIF l_display_pref = 'DISPLAY_DESC' THEN
1542 l_name := rpad(l_items_rec.description, 30, ' ') || rpad(l_items_rec.name, 40,' ');
1543 END IF;
1544
1545 x_prod_selections_tbl(rowcount).name := l_name;
1546 x_prod_selections_tbl(rowcount).rec_type := 'P';
1547 x_prod_selections_tbl(rowcount).rec_name := 'Item';
1548 x_prod_selections_tbl(rowcount).rec_no := rowcount;
1549 x_prod_selections_tbl(rowcount).cp_id2 := '';
1550 x_prod_selections_tbl(rowcount).ser_number := '';
1551 x_prod_selections_tbl(rowcount).ref_number := '' ;
1552 x_prod_selections_tbl(rowcount).quantity := '';
1553 x_prod_selections_tbl(rowcount).orig_net_amt := '';
1554 x_prod_selections_tbl(rowcount).price := '';
1555 x_prod_selections_tbl(rowcount).inventory_item_id := '';
1556 x_prod_selections_tbl(rowcount).site_id := '';
1557 x_prod_selections_tbl(rowcount).uom_code := '';
1558 x_prod_selections_tbl(rowcount).display_name := '';
1559 x_prod_selections_tbl(rowcount).site_name := '';
1560 -- GCHADHA --
1561 -- BUG 4372877 --
1562 -- 5/25/2005 --
1563 x_prod_selections_tbl(rowcount).ext_reference := '';
1564 -- END GCHADHA --
1565
1566 rowcount := rowcount + 1;
1567
1568 /* Populate child records */
1569
1570 populate_table (l_prod_tbl,
1571 l_clvl_filter,
1572 rowcount,
1573 l_display_pref,
1574 x_prod_selections_tbl);
1575
1576 rowcount := rowcount + 1;
1577 END IF;
1578
1579 END IF ; /* End of ITems cursor */
1580 -- ------------------------------------------errorout_an(' out of cursors ');
1581 END LOOP; /* End of Cursor Loop */
1582
1583
1584 ELSIF l_clvl_id IS NOT NULL THEN
1585
1586 get_products(l_clvl_filter,
1587 l_clvl_id,
1588 l_default,
1589 l_cust_id_list,
1590 l_party_id,
1591 l_org_id,
1592 l_organization_id,
1593 l_prod_tbl);
1594
1595
1596 IF l_prod_tbl.COUNT > 0 THEN
1597 /* Populate parent records */
1598 x_prod_selections_tbl(rowcount).cp_id := l_clvl_id;
1599
1600 l_name := rpad(p_clvl_filter_rec.clvl_name, 30,' ') || rpad(p_clvl_filter_rec.clvl_description, 40,' ');
1601 x_prod_selections_tbl(rowcount).name := rpad(p_clvl_filter_rec.clvl_name, 30,' ') || rpad(p_clvl_filter_rec.clvl_description, 40,' ');
1602 x_prod_selections_tbl(rowcount).description := p_clvl_filter_rec.clvl_description;
1603 x_prod_selections_tbl(rowcount).rec_type := 'P';
1604 x_prod_selections_tbl(rowcount).rec_name := 'Item';
1605 x_prod_selections_tbl(rowcount).rec_no := rowcount;
1606 x_prod_selections_tbl(rowcount).cp_id2 := '';
1607 x_prod_selections_tbl(rowcount).ser_number := '';
1608 x_prod_selections_tbl(rowcount).ref_number := '' ;
1609 x_prod_selections_tbl(rowcount).quantity := '';
1610 x_prod_selections_tbl(rowcount).orig_net_amt := '';
1611 x_prod_selections_tbl(rowcount).price := '';
1612 x_prod_selections_tbl(rowcount).inventory_item_id := '';
1613 x_prod_selections_tbl(rowcount).site_id := '';
1614 x_prod_selections_tbl(rowcount).uom_code := '';
1615 x_prod_selections_tbl(rowcount).display_name := '';
1616 x_prod_selections_tbl(rowcount).site_name := '';
1617 -- BUG 4372877 --
1618 -- GCHADHA --
1619 -- 5/25/2005 --
1620 x_prod_selections_tbl(rowcount).ext_reference := '';
1621 -- END GCHADHA --
1622
1623
1624 rowcount := rowcount + 1;
1625
1626 populate_table (l_prod_tbl,
1627 l_clvl_filter,
1628 rowcount,
1629 l_display_pref,
1630 x_prod_selections_tbl);
1631
1632
1633 END IF;
1634
1635 END IF;
1636
1637 ELSIF l_clvl_filter = 'System' THEN
1638 IF l_clvl_id IS NULL THEN
1639
1640 /** Setting up dynamic cursor for Systems **/
1641
1642
1643 -- Bug 5041892 --
1644 l_get_all_systems_sql_c := ' SELECT CSB.system_Id Id1 , CST.name name , CST.description description '
1645 || ' FROM CSI_SYSTEMS_B CSB, '
1646 || ' CSI_SYSTEMS_TL CST '
1647 || ' WHERE CSB.system_id = CST.system_id '
1648 || ' AND CSB.system_id IN (Select CII.system_id '
1649 || ' From CSI_ITEM_INSTANCES CII, '
1650 || ' CSI_INSTANCE_STATUSES CIS '
1651 || ' , MTL_SYSTEM_ITEMS_B IT '
1652 || ' WHERE IT.inventory_item_id = CII.inventory_item_id '
1653 || ' AND IT.serviceable_product_flag = ''Y'''
1654 || ' AND IT.organization_id = :l_organization_id '
1655 || ' AND CII.owner_party_account_id in (select cust_account_id '
1656 ||' from hz_cust_accounts '
1657 ||' where party_id = :p_party_id ) '
1658 || ' And CIS.instance_status_id = CII.instance_status_id '
1659 || ' And CIS.service_order_allowed_flag = ''Y'''
1660 || ' And sysdate between Nvl(CIS.start_date_active, sysdate) and Nvl(CIS.end_date_active, sysdate) '
1661 || ' And CII.system_id is not null ) '
1662 || ' And sysdate between Nvl(CSB.start_date_active, sysdate) and Nvl(CSB.end_date_active, sysdate) '
1663 || ' Order by CST.name ';
1664
1665
1666 -- Bug 5041892 --
1667 l_get_all_systems_sql_b := ' SELECT CSB.system_Id Id1 , CST.name name , CST.description description '
1668 || ' FROM CSI_SYSTEMS_B CSB, '
1669 || ' CSI_SYSTEMS_TL CST '
1670 || ' WHERE CSB.system_id = CST.system_id '
1671 || ' AND CSB.system_id IN '
1672 ||' (SELECT CII.system_id '
1673 ||' FROM CSI_ITEM_INSTANCES CII, '
1674 ||' CSI_INSTANCE_STATUSES CIS '
1675 ||' , MTL_SYSTEM_ITEMS_B IT '
1676 || ' WHERE IT.inventory_item_id = CII.inventory_item_id '
1677 || ' AND IT.serviceable_product_flag = ''Y'''
1678 || ' AND IT.organization_id = :l_organization_id '
1679 || ' AND CII.owner_party_account_id in (select cust_account_id '
1680 ||' from HZ_CUST_ACCOUNTS '
1681 ||' where party_id = :p_party_id '
1682 ||' UNION ALL'
1683 ||' select A.RELATED_CUST_ACCOUNT_ID '
1684 ||' FROM HZ_CUST_ACCT_RELATE_ALL A, '
1685 ||' HZ_CUST_ACCOUNTS B '
1686 ||' WHERE B.cust_account_id = A.CUST_ACCOUNT_ID '
1687 ||' AND B.party_id = :p_party_id '
1688 ||' AND B.status = ''A'''
1689 ||' AND A.status = ''A'''
1690 ||' AND A.org_id = :p_org_id '
1691 ||' ) '
1692 || ' And CIS.instance_status_id = CII.instance_status_id '
1693 || ' And CIS.service_order_allowed_flag = ''Y'''
1694 || ' And sysdate between Nvl(CIS.start_date_active, sysdate) and Nvl(CIS.end_date_active, sysdate) '
1695 || ' And CII.system_id is not null ) '
1696 || ' And sysdate between Nvl(CSB.start_date_active, sysdate) and Nvl(CSB.end_date_active, sysdate) '
1697 || ' Order by CST.name ';
1698
1699 -- Bug 5041892 --
1700 l_get_all_systems_sql_r := ' SELECT CSB.system_Id Id1 , CST.name name , CST.description description '
1701 || ' FROM CSI_SYSTEMS_B CSB, '
1702 || ' CSI_SYSTEMS_TL CST '
1703 || ' WHERE CSB.system_id = CST.system_id '
1704 || ' AND CSB.system_id IN (Select CII.system_id '
1705 || ' From CSI_ITEM_INSTANCES CII, '
1706 || ' CSI_INSTANCE_STATUSES CIS '
1707 ||' , MTL_SYSTEM_ITEMS_B IT '
1708 || ' WHERE IT.inventory_item_id = CII.inventory_item_id '
1709 || ' AND IT.serviceable_product_flag = ''Y'''
1710 || ' AND IT.organization_id = :l_organization_id '
1711 || ' AND CII.owner_party_account_id in '
1712 ||' (select A.RELATED_CUST_ACCOUNT_ID '
1713 ||' FROM HZ_CUST_ACCT_RELATE_ALL A, '
1714 ||' HZ_CUST_ACCOUNTS B '
1715 ||' WHERE B.cust_account_id = A.CUST_ACCOUNT_ID '
1716 ||' AND B.party_id = :p_party_id '
1717 ||' AND B.status = ''A'''
1718 ||' AND A.status = ''A'''
1719 ||' AND A.org_id = :p_org_id '
1720 ||' ) '
1721 || ' And CIS.instance_status_id = CII.instance_status_id '
1722 || ' And CIS.service_order_allowed_flag = ''Y'''
1723 || ' And sysdate between Nvl(CIS.start_date_active, sysdate) and Nvl(CIS.end_date_active, sysdate) '
1724 || ' And system_id is not null ) '
1725 || ' And sysdate between Nvl(CSB.start_date_active, sysdate) and Nvl(CSB.end_date_active, sysdate) '
1726 || ' Order by CST.name ';
1727
1728
1729 l_get_all_systems_sql_a := ' SELECT CSB.system_Id Id1 , CST.name name , CST.description description '
1730 || ' FROM CSI_SYSTEMS_B CSB, '
1731 || ' CSI_SYSTEMS_TL CST '
1732 || ' WHERE CSB.system_id = CST.system_id '
1733 || ' AND CSB.system_id IN (Select CII.system_id '
1734 || ' From CSI_ITEM_INSTANCES CII, '
1735 || ' CSI_INSTANCE_STATUSES CIS '
1736 ||' , MTL_SYSTEM_ITEMS_B IT '
1737 || ' WHERE IT.inventory_item_id = CII.inventory_item_id '
1738 || ' AND IT.serviceable_product_flag = ''Y'''
1739 || ' AND IT.organization_id = :l_organization_id '
1740 || ' AND CIS.instance_status_id = CII.instance_status_id '
1741 || ' And CIS.service_order_allowed_flag = ''Y'''
1742 || ' And sysdate between Nvl(CIS.start_date_active, sysdate) and Nvl(CIS.end_date_active, sysdate) '
1743 || ' And CII.system_id is not null ) '
1744 || ' And sysdate between Nvl(CSB.start_date_active, sysdate) and Nvl(CSB.end_date_active, sysdate) '
1745 || ' Order by CST.name ';
1746
1747 /* Select all Items for given party first */
1748
1749 IF l_default = 'CUSTOMER' THEN
1750 ------------------------------errorout_an(l_get_all_systems_sql_c);
1751 l_get_all_systems_sql := l_get_all_systems_sql_c;
1752 OPEN l_csr_get_all_systems FOR l_get_all_systems_sql USING l_organization_id, l_party_id;
1753 ELSIF l_default = 'RELATED' THEN
1754 ------------------------------errorout_an(l_get_all_systems_sql_r);
1755 l_get_all_systems_sql := l_get_all_systems_sql_r;
1756 OPEN l_csr_get_all_systems FOR l_get_all_systems_sql USING l_organization_id, l_party_id, l_org_id;
1757 ELSIF l_default = 'BOTH' THEN
1758 ------------------------------errorout_an(l_get_all_systems_sql_b);
1759 l_get_all_systems_sql := l_get_all_systems_sql_b;
1760 OPEN l_csr_get_all_systems FOR l_get_all_systems_sql USING l_organization_id, l_party_id, l_party_id, l_org_id ;
1761 ELSIF l_default = 'ALL' THEN
1762 ------------------------------errorout_an(l_get_all_systems_sql_b);
1763 l_get_all_systems_sql := l_get_all_systems_sql_a;
1764 OPEN l_csr_get_all_systems FOR l_get_all_systems_sql USING l_organization_id ;
1765 END IF;
1766
1767
1768 LOOP
1769 FETCH l_csr_get_all_systems INTO l_get_all_systems_rec;
1770 IF l_csr_get_all_systems%NOTFOUND THEN
1771 CLOSE l_csr_get_all_systems;
1772 EXIT;
1773 END IF;
1774
1775 l_id := l_get_all_systems_rec.id1;
1776
1777 FOR id_counter IN 1 .. x_prod_selections_tbl.COUNT LOOP
1778 IF x_prod_selections_tbl(id_counter).rec_type = 'P' THEN
1779
1780 IF x_prod_selections_tbl(id_counter).cp_id = l_id THEN
1781 l_chk_id_flag := 'Y';
1782 EXIT;
1783 ELSE
1784 l_chk_id_flag := 'N';
1785 END IF;
1786 END IF;
1787 END LOOP;
1788
1789 IF l_chk_id_flag = 'N' THEN
1790
1791 get_products(l_clvl_filter,
1792 l_id,
1793 l_default,
1794 l_cust_id_list,
1795 l_party_id,
1796 l_org_id,
1797 l_organization_id,
1798 l_prod_tbl);
1799
1800 IF l_prod_tbl.COUNT > 0 THEN
1801
1802 x_prod_selections_tbl(rowcount).cp_id := l_get_all_systems_rec.id1;
1803 l_name := rpad(l_get_all_systems_rec.name, 30, ' ') || rpad(l_get_all_systems_rec.description, 40,' ');
1804 x_prod_selections_tbl(rowcount).name := l_name;
1805 x_prod_selections_tbl(rowcount).description := l_get_all_systems_rec.description;
1806 x_prod_selections_tbl(rowcount).rec_type := 'P';
1807 x_prod_selections_tbl(rowcount).rec_name := 'System';
1808 x_prod_selections_tbl(rowcount).rec_no := rowcount;
1809 x_prod_selections_tbl(rowcount).cp_id2 := '';
1810 x_prod_selections_tbl(rowcount).ser_number := '';
1811 x_prod_selections_tbl(rowcount).ref_number := '' ;
1812 x_prod_selections_tbl(rowcount).quantity := '';
1813 x_prod_selections_tbl(rowcount).orig_net_amt := '';
1814 x_prod_selections_tbl(rowcount).price := '';
1815 x_prod_selections_tbl(rowcount).inventory_item_id := '';
1816 x_prod_selections_tbl(rowcount).site_id := '';
1817 x_prod_selections_tbl(rowcount).uom_code := '';
1818 x_prod_selections_tbl(rowcount).display_name := '';
1819 x_prod_selections_tbl(rowcount).site_name := '';
1820 -- BUG 4372877 --
1821 -- GCHADHA --
1822 -- 5/25/2005 --
1823 x_prod_selections_tbl(rowcount).ext_reference := '';
1824 -- END GCHADHA --
1825
1826
1827 rowcount := rowcount + 1;
1828
1829 populate_table (l_prod_tbl,
1830 l_clvl_filter,
1831 rowcount,
1832 l_display_pref,
1833 x_prod_selections_tbl);
1834
1835 rowcount := rowcount + 1;
1836 END IF;
1837 END IF;
1838 END LOOP;
1839
1840 ELSIF l_clvl_id IS NOT NULL THEN
1841
1842
1843 get_products(l_clvl_filter,
1844 l_clvl_id,
1845 l_default,
1846 l_cust_id_list,
1847 l_party_id,
1848 l_org_id,
1849 l_organization_id,
1850 l_prod_tbl);
1851
1852
1853 IF l_prod_tbl.COUNT > 0 THEN
1854 -- Populate parent record in table, only if products exist
1855 x_prod_selections_tbl(rowcount).cp_id := l_clvl_id;
1856 l_name := rpad(p_clvl_filter_rec.clvl_name, 30,' ') || rpad(p_clvl_filter_rec.clvl_description, 40,' ');
1857
1858 x_prod_selections_tbl(rowcount).name := l_name;
1859 x_prod_selections_tbl(rowcount).description := p_clvl_filter_rec.clvl_description;
1860 x_prod_selections_tbl(rowcount).rec_type := 'P';
1861 x_prod_selections_tbl(rowcount).rec_name := 'System';
1862 x_prod_selections_tbl(rowcount).rec_no := rowcount;
1863 x_prod_selections_tbl(rowcount).cp_id2 := '';
1864 x_prod_selections_tbl(rowcount).ser_number := '';
1865 x_prod_selections_tbl(rowcount).ref_number := '' ;
1866 x_prod_selections_tbl(rowcount).quantity := '';
1867 x_prod_selections_tbl(rowcount).orig_net_amt := '';
1868 x_prod_selections_tbl(rowcount).price := '';
1869 x_prod_selections_tbl(rowcount).inventory_item_id := '';
1870 x_prod_selections_tbl(rowcount).site_id := '';
1871 x_prod_selections_tbl(rowcount).uom_code := '';
1872 x_prod_selections_tbl(rowcount).display_name := '';
1873 x_prod_selections_tbl(rowcount).site_name := '';
1874 -- BUG 4372877 --
1875 -- GCHADHA --
1876 -- 5/25/2005 --
1877 x_prod_selections_tbl(rowcount).ext_reference := '';
1878 -- END GCHADHA --
1879
1880 rowcount := rowcount + 1;
1881
1882 populate_table (l_prod_tbl,
1883 l_clvl_filter,
1884 rowcount,
1885 l_display_pref,
1886 x_prod_selections_tbl);
1887
1888
1889 END IF;
1890 END IF;
1891
1892 ELSIF l_clvl_filter = 'Site' THEN
1893 IF l_clvl_id IS NULL THEN
1894 /* Select all Items for given party first */
1895 -- Bug 5004778 --
1896 -- Modified Query to reduce shared memory Usage
1897 -- Replaced views to base tables where ever possible
1898 l_get_all_sites_sql_c := ' SELECT SI.Id1 id1 , SI.name name , SI.Party_Site_Number party_site_number , SI.description description '
1899 || ' FROM OKX_PARTY_SITES_V SI '
1900 || ' WHERE exists (SELECT CII.install_location_Id '
1901 ||' FROM CSI_ITEM_INSTANCES CII, '
1902 ||' CSI_INSTANCE_STATUSES CIS, '
1903 ||' MTL_SYSTEM_ITEMS_B IT '
1904 ||' WHERE IT.inventory_item_id = CII.inventory_item_id '
1905 ||' AND IT.serviceable_product_flag = ''Y'''
1906 ||' AND IT.organization_id = :l_organization_id '
1907 ||' AND CII.install_location_id = SI.id1 '
1908 ||' AND CII.owner_party_account_id in '
1909 ||'(select cust_account_id '
1910 ||' from hz_cust_accounts '
1911 ||' where party_id = :p_party_id ) '
1912 ||' And CIS.instance_Status_id = CII.instance_status_id '
1913 ||' And CIS.service_order_allowed_flag = ''Y'''
1914 ||' And sysdate between Nvl(CIS.start_date_active, sysdate) and '
1915 ||' Nvl(CIS.end_date_active, sysdate)) '
1916 -- TCA Changes --
1917 /* ||' And sysdate between Nvl(SI.start_date_active, sysdate) and '
1918 ||' Nvl(SI.end_date_active, sysdate) ' */
1919 || 'AND SI.STATUS = ''A'''
1920 -- TCA Changes --
1921 ||' ORDER BY si.party_site_number, si.name ';
1922
1923 -- Bug 5004778 --
1924 -- Modified Query to reduce shared memory Usage
1925 -- Replaced views to base tables where ever possible
1926 l_get_all_sites_sql_r := ' SELECT SI.Id1 id1 , SI.name name , SI.Party_Site_Number party_site_number , SI.description description '
1927 || ' FROM OKX_PARTY_SITES_V SI '
1928 || ' WHERE exists (SELECT CII.install_location_Id '
1929 ||' FROM CSI_ITEM_INSTANCES CII, '
1930 ||' CSI_INSTANCE_STATUSES CIS '
1931 ||' , MTL_SYSTEM_ITEMS_B IT '
1932 ||' WHERE IT.inventory_item_id = CII.inventory_item_id '
1933 ||' AND IT.serviceable_product_flag = ''Y'''
1934 ||' AND IT.organization_id = :l_organization_id '
1935 ||' AND CII.install_location_id = SI.id1 '
1936 ||' AND CII.owner_party_account_id in '
1937 ||' (select A.RELATED_CUST_ACCOUNT_ID '
1938 ||' FROM HZ_CUST_ACCT_RELATE_ALL A, '
1939 ||' HZ_CUST_ACCOUNTS B '
1940 ||' WHERE B.cust_account_id = A.CUST_ACCOUNT_ID '
1941 ||' AND B.party_id = :l_party_id '
1942 ||' AND B.status = ''A'''
1943 ||' AND A.status = ''A'''
1944 ||' AND A.org_id = :p_org_id '
1945 ||' ) '
1946 ||' And CIS.instance_Status_id = CII.instance_status_id '
1947 ||' And CIS.service_order_allowed_flag = ''Y'''
1948 ||' And sysdate between Nvl(CIS.start_date_active, sysdate) and '
1949 ||' Nvl(CIS.end_date_active, sysdate)) '
1950 -- TCA Changes --
1951 /* ||' And sysdate between Nvl(SI.start_date_active, sysdate) and '
1952 ||' Nvl(SI.end_date_active, sysdate) ' */
1953 || 'AND SI.STATUS = ''A'''
1954 -- TCA Changes --
1955 ||' ORDER BY si.party_site_number, si.name ';
1956
1957 -- Bug 5004778 --
1958 -- Modified Query to reduce shared memory Usage
1959 -- Replaced views to base tables where ever possible
1960 l_get_all_sites_sql_b := ' SELECT SI.Id1 id1 , SI.name name , SI.Party_Site_Number party_site_number , SI.description description '
1961 || ' FROM OKX_PARTY_SITES_V SI '
1962 || ' WHERE exists (SELECT CII.install_location_Id '
1963 || ' FROM CSI_ITEM_INSTANCES CII, '
1964 ||' CSI_INSTANCE_STATUSES CIS '
1965 ||' , MTL_SYSTEM_ITEMS_B IT '
1966 ||' WHERE IT.inventory_item_id = CII.inventory_item_id '
1967 ||' AND IT.serviceable_product_flag = ''Y'''
1968 ||' AND IT.organization_id = :l_organization_id '
1969 ||' AND CII.install_location_id = SI.id1 '
1970 ||' AND CII.owner_party_account_id in '
1971 ||' (select cust_account_id '
1972 ||' from hz_cust_accounts '
1973 ||' where party_id = :p_party_id '
1974 ||' UNION '
1975 ||' select A.RELATED_CUST_ACCOUNT_ID '
1976 ||' FROM HZ_CUST_ACCT_RELATE_ALL A, '
1977 ||' HZ_CUST_ACCOUNTS B '
1978 ||' WHERE B.cust_account_id = A.CUST_ACCOUNT_ID '
1979 ||' AND B.party_id = :p_party_id '
1980 ||' AND B.status = ''A'''
1981 ||' AND A.status = ''A'''
1982 ||' AND A.org_id = :p_org_id '
1983 ||' ) '
1984 ||' And CIS.instance_Status_id = CII.instance_status_id '
1985 ||' And CIS.service_order_allowed_flag = ''Y'''
1986 ||' And sysdate between Nvl(CIS.start_date_active, sysdate) and '
1987 ||' Nvl(CIS.end_date_active, sysdate)) '
1988 -- TCA Changes --
1989 /* ||' And sysdate between Nvl(SI.start_date_active, sysdate) and '
1990 ||' Nvl(SI.end_date_active, sysdate) ' */
1991 || 'AND SI.STATUS = ''A'''
1992 -- TCA Changes --
1993 ||' ORDER BY si.party_site_number, si.name ';
1994 -- Bug 5004778 --
1995
1996 l_get_all_sites_sql_a := ' SELECT SI.Id1 id1 , SI.name name , SI.Party_Site_Number party_site_number , SI.description description '
1997 || ' FROM OKX_PARTY_SITES_V SI '
1998 || ' WHERE exists (SELECT CII.install_location_Id '
1999 || ' FROM CSI_ITEM_INSTANCES CII, '
2000 ||' CSI_INSTANCE_STATUSES CIS '
2001 ||' , MTL_SYSTEM_ITEMS_KFV IT '
2002 ||' WHERE IT.inventory_item_id = CII.inventory_item_id '
2003 ||' AND IT.serviceable_product_flag = ''Y'''
2004 ||' AND IT.organization_id = :l_organization_id '
2005 ||' AND CII.install_location_id = SI.id1 '
2006 ||' AND CIS.instance_Status_id = CII.instance_status_id '
2007 ||' And CIS.service_order_allowed_flag = ''Y'''
2008 ||' And sysdate between Nvl(CIS.start_date_active, sysdate) and '
2009 ||' Nvl(CIS.end_date_active, sysdate)) '
2010 -- TCA Changes --
2011 /* ||' And sysdate between Nvl(SI.start_date_active, sysdate) and '
2012 ||' Nvl(SI.end_date_active, sysdate) ' */
2013 || 'AND SI.STATUS = ''A''';
2014 -- TCA Changes --
2015
2016
2017 IF l_default = 'CUSTOMER' THEN
2018 l_get_all_sites_sql := l_get_all_sites_sql_c;
2019 -- ----------------------errorout_an(' get sites info cust '||l_get_all_sites_sql);
2020 OPEN l_csr_get_all_sites FOR l_get_all_sites_sql USING l_organization_id, l_party_id;
2021 ELSIF l_default = 'RELATED' THEN
2022 l_get_all_sites_sql := l_get_all_sites_sql_r;
2023 -- ----------------------errorout_an(' get sites info rel '||l_get_all_sites_sql||' '||l_party_id||' '||l_org_id);
2024 OPEN l_csr_get_all_sites FOR l_get_all_sites_sql USING l_organization_id, l_party_id, l_org_id;
2025 ELSIF l_default = 'BOTH' THEN
2026 l_get_all_sites_sql := l_get_all_sites_sql_b;
2027 -- ----------------------errorout_an(' get sites info both '||l_get_all_sites_sql);
2028 OPEN l_csr_get_all_sites FOR l_get_all_sites_sql USING l_organization_id, l_party_id, l_party_id, l_org_id;
2029 ELSIF l_default = 'ALL' THEN
2030 l_get_all_sites_sql := l_get_all_sites_sql_a;
2031 -- ----------------------errorout_an(' get sites info both '||l_get_all_sites_sql);
2032 OPEN l_csr_get_all_sites FOR l_get_all_sites_sql USING l_organization_id;
2033
2034 END IF;
2035
2036
2037 -- OPEN l_csr_get_all_sites FOR l_get_all_sites_sql USING l_party_id;
2038 LOOP FETCH l_csr_get_all_sites INTO l_get_all_sites_rec;
2039 IF l_csr_get_all_sites%NOTFOUND THEN
2040 CLOSE l_csr_Get_all_sites;
2041 EXIT;
2042 END IF;
2043
2044 l_id := l_get_all_sites_rec.id1;
2045
2046 FOR id_counter IN 1 .. x_prod_selections_tbl.COUNT LOOP
2047 IF x_prod_selections_tbl(id_counter).rec_type = 'P' THEN
2048
2049 IF x_prod_selections_tbl(id_counter).cp_id = l_id THEN
2050 l_chk_id_flag := 'Y';
2051 EXIT;
2052 ELSE
2053 l_chk_id_flag := 'N';
2054 END IF;
2055 END IF;
2056 END LOOP;
2057
2058
2059 IF l_chk_id_flag = 'N' THEN
2060 get_products(l_clvl_filter,
2061 l_id,
2062 l_default,
2063 l_cust_id_list,
2064 l_party_id,
2065 l_org_id,
2066 l_organization_id,
2067 l_prod_tbl);
2068
2069 IF l_prod_tbl.COUNT > 0 THEN
2070
2071 x_prod_selections_tbl(rowcount).cp_id := l_get_all_sites_rec.id1;
2072
2073 --l_name := rpad(l_get_all_sites_rec.party_site_number || '-' || l_get_all_sites_rec.name, 30) || rpad(p_clvl_filter_rec.clvl_description, 40,' ');
2074
2075 --bug 5243637 (forward port for bug 5221204/2749830)
2076 l_name := rpad(l_get_all_sites_rec.party_site_number||'-'||l_get_all_sites_rec.name,30)
2077 ||' '||rpad(l_get_all_sites_rec.description,40,' ');
2078
2079 x_prod_selections_tbl(rowcount).name := l_name;
2080 x_prod_selections_tbl(rowcount).description := l_get_all_sites_rec.description;
2081 x_prod_selections_tbl(rowcount).rec_type := 'P';
2082 x_prod_selections_tbl(rowcount).rec_name := 'Site';
2083 x_prod_selections_tbl(rowcount).rec_no := rowcount;
2084 x_prod_selections_tbl(rowcount).cp_id2 := '';
2085 x_prod_selections_tbl(rowcount).ser_number := '';
2086 x_prod_selections_tbl(rowcount).ref_number := '' ;
2087 x_prod_selections_tbl(rowcount).quantity := '';
2088 x_prod_selections_tbl(rowcount).orig_net_amt := '';
2089 x_prod_selections_tbl(rowcount).price := '';
2090 x_prod_selections_tbl(rowcount).inventory_item_id := '';
2091 x_prod_selections_tbl(rowcount).site_id := '';
2092 x_prod_selections_tbl(rowcount).uom_code := '';
2093 x_prod_selections_tbl(rowcount).display_name := '';
2094 x_prod_selections_tbl(rowcount).site_name := '';
2095 -- BUG 4372877 --
2096 -- GCHADHA --
2097 -- 5/25/2005 --
2098 x_prod_selections_tbl(rowcount).ext_reference := '';
2099 -- END GCHADHA --
2100
2101
2102 rowcount := rowcount + 1;
2103
2104 populate_table (l_prod_tbl,
2105 l_clvl_filter,
2106 rowcount,
2107 l_display_pref,
2108 x_prod_selections_tbl);
2109
2110 -- BUG 4113113 --
2111 -- GCHADHA --
2112 rowcount := rowcount + 1;
2113 -- END GCHADHA --
2114 END IF;
2115 END IF;
2116 END LOOP;
2117 ELSIF l_clvl_id IS NOT NULL THEN
2118
2119 get_products(l_clvl_filter,
2120 l_clvl_id,
2121 l_default,
2122 l_cust_id_list,
2123 l_party_id,
2124 l_org_id,
2125 l_organization_id,
2126 l_prod_tbl);
2127
2128 IF l_prod_tbl.COUNT > 0 THEN
2129
2130 x_prod_selections_tbl(rowcount).cp_id := l_clvl_id;
2131 l_name := rpad(p_clvl_filter_rec.clvl_name, 30,' ') || rpad(p_clvl_filter_rec.clvl_description, 40,' ');
2132 x_prod_selections_tbl(rowcount).name := l_name;
2133 x_prod_selections_tbl(rowcount).description := p_clvl_filter_rec.clvl_description;
2134 x_prod_selections_tbl(rowcount).rec_type := 'P';
2135 x_prod_selections_tbl(rowcount).rec_name := 'Site';
2136 x_prod_selections_tbl(rowcount).rec_no := rowcount;
2137 x_prod_selections_tbl(rowcount).cp_id2 := '';
2138 x_prod_selections_tbl(rowcount).ser_number := '';
2139 x_prod_selections_tbl(rowcount).ref_number := '' ;
2140 x_prod_selections_tbl(rowcount).quantity := '';
2141 x_prod_selections_tbl(rowcount).orig_net_amt := '';
2142 x_prod_selections_tbl(rowcount).price := '';
2143 x_prod_selections_tbl(rowcount).inventory_item_id := '';
2144 x_prod_selections_tbl(rowcount).site_id := '';
2145 x_prod_selections_tbl(rowcount).uom_code := '';
2146 x_prod_selections_tbl(rowcount).display_name := '';
2147 x_prod_selections_tbl(rowcount).site_name := '';
2148 -- BUG 4372877 --
2149 -- GCHADHA --
2150 -- 5/25/2005 --
2151 x_prod_selections_tbl(rowcount).ext_reference := '';
2152 -- END GCHADHA --
2153
2154
2155 rowcount := rowcount + 1;
2156
2157 populate_table (l_prod_tbl,
2158 l_clvl_filter,
2159 rowcount,
2160 l_display_pref,
2161 x_prod_selections_tbl);
2162
2163
2164
2165 END IF;
2166
2167 END IF;
2168
2169 ELSIF l_clvl_filter = 'Customer' THEN
2170 IF l_clvl_id IS NULL THEN
2171 /* Select all Items for given party first */
2172 get_customer_id(p_default => l_default,
2173 p_party_id => l_party_id,
2174 p_org_id => l_org_id,
2175 x_cust_id_tbl => l_cust_id_tbl);
2176
2177 -- ----------------------errorout_an(' cust count '||l_cust_id_tbl.count);
2178
2179 FOR cust_count IN 1..l_cust_id_tbl.COUNT LOOP
2180
2181 l_id := l_cust_id_tbl(cust_count).customer_id;
2182 l_name := l_cust_id_tbl(cust_count).customer_name ;
2183
2184 -- ----------------------errorout_an(' before get products '||l_id);
2185
2186 get_products(l_clvl_filter,
2187 l_id,
2188 l_default,
2189 l_id,
2190 l_org_id,
2191 l_party_id,
2192 l_organization_id,
2193 l_prod_tbl);
2194
2195 -- ----------------------errorout_an(' after get products '||l_prod_tbl.count);
2196 IF l_prod_tbl.COUNT > 0 THEN
2197
2198 x_prod_selections_tbl(rowcount).cp_id := l_id;
2199 x_prod_selections_tbl(rowcount).name := l_name;
2200 -- x_prod_selections_tbl(rowcount).description := l_get_all_customer_rec.description;
2201 x_prod_selections_tbl(rowcount).rec_type := 'P';
2202 x_prod_selections_tbl(rowcount).rec_name := 'Customer';
2203 x_prod_selections_tbl(rowcount).rec_no := rowcount;
2204 x_prod_selections_tbl(rowcount).cp_id2 := '';
2205 x_prod_selections_tbl(rowcount).ser_number := '';
2206 x_prod_selections_tbl(rowcount).ref_number := '' ;
2207 x_prod_selections_tbl(rowcount).quantity := '';
2208 x_prod_selections_tbl(rowcount).orig_net_amt := '';
2209 x_prod_selections_tbl(rowcount).price := '';
2210 x_prod_selections_tbl(rowcount).inventory_item_id := '';
2211 x_prod_selections_tbl(rowcount).site_id := '';
2212 x_prod_selections_tbl(rowcount).uom_code := '';
2213 x_prod_selections_tbl(rowcount).display_name := '';
2214 x_prod_selections_tbl(rowcount).site_name := '';
2215 -- BUG 4372877 --
2216 -- GCHADHA --
2217 -- 5/25/2005 --
2218 x_prod_selections_tbl(rowcount).ext_reference := '';
2219 -- END GCHADHA --
2220
2221
2222 rowcount := rowcount + 1;
2223
2224 populate_table (l_prod_tbl,
2225 l_clvl_filter,
2226 rowcount,
2227 l_display_pref,
2228 x_prod_selections_tbl);
2229
2230 -- BUG 4113113 --
2231 -- GCHADHA --
2232 rowcount := rowcount + 1;
2233 -- END GCHADHA --
2234 END IF;
2235 END LOOP;
2236 ELSIF l_clvl_id IS NOT NULL THEN
2237
2238 get_products(l_clvl_filter,
2239 l_clvl_id,
2240 l_default,
2241 l_clvl_id,
2242 l_party_id,
2243 l_org_id,
2244 l_organization_id,
2245 l_prod_tbl);
2246
2247 IF l_prod_tbl.COUNT > 0 THEN
2248
2249 x_prod_selections_tbl(rowcount).cp_id := l_customer_id;
2250 x_prod_selections_tbl(rowcount).name := p_clvl_filter_rec.clvl_name;
2251 -- x_prod_selections_tbl(rowcount).description := p_clvl_filter_rec.clvl_description;
2252 x_prod_selections_tbl(rowcount).rec_type := 'P';
2253 x_prod_selections_tbl(rowcount).rec_name := 'Customer';
2254 x_prod_selections_tbl(rowcount).rec_no := rowcount;
2255 x_prod_selections_tbl(rowcount).cp_id2 := '';
2256 x_prod_selections_tbl(rowcount).ser_number := '';
2257 x_prod_selections_tbl(rowcount).ref_number := '' ;
2258 x_prod_selections_tbl(rowcount).quantity := '';
2259 x_prod_selections_tbl(rowcount).orig_net_amt := '';
2260 x_prod_selections_tbl(rowcount).price := '';
2261 x_prod_selections_tbl(rowcount).inventory_item_id := '';
2262 x_prod_selections_tbl(rowcount).site_id := '';
2263 x_prod_selections_tbl(rowcount).uom_code := '';
2264 x_prod_selections_tbl(rowcount).display_name := '';
2265 x_prod_selections_tbl(rowcount).site_name := '';
2266 -- BUG 4372877 --
2267 -- GCHADHA --
2268 -- 5/25/2005 --
2269 x_prod_selections_tbl(rowcount).ext_reference := '';
2270 -- END GCHADHA --
2271
2272
2273 rowcount := rowcount + 1;
2274
2275 populate_table (l_prod_tbl,
2276 l_clvl_filter,
2277 rowcount,
2278 l_display_pref,
2279 x_prod_selections_tbl);
2280
2281
2282
2283 END IF;
2284 END IF;
2285
2286 ELSIF l_clvl_filter = 'Model' THEN
2287
2288 get_model(l_organization_id,
2289 l_clvl_id,
2290 l_party_id,
2291 l_display_pref,
2292 l_default,
2293 l_org_id,
2294 x_prod_selections_tbl );
2295
2296
2297 END IF; /** l_clvl_filter in item/system/site/customer/model **/
2298
2299 ELSIF l_clvl_filter = 'Party' THEN
2300
2301 IF l_clvl_id IS NOT NULL OR l_default = 'CUSTOMER' THEN
2302 l_clvl_id := NVL(l_clvl_id, l_party_id);
2303
2304
2305 -- IF l_default = 'CUSTOMER' THEN
2306 get_party_id(p_default => l_default,
2307 p_party_id => l_clvl_id,
2308 p_org_id => l_org_id,
2309 x_party_id_tbl => l_party_id_tbl );
2310
2311 l_name := l_party_id_tbl(1).party_name;
2312
2313
2314 -- END IF;
2315
2316 get_products(l_clvl_filter,
2317 NULL,
2318 l_default,
2319 l_clvl_id,
2320 l_clvl_id,
2321 l_org_id,
2322 l_organization_id,
2323 l_prod_tbl);
2324
2325 IF l_prod_tbl.COUNT > 0 THEN
2326 x_prod_selections_tbl(rowcount).cp_id := l_party_id;
2327 x_prod_selections_tbl(rowcount).name := l_name;
2328 x_prod_selections_tbl(rowcount).description := l_name;
2329 x_prod_selections_tbl(rowcount).rec_type := 'P';
2330 x_prod_selections_tbl(rowcount).rec_name := 'Party';
2331 x_prod_selections_tbl(rowcount).rec_no := rowcount;
2332 x_prod_selections_tbl(rowcount).cp_id2 := '';
2333 x_prod_selections_tbl(rowcount).ser_number := '';
2334 x_prod_selections_tbl(rowcount).ref_number := '' ;
2335 x_prod_selections_tbl(rowcount).quantity := '';
2336 x_prod_selections_tbl(rowcount).price := '';
2337 x_prod_selections_tbl(rowcount).inventory_item_id := '';
2338 x_prod_selections_tbl(rowcount).site_id := '';
2339 x_prod_selections_tbl(rowcount).uom_code := '';
2340 x_prod_selections_tbl(rowcount).display_name := '';
2341 x_prod_selections_tbl(rowcount).site_name := '';
2342 -- BUG 4372877 --
2343 -- GCHADHA --
2344 -- 5/25/2005 --
2345 x_prod_selections_tbl(rowcount).ext_reference := '';
2346 -- END GCHADHA --
2347
2348
2349 rowcount := rowcount + 1;
2350
2351 populate_table (l_prod_tbl,
2352 l_clvl_filter,
2353 rowcount,
2354 l_display_pref,
2355 x_prod_selections_tbl);
2356
2357 END IF;
2358
2359 ELSIF l_clvl_id IS NULL THEN
2360 /* Select all Items for given party first */
2361
2362 get_party_id(p_default => l_default,
2363 p_party_id => l_party_id,
2364 p_org_id => l_org_id,
2365 x_party_id_tbl => l_party_id_tbl );
2366
2367 FOR i IN 1..l_party_id_tbl.COUNT LOOP
2368
2369 l_party_id := l_party_id_tbl(i).party_id;
2370
2371
2372 get_products(l_clvl_filter,
2373 NULL,
2374 l_default,
2375 l_clvl_id,
2376 l_party_id,
2377 l_org_id,
2378 l_organization_id,
2379 l_prod_tbl);
2380
2381
2382 IF l_prod_tbl.COUNT > 0 THEN
2383
2384 x_prod_selections_tbl(rowcount).cp_id := l_party_id_tbl(i).party_id;
2385 x_prod_selections_tbl(rowcount).name := l_party_id_tbl(i).party_name;
2386 x_prod_selections_tbl(rowcount).description := l_party_id_tbl(i).party_name;
2387 x_prod_selections_tbl(rowcount).rec_type := 'P';
2388 x_prod_selections_tbl(rowcount).rec_name := 'Party';
2389 x_prod_selections_tbl(rowcount).rec_no := rowcount;
2390 x_prod_selections_tbl(rowcount).cp_id2 := '';
2391 x_prod_selections_tbl(rowcount).ser_number := '';
2392 x_prod_selections_tbl(rowcount).ref_number := '' ;
2393 x_prod_selections_tbl(rowcount).quantity := '';
2394 x_prod_selections_tbl(rowcount).orig_net_amt := '';
2395 x_prod_selections_tbl(rowcount).price := '';
2396 x_prod_selections_tbl(rowcount).inventory_item_id := '';
2397 x_prod_selections_tbl(rowcount).site_id := '';
2398 x_prod_selections_tbl(rowcount).uom_code := '';
2399 x_prod_selections_tbl(rowcount).display_name := '';
2400 x_prod_selections_tbl(rowcount).site_name := '';
2401 -- BUG 4372877 --
2402 -- GCHADHA --
2403 -- 5/25/2005 --
2404 x_prod_selections_tbl(rowcount).ext_reference := '';
2405 -- END GCHADHA --
2406
2407
2408 rowcount := rowcount + 1;
2409
2410 populate_table (l_prod_tbl,
2411 l_clvl_filter,
2412 rowcount,
2413 l_display_pref,
2414 x_prod_selections_tbl);
2415 -- BUG 4113113 --
2416 -- GCHADHA --
2417 rowcount := rowcount + 1;
2418 -- END GCHADHA --
2419
2420 END IF; /* end if or prod tbl count > 0 */
2421 END LOOP; /* End loop of prod tbl loop */
2422
2423 END IF; /* Clvl Id is NULL */
2424
2425
2426 END IF; /** If l_clvl_filter <> 'Party' **/
2427
2428 END;
2429
2430 /******* PROC 2 ************/
2431
2432
2433
2434 /*******************************************/
2435
2436 PROCEDURE Get_customer_selections(p_clvl_filter_rec IN clvl_filter_rec,
2437 x_clvl_selections_tbl OUT NOCOPY clvl_selections_tbl)
2438 IS
2439
2440 CURSOR l_csr_get_customer(p_party_id IN NUMBER ) IS
2441 SELECT cust_acc.party_id party_id, parties.name party_name, parties.description description,
2442 cust_acc.id1 id1, cust_acc.name name, cust_acc.id2 id2, cust_acc.description account_number
2443 FROM OKX_CUSTOMER_ACCOUNTS_V cust_acc,
2444 OKX_PARTIES_V parties
2445 WHERE cust_acc.party_id = p_party_id
2446 AND cust_acc.party_id = parties.id1
2447 AND cust_acc.status = 'A';
2448
2449 CURSOR l_csr_get_party_name(p_party_id IN NUMBER) IS
2450 SELECT parties.id1 party_id, parties.name party_name
2451 FROM OKX_PARTIES_V parties
2452 WHERE parties.id1 = p_party_id ;
2453
2454 CURSOR l_csr_get_all_customers IS
2455 SELECT cust_acc.party_id party_id, parties.name party_name, parties.description description,
2456 cust_acc.id1 id1, cust_acc.name name, cust_acc.id2 id2, cust_acc.description account_number
2457 FROM OKX_CUSTOMER_ACCOUNTS_V cust_acc,
2458 OKX_PARTIES_V parties
2459 WHERE cust_acc.party_id = parties.id1
2460 AND cust_acc.status = 'A';
2461
2462 l_csr_cust_rec l_csr_get_customer%ROWTYPE;
2463 l_csr_party_rec l_csr_get_party_name%ROWTYPE;
2464
2465 l_default VARCHAR2(15);
2466 l_party_id OKX_PARTIES_V.id1%TYPE;
2467 i NUMBER ;
2468 rowcount NUMBER := 1;
2469 l_org_id NUMBER ;
2470 l_customer_id NUMBER ;
2471 l_cust_id_tbl cust_id_tbl;
2472 l_party_id_tbl party_id_tbl;
2473
2474 l_old_party_Id NUMBER := - 99;
2475 l_party_selected OKX_PARTIES_V.ID1%TYPE;
2476 BEGIN
2477 l_default := p_clvl_filter_rec.clvl_default;
2478 l_party_id := p_clvl_filter_rec.clvl_party_id;
2479 l_org_id := p_clvl_filter_rec.clvl_auth_org_id;
2480 l_party_selected := p_clvl_filter_rec.clvl_find_id;
2481
2482 l_party_id := NVL(l_party_selected, l_party_id);
2483
2484 IF l_party_selected IS NOT NULL THEN
2485 OPEN l_csr_get_party_name(l_party_selected);
2486 FETCH l_csr_get_party_name INTO l_csr_party_rec;
2487 CLOSE l_csr_get_party_name;
2488
2489 /*** Set parent records ***/
2490
2491 x_clvl_selections_tbl(rowcount).rec_type := 'P';
2492 x_clvl_selections_tbl(rowcount).rec_name := 'Customer';
2493 x_clvl_selections_tbl(rowcount).rec_no := rowcount;
2494 x_clvl_selections_tbl(rowcount).id1 := l_csr_party_rec.party_id;
2495 x_clvl_selections_tbl(rowcount).name := l_csr_party_rec.party_name;
2496 x_clvl_selections_tbl(rowcount).lse_id := 35;
2497 x_clvl_selections_tbl(rowcount).lse_name := 'Customer';
2498
2499 rowcount := rowcount + 1;
2500
2501 FOR l_cust_csr_rec IN l_csr_get_customer(l_party_selected) LOOP
2502
2503 x_clvl_selections_tbl(rowcount).rec_type := 'C';
2504 x_clvl_selections_tbl(rowcount).rec_name := 'Customer';
2505 x_clvl_selections_tbl(rowcount).rec_no := rowcount;
2506 x_clvl_selections_tbl(rowcount).id1 := l_cust_csr_rec.id1;
2507 x_clvl_selections_tbl(rowcount).id2 := l_cust_csr_rec.id2;
2508 x_clvl_selections_tbl(rowcount).name := l_cust_csr_rec.name;
2509 x_clvl_selections_tbl(rowcount).clvl_id := l_cust_csr_rec.id1;
2510 x_clvl_selections_tbl(rowcount).clvl_name := l_cust_csr_rec.name;
2511 x_clvl_selections_tbl(rowcount).display_name := l_cust_csr_rec.name || ',' || l_cust_csr_rec.account_number;
2512 x_clvl_selections_tbl(rowcount).party_id := l_cust_csr_rec.party_id;
2513 x_clvl_selections_tbl(rowcount).party_name := l_cust_csr_rec.party_name;
2514 x_clvl_selections_tbl(rowcount).description := l_cust_csr_Rec.description;
2515 x_clvl_selections_tbl(rowcount).lse_id := 35;
2516 x_clvl_selections_tbl(rowcount).lse_name := 'Customer';
2517 rowcount := rowcount + 1;
2518 END LOOP;
2519
2520 ELSE
2521 IF l_default <> 'ALL' THEN
2522
2523 get_party_id(p_default => l_default,
2524 p_party_id => l_party_id,
2525 p_org_id => l_org_id,
2526 x_party_id_tbl => l_party_id_tbl);
2527
2528 FOR i IN 1 .. l_party_id_tbl.COUNT LOOP
2529 l_party_selected := l_party_id_tbl(i).party_id;
2530
2531 FOR l_cust_csr_rec IN l_csr_get_customer(l_party_selected) LOOP
2532 l_party_id := l_cust_csr_rec.party_id;
2533 IF l_old_party_id <> l_party_id THEN
2534 x_clvl_selections_tbl(rowcount).rec_type := 'P';
2535 x_clvl_selections_tbl(rowcount).rec_name := 'Customer';
2536 x_clvl_selections_tbl(rowcount).rec_no := rowcount;
2537 x_clvl_selections_tbl(rowcount).id1 := l_cust_csr_rec.party_id;
2538 x_clvl_selections_tbl(rowcount).name := l_cust_csr_rec.party_name;
2539 x_clvl_selections_tbl(rowcount).lse_id := 35;
2540 x_clvl_selections_tbl(rowcount).lse_name := 'Customer';
2541
2542 l_old_party_id := l_party_id;
2543
2544 rowcount := rowcount + 1;
2545 /* Set parent record */
2546 END IF;
2547
2548 x_clvl_selections_tbl(rowcount).rec_type := 'C';
2549 x_clvl_selections_tbl(rowcount).rec_name := 'Customer';
2550 x_clvl_selections_tbl(rowcount).rec_no := rowcount;
2551 x_clvl_selections_tbl(rowcount).id1 := l_cust_csr_rec.id1;
2552 x_clvl_selections_tbl(rowcount).id2 := l_cust_csr_rec.id2;
2553 x_clvl_selections_tbl(rowcount).name := l_cust_csr_rec.name;
2554 x_clvl_selections_tbl(rowcount).clvl_id := l_cust_csr_rec.id1;
2555 x_clvl_selections_tbl(rowcount).clvl_name := l_cust_csr_rec.name;
2556 x_clvl_selections_tbl(rowcount).display_name := l_cust_csr_rec.name || ',' || l_cust_csr_rec.account_number;
2557 x_clvl_selections_tbl(rowcount).party_id := l_cust_csr_rec.party_id;
2558 x_clvl_selections_tbl(rowcount).party_name := l_cust_csr_rec.party_name;
2559 x_clvl_selections_tbl(rowcount).description := l_cust_csr_Rec.description;
2560 x_clvl_selections_tbl(rowcount).lse_id := 35;
2561 x_clvl_selections_tbl(rowcount).lse_name := 'Customer';
2562 rowcount := rowcount + 1;
2563 END LOOP;
2564
2565 END LOOP; /* end of customer id loop */
2566
2567 ELSIF l_default = 'ALL' THEN
2568 FOR l_cust_csr_rec IN l_csr_get_all_customers LOOP
2569
2570 l_party_id := l_cust_csr_rec.party_id;
2571
2572 IF l_old_party_id <> l_party_id THEN
2573
2574 x_clvl_selections_tbl(rowcount).rec_type := 'P';
2575 x_clvl_selections_tbl(rowcount).rec_name := 'Customer';
2576 x_clvl_selections_tbl(rowcount).rec_no := rowcount;
2577 x_clvl_selections_tbl(rowcount).id1 := l_cust_csr_rec.party_id;
2578 x_clvl_selections_tbl(rowcount).name := l_cust_csr_rec.party_name;
2579 x_clvl_selections_tbl(rowcount).lse_id := 35;
2580 x_clvl_selections_tbl(rowcount).lse_name := 'Customer';
2581
2582 l_old_party_id := l_party_id;
2583 rowcount := rowcount + 1;
2584 /* Set parent record */
2585 END IF;
2586
2587 x_clvl_selections_tbl(rowcount).rec_type := 'C';
2588 x_clvl_selections_tbl(rowcount).rec_name := 'Customer';
2589 x_clvl_selections_tbl(rowcount).rec_no := rowcount;
2590 x_clvl_selections_tbl(rowcount).clvl_id := l_cust_csr_rec.id1;
2591 x_clvl_selections_tbl(rowcount).id2 := l_cust_csr_rec.id2;
2592 x_clvl_selections_tbl(rowcount).clvl_name := l_cust_csr_rec.name;
2593 x_clvl_selections_tbl(rowcount).display_name := l_cust_csr_rec.name || ',' || l_cust_csr_rec.account_number;
2594 x_clvl_selections_tbl(rowcount).party_id := l_cust_csr_rec.party_id;
2595 x_clvl_selections_tbl(rowcount).party_name := l_cust_csr_rec.party_name;
2596 x_clvl_selections_tbl(rowcount).description := l_cust_csr_Rec.account_number;
2597 x_clvl_selections_tbl(rowcount).lse_id := 35;
2598 x_clvl_selections_tbl(rowcount).lse_name := 'Customer';
2599 rowcount := rowcount + 1;
2600 END LOOP;
2601 END IF; /* L_default id <> 'ALL' */
2602 END IF;
2603
2604 END get_customer_selections;
2605
2606
2607
2608 /*******************************************/
2609
2610
2611 PROCEDURE Get_party_selections(p_clvl_filter_rec IN clvl_filter_rec,
2612 x_clvl_selections_tbl OUT NOCOPY clvl_selections_tbl)
2613 IS
2614
2615 CURSOR l_csr_party_customer(p_party_id IN NUMBER ) IS
2616 SELECT id1, id2, Name, Description
2617 FROM OKX_PARTIES_V
2618 WHERE id1 = p_party_id
2619 AND status = 'A';
2620
2621 CURSOR l_csr_party_related(p_party_id IN NUMBER,
2622 p_org_id IN NUMBER) IS
2623 SELECT P1.id1, P1.id2, P1.name, P1.description
2624 FROM OKX_PARTIES_V P1, OKX_CUSTOMER_ACCOUNTS_V CA1
2625 WHERE P1.id1 = CA1.party_id
2626 AND CA1.id1 IN (SELECT rel_acc.cust_account_id
2627 FROM OKX_CUSTOMER_ACCOUNTS_V cust_acc,
2628 OKX_CUST_ACCT_RELATE_ALL_V rel_acc
2629 WHERE rel_acc.related_cust_account_id = cust_acc.id1
2630 AND cust_acc.party_id = p_party_id
2631 AND cust_acc.status = 'A'
2632 AND rel_acc.org_id = p_org_id
2633 AND rel_acc.status = 'A')
2634 AND P1.status = 'A'
2635 AND CA1.status = 'A';
2636
2637 CURSOR l_csr_party_both(p_party_id IN NUMBER,
2638 p_org_id IN NUMBER ) IS
2639 SELECT id1, id2, Name, Description
2640 FROM OKX_PARTIES_V
2641 WHERE id1 = p_party_id
2642 AND status = 'A'
2643 UNION
2644 SELECT P1.id1, P1.id2, P1.name, P1.description
2645 FROM OKX_PARTIES_V P1, OKX_CUSTOMER_ACCOUNTS_V CA1
2646 WHERE P1.id1 = CA1.party_id
2647 AND CA1.id1 IN (SELECT rel_acc.cust_account_id
2648 FROM OKX_CUSTOMER_ACCOUNTS_V cust_acc,
2649 OKX_CUST_ACCT_RELATE_ALL_V rel_acc
2650 WHERE rel_acc.related_cust_account_id = cust_acc.id1
2651 AND cust_acc.party_id = p_party_id
2652 AND cust_acc.status = 'A'
2653 AND rel_acc.org_id = p_org_id
2654 AND rel_acc.status = 'A')
2655 AND P1.status = 'A'
2656 AND CA1.status = 'A';
2657
2658 CURSOR l_csr_party_all IS
2659 SELECT id1, id2, Name, Description
2660 FROM OKX_PARTIES_V
2661 WHERE status = 'A';
2662
2663 l_csr_party_rec l_csr_party_customer%ROWTYPE;
2664
2665 l_default VARCHAR2(15);
2666 l_party_id OKX_PARTIES_V.id1%TYPE;
2667 i NUMBER ;
2668 rowcount NUMBER := 1;
2669 l_org_id NUMBER ;
2670 l_party_selected NUMBER;
2671
2672 BEGIN
2673 l_default := p_clvl_filter_rec.clvl_default;
2674 l_party_id := p_clvl_filter_rec.clvl_party_id;
2675 l_org_id := p_clvl_filter_rec.clvl_auth_org_id;
2676 l_party_selected := p_clvl_filter_rec.clvl_find_id;
2677
2678
2679 IF l_default = 'CUSTOMER' OR l_party_selected IS NOT NULL THEN
2680 IF l_party_selected IS NOT NULL THEN
2681 l_party_id := l_party_selected ;
2682 END IF;
2683
2684 FOR l_csr_party_rec_c IN l_csr_party_customer(l_party_id) LOOP
2685 x_clvl_selections_tbl(rowcount).rec_type := 'C';
2686 x_clvl_selections_tbl(rowcount).rec_no := rowcount;
2687 x_clvl_selections_tbl(rowcount).rec_name := 'Party';
2688 x_clvl_selections_tbl(rowcount).clvl_id := l_csr_party_rec_c.id1;
2689 x_clvl_selections_tbl(rowcount).clvl_name := l_csr_party_rec_c.name;
2690 x_clvl_selections_tbl(rowcount).id2 := l_csr_party_rec_c.id2;
2691 x_clvl_selections_tbl(rowcount).name := l_csr_party_rec_c.name;
2692 x_clvl_selections_tbl(rowcount).display_name := l_csr_party_rec_c.name || ',' || l_csr_party_Rec_c.description;
2693 x_clvl_selections_tbl(rowcount).party_id := l_csr_party_rec_c.id1;
2694 x_clvl_selections_tbl(rowcount).party_name := l_csr_party_rec_c.name;
2695 x_clvl_selections_tbl(rowcount).description := l_csr_party_Rec_c.description;
2696 x_clvl_selections_tbl(rowcount).lse_id := 8;
2697 x_clvl_selections_tbl(rowcount).lse_name := 'Party' ;
2698 rowcount := rowcount + 1;
2699 END LOOP;
2700 ELSIF l_default = 'ALL' THEN
2701 FOR l_csr_party_rec_a IN l_csr_party_all LOOP
2702 l_party_id := l_csr_party_rec_a.id1 ;
2703 FOR l_csr_party_rec IN l_Csr_party_customer(l_party_id) LOOP
2704 x_clvl_selections_tbl(rowcount).rec_type := 'C';
2705 x_clvl_selections_tbl(rowcount).rec_no := rowcount;
2706 x_clvl_selections_tbl(rowcount).rec_name := 'Party';
2707 x_clvl_selections_tbl(rowcount).id1 := l_csr_party_rec.id1;
2708 x_clvl_selections_tbl(rowcount).id2 := l_csr_party_rec.id2;
2709 x_clvl_selections_tbl(rowcount).name := l_csr_party_rec.name;
2710 x_clvl_selections_tbl(rowcount).display_name := l_csr_party_rec.name || ',' || l_csr_party_Rec.description;
2711 x_clvl_selections_tbl(rowcount).clvl_id := l_csr_party_rec.id1;
2712 x_clvl_selections_tbl(rowcount).clvl_name := l_csr_party_rec.name;
2713 x_clvl_selections_tbl(rowcount).party_id := l_csr_party_rec.id1;
2714 x_clvl_selections_tbl(rowcount).party_name := l_csr_party_rec.name;
2715 x_clvl_selections_tbl(rowcount).description := l_csr_party_Rec.description;
2716 x_clvl_selections_tbl(rowcount).lse_id := 8;
2717 x_clvl_selections_tbl(rowcount).lse_name := 'Party' ;
2718 rowcount := rowcount + 1;
2719 END LOOP;
2720 END LOOP;
2721 ELSIF l_default = 'RELATED' THEN
2722 FOR l_csr_party_rec_r IN l_Csr_party_related(l_party_id, l_org_id ) LOOP
2723 x_clvl_selections_tbl(rowcount).rec_type := 'C';
2724 x_clvl_selections_tbl(rowcount).rec_no := rowcount;
2725 x_clvl_selections_tbl(rowcount).rec_name := 'Party';
2726 x_clvl_selections_tbl(rowcount).id1 := l_csr_party_rec_r.id1;
2727 x_clvl_selections_tbl(rowcount).id2 := l_csr_party_rec_r.id2;
2728 x_clvl_selections_tbl(rowcount).name := l_csr_party_rec_r.name;
2729 x_clvl_selections_tbl(rowcount).clvl_id := l_csr_party_rec_r.id1;
2730 x_clvl_selections_tbl(rowcount).clvl_name := l_csr_party_rec_r.name;
2731 x_clvl_selections_tbl(rowcount).display_name := l_csr_party_rec_r.name || ',' || l_csr_party_Rec.description;
2732 x_clvl_selections_tbl(rowcount).party_id := l_csr_party_rec_r.id1;
2733 x_clvl_selections_tbl(rowcount).party_name := l_csr_party_rec_r.name;
2734 x_clvl_selections_tbl(rowcount).description := l_csr_party_Rec_r.description;
2735 x_clvl_selections_tbl(rowcount).lse_id := 8;
2736 x_clvl_selections_tbl(rowcount).lse_name := 'Party' ;
2737 rowcount := rowcount + 1;
2738 END LOOP;
2739 ELSIF l_default = 'BOTH' THEN
2740 FOR l_csr_party_rec_b IN l_Csr_party_both(l_party_id, l_org_id ) LOOP
2741 x_clvl_selections_tbl(rowcount).rec_type := 'C';
2742 x_clvl_selections_tbl(rowcount).rec_no := rowcount;
2743 x_clvl_selections_tbl(rowcount).rec_name := 'Party';
2744 x_clvl_selections_tbl(rowcount).id1 := l_csr_party_rec_b.id1;
2745 x_clvl_selections_tbl(rowcount).id2 := l_csr_party_rec_b.id2;
2746 x_clvl_selections_tbl(rowcount).name := l_csr_party_rec_b.name;
2747 x_clvl_selections_tbl(rowcount).clvl_id := l_csr_party_rec_b.id1;
2748 x_clvl_selections_tbl(rowcount).id2 := l_csr_party_rec_b.id2;
2749 x_clvl_selections_tbl(rowcount).clvl_name := l_csr_party_rec_b.name;
2750 x_clvl_selections_tbl(rowcount).display_name := l_csr_party_rec_b.name || ',' || l_csr_party_Rec.description;
2751 x_clvl_selections_tbl(rowcount).party_id := l_csr_party_rec_b.id1;
2752 x_clvl_selections_tbl(rowcount).party_name := l_csr_party_rec_b.name;
2753 x_clvl_selections_tbl(rowcount).description := l_csr_party_Rec_b.description;
2754 x_clvl_selections_tbl(rowcount).lse_id := 8;
2755 x_clvl_selections_tbl(rowcount).lse_name := 'Party' ;
2756 rowcount := rowcount + 1;
2757 END LOOP;
2758 END IF;
2759
2760 END get_party_selections;
2761
2762 PROCEDURE Get_site_selections(p_clvl_filter_rec IN clvl_filter_rec,
2763 x_clvl_selections_tbl OUT NOCOPY clvl_selections_tbl)
2764 IS
2765
2766 CURSOR l_csr_get_site(p_party_id IN NUMBER ) IS
2767 SELECT DISTINCT parties.name party_name, parties.id1 party_id,
2768 party_site.id1 id1, party_site.party_site_number, party_site.id2,
2769 party_site.name party_site_name, party_site.description
2770 FROM OKX_PARTIES_V parties,
2771 OKX_PARTY_SITES_V party_site
2772 WHERE parties.id1 = p_party_id
2773 AND party_site.party_id = parties.id1
2774 AND party_site.status = 'A'
2775 ORDER BY parties.name ;
2776
2777 CURSOR l_csr_get_all_sites IS
2778 SELECT DISTINCT parties.name party_name, parties.id1 party_id,
2779 party_site.id1 id1, party_site.party_site_number, party_site.id2,
2780 party_site.name party_site_name, party_site.description
2781 FROM OKX_PARTIES_V parties,
2782 OKX_PARTY_SITES_V party_site
2783 WHERE party_site.party_id = parties.id1
2784 AND party_site.status = 'A'
2785 ORDER BY parties.name ;
2786
2787 -- Bug 4915711--
2788 -- l_csr_cust_rec l_csr_get_site%ROWTYPE;
2789 -- Bug 4915711--
2790
2791 l_default VARCHAR2(15);
2792 l_party_id OKX_PARTIES_V.id1%TYPE;
2793 l_old_party_id NUMBER := - 99;
2794 i NUMBER ;
2795 rowcount NUMBER := 1;
2796 l_org_id NUMBER ;
2797 l_cust_id_tbl cust_id_tbl;
2798 l_party_id_tbl party_id_tbl;
2799 l_party_selected VARCHAR2(15);
2800
2801 l_old_customer_id NUMBER := - 99 ;
2802 l_customer_id NUMBER ;
2803 -- BUG 4915711 --
2804 TYPE get_all_sites_rec IS RECORD (
2805 party_name OKX_PARTIES_V.NAME%TYPE,
2806 party_Id1 OKX_PARTIES_V.ID1%TYPE,
2807 party_sites_Id1 OKX_PARTY_SITES_V.ID1%TYPE,
2808 Party_Sites_Number OKX_PARTY_SITES_V.party_site_number%TYPE,
2809 party_sites_Id2 OKX_PARTY_SITES_V.ID2%TYPE,
2810 party_sites_name OKX_PARTY_SITES_V.NAME%TYPE,
2811 party_desc VARCHAR2(2000)
2812 );
2813
2814 l_get_all_sites_rec get_all_sites_rec;
2815 -- BUG 4915711 --
2816
2817 BEGIN
2818 l_default := p_clvl_filter_rec.clvl_default;
2819 l_party_id := p_clvl_filter_rec.clvl_party_id;
2820 l_org_id := p_clvl_filter_rec.clvl_auth_org_id;
2821
2822 IF p_clvl_filter_rec.clvl_find_id IS NOT NULL THEN
2823 l_party_id := p_clvl_filter_rec.clvl_find_id;
2824 ELSE
2825 IF l_default = 'CUSTOMER' THEN
2826 l_party_selected := l_party_Id;
2827 END IF ;
2828 END IF;
2829
2830
2831 IF p_clvl_filter_rec.clvl_find_id IS NOT NULL THEN /* If default = CUSTOMER, or find id has a value then select covered sites only for given party id */
2832 -- BUG 4915711 --
2833 -- FOR l_site_csr_rec IN l_csr_get_site(l_party_id) LOOP
2834 OPEN l_csr_get_site(l_party_id);
2835 LOOP
2836 FETCH l_csr_get_site INTO l_get_all_sites_rec;
2837 IF l_csr_get_site%NOTFOUND THEN
2838 CLOSE l_csr_get_site;
2839 EXIT;
2840 END IF;
2841 IF rowcount = 1 THEN
2842 x_clvl_selections_tbl(rowcount).rec_type := 'P';
2843 x_clvl_selections_tbl(rowcount).rec_name := 'Site';
2844 x_clvl_selections_tbl(rowcount).rec_no := rowcount;
2845 -- x_clvl_selections_tbl(rowcount).id1 := l_site_csr_rec.party_id; -- Bug 4915711
2846 -- x_clvl_selections_tbl(rowcount).name := l_site_csr_rec.party_name; -- Bug 4915711
2847 x_clvl_selections_tbl(rowcount).id1 := l_get_all_sites_rec.party_id1;
2848 x_clvl_selections_tbl(rowcount).name := l_get_all_sites_rec.party_name;
2849 x_clvl_selections_tbl(rowcount).lse_id := 10;
2850 x_clvl_selections_tbl(rowcount).lse_name := 'Site';
2851 rowcount := rowcount + 1;
2852 /* Set parent record */
2853 END IF;
2854
2855 x_clvl_selections_tbl(rowcount).rec_type := 'C';
2856 x_clvl_selections_tbl(rowcount).rec_name := 'Site';
2857 x_clvl_selections_tbl(rowcount).rec_no := rowcount;
2858
2859 x_clvl_selections_tbl(rowcount).id1 := l_get_all_sites_rec.party_sites_id1;
2860 x_clvl_selections_tbl(rowcount).id2 := l_get_all_sites_rec.party_sites_id2;
2861 x_clvl_selections_tbl(rowcount).name := l_get_all_sites_rec.party_sites_number || '-' || l_get_all_sites_rec.party_sites_name;
2862 x_clvl_selections_tbl(rowcount).display_name := l_get_all_sites_rec.party_sites_number || '-' || l_get_all_sites_rec.party_sites_name ||' '|| l_get_all_sites_rec.party_desc;
2863 x_clvl_selections_tbl(rowcount).clvl_id := l_get_all_sites_rec.party_sites_id1;
2864 x_clvl_selections_tbl(rowcount).clvl_name := l_get_all_sites_rec.party_sites_number || '-' || l_get_all_sites_rec.party_sites_name;
2865 x_clvl_selections_tbl(rowcount).description := l_get_all_sites_rec.party_desc;
2866
2867 x_clvl_selections_tbl(rowcount).lse_id := 10;
2868
2869 x_clvl_selections_tbl(rowcount).lse_name := 'Site';
2870
2871 rowcount := rowcount + 1;
2872
2873 END LOOP;
2874 -- Bug 4915711--
2875 ELSE /* if find id is NULL */
2876
2877 IF l_default <> 'ALL' THEN /* if default is BOTH or RELATED */
2878
2879 get_party_id(p_default => l_default,
2880 p_party_id => l_party_id,
2881 p_org_id => l_org_id,
2882 x_party_id_tbl => l_party_id_tbl);
2883
2884 FOR i IN 1 .. l_party_id_tbl.COUNT LOOP
2885
2886 l_party_id := l_party_id_tbl(i).party_id;
2887 -- Bug 4915711--
2888 -- FOR l_site_csr_rec IN l_csr_get_site(l_party_Id) LOOP
2889 OPEN l_csr_get_site(l_party_id);
2890 LOOP
2891 FETCH l_csr_get_site INTO l_get_all_sites_rec;
2892 IF l_csr_get_site%NOTFOUND THEN
2893 CLOSE l_csr_get_site;
2894 EXIT;
2895 END IF;
2896 -- l_party_id := l_site_csr_rec.party_id;
2897 l_party_id := l_get_all_sites_rec.party_id1;
2898 IF l_old_party_id <> l_party_id THEN
2899 x_clvl_selections_tbl(rowcount).rec_type := 'P';
2900 x_clvl_selections_tbl(rowcount).rec_name := 'Site';
2901 x_clvl_selections_tbl(rowcount).rec_no := rowcount;
2902 --x_clvl_selections_tbl(rowcount).id1 := l_site_csr_rec.party_id;
2903 -- x_clvl_selections_tbl(rowcount).name := l_site_csr_rec.party_name;
2904 x_clvl_selections_tbl(rowcount).id1 := l_get_all_sites_rec.party_id1;
2905 x_clvl_selections_tbl(rowcount).name := l_get_all_sites_rec.party_name;
2906
2907 x_clvl_selections_tbl(rowcount).lse_id := 10;
2908 x_clvl_selections_tbl(rowcount).lse_name := 'Site';
2909
2910 l_old_party_id := l_party_id;
2911 rowcount := rowcount + 1;
2912 /* Set parent record */
2913 END IF;
2914
2915 x_clvl_selections_tbl(rowcount).rec_type := 'C';
2916 x_clvl_selections_tbl(rowcount).rec_name := 'Site';
2917 x_clvl_selections_tbl(rowcount).rec_no := rowcount;
2918
2919 x_clvl_selections_tbl(rowcount).id1 := l_get_all_sites_rec.party_sites_id1;
2920 x_clvl_selections_tbl(rowcount).id2 := l_get_all_sites_rec.party_sites_id2;
2921 x_clvl_selections_tbl(rowcount).name := l_get_all_sites_rec.party_sites_number || '-' || l_get_all_sites_rec.party_sites_name;
2922 x_clvl_selections_tbl(rowcount).display_name := l_get_all_sites_rec.party_sites_number || '-' || l_get_all_sites_rec.party_sites_name ||' '|| l_get_all_sites_rec.party_desc;
2923 x_clvl_selections_tbl(rowcount).clvl_id := l_get_all_sites_rec.party_sites_id1;
2924 x_clvl_selections_tbl(rowcount).clvl_name := l_get_all_sites_rec.party_sites_number || '-' || l_get_all_sites_rec.party_sites_name;
2925 x_clvl_selections_tbl(rowcount).description := l_get_all_sites_rec.party_desc;
2926
2927 x_clvl_selections_tbl(rowcount).lse_id := 10;
2928 x_clvl_selections_tbl(rowcount).lse_name := 'Site';
2929
2930 rowcount := rowcount + 1;
2931
2932 END LOOP;
2933 -- Bug 4915711 --
2934 END LOOP;
2935
2936
2937 ELSIF l_default = 'ALL' THEN
2938 -- Bug 4915711 --
2939 -- FOR l_site_csr_rec IN l_csr_get_all_sites LOOP
2940 OPEN l_csr_get_all_sites;
2941 LOOP
2942 FETCH l_csr_get_all_sites INTO l_get_all_sites_rec;
2943 IF l_csr_get_all_sites%NOTFOUND THEN
2944 CLOSE l_csr_get_all_sites;
2945 EXIT;
2946 END IF;
2947 -- l_party_id := l_site_csr_rec.party_id;
2948 l_party_id := l_get_all_sites_rec.party_id1;
2949
2950 IF l_old_party_id <> l_party_id THEN
2951
2952 x_clvl_selections_tbl(rowcount).rec_type := 'P';
2953 x_clvl_selections_tbl(rowcount).rec_name := 'Site';
2954 x_clvl_selections_tbl(rowcount).rec_no := rowcount;
2955 /*
2956 x_clvl_selections_tbl(rowcount).id1 := l_site_csr_rec.party_id;
2957 x_clvl_selections_tbl(rowcount).name := l_site_csr_rec.party_name;
2958 */
2959 x_clvl_selections_tbl(rowcount).id1 := l_get_all_sites_rec.party_id1;
2960 x_clvl_selections_tbl(rowcount).name := l_get_all_sites_rec.party_name;
2961
2962 x_clvl_selections_tbl(rowcount).lse_id := 10;
2963 x_clvl_selections_tbl(rowcount).lse_name := 'Site';
2964 -- l_old_site_id := l_site_id;
2965 l_old_party_id := l_party_id;
2966 rowcount := rowcount + 1;
2967 /* Set parent record */
2968 END IF;
2969
2970 x_clvl_selections_tbl(rowcount).rec_type := 'C';
2971 x_clvl_selections_tbl(rowcount).rec_name := 'Site';
2972 x_clvl_selections_tbl(rowcount).rec_no := rowcount;
2973
2974 x_clvl_selections_tbl(rowcount).clvl_id := l_get_all_sites_rec.party_sites_id1;
2975 x_clvl_selections_tbl(rowcount).id2 := l_get_all_sites_rec.party_sites_id2;
2976 x_clvl_selections_tbl(rowcount).clvl_name := l_get_all_sites_rec.party_sites_number || '-' || l_get_all_sites_rec.party_sites_name;
2977 x_clvl_selections_tbl(rowcount).display_name := l_get_all_sites_rec.party_sites_number || '-' || l_get_all_sites_rec.party_sites_name ||' '|| l_get_all_sites_rec.party_desc;
2978 x_clvl_selections_tbl(rowcount).id1 := l_get_all_sites_rec.party_sites_id1;
2979 x_clvl_selections_tbl(rowcount).name := l_get_all_sites_rec.party_sites_number || '-' || l_get_all_sites_rec.party_sites_name;
2980 x_clvl_selections_tbl(rowcount).description := l_get_all_sites_rec.party_desc;
2981
2982 x_clvl_selections_tbl(rowcount).lse_id := 10;
2983 x_clvl_selections_tbl(rowcount).lse_name := 'Site';
2984
2985 rowcount := rowcount + 1;
2986
2987 END LOOP;
2988 -- Bug 4915711--
2989 END IF; /** end of default = ALL **/
2990 END IF; /** Find id is not null **/
2991 END get_site_selections;
2992
2993 PROCEDURE Get_system_selections(p_clvl_filter_rec IN clvl_filter_rec,
2994 x_clvl_selections_tbl OUT NOCOPY clvl_selections_tbl)
2995 IS
2996
2997 -- BUG 4171350 --
2998 -- Added check for Language used for Session
2999
3000 /** Covered Systems by customer */
3001 CURSOR l_csr_get_cust_system(p_customer_id IN NUMBER ) IS
3002 SELECT cust_acc.id1, cust_acc.name,
3003 CSB.system_id, '#' id2, CSB.system_number,
3004 CST.description, CST.name system_name
3005 FROM CSI_SYSTEMS_B CSB, CSI_SYSTEMS_TL CST, OKX_CUSTOMER_ACCOUNTS_V cust_acc
3006 WHERE cust_acc.id1 = p_customer_id
3007 AND CSB.system_id = CST.system_id
3008 AND CSB.Customer_id = cust_acc.id1
3009 AND CST.language = userenv('lang') -- new
3010 AND SYSDATE BETWEEN NVL(CSB.start_date_active, SYSDATE) AND NVL(CSB.end_date_active, SYSDATE)
3011
3012 ORDER BY cust_acc.id1, CSB.system_id;
3013
3014
3015 CURSOR l_csr_get_all_cust_system IS
3016 SELECT cust_acc.id1, cust_acc.name,
3017 CSB.system_id, '#' id2, CSB.system_number,
3018 CST.description, CST.name system_name
3019 FROM CSI_SYSTEMS_B CSB, CSI_SYSTEMS_TL CST, OKX_CUSTOMER_ACCOUNTS_V cust_acc
3020 WHERE CSB.system_id = CST.system_id
3021 AND CSB.Customer_id = cust_acc.id1
3022 AND SYSDATE BETWEEN NVL(CSB.start_date_active, SYSDATE) AND NVL(CSB.end_date_active, SYSDATE)
3023 AND CST.language = userenv('lang') -- new
3024 ORDER BY cust_acc.id1, CSB.system_id;
3025
3026
3027 /** Covered System by party */
3028 CURSOR l_csr_get_party_system(p_party_id IN VARCHAR2) IS
3029 SELECT parties.id1, parties.name, CSB.system_id, parties.id2 id2,
3030 CST.name system_name, CST.description, CSB.system_number
3031 FROM CSI_SYSTEMS_B CSB,
3032 CSI_SYSTEMS_TL CST,
3033 OKX_PARTIES_V parties,
3034 OKX_CUSTOMER_ACCOUNTS_V cust_acc
3035 WHERE parties.id1 = p_party_id
3036 AND cust_acc.party_id = parties.id1
3037 AND CSB.system_id = CST.system_id
3038 AND CSB.customer_id = cust_acc.id1
3039 AND CST.language = userenv('lang') -- new
3040 AND SYSDATE BETWEEN NVL(CSB.start_date_active, SYSDATE) AND NVL(CSB.end_date_active, SYSDATE);
3041
3042
3043 CURSOR l_csr_get_all_party_systems IS
3044 SELECT parties.id1, parties.name, CSB.system_id, parties.id2 id2,
3045 CST.name system_name, CST.description,
3046 CSB.system_number
3047 FROM CSI_SYSTEMS_B CSB,
3048 CSI_SYSTEMS_TL CST,
3049 OKX_PARTIES_V parties,
3050 OKX_CUSTOMER_ACCOUNTS_V cust_acc
3051 WHERE cust_acc.party_id = parties.id1
3052 AND CSB.system_id = CST.system_id
3053 AND CSB.customer_id = cust_acc.id1
3054 AND CST.language = userenv('lang') -- new
3055 AND SYSDATE BETWEEN NVL(CSB.start_date_active, SYSDATE) AND NVL(CSB.end_date_active, SYSDATE);
3056
3057
3058 /** Covered System by Site **/
3059 CURSOR l_csr_get_site_system(p_party_site_id IN NUMBER) IS
3060 SELECT party_site.id1, party_site.party_site_number || '-' || party_site.name party_site_name, CSB.system_id,
3061 '#', CST.name system_name, CST.description,
3062 CSB.system_number, party_site.id2 id2
3063 FROM CSI_SYSTEMS_B CSB, CSI_SYSTEMS_TL CST, OKX_PARTY_SITES_V party_site
3064 WHERE party_site.id1 = p_party_site_id
3065 AND CSB.system_id = CST.system_id
3066 AND SYSDATE BETWEEN NVL(CSB.start_date_active, SYSDATE) AND NVL(CSB.end_date_active, SYSDATE)
3067 AND CSB.install_site_use_id = party_site.id1
3068 AND CST.language = userenv('lang') -- new
3069 ORDER BY party_site.id1, CSB.system_id;
3070
3071 CURSOR l_csr_site_system_by_party(p_party_id IN NUMBER) IS
3072 SELECT party_site.id1, party_site.party_site_number || '-' || party_site.name party_site_name, CSB.system_id,
3073 '#', CST.name system_name, CST.description,
3074 CSB.system_number, party_site.id2 id2
3075 FROM CSI_SYSTEMS_B CSB, CSI_SYSTEMS_TL CST, OKX_PARTY_SITES_V party_site
3076 WHERE party_site.party_id = p_party_id
3077 AND CSB.system_id = CST.system_id
3078 AND SYSDATE BETWEEN NVL(CSB.start_date_active, SYSDATE) AND NVL(CSB.end_date_active, SYSDATE)
3079 AND CSB.install_site_use_id = party_site.id1
3080 AND CST.language = userenv('lang') -- new
3081 ORDER BY party_site.id1, CSB.system_id;
3082
3083 CURSOR l_csr_get_all_site_systems IS
3084 SELECT party_site.id1, party_site.party_site_number || '-' || party_site.name party_site_name,
3085 CSB.system_id, party_site.id2 id2, CST.name system_name, CST.description,
3086 CSB.system_number
3087 FROM CSI_SYSTEMS_B CSB, CSI_SYSTEMS_TL CST, OKX_PARTY_SITES_V party_site
3088 WHERE CSB.system_id = CST.system_id
3089 AND SYSDATE BETWEEN NVL(CSB.start_date_active, SYSDATE) AND NVL(CSB.end_date_active, SYSDATE)
3090 AND CSB.install_site_use_id = party_site.id1
3091 AND CST.language = userenv('lang') -- new
3092 ORDER BY party_site.id1, CSB.system_id;
3093
3094 l_csr_system_rec l_csr_get_cust_system%ROWTYPE;
3095
3096 l_default VARCHAR2(15);
3097 l_party_id NUMBER(15);
3098 l_customer_id OKX_CUSTOMER_ACCOUNTS_V.id1%TYPE;
3099 i NUMBER ;
3100 rowcount NUMBER := 1;
3101 l_org_id NUMBER ;
3102 l_party_id_tbl party_id_tbl;
3103 l_filter VARCHAR2(15);
3104 l_old_customer_id NUMBER := - 99;
3105 l_old_party_id NUMBER := - 99;
3106 l_party_site_id NUMBER;
3107 l_cust_id_tbl cust_id_tbl;
3108 l_party_selected NUMBER;
3109 l_old_party_site_id NUMBER := - 99;
3110
3111
3112 BEGIN
3113 l_default := p_clvl_filter_rec.clvl_default;
3114 l_party_id := p_clvl_filter_rec.clvl_party_id;
3115 l_org_id := p_clvl_filter_rec.clvl_auth_org_id;
3116 l_filter := p_clvl_filter_rec.clvl_filter;
3117
3118 IF l_filter = 'Customer' THEN
3119 IF p_clvl_filter_rec.clvl_find_id IS NOT NULL THEN
3120 l_customer_id := p_clvl_filter_rec.clvl_find_id;
3121 END IF;
3122 -- ----------------errorout(' l customer id '||l_customer_id);
3123 IF p_clvl_filter_rec.clvl_find_id IS NOT NULL THEN
3124
3125 -- ----------------errorout(' l customer id is NOT NULL ');
3126 FOR l_system_csr_rec IN l_csr_get_cust_system(l_customer_Id) LOOP
3127 -- ----------------errorout(' in loop customer id is '||l_customer_id);
3128 IF rowcount = 1 THEN
3129 ----------------errorout(' systems selected ');
3130 x_clvl_selections_tbl(rowcount).rec_type := 'P';
3131 x_clvl_selections_tbl(rowcount).rec_name := 'System';
3132 x_clvl_selections_tbl(rowcount).rec_no := rowcount;
3133 x_clvl_selections_tbl(rowcount).id1 := l_system_csr_rec.id1 /** Customer id */ ;
3134 x_clvl_selections_tbl(rowcount).name := l_system_csr_rec.name /* customer name */ ;
3135 x_clvl_selections_tbl(rowcount).lse_id := 11;
3136 x_clvl_selections_tbl(rowcount).lse_name := 'System';
3137
3138 rowcount := rowcount + 1;
3139
3140 /* Set parent record */
3141
3142 END IF;
3143
3144 x_clvl_selections_tbl(rowcount).rec_type := 'C';
3145 x_clvl_selections_tbl(rowcount).rec_name := 'System';
3146 x_clvl_selections_tbl(rowcount).rec_no := rowcount;
3147 x_clvl_selections_tbl(rowcount).id2 := l_system_csr_rec.id2;
3148 x_clvl_selections_tbl(rowcount).id1 := l_system_csr_rec.id1;
3149 x_clvl_selections_tbl(rowcount).clvl_id := l_system_csr_rec.system_id;
3150 x_clvl_selections_tbl(rowcount).clvl_name := l_system_csr_rec.system_name;
3151 x_clvl_selections_tbl(rowcount).display_name := l_system_csr_rec.system_name ||' , '|| l_system_csr_rec.description ||' , '|| l_system_csr_rec.system_number;
3152 x_clvl_selections_tbl(rowcount).id1 := l_system_csr_rec.id1; /** customer id **/
3153 x_clvl_selections_tbl(rowcount).name := l_system_csr_rec.name; /** customer name **/
3154 x_clvl_selections_tbl(rowcount).description := l_system_csr_Rec.description;
3155 x_clvl_selections_tbl(rowcount).lse_id := 11;
3156 x_clvl_selections_tbl(rowcount).lse_name := 'System';
3157
3158 rowcount := rowcount + 1;
3159
3160 END LOOP;
3161
3162 ELSE /* Customer id is NULL */
3163 -- ----------------errorout(' l customer id IS NULL ');
3164 IF l_default <> 'ALL' THEN
3165 -- ----------------errorout(' default is not ALL ');
3166 get_customer_id(p_default => l_default,
3167 p_party_id => l_party_id, /* clvl_rec.party_id */
3168 p_org_id => l_org_id,
3169 x_cust_id_tbl => l_cust_id_tbl);
3170
3171 FOR i IN 1 .. l_cust_id_tbl.COUNT LOOP
3172
3173 l_customer_id := l_cust_id_tbl(i).customer_id;
3174 -- ----------------errorout(' in loop customer id is '||l_customer_id);
3175 FOR l_system_csr_rec IN l_csr_get_cust_system(l_customer_Id) LOOP
3176
3177 -- ----------------errorout(' systems selected ');
3178 IF l_old_customer_id <> l_customer_id THEN
3179 -- ----------------errorout(' customer parent id is '||l_customer_id);
3180 x_clvl_selections_tbl(rowcount).rec_type := 'P';
3181 x_clvl_selections_tbl(rowcount).rec_name := 'System';
3182 x_clvl_selections_tbl(rowcount).rec_no := rowcount;
3183 x_clvl_selections_tbl(rowcount).id1 := l_system_csr_rec.id1;
3184 x_clvl_selections_tbl(rowcount).name := l_system_csr_rec.name;
3185 x_clvl_selections_tbl(rowcount).lse_id := 11;
3186 x_clvl_selections_tbl(rowcount).lse_name := 'System';
3187
3188 rowcount := rowcount + 1;
3189 l_old_customer_id := l_customer_id;
3190
3191 /* Set parent record */
3192
3193 END IF;
3194
3195 x_clvl_selections_tbl(rowcount).rec_type := 'C';
3196 x_clvl_selections_tbl(rowcount).rec_name := 'System';
3197 x_clvl_selections_tbl(rowcount).rec_no := rowcount;
3198 x_clvl_selections_tbl(rowcount).id2 := l_system_csr_rec.id2;
3199 x_clvl_selections_tbl(rowcount).id1 := l_system_csr_rec.id1;
3200 x_clvl_selections_tbl(rowcount).clvl_id := l_system_csr_rec.system_id;
3201 x_clvl_selections_tbl(rowcount).clvl_name := l_system_csr_rec.system_name;
3202 x_clvl_selections_tbl(rowcount).display_name := l_system_csr_rec.system_name ||' , '|| l_system_csr_rec.description ||' , '|| l_system_csr_rec.system_number;
3203 x_clvl_selections_tbl(rowcount).party_id := l_system_csr_rec.id1; /** customer id **/
3204 x_clvl_selections_tbl(rowcount).party_name := l_system_csr_rec.name; /** customer name **/
3205 x_clvl_selections_tbl(rowcount).description := l_system_csr_Rec.description;
3206 x_clvl_selections_tbl(rowcount).lse_id := 11;
3207 x_clvl_selections_tbl(rowcount).lse_name := 'System';
3208
3209 rowcount := rowcount + 1;
3210
3211 END LOOP; /* Select systems for given customer id */
3212 END LOOP; /* Select customer id */
3213
3214 ELSE /** Default is ALL **/
3215
3216 FOR l_system_csr_rec IN l_csr_get_all_cust_system LOOP
3217
3218 l_customer_id := l_system_csr_rec.id1;
3219 IF l_old_customer_id <> l_customer_id THEN
3220 x_clvl_selections_tbl(rowcount).rec_type := 'P';
3221 x_clvl_selections_tbl(rowcount).rec_name := 'System';
3222 x_clvl_selections_tbl(rowcount).rec_no := rowcount;
3223 x_clvl_selections_tbl(rowcount).id1 := l_system_csr_rec.id1;
3224 x_clvl_selections_tbl(rowcount).name := l_system_csr_rec.name;
3225 x_clvl_selections_tbl(rowcount).lse_id := 11;
3226 x_clvl_selections_tbl(rowcount).lse_name := 'System';
3227
3228 l_old_customer_id := l_customer_id ;
3229 rowcount := rowcount + 1;
3230
3231 /* Set parent record */
3232
3233 END IF;
3234
3235 x_clvl_selections_tbl(rowcount).rec_type := 'C';
3236 x_clvl_selections_tbl(rowcount).rec_name := 'System';
3237 x_clvl_selections_tbl(rowcount).rec_no := rowcount;
3238 x_clvl_selections_tbl(rowcount).id2 := l_system_csr_rec.id2;
3239 x_clvl_selections_tbl(rowcount).id1 := l_system_csr_rec.id1;
3240 x_clvl_selections_tbl(rowcount).clvl_id := l_system_csr_rec.system_id;
3241 x_clvl_selections_tbl(rowcount).clvl_name := l_system_csr_rec.system_name;
3242 x_clvl_selections_tbl(rowcount).display_name := l_system_csr_rec.system_name ||' , '|| l_system_csr_rec.description ||' , '|| l_system_csr_rec.system_number;
3243 x_clvl_selections_tbl(rowcount).id1 := l_system_csr_rec.id1; /** customer id **/
3244 x_clvl_selections_tbl(rowcount).name := l_system_csr_rec.name; /** customer name **/
3245 x_clvl_selections_tbl(rowcount).description := l_system_csr_Rec.description;
3246 x_clvl_selections_tbl(rowcount).lse_id := 11;
3247 x_clvl_selections_tbl(rowcount).lse_name := 'System';
3248
3249 rowcount := rowcount + 1;
3250
3251 END LOOP; /** Select systems for all customers **/
3252 END IF; /** Default <> 'ALL' **/
3253
3254 END IF; /** customer id is not null **/
3255
3256 ELSIF l_filter = 'Site' THEN
3257
3258 IF p_clvl_filter_rec.clvl_find_id IS NOT NULL THEN
3259 l_party_site_id := p_clvl_filter_rec.clvl_find_id;
3260 END IF;
3261
3262 -- ----------------errorout(' party site id is '||l_party_site_id);
3263 IF l_party_site_id IS NOT NULL THEN
3264 FOR l_system_csr_rec IN l_csr_get_site_system(l_party_site_Id) LOOP
3265 IF l_old_party_site_id <> l_system_csr_rec.id1 THEN
3266 x_clvl_selections_tbl(rowcount).rec_type := 'P';
3267 x_clvl_selections_tbl(rowcount).rec_name := 'System';
3268 x_clvl_selections_tbl(rowcount).rec_no := rowcount;
3269 x_clvl_selections_tbl(rowcount).id1 := l_system_csr_rec.id1;
3270
3271 x_clvl_selections_tbl(rowcount).name := l_system_csr_rec.party_site_name;
3272 x_clvl_selections_tbl(rowcount).party_id := l_system_csr_rec.id1;
3273 x_clvl_selections_tbl(rowcount).party_name := l_system_csr_rec.party_site_name;
3274 x_clvl_selections_tbl(rowcount).lse_id := 11;
3275 x_clvl_selections_tbl(rowcount).lse_name := 'System';
3276 rowcount := rowcount + 1;
3277
3278 l_old_party_site_id := l_system_csr_rec.id1;
3279 /* Set parent record */
3280
3281 END IF;
3282
3283 x_clvl_selections_tbl(rowcount).rec_type := 'C';
3284 x_clvl_selections_tbl(rowcount).rec_name := 'System';
3285 x_clvl_selections_tbl(rowcount).rec_no := rowcount;
3286 x_clvl_selections_tbl(rowcount).id2 := l_system_csr_rec.id2;
3287 x_clvl_selections_tbl(rowcount).clvl_id := l_system_csr_rec.system_id;
3288 x_clvl_selections_tbl(rowcount).clvl_name := l_system_csr_rec.system_name;
3289 x_clvl_selections_tbl(rowcount).display_name := l_system_csr_rec.system_name ||' , '|| l_system_csr_rec.description ||' , '|| l_system_csr_rec.system_number;
3290 x_clvl_selections_tbl(rowcount).party_id := l_system_csr_rec.id1; /** party id **/
3291 x_clvl_selections_tbl(rowcount).id1 := l_system_csr_rec.id1;
3292 x_clvl_selections_tbl(rowcount).party_name := l_system_csr_rec.party_site_name; /** party name **/
3293 x_clvl_selections_tbl(rowcount).description := l_system_csr_Rec.description;
3294 x_clvl_selections_tbl(rowcount).lse_id := 11;
3295 x_clvl_selections_tbl(rowcount).lse_name := 'System';
3296
3297
3298 rowcount := rowcount + 1;
3299
3300 END LOOP;
3301
3302 ELSE /* party site id is NULL */
3303 IF l_default IN ('CUSTOMER', 'RELATED', 'BOTH') THEN
3304 get_party_id(p_default => l_default,
3305 p_party_id => l_party_id,
3306 p_org_id => l_org_id,
3307 x_party_id_tbl => l_party_id_tbl);
3308
3309 FOR i IN 1 .. l_party_id_tbl.COUNT LOOP
3310 l_party_id := l_party_id_tbl(i).party_id;
3311
3312 FOR l_system_csr_rec IN l_csr_site_system_by_party(l_party_Id) LOOP
3313
3314 IF l_old_party_site_id <> l_system_csr_rec.id1 THEN
3315 /* Build parent record */
3316 x_clvl_selections_tbl(rowcount).rec_type := 'P';
3317 x_clvl_selections_tbl(rowcount).rec_name := 'System';
3318 x_clvl_selections_tbl(rowcount).rec_no := rowcount;
3319 x_clvl_selections_tbl(rowcount).id1 := l_system_csr_rec.id1;
3320 x_clvl_selections_tbl(rowcount).name := l_system_csr_rec.party_site_name;
3321 x_clvl_selections_tbl(rowcount).party_id := l_system_csr_rec.id1;
3322
3323 x_clvl_selections_tbl(rowcount).party_name := l_system_csr_rec.party_site_name;
3324 x_clvl_selections_tbl(rowcount).lse_id := 11;
3325 x_clvl_selections_tbl(rowcount).lse_name := 'System';
3326
3327 l_old_party_site_id := l_system_csr_rec.id1;
3328
3329 rowcount := rowcount + 1;
3330
3331 /* Set parent record */
3332
3333 END IF;
3334
3335 x_clvl_selections_tbl(rowcount).rec_type := 'C';
3336 x_clvl_selections_tbl(rowcount).rec_name := 'System';
3337 x_clvl_selections_tbl(rowcount).rec_no := rowcount;
3338 x_clvl_selections_tbl(rowcount).clvl_id := l_system_csr_rec.system_id;
3339 x_clvl_selections_tbl(rowcount).clvl_name := l_system_csr_rec.system_name;
3340 x_clvl_selections_tbl(rowcount).display_name := l_system_csr_rec.system_name ||' , '|| l_system_csr_rec.description ||' , '|| l_system_csr_rec.system_number;
3341 x_clvl_selections_tbl(rowcount).party_id := l_system_csr_rec.id1; /** party id **/
3342 x_clvl_selections_tbl(rowcount).id2 := l_system_csr_rec.id2;
3343 x_clvl_selections_tbl(rowcount).id1 := l_system_csr_rec.id1;
3344 x_clvl_selections_tbl(rowcount).party_name := l_system_csr_rec.party_site_name; /** party name **/
3345 x_clvl_selections_tbl(rowcount).description := l_system_csr_Rec.description;
3346 x_clvl_selections_tbl(rowcount).lse_id := 11;
3347 x_clvl_selections_tbl(rowcount).lse_name := 'System';
3348
3349 rowcount := rowcount + 1;
3350
3351 END LOOP; /* Select systems for given customer id */
3352 END LOOP; /* Select customer id */
3353
3354 ELSIF l_default = 'ALL' THEN
3355
3356 FOR l_system_csr_rec IN l_csr_get_all_site_systems LOOP
3357 l_party_id := l_system_csr_rec.id1;
3358 IF l_old_party_id <> l_party_id THEN
3359 x_clvl_selections_tbl(rowcount).rec_type := 'P';
3360 x_clvl_selections_tbl(rowcount).rec_name := 'System';
3361 x_clvl_selections_tbl(rowcount).rec_no := rowcount;
3362 x_clvl_selections_tbl(rowcount).party_id := l_system_csr_rec.id1;
3363 x_clvl_selections_tbl(rowcount).party_name := l_system_csr_rec.party_site_name;
3364 x_clvl_selections_tbl(rowcount).id1 := l_system_csr_rec.id1;
3365 x_clvl_selections_tbl(rowcount).name := l_system_csr_rec.party_site_name;
3366 x_clvl_selections_tbl(rowcount).lse_id := 11;
3367 x_clvl_selections_tbl(rowcount).lse_name := 'System';
3368
3369 l_old_party_id := l_party_id ;
3370 rowcount := rowcount + 1;
3371
3372 /* Set parent record */
3373
3374 END IF;
3375
3376 x_clvl_selections_tbl(rowcount).rec_type := 'C';
3377 x_clvl_selections_tbl(rowcount).rec_name := 'System';
3378 x_clvl_selections_tbl(rowcount).rec_no := rowcount;
3379 x_clvl_selections_tbl(rowcount).clvl_id := l_system_csr_rec.system_id;
3380 x_clvl_selections_tbl(rowcount).clvl_name := l_system_csr_rec.system_name;
3381 x_clvl_selections_tbl(rowcount).display_name := l_system_csr_rec.system_name ||' , '|| l_system_csr_rec.description ||' , '|| l_system_csr_rec.system_number;
3382 x_clvl_selections_tbl(rowcount).party_id := l_system_csr_rec.id1; /** party id **/
3383 x_clvl_selections_tbl(rowcount).id2 := l_system_csr_rec.id2;
3384 x_clvl_selections_tbl(rowcount).id1 := l_system_csr_rec.id1;
3385 x_clvl_selections_tbl(rowcount).party_name := l_system_csr_rec.party_site_name; /** party name **/
3386 x_clvl_selections_tbl(rowcount).description := l_system_csr_Rec.description;
3387 x_clvl_selections_tbl(rowcount).lse_id := 11;
3388 x_clvl_selections_tbl(rowcount).lse_name := 'System';
3389
3390 rowcount := rowcount + 1;
3391
3392 END LOOP; /** Select systems for all customers **/
3393 END IF ; /** Default <> 'ALL' **/
3394
3395 END IF; /** customer id is not null **/
3396
3397 ELSIF l_filter = 'Party' THEN
3398
3399 IF l_default = 'CUSTOMER' THEN
3400 l_party_selected := l_party_id;
3401 ELSE
3402 l_party_selected := p_clvl_filter_rec.clvl_find_id;
3403 END IF;
3404 -- ----------------errorout(' party selected is '||l_party_selected);
3405 IF l_party_selected IS NOT NULL THEN
3406
3407 FOR l_system_csr_rec IN l_csr_get_party_system(l_party_selected) LOOP
3408 IF rowcount = 1 THEN
3409 x_clvl_selections_tbl(rowcount).rec_type := 'P';
3410 x_clvl_selections_tbl(rowcount).rec_name := 'System';
3411 x_clvl_selections_tbl(rowcount).rec_no := rowcount;
3412 x_clvl_selections_tbl(rowcount).id1 := l_system_csr_rec.id1;
3413 x_clvl_selections_tbl(rowcount).id2 := l_system_csr_rec.id2;
3414 x_clvl_selections_tbl(rowcount).name := l_system_csr_rec.name;
3415 x_clvl_selections_tbl(rowcount).party_id := l_system_csr_rec.id1;
3416 x_clvl_selections_tbl(rowcount).party_name := l_system_csr_rec.name;
3417 x_clvl_selections_tbl(rowcount).lse_id := 11;
3418 x_clvl_selections_tbl(rowcount).lse_name := 'System';
3419 rowcount := rowcount + 1;
3420
3421 /* Set parent record */
3422
3423 END IF;
3424
3425 x_clvl_selections_tbl(rowcount).rec_type := 'C';
3426 x_clvl_selections_tbl(rowcount).rec_name := 'System';
3427 x_clvl_selections_tbl(rowcount).rec_no := rowcount;
3428 x_clvl_selections_tbl(rowcount).id2 := l_system_csr_rec.id2;
3429 x_clvl_selections_tbl(rowcount).id1 := l_system_csr_rec.id1;
3430 x_clvl_selections_tbl(rowcount).clvl_id := l_system_csr_rec.system_id;
3431 x_clvl_selections_tbl(rowcount).clvl_name := l_system_csr_rec.system_name;
3432 x_clvl_selections_tbl(rowcount).display_name := l_system_csr_rec.system_name ||' , '|| l_system_csr_rec.description ||' , '|| l_system_csr_rec.system_number;
3433 x_clvl_selections_tbl(rowcount).party_id := l_system_csr_rec.id1; /** party id **/
3434 x_clvl_selections_tbl(rowcount).party_name := l_system_csr_rec.name; /** party name **/
3435 x_clvl_selections_tbl(rowcount).description := l_system_csr_Rec.description;
3436 x_clvl_selections_tbl(rowcount).lse_id := 11;
3437 x_clvl_selections_tbl(rowcount).lse_name := 'System';
3438
3439 -- ----------------errorout(' child record is '||x_clvl_selections_tbl(rowcount).clvl_name);
3440 rowcount := rowcount + 1;
3441 END LOOP;
3442
3443 ELSE /* party id is NULL */
3444 IF l_default IN ('RELATED', 'BOTH') THEN
3445 get_party_id(p_default => l_default,
3446 p_party_id => l_party_id,
3447 p_org_id => l_org_id,
3448 x_party_id_tbl => l_party_id_tbl);
3449
3450
3451 FOR i IN 1 .. l_party_id_tbl.COUNT LOOP
3452 l_party_selected := l_party_id_tbl(i).party_id;
3453 -- ----------------errorout(' party selected is '||l_party_selected);
3454 -- ----------------errorout(' party id is ' ||l_party_selected);
3455 FOR l_system_csr_rec IN l_csr_get_party_system(l_party_selected) LOOP
3456
3457 IF rowcount = 1 THEN
3458 x_clvl_selections_tbl(rowcount).rec_type := 'P';
3459 x_clvl_selections_tbl(rowcount).rec_name := 'System';
3460 x_clvl_selections_tbl(rowcount).rec_no := rowcount;
3461 x_clvl_selections_tbl(rowcount).id1 := l_system_csr_rec.id1;
3462 x_clvl_selections_tbl(rowcount).name := l_system_csr_rec.name;
3463 x_clvl_selections_tbl(rowcount).party_id := l_system_csr_rec.id1;
3464 x_clvl_selections_tbl(rowcount).party_name := l_system_csr_rec.name;
3465 x_clvl_selections_tbl(rowcount).lse_id := 11;
3466 x_clvl_selections_tbl(rowcount).lse_name := 'System';
3467 -- ----------------errorout(' after setting parent record ');
3468 -- ----------------errorout(' parent record is '||x_clvl_selections_tbl(rowcount).party_name);
3469 rowcount := rowcount + 1;
3470
3471 /* Set parent record */
3472
3473 END IF;
3474
3475 x_clvl_selections_tbl(rowcount).rec_type := 'C';
3476 x_clvl_selections_tbl(rowcount).rec_name := 'System';
3477 x_clvl_selections_tbl(rowcount).rec_no := rowcount;
3478 x_clvl_selections_tbl(rowcount).id2 := l_system_csr_rec.id2;
3479 x_clvl_selections_tbl(rowcount).id1 := l_system_csr_rec.id1;
3480 x_clvl_selections_tbl(rowcount).clvl_id := l_system_csr_rec.system_id;
3481 x_clvl_selections_tbl(rowcount).clvl_name := l_system_csr_rec.system_name;
3482 x_clvl_selections_tbl(rowcount).display_name := l_system_csr_rec.system_name ||' , '|| l_system_csr_rec.description ||' , '|| l_system_csr_rec.system_number;
3483 x_clvl_selections_tbl(rowcount).party_id := l_system_csr_rec.id1;
3484 x_clvl_selections_tbl(rowcount).party_name := l_system_csr_rec.name; /** party name **/
3485 x_clvl_selections_tbl(rowcount).description := l_system_csr_Rec.description;
3486 x_clvl_selections_tbl(rowcount).lse_id := 11;
3487 x_clvl_selections_tbl(rowcount).lse_name := 'System';
3488 -- ----------------errorout(' in child rec '||x_clvl_selections_tbl(rowcount).party_name);
3489 rowcount := rowcount + 1;
3490
3491 END LOOP; /* Select systems for given customer id */
3492 END LOOP; /* Select customer id */
3493
3494 ELSIF l_default = 'ALL' THEN
3495
3496 FOR l_system_csr_rec IN l_csr_get_all_party_systems LOOP
3497 l_party_id := l_system_csr_rec.id1;
3498 IF l_old_party_id <> l_party_id THEN
3499 x_clvl_selections_tbl(rowcount).rec_type := 'P';
3500 x_clvl_selections_tbl(rowcount).rec_name := 'System';
3501 x_clvl_selections_tbl(rowcount).rec_no := rowcount;
3502 x_clvl_selections_tbl(rowcount).id1 := l_system_csr_rec.id1;
3503 x_clvl_selections_tbl(rowcount).id2 := l_system_csr_rec.id2;
3504 x_clvl_selections_tbl(rowcount).name := l_system_csr_rec.name;
3505 x_clvl_selections_tbl(rowcount).party_id := l_system_csr_rec.id1;
3506 x_clvl_selections_tbl(rowcount).party_name := l_system_csr_rec.name;
3507 x_clvl_selections_tbl(rowcount).lse_id := 11;
3508 x_clvl_selections_tbl(rowcount).lse_name := 'System';
3509
3510 l_old_party_id := l_party_id ;
3511 -- ----------------errorout(' parent record is '||x_clvl_selections_tbl(rowcount).id1);
3512 rowcount := rowcount + 1;
3513
3514 /* Set parent record */
3515
3516 END IF;
3517
3518 x_clvl_selections_tbl(rowcount).rec_type := 'C';
3519 x_clvl_selections_tbl(rowcount).rec_name := 'System';
3520 x_clvl_selections_tbl(rowcount).rec_no := rowcount;
3521 x_clvl_selections_tbl(rowcount).id2 := l_system_csr_rec.id2;
3522 x_clvl_selections_tbl(rowcount).id1 := l_system_csr_rec.id1;
3523 x_clvl_selections_tbl(rowcount).clvl_id := l_system_csr_rec.system_id;
3524 x_clvl_selections_tbl(rowcount).clvl_name := l_system_csr_rec.system_name;
3525 x_clvl_selections_tbl(rowcount).display_name := l_system_csr_rec.system_name ||' , '|| l_system_csr_rec.description ||' , '|| l_system_csr_rec.system_number;
3526 x_clvl_selections_tbl(rowcount).party_id := l_system_csr_rec.id1; /** party id **/
3527 x_clvl_selections_tbl(rowcount).party_name := l_system_csr_rec.name; /** party name **/
3528 x_clvl_selections_tbl(rowcount).description := l_system_csr_Rec.description;
3529 x_clvl_selections_tbl(rowcount).lse_id := 11;
3530 x_clvl_selections_tbl(rowcount).lse_name := 'System';
3531
3532 rowcount := rowcount + 1;
3533
3534 END LOOP; /** Select systems for all customers **/
3535 END IF ; /** Default <> 'ALL' **/
3536
3537 END IF; /** customer id is not null **/
3538
3539 END IF;
3540 END get_system_selections;
3541
3542 PROCEDURE GetSelections_Prod(p_api_version IN NUMBER
3543 , p_init_msg_list IN VARCHAR2
3544 , p_clvl_filter_rec IN clvl_filter_rec
3545 , x_return_status OUT NOCOPY VARCHAR2
3546 , x_msg_count OUT NOCOPY NUMBER
3547 , x_msg_data OUT NOCOPY VARCHAR2
3548 , x_prod_selections_tbl OUT NOCOPY prod_selections_tbl)
3549 IS
3550 lf_prod_selections_tbl prod_selections_tbl;
3551 rowcount NUMBER := 1;
3552 BEGIN
3553
3554 ------errorout(' before get_product selections ');
3555 get_product_selection(p_clvl_filter_rec,
3556 lf_prod_selections_tbl);
3557
3558 FOR rowcount IN 1 .. lf_prod_selections_tbl.COUNT LOOP
3559
3560 x_prod_selections_tbl(rowcount).rec_type := lf_prod_selections_tbl(rowcount).rec_type;
3561 ------errorout(rowcount||' '||x_prod_selections_tbl(rowcount).rec_type);
3562 x_prod_selections_tbl(rowcount).rec_name := 'Item';
3563 ------errorout(rowcount||' '||x_prod_selections_tbl(rowcount).rec_name);
3564 x_prod_selections_tbl(rowcount).rec_no := rowcount;
3565 ------errorout(rowcount||' '||x_prod_selections_tbl(rowcount).rec_no);
3566 x_prod_selections_tbl(rowcount).cp_id := lf_prod_selections_tbl(rowcount).cp_id;
3567 ------errorout(rowcount||' '||x_prod_selections_tbl(rowcount).cp_id);
3568 x_prod_selections_tbl(rowcount).cp_id2 := lf_prod_selections_tbl(rowcount).cp_id2;
3569 ------errorout(rowcount||' '||x_prod_selections_tbl(rowcount).cp_id2);
3570 x_prod_selections_tbl(rowcount).ser_number := lf_prod_selections_tbl(rowcount).ser_number;
3571 ------errorout(rowcount||' '||x_prod_selections_tbl(rowcount).ser_number);
3572 x_prod_selections_tbl(rowcount).ref_number := lf_prod_selections_tbl(rowcount).ref_number ;
3573 ------errorout(rowcount||' '||x_prod_selections_tbl(rowcount).ref_number);
3574 x_prod_selections_tbl(rowcount).quantity := lf_prod_selections_tbl(rowcount).quantity;
3575 ------errorout(rowcount||' '||x_prod_selections_tbl(rowcount).quantity);
3576 x_prod_selections_tbl(rowcount).orig_net_amt := lf_prod_selections_tbl(rowcount).orig_net_amt;
3577 ------errorout(rowcount||' '||x_prod_selections_tbl(rowcount).orig_net_amt);
3578 x_prod_selections_tbl(rowcount).price := lf_prod_selections_tbl(rowcount).price;
3579 ------errorout(rowcount||' '||x_prod_selections_tbl(rowcount).price);
3580 x_prod_selections_tbl(rowcount).inventory_item_id := lf_prod_selections_tbl(rowcount).inventory_item_id;
3581 ------errorout(rowcount||' '||x_prod_selections_tbl(rowcount).inventory_item_id);
3582 x_prod_selections_tbl(rowcount).site_id := lf_prod_selections_tbl(rowcount).site_id;
3583 ------errorout(rowcount||' '||x_prod_selections_tbl(rowcount).site_id);
3584 x_prod_selections_tbl(rowcount).uom_code := lf_prod_selections_tbl(rowcount).uom_code;
3585 ------errorout(rowcount||' '||x_prod_selections_tbl(rowcount).uom_code);
3586 x_prod_selections_tbl(rowcount).name := lf_prod_selections_tbl(rowcount).name;
3587 ------errorout(rowcount||' '||x_prod_selections_tbl(rowcount).name);
3588 x_prod_selections_tbl(rowcount).display_name := lf_prod_selections_tbl(rowcount).display_name;
3589 ------errorout(rowcount||' '||x_prod_selections_tbl(rowcount).display_name);
3590 x_prod_selections_tbl(rowcount).description := lf_prod_selections_tbl(rowcount).description;
3591 ------errorout(rowcount||' '||x_prod_selections_tbl(rowcount).description);
3592 x_prod_selections_tbl(rowcount).model_level := lf_prod_selections_tbl(rowcount).model_level;
3593 x_prod_selections_tbl(rowcount).site_name := lf_prod_selections_tbl(rowcount).site_name;
3594 x_prod_selections_tbl(rowcount).model_level := lf_prod_selections_tbl(rowcount).model_level;
3595 ------errorout(rowcount||' '||x_prod_selections_tbl(rowcount).site_name);
3596 -- GCHADHA --
3597 -- BUG 4372877 ---
3598 -- 5/25/2005 --
3599 x_prod_selections_tbl(rowcount).ext_reference := lf_prod_selections_tbl(rowcount).ext_reference;
3600 ------errorout(rowcount||' '||x_prod_selections_tbl(rowcount).ext_reference);
3601 -- END GCHADHA --
3602
3603
3604
3605 END LOOP;
3606
3607 x_return_status := 'S';
3608 ------errorout(' out of getselections Product PVT ');
3609 END GetSelections_Prod;
3610
3611
3612 PROCEDURE GetSelections_other(p_api_version IN NUMBER
3613 , p_init_msg_list IN VARCHAR2
3614 , p_clvl_filter_rec IN clvl_filter_rec
3615 , x_return_status OUT NOCOPY VARCHAR2
3616 , x_msg_count OUT NOCOPY NUMBER
3617 , x_msg_data OUT NOCOPY VARCHAR2
3618 , x_clvl_selections_tbl OUT NOCOPY clvl_selections_tbl)
3619 IS
3620 l_clvl_selections_tbl clvl_selections_tbl ;
3621 rowcount NUMBER := 1;
3622 BEGIN
3623
3624 IF p_clvl_filter_rec.clvl_lse_id = 8 THEN /* Covered Party */
3625 ------------------errorout(' in party selections ');
3626 get_party_selections(p_clvl_filter_rec,
3627 l_clvl_selections_tbl);
3628 -- ----------------errorout(' sys count is '||l_clvl_selections_tbl.count);
3629 FOR rowcount IN 1 .. l_clvl_selections_tbl.COUNT LOOP
3630
3631 x_clvl_selections_tbl(rowcount).rec_no := l_clvl_selections_tbl(rowcount).rec_no;
3632 -- ----------------errorout(x_clvl_selections_tbl(rowcount).rec_type);
3633 x_clvl_selections_tbl(rowcount).rec_name := l_clvl_selections_tbl(rowcount).rec_name;
3634 ----------------errorout(x_clvl_selections_tbl(rowcount).rec_name );
3635 x_clvl_selections_tbl(rowcount).rec_type := l_clvl_selections_tbl(rowcount).rec_type;
3636 ----------------errorout(x_clvl_selections_tbl(rowcount).rec_no);
3637 x_clvl_selections_tbl(rowcount).id1 := l_clvl_selections_tbl(rowcount).id1;
3638 ----------------errorout(x_clvl_selections_tbl(rowcount).id1 );
3639 x_clvl_selections_tbl(rowcount).name := l_clvl_selections_tbl(rowcount).name;
3640 ----------------errorout(x_clvl_selections_tbl(rowcount).id2 );
3641 x_clvl_selections_tbl(rowcount).id2 := l_clvl_selections_tbl(rowcount).id2;
3642 ----------------errorout(x_clvl_selections_tbl(rowcount).name );
3643 x_clvl_selections_tbl(rowcount).Party_id := l_clvl_selections_tbl(rowcount).party_id;
3644 ----------------errorout(x_clvl_selections_tbl(rowcount).party_id );
3645 x_clvl_selections_tbl(rowcount).party_name := l_clvl_selections_tbl(rowcount).party_name;
3646 ----------------errorout(x_clvl_selections_tbl(rowcount).party_name );
3647 x_clvl_selections_tbl(rowcount).description := l_clvl_selections_tbl(rowcount).description;
3648 ----------------errorout(x_clvl_selections_tbl(rowcount).description );
3649 x_clvl_selections_tbl(rowcount).display_name := l_clvl_selections_tbl(rowcount).display_name;
3650 ----------------errorout(x_clvl_selections_tbl(rowcount).display_name );
3651 x_clvl_selections_tbl(rowcount).clvl_id := l_clvl_selections_tbl(rowcount).clvl_id;
3652 ----------------errorout(x_clvl_selections_tbl(rowcount).display_name );
3653 x_clvl_selections_tbl(rowcount).clvl_name := l_clvl_selections_tbl(rowcount).clvl_name;
3654 ----------------errorout(x_clvl_selections_tbl(rowcount).clvl_name );
3655 x_clvl_selections_tbl(rowcount).lse_id := l_clvl_selections_tbl(rowcount).lse_id;
3656 -----------------errorout(x_clvl_selections_tbl(rowcount).lse_id );
3657 x_clvl_selections_tbl(rowcount).lse_name := l_clvl_selections_tbl(rowcount).lse_name;
3658 -----------------errorout(x_clvl_selections_tbl(rowcount).lse_name );
3659
3660 END LOOP;
3661 ELSIF p_clvl_filter_rec.clvl_lse_id = 35 THEN /* Covered Customer */
3662 ----------------errorout('in customer selections ');
3663
3664 get_customer_selections(p_clvl_filter_rec,
3665 l_clvl_selections_tbl);
3666 -- ----------------errorout(' sys count is '||l_clvl_selections_tbl.count);
3667 FOR rowcount IN 1 .. l_clvl_selections_tbl.COUNT LOOP
3668
3669 x_clvl_selections_tbl(rowcount).rec_no := l_clvl_selections_tbl(rowcount).rec_no;
3670 -- ----------------errorout(x_clvl_selections_tbl(rowcount).rec_type);
3671 x_clvl_selections_tbl(rowcount).rec_name := l_clvl_selections_tbl(rowcount).rec_name;
3672 ----------------errorout(x_clvl_selections_tbl(rowcount).rec_name );
3673 x_clvl_selections_tbl(rowcount).rec_type := l_clvl_selections_tbl(rowcount).rec_type;
3674 ----------------errorout(x_clvl_selections_tbl(rowcount).rec_no);
3675 x_clvl_selections_tbl(rowcount).id1 := l_clvl_selections_tbl(rowcount).id1;
3676
3677 x_clvl_selections_tbl(rowcount).name := l_clvl_selections_tbl(rowcount).name;
3678 ----------------errorout(x_clvl_selections_tbl(rowcount).id2 );
3679 x_clvl_selections_tbl(rowcount).id2 := l_clvl_selections_tbl(rowcount).id2;
3680 ----------------errorout(x_clvl_selections_tbl(rowcount).name );
3681 x_clvl_selections_tbl(rowcount).Party_id := l_clvl_selections_tbl(rowcount).party_id;
3682 ----------------errorout(x_clvl_selections_tbl(rowcount).party_id );
3683 x_clvl_selections_tbl(rowcount).party_name := l_clvl_selections_tbl(rowcount).party_name;
3684 ----------------errorout(x_clvl_selections_tbl(rowcount).party_name );
3685 x_clvl_selections_tbl(rowcount).description := l_clvl_selections_tbl(rowcount).description;
3686 ----------------errorout(x_clvl_selections_tbl(rowcount).description );
3687 x_clvl_selections_tbl(rowcount).display_name := l_clvl_selections_tbl(rowcount).display_name;
3688 ----------------errorout(x_clvl_selections_tbl(rowcount).display_name );
3689 x_clvl_selections_tbl(rowcount).clvl_id := l_clvl_selections_tbl(rowcount).clvl_id;
3690 ----------------errorout(x_clvl_selections_tbl(rowcount).display_name );
3691 x_clvl_selections_tbl(rowcount).clvl_name := l_clvl_selections_tbl(rowcount).clvl_name;
3692 ----------------errorout(x_clvl_selections_tbl(rowcount).clvl_name );
3693 x_clvl_selections_tbl(rowcount).lse_id := l_clvl_selections_tbl(rowcount).lse_id;
3694 -----------------errorout(x_clvl_selections_tbl(rowcount).lse_id );
3695 x_clvl_selections_tbl(rowcount).lse_name := l_clvl_selections_tbl(rowcount).lse_name;
3696 -----------------errorout(x_clvl_selections_tbl(rowcount).lse_name );
3697
3698 END LOOP;
3699 ELSIF p_clvl_filter_rec.clvl_lse_id = 10 THEN /* Covered Site */
3700 -- ----------------errorout('in site selections ');
3701 get_site_selections(p_clvl_filter_rec,
3702 l_clvl_selections_tbl);
3703 ----------------errorout(' sys count is '||l_clvl_selections_tbl.count);
3704 FOR rowcount IN 1 .. l_clvl_selections_tbl.COUNT LOOP
3705
3706 x_clvl_selections_tbl(rowcount).rec_no := l_clvl_selections_tbl(rowcount).rec_no;
3707 -- ----------------errorout(x_clvl_selections_tbl(rowcount).rec_type);
3708 x_clvl_selections_tbl(rowcount).rec_name := l_clvl_selections_tbl(rowcount).rec_name;
3709 ----------------errorout(x_clvl_selections_tbl(rowcount).rec_name );
3710 x_clvl_selections_tbl(rowcount).rec_type := l_clvl_selections_tbl(rowcount).rec_type;
3711 ----------------errorout(x_clvl_selections_tbl(rowcount).rec_no);
3712 x_clvl_selections_tbl(rowcount).id1 := l_clvl_selections_tbl(rowcount).id1;
3713 ----------------errorout(x_clvl_selections_tbl(rowcount).id1 );
3714 x_clvl_selections_tbl(rowcount).name := l_clvl_selections_tbl(rowcount).name;
3715 ----------------errorout(x_clvl_selections_tbl(rowcount).id2 );
3716 x_clvl_selections_tbl(rowcount).id2 := l_clvl_selections_tbl(rowcount).id2;
3717 ----------------errorout(x_clvl_selections_tbl(rowcount).name );
3718 x_clvl_selections_tbl(rowcount).Party_id := l_clvl_selections_tbl(rowcount).party_id;
3719 ----------------errorout(x_clvl_selections_tbl(rowcount).party_id );
3720 x_clvl_selections_tbl(rowcount).party_name := l_clvl_selections_tbl(rowcount).party_name;
3721 ----------------errorout(x_clvl_selections_tbl(rowcount).party_name );
3722 x_clvl_selections_tbl(rowcount).description := l_clvl_selections_tbl(rowcount).description;
3723 ----------------errorout(x_clvl_selections_tbl(rowcount).description );
3724 x_clvl_selections_tbl(rowcount).display_name := l_clvl_selections_tbl(rowcount).display_name;
3725 ----------------errorout(x_clvl_selections_tbl(rowcount).display_name );
3726 x_clvl_selections_tbl(rowcount).clvl_id := l_clvl_selections_tbl(rowcount).clvl_id;
3727 ----------------errorout(x_clvl_selections_tbl(rowcount).display_name );
3728 x_clvl_selections_tbl(rowcount).clvl_name := l_clvl_selections_tbl(rowcount).clvl_name;
3729 ----------------errorout(x_clvl_selections_tbl(rowcount).clvl_name );
3730 x_clvl_selections_tbl(rowcount).lse_id := l_clvl_selections_tbl(rowcount).lse_id;
3731 -----------------errorout(x_clvl_selections_tbl(rowcount).lse_id );
3732 x_clvl_selections_tbl(rowcount).lse_name := l_clvl_selections_tbl(rowcount).lse_name;
3733 -----------------errorout(x_clvl_selections_tbl(rowcount).lse_name );
3734
3735 END LOOP;
3736 ELSIF p_clvl_filter_rec.clvl_lse_id = 11 THEN /* Covered System */
3737
3738
3739
3740 get_system_selections(p_clvl_filter_rec,
3741 l_clvl_selections_tbl);
3742
3743 ----------------errorout(' sys count is '||l_clvl_selections_tbl.count);
3744 FOR rowcount IN 1 .. l_clvl_selections_tbl.COUNT LOOP
3745
3746 x_clvl_selections_tbl(rowcount).rec_no := l_clvl_selections_tbl(rowcount).rec_no;
3747 ----------------errorout(x_clvl_selections_tbl(rowcount).rec_type);
3748 x_clvl_selections_tbl(rowcount).rec_name := l_clvl_selections_tbl(rowcount).rec_name;
3749 ----------------errorout(x_clvl_selections_tbl(rowcount).rec_name );
3750 x_clvl_selections_tbl(rowcount).rec_type := l_clvl_selections_tbl(rowcount).rec_type;
3751 ----------------errorout(x_clvl_selections_tbl(rowcount).rec_no);
3752 x_clvl_selections_tbl(rowcount).id1 := l_clvl_selections_tbl(rowcount).id1;
3753 ----------------errorout(x_clvl_selections_tbl(rowcount).id1 );
3754 x_clvl_selections_tbl(rowcount).name := l_clvl_selections_tbl(rowcount).name;
3755 ----------------errorout(x_clvl_selections_tbl(rowcount).id2 );
3756 x_clvl_selections_tbl(rowcount).id2 := l_clvl_selections_tbl(rowcount).id2;
3757 ----------------errorout(x_clvl_selections_tbl(rowcount).name );
3758 x_clvl_selections_tbl(rowcount).Party_id := l_clvl_selections_tbl(rowcount).party_id;
3759 ----------------errorout(x_clvl_selections_tbl(rowcount).party_id );
3760 x_clvl_selections_tbl(rowcount).party_name := l_clvl_selections_tbl(rowcount).party_name;
3761 ----------------errorout(x_clvl_selections_tbl(rowcount).party_name );
3762 x_clvl_selections_tbl(rowcount).description := l_clvl_selections_tbl(rowcount).description;
3763 ----------------errorout(x_clvl_selections_tbl(rowcount).description );
3764 x_clvl_selections_tbl(rowcount).display_name := l_clvl_selections_tbl(rowcount).display_name;
3765 ----------------errorout(x_clvl_selections_tbl(rowcount).display_name );
3766 x_clvl_selections_tbl(rowcount).clvl_id := l_clvl_selections_tbl(rowcount).clvl_id;
3767 ----------------errorout(x_clvl_selections_tbl(rowcount).display_name );
3768 x_clvl_selections_tbl(rowcount).clvl_name := l_clvl_selections_tbl(rowcount).clvl_name;
3769 ----------------errorout(x_clvl_selections_tbl(rowcount).clvl_name );
3770 x_clvl_selections_tbl(rowcount).lse_id := l_clvl_selections_tbl(rowcount).lse_id;
3771 -----------------errorout(x_clvl_selections_tbl(rowcount).lse_id );
3772 x_clvl_selections_tbl(rowcount).lse_name := l_clvl_selections_tbl(rowcount).lse_name;
3773 -----------------errorout(x_clvl_selections_tbl(rowcount).lse_name );
3774
3775 END LOOP;
3776 END IF;
3777
3778 END GetSelections_other;
3779
3780
3781
3782 FUNCTION get_item_name(p_inventory_item_id IN NUMBER)
3783 RETURN VARCHAR2
3784 IS
3785
3786 CURSOR l_csr_get_item_name(p_inventory_item_Id IN NUMBER)
3787 IS
3788 SELECT name
3789 FROM OKX_SYSTEM_ITEMS_V
3790 WHERE id1 = p_inventory_item_id
3791 AND TRUNC(SYSDATE) BETWEEN trunc(nvl(start_date_active, SYSDATE)) AND trunc(nvl(end_date_active, SYSDATE))
3792 AND ROWNUM < 2;
3793
3794 l_item_name OKX_SYSTEM_ITEMS_V.name%TYPE;
3795
3796 BEGIN
3797
3798 OPEN l_csr_Get_item_name(p_inventory_item_id);
3799 FETCH l_csr_get_item_name INTO l_item_name;
3800 CLOSE l_csr_Get_item_name;
3801
3802 RETURN l_item_name;
3803
3804
3805 END;
3806
3807
3808 FUNCTION get_item_desc(p_inventory_item_id IN NUMBER)
3809 RETURN VARCHAR2
3810 IS
3811
3812 CURSOR l_csr_get_item_desc(p_inventory_item_Id IN NUMBER)
3813 IS
3814 SELECT description
3815 FROM OKX_SYSTEM_ITEMS_V
3816 WHERE id1 = p_inventory_item_id
3817 AND TRUNC(SYSDATE) BETWEEN trunc(nvl(start_date_active, SYSDATE)) AND trunc(nvl(end_date_active, SYSDATE))
3818 AND ROWNUM < 2;
3819
3820 l_item_desc OKX_SYSTEM_ITEMS_V.description%TYPE;
3821
3822 BEGIN
3823
3824 OPEN l_csr_Get_item_desc(p_inventory_item_id);
3825 FETCH l_csr_get_item_desc INTO l_item_desc;
3826 CLOSE l_csr_Get_item_desc;
3827
3828 RETURN l_item_desc;
3829
3830 END;
3831
3832
3833 FUNCTION get_item_desc(p_inventory_item_id IN NUMBER,
3834 p_organization_id IN NUMBER)
3835 RETURN VARCHAR2
3836 IS
3837
3838 CURSOR l_csr_get_item_desc(p_inventory_item_Id IN NUMBER,
3839 p_organization_id IN NUMBER)
3840 IS
3841 SELECT description
3842 FROM OKX_SYSTEM_ITEMS_V
3843 WHERE inventory_item_id = p_inventory_item_id
3844 AND organization_id = p_organization_id
3845 AND TRUNC(SYSDATE) BETWEEN trunc(nvl(start_date_active, SYSDATE)) AND trunc(nvl(end_date_active, SYSDATE))
3846 AND ROWNUM < 2;
3847
3848 l_item_desc MTL_SYSTEM_ITEMS_KFV.description%TYPE;
3849
3850 BEGIN
3851
3852 OPEN l_csr_Get_item_desc(p_inventory_item_id, p_organization_id);
3853 FETCH l_csr_get_item_desc INTO l_item_desc;
3854 CLOSE l_csr_Get_item_desc;
3855
3856 RETURN l_item_desc;
3857
3858 END;
3859
3860
3861 FUNCTION get_item_name(p_inventory_item_id IN NUMBER,
3862 p_organization_id IN NUMBER)
3863 RETURN VARCHAR2
3864 IS
3865
3866 CURSOR l_csr_get_item_name(p_inventory_item_Id IN NUMBER,
3867 p_organization_id IN NUMBER)
3868 IS
3869 SELECT concatenated_segments name
3870 FROM MTL_SYSTEM_ITEMS_KFV
3871 WHERE inventory_item_id = p_inventory_item_id
3872 AND organization_id = p_organization_id
3873 AND TRUNC(SYSDATE) BETWEEN trunc(nvl(start_date_active, SYSDATE)) AND trunc(nvl(end_date_active, SYSDATE))
3874 AND ROWNUM < 2;
3875
3876 l_item_name MTL_SYSTEM_ITEMS_KFV.concatenated_segments%TYPE;
3877
3878 BEGIN
3879
3880 OPEN l_csr_Get_item_name(p_inventory_item_id, p_organization_id);
3881 FETCH l_csr_get_item_name INTO l_item_name;
3882 CLOSE l_csr_Get_item_name;
3883
3884 RETURN l_item_name;
3885
3886 END;
3887
3888 /** Code for changing/splitting service lines **/
3889
3890 PROCEDURE get_rev_distr(p_cle_id IN NUMBER,
3891 x_rev_tbl OUT NOCOPY OKS_REV_DISTR_PUB.rdsv_tbl_type)
3892 IS
3893 CURSOR rev_cur IS
3894 SELECT chr_id
3895 , cle_id
3896 , account_class
3897 , code_combination_id
3898 , PERCENT
3899 FROM oks_rev_distributions
3900 WHERE cle_id = p_cle_id;
3901 i NUMBER := 1;
3902 BEGIN
3903 FOR rev_rec IN rev_cur
3904 LOOP
3905 x_rev_tbl(i).id := OKC_API.G_MISS_NUM;
3906 x_rev_tbl(i).chr_id := rev_rec.chr_id;
3907 x_rev_tbl(i).account_class := rev_rec.account_class;
3908 x_rev_tbl(i).code_combination_id := rev_rec.code_combination_id;
3909 x_rev_tbl(i).PERCENT := rev_rec.PERCENT;
3910 x_rev_tbl(i).object_version_number := OKC_API.G_MISS_NUM;
3911 x_rev_tbl(i).created_by := OKC_API.G_MISS_NUM;
3912 x_rev_tbl(i).creation_date := OKC_API.G_MISS_DATE;
3913 x_rev_tbl(i).last_updated_by := OKC_API.G_MISS_NUM;
3914 x_rev_tbl(i).last_update_date := OKC_API.G_MISS_DATE;
3915 x_rev_tbl(i).last_update_login := OKC_API.G_MISS_NUM;
3916 i := i + 1;
3917 END LOOP;
3918 END get_rev_distr;
3919
3920 PROCEDURE create_rev_distr(p_cle_id IN NUMBER,
3921 p_rev_tbl IN OUT NOCOPY OKS_REV_DISTR_PUB.rdsv_tbl_type,
3922 x_status OUT NOCOPY VARCHAR2)
3923 IS
3924 l_api_version NUMBER := 1.0;
3925 l_msg_count NUMBER;
3926 l_msg_data VARCHAR2(2000);
3927 l_rev_tbl OKS_REV_DISTR_PUB.rdsv_tbl_type;
3928 i NUMBER;
3929 BEGIN
3930 i := p_rev_tbl.FIRST;
3931 LOOP
3932 p_rev_tbl(i).cle_id := p_cle_id;
3933 EXIT WHEN i = p_rev_tbl.LAST;
3934 i := p_rev_tbl.NEXT(i);
3935 END LOOP;
3936 OKS_REV_DISTR_PUB.insert_Revenue_Distr
3937 (p_api_version => l_api_version
3938 , x_return_status => x_status
3939 , x_msg_count => l_msg_count
3940 , x_msg_data => l_msg_data
3941 , p_rdsv_tbl => p_rev_tbl
3942 , x_rdsv_tbl => l_rev_tbl);
3943 END create_rev_distr;
3944
3945 PROCEDURE get_sales_cred(p_cle_id IN NUMBER,
3946 x_scrv_tbl OUT NOCOPY OKS_SALES_CREDIT_PUB.scrv_tbl_type)
3947 IS
3948 CURSOR scrv_cur IS
3949 SELECT
3950 PERCENT,
3951 chr_id,
3952 ctc_id,
3953 sales_credit_type_id1,
3954 sales_credit_type_id2
3955 FROM OKS_K_SALES_CREDITS
3956 WHERE cle_id = p_cle_id;
3957 i NUMBER := 1;
3958 BEGIN
3959 FOR scrv_rec IN scrv_cur
3960 LOOP
3961 x_scrv_tbl(i).id := OKC_API.G_MISS_NUM;
3962 x_scrv_tbl(i).PERCENT := scrv_rec.PERCENT;
3963 x_scrv_tbl(i).chr_id := scrv_rec.chr_id;
3964 x_scrv_tbl(i).ctc_id := scrv_rec.ctc_id;
3965 x_scrv_tbl(i).sales_credit_type_id1 := scrv_rec.sales_credit_type_id1;
3966 x_scrv_tbl(i).sales_credit_type_id2 := scrv_rec.sales_credit_type_id2;
3967 x_scrv_tbl(i).object_version_number := OKC_API.G_MISS_NUM;
3968 x_scrv_tbl(i).created_by := OKC_API.G_MISS_NUM;
3969 x_scrv_tbl(i).creation_date := OKC_API.G_MISS_DATE;
3970 x_scrv_tbl(i).last_updated_by := OKC_API.G_MISS_NUM;
3971 x_scrv_tbl(i).last_update_date := OKC_API.G_MISS_DATE;
3972 i := i + 1;
3973 END LOOP;
3974 END get_sales_cred;
3975
3976 PROCEDURE create_sales_cred(p_cle_id IN NUMBER,
3977 p_scrv_tbl IN OUT NOCOPY OKS_SALES_CREDIT_PUB.scrv_tbl_type,
3978 x_status OUT NOCOPY VARCHAR2) IS
3979 l_api_version NUMBER := 1.0;
3980 l_msg_count NUMBER;
3981 l_msg_data VARCHAR2(2000);
3982 l_scrv_tbl OKS_SALES_CREDIT_PUB.scrv_tbl_type;
3983 i NUMBER;
3984 BEGIN
3985 i := p_scrv_tbl.FIRST;
3986 LOOP
3987 p_scrv_tbl(i).cle_id := p_cle_id;
3988 EXIT WHEN i = p_scrv_tbl.LAST;
3989 i := p_scrv_tbl.NEXT(i);
3990 END LOOP;
3991 OKS_SALES_CREDIT_PUB.insert_Sales_credit(
3992 p_api_version => l_api_version,
3993 x_return_status => x_status,
3994 x_msg_count => l_msg_count,
3995 x_msg_data => l_msg_data,
3996 p_scrv_tbl => p_scrv_tbl,
3997 x_scrv_tbl => l_scrv_tbl);
3998 END create_sales_cred;
3999
4000 PROCEDURE update_line_item(p_cle_id IN NUMBER,
4001 p_item_id IN VARCHAR2,
4002 x_status OUT NOCOPY VARCHAR2) IS
4003 l_api_version NUMBER := 1.0;
4004 l_msg_count NUMBER;
4005 l_msg_data VARCHAR2(2000);
4006 l_cimv_rec_in OKC_CONTRACT_ITEM_PUB.cimv_rec_type;
4007 l_cimv_rec_out OKC_CONTRACT_ITEM_PUB.cimv_rec_type;
4008 CURSOR item_cur IS
4009 SELECT id
4010 FROM okc_k_items_v
4011 WHERE cle_id = p_cle_id;
4012 BEGIN
4013 OPEN item_cur;
4014 FETCH item_cur INTO l_cimv_rec_in.id;
4015 CLOSE item_cur;
4016 l_cimv_rec_in.object1_id1 := p_item_id;
4017 OKC_CONTRACT_ITEM_PUB.update_contract_item(
4018 p_api_version => l_api_version,
4019 x_return_status => x_status,
4020 x_msg_count => l_msg_count,
4021 x_msg_data => l_msg_data,
4022 p_cimv_rec => l_cimv_rec_in,
4023 x_cimv_rec => l_cimv_rec_out);
4024 END update_line_item;
4025
4026 PROCEDURE prorate_amount(p_cle_id IN NUMBER,
4027 p_percent IN NUMBER,
4028 p_amount IN NUMBER,
4029 x_status OUT NOCOPY VARCHAR2) IS
4030 CURSOR subline_count IS
4031 SELECT COUNT( * )
4032 FROM okc_k_lines_b
4033 WHERE cle_id = p_cle_id
4034 AND lse_id IN (7, 8, 9, 10, 11, 35, 18, 25);
4035
4036 CURSOR subline_cur IS
4037 SELECT id, price_negotiated
4038 FROM okc_k_lines_b
4039 WHERE cle_id = p_cle_id
4040 AND lse_id IN (7, 8, 9, 10, 11, 35, 18, 25);
4041
4042 l_total_amt NUMBER := 0;
4043 l_count NUMBER;
4044 i NUMBER;
4045 l_api_version NUMBER := 1.0;
4046 l_msg_count NUMBER;
4047 l_msg_data VARCHAR2(2000);
4048 l_clev_tbl_in OKC_CONTRACT_PUB.clev_tbl_type;
4049 l_clev_tbl_out OKC_CONTRACT_PUB.clev_tbl_type;
4050 BEGIN
4051 OPEN subline_count;
4052 FETCH subline_count INTO l_count;
4053 CLOSE subline_count;
4054 IF l_count = 0 THEN
4055 x_status := OKC_API.G_RET_STS_SUCCESS;
4056 RETURN;
4057 END IF;
4058 i := 1;
4059 FOR subline IN subline_cur
4060 LOOP
4061 l_clev_tbl_in(i).id := subline.id;
4062 IF i <> l_count THEN
4063 l_clev_tbl_in(i).price_negotiated := subline.price_negotiated * p_percent / 100.0;
4064 ELSE
4065 l_clev_tbl_in(i).price_negotiated := p_amount - l_total_amt;
4066 END IF;
4067 l_total_amt := l_total_amt + NVL(l_clev_tbl_in(i).price_negotiated, 0);
4068 i := i + 1;
4069 END LOOP;
4070 OKC_CONTRACT_PUB.update_contract_line(
4071 p_api_version => l_api_version,
4072 x_return_status => x_status,
4073 x_msg_count => l_msg_count,
4074 x_msg_data => l_msg_data,
4075 p_clev_tbl => l_clev_tbl_in,
4076 x_clev_tbl => l_clev_tbl_out);
4077 END prorate_amount;
4078
4079 PROCEDURE refresh_bill_sch(p_cle_id IN NUMBER,
4080 --x_rgp_id OUT NOCOPY NUMBER,
4081 x_status OUT NOCOPY VARCHAR2) IS
4082
4083 l_rgp_id NUMBER;
4084
4085 l_inv_rule_id NUMBER;
4086
4087 CURSOR inv_rule_cur(p_id IN NUMBER) IS
4088 SELECT inv_rule_id
4089 FROM okc_k_lines_b
4090 WHERE id = p_id;
4091
4092 l_sll_tbl OKS_BILL_SCH.StreamLvl_tbl;
4093 l_bill_sch_out_tbl OKS_BILL_SCH.ItemBillSch_tbl;
4094 l_bill_type OKS_K_LINES_V.billing_schedule_type%TYPE;
4095
4096
4097 PROCEDURE Populate_Sll_Table(p_cle_id IN NUMBER, x_sll_tbl OUT NOCOPY OKS_BILL_SCH.StreamLvl_tbl, x_bill_type OUT NOCOPY OKS_K_LINES_V.billing_schedule_type%TYPE)
4098 IS
4099 tbl_index NUMBER := 1;
4100 CURSOR sll_cur(p_cle_id IN NUMBER) IS
4101 SELECT id
4102 , chr_id
4103 , cle_id
4104 , dnz_chr_id
4105 , sequence_no
4106 , uom_code
4107 , start_date
4108 , end_date
4109 , level_periods
4110 , uom_per_period
4111 , advance_periods
4112 , level_amount
4113 , invoice_offset_days
4114 , interface_offset_days
4115 , comments
4116 , due_arr_yn
4117 , amount
4118 , lines_detailed_yn
4119 FROM oks_stream_levels_b
4120 WHERE cle_id = p_cle_id;
4121
4122 CURSOR get_bill_type_cur(p_cle_id IN NUMBER) IS
4123 SELECT billing_schedule_type
4124 FROM OKS_K_LINES_V
4125 WHERE cle_id = p_cle_id;
4126
4127 l_bill_type OKS_K_LINES_V.billing_schedule_type%TYPE;
4128
4129 BEGIN
4130
4131 OPEN get_bill_type_cur(p_cle_id);
4132 FETCH get_bill_type_cur INTO l_bill_type;
4133 CLOSE get_bill_type_cur;
4134
4135 x_bill_type := l_bill_type;
4136 FOR sll_rec IN sll_cur(p_cle_id)
4137 LOOP
4138 x_sll_tbl(tbl_index).Id := sll_rec.id;
4139 x_sll_tbl(tbl_index).chr_Id := sll_rec.chr_id;
4140 x_sll_tbl(tbl_index).cle_id := sll_rec.cle_id;
4141 x_sll_tbl(tbl_index).dnz_chr_id := sll_rec.dnz_chr_id;
4142 x_sll_tbl(tbl_index).sequence_no := sll_rec.sequence_no;
4143 x_sll_tbl(tbl_index).uom_code := sll_rec.uom_code;
4144 x_sll_tbl(tbl_index).start_date := sll_rec.start_date;
4145 x_sll_tbl(tbl_index).end_date := sll_rec.end_date;
4146 x_sll_tbl(tbl_index).level_periods := sll_rec.level_periods;
4147 x_sll_tbl(tbl_index).uom_per_period := sll_rec.uom_per_period;
4148 x_sll_tbl(tbl_index).level_amount := sll_rec.level_amount;
4149 x_sll_tbl(tbl_index).invoice_offset_days := sll_rec.invoice_offset_days;
4150 x_sll_tbl(tbl_index).interface_offset_days := sll_rec.interface_offset_days;
4151 x_sll_tbl(tbl_index).comments := sll_rec.comments;
4152 x_sll_tbl(tbl_index).due_arr_yn := sll_rec.due_arr_yn;
4153 x_sll_tbl(tbl_index).amount := sll_rec.amount;
4154 x_sll_tbl(tbl_index).lines_detailed_yn := sll_rec.lines_detailed_yn;
4155
4156 tbl_index := tbl_index + 1;
4157 END LOOP;
4158
4159 END Populate_Sll_Table;
4160
4161 BEGIN
4162
4163 OPEN inv_rule_cur(p_cle_id);
4164 FETCH inv_rule_cur INTO l_inv_rule_id;
4165 CLOSE inv_rule_cur;
4166
4167
4168 populate_sll_table (p_cle_id, l_sll_tbl, l_bill_type);
4169
4170 OKS_BILL_SCH.Create_Bill_Sch_Rules
4171 (p_billing_type => l_bill_type,
4172 p_sll_tbl => l_sll_tbl,
4173 p_invoice_rule_id => l_inv_rule_id,
4174 x_bil_sch_out_tbl => l_bill_sch_out_tbl,
4175 x_return_status => x_status);
4176 END refresh_bill_sch;
4177
4178
4179 /************/
4180
4181 --ADDED FOR Bug# 2364507
4182 FUNCTION GetCoveragetemplate(p_item_id IN NUMBER) RETURN NUMBER
4183 IS
4184
4185 l_org_id NUMBER := OKC_CONTEXT.GET_OKC_ORGANIZATION_ID;
4186
4187 --Bug 5041682, modifed the cursor to have a lower parse time, current query takes 3 seconds
4188 CURSOR l_covtemp_csr IS
4189 --SELECT coverage_template_id
4190 --FROM okx_system_items_v
4191 --WHERE id1 = p_item_id
4192 --AND id2 = OKC_CONTEXT.GET_OKC_ORGANIZATION_ID;
4193 SELECT COVERAGE_SCHEDULE_ID
4194 FROM mtl_system_items_b
4195 WHERE inventory_item_id = p_item_id
4196 AND organization_id = nvl(l_org_id, -99) ;
4197
4198
4199 l_covtemp_id NUMBER := NULL;
4200 BEGIN
4201 OPEN l_covtemp_csr;
4202 FETCH l_covtemp_csr INTO l_covtemp_id;
4203 CLOSE l_covtemp_csr;
4204 RETURN(l_covtemp_id);
4205 END GetCoverageTemplate;
4206
4207 FUNCTION GetCoverage(p_cle_id IN NUMBER) RETURN NUMBER
4208 IS
4209 CURSOR l_cov_csr IS
4210 SELECT id
4211 FROM okc_k_lines_b
4212 WHERE cle_id = p_cle_id
4213 AND lse_id IN(2, 20);
4214 l_cov_id NUMBER := NULL;
4215 BEGIN
4216 OPEN l_cov_csr;
4217 FETCH l_cov_csr INTO l_cov_id;
4218 CLOSE l_cov_csr;
4219 RETURN(l_cov_id);
4220 END GetCoverage;
4221
4222 PROCEDURE calculate_tax(p_chr_id NUMBER,
4223 p_amt NUMBER,
4224 p_cle_id NUMBER,
4225 x_return_status OUT NOCOPY VARCHAR2,
4226 x_msg_data OUT NOCOPY VARCHAR2,
4227 x_msg_count OUT NOCOPY NUMBER,
4228 x_tax_value OUT NOCOPY NUMBER,
4229 x_AMOUNT_INCLUDES_TAX_FLAG OUT NOCOPY VARCHAR2,
4230 x_total OUT NOCOPY NUMBER)
4231 IS
4232 l_calculate_tax VARCHAR2(150);
4233 -- p_contract_line_rec OKS_QP_INT_PVT.G_LINE_REC_TYPE;
4234 L_INDEX1 BINARY_INTEGER;
4235 L_INDEX2 BINARY_INTEGER;
4236 l_msg_count NUMBER;
4237 l_msg_data VARCHAR2(2000);
4238 l_return_status VARCHAR2(1) := 'S';
4239 G_RAIL_REC OKS_TAX_UTIL_PVT.ra_rec_type;
4240 l_UNIT_SELLING_PRICE G_RAIL_REC.UNIT_SELLING_PRICE%TYPE;
4241 l_QUANTITY G_RAIL_REC.QUANTITY%TYPE;
4242 l_sub_total G_RAIL_REC.AMOUNT%TYPE;
4243 l_total_amt G_RAIL_REC.AMOUNT%TYPE;
4244 l_Tax_Code G_RAIL_REC.TAX_CODE%TYPE;
4245 l_TAX_RATE G_RAIL_REC.TAX_RATE%TYPE;
4246 l_total G_RAIL_REC.AMOUNT%TYPE;
4247 l_Tax_Value G_RAIL_REC.TAX_VALUE%TYPE;
4248 l_AMOUNT_INCLUDES_TAX_FLAG G_RAIL_REC.AMOUNT_INCLUDES_TAX_FLAG%TYPE;
4249 l_price_negotiated G_RAIL_REC.AMOUNT%TYPE;
4250 l_lse_id NUMBER;
4251 BEGIN
4252 G_RAIL_REC.AMOUNT := p_amt;
4253 OKS_TAX_UTIL_PVT.Get_Tax
4254 (
4255 p_api_version => 1.0,
4256 p_init_msg_list => OKC_API.G_TRUE,
4257 p_chr_id => p_chr_id,
4258 p_cle_id => p_cle_id,
4259 px_rail_rec => G_RAIL_REC,
4260 x_msg_count => l_msg_count,
4261 x_msg_data => l_msg_data,
4262 x_return_status => l_return_status
4263 );
4264
4265 IF (l_return_status = 'S') THEN
4266
4267 l_UNIT_SELLING_PRICE := G_RAIL_REC.UNIT_SELLING_PRICE;
4268 l_QUANTITY := G_RAIL_REC.QUANTITY;
4269 l_sub_total := G_RAIL_REC.AMOUNT;
4270 l_AMOUNT_INCLUDES_TAX_FLAG := G_RAIL_REC.AMOUNT_INCLUDES_TAX_FLAG;
4271 l_Tax_Code := G_RAIL_REC.TAX_CODE;
4272 l_TAX_RATE := G_RAIL_REC.TAX_RATE ;
4273 l_Tax_Value := G_RAIL_REC.TAX_VALUE;
4274
4275 IF NVL(l_AMOUNT_INCLUDES_TAX_FLAG, 'N') = 'Y' THEN
4276 l_tax_value := 0;
4277
4278 l_total := l_sub_total + l_Tax_Value;
4279 ELSE
4280 l_total := l_sub_total + l_Tax_Value;
4281 l_AMOUNT_INCLUDES_TAX_FLAG := 'N';
4282 END IF;
4283 x_total := l_total;
4284 x_Tax_Value := l_Tax_Value;
4285 x_AMOUNT_INCLUDES_TAX_FLAG := l_AMOUNT_INCLUDES_TAX_FLAG;
4286 x_return_status := l_return_status;
4287 x_msg_count := l_msg_count;
4288 x_msg_data := l_msg_data;
4289 ELSE
4290 x_return_status := l_return_status;
4291 x_msg_count := l_msg_count;
4292 x_msg_data := l_msg_data;
4293 END IF;
4294
4295 END calculate_tax;
4296
4297
4298 FUNCTION GetFormattedInvoiceText(p_item_desc IN VARCHAR2
4299 , p_start_date IN DATE
4300 , p_end_date IN DATE) RETURN VARCHAR2
4301 IS
4302 BEGIN
4303 RETURN(SUBSTR(p_item_desc || ':' || p_start_date || ':' || p_end_date, 1, 450));
4304 END GetFormattedInvoiceText;
4305
4306 PROCEDURE UpdateIRTRule(p_chr_id IN NUMBER
4307 , p_cle_id IN NUMBER
4308 , p_invoice_text IN VARCHAR2
4309 , p_api_version IN NUMBER
4310 , p_init_msg_list IN VARCHAR2
4311 , x_return_status OUT NOCOPY VARCHAR2
4312 , x_tax_value OUT NOCOPY NUMBER
4313 , x_AMOUNT_INCLUDES_TAX_FLAG OUT NOCOPY VARCHAR2
4314 , x_total OUT NOCOPY NUMBER)
4315
4316 IS
4317
4318 l_khrv_tbl OKS_CONTRACT_HDR_PUB.khrv_tbl_type;
4319 lx_khrv_tbl OKS_CONTRACT_HDR_PUB.khrv_tbl_type;
4320
4321 l_klnv_tbl OKS_CONTRACT_LINE_PUB.klnv_tbl_type;
4322 lx_klnv_tbl OKS_CONTRACT_LINE_PUB.klnv_tbl_type;
4323
4324 CURSOR l_get_khr_id(p_chr_id IN NUMBER)
4325 IS
4326 SELECT id, object_version_number --BUG#4066428 hkamdar 01/21/05 added object_version_number
4327 FROM OKS_K_HEADERS_V
4328 WHERE chr_id = p_chr_id;
4329
4330 CURSOR l_get_kln_id(p_dnz_chr_id IN NUMBER, p_cle_id IN NUMBER)
4331 IS
4332 SELECT id, object_version_number
4333 FROM OKS_K_LINES_V
4334 WHERE dnz_chr_id = p_dnz_chr_id
4335 AND cle_id = p_cle_id;
4336
4337 /** Get tax values for each line for given contract id **/
4338 CURSOR l_get_tot_tax(p_dnz_chr_id IN NUMBER)
4339 IS
4340 SELECT cle.id, SUM(kln.tax_amount)
4341 FROM OKS_K_LINES_V kln, OKC_K_LINES_V cle
4342 WHERE cle.dnz_chr_id = p_dnz_chr_id
4343 AND cle.cle_id IS NULL
4344 AND kln.cle_id = cle.id;
4345
4346
4347 /*** Get sum of taxes at subline level **/
4348 CURSOR l_get_tot_tax_subline(p_dnz_chr_id IN NUMBER, p_cle_id IN NUMBER)
4349 IS
4350 SELECT MAX(kln.tax_amount)
4351 FROM OKS_K_LINES_V kln, OKC_K_LINES_V cle
4352 WHERE cle.dnz_chr_id = p_dnz_chr_id
4353 AND cle.cle_id = p_cle_id
4354 AND kln.cle_id = cle.id;
4355
4356
4357 l_return_status VARCHAR2(1) := G_RET_STS_SUCCESS;
4358 l_msg_count NUMBER;
4359 l_msg_data VARCHAR2(2000);
4360
4361 l_object_version_number NUMBER;
4362 l_khr_id OKS_K_HEADERS_V.id%TYPE;
4363 l_kln_id OKS_K_LINES_V.id%TYPE;
4364 l_validate_yn VARCHAR2(1);
4365 --BUG#4066428 hkamdar 01/21/05 added object_version_number
4366 l_hdr_object_ver_num OKS_K_HEADERS_V.object_version_number%TYPE;
4367
4368 --LLC
4369
4370 CURSOR get_topline_tax_amt_csr (p_cle_id IN NUMBER) IS
4371 SELECT nvl(SUM(nvl(tax_amount, 0)), 0)
4372 FROM okc_k_lines_b cle, oks_k_lines_b sle
4373 WHERE cle.cle_id = p_cle_id
4374 AND cle.lse_id IN (7, 8, 9, 10, 11, 18, 25, 35)
4375 AND cle.id = sle.cle_id
4376 AND cle.dnz_chr_id = sle.dnz_chr_id
4377 AND cle.date_cancelled IS NULL;
4378
4379 CURSOR get_hdr_tax_amt_csr (p_chr_id IN NUMBER) IS
4380 SELECT nvl(SUM(nvl(tax_amount, 0)), 0)
4381 FROM okc_k_lines_b cle, oks_k_lines_b sle
4382 WHERE cle.dnz_chr_id = p_chr_id
4383 AND cle.lse_id IN (1, 12, 14, 19, 46)
4384 AND cle.cle_id IS NULL
4385 AND cle.id = sle.cle_id
4386 AND cle.dnz_chr_id = sle.dnz_chr_id;
4387
4388
4389 l_topline_tax_amt NUMBER;
4390 l_hdr_tax_amt NUMBER;
4391
4392 --LLC
4393
4394 BEGIN
4395
4396
4397
4398 OPEN l_get_kln_id(p_chr_id, p_cle_id);
4399 FETCH l_get_kln_id INTO l_kln_id, l_object_version_number;
4400 CLOSE l_get_kln_id;
4401
4402 --LLC
4403
4404 OPEN get_topline_tax_amt_csr(p_cle_id);
4405 FETCH get_topline_tax_amt_csr INTO l_topline_tax_amt;
4406 CLOSE get_topline_tax_amt_csr;
4407
4408 --LLC
4409
4410 l_klnv_tbl(1).id := l_kln_id;
4411 l_klnv_tbl(1).cle_id := p_cle_id;
4412 l_klnv_tbl(1).tax_amount := l_topline_tax_amt; --LLC
4413 l_klnv_tbl(1).invoice_text := p_invoice_text;
4414 l_klnv_tbl(1).tax_inclusive_yn := x_amount_includes_tax_flag;
4415 l_klnv_tbl(1).object_Version_number := l_object_version_number ;
4416
4417
4418 OKS_CONTRACT_LINE_PUB.update_line(
4419 p_api_version => p_api_version,
4420 p_init_msg_list => p_init_msg_list,
4421 x_return_status => l_return_status,
4422 x_msg_count => l_msg_count,
4423 x_msg_data => l_msg_data,
4424 p_klnv_tbl => l_klnv_tbl,
4425 x_klnv_tbl => lx_klnv_tbl,
4426 p_validate_yn => l_validate_yn);
4427
4428
4429
4430 x_return_status := l_return_status;
4431
4432
4433
4434 OPEN l_get_khr_id(p_chr_id);
4435 FETCH l_get_khr_id INTO l_khr_id,
4436 l_hdr_object_ver_num; --BUG#4066428 hkamdar 01/21/05 added object_version_number
4437 CLOSE l_get_khr_id;
4438
4439 --LLC
4440
4441 OPEN get_hdr_tax_amt_csr(p_chr_id);
4442 FETCH get_hdr_tax_amt_csr INTO l_hdr_tax_amt;
4443 CLOSE get_hdr_tax_amt_csr;
4444
4445 --LLC
4446
4447 l_khrv_tbl(1).id := l_khr_id;
4448 l_khrv_tbl(1).chr_id := p_chr_id;
4449 l_khrv_tbl(1).tax_amount := l_hdr_tax_amt; --LLC
4450 --BUG#4066428 hkamdar 01/21/05 added object_version_number
4451 l_khrv_tbl(1).object_version_number := l_hdr_object_ver_num;
4452
4453
4454 OKS_CONTRACT_HDR_PUB.update_header(p_api_version => p_api_version,
4455 p_init_msg_list => p_init_msg_list,
4456 x_return_status => l_return_status,
4457 x_msg_count => l_msg_count,
4458 x_msg_data => l_msg_data,
4459 p_khrv_tbl => l_khrv_tbl,
4460 x_khrv_tbl => lx_khrv_tbl,
4461 p_validate_yn => l_validate_yn);
4462
4463 --errorout('After Update header in UpdateIRTRule-'||l_return_status);
4464 --BUG#4066428 hkamdar 01/21/05
4465 x_return_status := l_return_status;
4466 --End BUG#4066428
4467
4468 IF l_return_status <> 'S' THEN
4469 RETURN;
4470 END IF;
4471
4472
4473 END UpdateIRTRule;
4474
4475 /****************/
4476
4477 PROCEDURE UpdateIRTRule_Subline(p_cle_id IN NUMBER
4478 , p_item_desc IN VARCHAR2
4479 , p_start_date IN DATE
4480 , p_end_date IN DATE
4481 , x_return_status OUT NOCOPY VARCHAR2
4482 )
4483 IS
4484
4485 l_klnv_tbl_in OKS_CONTRACT_LINE_PUB.klnv_tbl_type;
4486 lx_klnv_tbl OKS_CONTRACT_LINE_PUB.klnv_tbl_type;
4487
4488
4489 CURSOR l_cle_csr(p_cle_id IN NUMBER) IS
4490 SELECT cle.lse_id
4491 , cle.id line_id
4492 , cle.start_date
4493 , cle.end_date
4494 , cle.price_negotiated amt
4495 , cle.dnz_chr_id chr_id
4496 , kln.id kln_id
4497 , kln.object_version_number
4498 FROM okc_k_lines_b cle,
4499 oks_k_lines_b kln
4500 WHERE cle.cle_id = p_cle_id
4501 AND kln.cle_id = cle.id
4502 AND lse_id NOT IN (2, 15, 20, 46);
4503
4504
4505 l_cle_rec l_cle_csr%ROWTYPE;
4506 l_msg_count NUMBER;
4507 l_msg_data VARCHAR2(2000);
4508 l_init_msg_list VARCHAR2(1000);
4509 l_return_status VARCHAR2(1) := G_RET_STS_SUCCESS;
4510 l_total NUMBER;
4511 l_Tax_Value NUMBER;
4512 l_AMOUNT_INCLUDES_TAX_FLAG VARCHAR2(1);
4513 l_validate_yn VARCHAR2(1);
4514
4515 FUNCTION GetFormattedInvoiceText(p_cle_id IN NUMBER
4516 , p_start_date IN DATE
4517 , p_end_date IN DATE
4518 , p_item_desc IN VARCHAR2
4519 , p_lse_id IN NUMBER) RETURN VARCHAR2
4520 IS
4521 CURSOR l_item_csr IS
4522 SELECT jtot_object1_code
4523 , object1_id1
4524 , object1_id2
4525 , number_of_items
4526 FROM okc_k_items
4527 WHERE cle_id = p_cle_id;
4528 l_object_code okc_k_items.jtot_object1_code%TYPE;
4529 l_object1_id1 okc_k_items.object1_id1%TYPE;
4530 l_object1_id2 okc_k_items.object1_id2%TYPE;
4531 l_no_of_items okc_k_items.number_of_items%TYPE;
4532 l_name VARCHAR2(2000);
4533 l_desc VARCHAR2(2000);
4534 l_formatted_invoice_text VARCHAR2(2000);
4535 BEGIN
4536 OPEN l_item_csr;
4537 FETCH l_item_csr INTO l_object_code, l_object1_id1, l_object1_id2, l_no_of_items;
4538 CLOSE l_item_csr;
4539
4540 IF l_object_code IS NULL THEN
4541 RETURN(NULL);
4542 END IF;
4543
4544 OKC_UTIL.GET_NAME_DESC_FROM_JTFV
4545 (p_object_code => l_object_code
4546 , p_id1 => l_object1_id1
4547 , p_id2 => l_object1_id2
4548 , x_name => l_name
4549 , x_description => l_desc);
4550 IF p_lse_id IN(8, 10, 11, 35) THEN
4551 l_formatted_invoice_text := SUBSTR(p_item_desc || ':' || l_no_of_items || ':' || l_desc || ':' || p_start_date || ':' || p_end_date, 1, 450);
4552 ELSE
4553 IF fnd_profile.VALUE('OKS_ITEM_DISPLAY_PREFERENCE') = 'DISPLAY_DESC' THEN
4554 l_desc := l_desc;
4555 ELSE
4556 l_desc := l_name;
4557 END IF;
4558 l_formatted_invoice_text := SUBSTR(p_item_desc || ':' || l_no_of_items || ':' || l_desc || ':' || p_start_date || ':' || p_end_date, 1, 450);
4559 END IF;
4560 RETURN(l_formatted_invoice_text);
4561 END GetFormattedInvoiceText;
4562
4563
4564
4565 BEGIN NULL;
4566
4567 OPEN l_cle_csr(p_cle_id);
4568 LOOP
4569 FETCH l_cle_csr INTO l_cle_rec;
4570 EXIT WHEN l_cle_csr%NOTFOUND;
4571 l_klnv_tbl_in(1).cle_id := l_cle_rec.line_id;
4572 l_klnv_tbl_in(1).id := l_cle_rec.kln_id;
4573 l_klnv_tbl_in(1).object_version_number := l_cle_rec.object_version_number;
4574 l_klnv_tbl_in(1).invoice_text := GetFormattedInvoiceText
4575 (l_cle_rec.line_id
4576 , l_cle_rec.start_date
4577 , l_cle_rec.end_date
4578 , p_item_desc
4579 , l_cle_rec.lse_id);
4580
4581 --*
4582 calculate_tax(p_chr_id => l_cle_rec.chr_id,
4583 p_amt => l_cle_rec.amt,
4584 p_cle_id => l_cle_rec.line_id,
4585 x_return_status => l_return_status,
4586 x_msg_data => l_msg_data,
4587 x_msg_count => l_msg_count,
4588 x_tax_value => l_tax_value,
4589 x_AMOUNT_INCLUDES_TAX_FLAG => l_AMOUNT_INCLUDES_TAX_FLAG,
4590 x_total => l_total);
4591 --errorout('After Calculate Tax in UpdateIRTRule_Subline-'||l_return_status);
4592 --BUG#4066428 hkamdar 01/21/05
4593 x_return_status := l_return_status;
4594 --End BUG#4066428
4595
4596 IF l_return_status <> OKC_API.G_RET_STS_SUCCESS THEN
4597 x_return_status := l_return_status;
4598 RAISE G_ERROR;
4599 END IF;
4600 l_klnv_tbl_in(1).tax_amount := l_tax_value;
4601 l_klnv_tbl_in(1).tax_inclusive_yn := l_AMOUNT_INCLUDES_TAX_FLAG;
4602 -- l_rulv_tbl_in(1).rule_information6 := l_total;
4603
4604
4605
4606 oks_contract_line_pub.update_line (
4607 p_api_version => 1.0,
4608 p_init_msg_list => l_init_msg_list,
4609 x_return_status => l_return_status,
4610 x_msg_count => l_msg_count,
4611 x_msg_data => l_msg_data,
4612 p_klnv_tbl => l_klnv_tbl_in,
4613 x_klnv_tbl => lx_klnv_tbl,
4614 p_validate_yn => l_validate_yn) ;
4615 --errorout('After Update Line in UpdateIRTRule_Subline-'||l_return_status);
4616 END LOOP;
4617 CLOSE l_cle_csr;
4618 x_return_status := l_return_status;
4619
4620 END UpdateIRTRule_Subline;
4621
4622
4623 --ADDED FOR Bug# 2364507
4624
4625 PROCEDURE update_header_amount(p_cle_id IN NUMBER,
4626 x_status OUT NOCOPY VARCHAR2) IS
4627 l_api_version CONSTANT NUMBER := 1.0;
4628 l_init_msg_list VARCHAR2(2000) := OKC_API.G_FALSE;
4629 l_return_status VARCHAR2(1);
4630 l_msg_count NUMBER;
4631 l_msg_data VARCHAR2(2000);
4632 l_msg_index_out NUMBER;
4633 l_chrv_tbl_in okc_contract_pub.chrv_tbl_type;
4634 l_chrv_tbl_out okc_contract_pub.chrv_tbl_type;
4635
4636 CURSOR total_amount(p_chr_id IN NUMBER) IS
4637 SELECT nvl(SUM(price_negotiated), 0) SUM
4638 FROM okc_k_lines_b
4639 WHERE dnz_chr_id = p_chr_id
4640 AND lse_id IN (7, 8, 9, 10, 11, 35, 13, 18, 25)
4641 AND date_cancelled IS NULL; --ignore cancelled sublines
4642
4643 BEGIN
4644 x_status := OKC_API.G_RET_STS_SUCCESS;
4645 IF p_cle_id IS NOT NULL THEN
4646 FOR cur_total_amount IN total_amount(g_chr_id)
4647 LOOP
4648 l_chrv_tbl_in(1).id := g_chr_id;
4649 l_chrv_tbl_in(1).estimated_amount := cur_total_amount.SUM;
4650 okc_contract_pub.update_contract_header (
4651 p_api_version => l_api_version,
4652 p_init_msg_list => l_init_msg_list,
4653 x_return_status => l_return_status,
4654 x_msg_count => l_msg_count,
4655 x_msg_data => l_msg_data,
4656 p_chrv_tbl => l_chrv_tbl_in,
4657 x_chrv_tbl => l_chrv_tbl_out );
4658 x_status := l_return_status;
4659 END LOOP;
4660 END IF;
4661 END update_header_amount;
4662
4663 PROCEDURE CopyService(p_api_version IN NUMBER
4664 , p_init_msg_list IN VARCHAR2
4665 , p_source_rec IN copy_source_rec
4666 , p_target_tbl IN copy_target_tbl
4667 , x_return_status OUT NOCOPY VARCHAR2
4668 , x_msg_count OUT NOCOPY NUMBER
4669 , x_msg_data OUT NOCOPY VARCHAR2
4670 , p_change_status IN VARCHAR2) -- Added an additional flag parameter, p_change_status,
4671 -- to decide whether to allow change of status of sublines
4672 -- of the topline during update service
4673 IS
4674
4675 CURSOR header_cur IS
4676 SELECT dnz_chr_id, start_date, end_date, object_version_number, lse_id
4677 FROM okc_k_lines_b
4678 WHERE id = p_source_rec.cle_id;
4679
4680 CURSOR get_contract_modifier_cur (p_chr_id NUMBER)
4681 IS
4682 SELECT contract_number_modifier
4683 FROM okc_k_headers_b
4684 WHERE id = p_chr_id;
4685
4686
4687 l_target_tbl copy_target_tbl;
4688 idx NUMBER;
4689 l_rgp_id NUMBER;
4690 l_return_status VARCHAR2(20);
4691 l_rev_tbl OKS_REV_DISTR_PUB.rdsv_tbl_type;
4692 l_salescr_tbl OKS_SALES_CREDIT_PUB.scrv_tbl_type;
4693 l_msg_index NUMBER;
4694 l_msg_data VARCHAR2(2000);
4695 l_total_pct NUMBER := 0;
4696 l_rev_found BOOLEAN := FALSE;
4697 l_scr_found BOOLEAN := FALSE;
4698 l_top_line_number NUMBER := 0;
4699 G_ERROR EXCEPTION;
4700 l_object_version_number NUMBER;
4701
4702 --ADDED FOR Bug# 2364507
4703 l_covtemp_id NUMBER;
4704 l_cov_id NUMBER;
4705 l_start_date DATE;
4706 l_end_date DATE;
4707 --l_ac_rec OKS_COVERAGES_PUB.ac_rec_type;
4708 l_msg_count NUMBER;
4709 l_oie_id okc_operation_instances.id%TYPE;
4710 --ADDED FOR Bug# 2364507
4711 l_select_renewal_flag BOOLEAN;
4712 l_operation_lines_tbl opn_lines_tbl;
4713 l_contract_modifier okc_k_headers_b.contract_number_modifier%TYPE;
4714 l_init_msg_list VARCHAR2(1000);
4715 l_curr_price_negotiated_amt NUMBER;
4716 l_curr_sum_negotiated_amt NUMBER;
4717
4718
4719 --LLC
4720
4721 l_curr_cancelled_amt NUMBER;
4722 l_curr_sum_cancelled_amt NUMBER;
4723 l_topline_cancelled_amt NUMBER;
4724 l_prorated_cancelled_amt NUMBER;
4725 l_adjusted_prorated_amt NUMBER;
4726 l_cancelled_amt NUMBER;
4727 l_sum_price_negotiated_lines NUMBER;
4728 l_sum_cancelled_amt_lines NUMBER;
4729 l_topline_tax_amount NUMBER;
4730 l_curr_topline_tax_amt NUMBER;
4731 l_hdr_tax_amt NUMBER;
4732 l_curr_hdr_tax_amt NUMBER;
4733
4734 --LLC
4735
4736 l_lse_id NUMBER;
4737 l_api_components_tbl OKS_COPY_CONTRACT_PVT.api_components_tbl;
4738 l_lines_tbl OKS_COPY_CONTRACT_PVT.api_lines_tbl;
4739 l_published_line_ids_tbl_i NUMBER;
4740 l_published_line_ids_tbl OKS_COPY_CONTRACT_PVT.published_line_ids_tbl;
4741 lx_to_chr_id NUMBER;
4742
4743
4744 /* CURSOR rule_group_cur(p_cle_id IN NUMBER) IS
4745 SELECT id
4746 FROM okc_rule_groups_b
4747 WHERE cle_id = p_cle_id; */
4748
4749 CURSOR item_cur (p_cle_id IN NUMBER) IS
4750 SELECT object1_id1, object1_id2, jtot_object1_code
4751 FROM okc_k_items
4752 WHERE cle_id = p_cle_id;
4753
4754 item_rec item_cur%ROWTYPE;
4755
4756 --TAX
4757
4758 CURSOR get_price_negotiated_amt_csr (p_cle_id IN NUMBER) IS
4759 SELECT nvl(SUM(price_negotiated), 0) amt
4760 FROM okc_k_lines_b
4761 WHERE cle_id = p_cle_id
4762 AND date_cancelled IS NULL; ---Added condition to exclude cancelled sublines
4763
4764 get_price_negotiated_amt_rec get_price_negotiated_amt_csr%ROWTYPE;
4765
4766 CURSOR sum_price_negotiated_lines_csr (p_chr_id NUMBER) IS
4767 SELECT nvl(SUM(price_negotiated), 0) amt
4768 FROM okc_k_lines_b
4769 WHERE dnz_chr_id = p_chr_id
4770 AND cle_id IS NULL
4771 AND date_cancelled IS NULL; ---Added condition to exclude cancelled lines
4772
4773 CURSOR l_hdr_curr(p_chr_id IN NUMBER)
4774 IS
4775 SELECT currency_code
4776 FROM okc_k_headers_b
4777 WHERE id = p_chr_id;
4778
4779 l_curr_code VARCHAR2(3);
4780
4781 sum_price_negotiated_lines_rec sum_price_negotiated_lines_csr%ROWTYPE;
4782
4783 l_total NUMBER;
4784 l_Tax_Value NUMBER;
4785 l_AMOUNT_INCLUDES_TAX_FLAG VARCHAR2(1);
4786
4787 --LLC CANCELLED_AMOUNT
4788
4789 CURSOR sum_cancelled_amt_lines_csr (p_chr_id NUMBER) IS
4790 SELECT SUM(nvl(cancelled_amount, 0))
4791 FROM okc_k_lines_b
4792 WHERE dnz_chr_id = p_chr_id
4793 AND cle_id IS NULL;
4794
4795
4796 CURSOR get_topline_cancelled_amt (p_cle_id IN NUMBER) IS
4797 SELECT nvl(SUM(nvl(price_negotiated, 0)), 0) --BUG FIX 4758886 --Forced to return this query 0 value
4798 FROM okc_k_lines_b
4799 WHERE cle_id = p_cle_id
4800 AND date_cancelled IS NOT NULL; --Condition to consider only the cancelled sublines
4801
4802
4803
4804
4805 BEGIN
4806 l_target_tbl := p_target_tbl;
4807 IF l_target_tbl.COUNT = 0 THEN
4808 x_return_status := OKC_API.G_RET_STS_SUCCESS;
4809 RETURN;
4810 END IF;
4811 OPEN header_cur;
4812 FETCH header_cur INTO g_chr_id, l_start_date, l_end_date, l_object_version_number, l_lse_id ;
4813 CLOSE header_cur;
4814
4815 OPEN item_cur (p_source_rec.cle_id);
4816 FETCH item_cur INTO item_rec;
4817 CLOSE item_cur;
4818
4819 OPEN l_hdr_curr(g_chr_id);
4820 FETCH l_hdr_curr INTO l_curr_code;
4821 CLOSE l_hdr_curr;
4822
4823
4824 CreateOperationInstance(p_chr_id => g_chr_id
4825 , p_object1_id1 => item_rec.object1_id1
4826 , p_object1_id2 => item_rec.object1_id2
4827 , p_jtot_object1_code => item_rec.jtot_object1_code
4828 , x_return_status => l_return_status
4829 , x_oie_id => l_oie_id);
4830 --errorout('After CreateOperationInstance-'||l_return_status);
4831 IF l_return_status <> OKC_API.G_RET_STS_SUCCESS THEN
4832 x_return_status := l_return_status;
4833 RAISE G_ERROR;
4834 END IF;
4835
4836 --First copy the source line to create all target lines.
4837 idx := l_target_tbl.FIRST;
4838 -- The original source line will become the first target line.(so, don't copy)
4839 l_target_tbl(idx).cle_id := p_source_rec.cle_id;
4840 -- If there are more target lines then make copies of the source line for each
4841 -- and update the l_target_tbl with the new line id.
4842
4843 IF idx <> l_target_tbl.LAST THEN
4844 idx := l_target_tbl.NEXT(idx);
4845 get_rev_distr(p_source_rec.cle_id, l_rev_tbl);
4846 IF l_rev_tbl.COUNT > 0 THEN
4847 l_rev_found := TRUE;
4848 END IF;
4849 get_sales_cred(p_source_rec.cle_id, l_salescr_tbl);
4850 IF l_salescr_tbl.COUNT > 0 THEN
4851 l_scr_found := TRUE;
4852 END IF;
4853
4854 --Fix for bug#2221910 start. Get Max Of Top Lines.
4855
4856 SELECT nvl(MAX(to_number(line_number)), 0)
4857 INTO l_top_line_number
4858 FROM OKC_K_LINES_B
4859 WHERE dnz_chr_id = g_chr_id
4860 AND cle_id IS NULL;
4861 --Fix for bug#2221910 end.
4862
4863 LOOP
4864
4865 /***
4866 OKC_COPY_CONTRACT_PUB.copy_contract_lines(
4867 p_api_version => p_api_version,
4868 p_init_msg_list => p_init_msg_list,
4869 x_return_status => l_return_status,
4870 x_msg_count => x_msg_count,
4871 x_msg_data => x_msg_data,
4872 p_from_cle_id => p_source_rec.cle_id,
4873 p_to_chr_id => g_chr_id,
4874 x_cle_id => l_target_tbl(idx).cle_id,
4875 p_change_status => p_change_status); -- Added an additional flag parameter, p_change_status,
4876 -- to decide whether to allow change of status of sublines
4877 -- of the topline during update service
4878
4879 --errorout('After copy_contract_lines-'||l_return_status);
4880 IF l_return_status <> OKC_API.G_RET_STS_SUCCESS THEN
4881 x_return_status := l_return_status;
4882 RAISE G_ERROR;
4883 ELSE
4884 OKS_SETUP_UTIL_PUB.Okscopy
4885 (p_chr_id => g_chr_id,
4886 p_cle_id => NULL,
4887 x_return_status => l_return_status,
4888 p_upd_line_flag => 'Y',
4889 p_bill_profile_flag => NULL
4890 );
4891 --errorout('After OKSCOPY-'||l_return_status);
4892 END IF;
4893 ***/
4894
4895 --replaced above call with call to new copy API. This will ensure that all new R12 columns will be correctly copied.
4896 --Bug 4747648
4897 l_lines_tbl(1).id := p_source_rec.cle_id;
4898 l_lines_tbl(1).to_k := NULL;
4899 l_lines_tbl(1).to_line := NULL;
4900 l_lines_tbl(1).lse_id := l_lse_id;
4901 l_lines_tbl(1).line_exists_yn := NULL;
4902 l_lines_tbl(1).line_exp_yn := 'Y'; -- this will make sure all sublines are copied
4903
4904 OKS_COPY_CONTRACT_PVT.copy_components (
4905 p_api_version => p_api_version,
4906 p_init_msg_list => p_init_msg_list,
4907 x_return_status => l_return_status,
4908 x_msg_count => x_msg_count,
4909 x_msg_data => x_msg_data,
4910 p_from_chr_id => g_chr_id,
4911 p_to_chr_id => g_chr_id,
4912 p_contract_number => NULL,
4913 p_contract_number_modifier => NULL,
4914 p_to_template_yn => 'N',
4915 p_components_tbl => l_api_components_tbl, --empty
4916 p_lines_tbl => l_lines_tbl,
4917 p_change_status_YN => p_change_status, -- Added an additional flag parameter, p_change_status
4918 -- to decide whether to allow change of status of sublines
4919 -- of the topline during update service
4920 p_return_new_top_line_ID_YN => 'Y',
4921 x_to_chr_id => lx_to_chr_id,
4922 p_published_line_ids_tbl => l_published_line_ids_tbl
4923 );
4924
4925 l_published_line_ids_tbl_i := l_published_line_ids_tbl.FIRST;
4926 l_target_tbl(idx).cle_id := l_published_line_ids_tbl(l_published_line_ids_tbl_i).new_line_id;
4927 --end Bug 4747648
4928
4929 IF l_return_status <> OKC_API.G_RET_STS_SUCCESS THEN
4930 x_return_status := l_return_status;
4931 RAISE G_ERROR;
4932 END IF;
4933
4934 --Fix for bug#2221910 start. Update Top Line Sequence number.
4935
4936 l_top_line_number := l_top_line_number + 1;
4937 UPDATE okc_k_lines_b SET line_number = l_top_line_number
4938 WHERE id = l_target_tbl(idx).cle_id;
4939 --Fix for bug#2221910 end.
4940
4941 IF l_return_status <> OKC_API.G_RET_STS_SUCCESS THEN
4942 x_return_status := l_return_status;
4943 RAISE G_ERROR;
4944 END IF;
4945
4946
4947
4948 /************* Commented out because this is being taken care of by OKSCOPY
4949
4950 IF l_rev_found THEN
4951 create_rev_distr(l_target_tbl(idx).cle_id, l_rev_tbl, l_return_status);
4952 IF l_return_status <> OKC_API.G_RET_STS_SUCCESS THEN
4953 x_return_status := l_return_status;
4954 RAISE G_ERROR;
4955 END IF;
4956 END IF;
4957 IF l_scr_found THEN
4958 create_sales_cred(l_target_tbl(idx).cle_id, l_salescr_tbl, l_return_status);
4959 IF l_return_status <> OKC_API.G_RET_STS_SUCCESS THEN
4960 x_return_status := l_return_status;
4961 RAISE G_ERROR;
4962 END IF;
4963 END IF; **********/
4964
4965
4966 EXIT WHEN idx = l_target_tbl.LAST;
4967 idx := l_target_tbl.NEXT(idx);
4968 END LOOP;
4969 END IF;
4970 -- Now update each target line with the new item id, amount et cetera.
4971 idx := l_target_tbl.FIRST;
4972 LOOP
4973 update_line_item(l_target_tbl(idx).cle_id, l_target_tbl(idx).item_id, l_return_status);
4974 --errorout('After update_line_item-'||l_return_status);
4975 IF l_return_status <> OKC_API.G_RET_STS_SUCCESS THEN
4976 x_return_status := l_return_status;
4977 RAISE G_ERROR;
4978 END IF;
4979
4980 IF l_target_tbl(idx).percentage <> 100 THEN
4981
4982 --LLC
4983
4984 --Changes to p_amount being passed when prorated_amount procedure is called, so that p_amount
4985 --also contains prorated cancelled_amount along with prorated price_negotiated of topline
4986 --the new adjdusted prorated amount is stored in l_adjusted_prorated_amt
4987
4988 OPEN get_topline_cancelled_amt(l_target_tbl(idx).cle_id);
4989 FETCH get_topline_cancelled_amt INTO l_topline_cancelled_amt;
4990 CLOSE get_topline_cancelled_amt;
4991
4992 l_prorated_cancelled_amt := l_topline_cancelled_amt * l_target_tbl(idx).percentage / 100.0;
4993 l_adjusted_prorated_amt := l_target_tbl(idx).amount + l_prorated_cancelled_amt;
4994
4995 prorate_amount(l_target_tbl(idx).cle_id, l_target_tbl(idx).percentage, l_adjusted_prorated_amt, l_return_status);
4996
4997 --LLC
4998
4999 --errorout('After prorate_amount-'||l_return_status);
5000 IF l_return_status <> OKC_API.G_RET_STS_SUCCESS THEN
5001 x_return_status := l_return_status;
5002 RAISE G_ERROR;
5003 END IF;
5004
5005 refresh_bill_sch(l_target_tbl(idx).cle_id, l_return_status);
5006 --errorout('After refresh_bill_sch-'||l_return_status);
5007 IF l_return_status <> OKC_API.G_RET_STS_SUCCESS THEN
5008 x_return_status := l_return_status;
5009 RAISE G_ERROR;
5010 END IF;
5011 END IF;
5012
5013 -- Start Bug# 2701879
5014 l_contract_modifier := NULL;
5015
5016 OPEN get_contract_modifier_cur (g_chr_id);
5017 FETCH get_contract_modifier_cur INTO l_contract_modifier;
5018 CLOSE get_contract_modifier_cur;
5019 --Call procedure to get date_renewed of header and lines
5020 --if modifier exists
5021 --
5022 IF l_contract_modifier IS NOT NULL
5023 THEN
5024 select_renewal_info
5025 (p_chr_id => g_chr_id,
5026 x_operation_lines_tbl => l_operation_lines_tbl
5027 );
5028 l_select_renewal_flag := TRUE;
5029 ELSE
5030 l_select_renewal_flag := FALSE;
5031 END IF;
5032
5033 -- Start Bug# 2701879
5034
5035 --ADDED FOR Bug# 2364507
5036 l_cov_id := GetCoverage(l_target_tbl(idx).cle_id);
5037
5038 IF l_cov_id IS NOT NULL
5039 THEN
5040 OKS_COVERAGES_PUB.Undo_Line
5041 (p_api_version => 1.0
5042 , p_init_msg_list => 'T'
5043 , x_return_status => l_return_status
5044 , x_msg_count => l_msg_count
5045 , x_msg_data => l_msg_data
5046 , p_line_id => l_cov_id);
5047 --errorout('After Undo_Line-'||l_return_status);
5048 IF l_return_status <> OKC_API.G_RET_STS_SUCCESS THEN
5049 x_return_status := l_return_status;
5050 RAISE G_ERROR;
5051 END IF;
5052 END IF;
5053
5054 --start bug#2701879
5055 --Call procedure to update date_renewed of header and lines
5056 --if modifier exists
5057 --
5058 IF l_select_renewal_flag
5059 THEN
5060 IF l_operation_lines_tbl.COUNT > 0
5061 THEN
5062 update_renewal_info
5063 (p_operation_lines_tbl => l_operation_lines_tbl,
5064 x_return_status => l_return_status,
5065 x_msg_count => l_msg_count,
5066 x_msg_data => l_msg_data
5067 );
5068 --errorout('After update_renewal_info-'||l_return_status);
5069 END IF;
5070 END IF;
5071 --
5072 IF l_return_status <> OKC_API.G_RET_STS_SUCCESS THEN
5073 x_return_status := l_return_status;
5074 RAISE G_ERROR;
5075 END IF;
5076
5077 --end bug#2701879
5078
5079 l_covtemp_id := GetCoverageTemplate(l_target_tbl(idx).item_id);
5080
5081 IF l_covtemp_id IS NOT NULL
5082 THEN
5083 /**
5084 l_ac_rec.svc_cle_id := l_target_tbl(idx).cle_id;
5085 l_ac_rec.tmp_cle_id := l_covtemp_id;
5086 l_ac_rec.start_date := l_start_date;
5087 l_ac_rec.end_date := l_end_date;
5088
5089 OKS_COVERAGES_PUB.create_actual_coverage
5090 (p_api_version => 1.0
5091 ,p_init_msg_list => 'T'
5092 ,p_ac_rec_in => l_ac_rec
5093 ,x_return_status => l_return_status
5094 ,x_msg_count => l_msg_count
5095 ,x_msg_data => l_msg_data
5096 ,x_actual_coverage_id => l_cov_id);
5097 --errorout('After create_actual_coverage-'||l_return_status);
5098 IF l_return_status <> OKC_API.G_RET_STS_SUCCESS THEN
5099 x_return_status := l_return_status;
5100 RAISE G_ERROR;
5101 END IF;
5102 **/
5103 --Bug 4718226: need to create standard coverage to service line after split
5104 UPDATE oks_k_lines_b
5105 SET coverage_id = l_covtemp_id,
5106 standard_cov_yn = 'Y'
5107 WHERE cle_id = l_target_tbl(idx).cle_id;
5108
5109
5110 END IF;
5111 l_covtemp_id := NULL;
5112 l_cov_id := NULL;
5113
5114 --LLC Earlier: Call made to UpdateIRTRule and then UpdateIRTRule_Subline
5115 --LLC Now: Call made to UpdateIRTRule_Subline and then to UpdateIRTRule
5116
5117 UpdateIRTRule_Subline(p_cle_id => l_target_tbl(idx).cle_id
5118 , p_item_desc => l_target_tbl(idx).item_desc
5119 , p_start_date => l_start_date
5120 , p_end_date => l_end_date
5121 , x_return_status => l_return_status);
5122 --errorout('After UpdateIRTRule_SubLine-'||l_return_status);
5123 IF l_return_status <> OKC_API.G_RET_STS_SUCCESS THEN
5124 x_return_status := l_return_status;
5125 RAISE G_ERROR;
5126 END IF;
5127 --ADDED FOR Bug# 2364507
5128
5129
5130 UpdateIRTRule(p_chr_id => g_chr_id
5131 , p_cle_id => l_target_tbl(idx).cle_id --LLC ealier: p_source_rec.cle_id
5132 , p_invoice_text => GetFormattedInvoiceText
5133 (l_target_tbl(idx).item_desc, l_start_date, l_end_date)
5134 , p_api_version => 1.0
5135 , p_init_msg_list => l_init_msg_list
5136 , x_return_status => l_return_status
5137 , x_tax_value => l_tax_value
5138 , x_AMOUNT_INCLUDES_TAX_FLAG => l_AMOUNT_INCLUDES_TAX_FLAG
5139 , x_total => l_total);
5140
5141 --errorout('After UpdateIRTRule-'||l_return_status);
5142
5143 IF l_return_status <> OKC_API.G_RET_STS_SUCCESS THEN
5144 x_return_status := l_return_status;
5145 RAISE G_ERROR;
5146 END IF;
5147
5148
5149
5150 --*
5151
5152 --price_negotiated for the topline
5153
5154 OPEN get_price_negotiated_amt_csr(l_target_tbl(idx).cle_id);
5155 FETCH get_price_negotiated_amt_csr INTO get_price_negotiated_amt_rec;
5156 CLOSE get_price_negotiated_amt_csr;
5157
5158 l_curr_price_negotiated_amt := OKS_EXTWAR_UTIL_PVT.Round_Currency_amt
5159 (get_price_negotiated_amt_rec.amt,
5160 l_curr_code
5161 );
5162
5163 --LLC
5164
5165 --CANCELLED_AMOUNT for the topline
5166
5167 OPEN get_topline_cancelled_amt(l_target_tbl(idx).cle_id);
5168 FETCH get_topline_cancelled_amt INTO l_cancelled_amt;
5169 CLOSE get_topline_cancelled_amt;
5170
5171
5172 l_curr_cancelled_amt := OKS_EXTWAR_UTIL_PVT.Round_Currency_amt
5173 (l_cancelled_amt,
5174 l_curr_code
5175 );
5176 --Updating topline with the price_negotiated and cancelled_amount
5177
5178 UPDATE okc_k_lines_b
5179 SET price_negotiated = l_curr_price_negotiated_amt,
5180 cancelled_amount = l_curr_cancelled_amt
5181 WHERE id = l_target_tbl(idx).cle_id;
5182
5183 --Estimated_amount for the header
5184
5185 OPEN sum_price_negotiated_lines_csr(g_chr_id);
5186 FETCH sum_price_negotiated_lines_csr INTO l_sum_price_negotiated_lines;
5187 CLOSE sum_price_negotiated_lines_csr;
5188
5189
5190 l_curr_sum_negotiated_amt := OKS_EXTWAR_UTIL_PVT.Round_Currency_amt
5191 (l_sum_price_negotiated_lines,
5192 l_curr_code
5193
5194 );
5195
5196 --CANCELLED_AMOUNT for contract
5197
5198 OPEN sum_cancelled_amt_lines_csr(g_chr_id);
5199 FETCH sum_cancelled_amt_lines_csr INTO l_sum_cancelled_amt_lines;
5200 CLOSE sum_cancelled_amt_lines_csr;
5201
5202
5203 l_curr_sum_cancelled_amt := OKS_EXTWAR_UTIL_PVT.Round_Currency_amt
5204 (l_sum_cancelled_amt_lines,
5205 l_curr_code
5206 );
5207
5208 --Updating Header with the estimated_amount and cancelled_amount
5209
5210 UPDATE okc_k_headers_b
5211 SET estimated_amount = l_curr_sum_negotiated_amt,
5212 cancelled_amount = l_curr_sum_cancelled_amt
5213 WHERE id = g_chr_id;
5214
5215 --LLC
5216
5217
5218
5219 --*
5220 --errorout('Calling CreateOperationlines');
5221 CreateOperationLines(p_chr_id => g_chr_id
5222 , p_object_line_id => p_source_rec.cle_id
5223 , p_subject_line_id => l_target_tbl(idx).cle_id
5224 , p_oie_id => l_oie_id
5225 , x_return_status => l_return_status);
5226
5227 --errorout('After CreateOperationlines-'||l_return_status);
5228 IF l_return_status <> OKC_API.G_RET_STS_SUCCESS THEN
5229 x_return_status := l_return_status;
5230 RAISE G_ERROR;
5231 END IF;
5232 l_total_pct := l_total_pct + l_target_tbl(idx).percentage;
5233 EXIT WHEN idx = l_target_tbl.LAST;
5234 idx := l_target_tbl.NEXT(idx);
5235 END LOOP;
5236 IF l_total_pct <> 100 THEN
5237 update_header_amount(p_source_rec.cle_id, l_return_status);
5238 --errorout('After update_header-'||l_return_status);
5239 IF l_return_status <> OKC_API.G_RET_STS_SUCCESS THEN
5240 x_return_status := l_return_status;
5241 RAISE G_ERROR;
5242 END IF;
5243 END IF;
5244 x_return_status := OKC_API.G_RET_STS_SUCCESS;
5245 EXCEPTION
5246 WHEN G_ERROR THEN
5247 NULL;
5248 WHEN OTHERS THEN
5249 OKC_API.set_message(OKC_API.G_APP_NAME,
5250 'OKS_UNEXP_ERROR',
5251 'SQLcode',
5252 SQLCODE,
5253 'SQLerrm',
5254 SQLERRM);
5255 -- notify caller of an UNEXPECTED error
5256 x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
5257 END CopyService;
5258
5259
5260 -- Begin modifications for new HZ_CONTACT_POINTS_V2PUB for TCA uptake, aiyengar 11/20/02
5261
5262
5263 PROCEDURE Create_Contact_Points
5264 (
5265 p_api_version IN NUMBER,
5266 p_init_msg_list IN VARCHAR2,
5267 p_commit IN VARCHAR2,
5268 P_contact_point_rec IN contact_point_rec,
5269 x_return_status OUT NOCOPY VARCHAR2,
5270 x_msg_count OUT NOCOPY NUMBER,
5271 x_msg_data OUT NOCOPY VARCHAR2,
5272 x_contact_point_id OUT NOCOPY NUMBER)
5273 IS
5274
5275 l_contact_point_rec HZ_CONTACT_POINT_V2PUB.CONTACT_POINT_REC_TYPE;
5276 l_email_rec_type HZ_CONTACT_POINT_V2PUB.EMAIL_REC_TYPE;
5277 l_phone_rec_type HZ_CONTACT_POINT_V2PUB.PHONE_REC_TYPE;
5278 l_web_rec_type HZ_CONTACT_POINT_V2PUB.WEB_REC_TYPE ;
5279 l_telex_rec_type HZ_CONTACT_POINT_V2PUB.TELEX_REC_TYPE;
5280 l_edi_rec_type HZ_CONTACT_POINT_V2PUB.EDI_REC_TYPE;
5281
5282 G_ERROR EXCEPTION;
5283
5284 BEGIN
5285
5286 --commented out intialization for bug#3392035
5287 --l_contact_point_rec.contact_point_id := FND_API.G_MISS_NUM;
5288
5289 l_contact_point_rec.contact_point_id := p_contact_point_rec.contact_point_id;
5290 l_contact_point_rec.contact_point_type := p_contact_point_rec.contact_point_type;
5291 l_contact_point_rec.status := p_contact_point_rec.status;
5292 l_contact_point_rec.owner_table_name := p_contact_point_rec.owner_table_name;
5293 l_contact_point_rec.owner_table_id := p_contact_point_rec.owner_table_id;
5294 l_contact_point_rec.primary_flag := p_contact_point_rec.primary_flag;
5295
5296 l_contact_point_rec.created_by_module := 'OKS_AUTH';
5297
5298 IF l_contact_point_rec.contact_point_type = 'EMAIL' THEN
5299 l_email_rec_type.email_address := p_contact_point_rec.email_address;
5300 ELSIF l_contact_point_rec.contact_point_type IN('PHONE', 'FAX', 'MOBILE') THEN
5301 IF l_contact_point_rec.contact_point_type = 'PHONE' THEN
5302 l_phone_rec_type.phone_line_type := 'GEN';
5303 ELSIF l_contact_point_rec.contact_point_type = 'FAX' THEN
5304 l_contact_point_rec.contact_point_type := 'PHONE';
5305 l_phone_rec_type.phone_line_type := 'FAX';
5306 ELSIF l_contact_point_rec.contact_point_type = 'MOBILE' THEN -- added for contact creation
5307 l_contact_point_rec.contact_point_type := 'PHONE'; -- added for contact creation
5308 l_phone_rec_type.phone_line_type := 'MOBILE'; -- added for contact creation
5309 END IF;
5310 l_phone_rec_type.phone_number := p_contact_point_rec.email_address;
5311 --Added following codition to make area code null if area code having no value 3392035
5312 IF p_contact_point_rec.area_code IS NULL
5313 THEN
5314 l_phone_rec_type.phone_area_code := FND_API.G_MISS_CHAR;
5315 ELSE
5316 l_phone_rec_type.phone_area_code := p_contact_point_rec.area_code;
5317 END IF;
5318 -- added for contact creation
5319 IF p_contact_point_rec.phone_country_code IS NULL
5320 THEN
5321 l_phone_rec_type.phone_country_code := FND_API.G_MISS_CHAR; -- added for contact creation
5322 ELSE
5323 l_phone_rec_type.phone_country_code := p_contact_point_rec.phone_country_code; -- added for contact creation
5324 END IF;
5325 --contact creation end
5326
5327 END IF;
5328
5329 HZ_CONTACT_POINT_V2PUB.create_contact_point (
5330 p_init_msg_list => p_init_msg_list,
5331 p_contact_point_rec => l_contact_point_rec,
5332 p_email_rec => l_email_rec_type,
5333 p_phone_rec => l_phone_rec_type,
5334 x_contact_point_id => x_contact_point_id,
5335 x_return_status => x_return_status,
5336 x_msg_count => x_msg_count,
5337 x_msg_data => x_msg_data
5338 );
5339
5340 IF x_return_status <> 'S' THEN
5341 RAISE G_ERROR;
5342 END IF;
5343
5344 EXCEPTION
5345 WHEN G_ERROR THEN
5346 NULL;
5347 WHEN OTHERS THEN
5348 x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
5349 OKC_API.set_message
5350 (OKC_API.G_APP_NAME,
5351 G_UNEXPECTED_ERROR,
5352 G_SQLCODE_TOKEN,
5353 SQLCODE,
5354 G_SQLERRM_TOKEN,
5355 SQLERRM);
5356 END Create_Contact_Points;
5357
5358 PROCEDURE Update_Contact_Points
5359 (
5360 p_api_version IN NUMBER,
5361 p_init_msg_list IN VARCHAR2,
5362 P_commit IN VARCHAR2,
5363 P_contact_point_rec IN contact_point_rec,
5364 x_return_status OUT NOCOPY VARCHAR2,
5365 x_msg_count OUT NOCOPY NUMBER,
5366 x_msg_data OUT NOCOPY VARCHAR2)
5367 IS
5368 l_object_Version_number NUMBER := 1 ;
5369 l_contact_point_rec HZ_CONTACT_POINT_V2PUB.CONTACT_POINT_REC_TYPE;
5370 l_email_rec_type HZ_CONTACT_POINT_V2PUB.EMAIL_REC_TYPE;
5371 l_phone_rec_type HZ_CONTACT_POINT_V2PUB.PHONE_REC_TYPE;
5372 G_ERROR EXCEPTION;
5373
5374 CURSOR l_cpoint_csr IS
5375 SELECT last_update_date, object_version_number, contact_point_type
5376 FROM HZ_CONTACT_POINTS
5377 WHERE contact_point_id = P_contact_point_rec.contact_point_id;
5378
5379 l_cpoint_rec l_cpoint_csr%ROWTYPE;
5380
5381 BEGIN
5382
5383 l_contact_point_rec.contact_point_id := P_contact_point_rec.contact_point_id;
5384
5385 OPEN l_cpoint_csr;
5386 FETCH l_cpoint_csr INTO l_cpoint_rec;
5387 CLOSE l_cpoint_csr;
5388
5389 IF l_cpoint_rec.contact_point_type = 'EMAIL' THEN
5390 l_email_rec_type.email_address := p_contact_point_rec.email_address;
5391 ELSIF l_cpoint_rec.contact_point_type IN ('PHONE', 'FAX') THEN
5392 l_phone_rec_type.phone_number := p_contact_point_rec.email_address;
5393
5394 --ADDED following condition to make area code null 3392035
5395 IF p_contact_point_rec.area_code IS NULL
5396 THEN
5397 l_phone_rec_type.phone_area_code := FND_API.G_MISS_CHAR;
5398 ELSE
5399 l_phone_rec_type.phone_area_code := p_contact_point_rec.area_code;
5400 END IF;
5401 -- added for contact creation OCT 2004
5402 IF p_contact_point_rec.phone_country_code IS NULL
5403 THEN
5404 l_phone_rec_type.phone_country_code := FND_API.G_MISS_CHAR; -- added for contact creation
5405 ELSE
5406 l_phone_rec_type.phone_country_code := p_contact_point_rec.phone_country_code; -- added for contact creation
5407 END IF;
5408 --contact creation end OCT 2004
5409
5410 END IF;
5411 l_object_version_number := l_cpoint_rec.object_Version_number;
5412
5413 HZ_CONTACT_POINT_V2PUB.update_contact_point (
5414 p_init_msg_list => p_init_msg_list,
5415 p_contact_point_rec => l_contact_point_rec,
5416 p_email_rec => l_email_rec_type,
5417 p_phone_rec => l_phone_rec_type,
5418 x_return_status => x_return_status,
5419 x_msg_count => x_msg_count,
5420 x_msg_data => x_msg_data,
5421 p_object_version_number => l_object_version_number
5422 );
5423 IF x_return_status <> 'S' THEN
5424 RAISE G_ERROR;
5425 END IF;
5426
5427 EXCEPTION
5428 WHEN G_ERROR THEN
5429 NULL;
5430 WHEN OTHERS THEN
5431 x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
5432 OKC_API.set_message
5433 (OKC_API.G_APP_NAME,
5434 G_UNEXPECTED_ERROR,
5435 G_SQLCODE_TOKEN,
5436 SQLCODE,
5437 G_SQLERRM_TOKEN,
5438 SQLERRM);
5439
5440 END Update_Contact_Points;
5441
5442 -- End modifications for new HZ_CONTACT_POINTS_V2PUB for TCA uptake, aiyengar 11/20/02
5443
5444 PROCEDURE CreateOperationInstance(p_chr_id IN NUMBER
5445 , p_object1_id1 IN VARCHAR2
5446 , p_object1_id2 IN VARCHAR2
5447 , p_jtot_object1_code IN VARCHAR2
5448 , x_return_status OUT NOCOPY VARCHAR2
5449 , x_oie_id OUT NOCOPY NUMBER)
5450 IS
5451
5452 CURSOR c_clopn_split_csr IS
5453 SELECT id
5454 FROM okc_class_operations
5455 WHERE CLS_CODE = 'SERVICE'
5456 AND OPN_CODE = 'SPLIT';
5457
5458 l_split_Id NUMBER := NULL;
5459
5460 l_api_version NUMBER := 1.0;
5461 l_init_msg_list VARCHAR2(1) := G_TRUE;
5462 l_return_status VARCHAR2(1) := G_RET_STS_SUCCESS;
5463 l_msg_count NUMBER;
5464 l_msg_data VARCHAR2(2000);
5465
5466 l_oiev_tbl OKC_OPER_INST_PVT.oiev_tbl_type;
5467 x_oiev_tbl OKC_OPER_INST_PVT.oiev_tbl_type;
5468
5469 BEGIN
5470
5471 OPEN c_clopn_split_csr;
5472 FETCH c_clopn_split_csr INTO l_split_id;
5473 CLOSE c_clopn_split_csr;
5474 IF l_split_id IS NULL THEN
5475 x_return_status := G_RET_STS_ERROR;
5476 OKC_API.set_message(G_APP_NAME_OKS, 'OKS_CLS_OPN_NOT_FOUND');
5477 RAISE G_ERROR;
5478 END IF;
5479
5480 l_oiev_tbl(1).cop_id := l_split_id;
5481 l_oiev_tbl(1).status_code := 'PROCESSED';
5482 l_oiev_tbl(1).target_chr_id := p_chr_id;
5483 l_oiev_tbl(1).object1_id1 := p_object1_id1;
5484 l_oiev_tbl(1).object1_id2 := p_object1_id2;
5485 l_oiev_tbl(1).jtot_object1_code := p_jtot_object1_code;
5486 OKC_OPER_INST_PUB.Create_Operation_Instance
5487 (p_api_version => l_api_version
5488 , p_init_msg_list => l_init_msg_list
5489 , x_return_status => l_return_status
5490 , x_msg_count => l_msg_count
5491 , x_msg_data => l_msg_data
5492 , p_oiev_tbl => l_oiev_tbl
5493 , x_oiev_tbl => x_oiev_tbl);
5494 IF l_return_status <> G_RET_STS_SUCCESS THEN
5495 x_return_status := l_return_status;
5496 RAISE G_ERROR;
5497 END IF;
5498
5499 --BUG#4066428 hkamdar 01/21/05
5500 x_return_status := l_return_status;
5501 --End BUG#4066428
5502 x_oie_id := x_oiev_tbl(1).id;
5503 EXCEPTION
5504 WHEN G_ERROR THEN
5505 NULL;
5506 WHEN OTHERS THEN
5507 OKC_API.set_message(G_APP_NAME_OKS,
5508 'OKS_UNEXP_ERROR',
5509 'SQLcode',
5510 SQLCODE,
5511 'SQLerrm',
5512 SQLERRM);
5513 -- notify caller of an UNEXPECTED error
5514 x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
5515 END CreateOperationInstance;
5516
5517 PROCEDURE CreateOperationLines(p_chr_id IN NUMBER
5518 , p_object_line_id IN NUMBER
5519 , p_subject_line_id IN NUMBER
5520 , p_oie_id IN NUMBER
5521 --BUG#4066428 01/24/05 hkamdar
5522 --,x_return_status OUT NOCOPY NUMBER)
5523 , x_return_status OUT NOCOPY VARCHAR2)
5524 --End BUG#4066428 01/24/05 hkamdar
5525 IS
5526 l_api_version NUMBER := 1.0;
5527 l_init_msg_list VARCHAR2(1) := G_TRUE;
5528 l_return_status VARCHAR2(1) := G_RET_STS_SUCCESS;
5529 l_msg_count NUMBER;
5530 l_msg_data VARCHAR2(2000);
5531 l_olev_tbl OKC_OPER_INST_PVT.olev_tbl_type;
5532 x_olev_tbl OKC_OPER_INST_PVT.olev_tbl_type;
5533 BEGIN
5534 -- errorout('In Operation Lines');
5535 l_olev_tbl(1).oie_id := p_oie_id;
5536 l_olev_tbl(1).subject_chr_id := p_chr_id;
5537 l_olev_tbl(1).object_chr_id := p_chr_id;
5538 l_olev_tbl(1).subject_cle_id := p_subject_line_id;
5539 l_olev_tbl(1).object_cle_id := p_object_line_id;
5540 OKC_OPER_INST_PUB.Create_Operation_Line
5541 (p_api_version => l_api_version
5542 , p_init_msg_list => l_init_msg_list
5543 , x_return_status => l_return_status
5544 , x_msg_count => l_msg_count
5545 , x_msg_data => l_msg_data
5546 , p_olev_tbl => l_olev_tbl
5547 , x_olev_tbl => x_olev_tbl);
5548
5549 -- errorout('After calling Create_Operation_Line in OPLINES-'||l_return_status);
5550 IF l_return_status <> G_RET_STS_SUCCESS THEN
5551 x_return_status := l_return_status;
5552 RAISE G_ERROR;
5553 END IF;
5554
5555 --BUG#4066428 hkamdar 01/21/05
5556 x_return_status := l_return_status;
5557 --End BUG#4066428
5558 --errorout('End CreateOperationlines');
5559 EXCEPTION
5560 WHEN G_ERROR THEN
5561 NULL;
5562 WHEN OTHERS THEN
5563 OKC_API.set_message(G_APP_NAME_OKS,
5564 'OKS_UNEXP_ERROR',
5565 'SQLcode',
5566 SQLCODE,
5567 'SQLerrm',
5568 SQLERRM);
5569 -- notify caller of an UNEXPECTED error
5570 x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
5571 END CreateOperationLines;
5572
5573
5574 PROCEDURE CREATE_CII_FOR_SUBSCRIPTION
5575 (
5576 p_api_version IN NUMBER,
5577 p_init_msg_list IN VARCHAR2,
5578 x_return_status OUT NOCOPY VARCHAR2,
5579 x_msg_count OUT NOCOPY NUMBER,
5580 x_msg_data OUT NOCOPY VARCHAR2,
5581 p_cle_id IN NUMBER,
5582 p_quantity IN NUMBER DEFAULT 1,
5583 x_instance_id OUT NOCOPY NUMBER
5584
5585 )
5586
5587 IS
5588
5589 p_instance_rec CSI_DATASTRUCTURES_PUB.INSTANCE_REC;
5590 p_ext_attrib_values_tbl CSI_DATASTRUCTURES_PUB.EXTEND_ATTRIB_VALUES_TBL;
5591 p_party_tbl CSI_DATASTRUCTURES_PUB.PARTY_TBL;
5592 p_account_tbl CSI_DATASTRUCTURES_PUB.PARTY_ACCOUNT_TBL;
5593 p_pricing_attrib_tbl CSI_DATASTRUCTURES_PUB.PRICING_ATTRIBS_TBL;
5594 p_org_assignments_tbl CSI_DATASTRUCTURES_PUB.ORGANIZATION_UNITS_TBL;
5595 p_asset_assignment_tbl CSI_DATASTRUCTURES_PUB.INSTANCE_ASSET_TBL;
5596 p_txn_rec CSI_DATASTRUCTURES_PUB.TRANSACTION_REC;
5597
5598 t_output VARCHAR2(2000);
5599 t_msg_dummy NUMBER;
5600
5601 CURSOR l_get_item_id(p_cle_id IN NUMBER)
5602 IS
5603 SELECT object1_id1, object1_id2, dnz_chr_id, uom_code
5604 FROM okc_k_items
5605 WHERE cle_id = p_cle_id;
5606
5607
5608 CURSOR l_csr_Get_party_sites(p_party_id IN NUMBER)
5609 IS
5610 SELECT party_site_id
5611 FROM HZ_PARTY_SITES
5612 WHERE party_id = p_party_id
5613 AND identifying_address_flag = 'Y';
5614
5615 -- Get customer account id
5616 CURSOR l_csr_get_cust_acct_id(p_cle_id IN NUMBER)
5617 IS
5618 SELECT cust_acct_id
5619 FROM okc_k_lines_b
5620 WHERE id = p_cle_id;
5621
5622
5623 CURSOR l_Get_party_id(p_cust_acct_id IN NUMBER)
5624 IS
5625 SELECT party_id
5626 FROM HZ_CUST_ACCOUNTS
5627 WHERE cust_account_id = p_cust_acct_id;
5628
5629
5630 /*** Fetch inventory revision code **/
5631
5632 CURSOR l_csr_chk_revision_control(p_item_id IN NUMBER, p_organization_id IN NUMBER)
5633 IS
5634 SELECT revision_qty_control_code
5635 FROM mtl_system_items_kfv
5636 WHERE inventory_item_id = p_item_id
5637 AND organization_id = p_organization_id;
5638
5639
5640 CURSOR l_csr_get_item_revision(p_item_id IN NUMBER, p_organization_id IN NUMBER)
5641 IS
5642 SELECT revision
5643 FROM MTL_ITEM_REVISIONS_VL
5644 WHERE inventory_item_id = p_item_id
5645 AND organization_id = p_organization_id;
5646
5647
5648 /* Cursors for traversing logic to get site id */
5649 /* Fetch ship_to_site_use_id and bill_to_site_use_id */
5650
5651
5652 l_inv_item_id OKX_system_items_v.id1%TYPE;
5653 l_inv_organization_id NUMBER;
5654 l_dnz_chr_id NUMBER;
5655 l_party_id NUMBER;
5656 l_uom OKC_K_ITEMS.uom_code%TYPE;
5657 l_party_site_id HZ_PARTY_SITES.party_site_id%TYPE;
5658 l_rgp_id OKC_RULE_GROUPS_B.id%TYPE;
5659 l_cust_acct_id OKX_CUSTOMER_ACCOUNTS_V.id1%TYPE;
5660
5661
5662 l_revision_control_yn MTL_SYSTEM_ITEMS_KFV.revision_qty_control_code%TYPE;
5663 l_revision MTL_ITEM_REVISIONS_VL.revision%TYPE;
5664 l_ship_to_site_use_id OKC_K_HEADERS_B.ship_to_site_use_id%TYPE;
5665 l_bill_to_site_use_id OKC_K_HEADERS_B.bill_to_site_use_id%TYPE;
5666
5667 FUNCTION ship_to(p_cle_id IN NUMBER)
5668 RETURN NUMBER
5669 IS
5670 CURSOR l_csr_get_shipto_billto(p_cle_id IN NUMBER)
5671 IS
5672 SELECT ship_to_site_use_id, bill_to_site_use_id
5673 FROM okc_k_lines_b
5674 WHERE id = p_cle_id;
5675
5676
5677 CURSOR l_csr_partysite_from_custsite(p_shipto_or_billto IN NUMBER)
5678 IS
5679 SELECT party_site_id
5680 FROM okx_cust_site_uses_v
5681 WHERE id1 = p_shipto_or_billto ;
5682
5683 l_shipto NUMBER;
5684 l_billto NUMBER;
5685 l_shipto_or_billto NUMBER;
5686 l_party_site NUMBER;
5687
5688 BEGIN
5689
5690 OPEN l_csr_get_shipto_billto(p_cle_id);
5691 FETCH l_csr_get_shipto_billto INTO l_shipto, l_billto;
5692 CLOSE l_csr_get_shipto_billto;
5693
5694 IF l_shipto IS NOT NULL THEN
5695 l_shipto_or_billto := l_shipto;
5696 ELSIF l_billto IS NOT NULL THEN
5697 l_shipto_or_billto := l_billto;
5698 END IF;
5699
5700 OPEN l_csr_partysite_from_custsite(l_shipto_or_billto);
5701 FETCH l_csr_partysite_from_custsite INTO l_party_site;
5702 CLOSE l_csr_partysite_from_custsite;
5703
5704 RETURN l_party_site;
5705
5706 END;
5707
5708
5709 BEGIN
5710
5711 OPEN l_get_item_id(p_cle_id);
5712 FETCH l_get_item_id INTO l_inv_item_id, l_inv_organization_id, l_dnz_chr_id, l_uom;
5713 CLOSE l_get_item_id;
5714
5715
5716 OPEN l_csr_get_cust_acct_id(p_cle_id);
5717 FETCH l_csr_get_cust_acct_id INTO l_cust_acct_id;
5718 CLOSE l_csr_get_cust_acct_id;
5719
5720
5721 IF l_cust_acct_id IS NULL THEN
5722
5723 RAISE G_ERROR;
5724 END IF;
5725
5726
5727 OPEN l_get_party_id(l_cust_acct_id);
5728 FETCH l_get_party_id INTO l_party_id;
5729 CLOSE l_get_party_id;
5730
5731
5732
5733 OPEN l_csr_get_party_sites(l_party_id);
5734 FETCH l_csr_get_party_sites INTO l_party_site_id;
5735 CLOSE l_csr_get_party_sites;
5736
5737 -- Code added to check whether item is revision controlled or not
5738 -- And pass revision to create_item_instance api accordingly
5739 -- aiyengar
5740
5741 OPEN l_csr_chk_revision_control(l_inv_item_id, l_inv_organization_id);
5742 FETCH l_csr_chk_revision_control INTO l_revision_control_yn ;
5743 CLOSE l_csr_chk_revision_control;
5744
5745 IF l_revision_control_yn = 2 THEN
5746 OPEN l_csr_get_item_revision(l_inv_item_id, l_inv_organization_id);
5747 FETCH l_csr_get_item_revision INTO l_revision;
5748 CLOSE l_csr_get_item_revision;
5749
5750 ELSE
5751 l_revision := '';
5752
5753 END IF;
5754
5755
5756 ----------errorout(' party id '||l_party_id);
5757 ----------errorout(' inv items id '||l_inv_item_id);
5758 ----------errorout(' organization id '||l_inv_organization_id);
5759 -- dnz chr id '||l_dnz_chr_id);
5760 p_instance_rec.instance_id := NULL;
5761
5762 p_instance_rec.instance_number := '';
5763 p_instance_rec.external_reference := '';
5764 p_instance_rec.inventory_item_id := l_inv_item_id;
5765 p_instance_rec.vld_organization_id := l_inv_organization_id;
5766 p_instance_rec.inventory_revision := l_revision;
5767 -- p_instance_rec.inv_master_organization_id := l_inv_organization_id; --NULL;
5768 p_instance_rec.serial_number := NULL;
5769 p_instance_rec.mfg_serial_number_flag := '';
5770 p_instance_rec.quantity := p_quantity;
5771 p_instance_rec.unit_of_measure := l_uom;
5772 p_instance_rec.accounting_class_code := '';
5773 p_instance_rec.instance_condition_id := 1;
5774 p_instance_rec.instance_status_id := NULL;
5775 p_instance_rec.customer_view_flag := '';
5776 p_instance_rec.merchant_view_flag := '';
5777 p_instance_rec.sellable_flag := '';
5778 p_instance_rec.system_id := NULL;
5779 p_instance_rec.instance_type_code := '';
5780 p_instance_rec.active_start_date := '';
5781 p_instance_rec.active_end_date := '';
5782
5783 p_instance_rec.in_transit_order_line_id := NULL;
5784 p_instance_rec.location_type_code := 'HZ_PARTY_SITES';
5785 p_instance_rec.location_id := NVL(ship_to(p_cle_id), l_party_site_id ) ;
5786
5787
5788
5789 -- p_instance_rec.location_type_code := 'INVENTORY';
5790 -- p_instance_rec.location_id :=207 ;
5791
5792 -- p_instance_rec.inv_organization_id :=l_inv_organization_id;
5793 -- p_instance_rec.inv_subinventory_name := 'Stores'; --'FGI';
5794
5795
5796 p_instance_rec.last_oe_order_line_id := NULL;
5797 p_instance_rec.last_oe_rma_line_id := NULL;
5798 p_instance_rec.last_po_po_line_id := NULL;
5799 p_instance_rec.last_oe_po_number := '';
5800 p_instance_rec.last_wip_job_id := NULL;
5801 p_instance_rec.last_pa_project_id := NULL;
5802 p_instance_rec.last_pa_task_id := NULL;
5803 p_instance_rec.last_oe_agreement_id := NULL;
5804 p_instance_rec.install_date := SYSDATE;
5805 p_instance_rec.manually_created_flag := '';
5806 p_instance_rec.return_by_date := '';
5807 p_instance_rec.actual_return_date := '';
5808 p_instance_rec.creation_complete_flag := '';
5809 p_instance_rec.completeness_flag := '';
5810 p_instance_rec.version_label := '';
5811 p_instance_rec.version_label_description := '';
5812 p_instance_rec.context := '';
5813 p_instance_rec.attribute1 := '';
5814 p_instance_rec.attribute2 := '';
5815 p_instance_rec.attribute3 := '';
5816 p_instance_rec.attribute4 := '';
5817 p_instance_rec.attribute5 := '';
5818 p_instance_rec.attribute6 := '';
5819 p_instance_rec.attribute7 := '';
5820 p_instance_rec.attribute8 := '';
5821 p_instance_rec.attribute9 := '';
5822 p_instance_rec.attribute10 := '';
5823 p_instance_rec.attribute11 := '';
5824 p_instance_rec.attribute12 := '';
5825 p_instance_rec.attribute13 := '';
5826 p_instance_rec.attribute14 := '';
5827 p_instance_rec.attribute15 := '';
5828 p_instance_rec.object_version_number := NULL;
5829 p_instance_rec.last_txn_line_detail_id := NULL;
5830 p_instance_rec.install_location_type_code := '';
5831 p_instance_rec.install_location_id := NULL;
5832 -- p_instance_rec.instance_usage_code := 'IN_TRANSIT';--'INSTALLED';
5833
5834 p_party_tbl(1).instance_party_id := NULL;
5835 p_party_tbl(1).instance_id := NULL;
5836 p_party_tbl(1).party_source_table := 'HZ_PARTIES';
5837 p_party_tbl(1).party_id := l_party_id ;
5838 p_party_tbl(1).relationship_type_code := 'OWNER';
5839 p_party_tbl(1).contact_flag := 'N';
5840 p_party_tbl(1).contact_ip_id := NULL;
5841 p_party_tbl(1).active_start_date := '';
5842 p_party_tbl(1).active_end_date := '';
5843 p_party_tbl(1).context := '';
5844 p_party_tbl(1).attribute1 := '';
5845 p_party_tbl(1).attribute2 := '';
5846 p_party_tbl(1).attribute3 := '';
5847 p_party_tbl(1).attribute4 := '';
5848 p_party_tbl(1).attribute5 := '';
5849 p_party_tbl(1).attribute6 := '';
5850 p_party_tbl(1).attribute7 := '';
5851 p_party_tbl(1).attribute8 := '';
5852 p_party_tbl(1).attribute9 := '';
5853 p_party_tbl(1).attribute10 := '';
5854 p_party_tbl(1).attribute11 := '';
5855 p_party_tbl(1).attribute12 := '';
5856 p_party_tbl(1).attribute13 := '';
5857 p_party_tbl(1).attribute14 := '';
5858 p_party_tbl(1).attribute15 := '';
5859 p_party_tbl(1).object_version_number := NULL;
5860
5861 p_account_tbl(1).ip_account_id := NULL;
5862 p_account_tbl(1).parent_tbl_index := 1; --NULL;
5863 p_account_tbl(1).instance_party_id := NULL;
5864 p_account_tbl(1).party_account_id := l_cust_acct_id; --NULL;
5865 p_account_tbl(1).relationship_type_code := 'OWNER';
5866 -- p_account_tbl(1).bill_to_address := 1000;
5867 -- p_account_tbl(1).ship_to_address := 1001;
5868 p_account_tbl(1).active_start_date := '';
5869 p_account_tbl(1).active_end_date := '';
5870 p_account_tbl(1).context := '';
5871 p_account_tbl(1).attribute1 := '';
5872 p_account_tbl(1).attribute2 := '';
5873 p_account_tbl(1).attribute3 := '';
5874 p_account_tbl(1).attribute4 := '';
5875 p_account_tbl(1).attribute5 := '';
5876 p_account_tbl(1).attribute6 := '';
5877 p_account_tbl(1).attribute7 := '';
5878 p_account_tbl(1).attribute8 := '';
5879 p_account_tbl(1).attribute9 := '';
5880 p_account_tbl(1).attribute10 := '';
5881 p_account_tbl(1).attribute11 := '';
5882 p_account_tbl(1).attribute12 := '';
5883 p_account_tbl(1).attribute13 := '';
5884 p_account_tbl(1).attribute14 := '';
5885 p_account_tbl(1).attribute15 := '';
5886 p_account_tbl(1).object_version_number := NULL;
5887
5888
5889 p_org_assignments_tbl(1).instance_ou_id := NULL;
5890 p_org_assignments_tbl(1).instance_id := NULL;
5891 p_org_assignments_tbl(1).operating_unit_id := okc_context.get_okc_org_id;
5892 p_org_assignments_tbl(1).relationship_type_code := 'SOLD_FROM';
5893 p_org_assignments_tbl(1).active_start_date := '';
5894 p_org_assignments_tbl(1).active_end_date := '';
5895 p_org_assignments_tbl(1).context := '';
5896 p_org_assignments_tbl(1).attribute1 := '';
5897 p_org_assignments_tbl(1).attribute2 := '';
5898 p_org_assignments_tbl(1).attribute3 := '';
5899 p_org_assignments_tbl(1).attribute4 := '';
5900 p_org_assignments_tbl(1).attribute5 := '';
5901 p_org_assignments_tbl(1).attribute6 := '';
5902 p_org_assignments_tbl(1).attribute7 := '';
5903 p_org_assignments_tbl(1).attribute8 := '';
5904 p_org_assignments_tbl(1).attribute9 := '';
5905 p_org_assignments_tbl(1).attribute10 := '';
5906 p_org_assignments_tbl(1).attribute11 := '';
5907 p_org_assignments_tbl(1).attribute12 := '';
5908 p_org_assignments_tbl(1).attribute13 := '';
5909 p_org_assignments_tbl(1).attribute14 := '';
5910 p_org_assignments_tbl(1).attribute15 := '';
5911 p_org_assignments_tbl(1).object_version_number := NULL;
5912
5913 p_txn_rec.transaction_id := NULL;
5914 p_txn_rec.transaction_date := SYSDATE; --TO_DATE('');
5915 p_txn_rec.source_transaction_date := SYSDATE; --TO_DATE('');
5916 p_txn_rec.transaction_type_id := 1; --NULL;
5917 p_txn_rec.txn_sub_type_id := NULL;
5918 p_txn_rec.source_group_ref_id := NULL;
5919 p_txn_rec.source_group_ref := '';
5920 p_txn_rec.source_header_ref_id := NULL;
5921 p_txn_rec.source_header_ref := '';
5922 p_txn_rec.source_line_ref_id := NULL;
5923 p_txn_rec.source_line_ref := '';
5924 p_txn_rec.source_dist_ref_id1 := NULL;
5925 p_txn_rec.source_dist_ref_id2 := NULL;
5926 p_txn_rec.inv_material_transaction_id := NULL;
5927 p_txn_rec.transaction_quantity := NULL;
5928 p_txn_rec.transaction_uom_code := 'EA';
5929 p_txn_rec.transacted_by := NULL;
5930 p_txn_rec.transaction_status_code := '';
5931 p_txn_rec.transaction_action_code := '';
5932 p_txn_rec.message_id := NULL;
5933 p_txn_rec.context := '';
5934 p_txn_rec.attribute1 := '';
5935 p_txn_rec.attribute2 := '';
5936 p_txn_rec.attribute3 := '';
5937 p_txn_rec.attribute4 := '';
5938 p_txn_rec.attribute5 := '';
5939 p_txn_rec.attribute6 := '';
5940 p_txn_rec.attribute7 := '';
5941 p_txn_rec.attribute8 := '';
5942 p_txn_rec.attribute9 := '';
5943 p_txn_rec.attribute10 := '';
5944 p_txn_rec.attribute11 := '';
5945 p_txn_rec.attribute12 := '';
5946 p_txn_rec.attribute13 := '';
5947 p_txn_rec.attribute14 := '';
5948 p_txn_rec.attribute15 := '';
5949 p_txn_rec.object_version_number := NULL;
5950
5951 -- Now call the stored program
5952 csi_item_instance_pub.create_item_instance(
5953 1.0,
5954 'F',
5955 'F',
5956 1,
5957 p_instance_rec,
5958 p_ext_attrib_values_tbl,
5959 p_party_tbl,
5960 p_account_tbl,
5961 p_pricing_attrib_tbl,
5962 p_org_assignments_tbl,
5963 p_asset_assignment_tbl,
5964 p_txn_rec,
5965 x_return_status,
5966 x_msg_count,
5967 x_msg_data);
5968
5969 -- Output the results
5970
5971
5972 IF x_msg_count > 0
5973 THEN
5974 FOR j IN 1 .. x_msg_count LOOP
5975 fnd_msg_pub.get
5976 (j
5977 , FND_API.G_FALSE
5978 , x_msg_data
5979 , t_msg_dummy
5980 );
5981 t_output := ('Msg'
5982 || To_Char
5983 (j
5984 )
5985 || ': '
5986 || x_msg_data
5987 );
5988 -- dbms_output.put_line
5989 -- ( SubStr
5990 -- ( t_output
5991 -- , 1
5992 -- , 255
5993 -- )
5994 -- );
5995 END LOOP;
5996 END IF;
5997
5998 -- dbms_output.put_line('x_return_status = '||x_return_status);
5999 -- dbms_output.put_line('x_msg_count = '||TO_CHAR(x_msg_count));
6000 -- dbms_output.put_line('x_msg_data = '||x_msg_data);
6001 --- dbms_output.put_line('instance_id = '||p_instance_rec.instance_id);
6002
6003 /* UPDATE csi_item_instances
6004 SET owner_party_source_table = 'OKC_K_ITEMS_B',
6005 security_group_id = p_cle_id
6006 WHERE instance_id = p_instance_rec.instance_id;
6007 */
6008
6009 x_instance_id := p_instance_rec.instance_id;
6010
6011 -- --------errorout(' resultant instance id is '||px_instance_id);
6012
6013 EXCEPTION
6014 WHEN G_ERROR THEN
6015 x_return_status := G_RET_STS_ERROR;
6016 OKC_API.SET_MESSAGE(p_app_name => G_APP_NAME_OKS,
6017 p_msg_name => 'OKS_NULL_CUSTACCT');
6018 END;
6019
6020
6021 PROCEDURE DELETE_CII_FOR_SUBSCRIPTION
6022 (p_api_version IN NUMBER,
6023 p_init_msg_list IN VARCHAR2,
6024 x_return_status OUT NOCOPY VARCHAR2,
6025 x_msg_count OUT NOCOPY NUMBER,
6026 x_msg_data OUT NOCOPY VARCHAR2,
6027 p_instance_id IN NUMBER
6028 )
6029 IS
6030 BEGIN
6031
6032 NULL;
6033 END;
6034
6035
6036 PROCEDURE line_contact_name_addr(
6037 p_object_code IN VARCHAR2,
6038 p_id1 IN VARCHAR2,
6039 p_id2 IN VARCHAR2,
6040 x_name OUT NOCOPY VARCHAR2,
6041 x_addr OUT NOCOPY okx_cust_sites_v.description%TYPE)
6042 IS
6043 --l_name VARCHAR2(255);
6044 l_from_table VARCHAR2(200);
6045 l_where_clause VARCHAR2(2000);
6046 l_sql_stmt VARCHAR2(1000);
6047 l_not_found BOOLEAN;
6048 l_cust_acct_site_id NUMBER;
6049 -- l_addr okx_cust_sites_v.description%type;
6050
6051 CURSOR jtfv_csr IS
6052 SELECT FROM_TABLE, WHERE_CLAUSE
6053 FROM JTF_OBJECTS_B
6054 WHERE OBJECT_CODE = p_object_code;
6055 TYPE SOURCE_CSR IS REF CURSOR;
6056 sql_csr SOURCE_CSR;
6057
6058 CURSOR get_address_csr (p_cust_acct_site_id IN NUMBER) IS
6059 SELECT description
6060 FROM okx_cust_sites_v
6061 WHERE id1 = p_cust_acct_site_id;
6062 BEGIN
6063 OPEN jtfv_csr;
6064 FETCH jtfv_csr INTO l_from_table, l_where_clause;
6065 l_not_found := jtfv_csr%NOTFOUND;
6066 CLOSE jtfv_csr;
6067
6068
6069 l_sql_stmt := 'SELECT name, cust_acct_site_id FROM ' || l_from_table ||
6070 ' WHERE ID1 = :id_1 AND ID2 = :id2';
6071
6072 IF (l_where_clause IS NOT NULL) THEN
6073 l_sql_stmt := l_sql_stmt || ' AND ' || l_where_clause;
6074 END IF;
6075
6076
6077 OPEN sql_csr FOR l_sql_stmt USING p_id1, p_id2;
6078 FETCH sql_csr INTO x_name, l_cust_acct_site_id;
6079 l_not_found := sql_csr%NOTFOUND;
6080 CLOSE sql_csr;
6081
6082 OPEN get_address_csr(l_cust_acct_site_id);
6083 FETCH get_address_csr INTO x_addr;
6084 CLOSE get_address_csr;
6085
6086 EXCEPTION
6087 WHEN NO_DATA_FOUND THEN
6088 IF (jtfv_csr%ISOPEN) THEN
6089 CLOSE jtfv_csr;
6090 END IF;
6091 IF (sql_csr%ISOPEN) THEN
6092 CLOSE sql_csr;
6093 END IF;
6094 END line_contact_name_addr;
6095
6096
6097 PROCEDURE select_renewal_info
6098 (p_chr_id IN NUMBER,
6099 x_operation_lines_tbl OUT NOCOPY opn_lines_tbl
6100 )
6101 IS
6102 --select operation id for renewal of 'SERVICE'
6103 CURSOR class_operation_cur IS
6104 SELECT id
6105 FROM okc_class_operations
6106 WHERE opn_code = 'RENEWAL'
6107 AND cls_code = 'SERVICE';
6108
6109 --select operation instance id for renewal
6110 CURSOR operation_instance_cur (p_cop_id IN NUMBER)
6111 IS
6112 SELECT id
6113 FROM okc_operation_instances
6114 WHERE target_chr_id = p_chr_id
6115 AND cop_id = p_cop_id;
6116
6117 CURSOR operation_lines_cur (p_oie_id NUMBER) IS
6118 SELECT creation_date, subject_chr_id, object_chr_id,
6119 subject_cle_id, object_cle_id
6120 FROM okc_operation_lines
6121 WHERE oie_id = p_oie_id;
6122
6123 l_opn_id NUMBER;
6124 l_oie_id NUMBER;
6125 l_ctr NUMBER;
6126 BEGIN
6127 OPEN class_operation_cur;
6128 FETCH class_operation_cur INTO l_opn_id;
6129 CLOSE class_operation_cur;
6130
6131 OPEN operation_instance_cur (l_opn_id);
6132 FETCH operation_instance_cur INTO l_oie_id;
6133 CLOSE operation_instance_cur;
6134
6135 IF x_operation_lines_tbl.COUNT > 0
6136 THEN
6137 x_operation_lines_tbl.DELETE;
6138 END IF;
6139
6140 --populating table
6141 l_ctr := 1;
6142 FOR operation_lines_rec IN operation_lines_cur (l_oie_id)
6143 LOOP
6144 x_operation_lines_tbl(l_ctr).creation_date := operation_lines_rec.creation_date;
6145 x_operation_lines_tbl(l_ctr).object_chr_id := operation_lines_rec.object_chr_id;
6146 x_operation_lines_tbl(l_ctr).object_cle_id := operation_lines_rec.object_cle_id;
6147 l_ctr := l_ctr + 1;
6148 END LOOP;
6149
6150 END select_renewal_info;
6151
6152
6153 PROCEDURE update_renewal_info
6154 (p_operation_lines_tbl IN opn_lines_tbl,
6155 x_return_status OUT NOCOPY VARCHAR2,
6156 x_msg_count OUT NOCOPY NUMBER,
6157 x_msg_data OUT NOCOPY VARCHAR2
6158 )
6159 IS
6160 BEGIN
6161 IF p_operation_lines_tbl.COUNT > 0
6162 THEN
6163 FOR i IN p_operation_lines_tbl.FIRST..p_operation_lines_tbl.LAST
6164 LOOP
6165 IF p_operation_lines_tbl(i).object_cle_id IS NULL
6166 THEN
6167 UPDATE okc_k_headers_b
6168 SET date_renewed = TRUNC(p_operation_lines_tbl(i).creation_date)
6169 WHERE id = p_operation_lines_tbl(i).object_chr_id;
6170 ELSE
6171 UPDATE okc_k_lines_b
6172 SET date_renewed = TRUNC(p_operation_lines_tbl(i).creation_date)
6173 WHERE id = p_operation_lines_tbl(i).object_cle_id;
6174 END IF;
6175 END LOOP;
6176 END IF; -- IF p_operation_lines_tbl.COUNT > 0
6177 x_return_status := 'S';
6178
6179 EXCEPTION
6180 WHEN OTHERS THEN
6181 x_return_status := G_UNEXPECTED_ERROR;
6182 OKC_API.set_message(G_APP_NAME_OKS,
6183 'OKS_UNEXP_ERROR',
6184 'SQLcode',
6185 SQLCODE,
6186 'SQLerrm',
6187 SQLERRM);
6188
6189 END update_renewal_info;
6190
6191 PROCEDURE CheckDuplicatePriceAdj(p_api_version IN NUMBER
6192 , p_init_msg_list IN VARCHAR2
6193 , p_pradj_rec IN price_adj_rec
6194 , x_return_status OUT NOCOPY VARCHAR2
6195 , x_msg_count OUT NOCOPY NUMBER
6196 , x_msg_data OUT NOCOPY VARCHAR2)
6197 IS
6198
6199 CURSOR line_cur(c_cle_id NUMBER) IS
6200 SELECT cle_id, line_number
6201 FROM okc_k_lines_b
6202 WHERE id = c_cle_id;
6203
6204 CURSOR price_adj_cur(c_list_line_id NUMBER, c_cle_id NUMBER) IS
6205 SELECT 'x'
6206 FROM okc_price_adjustments
6207 WHERE list_line_id = c_list_line_id
6208 AND cle_id = c_cle_id;
6209
6210 CURSOR price_adj_cur_hdr(c_list_line_id NUMBER, c_chr_id NUMBER) IS
6211 SELECT 'x'
6212 FROM okc_price_adjustments
6213 WHERE list_line_id = c_list_line_id
6214 AND chr_id = c_chr_id;
6215
6216 CURSOR sub_line_cur(c_cle_id NUMBER) IS
6217 SELECT id, line_number
6218 FROM okc_k_lines_b
6219 WHERE cle_id = c_cle_id
6220 AND lse_id IN(9, 25);
6221
6222 l_line_number VARCHAR2(301) := NULL;
6223 l_cle_id NUMBER := NULL;
6224 l_pradj_exists VARCHAR2(1) := NULL;
6225 l_subline_id NUMBER := NULL;
6226
6227 BEGIN
6228
6229 x_return_status := G_RET_STS_SUCCESS;
6230 fnd_msg_pub.initialize;
6231
6232 IF p_pradj_rec.chr_id IS NOT NULL THEN
6233 OPEN price_adj_cur_hdr(p_pradj_rec.list_line_id, p_pradj_rec.chr_id);
6234 FETCH price_adj_cur_hdr INTO l_pradj_exists;
6235 CLOSE price_adj_cur_hdr;
6236 IF l_pradj_exists IS NOT NULL THEN
6237 RAISE G_DUPLICATE_RECORD;
6238 ELSE
6239 RETURN;
6240 END IF;
6241 END IF;
6242
6243 OPEN price_adj_cur(p_pradj_rec.list_line_id, p_pradj_rec.cle_id);
6244 FETCH price_adj_cur INTO l_pradj_exists;
6245 CLOSE price_adj_cur;
6246 IF l_pradj_exists IS NOT NULL THEN
6247 RAISE G_DUPLICATE_RECORD;
6248 END IF;
6249
6250 OPEN line_cur(p_pradj_rec.cle_id);
6251 FETCH line_cur INTO l_cle_id, l_line_number;
6252 CLOSE line_cur;
6253
6254 IF l_cle_id IS NULL THEN --TopLine/Subline
6255 --GET SUBLINES
6256 OPEN sub_line_cur(p_pradj_rec.cle_id);
6257 LOOP
6258 l_line_number := NULL;
6259 FETCH sub_line_cur INTO l_subline_id, l_line_number;
6260 EXIT WHEN sub_line_cur%NOTFOUND;
6261
6262 OPEN price_adj_cur(p_pradj_rec.list_line_id, l_subline_id);
6263 FETCH price_adj_cur INTO l_pradj_exists;
6264 CLOSE price_adj_cur;
6265 IF l_pradj_exists IS NOT NULL THEN
6266 RAISE G_DUPLICATE_RECORD;
6267 END IF;
6268 l_subline_id := NULL;
6269 END LOOP; -- GET SUBLINES
6270 ELSE --TopLine/Subline
6271 OPEN price_adj_cur(p_pradj_rec.list_line_id, l_cle_id);
6272 FETCH price_adj_cur INTO l_pradj_exists;
6273 CLOSE price_adj_cur;
6274 IF l_pradj_exists IS NOT NULL THEN
6275 RAISE G_DUPLICATE_RECORD;
6276 END IF;
6277 END IF; --TopLine/Subline
6278 EXCEPTION
6279 WHEN G_DUPLICATE_RECORD THEN
6280 x_return_status := G_RET_STS_ERROR;
6281 OKC_API.SET_MESSAGE(p_app_name => G_APP_NAME_OKS,
6282 p_msg_name => 'OKS_DUPLICATE_MODIFIER');
6283 WHEN OTHERS THEN
6284 x_return_status := G_UNEXPECTED_ERROR;
6285 OKC_API.set_message(G_APP_NAME_OKS,
6286 'OKS_UNEXP_ERROR',
6287 'SQLcode',
6288 SQLCODE,
6289 'SQLerrm',
6290 SQLERRM);
6291 END CheckDuplicatePriceAdj;
6292
6293
6294 PROCEDURE Update_Line_Amount
6295 (p_line_id IN NUMBER,
6296 p_new_service_amount IN NUMBER,
6297 x_return_status OUT NOCOPY VARCHAR2,
6298 x_msg_count OUT NOCOPY NUMBER,
6299 x_msg_data OUT NOCOPY VARCHAR2)
6300 IS
6301 l_clev_rec OKC_CONTRACT_PUB.clev_rec_type;
6302 x_clev_rec OKC_CONTRACT_PUB.clev_rec_type;
6303 l_api_version NUMBER := 1.0;
6304 l_init_msg_list VARCHAR2(2000) := OKC_API.G_FALSE;
6305 l_return_status VARCHAR2(1);
6306 l_msg_count NUMBER;
6307 l_msg_data VARCHAR2(2000);
6308 l_price_negotiated NUMBER;
6309 l_klnv_tbl_in oks_contract_line_pub.klnv_tbl_type;
6310 l_klnv_tbl_out oks_contract_line_pub.klnv_tbl_type;
6311
6312
6313 CURSOR l_csr_total_line_amount(p_line_id IN NUMBER)
6314 IS
6315 SELECT nvl(SUM(nvl(price_negotiated, 0)), 0)
6316 FROM okc_k_lines_b
6317 WHERE cle_id = p_line_id
6318 AND date_cancelled IS NULL; -- line Level Cancellation
6319
6320 CURSOR toplinetax_cur(p_cle_id IN NUMBER) IS
6321 SELECT SUM(nvl(tax_amount, 0)) amount
6322 FROM okc_k_lines_b cle, oks_k_lines_b kln
6323 WHERE cle.cle_id = p_cle_id
6324 AND cle.id = kln.cle_id
6325 AND cle.lse_id IN (7, 8, 9, 10, 11, 13, 35, 25, 46)
6326 AND cle.date_cancelled IS NULL;
6327
6328 l_tax_amount toplinetax_cur%ROWTYPE;
6329
6330 CURSOR Get_oks_Lines_details(p_cle_id IN NUMBER) IS
6331 SELECT id, object_version_number, dnz_chr_id
6332 FROM oks_k_lines_b
6333 WHERE cle_id = p_cle_id ;
6334
6335 l_get_oks_details Get_oks_Lines_details%ROWTYPE;
6336
6337 BEGIN
6338
6339 l_clev_rec.id := p_Line_Id;
6340 OPEN l_csr_total_line_amount(p_line_id);
6341 FETCH l_csr_total_line_amount INTO l_price_negotiated;
6342 CLOSE l_csr_total_line_amount;
6343
6344
6345
6346 l_clev_rec.price_negotiated := l_price_negotiated ;
6347
6348 OKC_CONTRACT_PUB.Update_Contract_Line
6349 (
6350 p_api_version => l_api_version,
6351 p_init_msg_lISt => l_init_msg_lISt,
6352 x_return_status => x_return_status,
6353 x_msg_count => x_msg_count,
6354 x_msg_data => x_msg_data,
6355 p_restricted_update => 'F',
6356 p_clev_rec => l_clev_rec,
6357 x_clev_rec => x_clev_rec
6358 );
6359
6360 IF NVL(x_return_status, '!') <> OKC_API.G_RET_STS_SUCCESS THEN
6361 RAISE G_ERROR;
6362 END IF;
6363 -- Update Lines Level Tax Amount --
6364 OPEN Get_oks_Lines_details(p_line_id);
6365 FETCH Get_oks_Lines_details INTO l_get_oks_details ;
6366 CLOSE Get_oks_Lines_details;
6367
6368 OPEN toplinetax_cur(p_line_id);
6369 FETCH toplinetax_cur INTO l_tax_amount;
6370 CLOSE toplinetax_cur;
6371
6372 l_klnv_tbl_in(1).id := l_get_oks_details.id ;
6373 l_klnv_tbl_in(1).object_version_number := l_get_oks_details.object_version_number;
6374 l_klnv_tbl_in(1).dnz_chr_id := l_get_oks_details.dnz_chr_id;
6375 l_klnv_tbl_in(1).cle_id := p_line_id;
6376 l_klnv_tbl_in(1).tax_amount := l_tax_amount.amount;
6377
6378
6379 oks_contract_line_pub.update_line
6380 (
6381 p_api_version => l_api_version,
6382 p_init_msg_list => l_init_msg_list,
6383 x_return_status => l_return_status,
6384 x_msg_count => l_msg_count,
6385 x_msg_data => l_msg_data,
6386 p_klnv_tbl => l_klnv_tbl_in,
6387 x_klnv_tbl => l_klnv_tbl_out,
6388 p_validate_yn => 'N'
6389 );
6390
6391 x_return_status := l_return_status;
6392 IF NVL(l_return_status, '!') <> OKC_API.G_RET_STS_SUCCESS THEN
6393 RAISE G_ERROR;
6394 END IF;
6395
6396 EXCEPTION
6397 WHEN G_ERROR THEN
6398 NULL;
6399 END Update_Line_Amount;
6400
6401 PROCEDURE Update_Coverage_Levels
6402 (p_clvl_rec IN Clvl_Rec_Type,
6403 x_return_status OUT NOCOPY VARCHAR2,
6404 x_msg_count OUT NOCOPY NUMBER,
6405 x_msg_data OUT NOCOPY VARCHAR2)
6406 IS
6407
6408 l_clev_rec OKC_CONTRACT_PUB.clev_rec_type;
6409 x_clev_rec OKC_CONTRACT_PUB.clev_rec_type;
6410 l_api_version NUMBER := 1.0;
6411 l_init_msg_lISt VARCHAR2(1) := 'T';
6412
6413 BEGIN
6414
6415 ----------errorout_ad('cp line id = ' || to_char(p_clvl_rec.Coverage_Level_Line_Id));
6416 ----------errorout_ad('cp amount = ' || to_char(p_clvl_rec.price_negotiated));
6417 l_clev_rec.id := p_clvl_rec.Coverage_Level_Line_Id;
6418 l_clev_rec.price_unit := p_clvl_rec.price_unit;
6419 l_clev_rec.price_unit_percent := p_clvl_rec.price_unit_percent;
6420 l_clev_rec.price_negotiated := p_clvl_rec.price_negotiated;
6421
6422 OKC_CONTRACT_PUB.Update_Contract_Line
6423 (
6424 p_api_version => l_api_version,
6425 p_init_msg_lISt => l_init_msg_lISt,
6426 x_return_status => x_return_status,
6427 x_msg_count => x_msg_count,
6428 x_msg_data => x_msg_data,
6429 p_restricted_update => 'F',
6430 p_clev_rec => l_clev_rec,
6431 x_clev_rec => x_clev_rec
6432 );
6433
6434 ----------errorout_ad('OKC_CONTRACT_PUB.Update_Contract_Line status = ' || x_return_status);
6435
6436 IF NVL(x_return_status, '!') <> OKC_API.G_RET_STS_SUCCESS THEN
6437 RAISE G_ERROR;
6438 END IF;
6439
6440 EXCEPTION
6441 WHEN G_ERROR THEN
6442 NULL;
6443 END Update_Coverage_Levels;
6444
6445 PROCEDURE UPDATE_CONTRACT_AMOUNT(p_header_id IN NUMBER,
6446 x_return_status OUT NOCOPY VARCHAR2) IS
6447 l_api_version CONSTANT NUMBER := 1.0;
6448 l_init_msg_list VARCHAR2(2000) := OKC_API.G_FALSE;
6449 l_return_status VARCHAR2(1);
6450 l_msg_count NUMBER;
6451 l_msg_data VARCHAR2(2000);
6452 l_msg_index_out NUMBER;
6453 l_chrv_tbl_in okc_contract_pub.chrv_tbl_type;
6454 l_chrv_tbl_out okc_contract_pub.chrv_tbl_type;
6455 -- Header Level Tax Amount --
6456 l_khrv_tbl_type_in oks_contract_hdr_pub.khrv_tbl_type;
6457 l_khrv_tbl_type_out oks_contract_hdr_pub.khrv_tbl_type;
6458
6459 -- Header Level Tax Amount --
6460 CURSOR total_amount IS
6461 SELECT nvl(SUM(price_negotiated), 0) SUM
6462 FROM okc_k_lines_b
6463 WHERE dnz_chr_id = p_header_id
6464 AND cle_id IS NULL
6465 AND date_cancelled IS NULL; -- line Level Cancellation
6466 --Commented URP
6467 --WHERE dnz_chr_id = p_header_id;
6468
6469 -- Header Tax Total
6470 CURSOR hdrtax_cur IS
6471 SELECT SUM(kln.tax_amount) amount
6472 FROM okc_k_lines_b cle, oks_k_lines_b kln
6473 WHERE cle.dnz_chr_id = p_header_id
6474 AND cle.id = kln.cle_id
6475 AND cle.lse_id IN (7, 8, 9, 10, 11, 13, 35, 25, 46)
6476 AND cle.date_cancelled IS NULL;
6477
6478 l_total_tax hdrtax_cur%ROWTYPE;
6479
6480 CURSOR Get_Header_details IS
6481 SELECT id, object_version_number
6482 FROM OKS_K_HEADERS_B
6483 WHERE chr_id = p_header_id ;
6484
6485 l_get_hdr_details get_header_details%ROWTYPE;
6486
6487 BEGIN
6488 x_return_status := OKC_API.G_RET_STS_SUCCESS;
6489 IF p_header_id IS NOT NULL THEN
6490 l_chrv_tbl_in.DELETE;
6491 FOR cur_total_amount IN total_amount
6492 LOOP
6493 l_chrv_tbl_in(1).id := p_header_id;
6494 l_chrv_tbl_in(1).estimated_amount := cur_total_amount.SUM;
6495 okc_contract_pub.update_contract_header (
6496 p_api_version => l_api_version,
6497 p_init_msg_list => l_init_msg_list,
6498 x_return_status => l_return_status,
6499 x_msg_count => l_msg_count,
6500 x_msg_data => l_msg_data,
6501 p_chrv_tbl => l_chrv_tbl_in,
6502 x_chrv_tbl => l_chrv_tbl_out
6503 );
6504 x_return_status := l_return_status;
6505 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6506 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6507 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
6508 RAISE OKC_API.G_EXCEPTION_ERROR;
6509 END IF;
6510 END LOOP;
6511
6512 -- Updating Header level tax Amount --
6513 OPEN get_header_details;
6514 FETCH get_header_details INTO l_get_hdr_details;
6515 CLOSE get_header_details;
6516
6517 OPEN hdrtax_cur;
6518 FETCH hdrtax_cur INTO l_total_tax;
6519 CLOSE hdrtax_cur;
6520
6521 l_khrv_tbl_type_in(1).id := l_get_hdr_details.id;
6522 l_khrv_tbl_type_in(1).chr_id := p_header_id;
6523 l_khrv_tbl_type_in(1).object_version_number := l_get_hdr_details.object_version_number;
6524 l_khrv_tbl_type_in(1).tax_amount := l_total_tax.amount;
6525
6526 oks_contract_hdr_pub.update_header(
6527 p_api_version => l_api_version,
6528 p_init_msg_list => l_init_msg_list,
6529 x_return_status => l_return_status,
6530 x_msg_count => l_msg_count,
6531 x_msg_data => l_msg_data,
6532 p_khrv_tbl => l_khrv_tbl_type_in,
6533 x_khrv_tbl => l_khrv_tbl_type_out,
6534 p_validate_yn => 'N');
6535
6536 x_return_status := l_return_status;
6537 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6538 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6539 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
6540 RAISE OKC_API.G_EXCEPTION_ERROR;
6541 END IF;
6542 -- Updating Header level tax Amount --
6543
6544 END IF;
6545 END UPDATE_CONTRACT_AMOUNT;
6546
6547
6548
6549 PROCEDURE GetIgnorableAmount(p_contract_line_id IN NUMBER,
6550 x_prorated_amount OUT NOCOPY NUMBER,
6551 x_rec_count OUT NOCOPY NUMBER)
6552 IS
6553 CURSOR l_subline_csr IS
6554 SELECT NVL(lines.price_negotiated, 0) price_negotiated,
6555 lines.start_date,
6556 lines.end_date,
6557 lines.date_terminated,
6558 lines.price_unit,
6559 lines.price_unit_percent,
6560 lines.id
6561 FROM okc_k_lines_b lines
6562 WHERE lines.cle_id = p_contract_line_id
6563 AND lines.lse_id IN(7, 8, 9, 10, 11, 18, 25, 35);
6564 l_subline_rec l_subline_csr%ROWTYPE;
6565 l_prorated_amount NUMBER := 0;
6566 l_amount NUMBER := 0;
6567 l_rec_count NUMBER := 0;
6568 BEGIN
6569 OPEN l_subline_csr;
6570 LOOP
6571 FETCH l_subline_csr INTO l_subline_rec;
6572 EXIT WHEN l_subline_csr%NOTFOUND;
6573 IF l_subline_rec.date_terminated IS NOT NULL THEN
6574 IF l_subline_rec.date_terminated <= trunc(SYSDATE) THEN
6575 l_amount := l_subline_rec.price_negotiated;
6576 END IF;
6577 l_rec_count := l_rec_count + 1;
6578 --Commented to fix Bug#2450212 , 09, Aug 2002 , Sudam
6579 --ELSIF l_subline_rec.end_date < trunc(sysdate) THEN
6580 --l_amount := l_subline_rec.price_negotiated;
6581 --l_rec_count := l_rec_count + 1;
6582 END IF;
6583 l_prorated_amount := l_prorated_amount + l_amount;
6584 l_amount := 0;
6585 END LOOP;
6586 CLOSE l_subline_csr;
6587 x_prorated_amount := l_prorated_amount;
6588 x_rec_count := l_rec_count;
6589 END GetIgnorableAmount;
6590
6591 /***************/
6592
6593 PROCEDURE Cascade_Service_Price(
6594 p_api_version IN NUMBER,
6595 p_init_msg_lISt IN VARCHAR2,
6596 p_contract_line_id IN NUMBER,
6597 p_new_service_price IN NUMBER,
6598 x_return_status OUT NOCOPY VARCHAR2,
6599 x_msg_count OUT NOCOPY NUMBER,
6600 x_msg_data OUT NOCOPY VARCHAR2
6601 )
6602 IS
6603
6604 lc_jtot_obj_code VARCHAR2(30) := 'OKX_CUSTPROD';
6605
6606 CURSOR l_svc_csr IS
6607 SELECT nvl(SUM(NVL(price_negotiated, 0)), 0) service_amount
6608 , COUNT(price_negotiated)
6609 FROM okc_k_lines_b lines
6610 WHERE lines.cle_id = p_contract_line_id
6611 AND lines.lse_id IN(7, 8, 9, 10, 11, 18, 25, 35)
6612 AND lines.date_cancelled IS NULL; -- line Level Cancellation
6613
6614
6615
6616 --bug # 2215282 -- exclude terminated/expired/cancelled clvl lines from cascade service pricing
6617 --Removed Status Check but included Date_Terminated for termination
6618 --and end_date for the expiration. This is for same Bug 2215282.
6619
6620 -- Bug 5228352 --
6621 CURSOR l_clvl_csr IS
6622 SELECT okc.id,
6623 price_negotiated,
6624 price_unit,
6625 price_unit_percent,
6626 lse_id,
6627 okc.dnz_chr_id,
6628 currency_code,
6629 oks.id oks_id,
6630 oks.object_version_number
6631 FROM okc_k_lines_b okc, oks_k_lines_b oks
6632 WHERE okc.Cle_id = p_contract_line_id
6633 AND OKS.cle_id = okc.id
6634 AND (okc.date_terminated IS NULL OR okc.date_terminated > TRUNC(SYSDATE))
6635 AND lse_id NOT IN(2, 15, 20)
6636 AND okc.date_cancelled IS NULL; -- line Level Cancellation
6637
6638 CURSOR get_tax_details(p_cle_id IN NUMBER) IS
6639 SELECT id, object_version_number
6640 FROM oks_k_lines_b
6641 WHERE cle_id = p_cle_id;
6642
6643 get_tax_rec get_tax_details%rowtype;
6644 -- Bug 5228352 --
6645
6646 CURSOR l_aggr_csr(p_chr_id IN NUMBER) IS
6647 SELECT Isa_Agreement_Id
6648 FROM OKC_GOVERNANCES_V
6649 WHERE dnz_chr_id = p_chr_id
6650 AND cle_id IS NULL;
6651
6652
6653 l_service_amount NUMBER;
6654 l_clvl_price NUMBER;
6655 l_current_percent NUMBER := 0;
6656 l_new_amount NUMBER := 0;
6657 l_clvl_rec Clvl_Rec_type;
6658 l_count NUMBER := 1;
6659 l_curr_rec NUMBER := 0;
6660 l_sum_amt NUMBER := 0;
6661 l_diff_amt NUMBER := 0;
6662 l_old_id NUMBER;
6663 l_old_up NUMBER;
6664 l_old_upp NUMBER;
6665 -- l_contract_line_rec OKS_QP_INT_PVT.G_LINE_REC_TYPE;
6666 -- lx_contract_cp_tbl OKS_QP_INT_PVT.G_SLINE_TBL_TYPE;
6667 l_currency_code VARCHAR2(15);
6668 i NUMBER := 1;
6669 l_pdl_adjusted_amount NUMBER;
6670 l_covlvl_qty NUMBER;
6671 l_tlvl_priced_qty NUMBER;
6672 l_aggr_id NUMBER;
6673 cp_price NUMBER ;
6674 l_index NUMBER ;
6675
6676 l_terminated_service_amount NUMBER;
6677 l_terminated_count NUMBER;
6678 l_percent_terminated NUMBER;
6679 l_active_service_amount NUMBER;
6680 l_active_line_count NUMBER;
6681 l_new_cascade_service_price NUMBER;
6682 l_detail_rec OKS_QP_PKG.input_details;
6683 l_api_Version NUMBER := 1;
6684 l_init_msg_list VARCHAR2(2000) := OKC_API.G_FALSE;
6685 l_return_status VARCHAR2(1);
6686 l_msg_count NUMBER;
6687 l_msg_data VARCHAR2(2000);
6688 l_price_details OKS_QP_PKG.price_details;
6689 l_modifier_details QP_PREQ_GRP.LINE_DETAIL_TBL_TYPE;
6690 l_price_break_details OKS_QP_PKG.G_PRICE_BREAK_TBL_TYPE;
6691 l_old_lse_id NUMBER;
6692 l_old_currency_code VARCHAR2(4);
6693 lx_klnv_tbl OKS_CONTRACT_LINE_PUB.klnv_tbl_type;
6694 l_validate_yn VARCHAR2(1);
6695 l_curr_code VARCHAR2(30);
6696
6697
6698 -- l_rule_rec OKC_RUL_PVT.rulv_rec_type;
6699 -- l_rule_tbl OKC_RULE_PUB.rulv_tbl_type;
6700
6701 l_klnv_tbl OKS_CONTRACT_LINE_PUB.klnv_tbl_type;
6702 /* for tax calculation */
6703
6704 G_RAIL_REC OKS_TAX_UTIL_PVT.ra_rec_type;
6705
6706 PROCEDURE Get_Currency_Code(p_chr_id IN NUMBER
6707 , x_curr_code OUT NOCOPY VARCHAR2) IS
6708 CURSOR l_hdr_csr IS
6709 SELECT currency_code
6710 FROM okc_k_headers_b
6711 WHERE id = p_chr_id;
6712 BEGIN
6713 x_curr_code := NULL;
6714 OPEN l_hdr_csr;
6715 FETCH l_hdr_csr INTO x_curr_code;
6716 CLOSE l_hdr_csr;
6717 END Get_Currency_Code;
6718
6719 FUNCTION Get_Header_Id RETURN NUMBER IS
6720 CURSOR l_hdr_csr IS
6721 SELECT dnz_chr_id
6722 FROM okc_k_lines_b
6723 WHERE id = p_contract_line_id;
6724 l_header_id OKC_K_HEADERS_B.ID%TYPE;
6725 BEGIN
6726 OPEN l_hdr_csr;
6727 FETCH l_hdr_csr INTO l_header_id;
6728 CLOSE l_hdr_csr;
6729 RETURN(l_header_id);
6730 END Get_Header_Id;
6731
6732 BEGIN
6733
6734 OPEN l_svc_csr;
6735 FETCH l_svc_csr INTO l_service_amount, l_count;
6736 CLOSE l_svc_csr;
6737
6738 ----------errorout_ad(' l_service_amount '||l_service_amount );
6739 ----------errorout_ad(' l_count '||l_count );
6740
6741 --bug # 2215282 -- exclude terminated/expired/cancelled clvl lines from cascade service pricing
6742
6743 GetIgnorableAmount(p_contract_line_id => p_contract_line_id,
6744 x_prorated_amount => l_terminated_service_amount,
6745 x_rec_count => l_terminated_count);
6746
6747 IF l_count = l_terminated_count THEN
6748 RETURN;
6749 END IF;
6750
6751 ----------errorout_ad(' l_terminated_service_amount '||l_terminated_service_amount );
6752 ----------errorout_ad(' l_terminated_count '||l_terminated_count );
6753
6754 /** Find total reprice amount to be adjusted #2215282 **/
6755 IF NVL(l_service_amount, 0) <> 0 THEN
6756 IF NVL(l_terminated_service_amount, 0) <> 0 THEN
6757 l_active_service_amount := NVL(l_service_amount, 0) - NVL(l_terminated_service_amount, 0);
6758 l_active_line_count := NVL(l_count, 0) - NVL(l_terminated_count, 0);
6759 l_new_cascade_service_price := p_new_service_price - NVL(l_terminated_service_amount, 0);
6760 ELSE
6761 l_active_service_amount := l_service_amount;
6762 l_new_cascade_service_price := p_new_service_price;
6763 l_active_line_count := l_count;
6764 END IF;
6765 END IF;
6766
6767 ----------errorout_ad(' l_new_cascade_service_price '||l_new_cascade_service_price );
6768 ----------errorout_ad(' l_active_line_count '||l_active_line_count );
6769
6770
6771 FOR clvl_rec IN l_clvl_csr
6772 LOOP
6773
6774 -- --------errorout_ad (' clvl '||clvl_rec.id);
6775
6776 -- --------errorout_ad (' clvl price negotiated '||clvl_rec.price_negotiated);
6777 /** Check for status of the covered level line **/
6778 l_curr_rec := l_curr_rec + 1;
6779
6780 l_clvl_price := clvl_rec.Price_Negotiated;
6781 Get_Currency_Code(p_chr_id => Get_Header_Id, x_curr_code => l_curr_code);
6782 --bug # 2215282 -- exclude terminated/expired/cancelled clvl lines from cascade service pricing
6783 IF l_service_amount = 0 THEN
6784 IF NVL(l_active_line_count, 0) <> 0 THEN
6785 -- l_new_amount := NVL(l_new_cascade_service_price,0) / NVL(l_active_line_count, 1);
6786
6787 l_new_amount := OKS_EXTWAR_UTIL_PVT.Round_Currency_amt
6788 (
6789 NVL(l_new_cascade_service_price, 0) / NVL(l_active_line_count, 1),
6790 l_curr_code
6791 );
6792 END IF;
6793 ELSE
6794 IF NVL(l_active_service_amount, 0) <> 0 THEN
6795 l_current_percent := (NVL(l_clvl_price, 0) * 100) / NVL(l_active_service_amount, 1);
6796 -- l_new_amount := ROUND( ((NVL(l_new_cascade_service_price, 0) * l_current_percent)/100), 2);
6797
6798 l_new_amount := OKS_EXTWAR_UTIL_PVT.Round_Currency_amt(
6799 (NVL(l_new_cascade_service_price, 0) * l_current_percent) / 100,
6800 l_curr_code
6801 );
6802
6803 END IF;
6804
6805 END IF;
6806 ----------errorout_ad(' l_new_amount '||l_new_amount);
6807 IF l_curr_rec <= l_count THEN
6808
6809 ----------errorout_ad(' before updating cov level ');
6810 l_clvl_rec.coverage_level_line_id := clvl_rec.id;
6811 l_clvl_rec.price_negotiated := l_new_amount;
6812 l_clvl_rec.price_unit := clvl_rec.price_unit;
6813 l_clvl_rec.price_unit_percent := clvl_rec.price_unit_percent;
6814
6815 Update_Coverage_Levels
6816 (p_clvl_rec => l_clvl_rec,
6817 x_return_status => x_return_status,
6818 x_msg_count => x_msg_count,
6819 x_msg_data => x_msg_data);
6820
6821 ----------errorout_ad(' after updating coverag level ' ||clvl_rec.lse_id||' '||clvl_rec.id);
6822
6823 /* select price_negotiated into cp_price
6824 from okc_k_lines_b
6825 where id = clvl_rec.id; */
6826
6827 ----------errorout_ad(' price nego after update '||cp_price);
6828
6829 IF Nvl(x_return_status, 'S') <> OKC_API.G_RET_STS_SUCCESS
6830 THEN
6831 -- --------errorout_ad (' error in updation of coverage level ');
6832 RAISE G_ERROR;
6833 END IF;
6834
6835 /** Recalculate Tax **/
6836 -- --------errorout(' before calculating tax '||clvl_rec.lse_id);
6837 -- Bug 5228352 --
6838 IF clvl_rec.lse_id IN (8, 10, 11, 12, 35 )
6839 OR (
6840 clvl_rec.lse_id IN (7, 9, 18, 25)
6841 AND
6842 NVL(fnd_profile.VALUE('OKS_USE_QP_FOR_MANUAL_ADJ'), 'NO') = 'NO')
6843
6844 THEN
6845 -- Bug 5228352 --
6846 -- --------errorout_ad(' before calculating tax ');
6847 G_RAIL_REC.amount := l_new_amount ;
6848
6849 OKS_TAX_UTIL_PVT.Get_Tax (p_api_version => 1.0,
6850 p_init_msg_list => OKC_API.G_TRUE,
6851 p_chr_id => clvl_rec.dnz_chr_id,
6852 p_cle_id => p_contract_line_id,
6853 px_rail_rec => G_RAIL_REC,
6854 x_msg_count => x_msg_count,
6855 x_msg_data => x_msg_data,
6856 x_return_status => l_return_status );
6857
6858 -- Bug 5228352 --
6859 IF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
6860 RAISE OKC_API.G_EXCEPTION_ERROR;
6861 ELSIF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
6862 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6863 END IF;
6864 -- Bug 5228352 --
6865
6866 -- --------errorout_ad(' error in calc tax '||l_return_status );
6867 -- Create IRT Rule
6868
6869 -- Bug 5228352 --
6870 l_klnv_tbl(1).id := clvl_rec.oks_id;
6871 l_klnv_tbl(1).cle_id := clvl_rec.id;
6872 l_klnv_tbl(1).object_version_number := clvl_rec.object_version_number;
6873 l_klnv_tbl(1).dnz_chr_id := get_header_id;
6874 l_klnv_tbl(1).tax_inclusive_yn := g_rail_rec.amount_includes_tax_flag;
6875 -- Bug 5228352 --
6876
6877
6878
6879
6880
6881 IF g_rail_rec.amount_includes_tax_flag = 'N' THEN
6882 l_klnv_tbl(1).tax_amount := NVL(g_rail_rec.tax_value, 0);
6883 -- l_klnv_tbl(1).rule_information6 := g_rail_rec.amount + NVL(g_rail_rec.tax_value,0);
6884 ELSE
6885 l_klnv_tbl(1).tax_amount := 0;
6886 -- l_rule_rec.rule_information6 := g_rail_rec.amount;
6887 END IF;
6888
6889 -- Update IRT rule
6890 -- --------errorout_ad(' tax amount ' || g_rail_rec.tax_value);
6891 -- --------errorout_ad(' amount '||g_rail_rec.amount);
6892
6893
6894
6895 OKS_CONTRACT_LINE_PUB.update_line(
6896 p_api_version => p_api_version,
6897 p_init_msg_list => p_init_msg_list,
6898 x_return_status => l_return_status,
6899 x_msg_count => l_msg_count,
6900 x_msg_data => l_msg_data,
6901 p_klnv_tbl => l_klnv_tbl,
6902 x_klnv_tbl => lx_klnv_tbl,
6903 p_validate_yn => l_validate_yn);
6904 -- Bug 5228352 --
6905 IF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
6906 RAISE OKC_API.G_EXCEPTION_ERROR;
6907 ELSIF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
6908 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6909 END IF;
6910 -- Bug 5228352 --
6911
6912
6913 -- --------errorout_ad(' after qp int pvt '||l_return_status );
6914
6915 END IF; /* Calculate tax - update IRT rule for non cov item , cov prod */
6916
6917 IF NVL(fnd_profile.VALUE('OKS_USE_QP_FOR_MANUAL_ADJ'), 'NO') = 'YES' THEN
6918
6919 IF clvl_rec.lse_id IN (7, 9, 18, 25) THEN
6920 -- l_detail_rec.chr_id := l_service_rec.header_id; /** header id **/
6921 -- l_detail_rec.line_id := p_contract_line_id; /** line id **/
6922 l_detail_rec.subline_id := clvl_rec.id; /** Subline id **/
6923 l_detail_rec.intent := 'OA';
6924 l_detail_rec.currency := clvl_rec.currency_code; /** Currency code **/
6925 l_detail_Rec.usage_qty := NULL;
6926 l_detail_rec.usage_uom_code := NULL;
6927 l_detail_rec.asking_unit_price := l_new_amount; /* New subine amount after cascade service price */
6928
6929 ----------errorout_ad(' ******* cp level updation ******** '||l_curr_rec);
6930 ----------errorout_ad(' subline id '||l_detail_rec.subline_id);
6931 ----------errorout_ad(' currency '||l_detail_rec.currency);
6932 ----------errorout_ad(' price '||l_detail_rec.asking_unit_price);
6933
6934 -- --------errorout_ad(' call compute price for cp ci ');
6935
6936 OKS_QP_INT_PVT.COMPUTE_PRICE
6937 (
6938 l_api_version,
6939 l_init_msg_list,
6940 l_detail_rec,
6941 l_price_details,
6942 l_modifier_details,
6943 l_price_break_details,
6944 l_return_status,
6945 l_msg_count,
6946 l_msg_data );
6947
6948 IF l_return_status <> OKC_API.G_RET_STS_SUCCESS THEN
6949
6950 RAISE G_ERROR;
6951 END IF;
6952
6953 END IF;
6954
6955
6956 END IF; /* end of check QP profile option */
6957
6958 l_sum_amt := l_sum_amt + l_new_amount;
6959
6960 l_old_id := clvl_rec.id;
6961 l_old_up := clvl_rec.price_unit;
6962 l_old_upp := clvl_rec.price_unit_percent;
6963 l_old_lse_id := clvl_rec.lse_id ;
6964 l_old_currency_code := clvl_rec.currency_code;
6965
6966 END IF;
6967
6968 END LOOP;
6969
6970
6971 /*** Adjust difference amount arising because of decimals ***/
6972
6973 l_diff_amt := l_new_cascade_service_price - l_sum_amt;
6974 -- --------errorout_ad(' l_diff_amt '||l_diff_amt);
6975
6976 IF l_diff_amt IS NOT NULL AND l_diff_amt <> 0 THEN
6977 l_clvl_rec.coverage_level_line_id := l_old_id;
6978 l_clvl_rec.price_negotiated := l_clvl_rec.price_negotiated + NVL(l_diff_amt, 0);
6979 l_clvl_rec.price_unit := l_old_up;
6980 l_clvl_rec.price_unit_percent := l_old_upp;
6981
6982 Update_Coverage_Levels(p_clvl_rec => l_clvl_rec,
6983 x_return_status => x_return_status,
6984 x_msg_count => x_msg_count,
6985 x_msg_data => x_msg_data);
6986
6987 IF Nvl(x_return_status, 'S') <> OKC_API.G_RET_STS_SUCCESS THEN
6988 RAISE G_ERROR;
6989 END IF;
6990
6991
6992
6993 /*** Calculate tax - update IRT rule for residual value **/
6994 -- Bug 5228352 --
6995 IF l_old_lse_id IN (8, 10, 11, 12, 35 )
6996 OR ( l_old_lse_id IN (7, 9, 18, 25)
6997 AND
6998 NVL(fnd_profile.VALUE('OKS_USE_QP_FOR_MANUAL_ADJ'), 'NO') = 'NO')
6999 THEN
7000 -- Bug 5228352 --
7001
7002 -- --------errorout_ad(' before calculating tax ');
7003 G_RAIL_REC.amount := l_clvl_rec.price_negotiated + NVL(l_diff_amt, 0) ;
7004
7005 OKS_TAX_UTIL_PVT.Get_Tax (p_api_version => 1.0,
7006 p_init_msg_list => OKC_API.G_TRUE,
7007 p_chr_id => get_header_id,
7008 p_cle_id => l_old_id,
7009 px_rail_rec => G_RAIL_REC,
7010 x_msg_count => x_msg_count,
7011 x_msg_data => x_msg_data,
7012 x_return_status => l_return_status );
7013
7014 -- Bug 5228352 --
7015 IF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
7016 RAISE OKC_API.G_EXCEPTION_ERROR;
7017 ELSIF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
7018 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7019 END IF;
7020 -- Bug 5228352 --
7021
7022 -- --------errorout_ad(' error in calc tax '||l_return_status );
7023 -- Create IRT Rule
7024
7025 -- OKS_QP_INT_PVT.CLEAR_RULE_TABLE ( x_rulv_tbl => l_rule_tbl);
7026
7027 -- l_rule_rec := l_rule_tbl(1);
7028 -- Bug 5228352 --
7029 open get_tax_details(l_old_id);
7030 fetch get_tax_details into get_tax_rec;
7031 close get_tax_details;
7032
7033 l_klnv_tbl(1).id := get_tax_rec.id;
7034 l_klnv_tbl(1).cle_id := l_old_id;
7035 l_klnv_tbl(1).object_version_number := get_tax_rec.object_version_number;
7036 -- Bug 5228352 --
7037
7038 l_klnv_tbl(1).dnz_chr_id := get_header_id;
7039 l_klnv_tbl(1).tax_inclusive_yn := g_rail_rec.amount_includes_tax_flag;
7040
7041
7042 IF g_rail_rec.amount_includes_tax_flag = 'N' THEN
7043 l_klnv_tbl(1).tax_amount := NVL(g_rail_rec.tax_value, 0);
7044 -- l_klnv_tbl(1).rule_information6 := g_rail_rec.amount + NVL(g_rail_rec.tax_value,0);
7045 ELSE
7046 l_klnv_tbl(1).tax_amount := 0;
7047 -- l_rule_rec.rule_information6 := g_rail_rec.amount;
7048 END IF;
7049
7050 --- l_rule_rec.dnz_chr_id := Get_header_id;
7051 -- l_rule_rec.rule_information_category := 'IRT';
7052 -- l_rule_rec.rule_information5 := g_rail_rec.amount_includes_tax_flag;
7053
7054 IF g_rail_rec.amount_includes_tax_flag = 'N' THEN
7055 -- l_rule_rec.rule_information4 := NVL(g_rail_rec.tax_value,0);
7056 l_klnv_tbl(1).tax_amount := g_rail_rec.amount + NVL(g_rail_rec.tax_value, 0) ;
7057 ELSE
7058 -- l_rule_rec.rule_information4 := 0;
7059 l_klnv_tbl(1).tax_amount := g_rail_rec.amount;
7060 END IF;
7061
7062 -- Update IRT rul
7063
7064 OKS_CONTRACT_LINE_PUB.update_line(
7065 p_api_version => p_api_version,
7066 p_init_msg_list => p_init_msg_list,
7067 x_return_status => l_return_status,
7068 x_msg_count => l_msg_count,
7069 x_msg_data => l_msg_data,
7070 p_klnv_tbl => l_klnv_tbl,
7071 x_klnv_tbl => lx_klnv_tbl,
7072 p_validate_yn => l_validate_yn);
7073 -- Bug 5228352 --
7074 IF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
7075 RAISE OKC_API.G_EXCEPTION_ERROR;
7076 ELSIF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
7077 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7078 END IF;
7079 -- Bug 5228352 --
7080
7081
7082 /* oks_qp_int_pvt.UPDATE_RULE ( p_rule_rec => l_rule_rec,
7083 p_line_id => l_old_id,
7084 x_return_status => l_return_status,
7085 x_msg_count => x_msg_count,
7086 x_msg_data => x_msg_data);
7087 */
7088 -- --------errorout_ad(' after qp int pvt '||l_return_status );
7089
7090 END IF; /* Calculate tax - update IRT rule for non cov item , cov prod */
7091
7092
7093 /*** Profile option to be checked. If 'Yes' then call pricing engine **/
7094
7095 IF NVL(fnd_profile.VALUE('OKS_USE_QP_FOR_MANUAL_ADJ'), 'NO') = 'YES' THEN
7096
7097 IF l_old_lse_id IN (7, 9, 18, 25) THEN
7098 -- l_detail_rec.chr_id := l_service_red.header_id; /** header id **/
7099 -- l_detail_rec.line_id := l_service_rec.line_id; /** line id **/
7100 l_detail_rec.subline_id := l_old_id; /** Subline id **/
7101 l_detail_rec.intent := 'OA';
7102 l_detail_rec.currency := l_old_currency_code; /** Currency code **/
7103 l_detail_Rec.usage_qty := NULL;
7104 l_detail_rec.usage_uom_code := NULL;
7105 l_detail_rec.asking_unit_price := l_clvl_rec.price_negotiated + NVL(l_diff_amt, 0) ; /* New subine amount after cascade service price */
7106
7107 ----------errorout_ad(' ******* diff amt updation ******** ');
7108 ----------errorout_ad(' subline id '||l_detail_rec.subline_id);
7109 ----------errorout_ad(' currency '||l_detail_rec.currency);
7110 ----------errorout_ad(' price '||l_detail_rec.asking_unit_price);
7111
7112 OKS_QP_INT_PVT.COMPUTE_PRICE
7113 (
7114 l_api_version,
7115 l_init_msg_list,
7116 l_detail_rec,
7117 l_price_details,
7118 l_modifier_details,
7119 l_price_break_details,
7120 l_return_status,
7121 l_msg_count,
7122 l_msg_data );
7123
7124 IF l_return_status <> OKC_API.G_RET_STS_SUCCESS THEN
7125 RAISE G_ERROR;
7126 END IF;
7127 END IF;
7128 END IF; /** ENDIF CALL TO QP INT */
7129 END IF; /** ENDIF DIFF AMT **/
7130
7131 -- Need to update line amount also
7132
7133
7134 UPDATE_LINE_AMOUNT(p_contract_line_id,
7135 p_new_service_price,
7136 x_return_status,
7137 x_msg_count,
7138 x_msg_data );
7139
7140
7141 IF x_return_status <> OKC_API.G_RET_STS_SUCCESS THEN
7142 RAISE G_ERROR;
7143 END IF;
7144
7145
7146 --Update Header Amount Added For Bug 2236444
7147 UPDATE_CONTRACT_AMOUNT(p_header_id => Get_Header_Id,
7148 x_return_status => x_return_status);
7149
7150
7151 IF x_return_status <> OKC_API.G_RET_STS_SUCCESS THEN
7152 RAISE G_ERROR;
7153 END IF;
7154
7155
7156
7157 EXCEPTION
7158 WHEN G_ERROR THEN
7159
7160 NULL;
7161 WHEN OTHERS THEN
7162
7163 OKC_API.SET_MESSAGE(p_app_name => G_APP_NAME_OKC,
7164 p_msg_name => G_UNEXPECTED_ERROR,
7165 p_token1 => G_SQLCODE_TOKEN,
7166 p_token1_value => SQLCODE,
7167 p_token2 => G_SQLERRM_TOKEN,
7168 p_token2_value => SQLERRM);
7169
7170 x_return_status := G_RET_STS_UNEXP_ERROR;
7171
7172 END Cascade_Service_Price;
7173
7174
7175
7176 PROCEDURE update_quantity(p_cle_id IN NUMBER,
7177 x_return_status OUT NOCOPY VARCHAR2,
7178 x_msg_count OUT NOCOPY NUMBER,
7179 x_msg_data OUT NOCOPY VARCHAR2
7180 )
7181 IS
7182 CURSOR get_all_instances_csr IS
7183 SELECT id
7184 FROM okc_k_lines_b
7185 WHERE cle_id = p_cle_id
7186 AND lse_id IN (9, 25);
7187
7188 CURSOR get_okc_item_qty_csr (p_item_cle_id NUMBER) IS
7189 SELECT object1_id1, number_of_items
7190 FROM okc_k_items
7191 WHERE cle_id = p_item_cle_id;
7192
7193 get_okc_item_qty_rec get_okc_item_qty_csr%ROWTYPE;
7194
7195 CURSOR get_csi_item_qty_csr (p_object1_id1 VARCHAR2) IS
7196 SELECT cii.quantity
7197 FROM CSI_ITEM_INSTANCES CII
7198 WHERE instance_id = TO_NUMBER(p_object1_id1);
7199
7200 get_csi_item_qty_rec get_csi_item_qty_csr%ROWTYPE;
7201
7202 l_input_details OKS_QP_PKG.INPUT_DETAILS;
7203 l_output_details OKS_QP_PKG.PRICE_DETAILS;
7204 l_modif_details QP_PREQ_GRP.LINE_DETAIL_TBL_TYPE;
7205 l_pb_details OKS_QP_PKG.G_PRICE_BREAK_TBL_TYPE;
7206 l_return_status VARCHAR2(20) := 'S';
7207 l_msg_count NUMBER;
7208 l_msg_data VARCHAR2(2000);
7209 BEGIN
7210
7211 FOR get_all_instances_rec IN get_all_instances_csr
7212 LOOP
7213 OPEN get_okc_item_qty_csr(get_all_instances_rec.id);
7214 FETCH get_okc_item_qty_csr INTO get_okc_item_qty_rec;
7215 CLOSE get_okc_item_qty_csr;
7216
7217 OPEN get_csi_item_qty_csr (get_okc_item_qty_rec.object1_id1);
7218 FETCH get_csi_item_qty_csr INTO get_csi_item_qty_rec;
7219 CLOSE get_csi_item_qty_csr;
7220
7221 IF NVL(get_csi_item_qty_rec.quantity, 0) > NVL(get_okc_item_qty_rec.number_of_items, 0)
7222 THEN
7223 UPDATE okc_k_items
7224 SET number_of_items = get_csi_item_qty_rec.quantity
7225 WHERE cle_id = get_all_instances_rec.id;
7226
7227 --calling reprice
7228 l_input_details.line_id := p_cle_id;
7229 l_input_details.subline_id := get_all_instances_rec.id;
7230 l_input_details.intent := 'SP';
7231 OKS_QP_INT_PVT.Compute_Price
7232 (
7233 p_api_version => 1.0,
7234 p_init_msg_list => 'T',
7235 p_detail_rec => l_input_details,
7236 x_price_details => l_output_details,
7237 x_modifier_details => l_modif_details,
7238 x_price_break_details => l_pb_details,
7239 x_return_status => l_return_status,
7240 x_msg_count => l_msg_count,
7241 x_msg_data => l_msg_data
7242 );
7243
7244 --refresh schedule
7245 IF l_return_status <> OKC_API.G_RET_STS_SUCCESS THEN
7246 RAISE G_ERROR;
7247 END IF;
7248 oks_bill_sch.Create_Bill_Sch_CP
7249 (
7250 p_top_line_id => p_cle_id,
7251 p_cp_line_id => get_all_instances_rec.id,
7252 p_cp_new => 'N',
7253 x_return_status => l_return_status,
7254 x_msg_count => l_msg_count,
7255 x_msg_data => l_msg_data);
7256
7257 IF l_return_status <> OKC_API.G_RET_STS_SUCCESS THEN
7258 RAISE G_ERROR;
7259 END IF;
7260 END IF;
7261 END LOOP;
7262 x_return_status := l_return_status;
7263 x_msg_count := l_msg_count;
7264 x_msg_data := l_msg_data;
7265 EXCEPTION
7266 WHEN G_ERROR THEN
7267
7268 NULL;
7269 WHEN OTHERS THEN
7270
7271 OKC_API.SET_MESSAGE(p_app_name => G_APP_NAME_OKC,
7272 p_msg_name => G_UNEXPECTED_ERROR,
7273 p_token1 => G_SQLCODE_TOKEN,
7274 p_token1_value => SQLCODE,
7275 p_token2 => G_SQLERRM_TOKEN,
7276 p_token2_value => SQLERRM);
7277
7278 x_return_status := G_RET_STS_UNEXP_ERROR;
7279 x_msg_count := l_msg_count;
7280 x_msg_data := l_msg_data;
7281
7282 END update_quantity;
7283 -- added for contact creation OCT2004
7284 PROCEDURE create_person (
7285 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
7286 p_person_tbl IN PERSON_TBL_TYPE,
7287 x_party_id OUT NOCOPY NUMBER,
7288 x_party_number OUT NOCOPY VARCHAR2,
7289 x_profile_id OUT NOCOPY NUMBER,
7290 x_return_status OUT NOCOPY VARCHAR2,
7291 x_msg_count OUT NOCOPY NUMBER,
7292 x_msg_data OUT NOCOPY VARCHAR2
7293 )IS
7294 l_person_rec HZ_PARTY_V2PUB.person_rec_type ;
7295 l_init_msg_list CONSTANT VARCHAR2(1) := 'F';
7296 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
7297
7298 BEGIN
7299 l_person_rec.person_pre_name_adjunct := p_person_tbl(1).person_pre_name_adjunct;
7300 l_person_rec.person_first_name := p_person_tbl(1).person_first_name;
7301 l_person_rec.person_last_name := p_person_tbl(1).person_last_name;
7302 l_person_rec.content_source_type := 'USER_ENTERED';
7303 l_person_rec.actual_content_source := 'SST';
7304 l_person_rec.created_by_module := 'OKS_AUTH';
7305
7306
7307 HZ_PARTY_V2PUB.create_person (
7308 p_init_msg_list => l_init_msg_list,
7309 p_person_rec => l_person_rec,
7310 x_party_id => x_party_id,
7311 x_party_number => x_party_number,
7312 x_profile_id => x_profile_id,
7313 x_return_status => x_return_status,
7314 x_msg_count => x_msg_count,
7315 x_msg_data => x_msg_data);
7316
7317 EXCEPTION
7318 WHEN OTHERS THEN
7319 x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
7320 OKC_API.set_message
7321 (OKC_API.G_APP_NAME,
7322 G_UNEXPECTED_ERROR,
7323 G_SQLCODE_TOKEN,
7324 SQLCODE,
7325 G_SQLERRM_TOKEN,
7326 SQLERRM);
7327 END;
7328
7329 PROCEDURE update_person (
7330 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
7331 p_person_tbl IN PERSON_TBL_TYPE,
7332 p_party_object_version_number IN NUMBER,
7333 x_profile_id OUT NOCOPY NUMBER,
7334 x_return_status OUT NOCOPY VARCHAR2,
7335 x_msg_count OUT NOCOPY NUMBER,
7336 x_msg_data OUT NOCOPY VARCHAR2
7337 )IS
7338 l_person_rec HZ_PARTY_V2PUB.person_rec_type ;
7339 l_party_rec HZ_PARTY_V2PUB.party_rec_type;
7340 l_init_msg_list CONSTANT VARCHAR2(1) := 'F';
7341 l_party_object_version_number NUMBER := p_party_object_version_number;
7342 BEGIN
7343
7344 l_party_rec.party_id := p_person_tbl(1).party_id;
7345 l_person_rec.party_rec := l_party_rec;
7346 l_person_rec.person_pre_name_adjunct := p_person_tbl(1).person_pre_name_adjunct;
7347 l_person_rec.person_first_name := p_person_tbl(1).person_first_name;
7348 l_person_rec.person_last_name := p_person_tbl(1).person_last_name;
7349 l_person_rec.content_source_type := 'USER_ENTERED';
7350 l_person_rec.actual_content_source := 'SST';
7351 --l_person_rec.created_by_module := 'OKS_AUTH';
7352
7353 HZ_PARTY_V2PUB.update_person(
7354 p_init_msg_list => l_init_msg_list,
7355 p_person_rec => l_person_rec,
7356 p_party_object_version_number => l_party_object_version_number,
7357 x_profile_id => x_profile_id,
7358 x_return_status => x_return_status,
7359 x_msg_count => x_msg_count,
7360 x_msg_data => x_msg_data);
7361 EXCEPTION
7362 WHEN OTHERS THEN
7363 x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
7364 OKC_API.set_message
7365 (OKC_API.G_APP_NAME,
7366 G_UNEXPECTED_ERROR,
7367 G_SQLCODE_TOKEN,
7368 SQLCODE,
7369 G_SQLERRM_TOKEN,
7370 SQLERRM);
7371
7372 END;
7373
7374 PROCEDURE create_org_contact (
7375 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
7376 p_org_contact_tbl IN ORG_CONTACT_TBL_TYPE,
7377 p_relationship_tbl_type IN relationship_tbl_type,
7378 x_org_contact_id OUT NOCOPY NUMBER,
7379 x_party_rel_id OUT NOCOPY NUMBER,
7380 x_party_id OUT NOCOPY NUMBER,
7381 x_party_number OUT NOCOPY VARCHAR2,
7382 x_return_status OUT NOCOPY VARCHAR2,
7383 x_msg_count OUT NOCOPY NUMBER,
7384 x_msg_data OUT NOCOPY VARCHAR2
7385 )IS
7386 l_init_msg_list CONSTANT VARCHAR2(1) := 'F';
7387 relationship_rel_rec HZ_RELATIONSHIP_V2PUB.relationship_rec_type ;
7388 org_contact_rec HZ_PARTY_CONTACT_V2PUB.org_contact_rec_type ;
7389 BEGIN
7390 relationship_rel_rec.subject_id := p_relationship_tbl_type(1).subject_id;
7391 relationship_rel_rec.subject_type := p_relationship_tbl_type(1).subject_type ; --'PERSON';
7392 relationship_rel_rec.subject_table_name := p_relationship_tbl_type(1).subject_table_name; --'HZ_PARTIES';
7393 relationship_rel_rec.object_id := p_relationship_tbl_type(1).object_id;
7394 relationship_rel_rec.object_type := p_relationship_tbl_type(1).object_type;
7395 relationship_rel_rec.object_table_name := p_relationship_tbl_type(1).object_table_name; --'HZ_PARTIES';
7396 relationship_rel_rec.relationship_code := p_relationship_tbl_type(1).relationship_code ; --'CONTACT_OF';
7397 relationship_rel_rec.relationship_type := p_relationship_tbl_type(1).relationship_type ; --'CONTACT';
7398 relationship_rel_rec.created_by_module := 'OKS_AUTH';
7399 relationship_rel_rec.content_source_type := 'USER_ENTERED';
7400 -- relationship_rel_rec.actual_content_source := 'SST';
7401 org_contact_rec.job_title_code := p_org_contact_tbl(1).job_title_code;
7402 org_contact_rec.job_title := p_org_contact_tbl(1).job_title;
7403 org_contact_rec.party_site_id := p_org_contact_tbl(1).party_site_id;
7404 org_contact_rec.created_by_module := 'OKS_AUTH';
7405 org_contact_rec.party_rel_rec := relationship_rel_rec;
7406 HZ_PARTY_CONTACT_V2PUB.create_org_contact(
7407 p_init_msg_list => l_init_msg_list,
7408 p_org_contact_rec => org_contact_rec,
7409 x_org_contact_id => x_org_contact_id,
7410 x_party_rel_id => x_party_rel_id,
7411 x_party_id => x_party_id,
7412 x_party_number => x_party_number,
7413 x_return_status => x_return_status,
7414 x_msg_count => x_msg_count,
7415 x_msg_data => x_msg_data);
7416
7417 EXCEPTION
7418 WHEN OTHERS THEN
7419 x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
7420 OKC_API.set_message
7421 (OKC_API.G_APP_NAME,
7422 G_UNEXPECTED_ERROR,
7423 G_SQLCODE_TOKEN,
7424 SQLCODE,
7425 G_SQLERRM_TOKEN,
7426 SQLERRM);
7427 END;
7428
7429 PROCEDURE update_org_contact (
7430 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
7431 p_org_contact_tbl IN ORG_CONTACT_TBL_TYPE,
7432 p_relationship_tbl_type IN relationship_tbl_type,
7433 p_cont_object_version_number IN OUT NOCOPY NUMBER,
7434 p_rel_object_version_number IN OUT NOCOPY NUMBER,
7435 p_party_object_version_number IN OUT NOCOPY NUMBER,
7436 x_return_status OUT NOCOPY VARCHAR2,
7437 x_msg_count OUT NOCOPY NUMBER,
7438 x_msg_data OUT NOCOPY VARCHAR2
7439 )IS
7440 l_init_msg_list CONSTANT VARCHAR2(1) := 'F';
7441 relationship_rel_rec HZ_RELATIONSHIP_V2PUB.relationship_rec_type ;
7442 org_contact_rec HZ_PARTY_CONTACT_V2PUB.org_contact_rec_type ;
7443 party_rec HZ_PARTY_V2PUB.PARTY_REC_TYPE ;
7444 l_cont_object_version_number NUMBER := p_cont_object_version_number;
7445 l_rel_object_version_number NUMBER := p_rel_object_version_number;
7446 l_party_object_version_number NUMBER := p_party_object_version_number;
7447
7448 BEGIN
7449 party_rec.party_id := p_relationship_tbl_type(1).relationship_id;
7450 relationship_rel_rec.party_rec := party_rec;
7451 relationship_rel_rec.subject_id := p_relationship_tbl_type(1).subject_id;
7452 relationship_rel_rec.subject_type := p_relationship_tbl_type(1).subject_type ; --'PERSON';
7453 relationship_rel_rec.subject_table_name := p_relationship_tbl_type(1).subject_table_name; --'HZ_PARTIES';
7454 relationship_rel_rec.object_id := p_relationship_tbl_type(1).object_id;
7455 relationship_rel_rec.object_type := p_relationship_tbl_type(1).object_type;
7456 relationship_rel_rec.object_table_name := p_relationship_tbl_type(1).object_table_name; --'HZ_PARTIES';
7457 relationship_rel_rec.relationship_code := p_relationship_tbl_type(1).relationship_code ; --'CONTACT_OF';
7458 relationship_rel_rec.relationship_type := p_relationship_tbl_type(1).relationship_type ; --'CONTACT';
7459 relationship_rel_rec.content_source_type := 'USER_ENTERED';
7460 relationship_rel_rec.actual_content_source := 'SST';
7461 org_contact_rec.job_title_code := p_org_contact_tbl(1).job_title_code;
7462 org_contact_rec.job_title := p_org_contact_tbl(1).job_title;
7463 org_contact_rec.org_contact_id := p_org_contact_tbl(1).org_contact_id;
7464 org_contact_rec.party_site_id := p_org_contact_tbl(1).party_site_id;
7465 org_contact_rec.party_rel_rec := relationship_rel_rec;
7466
7467 HZ_PARTY_CONTACT_V2PUB.update_org_contact(
7468 p_init_msg_list => l_init_msg_list,
7469 p_org_contact_rec => org_contact_rec,
7470 p_cont_object_version_number => l_cont_object_version_number,
7471 p_rel_object_version_number => l_rel_object_version_number,
7472 p_party_object_version_number => l_party_object_version_number,
7473 x_return_status => x_return_status,
7474 x_msg_count => x_msg_count,
7475 x_msg_data => x_msg_data);
7476
7477 EXCEPTION
7478 WHEN OTHERS THEN
7479 x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
7480 OKC_API.set_message
7481 (OKC_API.G_APP_NAME,
7482 G_UNEXPECTED_ERROR,
7483 G_SQLCODE_TOKEN,
7484 SQLCODE,
7485 G_SQLERRM_TOKEN,
7486 SQLERRM);
7487 END;
7488
7489 PROCEDURE create_party_site (
7490 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
7491 p_party_site_tbl IN PARTY_SITE_TBL_TYPE,
7492 x_party_site_id OUT NOCOPY NUMBER,
7493 x_party_site_number OUT NOCOPY VARCHAR2,
7494 x_return_status OUT NOCOPY VARCHAR2,
7495 x_msg_count OUT NOCOPY NUMBER,
7496 x_msg_data OUT NOCOPY VARCHAR2
7497 )IS
7498
7499 party_site_rec HZ_PARTY_SITE_V2PUB.PARTY_SITE_REC_TYPE;
7500 l_init_msg_list CONSTANT VARCHAR2(1) := 'F';
7501 --npalepu added on 4/26/2006 for bug # 5174716
7502 l_hz_prof_val VARCHAR2(1);
7503 l_change_prof VARCHAR2(1) := 'N';
7504 --end npalepu
7505
7506 BEGIN
7507
7508 party_site_rec.party_id := p_party_site_tbl(1).party_id ;
7509 party_site_rec.location_id := p_party_site_tbl(1).location_id;
7510 party_site_rec.mailstop := p_party_site_tbl(1).mailstop;
7511 party_site_rec.identifying_address_flag := 'Y';
7512 party_site_rec.created_by_module := 'OKS_AUTH';
7513
7514 --npalepu added on 4/26/2006 for bug # 5174716
7515 --setting the profile value HZ_GENERATE_PARTY_SITE_NUMBER to Y if it is set to N
7516 --inorder to auto generate the party_site_number irrespective of the profile value
7517 l_hz_prof_val := fnd_profile.value('HZ_GENERATE_PARTY_SITE_NUMBER');
7518 IF l_hz_prof_val = 'N' THEN
7519 fnd_profile.put('HZ_GENERATE_PARTY_SITE_NUMBER','Y');
7520 l_change_prof := 'Y';
7521 END IF;
7522 --end npalepu
7523
7524 HZ_PARTY_SITE_V2PUB.create_party_site(
7525 p_init_msg_list => l_init_msg_list,
7526 p_party_site_rec => party_site_rec,
7527 x_party_site_id => x_party_site_id,
7528 x_party_site_number => x_party_site_number,
7529 x_return_status => x_return_status,
7530 x_msg_count => x_msg_count,
7531 x_msg_data => x_msg_data);
7532
7533 --npalepu added on 4/26/2006 for bug # 5174716
7534 IF l_change_prof = 'Y' THEN
7535 fnd_profile.put('HZ_GENERATE_PARTY_SITE_NUMBER',l_hz_prof_val);
7536 END IF;
7537 --end npalepu
7538
7539 EXCEPTION
7540 WHEN OTHERS THEN
7541 x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
7542 OKC_API.set_message
7543 (OKC_API.G_APP_NAME,
7544 G_UNEXPECTED_ERROR,
7545 G_SQLCODE_TOKEN,
7546 SQLCODE,
7547 G_SQLERRM_TOKEN,
7548 SQLERRM);
7549 END;
7550
7551 PROCEDURE update_party_site (
7552 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
7553 p_party_site_tbl IN PARTY_SITE_TBL_TYPE,
7554 p_object_version_number IN OUT NOCOPY NUMBER,
7555 x_return_status OUT NOCOPY VARCHAR2,
7556 x_msg_count OUT NOCOPY NUMBER,
7557 x_msg_data OUT NOCOPY VARCHAR2
7558 )IS
7559 party_site_rec hz_party_site_v2pub.PARTY_SITE_REC_TYPE;
7560 l_init_msg_list CONSTANT VARCHAR2(1) := 'F';
7561 l_object_version_number NUMBER := p_object_version_number;
7562 BEGIN
7563
7564 party_site_rec.party_id := p_party_site_tbl(1).party_id ;
7565 party_site_rec.location_id := p_party_site_tbl(1).location_id;
7566 party_site_rec.party_site_id := p_party_site_tbl(1).party_site_id;
7567 party_site_rec.mailstop := p_party_site_tbl(1).mailstop;
7568 HZ_PARTY_SITE_V2PUB.update_party_site(
7569 p_init_msg_list => l_init_msg_list,
7570 p_party_site_rec => party_site_rec,
7571 p_object_version_number => l_object_version_number,
7572 x_return_status => x_return_status,
7573 x_msg_count => x_msg_count,
7574 x_msg_data => x_msg_data);
7575
7576 EXCEPTION
7577 WHEN OTHERS THEN
7578 x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
7579 OKC_API.set_message
7580 (OKC_API.G_APP_NAME,
7581 G_UNEXPECTED_ERROR,
7582 G_SQLCODE_TOKEN,
7583 SQLCODE,
7584 G_SQLERRM_TOKEN,
7585 SQLERRM);
7586 END;
7587
7588 PROCEDURE create_cust_account_role (
7589 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
7590 p_cust_account_role_tbl IN CUST_ACCOUNT_ROLE_tbl_TYPE,
7591 x_cust_account_role_id OUT NOCOPY NUMBER,
7592 x_return_status OUT NOCOPY VARCHAR2,
7593 x_msg_count OUT NOCOPY NUMBER,
7594 x_msg_data OUT NOCOPY VARCHAR2
7595 ) IS
7596 l_init_msg_list CONSTANT VARCHAR2(1) := 'F';
7597 cust_account_role_rec Hz_cust_account_role_v2pub.cust_account_role_rec_type;
7598 BEGIN
7599 cust_account_role_rec.party_id := p_cust_account_role_tbl(1).party_id;
7600 cust_account_role_rec.role_type := p_cust_account_role_tbl(1).role_type;
7601 cust_account_role_rec.cust_account_id := p_cust_account_role_tbl(1).cust_account_id;
7602 cust_account_role_rec.cust_acct_site_id := p_cust_account_role_tbl(1).cust_acct_site_id;
7603 cust_account_role_rec.primary_flag := p_cust_account_role_tbl(1).primary_flag;
7604 cust_account_role_rec.status := p_cust_account_role_tbl(1).status;
7605 cust_account_role_rec.created_by_module := 'OKS_AUTH';
7606
7607 Hz_cust_account_role_v2pub.create_cust_account_role(
7608 p_init_msg_list => l_init_msg_list,
7609 p_cust_account_role_rec => cust_account_role_rec,
7610 x_cust_account_role_id => x_cust_account_role_id,
7611 x_return_status => x_return_status,
7612 x_msg_count => x_msg_count,
7613 x_msg_data => x_msg_data);
7614
7615 EXCEPTION
7616 WHEN OTHERS THEN
7617 x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
7618 OKC_API.set_message
7619 (OKC_API.G_APP_NAME,
7620 G_UNEXPECTED_ERROR,
7621 G_SQLCODE_TOKEN,
7622 SQLCODE,
7623 G_SQLERRM_TOKEN,
7624 SQLERRM);
7625 END;
7626
7627 PROCEDURE update_cust_account_role (
7628 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
7629 p_cust_account_role_tbl IN CUST_ACCOUNT_ROLE_tbl_TYPE,
7630 p_object_version_number IN OUT NOCOPY NUMBER,
7631 x_return_status OUT NOCOPY VARCHAR2,
7632 x_msg_count OUT NOCOPY NUMBER,
7633 x_msg_data OUT NOCOPY VARCHAR2
7634 )IS
7635 l_init_msg_list CONSTANT VARCHAR2(1) := 'F';
7636 l_object_version_number NUMBER := p_object_version_number;
7637 cust_account_role_rec Hz_cust_account_role_v2pub.cust_account_role_rec_type;
7638 BEGIN
7639 cust_account_role_rec.cust_account_role_id := p_cust_account_role_tbl(1).cust_account_role_id;
7640 cust_account_role_rec.party_id := p_cust_account_role_tbl(1).party_id;
7641 cust_account_role_rec.role_type := p_cust_account_role_tbl(1).role_type;
7642 cust_account_role_rec.cust_account_id := p_cust_account_role_tbl(1).cust_account_id;
7643 cust_account_role_rec.cust_acct_site_id := p_cust_account_role_tbl(1).cust_acct_site_id;
7644 cust_account_role_rec.primary_flag := p_cust_account_role_tbl(1).primary_flag;
7645 cust_account_role_rec.status := p_cust_account_role_tbl(1).status;
7646
7647 Hz_cust_account_role_v2pub.update_cust_account_role(
7648 p_init_msg_list => l_init_msg_list,
7649 p_cust_account_role_rec => cust_account_role_rec,
7650 p_object_version_number => l_object_version_number,
7651 x_return_status => x_return_status,
7652 x_msg_count => x_msg_count,
7653 x_msg_data => x_msg_data);
7654
7655 EXCEPTION
7656 WHEN OTHERS THEN
7657 x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
7658 OKC_API.set_message
7659 (OKC_API.G_APP_NAME,
7660 G_UNEXPECTED_ERROR,
7661 G_SQLCODE_TOKEN,
7662 SQLCODE,
7663 G_SQLERRM_TOKEN,
7664 SQLERRM);
7665 END;
7666
7667 PROCEDURE create_cust_acct_site (
7668 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
7669 p_cust_acct_site_tbl IN CUST_ACCT_SITE_TBL_TYPE,
7670 x_cust_acct_site_id OUT NOCOPY NUMBER,
7671 x_return_status OUT NOCOPY VARCHAR2,
7672 x_msg_count OUT NOCOPY NUMBER,
7673 x_msg_data OUT NOCOPY VARCHAR2
7674 )IS
7675 l_init_msg_list CONSTANT VARCHAR2(1) := 'F';
7676 cust_acct_site_rec HZ_CUST_ACCOUNT_SITE_V2PUB.cust_acct_site_rec_type;
7677 BEGIN
7678
7679 cust_acct_site_rec.cust_account_id := p_cust_acct_site_tbl(1).cust_account_id ;
7680 cust_acct_site_rec.party_site_id := p_cust_acct_site_tbl(1).party_site_id;
7681 cust_acct_site_rec.created_by_module := 'OKS_AUTH' ;
7682
7683 Hz_cust_account_site_v2pub.create_cust_acct_site(
7684 p_init_msg_list => l_init_msg_list,
7685 p_cust_acct_site_rec => cust_acct_site_rec,
7686 x_cust_acct_site_id => x_cust_acct_site_id,
7687 x_return_status => x_return_status,
7688 x_msg_count => x_msg_count,
7689 x_msg_data => x_msg_data);
7690
7691 EXCEPTION
7692 WHEN OTHERS THEN
7693 x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
7694 OKC_API.set_message
7695 (OKC_API.G_APP_NAME,
7696 G_UNEXPECTED_ERROR,
7697 G_SQLCODE_TOKEN,
7698 SQLCODE,
7699 G_SQLERRM_TOKEN,
7700 SQLERRM);
7701
7702 END;
7703
7704 PROCEDURE update_cust_acct_site (
7705 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
7706 p_cust_acct_site_tbl IN CUST_ACCT_SITE_TBL_TYPE,
7707 p_object_version_number IN OUT NOCOPY NUMBER,
7708 x_return_status OUT NOCOPY VARCHAR2,
7709 x_msg_count OUT NOCOPY NUMBER,
7710 x_msg_data OUT NOCOPY VARCHAR2
7711 )IS
7712 l_init_msg_list CONSTANT VARCHAR2(1) := 'F';
7713 l_object_version_number NUMBER := p_object_version_number;
7714 cust_acct_site_rec HZ_CUST_ACCOUNT_SITE_V2PUB.cust_acct_site_rec_type;
7715 BEGIN
7716
7717 cust_acct_site_rec.cust_account_id := p_cust_acct_site_tbl(1).cust_account_id ;
7718 cust_acct_site_rec.party_site_id := p_cust_acct_site_tbl(1).party_site_id;
7719 cust_acct_site_rec.cust_acct_site_id := p_cust_acct_site_tbl(1).cust_acct_site_id;
7720 --cust_acct_site_rec.created_by_module := 'OKS_AUTH' ;
7721 Hz_cust_account_site_v2pub.update_cust_acct_site(
7722 p_init_msg_list => l_init_msg_list,
7723 p_cust_acct_site_rec => cust_acct_site_rec,
7724 p_object_version_number => l_object_version_number,
7725 x_return_status => x_return_status,
7726 x_msg_count => x_msg_count,
7727 x_msg_data => x_msg_data);
7728
7729 EXCEPTION
7730 WHEN OTHERS THEN
7731 x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
7732 OKC_API.set_message
7733 (OKC_API.G_APP_NAME,
7734 G_UNEXPECTED_ERROR,
7735 G_SQLCODE_TOKEN,
7736 SQLCODE,
7737 G_SQLERRM_TOKEN,
7738 SQLERRM);
7739 END;
7740
7741 /**** Partial Period Computation Project **/
7742 -- P_intent --> 'H' Header
7743 -- P_intent --> 'T' Topline
7744 -- P_intent --> 'S' Subline
7745 FUNCTION Is_Line_Eligible(
7746 p_api_version IN NUMBER,
7747 p_init_msg_list IN VARCHAR2,
7748 p_contract_hdr_id IN NUMBER, -- VARCHAR2
7749 p_contract_line_id IN NUMBER,
7750 p_price_list_id IN NUMBER,
7751 p_intent IN VARCHAR2,
7752 x_msg_count OUT NOCOPY NUMBER,
7753 x_msg_data OUT NOCOPY VARCHAR2
7754 ) RETURN BOOLEAN IS
7755
7756 CURSOR check_eligiblity_line IS
7757 SELECT 'Y' FROM OKC_K_LINES_B
7758 WHERE dnz_chr_id = p_contract_hdr_id
7759 AND id = p_contract_line_id
7760 AND(date_terminated IS NULL OR date_terminated > TRUNC(SYSDATE))
7761 AND date_cancelled IS NULL
7762 AND end_date > NVL(oks_bill_util_pub.get_billed_upto(id, p_intent), end_date - 1);
7763
7764
7765 CURSOR get_lines_id IS
7766 SELECT ID, LSE_ID FROM OKC_K_LINES_B
7767 WHERE dnz_chr_id = p_contract_hdr_id
7768 AND cle_id IS NULL
7769 AND(date_terminated IS NULL OR date_terminated > TRUNC(SYSDATE))
7770 AND date_cancelled IS NULL
7771 AND end_date > NVL(oks_bill_util_pub.get_billed_upto(id, 'T'), end_date - 1);
7772
7773 CURSOR get_lines_details (p_chr_id IN NUMBER, p_cle_id IN NUMBER) IS
7774 SELECT locked_price_list_id,
7775 locked_price_list_line_id
7776 FROM OKS_k_LINES_B
7777 WHERE dnz_chr_id = p_chr_id
7778 AND cle_id = p_cle_id ;
7779
7780 l_return_status VARCHAR2(2);
7781 l_status VARCHAR2(2);
7782 l_locked_price_list_line_id NUMBER;
7783 l_locked_price_list_id NUMBER;
7784 l_source_price_list_line_id NUMBER;
7785 l_api_version NUMBER := 1.0;
7786 l_init_msg_list VARCHAR2(1) := 'T';
7787 l_msg_count NUMBER;
7788 l_msg_data VARCHAR2(1000);
7789
7790 BEGIN
7791 -- If Intent is 'H' the call is made from
7792 -- Authoring and we would update the price list
7793 -- Else find the status whether the line is eligible
7794 -- for repricing or not.
7795
7796 IF P_intent = 'H'
7797 THEN
7798 FOR cur_rec IN get_lines_id
7799 LOOP
7800 UPDATE okc_k_lines_b
7801 SET price_list_id = p_price_list_id
7802 WHERE dnz_chr_id = p_contract_hdr_id
7803 AND cle_id IS NULL
7804 AND ID = CUR_REC.id;
7805
7806 IF CUR_REC.lse_id IN (12, 13) THEN
7807 -- delete the price break given for Usage line
7808 -- CURSOR to fetch locked list details
7809
7810 OPEN get_lines_details (p_contract_hdr_id, cur_rec.id);
7811 FETCH get_lines_details INTO l_locked_price_list_id, l_locked_price_list_line_id;
7812 CLOSE get_lines_details;
7813 l_source_price_list_line_id := l_locked_price_list_line_id;
7814
7815 IF l_source_price_list_line_id IS NOT NULL THEN
7816 oks_qp_pkg.delete_locked_pricebreaks(l_api_version,
7817 l_source_price_list_line_id,
7818 l_init_msg_list,
7819 l_return_status,
7820 l_msg_count,
7821 l_msg_data);
7822 IF l_return_status <> 'S' THEN
7823 l_status := 'N';
7824 EXIT;
7825 END IF;
7826 END IF;
7827 END IF;
7828
7829 UPDATE OKS_K_LINES_B SET
7830 locked_price_list_id = NULL,
7831 locked_price_list_line_id = NULL
7832 WHERE dnz_chr_id = p_contract_hdr_id
7833 AND cle_id = cur_rec.id ;
7834 END LOOP;
7835 l_status := nvl(l_status, 'Y');
7836 ELSE
7837 OPEN check_eligiblity_line;
7838 FETCH check_eligiblity_line INTO l_status;
7839 CLOSE check_eligiblity_line;
7840 END IF;
7841
7842 IF NVL(l_status, 'X') = 'Y'
7843 THEN
7844 RETURN(TRUE);
7845 ELSE
7846 RETURN(FALSE);
7847 END IF;
7848 EXCEPTION
7849 WHEN OTHERS THEN
7850 RETURN(FALSE);
7851 OKC_API.set_message
7852 (OKC_API.G_APP_NAME,
7853 G_UNEXPECTED_ERROR,
7854 G_SQLCODE_TOKEN,
7855 SQLCODE,
7856 G_SQLERRM_TOKEN,
7857 SQLERRM);
7858
7859 END Is_Line_Eligible;
7860 /**** Partial Period Computation Project **/
7861 -- end contact creation OCT 2004
7862
7863 /*
7864 This new procedure was added to resolve bug 5243626.
7865 It updates amount for a topline if and only if topline amount
7866 does not euqal to the sum of subline amounts. Similarly it
7867 updates the header amount if and only if, the header amount does
7868 not equal the sum of line amounts.
7869
7870 This avoids unncessary updates to lines and prevents record locking
7871 when multiple users access the same contract. The example given below
7872 illustrates record locking in authoring and how it can be avoided in most cases
7873
7874 User 1 Action User 2 Action
7875 Time A Open Contract K1 Open same Contract K1
7876
7877 Time B Modify contract header Modify topline 1
7878 -Header record locked -Top line record locked.
7879 -No amount changes required. -No amount changes required.
7880
7881 Time C Try to save contract K1 No action
7882 -Application hangs as -User 2 continues to hold lock
7883 -unconditional update of topline -on topline 1.
7884 -amount waits for lock on topline
7885 -1 to be released by User 2.
7886 -Header and contract version number
7887 -updated.
7888
7889 Time D No action Try to save contract K1
7890 -Deadlock detected
7891 -User 1 is waiting for lock on
7892 -topline 1 held by user 2.
7893 -User 2 is waiting for lock on
7894 -version number held by user 1.
7895
7896 To avoid, the above record locking and deadlock, we one needs to
7897 1. Conditionally update the topline amount and header amount. Do not
7898 update if amounts are in sync whith child entities.
7899 2. Do not update contract version as part of header/line or any other
7900 enitity update. Defer contract version update till all other updates
7901 are successful.
7902
7903 Please note that if two users attempt to modify the same line or same entity
7904 in a contract, record locking cannot be and should not be prevented.
7905
7906 */
7907 PROCEDURE CHECK_UPDATE_AMOUNTS
7908 (
7909 p_api_version IN NUMBER,
7910 p_init_msg_list IN VARCHAR2 DEFAULT FND_API.G_FALSE,
7911 p_commit IN VARCHAR2 DEFAULT FND_API.G_FALSE,
7912 p_chr_id IN NUMBER,
7913 x_msg_count OUT NOCOPY NUMBER,
7914 x_msg_data OUT NOCOPY VARCHAR2,
7915 x_return_status OUT NOCOPY VARCHAR2
7916 )
7917 IS
7918
7919 l_api_name CONSTANT VARCHAR2(30) := 'CHECK_UPDATE_AMOUNTS';
7920 l_api_version CONSTANT NUMBER := 1;
7921 l_mod_name VARCHAR2(256) := lower(G_APP_NAME_OKS) || '.plsql.' || G_PKG_NAME || '.' || l_api_name;
7922 l_error_text VARCHAR2(512);
7923
7924 E_RESOURCE_BUSY EXCEPTION;
7925 PRAGMA EXCEPTION_INIT(E_Resource_Busy, -00054);
7926
7927 l_tl_id_tbl num_tbl_type;
7928 l_tl_amt_tbl num_tbl_type;
7929 l_sl_amt_tbl num_tbl_type;
7930 l_tl_amt_tax_tbl num_tbl_type;
7931 l_sl_amt_tax_tbl num_tbl_type;
7932 l_tl_amt NUMBER;
7933 l_hdr_amt NUMBER;
7934 l_hdr_amt_tax NUMBER;
7935 l_tl_amt_tax NUMBER;
7936 l_dummy NUMBER;
7937 l_line_name VARCHAR2(2000);
7938 l_k_num VARCHAR2(450);
7939 l_header_cancelled NUMBER;
7940 l_topline_cancelled NUMBER;
7941
7942 --select all toplines where topline amount is not equal to sum of subline amounts
7943 CURSOR c_k_toplines (cp_chr_id IN NUMBER) IS
7944 SELECT a.id, nvl(a.price_negotiated, 0) topline_amt,
7945 SUM(nvl(b.price_negotiated,0)) sum_subline_amt,
7946 nvl(c.tax_amount,0) topline_tax_amt,
7947 SUM(nvl(d.tax_amount,0)) sum_subline_tax_amt
7948 FROM okc_k_lines_b a, okc_k_lines_b b,
7949 oks_k_lines_b c, oks_k_lines_b d
7950 WHERE a.dnz_chr_id = cp_chr_id AND a.lse_id IN (1,12,14,19)
7951 AND b.dnz_chr_id = a.dnz_chr_id AND b.cle_id = a.id
7952 AND a.id=c.cle_id AND b.id=d.cle_id
7953 AND b.lse_id IN (7,8,9,10,11,35,13,18,25)
7954 AND a.date_cancelled is null
7955 AND b.date_cancelled is null
7956 GROUP BY a.id, a.price_negotiated,c.tax_amount
7957 HAVING nvl(a.price_negotiated, 0) <> SUM(nvl(b.price_negotiated,0))
7958 OR nvl(c.tax_amount, 0) <> SUM(nvl(d.tax_amount,0));
7959
7960
7961 CURSOR c_lock_tl(cp_id IN NUMBER) IS
7962 SELECT price_negotiated
7963 FROM okc_k_lines_b WHERE id = cp_id
7964 FOR UPDATE OF price_negotiated NOWAIT;
7965
7966 CURSOR c_line_name(cp_id IN NUMBER) IS
7967 SELECT substr(RTRIM(RTRIM(line_number) || ', ' || RTRIM(lsev.name) || ' ' || RTRIM(clev.name)), 1, 2000) line_name
7968 FROM okc_line_styles_v lsev, okc_k_lines_v clev
7969 WHERE lsev.id = clev.lse_id
7970 AND clev.id = cp_id;
7971
7972 CURSOR c_k_hdr(cp_chr_id IN NUMBER) IS
7973 SELECT a.contract_number ||' '|| a.contract_number_modifier,
7974 nvl(a.estimated_amount, 0) hdr_amt,
7975 SUM(nvl(b.price_negotiated,0)) sum_tl_line_amt,
7976 nvl(c.tax_amount,0) hdr_tax_amt,
7977 SUM(nvl(d.tax_amount,0)) sum_tl_line_amt_tax
7978 FROM okc_k_headers_all_b a, okc_k_lines_b b,
7979 oks_k_headers_b c, oks_k_lines_b d
7980 WHERE a.id = cp_chr_id
7981 AND b.dnz_chr_id = a.id AND b.cle_id IS NULL
7982 AND d.dnz_chr_id = c.chr_id AND d.cle_id=b.id
7983 AND b.date_cancelled is null
7984 AND b.lse_id IN (1,12,14,19,46)
7985 GROUP BY a.contract_number, a.contract_number_modifier, a.estimated_amount,c.tax_amount;
7986
7987 CURSOR c_lock_hdr(cp_chr_id IN NUMBER) IS
7988 SELECT estimated_amount
7989 FROM okc_k_headers_all_b WHERE id = cp_chr_id
7990 FOR UPDATE OF estimated_amount NOWAIT;
7991
7992 -- select all the toplines which has cancelled amount not equal to those of sublines
7993 CURSOR c_k_toplines_cancelled (cp_chr_id IN NUMBER) IS
7994 SELECT a.id, nvl(a.cancelled_amount, 0) topline_canceled_amt,
7995 SUM(nvl(b.price_negotiated,0)) sum_subline_cancelled_amt
7996 FROM okc_k_lines_b a, okc_k_lines_b b
7997 WHERE a.dnz_chr_id = cp_chr_id AND a.lse_id IN (1,12,14,19)
7998 AND b.dnz_chr_id = a.dnz_chr_id AND b.cle_id = a.id
7999 AND a.date_cancelled is null
8000 AND b.date_cancelled is not null
8001 GROUP BY a.id, a.cancelled_amount
8002 HAVING nvl(a.cancelled_amount, 0) <> SUM(nvl(b.price_negotiated,0));
8003
8004 -- select header cancelled amount and sum of topline cancelled amounts
8005 CURSOR c_k_hdr_cancelled(cp_chr_id IN NUMBER) IS
8006 SELECT
8007 nvl(a.cancelled_amount, 0) hdr_cancelled_amt,
8008 SUM(nvl(b.cancelled_amount,0)) sum_tl_line_cancelled_amt
8009 FROM okc_k_headers_all_b a, okc_k_lines_b b
8010 WHERE a.id = cp_chr_id
8011 AND b.dnz_chr_id = a.id AND b.cle_id IS NULL
8012 AND b.lse_id IN (1,12,14,19,46)
8013 GROUP BY a.cancelled_amount;
8014
8015 BEGIN
8016
8017 --log key input parameters
8018 IF (FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level) THEN
8019 FND_LOG.string(FND_LOG.level_procedure, l_mod_name || '.begin', 'p_api_version=' || p_api_version ||' ,p_commit='|| p_commit ||' ,p_chr_id='|| p_chr_id);
8020 END IF;
8021
8022 --standard api initilization and checks
8023 SAVEPOINT check_update_amounts_PVT;
8024 IF NOT FND_API.compatible_api_call (l_api_version, p_api_version, l_api_name, G_PKG_NAME)THEN
8025 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8026 END IF;
8027 IF FND_API.to_boolean(p_init_msg_list ) THEN
8028 FND_MSG_PUB.initialize;
8029 END IF;
8030 x_return_status := FND_API.G_RET_STS_SUCCESS;
8031
8032 --get all toplines that are out of sync with sublines
8033 OPEN c_k_toplines(p_chr_id);
8034 LOOP
8035 FETCH c_k_toplines BULK COLLECT INTO l_tl_id_tbl, l_tl_amt_tbl, l_sl_amt_tbl,l_tl_amt_tax_tbl,l_sl_amt_tax_tbl LIMIT G_BULK_FETCH_LIMIT;
8036 IF (FND_LOG.level_statement >= FND_LOG.g_current_runtime_level) THEN
8037 FND_LOG.string(FND_LOG.level_statement, l_mod_name || '.c_k_toplines.bulk_fetch', 'l_tl_id_tbl.count='||l_tl_id_tbl.count);
8038 END IF;
8039
8040 EXIT WHEN (l_tl_id_tbl.count = 0);
8041
8042 FOR i IN l_tl_id_tbl.first..l_tl_id_tbl.last LOOP
8043
8044 --before updating the topline amount, first try to obtain a lock on the topline
8045 --if the lock fails, another user is holding the lock, exit with appropriate
8046 --error message. If the lock succeeds, update the top line amount
8047 BEGIN
8048
8049 IF (FND_LOG.level_statement >= FND_LOG.g_current_runtime_level) THEN
8050 FND_LOG.string(FND_LOG.level_statement, l_mod_name || '.lock_line', 'checking lock for line id='||l_tl_id_tbl(i));
8051 END IF;
8052
8053 IF (l_tl_amt_tbl(i) <> l_sl_amt_tbl(i))OR ( l_tl_amt_tax_tbl(i) <> l_sl_amt_tax_tbl(i)) THEN
8054 OPEN c_lock_tl(l_tl_id_tbl(i));
8055 FETCH c_lock_tl INTO l_dummy;
8056 CLOSE c_lock_tl;
8057 END IF;
8058 EXCEPTION
8059 WHEN E_RESOURCE_BUSY THEN
8060 IF c_lock_tl%isopen THEN
8061 CLOSE c_lock_tl;
8062 END IF;
8063 OPEN c_line_name(l_tl_id_tbl(i));
8064 FETCH c_line_name INTO l_line_name;
8065 CLOSE c_line_name;
8066
8067 --set the error message on the error stack to inform the user
8068 FND_MESSAGE.set_name(G_APP_NAME_OKS, 'OKS_LINE_LOCKED');
8069 FND_MESSAGE.set_token('LINE_NAME', l_line_name);
8070
8071 IF (FND_LOG.level_error >= FND_LOG.g_current_runtime_level) THEN
8072 FND_LOG.message(FND_LOG.level_error, l_mod_name || '.lock_line_fail', FALSE);
8073 END IF;
8074 FND_MSG_PUB.ADD;
8075
8076 l_tl_id_tbl.delete;
8077 l_tl_amt_tbl.delete;
8078 l_sl_amt_tbl.delete;
8079 l_tl_amt_tax_tbl.delete;
8080 l_sl_amt_tax_tbl.delete;
8081
8082 RAISE FND_API.g_exc_error;
8083
8084 END; --of anonymous block checking topline locks
8085
8086 END LOOP;
8087
8088 IF (FND_LOG.level_statement >= FND_LOG.g_current_runtime_level) THEN
8089 FND_LOG.string(FND_LOG.level_statement, l_mod_name || '.update_line', 'able to lock all fetched toplines - updating amount');
8090 END IF;
8091
8092 --if we come till here, we where able to obtain locks on all the toplines fectched previously
8093 FORALL j IN l_tl_id_tbl.first..l_tl_id_tbl.last
8094 UPDATE okc_k_lines_b
8095 SET price_negotiated = l_sl_amt_tbl(j)
8096 WHERE id = l_tl_id_tbl(j);
8097
8098 FORALL j IN l_tl_id_tbl.first..l_tl_id_tbl.last
8099 UPDATE oks_k_lines_b
8100 SET tax_amount = l_sl_amt_tax_tbl(j)
8101 WHERE cle_id = l_tl_id_tbl(j);
8102
8103 IF (FND_LOG.level_statement >= FND_LOG.g_current_runtime_level) THEN
8104 FND_LOG.string(FND_LOG.level_statement, l_mod_name || '.update_line', 'amounts updated');
8105 END IF;
8106
8107 END LOOP; --of bulk fetch loop
8108 CLOSE c_k_toplines;
8109 l_tl_id_tbl.delete;
8110 l_tl_amt_tbl.delete;
8111 l_sl_amt_tbl.delete;
8112 l_tl_amt_tax_tbl.delete;
8113 l_sl_amt_tax_tbl.delete;
8114
8115 OPEN c_k_hdr(p_chr_id);
8116 FETCH c_k_hdr INTO l_k_num, l_hdr_amt, l_tl_amt,l_hdr_amt_tax,l_tl_amt_tax;
8117 CLOSE c_k_hdr;
8118
8119 IF (FND_LOG.level_statement >= FND_LOG.g_current_runtime_level) THEN
8120 FND_LOG.string(FND_LOG.level_statement, l_mod_name || '.update_hdr', 'db hdr amt='||l_hdr_amt||' , sum of toplines='||l_tl_amt);
8121 END IF;
8122
8123 --update the header only if required
8124 IF (l_hdr_amt <> l_tl_amt) OR(l_hdr_amt_tax <> l_tl_amt_tax) THEN
8125
8126 --before updating the header amount, first try to obtain a lock on the header
8127 --if the lock fails, another user is holding the lock, exit with appropriate
8128 --error message. If the lock succeeds, update the header amount
8129 BEGIN
8130
8131 IF (FND_LOG.level_statement >= FND_LOG.g_current_runtime_level) THEN
8132 FND_LOG.string(FND_LOG.level_statement, l_mod_name || '.lock_hdr', 'checking lock for header id='||p_chr_id);
8133 END IF;
8134
8135 OPEN c_lock_hdr(p_chr_id);
8136 FETCH c_lock_hdr INTO l_dummy;
8137 CLOSE c_lock_hdr;
8138
8139 IF (l_hdr_amt <> l_tl_amt) THEN
8140 UPDATE okc_k_headers_all_b
8141 SET estimated_amount = l_tl_amt
8142 WHERE id = p_chr_id;
8143 END IF;
8144
8145 IF (l_hdr_amt_tax <> l_tl_amt_tax) THEN
8146 UPDATE oks_k_headers_b
8147 SET tax_amount = l_tl_amt_tax
8148 where chr_id = p_chr_id;
8149 END IF;
8150
8151 EXCEPTION
8152 WHEN E_RESOURCE_BUSY THEN
8153 IF c_lock_hdr%isopen THEN
8154 CLOSE c_lock_hdr;
8155 END IF;
8156 --set the error message on the error stack to inform the user
8157 FND_MESSAGE.set_name(G_APP_NAME_OKS, 'OKS_HEADER_LOCKED');
8158 FND_MESSAGE.set_token('CONTRACT_NUMBER', l_k_num);
8159
8160 IF (FND_LOG.level_error >= FND_LOG.g_current_runtime_level) THEN
8161 FND_LOG.message(FND_LOG.level_error, l_mod_name || '.lock_header_fail', FALSE);
8162 END IF;
8163 FND_MSG_PUB.ADD;
8164
8165 RAISE FND_API.g_exc_error;
8166
8167 END; --of anonymous block checking header lock
8168
8169 END IF; --of (l_hdr_amt <> l_tl_amt) OR(l_hdr_amt_tax <> l_tl_amt_tax) THEN
8170
8171 -- to update cancelled amount of toplines.First get all toplines that are out of sync with sublines
8172 OPEN c_k_toplines_cancelled(p_chr_id);
8173 LOOP
8174 FETCH c_k_toplines_cancelled BULK COLLECT INTO l_tl_id_tbl, l_tl_amt_tbl, l_sl_amt_tbl LIMIT G_BULK_FETCH_LIMIT;
8175 IF (FND_LOG.level_statement >= FND_LOG.g_current_runtime_level) THEN
8176 FND_LOG.string(FND_LOG.level_statement, l_mod_name || '.c_k_toplines_cancelled.bulk_fetch', 'l_tl_id_tbl.count='||l_tl_id_tbl.count);
8177 END IF;
8178
8179 EXIT WHEN (l_tl_id_tbl.count = 0);
8180
8181 FOR i IN l_tl_id_tbl.first..l_tl_id_tbl.last LOOP
8182
8183 --before updating the topline cancelled amount, first try to obtain a lock on the topline
8184 --if the lock fails, another user is holding the lock, exit with appropriate
8185 --error message. If the lock succeeds, update the top line cancelled amount
8186 BEGIN
8187
8188 IF (FND_LOG.level_statement >= FND_LOG.g_current_runtime_level) THEN
8189 FND_LOG.string(FND_LOG.level_statement, l_mod_name || '.lock_line', 'checking lock for line id='||l_tl_id_tbl(i));
8190 END IF;
8191
8192 OPEN c_lock_tl(l_tl_id_tbl(i));
8193 FETCH c_lock_tl INTO l_dummy;
8194 CLOSE c_lock_tl;
8195
8196 EXCEPTION
8197 WHEN E_RESOURCE_BUSY THEN
8198 IF c_lock_tl%isopen THEN
8199 CLOSE c_lock_tl;
8200 END IF;
8201 OPEN c_line_name(l_tl_id_tbl(i));
8202 FETCH c_line_name INTO l_line_name;
8203 CLOSE c_line_name;
8204
8205 --set the error message on the error stack to inform the user
8206 FND_MESSAGE.set_name(G_APP_NAME_OKS, 'OKS_LINE_LOCKED');
8207 FND_MESSAGE.set_token('LINE_NAME', l_line_name);
8208
8209 IF (FND_LOG.level_error >= FND_LOG.g_current_runtime_level) THEN
8210 FND_LOG.message(FND_LOG.level_error, l_mod_name || '.lock_line_fail', FALSE);
8211 END IF;
8212 FND_MSG_PUB.ADD;
8213
8214 l_tl_id_tbl.delete;
8215 l_tl_amt_tbl.delete;
8216 l_sl_amt_tbl.delete;
8217
8218 RAISE FND_API.g_exc_error;
8219
8220 END; --of anonymous block checking topline locks
8221
8222 END LOOP;
8223
8224 IF (FND_LOG.level_statement >= FND_LOG.g_current_runtime_level) THEN
8225 FND_LOG.string(FND_LOG.level_statement, l_mod_name || '.update_line', 'able to lock all fetched toplines - updating canceled amount');
8226 END IF;
8227
8228 --if we come till here, we where able to obtain locks on all the toplines fectched previously
8229 FORALL j IN l_tl_id_tbl.first..l_tl_id_tbl.last
8230 update okc_k_lines_b
8231 set cancelled_amount =l_sl_amt_tbl(j)
8232 where id=l_tl_id_tbl(j);
8233
8234 IF (FND_LOG.level_statement >= FND_LOG.g_current_runtime_level) THEN
8235 FND_LOG.string(FND_LOG.level_statement, l_mod_name || '.update_line', 'cancelled amounts updated');
8236 END IF;
8237
8238 END LOOP; --of bulk fetch loop
8239 CLOSE c_k_toplines_cancelled;
8240 l_tl_id_tbl.delete;
8241 l_tl_amt_tbl.delete;
8242 l_sl_amt_tbl.delete;
8243
8244 -- update cancelled amount in header
8245 IF (FND_LOG.level_statement >= FND_LOG.g_current_runtime_level) THEN
8246 FND_LOG.string(FND_LOG.level_statement, l_mod_name || '.update_header', 'to update header cancelled amount not equal to sum of toplines.');
8247 END IF;
8248
8249 OPEN c_k_hdr_cancelled(p_chr_id);
8250 FETCH c_k_hdr_cancelled INTO l_header_cancelled,l_topline_cancelled;
8251 CLOSE c_k_hdr_cancelled;
8252
8253 --update the header cancelled amount only if required
8254 IF l_header_cancelled <> l_topline_cancelled THEN
8255
8256 --before updating the header amount, first try to obtain a lock on the header
8257 --if the lock fails, another user is holding the lock, exit with appropriate
8258 --error message. If the lock succeeds, update the header amount
8259 BEGIN
8260
8261 IF (FND_LOG.level_statement >= FND_LOG.g_current_runtime_level) THEN
8262 FND_LOG.string(FND_LOG.level_statement, l_mod_name || '.lock_hdr', 'checking lock for header id='||p_chr_id);
8263 END IF;
8264
8265 OPEN c_lock_hdr(p_chr_id);
8266 FETCH c_lock_hdr INTO l_dummy;
8267 CLOSE c_lock_hdr;
8268
8269 update okc_k_headers_all_b
8270 set cancelled_amount = l_topline_cancelled
8271 where id=p_chr_id;
8272
8273 EXCEPTION
8274 WHEN E_RESOURCE_BUSY THEN
8275 IF c_lock_hdr%isopen THEN
8276 CLOSE c_lock_hdr;
8277 END IF;
8278 --set the error message on the error stack to inform the user
8279 FND_MESSAGE.set_name(G_APP_NAME_OKS, 'OKS_HEADER_LOCKED');
8280 FND_MESSAGE.set_token('CONTRACT_NUMBER', l_k_num);
8281
8282 IF (FND_LOG.level_error >= FND_LOG.g_current_runtime_level) THEN
8283 FND_LOG.message(FND_LOG.level_error, l_mod_name || '.lock_header_fail', FALSE);
8284 END IF;
8285 FND_MSG_PUB.ADD;
8286
8287 RAISE FND_API.g_exc_error;
8288
8289 END; --of anonymous block checking header lock
8290
8291 END IF; --of (l_header_cancelled <> l_topline_cancelled) THEN
8292
8293 IF FND_API.to_boolean(p_commit) THEN
8294 COMMIT;
8295 END IF;
8296
8297 --exit
8298 IF (FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level) THEN
8299 FND_LOG.string(FND_LOG.level_procedure, l_mod_name || '.end', 'x_return_status='|| x_return_status);
8300 END IF;
8301 FND_MSG_PUB.count_and_get(p_count => x_msg_count, p_data => x_msg_data );
8302
8303 EXCEPTION
8304 WHEN FND_API.g_exc_error THEN
8305 ROLLBACK TO check_update_amounts_PVT;
8306 x_return_status := FND_API.g_ret_sts_error ;
8307
8308 IF (FND_LOG.level_error >= FND_LOG.g_current_runtime_level) THEN
8309 FND_LOG.string(FND_LOG.level_error, l_mod_name || '.end_error', 'x_return_status=' || x_return_status);
8310 END IF;
8311 FND_MSG_PUB.count_and_get(p_count => x_msg_count, p_data => x_msg_data );
8312 IF (c_k_toplines%isopen) THEN
8313 CLOSE c_k_toplines;
8314 END IF;
8315 IF (c_lock_tl%isopen) THEN
8316 CLOSE c_lock_tl;
8317 END IF;
8318 IF (c_line_name%isopen) THEN
8319 CLOSE c_line_name;
8320 END IF;
8321 IF (c_k_hdr%isopen) THEN
8322 CLOSE c_k_hdr;
8323 END IF;
8324 IF (c_lock_hdr%isopen) THEN
8325 CLOSE c_lock_hdr;
8326 END IF;
8327
8328
8329 WHEN FND_API.g_exc_unexpected_error THEN
8330 ROLLBACK TO check_update_amounts_PVT;
8331 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
8332
8333 IF (FND_LOG.level_unexpected >= FND_LOG.g_current_runtime_level) THEN
8334 FND_LOG.string(FND_LOG.level_unexpected, l_mod_name || '.end_unexpected_error', 'x_return_status=' || x_return_status);
8335 END IF;
8336 FND_MSG_PUB.count_and_get(p_count => x_msg_count, p_data => x_msg_data );
8337 IF (c_k_toplines%isopen) THEN
8338 CLOSE c_k_toplines;
8339 END IF;
8340 IF (c_lock_tl%isopen) THEN
8341 CLOSE c_lock_tl;
8342 END IF;
8343 IF (c_line_name%isopen) THEN
8344 CLOSE c_line_name;
8345 END IF;
8346 IF (c_k_hdr%isopen) THEN
8347 CLOSE c_k_hdr;
8348 END IF;
8349 IF (c_lock_hdr%isopen) THEN
8350 CLOSE c_lock_hdr;
8351 END IF;
8352
8353 WHEN OTHERS THEN
8354 ROLLBACK TO check_update_amounts_PVT;
8355 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
8356
8357 IF (FND_LOG.level_unexpected >= FND_LOG.g_current_runtime_level) THEN
8358 --first log the sqlerrm
8359 l_error_text := substr (SQLERRM, 1, 240);
8360 FND_LOG.string(FND_LOG.level_unexpected, l_mod_name || '.end_other_error', l_error_text);
8361 --then add it to the message api list
8362 FND_MSG_PUB.add_exc_msg(g_pkg_name, l_api_name, l_error_text);
8363 END IF;
8364 FND_MSG_PUB.count_and_get(p_count => x_msg_count, p_data => x_msg_data );
8365 IF (c_k_toplines%isopen) THEN
8366 CLOSE c_k_toplines;
8367 END IF;
8368 IF (c_lock_tl%isopen) THEN
8369 CLOSE c_lock_tl;
8370 END IF;
8371 IF (c_line_name%isopen) THEN
8372 CLOSE c_line_name;
8373 END IF;
8374 IF (c_k_hdr%isopen) THEN
8375 CLOSE c_k_hdr;
8376 END IF;
8377 IF (c_lock_hdr%isopen) THEN
8378 CLOSE c_lock_hdr;
8379 END IF;
8380
8381 END CHECK_UPDATE_AMOUNTS;
8382
8383
8384 FUNCTION get_net_reading(p_counter_id NUMBER)
8385 RETURN NUMBER IS
8386
8387 CURSOR c1 IS
8388 SELECT counter_value_id
8389 FROM CSI_COUNTER_READINGS
8390 WHERE counter_id = p_counter_id
8391 AND value_timestamp in
8392 (select max(value_timestamp) from CSI_COUNTER_READINGS
8393 where counter_id = p_counter_id
8394 and disabled_flag='N');
8395
8396 l_counter_value_id NUMBER;
8397
8398 BEGIN
8399
8400 OPEN c1;
8401 FETCH c1 INTO l_counter_value_id;
8402 CLOSE c1;
8403
8404 RETURN l_counter_value_id;
8405
8406 END get_net_reading;
8407
8408
8409 END OKS_AUTH_UTIL_PVT;