[Home] [Help]
PACKAGE BODY: APPS.CSTPCOIC
Source
1 PACKAGE BODY CSTPCOIC AS
2 /* $Header: CSTPCOIB.pls 120.5.12020000.4 2012/10/09 05:49:02 pbasrani ship $ */
3
4 FUNCTION copy_to_interface(
5 copy_option IN NUMBER,
6 from_org_id IN NUMBER,
7 to_org_id IN NUMBER,
8 from_cst_type_id IN NUMBER,
9 to_cst_type_id IN NUMBER,
10 range_option IN NUMBER,
11 spec_item_id IN NUMBER,
12 spec_cat_set_id IN NUMBER,
13 spec_cat_id IN NUMBER,
14 grp_id IN NUMBER,
15 conv_type IN VARCHAR2,
16 l_last_updated_by IN NUMBER,
17 error_msg OUT NOCOPY VARCHAR2
18 ) RETURN INTEGER IS
19
20 location NUMBER := 0;
21 l_from_currency_code VARCHAR2(15);
22 l_to_currency_code VARCHAR2(15);
23 l_conversion_rate NUMBER := 1;
24 l_no_of_rows NUMBER := 0;
25 l_sql_stmnt VARCHAR2(4000);
26
27 /* 11.5.10+ New variables to support UOM conversion */
28 /* This cursor selects from a global temp table that *
29 * was added for 11.5.10+ CST_UOM_CONV_RATES_TEMP. */
30 CURSOR cur_uom_conv IS
31 SELECT item_name
32 FROM cst_uom_conv_rates_temp
33 WHERE uom_conversion_rate IS NULL
34 OR uom_conversion_rate IN (0, -99999);
35 c_missing_uom_conv cur_uom_conv%ROWTYPE; -- cursor variable
36 uom_exception EXCEPTION; -- raised when no UOM conversion defined
37 CONC_STATUS BOOLEAN; -- variable for SET_COMPLETION_STATUS
38
39 BEGIN
40 /* Obtain currency information */
41 /*
42 select currency_code
43 into l_from_currency_code
44 from cst_organization_definitions
45 where organization_id = from_org_id;
46
47 select currency_code
48 into l_to_currency_code
49 from cst_organization_definitions
50 where organization_id = to_org_id;
51 */
52 --bug5839929
53 select distinct
54 sob_from.currency_code,
55 sob_to.currency_code
56 into l_from_currency_code,
57 l_to_currency_code
58 from org_organization_definitions ood_from,
59 gl_sets_of_books sob_from,
60 org_organization_definitions ood_to,
61 gl_sets_of_books sob_to
62 where ood_from.organization_id = from_org_id
63 and sob_from.set_of_books_id = ood_from.set_of_books_id
64 and ood_to.organization_id = to_org_id
65 and sob_to.set_of_books_id = ood_to.set_of_books_id;
66
67 l_conversion_rate := gl_currency_api.get_rate
68 ( l_from_currency_code,
69 l_to_currency_code,
70 sysdate,
71 conv_type );
72
73 if (l_conversion_rate IS NULL) then
74 l_conversion_rate := 1;
75 end if;
76
77 /* 11.5.10+ Copy Cost UOM Conversion *
78 /* Populate the global temp table with the UOM conversion rates for any items *
79 * where the from UOM <> to UOM *
80 */
81 l_sql_stmnt := 'INSERT INTO CST_UOM_CONV_RATES_TEMP (INVENTORY_ITEM_ID, UOM_CONVERSION_RATE, ITEM_NAME)'||
82 ' SELECT src.inventory_item_id,inv_convert.inv_um_convert(src.inventory_item_id, 30, NULL, src.primary_uom_code, dst.primary_uom_code, NULL, NULL),'||
83 ' substr(src.concatenated_segments,1,50) FROM mtl_system_items_kfv src, mtl_system_items_b dst, cst_item_costs cic'||
84 ' WHERE cic.cost_type_id = :from_cst_type_id'||
85 ' AND cic.organization_id = :from_org_id'||
86 ' AND src.organization_id = cic.organization_id'||
87 ' AND dst.organization_id = :to_org_id'||
88 ' AND src.inventory_item_id = cic.inventory_item_id'||
89 ' AND src.inventory_item_id = dst.inventory_item_id'||
90 ' AND cic.inventory_item_id = dst.inventory_item_id'||
91 ' AND src.primary_uom_code <> dst.primary_uom_code';
92 IF ( copy_option = 2 ) THEN
93 l_sql_stmnt := l_sql_stmnt||
94 ' AND NOT EXISTS ( SELECT NULL'||
95 ' FROM CST_ITEM_COSTS CIC2'||
96 ' WHERE CIC2.INVENTORY_ITEM_ID = CIC.INVENTORY_ITEM_ID'||
97 ' AND CIC2.ORGANIZATION_ID = :to_org_id2'||
98 ' AND CIC2.COST_TYPE_ID = :to_cst_type_id'||
99 ')';
100 ELSIF (copy_option in (1,3)) THEN
101 l_sql_stmnt := l_sql_stmnt;
102 ELSE
103 l_sql_stmnt := l_sql_stmnt ||' AND 1=2';
104 END IF;
105
106 IF(range_option =1 ) THEN /* -- ALL ITEMS -- */
107 l_sql_stmnt := l_sql_stmnt;
108 ELSIF (range_option = 2) THEN /* -- SPECIFIC ITEM -- */
109 l_sql_stmnt := l_sql_stmnt ||' AND CIC.INVENTORY_ITEM_ID = :spec_item_id';
110 ELSIF (range_option = 5) THEN /* -- SPECIFIC CATEGORY -- */
111 l_sql_stmnt := l_sql_stmnt ||' AND CIC.INVENTORY_ITEM_ID IN '||
112 ' ( SELECT INVENTORY_ITEM_ID'||
113 ' FROM MTL_ITEM_CATEGORIES MIC'||
114 ' WHERE MIC.ORGANIZATION_ID = :to_org_id3'||
115 ' AND MIC.CATEGORY_SET_ID = :spec_cat_set_id'||
116 ' AND MIC.CATEGORY_ID = DECODE(:spec_cat_id,0,MIC.CATEGORY_ID,:spec_cat_id2)'||
117 ')';
118 ELSE
119 l_sql_stmnt := l_sql_stmnt ||' AND 1=2';
120 END IF;
121
122 IF(copy_option =2) THEN
123 IF (range_option = 1) THEN
124 EXECUTE IMMEDIATE l_sql_stmnt USING from_cst_type_id,from_org_id,to_org_id,to_org_id,to_cst_type_id ;
125 ELSIF (range_option = 2) THEN
126 EXECUTE IMMEDIATE l_sql_stmnt USING from_cst_type_id,from_org_id,to_org_id,to_org_id,to_cst_type_id,spec_item_id;
127 ELSIF (range_option = 5) THEN
128 EXECUTE IMMEDIATE l_sql_stmnt USING from_cst_type_id,from_org_id,to_org_id,to_org_id,to_cst_type_id,to_org_id,spec_cat_set_id,spec_cat_id,spec_cat_id;
129 END IF;
130 END IF;
131 IF(copy_option in (1,3) ) THEN
132 IF (range_option = 1) THEN
133 EXECUTE IMMEDIATE l_sql_stmnt USING from_cst_type_id,from_org_id,to_org_id;
134 ELSIF (range_option = 2) THEN
135 EXECUTE IMMEDIATE l_sql_stmnt USING from_cst_type_id,from_org_id,to_org_id,spec_item_id;
136 ELSIF (range_option = 5) THEN
137 EXECUTE IMMEDIATE l_sql_stmnt USING from_cst_type_id,from_org_id,to_org_id,to_org_id,spec_cat_set_id,spec_cat_id,spec_cat_id;
138 END IF;
139 END IF;
140
141 /* Now that the global temp table is populated, check if any UOM rates are undefined.
142 * If so, abort the program and print the offending item(s)
143 */
144 OPEN cur_uom_conv;
145 FETCH cur_uom_conv INTO c_missing_uom_conv;
146 if (cur_uom_conv%FOUND) then
147 raise uom_exception;
148 else
149 CLOSE cur_uom_conv;
150 end if;
151
152 /* end of addition for 11.5.10+ */
153
154
155 /* Deleteting destination starts here */
156
157 if (copy_option = 3) then
158
159 location := 1;
160
161 DELETE FROM CST_ITEM_COSTS CIC
162 WHERE CIC.ORGANIZATION_ID = to_org_id
163 AND CIC.COST_TYPE_ID = to_cst_type_id
164 AND (
165 /* -- ALL ITEMS -- */
166 (range_option = 1)
167 OR
168 /* -- SPECIFIC ITEM -- */
169 ( (range_option = 2) AND (
170 CIC.INVENTORY_ITEM_ID = spec_item_id
171 )
172 )
173 OR
174 /* -- SPECIFIC CATEGORY -- */
175 ( (range_option = 5) AND EXISTS
176 (
177 SELECT INVENTORY_ITEM_ID
178 FROM MTL_ITEM_CATEGORIES MIC
179 WHERE MIC.ORGANIZATION_ID = to_org_id
180 AND MIC.INVENTORY_ITEM_ID = CIC.INVENTORY_ITEM_ID
181 AND MIC.CATEGORY_SET_ID = spec_cat_set_id
182 AND MIC.CATEGORY_ID = DECODE(spec_cat_id,0,MIC.CATEGORY_ID,spec_cat_id)
183 )
184 )
185 );
186
187 location := 2;
188
189 DELETE FROM CST_ITEM_COST_DETAILS CICD
190 WHERE CICD.ORGANIZATION_ID = to_org_id
191 AND CICD.COST_TYPE_ID = to_cst_type_id
192 AND (
193 /* -- ALL ITEMS -- */
194 (range_option = 1)
195 OR
196 /* -- SPECIFIC ITEM -- */
197 ( (range_option = 2) AND (
198 CICD.INVENTORY_ITEM_ID = spec_item_id
199 )
200 )
201 OR
202 /* -- SPECIFIC CATEGORY -- */
203 ( (range_option = 5) AND EXISTS
204 (
205 SELECT INVENTORY_ITEM_ID
206 FROM MTL_ITEM_CATEGORIES MIC
207 WHERE MIC.ORGANIZATION_ID = to_org_id
208 AND MIC.INVENTORY_ITEM_ID = CICD.INVENTORY_ITEM_ID
209 AND MIC.CATEGORY_SET_ID = spec_cat_set_id
210 AND MIC.CATEGORY_ID = DECODE(spec_cat_id,0,MIC.CATEGORY_ID,spec_cat_id)
211 )
212 )
213 );
214
215 end if; /* COPY OPTION = 3 DELETE */
216
217 if ( copy_option = 1 ) then
218
219 location := 3;
220
221 DELETE FROM CST_ITEM_COSTS CIC
222 WHERE EXISTS (
223 SELECT 'Item exists in from org'
224 FROM CST_ITEM_COST_DETAILS CIC2
225 WHERE CIC2.INVENTORY_ITEM_ID = CIC.INVENTORY_ITEM_ID
226 AND CIC2.ORGANIZATION_ID = from_org_id
227 AND CIC2.COST_TYPE_ID = from_cst_type_id
228 )
229 AND CIC.ORGANIZATION_ID = to_org_id
230 AND CIC.COST_TYPE_ID = to_cst_type_id
231 AND (
232 /* -- ALL ITEMS -- */
233 (range_option = 1)
234 OR
235 /* -- SPECIFIC ITEM -- */
236 ( (range_option = 2) AND (
237 CIC.INVENTORY_ITEM_ID = spec_item_id
238 )
239 )
240 OR
241 /* -- SPECIFIC CATEGORY -- */
242 ( (range_option = 5) AND EXISTS
243 (
244 SELECT INVENTORY_ITEM_ID
245 FROM MTL_ITEM_CATEGORIES MIC
246 WHERE MIC.ORGANIZATION_ID = to_org_id
247 AND MIC.INVENTORY_ITEM_ID = CIC.INVENTORY_ITEM_ID
248 AND MIC.CATEGORY_SET_ID = spec_cat_set_id
249 AND MIC.CATEGORY_ID = DECODE(spec_cat_id,0,MIC.CATEGORY_ID,spec_cat_id)
250 )
251 )
252 );
253
254
255 /* following delete needs to change */
256
257 location := 4;
258
259 DELETE FROM CST_ITEM_COST_DETAILS CICD
260 WHERE EXISTS (
261 SELECT 'Item exists in from org'
262 FROM CST_ITEM_COST_DETAILS CIC2
263 WHERE CIC2.INVENTORY_ITEM_ID = CICD.INVENTORY_ITEM_ID
264 AND CIC2.ORGANIZATION_ID = from_org_id
265 AND CIC2.COST_TYPE_ID = from_cst_type_id
266 )
267 AND CICD.ORGANIZATION_ID = to_org_id
268 AND CICD.COST_TYPE_ID = to_cst_type_id
269 AND (
270 /* -- ALL ITEMS -- */
271 (range_option = 1)
272 OR
273 /* -- SPECIFIC ITEM -- */
274 ( (range_option = 2) AND (
275 CICD.INVENTORY_ITEM_ID = spec_item_id
276 )
277 )
278 OR
279 /* -- SPECIFIC CATEGORY -- */
280 ( (range_option = 5) AND EXISTS
281 (
282 SELECT INVENTORY_ITEM_ID
283 FROM MTL_ITEM_CATEGORIES MIC
284 WHERE MIC.ORGANIZATION_ID = to_org_id
285 AND MIC.INVENTORY_ITEM_ID = CICD.INVENTORY_ITEM_ID
286 AND MIC.CATEGORY_SET_ID = spec_cat_set_id
287 AND MIC.CATEGORY_ID = DECODE(spec_cat_id,0,MIC.CATEGORY_ID,spec_cat_id)
288 )
289 )
290 );
291
292
293 end if;
294
295
296 /*
297 * Copy over non-code columns into CST_ITEM_COSTS_INTERFACE
298 * from CST_ITEM_COSTS
299 *
300 * CST_ITEM_COSTS ==> CST_ITEM_COSTS_INTERFACE
301 */
302
303 location := 5;
304
305 if (range_option = 1) then
306
307 /* ---- All Items ---- */
308
309 INSERT INTO CST_ITEM_COSTS_INTERFACE (
310 INVENTORY_ITEM_ID,
311 ORGANIZATION_ID,
312 COST_TYPE_ID,
313 INVENTORY_ITEM,
314 ORGANIZATION_CODE,
315 COST_TYPE,
316 LAST_UPDATE_DATE,
317 LAST_UPDATED_BY,
318 CREATION_DATE,
319 CREATED_BY,
320 LAST_UPDATE_LOGIN,
321 INVENTORY_ASSET_FLAG,
322 LOT_SIZE,
323 BASED_ON_ROLLUP_FLAG,
324 SHRINKAGE_RATE,
325 DEFAULTED_FLAG,
326 COST_UPDATE_ID,
327 PL_MATERIAL,
328 PL_MATERIAL_OVERHEAD,
329 PL_RESOURCE,
330 PL_OUTSIDE_PROCESSING,
331 PL_OVERHEAD,
332 TL_MATERIAL,
333 TL_MATERIAL_OVERHEAD,
334 TL_RESOURCE,
335 TL_OUTSIDE_PROCESSING,
336 TL_OVERHEAD,
337 MATERIAL_COST,
338 MATERIAL_OVERHEAD_COST,
339 RESOURCE_COST,
340 OUTSIDE_PROCESSING_COST,
341 OVERHEAD_COST,
342 PL_ITEM_COST,
343 TL_ITEM_COST,
344 ITEM_COST,
345 UNBURDENED_COST,
346 BURDEN_COST,
347 ATTRIBUTE_CATEGORY,
348 ATTRIBUTE1,
349 ATTRIBUTE2,
350 ATTRIBUTE3,
351 ATTRIBUTE4,
352 ATTRIBUTE5,
353 ATTRIBUTE6,
354 ATTRIBUTE7,
355 ATTRIBUTE8,
356 ATTRIBUTE9,
357 ATTRIBUTE10,
358 ATTRIBUTE11,
359 ATTRIBUTE12,
360 ATTRIBUTE13,
361 ATTRIBUTE14,
362 ATTRIBUTE15,
363 REQUEST_ID,
364 PROGRAM_APPLICATION_ID,
365 PROGRAM_ID,
366 PROGRAM_UPDATE_DATE,
367 GROUP_ID
368 ) SELECT
369 CIC.INVENTORY_ITEM_ID,
370 to_org_id,
371 to_cst_type_id,
372 MIF.ITEM_NUMBER,
373 MP.ORGANIZATION_CODE,
374 CCT.COST_TYPE,
375 SYSDATE,
376 l_last_updated_by,
377 SYSDATE,
378 l_last_updated_by,
379 NULL,
380 CIC.INVENTORY_ASSET_FLAG,
381 CIC.LOT_SIZE,
382 CIC.BASED_ON_ROLLUP_FLAG,
383 CIC.SHRINKAGE_RATE,
384 CIC.DEFAULTED_FLAG,
385 CIC.COST_UPDATE_ID,
386 CIC.PL_MATERIAL * nvl(l_conversion_rate,1),
387 CIC.PL_MATERIAL_OVERHEAD * nvl(l_conversion_rate,1),
388 CIC.PL_RESOURCE * nvl(l_conversion_rate,1),
389 CIC.PL_OUTSIDE_PROCESSING * nvl(l_conversion_rate,1),
390 CIC.PL_OVERHEAD * nvl(l_conversion_rate,1),
391 CIC.TL_MATERIAL * nvl(l_conversion_rate,1),
392 CIC.TL_MATERIAL_OVERHEAD * nvl(l_conversion_rate,1),
393 CIC.TL_RESOURCE * nvl(l_conversion_rate,1),
394 CIC.TL_OUTSIDE_PROCESSING * nvl(l_conversion_rate,1),
395 CIC.TL_OVERHEAD * nvl(l_conversion_rate,1),
396 CIC.MATERIAL_COST * nvl(l_conversion_rate,1),
397 CIC.MATERIAL_OVERHEAD_COST * nvl(l_conversion_rate,1),
398 CIC.RESOURCE_COST * nvl(l_conversion_rate,1),
399 CIC.OUTSIDE_PROCESSING_COST * nvl(l_conversion_rate,1),
400 CIC.OVERHEAD_COST * nvl(l_conversion_rate,1),
401 CIC.PL_ITEM_COST * nvl(l_conversion_rate,1),
402 CIC.TL_ITEM_COST * nvl(l_conversion_rate,1),
403 CIC.ITEM_COST * nvl(l_conversion_rate,1),
404 CIC.UNBURDENED_COST * nvl(l_conversion_rate,1),
405 CIC.BURDEN_COST * nvl(l_conversion_rate,1),
406 CIC.ATTRIBUTE_CATEGORY,
407 CIC.ATTRIBUTE1,
408 CIC.ATTRIBUTE2,
409 CIC.ATTRIBUTE3,
410 CIC.ATTRIBUTE4,
411 CIC.ATTRIBUTE5,
412 CIC.ATTRIBUTE6,
413 CIC.ATTRIBUTE7,
414 CIC.ATTRIBUTE8,
415 CIC.ATTRIBUTE9,
416 CIC.ATTRIBUTE10,
417 CIC.ATTRIBUTE11,
418 CIC.ATTRIBUTE12,
419 CIC.ATTRIBUTE13,
420 CIC.ATTRIBUTE14,
421 CIC.ATTRIBUTE15,
422 CIC.REQUEST_ID,
423 CIC.PROGRAM_APPLICATION_ID,
424 CIC.PROGRAM_ID,
425 CIC.PROGRAM_UPDATE_DATE,
426 grp_id
427 FROM CST_ITEM_COSTS CIC,
428 MTL_ITEM_FLEXFIELDS MIF,
429 CST_COST_TYPES CCT,
430 MTL_PARAMETERS MP
431 WHERE CIC.ORGANIZATION_ID = from_org_id
432 AND CIC.COST_TYPE_ID = from_cst_type_id
433 AND MP.ORGANIZATION_ID = to_org_id
434 AND NVL( CCT.ORGANIZATION_ID, to_org_id) = to_org_id
435 AND CCT.COST_TYPE_ID = to_cst_type_id
436 AND MIF.ORGANIZATION_ID = to_org_id
437 AND MIF.ITEM_ID = CIC.INVENTORY_ITEM_ID
438 AND (
439 ( (copy_option = 2 or copy_option = 1) AND
440 ( NOT EXISTS (
441 SELECT NULL
442 FROM CST_ITEM_COSTS CIC2
443 WHERE CIC2.INVENTORY_ITEM_ID = CIC.INVENTORY_ITEM_ID
444 AND CIC2.ORGANIZATION_ID = to_org_id
445 AND CIC2.COST_TYPE_ID = to_cst_type_id
446 )
447 )
448 ) OR
449 (copy_option = 3)
450 );
451
452 elsif (range_option = 2) then
453
454 /* ---- Specific Item ---- */
455
456 SELECT COUNT(*) INTO l_no_of_rows FROM CST_ITEM_COSTS CIC
457 WHERE CIC.ORGANIZATION_ID = from_org_id
458 AND CIC.COST_TYPE_ID = from_cst_type_id
459 AND CIC.INVENTORY_ITEM_ID = spec_item_id;
460
461 if(l_no_of_rows = 0) then
462 commit;
463 RETURN(2);
464 end if;
465
466 INSERT INTO CST_ITEM_COSTS_INTERFACE (
467 INVENTORY_ITEM_ID,
468 ORGANIZATION_ID,
469 COST_TYPE_ID,
470 INVENTORY_ITEM,
471 ORGANIZATION_CODE,
472 COST_TYPE,
473 LAST_UPDATE_DATE,
474 LAST_UPDATED_BY,
475 CREATION_DATE,
476 CREATED_BY,
477 LAST_UPDATE_LOGIN,
478 INVENTORY_ASSET_FLAG,
479 LOT_SIZE,
480 BASED_ON_ROLLUP_FLAG,
481 SHRINKAGE_RATE,
482 DEFAULTED_FLAG,
483 COST_UPDATE_ID,
484 PL_MATERIAL,
485 PL_MATERIAL_OVERHEAD,
486 PL_RESOURCE,
487 PL_OUTSIDE_PROCESSING,
488 PL_OVERHEAD,
489 TL_MATERIAL,
490 TL_MATERIAL_OVERHEAD,
491 TL_RESOURCE,
492 TL_OUTSIDE_PROCESSING,
493 TL_OVERHEAD,
494 MATERIAL_COST,
495 MATERIAL_OVERHEAD_COST,
496 RESOURCE_COST,
497 OUTSIDE_PROCESSING_COST,
498 OVERHEAD_COST,
499 PL_ITEM_COST,
500 TL_ITEM_COST,
501 ITEM_COST,
502 UNBURDENED_COST,
503 BURDEN_COST,
504 ATTRIBUTE_CATEGORY,
505 ATTRIBUTE1,
506 ATTRIBUTE2,
507 ATTRIBUTE3,
508 ATTRIBUTE4,
509 ATTRIBUTE5,
510 ATTRIBUTE6,
511 ATTRIBUTE7,
512 ATTRIBUTE8,
513 ATTRIBUTE9,
514 ATTRIBUTE10,
515 ATTRIBUTE11,
516 ATTRIBUTE12,
517 ATTRIBUTE13,
518 ATTRIBUTE14,
519 ATTRIBUTE15,
520 REQUEST_ID,
521 PROGRAM_APPLICATION_ID,
522 PROGRAM_ID,
523 PROGRAM_UPDATE_DATE,
524 GROUP_ID
525 ) SELECT
526 CIC.INVENTORY_ITEM_ID,
527 to_org_id,
528 to_cst_type_id,
529 MIF.ITEM_NUMBER,
530 MP.ORGANIZATION_CODE,
531 CCT.COST_TYPE,
532 SYSDATE,
533 l_last_updated_by,
534 SYSDATE,
535 l_last_updated_by,
536 NULL,
537 CIC.INVENTORY_ASSET_FLAG,
538 CIC.LOT_SIZE,
539 CIC.BASED_ON_ROLLUP_FLAG,
540 CIC.SHRINKAGE_RATE,
541 CIC.DEFAULTED_FLAG,
542 CIC.COST_UPDATE_ID,
543 CIC.PL_MATERIAL * nvl(l_conversion_rate,1),
544 CIC.PL_MATERIAL_OVERHEAD * nvl(l_conversion_rate,1),
545 CIC.PL_RESOURCE * nvl(l_conversion_rate,1),
546 CIC.PL_OUTSIDE_PROCESSING * nvl(l_conversion_rate,1),
547 CIC.PL_OVERHEAD * nvl(l_conversion_rate,1),
548 CIC.TL_MATERIAL * nvl(l_conversion_rate,1),
549 CIC.TL_MATERIAL_OVERHEAD * nvl(l_conversion_rate,1),
550 CIC.TL_RESOURCE * nvl(l_conversion_rate,1),
551 CIC.TL_OUTSIDE_PROCESSING * nvl(l_conversion_rate,1),
552 CIC.TL_OVERHEAD * nvl(l_conversion_rate,1),
553 CIC.MATERIAL_COST * nvl(l_conversion_rate,1),
554 CIC.MATERIAL_OVERHEAD_COST * nvl(l_conversion_rate,1),
555 CIC.RESOURCE_COST * nvl(l_conversion_rate,1),
556 CIC.OUTSIDE_PROCESSING_COST * nvl(l_conversion_rate,1),
557 CIC.OVERHEAD_COST * nvl(l_conversion_rate,1),
558 CIC.PL_ITEM_COST * nvl(l_conversion_rate,1),
559 CIC.TL_ITEM_COST * nvl(l_conversion_rate,1),
560 CIC.ITEM_COST * nvl(l_conversion_rate,1),
561 CIC.UNBURDENED_COST * nvl(l_conversion_rate,1),
562 CIC.BURDEN_COST * nvl(l_conversion_rate,1),
563 CIC.ATTRIBUTE_CATEGORY,
564 CIC.ATTRIBUTE1,
565 CIC.ATTRIBUTE2,
566 CIC.ATTRIBUTE3,
567 CIC.ATTRIBUTE4,
568 CIC.ATTRIBUTE5,
569 CIC.ATTRIBUTE6,
570 CIC.ATTRIBUTE7,
571 CIC.ATTRIBUTE8,
572 CIC.ATTRIBUTE9,
573 CIC.ATTRIBUTE10,
574 CIC.ATTRIBUTE11,
575 CIC.ATTRIBUTE12,
576 CIC.ATTRIBUTE13,
577 CIC.ATTRIBUTE14,
578 CIC.ATTRIBUTE15,
579 CIC.REQUEST_ID,
580 CIC.PROGRAM_APPLICATION_ID,
581 CIC.PROGRAM_ID,
582 CIC.PROGRAM_UPDATE_DATE,
583 grp_id
584 FROM CST_ITEM_COSTS CIC,
585 MTL_ITEM_FLEXFIELDS MIF,
586 CST_COST_TYPES CCT,
587 MTL_PARAMETERS MP
588 WHERE CIC.ORGANIZATION_ID = from_org_id
589 AND CIC.COST_TYPE_ID = from_cst_type_id
590 AND CIC.INVENTORY_ITEM_ID = spec_item_id
591 AND MIF.ITEM_ID = CIC.INVENTORY_ITEM_ID
592 AND MIF.ORGANIZATION_ID = to_org_id
593 AND MP.ORGANIZATION_ID = to_org_id
594 AND NVL( CCT.ORGANIZATION_ID, to_org_id) = to_org_id
595 AND CCT.COST_TYPE_ID = to_cst_type_id
596 AND (
597 ( (copy_option = 2 or copy_option = 1) AND
598 ( NOT EXISTS (
599 SELECT NULL
600 FROM CST_ITEM_COSTS CIC2
601 WHERE CIC2.INVENTORY_ITEM_ID = CIC.INVENTORY_ITEM_ID
602 AND CIC2.ORGANIZATION_ID = to_org_id
603 AND CIC2.COST_TYPE_ID = to_cst_type_id
604 )
605 )
606 ) OR
607 (copy_option = 3)
608 );
609
610 elsif (range_option = 5) then
611
612 /* ---- Specific Category ---- */
613
614 INSERT INTO CST_ITEM_COSTS_INTERFACE (
615 INVENTORY_ITEM_ID,
616 ORGANIZATION_ID,
617 COST_TYPE_ID,
618 INVENTORY_ITEM,
619 ORGANIZATION_CODE,
620 COST_TYPE,
621 LAST_UPDATE_DATE,
622 LAST_UPDATED_BY,
623 CREATION_DATE,
624 CREATED_BY,
625 LAST_UPDATE_LOGIN,
626 INVENTORY_ASSET_FLAG,
627 LOT_SIZE,
628 BASED_ON_ROLLUP_FLAG,
629 SHRINKAGE_RATE,
630 DEFAULTED_FLAG,
631 COST_UPDATE_ID,
632 PL_MATERIAL,
633 PL_MATERIAL_OVERHEAD,
634 PL_RESOURCE,
635 PL_OUTSIDE_PROCESSING,
636 PL_OVERHEAD,
637 TL_MATERIAL,
638 TL_MATERIAL_OVERHEAD,
639 TL_RESOURCE,
640 TL_OUTSIDE_PROCESSING,
641 TL_OVERHEAD,
642 MATERIAL_COST,
643 MATERIAL_OVERHEAD_COST,
644 RESOURCE_COST,
645 OUTSIDE_PROCESSING_COST,
646 OVERHEAD_COST,
647 PL_ITEM_COST,
648 TL_ITEM_COST,
649 ITEM_COST,
650 UNBURDENED_COST,
651 BURDEN_COST,
652 ATTRIBUTE_CATEGORY,
653 ATTRIBUTE1,
654 ATTRIBUTE2,
655 ATTRIBUTE3,
656 ATTRIBUTE4,
657 ATTRIBUTE5,
658 ATTRIBUTE6,
659 ATTRIBUTE7,
660 ATTRIBUTE8,
661 ATTRIBUTE9,
662 ATTRIBUTE10,
663 ATTRIBUTE11,
664 ATTRIBUTE12,
665 ATTRIBUTE13,
666 ATTRIBUTE14,
667 ATTRIBUTE15,
668 REQUEST_ID,
669 PROGRAM_APPLICATION_ID,
670 PROGRAM_ID,
671 PROGRAM_UPDATE_DATE,
672 GROUP_ID
673 ) SELECT
674 CIC.INVENTORY_ITEM_ID,
675 to_org_id,
676 to_cst_type_id,
677 MIF.ITEM_NUMBER,
678 MP.ORGANIZATION_CODE,
679 CCT.COST_TYPE,
680 SYSDATE,
681 l_last_updated_by,
682 SYSDATE,
683 l_last_updated_by,
684 NULL,
685 CIC.INVENTORY_ASSET_FLAG,
686 CIC.LOT_SIZE,
687 CIC.BASED_ON_ROLLUP_FLAG,
688 CIC.SHRINKAGE_RATE,
689 CIC.DEFAULTED_FLAG,
690 CIC.COST_UPDATE_ID,
691 CIC.PL_MATERIAL * nvl(l_conversion_rate,1),
692 CIC.PL_MATERIAL_OVERHEAD * nvl(l_conversion_rate,1),
693 CIC.PL_RESOURCE * nvl(l_conversion_rate,1),
694 CIC.PL_OUTSIDE_PROCESSING * nvl(l_conversion_rate,1),
695 CIC.PL_OVERHEAD * nvl(l_conversion_rate,1),
696 CIC.TL_MATERIAL * nvl(l_conversion_rate,1),
697 CIC.TL_MATERIAL_OVERHEAD * nvl(l_conversion_rate,1),
698 CIC.TL_RESOURCE * nvl(l_conversion_rate,1),
699 CIC.TL_OUTSIDE_PROCESSING * nvl(l_conversion_rate,1),
700 CIC.TL_OVERHEAD * nvl(l_conversion_rate,1),
701 CIC.MATERIAL_COST * nvl(l_conversion_rate,1),
702 CIC.MATERIAL_OVERHEAD_COST * nvl(l_conversion_rate,1),
703 CIC.RESOURCE_COST * nvl(l_conversion_rate,1),
704 CIC.OUTSIDE_PROCESSING_COST * nvl(l_conversion_rate,1),
705 CIC.OVERHEAD_COST * nvl(l_conversion_rate,1),
706 CIC.PL_ITEM_COST * nvl(l_conversion_rate,1),
707 CIC.TL_ITEM_COST * nvl(l_conversion_rate,1),
708 CIC.ITEM_COST * nvl(l_conversion_rate,1),
709 CIC.UNBURDENED_COST * nvl(l_conversion_rate,1),
710 CIC.BURDEN_COST * nvl(l_conversion_rate,1),
711 CIC.ATTRIBUTE_CATEGORY,
712 CIC.ATTRIBUTE1,
713 CIC.ATTRIBUTE2,
714 CIC.ATTRIBUTE3,
715 CIC.ATTRIBUTE4,
716 CIC.ATTRIBUTE5,
717 CIC.ATTRIBUTE6,
718 CIC.ATTRIBUTE7,
719 CIC.ATTRIBUTE8,
720 CIC.ATTRIBUTE9,
721 CIC.ATTRIBUTE10,
722 CIC.ATTRIBUTE11,
723 CIC.ATTRIBUTE12,
724 CIC.ATTRIBUTE13,
725 CIC.ATTRIBUTE14,
726 CIC.ATTRIBUTE15,
727 CIC.REQUEST_ID,
728 CIC.PROGRAM_APPLICATION_ID,
729 CIC.PROGRAM_ID,
730 CIC.PROGRAM_UPDATE_DATE,
731 grp_id
732 FROM CST_ITEM_COSTS CIC,
733 MTL_ITEM_FLEXFIELDS MIF,
734 CST_COST_TYPES CCT,
735 MTL_PARAMETERS MP
736 WHERE CIC.ORGANIZATION_ID = from_org_id
737 AND CIC.COST_TYPE_ID = from_cst_type_id
738 AND MP.ORGANIZATION_ID = to_org_id
739 AND NVL( CCT.ORGANIZATION_ID, to_org_id) = to_org_id
740 AND CCT.COST_TYPE_ID = to_cst_type_id
741 AND MIF.ORGANIZATION_ID = to_org_id
742 AND MIF.ITEM_ID = CIC.INVENTORY_ITEM_ID
743 AND CIC.INVENTORY_ITEM_ID in (
744 SELECT INVENTORY_ITEM_ID
745 FROM MTL_ITEM_CATEGORIES MIC
746 WHERE MIC.ORGANIZATION_ID = to_org_id
747 AND MIC.CATEGORY_SET_ID = spec_cat_set_id
748 AND MIC.CATEGORY_ID = DECODE(spec_cat_id,0,MIC.CATEGORY_ID,spec_cat_id)
749 )
750 AND (
751 ( (copy_option = 2 or copy_option = 1) AND
752 ( NOT EXISTS (
753 SELECT NULL
754 FROM CST_ITEM_COSTS CIC2
755 WHERE CIC2.INVENTORY_ITEM_ID = CIC.INVENTORY_ITEM_ID
756 AND CIC2.ORGANIZATION_ID = to_org_id
757 AND CIC2.COST_TYPE_ID = to_cst_type_id
758 )
759 )
760 ) OR
761 (copy_option = 3)
762 );
763
764 end if;
765
766
767 IF SQL%ROWCOUNT = 0 THEN
768 RETURN( 1 );
769 END IF;
770
771 /*
772 * Copy over columns into CST_ITEM_CST_DTLS_INTERFACE
773 * from CST_ITEM_COST_DETAILS
774 *
775 * CST_ITEM_COST_DETAILS ==> CST_ITEM_CST_DTLS_INTERFACE
776 */
777
778 location := 6;
779
780 INSERT INTO CST_ITEM_CST_DTLS_INTERFACE (
781 GROUP_ID,
782 INVENTORY_ITEM_ID,
783 ORGANIZATION_ID,
784 COST_TYPE_ID,
785 INVENTORY_ITEM,
786 COST_TYPE,
787 ORGANIZATION_CODE,
788 LAST_UPDATE_DATE,
789 LAST_UPDATED_BY,
790 CREATION_DATE,
791 CREATED_BY,
792 LAST_UPDATE_LOGIN,
793 OPERATION_SEQUENCE_ID,
794 OPERATION_SEQ_NUM,
795 DEPARTMENT_ID,
796 DEPARTMENT,
797 LEVEL_TYPE,
798 ACTIVITY_ID,
799 ACTIVITY,
800 RESOURCE_SEQ_NUM,
801 RESOURCE_ID,
802 RESOURCE_CODE,
803 RESOURCE_RATE,
804 ITEM_UNITS,
805 ACTIVITY_UNITS,
806 USAGE_RATE_OR_AMOUNT,
807 BASIS_TYPE,
808 BASIS_RESOURCE_ID,
809 BASIS_RESOURCE_CODE,
810 BASIS_FACTOR,
811 NET_YIELD_OR_SHRINKAGE_FACTOR,
812 ITEM_COST,
813 COST_ELEMENT_ID,
814 COST_ELEMENT,
815 ROLLUP_SOURCE_TYPE,
816 ACTIVITY_CONTEXT,
817 REQUEST_ID,
818 PROGRAM_APPLICATION_ID,
819 PROGRAM_ID,
820 PROGRAM_UPDATE_DATE,
821 ATTRIBUTE_CATEGORY,
822 ATTRIBUTE1,
823 ATTRIBUTE2,
824 ATTRIBUTE3,
825 ATTRIBUTE4,
826 ATTRIBUTE5,
827 ATTRIBUTE6,
828 ATTRIBUTE7,
829 ATTRIBUTE8,
830 ATTRIBUTE9,
831 ATTRIBUTE10,
832 ATTRIBUTE11,
833 ATTRIBUTE12,
834 ATTRIBUTE13,
835 ATTRIBUTE14,
836 ATTRIBUTE15,
837 --bug5839929
838 YIELDED_COST
839 ) SELECT /*+ ORDERED */
840 grp_id,
841 CICD.INVENTORY_ITEM_ID,
842 to_org_id,
843 to_cst_type_id,
844 CICI.INVENTORY_ITEM,
845 CICI.COST_TYPE,
846 CICI.ORGANIZATION_CODE,
847 SYSDATE,
848 l_last_updated_by,
849 SYSDATE,
850 l_last_updated_by,
851 -1,
852 NULL,
853 CICD.OPERATION_SEQ_NUM,
854 NULL, /* department_id */
855 BD.DEPARTMENT_CODE,
856 CICD.LEVEL_TYPE,
857 NULL, /* activity_id */
858 CA.ACTIVITY,
859 CICD.RESOURCE_SEQ_NUM,
860 NULL, /* resource_id */
861 BR.RESOURCE_CODE,
862 CICD.RESOURCE_RATE,
863 CICD.ITEM_UNITS,
864 CICD.ACTIVITY_UNITS,
865 decode(cicd.cost_element_id, /* No currency conversion for percentage rates and for some cases of resources and OSP*/
866 2,decode(cicd.basis_type,
867 4,CICD.USAGE_RATE_OR_AMOUNT,
868 5,CICD.USAGE_RATE_OR_AMOUNT,
869 CICD.USAGE_RATE_OR_AMOUNT * nvl(l_conversion_rate,1)),
870 3,decode(br.functional_currency_flag,
871 1,CICD.USAGE_RATE_OR_AMOUNT * nvl(l_conversion_rate,1),
872 decode(cicd.resource_id,
873 NULL,CICD.USAGE_RATE_OR_AMOUNT * nvl(l_conversion_rate,1),
874 CICD.USAGE_RATE_OR_AMOUNT)),
875 4,decode(br.functional_currency_flag,
876 1,CICD.USAGE_RATE_OR_AMOUNT * nvl(l_conversion_rate,1),
877 decode(cicd.resource_id,
878 NULL,CICD.USAGE_RATE_OR_AMOUNT * nvl(l_conversion_rate,1),
879 CICD.USAGE_RATE_OR_AMOUNT)),
880 5,decode(cicd.basis_type,
881 4,CICD.USAGE_RATE_OR_AMOUNT,
882 CICD.USAGE_RATE_OR_AMOUNT * nvl(l_conversion_rate,1)),
883 CICD.USAGE_RATE_OR_AMOUNT * nvl(l_conversion_rate,1)),
884 CICD.BASIS_TYPE,
885 NULL, /* BASIS_RESOURCE_ID */
886 BR.RESOURCE_CODE,
887 CICD.BASIS_FACTOR,
888 CICD.NET_YIELD_OR_SHRINKAGE_FACTOR,
889 CICD.ITEM_COST * nvl(l_conversion_rate,1),
890 CICD.COST_ELEMENT_ID, /* COST_ELEMENT_ID */
891 CCE.COST_ELEMENT,
892 CICD.ROLLUP_SOURCE_TYPE,
893 CICD.ACTIVITY_CONTEXT,
894 CICD.REQUEST_ID,
895 CICD.PROGRAM_APPLICATION_ID,
896 CICD.PROGRAM_ID,
897 CICD.PROGRAM_UPDATE_DATE,
898 CICD.ATTRIBUTE_CATEGORY,
899 CICD.ATTRIBUTE1,
900 CICD.ATTRIBUTE2,
901 CICD.ATTRIBUTE3,
902 CICD.ATTRIBUTE4,
903 CICD.ATTRIBUTE5,
904 CICD.ATTRIBUTE6,
905 CICD.ATTRIBUTE7,
906 CICD.ATTRIBUTE8,
907 CICD.ATTRIBUTE9,
908 CICD.ATTRIBUTE10,
909 CICD.ATTRIBUTE11,
910 CICD.ATTRIBUTE12,
911 CICD.ATTRIBUTE13,
912 CICD.ATTRIBUTE14,
913 CICD.ATTRIBUTE15,
914 --bug5839929
915 CICD.yielded_cost*NVL(l_conversion_rate,1)
916 FROM CST_ITEM_COSTS_INTERFACE CICI,
917 BOM_DEPARTMENTS BD,
918 CST_ACTIVITIES CA,
919 BOM_RESOURCES BR,
920 CST_COST_ELEMENTS CCE,
921 CST_ITEM_COST_DETAILS CICD
922 WHERE CICI.GROUP_ID = grp_id
923 AND CICD.INVENTORY_ITEM_ID = CICI.INVENTORY_ITEM_ID
924 AND CICD.ORGANIZATION_ID = from_org_id
925 AND CICD.COST_TYPE_ID = from_cst_type_id
926 AND BD.ORGANIZATION_ID (+) = from_org_id
927 AND BD.DEPARTMENT_ID (+) = CICD.DEPARTMENT_ID
928 AND NVL(CA.ORGANIZATION_ID,from_org_id) = from_org_id
929 AND CA.ACTIVITY_ID (+) = CICD.ACTIVITY_ID
930 AND BR.ORGANIZATION_ID (+) = from_org_id
931 AND BR.RESOURCE_ID (+) = CICD.RESOURCE_ID
932 AND CCE.COST_ELEMENT_ID (+) = CICD.COST_ELEMENT_ID;
933
934
935 /* 11.5.10+ Copy Cost UOM Conversion *
936 * Multiply the cost columns in the interface tables *
937 * by the UOM conversion rate */
938
939 location := 7;
940
941 UPDATE (
942 SELECT PL_MATERIAL,
943 PL_MATERIAL_OVERHEAD,
944 PL_RESOURCE,
945 PL_OUTSIDE_PROCESSING,
946 PL_OVERHEAD,
947 TL_MATERIAL,
948 TL_MATERIAL_OVERHEAD,
949 TL_RESOURCE,
950 TL_OUTSIDE_PROCESSING,
951 TL_OVERHEAD,
952 MATERIAL_COST,
953 MATERIAL_OVERHEAD_COST,
954 RESOURCE_COST,
955 OUTSIDE_PROCESSING_COST,
956 OVERHEAD_COST,
957 PL_ITEM_COST,
958 TL_ITEM_COST,
959 ITEM_COST,
960 UNBURDENED_COST,
961 BURDEN_COST,
962 LOT_SIZE,
963 uom_conversion_rate
964 FROM cst_item_costs_interface cici, cst_uom_conv_rates_temp cucr
965 WHERE cici.inventory_item_id = cucr.inventory_item_id
966 AND cici.group_id = grp_id)
967 SET PL_MATERIAL = PL_MATERIAL / uom_conversion_rate,
968 PL_MATERIAL_OVERHEAD = PL_MATERIAL_OVERHEAD / uom_conversion_rate,
969 PL_RESOURCE = PL_RESOURCE / uom_conversion_rate,
970 PL_OUTSIDE_PROCESSING = PL_OUTSIDE_PROCESSING / uom_conversion_rate,
971 PL_OVERHEAD = PL_OVERHEAD / uom_conversion_rate,
972 TL_MATERIAL = TL_MATERIAL / uom_conversion_rate,
973 TL_MATERIAL_OVERHEAD = TL_MATERIAL_OVERHEAD / uom_conversion_rate,
974 TL_RESOURCE = TL_RESOURCE / uom_conversion_rate,
975 TL_OUTSIDE_PROCESSING = TL_OUTSIDE_PROCESSING / uom_conversion_rate,
976 TL_OVERHEAD = TL_OVERHEAD / uom_conversion_rate,
977 MATERIAL_COST = MATERIAL_COST / uom_conversion_rate,
978 MATERIAL_OVERHEAD_COST = MATERIAL_OVERHEAD_COST / uom_conversion_rate,
979 RESOURCE_COST = RESOURCE_COST / uom_conversion_rate,
980 OUTSIDE_PROCESSING_COST = OUTSIDE_PROCESSING_COST / uom_conversion_rate,
981 OVERHEAD_COST = OVERHEAD_COST / uom_conversion_rate,
982 PL_ITEM_COST = PL_ITEM_COST / uom_conversion_rate,
983 TL_ITEM_COST = TL_ITEM_COST / uom_conversion_rate,
984 ITEM_COST = ITEM_COST / uom_conversion_rate,
985 UNBURDENED_COST = UNBURDENED_COST / uom_conversion_rate,
986 BURDEN_COST = BURDEN_COST / uom_conversion_rate,
987 LOT_SIZE = LOT_SIZE * uom_conversion_rate;
988
989 location := 8;
990 /* Update the usage_rate_or_amount in CICD for all rows where the basis type IS 'ITEM' *
991 * When the basis type is item there is no basis factor (it's always 1), so you must *
992 * multiply the usage rate of the item by the UOM conversion factor so that usage rate *
993 * times net_yield_or_shrinkage equals item_cost. */
994
995 UPDATE (
996 SELECT USAGE_RATE_OR_AMOUNT,
997 ITEM_COST,
998 YIELDED_COST, /*Added for bug 14159528*/
999 uom_conversion_rate
1000 FROM cst_item_cst_dtls_interface cicdi, cst_uom_conv_rates_temp cucr
1001 WHERE cicdi.inventory_item_id = cucr.inventory_item_id
1002 AND cicdi.basis_type = 1
1003 AND cicdi.group_id = grp_id)
1004 SET USAGE_RATE_OR_AMOUNT = USAGE_RATE_OR_AMOUNT / uom_conversion_rate,
1005 ITEM_COST = ITEM_COST / uom_conversion_rate,
1006 YIELDED_COST = YIELDED_COST / uom_conversion_rate ;/*Added for bug 14159528*/
1007
1008 location := 9;
1009 /* Update the basis_factor in CICD for all rows where the basis type IS NOT 'ITEM' *
1010 * When the basis type is anything other than 'ITEM' (LOT, RESOURCE UNITS, RESOURCE *
1011 * VALUE, TOTAL VALUE, ACTIVITY) the basis factor converts between basis and item, so *
1012 * we should apply the UOM conversion to the basis factor. */
1013
1014 UPDATE (
1015 SELECT BASIS_FACTOR,
1016 ITEM_COST,
1017 YIELDED_COST, /*Added for bug 14159528*/
1018 uom_conversion_rate
1019 FROM cst_item_cst_dtls_interface cicdi, cst_uom_conv_rates_temp cucr
1020 WHERE cicdi.inventory_item_id = cucr.inventory_item_id
1021 AND cicdi.basis_type <> 1
1022 AND cicdi.group_id = grp_id)
1023 SET BASIS_FACTOR = BASIS_FACTOR / uom_conversion_rate,
1024 ITEM_COST = ITEM_COST / uom_conversion_rate,
1025 YIELDED_COST = YIELDED_COST / uom_conversion_rate ;/*Added for bug 14159528*/
1026
1027
1028
1029 /* End of 11.5.10+ additions */
1030
1031 RETURN(0); /* No Error */
1032
1033 EXCEPTION
1034 WHEN uom_exception THEN
1035 fnd_file.put_line(fnd_file.log,'');
1036 fnd_message.set_name('BOM', 'CST_NO_UOM_CONV_RATE');
1037 fnd_file.put_line(fnd_file.log, fnd_message.get);
1038 LOOP
1039 fnd_file.put_line(fnd_file.log,c_missing_uom_conv.item_name);
1040 FETCH cur_uom_conv INTO c_missing_uom_conv;
1041 EXIT WHEN cur_uom_conv%NOTFOUND;
1042 END LOOP;
1043 CLOSE cur_uom_conv;
1044 error_msg := 'copy_to_interface(): Required Unit of Measure conversion rates are missing.';
1045 CONC_STATUS := FND_CONCURRENT.SET_COMPLETION_STATUS('ERROR',error_msg);
1046 RETURN(1); -- the calling program will rollback
1047
1048 WHEN OTHERS THEN
1049 error_msg := 'copy_to_interface('||location||'): ' || SQLERRM(100);
1050 RETURN(SQLCODE);
1051
1052
1053 END copy_to_interface;
1054
1055
1056 END CSTPCOIC; /* end package body */