[Home] [Help]
PACKAGE BODY: APPS.ASO_ATTACHMENT_INT
Source
1 PACKAGE BODY ASO_ATTACHMENT_INT AS
2 /* $Header: asoiatmb.pls 120.1 2005/06/29 12:32:31 appldev ship $ */
3 -- Start of Comments
4 -- Package name : ASO_ATTACHMENT_INT
5 -- Purpose :
6 -- History :
7 -- 10/22/2002 hyang - 2633826, added validation in delete_attachments
8 -- NOTE :
9 -- End of Comments
10
11
12 G_PKG_NAME CONSTANT VARCHAR2(30) :='ASO_ATTACHMENT_INT';
13 G_FILE_NAME CONSTANT VARCHAR2(12) := 'asoiatmb.pls';
14
15 -- Add_Attachment
16 -- IN
17 -- p_seq_num - Attachment Seq Number.
18 -- p_category_id - category of the attachment
19 -- p_document_description - desciption of the document
20 -- p_datatype_id - Datatype identifier
21 -- p_text - Text Input.
22 -- p_file_name - File name
23 -- p_url - URL from which the attachments is invoked from.
24 -- This is required to set the back link.
25 -- p_function_name - Function name of the form
26 -- p_media_id - Document Content reference.
27
28 PROCEDURE Add_Attachment(
29 p_api_version_number IN NUMBER
30 ,p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE
31 ,p_commit IN VARCHAR2 := FND_API.G_FALSE
32 ,p_seq_num IN VARCHAR2
33 ,p_category_id IN VARCHAR2
34 ,p_document_description IN VARCHAR2
35 ,p_datatype_id IN VARCHAR2
36 ,p_text IN LONG
37 ,p_file_name IN VARCHAR2
38 ,p_url IN VARCHAR2
39 ,p_function_name IN VARCHAR2
40 ,p_quote_header_id IN NUMBER
41 ,p_media_id IN NUMBER
42 ,x_return_status OUT NOCOPY /* file.sql.39 change */ VARCHAR2
43 ,x_msg_count OUT NOCOPY /* file.sql.39 change */ NUMBER
44 ,x_msg_data OUT NOCOPY /* file.sql.39 change */ VARCHAR2
45 ) IS
46 l_api_name CONSTANT VARCHAR2(30) := 'Add_Attachment';
47 l_api_version CONSTANT NUMBER := 1.0;
48 BEGIN
49
50 -- Standard Start of API savepoint
51 SAVEPOINT Add_ATTACHMENT_PVT;
52
53 IF NOT FND_API.Compatible_API_Call (l_api_version
54 ,P_Api_Version_Number
55 ,l_api_name
56 ,G_PKG_NAME )
57 THEN
58 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
59 END IF;
60
61
62 -- Initialize message list if p_init_msg_list is set to TRUE.
63 IF FND_API.to_Boolean(p_init_msg_list) THEN
64 FND_MSG_PUB.initialize;
65 END IF;
66
67 -- Initialize API return status to error, i.e, its not duplicate
68 x_return_status := FND_API.G_RET_STS_SUCCESS;
69
70 FND_WEBATTCH.Add_Attachment(
71 seq_num => p_seq_num
72 ,category_id => p_category_id
73 ,document_description => p_document_description
74 ,datatype_id => p_datatype_id
75 ,text => p_text
76 ,file_name => p_file_name
77 ,url => p_url
78 ,function_name => NULL
79 ,entity_name => 'ASO_QUOTE_HEADERS_ALL'
80 ,pk1_value => TO_CHAR(p_quote_header_id)
81 ,pk2_value => NULL
82 ,pk3_value => NULL
83 ,pk4_value => NULL
84 ,pk5_value => NULL
85 ,media_id => p_media_id
86 ,user_id => to_char(FND_GLOBAL.USER_ID)
87 );
88
89 -- End of API body.
90 -- Standard check of p_commit.
91 IF FND_API.to_Boolean( p_commit )
92 THEN
93 COMMIT WORK;
94 END IF;
95
96
97
98 -- Standard call to get message count and if count is 1, get message info.
99 FND_MSG_PUB.Count_And_Get
100 ( p_count => x_msg_count,
101 p_data => x_msg_data
102 );
103
104 EXCEPTION
105 WHEN FND_API.G_EXC_ERROR THEN
106 ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
107 P_API_NAME => L_API_NAME
108 ,P_PKG_NAME => G_PKG_NAME
109 ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
110 ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
111 ,P_SQLCODE => SQLCODE
112 ,P_SQLERRM => SQLERRM
113 ,X_MSG_COUNT => X_MSG_COUNT
114 ,X_MSG_DATA => X_MSG_DATA
115 ,X_RETURN_STATUS => X_RETURN_STATUS);
116
117 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
118 ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
119 P_API_NAME => L_API_NAME
120 ,P_PKG_NAME => G_PKG_NAME
121 ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
122 ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
123 ,P_SQLCODE => SQLCODE
124 ,P_SQLERRM => SQLERRM
125 ,X_MSG_COUNT => X_MSG_COUNT
126 ,X_MSG_DATA => X_MSG_DATA
127 ,X_RETURN_STATUS => X_RETURN_STATUS);
128
129 WHEN OTHERS THEN
130 ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
131 P_API_NAME => L_API_NAME
132 ,P_PKG_NAME => G_PKG_NAME
133 ,P_EXCEPTION_LEVEL => ASO_UTILITY_PVT.G_EXC_OTHERS
134 ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
135 ,P_SQLCODE => SQLCODE
136 ,P_SQLERRM => SQLERRM
137 ,X_MSG_COUNT => X_MSG_COUNT
138 ,X_MSG_DATA => X_MSG_DATA
139 ,X_RETURN_STATUS => X_RETURN_STATUS);
140
141 END Add_Attachment;
142
143
144 PROCEDURE Copy_Attachments_To_Order(
145 p_api_version_number IN NUMBER
146 ,p_init_msg_list IN VARCHAR2 := FND_API.g_false
147 ,p_commit IN VARCHAR2 := FND_API.g_false
148 ,p_quote_header_id IN NUMBER
149 ,p_order_id IN NUMBER
150 ,p_order_line_tbl IN ASO_ORDER_INT.Order_Line_Tbl_Type
151 ,x_return_status OUT NOCOPY /* file.sql.39 change */ VARCHAR2
152 ,x_msg_count OUT NOCOPY /* file.sql.39 change */ NUMBER
153 ,x_msg_data OUT NOCOPY /* file.sql.39 change */ VARCHAR2
154 )
155 IS
156 l_api_name CONSTANT VARCHAR2(30) := 'Copy_Attachments_To_Order';
157 l_api_version CONSTANT NUMBER := 1.0;
158
159 CURSOR c_quote_line (l_shipment_id NUMBER) IS
160 SELECT quote_line_id
161 FROM aso_shipments
162 WHERE shipment_id = l_shipment_id;
163
164 l_quote_line_id NUMBER;
165
166 BEGIN
167
168 -- Standard Start of API savepoint
169 SAVEPOINT COPY_ATTACHMENTS_TO_ORDER_PVT;
170 IF NOT FND_API.Compatible_API_Call (l_api_version
171 ,P_Api_Version_Number
172 ,l_api_name
173 ,G_PKG_NAME )
174 THEN
175 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
176 END IF;
177
178 -- Initialize message list if p_init_msg_list is set to TRUE.
179 IF FND_API.to_Boolean(p_init_msg_list) THEN
180 FND_MSG_PUB.initialize;
181 END IF;
182
183 -- Initialize API return status to error, i.e, its not duplicate
184 x_return_status := FND_API.G_RET_STS_SUCCESS;
185
186 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
187 aso_debug_pub.add('COPY_ATTACHMENTS_TO_ORDER: quote_header_id: ' || p_quote_header_id, 1, 'N');
188 aso_debug_pub.add('COPY_ATTACHMENTS_TO_ORDER: order_id: ' || p_order_id, 1, 'N');
189 END IF;
190
191 ASO_ATTACHMENT_INT.Copy_Attachments(
192 p_api_version => l_api_version,
193 p_init_msg_list => FND_API.G_FALSE,
194 p_commit => FND_API.G_FALSE,
195 p_old_object_code => 'ASO_QUOTE_HEADERS_ALL',
196 p_new_object_code => 'OE_ORDER_HEADERS',
197 p_old_object_id => p_quote_header_id,
198 p_new_object_id => p_order_id,
199 x_return_status => x_return_status,
200 x_msg_count => x_msg_count,
201 x_msg_data => x_msg_data
202 );
203
204 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
205 RAISE FND_API.G_EXC_ERROR;
206 ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
207 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
208 END IF;
209
210 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
211 aso_debug_pub.add('COPY_ATTACHMENTS_TO_ORDER: line tbl count: ' || p_order_line_tbl.count, 1, 'N');
212 END IF;
213
214 FOR i IN 1..p_order_line_tbl.count LOOP
215
216 OPEN c_quote_line (p_Order_Line_Tbl(i).QUOTE_SHIPMENT_LINE_ID);
217 FETCH c_quote_line into l_quote_line_id;
218 CLOSE c_quote_line;
219
220 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
221 aso_debug_pub.add('COPY_ATTACHMENTS_TO_ORDER: quote_line_id: ' || l_quote_line_id, 1, 'N');
222 aso_debug_pub.add('COPY_ATTACHMENTS_TO_ORDER: order_line_id: ' || p_order_line_tbl(i).ORDER_LINE_ID, 1, 'N');
223 END IF;
224
225 ASO_ATTACHMENT_INT.Copy_Attachments(
226 p_api_version => l_api_version,
227 p_init_msg_list => FND_API.G_FALSE,
228 p_commit => FND_API.G_FALSE,
229 p_old_object_code => 'ASO_QUOTE_LINES_ALL',
230 p_new_object_code => 'OE_ORDER_LINES',
231 p_old_object_id => l_quote_line_id,
232 p_new_object_id => p_order_line_tbl(i).ORDER_LINE_ID,
233 x_return_status => x_return_status,
234 x_msg_count => x_msg_count,
235 x_msg_data => x_msg_data
236 );
237
238 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
239 RAISE FND_API.G_EXC_ERROR;
240 ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
241 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
242 END IF;
243 END LOOP;
244
245 -- Standard check of p_commit.
246 IF FND_API.to_Boolean( p_commit ) THEN
247 COMMIT WORK;
248 END IF;
249
250 -- Standard call to get message count and if count is 1, get message info.
251 FND_MSG_PUB.Count_And_Get(
252 p_count => x_msg_count,
253 p_data => x_msg_data
254 );
255
256 EXCEPTION
257 WHEN FND_API.G_EXC_ERROR THEN
258 ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
259 P_API_NAME => L_API_NAME
260 ,P_PKG_NAME => G_PKG_NAME
261 ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
262 ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
263 ,P_SQLCODE => SQLCODE
264 ,P_SQLERRM => SQLERRM
265 ,X_MSG_COUNT => X_MSG_COUNT
266 ,X_MSG_DATA => X_MSG_DATA
267 ,X_RETURN_STATUS => X_RETURN_STATUS);
268
269 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
270 ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
271 P_API_NAME => L_API_NAME
272 ,P_PKG_NAME => G_PKG_NAME
273 ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
274 ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
275 ,P_SQLCODE => SQLCODE
276 ,P_SQLERRM => SQLERRM
277 ,X_MSG_COUNT => X_MSG_COUNT
278 ,X_MSG_DATA => X_MSG_DATA
279 ,X_RETURN_STATUS => X_RETURN_STATUS);
280
281 WHEN OTHERS THEN
282 ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
283 P_API_NAME => L_API_NAME
284 ,P_PKG_NAME => G_PKG_NAME
285 ,P_EXCEPTION_LEVEL => ASO_UTILITY_PVT.G_EXC_OTHERS
286 ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
287 ,P_SQLCODE => SQLCODE
288 ,P_SQLERRM => SQLERRM
289 ,X_MSG_COUNT => X_MSG_COUNT
290 ,X_MSG_DATA => X_MSG_DATA
291 ,X_RETURN_STATUS => X_RETURN_STATUS);
292
293 END Copy_Attachments_To_Order;
294
295
296
297 PROCEDURE Delete_Attachments(
298 p_api_version_number IN NUMBER
299 ,p_init_msg_list IN VARCHAR2 := FND_API.g_false
300 ,p_commit IN VARCHAR2 := FND_API.g_false
301 ,p_quote_header_id IN NUMBER
302 ,p_quote_attachment_ids IN JTF_VARCHAR2_TABLE_100
303 ,x_return_status OUT NOCOPY /* file.sql.39 change */ VARCHAR2
304 ,x_msg_count OUT NOCOPY /* file.sql.39 change */ NUMBER
305 ,x_msg_data OUT NOCOPY /* file.sql.39 change */ VARCHAR2
306 )
307 IS
308 l_api_name CONSTANT VARCHAR2(30) := 'Delete_Attachments';
309 l_api_version CONSTANT NUMBER := 1.0;
310
311 l_media_id NUMBER;
312 l_document_id NUMBER;
313 l_entity_name FND_ATTACHED_DOCUMENTS.ENTITY_NAME%TYPE;
314
315 /* 2633826 - hyang: added checking of p_quote_header_id */
316 CURSOR c_get_media_id (l_attachment_id varchar2) IS
317 SELECT a.media_id, b.document_id
318 FROM FND_ATTACHED_DOCUMENTS b
319 ,FND_DOCUMENTS_TL a
320 WHERE a.document_id = b.document_id
321 AND b.attached_document_id = l_attachment_id
322 AND b.pk1_value = p_quote_header_id
323 AND b.entity_name = 'ASO_QUOTE_HEADERS_ALL';
324
325 CURSOR c_get_document_id_rows (p_document_id number) IS
326 SELECT a.document_id
327 FROM FND_ATTACHED_DOCUMENTS a
328 WHERE a.document_id = p_document_id
329 AND a.pk1_value <> p_quote_header_id;
330 --AND a.entity_name <> 'ASO_QUOTE_HEADERS_ALL';
331
332 BEGIN
333
334 -- Standard Start of API savepoint
335 SAVEPOINT DELETE_ATTACHMENTS_PVT;
336
337 IF NOT FND_API.Compatible_API_Call (l_api_version
338 ,P_Api_Version_Number
339 ,l_api_name
340 ,G_PKG_NAME )
341 THEN
342 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
343 END IF;
344
345
346 -- Initialize message list if p_init_msg_list is set to TRUE.
347 IF FND_API.to_Boolean(p_init_msg_list) THEN
348 FND_MSG_PUB.initialize;
349 END IF;
350
351
352 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
353 aso_debug_pub.add (
354 'DELETE_ATTACHMENTS: quote_header_id ' || p_quote_header_id,
355 1,
356 'Y'
357 );
358 END IF;
359
360
361
362 -- Initialize API return status to error, i.e, its not duplicate
363 x_return_status := FND_API.G_RET_STS_SUCCESS;
364
365 FOR i in 1..p_quote_attachment_ids.COUNT LOOP
366
367 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
368 aso_debug_pub.add ('DELETE_ATTACHMENTS: quote_attachment_id ' || p_quote_attachment_ids(i),1,'Y');
369 END IF;
370
371 -- Get the media_id for the attachment.
372 OPEN c_get_media_id (p_quote_attachment_ids(i));
373 FETCH c_get_media_id into l_media_id, l_document_id;
374
375 /*
376 * 2633826 - hyang: added validation of quote_header_id.
377 * Returns error if association is not found.
378 */
379 IF c_get_media_id%NOTFOUND
380 THEN
381 CLOSE c_get_media_id;
382
383 IF fnd_msg_pub.check_msg_level (
384 fnd_msg_pub.g_msg_lvl_error
385 )
386 THEN
387 fnd_message.set_name (
388 'ASO',
389 'ASO_API_INVALID_ID'
390 );
391 FND_MESSAGE.Set_Token(
392 'COLUMN',
393 'QUOTE_HEADER_ID', FALSE);
394 fnd_msg_pub.ADD;
395 END IF;
396
397 RAISE fnd_api.g_exc_error;
398 ELSE
399 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
400 aso_debug_pub.add ('DELETE_ATTACHMENTS: l_document_id : ' || l_document_id,1,'Y');
401 END IF;
402 END IF;
403
404 CLOSE c_get_media_id;
405
406 -- Call the procedure to delete the attachment and document.
407 FND_ATTACHED_DOCUMENTS3_PKG.delete_row ( p_quote_attachment_ids(i),
408 '6', 'N' );
409
410 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
411 aso_debug_pub.add ( 'DELETE_ATTACHMENTS: Check to see if the attachment was from an Opportunity...', 1, 'Y');
412 END IF;
413
417 IF c_get_document_id_rows%NOTFOUND
414 OPEN c_get_document_id_rows( l_document_id);
415 FETCH c_get_document_id_rows into l_document_id;
416
418 THEN
419 CLOSE c_get_document_id_rows;
420 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
421 aso_debug_pub.add ( 'DELETE_ATTACHMENTS: Attachment is not from an Opportunity...', 1, 'Y');
422 END IF;
423 DELETE FROM fnd_lobs WHERE file_id = l_media_id;
424 ELSE
425 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
426 aso_debug_pub.add ( 'DELETE_ATTACHMENTS: Attachment is from an Opportunity...', 1, 'Y');
427 END IF;
428 END IF;
429
430 IF c_get_document_id_rows%ISOPEN THEN
431 CLOSE c_get_document_id_rows;
432 END IF;
433
434 /*******
435 FND_WEBATTCH.DeleteAttachment(
436 attached_document_id => p_quote_attachment_ids(i),
437 function_name => NULL,
438 entity_name => 'ASO_QUOTE_HEADERS_ALL',
439 pk1_value => p_quote_header_id,
440 pk2_value => NULL,
441 pk3_value => NULL,
442 pk4_value => NULL,
443 pk5_value => NULL,
444 from_url => NULL,
445 query_only => 'N'
446 );
447 ********/
448 END LOOP;
449
450 -- End of API body.
451 -- Standard check of p_commit.
452 IF FND_API.to_Boolean( p_commit )
453 THEN
454 COMMIT WORK;
455 END IF;
456
457
458
459 -- Standard call to get message count and if count is 1, get message info.
460 FND_MSG_PUB.Count_And_Get
461 ( p_count => x_msg_count,
462 p_data => x_msg_data
463 );
464
465 EXCEPTION
466 WHEN FND_API.G_EXC_ERROR THEN
467 ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
468 P_API_NAME => L_API_NAME
469 ,P_PKG_NAME => G_PKG_NAME
470 ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
471 ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
472 ,P_SQLCODE => SQLCODE
473 ,P_SQLERRM => SQLERRM
474 ,X_MSG_COUNT => X_MSG_COUNT
475 ,X_MSG_DATA => X_MSG_DATA
476 ,X_RETURN_STATUS => X_RETURN_STATUS);
477
478 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
479 ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
480 P_API_NAME => L_API_NAME
481 ,P_PKG_NAME => G_PKG_NAME
482 ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
483 ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
484 ,P_SQLCODE => SQLCODE
485 ,P_SQLERRM => SQLERRM
486 ,X_MSG_COUNT => X_MSG_COUNT
487 ,X_MSG_DATA => X_MSG_DATA
488 ,X_RETURN_STATUS => X_RETURN_STATUS);
489
490 WHEN OTHERS THEN
491 ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
492 P_API_NAME => L_API_NAME
493 ,P_PKG_NAME => G_PKG_NAME
494 ,P_EXCEPTION_LEVEL => ASO_UTILITY_PVT.G_EXC_OTHERS
495 ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
496 ,P_SQLCODE => SQLCODE
497 ,P_SQLERRM => SQLERRM
498 ,X_MSG_COUNT => X_MSG_COUNT
499 ,X_MSG_DATA => X_MSG_DATA
500 ,X_RETURN_STATUS => X_RETURN_STATUS);
501
502 END Delete_Attachments;
503
504
505 /*
506 * The Purpose of this procedure is to build a wrapper around fnd attachment apis
507 * and use this api to copy attachments in all aso apis. So that if there is a change
508 * to fnd apis then its in one place instead of calling the fnd apis directly in aso apis
509 * in multiple places. Thus we have changed the parameter to have come name called object.
510 *
511 * An Object Code refers to the context from which the attachments are to be copied.
512 * For instance if this procedure is called from opportunity to quote then ,
513 * Old Object Code = 'AS_OPPORTUNITY_ATTCH'
514 * New Object Code = 'ASO_QUOTE_HEADERS_ALL'.
515 * This value depends on the calling procedure.
516 *
517 * An object ID can refer to Quote Header Id or Opportunity ID or Quote Line ID or
518 * an Order Header Id or Order Line ID depending on the context and from which aso api
519 * this procedure is being called.
520 *
521 * A object can have multiple attachment documents attached to it. When a
522 * new version of object is created from an existing object, all the attachment
523 * documents attached to the existing object should be attached to the new
524 * version of object, too.
525 *
526 * This procedure is called when a new version of object is created from an
527 * existing object.
528 *
529 * param p_old_object_code: existing object Code.
530 * param p_new_object_code: object code new version.
531 * param p_old_object_id: existing object ID.
532 * param p_new_object_id: object ID of the new version.
533 */
534 PROCEDURE Copy_Attachments
535 (
536 p_api_version IN NUMBER ,
537 p_init_msg_list IN VARCHAR2 := FND_API.G_TRUE ,
538 p_commit IN VARCHAR2 := FND_API.G_FALSE,
539 p_old_object_code IN VARCHAR2 ,
540 p_new_object_code IN VARCHAR2 ,
541 p_old_object_id IN NUMBER ,
542 p_new_object_id IN NUMBER ,
543 x_return_status OUT NOCOPY /* file.sql.39 change */ VARCHAR2 ,
544 x_msg_count OUT NOCOPY /* file.sql.39 change */ NUMBER ,
545 x_msg_data OUT NOCOPY /* file.sql.39 change */ VARCHAR2
546 )
547 IS
548
549 G_USER_ID NUMBER := FND_GLOBAL.USER_ID;
550
551 L_API_NAME CONSTANT VARCHAR2(30) := 'Copy_Attachments';
552 L_API_VERSION CONSTANT NUMBER := 1.0;
556 SAVEPOINT Copy_Attachments_Pvt;
553
554 BEGIN
555 -- Standard Start of API savepoint
557
558 -- Standard call to check for call compatibility.
559 IF NOT FND_API.Compatible_API_Call(L_API_VERSION,
560 p_api_version,
561 L_API_NAME ,
562 G_PKG_NAME )
563 THEN
564 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
565 END IF;
566
567 -- Initialize message list if p_init_msg_list is set to TRUE.
568 IF FND_API.To_Boolean(p_init_msg_list) THEN
569 FND_Msg_Pub.initialize;
570 END IF;
571
572 -- Initialize API return status to success
573 x_return_status := FND_API.G_RET_STS_SUCCESS;
574 -- API body
575
576 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
577 aso_debug_pub.add('COPY_ATTACHMENTS: old_object_id: ' || p_old_object_id, 1, 'N');
578 aso_debug_pub.add('COPY_ATTACHMENTS: new_object_id: ' || p_new_object_id, 1, 'N');
579 END IF;
580
581 FND_ATTACHED_DOCUMENTS2_PKG.Copy_Attachments(
582 x_from_entity_name => p_old_object_code,
583 x_from_pk1_value => to_char(p_old_object_id),
584 x_to_entity_name => p_new_object_code,
585 x_to_pk1_value => to_char(p_new_object_id),
586 x_automatically_added_flag => null,
587 x_created_by => G_USER_ID);
588
589 -- Standard check of p_commit.
590 IF FND_API.To_Boolean(p_commit) THEN
591 COMMIT WORK;
592 END IF;
593
594 -- Standard call to get message count and if count is 1, get message info.
595 FND_Msg_Pub.Count_And_Get(p_encoded => FND_API.G_FALSE,
596 p_count => x_msg_count ,
597 p_data => x_msg_data);
598
599 EXCEPTION
600 WHEN FND_API.G_EXC_ERROR THEN
601 ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
602 P_API_NAME => L_API_NAME
603 ,P_PKG_NAME => G_PKG_NAME
604 ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
605 ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
606 ,P_SQLCODE => SQLCODE
607 ,P_SQLERRM => SQLERRM
608 ,X_MSG_COUNT => X_MSG_COUNT
609 ,X_MSG_DATA => X_MSG_DATA
610 ,X_RETURN_STATUS => X_RETURN_STATUS);
611
612 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
613 ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
614 P_API_NAME => L_API_NAME
615 ,P_PKG_NAME => G_PKG_NAME
616 ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
617 ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
618 ,P_SQLCODE => SQLCODE
619 ,P_SQLERRM => SQLERRM
620 ,X_MSG_COUNT => X_MSG_COUNT
621 ,X_MSG_DATA => X_MSG_DATA
622 ,X_RETURN_STATUS => X_RETURN_STATUS);
623
624 WHEN OTHERS THEN
625 ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
626 P_API_NAME => L_API_NAME
627 ,P_PKG_NAME => G_PKG_NAME
628 ,P_EXCEPTION_LEVEL => ASO_UTILITY_PVT.G_EXC_OTHERS
629 ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
630 ,P_SQLCODE => SQLCODE
631 ,P_SQLERRM => SQLERRM
632 ,X_MSG_COUNT => X_MSG_COUNT
633 ,X_MSG_DATA => X_MSG_DATA
634 ,X_RETURN_STATUS => X_RETURN_STATUS);
635
636 END Copy_Attachments;
637
638
639 END ASO_ATTACHMENT_INT;