DBA Data[Home] [Help]

PACKAGE BODY: APPS.ASO_NOTES_INT

Source


1 PACKAGE BODY ASO_NOTES_INT AS
2 /* $Header: asoinotb.pls 120.1 2005/06/29 12:34:02 appldev ship $ */
3 
4 -- Start of Comments
5 -- Package name     : ASO_NOTES_INT
6 -- Purpose          :
7 -- History          :
8 --                  10/07/2002 - hyang:  2611381, performance fix for 1158.
9 --                  28-JAN-2003 - subha madapusi : ER 2732010.
10 --                  01-MAY-2003   Subha Madapusi : bug - 2915604.
11 -- NOTE             :
12 -- End of Comments
13 
14 G_PKG_NAME    CONSTANT VARCHAR2(30) := 'ASO_NOTES_INT';
15 G_FILE_NAME   CONSTANT VARCHAR2(12) :=  'asoinotb.pls';
16 
17 
18 /*
19  * A quote can have multiple JTF notes attached to it.  When a
20  * new version of quote is created from an existing quote, all the JTF
21  * notes attached to the existing quote should be attached to the new
22  * version of quote, too.
23  *
24  * This procedure is called when a new version of quote is created from an
25  * existing quote.
26  *
27  * param p_old_quote_header_id: quote header ID of the existing quote.
28  * param p_new_quote_header_id: quote header ID of the new version.
29  */
30 
31 PROCEDURE Copy_Notes
32 (
33     p_api_version          IN  NUMBER                     ,
34     p_init_msg_list        IN  VARCHAR2 := FND_API.G_TRUE ,
35     p_commit               IN  VARCHAR2 := FND_API.G_FALSE,
36     p_old_object_id        IN  NUMBER                     ,
37     p_new_object_id        IN  NUMBER                     ,
38     p_old_object_type_code IN  VARCHAR2                   ,
39     p_new_object_type_code IN  VARCHAR2                   ,
40     x_return_status        OUT NOCOPY /* file.sql.39 change */   VARCHAR2                   ,
41     x_msg_count            OUT NOCOPY /* file.sql.39 change */   NUMBER                     ,
42     x_msg_data             OUT NOCOPY /* file.sql.39 change */   VARCHAR2
43 )
44 IS
45 
46     L_API_NAME    CONSTANT   VARCHAR2(30)    := 'Copy_Notes';
47     L_API_VERSION CONSTANT   NUMBER          := 1.0;
48 
49     l_sysdate                  DATE          := SYSDATE;
50     lx_jtf_note_context_id     NUMBER;
51 
52     /*
53      * This cursor gets information about all the JTF notes attached
54      * to the existing quote.
55      *
56      * 2611381 fix: using base tables instead of view.
57      * 2915604 Fix : removed the JTF context part both cursor and for loop for table
58      * population in order to avoid duplicate notes.
59      */
60     CURSOR  l_notes_csr(p_object_id NUMBER, p_object_type_code VARCHAR2) IS
61 		select  b.jtf_note_id
62 		FROM    jtf_notes_b b
63 		WHERE   b.source_object_id  IN
64 		(select quote_header_id  from aso_quote_headers_all
65 		 where quote_number = (select quote_number from aso_quote_headers_all
66 						   where quote_header_id = p_object_id))
67 		AND   b.source_object_code = 'ASO_QUOTE';
68 
69 BEGIN
70 
71     -- Standard Start of API savepoint
72     SAVEPOINT Copy_Notes_int;
73 
74     -- Standard call to check for call compatibility.
75     IF NOT FND_API.Compatible_API_Call(
76         L_API_VERSION,
77         p_api_version,
78         L_API_NAME   ,
79         G_PKG_NAME
80     )
81     THEN
82         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
83     END IF;
84 
85     -- Initialize message list if p_init_msg_list is set to TRUE.
86     IF FND_API.To_Boolean(p_init_msg_list) THEN
87         FND_Msg_Pub.initialize;
88     END IF;
89 
90     --  Initialize API return status to success
91     x_return_status := FND_API.G_RET_STS_SUCCESS;
92 
93     IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
94       aso_debug_pub.add('ASO_NOTES_INT: Copy_Notes: Begin Copy_Notes()', 1, 'Y');
95       aso_debug_pub.add('ASO_NOTES_INT: Copy_Notes: old_object_id:          ' || p_old_object_id, 1, 'N');
96       aso_debug_pub.add('ASO_NOTES_INT: Copy_Notes: old_object_type_code:   ' || p_old_object_type_code, 1, 'N');
97       aso_debug_pub.add('ASO_NOTES_INT: Copy_Notes: new_object_id:          ' || p_new_object_id, 1, 'N');
98       aso_debug_pub.add('ASO_NOTES_INT: Copy_Notes: new_object_type_code:   ' || p_new_object_type_code, 1, 'N');
99     END IF;
100 
101     FOR l_note_rec IN l_notes_csr(p_old_object_id, p_old_object_type_code) LOOP
102 
103         IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
104           aso_debug_pub.add('ASO_NOTES_INT: Copy_Notes: l_note_rec.jtf_note_id: ' || l_note_rec.jtf_note_id, 1, 'N');
105         END IF;
106 
107 
108         JTF_NOTES_PUB.Create_Note_Context(
109             	p_validation_level      => FND_API.G_VALID_LEVEL_NONE,
110             	x_return_status         => x_return_status           ,
111             	p_jtf_note_id           => l_note_rec.jtf_note_id    ,
112             	p_last_update_date      => l_sysdate                 ,
113             	p_last_updated_by       => FND_Global.USER_ID        ,
114             	p_creation_date         => l_sysdate                 ,
115 			p_created_by            => FND_Global.USER_ID        ,
116      		p_last_update_login     => FND_GLOBAL.LOGIN_ID       ,
117     			p_note_context_type_id  => p_new_object_id      ,
118     			p_note_context_type     => p_new_object_type_code    ,
119     			x_note_context_id       => lx_jtf_note_context_id
120 			);
121 
122 
123         IF x_return_status = FND_API.G_RET_STS_ERROR THEN
124             RAISE FND_API.G_EXC_ERROR;
125         ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
126             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
127         END IF;
128 
129         IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
130           aso_debug_pub.add('ASO_NOTES_INT: Copy_Notes: lx_jtf_note_context_id :' || lx_jtf_note_context_id, 1, 'N');
131         END IF;
132 
133     END LOOP;
134 
135     -- End of API body.
136     IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
137       aso_debug_pub.add('ASO_NOTES_INT: Copy_Notes: End Copy_Notes()', 1, 'Y');
138     END IF;
139 
140     -- Standard check of p_commit.
141     IF FND_API.To_Boolean(p_commit) THEN
142         COMMIT WORK;
143     END IF;
144 
145      -- Standard call to get message count and if count is 1, get message info.
146     FND_Msg_Pub.Count_And_Get(
147         p_encoded => FND_API.G_FALSE,
148         p_count   => x_msg_count    ,
149         p_data    => x_msg_data
150     );
151 
152     EXCEPTION
153         WHEN FND_API.G_EXC_ERROR THEN
154             ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
155                 P_API_NAME         => L_API_NAME,
156                 P_PKG_NAME         => G_PKG_NAME,
157                 P_EXCEPTION_LEVEL  => FND_MSG_PUB.G_MSG_LVL_ERROR,
158                 P_PACKAGE_TYPE     => ASO_UTILITY_PVT.G_INT,
159                 P_SQLCODE          => SQLCODE,
160                 P_SQLERRM          => SQLERRM,
161                 X_MSG_COUNT        => X_MSG_COUNT,
162                 X_MSG_DATA         => X_MSG_DATA,
163                 X_RETURN_STATUS    => X_RETURN_STATUS
164             );
165 
166         WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
167             ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
168                 P_API_NAME         => L_API_NAME,
169                 P_PKG_NAME         => G_PKG_NAME,
170                 P_EXCEPTION_LEVEL  => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR,
171                 P_PACKAGE_TYPE     => ASO_UTILITY_PVT.G_INT,
172                 P_SQLCODE          => SQLCODE,
173                 P_SQLERRM          => SQLERRM,
174                 X_MSG_COUNT        => X_MSG_COUNT,
175                 X_MSG_DATA         => X_MSG_DATA,
176                 X_RETURN_STATUS    => X_RETURN_STATUS
177             );
178 
179         WHEN OTHERS THEN
180             ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
181                 P_API_NAME         => L_API_NAME,
182                 P_PKG_NAME         => G_PKG_NAME,
183                 P_EXCEPTION_LEVEL  => ASO_UTILITY_PVT.G_EXC_OTHERS,
184                 P_PACKAGE_TYPE     => ASO_UTILITY_PVT.G_INT,
185                 P_SQLCODE          => SQLCODE,
186                 P_SQLERRM          => SQLERRM,
187                 X_MSG_COUNT        => X_MSG_COUNT,
188                 X_MSG_DATA         => X_MSG_DATA,
189                 X_RETURN_STATUS    => X_RETURN_STATUS
190             );
191 
192 END Copy_Notes;
193 
194 
195 -- As per the ER 2732010. While creating opportunity to quote in Telesales
196 -- certain types of notes should NOT be copied over to the quote.
197 -- Those note types are to be visible only in telesales.
198 -- Hence the new Api is needed to accomplish this requirement.
199 -- The types of notes that are copied over to quote from an Opportunity are :
200 -- 1. Notes types that are not linked to any source objects.
201 -- 2. Notes types that are Specifically linked to Quoting.
202 
203 -- This procedure is called only when creating a quote from an opportunity.
204 -- Bug 2915604. In order to avoid duplicates notes creation removed the context
205 -- creation part. Removed the code for the context cursor and for loop.
206 
207 PROCEDURE Copy_Opp_Notes_To_Qte
208 (
209     p_api_version          IN  NUMBER                     ,
210     p_init_msg_list        IN  VARCHAR2 := FND_API.G_TRUE ,
211     p_commit               IN  VARCHAR2 := FND_API.G_FALSE,
212     p_old_object_id        IN  NUMBER                     ,
213     p_new_object_id        IN  NUMBER                     ,
214     p_old_object_type_code IN  VARCHAR2                   ,
215     p_new_object_type_code IN  VARCHAR2                   ,
216     x_return_status        OUT NOCOPY /* file.sql.39 change */   VARCHAR2                   ,
217     x_msg_count            OUT NOCOPY /* file.sql.39 change */   NUMBER                     ,
218     x_msg_data             OUT NOCOPY /* file.sql.39 change */   VARCHAR2
219 )
220 IS
221 
222     L_API_NAME      CONSTANT   VARCHAR2(30)    := 'Copy_Opp_Notes_To_Qte';
223     L_API_VERSION   CONSTANT   NUMBER          := 1.0;
224 
225     l_sysdate                  DATE            := SYSDATE;
226     lx_jtf_note_context_id     NUMBER;
227 
228     CURSOR  l_notes_csr(p_object_id NUMBER, p_object_type_code VARCHAR2) IS
229     select  b.jtf_note_id
230     FROM    jtf_notes_b b, jtf_notes_tl t
231     WHERE   b.source_object_id   = p_object_id
232       AND   b.source_object_code = p_object_type_code
233       AND   b.jtf_note_id = t.jtf_note_id
234       AND   t.language = USERENV('LANG')
235       AND   ( EXISTS ( SELECT o.object_id
236 	                  FROM jtf_object_mappings o
237 		             WHERE o.object_id = b.note_type
238                        AND   o.source_object_code = 'ASO_QUOTE' )
239 
240       	       OR   NOT EXISTS ( SELECT om.object_id
241 			                    FROM JTF_OBJECT_MAPPINGS om
242  	 		                    WHERE om.object_id = b.note_type )
243             );
244 
245 
246 BEGIN
247 
248     -- Standard Start of API savepoint
249     SAVEPOINT Copy_Opp_Notes_To_Qte_int;
250 
251     -- Standard call to check for call compatibility.
252     IF NOT FND_API.Compatible_API_Call(
253         L_API_VERSION,
254         p_api_version,
255         L_API_NAME   ,
256         G_PKG_NAME
257     )
258     THEN
259         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
260     END IF;
261 
262     -- Initialize message list if p_init_msg_list is set to TRUE.
263     IF FND_API.To_Boolean(p_init_msg_list) THEN
264         FND_Msg_Pub.initialize;
265     END IF;
266 
267     --  Initialize API return status to success
268     x_return_status := FND_API.G_RET_STS_SUCCESS;
269 
270     IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
271       aso_debug_pub.add('ASO_NOTES_INT: Copy_Opp_Notes_To_Qte: Begin Copy_Notes()', 1, 'Y');
272       aso_debug_pub.add('ASO_NOTES_INT: Copy_Opp_Notes_To_Qte: old_object_id:          ' || p_old_object_id, 1, 'N');
273       aso_debug_pub.add('ASO_NOTES_INT: Copy_Opp_Notes_To_Qte: old_object_type_code:   ' || p_old_object_type_code, 1, 'N');
274       aso_debug_pub.add('ASO_NOTES_INT: Copy_Opp_Notes_To_Qte: new_object_id:          ' || p_new_object_id, 1, 'N');
275       aso_debug_pub.add('ASO_NOTES_INT: Copy_Opp_Notes_To_Qte: new_object_type_code:   ' || p_new_object_type_code, 1, 'N');
276     END IF;
277 
278     FOR l_note_rec IN l_notes_csr(p_old_object_id, p_old_object_type_code) LOOP
279 
280         IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
281           aso_debug_pub.add('ASO_NOTES_INT: Copy_Opp_Notes_To_Qte: l_note_rec.jtf_note_id: ' || l_note_rec.jtf_note_id, 1, 'N');
282         END IF;
283 
284 
285         JTF_NOTES_PUB.Create_Note_Context(
286             	p_validation_level      => FND_API.G_VALID_LEVEL_NONE,
287             	x_return_status         => x_return_status           ,
288             	p_jtf_note_id           => l_note_rec.jtf_note_id    ,
289             	p_last_update_date      => l_sysdate                 ,
290             	p_last_updated_by       => FND_Global.USER_ID        ,
291             	p_creation_date         => l_sysdate                 ,
292 			p_created_by            => FND_Global.USER_ID        ,
293      		p_last_update_login     => FND_GLOBAL.LOGIN_ID       ,
294     			p_note_context_type_id  => p_new_object_id      ,
295     			p_note_context_type     => p_new_object_type_code    ,
296     			x_note_context_id       => lx_jtf_note_context_id
297 			);
298 
299 
300         IF x_return_status = FND_API.G_RET_STS_ERROR THEN
301             RAISE FND_API.G_EXC_ERROR;
302         ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
303             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
304         END IF;
305 
306         IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
307           aso_debug_pub.add('ASO_NOTES_INT: Copy_Opp_Notes_To_Qte: lx_jtf_note_context_id: ' || lx_jtf_note_context_id, 1, 'N');
308         END IF;
309 
310     END LOOP;
311 
312     -- End of API body.
313     IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
314         aso_debug_pub.add('ASO_NOTES_INT: Copy_Opp_Notes_To_Qte: End Copy_Opp_Notes_To_Qte()', 1, 'Y');
315     END IF;
316 
317     -- Standard check of p_commit.
318     IF FND_API.To_Boolean(p_commit) THEN
319         COMMIT WORK;
320     END IF;
321 
322      -- Standard call to get message count and if count is 1, get message info.
323     FND_Msg_Pub.Count_And_Get(
324         p_encoded => FND_API.G_FALSE,
325         p_count   => x_msg_count    ,
326         p_data    => x_msg_data
327     );
328 
329     EXCEPTION
330         WHEN FND_API.G_EXC_ERROR THEN
331             ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
332                 P_API_NAME         => L_API_NAME,
333                 P_PKG_NAME         => G_PKG_NAME,
334                 P_EXCEPTION_LEVEL  => FND_MSG_PUB.G_MSG_LVL_ERROR,
335                 P_PACKAGE_TYPE     => ASO_UTILITY_PVT.G_INT,
336                 P_SQLCODE          => SQLCODE,
337                 P_SQLERRM          => SQLERRM,
338                 X_MSG_COUNT        => X_MSG_COUNT,
339                 X_MSG_DATA         => X_MSG_DATA,
340                 X_RETURN_STATUS    => X_RETURN_STATUS
341             );
342 
343         WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
344             ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
345                 P_API_NAME         => L_API_NAME,
346                 P_PKG_NAME         => G_PKG_NAME,
347                 P_EXCEPTION_LEVEL  => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR,
348                 P_PACKAGE_TYPE     => ASO_UTILITY_PVT.G_INT,
349                 P_SQLCODE          => SQLCODE,
350                 P_SQLERRM          => SQLERRM,
351                 X_MSG_COUNT        => X_MSG_COUNT,
352                 X_MSG_DATA         => X_MSG_DATA,
353                 X_RETURN_STATUS    => X_RETURN_STATUS
354             );
355 
356         WHEN OTHERS THEN
357             ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
358                 P_API_NAME         => L_API_NAME,
359                 P_PKG_NAME         => G_PKG_NAME,
360                 P_EXCEPTION_LEVEL  => ASO_UTILITY_PVT.G_EXC_OTHERS,
361                 P_PACKAGE_TYPE     => ASO_UTILITY_PVT.G_INT,
362                 P_SQLCODE          => SQLCODE,
363                 P_SQLERRM          => SQLERRM,
364                 X_MSG_COUNT        => X_MSG_COUNT,
365                 X_MSG_DATA         => X_MSG_DATA,
366                 X_RETURN_STATUS    => X_RETURN_STATUS
367             );
368 
369 END Copy_Opp_Notes_To_Qte;
370 
371 
372 PROCEDURE Copy_Notes_copy_quote
373 (
374     p_api_version          IN  NUMBER                     ,
375     p_init_msg_list        IN  VARCHAR2 := FND_API.G_TRUE ,
376     p_commit               IN  VARCHAR2 := FND_API.G_FALSE,
377     p_old_object_id        IN  NUMBER                     ,
378     p_new_object_id        IN  NUMBER                     ,
379     p_old_object_type_code IN  VARCHAR2                   ,
380     p_new_object_type_code IN  VARCHAR2                   ,
381     x_return_status        OUT NOCOPY /* file.sql.39 change */   VARCHAR2                   ,
382     x_msg_count            OUT NOCOPY /* file.sql.39 change */   NUMBER                     ,
383     x_msg_data             OUT NOCOPY /* file.sql.39 change */   VARCHAR2
384 )
385 IS
386 
387     L_API_NAME    CONSTANT   VARCHAR2(30)    := 'Copy_Notes_copy_quote';
388     L_API_VERSION CONSTANT   NUMBER          := 1.0;
389 
390     l_notes_detail             VARCHAR2(32767) := NULL;
391     l_jtf_note_id              NUMBER;
392     l_jtf_note_contexts_tab    JTF_NOTES_PUB.jtf_note_contexts_tbl_type;
393     l_sysdate                  DATE            := SYSDATE;
394     i                          NUMBER          := 1;
395 
396     /*
397      * This cursor gets information about all the JTF notes attached
398      * to the existing quote.
399      *
400      * 2611381 fix: using base tables instead of view.
401      * 2915604 Fix : removed the JTF context part both cursor and for loop for table
402      * population in order to avoid duplicate notes.
403      */
404     CURSOR  l_notes_csr(p_object_id NUMBER, p_object_type_code VARCHAR2) IS
405     SELECT  b.parent_note_id,
406             b.jtf_note_id  ,
407             t.notes        ,
408             b.note_status  ,
409             b.attribute1   ,
410             b.attribute2   ,
411             b.attribute3   ,
412             b.attribute4   ,
413             b.attribute5   ,
414             b.attribute6   ,
415             b.attribute7   ,
416             b.attribute8   ,
417             b.attribute9   ,
418             b.attribute10  ,
419             b.attribute11  ,
420             b.attribute12  ,
421             b.attribute13  ,
422             b.attribute14  ,
423             b.attribute15  ,
424             b.context      ,
425             b.note_type
426        FROM    jtf_notes_b b, jtf_notes_tl t
427        WHERE   b.source_object_id  IN
428 		(select quote_header_id  from aso_quote_headers_all
429 		 where quote_number = (select quote_number from aso_quote_headers_all
430 						       where quote_header_id = p_object_id))
431       AND   b.source_object_code = p_object_type_code
432       AND   b.jtf_note_id = t.jtf_note_id
433       AND   t.language = USERENV('LANG');
434 
435 BEGIN
436 
437     -- Standard Start of API savepoint
438     SAVEPOINT Copy_Notes_int;
439 
440     -- Standard call to check for call compatibility.
441     IF NOT FND_API.Compatible_API_Call(
442         L_API_VERSION,
443         p_api_version,
444         L_API_NAME   ,
445         G_PKG_NAME
446     )
447     THEN
448         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
449     END IF;
450 
451     -- Initialize message list if p_init_msg_list is set to TRUE.
452     IF FND_API.To_Boolean(p_init_msg_list) THEN
453         FND_Msg_Pub.initialize;
454     END IF;
455 
456     --  Initialize API return status to success
457     x_return_status := FND_API.G_RET_STS_SUCCESS;
458 
459     IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
460       aso_debug_pub.add('ASO_NOTES_INT: Copy_Notes_copy_quote: Begin Copy_Notes()', 1, 'Y');
461       aso_debug_pub.add('ASO_NOTES_INT: Copy_Notes_copy_quote: old_object_id:          ' || p_old_object_id, 1, 'N');
462       aso_debug_pub.add('ASO_NOTES_INT: Copy_Notes_copy_quote: old_object_type_code:   ' || p_old_object_type_code, 1, 'N');
463       aso_debug_pub.add('ASO_NOTES_INT: Copy_Notes_copy_quote: new_object_id:          ' || p_new_object_id, 1, 'N');
464       aso_debug_pub.add('ASO_NOTES_INT: Copy_Notes_copy_quote: new_object_type_code:   ' || p_new_object_type_code, 1, 'N');
465     END IF;
466 
467     FOR l_note_rec IN l_notes_csr(p_old_object_id, p_old_object_type_code) LOOP
468 
469         IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
470           aso_debug_pub.add('ASO_NOTES_INT: Copy_Notes_copy_quote: l_note_rec.jtf_note_id: ' || l_note_rec.jtf_note_id, 1, 'N');
471         END IF;
472 
473         l_notes_detail := NULL;
474         JTF_Notes_Pub.WriteLobToData(l_note_rec.jtf_note_id, l_notes_detail);
475 
476         l_jtf_note_contexts_tab := JTF_NOTES_PUB.jtf_note_contexts_tab_dflt;
477 	   i:=1;
478 
479 
480         JTF_NOTES_PUB.Create_Note(
481             p_parent_note_id        => l_note_rec.parent_note_id ,
482             p_api_version           => 1.0                       ,
483             p_init_msg_list         => FND_API.G_FALSE           ,
484             p_commit                => FND_API.G_FALSE           ,
485             p_validation_level      => FND_API.G_VALID_LEVEL_NONE,
486             x_return_status         => x_return_status           ,
487             x_msg_count             => x_msg_count               ,
488             x_msg_data              => x_msg_data                ,
489             p_source_object_id      => p_new_object_id           ,
490             p_source_object_code    => p_new_object_type_code    ,
491             p_notes                 => l_note_rec.notes          ,
492             p_notes_detail          => l_notes_detail            ,
493             p_note_status           => l_note_rec.note_status    ,
494             p_entered_by            => FND_Global.USER_ID        ,
495             p_entered_date          => l_sysdate                 ,
496             x_jtf_note_id           => l_jtf_note_id             ,
497             p_last_update_date      => l_sysdate                 ,
498             p_last_updated_by       => FND_Global.USER_ID        ,
499             p_creation_date         => l_sysdate                 ,
500             p_attribute1            => l_note_rec.attribute1     ,
501             p_attribute2            => l_note_rec.attribute2     ,
502             p_attribute3            => l_note_rec.attribute3     ,
503             p_attribute4            => l_note_rec.attribute4     ,
504             p_attribute5            => l_note_rec.attribute5     ,
505             p_attribute6            => l_note_rec.attribute6     ,
506             p_attribute7            => l_note_rec.attribute7     ,
507             p_attribute8            => l_note_rec.attribute8     ,
508             p_attribute9            => l_note_rec.attribute9     ,
509             p_attribute10           => l_note_rec.attribute10    ,
510             p_attribute11           => l_note_rec.attribute11    ,
511             p_attribute12           => l_note_rec.attribute12    ,
512             p_attribute13           => l_note_rec.attribute13    ,
513             p_attribute14           => l_note_rec.attribute14    ,
514             p_attribute15           => l_note_rec.attribute15    ,
515             p_context               => l_note_rec.context        ,
516             p_note_type             => l_note_rec.note_type      ,
517             p_jtf_note_contexts_tab => l_jtf_note_contexts_tab
518         );
519 
520         IF x_return_status = FND_API.G_RET_STS_ERROR THEN
521             RAISE FND_API.G_EXC_ERROR;
522         ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
523             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
524         END IF;
525 
526         IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
527           aso_debug_pub.add('ASO_NOTES_INT: Copy_Notes_copy_quote: l_jtf_note_id:          ' || l_jtf_note_id, 1, 'N');
528         END IF;
529 
530     END LOOP;
531 
532     -- End of API body.
533     IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
534       aso_debug_pub.add('ASO_NOTES_INT: Copy_Notes_copy_quote: End Copy_Notes_copy_quote()', 1, 'Y');
535     END IF;
536 
537     -- Standard check of p_commit.
538     IF FND_API.To_Boolean(p_commit) THEN
539         COMMIT WORK;
540     END IF;
541 
542      -- Standard call to get message count and if count is 1, get message info.
543     FND_Msg_Pub.Count_And_Get(
544         p_encoded => FND_API.G_FALSE,
545         p_count   => x_msg_count    ,
546         p_data    => x_msg_data
547     );
548 
549     EXCEPTION
550         WHEN FND_API.G_EXC_ERROR THEN
551             ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
552                 P_API_NAME         => L_API_NAME,
553                 P_PKG_NAME         => G_PKG_NAME,
554                 P_EXCEPTION_LEVEL  => FND_MSG_PUB.G_MSG_LVL_ERROR,
555                 P_PACKAGE_TYPE     => ASO_UTILITY_PVT.G_INT,
556                 P_SQLCODE          => SQLCODE,
557                 P_SQLERRM          => SQLERRM,
558                 X_MSG_COUNT        => X_MSG_COUNT,
559                 X_MSG_DATA         => X_MSG_DATA,
560                 X_RETURN_STATUS    => X_RETURN_STATUS
561             );
562 
563         WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
564             ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
565                 P_API_NAME         => L_API_NAME,
566                 P_PKG_NAME         => G_PKG_NAME,
567                 P_EXCEPTION_LEVEL  => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR,
568                 P_PACKAGE_TYPE     => ASO_UTILITY_PVT.G_INT,
569                 P_SQLCODE          => SQLCODE,
570                 P_SQLERRM          => SQLERRM,
571                 X_MSG_COUNT        => X_MSG_COUNT,
572                 X_MSG_DATA         => X_MSG_DATA,
573                 X_RETURN_STATUS    => X_RETURN_STATUS
574             );
575 
576         WHEN OTHERS THEN
577             ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
578                 P_API_NAME         => L_API_NAME,
579                 P_PKG_NAME         => G_PKG_NAME,
580                 P_EXCEPTION_LEVEL  => ASO_UTILITY_PVT.G_EXC_OTHERS,
581                 P_PACKAGE_TYPE     => ASO_UTILITY_PVT.G_INT,
582                 P_SQLCODE          => SQLCODE,
583                 P_SQLERRM          => SQLERRM,
584                 X_MSG_COUNT        => X_MSG_COUNT,
585                 X_MSG_DATA         => X_MSG_DATA,
586                 X_RETURN_STATUS    => X_RETURN_STATUS
587             );
588 
589 END Copy_Notes_copy_quote;
590 
591 
592 END ASO_NOTES_INT;