DBA Data[Home] [Help]

PACKAGE BODY: APPS.AMS_CT_RULE_PVT

Source


1 PACKAGE BODY AMS_Ct_Rule_PVT as
2 /* $Header: amsvctrb.pls 120.3 2006/05/30 11:09:34 prageorg noship $ */
3 -- ===============================================================
4 -- Start of Comments
5 -- Package name
6 --          AMS_Ct_Rule_PVT
7 --
8 -- Purpose
9 --          Private api created to Update/insert/Delete general
10 --          and object-specific content rules
11 --
12 -- History
13 --    21-mar-2002    jieli       Created.
14 --    10-apr-2002    soagrawa    Added all the comments
15 --    10-apr-2002    soagrawa    Added check_Content_Rules
16 --    29-apr-2002    soagrawa    Modified last_updated_date to last_update_date
17 --    15-jul-2002    soagrawa    Modified check_content_rule to pass source codes to the FFM API.
18 --    29-May-2006    prageorg    Added delivery_mode column. Bug 4896511
19 -- NOTE
20 --
21 -- End of Comments
22 -- ===============================================================
23 
24 
25 G_PKG_NAME CONSTANT VARCHAR2(30):= 'AMS_Ct_Rule_PVT';
26 G_FILE_NAME CONSTANT VARCHAR2(12) := 'amsvctrb.pls';
27 
28 G_USER_ID         NUMBER := FND_GLOBAL.USER_ID;
29 G_LOGIN_ID        NUMBER := FND_GLOBAL.CONC_LOGIN_ID;
30 
31 
32 --===================================================================
33 -- NAME
34 --    Create_Ct_Rule
35 --
36 -- PURPOSE
37 --    Creates the Content Rule.
38 --
39 -- NOTES
40 --
41 -- HISTORY
42 --   21-MAR-2001  JIELI      Created
43 --===================================================================
44 
45 AMS_DEBUG_HIGH_ON CONSTANT boolean := FND_MSG_PUB.CHECK_MSG_LEVEL(FND_MSG_PUB.G_MSG_LVL_DEBUG_HIGH);
46 AMS_DEBUG_LOW_ON CONSTANT boolean := FND_MSG_PUB.CHECK_MSG_LEVEL(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW);
47 AMS_DEBUG_MEDIUM_ON CONSTANT boolean := FND_MSG_PUB.CHECK_MSG_LEVEL(FND_MSG_PUB.G_MSG_LVL_DEBUG_MEDIUM);
48 
49 PROCEDURE Create_Ct_Rule(
50     p_api_version_number         IN   NUMBER,
51     p_init_msg_list              IN   VARCHAR2     := FND_API.G_FALSE,
52     p_commit                     IN   VARCHAR2     := FND_API.G_FALSE,
53     p_validation_level           IN   NUMBER       := FND_API.G_VALID_LEVEL_FULL,
54 
55     x_return_status              OUT NOCOPY  VARCHAR2,
56     x_msg_count                  OUT NOCOPY  NUMBER,
57     x_msg_data                   OUT NOCOPY  VARCHAR2,
58 
59     p_ct_rule_rec                IN   ct_rule_rec_type  := g_miss_ct_rule_rec,
60     x_content_rule_id            OUT NOCOPY  NUMBER
61      )
62 
63  IS
64    L_API_NAME                  CONSTANT VARCHAR2(30) := 'Create_Ct_Rule';
65    L_API_VERSION_NUMBER        CONSTANT NUMBER   := 1.0;
66    l_return_status_full        VARCHAR2(1);
67    l_object_version_number     NUMBER := 1;
68    l_org_id                    NUMBER := FND_API.G_MISS_NUM;
69    l_CONTENT_RULE_ID                  NUMBER;
70    l_dummy       NUMBER;
71 
72    CURSOR c_id IS
73       SELECT AMS_CONTENT_RULES_B_s.NEXTVAL
74       FROM dual;
75 
76    CURSOR c_id_exists (l_id IN NUMBER) IS
77       SELECT 1
78       FROM AMS_CONTENT_RULES_B
79       WHERE CONTENT_RULE_ID = l_id;
80 
81 BEGIN
82       -- Standard Start of API savepoint
83       SAVEPOINT CREATE_Ct_Rule_PVT;
84 
85       -- Standard call to check for call compatibility.
86       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
87                                            p_api_version_number,
88                                            l_api_name,
89                                            G_PKG_NAME)
90       THEN
91           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
92       END IF;
93 
94       -- Initialize message list if p_init_msg_list is set to TRUE.
95       IF FND_API.to_Boolean( p_init_msg_list )
96       THEN
97          FND_MSG_PUB.initialize;
98       END IF;
99 
100       -- Debug Message
101       IF (AMS_DEBUG_HIGH_ON) THEN
102 
103       AMS_UTILITY_PVT.debug_message(G_PKG_NAME||' Private API: ' || l_api_name || 'start');
104       END IF;
105 
106 
107       -- Initialize API return status to SUCCESS
108       x_return_status := FND_API.G_RET_STS_SUCCESS;
109 
110    -- Local variable initialization
111 
112    IF p_ct_rule_rec.CONTENT_RULE_ID IS NULL OR p_ct_rule_rec.CONTENT_RULE_ID = FND_API.g_miss_num THEN
113       LOOP
114          l_dummy := NULL;
115          OPEN c_id;
116          FETCH c_id INTO l_CONTENT_RULE_ID;
117          CLOSE c_id;
118 
119          OPEN c_id_exists(l_CONTENT_RULE_ID);
120          FETCH c_id_exists INTO l_dummy;
121          CLOSE c_id_exists;
122          EXIT WHEN l_dummy IS NULL;
123 
124       END LOOP;
125    END IF;
126 
127       -- Validate Environment
128       IF FND_GLOBAL.User_Id IS NULL
129       THEN
130  AMS_Utility_PVT.Error_Message(p_message_name => 'USER_PROFILE_MISSING');
131           RAISE FND_API.G_EXC_ERROR;
132       END IF;
133 
134       IF ( P_validation_level >= FND_API.G_VALID_LEVEL_FULL)
135       THEN
136           -- Debug message
137           IF (AMS_DEBUG_HIGH_ON) THEN
138 
139           AMS_UTILITY_PVT.debug_message(G_PKG_NAME||' Private API: ' || l_api_name || ' Validate_Ct_Rule');
140           END IF;
141 
142           -- Invoke validation procedures
143           Validate_ct_rule(
144             p_api_version_number     => 1.0,
145             p_init_msg_list    => FND_API.G_FALSE,
146             p_validation_level => p_validation_level,
147             p_validation_mode => JTF_PLSQL_API.g_create,
148             p_ct_rule_rec  =>  p_ct_rule_rec,
149             x_return_status    => x_return_status,
150             x_msg_count        => x_msg_count,
151             x_msg_data         => x_msg_data);
152       END IF;
153 
154       IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
155           RAISE FND_API.G_EXC_ERROR;
156       END IF;
157 
158 
159       -- Debug Message
160       IF (AMS_DEBUG_HIGH_ON) THEN
161 
162       AMS_UTILITY_PVT.debug_message(G_PKG_NAME||' Private API: ' || l_api_name || ' Calling create table handler');
163       END IF;
164 
165       -- Invoke table handler(AMS_CONTENT_RULES_B_PKG.Insert_Row)
166       AMS_CONTENT_RULES_B_PKG.Insert_Row(
167           px_content_rule_id  => l_content_rule_id,
168           p_created_by  => G_USER_ID,
169           p_creation_date  => SYSDATE,
170           p_last_updated_by  => G_USER_ID,
171           p_last_updated_date  => p_ct_rule_rec.last_updated_date,
172           p_last_update_login  => G_LOGIN_ID,
173           px_object_version_number  => l_object_version_number,
174           p_object_type  => p_ct_rule_rec.object_type,
175           p_object_id  => p_ct_rule_rec.object_id,
176           p_sender  => p_ct_rule_rec.sender,
177           p_reply_to  => p_ct_rule_rec.reply_to,
178           p_cover_letter_id  => p_ct_rule_rec.cover_letter_id,
179           p_table_of_content_flag  => p_ct_rule_rec.table_of_content_flag,
180           p_trigger_code  => p_ct_rule_rec.trigger_code,
181           p_enabled_flag  => p_ct_rule_rec.enabled_flag,
182           p_subject => p_ct_rule_rec.subject,
183           p_sender_display_name  => p_ct_rule_rec.sender_display_name, -- anchaudh
184 	  --prageorg 5/29/2006
185           p_delivery_mode => p_ct_rule_rec.delivery_mode
186 	  );
187 
188           x_content_rule_id := l_content_rule_id;
189       IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
190           RAISE FND_API.G_EXC_ERROR;
191       END IF;
192 --
193 -- End of API body
194 --
195 
196       -- Standard check for p_commit
197       IF FND_API.to_Boolean( p_commit )
198       THEN
199          COMMIT WORK;
200       END IF;
201 
202 
203       -- Debug Message
204       IF (AMS_DEBUG_HIGH_ON) THEN
205 
206       AMS_UTILITY_PVT.debug_message(G_PKG_NAME||' Private API: ' || l_api_name || 'end');
207       END IF;
208 
209       -- Standard call to get message count and if count is 1, get message info.
210       FND_MSG_PUB.Count_And_Get
211         (p_count          =>   x_msg_count,
212          p_data           =>   x_msg_data
213       );
214 EXCEPTION
215 
216    WHEN AMS_Utility_PVT.resource_locked THEN
217      x_return_status := FND_API.g_ret_sts_error;
218  AMS_Utility_PVT.Error_Message(p_message_name => 'AMS_API_RESOURCE_LOCKED');
219 
220    WHEN FND_API.G_EXC_ERROR THEN
221      ROLLBACK TO CREATE_Ct_Rule_PVT;
222      x_return_status := FND_API.G_RET_STS_ERROR;
223      -- Standard call to get message count and if count=1, get the message
224      FND_MSG_PUB.Count_And_Get (
225             p_encoded => FND_API.G_FALSE,
226             p_count   => x_msg_count,
227             p_data    => x_msg_data
228      );
229 
230    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
231      ROLLBACK TO CREATE_Ct_Rule_PVT;
232      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
233      -- Standard call to get message count and if count=1, get the message
234      FND_MSG_PUB.Count_And_Get (
235             p_encoded => FND_API.G_FALSE,
236             p_count => x_msg_count,
237             p_data  => x_msg_data
238      );
239 
240    WHEN OTHERS THEN
241      ROLLBACK TO CREATE_Ct_Rule_PVT;
242      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
243      IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
244      THEN
245         FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
246      END IF;
247      -- Standard call to get message count and if count=1, get the message
248      FND_MSG_PUB.Count_And_Get (
249             p_encoded => FND_API.G_FALSE,
250             p_count => x_msg_count,
251             p_data  => x_msg_data
252      );
253 End Create_Ct_Rule;
254 
255 
256 
257 --===================================================================
258 -- NAME
259 --    Update_Ct_Rule
260 --
261 -- PURPOSE
262 --    Updates the Content Rule.
263 --
264 -- NOTES
265 --
266 -- HISTORY
267 --   21-MAR-2001  JIELI      Created
268 --===================================================================
269 
270 
271 PROCEDURE Update_Ct_Rule(
272     p_api_version_number         IN   NUMBER,
273     p_init_msg_list              IN   VARCHAR2     := FND_API.G_FALSE,
274     p_commit                     IN   VARCHAR2     := FND_API.G_FALSE,
275     p_validation_level           IN  NUMBER       := FND_API.G_VALID_LEVEL_FULL,
276 
277     x_return_status              OUT NOCOPY  VARCHAR2,
278     x_msg_count                  OUT NOCOPY  NUMBER,
279     x_msg_data                   OUT NOCOPY  VARCHAR2,
280 
281     p_ct_rule_rec               IN    ct_rule_rec_type,
282     x_object_version_number      OUT NOCOPY  NUMBER
283     )
284 
285  IS
286 
287 CURSOR c_get_ct_rule(content_rule_id NUMBER) IS
288     SELECT *
289     FROM  AMS_CONTENT_RULES_B;
290     -- Hint: Developer need to provide Where clause
291 
292 L_API_NAME                  CONSTANT VARCHAR2(30) := 'Update_Ct_Rule';
293 L_API_VERSION_NUMBER        CONSTANT NUMBER   := 1.0;
294 -- Local Variables
295 l_object_version_number     NUMBER;
296 l_CONTENT_RULE_ID    NUMBER;
297 l_ref_ct_rule_rec  c_get_Ct_Rule%ROWTYPE ;
298 l_tar_ct_rule_rec  AMS_Ct_Rule_PVT.ct_rule_rec_type := P_ct_rule_rec;
299 l_rowid  ROWID;
300 
301  BEGIN
302       -- Standard Start of API savepoint
303       SAVEPOINT UPDATE_Ct_Rule_PVT;
304 
305       -- Standard call to check for call compatibility.
306       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
307                                            p_api_version_number,
308                                            l_api_name,
309                                            G_PKG_NAME)
310       THEN
311           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
312       END IF;
313 
314       -- Initialize message list if p_init_msg_list is set to TRUE.
315       IF FND_API.to_Boolean( p_init_msg_list )
316       THEN
317          FND_MSG_PUB.initialize;
318       END IF;
319 
320       -- Debug Message
321       IF (AMS_DEBUG_HIGH_ON) THEN
322 
323       AMS_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'start');
324       END IF;
325 
326 
327       -- Initialize API return status to SUCCESS
328       x_return_status := FND_API.G_RET_STS_SUCCESS;
329 
330       -- Debug Message
331       IF (AMS_DEBUG_HIGH_ON) THEN
332 
333       AMS_UTILITY_PVT.debug_message('Private API: - Open Cursor to Select');
334       END IF;
335 
336 /*
337       OPEN c_get_Ct_Rule( l_tar_ct_rule_rec.content_rule_id);
338 
339       FETCH c_get_Ct_Rule INTO l_ref_ct_rule_rec  ;
340 
341        If ( c_get_Ct_Rule%NOTFOUND) THEN
342   AMS_Utility_PVT.Error_Message(p_message_name => 'API_MISSING_UPDATE_TARGET',
343    p_token_name   => 'INFO',
344  p_token_value  => 'Ct_Rule') ;
345            RAISE FND_API.G_EXC_ERROR;
346        END IF;
347        -- Debug Message
348        IF (AMS_DEBUG_HIGH_ON) THEN
349 
350        AMS_UTILITY_PVT.debug_message('Private API: - Close Cursor');
351        END IF;
352        CLOSE     c_get_Ct_Rule;
353 */
354 
355 
356       If (l_tar_ct_rule_rec.object_version_number is NULL or
357           l_tar_ct_rule_rec.object_version_number = FND_API.G_MISS_NUM ) Then
358   AMS_Utility_PVT.Error_Message(p_message_name => 'API_VERSION_MISSING',
359    p_token_name   => 'COLUMN',
360  p_token_value  => 'Last_Update_Date') ;
361           raise FND_API.G_EXC_ERROR;
362       End if;
363       -- Check Whether record has been changed by someone else
364       If (l_tar_ct_rule_rec.object_version_number <> l_ref_ct_rule_rec.object_version_number) Then
365   AMS_Utility_PVT.Error_Message(p_message_name => 'API_RECORD_CHANGED',
366    p_token_name   => 'INFO',
367  p_token_value  => 'Ct_Rule') ;
368           raise FND_API.G_EXC_ERROR;
369       End if;
370       IF ( P_validation_level >= FND_API.G_VALID_LEVEL_FULL)
371       THEN
372           -- Debug message
373           IF (AMS_DEBUG_HIGH_ON) THEN
374 
375           AMS_UTILITY_PVT.debug_message('Private API: Validate_Ct_Rule');
376           END IF;
377 
378           -- Invoke validation procedures
379           Validate_ct_rule(
380             p_api_version_number     => 1.0,
381             p_init_msg_list    => FND_API.G_FALSE,
382             p_validation_level => p_validation_level,
383             p_validation_mode => JTF_PLSQL_API.g_update,
384             p_ct_rule_rec  =>  p_ct_rule_rec,
385             x_return_status    => x_return_status,
386             x_msg_count        => x_msg_count,
387             x_msg_data         => x_msg_data);
388       END IF;
389 
390       IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
391           RAISE FND_API.G_EXC_ERROR;
392       END IF;
393 
394 
395       -- Debug Message
396       --IF (AMS_DEBUG_HIGH_ON) THENAMS_UTILITY_PVT.debug_message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'Private API: Calling update table handler');END IF;
397       IF (AMS_DEBUG_HIGH_ON) THEN
398 
399       AMS_UTILITY_PVT.debug_message('Private API: Calling update table handler');
400       END IF;
401 
402       -- Invoke table handler(AMS_CONTENT_RULES_B_PKG.Update_Row)
403       AMS_CONTENT_RULES_B_PKG.Update_Row(
404           p_content_rule_id  => p_ct_rule_rec.content_rule_id,
405           p_created_by  => G_USER_ID,
406           p_creation_date  => SYSDATE,
407           p_last_updated_by  => G_USER_ID,
408           p_last_updated_date  => p_ct_rule_rec.last_updated_date,
409           p_last_update_login  => G_LOGIN_ID,
410           p_object_version_number  => p_ct_rule_rec.object_version_number,
411           p_object_type  => p_ct_rule_rec.object_type,
412           p_object_id  => p_ct_rule_rec.object_id,
413           p_sender  => p_ct_rule_rec.sender,
414           p_reply_to  => p_ct_rule_rec.reply_to,
415           p_cover_letter_id  => p_ct_rule_rec.cover_letter_id,
416           p_table_of_content_flag  => p_ct_rule_rec.table_of_content_flag,
417           p_trigger_code  => p_ct_rule_rec.trigger_code,
418           p_enabled_flag  => p_ct_rule_rec.enabled_flag,
419           p_subject => p_ct_rule_rec.subject,
420           p_sender_display_name  => p_ct_rule_rec.sender_display_name, --anchaudh
421 	  --prageorg 5/29/2006
422           p_delivery_mode => p_ct_rule_rec.delivery_mode
423 	  );
424 
425           x_object_version_number := p_ct_rule_rec.object_version_number + 1;
426 
427       --
428       -- End of API body.
429       --
430 
431       -- Standard check for p_commit
432       IF FND_API.to_Boolean( p_commit )
433       THEN
434          COMMIT WORK;
435       END IF;
436 
437 
438       -- Debug Message
439       IF (AMS_DEBUG_HIGH_ON) THEN
440 
441       AMS_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'end');
442       END IF;
443 
444       -- Standard call to get message count and if count is 1, get message info.
445       FND_MSG_PUB.Count_And_Get
446         (p_count          =>   x_msg_count,
447          p_data           =>   x_msg_data
448       );
449 EXCEPTION
450 
451    WHEN AMS_Utility_PVT.resource_locked THEN
452      x_return_status := FND_API.g_ret_sts_error;
453  AMS_Utility_PVT.Error_Message(p_message_name => 'AMS_API_RESOURCE_LOCKED');
454 
455    WHEN FND_API.G_EXC_ERROR THEN
456      ROLLBACK TO UPDATE_Ct_Rule_PVT;
457      x_return_status := FND_API.G_RET_STS_ERROR;
458      -- Standard call to get message count and if count=1, get the message
459      FND_MSG_PUB.Count_And_Get (
460             p_encoded => FND_API.G_FALSE,
461             p_count   => x_msg_count,
462             p_data    => x_msg_data
463      );
464 
465    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
466      ROLLBACK TO UPDATE_Ct_Rule_PVT;
467      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
468      -- Standard call to get message count and if count=1, get the message
469      FND_MSG_PUB.Count_And_Get (
470             p_encoded => FND_API.G_FALSE,
471             p_count => x_msg_count,
472             p_data  => x_msg_data
473      );
474 
475    WHEN OTHERS THEN
476      ROLLBACK TO UPDATE_Ct_Rule_PVT;
477      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
478      IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
479      THEN
480         FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
481      END IF;
482      -- Standard call to get message count and if count=1, get the message
483      FND_MSG_PUB.Count_And_Get (
484             p_encoded => FND_API.G_FALSE,
485             p_count => x_msg_count,
486             p_data  => x_msg_data
487      );
488 End Update_Ct_Rule;
489 
490 
491 --===================================================================
492 -- NAME
493 --    Delete_Ct_Rule
494 --
495 -- PURPOSE
496 --    Deletes the Content Rule.
497 --
498 -- NOTES
499 --
500 -- HISTORY
501 --   21-MAR-2001  JIELI      Created
502 --===================================================================
503 
504 
505 PROCEDURE Delete_Ct_Rule(
506     p_api_version_number         IN   NUMBER,
507     p_init_msg_list              IN   VARCHAR2     := FND_API.G_FALSE,
508     p_commit                     IN   VARCHAR2     := FND_API.G_FALSE,
509     p_validation_level           IN   NUMBER       := FND_API.G_VALID_LEVEL_FULL,
510     x_return_status              OUT NOCOPY  VARCHAR2,
511     x_msg_count                  OUT NOCOPY  NUMBER,
512     x_msg_data                   OUT NOCOPY  VARCHAR2,
513     p_content_rule_id                   IN  NUMBER,
514     p_object_version_number      IN   NUMBER
515     )
516 
517  IS
518 L_API_NAME                  CONSTANT VARCHAR2(30) := 'Delete_Ct_Rule';
519 L_API_VERSION_NUMBER        CONSTANT NUMBER   := 1.0;
520 l_object_version_number     NUMBER;
521 
522  BEGIN
523       -- Standard Start of API savepoint
524       SAVEPOINT DELETE_Ct_Rule_PVT;
525 
526       -- Standard call to check for call compatibility.
527       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
528                                            p_api_version_number,
529                                            l_api_name,
530                                            G_PKG_NAME)
531       THEN
532           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
533       END IF;
534 
535       -- Initialize message list if p_init_msg_list is set to TRUE.
536       IF FND_API.to_Boolean( p_init_msg_list )
537       THEN
538          FND_MSG_PUB.initialize;
539       END IF;
540 
541       -- Debug Message
542       IF (AMS_DEBUG_HIGH_ON) THEN
543 
544       AMS_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'start');
545       END IF;
546 
547 
548       -- Initialize API return status to SUCCESS
549       x_return_status := FND_API.G_RET_STS_SUCCESS;
550 
551       --
552       -- Api body
553       --
554       -- Debug Message
555       IF (AMS_DEBUG_HIGH_ON) THEN
556 
557       AMS_UTILITY_PVT.debug_message( 'Private API: Calling delete table handler');
558       END IF;
559 
560       -- Invoke table handler(AMS_CONTENT_RULES_B_PKG.Delete_Row)
561       AMS_CONTENT_RULES_B_PKG.Delete_Row(
562           p_CONTENT_RULE_ID  => p_CONTENT_RULE_ID);
563       --
564       -- End of API body
565       --
566 
567       -- Standard check for p_commit
568       IF FND_API.to_Boolean( p_commit )
569       THEN
570          COMMIT WORK;
571       END IF;
572 
573 
574       -- Debug Message
575       IF (AMS_DEBUG_HIGH_ON) THEN
576 
577       AMS_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'end');
578       END IF;
579 
580       -- Standard call to get message count and if count is 1, get message info.
581       FND_MSG_PUB.Count_And_Get
582         (p_count          =>   x_msg_count,
583          p_data           =>   x_msg_data
584       );
585 EXCEPTION
586 
587    WHEN AMS_Utility_PVT.resource_locked THEN
588      x_return_status := FND_API.g_ret_sts_error;
589  AMS_Utility_PVT.Error_Message(p_message_name => 'AMS_API_RESOURCE_LOCKED');
590 
591    WHEN FND_API.G_EXC_ERROR THEN
592      ROLLBACK TO DELETE_Ct_Rule_PVT;
593      x_return_status := FND_API.G_RET_STS_ERROR;
594      -- Standard call to get message count and if count=1, get the message
595      FND_MSG_PUB.Count_And_Get (
596             p_encoded => FND_API.G_FALSE,
597             p_count   => x_msg_count,
598             p_data    => x_msg_data
599      );
600 
601    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
602      ROLLBACK TO DELETE_Ct_Rule_PVT;
603      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
604      -- Standard call to get message count and if count=1, get the message
605      FND_MSG_PUB.Count_And_Get (
606             p_encoded => FND_API.G_FALSE,
607             p_count => x_msg_count,
608             p_data  => x_msg_data
609      );
610 
611    WHEN OTHERS THEN
612      ROLLBACK TO DELETE_Ct_Rule_PVT;
613      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
614      IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
615      THEN
616         FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
617      END IF;
618      -- Standard call to get message count and if count=1, get the message
619      FND_MSG_PUB.Count_And_Get (
620             p_encoded => FND_API.G_FALSE,
621             p_count => x_msg_count,
622             p_data  => x_msg_data
623      );
624 End Delete_Ct_Rule;
625 
626 
627 
628 --===================================================================
629 -- NAME
630 --    Lock_Ct_Rule
631 --
632 -- PURPOSE
633 --    Locks the Content Rule.
634 --
635 -- NOTES
636 --
637 -- HISTORY
638 --   21-MAR-2001  JIELI      Created
639 --===================================================================
640 
641 
642 PROCEDURE Lock_Ct_Rule(
643     p_api_version_number         IN   NUMBER,
644     p_init_msg_list              IN   VARCHAR2     := FND_API.G_FALSE,
645 
646     x_return_status              OUT NOCOPY  VARCHAR2,
647     x_msg_count                  OUT NOCOPY  NUMBER,
648     x_msg_data                   OUT NOCOPY  VARCHAR2,
649 
650     p_content_rule_id                   IN  NUMBER,
651     p_object_version             IN  NUMBER
652     )
653 
654  IS
655 L_API_NAME                  CONSTANT VARCHAR2(30) := 'Lock_Ct_Rule';
656 L_API_VERSION_NUMBER        CONSTANT NUMBER   := 1.0;
657 L_FULL_NAME                 CONSTANT VARCHAR2(60) := g_pkg_name ||'.'|| l_api_name;
658 l_CONTENT_RULE_ID                  NUMBER;
659 
660 CURSOR c_Ct_Rule IS
661    SELECT CONTENT_RULE_ID
662    FROM AMS_CONTENT_RULES_B
663    WHERE CONTENT_RULE_ID = p_CONTENT_RULE_ID
664    AND object_version_number = p_object_version
665    FOR UPDATE NOWAIT;
666 
667 BEGIN
668 
669       -- Debug Message
670       IF (AMS_DEBUG_HIGH_ON) THEN
671 
672       AMS_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'start');
673       END IF;
674 
675       -- Initialize message list if p_init_msg_list is set to TRUE.
676       IF FND_API.to_Boolean( p_init_msg_list )
677       THEN
678          FND_MSG_PUB.initialize;
679       END IF;
680 
681       -- Standard call to check for call compatibility.
682       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
683                                            p_api_version_number,
684                                            l_api_name,
685                                            G_PKG_NAME)
686       THEN
687           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
688       END IF;
689 
690 
691       -- Initialize API return status to SUCCESS
692       x_return_status := FND_API.G_RET_STS_SUCCESS;
693 
694 
695 ------------------------ lock -------------------------
696 
697   IF (AMS_DEBUG_HIGH_ON) THEN
698 
699 
700 
701   AMS_Utility_PVT.debug_message(l_full_name||': start');
702 
703   END IF;
704   OPEN c_Ct_Rule;
705 
706   FETCH c_Ct_Rule INTO l_CONTENT_RULE_ID;
707 
708   IF (c_Ct_Rule%NOTFOUND) THEN
709     CLOSE c_Ct_Rule;
710     IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
711        FND_MESSAGE.set_name('AMS', 'AMS_API_RECORD_NOT_FOUND');
712        FND_MSG_PUB.add;
713     END IF;
714     RAISE FND_API.g_exc_error;
715   END IF;
716 
717   CLOSE c_Ct_Rule;
718 
719  -------------------- finish --------------------------
720   FND_MSG_PUB.count_and_get(
721     p_encoded => FND_API.g_false,
722     p_count   => x_msg_count,
723     p_data    => x_msg_data);
724   IF (AMS_DEBUG_HIGH_ON) THEN
725 
726   AMS_Utility_PVT.debug_message(l_full_name ||': end');
727   END IF;
728 EXCEPTION
729 
730    WHEN AMS_Utility_PVT.resource_locked THEN
731      x_return_status := FND_API.g_ret_sts_error;
732  AMS_Utility_PVT.Error_Message(p_message_name => 'AMS_API_RESOURCE_LOCKED');
733 
734    WHEN FND_API.G_EXC_ERROR THEN
735      ROLLBACK TO LOCK_Ct_Rule_PVT;
736      x_return_status := FND_API.G_RET_STS_ERROR;
737      -- Standard call to get message count and if count=1, get the message
738      FND_MSG_PUB.Count_And_Get (
739             p_encoded => FND_API.G_FALSE,
740             p_count   => x_msg_count,
741             p_data    => x_msg_data
742      );
743 
744    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
745      ROLLBACK TO LOCK_Ct_Rule_PVT;
746      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
747      -- Standard call to get message count and if count=1, get the message
748      FND_MSG_PUB.Count_And_Get (
749             p_encoded => FND_API.G_FALSE,
750             p_count => x_msg_count,
751             p_data  => x_msg_data
752      );
753 
754    WHEN OTHERS THEN
755      ROLLBACK TO LOCK_Ct_Rule_PVT;
756      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
757      IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
758      THEN
759         FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
760      END IF;
761      -- Standard call to get message count and if count=1, get the message
762      FND_MSG_PUB.Count_And_Get (
763             p_encoded => FND_API.G_FALSE,
764             p_count => x_msg_count,
765             p_data  => x_msg_data
766      );
767 End Lock_Ct_Rule;
768 
769 
770 --===================================================================
771 -- NAME
772 --    check_rule_unique
773 --
774 -- PURPOSE
775 --    Checks the uniqueness of combination of object type, trigger type. object id
776 --
777 -- NOTES
778 --
779 -- HISTORY
780 --   10-APR-2001  SOAGRAWA   Created
781 --===================================================================
782 
783 
784 
785 FUNCTION check_rule_unique(
786       p_object_type  IN    VARCHAR2
787     , p_trigger_code IN    VARCHAR2
788     , p_object_id    IN    NUMBER
789     , p_enabled_flag IN    VARCHAR2)
790 RETURN VARCHAR2
791 IS
792    CURSOR c_rule_det
793    IS SELECT 1
794       FROM   ams_content_rules_vl
795       WHERE  object_type = p_object_type
796       AND    trigger_code = p_trigger_code
797       AND    object_id = p_object_id
798       AND    enabled_flag = p_enabled_flag;
799 
800    CURSOR c_rule_det_null
801    IS SELECT 1
802       FROM   ams_content_rules_vl
803       WHERE  object_type = p_object_type
804       AND    trigger_code = p_trigger_code
805       AND    object_id IS null;
806 
807    l_dummy  NUMBER ;
808 BEGIN
809 
810    IF (AMS_DEBUG_HIGH_ON) THEN
811 
812 
813 
814    AMS_UTILITY_PVT.debug_message(G_PKG_NAME||' Private API: check_rule_unique start');
815 
816    END IF;
817 
818    IF p_object_id IS null
819    THEN
820       IF (AMS_DEBUG_HIGH_ON) THEN
821 
822       AMS_UTILITY_PVT.debug_message(G_PKG_NAME||' Private API: check_rule_unique : is null');
823       END IF;
824       OPEN c_rule_det_null ;
825       FETCH c_rule_det_null INTO l_dummy ;
826       CLOSE c_rule_det_null ;
827    ELSE
828       IF (AMS_DEBUG_HIGH_ON) THEN
829 
830       AMS_UTILITY_PVT.debug_message(G_PKG_NAME||' Private API: check_rule_unique : is not null');
831       END IF;
832       OPEN c_rule_det ;
833       FETCH c_rule_det INTO l_dummy ;
834       CLOSE c_rule_det ;
835    END IF;
836 
837    IF l_dummy IS NULL THEN
838       IF (AMS_DEBUG_HIGH_ON) THEN
839 
840       AMS_UTILITY_PVT.debug_message(G_PKG_NAME||' Private API: check_rule_unique : did not find anything');
841       END IF;
842       RETURN FND_API.g_true ;
843    ELSE
844       IF (AMS_DEBUG_HIGH_ON) THEN
845 
846       AMS_UTILITY_PVT.debug_message(G_PKG_NAME||' Private API: check_rule_unique : found something');
847       END IF;
848       RETURN FND_API.g_false;
849    END IF;
850 
851 END check_rule_unique ;
852 
853 
854 --===================================================================
855 -- NAME
856 --    check_ct_rule_uk_items
857 --
858 -- PURPOSE
859 --    Checks the unique items for their uniqueness
860 --
861 -- NOTES
862 --
863 -- HISTORY
864 --   21-MAR-2001  JIELI      Created
865 --===================================================================
866 
867 
868 
869 PROCEDURE check_ct_rule_uk_items(
870     p_ct_rule_rec               IN   ct_rule_rec_type,
871     p_validation_mode            IN  VARCHAR2 := JTF_PLSQL_API.g_create,
872     x_return_status              OUT NOCOPY VARCHAR2)
873 IS
874 l_valid_flag  VARCHAR2(1);
875 l_sql         VARCHAR2(400);
876 BEGIN
877       IF (AMS_DEBUG_HIGH_ON) THEN
878 
879       AMS_UTILITY_PVT.debug_message(G_PKG_NAME||' Private API: check_ct_rule_uk_items start');
880       END IF;
881 
882       x_return_status := FND_API.g_ret_sts_success;
883       IF p_validation_mode = JTF_PLSQL_API.g_create THEN
884          l_valid_flag := AMS_Utility_PVT.check_uniqueness(
885          'AMS_CONTENT_RULES_B',
886          'CONTENT_RULE_ID = ''' || p_ct_rule_rec.CONTENT_RULE_ID ||''''
887          );
888       ELSE
889          l_valid_flag := AMS_Utility_PVT.check_uniqueness(
890          'AMS_CONTENT_RULES_B',
891          'CONTENT_RULE_ID = ''' || p_ct_rule_rec.CONTENT_RULE_ID ||
892          ''' AND CONTENT_RULE_ID <> ' || p_ct_rule_rec.CONTENT_RULE_ID
893          );
894       END IF;
895 
896       IF p_validation_mode = JTF_PLSQL_API.g_create THEN
897          IF (AMS_DEBUG_HIGH_ON) THEN
898 
899          AMS_UTILITY_PVT.debug_message(G_PKG_NAME||' Private API: check_ct_rule_uk_items before unique check');
900          END IF;
901          l_sql :=  ' WHERE OBJECT_TYPE <> ''' || p_ct_rule_rec.OBJECT_TYPE || '''';
902          l_sql := l_sql ||   ' AND TRIGGER_CODE <>''' || p_ct_rule_rec.TRIGGER_CODE || '''';
903          IF p_ct_rule_rec.object_id IS null
904          THEN l_sql := l_sql || ' AND OBJECT_ID IS NULL';
905          ELSE l_sql := l_sql || ' AND OBJECT_ID <> '||p_ct_rule_rec.object_id;
906          END IF;
907 
908          IF (AMS_DEBUG_HIGH_ON) THEN
909 
910 
911 
912          AMS_UTILITY_PVT.debug_message(l_sql);
913 
914          END IF;
915 
916          /*
917          l_valid_flag := AMS_Utility_PVT.check_uniqueness(
918          'AMS_CONTENT_RULES_B',
919          l_sql
920          );
921 
922          IF l_valid_flag = FND_API.g_false
923          */
924          IF FND_API.G_FALSE = check_rule_unique(
925                                            p_ct_rule_rec.object_type
926                                            , p_ct_rule_rec.trigger_code
927                                            , p_ct_rule_rec.object_id
928                                            , p_ct_rule_rec.enabled_flag
929                                            )
930          THEN
931             AMS_Utility_PVT.Error_Message('AMS_CONR_ONLY_ONE');
932             x_return_status := FND_API.g_ret_sts_error;
933             RAISE FND_API.g_exc_error;
934          END IF ;
935       END IF;
936       IF (AMS_DEBUG_HIGH_ON) THEN
937 
938       AMS_UTILITY_PVT.debug_message(G_PKG_NAME||' Private API: check_ct_rule_uk_items after unique check');
939       END IF;
940 
941       IF l_valid_flag = FND_API.g_false THEN
942          AMS_Utility_PVT.Error_Message(p_message_name => 'AMS_CONTENT_RULE_ID_DUPLICATE');
943          x_return_status := FND_API.g_ret_sts_error;
944          RETURN;
945       END IF;
946 
947 END check_ct_rule_uk_items;
948 
949 
950 
951 
952 
953 
954 --===================================================================
955 -- NAME
956 --    check_ct_rule_req_items
957 --
958 -- PURPOSE
959 --    Checks the required items for their existence
960 --
961 -- NOTES
962 --
963 -- HISTORY
964 --   21-MAR-2001  JIELI      Created
965 --===================================================================
966 
967 PROCEDURE check_ct_rule_req_items(
968     p_ct_rule_rec               IN  ct_rule_rec_type,
969     p_validation_mode IN VARCHAR2 := JTF_PLSQL_API.g_create,
970     x_return_status            OUT NOCOPY VARCHAR2
971 )
972 IS
973 BEGIN
974    x_return_status := FND_API.g_ret_sts_success;
975    IF p_validation_mode = JTF_PLSQL_API.g_create THEN
976 
977 
978       IF p_ct_rule_rec.object_type = FND_API.g_miss_char OR p_ct_rule_rec.object_type IS NULL THEN
979          FND_MESSAGE.set_name('AMS', 'AMS_NO_OBJECT_TYPE');
980          FND_MSG_PUB.Add;
981          x_return_status := FND_API.g_ret_sts_error;
982          RETURN;
983       END IF;
984 
985       IF p_ct_rule_rec.trigger_code = FND_API.g_miss_char OR p_ct_rule_rec.trigger_code IS NULL THEN
986          FND_MESSAGE.set_name('AMS', 'AMS_NO_TRIGGER_CODE');
987          FND_MSG_PUB.Add;
988          x_return_status := FND_API.g_ret_sts_error;
989          RETURN;
990       END IF;
991 
992       IF p_ct_rule_rec.cover_letter_id = FND_API.g_miss_num OR p_ct_rule_rec.cover_letter_id IS NULL THEN
993          FND_MESSAGE.set_name('AMS', 'AMS_NO_COVER_LETTER_ID');
994          FND_MSG_PUB.Add;
995 
996          x_return_status := FND_API.g_ret_sts_error;
997          RETURN;
998       END IF;
999 
1000    ELSE
1001 
1002 
1003       IF p_ct_rule_rec.object_type IS NULL THEN
1004          FND_MESSAGE.set_name('AMS', 'AMS_NO_OBJECT_TYPE');
1005          FND_MSG_PUB.Add;
1006          x_return_status := FND_API.g_ret_sts_error;
1007          RETURN;
1008       END IF;
1009 
1010       IF p_ct_rule_rec.trigger_code IS NULL THEN
1011          FND_MESSAGE.set_name('AMS', 'AMS_NO_TRIGGER_CODE');
1012          FND_MSG_PUB.Add;
1013          x_return_status := FND_API.g_ret_sts_error;
1014          RETURN;
1015       END IF;
1016 
1017       IF p_ct_rule_rec.cover_letter_id IS NULL THEN
1018          FND_MESSAGE.set_name('AMS', 'AMS_NO_COVER_LETTER_ID');
1019          FND_MSG_PUB.Add;
1020          x_return_status := FND_API.g_ret_sts_error;
1021          RETURN;
1022       END IF;
1023 
1024    END IF;
1025 
1026 END check_ct_rule_req_items;
1027 
1028 
1029 
1030 --===================================================================
1031 -- NAME
1032 --    check_ct_rule_FK_items
1033 --
1034 -- PURPOSE
1035 --    Checks the foreign key items for their correctness
1036 --
1037 -- NOTES
1038 --
1039 -- HISTORY
1040 --   21-MAR-2001  JIELI      Created
1041 --===================================================================
1042 
1043 
1044 PROCEDURE check_ct_rule_FK_items(
1045     p_ct_rule_rec IN ct_rule_rec_type,
1046     x_return_status OUT NOCOPY VARCHAR2
1047 )
1048 IS
1049 BEGIN
1050    x_return_status := FND_API.g_ret_sts_success;
1051 
1052    -- Enter custom code here
1053 
1054 END check_ct_rule_FK_items;
1055 
1056 PROCEDURE check_ct_rule_Lookup_items(
1057     p_ct_rule_rec IN ct_rule_rec_type,
1058     x_return_status OUT NOCOPY VARCHAR2
1059 )
1060 IS
1061 BEGIN
1062    x_return_status := FND_API.g_ret_sts_success;
1063 
1064    -- Enter custom code here
1065 
1066 END check_ct_rule_Lookup_items;
1067 
1068 
1069 --===================================================================
1070 -- NAME
1071 --    Check_ct_rule_Items
1072 --
1073 -- PURPOSE
1074 --    Checks the items of the content rule record
1075 --
1076 -- NOTES
1077 --
1078 -- HISTORY
1079 --   21-MAR-2001  JIELI      Created
1080 --===================================================================
1081 
1082 PROCEDURE Check_ct_rule_Items (
1083     P_ct_rule_rec     IN    ct_rule_rec_type,
1084     p_validation_mode  IN    VARCHAR2,
1085     x_return_status    OUT NOCOPY   VARCHAR2
1086     )
1087 IS
1088 BEGIN
1089 
1090    -- Check Items Uniqueness API calls
1091 
1092    check_ct_rule_uk_items(
1093       p_ct_rule_rec => p_ct_rule_rec,
1094       p_validation_mode => p_validation_mode,
1095       x_return_status => x_return_status);
1096    IF x_return_status <> FND_API.g_ret_sts_success THEN
1097       RETURN;
1098    END IF;
1099 
1100    -- Check Items Required/NOT NULL API calls
1101 
1102    check_ct_rule_req_items(
1103       p_ct_rule_rec => p_ct_rule_rec,
1104       p_validation_mode => p_validation_mode,
1105       x_return_status => x_return_status);
1106    IF x_return_status <> FND_API.g_ret_sts_success THEN
1107       RETURN;
1108    END IF;
1109    -- Check Items Foreign Keys API calls
1110 
1111    check_ct_rule_FK_items(
1112       p_ct_rule_rec => p_ct_rule_rec,
1113       x_return_status => x_return_status);
1114    IF x_return_status <> FND_API.g_ret_sts_success THEN
1115       RETURN;
1116    END IF;
1117    -- Check Items Lookups
1118 
1119    check_ct_rule_Lookup_items(
1120       p_ct_rule_rec => p_ct_rule_rec,
1121       x_return_status => x_return_status);
1122    IF x_return_status <> FND_API.g_ret_sts_success THEN
1123       RETURN;
1124    END IF;
1125 
1126 END Check_ct_rule_Items;
1127 
1128 
1129 
1130 --===================================================================
1131 -- NAME
1132 --    Complete_ct_rule_Rec
1133 --
1134 -- PURPOSE
1135 --    Completes the content rule record
1136 --
1137 -- NOTES
1138 --
1139 -- HISTORY
1140 --   21-MAR-2001  JIELI      Created
1141 --===================================================================
1142 
1143 
1144 PROCEDURE Complete_ct_rule_Rec (
1145    p_ct_rule_rec IN ct_rule_rec_type,
1146    x_complete_rec OUT NOCOPY ct_rule_rec_type)
1147 IS
1148    l_return_status  VARCHAR2(1);
1149 
1150    CURSOR c_complete IS
1151       SELECT *
1152       FROM ams_content_rules_b
1153       WHERE content_rule_id = p_ct_rule_rec.content_rule_id;
1154    l_ct_rule_rec c_complete%ROWTYPE;
1155 BEGIN
1156    x_complete_rec := p_ct_rule_rec;
1157 
1158 
1159    OPEN c_complete;
1160    FETCH c_complete INTO l_ct_rule_rec;
1161    CLOSE c_complete;
1162 
1163    -- content_rule_id
1164    IF p_ct_rule_rec.content_rule_id = FND_API.g_miss_num THEN
1165       x_complete_rec.content_rule_id := l_ct_rule_rec.content_rule_id;
1166    END IF;
1167 
1168    -- created_by
1169    IF p_ct_rule_rec.created_by = FND_API.g_miss_num THEN
1170       x_complete_rec.created_by := l_ct_rule_rec.created_by;
1171    END IF;
1172 
1173    -- creation_date
1174    IF p_ct_rule_rec.creation_date = FND_API.g_miss_date THEN
1175       x_complete_rec.creation_date := l_ct_rule_rec.creation_date;
1176    END IF;
1177 
1178    -- last_updated_by
1179    IF p_ct_rule_rec.last_updated_by = FND_API.g_miss_num THEN
1180       x_complete_rec.last_updated_by := l_ct_rule_rec.last_updated_by;
1181    END IF;
1182 
1183    -- last_updated_date
1184    IF p_ct_rule_rec.last_updated_date = FND_API.g_miss_date THEN
1185       x_complete_rec.last_updated_date := l_ct_rule_rec.last_update_date;
1186    END IF;
1187 
1188    -- last_update_login
1189    IF p_ct_rule_rec.last_update_login = FND_API.g_miss_num THEN
1190       x_complete_rec.last_update_login := l_ct_rule_rec.last_update_login;
1191    END IF;
1192 
1193    -- object_version_number
1194    IF p_ct_rule_rec.object_version_number = FND_API.g_miss_num THEN
1195       x_complete_rec.object_version_number := l_ct_rule_rec.object_version_number;
1196    END IF;
1197 
1198    -- object_type
1199    IF p_ct_rule_rec.object_type = FND_API.g_miss_char THEN
1200       x_complete_rec.object_type := l_ct_rule_rec.object_type;
1201    END IF;
1202 
1203    -- object_id
1204    IF p_ct_rule_rec.object_id = FND_API.g_miss_num THEN
1205       x_complete_rec.object_id := l_ct_rule_rec.object_id;
1206    END IF;
1207 
1208    -- sender
1209    IF p_ct_rule_rec.sender = FND_API.g_miss_char THEN
1210       x_complete_rec.sender := l_ct_rule_rec.sender;
1211    END IF;
1212 
1213    -- reply_to
1214    IF p_ct_rule_rec.reply_to = FND_API.g_miss_char THEN
1215       x_complete_rec.reply_to := l_ct_rule_rec.reply_to;
1216    END IF;
1217 
1218    -- cover_letter_id
1219    IF p_ct_rule_rec.cover_letter_id = FND_API.g_miss_num THEN
1220       x_complete_rec.cover_letter_id := l_ct_rule_rec.cover_letter_id;
1221    END IF;
1222 
1223    -- table_of_content_flag
1224    IF p_ct_rule_rec.table_of_content_flag = FND_API.g_miss_char THEN
1225       x_complete_rec.table_of_content_flag := l_ct_rule_rec.table_of_content_flag;
1226    END IF;
1227 
1228    -- trigger_code
1229    IF p_ct_rule_rec.trigger_code = FND_API.g_miss_char THEN
1230       x_complete_rec.trigger_code := l_ct_rule_rec.trigger_code;
1231    END IF;
1232 
1233    -- enabled_flag
1234    IF p_ct_rule_rec.enabled_flag = FND_API.g_miss_char THEN
1235       x_complete_rec.enabled_flag := l_ct_rule_rec.enabled_flag;
1236    END IF;
1237    -- Note: Developers need to modify the procedure
1238    -- to handle any business specific requirements.
1239 
1240     -- sender_display_name : anchaudh
1241    IF p_ct_rule_rec.sender_display_name = FND_API.g_miss_char THEN
1242       x_complete_rec.sender_display_name := l_ct_rule_rec.sender_display_name;
1243    END IF;
1244 
1245    -- delivery_mode prageorg 5/29/2006
1246    IF p_ct_rule_rec.delivery_mode = FND_API.g_miss_char THEN
1247       x_complete_rec.delivery_mode := l_ct_rule_rec.delivery_mode;
1248    END IF;
1249 
1250 END Complete_ct_rule_Rec;
1251 
1252 
1253 
1254 --===================================================================
1255 -- NAME
1256 --    Validate_ct_rule
1257 --
1258 -- PURPOSE
1259 --    Validates the content rule record
1260 --
1261 -- NOTES
1262 --
1263 -- HISTORY
1264 --   21-MAR-2001  JIELI      Created
1265 --===================================================================
1266 
1267 
1268 PROCEDURE Validate_ct_rule(
1269     p_api_version_number         IN   NUMBER,
1270     p_init_msg_list              IN   VARCHAR2     := FND_API.G_FALSE,
1271     p_validation_level           IN   NUMBER := FND_API.G_VALID_LEVEL_FULL,
1272     p_ct_rule_rec               IN   ct_rule_rec_type,
1273     p_validation_mode            IN    VARCHAR2,
1274     x_return_status              OUT NOCOPY  VARCHAR2,
1275     x_msg_count                  OUT NOCOPY  NUMBER,
1276     x_msg_data                   OUT NOCOPY  VARCHAR2
1277     )
1278  IS
1279 L_API_NAME                  CONSTANT VARCHAR2(30) := 'Validate_Ct_Rule';
1280 L_API_VERSION_NUMBER        CONSTANT NUMBER   := 1.0;
1281 l_object_version_number     NUMBER;
1282 l_ct_rule_rec  AMS_Ct_Rule_PVT.ct_rule_rec_type;
1283 
1284  BEGIN
1285       -- Standard Start of API savepoint
1286       SAVEPOINT VALIDATE_Ct_Rule_;
1287 
1288       -- Standard call to check for call compatibility.
1289       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
1290                                            p_api_version_number,
1291                                            l_api_name,
1292                                            G_PKG_NAME)
1293       THEN
1294           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1295       END IF;
1296 
1297       -- Initialize message list if p_init_msg_list is set to TRUE.
1298       IF FND_API.to_Boolean( p_init_msg_list )
1299       THEN
1300          FND_MSG_PUB.initialize;
1301       END IF;
1302       IF p_validation_level >= JTF_PLSQL_API.g_valid_level_item THEN
1303               Check_ct_rule_Items(
1304                  p_ct_rule_rec        => p_ct_rule_rec,
1305                  p_validation_mode   => p_validation_mode,
1306                  x_return_status     => x_return_status
1307               );
1308 
1309               IF x_return_status = FND_API.G_RET_STS_ERROR THEN
1310                   RAISE FND_API.G_EXC_ERROR;
1311               ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1312                   RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1313               END IF;
1314       END IF;
1315 
1316       Complete_ct_rule_Rec(
1317          p_ct_rule_rec        => p_ct_rule_rec,
1318          x_complete_rec        => l_ct_rule_rec
1319       );
1320 
1321       IF p_validation_level >= JTF_PLSQL_API.g_valid_level_item THEN
1322          Validate_ct_rule_Rec(
1323            p_api_version_number     => 1.0,
1324            p_init_msg_list          => FND_API.G_FALSE,
1325            x_return_status          => x_return_status,
1326            x_msg_count              => x_msg_count,
1327            x_msg_data               => x_msg_data,
1328            p_ct_rule_rec           =>    l_ct_rule_rec);
1329 
1330               IF x_return_status = FND_API.G_RET_STS_ERROR THEN
1331                  RAISE FND_API.G_EXC_ERROR;
1332               ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1333                  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1334               END IF;
1335       END IF;
1336 
1337 
1338       -- Debug Message
1339       IF (AMS_DEBUG_HIGH_ON) THEN
1340 
1341       AMS_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'start');
1342       END IF;
1343 
1344 
1345       -- Initialize API return status to SUCCESS
1346       x_return_status := FND_API.G_RET_STS_SUCCESS;
1347 
1348 
1349       -- Debug Message
1350       IF (AMS_DEBUG_HIGH_ON) THEN
1351 
1352       AMS_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'end');
1353       END IF;
1354 
1355       -- Standard call to get message count and if count is 1, get message info.
1356       FND_MSG_PUB.Count_And_Get
1357         (p_count          =>   x_msg_count,
1358          p_data           =>   x_msg_data
1359       );
1360 EXCEPTION
1361 
1362    WHEN AMS_Utility_PVT.resource_locked THEN
1363      x_return_status := FND_API.g_ret_sts_error;
1364  AMS_Utility_PVT.Error_Message(p_message_name => 'AMS_API_RESOURCE_LOCKED');
1365 
1366    WHEN FND_API.G_EXC_ERROR THEN
1367      ROLLBACK TO VALIDATE_Ct_Rule_;
1368      x_return_status := FND_API.G_RET_STS_ERROR;
1369      -- Standard call to get message count and if count=1, get the message
1370      FND_MSG_PUB.Count_And_Get (
1371             p_encoded => FND_API.G_FALSE,
1372             p_count   => x_msg_count,
1373             p_data    => x_msg_data
1374      );
1375 
1376    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1377      ROLLBACK TO VALIDATE_Ct_Rule_;
1378      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1379      -- Standard call to get message count and if count=1, get the message
1380      FND_MSG_PUB.Count_And_Get (
1381             p_encoded => FND_API.G_FALSE,
1382             p_count => x_msg_count,
1383             p_data  => x_msg_data
1384      );
1385 
1386    WHEN OTHERS THEN
1387      ROLLBACK TO VALIDATE_Ct_Rule_;
1388      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1389      IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1390      THEN
1391         FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
1392      END IF;
1393      -- Standard call to get message count and if count=1, get the message
1394      FND_MSG_PUB.Count_And_Get (
1395             p_encoded => FND_API.G_FALSE,
1396             p_count => x_msg_count,
1397             p_data  => x_msg_data
1398      );
1399 End Validate_Ct_Rule;
1400 
1401 
1402 --===================================================================
1403 -- NAME
1404 --    Validate_ct_rule_rec
1405 --
1406 -- PURPOSE
1407 --    Validates the content rule record
1408 --
1409 -- NOTES
1410 --
1411 -- HISTORY
1412 --   21-MAR-2001  JIELI      Created
1413 --===================================================================
1414 
1415 PROCEDURE Validate_ct_rule_rec(
1416     p_api_version_number         IN   NUMBER,
1417     p_init_msg_list              IN   VARCHAR2     := FND_API.G_FALSE,
1418     x_return_status              OUT NOCOPY  VARCHAR2,
1419     x_msg_count                  OUT NOCOPY  NUMBER,
1420     x_msg_data                   OUT NOCOPY  VARCHAR2,
1421     p_ct_rule_rec               IN    ct_rule_rec_type
1422     )
1423 IS
1424 BEGIN
1425       -- Initialize message list if p_init_msg_list is set to TRUE.
1426       IF FND_API.to_Boolean( p_init_msg_list )
1427       THEN
1428          FND_MSG_PUB.initialize;
1429       END IF;
1430 
1431       -- Initialize API return status to SUCCESS
1432       x_return_status := FND_API.G_RET_STS_SUCCESS;
1433 
1434       -- Hint: Validate data
1435       -- If data not valid
1436       -- THEN
1437       -- x_return_status := FND_API.G_RET_STS_ERROR;
1438 
1439       -- Debug Message
1440       IF (AMS_DEBUG_HIGH_ON) THEN
1441 
1442       AMS_UTILITY_PVT.debug_message('Private API: Validate_dm_model_rec');
1443       END IF;
1444       -- Standard call to get message count and if count is 1, get message info.
1445       FND_MSG_PUB.Count_And_Get
1446         (p_count          =>   x_msg_count,
1447          p_data           =>   x_msg_data
1448       );
1449 END Validate_ct_rule_Rec;
1450 
1451 
1452 --===================================================================
1453 -- NAME
1454 --    check_content_rule
1455 --
1456 -- PURPOSE
1457 --    sees if there are any content rules for given object
1458 --    and submits a request to Fulfillment
1459 --
1460 -- NOTES
1461 --
1462 --
1463 -- ALGORITHM
1464 --    see if there is any object specific rule for this obj type -- trig code -- object id (1)
1465 --    if  yes use this to get template id
1466 --    if  no
1467 --            see if there is any general rule for this obj type -- trig code (2)
1468 --            if  no  => dont send any request
1469 --            if  yes =>
1470 --                       see if it has been disabled for this particular obj id (3)
1471 --                       if yes => (has been disabled) dont send any request
1472 --                       if no  => (has not been disabled) send this template id
1473 --
1474 --
1475 -- HISTORY
1476 --   10-apr-2002   soagrawa   Created
1477 --   15-jul-2002   soagrawa   Modified call to submit batch request to pass it source code
1478 --                            and source code id of the object. Added cursors for that.
1479 --   30-sep-2003   soagrawa   Modified for 11.5.10 JTO integration
1480 --   14-dec-2004   anchaudh   Modified call to pass extended information to fulfillment server
1481 --   29-May-2006   prageorg   Added handling of delivery_mode for Multipart bug fix
1482 --===================================================================
1483 
1484 PROCEDURE check_content_rule(
1485    p_api_version        IN  NUMBER,
1486    p_init_msg_list      IN  VARCHAR2  := FND_API.g_false,
1487    p_commit             IN  VARCHAR2  := FND_API.g_false,
1488    p_object_type        IN  VARCHAR2,
1489    p_object_id          IN  NUMBER,
1490    p_trigger_type       IN  VARCHAR2,
1491    p_requestor_type     IN  VARCHAR2  := NULL,
1492    p_requestor_id       IN  NUMBER,
1493    p_server_group       IN  NUMBER := NULL,
1494    p_scheduled_date     IN  DATE  := SYSDATE,
1495    p_media_types        IN  VARCHAR2 := 'E',
1496    p_archive            IN  VARCHAR2 := 'N',
1497    p_log_user_ih        IN  VARCHAR2 := 'Y', --anchaudh: fixed to be able to log interactions for fulfillment rules related to Events.
1498    p_request_type       IN  VARCHAR2 := 'E',
1499    p_language_code      IN  VARCHAR2 := NULL,
1500    p_profile_id         IN  NUMBER   := NULL,
1501    p_order_id           IN  NUMBER   := NULL,
1502    p_collateral_id      IN  NUMBER   := NULL,
1503    p_party_id           IN  JTF_FM_REQUEST_GRP.G_NUMBER_TBL_TYPE,
1504    p_email              IN  JTF_FM_REQUEST_GRP.G_VARCHAR_TBL_TYPE,
1505    p_fax                IN  JTF_FM_REQUEST_GRP.G_VARCHAR_TBL_TYPE,
1506    p_bind_names         IN  JTF_FM_REQUEST_GRP.G_VARCHAR_TBL_TYPE,
1507    p_bind_values        IN  JTF_FM_REQUEST_GRP.G_VARCHAR_TBL_TYPE,
1508    x_return_status      OUT NOCOPY VARCHAR2,
1509    x_msg_count          OUT NOCOPY NUMBER,
1510    x_msg_data           OUT NOCOPY VARCHAR2,
1511    x_request_history_id OUT NOCOPY NUMBER
1512     )
1513 IS
1514 
1515    CURSOR c_rules_generic IS
1516       SELECT cover_letter_id, email_subject,sender, reply_to,sender_display_name, delivery_mode
1517       FROM   ams_content_rules_vl
1518       WHERE  object_type  =  p_object_type
1519       AND    trigger_code =  p_trigger_type
1520       AND    object_id    IS NULL;
1521 
1522 
1523    CURSOR c_rules_for_object_enabled IS
1524       SELECT cover_letter_id, email_subject,sender, reply_to,sender_display_name, delivery_mode
1525       FROM   ams_content_rules_vl
1526       WHERE  object_type  = p_object_type
1527       AND    trigger_code = p_trigger_type
1528       AND    object_id    = p_object_id
1529       AND    enabled_flag = 'Y';  -- 'Y' for (1)  ; 'N' for (3)
1530 
1531    CURSOR c_rules_for_object_disabled IS
1532       SELECT cover_letter_id, email_subject,sender, reply_to,sender_display_name, delivery_mode
1533       FROM   ams_content_rules_vl
1534       WHERE  object_type  = p_object_type
1535       AND    trigger_code = p_trigger_type
1536       AND    object_id    = p_object_id
1537       AND    enabled_flag = 'N';  -- 'Y' for (1)  ; 'N' for (3)
1538 
1539    -- cursor for source codes added by soagrawa on 15-jul-2002
1540    CURSOR c_source_code IS
1541       SELECT source_code, source_code_id
1542       FROM   ams_source_codes
1543       WHERE  arc_source_code_for = p_object_type
1544       AND    source_code_for_id  = p_object_id
1545       AND    active_flag         = 'Y';
1546 
1547 
1548    l_send_request   NUMBER;
1549 
1550    l_template_id            NUMBER;
1551    l_dummy_template_id      NUMBER;
1552    l_email_subject          VARCHAR2(240);
1553    l_dummy_email_subject    VARCHAR2(240);
1554 
1555    -- start dhsingh on 02-sep-2004
1556    l_sender			VARCHAR2(2000);
1557    l_sender_display_name        VARCHAR2(2000);
1558    l_dummy_sender_display_name  VARCHAR2(2000);
1559    l_dummy_sender		VARCHAR2(2000);
1560    l_reply_to			VARCHAR2(2000);
1561    l_dummy_reply_to	VARCHAR2(2000);
1562    -- end dhsingh 0n 02-sep-2004
1563 
1564    l_return_status  VARCHAR2(1);
1565    l_msg_count      NUMBER;
1566    l_msg_data       VARCHAR2(2000);
1567 
1568    l_source_code        VARCHAR2(30);
1569    l_source_code_id     NUMBER;
1570    l_delivery_mode VARCHAR2(30); -- prageorg 29-May-2006 for Multipart fix
1571    l_dummy_delivery_mode	VARCHAR2(30); -- prageorg 29-May-2006 for Multipart fix
1572 
1573    -- soagrawa added these definitions for integrating with 1159 1-to-1 FFM
1574    -- 12-dec-2002
1575    l_order_header_rec        JTF_Fulfillment_PUB.ORDER_HEADER_REC_TYPE;
1576    l_order_line_tbl          JTF_Fulfillment_PUB.ORDER_LINE_TBL_TYPE;
1577    l_fulfill_electronic_rec  JTF_FM_OCM_REQUEST_GRP.FULFILL_ELECTRONIC_REC_TYPE;
1578    y_order_header_rec        ASO_ORDER_INT.ORDER_HEADER_REC_TYPE;
1579    l_extended_header         VARCHAR2(32767) ;
1580 
1581 
1582 BEGIN
1583 
1584    x_request_history_id := -1;
1585    x_return_status := FND_API.G_RET_STS_SUCCESS;
1586 
1587    l_send_request := 0;
1588 
1589    IF (AMS_DEBUG_HIGH_ON) THEN
1590 
1591 
1592 
1593    AMS_UTILITY_PVT.debug_message(G_PKG_NAME||' Private API: check_content_rule : start');
1594 
1595    END IF;
1596    -- (1)
1597    IF (AMS_DEBUG_HIGH_ON) THEN
1598 
1599    AMS_UTILITY_PVT.debug_message(G_PKG_NAME||' Private API: check_content_rule : before check for object level trigger');
1600    END IF;
1601    OPEN  c_rules_for_object_enabled;
1602    FETCH c_rules_for_object_enabled INTO l_dummy_template_id, l_dummy_email_subject, l_dummy_sender, l_dummy_reply_to,l_dummy_sender_display_name, l_dummy_delivery_mode;--  dhsingh on 02-sep-2004
1603          IF c_rules_for_object_enabled%NOTFOUND
1604          THEN
1605                IF (AMS_DEBUG_HIGH_ON) THEN
1606 
1607                AMS_UTILITY_PVT.debug_message(G_PKG_NAME||' Private API: check_content_rule : NOT FOUND object level trigger');
1608                END IF;
1609                -- (2)
1610                IF (AMS_DEBUG_HIGH_ON) THEN
1611 
1612                AMS_UTILITY_PVT.debug_message(G_PKG_NAME||' Private API: check_content_rule : before check for generic level trigger');
1613                END IF;
1614                OPEN  c_rules_generic;
1615                FETCH c_rules_generic INTO l_dummy_template_id, l_dummy_email_subject,l_dummy_sender, l_dummy_reply_to,l_dummy_sender_display_name, l_dummy_delivery_mode;-- dhsingh on 02-sep-2004
1616                      IF c_rules_generic%NOTFOUND
1617                      THEN
1618                            -- not found
1619                            IF (AMS_DEBUG_HIGH_ON) THEN
1620 
1621                            AMS_UTILITY_PVT.debug_message(G_PKG_NAME||' Private API: check_content_rule : NOT FOUND generic level trigger');
1622                            END IF;
1623                            NULL;
1624                      ELSE
1625                            -- found
1626                            IF (AMS_DEBUG_HIGH_ON) THEN
1627 
1628                            AMS_UTILITY_PVT.debug_message(G_PKG_NAME||' Private API: check_content_rule : FOUND generic level trigger');
1629                            END IF;
1630                            l_template_id  := l_dummy_template_id;
1631                            l_email_subject  := l_dummy_email_subject;
1632 			   -- start dhsingh on 02-sep-2004
1633 			   l_sender := l_dummy_sender;
1634 			   l_reply_to := l_dummy_reply_to;
1635 			   l_sender_display_name := l_dummy_sender_display_name;
1636 			   -- end dhsingh on 02-sep-2004
1637                            -- (3)
1638 			   l_delivery_mode := l_dummy_delivery_mode;
1639                            IF (AMS_DEBUG_HIGH_ON) THEN
1640 
1641                            AMS_UTILITY_PVT.debug_message(G_PKG_NAME||' Private API: check_content_rule : before check for is generic level trigger disabled');
1642                            END IF;
1643                            OPEN  c_rules_for_object_disabled;
1644                            FETCH c_rules_for_object_disabled INTO l_dummy_template_id, l_dummy_email_subject, l_dummy_sender, l_dummy_reply_to,l_dummy_sender_display_name, l_dummy_delivery_mode;-- dhsingh on 02-sep-2004
1645                                  IF c_rules_for_object_disabled%NOTFOUND
1646                                  THEN
1647                                      -- not found
1648                                      IF (AMS_DEBUG_HIGH_ON) THEN
1649 
1650                                      AMS_UTILITY_PVT.debug_message(G_PKG_NAME||' Private API: check_content_rule : generic level trigger NOT disabled');
1651                                      END IF;
1652                                      l_send_request := 1;
1653                                      IF (AMS_DEBUG_HIGH_ON) THEN
1654 
1655                                      AMS_UTILITY_PVT.debug_message(G_PKG_NAME||' Private API: check_content_rule : template id is '||l_template_id);
1656                                      END IF;
1657                                      IF (AMS_DEBUG_HIGH_ON) THEN
1658 
1659                                      AMS_UTILITY_PVT.debug_message(G_PKG_NAME||' Private API: check_content_rule : subject is '||l_email_subject);
1660                                      END IF;
1661                                       -- start dhsingh on 02-sep-2004
1662 				     IF (AMS_DEBUG_HIGH_ON) THEN
1663 					     AMS_UTILITY_PVT.debug_message(G_PKG_NAME||' Private API: check_content_rule : sender is '||l_sender);
1664 					     AMS_UTILITY_PVT.debug_message(G_PKG_NAME||' Private API: check_content_rule : reply-to is '||l_reply_to);
1665 				     END IF;
1666 				     -- end dhsingh on 02-sep-2004
1667 
1668                                  ELSE
1669                                      -- found
1670                                      IF (AMS_DEBUG_HIGH_ON) THEN
1671 
1672                                      AMS_UTILITY_PVT.debug_message(G_PKG_NAME||' Private API: check_content_rule : generic level trigger IS disabled');
1673                                      END IF;
1674                                      NULL;
1675                                  END IF;
1676                            CLOSE c_rules_for_object_disabled;
1677 
1678                      END IF;
1679                CLOSE c_rules_generic;
1680 
1681          ELSE
1682              IF (AMS_DEBUG_HIGH_ON) THEN
1683 
1684              AMS_UTILITY_PVT.debug_message(G_PKG_NAME||' Private API: check_content_rule : FOUND object level trigger');
1685              END IF;
1686              -- found
1687              l_send_request := 1;
1688              l_template_id  := l_dummy_template_id;
1689              l_email_subject  := l_dummy_email_subject;
1690 	     -- start dhsingh on 02-sep-2004
1691 	     l_sender := l_dummy_sender;
1692 	     l_reply_to := l_dummy_reply_to;
1693 	     l_sender_display_name := l_dummy_sender_display_name;
1694 	     -- end dhsingh on 02-sep-2004
1695 	     -- prageorg 29-May-2006
1696 	     l_delivery_mode := l_dummy_delivery_mode;
1697              IF (AMS_DEBUG_HIGH_ON) THEN
1698 
1699              AMS_UTILITY_PVT.debug_message(G_PKG_NAME||' Private API: check_content_rule : FOUND object level trigger id is '||l_template_id);
1700              END IF;
1701              IF (AMS_DEBUG_HIGH_ON) THEN
1702 
1703              AMS_UTILITY_PVT.debug_message(G_PKG_NAME||' Private API: check_content_rule : FOUND object level trigger subject is '||l_email_subject);
1704              END IF;
1705          END IF;
1706 	 -- start dhsingh on 02-sep-2004
1707 	     IF (AMS_DEBUG_HIGH_ON) THEN
1708 		     begin
1709 		     AMS_UTILITY_PVT.debug_message(G_PKG_NAME||' Private API: check_content_rule : sender is '||l_sender);
1710 		     AMS_UTILITY_PVT.debug_message(G_PKG_NAME||' Private API: check_content_rule : reply-to is '||l_reply_to);
1711 		     end;
1712 	     END IF;
1713 	     -- end dhsingh on 02-sep-2004
1714    CLOSE c_rules_for_object_enabled;
1715 
1716 
1717    IF l_send_request = 1
1718    THEN
1719 
1720 
1721          -- soagrawa added 15-jul-2002
1722          -- get source_code info for the object
1723          OPEN  c_source_code;
1724          FETCH c_source_code INTO l_source_code, l_source_code_id;
1725          CLOSE c_source_code ;
1726 
1727          IF (AMS_DEBUG_HIGH_ON) THEN
1728            AMS_UTILITY_PVT.debug_message(G_PKG_NAME||' Private API: check_content_rule : BEFORE sending REQUEST ');
1729          END IF;
1730 
1731          -- soagrawa 12-dec-2002 replaced AMF callout with JTF 1-to-1 call for 11.5.9
1732 
1733          l_fulfill_electronic_rec.template_id     := l_template_id;
1734          l_fulfill_electronic_rec.object_type     := 'AMS_'||p_object_type;-- modified for 11.5.10
1735          l_fulfill_electronic_rec.object_id       := p_object_id;
1736          l_fulfill_electronic_rec.source_code     := l_source_code;
1737          l_fulfill_electronic_rec.source_code_id  := l_source_code_id;
1738 --         l_fulfill_electronic_rec.requestor_type  := p_requestor_type;
1739          l_fulfill_electronic_rec.requestor_id    := p_requestor_id; --l_resource_id;
1740 --         l_fulfill_electronic_rec.server_group    := p_server_group;
1741 --         l_fulfill_electronic_rec.schedule_date   := p_scheduled_date;
1742          l_fulfill_electronic_rec.media_types     := p_media_types;
1743          --l_fulfill_electronic_rec.archive       := 'N'; -- thts the default
1744          l_fulfill_electronic_rec.log_user_ih     := p_log_user_ih;
1745          l_fulfill_electronic_rec.request_type    := p_request_type;
1746          --l_fulfill_electronic_rec.profile_id      := p_profile_id;
1747          --l_fulfill_electronic_rec.order_id      := order_id;
1748          --l_fulfill_electronic_rec.collateral_id := collateral_id;
1749          l_fulfill_electronic_rec.subject         := l_email_subject;
1750          --l_fulfill_electronic_rec.party_id      := party_id;
1751          --l_fulfill_electronic_rec.email         := email;
1752          --l_fulfill_electronic_rec.fax           := fax;
1753          l_fulfill_electronic_rec.bind_values     := p_bind_values;
1754          l_fulfill_electronic_rec.bind_names      := p_bind_names;
1755          --l_fulfill_electronic_rec.email_text    := email_text;
1756          --l_fulfill_electronic_rec.content_name  := content_name;
1757          --l_fulfill_electronic_rec.content_type  := content_type;
1758          l_fulfill_electronic_rec.stop_list_bypass := 'B'; -- added for 11.5.10
1759 	 l_fulfill_electronic_rec.email_format  := nvl(l_delivery_mode, 'BOTH');
1760 
1761           --start. dhsingh added extended information to pass it to fulfillment server on 02-sep-2004
1762 	 IF (l_sender IS NOT NULL ) OR (l_reply_to IS NOT null) OR (l_sender_display_name IS NOT null)
1763 	 THEN
1764 		l_extended_header :=  '<extended_header>';
1765 
1766 		IF  l_sender IS NOT NULL THEN
1767 			 l_extended_header :=   l_extended_header || '<header_name>email_from_address</header_name><header_value>' ||l_sender|| '</header_value>';
1768 		END IF;
1769 		IF  l_reply_to IS NOT NULL THEN
1770 			 l_extended_header :=   l_extended_header || '<header_name>email_reply_to_address</header_name><header_value>' ||l_reply_to|| '</header_value>';
1771 		END IF;
1772                 IF  l_sender_display_name IS NOT NULL THEN
1773 			 l_extended_header :=   l_extended_header || '<header_name>sender_display_name</header_name><header_value>' ||l_sender_display_name|| '</header_value>';
1774 		END IF;
1775 
1776 		 l_extended_header :=   l_extended_header || '</extended_header>';
1777 	 /*
1778 	       l_extended_header :=  '<extended_header>
1779 		    <header_name>email_from_address</header_name>
1780 		    <header_value>' ||l_sender|| '</header_value>
1781 		    <header_name>email_reply_to_address</header_name>
1782 		    <header_value>' ||l_reply_to|| '</header_value>
1783 		    </extended_header>';
1784 	   */
1785 	      l_fulfill_electronic_rec.extended_header := l_extended_header;
1786 	  END IF;
1787 	  -- end dhsingh on 02-sep-2004
1788 
1789          -- soagrawa modified for 11.5.10
1790          --JTF_FM_OCM_REQUEST_GRP.create_fulfillment
1791          JTF_FM_OCM_REND_REQ.create_fulfillment_rendition
1792             (
1793                p_init_msg_list           => p_init_msg_list,
1794                p_api_version             => p_api_version,
1795                p_commit                  => p_commit,
1796                p_order_header_rec        => l_order_header_rec,
1797                p_order_line_tbl          => l_order_line_tbl,
1798                p_fulfill_electronic_rec  => l_fulfill_electronic_rec,
1799                p_request_type            => p_request_type,
1800                x_return_status           => x_return_status,
1801                x_msg_count               => x_msg_count,
1802                x_msg_data                => x_msg_data,
1803                x_order_header_rec        => y_order_header_rec,
1804                x_request_history_id      => x_request_history_id
1805             );
1806 
1807          IF (AMS_DEBUG_HIGH_ON) THEN
1808             ams_utility_pvt.debug_message('l_fulfill_electronic_rec.template_id     := '||l_template_id);
1809             ams_utility_pvt.debug_message('l_fulfill_electronic_rec.version_id      := '||'1');
1810             ams_utility_pvt.debug_message('l_fulfill_electronic_rec.object_type     := '||p_object_type);
1811             ams_utility_pvt.debug_message('l_fulfill_electronic_rec.object_id       := '||p_object_id);
1812             ams_utility_pvt.debug_message(' l_fulfill_electronic_rec.source_code     := '||l_source_code);
1813             ams_utility_pvt.debug_message('l_fulfill_electronic_rec.source_code_id  := '||l_source_code_id);
1814             ams_utility_pvt.debug_message('l_fulfill_electronic_rec.requestor_type  := '||p_requestor_type);
1815             ams_utility_pvt.debug_message('l_fulfill_electronic_rec.requestor_id    := '||p_requestor_id); --l_resource_id;
1816             ams_utility_pvt.debug_message('l_fulfill_electronic_rec.server_group    := '||p_server_group);
1817             ams_utility_pvt.debug_message('l_fulfill_electronic_rec.schedule_date   := '||p_scheduled_date);
1818             ams_utility_pvt.debug_message('l_fulfill_electronic_rec.media_types     := '||p_media_types); --??
1819             --l_fulfill_electronic_rec.archive       := 'N'; -- thts the default
1820             ams_utility_pvt.debug_message('l_fulfill_electronic_rec.log_user_ih     := '||p_log_user_ih);
1821             ams_utility_pvt.debug_message('l_fulfill_electronic_rec.request_type    := '||p_request_type);
1822             --l_fulfill_electronic_rec.profile_id      := p_profile_id;
1823             --l_fulfill_electronic_rec.order_id      := order_id;
1824             --l_fulfill_electronic_rec.collateral_id := collateral_id;
1825             ams_utility_pvt.debug_message('l_fulfill_electronic_rec.subject         := '||l_email_subject);
1826             -- start dhsingh on 02-sep-2004
1827 	    ams_utility_pvt.debug_message('l_fulfill_electronic_rec.extended_header := '||l_extended_header);
1828 	    -- end dhsingh on 02-sep-2004
1829             ams_utility_pvt.debug_message('Length of bind variables names '|| p_bind_names.count);
1830             ams_utility_pvt.debug_message('Length of bind variables values '|| p_bind_values.count);
1831 	    ams_utility_pvt.debug_message('Delivery mode '|| l_delivery_mode);
1832 
1833            for i IN 1..p_bind_values.count LOOP
1834              ams_utility_pvt.debug_message(i||': bind name '  ||p_bind_names(i));
1835              ams_utility_pvt.debug_message(i||': bind value ' ||p_bind_values(i));
1836            end loop;
1837 
1838 
1839 
1840             AMS_UTILITY_PVT.debug_message(G_PKG_NAME||' Private API: check_content_rule : AFTER sending REQUEST ');
1841             AMS_UTILITY_PVT.debug_message(G_PKG_NAME||' Private API: check_content_rule : AFTER sending REQUEST template id sent was '||l_template_id);
1842             AMS_UTILITY_PVT.debug_message(G_PKG_NAME||' Private API: check_content_rule : sending REQUEST was '||x_return_status);
1843             AMS_UTILITY_PVT.debug_message(G_PKG_NAME||' Private API: check_content_rule : AFTER sending REQUEST req_his_id is '||x_request_history_id);
1844          END IF;
1845    END IF;
1846 
1847 
1848    --    see if there is any object specific rule for this obj type -- trig code -- object id (1)
1849    --    if  yes use this to get template id
1850    --    if  no
1851    --            see if there is any general rule for this obj type -- trig code (2)
1852    --            if  no  => dont send any request
1853    --            if  yes =>
1854    --                       see if it has been disabled for this particular obj id (3)
1855    --                       if yes => (has been disabled) dont send any request
1856    --                       if no  => (has not been disabled) send this template id
1857 
1858 END check_content_rule;
1859 
1860 
1861 END AMS_Ct_Rule_PVT;