DBA Data[Home] [Help]

PACKAGE BODY: APPS.CSTPCINT

Source


1 PACKAGE BODY CSTPCINT AS
2 /* $Header: CSTPCINB.pls 120.2.12000000.2 2007/05/11 22:50:12 hyu ship $ */
3 
4 FUNCTION update_interface(
5         i_group_id IN NUMBER,
6         error_msg OUT NOCOPY VARCHAR2
7         ) RETURN INTEGER IS
8 
9 location NUMBER(2) := 1;
10 
11 BEGIN
12 
13 	/*
14 	 * Resolve all ORGANIZATION_CODE in CST_ITEM_COSTS_INTERFACE.
15 	 * This must be done first, before the following updates.
16 	 *
17 	 */
18 	UPDATE CST_ITEM_COSTS_INTERFACE CICI
19 	SET
20 	CICI.ORGANIZATION_ID = (
21           SELECT MP.ORGANIZATION_ID
22           FROM MTL_PARAMETERS MP
23           WHERE MP.ORGANIZATION_CODE = CICI.ORGANIZATION_CODE
24         )
25 	WHERE CICI.GROUP_ID = i_group_id;
26 
27         /*
28          * Resolve all INVENTORY_ITEM_ID and COST_TYPE_ID in
29 	 * CST_ITEM_COSTS_INTERFACE.
30          *
31          * This must be done after the ORGANIZATION_ID is resolved.
32          */
33 	location := 2;
34 
35 	/*
36 	 * Only resolve inventory_item_id if it is null. This
37 	 * is because MIF.ITEM_NUMBER is a concatnation of segments
38 	 * and there are no good indices to use. Therefore the performance
39 	 * of the following update statement is BAD.
40 	 */
41 
42 	UPDATE CST_ITEM_COSTS_INTERFACE CICI
43         SET
44 	INVENTORY_ITEM_ID = (
45                 SELECT MIF.ITEM_ID
46                 FROM MTL_ITEM_FLEXFIELDS MIF
47 		WHERE MIF.ORGANIZATION_ID = CICI.ORGANIZATION_ID
48 		AND MIF.ITEM_NUMBER = CICI.INVENTORY_ITEM
49 	)
50 	WHERE CICI.GROUP_ID = i_group_id
51         AND CICI.INVENTORY_ITEM_ID IS NULL;
52 
53 	UPDATE CST_ITEM_COSTS_INTERFACE CICI
54         SET
55 	COST_TYPE_ID = (
56                 SELECT CCT.COST_TYPE_ID
57                 FROM CST_COST_TYPES CCT
58                 WHERE NVL( ORGANIZATION_ID, CICI.ORGANIZATION_ID)
59 			= CICI.ORGANIZATION_ID
60                 AND CCT.COST_TYPE = CICI.COST_TYPE
61 	)
62 	WHERE CICI.GROUP_ID = i_group_id;
63 
64         /*
65          * Resolve all ORGANIZATION_CODE in CST_ITEM_CST_DTLS_INTERFACE.
66          * This must be done first, before the following updates.
67          *
68          */
69 	location := 3;
70 
71         UPDATE CST_ITEM_CST_DTLS_INTERFACE CICDI
72         SET
73         CICDI.ORGANIZATION_ID = (
74           SELECT MP.ORGANIZATION_ID
75           FROM MTL_PARAMETERS MP
76           WHERE MP.ORGANIZATION_CODE = CICDI.ORGANIZATION_CODE
77 	)
78 	WHERE CICDI.GROUP_ID = i_group_id;
79 
80         /*
81          * Resolve all INVENTORY_ITEM_ID, COST_TYPE_ID, DEPARTMENT_ID,
82 	 * ACTIVITY_ID, RESOURCE_ID, BASIS_RESOURCE_ID, and COST_ELEMENT_ID
83          * in CST_ITEM_CST_DTLS_INTERFACE.
84          *
85          * This must be done after the ORGANIZATION_ID is resolved.
86          */
87 	location := 4;
88 
89 	/*
90 	 * Only resolve inventory_item_id if it is null. This
91 	 * is because MIF.ITEM_NUMBER is a concatnation of segments
92 	 * and there are no good indices to use. Therefore the performance
93 	 * of the following update statement is BAD.
94 	 */
95 
96 	UPDATE CST_ITEM_CST_DTLS_INTERFACE CICDI
97         SET
98         INVENTORY_ITEM_ID = (
99                 SELECT MIF.ITEM_ID
100 		FROM MTL_ITEM_FLEXFIELDS MIF
101                 WHERE MIF.ORGANIZATION_ID = CICDI.ORGANIZATION_ID
102                 AND MIF.ITEM_NUMBER = CICDI.INVENTORY_ITEM
103         )
104         WHERE CICDI.GROUP_ID = i_group_id
105         AND CICDI.INVENTORY_ITEM_ID IS NULL;
106 
107 	UPDATE CST_ITEM_CST_DTLS_INTERFACE CICDI
108         SET
109         COST_TYPE_ID = (
110                 SELECT CCT.COST_TYPE_ID
111                 FROM CST_COST_TYPES CCT
112                 WHERE NVL( ORGANIZATION_ID, CICDI.ORGANIZATION_ID)
113                         = CICDI.ORGANIZATION_ID
114                 AND CCT.COST_TYPE = CICDI.COST_TYPE
115         ),
116 	DEPARTMENT_ID = (
117                 SELECT BD.DEPARTMENT_ID
118                 FROM BOM_DEPARTMENTS BD
119                 WHERE BD.ORGANIZATION_ID = CICDI.ORGANIZATION_ID
120                 AND BD.DEPARTMENT_CODE = CICDI.DEPARTMENT
121 	),
122 	ACTIVITY_ID = (
123                 SELECT CA.ACTIVITY_ID
124 		FROM CST_ACTIVITIES CA
125                 WHERE NVL(CA.ORGANIZATION_ID,CICDI.ORGANIZATION_ID) =
126                                                    CICDI.ORGANIZATION_ID
127                 AND CA.ACTIVITY = CICDI.ACTIVITY
128 	),
129         /* Bug 5443502: for resource_id and basis_resource_id, added join with cost_element_id */
130 	RESOURCE_ID = (
131 		SELECT BR.RESOURCE_ID
132 		FROM BOM_RESOURCES BR
133 		WHERE BR.RESOURCE_CODE = CICDI.RESOURCE_CODE
134 		AND BR.ORGANIZATION_ID = CICDI.ORGANIZATION_ID
135                 AND BR.COST_ELEMENT_ID = CICDI.COST_ELEMENT_ID
136 	),
137 	BASIS_RESOURCE_ID = (
138                 SELECT BR.RESOURCE_ID
139                 FROM BOM_RESOURCES BR
140                 WHERE BR.RESOURCE_CODE = CICDI.BASIS_RESOURCE_CODE
141                 AND BR.ORGANIZATION_ID = CICDI.ORGANIZATION_ID
142                 AND BR.COST_ELEMENT_ID = CICDI.COST_ELEMENT_ID
143 	),
144 	COST_ELEMENT_ID = (
145                 SELECT CCE.COST_ELEMENT_ID
146                 FROM CST_COST_ELEMENTS CCE
147                 WHERE CCE.COST_ELEMENT = CICDI.COST_ELEMENT
148 	)
149         WHERE CICDI.GROUP_ID = i_group_id;
150 
151 
152 
153   RETURN( 0 ); /* No Error */
154 
155 EXCEPTION
156     WHEN NO_DATA_FOUND THEN
157 	RETURN( 0 );
158     WHEN OTHERS THEN
159         ROLLBACK;
160         error_msg         := 'update_interface(' || location || '):' || SQLERRM(100);
161         RETURN( SQLCODE );
162 
163 END update_interface;
164 
165 FUNCTION validate_interface(
166         i_group_id          IN NUMBER,
167         i_to_org_id         IN NUMBER,
168         error_msg       OUT NOCOPY VARCHAR2
169         ) RETURN INTEGER IS
170 rows_found NUMBER;
171 l_to_wsm_flag NUMBER;
172 BEGIN
173 
174 rows_found := 0;
175 
176        /* If destination organization is not wsm enabled, then leave yielded cost as null */
177         select count(*)
178         into l_to_wsm_flag
179         from mtl_parameters mp,wsm_parameters wsm
180         where wsm.organization_id = i_to_org_id
181         and mp.organization_id = wsm.organization_id
182         and UPPER(mp.wsm_enabled_flag) = 'Y';
183 
184         if (l_to_wsm_flag <= 0) then
185              update cst_item_cst_dtls_interface
186              set yielded_cost = null
187              where organization_id = i_to_org_id
188              and group_id = i_group_id
189              and yielded_cost is not null;
190         end if;
191 
192 
193 
194 	/*
195 	 * CHECK RESOURCE_ID
196 	 */
197 	INSERT into cst_interface_errors (
198 		inventory_item,
199 		entity_code,
200 		error_type,
201 		group_id
202 	)
203 	SELECT
204 		inventory_item,
205 		resource_code,
206 		DECODE(cost_element_id,
207 		       3,1,
208 		       5,5),
209 		i_group_id
210 	FROM cst_item_cst_dtls_interface CICDI
211 	WHERE CICDI.group_id = i_group_id
212 	AND CICDI.resource_code IS NOT NULL
213 	AND CICDI.resource_id IS NULL
214 	UNION
215 	SELECT
216 		INVENTORY_ITEM,
217 		ACTIVITY,
218 		2,
219 		i_group_id
220 	FROM CST_ITEM_CST_DTLS_INTERFACE CICDI
221 	WHERE CICDI.GROUP_ID = i_group_id
222 	AND CICDI.ACTIVITY_ID IS NULL
223 	AND CICDI.ACTIVITY IS NOT NULL;
224 
225 	rows_found := rows_found + SQL%ROWCOUNT;
226 
227         insert into cst_interface_errors (
228                 inventory_item,
229                 entity_code,
230                 error_type,
231                 group_id
232         )
233         select  inventory_item,
234                 resource_code,
235                 6,
236                 i_group_id
237         from cst_item_cst_dtls_interface cicdi
238         where cicdi.group_id = i_group_id
239         /* TL Material Overhead needs to have Subelement specified */
240         and cicdi.resource_code is null
241         and (cicdi.cost_element_id = 2 and cicdi.level_type = 1);
242 
243         rows_found := rows_found + SQL%ROWCOUNT;
244 
245 	INSERT into cst_interface_errors (
246 		inventory_item,
247 		entity_code,
248 		error_type,
249 		group_id
250 	)
251 	SELECT
252 		INVENTORY_ITEM,
253 		DEPARTMENT,
254 		3,
255 		i_group_id
256 	FROM CST_ITEM_CST_DTLS_INTERFACE CICDI
257 	WHERE CICDI.GROUP_ID = i_group_id
258 	AND CICDI.DEPARTMENT_ID IS NULL
259 	AND CICDI.DEPARTMENT IS NOT NULL
260 	UNION
261 	SELECT
262 		INVENTORY_ITEM,
263 		BASIS_RESOURCE_CODE,
264 		4,
265 		i_group_id
266 	FROM CST_ITEM_CST_DTLS_INTERFACE CICDI
267 	WHERE CICDI.GROUP_ID = i_group_id
268 	AND CICDI.BASIS_RESOURCE_ID IS NULL
269 	AND CICDI.BASIS_RESOURCE_CODE IS NOT NULL;
270 
271 	rows_found := rows_found + SQL%ROWCOUNT;
272 
273 	INSERT into cst_interface_errors (
274 		inventory_item,
275 		entity_code,
276 		error_type,
277 		group_id
278 	)
279 	SELECT
280 		INVENTORY_ITEM,
281 		COST_ELEMENT,
282 		5,
283 		i_group_id
284 	FROM CST_ITEM_CST_DTLS_INTERFACE CICDI
285 	WHERE CICDI.GROUP_ID = i_group_id
286 	AND CICDI.COST_ELEMENT_ID IS NULL
287 	AND CICDI.COST_ELEMENT IS NOT NULL;
288 
289 	rows_found := rows_found + SQL%ROWCOUNT;
290 
291 	IF  (rows_found <> 0) THEN
292 		RETURN(1); /* Invalid */
293 	ELSE
294 		RETURN(0); /* Valid */
295 	END IF;
296 
297 EXCEPTION
298     WHEN OTHERS THEN
299         ROLLBACK;
300         error_msg         := 'validate_interface:' || SQLERRM(100);
301         RETURN( SQLCODE );
302 
303 END validate_interface;
304 
305 
306 FUNCTION insert_to_dest(
307         i_group_id	IN NUMBER,
308         i_user_id	IN NUMBER,
309 	i_request_id	IN NUMBER,
310 	i_prog_applid	IN NUMBER,
311 	i_prog_id	IN NUMBER,
312 	i_rowcount	OUT NOCOPY NUMBER,
313         error_msg       OUT NOCOPY VARCHAR2
314 ) RETURN INTEGER IS
315 
316 location	NUMBER := 0;
317 
318 BEGIN
319 
320 	location := 0;
321 
322 	INSERT INTO CST_ITEM_COSTS (
323 		INVENTORY_ITEM_ID,
324 		ORGANIZATION_ID,
325 		COST_TYPE_ID,
326 		LAST_UPDATE_DATE,
327 		LAST_UPDATED_BY,
328 		CREATION_DATE,
329 		CREATED_BY,
330 		LAST_UPDATE_LOGIN,
331 		INVENTORY_ASSET_FLAG,
332 		LOT_SIZE,
333 		BASED_ON_ROLLUP_FLAG,
334 		SHRINKAGE_RATE,
335 		DEFAULTED_FLAG,
336 		COST_UPDATE_ID,
337 		PL_MATERIAL,
338 		PL_MATERIAL_OVERHEAD,
339 		PL_RESOURCE,
340 		PL_OUTSIDE_PROCESSING,
341 		PL_OVERHEAD,
342 		TL_MATERIAL,
343 		TL_MATERIAL_OVERHEAD,
344 		TL_RESOURCE,
345 		TL_OUTSIDE_PROCESSING,
346 		TL_OVERHEAD,
347 		MATERIAL_COST,
348 		MATERIAL_OVERHEAD_COST,
349 		RESOURCE_COST,
350 		OUTSIDE_PROCESSING_COST,
351 		OVERHEAD_COST,
352 		PL_ITEM_COST,
353 		TL_ITEM_COST,
354 		ITEM_COST,
355 		UNBURDENED_COST,
356 		BURDEN_COST,
357 		ATTRIBUTE_CATEGORY,
358 		ATTRIBUTE1,
359 		ATTRIBUTE2,
360 		ATTRIBUTE3,
361 		ATTRIBUTE4,
362 		ATTRIBUTE5,
363 		ATTRIBUTE6,
364 		ATTRIBUTE7,
365 		ATTRIBUTE8,
366 		ATTRIBUTE9,
367 		ATTRIBUTE10,
368 		ATTRIBUTE11,
369 		ATTRIBUTE12,
370 		ATTRIBUTE13,
371 		ATTRIBUTE14,
372 		ATTRIBUTE15,
373 		REQUEST_ID,
374 		PROGRAM_APPLICATION_ID,
375 		PROGRAM_ID,
376 		PROGRAM_UPDATE_DATE
377 	) SELECT
378 		INVENTORY_ITEM_ID,
379 		ORGANIZATION_ID,
380 		COST_TYPE_ID,
381 		SYSDATE,
382 		i_user_id,
383 		SYSDATE,
384 		i_user_id,
385 		-1,
386 		INVENTORY_ASSET_FLAG,
387 		LOT_SIZE,
388 		BASED_ON_ROLLUP_FLAG,
389 		SHRINKAGE_RATE,
390 		DEFAULTED_FLAG,
391 		COST_UPDATE_ID,
392 		PL_MATERIAL,
393 		PL_MATERIAL_OVERHEAD,
394 		PL_RESOURCE,
395 		PL_OUTSIDE_PROCESSING,
396 		PL_OVERHEAD,
397 		TL_MATERIAL,
398 		TL_MATERIAL_OVERHEAD,
399 		TL_RESOURCE,
400 		TL_OUTSIDE_PROCESSING,
401 		TL_OVERHEAD,
402 		MATERIAL_COST,
403 		MATERIAL_OVERHEAD_COST,
404 		RESOURCE_COST,
405 		OUTSIDE_PROCESSING_COST,
406 		OVERHEAD_COST,
407 		PL_ITEM_COST,
408 		TL_ITEM_COST,
409 		ITEM_COST,
410 		UNBURDENED_COST,
411 		BURDEN_COST,
412 		ATTRIBUTE_CATEGORY,
413 		ATTRIBUTE1,
414 		ATTRIBUTE2,
415 		ATTRIBUTE3,
416 		ATTRIBUTE4,
417 		ATTRIBUTE5,
418 		ATTRIBUTE6,
419 		ATTRIBUTE7,
420 		ATTRIBUTE8,
421 		ATTRIBUTE9,
422 		ATTRIBUTE10,
423 		ATTRIBUTE11,
424 		ATTRIBUTE12,
425 		ATTRIBUTE13,
426 		ATTRIBUTE14,
427 		ATTRIBUTE15,
428 		i_request_id,
429 		i_prog_applid,
430 		i_prog_id,
431 		SYSDATE
432 	FROM	CST_ITEM_COSTS_INTERFACE CICI
433 	WHERE	CICI.GROUP_ID = i_group_id;
434 
435 	i_rowcount := SQL%ROWCOUNT;
436 
437 	location := 1;
438 
439 	INSERT INTO CST_ITEM_COST_DETAILS (
440 		INVENTORY_ITEM_ID,
441 		ORGANIZATION_ID,
442 		COST_TYPE_ID,
443 		LAST_UPDATE_DATE,
444 		LAST_UPDATED_BY,
445 		CREATION_DATE,
446 		CREATED_BY,
447 		LAST_UPDATE_LOGIN,
448 		OPERATION_SEQUENCE_ID,
449 		OPERATION_SEQ_NUM,
450 		DEPARTMENT_ID,
451 		LEVEL_TYPE,
452 		ACTIVITY_ID,
453 		RESOURCE_SEQ_NUM,
454 		RESOURCE_ID,
455 		RESOURCE_RATE,
456 		ITEM_UNITS,
457 		ACTIVITY_UNITS,
458 		USAGE_RATE_OR_AMOUNT,
459 		BASIS_TYPE,
460 		BASIS_RESOURCE_ID,
461 		BASIS_FACTOR,
462 		NET_YIELD_OR_SHRINKAGE_FACTOR,
463 		ITEM_COST,
464 		COST_ELEMENT_ID,
465 		ROLLUP_SOURCE_TYPE,
466 		ACTIVITY_CONTEXT,
467 		REQUEST_ID,
468 		PROGRAM_APPLICATION_ID,
469 		PROGRAM_ID,
470 		PROGRAM_UPDATE_DATE,
471 		ATTRIBUTE_CATEGORY,
472 		ATTRIBUTE1,
473 		ATTRIBUTE2,
474 		ATTRIBUTE3,
475 		ATTRIBUTE4,
476 		ATTRIBUTE5,
477 		ATTRIBUTE6,
478 		ATTRIBUTE7,
479 		ATTRIBUTE8,
480 		ATTRIBUTE9,
481 		ATTRIBUTE10,
482 		ATTRIBUTE11,
483 		ATTRIBUTE12,
484 		ATTRIBUTE13,
485 		ATTRIBUTE14,
486 		ATTRIBUTE15,
487 		--bug5839929
488 		YIELDED_COST
489 	) SELECT
490 		INVENTORY_ITEM_ID,
491 		ORGANIZATION_ID,
492 		COST_TYPE_ID,
493 		SYSDATE,
494 		i_user_id,
495 		SYSDATE,
496 		i_user_id,
497 		NULL,
498 		OPERATION_SEQUENCE_ID,
499 		OPERATION_SEQ_NUM,
500 		DEPARTMENT_ID,
501 		LEVEL_TYPE,
502 		ACTIVITY_ID,
503 		RESOURCE_SEQ_NUM,
504 		RESOURCE_ID,
505 		RESOURCE_RATE,
506 		ITEM_UNITS,
507 		ACTIVITY_UNITS,
508 		USAGE_RATE_OR_AMOUNT,
509 		BASIS_TYPE,
510 		BASIS_RESOURCE_ID,
511 		BASIS_FACTOR,
512 		NET_YIELD_OR_SHRINKAGE_FACTOR,
513 		ITEM_COST,
514 		COST_ELEMENT_ID,
515 		ROLLUP_SOURCE_TYPE,
516 		ACTIVITY_CONTEXT,
517 		i_request_id,
518 		i_prog_applid,
519 		i_prog_id,
520 		SYSDATE,
521 		ATTRIBUTE_CATEGORY,
522 		ATTRIBUTE1,
523 		ATTRIBUTE2,
524 		ATTRIBUTE3,
525 		ATTRIBUTE4,
526 		ATTRIBUTE5,
527 		ATTRIBUTE6,
528 		ATTRIBUTE7,
529 		ATTRIBUTE8,
530 		ATTRIBUTE9,
531 		ATTRIBUTE10,
532 		ATTRIBUTE11,
533 		ATTRIBUTE12,
534 		ATTRIBUTE13,
535 		ATTRIBUTE14,
536 		ATTRIBUTE15,
537 		--bug5839929
538 		YIELDED_COST
539 	FROM	CST_ITEM_CST_DTLS_INTERFACE CICDI
540 	WHERE	CICDI.GROUP_ID = i_group_id;
541 
542 
543 	RETURN( 0 ); /* No Error */
544 
545 EXCEPTION
546     WHEN OTHERS THEN
547         ROLLBACK;
548         error_msg := 'insert_to_dest(' || location ||'): ' || SQLERRM(100);
549         RETURN( SQLCODE );
550 
551 END insert_to_dest;
552 
553 FUNCTION delete_from_interface(
554         i_group_id	IN NUMBER,
555         error_msg	OUT NOCOPY VARCHAR2
556 ) RETURN INTEGER IS
557 
558 location	NUMBER := 0;
559 
560 BEGIN
561 
562 	location := 0;
563 
564 	DELETE FROM CST_ITEM_COSTS_INTERFACE CICI
565 	WHERE CICI.GROUP_ID = i_group_id;
566 
567 	location := 1;
568 
569 	DELETE FROM CST_ITEM_CST_DTLS_INTERFACE CICDI
570 	WHERE CICDI.GROUP_ID = i_group_id;
571 
572 	RETURN( 0 ); /* No Error */
573 
574 EXCEPTION
575     WHEN OTHERS THEN
576         ROLLBACK;
577         error_msg := 'delete_from_interface(' || location || '): ' ||
578 		SQLERRM(100);
579         RETURN( SQLCODE );
580 
581 END delete_from_interface;
582 
583 FUNCTION copy_to_dest(
584         i_group_id	 	IN NUMBER,
585         i_from_org_id		IN NUMBER,
586     	i_to_org_id		IN NUMBER,
587 	i_from_cost_type	IN NUMBER,
588 	i_to_cost_type		IN NUMBER,
589         i_summary_option	IN NUMBER,
590         i_mtl_subelement        IN NUMBER,
591         i_moh_subelement	IN NUMBER,
592         i_res_subelement	IN NUMBER,
593         i_osp_subelement        IN NUMBER,
594         i_ovh_subelement        IN NUMBER,
595         i_conv_type             IN VARCHAR2,
596         i_exact_copy_flag       IN VARCHAR2,
597         i_user_id	 	IN NUMBER,
598 	i_request_id	 	IN NUMBER,
599 	i_prog_applid	 	IN NUMBER,
600 	i_prog_id	 	IN NUMBER,
601 	i_rowcount	 	OUT NOCOPY NUMBER,
602         error_msg        	OUT NOCOPY VARCHAR2
603 ) RETURN INTEGER IS
604 
605 result		NUMBER;
606 l_msg_count     NUMBER := 0;
607 l_return_status VARCHAR2(1) := fnd_api.g_ret_sts_success;
608 l_msg_data 	VARCHAR2(240) := '';
609 
610 BEGIN
611 
612  result := 0;
613 
614  if (i_summary_option < 4) then
615         fnd_file.put_line(fnd_file.log,'calling processInterface ...');
616         fnd_file.put_line(fnd_file.log,'summary option = ' || to_char(i_summary_option));
617  	CST_SubElements_PVT.processInterface
618 	      (	p_api_version		=>	1.0,
619 		x_return_status		=>	l_return_status,
620                 x_msg_count		=>	l_msg_count,
621                 x_msg_data		=>	l_msg_data,
622 		p_group_id		=>	i_group_id,
623 		p_from_organization_id	=>	i_from_org_id,
624 		p_to_organization_id	=>	i_to_org_id,
625 		p_from_cost_type_id	=>	i_from_cost_type,
626 		p_to_cost_type_id	=>	i_to_cost_type,
627 		p_summary_option	=>	i_summary_option,
628 		p_mtl_subelement	=>	i_mtl_subelement,
629 		p_moh_subelement	=>	i_moh_subelement,
630 		p_res_subelement	=>	i_res_subelement,
631 		p_osp_subelement	=>	i_osp_subelement,
632 		p_ovh_subelement	=>	i_ovh_subelement,
633 		p_conv_type		=>	i_conv_type,
634                 p_exact_copy_flag       =>      i_exact_copy_flag );
635 
636 
637          /**** Write the messages to the log file ****/
638 
639   CST_Utility_PUB.writeLogMessages (
640                     p_api_version => 1.0,
641                     p_msg_count => l_msg_count,
642                     p_msg_data  => l_msg_data,
643                     x_return_status => l_return_status );
644 
645   end if;
646 
647  result := cstpcint.update_interface( i_group_id, error_msg );
648  if (result <> 0)
649  then
650      return(result);
651  end if;
652 
653  result := cstpcint.validate_interface( i_group_id, i_to_org_id,error_msg );
654  if (result <> 0)
655  then
656      return(result);
657  end if;
658 
659 
660  result := cstpcint.insert_to_dest(i_group_id,
661 				   i_user_id,
662 				   i_request_id,
663 				   i_prog_applid,
664 				   i_prog_id,
665 				   i_rowcount,
666 				   error_msg );
667 
668  if (result <> 0)
669  then
670      return(result);
671  end if;
672 
673  result := cstpcint.delete_from_interface( i_group_id, error_msg );
674  if (result <> 0)
675  then
676      return(result);
677  end if;
678 
679  return( 0 );
680 
681 EXCEPTION
682     WHEN OTHERS THEN
683         ROLLBACK;
684         error_msg := 'copy_to_dest:' || SQLERRM(100);
685         RETURN( SQLCODE );
686 
687 END copy_to_dest;
688 
689 END CSTPCINT; /* end package body */