DBA Data[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;