DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_CO_PROCESS

Source


1 PACKAGE BODY igs_co_process AS
2 /* $Header: IGSCO22B.pls 120.12 2006/05/31 10:25:46 vskumar ship $ */
3   /*************************************************************
4   Created By :Nalin Kumar
5   Date Created on : 05-Feb-2002
6   Purpose : This package will consist of procedures that will perform validation
7             and processing of correspondence related information and data.
8   Know limitations, enhancements or remarks
9   Change History
10   Who             When            What
11   svadde		28-Apr-2006		Bug 5126451 removed the dubuging of sql statement
12   pkpatel      6-Feb-2006      Bug 4937960 (MOdified the Person ID group logic to use get_dynamic_sql function to solve literal issue. Uncommented all the FND loggings)
13    pacross     11-APR-2005     Implemented code for Correspondance preview and edit fucntionality
14    mnade          6/1/2005        FA 157 Added p_award_prd_cd parameter to corp_post_process
15   ssaleem         09-SEP-2004   3630073. Added p_org_unit_id as a new parameter
16    ssawhney   3-may-04        IBC.C patchset changes bug 3565861 + 3442719 + signature of corp_get_letter_type changed + interaction history signature changes
17                               citemverid changes.
18    gmaheswa   15-Nov-2003     Bug : 3006800 Added New parameter p_fax_number in corp_submit_fulfil_request and
19                                    fax number is passed to jtf_fm_request_grp.get_content_xml as p_fax.
20    ssaleem    28-OCT-2003     Bug : 3198795
21                                    Part of the Dynamic/Static Person Groups modifications,
22            Procedure corp_get_parameter_value is modified.
23    npalanis   23-OCT-2002     Bug : 2547368
24                               Defaulting arguments in funtion and procedure definitions removed
25    kpadiyar   04-MAR-2003     Bug # 2520895 - Condition added with outcome status <> CANCELLED
26    kpadiyar   07-MAR-2003     Bug # 2836391 - parameter 8 and 9 commented wherever checks being done
27                                               reason being these 2 parameters are not being used and kept probably for backup.
28    KUMMA      07-jun-2003     2853531, Inside corp_submit_fulfil_request, Changed the cursor cur_get_sub to use the lookup type also
29    kumma      24-JUN-2003     2853531, Before making a CRM API call checked the return status of the earlier call
30    kumma      21-AUG-2003     3104787, Modified the corp_submit_fulfil_request , Added the code to check if the query is attached with a template and accordingly pass the content type 'QUERY' or 'DATA'
31                                       Modified the else condition to not to consider the Adhoc letters while binding the bind variables.
32    asbala     11-SEP-2003     3071111  GSCC FILE.DATE.5 Compliance
33    hreddych   13-oct-2003     Build UK Correspondence Letters
34    pkpatel    11-DEC-2003     Bug 2863933 (Added the where clause 1=1 in corp_get_system_letter_view for ADRESID. Removed the variable g_parameter_value.)
35    vskumar    30-May-2006     Xbuild3 performance fix. break cursor's select queries in procedure corp_check_interaction_history. e.g cur_c1 to cur_c1_part1 and cur_c1_part2.
36    ***************************************************************/
37   -- package variable declarations
38 
39  l_prog_label CONSTANT VARCHAR2(500) :='igs.plsql.igs_co_process';
40  l_request_id  NUMBER;
41  l_label VARCHAR2(32000);
42  l_debug_str VARCHAR2(32000);
43 
44 
45   PROCEDURE corp_get_letter_type(
46     p_map_id            IN       NUMBER,
47     p_document_id       OUT NOCOPY      NUMBER,
48     p_sys_ltr_code      OUT NOCOPY      VARCHAR2,
49     p_letter_type       OUT NOCOPY      VARCHAR2 ,
50     p_version_id        OUT NOCOPY      NUMBER
51   ) AS
52   /*************************************************************
53   Created By :Nalin Kumar
54   Date Created on : 05-Feb-2002
55   Purpose : This procedure will accept map id as a parameter and
56             returns document id, system letter code and letter
57       type for the map id.
58   Know limitations, enhancements or remarks
59   Change History
60   Who             When            What
61 
62   (reverse chronological order - newest change first)
63   ***************************************************************/
64     CURSOR cur_c1 (cp_map_id NUMBER)IS
65     SELECT document_id, sys_ltr_code, doc_code , version_id
66     FROM igs_co_mapping_v
67     WHERE map_id = cp_map_id;
68     l_cur_c1 cur_c1%ROWTYPE;
69   BEGIN
70     OPEN cur_c1(p_map_id);
71     FETCH cur_c1 INTO l_cur_c1;
72       IF cur_c1%FOUND THEN
73         p_document_id  := l_cur_c1.document_id;
74         p_sys_ltr_code := l_cur_c1.sys_ltr_code;
75         p_letter_type  := l_cur_c1.doc_code;
76   p_version_id   := l_cur_c1.version_id;
77       ELSE
78         p_document_id  := NULL;
79         p_sys_ltr_code := NULL;
80         p_letter_type  := NULL;
81   p_version_id   := NULL;
82       END IF;
83     CLOSE cur_c1;
84   EXCEPTION
85     WHEN OTHERS THEN
86       Fnd_Message.Set_name('IGS','IGS_GE_UNHANDLED_EXP');
87       FND_MESSAGE.SET_TOKEN('NAME','IGS_CO_PROCESS.corp_get_letter_type');
88       IGS_GE_MSG_STACK.ADD;
89       App_Exception.Raise_Exception;
90   END corp_get_letter_type;
91 
92 
93   PROCEDURE corp_build_sql_stmt(
94     p_document_id       IN       NUMBER,
95     p_sys_ltr_code      IN       VARCHAR2,
96     p_select_type       IN       VARCHAR2,
97     p_list_id           IN       NUMBER,
98     p_person_id         IN       NUMBER,
99     p_letter_type       IN       VARCHAR2,
100     p_parameter_1       IN       VARCHAR2,
101     p_parameter_2       IN       VARCHAR2,
102     p_parameter_3       IN       VARCHAR2,
103     p_parameter_4       IN       VARCHAR2,
104     p_parameter_5       IN       VARCHAR2,
105     p_parameter_6       IN       VARCHAR2,
106     p_parameter_7       IN       VARCHAR2,
107     p_parameter_8       IN       VARCHAR2,
108     p_parameter_9       IN       VARCHAR2,
109     p_sql_stmt          OUT NOCOPY      VARCHAR2,
110     p_exception         OUT NOCOPY      VARCHAR2
111   ) AS
112   /*************************************************************
113   Created By :Nalin Kumar
114   Date Created on : 05-Feb-2002
115   Purpose : Based on the selection type this procedure will build and return a select statement.
116   Know limitations, enhancements or remarks
117   Change History
118   Who             When            What
119 
120   (reverse chronological order - newest change first)
121   Bayadav         24-MAY-2002     Included two system letter codes 'ENADHOC', 'SFADHOC' for adhoc letters as a part of bug 2376434
122   cheslyn         10-JUN-2002     Chnged the applictaion name from IGS to IGF for message IGF_AW_NO_LIST as  a part of bug 2410165
123   pkpatel         7-MAy-2003      Bug 2940810
124                                   Modified for Bind Variable
125   asbala          19-AUG-2003     3098262:Added check to retrieve only active members of a group
126   pkpatel         26-AUG-2003     Bug 3110793 (Removed the string WHERE while forming the dynamic clause for LIST for adhoc letters)
127   ssaleem         29-OCT-2003     Bug 3198795 For select type 'P' 'G', 'SYSTEM' check is removed, since
128                                   ADHoc letters were failing due to it
129   ***************************************************************/
130     l_view_name       VARCHAR2(30);
131     l_where_clause    VARCHAR2(350);
132     l_parameter_value VARCHAR2(2000);
133     l_str VARCHAR2(32767);
134     l_group_type VARCHAR2(10);
135     l_static_group VARCHAR2(1);
136     lv_status VARCHAR2(1);
137 
138      CURSOR c_att_id(cp_itm_id ibc_citems_v.citem_id%TYPE) IS
139     SELECT attach_fid
140     FROM ibc_citems_v
141     WHERE CITEM_ID = cp_itm_id
142     AND language = USERENV('LANG');
143 /*
144      CURSOR c_group_member(cp_group_id VARCHAR2) IS
145      SELECT person_id
146      FROM igs_pe_prsid_grp_mem_all
147      WHERE group_id = cp_group_id AND SYSDATE BETWEEN start_date AND NVL(end_date, SYSDATE);
148 */
149     CURSOR cur_c1 (cp_map_id NUMBER)IS
150     SELECT document_id
151     FROM igs_co_mapping
152     WHERE map_id = cp_map_id;
153     l_cur_c1 cur_c1%ROWTYPE;
154     l_list_id igs_co_mapping.map_id%TYPE;
155 /*
156     CURSOR c_file_name IS
157      SELECT file_name
158      FROM igs_pe_persid_group_all
159      WHERE group_id = p_parameter_1;
160 
161 
162       TYPE cur_query IS REF CURSOR;
163       l_query_desc      cur_query;*/
164       l_query_str       VARCHAR2(32767);
165       l_person_id       NUMBER;
166       l_and_con         VARCHAR2(32767);
167       l_attach_fid      ibc_citems_v.attach_fid%TYPE;
168       l_query_text      VARCHAR2(32767);
169 
170   BEGIN
171     l_static_group := 'Y';
172     IF p_select_type = 'L' THEN
173       OPEN cur_c1(p_list_id);
174       FETCH cur_c1 INTO l_cur_c1;
175         l_list_id := l_cur_c1.document_id;
176       CLOSE cur_c1;
177     END IF;
178 
179    fnd_dsql.init;
180 
181     IF p_sys_ltr_code = 'ADRESID' THEN
182       fnd_dsql.add_text('SELECT DISTINCT email_address, person_id FROM ');
183     ELSIF p_sys_ltr_code IN ('ADADHOC','FAADHOC','GENERIC','ENADHOC','SFADHOC') THEN
184       fnd_dsql.add_text('SELECT DISTINCT email_address, party_id FROM ');
185     ELSIF p_sys_ltr_code = 'ADACKMT' THEN
186       fnd_dsql.add_text('SELECT DISTINCT email_address, person_id, adm_appl_number,nominated_course_cd, appl_sequence_number FROM ');
187     ELSIF p_sys_ltr_code = 'ADINTRW' THEN
188       fnd_dsql.add_text('SELECT DISTINCT email_address, person_id, adm_appl_number,nominated_course_cd, appl_sequence_number, panel_code FROM ');
189     ELSE
190       fnd_dsql.add_text('SELECT DISTINCT email_address, person_id, adm_appl_number,nominated_course_cd, appl_sequence_number FROM ');
191     END IF;
192     corp_get_system_letter_view (p_sys_ltr_code,
193                      l_view_name,
194              l_where_clause);
195 
196      --**  proc level logging.
197          IF fnd_log.test(fnd_log.level_procedure,l_prog_label) THEN
198             IF (l_request_id IS NULL) THEN
199               l_request_id := fnd_global.conc_request_id;
200             END IF;
201             l_label := 'igs.plsql.igs_co_process.corp_build_sql_stmt.whereclause';
202             l_debug_str :=  'View :'||l_view_name || 'Where Clause :'|| l_where_clause;
203             fnd_log.string_with_context( fnd_log.level_procedure,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,TO_CHAR(l_request_id));
204          END IF;
205      --**
206 
207 
208     IF p_select_type = 'S' THEN
209       --
210       -- If the System Type is of type 'Student' then
211       --
212       IF p_letter_type = 'SYSTEM' THEN
213         IF l_where_clause IS NOT NULL THEN
214     IF p_sys_ltr_code = 'ADINTRW' THEN
215             fnd_dsql.add_text(l_view_name || ' WHERE person_id = ' );
216             fnd_dsql.add_bind(p_person_id);
217             fnd_dsql.add_text(' AND panel_code = ' );
218             fnd_dsql.add_bind(p_parameter_5);
219     ELSE
220             fnd_dsql.add_text(l_view_name || ' WHERE person_id = ');
221             fnd_dsql.add_bind(p_person_id);
222     END IF;
223           fnd_dsql.add_text(' AND '|| l_where_clause);
224       ELSE
225           fnd_dsql.add_text(l_view_name || ' WHERE person_id = ');
226           fnd_dsql.add_bind(p_person_id);
227       END IF;
228       ELSE
229           fnd_dsql.add_text(' hz_parties WHERE party_id = ');
230           fnd_dsql.add_bind(p_person_id);
231       END IF;
232 
233     ELSIF p_select_type = 'L' THEN
234       --
235       -- If the System Type is of type 'List' then get the query string.
236       --
237 
238      OPEN c_att_id(l_list_id);
239      FETCH c_att_id INTO l_attach_fid;
240 
241 
242      IF c_att_id%NOTFOUND OR l_attach_fid IS NULL THEN
243         FND_MESSAGE.SET_NAME('IGF','IGF_AW_NO_LIST');
244       FND_MESSAGE.SET_TOKEN('LIST', l_list_id);
245         FND_FILE.PUT_LINE(FND_FILE.LOG,FND_MESSAGE.GET);
246         p_exception := 'Y';
247           CLOSE c_att_id;
248       RETURN;
249      END IF;
250 
251      CLOSE c_att_id;
252      IGS_CO_GEN_004.get_list_query(l_attach_fid,l_query_text);
253 
254      --**  proc level logging.
255          IF fnd_log.test(fnd_log.level_procedure,l_prog_label) THEN
256             IF (l_request_id IS NULL) THEN
257               l_request_id := fnd_global.conc_request_id;
258             END IF;
259             l_label := 'igs.plsql.igs_co_process.corp_build_sql_stmt.listquery';
260             l_debug_str :=  'List Query Text :'||l_query_text;
261             fnd_log.string_with_context( fnd_log.level_procedure,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,TO_CHAR(l_request_id));
262          END IF;
263      --**
264 
265      IF l_query_text IS NULL THEN
266         p_exception := 'Y';
267         fnd_message.set_name('IGF','IGF_AW_NO_LIST');
268         fnd_message.set_token('LIST',p_list_id);
269         fnd_file.put_line(fnd_file.log,fnd_message.get());
270         fnd_file.put_line(FND_FILE.LOG,' ');
271         RETURN;
272      ELSE
273         l_query_str := 'SELECT distinct person_id FROM '|| '(' || l_query_text || ')';
274 
275         IF l_where_clause IS NOT NULL THEN
276            IF p_sys_ltr_code = 'ADINTRW' THEN
277               fnd_dsql.add_text(l_view_name || ' WHERE '|| l_where_clause );
278               fnd_dsql.add_text(' AND panel_code = ' );
279               fnd_dsql.add_bind(p_parameter_5);
280             ELSE
281               fnd_dsql.add_text(l_view_name || ' WHERE '|| l_where_clause );
282         END IF;
283 
284             --IF l_and_con IS NOT NULL THEN
285         IF l_query_str IS NOT NULL THEN
286          IF p_sys_ltr_code = 'ADINTRW' THEN
287                 fnd_dsql.add_text(' AND person_id IN ('||l_query_str||' )');
288                 fnd_dsql.add_text(' AND panel_code = ' );
289                 fnd_dsql.add_bind(p_parameter_5);
290                ELSE
291                 fnd_dsql.add_text('AND person_id IN ('||l_query_str||' )');
292          END IF;
293             END IF;
294         ELSE
295 
296        fnd_dsql.add_text(l_view_name );
297 
298             IF l_query_str IS NOT NULL THEN
299                         IF p_sys_ltr_code IN ('ADADHOC','FAADHOC','GENERIC','ENADHOC','SFADHOC') THEN
300                              fnd_dsql.add_text(' WHERE party_id IN(' || l_query_str ||' )');
301                         ELSE
302                  IF p_sys_ltr_code = 'ADINTRW' THEN
303                              fnd_dsql.add_text(' WHERE person_id IN(' || l_query_str ||' )');
304                              fnd_dsql.add_text(' AND panel_code = ' );
305                              fnd_dsql.add_bind(p_parameter_5);
306                            ELSE
307                              fnd_dsql.add_text(' WHERE person_id IN(' || l_query_str ||' )');
308                  END IF;
309                         END IF;
310                  END IF;
311       END IF;
312      END IF;
313 
314     ELSIF p_select_type IN ('P','G') THEN
315       --
316       -- If the System Type is of type 'Parameter' then get the parameter values.
317       --
318       IF p_parameter_1 IS NOT NULL THEN
319 
320       -- check whether the group is dynamic or not.
321       -- if file_name is NOT NULL means, the group is dynamic.
322       l_str := igs_pe_dynamic_persid_group.get_dynamic_sql(p_parameter_1 ,lv_status, l_group_type);
323       IF lv_status <> 'S' THEN
324         FND_MESSAGE.SET_NAME('IGF','IGF_AW_NO_QUERY');
325         FND_FILE.PUT_LINE(FND_FILE.LOG,FND_MESSAGE.GET);
326         p_exception := 'Y';
327         RETURN;
328       END IF;
329 
330       IF l_group_type = 'STATIC' THEN
331         l_str := SUBSTR(l_str,1,INSTR(l_str,':p_GroupID')-1);
332       END IF;
333 
334      END IF;
335 
336       -- the l_str will hold the the select statement. If static bind parameter would be there.
337 
338       IF l_where_clause IS NOT NULL THEN
339         IF p_sys_ltr_code = 'ADINTRW' THEN
340              IF l_str IS NOT NULL THEN
341                      fnd_dsql.add_text(l_view_name || ' WHERE person_id IN ('||l_str);
342 		     IF l_group_type = 'STATIC' THEN
343   		       fnd_dsql.add_bind(p_parameter_1);
344 		     END IF;
345                      fnd_dsql.add_text(') AND '||l_where_clause||' AND panel_code = ' );
346                      fnd_dsql.add_bind(p_parameter_5);
347              ELSE
348                      fnd_dsql.add_text(l_view_name || ' WHERE '||l_where_clause);
349                      fnd_dsql.add_text(' AND panel_code = ' );
350                      fnd_dsql.add_bind(p_parameter_5);
351              END IF;
352         ELSE
353              IF l_str IS NOT NULL THEN
354                      fnd_dsql.add_text(l_view_name || ' WHERE person_id IN ('||l_str);
355 		     IF l_group_type = 'STATIC' THEN
356   		       fnd_dsql.add_bind(p_parameter_1);
357 		     END IF;
358                      fnd_dsql.add_text(') AND '||l_where_clause);
359                ELSE
360                      fnd_dsql.add_text(l_view_name || ' WHERE '||l_where_clause);
361              END IF;
362         END IF;
363       ELSE
364 
365       -- adhoc letters will not have where clause
366 
367            IF p_sys_ltr_code = 'ADINTRW' THEN
368              IF l_str IS NOT NULL THEN
369                      fnd_dsql.add_text(l_view_name|| ' WHERE person_id IN ('||l_str);
370 		     IF l_group_type = 'STATIC' THEN
371   		       fnd_dsql.add_bind(p_parameter_1);
372 		     END IF;
373                      fnd_dsql.add_text(') AND panel_code = ' );
374                      fnd_dsql.add_bind(p_parameter_5);
375              ELSE
376                      fnd_dsql.add_text(l_view_name|| ' WHERE ');
377                      fnd_dsql.add_text(' panel_code = ' );
378                      fnd_dsql.add_bind(p_parameter_5);
379              END IF;
380            ELSE
381              IF l_str IS NOT NULL THEN
382                  IF p_sys_ltr_code IN ('ADADHOC','FAADHOC','GENERIC','ENADHOC','SFADHOC') THEN
383                     fnd_dsql.add_text(l_view_name|| ' WHERE party_id IN ('||l_str);
384 		    IF l_group_type = 'STATIC' THEN
385   		       fnd_dsql.add_bind(p_parameter_1);
386 		    END IF;
387                     fnd_dsql.add_text(')');
388                  ELSE
389                     fnd_dsql.add_text(l_view_name|| ' WHERE person_id IN ('||l_str);
390 		    IF l_group_type = 'STATIC' THEN
391   		       fnd_dsql.add_bind(p_parameter_1);
392 		    END IF;
393                     fnd_dsql.add_text(')');
394                  END IF;
395              ELSE
396                  fnd_dsql.add_text(l_view_name);
397              END IF;
398            END IF;
399       END IF;
400 
401       IF p_letter_type = 'SYSTEM' THEN
402          corp_get_parameter_value(
403               p_sys_ltr_code    => p_sys_ltr_code,
404               p_parameter_1     => p_parameter_1,
405             p_parameter_2     => p_parameter_2,
406             p_parameter_3     => p_parameter_3,
407             p_parameter_4     => p_parameter_4,
408             p_parameter_5     => p_parameter_5,
409             p_parameter_6     => p_parameter_6,
410             p_parameter_7     => p_parameter_7,
411             p_parameter_8     => p_parameter_8,
412             p_parameter_9     => p_parameter_9,
413             p_parameter_value => l_parameter_value);
414         END IF;
415 
416     END IF;
417 
418     p_sql_stmt := fnd_dsql.get_text(FALSE);
419 
420     --** proc level logging.
421         IF fnd_log.test(fnd_log.level_procedure,l_prog_label) THEN
422 
423             l_label := 'igs.plsql.igs_co_process.corp_build_sql_stmt';
424             l_debug_str := 'p_sql_stmt: '||p_sql_stmt;
425 
426             fnd_log.string_with_context( fnd_log.level_procedure,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
427         END IF;
428         --**
429   EXCEPTION
430     WHEN OTHERS THEN
431       Fnd_Message.Set_name('IGS','IGS_GE_UNHANDLED_EXP');
432       FND_MESSAGE.SET_TOKEN('NAME','IGS_CO_PROCESS.corp_build_sql_stmt'||'-'||SQLERRM);
433       IGS_GE_MSG_STACK.ADD;
434       APP_EXCEPTION.RAISE_EXCEPTION;
435   END corp_build_sql_stmt;
436 
437   PROCEDURE corp_check_document_attributes(
438     p_map_id            IN       NUMBER,
439     p_elapsed_days      OUT NOCOPY      NUMBER,
440     p_no_of_repeats     OUT NOCOPY      NUMBER
441   ) AS
442   /*************************************************************
443   Created By :Nalin Kumar
444   Date Created on : 05-Feb-2002
445   Purpose : This procedure will check and return attributes assigned to a document.
446   Know limitations, enhancements or remarks
447   Change History
448   Who             When            What
449 
450   (reverse chronological order - newest change first)
451   ***************************************************************/
452     CURSOR cur_c1 (cp_map_id  NUMBER)IS
453     SELECT elapsed_days, repeat_times
454     FROM igs_co_mapping
455     WHERE map_id  = TO_NUMBER(cp_map_id);
456     l_cur_c1 cur_c1%ROWTYPE;
457   BEGIN
458     OPEN cur_c1(p_map_id);
459     FETCH cur_c1 INTO l_cur_c1;
460       IF cur_c1%FOUND THEN
461         p_elapsed_days  := l_cur_c1.elapsed_days;
462         p_no_of_repeats := l_cur_c1.repeat_times;
463       ELSE
464         p_elapsed_days  := NULL;
465         p_no_of_repeats := NULL;
466       END IF;
467     CLOSE cur_c1;
468   EXCEPTION
469     WHEN OTHERS THEN
470       Fnd_Message.Set_name('IGS','IGS_GE_UNHANDLED_EXP');
471       FND_MESSAGE.SET_TOKEN('NAME','IGS_CO_PROCESS.corp_check_document_attributes');
472       IGS_GE_MSG_STACK.ADD;
473       App_Exception.Raise_Exception;
474   END corp_check_document_attributes;
475 
476   PROCEDURE corp_check_interaction_history(
477     p_person_id         IN       NUMBER,
478     p_sys_ltr_code      IN       VARCHAR2,
479     p_document_id       IN       NUMBER,
480     p_application_id    IN       NUMBER ,
481     p_course_cd         IN       VARCHAR2,
482     p_adm_seq_no        IN       NUMBER ,
483     p_awd_cal_type      IN       VARCHAR2,
484     p_awd_seq_no        IN       NUMBER ,
485     p_elapsed_days      IN       NUMBER,
486     p_no_of_repeats     IN       NUMBER,
487     p_send_letter       OUT NOCOPY      VARCHAR2
488   ) AS
489   /*************************************************************
490   Created By :Nalin Kumar
491   Date Created on : 05-Feb-2002
492   Purpose : This procedure will check interaction history and return a value to
493             inform whether a document can be sent or not.
494   Know limitations, enhancements or remarks
495   Change History
496   Who             When            What
497 
498   (reverse chronological order - newest change first)
499       Pacross         12-Sep-2005     Included references into the IGS_CO_COV_LTR_RELS table, to ensure all
500 				      letters that were created as an edit of the current one are included in the
501 				      count
502       Bayadav         24-MAY-2002     Included two system letter codes 'ENADHOC', 'SFADHOC' for adhoc letters as
503 				      a part of bug 2376434
504       vskumar	      30-May-2006     Xbuild3 performance fixes. Changed curosr queries for cur_c1, cur_adhoc1,
505 				      cur_adackmt1.
506   ***************************************************************/
507    CURSOR cur_c1_part1 (cp_document_id    NUMBER,
508                    cp_person_id      NUMBER,
509        cp_application_id NUMBER,
510        cp_course_cd      VARCHAR2,
511        cp_adm_seq_no     NUMBER)IS
512   SELECT count(*) cnt, max(requested_date) max_requested_date
513         FROM igs_co_interaction_history_v
514         WHERE document_id = cp_document_id
515         and student_id = cp_person_id
516         and adm_application_number = cp_application_id
517         and nominated_course_cd = cp_course_cd
518         and sequence_number = cp_adm_seq_no
519         and ( comp_status = 'SUCCESS' OR
520               request_id IN (SELECT request_id FROM jtf_fm_status));
521 
522  l_cur_c1_part1 cur_c1_part1%ROWTYPE;
523 
524     CURSOR cur_c1_part2 (cp_document_id    NUMBER,
525                    cp_person_id      NUMBER,
526 	   cp_application_id NUMBER,
527 	   cp_course_cd      VARCHAR2,
528            cp_adm_seq_no     NUMBER)IS
529     SELECT count(1) cnt, max(requested_date) max_requested_date
530            FROM igs_co_interaction_history_v
531 	   WHERE document_id in (SELECT CHILD_ITEM_ID
532 			        FROM IGS_CO_COV_LTR_RELS
533 				WHERE BASE_ITEM_ID = cp_document_id)
534 	      and student_id = cp_person_id
535 	      and adm_application_number = cp_application_id
536 	      and nominated_course_cd = cp_course_cd
537 	      and sequence_number = cp_adm_seq_no
538 	      and ( comp_status = 'SUCCESS' OR
539 		    request_id IN (SELECT request_id FROM jtf_fm_status));
540 
541    l_cur_c1_part2 cur_c1_part2%ROWTYPE;
542 
543     CURSOR cur_adhoc1_part1 (cp_document_id    NUMBER,
544                        cp_person_id      NUMBER)IS
545     SELECT count(1) cnt, max(requested_date) max_requested_date
546         FROM igs_co_interaction_history_v
547         WHERE document_id = cp_document_id
548         and student_id = cp_person_id
549         and ( comp_status = 'SUCCESS' OR
550               request_id IN (SELECT request_id FROM jtf_fm_status));
551 
552 
553     CURSOR cur_adhoc1_part2 (cp_document_id    NUMBER,
554                        cp_person_id      NUMBER)IS
555     SELECT count(1) cnt, max(requested_date) max_requested_date
556         FROM igs_co_interaction_history_v
557         WHERE document_id in (SELECT CHILD_ITEM_ID
558                               FROM IGS_CO_COV_LTR_RELS
559                               WHERE BASE_ITEM_ID = cp_document_id)
560         and student_id = cp_person_id
561         and ( comp_status = 'SUCCESS' OR
562               request_id IN (SELECT request_id FROM jtf_fm_status));
563 
564     l_cur_adhoc1_part1 cur_adhoc1_part1%ROWTYPE;
565     l_cur_adhoc1_part2 cur_adhoc1_part2%ROWTYPE;
566 
567    CURSOR cur_adackmt1_part1 (cp_document_id    NUMBER,
568                          cp_person_id      NUMBER,
569                      cp_application_id NUMBER)IS
570     SELECT count(1) cnt, max(requested_date) max_requested_date
571       FROM igs_co_interaction_history_v
572       WHERE document_id = cp_document_id
573       and student_id = cp_person_id
574       and adm_application_number = cp_application_id
575       and ( comp_status = 'SUCCESS' OR
576             request_id IN (SELECT request_id FROM jtf_fm_status));
577 
578    CURSOR cur_adackmt1_part2 (cp_document_id    NUMBER,
579                          cp_person_id      NUMBER,
580                      cp_application_id NUMBER)IS
581    SELECT count(1) cnt, max(requested_date) max_requested_date
582       FROM igs_co_interaction_history_v
583       WHERE document_id in (SELECT CHILD_ITEM_ID
584                             FROM IGS_CO_COV_LTR_RELS
585                             WHERE BASE_ITEM_ID = cp_document_id)
586       and student_id = cp_person_id
587       and adm_application_number = cp_application_id
588       and ( comp_status = 'SUCCESS' OR
589            request_id IN (SELECT request_id FROM jtf_fm_status));
590 
591 
592     l_cur_adackmt1_part1 cur_adackmt1_part1%ROWTYPE;
593     l_cur_adackmt1_part2 cur_adackmt1_part2%ROWTYPE;
594 
595 --**
596     CURSOR cur_get_per_num(cp_person_id NUMBER) IS
597     SELECT person_number
598     FROM igs_pe_person_base_v
599     WHERE person_id = TO_NUMBER(cp_person_id);
600     l_cur_get_per_num cur_get_per_num%ROWTYPE;
601 
602     l_count NUMBER(16);
603     l_requested_date DATE;
604     l_retcode NUMBER(1);
605     l_errbuf VARCHAR2(1000);
606   BEGIN
607 
608     corp_check_request_status(
609         errbuf            => l_errbuf,
610         retcode           => l_retcode,
611   p_person_id       => p_person_id ,
612         p_document_id     => p_document_id    ,
613         p_application_id  => p_application_id ,
614         p_course_cd       => p_course_cd      ,
615         p_adm_seq_no      => p_adm_seq_no     ,
616         p_awd_cal_type    => p_awd_cal_type   ,
617         p_awd_seq_no      => p_awd_seq_no     ,
618         p_elapsed_days    => p_elapsed_days   ,
619         p_no_of_repeats   => p_no_of_repeats  ,
620       p_sys_ltr_code    => p_sys_ltr_code);
621 
622     IF  p_sys_ltr_code NOT IN ('FAAWARD','FAMISTM','FADISBT','ADRESID','ADADHOC','FAADHOC','GENERIC','ADACKMT','ENADHOC','SFADHOC')  THEN
623       OPEN cur_c1_part1(p_document_id,
624                   p_person_id,
625                   p_application_id,
626                   p_course_cd,
627                   p_adm_seq_no);
628       FETCH cur_c1_part1 INTO l_cur_c1_part1;
629       CLOSE cur_c1_part1;
630 
631      OPEN cur_c1_part2(p_document_id,
632 	          p_person_id,
633                   p_application_id,
634                   p_course_cd,
635                   p_adm_seq_no);
636       FETCH cur_c1_part2 INTO l_cur_c1_part2;
637       CLOSE cur_c1_part2;
638 
639       l_count := l_cur_c1_part1.cnt + l_cur_c1_part2.cnt;
640 
641 
642       IF l_cur_c1_part1.max_requested_date > l_cur_c1_part2.max_requested_date THEN
643              l_requested_date := l_cur_c1_part1.max_requested_date;
644       ELSE
645 	     l_requested_date := l_cur_c1_part2.max_requested_date;
646       END IF;
647 
648     ELSIF p_sys_ltr_code IN ('ADADHOC','FAADHOC','GENERIC','ADRESID','ENADHOC','SFADHOC') THEN
649 
650      OPEN cur_adhoc1_part1(p_document_id,
651                       p_person_id);
652       FETCH cur_adhoc1_part1 INTO l_cur_adhoc1_part1;
653       CLOSE cur_adhoc1_part1;
654 
655       OPEN cur_adhoc1_part2(p_document_id,
656                       p_person_id);
657       FETCH cur_adhoc1_part2 INTO l_cur_adhoc1_part2;
658       CLOSE cur_adhoc1_part2;
659 
660       l_count := l_cur_adhoc1_part1.cnt + l_cur_adhoc1_part2.cnt;
661 
662       IF l_cur_adhoc1_part1.max_requested_date > l_cur_adhoc1_part2.max_requested_date THEN
663         l_requested_date := l_cur_adhoc1_part1.max_requested_date;
664       ELSE
665         l_requested_date := l_cur_adhoc1_part2.max_requested_date;
666       END IF;
667 
668     ELSIF p_sys_ltr_code = 'ADACKMT' THEN
669       OPEN cur_adackmt1_part1(p_document_id,
670                         p_person_id,
671                         p_application_id);
672       FETCH cur_adackmt1_part1 INTO l_cur_adackmt1_part1;
673       CLOSE cur_adackmt1_part1;
674 
675       OPEN cur_adackmt1_part2(p_document_id,
676                         p_person_id,
677                         p_application_id);
678       FETCH cur_adackmt1_part2 INTO l_cur_adackmt1_part2;
679       CLOSE cur_adackmt1_part2;
680 
681       l_count := l_cur_adackmt1_part1.cnt + l_cur_adackmt1_part2.cnt;
682 
683       IF l_cur_adackmt1_part1.max_requested_date > l_cur_adackmt1_part2.max_requested_date THEN
684         l_requested_date := l_cur_adackmt1_part1.max_requested_date;
685       ELSE
686         l_requested_date := l_cur_adackmt1_part2.max_requested_date;
687       END IF;
688 
689     END IF;
690     p_send_letter := 'FALSE';
691     IF p_elapsed_days IS NULL AND p_no_of_repeats IS NULL THEN
692       p_send_letter := 'TRUE';
693       RETURN;
694     END IF;
695     --GSCC FILE.DATE.5 Compliance  3071111 asbala
696     IF (TRUNC(SYSDATE) - TRUNC(l_requested_date)) < NVL(p_elapsed_days,0) THEN
697       p_send_letter := 'FALSE';
698       OPEN cur_get_per_num(p_person_id);
699       FETCH cur_get_per_num into l_cur_get_per_num;
700         fnd_message.set_name('IGS','IGS_CO_ELAPSED_DAYS');
701         fnd_message.set_token('PERSON',l_cur_get_per_num.person_number);
702         fnd_file.put_line(fnd_file.log,fnd_message.get());
703         fnd_file.put_line(FND_FILE.LOG,' ');
704       CLOSE cur_get_per_num;
705     ELSIF NVL(p_no_of_repeats,10000) <= l_count THEN
706       p_send_letter := 'FALSE';
707       OPEN cur_get_per_num(p_person_id);
708       FETCH cur_get_per_num into l_cur_get_per_num;
709         fnd_message.set_name('IGS','IGS_CO_NO_REPEATS');
710         fnd_message.set_token('PERSON',l_cur_get_per_num.person_number);
711         fnd_file.put_line(fnd_file.log,fnd_message.get());
712         fnd_file.put_line(FND_FILE.LOG,' ');
713       CLOSE cur_get_per_num;
714     ELSE
715       p_send_letter := 'TRUE';
716     END IF;
717   EXCEPTION
718     WHEN OTHERS THEN
719       Fnd_Message.Set_name('IGS','IGS_GE_UNHANDLED_EXP');
720       FND_MESSAGE.SET_TOKEN('NAME','IGS_CO_PROCESS.corp_check_interaction_history');
721       IGS_GE_MSG_STACK.ADD;
722       App_Exception.Raise_Exception;
723   END corp_check_interaction_history;
724 
725   PROCEDURE corp_submit_fulfil_request(
726     p_letter_type       IN       VARCHAR2,
727     p_person_id         IN       NUMBER,
728     p_email_address     IN       VARCHAR2,
729     p_content_id        IN       NUMBER,
730     p_award_year        IN       VARCHAR2,  --New
731     p_sys_ltr_code      IN       VARCHAR2,  --New
732     p_adm_appl_number   IN       NUMBER,    --New
733     p_nominated_course_cd IN     VARCHAR2,  --New
734     p_appl_sequence_number IN    NUMBER,    --New
735     p_fulfillment_req   IN       VARCHAR2,
736     p_crm_user_id       IN       NUMBER,
737     p_media_type        IN       VARCHAR2,
738     p_destination       IN       VARCHAR2,
739     p_fax_number        IN       VARCHAR2, --New
740     p_reply_days        IN       VARCHAR2,
741     p_panel_code        IN       VARCHAR2,
742     p_request_id        OUT NOCOPY      NUMBER,
743     p_request_status    OUT NOCOPY      VARCHAR2,
744     p_reply_email       IN  VARCHAR2  ,
745     p_sender_email      IN  VARCHAR2  ,
746     p_cc_email          IN  VARCHAR2 ,
747     p_org_unit_id       IN  NUMBER,
748     p_preview           IN  VARCHAR2,
749     p_awd_cal_type      IN  VARCHAR2,
750     p_awd_ci_seq_number IN  NUMBER,
751     p_awd_prd_cd        IN  VARCHAR2,
752     p_preview_version_id  IN       NUMBER,
753     p_preview_version     IN       NUMBER
754   ) AS
755   /*************************************************************
756   Created By :Nalin Kumar
757   Date Created on : 05-Feb-2002
758   Purpose : This procedure will accept parameters and submit fulfilment requests.
759   Know limitations, enhancements or remarks
760   Change History
761   Who             When            What
762   (reverse chronological order - newest change first)
763    pradhakr        13-Aug-2002    Added the parameter p_destination, which takes the
764           destination name (i.e) printer name if the media type
765           selected is printer. Changes as part of bug# 2472250
766    kpadiyar        19-NOV-2002   Added check if hold exists - Correspondence Enhancement - SWS102
767                                  Added check for relation between document and query and pass
768          the content type as relevant.
769    kumma           07-JUN-2003   2853531, Changed the cursor cur_get_sub to use the lookup type also
770                                  Replace the three CRM API calls jtf_fm_request_grp.start_request, jtf_fm_request_grp.get_content_xml and
771          jtf_fm_request_grp.submit_request into a single API Call of IGS_CO_API.SEND_REQUEST, which inturn calls
772          the create_fulfillment CRM API.
773    kumma           21-AUG-2003   3104787, Added the code to check if the query is attached with a template and accordingly pass the content type 'QUERY' or 'DATA'
774                                  Modified the else condition to not to consider the Adhoc letters while binding the bind variables.
775    ssaleem         09-SEP-2004   3630073. Added p_org_unit_id as a new parameter
776    pacross         11-APR-2005   Implemented code for Correspondance preview and edit fucntionality
777   ***************************************************************/
778     CURSOR cur_c1 (cp_content_id igs_co_mapping.document_id%TYPE,
779              cp_map_code igs_co_mapping.map_code%TYPE,
780        cp_sys_ltr_code igs_co_mapping.sys_ltr_code%TYPE) IS
781     SELECT map_description, version_id, citem_ver_id
782     FROM igs_co_mapping_v
783     WHERE document_id = cp_content_id
784     AND map_code = cp_map_code
785     AND sys_ltr_code = cp_sys_ltr_code
786     AND enable_flag ='Y';
787 
788     l_cur_c1 cur_c1%ROWTYPE;
789 
790     l_doc_desc igs_co_mapping_v.name%TYPE;
791     l_msg_count   NUMBER;
792     l_msg_data    VARCHAR2(2000);
793     l_content_xml VARCHAR2(5000);
794     l_varchar_tbl_bind_var jtf_fm_request_grp.g_varchar_tbl_type;
795     l_varchar_tbl_bind_var_type jtf_fm_request_grp.g_varchar_tbl_type;
796     l_varchar_tbl_bind_val jtf_fm_request_grp.g_varchar_tbl_type;
797     l_return_status  VARCHAR2(30);
798     l_awd_cal_type   igs_co_itm.cal_type%TYPE;
799     l_awd_seq_number igs_co_itm.ci_sequence_number%TYPE;
800     l_reply_date DATE;
801 
802     CURSOR cur_get_sub(cp_sys_ltr_code VARCHAR2) IS
803     SELECT description
804     FROM igs_lookups_view
805     WHERE lookup_code = cp_sys_ltr_code AND
806           Lookup_type = 'IGS_CO_SYS_LTR_CODE';
807 
808     l_cur_get_sub cur_get_sub%ROWTYPE;
809 
810     CURSOR check_hold_exists IS
811     SELECT COUNT ('x')
812     FROM  igs_pe_pers_encumb ppe, igs_pe_persenc_effct ppef
813     WHERE ppe.person_id = p_person_id
814     AND   ppe.person_id = ppef.person_id
815     AND   ppe.encumbrance_type = ppef.encumbrance_type
816     AND   ppe.start_dt = ppef.pen_start_dt
817     AND   ppef.s_encmb_effect_type = 'S_COR_BLK'
818     AND   trunc(ppef.pee_start_dt) <= trunc(sysdate)
819     AND   (ppef.expiry_dt IS NULL OR trunc(ppef.expiry_dt) > trunc(sysdate))
820     AND   trunc(ppe.start_dt) <= trunc(sysdate)
821     AND   (ppe.expiry_dt IS NULL OR trunc(ppe.expiry_dt) > trunc(sysdate));
822 
823 
824     l_hold_count NUMBER;
825 
826     CURSOR log_details IS
827     SELECT ppbv.full_name,ppbv.person_number,fet.description
828     FROM  igs_pe_pers_encumb ppe, igs_pe_persenc_effct ppef,igs_pe_person_base_v ppbv,igs_fi_encmb_type fet
829     WHERE ppe.person_id = p_person_id
830     AND   ppe.person_id = ppef.person_id
831     AND   ppe.person_id = ppbv.person_id
832     AND   ppe.encumbrance_type = ppef.encumbrance_type
833     AND   ppe.encumbrance_type = fet.encumbrance_type
834     AND   ppe.start_dt = ppef.pen_start_dt
835     AND   ppef.s_encmb_effect_type = 'S_COR_BLK'
836     AND   trunc(ppef.pee_start_dt) <= trunc(sysdate)
837     AND   (ppef.expiry_dt IS NULL OR trunc(ppef.expiry_dt) > trunc(sysdate))
838     AND   trunc(ppe.start_dt) <= trunc(sysdate)
839     AND   (ppe.expiry_dt IS NULL OR trunc(ppe.expiry_dt) > trunc(sysdate));
840 
841     l_full_name         igs_pe_person_base_v.full_name%TYPE;
842     l_person_number     igs_pe_person_base_v.person_number%TYPE;
843     l_encumbrance_desc  igs_fi_encmb_type.description%TYPE;
844 
845     l_query_id     jtf_fm_query_mes.query_id%TYPE;
846     l_content_type VARCHAR2(10);
847     l_tmp_var                 VARCHAR2(4000);
848     l_tmp_var1                 VARCHAR2(4000);
849     l_version_id   NUMBER;
850     -- Empty Arrays to reset the value
851     le_varchar_tbl_bind_var jtf_fm_request_grp.g_varchar_tbl_type;
852     le_varchar_tbl_bind_var_type jtf_fm_request_grp.g_varchar_tbl_type;
853     le_varchar_tbl_bind_val jtf_fm_request_grp.g_varchar_tbl_type;
854     l_query_exists VARCHAR2(1);
855     l_citem_ver_id NUMBER;
856     l_extended_header VARCHAR2(32000);
857     l_id  VARCHAR2(500);
858 
859     l_reply_days VARCHAR2(10);
860 
861     -- Cursor to log the person's processed
862     CURSOR c_per_processed (p_person_id NUMBER) IS
863         SELECT person_number,full_name
864   FROM   igs_pe_person_base_v
865   WHERe  person_id = p_person_id;
866 
867      --Cursor to get the citem_version_id
868      CURSOR c_check_relation (cp_item_id ibc_citem_versions_b.content_item_id%TYPE,
869                               cp_version_id ibc_citem_versions_b.version_number%TYPE)  IS
870           SELECT 'Y'
871     FROM ibc_compound_relations
872     WHERE CITEM_VERSION_ID = (SELECT CITEM_VERSION_ID FROM ibc_citem_versions_b
873                               WHERE CONTENT_ITEM_ID = cp_item_id AND
874                   VERSION_NUMBER  = cp_version_id)
875     AND ATTRIBUTE_TYPE_CODE = 'QUERY';  -- ssawhney modified after OCM migration.
876 
877      --Cursor to get the reply date
878      CURSOR c_reply_date(p_reply_days NUMBER)  IS
879         SELECT SYSDATE + NVL(TO_NUMBER(p_reply_days),0)
880   FROM   DUAL;
881 
882      --Cursor to get the reply date
883       CURSOR c_intr_reply_date (
884                p_person_id igs_ad_panel_dtls.person_id%TYPE,
885          p_adm_appl_number igs_ad_panel_dtls.admission_appl_number%TYPE,
886                p_nominated_course_cd igs_ad_panel_dtls.nominated_course_cd%TYPE,
887          p_appl_sequence_number igs_ad_panel_dtls.sequence_number%TYPE,
888          p_panel_code igs_ad_panel_dtls.panel_code%TYPE)IS
889         SELECT NVL(MAX(ipl.INTERVIEW_DATE),MAX(ipm.INTERVIEW_DATE)) - NVL(TO_NUMBER(p_reply_days),0)
890   FROM   igs_ad_panel_dtls ipl ,
891          igs_ad_pnmembr_dtls ipm
892   WHERE  ipl.panel_dtls_id = ipm.panel_dtls_id AND
893          ipl.person_id = p_person_id AND
894          ipl.admission_appl_number =p_adm_appl_number AND
895          ipl.nominated_course_cd = p_nominated_course_cd AND
896          ipl.sequence_number = p_appl_sequence_number AND
897          ipl.panel_code = p_panel_code ;
898 
899       -- Cursor to get address info of an Orgn Unit
900       CURSOR  c_org_unit_addr(cp_party_id hz_parties.party_id%TYPE) IS
901         SELECT P.ADDRESS1, P.ADDRESS2, P.ADDRESS3, P.ADDRESS4, P.POSTAL_CODE,
902                P.PARTY_NAME, TERR.TERRITORY_SHORT_NAME COUNTRY, P.CITY,
903                P.STATE, P.PROVINCE, P.COUNTY
904         FROM
905                HZ_PARTIES P, FND_TERRITORIES_VL TERR
906         WHERE
907                P.PARTY_ID = cp_party_id AND
908                TERR.TERRITORY_CODE = P.COUNTRY ;
909 
910       l_org_unit_addr c_org_unit_addr%ROWTYPE;
911 
912       -- Cursor to obtain the primary email address of the primary address of an Orgn Unit
913       CURSOR c_org_unit_email(cp_id_flag hz_party_sites.IDENTIFYING_ADDRESS_FLAG%TYPE,
914                               cp_owner_tbl  hz_contact_points.OWNER_TABLE_NAME%TYPE,
915             cp_cnt_type  hz_contact_points.CONTACT_POINT_TYPE%TYPE,
916             cp_prim_flag hz_contact_points.PRIMARY_FLAG%TYPE,
917             cp_party_id HZ_PARTY_SITES.PARTY_ID%TYPE) IS
918         SELECT
919            CPE.EMAIL_ADDRESS
920   FROM
921     HZ_PARTY_SITES PS,
922     HZ_CONTACT_POINTS CPE
923   WHERE
924     PS.PARTY_ID = cp_party_id AND
925     PS.IDENTIFYING_ADDRESS_FLAG = cp_id_flag AND
926     CPE.OWNER_TABLE_NAME = cp_owner_tbl AND
927     CPE.CONTACT_POINT_TYPE  = cp_cnt_type AND
928     CPE.OWNER_TABLE_ID = PS.PARTY_SITE_ID AND
929     CPE.PRIMARY_FLAG  = cp_prim_flag;
930 
931      l_org_unit_email c_org_unit_email%ROWTYPE;
932 
933      -- Cursor to obtain the Phone/Fax of an Organization Unit
934      CURSOR c_org_unit_phone (cp_id_flag hz_party_sites.IDENTIFYING_ADDRESS_FLAG%TYPE,
935                               cp_owner_tbl  hz_contact_points.OWNER_TABLE_NAME%TYPE,
936             cp_cnt_type  hz_contact_points.CONTACT_POINT_TYPE%TYPE,
937             cp_status hz_contact_points.STATUS%TYPE,
938             cp_party_id hz_party_sites.PARTY_ID%TYPE,
939             cp_line_type1 hz_contact_points.PHONE_LINE_TYPE%TYPE,
940             cp_line_type2 hz_contact_points.PHONE_LINE_TYPE%TYPE) IS
941          SELECT
942           NVL (CPP.PHONE_AREA_CODE,'*') PHONE_AREA_CODE,
943     NVL (CPP.PHONE_COUNTRY_CODE,'*') PHONE_COUNTRY_CODE,
944     NVL (CPP.PHONE_NUMBER,'*') PHONE_NUMBER,
945     NVL (CPP.PHONE_EXTENSION,'*') PHONE_EXTENSION,
946     CPP.PHONE_LINE_TYPE
947   FROM
948           HZ_PARTY_SITES PS,
949     HZ_CONTACT_POINTS CPP
950   WHERE
951     PS.PARTY_ID = cp_party_id AND
952     PS.IDENTIFYING_ADDRESS_FLAG = cp_id_flag AND
953     CPP.OWNER_TABLE_NAME  = cp_owner_tbl AND
954     CPP.CONTACT_POINT_TYPE = cp_cnt_type AND
955     CPP.PHONE_LINE_TYPE IN(cp_line_type1,cp_line_type2) AND
956     CPP.OWNER_TABLE_ID = PS.PARTY_SITE_ID AND
957     CPP.STATUS = cp_status
958   ORDER BY
959           CPP.PRIMARY_FLAG DESC  ;
960 
961      l_org_unit_phone c_org_unit_phone%ROWTYPE;
962      l_fax_count NUMBER;
963      l_phone_count NUMBER;
964 
965      l_fax_val VARCHAR2(300);
966      l_phone_val VARCHAR2(300);
967 
968   BEGIN
969     l_query_exists := 'N';
970     l_fax_count :=0;
971     l_phone_count := 0;
972     l_fax_val := NULL;
973     l_phone_val := NULL;
974 
975          --MMKUMAR, bug 4681183
976 	 IF p_sys_ltr_code IN ('ADNORSP','ADINTRW') THEN
977 	       l_reply_days := p_reply_days;
978 	 ELSE
979 	       l_reply_days := null;
980 	 END IF;
981 
982      --**  proc level logging.
983          IF fnd_log.test(fnd_log.level_procedure,l_prog_label) THEN
984             IF (l_request_id IS NULL) THEN
985               l_request_id := fnd_global.conc_request_id;
986             END IF;
987             l_label := 'igs.plsql.igs_co_process.corp_submit_fulfil_request.JUST_ENTERED_INSIDE_corp_submit_fulfil_request';
988             l_debug_str :=  'values';
989             l_debug_str := l_debug_str || 'p_letter_type=' ||   p_letter_type;
990             l_debug_str := l_debug_str || ',p_person_id=' ||  p_person_id     ;
991             l_debug_str := l_debug_str || ',p_email_address=' ||  p_email_address  ;
992             l_debug_str := l_debug_str || ',p_content_id=' ||  p_content_id        ;
993             l_debug_str := l_debug_str || ',p_award_year=' ||  p_award_year        ;
994             l_debug_str := l_debug_str || ',p_sys_ltr_code=' ||  p_sys_ltr_code     ;
995             l_debug_str := l_debug_str || ',p_adm_appl_number=' ||  p_adm_appl_number;
996             l_debug_str := l_debug_str || ',p_nominated_course_cd=' ||  p_nominated_course_cd ;
997             l_debug_str := l_debug_str || ',p_appl_sequence_number=' ||  p_appl_sequence_number;
998             l_debug_str := l_debug_str || ',p_fulfillment_req=' ||  p_fulfillment_req   ;
999             l_debug_str := l_debug_str || ',p_crm_user_id=' ||  p_crm_user_id      ;
1000             l_debug_str := l_debug_str || ',p_media_type=' ||  p_media_type        ;
1001             l_debug_str := l_debug_str || ',p_destination=' ||  p_destination      ;
1002             l_debug_str := l_debug_str || ',p_fax_number=' ||  p_fax_number        ;
1003             l_debug_str := l_debug_str || ',p_reply_days=' ||  p_reply_days        ;
1004 	    l_debug_str := l_debug_str || ',l_reply_days=' ||  l_reply_days        ;
1005             l_debug_str := l_debug_str || ',p_panel_code=' ||  p_panel_code        ;
1006             l_debug_str := l_debug_str || ',p_reply_email=' ||  p_reply_email   ;
1007             l_debug_str := l_debug_str || ',p_sender_email=' ||  p_sender_email ;
1008             l_debug_str := l_debug_str || ',p_cc_email=' ||  p_cc_email         ;
1009             l_debug_str := l_debug_str || ',p_org_unit_id=' ||  p_org_unit_id   ;
1010             l_debug_str := l_debug_str || ',p_preview=' ||  p_preview           ;
1011             l_debug_str := l_debug_str || ',p_awd_cal_type=' ||  p_awd_cal_type  ;
1012             l_debug_str := l_debug_str || ',p_awd_ci_seq_number=' ||  p_awd_ci_seq_number ;
1013             l_debug_str := l_debug_str || ',p_awd_prd_cd=' ||  p_awd_prd_cd  ;
1014 
1015             fnd_log.string_with_context( fnd_log.level_procedure,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,TO_CHAR(l_request_id));
1016          END IF;
1017      --**
1018 
1019     l_doc_desc := NULL;
1020     OPEN cur_c1(p_content_id,'DOCUMENT',p_sys_ltr_code);
1021     FETCH cur_c1 INTO l_cur_c1;
1022       l_doc_desc := l_cur_c1.map_description;
1023       l_version_id := l_cur_c1.version_id;   --ssawhney IBC.C version concept changes
1024       l_citem_ver_id := l_cur_c1.citem_ver_id; --ssawhney IBC.C version concept changes
1025     CLOSE cur_c1;
1026 
1027     -- If there was no mapping since this is an updated document, then use the passed in version id's.
1028     -- PACROSS - 11-SEP-2005
1029     IF p_preview = 'Y' AND l_version_id IS NULL AND l_citem_ver_id IS NULL
1030       AND p_preview_version IS NOT NULL AND p_preview_version_id IS NOT NULL THEN
1031       l_version_id := p_preview_version;
1032       l_citem_ver_id := p_preview_version_id;
1033     END IF;
1034 
1035     --**  proc level logging.
1036          IF fnd_log.test(fnd_log.level_procedure,l_prog_label) THEN
1037             IF (l_request_id IS NULL) THEN
1038               l_request_id := fnd_global.conc_request_id;
1039             END IF;
1040             l_label := 'igs.plsql.igs_co_process.corp_submit_fulfil_request.gotthevalues';
1041             l_debug_str :=  'hurrreeeeeeee got the values';
1042             fnd_log.string_with_context( fnd_log.level_procedure,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,TO_CHAR(l_request_id));
1043          END IF;
1044      --**
1045 
1046     IF l_doc_desc IS NULL THEN
1047       OPEN cur_get_sub(p_sys_ltr_code);
1048       FETCH cur_get_sub INTO l_cur_get_sub;
1049         l_doc_desc := l_cur_get_sub.description;
1050       CLOSE cur_get_sub;
1051     END IF;
1052   IF p_letter_type = 'SYSTEM' THEN
1053    OPEN check_hold_exists;
1054     FETCH check_hold_exists INTO l_hold_count;
1055    CLOSE check_hold_exists;
1056   END IF;
1057 
1058    IF NVL(l_hold_count,0) = 0 THEN
1059     --
1060     --  To start the submit fulfilment request by invoking CRM API
1061     --
1062 
1063 
1064     jtf_fm_request_grp.start_request (
1065       p_api_version     => 1,
1066       p_init_msg_list   => 'T',
1067       x_return_status   => l_return_status,
1068       x_msg_count       => l_msg_count,
1069       x_msg_data        => l_msg_data,
1070       x_request_id      => p_request_id);
1071 
1072     --
1073     --  To populate the bind parameters.
1074     --
1075 
1076      --**  proc level logging.
1077          IF fnd_log.test(fnd_log.level_procedure,l_prog_label) THEN
1078             IF (l_request_id IS NULL) THEN
1079               l_request_id := fnd_global.conc_request_id;
1080             END IF;
1081             l_label := 'igs.plsql.igs_co_process.corp_submit_fulfil_request.startrequest';
1082             l_debug_str :=  'Person ID :' ||p_person_id ||
1083                       'FA Calendar :'||l_awd_cal_type||'-'||l_awd_seq_number||
1084           'Appl Details :' ||p_adm_appl_number||'-'||p_appl_sequence_number||
1085                          '-' ||p_nominated_course_cd||'-'||l_reply_date ||
1086           'Content ID :' ||p_content_id ||
1087                       --'Content Type :'||l_content_type ||
1088           'Version :' ||l_version_id ||
1089           'Citem Ver Id :'||l_citem_ver_id ||
1090           'Return Status :' || l_return_status || '-' || l_msg_data;
1091             fnd_log.string_with_context( fnd_log.level_procedure,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,TO_CHAR(l_request_id));
1092          END IF;
1093      --**
1094 
1095 
1096      IF l_return_status IN ('E','U') THEN
1097           -- FND_MSG_PUB.Count_And_Get( p_count => l_msg_count, p_data  => l_msg_data );
1098     -- FND_FILE.PUT_LINE(FND_FILE.LOG,l_msg_data);
1099 
1100     IF l_msg_count > 1 THEN
1101                FOR i IN 1..l_msg_count
1102                LOOP
1103                     l_tmp_var := fnd_msg_pub.get(p_encoded => fnd_api.g_false);
1104         l_tmp_var1 := l_tmp_var1 || l_tmp_var;
1105                END LOOP;
1106          FND_FILE.PUT_LINE(FND_FILE.LOG,l_tmp_var1);
1107     ELSE
1108               FND_FILE.PUT_LINE(FND_FILE.LOG,l_msg_data ||'-' ||l_msg_count);
1109           END IF;
1110     RETURN;
1111      END IF;
1112 
1113 
1114     l_varchar_tbl_bind_var(1)      := 'p_person_id';
1115     l_varchar_tbl_bind_var_type(1) := 'NUMBER';
1116     l_varchar_tbl_bind_val(1)      := p_person_id;
1117 
1118 
1119     IF p_org_unit_id IS NOT NULL THEN
1120        OPEN c_org_unit_addr (p_org_unit_id);
1121        FETCH c_org_unit_addr INTO l_org_unit_addr;
1122        CLOSE c_org_unit_addr;
1123 
1124        IF l_org_unit_addr.ADDRESS1 IS NOT NULL THEN
1125          OPEN c_org_unit_email ( 'Y','HZ_PARTY_SITES', 'EMAIL', 'Y',p_org_unit_id);
1126          FETCH c_org_unit_email INTO l_org_unit_email;
1127          CLOSE c_org_unit_email;
1128 
1129    OPEN c_org_unit_phone ( 'Y','HZ_PARTY_SITES', 'PHONE', 'A',p_org_unit_id,'GEN','FAX');
1130    LOOP
1131            FETCH c_org_unit_phone INTO l_org_unit_phone;
1132            EXIT WHEN (c_org_unit_phone%NOTFOUND OR (l_fax_count = 3 AND l_phone_count = 3));
1133 
1134            IF l_org_unit_phone.PHONE_LINE_TYPE = 'FAX'  AND l_fax_count < 3 THEN
1135              l_fax_count := l_fax_count + 1;
1136              l_fax_val := l_fax_val || l_org_unit_phone.PHONE_COUNTRY_CODE || '-' ||
1137                                  l_org_unit_phone.PHONE_AREA_CODE || '-' ||
1138                l_org_unit_phone.PHONE_NUMBER || '-' ||
1139                l_org_unit_phone.PHONE_EXTENSION || ',';
1140            END IF;
1141 
1142            IF l_org_unit_phone.PHONE_LINE_TYPE = 'GEN' AND l_phone_count < 3 THEN
1143              l_phone_count := l_phone_count + 1;
1144              l_phone_val := l_phone_val || l_org_unit_phone.PHONE_COUNTRY_CODE || '-' ||
1145                                      l_org_unit_phone.PHONE_AREA_CODE || '-' ||
1146                    l_org_unit_phone.PHONE_NUMBER || '-' ||
1147                    l_org_unit_phone.PHONE_EXTENSION || ',';
1148 
1149      END IF;
1150 
1151    END LOOP;
1152          CLOSE c_org_unit_phone;
1153 
1154          IF l_phone_val IS NOT NULL THEN
1155      l_phone_val := SUBSTR(l_phone_val,0,LENGTH(l_phone_val)-1);
1156    END IF;
1157 
1158          IF l_fax_val IS NOT NULL THEN
1159      l_fax_val := SUBSTR(l_fax_val,0,LENGTH(l_fax_val)-1);
1160    END IF;
1161        END IF;
1162     END IF;
1163 
1164    IF fnd_log.test(fnd_log.level_procedure,l_prog_label) THEN
1165     IF (l_request_id IS NULL) THEN
1166       l_request_id := fnd_global.conc_request_id;
1167     END IF;
1168     l_label := 'igs.plsql.igs_co_process.corp_submit_fulfil_request.beforecontentxml';
1169     l_debug_str :=  'p_org_phone :' ||l_phone_val ||
1170           ' p_org_fax :'||l_fax_val ||' p_org_address1 :'||l_org_unit_addr.ADDRESS1||' p_org_address2 :'||l_org_unit_addr.ADDRESS2||
1171           ' p_org_address3 :'||l_org_unit_addr.ADDRESS3||' p_org_address4 :'||l_org_unit_addr.ADDRESS4||
1172           ' p_org_party_name :'||l_org_unit_addr.PARTY_NAME||' p_org_postal_code :'||l_org_unit_addr.POSTAL_CODE||
1173           ' p_org_country :'||l_org_unit_addr.COUNTRY||' p_org_county :'||l_org_unit_addr.COUNTY||
1174           ' p_org_city :'||l_org_unit_addr.CITY||' p_org_province :'||l_org_unit_addr.PROVINCE||
1175           ' p_org_state :'||l_org_unit_addr.STATE||' p_org_email_address :'||l_org_unit_email.EMAIL_ADDRESS;
1176     fnd_log.string_with_context( fnd_log.level_procedure,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,TO_CHAR(l_request_id));
1177 
1178    END IF;
1179 
1180     l_varchar_tbl_bind_var(2)      := 'p_org_phone';
1181     l_varchar_tbl_bind_var_type(2) := 'VARCHAR2';
1182     l_varchar_tbl_bind_val(2)      := l_phone_val;
1183 
1184     l_varchar_tbl_bind_var(3)      := 'p_org_fax';
1185     l_varchar_tbl_bind_var_type(3) := 'VARCHAR2';
1186     l_varchar_tbl_bind_val(3)      := l_fax_val;
1187 
1188     l_varchar_tbl_bind_var(4)      := 'p_org_address1';
1189     l_varchar_tbl_bind_var_type(4) := 'VARCHAR2';
1190     l_varchar_tbl_bind_val(4)      := l_org_unit_addr.ADDRESS1;
1191 
1192     l_varchar_tbl_bind_var(5)      := 'p_org_address2';
1193     l_varchar_tbl_bind_var_type(5) := 'VARCHAR2';
1194     l_varchar_tbl_bind_val(5)      := l_org_unit_addr.ADDRESS2;
1195 
1196     l_varchar_tbl_bind_var(6)      := 'p_org_address3';
1197     l_varchar_tbl_bind_var_type(6) := 'VARCHAR2';
1198     l_varchar_tbl_bind_val(6)      := l_org_unit_addr.ADDRESS3;
1199 
1200     l_varchar_tbl_bind_var(7)      := 'p_org_address4';
1201     l_varchar_tbl_bind_var_type(7) := 'VARCHAR2';
1202     l_varchar_tbl_bind_val(7)      := l_org_unit_addr.ADDRESS4;
1203 
1204     l_varchar_tbl_bind_var(8)      := 'p_org_party_name';
1205     l_varchar_tbl_bind_var_type(8) := 'VARCHAR2';
1206     l_varchar_tbl_bind_val(8)      := l_org_unit_addr.PARTY_NAME;
1207 
1208     l_varchar_tbl_bind_var(9)      := 'p_org_postal_code';
1209     l_varchar_tbl_bind_var_type(9) := 'VARCHAR2';
1210     l_varchar_tbl_bind_val(9)      := l_org_unit_addr.POSTAL_CODE;
1211 
1212     l_varchar_tbl_bind_var(10)      := 'p_org_country';
1213     l_varchar_tbl_bind_var_type(10) := 'VARCHAR2';
1214     l_varchar_tbl_bind_val(10)      := l_org_unit_addr.COUNTRY;
1215 
1216     l_varchar_tbl_bind_var(11)      := 'p_org_county';
1217     l_varchar_tbl_bind_var_type(11) := 'VARCHAR2';
1218     l_varchar_tbl_bind_val(11)      := l_org_unit_addr.COUNTY;
1219 
1220     l_varchar_tbl_bind_var(12)      := 'p_org_city';
1221     l_varchar_tbl_bind_var_type(12) := 'VARCHAR2';
1222     l_varchar_tbl_bind_val(12)      := l_org_unit_addr.CITY;
1223 
1224     l_varchar_tbl_bind_var(13)      := 'p_org_province';
1225     l_varchar_tbl_bind_var_type(13) := 'VARCHAR2';
1226     l_varchar_tbl_bind_val(13)      := l_org_unit_addr.PROVINCE;
1227 
1228     l_varchar_tbl_bind_var(14)      := 'p_org_state';
1229     l_varchar_tbl_bind_var_type(14) := 'VARCHAR2';
1230     l_varchar_tbl_bind_val(14)      := l_org_unit_addr.STATE;
1231 
1232     l_varchar_tbl_bind_var(15)      := 'p_org_email_address';
1233     l_varchar_tbl_bind_var_type(15) := 'VARCHAR2';
1234     l_varchar_tbl_bind_val(15)      := l_org_unit_email.EMAIL_ADDRESS;
1235 
1236 
1237     IF p_sys_ltr_code IN ('FAAWARD','FAMISTM','FADISBT') THEN
1238       IF p_award_year IS NOT NULL THEN
1239         l_awd_cal_type := SUBSTR (p_award_year,1, 10);
1240         l_awd_seq_number := TO_NUMBER(SUBSTR (p_award_year,11));
1241       END IF;
1242 
1243       l_varchar_tbl_bind_var(16)      := 'p_awd_cal_type';
1244       l_varchar_tbl_bind_var_type(16) := 'VARCHAR2';
1245       l_varchar_tbl_bind_val(16)      := l_awd_cal_type;
1246       l_varchar_tbl_bind_var(17)      := 'p_awd_seq_number';
1247       l_varchar_tbl_bind_var_type(17) := 'NUMBER';
1248       l_varchar_tbl_bind_val(17)      := l_awd_seq_number;
1249 
1250     ELSIF p_sys_ltr_code = 'ADACKMT' THEN
1251       l_varchar_tbl_bind_var(16)      := 'p_adm_appl_number';
1252       l_varchar_tbl_bind_var_type(16) := 'NUMBER';
1253       l_varchar_tbl_bind_val(16)      := p_adm_appl_number;
1254 
1255     --kumma, 3104787, Added the following code to not to take adhoc letters
1256     ELSIF p_sys_ltr_code NOT IN ('ADRESID','ADADHOC','FAADHOC','GENERIC','ADRESID','ENADHOC','SFADHOC') THEN
1257       l_varchar_tbl_bind_var(16)      := 'p_appl_sequence_number';
1258       l_varchar_tbl_bind_var_type(16) := 'NUMBER';
1259       l_varchar_tbl_bind_val(16)      := p_appl_sequence_number;
1260 
1261       l_varchar_tbl_bind_var(17)      := 'p_adm_appl_number';
1262       l_varchar_tbl_bind_var_type(17) := 'NUMBER';
1263       l_varchar_tbl_bind_val(17)      := p_adm_appl_number;
1264 
1265       l_varchar_tbl_bind_var(18)      := 'p_nominated_course_cd';
1266       l_varchar_tbl_bind_var_type(18) := 'VARCHAR2';
1267       l_varchar_tbl_bind_val(18)      := p_nominated_course_cd;
1268 
1269       IF p_sys_ltr_code = 'ADNORSP' THEN
1270         OPEN c_reply_date(l_reply_days) ;
1271   FETCH c_reply_date INTO l_reply_date ;
1272   CLOSE c_reply_date;
1273 
1274         l_varchar_tbl_bind_var(19)      := 'REPLY_DATE';
1275         l_varchar_tbl_bind_var_type(19) := 'DATE';
1276         l_varchar_tbl_bind_val(19)      := l_reply_date;
1277       ELSIF p_sys_ltr_code = 'ADINTRW' THEN
1278 
1279         OPEN c_intr_reply_date(p_person_id,
1280                          p_adm_appl_number,
1281                                p_nominated_course_cd,
1282                          p_appl_sequence_number,
1283                          p_panel_code) ;
1284   FETCH c_intr_reply_date INTO l_reply_date ;
1285   CLOSE c_intr_reply_date;
1286 
1287         IF NVL(l_reply_date,SYSDATE) <= SYSDATE THEN
1288     l_reply_date := SYSDATE;
1289   END IF;
1290         l_varchar_tbl_bind_var(19)      := 'p_panel_code';
1291         l_varchar_tbl_bind_var_type(19) := 'VARCHAR2';
1292         l_varchar_tbl_bind_val(19)      := p_panel_code;
1293 
1294         l_varchar_tbl_bind_var(20)      := 'REPLY_DATE';
1295         l_varchar_tbl_bind_var_type(20) := 'DATE';
1296         l_varchar_tbl_bind_val(20)      := l_reply_date;
1297 
1298       END IF;
1299     END IF;
1300 
1301 
1302      --kumma, 3104787, Added the following code to check that if the content type should be query and data
1303      -- need to pass the version id because the table doesnt hold citem_ver_id
1304 
1305      OPEN c_check_relation (p_content_id, l_version_id);
1306      FETCH c_check_relation INTO l_query_exists;
1307      CLOSE c_check_relation;
1308 
1309      IF l_query_exists = 'Y' THEN
1310           l_content_type := 'QUERY';
1311      ELSE
1312           l_content_type := 'DATA';
1313 
1314           l_varchar_tbl_bind_var := le_varchar_tbl_bind_var;
1315     l_varchar_tbl_bind_var_type := le_varchar_tbl_bind_var_type;
1316     l_varchar_tbl_bind_val  := le_varchar_tbl_bind_val;
1317 
1318      END IF;
1319 
1320 
1321 
1322     --
1323     --  To Submit fulfilment request by invoking CRM API
1324     --
1325 
1326      --**  proc level logging.
1327          IF fnd_log.test(fnd_log.level_procedure,l_prog_label) THEN
1328             IF (l_request_id IS NULL) THEN
1329               l_request_id := fnd_global.conc_request_id;
1330             END IF;
1331             l_label := 'igs.plsql.igs_co_process.corp_submit_fulfil_request.CALLING_GET_CONTENT_XML WITH PARAMS';
1332             l_debug_str :=  'values ;';
1333             l_debug_str :=  l_debug_str || 'p_content_id=' || p_content_id;
1334             l_debug_str :=  l_debug_str || 'p_media_type,=' || p_media_type;
1335             l_debug_str :=  l_debug_str || 'p_email_address,=' || p_email_address;
1336             l_debug_str :=  l_debug_str || 'p_destination,=' || p_destination;
1337             l_debug_str :=  l_debug_str || 'l_content_type,=' || l_content_type;
1338             l_debug_str :=  l_debug_str || 'p_request_id,=' || p_request_id;
1339             --l_debug_str :=  l_debug_str || 'l_content_xml,=' || l_content_xml;
1340             l_debug_str :=  l_debug_str || 'l_citem_ver_id,=' || l_citem_ver_id;
1341             l_debug_str :=  l_debug_str || 'p_fax_number,=' || p_fax_number;
1342             fnd_log.string_with_context( fnd_log.level_procedure,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,TO_CHAR(l_request_id));
1343          END IF;
1344      --**
1345 
1346     jtf_fm_request_grp.get_content_xml (
1347       p_api_version     => 1,
1348       p_init_msg_list   => 'T',
1349       x_return_status   => l_return_status,
1350       x_msg_count       => l_msg_count,
1351       x_msg_data        => l_msg_data,
1352       p_bind_var        => l_varchar_tbl_bind_var,
1353       p_bind_val        => l_varchar_tbl_bind_val,
1354       p_bind_var_type   => l_varchar_tbl_bind_var_type,
1355       p_content_id      => p_content_id,
1356       p_media_type      => p_media_type,
1357       p_email           => p_email_address,
1358       p_printer         => p_destination,
1359       p_content_type    => l_content_type,
1360       p_request_id      => p_request_id,
1361       x_content_xml     => l_content_xml,
1362       P_CONTENT_SOURCE  => 'OCM',
1363       P_VERSION         => l_citem_ver_id ,   -- CITEM version information IBC.C changes. THIS SHOULD NOT BE l_version_id
1364       p_fax             => p_fax_number
1365       );
1366 
1367      --FND_FILE.PUT_LINE(FND_FILE.LOG,l_version_id ||' /'||l_content_xml);
1368      --**  proc level logging.
1369          IF fnd_log.test(fnd_log.level_procedure,l_prog_label) THEN
1370             IF (l_request_id IS NULL) THEN
1371               l_request_id := fnd_global.conc_request_id;
1372             END IF;
1373             l_label := 'igs.plsql.igs_co_process.corp_submit_fulfil_request.aftercontentxml';
1374             l_debug_str :=  'Content Type :' ||l_content_type ||
1375 	                    'Return Status :'||l_return_status ||'-' ||l_msg_data;
1376              l_debug_str := l_debug_str || l_content_xml;
1377             fnd_log.string_with_context( fnd_log.level_procedure,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,TO_CHAR(l_request_id));
1378          END IF;
1379      --**
1380 
1381 
1382      IF l_return_status IN ('E','U') THEN
1383           --FND_MSG_PUB.Count_And_Get( p_count => l_msg_count, p_data  => l_msg_data );
1384     --FND_FILE.PUT_LINE(FND_FILE.LOG,l_msg_data);
1385 
1386     IF l_msg_count > 1 THEN
1387                FOR i IN 1..l_msg_count
1388                LOOP
1389                     l_tmp_var := fnd_msg_pub.get(p_encoded => fnd_api.g_false);
1390         l_tmp_var1 := l_tmp_var1 || l_tmp_var;
1391                END LOOP;
1392          FND_FILE.PUT_LINE(FND_FILE.LOG,l_tmp_var1);
1393     ELSE
1394               FND_FILE.PUT_LINE(FND_FILE.LOG,l_msg_data ||'-' ||l_msg_count);
1395           END IF;
1396     RETURN;
1397      END IF;
1398 
1399      /*
1400      l_id := '[email protected]';
1401      l_extended_header:= '<extended_header><header_name>email_from_address</header_name><header_value>' || l_id || '</header_value>' ;
1402      l_extended_header:= l_extended_header||'<header_name>email_reply_to_address</header_name><header_value>' || l_id || '</header_value></extended_header>';
1403      */
1404 
1405     IF l_org_unit_email.EMAIL_ADDRESS IS NOT NULL OR p_reply_email IS NOT NULL OR
1406        p_sender_email IS NOT NULL OR
1407        p_cc_email IS NOT NULL THEN
1408 
1409        l_extended_header:= '<extended_header>';
1410 
1411        IF p_reply_email IS NOT NULL THEN
1412           l_extended_header := l_extended_header || '<header_name>email_reply_to_address</header_name><header_value>' || p_reply_email || '</header_value>' ;
1413        ELSIF l_org_unit_email.EMAIL_ADDRESS IS NOT NULL  THEN
1414           l_extended_header := l_extended_header || '<header_name>email_reply_to_address</header_name><header_value>' || l_org_unit_email.EMAIL_ADDRESS  || '</header_value>' ;
1415        END IF;
1416 
1417        IF p_sender_email IS NOT NULL THEN
1418           l_extended_header := l_extended_header || '<header_name>email_from_address</header_name><header_value>' || p_sender_email || '</header_value>' ;
1419        ELSIF l_org_unit_email.EMAIL_ADDRESS IS NOT NULL  THEN
1420           l_extended_header := l_extended_header || '<header_name>email_from_address</header_name><header_value>' || l_org_unit_email.EMAIL_ADDRESS || '</header_value>' ;
1421        END IF;
1422 
1423        IF p_cc_email IS NOT NULL THEN
1424           l_extended_header := l_extended_header || '<header_name>email_cc_address</header_name><header_value>' || p_cc_email  || '</header_value>' ;
1425        END IF;
1426 
1427        l_extended_header := l_extended_header || '</extended_header>';
1428 
1429     END IF;
1430 
1431     IF p_preview = 'Y' THEN
1432       -- Store away all of the parameters required for a preview so they can be used later to fulfill the request.
1433       -- PACROSS - 11-SEP-2005
1434 
1435            --**  proc level logging.
1436          IF fnd_log.test(fnd_log.level_procedure,l_prog_label) THEN
1437             IF (l_request_id IS NULL) THEN
1438               l_request_id := fnd_global.conc_request_id;
1439             END IF;
1440             l_label := 'igs.plsql.igs_co_process.corp_submit_fulfil_request.before_inserting_into_IGS_CO_PREV_REQS';
1441             l_debug_str :=  'just going to insert into IGS_CO_PREV_REQS';
1442             l_debug_str := l_debug_str || 'conc_request_id='||fnd_global.conc_request_id;
1443             l_debug_str := l_debug_str || ',p_letter_type='||p_letter_type;
1444             l_debug_str := l_debug_str || ',p_person_id=' || p_person_id;
1445             l_debug_str := l_debug_str || ',p_email_address=' || p_email_address;
1446             l_debug_str := l_debug_str || ',p_content_id=' || p_content_id;
1447             l_debug_str := l_debug_str || ',p_content_id=' || p_content_id;
1448             l_debug_str := l_debug_str || ',p_award_year=' || p_award_year;
1449             l_debug_str := l_debug_str || ',p_sys_ltr_code=' || p_sys_ltr_code;
1450             l_debug_str := l_debug_str || ',p_adm_appl_number=' || p_adm_appl_number;
1451             l_debug_str := l_debug_str || ',p_nominated_course_cd=' || p_nominated_course_cd;
1452             l_debug_str := l_debug_str || ',p_appl_sequence_number=' || p_appl_sequence_number;
1453             l_debug_str := l_debug_str || ',p_fulfillment_req=' || p_fulfillment_req;
1454             l_debug_str := l_debug_str || ',p_crm_user_id=' || p_crm_user_id;
1455             l_debug_str := l_debug_str || ',p_media_type=' || p_media_type;
1456             l_debug_str := l_debug_str || ',p_destination=' || p_destination;
1457             l_debug_str := l_debug_str || ',p_fax_number=' || p_fax_number;
1458             l_debug_str := l_debug_str || ',p_reply_days=' || p_reply_days;
1459 	    l_debug_str := l_debug_str || ',l_reply_days=' || l_reply_days;
1460             l_debug_str := l_debug_str || ',p_panel_code=' || p_panel_code;
1461             l_debug_str := l_debug_str || ',p_reply_email=' || p_reply_email;
1462             l_debug_str := l_debug_str || ',p_sender_email=' || p_sender_email;
1463             l_debug_str := l_debug_str || ',p_cc_email=' || p_cc_email;
1464             l_debug_str := l_debug_str || ',p_org_unit_id=' || p_org_unit_id;
1465             l_debug_str := l_debug_str || ',p_awd_cal_type=' || p_awd_cal_type;
1466             l_debug_str := l_debug_str || ',p_awd_ci_seq_number=' || p_awd_ci_seq_number;
1467             l_debug_str := l_debug_str || ',l_citem_ver_id=' || l_citem_ver_id;
1468             l_debug_str := l_debug_str || ',l_citem_ver_id=' || l_citem_ver_id;
1469             l_debug_str := l_debug_str || ',l_doc_desc=' || l_doc_desc;
1470             --l_debug_str := l_debug_str || ',l_content_xml=' || l_content_xml;
1471             --l_debug_str := l_debug_str || ',l_content_xml=' || l_content_xml;
1472             l_debug_str := l_debug_str || ',p_request_id=' || p_request_id;
1473             --l_debug_str := l_debug_str || ',l_extended_header=' || l_extended_header;
1474             l_debug_str := l_debug_str || ',p_awd_prd_cd=' || p_awd_prd_cd;
1475 
1476 
1477             fnd_log.string_with_context( fnd_log.level_procedure,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,TO_CHAR(l_request_id));
1478          END IF;
1479            --**
1480 
1481      BEGIN
1482 
1483 	      INSERT INTO IGS_CO_PREV_REQS
1484 		 (CONCURRENT_REQUEST_ID, LETTER_TYPE_CODE, PERSON_ID,
1485 		  EMAIL_ADDRESS, ORIGINAL_CONTENT_ID, CURRENT_CONTENT_ID, AWARD_YEAR,
1486 		  SYS_LTR_CODE, ADM_APPL_NUMBER, NOMINATED_COURSE_CD, APPL_SEQUENCE_NUMBER,
1487 		  FULFILLMENT_REQ, CRM_USER_ID, MEDIA_TYPE_CODE, DESTINATION, FAX_NUMBER, REPLY_DAYS,
1488 		  PANEL_CODE, REPLY_EMAIL, SENDER_EMAIL, CC_EMAIL, ORG_UNIT_ID, AWD_CAL_TYPE,
1489 		  AWD_CI_SEQ_NUMBER, ORIGINAL_VERSION_ID, CURRENT_VERSION_ID, EMAIL_SUBJECT, ORIGINAL_CONTENT_XML,
1490 		  CURRENT_CONTENT_XML, FF_REQUEST_HIST_ID, EXTENDED_HEADER, DISTRIBUTION_ID, REQUEST_STATUS_CODE,
1491 		  OBJECT_VERSION_NUMBER, CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_LOGIN,
1492 		  LAST_UPDATE_DATE, AWARD_PRD_CD)
1493 	      VALUES
1494 		 (fnd_global.conc_request_id, p_letter_type, p_person_id,
1495 		  p_email_address, p_content_id, p_content_id, p_award_year,
1496 		  p_sys_ltr_code, p_adm_appl_number, p_nominated_course_cd, p_appl_sequence_number,
1497 		  p_fulfillment_req, p_crm_user_id, p_media_type, p_destination, p_fax_number, l_reply_days,
1498 		  p_panel_code, p_reply_email, p_sender_email, p_cc_email, p_org_unit_id, p_awd_cal_type,
1499 		  p_awd_ci_seq_number, l_citem_ver_id, l_citem_ver_id, l_doc_desc, l_content_xml,
1500 		  l_content_xml, p_request_id, l_extended_header, NULL, 'CREATED', 1,
1501 		  FND_GLOBAL.USER_ID, SYSDATE, FND_GLOBAL.USER_ID, NULL, SYSDATE, p_awd_prd_cd);
1502 
1503      EXCEPTION
1504           WHEN OTHERS THEN
1505 
1506           --**  proc level logging.
1507           IF fnd_log.test(fnd_log.level_procedure,l_prog_label) THEN
1508                IF (l_request_id IS NULL) THEN
1509                    l_request_id := fnd_global.conc_request_id;
1510                END IF;
1511                l_label := 'igs.plsql.igs_co_process.corp_submit_fulfil_request.excep_when_insert';
1512                l_debug_str :=  'inside exception section when inserting record in IGS_CO_PREV_REQS and exception is  ' || sqlerrm;
1513                fnd_log.string_with_context( fnd_log.level_procedure,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,TO_CHAR(l_request_id));
1514           END IF;
1515           --**
1516       Fnd_Message.Set_name('IGS','IGS_GE_UNHANDLED_EXP');
1517       FND_MESSAGE.SET_TOKEN('NAME','IGS_CO_PROCESS.corp_submit_fulfil_request');
1518       IGS_GE_MSG_STACK.ADD;
1519       App_Exception.Raise_Exception;
1520 
1521      END;
1522 	  --**  proc level logging.
1523 	 IF fnd_log.test(fnd_log.level_procedure,l_prog_label) THEN
1524 	    IF (l_request_id IS NULL) THEN
1525 	      l_request_id := fnd_global.conc_request_id;
1526 	    END IF;
1527 	    l_label := 'igs.plsql.igs_co_process.corp_submit_fulfil_request.after_inserting_into_IGS_CO_PREV_REQS';
1528 	    l_debug_str :=  'just after insert into IGS_CO_PREV_REQS';
1529 	    fnd_log.string_with_context( fnd_log.level_procedure,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,TO_CHAR(l_request_id));
1530 	 END IF;
1531 	 --**
1532 
1533 
1534            --**  proc level logging.
1535          IF fnd_log.test(fnd_log.level_procedure,l_prog_label) THEN
1536             IF (l_request_id IS NULL) THEN
1537               l_request_id := fnd_global.conc_request_id;
1538             END IF;
1539             l_label := 'igs.plsql.igs_co_process.corp_submit_fulfil_request.going_to_call_send_request';
1540             l_debug_str :=  'calling send_request with parameters l_doc_desc='||l_doc_desc;
1541             l_debug_str :=  l_debug_str || ',p_crm_user_id=' || p_crm_user_id;
1542             l_debug_str :=  l_debug_str || ',l_content_xml=' || l_content_xml;
1543             l_debug_str :=  l_debug_str || ',p_request_id=' || p_request_id;
1544             l_debug_str :=  l_debug_str || ',p_person_id=' || p_person_id;
1545             l_debug_str :=  l_debug_str || ',l_extended_header=' || l_extended_header;
1546             l_debug_str :=  l_debug_str || ',p_content_id=' || p_content_id;
1547             fnd_log.string_with_context( fnd_log.level_procedure,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,TO_CHAR(l_request_id));
1548          END IF;
1549            --**
1550 
1551       jtf_fm_request_grp.send_request (
1552         p_api_version     => 1,
1553         p_init_msg_list   => 'T',
1554         x_return_status   => l_return_status,
1555         x_msg_count       => l_msg_count,
1556         x_msg_data        => l_msg_data,
1557         p_subject         => l_doc_desc,
1558         p_user_id         => p_crm_user_id,
1559         p_content_xml     => l_content_xml,
1560         p_request_id      => p_request_id,
1561         p_party_id        => p_person_id,
1562         p_doc_id          => p_request_id,
1563         p_extended_header => l_extended_header,
1564         p_doc_ref         => to_char(p_content_id),
1565         p_preview          => FND_API.G_TRUE
1566       );
1567 
1568       --**  proc level logging.
1569 	 IF fnd_log.test(fnd_log.level_procedure,l_prog_label) THEN
1570 	    IF (l_request_id IS NULL) THEN
1571 	      l_request_id := fnd_global.conc_request_id;
1572 	    END IF;
1573 	    l_label := 'igs.plsql.igs_co_process.corp_submit_fulfil_request.after_call_to_send_request';
1574 	    l_debug_str :=  'just after call to send_request with status ' || l_return_status || ' and l_msg_data ' || l_msg_data;
1575 	    fnd_log.string_with_context( fnd_log.level_procedure,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,TO_CHAR(l_request_id));
1576 	 END IF;
1577      --**
1578 
1579     ELSE
1580       -- Submit the request as per pre-preview and edit
1581 
1582       jtf_fm_request_grp.submit_request (
1583         p_api_version     => 1,
1584         p_init_msg_list   => 'T',
1585         x_return_status   => l_return_status,
1586         x_msg_count       => l_msg_count,
1587         x_msg_data        => l_msg_data,
1588         p_subject         => l_doc_desc,
1589         p_user_id         => p_crm_user_id,
1590         --p_server_id       => p_fulfillment_req,
1591         p_content_xml     => l_content_xml,
1592         p_request_id      => p_request_id,
1593         p_party_id        => p_person_id,
1594         p_doc_id          => p_request_id,
1595         p_extended_header => l_extended_header,   --ssawhney testing.
1596         p_doc_ref         => to_char(p_content_id)
1597       );
1598     END IF;
1599 
1600     IF l_return_status = 'S' THEN
1601 
1602           p_request_status := 'SUBMITTED';
1603           OPEN c_per_processed(p_person_id);
1604           FETCH c_per_processed INTO l_person_number,l_full_name;
1605         Fnd_Message.Set_name('IGF','IGF_AW_PROC_STUD');
1606         FND_MESSAGE.SET_TOKEN('STDNT',l_person_number||' - '||l_full_name);
1607                     fnd_file.put_line(fnd_file.log,fnd_message.get);
1608         Fnd_Message.Set_name('IGS','IGS_CO_REQ_INFO');
1609         FND_MESSAGE.SET_TOKEN('REQUEST_ID',p_request_id);
1610                     fnd_file.put_line(fnd_file.log,fnd_message.get);
1611 
1612          IF igs_co_process.l_message_logged THEN
1613       igs_co_process.l_message_logged := FALSE;
1614          END IF;
1615           CLOSE c_per_processed;
1616     ELSE
1617           p_request_status := 'FAILURE';
1618     -- FND_MSG_PUB.Count_And_Get( p_count => l_msg_count, p_data  => l_msg_data );
1619     -- FND_FILE.PUT_LINE(FND_FILE.LOG,l_msg_data);
1620 
1621     IF l_msg_count > 1 THEN
1622                FOR i IN 1..l_msg_count
1623                LOOP
1624                     l_tmp_var := fnd_msg_pub.get(p_encoded => fnd_api.g_false);
1625         l_tmp_var1 := l_tmp_var1 || l_tmp_var;
1626                END LOOP;
1627          FND_FILE.PUT_LINE(FND_FILE.LOG,l_tmp_var1);
1628     ELSE
1629                FND_FILE.PUT_LINE(FND_FILE.LOG,l_msg_data ||'-' ||l_msg_count);
1630           END IF;
1631 
1632     END IF;
1633 
1634    --**  proc level logging.
1635 	 IF fnd_log.test(fnd_log.level_procedure,l_prog_label) THEN
1636 	    IF (l_request_id IS NULL) THEN
1637 	      l_request_id := fnd_global.conc_request_id;
1638 	    END IF;
1639 	    l_label := 'igs.plsql.igs_co_process.corp_submit_fulfil_request.aftersubmitrequest';
1640 	    l_debug_str :=  'Request ID :' ||p_request_id ||
1641 			    'Return Status :' ||l_return_status  ||'-' ||l_msg_data;
1642 	    fnd_log.string_with_context( fnd_log.level_procedure,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,TO_CHAR(l_request_id));
1643 	 END IF;
1644   --**
1645 
1646    l_corp_submit_fulfil_request := FALSE;
1647     COMMIT;
1648   ELSE
1649    l_corp_submit_fulfil_request := TRUE;
1650       IF NOT igs_co_process.l_message_logged THEN
1651    fnd_message.set_name('IGS','IGS_CO_HOLD_EXISTS');
1652    fnd_file.put_line(fnd_file.log,fnd_message.get);
1653    igs_co_process.l_message_logged := TRUE;
1654       END IF;
1655      OPEN log_details; LOOP
1656        FETCH log_details INTO l_full_name,l_person_number,l_encumbrance_desc;
1657          EXIT WHEN log_details%NOTFOUND;
1658    fnd_file.put_line(fnd_file.log,rpad(l_person_number,20,' ')||'             '||rpad(l_full_name,50,' ')||'    '||l_encumbrance_desc);
1659       END LOOP;
1660    CLOSE log_details;
1661   END IF;
1662   EXCEPTION
1663     WHEN OTHERS THEN
1664 
1665      --**  proc level logging.
1666          IF fnd_log.test(fnd_log.level_procedure,l_prog_label) THEN
1667             IF (l_request_id IS NULL) THEN
1668               l_request_id := fnd_global.conc_request_id;
1669             END IF;
1670             l_label := 'igs.plsql.igs_co_process.corp_submit_fulfil_request.inside_excep_section';
1671             l_debug_str :=  'inside exception section and exception is  ' || sqlerrm;
1672             fnd_log.string_with_context( fnd_log.level_procedure,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,TO_CHAR(l_request_id));
1673          END IF;
1674      --**
1675       Fnd_Message.Set_name('IGS','IGS_GE_UNHANDLED_EXP');
1676       FND_MESSAGE.SET_TOKEN('NAME','IGS_CO_PROCESS.corp_submit_fulfil_request');
1677       IGS_GE_MSG_STACK.ADD;
1678       App_Exception.Raise_Exception;
1679   END corp_submit_fulfil_request;
1680 
1681   PROCEDURE corp_post_process(
1682     p_person_id              IN        NUMBER,
1683     p_request_id             IN        NUMBER,
1684     p_document_id            IN        NUMBER,
1685     p_sys_ltr_code           IN        VARCHAR2,
1686     p_document_type          IN        VARCHAR2,
1687     p_adm_appl_number        IN        NUMBER,
1688     p_nominated_course_cd    IN        VARCHAR2,
1689     p_appl_seq_number        IN        NUMBER,
1690     p_awd_cal_type           IN        VARCHAR2,
1691     p_awd_ci_seq_number      IN        NUMBER,
1692     p_award_year             IN        VARCHAR2,
1693     p_delivery_type          IN        VARCHAR2,
1694     p_version_id             IN        NUMBER,
1695     p_award_prd_cd           IN        VARCHAR2
1696   ) AS
1697   /*************************************************************
1698   Created By :Nalin Kumar
1699   Date Created on : 05-Feb-2002
1700   Purpose : This procedure will perform post-processing.
1701   Know limitations, enhancements or remarks
1702   Change History
1703   Who             When            What
1704 
1705   (reverse chronological order - newest change first)
1706   ***************************************************************/
1707     l_rowid VARCHAR2(25);
1708   BEGIN
1709 
1710     IF p_sys_ltr_code = 'FAAWARD' THEN
1711       igf_aw_gen_004.award_letter_update(
1712         p_person_id     =>   p_person_id,
1713         p_award_year    =>   p_award_year,
1714         p_award_prd_cd  =>   p_award_prd_cd);
1715     ELSIF P_SYS_LTR_CODE = 'FAMISTM' THEN
1716       igf_aw_gen_004.missing_items_update(
1717         p_person_id     =>   p_person_id,
1718         p_award_year    =>   p_award_year);
1719     --Commented by Prajeesh as the Disbursement Update was happening before the CRM process it
1720     --pick up the record. As the record is getting updated first when CRM tries to pick, It is
1721     --Unable to pick up the record hence raises an Unhandled Exception.
1722     /*ELSIF P_SYS_LTR_CODE = 'FADISBT' THEN
1723       igf_aw_gen_004.loan_disbursement_update(
1724         p_person_id     =>   p_person_id,
1725         p_award_year    =>   p_award_year);*/
1726     END IF;
1727 
1728     --
1729     -- Insert the record into the igs_co_interac_hist table with the all relevant
1730     -- details and status from 'p_request_status'.
1731     --
1732     l_rowid := NULL;
1733     igs_co_interac_hist_pkg.insert_row(
1734       x_rowid                        =>  l_rowid,
1735       x_student_id                   =>  TO_NUMBER(p_person_id),
1736       x_request_id                   =>  TO_NUMBER(p_request_id),
1737       x_document_id                  =>  TO_NUMBER(p_document_id),
1738       x_document_type                =>  p_document_type,
1739       x_sys_ltr_code                 =>  p_sys_ltr_code,
1740       x_adm_application_number       =>  p_adm_appl_number,
1741       x_nominated_course_cd          =>  p_nominated_course_cd,
1742       x_sequence_number              =>  p_appl_seq_number,
1743       x_cal_type                     =>  p_awd_cal_type,
1744       x_ci_sequence_number           =>  p_awd_ci_seq_number,
1745       x_requested_date               =>  SYSDATE,
1746       x_delivery_type                =>  p_delivery_type,
1747       x_version_id                   =>  p_version_id
1748     );
1749 
1750     --**  proc level logging.
1751          IF fnd_log.test(fnd_log.level_procedure,l_prog_label) THEN
1752             IF (l_request_id IS NULL) THEN
1753               l_request_id := fnd_global.conc_request_id;
1754             END IF;
1755             l_label := 'igs.plsql.igs_co_process.corp_post_process.afterinteractioninsert';
1756             l_debug_str :=  'Doc id :' ||p_document_id || 'Version Id :' ||p_version_id ||
1757                       'Person Id :'||p_person_id;
1758             fnd_log.string_with_context( fnd_log.level_procedure,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,TO_CHAR(l_request_id));
1759          END IF;
1760      --**
1761 
1762   EXCEPTION
1763     WHEN OTHERS THEN
1764       Fnd_Message.Set_name('IGS','IGS_GE_UNHANDLED_EXP');
1765       FND_MESSAGE.SET_TOKEN('NAME','IGS_CO_PROCESS.corp_post_process');
1766       IGS_GE_MSG_STACK.ADD;
1767       App_Exception.Raise_Exception;
1768   END corp_post_process;
1769 
1770   PROCEDURE corp_get_system_letter_view(
1771     p_sys_ltr_code      IN       VARCHAR2,
1772     p_view_name         OUT NOCOPY      VARCHAR2,
1773     p_where_clause      OUT NOCOPY      VARCHAR2
1774   ) AS
1775   /*************************************************************
1776   Created By :Nalin Kumar
1777   Date Created on : 05-Feb-2002
1778   Purpose : This procedure returns the view name for the system letter code.
1779   Know limitations, enhancements or remarks
1780   Change History
1781   Who             When            What
1782 
1783   (reverse chronological order - newest change first)
1784       Bayadav         24-MAY-2002     Included two system letter codes 'ENADHOC', 'SFADHOC' for adhoc letters as a part of bug 2376434
1785   ***************************************************************/
1786   BEGIN
1787     IF p_sys_ltr_code IN ('ADADHOC','FAADHOC','GENERIC','ENADHOC','SFADHOC') THEN
1788       p_view_name := ' hz_parties';
1789     ELSIF   p_sys_ltr_code = 'ADMISTM' THEN
1790       p_view_name := ' igs_ad_missing_items_letter_v';
1791       p_where_clause := ' s_adm_outcome_status <> ''CANCELLED''';
1792     ELSIF p_sys_ltr_code = 'ADACKMT' THEN
1793       p_view_name := ' igs_ad_ack_letter_v';
1794       p_where_clause := ' s_adm_outcome_status <> ''CANCELLED''';
1795     ELSIF p_sys_ltr_code = 'ADRESID'   THEN
1796       p_view_name := ' igs_ad_resi_letter_v';
1797       p_where_clause := ' 1=1 ';
1798     ELSIF p_sys_ltr_code = 'ADACCEP'   THEN
1799       p_view_name := ' igs_ad_outcome_letters_v';
1800       p_where_clause := ' s_adm_outcome_status = ''OFFER''
1801             AND previous_term_adm_appl_number IS NULL
1802       AND previous_term_sequence_number IS NULL ';
1803     ELSIF p_sys_ltr_code = 'ADREJEC'   THEN
1804       p_view_name := ' igs_ad_outcome_letters_v';
1805       p_where_clause := ' s_adm_outcome_status = ''REJECTED''';
1806     ELSIF p_sys_ltr_code = 'ADWAITL'   THEN
1807       p_view_name := ' igs_ad_outcome_letters_v';
1808       p_where_clause := ' s_adm_outcome_status = ''WAITLIST''';
1809     ELSIF p_sys_ltr_code = 'ADNOQUT'   THEN
1810       p_view_name := ' igs_ad_outcome_letters_v';
1811       p_where_clause := ' s_adm_outcome_status = ''NO-QUOTA''';
1812     ELSIF p_sys_ltr_code = 'ADFUTSE'   THEN
1813       p_view_name := ' igs_ad_outcome_letters_v';
1814       p_where_clause := ' s_adm_outcome_status = ''OFFER-FUTURE-TERM''';
1815     ELSIF p_sys_ltr_code = 'ADCONOF'   THEN
1816       p_view_name := ' igs_ad_outcome_letters_v';
1817       p_where_clause := ' s_adm_outcome_status = ''COND-OFFER''';
1818     ELSIF p_sys_ltr_code = 'ADPADMS'   THEN
1819       p_view_name := ' igs_ad_postadm_miss_itm_ltr_v';
1820       p_where_clause := ' s_adm_outcome_status <> ''CANCELLED''';
1821     ELSIF p_sys_ltr_code = 'ADMFTSA'   THEN
1822       p_view_name := ' igs_ad_outcome_letters_v';
1823       p_where_clause := ' s_adm_outcome_status = ''OFFER''
1824                         AND   previous_term_adm_appl_number IS NOT NULL
1825                   AND   previous_term_sequence_number IS NOT NULL ';
1826     ELSIF p_sys_ltr_code = 'FAAWARD'   THEN
1827       p_view_name := ' igf_aw_per_list_v';
1828     ELSIF p_sys_ltr_code = 'FAMISTM'   THEN
1829       p_view_name := ' igf_ap_mis_itms_ltr_v';
1830     ELSIF p_sys_ltr_code = 'FADISBT'   THEN
1831       p_view_name := ' igf_sl_disb_ltr_v';
1832     ELSIF p_sys_ltr_code = 'ADNORSP'   THEN
1833       p_view_name := ' igs_ad_outcome_letters_v';
1834       p_where_clause := ' s_adm_outcome_status IN (''OFFER'',''COND-OFFER'') '||
1835                         ' AND S_ADM_OFFER_RESP_STATUS = ''PENDING'' '||
1836       ' AND SYSDATE > OFFER_RESPONSE_DT ';
1837     ELSIF p_sys_ltr_code = 'ADINTRW'   THEN
1838       p_view_name := ' igs_ad_interview_letters_v';
1839       p_where_clause := '1=1';
1840     END IF;
1841 
1842   EXCEPTION
1843     WHEN OTHERS THEN
1844       Fnd_Message.Set_name('IGS','IGS_GE_UNHANDLED_EXP');
1845       FND_MESSAGE.SET_TOKEN('NAME','IGS_CO_PROCESS.corp_get_system_letter_view');
1846       IGS_GE_MSG_STACK.ADD;
1847       App_Exception.Raise_Exception;
1848   END corp_get_system_letter_view;
1849 
1850   PROCEDURE corp_get_parameter_value(
1851     p_sys_ltr_code     IN       VARCHAR2,
1852     p_parameter_1      IN       VARCHAR2,
1853     p_parameter_2      IN       VARCHAR2,
1854     p_parameter_3      IN       VARCHAR2,
1855     p_parameter_4      IN       VARCHAR2,
1856     p_parameter_5      IN       VARCHAR2,
1857     p_parameter_6      IN       VARCHAR2,
1858     p_parameter_7      IN       VARCHAR2,
1859     p_parameter_8      IN       VARCHAR2,
1860     p_parameter_9      IN       VARCHAR2,
1861     p_parameter_value  OUT NOCOPY      VARCHAR2
1862   ) AS
1863   /*************************************************************
1864   Created By :Nalin Kumar
1865   Date Created on : 05-Feb-2002
1866   Purpose : This procedure accepts 5 parameters and builds a where
1867             clause for student selection.
1868   Know limitations, enhancements or remarks
1869   Change History
1870   Who             When            What
1871   ssaleem         28-OCT-2003     Bug : 3198795
1872                                   Part of the Dynamic/Static Person Groups modifications,
1873           In places where person group id is included to the SQL, a condition 1=1 is replaced.
1874   npalanis        23-OCT-2002     Bug : 2608360
1875                                   residency_status_id and residency_class_id is being removed from  igs_ad_resi_letter_v
1876                                   and the code class is being moved to igs_lookups therefore those are changed to
1877                                   residency_status_cd  and residency_class_cd.
1878   pkpatel         7-MAy-2003      Bug 2940810
1879                                   Modified for Bind Variable
1880   (reverse chronological order - newest change first)
1881   ***************************************************************/
1882 
1883     l_pers_group_id igs_ad_missing_items_letter_v.pers_group_id%TYPE;
1884     l_acad_cal_type VARCHAR(15); --igs_ad_missing_items_letter_v.acad_cal_type%TYPE;
1885     l_acad_ci_sequence_number igs_ad_missing_items_letter_v.acad_ci_sequence_number%TYPE;
1886     l_adm_cal_type VARCHAR(15); --igs_ad_ps_appl_inst.adm_cal_type%TYPE;
1887     l_adm_ci_sequence_number igs_ad_ps_appl_inst.adm_ci_sequence_number%TYPE;
1888     l_parameter_7 hz_parties.party_id%TYPE;
1889     l_parameter_8 igs_co_interac_hist.adm_application_number%TYPE;
1890     l_parameter_9 igs_co_interac_hist.nominated_course_cd%TYPE;
1891     l_parameter_10 igs_co_interac_hist.ci_sequence_number%TYPE;
1892 
1893   BEGIN
1894 	 --** proc level logging.
1895         IF fnd_log.test(fnd_log.level_procedure,l_prog_label) THEN
1896 
1897             l_label := 'igs.plsql.igs_co_process.corp_get_parameter_value';
1898             l_debug_str :=  'p_sys_ltr_code:'||p_sys_ltr_code;
1899 	    l_debug_str := l_debug_str ||' p_parameter_1 :'||p_parameter_1;
1900 	    l_debug_str := l_debug_str ||' p_parameter_2 :'||p_parameter_2;
1901 	    l_debug_str := l_debug_str ||' p_parameter_3 :'||p_parameter_3;
1902 	    l_debug_str := l_debug_str ||' p_parameter_4 :'||p_parameter_4;
1903 	    l_debug_str := l_debug_str ||' p_parameter_5 :'||p_parameter_5;
1904 	    l_debug_str := l_debug_str ||' p_parameter_6 :'||p_parameter_6;
1905 	    l_debug_str := l_debug_str ||' p_parameter_7 :'||p_parameter_7;
1906 	    l_debug_str := l_debug_str ||' p_parameter_8 :'||p_parameter_8;
1907 	    l_debug_str := l_debug_str ||' p_parameter_9 :'||p_parameter_9;
1908 
1909             fnd_log.string_with_context( fnd_log.level_procedure,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
1910         END IF;
1911    --**
1912 
1913     fnd_dsql.add_text(' AND ');
1914 
1915     IF p_parameter_1 IS NOT NULL THEN
1916       l_pers_group_id := TO_NUMBER(p_parameter_1);
1917     END IF;
1918 
1919     IF p_sys_ltr_code <> 'ADRESID' THEN
1920       IF p_parameter_1 IS NULL THEN
1921         l_acad_cal_type := RTRIM(SUBSTR (p_parameter_2,101, 10));
1922         l_acad_ci_sequence_number := TO_NUMBER(SUBSTR (p_parameter_2,112));
1923         l_adm_cal_type :=RTRIM(SUBSTR (p_parameter_3, 1, 10));
1924         l_adm_ci_sequence_number := TO_NUMBER(SUBSTR (p_parameter_3,11));
1925       END IF;
1926     END IF;
1927 
1928     IF p_sys_ltr_code IN('ADPADMS','ADMISTM') THEN
1929       l_parameter_7 := TO_NUMBER(SUBSTR (p_parameter_8,1,15));    --person_id
1930       l_parameter_8 := TO_NUMBER(SUBSTR (p_parameter_8,16,2));   --admission_appl_number
1931       l_parameter_9 := RTRIM(SUBSTR (p_parameter_8,18,6));       --nominated_course_cd
1932       l_parameter_10:= TO_NUMBER(SUBSTR (p_parameter_8,24,6));      --sequence_number
1933     END IF;
1934 
1935     IF p_sys_ltr_code = 'ADMISTM' THEN
1936       IF p_parameter_1 IS NOT NULL THEN
1937         fnd_dsql.add_text(' 1=1 ' );
1938       ELSE
1939         fnd_dsql.add_text(' acad_cal_type = ');
1940         fnd_dsql.add_bind(l_acad_cal_type);
1941         fnd_dsql.add_text(' AND acad_ci_sequence_number = ');
1942         fnd_dsql.add_bind(l_acad_ci_sequence_number);
1943         fnd_dsql.add_text(' AND adm_cal_type = ');
1944         fnd_dsql.add_bind(l_adm_cal_type);
1945         fnd_dsql.add_text(' AND adm_ci_sequence_number =');
1946         fnd_dsql.add_bind(l_adm_ci_sequence_number);
1947         fnd_dsql.add_text(' AND adm_process_cat =');
1948         fnd_dsql.add_bind(p_parameter_4);
1949         fnd_dsql.add_text(' AND adm_doc_status = ');
1950         fnd_dsql.add_bind(p_parameter_5);
1951         fnd_dsql.add_text(' AND org_unit_cd = ');
1952         fnd_dsql.add_bind(p_parameter_6);
1953         fnd_dsql.add_text(' AND person_id = ');
1954         fnd_dsql.add_bind(l_parameter_7);
1955         fnd_dsql.add_text(' AND adm_appl_number = ');
1956         fnd_dsql.add_bind(l_parameter_8);
1957         fnd_dsql.add_text(' AND nominated_course_cd = ');
1958         fnd_dsql.add_bind(l_parameter_9);
1959         fnd_dsql.add_text(' AND appl_sequence_number = ');
1960         fnd_dsql.add_bind(l_parameter_10);
1961       END IF;
1962 
1963     ELSIF P_SYS_LTR_CODE = 'ADACKMT' THEN
1964       IF p_parameter_1 IS NOT NULL THEN
1965         fnd_dsql.add_text(' 1=1 ' );
1966       ELSE
1967         fnd_dsql.add_text(' acad_cal_type = ');
1968         fnd_dsql.add_bind(l_acad_cal_type);
1969         fnd_dsql.add_text(' AND acad_ci_sequence_number = ');
1970         fnd_dsql.add_bind(l_acad_ci_sequence_number);
1971         fnd_dsql.add_text(' AND adm_cal_type = ');
1972         fnd_dsql.add_bind(l_adm_cal_type);
1973         fnd_dsql.add_text(' AND adm_ci_sequence_number = ');
1974         fnd_dsql.add_bind(l_adm_ci_sequence_number);
1975         fnd_dsql.add_text(' AND adm_process_cat = ');
1976         fnd_dsql.add_bind(p_parameter_4);
1977         fnd_dsql.add_text(' AND TRUNC(appl_dt) >= TRUNC(igs_ge_date.igsdate(');
1978         fnd_dsql.add_bind(p_parameter_5);
1979         fnd_dsql.add_text(')) AND TRUNC(appl_dt) <= TRUNC(igs_ge_date.igsdate(');
1980         fnd_dsql.add_bind(p_parameter_6);
1981         fnd_dsql.add_text('))');
1982       END IF;
1983     ELSIF P_SYS_LTR_CODE = 'ADRESID' THEN
1984       IF p_parameter_1 IS NOT NULL THEN
1985         fnd_dsql.add_text(' 1=1 ' );
1986       ELSE
1987         fnd_dsql.add_text(' residency_status_cd = ');
1988         fnd_dsql.add_bind(p_parameter_2);
1989         fnd_dsql.add_text(' AND residency_class_cd = ');
1990         fnd_dsql.add_bind(p_parameter_3);
1991         fnd_dsql.add_text(' AND TRUNC(evaluation_date) >= TRUNC(igs_ge_date.igsdate( ');
1992         fnd_dsql.add_bind(p_parameter_4);
1993         fnd_dsql.add_text(')) AND  TRUNC(evaluation_date) <= TRUNC(igs_ge_date.igsdate( ');
1994         fnd_dsql.add_bind(p_parameter_5);
1995         fnd_dsql.add_text('))');
1996       END IF;
1997     ELSIF P_SYS_LTR_CODE = 'ADACCEP' THEN
1998       IF p_parameter_1 IS NOT NULL THEN
1999         fnd_dsql.add_text(' 1=1 ' );
2000       ELSE
2001         fnd_dsql.add_text(' acad_cal_type = ');
2002         fnd_dsql.add_bind(l_acad_cal_type);
2003         fnd_dsql.add_text(' AND acad_ci_sequence_number = ');
2004         fnd_dsql.add_bind(l_acad_ci_sequence_number);
2005         fnd_dsql.add_text(' AND adm_cal_type = ');
2006         fnd_dsql.add_bind(l_adm_cal_type);
2007         fnd_dsql.add_text(' AND adm_ci_sequence_number = ');
2008         fnd_dsql.add_bind(l_adm_ci_sequence_number);
2009         fnd_dsql.add_text(' AND admission_process_category = ');
2010         fnd_dsql.add_bind(p_parameter_4);
2011         fnd_dsql.add_text(' AND TRUNC(appl_dt) >= TRUNC(igs_ge_date.igsdate(');
2012         fnd_dsql.add_bind(p_parameter_5);
2013         fnd_dsql.add_text(' )) AND TRUNC(appl_dt) <= TRUNC(igs_ge_date.igsdate(');
2014         fnd_dsql.add_bind(p_parameter_6);
2015         fnd_dsql.add_text(' )) AND admission_outcome_status = ');
2016         fnd_dsql.add_bind(p_parameter_7);
2017       END IF;
2018 
2019     ELSIF P_SYS_LTR_CODE = 'ADREJEC' THEN
2020       IF p_parameter_1 IS NOT NULL THEN
2021         fnd_dsql.add_text(' 1=1 ' );
2022       ELSE
2023         fnd_dsql.add_text(' acad_cal_type = ');
2024         fnd_dsql.add_bind(l_acad_cal_type);
2025         fnd_dsql.add_text(' AND acad_ci_sequence_number = ');
2026         fnd_dsql.add_bind(l_acad_ci_sequence_number);
2027         fnd_dsql.add_text(' AND adm_cal_type = ');
2028         fnd_dsql.add_bind(l_adm_cal_type);
2029         fnd_dsql.add_text(' AND adm_ci_sequence_number = ');
2030         fnd_dsql.add_bind(l_adm_ci_sequence_number);
2031         fnd_dsql.add_text(' AND admission_process_category = ');
2032         fnd_dsql.add_bind(p_parameter_4);
2033         fnd_dsql.add_text(' AND TRUNC(appl_dt) >= TRUNC(igs_ge_date.igsdate( ');
2034         fnd_dsql.add_bind(p_parameter_5);
2035         fnd_dsql.add_text(')) AND TRUNC(appl_dt) <= TRUNC(igs_ge_date.igsdate( ');
2036         fnd_dsql.add_bind(p_parameter_6);
2037         fnd_dsql.add_text(')) AND admission_outcome_status = ');
2038         fnd_dsql.add_bind(p_parameter_7);
2039       END IF;
2040     ELSIF P_SYS_LTR_CODE = 'ADWAITL' THEN
2041       IF p_parameter_1 IS NOT NULL THEN
2042         fnd_dsql.add_text(' 1=1 ' );
2043       ELSE
2044         fnd_dsql.add_text(' acad_cal_type = ');
2045         fnd_dsql.add_bind(l_acad_cal_type);
2046         fnd_dsql.add_text(' AND acad_ci_sequence_number = ');
2047         fnd_dsql.add_bind(l_acad_ci_sequence_number);
2048         fnd_dsql.add_text(' AND adm_cal_type = ');
2049         fnd_dsql.add_bind(l_adm_cal_type);
2050         fnd_dsql.add_text(' AND adm_ci_sequence_number = ');
2051         fnd_dsql.add_bind(l_adm_ci_sequence_number);
2052         fnd_dsql.add_text(' AND admission_process_category = ');
2053         fnd_dsql.add_bind(p_parameter_4);
2054         fnd_dsql.add_text(' AND TRUNC(appl_dt) >= TRUNC(igs_ge_date.igsdate(');
2055         fnd_dsql.add_bind(p_parameter_5);
2056         fnd_dsql.add_text(' )) AND TRUNC(appl_dt) <= TRUNC(igs_ge_date.igsdate(');
2057         fnd_dsql.add_bind(p_parameter_6);
2058         fnd_dsql.add_text(' )) AND admission_outcome_status = ');
2059         fnd_dsql.add_bind(p_parameter_7);
2060       END IF;
2061     ELSIF P_SYS_LTR_CODE = 'ADNOQUT' THEN
2062       IF p_parameter_1 IS NOT NULL THEN
2063         fnd_dsql.add_text(' 1=1 ' );
2064       ELSE
2065         fnd_dsql.add_text(' acad_cal_type = ');
2066         fnd_dsql.add_bind(l_acad_cal_type);
2067         fnd_dsql.add_text(' AND acad_ci_sequence_number = ');
2068         fnd_dsql.add_bind(l_acad_ci_sequence_number);
2069         fnd_dsql.add_text(' AND adm_cal_type = ');
2070         fnd_dsql.add_bind(l_adm_cal_type);
2071         fnd_dsql.add_text(' AND adm_ci_sequence_number = ');
2072         fnd_dsql.add_bind(l_adm_ci_sequence_number);
2073         fnd_dsql.add_text(' AND admission_process_category = ');
2074         fnd_dsql.add_bind(p_parameter_4);
2075         fnd_dsql.add_text(' AND TRUNC(appl_dt) >= TRUNC(igs_ge_date.igsdate(');
2076         fnd_dsql.add_bind(p_parameter_5);
2077         fnd_dsql.add_text(' )) AND TRUNC(appl_dt) <= TRUNC(igs_ge_date.igsdate(');
2078         fnd_dsql.add_bind(p_parameter_6);
2079         fnd_dsql.add_text(' )) AND admission_outcome_status = ');
2080         fnd_dsql.add_bind(p_parameter_7);
2081       END IF;
2082     ELSIF P_SYS_LTR_CODE = 'ADCONOF' THEN
2083       IF p_parameter_1 IS NOT NULL THEN
2084         fnd_dsql.add_text(' 1=1 ' );
2085       ELSE
2086         fnd_dsql.add_text(' acad_cal_type = ');
2087         fnd_dsql.add_bind(l_acad_cal_type);
2088         fnd_dsql.add_text(' AND acad_ci_sequence_number = ');
2089         fnd_dsql.add_bind(l_acad_ci_sequence_number);
2090         fnd_dsql.add_text(' AND adm_cal_type = ');
2091         fnd_dsql.add_bind(l_adm_cal_type);
2092         fnd_dsql.add_text(' AND adm_ci_sequence_number = ');
2093         fnd_dsql.add_bind(l_adm_ci_sequence_number);
2094         fnd_dsql.add_text(' AND admission_process_category = ');
2095         fnd_dsql.add_bind(p_parameter_4);
2096         fnd_dsql.add_text(' AND TRUNC(appl_dt) >= TRUNC(igs_ge_date.igsdate(');
2097         fnd_dsql.add_bind(p_parameter_5);
2098         fnd_dsql.add_text(' )) AND TRUNC(appl_dt) <= TRUNC(igs_ge_date.igsdate(');
2099         fnd_dsql.add_bind(p_parameter_6);
2100         fnd_dsql.add_text(' )) AND admission_outcome_status = ');
2101         fnd_dsql.add_bind(p_parameter_7);
2102       END IF;
2103     ELSIF P_SYS_LTR_CODE = 'ADPADMS' THEN
2104       IF p_parameter_1 IS NOT NULL THEN
2105         fnd_dsql.add_text(' 1=1 ' );
2106       ELSE
2107         fnd_dsql.add_text(' acad_cal_type = ');
2108         fnd_dsql.add_bind(l_acad_cal_type);
2109         fnd_dsql.add_text(' AND acad_ci_sequence_number = ');
2110         fnd_dsql.add_bind(l_acad_ci_sequence_number);
2111         fnd_dsql.add_text(' AND adm_cal_type = ');
2112         fnd_dsql.add_bind(l_adm_cal_type);
2113         fnd_dsql.add_text(' AND adm_ci_sequence_number = ');
2114         fnd_dsql.add_bind(l_adm_ci_sequence_number);
2115         fnd_dsql.add_text(' AND adm_process_cat = ');
2116         fnd_dsql.add_bind(p_parameter_4);
2117         fnd_dsql.add_text(' AND adm_doc_status = ');
2118         fnd_dsql.add_bind(p_parameter_5);
2119         fnd_dsql.add_text(' AND org_unit_cd = ');
2120         fnd_dsql.add_bind(p_parameter_6);
2121         fnd_dsql.add_text(' AND person_id = ');
2122         fnd_dsql.add_bind(l_parameter_7);
2123         fnd_dsql.add_text(' AND adm_appl_number = ');
2124         fnd_dsql.add_bind(l_parameter_8);
2125         fnd_dsql.add_text(' AND nominated_course_cd = ');
2126         fnd_dsql.add_bind(l_parameter_9);
2127         fnd_dsql.add_text(' AND appl_sequence_number = ');
2128         fnd_dsql.add_bind(l_parameter_10);
2129       END IF;
2130     ELSIF P_SYS_LTR_CODE = 'ADFUTSE' THEN
2131       IF p_parameter_1 IS NOT NULL THEN
2132         fnd_dsql.add_text(' 1=1 ' );
2133       ELSE
2134         fnd_dsql.add_text(' acad_cal_type = ');
2135         fnd_dsql.add_bind(l_acad_cal_type);
2136         fnd_dsql.add_text(' AND acad_ci_sequence_number = ');
2137         fnd_dsql.add_bind(l_acad_ci_sequence_number);
2138         fnd_dsql.add_text(' AND adm_cal_type = ');
2139         fnd_dsql.add_bind(l_adm_cal_type);
2140         fnd_dsql.add_text(' AND adm_ci_sequence_number = ');
2141         fnd_dsql.add_bind(l_adm_ci_sequence_number);
2142         fnd_dsql.add_text(' AND admission_process_category = ');
2143         fnd_dsql.add_bind(p_parameter_4);
2144         fnd_dsql.add_text(' AND TRUNC(appl_dt) >= TRUNC(igs_ge_date.igsdate(');
2145         fnd_dsql.add_bind(p_parameter_5);
2146         fnd_dsql.add_text(' )) AND TRUNC(appl_dt) <= TRUNC(igs_ge_date.igsdate(');
2147         fnd_dsql.add_bind(p_parameter_6);
2148         fnd_dsql.add_text(' )) AND admission_outcome_status = ');
2149         fnd_dsql.add_bind(p_parameter_7);
2150       END IF;
2151     ELSIF P_SYS_LTR_CODE = 'ADMFTSA' THEN
2152       IF p_parameter_1 IS NOT NULL THEN
2153         fnd_dsql.add_text(' 1=1 ' );
2154       ELSE
2155         fnd_dsql.add_text(' acad_cal_type = ');
2156         fnd_dsql.add_bind(l_acad_cal_type);
2157         fnd_dsql.add_text(' AND acad_ci_sequence_number = ');
2158         fnd_dsql.add_bind(l_acad_ci_sequence_number);
2159         fnd_dsql.add_text(' AND adm_cal_type = ');
2160         fnd_dsql.add_bind(l_adm_cal_type);
2161         fnd_dsql.add_text(' AND adm_ci_sequence_number = ');
2162         fnd_dsql.add_bind(l_adm_ci_sequence_number);
2163         fnd_dsql.add_text(' AND admission_process_category = ');
2164         fnd_dsql.add_bind(p_parameter_4);
2165         fnd_dsql.add_text(' AND TRUNC(appl_dt) >= TRUNC(igs_ge_date.igsdate(');
2166         fnd_dsql.add_bind(p_parameter_5);
2167         fnd_dsql.add_text(' )) AND TRUNC(appl_dt) <= TRUNC(igs_ge_date.igsdate(');
2168         fnd_dsql.add_bind(p_parameter_6);
2169         fnd_dsql.add_text(' )) AND admission_outcome_status = ');
2170         fnd_dsql.add_bind(p_parameter_7);
2171       END IF;
2172     ELSIF P_SYS_LTR_CODE = 'ADNORSP' THEN
2173       IF p_parameter_1 IS NOT NULL THEN
2174       -- person id group if dynamic will not be available.
2175       -- all persons in the group already resolved in the build_sql
2176         fnd_dsql.add_text(' 1=1');
2177       ELSE
2178         --** proc level logging.
2179         IF fnd_log.test(fnd_log.level_procedure,l_prog_label) THEN
2180 
2181             l_label := 'igs.plsql.igs_co_process.corp_get_parameter_value';
2182             l_debug_str := 'p_parameter_1 is NULL ';
2183 	    l_debug_str := l_debug_str ||' p_parameter_7 :'||p_parameter_7;
2184 	    l_debug_str := l_debug_str ||' p_parameter_8 :'||p_parameter_8;
2185 	    l_debug_str := l_debug_str ||' p_parameter_9 :'||p_parameter_9;
2186 
2187             fnd_log.string_with_context( fnd_log.level_procedure,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
2188         END IF;
2189         --**
2190         fnd_dsql.add_text(' acad_cal_type = ');
2191         fnd_dsql.add_bind(l_acad_cal_type);
2192         fnd_dsql.add_text(' AND acad_ci_sequence_number = ');
2193         fnd_dsql.add_bind(l_acad_ci_sequence_number);
2194         fnd_dsql.add_text(' AND adm_cal_type = ');
2195         fnd_dsql.add_bind(l_adm_cal_type);
2196         fnd_dsql.add_text(' AND adm_ci_sequence_number = ');
2197         fnd_dsql.add_bind(l_adm_ci_sequence_number);
2198         fnd_dsql.add_text(' AND admission_process_category = ');
2199         fnd_dsql.add_bind(p_parameter_4);
2200         fnd_dsql.add_text(' AND course_cd = ');
2201         fnd_dsql.add_bind(p_parameter_5);
2202         fnd_dsql.add_text(' AND location_cd = ');
2203         fnd_dsql.add_bind(p_parameter_6);
2204         fnd_dsql.add_text(' AND attendance_mode = ');
2205         fnd_dsql.add_bind(p_parameter_7);
2206         fnd_dsql.add_text(' AND attendance_type=');
2207         fnd_dsql.add_bind(p_parameter_9);
2208       END IF;
2209     ELSIF P_SYS_LTR_CODE = 'ADINTRW' THEN
2210       IF p_parameter_1 IS NOT NULL THEN
2211       -- person id group if dynamic will not be available.
2212       -- all persons in the group already resolved in the build_sql
2213         fnd_dsql.add_text(' 1=1');
2214       ELSE
2215         fnd_dsql.add_text(' acad_cal_type = ');
2216         fnd_dsql.add_bind(l_acad_cal_type);
2217         fnd_dsql.add_text(' AND acad_ci_sequence_number = ');
2218         fnd_dsql.add_bind(l_acad_ci_sequence_number);
2219         fnd_dsql.add_text(' AND adm_cal_type = ');
2220         fnd_dsql.add_bind(l_adm_cal_type);
2221         fnd_dsql.add_text(' AND adm_ci_sequence_number =');
2222         fnd_dsql.add_bind(l_adm_ci_sequence_number);
2223         fnd_dsql.add_text(' AND admission_process_category =');
2224         fnd_dsql.add_bind(p_parameter_4);
2225         fnd_dsql.add_text(' AND panel_code= ');
2226         fnd_dsql.add_bind(p_parameter_5);
2227         fnd_dsql.add_text(' AND TRUNC(interview_date) = TRUNC(igs_ge_date.igsdate(');
2228         fnd_dsql.add_bind(p_parameter_6);
2229         fnd_dsql.add_text(' )) AND attendance_mode= ');
2230         fnd_dsql.add_bind(p_parameter_7);
2231         fnd_dsql.add_text(' AND attendance_type= ');
2232         fnd_dsql.add_bind(p_parameter_9);
2233         fnd_dsql.add_text(' AND interview_date > SYSDATE');
2234       END IF;
2235     END IF;
2236   EXCEPTION
2237     WHEN OTHERS THEN
2238       Fnd_Message.Set_name('IGS','IGS_GE_UNHANDLED_EXP');
2239       FND_MESSAGE.SET_TOKEN('NAME','IGS_CO_PROCESS.corp_get_parameter_value');
2240       IGS_GE_MSG_STACK.ADD;
2241       App_Exception.Raise_Exception;
2242   END corp_get_parameter_value;
2243 
2244   PROCEDURE corp_check_request_status(
2245     errbuf              OUT NOCOPY      VARCHAR2,
2246     retcode             OUT NOCOPY      NUMBER,
2247     p_person_id         IN       NUMBER ,
2248     p_document_id       IN       NUMBER ,
2249     p_application_id    IN       NUMBER ,
2250     p_course_cd         IN       VARCHAR2,
2251     p_adm_seq_no        IN       NUMBER  ,
2252     p_awd_cal_type      IN       VARCHAR2,
2253     p_awd_seq_no        IN       NUMBER ,
2254     p_elapsed_days      IN       NUMBER ,
2255     p_no_of_repeats     IN       NUMBER ,
2256     p_sys_ltr_code      IN       VARCHAR2
2257   ) AS
2258   /*************************************************************
2259   Created By :Nalin Kumar
2260   Date Created on : 05-Feb-2002
2261   Purpose : This procedure will check the request status in OSS Interaction Table
2262             against CRM Interaction History and update the OSS Interaction table.
2263   Know limitations, enhancements or remarks
2264   Change History
2265   Who             When            What
2266 
2267   (reverse chronological order - newest change first)
2268       Bayadav         24-MAY-2002     Included two system letter codes 'ENADHOC', 'SFADHOC' for adhoc letters as a part of bug 2376434
2269       kpadiyar        18-NOV-2002     Removed the calls to the igs_co_interac_hist_pkg.update_row as the only column being updated was the outcome_status column
2270                                       and as this column has been obsoleted all the relevant calls to the update row have been removed.
2271      gmaheswa	5-Jan-2004	Bug 4869737 Added a call to SET_ORG_ID to disable OSS for R12.
2272   ***************************************************************/
2273     CURSOR c_crm_id(cp_request_id NUMBER) IS
2274     SELECT outcome_code --INTO l_request_status
2275     FROM jtf_fm_request_history
2276     WHERE hist_req_id = TO_NUMBER(cp_request_id);
2277     l_c_crm_id  c_crm_id%ROWTYPE;
2278 
2279     CURSOR cur_int_hist(cp_request_id NUMBER) IS
2280     SELECT hist.rowid row_id, hist.*
2281     FROM igs_co_interac_hist hist
2282     WHERE request_id = TO_NUMBER(cp_request_id);
2283     l_cur_int_hist cur_int_hist%ROWTYPE;
2284 
2285     CURSOR cur_gen_update IS
2286     SELECT request_id,
2287            comp_status
2288     FROM igs_co_interaction_history_v
2289     WHERE comp_status  IN ('SUBMITTED'); --Modified by Prajeesh to change NOT IN to IN as it will never change SUBMITED TO OTHER
2290                                          --STATE if it is NOT IN operator
2291     l_cur_gen_update cur_gen_update%ROWTYPE;
2292     l_called_from_conc VARCHAR2(1);
2293   BEGIN
2294     igs_ge_gen_003.set_org_id;
2295 
2296     l_called_from_conc := 'N';
2297     IF  p_person_id IS NULL AND
2298       (p_application_id IS NULL AND p_adm_seq_no IS NULL AND p_course_cd IS NULL) AND
2299       (p_awd_cal_type IS NULL AND p_awd_seq_no IS NULL) THEN
2300       --
2301       --  Update the status for all the records.
2302       --
2303       retcode := 0;
2304       l_called_from_conc := 'Y';
2305       OPEN cur_gen_update;
2306       LOOP
2307         FETCH cur_gen_update INTO l_cur_gen_update;
2308   IF cur_gen_update%FOUND THEN
2309           OPEN c_crm_id (l_cur_gen_update.request_id);
2310     LOOP
2311     FETCH c_crm_id INTO l_c_crm_id;
2312     IF c_crm_id%FOUND THEN
2313             IF l_cur_gen_update.comp_status <> l_c_crm_id.outcome_code  THEN
2314         OPEN cur_int_hist(l_cur_gen_update.request_id);
2315         FETCH cur_int_hist INTO l_cur_int_hist;
2316         --Modified by Prajeesh on 23-apr-2002 as the disbursement update was happening before the
2317         --letter is actually picked up the fulfilment server of CRM. Thus it will always fail to
2318         -- pick up the record and hence gives an error. This is solved by initially not updating the status
2319         -- and next time when run update the status at the intiaial if it successfully sent by CRM Server.
2320         IF l_cur_int_hist.sys_ltr_code='FADISBT' AND l_c_crm_id.outcome_code='SUCCESS' THEN
2321            igf_aw_gen_004.loan_disbursement_update(
2322                           p_person_id     =>   l_cur_int_hist.student_id,
2323                           p_award_year    =>   RPAD(l_cur_int_hist.cal_type,10)||to_char(l_cur_int_hist.ci_sequence_number,'999999')
2324                                       );
2325         END IF;
2326         CLOSE cur_int_hist;
2327       END IF;
2328     ELSE
2329         EXIT WHEN c_crm_id%NOTFOUND;
2330     END IF;
2331     END LOOP;
2332           CLOSE c_crm_id;
2333         ELSE
2334      EXIT WHEN cur_gen_update%NOTFOUND;
2335   END IF;
2336       END LOOP;
2337       CLOSE cur_gen_update;
2338 
2339    END IF;
2340 
2341   EXCEPTION
2342     WHEN OTHERS THEN
2343       IF l_called_from_conc = 'Y' THEN
2344         ROLLBACK;
2345         RETCODE:=2;
2346         ERRBUF:= Fnd_Message.GET_STRING('IGS','IGS_GE_UNHANDLED_EXCEPTION');
2347         Igs_Ge_Msg_Stack.CONC_EXCEPTION_HNDL;
2348       ELSE
2349         Fnd_Message.Set_name('IGS','IGS_GE_UNHANDLED_EXP');
2350         FND_MESSAGE.SET_TOKEN('NAME','IGS_CO_PROCESS.corp_check_request_status');
2351         IGS_GE_MSG_STACK.ADD;
2352         App_Exception.Raise_Exception;
2353       END IF;
2354  END corp_check_request_status;
2355 
2356  PROCEDURE corp_validate_parameters(
2357     p_sys_ltr_code      IN       VARCHAR2,
2358     p_document_id       IN       NUMBER,
2359     p_select_type       IN       VARCHAR2,
2360     p_list_id           IN       NUMBER  ,
2361     p_person_id         IN       NUMBER  ,
2362     p_parameter_1       IN       VARCHAR2,
2363     p_parameter_2       IN       VARCHAR2,
2364     p_parameter_3       IN       VARCHAR2,
2365     p_parameter_4       IN       VARCHAR2,
2366     p_parameter_5       IN       VARCHAR2,
2367     p_parameter_6       IN       VARCHAR2,
2368     p_parameter_7       IN       VARCHAR2,
2369     p_parameter_8       IN       VARCHAR2,
2370     p_parameter_9       IN       VARCHAR2,
2371     p_override_flag     IN       VARCHAR2,
2372     p_delivery_type     IN       VARCHAR2,
2373     p_exception         OUT NOCOPY       VARCHAR2
2374   ) AS
2375   /*************************************************************
2376   Created By :Nalin Kumar
2377   Date Created on : 05-Feb-2002
2378   Purpose : This procedure will return true or false based on the validation.
2379   Know limitations, enhancements or remarks
2380   Change History
2381   Who             When            What
2382 
2383   (reverse chronological order - newest change first)
2384   ***************************************************************/
2385     l_error_flag VARCHAR2(10);
2386     l_all_not_null VARCHAR2(20);
2387     l_all_null VARCHAR2(20);
2388   BEGIN
2389 
2390   --**  proc level logging.
2391         IF fnd_log.test(fnd_log.level_procedure,l_prog_label) THEN
2392             l_label := 'igs.plsql.igs_co_process.corp_validate_parameters';
2393             l_debug_str :=  'Entering corp_validate_parameters. values are:';
2394 	    l_debug_str := l_debug_str || 'p_sys_ltr_code=' ||   p_sys_ltr_code;
2395             l_debug_str := l_debug_str || ',p_document_id=' ||  p_document_id     ;
2396 	    l_debug_str := l_debug_str || ',p_select_type=' ||  p_select_type     ;
2397 	    l_debug_str := l_debug_str || ',p_list_id=' ||  p_list_id     ;
2398 	    l_debug_str := l_debug_str || ',p_person_id=' ||  p_person_id     ;
2399 	    l_debug_str := l_debug_str || ',p_parameter_1=' ||  p_parameter_1     ;
2400 	    l_debug_str := l_debug_str || ',p_parameter_2=' ||  p_parameter_2     ;
2401 	    l_debug_str := l_debug_str || ',p_parameter_3=' ||  p_parameter_3     ;
2402 	    l_debug_str := l_debug_str || ',p_parameter_4=' ||  p_parameter_4     ;
2403 	    l_debug_str := l_debug_str || ',p_parameter_5=' ||  p_parameter_5     ;
2404 	    l_debug_str := l_debug_str || ',p_parameter_6=' ||  p_parameter_6     ;
2405 	    l_debug_str := l_debug_str || ',p_parameter_7=' ||  p_parameter_7     ;
2406 	    l_debug_str := l_debug_str || ',p_parameter_8=' ||  p_parameter_8     ;
2407 	    l_debug_str := l_debug_str || ',p_parameter_9=' ||  p_parameter_9     ;
2408 	    l_debug_str := l_debug_str || ',p_override_flag=' ||  p_override_flag     ;
2409 	    l_debug_str := l_debug_str || ',p_delivery_type=' ||  p_delivery_type     ;
2410             fnd_log.string_with_context( fnd_log.level_procedure,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
2411          END IF;
2412      --**
2413 
2414     l_error_flag := 'FALSE';
2415     l_all_not_null := 'FALSE';
2416     l_all_null := 'FALSE';
2417     p_exception := 'N';
2418     IF p_select_type = 'L' THEN
2419       IF p_sys_ltr_code = 'ADINTRW' THEN
2420         IF p_list_id IS NULL OR
2421         p_parameter_1 IS NOT NULL OR p_parameter_2 IS NOT NULL OR p_parameter_3 IS NOT NULL OR
2422         p_parameter_4 IS NOT NULL OR p_parameter_6 IS NOT NULL OR p_parameter_7 IS NOT NULL OR
2423         p_parameter_9 IS NOT NULL OR p_person_id   IS NOT NULL THEN
2424       p_exception := 'Y';
2425       fnd_message.set_name('IGS','IGS_CO_LIST_PRAM');
2426       fnd_file.put_line(fnd_file.log,fnd_message.get());
2427       fnd_file.put_line(FND_FILE.LOG,' ');
2428       --**  proc level logging.
2429         IF fnd_log.test(fnd_log.level_procedure,l_prog_label) THEN
2430             l_label := 'igs.plsql.igs_co_process.corp_validate_parameters';
2431             l_debug_str :=  'Exiting corp_validate_parameters. values are: ';
2432 	    l_debug_str := l_debug_str || 'p_select_type is L and p_sys_ltr_code is ADINTRW';
2433 	    fnd_log.string_with_context( fnd_log.level_procedure,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
2434          END IF;
2435      --**
2436         RETURN;
2437         END IF;
2438      ELSIF p_sys_ltr_code = 'ADNORSP' THEN
2439        IF p_list_id IS NULL OR
2440         p_parameter_1 IS NOT NULL OR p_parameter_2 IS NOT NULL OR p_parameter_3 IS NOT NULL OR
2441         p_parameter_4 IS NOT NULL OR p_parameter_5 IS NOT NULL OR p_parameter_6 IS NOT NULL OR
2442         p_parameter_7 IS NOT NULL OR p_parameter_9 IS NOT NULL OR p_person_id   IS NOT NULL THEN
2443     --As letter has been submitted with select type as List
2444     --Only List Name should be specified
2445       p_exception := 'Y';
2446       fnd_message.set_name('IGS','IGS_CO_LIST_PRAM');
2447       fnd_file.put_line(fnd_file.log,fnd_message.get());
2448       fnd_file.put_line(FND_FILE.LOG,' ');
2449       --**  proc level logging.
2450         IF fnd_log.test(fnd_log.level_procedure,l_prog_label) THEN
2451             l_label := 'igs.plsql.igs_co_process.corp_validate_parameters';
2452             l_debug_str :=  'Exiting corp_validate_parameters. values are: ';
2453 	    l_debug_str := l_debug_str || 'p_select_type is L and p_sys_ltr_code is ADNORSP';
2454             fnd_log.string_with_context( fnd_log.level_procedure,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
2455          END IF;
2456      --**
2457       RETURN;
2458       END IF;
2459      ELSE
2460       IF p_list_id IS NULL OR
2461         p_parameter_1 IS NOT NULL OR p_parameter_2 IS NOT NULL OR p_parameter_3 IS NOT NULL OR
2462         p_parameter_4 IS NOT NULL OR p_parameter_5 IS NOT NULL OR p_parameter_6 IS NOT NULL OR
2463         p_parameter_7 IS NOT NULL OR p_person_id   IS NOT NULL THEN
2464   --
2465     --As letter has been submitted with select type as List
2466     --Only List Name should be specified
2467   --
2468       p_exception := 'Y';
2469       fnd_message.set_name('IGS','IGS_CO_LIST_PRAM');
2470       fnd_file.put_line(fnd_file.log,fnd_message.get());
2471       fnd_file.put_line(FND_FILE.LOG,' ');
2472       --**  proc level logging.
2473         IF fnd_log.test(fnd_log.level_procedure,l_prog_label) THEN
2474             l_label := 'igs.plsql.igs_co_process.corp_validate_parameters';
2475             l_debug_str :=  'Exiting corp_validate_parameters as p_select_type is L, none of the nested if condition is satisfied and ';
2476 	    l_debug_str := l_debug_str || 'p_list_id is NULL or one of the parameters 1 to 7 is NOT NULL or person id is NOT null';
2477             fnd_log.string_with_context( fnd_log.level_procedure,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
2478          END IF;
2479      --**
2480       RETURN;
2481       END IF;
2482      END IF;
2483 
2484     ELSIF p_select_type = 'S' THEN
2485       IF p_sys_ltr_code = 'ADINTRW' THEN
2486         IF p_person_id IS NULL OR
2487         p_parameter_1 IS NOT NULL OR p_parameter_2 IS NOT NULL OR p_parameter_3 IS NOT NULL OR
2488         p_parameter_4 IS NOT NULL OR p_parameter_6 IS NOT NULL OR p_parameter_7 IS NOT NULL OR
2489         p_parameter_9 IS NOT NULL THEN
2490         p_exception := 'Y';
2491 
2492   fnd_message.set_name('IGS','IGS_CO_STUD_PRAM');
2493         fnd_file.put_line(fnd_file.log,fnd_message.get());
2494         fnd_file.put_line(FND_FILE.LOG,' ');
2495 	--**  proc level logging.
2496         IF fnd_log.test(fnd_log.level_procedure,l_prog_label) THEN
2497             l_label := 'igs.plsql.igs_co_process.corp_validate_parameters';
2498             l_debug_str :=  'Exiting corp_validate_parameters. values: ';
2499 	    l_debug_str := l_debug_str || 'p_select_type is S and p_sys_ltr_code is ADINTRW';
2500 	    fnd_log.string_with_context( fnd_log.level_procedure,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
2501          END IF;
2502      --**
2503         RETURN;
2504         END IF;    -- p_person_id
2505       ELSIF p_sys_ltr_code = 'ADNORSP' THEN
2506         IF p_person_id IS NULL OR
2507         p_parameter_1 IS NOT NULL OR p_parameter_2 IS NOT NULL OR p_parameter_3 IS NOT NULL OR
2508         p_parameter_4 IS NOT NULL OR p_parameter_5 IS NOT NULL OR p_parameter_6 IS NOT NULL OR
2509         p_parameter_7 IS NOT NULL OR p_parameter_9 IS NOT NULL THEN
2510         --As letter has been submitted with select type as List
2511         --Only List Name should be specified
2512         p_exception := 'Y';
2513         fnd_message.set_name('IGS','IGS_CO_STUD_PRAM');
2514         fnd_file.put_line(fnd_file.log,fnd_message.get());
2515         fnd_file.put_line(FND_FILE.LOG,' ');
2516 	--**  proc level logging.
2517         IF fnd_log.test(fnd_log.level_procedure,l_prog_label) THEN
2518             l_label := 'igs.plsql.igs_co_process.corp_validate_parameters';
2519             l_debug_str :=  'Exiting corp_validate_parameters. values: ';
2520 	    l_debug_str := l_debug_str || 'p_select_type is S and p_sys_ltr_code is ADNORSP';
2521 	    fnd_log.string_with_context( fnd_log.level_procedure,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
2522          END IF;
2523      --**
2524         RETURN;
2525         END IF;   -- p_person_id
2526       ELSE
2527 
2528         IF p_person_id IS NULL OR
2529         p_parameter_1 IS NOT NULL OR p_parameter_2 IS NOT NULL OR p_parameter_3 IS NOT NULL OR
2530         p_parameter_4 IS NOT NULL OR p_parameter_5 IS NOT NULL OR p_parameter_6 IS NOT NULL OR
2531         p_parameter_7 IS NOT NULL OR
2532   p_list_id   IS NOT NULL THEN
2533 
2534 
2535           p_exception := 'Y';
2536           fnd_message.set_name('IGS','IGS_CO_STUD_PRAM');
2537           fnd_file.put_line(fnd_file.log,fnd_message.get());
2538           fnd_file.put_line(FND_FILE.LOG,' ');
2539 	  --**  proc level logging.
2540         IF fnd_log.test(fnd_log.level_procedure,l_prog_label) THEN
2541             l_label := 'igs.plsql.igs_co_process.corp_validate_parameters';
2542             l_debug_str :=  'Exiting corp_validate_parameters as p_select_type is S, none of the nested if condition is satisfied and ';
2543 	    l_debug_str := l_debug_str || 'p_list_id is NOT NULL or one of the parameters 1 to 7 is NOT NULL or person id is null';
2544             fnd_log.string_with_context( fnd_log.level_procedure,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
2545          END IF;
2546      --**
2547           RETURN;
2548         END IF;  -- p_person_id IS NULL
2549       END IF;  -- p_select_type = S
2550 
2551     ELSIF p_select_type = 'P' THEN
2552       IF p_parameter_1 IS NOT NULL THEN
2553         IF p_sys_ltr_code IN ('ADINTRW','ADNORSP') THEN
2554           IF    (p_parameter_2 IS NULL AND p_parameter_3 IS NULL AND p_parameter_4 IS NULL AND
2555            p_parameter_6 IS NULL AND p_parameter_7 IS NULL AND p_parameter_9 IS NULL) THEN
2556            l_all_null := 'TRUE';
2557     ELSIF (p_parameter_2 IS NOT NULL AND p_parameter_3 IS NOT NULL AND p_parameter_4 IS NOT NULL AND
2558            p_parameter_5 IS NOT NULL AND p_parameter_6 IS NOT NULL AND p_parameter_7 IS NOT NULL AND
2559            p_parameter_8 IS NOT NULL AND p_parameter_9 IS NOT NULL) THEN
2560            l_all_not_null := 'TRUE';
2561           END IF;
2562           IF NOT( l_all_null = 'TRUE' OR l_all_not_null = 'TRUE') THEN
2563             p_exception := 'Y';
2564             fnd_message.set_name('IGS','IGS_AD_INVALID_PARAM_COMB');
2565             fnd_file.put_line(fnd_file.log,fnd_message.get());
2566             fnd_file.put_line(FND_FILE.LOG,' ');
2567 	    --**  proc level logging.
2568         IF fnd_log.test(fnd_log.level_procedure,l_prog_label) THEN
2569             l_label := 'igs.plsql.igs_co_process.corp_validate_parameters';
2570             l_debug_str :=  'Exiting corp_validate_parameters. values: ';
2571 	    l_debug_str := l_debug_str || 'p_select_type is P';
2572 	    fnd_log.string_with_context( fnd_log.level_procedure,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
2573          END IF;
2574      --**
2575             RETURN;
2576           END IF;
2577         ELSE  --for all other letters
2578           IF p_parameter_2 IS NOT NULL OR
2579           p_parameter_3 IS NOT NULL OR
2580           p_parameter_4 IS NOT NULL OR
2581           p_parameter_5 IS NOT NULL OR
2582           p_parameter_6 IS NOT NULL OR
2583           p_parameter_7 IS NOT NULL OR
2584       p_person_id IS NOT NULL OR
2585     p_list_id IS NOT NULL THEN
2586         --
2587           -- As letter has been submitted with select type as Parameter
2588           -- either Person ID Group or other parameters should be selected. Both cannot be specified.
2589         --
2590           p_exception := 'Y';
2591           fnd_message.set_name('IGS','IGS_AD_INVALID_PARAM_COMB');
2592           fnd_file.put_line(fnd_file.log,fnd_message.get());
2593           fnd_file.put_line(FND_FILE.LOG,' ');
2594 	  --**  proc level logging.
2595         IF fnd_log.test(fnd_log.level_procedure,l_prog_label) THEN
2596             l_label := 'igs.plsql.igs_co_process.corp_validate_parameters';
2597             l_debug_str :=  'Exiting corp_validate_parameters for p_select_type P and all other values as none of the if conditions are satisfied.';
2598 	    fnd_log.string_with_context( fnd_log.level_procedure,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
2599          END IF;
2600      --**
2601           RETURN;
2602         END IF;
2603         END IF; -- p_sys_ltr_code IN ('ADINTRW','ADNORSP')
2604     END IF; -- selection type Parameter.
2605 
2606 -- again checking that if Parameter_1 (person_id_group) is NULL then all other params should be
2607 -- specified.
2608       IF p_parameter_1 IS NULL THEN
2609 
2610         IF p_sys_ltr_code = 'ADMISTM' AND
2611             (p_parameter_2 IS NULL OR p_parameter_3 IS NULL OR p_parameter_4 IS NULL OR p_parameter_5 IS NULL OR
2612              p_parameter_6 IS NULL OR p_parameter_8 IS NULL) THEN
2613              l_error_flag := 'TRUE';
2614         ELSIF p_sys_ltr_code = 'ADACKMT' AND
2615            (p_parameter_2 IS NULL OR p_parameter_3 IS NULL OR p_parameter_4 IS NULL OR p_parameter_5 IS NULL OR
2616             p_parameter_6 IS NULL) THEN
2617             l_error_flag := 'TRUE';
2618         ELSIF p_sys_ltr_code = 'ADRESID' AND
2619             (p_parameter_2 IS NULL OR  p_parameter_3 IS NULL OR p_parameter_4 IS NULL OR p_parameter_5 IS NULL) THEN
2620             l_error_flag := 'TRUE';
2621         ELSIF p_sys_ltr_code = 'ADACCEP' AND
2622             (p_parameter_2 IS NULL OR p_parameter_3 IS NULL OR p_parameter_4 IS NULL OR p_parameter_5 IS NULL OR
2623              p_parameter_6 IS NULL OR p_parameter_7 IS NULL) THEN
2624              l_error_flag := 'TRUE';
2625         ELSIF p_sys_ltr_code = 'ADREJEC' AND
2626           (p_parameter_2 IS NULL OR p_parameter_3 IS NULL OR p_parameter_4 IS NULL OR p_parameter_5 IS NULL OR
2627            p_parameter_6 IS NULL OR p_parameter_7 IS NULL) THEN
2628            l_error_flag := 'TRUE';
2629         ELSIF p_sys_ltr_code = 'ADWAITL' AND
2630           (p_parameter_2 IS NULL OR p_parameter_3 IS NULL OR p_parameter_4 IS NULL OR p_parameter_5 IS NULL OR
2631           p_parameter_6 IS NULL OR p_parameter_7 IS NULL) THEN
2632           l_error_flag := 'TRUE';
2633         ELSIF p_sys_ltr_code = 'ADNOQUT' AND
2634           (p_parameter_2 IS NULL OR p_parameter_3 IS NULL OR p_parameter_4 IS NULL OR p_parameter_5 IS NULL OR
2635           p_parameter_6 IS NULL OR p_parameter_7 IS NULL) THEN
2636           l_error_flag := 'TRUE';
2637         ELSIF p_sys_ltr_code = 'ADCONOF' AND
2638           (p_parameter_2 IS NULL OR p_parameter_3 IS NULL OR p_parameter_4 IS NULL OR p_parameter_5 IS NULL OR
2639           p_parameter_6 IS NULL OR p_parameter_7 IS NULL) THEN
2640           l_error_flag := 'TRUE';
2641         ELSIF p_sys_ltr_code = 'ADPADMS' AND
2642           (p_parameter_2 IS NULL OR p_parameter_3 IS NULL OR p_parameter_4 IS NULL OR p_parameter_5 IS NULL OR
2643           p_parameter_6 IS NULL OR p_parameter_8 IS NULL) THEN
2644           l_error_flag := 'TRUE';
2645         ELSIF p_sys_ltr_code = 'ADFUTSE' AND
2646           (p_parameter_2 IS NULL OR p_parameter_3 IS NULL OR p_parameter_4 IS NULL OR p_parameter_5 IS NULL OR
2647           p_parameter_6 IS NULL OR p_parameter_7 IS NULL) THEN
2648           l_error_flag := 'TRUE';
2649         ELSIF p_sys_ltr_code = 'ADMFTSA' AND
2650           (p_parameter_2 IS NULL OR p_parameter_3 IS NULL OR p_parameter_4 IS NULL OR p_parameter_5 IS NULL OR
2651           p_parameter_6 IS NULL OR p_parameter_7 IS NULL) THEN
2652           l_error_flag := 'TRUE';
2653          ELSIF p_sys_ltr_code = 'ADNORSP' AND
2654           (p_parameter_2 IS NULL OR p_parameter_3 IS NULL OR p_parameter_4 IS NULL OR p_parameter_5 IS NULL OR
2655            p_parameter_6 IS NULL OR p_parameter_7 IS NULL OR p_parameter_8 IS NULL OR p_parameter_9 IS NULL) THEN
2656            l_error_flag := 'TRUE';
2657         ELSIF p_sys_ltr_code = 'ADINTRW' AND
2658           (p_parameter_2 IS NULL OR p_parameter_3 IS NULL OR p_parameter_4 IS NULL OR p_parameter_5 IS NULL OR
2659            p_parameter_6 IS NULL OR p_parameter_7 IS NULL OR p_parameter_8 IS NULL OR p_parameter_9 IS NULL) THEN
2660            l_error_flag := 'TRUE';
2661         END IF;
2662       END IF;
2663 
2664     ELSIF p_select_type = 'G' THEN
2665 
2666       --check if p_parameter_1 (person_id_grp)  is null or not null.
2667       IF p_parameter_1 IS NOT NULL THEN
2668         IF p_sys_ltr_code = 'ADINTRW' THEN
2669           IF p_parameter_2 IS NOT NULL OR p_parameter_3 IS NOT NULL OR p_parameter_4 IS NOT NULL OR
2670        p_parameter_6 IS NOT NULL OR p_parameter_7 IS NOT NULL OR p_parameter_9 IS NOT NULL OR
2671              p_person_id IS NOT NULL OR p_list_id IS NOT NULL THEN
2672             --As letter has been submitted with select type as Group
2673             --Only Group Name should be specified
2674             p_exception := 'Y';
2675       fnd_message.set_name('IGS','IGS_CO_PER_LIS_PRAM');
2676             fnd_file.put_line(fnd_file.log,fnd_message.get());
2677             fnd_file.put_line(FND_FILE.LOG,' ');
2678 	    --**  proc level logging.
2679         IF fnd_log.test(fnd_log.level_procedure,l_prog_label) THEN
2680             l_label := 'igs.plsql.igs_co_process.corp_validate_parameters';
2681             l_debug_str :=  'Exiting corp_validate_parameters. values: ';
2682 	    l_debug_str := l_debug_str || 'p_select_type is G and p_sys_ltr_code is ADINTRW';
2683 	    fnd_log.string_with_context( fnd_log.level_procedure,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
2684          END IF;
2685      --**
2686             RETURN;
2687           END IF;
2688         ELSIF p_sys_ltr_code = 'ADNORSP' THEN
2689           IF p_parameter_2 IS NOT NULL OR p_parameter_3 IS NOT NULL OR
2690              p_parameter_4 IS NOT NULL OR p_parameter_5 IS NOT NULL OR p_parameter_6 IS NOT NULL OR
2691              p_parameter_7 IS NOT NULL OR p_parameter_9 IS NOT NULL OR
2692              p_person_id IS NOT NULL OR p_list_id IS NOT NULL THEN
2693              --As letter has been submitted with select type as Group
2694              --Only Group Name should be specified
2695              p_exception := 'Y';
2696              fnd_message.set_name('IGS','IGS_CO_PER_LIS_PRAM');
2697              fnd_file.put_line(fnd_file.log,fnd_message.get());
2698              fnd_file.put_line(FND_FILE.LOG,' ');
2699 	        --**  proc level logging.
2700 		IF fnd_log.test(fnd_log.level_procedure,l_prog_label) THEN
2701 		    l_label := 'igs.plsql.igs_co_process.corp_validate_parameters';
2702 		    l_debug_str :=  'Exiting corp_validate_parameters. values: ';
2703 		    l_debug_str := l_debug_str || 'p_select_type is G and p_sys_ltr_code is ADNORSP';
2704 		    fnd_log.string_with_context( fnd_log.level_procedure,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
2705 		 END IF;
2706 	     --**
2707              RETURN;
2708           END IF;
2709         ELSE  -- for other letters.
2710           IF p_parameter_2 IS NOT NULL OR p_parameter_3 IS NOT NULL OR p_parameter_4 IS NOT NULL OR
2711        p_parameter_5 IS NOT NULL OR p_parameter_6 IS NOT NULL OR p_parameter_7 IS NOT NULL OR
2712              p_person_id IS NOT NULL OR
2713              p_list_id IS NOT NULL THEN
2714         --
2715               -- As letter has been submitted with select type as Parameter
2716               -- either Person ID Group or other parameters should be selected. Both cannot be specified.
2717         --
2718               p_exception := 'Y';
2719               fnd_message.set_name('IGS','IGS_CO_PER_LIS_PRAM');
2720               fnd_file.put_line(fnd_file.log,fnd_message.get());
2721               fnd_file.put_line(FND_FILE.LOG,' ');
2722 	      --**  proc level logging.
2723 		IF fnd_log.test(fnd_log.level_procedure,l_prog_label) THEN
2724 		    l_label := 'igs.plsql.igs_co_process.corp_validate_parameters';
2725 		    l_debug_str :=  'Exiting corp_validate_parameters. values: ';
2726 		    l_debug_str := l_debug_str || 'p_select_type is G and all other letters';
2727 		    fnd_log.string_with_context( fnd_log.level_procedure,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
2728 		 END IF;
2729 	     --**
2730               RETURN;
2731         END IF;
2732         END IF;
2733 
2734       ELSIF p_parameter_1 IS NOT NULL AND (
2735       p_person_id IS NOT NULL OR
2736       p_list_id IS NOT NULL ) THEN
2737       --
2738         -- As letter has been submitted with select type as Parameter
2739         -- List nanm should not be selected
2740       --
2741 
2742            p_exception := 'N';
2743            fnd_message.set_name('IGS','IGS_CO_PER_LIS_PRAM');
2744            fnd_file.put_line(fnd_file.log,fnd_message.get());
2745            fnd_file.put_line(FND_FILE.LOG,' ');
2746 	   --**  proc level logging.
2747 		IF fnd_log.test(fnd_log.level_procedure,l_prog_label) THEN
2748 		    l_label := 'igs.plsql.igs_co_process.corp_validate_parameters';
2749 		    l_debug_str :=  'Exiting corp_validate_parameters as ';
2750 		    l_debug_str := l_debug_str || 'p_parameter_1 IS NOT NULL AND (p_person_id IS NOT NULL OR p_list_id IS NOT NULL';
2751 		    fnd_log.string_with_context( fnd_log.level_procedure,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
2752 		 END IF;
2753 	     --**
2754            RETURN;
2755 
2756       END IF;   -- p_parameter_1 IS NOT NULL THEN
2757 
2758       IF p_parameter_1 IS NULL THEN
2759         p_exception := 'Y';
2760         fnd_message.set_name('IGS','IGS_CO_PER_LIS_PRAM');
2761         fnd_file.put_line(fnd_file.log,fnd_message.get());
2762         fnd_file.put_line(FND_FILE.LOG,' ');
2763       END IF;
2764    END IF; -- final end IF for selection type.
2765 
2766     --
2767     --  Check if the parameter values are not correct.
2768     --
2769     IF l_error_flag = 'TRUE' THEN
2770       p_exception := 'Y';
2771       fnd_message.set_name('IGS','IGS_AD_INVALID_PARAM_COMB');
2772       fnd_file.put_line(fnd_file.log,fnd_message.get());
2773       fnd_file.put_line(FND_FILE.LOG,' ');
2774       --**  proc level logging.
2775 	IF fnd_log.test(fnd_log.level_procedure,l_prog_label) THEN
2776 	    l_label := 'igs.plsql.igs_co_process.corp_validate_parameters';
2777 	    l_debug_str :=  'Exiting corp_validate_parameters as l_error_flag is TRUE';
2778 	    fnd_log.string_with_context( fnd_log.level_procedure,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
2779 	 END IF;
2780      --**
2781       RETURN;
2782     END IF;
2783   EXCEPTION
2784     WHEN OTHERS THEN
2785        --**  proc level logging.
2786 	IF fnd_log.test(fnd_log.level_procedure,l_prog_label) THEN
2787 	    l_label := 'igs.plsql.igs_co_process.corp_validate_parameters';
2788 	    l_debug_str :=  'Exception in corp_validate_parameters.';
2789 	    fnd_log.string_with_context( fnd_log.level_procedure,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
2790 	 END IF;
2791      --**
2792       Fnd_Message.Set_name('IGS','IGS_GE_UNHANDLED_EXP');
2793       FND_MESSAGE.SET_TOKEN('NAME','IGS_CO_PROCESS.corp_validate_parameters');
2794       IGS_GE_MSG_STACK.ADD;
2795       App_Exception.Raise_Exception;
2796   END corp_validate_parameters;
2797 
2798 END igs_co_process;