1 PACKAGE BODY IGR_IMP_003 AS
2 /* $Header: IGSRT14B.pls 120.0 2005/06/01 16:09:32 appldev noship $ */
3 /* ------------------------------------------------------------------------------------------------------------------------
4 || Created By : rbezawad
5 || Created On : 28-Feb-05
6 || Purpose : Extract of IGR related references from Admissions Import process packages (IGSAD97B.pls)
7 || to get rid of probable compilation errors for non-IGR customers.
8 || Known limitations, enhancements or remarks :
9 || Change History :
10 || WHO WHEN WHAT
11 9-Mar-05 rbezawad Modified logic to Validated Inquiry Lines for APC Integration Build. Bug: 3973942.
12 Also obsoelted usage of Entry Status/Program/Unit Set code columns.
13 ---------------------------------------------------------------------------------------------------------------------------*/
14
15 /** Main Cursor to iterate in Inquiry details records **/
16
17 CURSOR c_inquiry_dtls (cp_interface_run_id igr_i_appl_int.interface_run_id%TYPE)
18 IS
19 SELECT a.rowid,a.*
20 FROM igr_i_appl_int a
21 WHERE a.interface_run_id = cp_interface_run_id
22 AND a.status = '2';
23
24 CURSOR c_inquiry_lines (cp_interface_run_id igr_i_lines_int.interface_run_id%TYPE)
25 IS
26 SELECT a.rowid,a.*
27 FROM igr_i_lines_int a
28 WHERE a.interface_run_id = cp_interface_run_id
29 AND a.status = '2';
30
31 /***************************Get Meaning for error code******************************/
32
33 FUNCTION Get_Meaning(
34 p_lookup_code igs_lookups_view.lookup_code%TYPE,
35 p_lookup_type igs_lookups_view.lookup_type%TYPE
36 )
37 RETURN VARCHAR2 AS
38 /*******************************************************************************
39 Created By: Syam Krishnan
40 Date Created By: 06-12-2001 (MM-DD-YYYY)
41 Purpose: This fucntion is used to return the meaning for
42 a particular lookup_type and lookup_code combination.
43 Known limitations,enhancements,remarks:
44 Change History
45 Who When What
46
47 *******************************************************************************/
48 lv_meaning igs_lookups_view.meaning%TYPE;
49
50 -- Cursor c_lkup is used to select the record (if any) that matches the
51 -- criteria passed via the parameters to the fucntion
52 CURSOR c_lkup (cp_lookup_type igs_lookups_view.lookup_type%TYPE,
53 cp_lookup_code igs_lookups_view.lookup_code%TYPE) IS
54 SELECT
55 meaning
56 FROM
57 igs_lookups_view
58 WHERE
59 lookup_type = cp_lookup_type
60 AND lookup_code = cp_lookup_code;
61
62 BEGIN
63 OPEN c_lkup (p_lookup_type ,p_lookup_code);
64 FETCH c_lkup INTO lv_meaning;
65
66 IF c_lkup%NOTFOUND THEN
67 -- No records are found that match the criteria passed via the parameters
68 -- hence closing the cursor and returning null value.
69 CLOSE c_lkup;
70 RETURN NULL;
71 END IF;
72
73 -- The control will come to this point only if a matching record is found
74 -- Hence closing the cursor and returning the value.
75 CLOSE c_lkup;
76 RETURN lv_meaning;
77 END get_meaning;
78 /***************************Get Meaning for error code******************************/
79
80
81 /***********************Start Create person inquiry *********************************/
82 PROCEDURE create_person_inquiry ( p_inquiry_dtls_rec IN c_inquiry_dtls%ROWTYPE,
83 p_source_type_id igs_ad_interface.source_type_id%TYPE,
84 p_status OUT NOCOPY VARCHAR2
85 ) AS
86 /*************************************************************
87 Created By :Syam.Krishnan
88 Date Created By :12-JUN-2001
89 Purpose : To create Person Inquiries
90 Know limitations, enhancements or remarks
91 Change History
92 Who When What
93 rrengara 14-Feb-2003 Changes for RCT Build
94 (reverse chronological order - newest change first)
95 ***************************************************************/
96
97 ----------------Variable Declarations-------------------------------------
98 lv_enq_appl_rowid ROWID;
99 lv_enquiry_appl_number igr_i_appl.enquiry_appl_number%TYPE;
100 ln_org_id igr_i_appl.org_id%TYPE ;
101 l_sales_lead_id igr_i_appl_v.sales_lead_id%TYPE;
102
103 lv_msg_data VARCHAR2(4000);
104 lv_return_status VARCHAR2(1);
105 lv_msg_count NUMBER;
106
107 lv_new_person_type_code igs_pe_typ_instances.person_type_code%TYPE;
108 lv_new_funnel_status igs_pe_typ_instances.funnel_status%TYPE;
109
110 cst_PROSPECT CONSTANT varchar2(50) DEFAULT 'PROSPECT';
111 cst_IDENTIFIED CONSTANT varchar2(50) DEFAULT '100-IDENTIFIED';
112 cst_INQUIRED CONSTANT varchar2(50) DEFAULT '300-INQUIRED';
113 cst_CONTACTED CONSTANT varchar2(50) DEFAULT '200-CONTACTED';
114
115 l_prog_label VARCHAR2(100);
116 l_error_code VARCHAR2(30);
117 l_request_id NUMBER;
118 l_label VARCHAR2(100);
119 l_debug_str VARCHAR2(2000);
120 l_enable_log VARCHAR2(1);
121 l_rowid VARCHAR2(25);
122 l_error_text VARCHAR2(2000);
123 l_type VARCHAR2(1);
124 l_status VARCHAR2(1);
125 l_sqlerrm VARCHAR2(2000);
126
127 --------------------End variable Declarations-------------------------------
128
129 ----------------Cursor Declarations-----------------------------------------
130 CURSOR
131 c_prospect_exist (cp_person_id igs_pe_typ_instances.person_id%TYPE) IS
132 SELECT
133 pti.rowid,pti.*
134 FROM
135 igs_pe_typ_instances_all pti,
136 igs_pe_person_types pt
137 WHERE
138 pti.person_id = cp_person_id
139 AND pti.person_type_code = pt.person_type_code
140 AND pt.system_type = cst_PROSPECT
141 AND funnel_status IN (cst_IDENTIFIED,cst_INQUIRED,cst_CONTACTED);
142 ----------------End Cursor Declarations-----------------------------------------
143
144
145 --------------------Local Procedure for Finding Funnel Status and Person Type------------------
146 PROCEDURE find_ptype_funnel_status (p_inquiry_dtls_rec c_inquiry_dtls%ROWTYPE ,
147 p_source_type_id igs_ad_interface.source_type_id%TYPE,
148 p_old_person_type_code igs_pe_typ_instances.person_type_code%TYPE,
149 p_new_person_type_code OUT NOCOPY igs_pe_typ_instances.person_type_code%TYPE,
150 p_new_funnel_status OUT NOCOPY igs_pe_typ_instances.funnel_status%TYPE) AS
151 /*************************************************************
152 Created By :Sykrishn
153 Date Created By :06-SEP-2001
154 Purpose : To find new person type and the new funnel status
155 Know limitations, enhancements or remarks
156 Change History
157 Who When What
158
159 (reverse chronological order - newest change first)
160 Change History
161 Who When What
162 rboddu 09-OCT-2002 Removed the logic of fetching person_type_code and funnel_status
163 from IGS_AD_INTERFACE_CTL as part of Enh Bug: 2604395
164 ***************************************************************/
165
166 ----------------------Variable Declarations-----------------------------------------
167 lv_person_type_code igs_pe_typ_instances.person_type_code%TYPE ;
168 lv_funnel_status igs_pe_typ_instances.funnel_status%TYPE ;
169 lb_int_found BOOLEAN ;
170 lb_int_ctl_found BOOLEAN ;
171
172 cst_PROSPECT CONSTANT varchar2(50) DEFAULT 'PROSPECT';
173 cst_other CONSTANT varchar2(50) DEFAULT 'OTHER';
174 cst_applicant CONSTANT VARCHAR2(50) DEFAULT 'APPLICANT';
175 ----------------------End Variable Declarations-----------------------------------------
176
177 -----------------Cursor Declarations----------------------------------------------------
178 /* Cursor to get the person_type and funnel_status from igs_ad_interface */
179 CURSOR c_interface (cp_interface_id igs_ad_interface.interface_id%TYPE) IS
180 SELECT
181 person_type_code ,
182 funnel_status
183 FROM
184 igs_ad_interface
185 WHERE
186 interface_id = cp_interface_id;
187
188 CURSOR c_pe_src_types (cp_source_type_id igs_ad_interface.source_type_id%TYPE) IS
189 SELECT
190 person_type_code ,
191 funnel_status
192 FROM
193 igs_pe_src_types
194 WHERE
195 source_type_id = cp_source_type_id;
196
197 CURSOR c_sys_person_type (p_person_type_code igs_pe_person_types.person_type_code%TYPE) IS
198 SELECT
199 system_type
200 FROM
201 igs_pe_person_types
202 WHERE
203 person_type_code = p_person_type_code ;
204
205 l_sys_person_type igs_pe_person_types.system_type%TYPE;
206
207 -----------------End Cursor Declarations----------------------------------------------------
208 BEGIN
209
210 lv_person_type_code := NULL;
211 lv_funnel_status := NULL;
212 lb_int_found := FALSE;
213 lb_int_ctl_found := FALSE;
214
215
216 OPEN c_interface(p_inquiry_dtls_rec.interface_id);
217 FETCH c_interface INTO lv_person_type_code,lv_funnel_status;
218 IF c_interface%FOUND THEN
219 CLOSE c_interface;
220 IF (lv_person_type_code IS NOT NULL ) AND (lv_funnel_status IS NOT NULL) THEN
221 lb_int_found := TRUE;
222 END IF;
223 ELSE
224 CLOSE c_interface;
225 END IF;
226
227 IF NOT lb_int_found THEN -- if not in ad_interface >> next level interface_ctl
228 lv_person_type_code := NULL;
229 lv_funnel_status := NULL;
230 OPEN c_pe_src_types(p_source_type_id);
231 FETCH c_pe_src_types INTO lv_person_type_code,lv_funnel_status;
232 CLOSE c_pe_src_types;
233 END IF;
234
235 IF (lv_person_type_code IS NULL AND p_old_person_type_code = cst_OTHER) THEN
236 BEGIN
237 UPDATE igr_i_appl_int
238 SET status = '3',
239 error_code = 'E731'
240 WHERE interface_inq_appl_id = p_inquiry_dtls_rec.interface_inq_appl_id ;
241 END;
242 END IF;
243
244 OPEN c_sys_person_type(lv_person_type_code);
245 FETCH c_sys_person_type INTO l_sys_person_type;
246 CLOSE c_sys_person_type;
247
248 IF (lv_funnel_status IS NOT NULL AND l_sys_person_type <> cst_PROSPECT) THEN
249 BEGIN
250 UPDATE igr_i_appl_int
251 SET status = '3',
252 error_code = 'E732' /* Invalid Person Type */
253 WHERE interface_inq_appl_id = p_inquiry_dtls_rec.interface_inq_appl_id ;
254 END;
255 END IF;
256
257 /* Anyway return the out parameters */
258 p_new_person_type_code := lv_person_type_code;
259 p_new_funnel_status := lv_funnel_status;
260 END find_ptype_funnel_status;
261 /*************************************Local Procedure for Finding Funnel Status and Person Type****************************/
262
263 BEGIN
264 ln_org_id := igs_ge_gen_003.get_org_id;
265 FOR rec_prospect_exist IN c_prospect_exist (p_inquiry_dtls_rec.person_id) LOOP
266 find_ptype_funnel_status (p_inquiry_dtls_rec => p_inquiry_dtls_rec ,
267 p_source_type_id => p_source_type_id,
268 p_old_person_type_code => rec_prospect_exist.person_type_code,
269 p_new_person_type_code => lv_new_person_type_code,
270 p_new_funnel_status => lv_new_funnel_status );
271 END LOOP;
272
273 igr_inquiry_pkg.insert_row (
274 x_mode => 'R',
275 x_rowid => lv_enq_appl_rowid,
276 x_person_id => p_inquiry_dtls_rec.person_id,
277 x_enquiry_appl_number => lv_enquiry_appl_number,
278 x_sales_lead_id => l_sales_lead_id,
279 x_acad_cal_type => p_inquiry_dtls_rec.acad_cal_type,
280 x_acad_ci_sequence_number => p_inquiry_dtls_rec.acad_ci_sequence_number,
281 x_adm_cal_type => p_inquiry_dtls_rec.adm_cal_type,
282 x_adm_ci_sequence_number => p_inquiry_dtls_rec.adm_ci_sequence_number,
283 x_enquiry_dt => p_inquiry_dtls_rec.inquiry_dt,
284 x_registering_person_id => p_inquiry_dtls_rec.registering_person_id,
285 x_override_process_ind => p_inquiry_dtls_rec.override_process_ind,
286 x_indicated_mailing_dt => p_inquiry_dtls_rec.indicated_mailing_dt,
287 x_last_process_dt => p_inquiry_dtls_rec.last_process_dt,
288 x_comments => p_inquiry_dtls_rec.comments,
289 x_org_id => igs_ge_gen_003.get_org_id,
293 x_how_knowus_id => p_inquiry_dtls_rec.learn_source_id,
290 x_inq_entry_level_id => p_inquiry_dtls_rec.inquiry_entry_level_id,
291 x_edu_goal_id => p_inquiry_dtls_rec.edu_goal_id,
292 x_party_id => p_inquiry_dtls_rec.inquiry_school_of_interest_id,
294 x_who_influenced_id => p_inquiry_dtls_rec.influence_source_id,
295 x_attribute_category => p_inquiry_dtls_rec.attribute_category,
296 x_attribute1 => p_inquiry_dtls_rec.attribute1,
297 x_attribute2 => p_inquiry_dtls_rec.attribute2,
298 x_attribute3 => p_inquiry_dtls_rec.attribute3,
299 x_attribute4 => p_inquiry_dtls_rec.attribute4,
300 x_attribute5 => p_inquiry_dtls_rec.attribute5,
301 x_attribute6 => p_inquiry_dtls_rec.attribute6,
302 x_attribute7 => p_inquiry_dtls_rec.attribute7,
303 x_attribute8 => p_inquiry_dtls_rec.attribute8,
304 x_attribute9 => p_inquiry_dtls_rec.attribute9,
305 x_attribute10 => p_inquiry_dtls_rec.attribute10,
306 x_attribute11 => p_inquiry_dtls_rec.attribute11,
307 x_attribute12 => p_inquiry_dtls_rec.attribute12,
308 x_attribute13 => p_inquiry_dtls_rec.attribute13,
309 x_attribute14 => p_inquiry_dtls_rec.attribute14,
310 x_attribute15 => p_inquiry_dtls_rec.attribute15,
311 x_attribute16 => p_inquiry_dtls_rec.attribute16,
312 x_attribute17 => p_inquiry_dtls_rec.attribute17,
313 x_attribute18 => p_inquiry_dtls_rec.attribute18,
314 x_attribute19 => p_inquiry_dtls_rec.attribute19,
315 x_attribute20 => p_inquiry_dtls_rec.attribute20,
316 x_s_enquiry_status => p_inquiry_dtls_rec.inquiry_status,
317 x_source_promotion_id => p_inquiry_dtls_rec.source_promotion_id,
318 x_person_type_code => lv_new_person_type_code,
319 x_funnel_status => lv_new_funnel_status,
320 x_ret_status => lv_return_status,
321 x_msg_data => lv_msg_data,
322 x_msg_count => lv_msg_count,
323 x_inquiry_method_code => p_inquiry_dtls_rec.inquiry_source_type,
324 x_action => 'Import',
325 x_pkg_reduct_ind => NVL(p_inquiry_dtls_rec.pkg_reduct_ind,'N')
326 );
327
328 IF lv_return_status <>'U' AND lv_msg_data IS NOT NULL THEN
329 IF l_enable_log = 'Y' THEN
330 igs_ad_imp_001.logerrormessage(p_inquiry_dtls_rec.interface_inq_appl_id,lv_msg_data);
331 END IF;
332 ELSIF lv_return_status = 'U' THEN
333 IF fnd_log.test(fnd_log.level_exception,l_prog_label) THEN
334 l_label := 'igs.plsql.igr_imp_003.process_person_inquiry.exception '||'E322';
335
336 fnd_message.set_name('IGS','IGS_PE_IMP_DET_ERROR');
337 fnd_message.set_token('CONTEXT',p_inquiry_dtls_rec.interface_inq_appl_id);
338 fnd_message.set_token('ERROR', l_error_text);
339
340 l_debug_str := fnd_message.get;
341
342 fnd_log.string_with_context( fnd_log.level_exception,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,TO_CHAR(l_request_id));
343 END IF;
344 END IF;
345
346 IF lv_msg_data IS NOT NULL THEN
347 /* Return status of Null should be treated as Success */
348 IF NVL(lv_return_status,'S') = 'S' THEN
349 UPDATE igr_i_appl_int
350 SET status = '4',
351 error_code = 'E702',
352 error_text = lv_msg_data
353 WHERE rowid = p_inquiry_dtls_rec.rowid;
354 ELSE
355 ROLLBACK TO perinq_save;
356 UPDATE igr_i_appl_int
357 SET status = '3',
358 error_code = 'E322',
359 error_text = lv_msg_data
360 WHERE rowid = p_inquiry_dtls_rec.rowid;
361 END IF;
362 ELSE
363 /* Return status of Null should be treated as Success */
364 IF NVL(lv_return_status,'S') = 'S' THEN
365 UPDATE igr_i_appl_int
366 SET status = '1',
367 error_code = NULL,
368 error_text = NULL,
369 enquiry_appl_number= lv_enquiry_appl_number,
370 sales_lead_id = l_sales_lead_id
371 WHERE rowid = p_inquiry_dtls_rec.rowid;
372 ELSE
373 l_error_text := igs_ad_gen_016.get_lkup_meaning ('IMPORT_ERROR_CODE', 'E322', 8405);
374 ROLLBACK TO perinq_save;
375 UPDATE igr_i_appl_int
376 SET status = '3',
377 error_code = 'E322',
378 error_text = l_error_text
379 WHERE rowid = p_inquiry_dtls_rec.rowid;
380 END IF;
381 END IF;
382
383
384 EXCEPTION
385 WHEN OTHERS THEN
386 l_sqlerrm := SQLERRM;
387 /* If insert is NOT successful update status to 3 in table igr_i_appl_int */
388 p_status := '3';
389
390 ROLLBACK TO perinq_save;
391
392 UPDATE
393 igr_i_appl_int
394 SET
395 status = '3',
396 error_code = 'E322' ,
397 error_text = NVL(lv_msg_data,l_sqlerrm)
398 WHERE
399 interface_inq_appl_id = p_inquiry_dtls_rec.interface_inq_appl_id ;
400 END create_person_inquiry ;
401 /***********************End Create person inquiry *********************************/
402
403 PROCEDURE validate_person_inquiry ( p_inquiry_dtls_rec IN c_inquiry_dtls%ROWTYPE,
404 p_validation OUT NOCOPY BOOLEAN )
405 AS
406 /*************************************************************
407 Created By :Syam.Krishnan
411 Change History
408 Date Created By :12-JUN-2001
409 Purpose : Validate data elements for person inquiry
410 Know limitations, enhancements or remarks
412 Who When What
413
414 (reverse chronological order - newest change first)
415 -- kamohan 5/23/02 Changed the condition to check
416 -- the user defined status and not the system defined
417 --pbondugu 19-Mar-2003 Added the validation for inquiry date. New error code is added
418 for the same.
419 ***************************************************************/
420
421 -------------------------Variable Declarations-------------------------------------------------------
422 lv_deceased_ind igs_pe_hz_parties.deceased_ind%TYPE;
423
424 lv_exist varchar2(2000);
425 l_birth_date igs_pe_person_base_v.birth_date%TYPE;
426
427 l_error_text VARCHAR2(2000);
428 -------------------------End Variable Declarations-------------------------------------------------------
429
430 ------------------------------------Cursor Declarations----------------------------------------------
431 /*cursor to select Birth Date*/
432 CURSOR c_birth_date(p_person_id igs_pe_person_base_v.person_id%TYPE) IS
433 SELECT birth_date
434 FROM igs_pe_person_base_v
435 WHERE person_id =p_person_id ;
436
437 /*cursor to select inquiry status*/
438 CURSOR c_inquiry_status (cp_inquiry_status igr_i_appl_int.inquiry_status%TYPE) IS
439 SELECT
440 'X'
441 FROM
442 igr_i_status_v
443 WHERE
444 s_enquiry_status = cp_inquiry_status
445 AND dsp_closed_ind = 'N';
446
447 /*cursor to select inquiry source type */
448 CURSOR c_inquiry_source_type (cp_inquiry_source_type igr_i_appl_int.inquiry_source_type%TYPE) IS
449 SELECT
450 'X'
451 FROM
452 fnd_lookup_values
453 WHERE
454 LOOKUP_TYPE ='VEHICLE_RESPONSE_CODE'
455 AND lookup_code = cp_inquiry_source_type
456 AND enabled_flag ='Y'
457 AND LANGUAGE = USERENV('LANG')
458 AND VIEW_APPLICATION_ID = 279
459 AND SECURITY_GROUP_ID = 0;
460
461 /*cursor to select inquiry entry status id */
462 CURSOR c_inquiry_type_id (cp_inquiry_type_id igr_i_appl_int.inquiry_type_id%TYPE) IS
463 SELECT
464 'X'
465 FROM
466 igr_i_inquiry_types
467 WHERE
468 enabled_flag ='Y' AND
469 inquiry_type_id = cp_inquiry_type_id;
470
471 /*cursor to select inquiry entry level id */
472 CURSOR c_inquiry_entry_level_id (cp_inquiry_entry_level_id igr_i_appl_int.inquiry_entry_level_id%TYPE) IS
473 SELECT
474 inq_entry_level_id
475 FROM
476 igr_i_entry_lvls_v
477 WHERE
478 closed_ind = 'N'
479 AND inq_entry_level_id = cp_inquiry_entry_level_id;
480
481
482 /*cursor to select registering person id */
483 CURSOR c_registering_person_id (cp_registering_person_id igr_i_appl_int.registering_person_id%TYPE) IS
484 SELECT
485 'X'
486 FROM
487 igs_pe_person_base_v
488 WHERE
489 person_id = cp_registering_person_id;
490
491 /*cursor to select education goal */
492 CURSOR c_edu_goal_id (cp_edu_goal_id igr_i_appl_int.edu_goal_id%TYPE) IS
493 SELECT
494 'X'
495 FROM
496 igs_ad_code_classes cc
497 WHERE
498 cc.class = 'EDU_GOALS'
499 AND NVL(cc.closed_ind,'N') = 'N'
500 AND cc.code_id = cp_edu_goal_id;
501
502 /*cursor to select inquiry school of interest id */
503 CURSOR c_inq_school_of_interest_id (cp_inq_school_of_interest_id igr_i_appl_int.inquiry_school_of_interest_id%TYPE) IS
504 SELECT
505 'X'
506 FROM
507 igs_ad_schl_aply_to
508 WHERE
509 closed_ind = 'N'
510 AND sch_apl_to_id = cp_inq_school_of_interest_id;
511
512 /*cursor to select learn source id */
513 CURSOR c_learn_source_id (cp_learn_source_id igr_i_appl_int.learn_source_id%TYPE) IS
514 SELECT
515 'X'
516 FROM
517 igs_ad_code_classes cc
518 WHERE
519 cc.class = 'INQ_HOW_KNOWUS'
520 AND NVL(cc.closed_ind,'N') = 'N'
521 AND cc.code_id = cp_learn_source_id;
522
523
524 /*cursor to select influence source id */
525 CURSOR c_influence_source_id (cp_influence_source_id igr_i_appl_int.influence_source_id%TYPE) IS
526 SELECT
527 'X'
528 FROM
529 igs_ad_code_classes cc
530 WHERE
531 cc.class = 'INQ_WHO_INFLUENCED'
532 AND NVL(cc.closed_ind,'N') = 'N'
533 AND cc.code_id = cp_influence_source_id;
534
535
536 /*cursor to select academic cal type and ci sequence number */
537 CURSOR c_acad_cal_type_ci (p_acad_cal_type igr_i_appl_int.acad_cal_type%TYPE,
538 p_acad_ci_sequence_number igr_i_appl_int.acad_ci_sequence_number%TYPE) IS
539
540 SELECT
541 'X'
542 FROM
543 igs_ca_inst_alt_v ciav,
544 igs_lookups_view lkupv,
545 igs_lookups_view lkupv1
546 WHERE
547 (ciav.s_cal_cat = 'ACADEMIC' AND ciav.s_cal_status IN ('ACTIVE')
548 AND (p_acad_cal_type, p_acad_ci_sequence_number) IN
549 (SELECT
550 cir.sup_cal_type,
551 cir.sup_ci_sequence_number
552 FROM
553 igs_ca_inst_rel cir
554 WHERE
555 cir.sub_cal_type IN
556 (SELECT
557 ct.cal_type
558 FROM
559 igs_ca_type ct
560 WHERE
564 AND lkupv1.lookup_type = 'CALENDAR_STATUS';
561 ct.s_cal_cat = 'ADMISSION')))
562 AND lkupv.lookup_type='CAL_CAT' and lkupv.lookup_code='ACADEMIC'
563 AND lkupv1.lookup_code = ciav.s_cal_status
565
566
567 /*cursor to select admission cal type and ci sequence number */
568 CURSOR c_adm_cal_type_ci (p_adm_cal_type igr_i_appl_int.adm_cal_type%TYPE,
569 p_adm_ci_sequence_number igr_i_appl_int.adm_ci_sequence_number%TYPE) IS
570 SELECT
571 'X'
572 FROM
573 igs_ca_inst_alt_v ciav1,
574 igs_lookups_view lkupv,
575 igs_lookups_view lkupv1
576 WHERE
577 (ciav1.s_cal_cat = 'ADMISSION' and ciav1.s_cal_status in ('ACTIVE')
578 AND (p_adm_cal_type, p_adm_ci_sequence_number)
579 IN
580 (SELECT
581 cir.sub_cal_type,
582 cir.sub_ci_sequence_number
583 FROM
584 igs_ca_inst_rel cir
585 WHERE
586 cir.sup_cal_type = P_INQUIRY_DTLS_REC.ACAD_CAL_TYPE
587 AND cir.sup_ci_sequence_number = P_INQUIRY_DTLS_REC.ACAD_CI_SEQUENCE_NUMBER ))
588 AND lkupv.lookup_type='CAL_CAT' and lkupv.lookup_code = 'ADMISSION'
589 AND lkupv1.lookup_type = 'CALENDAR_STATUS' and lkupv1.lookup_code = ciav1.s_cal_status;
590
591 -- Validation for the deceased person is added as a part of the bug #2028066
592 CURSOR c_deceased(cp_party_id igs_pe_hz_parties.party_id%TYPE) IS
593 SELECT
594 deceased_ind
595 FROM
596 igs_pe_hz_parties
597 WHERE
598 party_id = cp_party_id;
599
600 -- Validation for the source_promotion_id added as a part of the Capture Campaign event
601
602 CURSOR c_source_promotion (cp_source_promotion_id igr_i_appl_int.source_promotion_id%TYPE) IS
603 SELECT
604 'X'
605 FROM
606 ams_p_source_codes_v sc,
607 ams_lookups lkup
608 WHERE sc.source_code_id = cp_source_promotion_id
609 AND sc.status IN ('ACTIVE','COMPLETED')
610 AND sc.source_type IN ('EVEH','CAMP')
611 AND sc.source_type = lkup.lookup_code(+)
612 AND lkup.lookup_type = 'AMS_SYS_ARC_QUALIFIER'
613 AND start_date < TRUNC (SYSDATE) ;
614
615
616 ------------------------------------End Cursor Declarations----------------------------------------------
617 BEGIN
618 /* setting the validation flag to true by default */
619 p_validation := TRUE;
620 /* Validation for inquiry date */
621 IF( p_inquiry_dtls_rec.inquiry_dt> SYSDATE) THEN
622 l_error_text := igs_ad_gen_016.get_lkup_meaning ('IMPORT_ERROR_CODE', 'E349', 8405);
623 UPDATE
624 igr_i_appl_int
625 SET
626 status = '3',
627 error_code = 'E349' , /* Error code for validation to check if system date is greater than system date */
628 error_text = l_error_text
629 WHERE
630 interface_inq_appl_id = p_inquiry_dtls_rec.interface_inq_appl_id ;
631
632 p_validation := FALSE;
633 RETURN;
634 END IF;
635
636 /* Validation to check for Birth Date */
637 OPEN c_birth_date(p_inquiry_dtls_rec.person_id);
638 FETCH c_birth_date INTO l_birth_date;
639 CLOSE c_birth_date;
640
641 IF ((l_birth_date IS NOT NULL) AND (l_birth_date > p_inquiry_dtls_rec.inquiry_dt)) THEN
642
643 l_error_text := igs_ad_gen_016.get_lkup_meaning ('IMPORT_ERROR_CODE', 'E583', 8405);
644 UPDATE
645 igr_i_appl_int
646 SET
647 status = '3',
648 error_code = 'E583' , /* Error code for validation to check if the person is deceased */
649 error_text = l_error_text
650 WHERE
651 interface_inq_appl_id = p_inquiry_dtls_rec.interface_inq_appl_id ;
652 p_validation := FALSE;
653 RETURN;
654 END IF;
655
656 /* Validation to check for deceased person */
657 OPEN c_deceased (p_inquiry_dtls_rec.person_id);
658 FETCH c_deceased INTO lv_deceased_ind;
659 CLOSE c_deceased;
660 IF lv_deceased_ind = 'Y' THEN
661 l_error_text := igs_ad_gen_016.get_lkup_meaning ('IMPORT_ERROR_CODE', 'E528', 8405);
662 UPDATE
663 igr_i_appl_int
664 SET
665 status = '3',
666 error_code = 'E528' , /* Error code for validation to check if the person is deceased */
667 error_text = l_error_text
668 WHERE
669 interface_inq_appl_id = p_inquiry_dtls_rec.interface_inq_appl_id ;
670
671 p_validation := FALSE;
672 RETURN;
673 END IF;
674
675 /* validation for inquiry status */
676 OPEN c_inquiry_status (p_inquiry_dtls_rec.inquiry_status);
677 FETCH c_inquiry_status INTO lv_exist;
678 IF c_inquiry_status%NOTFOUND THEN
679 l_error_text := igs_ad_gen_016.get_lkup_meaning ('IMPORT_ERROR_CODE', 'E302', 8405);
680 UPDATE
681 igr_i_appl_int
682 SET
683 status = '3',
684 error_code = 'E302' , /* Error code for validation for field Inquiry Status */
685 error_text = l_error_text
686 WHERE
687 interface_inq_appl_id = p_inquiry_dtls_rec.interface_inq_appl_id ;
688
689 p_validation := FALSE;
690 CLOSE c_inquiry_status;
691 RETURN;
692 END IF;
693
694 IF c_inquiry_status%ISOPEN THEN
695 CLOSE c_inquiry_status;
696 END IF;
697
698
699 /* validation for inquiry source type */
700 OPEN c_inquiry_source_type (p_inquiry_dtls_rec.inquiry_source_type);
701 FETCH c_inquiry_source_type INTO lv_exist;
702 IF c_inquiry_source_type%NOTFOUND THEN
703 l_error_text := igs_ad_gen_016.get_lkup_meaning ('IMPORT_ERROR_CODE', 'E303', 8405);
707 status = '3',
704 UPDATE
705 igr_i_appl_int
706 SET
708 error_code = 'E303', /*Error code for validation for field Inquiry Source Type*/
709 error_text = l_error_text
710 WHERE
711 interface_inq_appl_id = p_inquiry_dtls_rec.interface_inq_appl_id ;
712
713 p_validation := FALSE;
714 CLOSE c_inquiry_source_type;
715 RETURN;
716 END IF;
717
718 IF c_inquiry_source_type%ISOPEN THEN
719 CLOSE c_inquiry_source_type;
720 END IF;
721
722 /*validation for inquiry_type_id */
723 OPEN c_inquiry_type_id (p_inquiry_dtls_rec.inquiry_type_id);
724 FETCH c_inquiry_type_id INTO lv_exist;
725 IF c_inquiry_type_id%NOTFOUND THEN
726 l_error_text := igs_ad_gen_016.get_lkup_meaning ('IMPORT_ERROR_CODE', 'E313', 8405);
727 UPDATE
728 igr_i_appl_int
729 SET
730 status = '3',
731 error_code = 'E313', --Error code for validation for field Inquiry Type Id
732 error_text = l_error_text
733 WHERE
734 interface_inq_appl_id = p_inquiry_dtls_rec.interface_inq_appl_id ;
735
736 p_validation := FALSE;
737
738 CLOSE c_inquiry_type_id;
739 RETURN;
740 END IF;
741
742 IF c_inquiry_type_id%ISOPEN THEN
743 CLOSE c_inquiry_type_id;
744 END IF;
745
746 /* validation for Package items Reduction indicator */
747 IF p_inquiry_dtls_rec.pkg_reduct_ind IS NOT NULL THEN
748 IF p_inquiry_dtls_rec.pkg_reduct_ind NOT IN ('Y','N') THEN
749 l_error_text := igs_ad_gen_016.get_lkup_meaning ('IMPORT_ERROR_CODE', 'E360', 8405);
750 UPDATE igr_i_appl_int
751 SET status = '3',
752 error_code = 'E360' ,/*Error code for validation for field Package items Reduction Ind */
753 error_text = l_error_text
754 WHERE
755 interface_inq_appl_id = p_inquiry_dtls_rec.interface_inq_appl_id ;
756 p_validation := FALSE;
757 RETURN;
758 END IF;
759 END IF;
760
761 IF p_inquiry_dtls_rec.inquiry_entry_level_id IS NOT NULL THEN
762 /* validation for inquiry entry level id */
763 OPEN c_inquiry_entry_level_id (p_inquiry_dtls_rec.inquiry_entry_level_id);
764 FETCH c_inquiry_entry_level_id INTO lv_exist;
765 IF c_inquiry_entry_level_id%NOTFOUND THEN
766 l_error_text := igs_ad_gen_016.get_lkup_meaning ('IMPORT_ERROR_CODE', 'E305', 8405);
767 UPDATE
768 igr_i_appl_int
769 SET
770 status = '3',
771 error_code = 'E305' ,/*Error code for validation for field Inquiry Entry Level Id*/
772 error_text = l_error_text
773 WHERE
774 interface_inq_appl_id = p_inquiry_dtls_rec.interface_inq_appl_id ;
775
776 p_validation := FALSE;
777 CLOSE c_inquiry_entry_level_id;
778 RETURN;
779 END IF;
780
781 IF c_inquiry_entry_level_id%ISOPEN THEN
782 CLOSE c_inquiry_entry_level_id;
783 END IF;
784 END IF;
785
786 /* validation for registering person id */
787 IF p_inquiry_dtls_rec.registering_person_id IS NOT NULL THEN
788 OPEN c_registering_person_id (p_inquiry_dtls_rec.registering_person_id);
789 FETCH c_registering_person_id INTO lv_exist;
790
791 IF c_registering_person_id%NOTFOUND THEN
792 l_error_text := igs_ad_gen_016.get_lkup_meaning ('IMPORT_ERROR_CODE', 'E306', 8405);
793
794 UPDATE igr_i_appl_int
795 SET status = '3',
796 error_code = 'E306' , /*Error code for validation for field Registering person Id*/
797 error_text = l_error_text
798 WHERE
799 interface_inq_appl_id = p_inquiry_dtls_rec.interface_inq_appl_id ;
800 p_validation := FALSE;
801 CLOSE c_registering_person_id;
802 RETURN;
803 END IF;
804
805 IF c_registering_person_id%ISOPEN THEN
806 CLOSE c_registering_person_id;
807 END IF;
808 END IF;
809
810 /* validation for override process indicator */
811 IF p_inquiry_dtls_rec.override_process_ind IS NOT NULL THEN
812 IF p_inquiry_dtls_rec.override_process_ind NOT IN ('Y','N') THEN
813 l_error_text := igs_ad_gen_016.get_lkup_meaning ('IMPORT_ERROR_CODE', 'E307', 8405);
814 UPDATE igr_i_appl_int
815 SET status = '3',
816 error_code = 'E307' ,/*Error code for validation for field Override Process Ind */
817 error_text = l_error_text
818 WHERE
819 interface_inq_appl_id = p_inquiry_dtls_rec.interface_inq_appl_id ;
820 p_validation := FALSE;
821 RETURN;
822 END IF;
823 END IF;
824
825 /* validation for education goal id */
826 IF p_inquiry_dtls_rec.edu_goal_id IS NOT NULL THEN
827 OPEN c_edu_goal_id (p_inquiry_dtls_rec.edu_goal_id);
828 FETCH c_edu_goal_id INTO lv_exist;
829
830 IF c_edu_goal_id%NOTFOUND THEN
831 l_error_text := igs_ad_gen_016.get_lkup_meaning ('IMPORT_ERROR_CODE', 'E308', 8405);
832 UPDATE igr_i_appl_int
833 SET status = '3',
834 error_code = 'E308', /*Error code for validation for field Education Goal Id*/
835 error_text = l_error_text
836 WHERE
837 interface_inq_appl_id = p_inquiry_dtls_rec.interface_inq_appl_id ;
838
839 p_validation := FALSE;
840 CLOSE c_edu_goal_id;
841 RETURN;
842 END IF;
843 IF c_edu_goal_id%ISOPEN THEN
844 CLOSE c_edu_goal_id;
845 END IF;
846 END IF;
847
848 /* validation for inquiry school of interest */
852 IF c_inq_school_of_interest_id%NOTFOUND THEN
849 IF p_inquiry_dtls_rec.inquiry_school_of_interest_id IS NOT NULL THEN
850 OPEN c_inq_school_of_interest_id (p_inquiry_dtls_rec.inquiry_school_of_interest_id);
851 FETCH c_inq_school_of_interest_id INTO lv_exist;
853 l_error_text := igs_ad_gen_016.get_lkup_meaning ('IMPORT_ERROR_CODE', 'E309', 8405);
854 UPDATE igr_i_appl_int
855 SET status = '3',
856 error_code = 'E309' ,/*Error code for validation for field Inquiry School of Interest Id*/
857 error_text = l_error_text
858 WHERE
859 interface_inq_appl_id = p_inquiry_dtls_rec.interface_inq_appl_id ;
860
861 p_validation := FALSE;
862 CLOSE c_inq_school_of_interest_id;
863 RETURN;
864 END IF;
865
866 IF c_inq_school_of_interest_id%ISOPEN THEN
867 CLOSE c_inq_school_of_interest_id;
868 END IF;
869 END IF;
870
871
872 /* validation for learn source id */
873 IF p_inquiry_dtls_rec.learn_source_id IS NOT NULL THEN
874 OPEN c_learn_source_id (p_inquiry_dtls_rec.learn_source_id);
875 FETCH c_learn_source_id INTO lv_exist;
876 IF c_learn_source_id%NOTFOUND THEN
877 l_error_text := igs_ad_gen_016.get_lkup_meaning ('IMPORT_ERROR_CODE', 'E310', 8405);
878 UPDATE igr_i_appl_int
879 SET status = '3',
880 error_code = 'E310' ,/*Error code for validation for field Learn Source Id*/
881 error_text = l_error_text
882 WHERE
883 interface_inq_appl_id = p_inquiry_dtls_rec.interface_inq_appl_id ;
884
885 p_validation := FALSE;
886 CLOSE c_learn_source_id;
887 RETURN;
888 END IF;
889 IF c_learn_source_id%ISOPEN THEN
890 CLOSE c_learn_source_id;
891 END IF;
892 END IF;
893
894 /* validation for influence source id */
895 IF p_inquiry_dtls_rec.influence_source_id IS NOT NULL THEN
896 OPEN c_influence_source_id (p_inquiry_dtls_rec.influence_source_id);
897 FETCH c_influence_source_id INTO lv_exist;
898 IF c_influence_source_id%NOTFOUND THEN
899 l_error_text := igs_ad_gen_016.get_lkup_meaning ('IMPORT_ERROR_CODE', 'E311', 8405);
900 UPDATE igr_i_appl_int
901 SET status = '3',
902 error_code = 'E311' ,/*Error code for validation for field Influence Source Id*/
903 error_text = l_error_text
904 WHERE
905 interface_inq_appl_id = p_inquiry_dtls_rec.interface_inq_appl_id ;
906
907 p_validation := FALSE;
908 CLOSE c_influence_source_id;
909 RETURN;
910 END IF;
911 IF c_influence_source_id%ISOPEN THEN
912 CLOSE c_influence_source_id;
913 END IF;
914 END IF;
915
916 /* validation for the decriptive flex field attributes */
917 IF p_inquiry_dtls_rec.attribute_category IS NOT NULL THEN
918 IF NOT igs_ad_imp_018.validate_desc_flex
919 ( P_ATTRIBUTE_CATEGORY => p_inquiry_dtls_rec.attribute_category,
920 P_ATTRIBUTE1 => p_inquiry_dtls_rec.attribute1,
921 P_ATTRIBUTE2 => p_inquiry_dtls_rec.attribute2,
922 P_ATTRIBUTE3 => p_inquiry_dtls_rec.attribute3,
923 P_ATTRIBUTE4 => p_inquiry_dtls_rec.attribute4,
924 P_ATTRIBUTE5 => p_inquiry_dtls_rec.attribute5,
925 P_ATTRIBUTE6 => p_inquiry_dtls_rec.attribute6,
926 P_ATTRIBUTE7 => p_inquiry_dtls_rec.attribute7,
927 P_ATTRIBUTE8 => p_inquiry_dtls_rec.attribute8,
928 P_ATTRIBUTE9 => p_inquiry_dtls_rec.attribute9,
929 P_ATTRIBUTE10 => p_inquiry_dtls_rec.attribute10,
930 P_ATTRIBUTE11 => p_inquiry_dtls_rec.attribute11,
931 P_ATTRIBUTE12 => p_inquiry_dtls_rec.attribute12,
932 P_ATTRIBUTE13 => p_inquiry_dtls_rec.attribute13,
933 P_ATTRIBUTE14 => p_inquiry_dtls_rec.attribute14,
934 P_ATTRIBUTE15 => p_inquiry_dtls_rec.attribute15,
935 P_ATTRIBUTE16 => p_inquiry_dtls_rec.attribute16,
936 P_ATTRIBUTE17 => p_inquiry_dtls_rec.attribute17,
937 P_ATTRIBUTE18 => p_inquiry_dtls_rec.attribute18,
938 P_ATTRIBUTE19 => p_inquiry_dtls_rec.attribute19,
939 P_ATTRIBUTE20 => p_inquiry_dtls_rec.attribute20,
940 P_DESC_FLEX_NAME => 'IGR_S_INQUIRY_FLEX'
941 ) THEN
942
943 l_error_text := igs_ad_gen_016.get_lkup_meaning ('IMPORT_ERROR_CODE', 'E008', 8405);
944 UPDATE igr_i_appl_int
945 SET status = '3',
946 error_code = 'E008' ,/*Using this Error code for validation for field Flex Field as no error code specified for this*/
947 error_text = l_error_text
948 WHERE
949 interface_inq_appl_id = p_inquiry_dtls_rec.interface_inq_appl_id ;
950
951 p_validation := FALSE;
952 RETURN;
953 END IF;
954 END IF;
955
956 /* validation for academic cal type and ci sequence number */
957 IF p_inquiry_dtls_rec.acad_cal_type IS NOT NULL THEN
958 OPEN c_acad_cal_type_ci (p_inquiry_dtls_rec.acad_cal_type,
959 p_inquiry_dtls_rec.acad_ci_sequence_number);
960
961
962 FETCH c_acad_cal_type_ci INTO lv_exist;
963 IF c_acad_cal_type_ci%NOTFOUND THEN
964 l_error_text := igs_ad_gen_016.get_lkup_meaning ('IMPORT_ERROR_CODE', 'E301', 8405);
965 UPDATE igr_i_appl_int
966 SET status = '3',
967 error_code = 'E301' ,/*Using this Error code for validation for field Acad Cal type ci seq number as no specific error code specified for this*/
968 error_text = l_error_text
969 WHERE interface_inq_appl_id = p_inquiry_dtls_rec.interface_inq_appl_id ;
970
974 END IF;
971 p_validation := FALSE;
972 CLOSE c_acad_cal_type_ci;
973 RETURN;
975
976 IF c_acad_cal_type_ci%ISOPEN THEN
977 CLOSE c_acad_cal_type_ci;
978 END IF;
979 END IF;
980
981 /* validation for admission cal type and ci sequence number */
982 IF p_inquiry_dtls_rec.adm_cal_type IS NOT NULL THEN
983 OPEN c_adm_cal_type_ci (p_inquiry_dtls_rec.adm_cal_type,
984 p_inquiry_dtls_rec.adm_ci_sequence_number);
985
986
987 FETCH c_adm_cal_type_ci INTO lv_exist;
988 IF c_adm_cal_type_ci%NOTFOUND THEN
989 l_error_text := igs_ad_gen_016.get_lkup_meaning ('IMPORT_ERROR_CODE', 'E301', 8405);
990 UPDATE igr_i_appl_int
991 SET status = '3',
992 error_code = 'E301' ,/* Using this Error code for validation for field Adm Cal type ci seq number as no specific error code specified*/
993 error_text = l_error_text
994 WHERE
995 interface_inq_appl_id = p_inquiry_dtls_rec.interface_inq_appl_id ;
996 p_validation := FALSE;
997 CLOSE c_adm_cal_type_ci;
998 RETURN;
999 END IF;
1000
1001 IF c_adm_cal_type_ci%ISOPEN THEN
1002 CLOSE c_adm_cal_type_ci;
1003 END IF;
1004 END IF;
1005
1006 /* Validation to check for Source Promotion */
1007 IF p_inquiry_dtls_rec.source_promotion_id IS NOT NULL THEN
1008 OPEN c_source_promotion(p_inquiry_dtls_rec.source_promotion_id);
1009 FETCH c_source_promotion INTO lv_exist;
1010
1011 IF c_source_promotion%NOTFOUND THEN
1012 l_error_text := igs_ad_gen_016.get_lkup_meaning ('IMPORT_ERROR_CODE', 'E584', 8405);
1013 UPDATE
1014 igr_i_appl_int
1015 SET
1016 status = '3',
1017 error_code = 'E584' , /* Error code if source promotion ID is not correct */
1018 error_text = l_error_text
1019 WHERE
1020 interface_inq_appl_id = p_inquiry_dtls_rec.interface_inq_appl_id ;
1021 p_validation := FALSE;
1022 CLOSE c_source_promotion;
1023 RETURN;
1024 END IF;
1025
1026 IF c_source_promotion%ISOPEN THEN
1027 CLOSE c_source_promotion;
1028 END IF;
1029 END IF ;
1030
1031
1032 /* Setting the validation flag to TRUE in case there are no validation errors*/
1033 p_validation := TRUE;
1034 END validate_person_inquiry;
1035
1036
1037 PROCEDURE process_person_inquiry (
1038 p_interface_run_id IN NUMBER,
1039 p_source_type_id IN NUMBER,
1040 p_enable_log IN VARCHAR2,
1041 p_rule IN VARCHAR2) AS
1042 /*************************************************************
1043 Created By :Syam.Krishnan
1044 Date Created By :12-JUN-2001
1045 Purpose : To process person inquiries
1046 Know limitations, enhancements or remarks
1047 Change History
1048 Who When What
1049 rrengara 11-FEB-2003 As a part of Build RCT. All the funnel status logic has been moved to TBH
1050 mesriniv 19-FEB-2002 Funnel Status Values for IDENTIFIED,CONTACTED,INQUIRED
1051 were changed as below as per the SWCR001 Person Change Build
1052 Bug :2203778
1053 sykrishn 05/09 IDOPA2 Changes
1054 (reverse chronological order - newest change first)
1055 ***************************************************************/
1056 --------------Variable Declaration-----------------------------------------
1057 lb_validation boolean ;
1058 v_pr_inq_status varchar2(1);
1059 l_records_processed NUMBER;
1060
1061 l_request_id NUMBER;
1062 l_error_text VARCHAR2(2000);
1063
1064 --------------End Variable Declaration-----------------------------------------
1065 BEGIN
1066 l_records_processed := 0;
1067 lb_validation := FALSE;
1068
1069 IF (l_request_id IS NULL) THEN
1070 l_request_id := fnd_global.conc_request_id;
1071 END IF;
1072
1073 /* loop across the inquiry details interface records */
1074 FOR v_inquiry_dtls_rec IN c_inquiry_dtls (p_interface_run_id) LOOP
1075 l_records_processed := l_records_processed + 1;
1076 SAVEPOINT perinq_save;
1077 /* procedure to validate the data elements in inquiry details records*/
1078 validate_person_inquiry (v_inquiry_dtls_rec,lb_validation);
1079 /* If validation is passed then create the person inquiry */
1080 IF lb_validation THEN
1081 /* procedure to create person inquiry */
1082 create_person_inquiry (v_inquiry_dtls_rec,p_source_type_id,v_pr_inq_status);
1083 END IF;
1084 IF l_records_processed = 100 THEN
1085 COMMIT;
1086 l_records_processed := 0;
1087 END IF;
1088 END LOOP;
1089 IF l_records_processed < 100 AND l_records_processed > 0 THEN
1090 COMMIT;
1091 END IF;
1092 END process_person_inquiry;
1093
1094 PROCEDURE validate_inquiry_lines ( p_inquiry_lines_rec IN c_inquiry_lines%ROWTYPE,
1095 p_validation OUT NOCOPY BOOLEAN )
1096 AS
1097 /*************************************************************
1098 Created By :Ramesh.Rengarajan
1099 Date Created By :5-FEB-2003
1100 Purpose : To validate inquiry lines
1101 Know limitations, enhancements or remarks
1102 Change History
1103 Who When What
1104
1105 (reverse chronological order - newest change first)
1106 ***************************************************************/
1107
1111 l_error_text VARCHAR2(2000);
1108 --------------------Variable Declaration-----------------------------------------------
1109 lv_exists VARCHAR2(2000);
1110
1112 --------------------End Variable Declaration-----------------------------------------------
1113
1114 ---------------------Cursor Declaration------------------------------------------------------------
1115
1116 /*Cursor to validate the Product Category Id and Product Category Set ID *****/
1117 CURSOR c_val_acad_int(cp_product_category_id igr_i_lines_int.product_category_id%TYPE,
1118 cp_product_category_set_id igr_i_lines_int.product_category_set_id%TYPE) IS
1119 SELECT 'X'
1120 FROM ENI_PROD_DENORM_HRCHY_V EPDHV,
1121 ENI_PROD_DEN_HRCHY_PARENTS_V P,
1122 MTL_CATEGORIES_V C
1123 WHERE P.CATEGORY_ID = EPDHV.CHILD_ID
1124 AND EPDHV.PARENT_ID = C.CATEGORY_ID
1125 AND C.DESCRIPTION = 'OSS Academic Interest'
1126 AND EPDHV.PARENT_ID <> P.CATEGORY_ID
1127 AND P.PURCHASE_INTEREST = 'Y'
1128 AND ( P.DISABLE_DATE IS NULL OR P.DISABLE_DATE > SYSDATE )
1129 AND P.category_id = cp_product_category_id
1130 AND P.category_set_id = cp_product_category_set_id;
1131
1132
1133 ---------------------End Cursor Declaration------------------------------------------------------------
1134 BEGIN
1135 /* setting the validation flag to true by default */
1136 p_validation := TRUE;
1137
1138 OPEN c_val_acad_int(p_inquiry_lines_rec.product_category_id, p_inquiry_lines_rec.product_category_set_id );
1139 FETCH c_val_acad_int INTO lv_exists;
1140 IF c_val_acad_int%NOTFOUND THEN
1141
1142 l_error_text := igs_ad_gen_016.get_lkup_meaning ('IMPORT_ERROR_CODE', 'E314', 8405);
1143
1144 UPDATE
1145 igr_i_lines_int
1146 SET
1147 status = 3,
1148 error_code = 'E314',
1149 error_text = l_error_text
1150 WHERE
1151 interface_lines_id = p_inquiry_lines_rec.interface_lines_id;
1152
1153 p_validation := FALSE;
1154 CLOSE c_val_acad_int;
1155 RETURN;
1156 END IF;
1157 CLOSE c_val_acad_int;
1158
1159 /**if all validations passed set it to true **/
1160 p_validation := TRUE;
1161 END validate_inquiry_lines;
1162
1163 PROCEDURE process_inquiry_lines (
1164 p_interface_run_id IN NUMBER,
1165 p_enable_log IN VARCHAR2,
1166 p_rule IN VARCHAR2) AS
1167
1168 /*************************************************************
1169 Created By :Ramesh.Rengarajan
1170 Date Created By :5-FEB-2003
1171 Purpose : To Process Inquiry Programs
1172 Know limitations, enhancements or remarks
1173 Change History
1174 Who When What
1175
1176 (reverse chronological order - newest change first)
1177 ***************************************************************/
1178 lv_msg_count NUMBER ;
1179 lv_msg_data VARCHAR2(9000);
1180 lv_return_status VARCHAR2(1);
1181 lb_validation boolean ;
1182 l_sales_lead_line_id igr_i_a_lines.sales_lead_line_id%TYPE;
1183 lv_rowid VARCHAR2(100);
1184 l_records_processed NUMBER ;
1185
1186 l_prog_label VARCHAR2(100);
1187 l_error_code VARCHAR2(30);
1188 l_request_id NUMBER;
1189 l_label VARCHAR2(100);
1190 l_debug_str VARCHAR2(2000);
1191 l_enable_log VARCHAR2(1);
1192 l_rowid VARCHAR2(25);
1193 l_error_text VARCHAR2(2000);
1194 l_type VARCHAR2(1);
1195 l_status VARCHAR2(1);
1196
1197
1198 BEGIN
1199 l_records_processed := 0;
1200 lb_validation := FALSE;
1201 IF (l_request_id IS NULL) THEN
1202 l_request_id := fnd_global.conc_request_id;
1203 END IF;
1204
1205 /** Iterate in Cursor for Inquiry lines **/
1206 FOR v_inquiry_lines_rec IN c_inquiry_lines (p_interface_run_id) LOOP
1207
1208 l_records_processed := l_records_processed + 1;
1209 SAVEPOINT perinqlin_save;
1210
1211 validate_inquiry_lines (v_inquiry_lines_rec,lb_validation);
1212
1213 IF lb_validation THEN
1214
1215 BEGIN
1216 igr_inquiry_lines_pkg.insert_row (
1217 x_mode => 'R',
1218 x_rowid => lv_rowid,
1219 x_sales_lead_line_id => l_sales_lead_line_id,
1220 x_person_id => v_inquiry_lines_rec.person_id,
1221 x_enquiry_appl_number => v_inquiry_lines_rec.enquiry_appl_number,
1222 x_enquiry_dt => v_inquiry_lines_rec.inquiry_date,
1223 x_inquiry_method_code => v_inquiry_lines_rec.inquiry_source_type,
1224 x_preference => v_inquiry_lines_rec.preference,
1225 x_ret_status => lv_return_status,
1226 x_msg_data => lv_msg_data,
1227 x_msg_count => lv_msg_count,
1228 x_product_category_id => v_inquiry_lines_rec.product_category_id,
1229 x_product_category_set_id => v_inquiry_lines_rec.product_category_set_id
1230 );
1231
1232 IF lv_return_status <>'U' AND lv_msg_data IS NOT NULL THEN
1233
1234 IF l_enable_log = 'Y' THEN
1235 igs_ad_imp_001.logerrormessage(v_inquiry_lines_rec.interface_inq_appl_id,lv_msg_data);
1236 END IF;
1237
1238 ELSIF lv_return_status = 'U' THEN
1239
1240 IF fnd_log.test(fnd_log.level_exception,l_prog_label) THEN
1241 l_label := 'igs.plsql.igr_imp_003.process_inquiry_lines.exception '||'E322';
1242 fnd_message.set_name('IGS','IGS_PE_IMP_DET_ERROR');
1243 fnd_message.set_token('CONTEXT',v_inquiry_lines_rec.interface_lines_id);
1244 fnd_message.set_token('ERROR', l_error_text);
1245 l_debug_str := fnd_message.get;
1246 fnd_log.string_with_context( fnd_log.level_exception,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,TO_CHAR(l_request_id));
1247 END IF;
1248
1249 END IF;
1250
1251 IF lv_msg_data IS NOT NULL THEN
1252
1253 /* Return status of Null should be treated as Success */
1254 IF NVL(lv_return_status,'S') = 'S' THEN
1255 UPDATE igr_i_lines_int
1256 SET status = '4',
1257 error_code = 'E702',
1258 error_text = lv_msg_data
1259 WHERE rowid = v_inquiry_lines_rec.rowid;
1260 ELSE
1261 ROLLBACK TO perinqlin_save;
1262 UPDATE igr_i_lines_int
1263 SET status = '3',
1264 error_code = 'E322',
1265 error_text = lv_msg_data
1266 WHERE rowid = v_inquiry_lines_rec.rowid;
1267 END IF;
1268
1269 ELSE
1270
1271 /* Return status of Null should be treated as Success */
1272 IF NVL(lv_return_status,'S') = 'S' THEN
1273 UPDATE igr_i_lines_int
1274 SET status = '1',
1275 error_code = NULL,
1276 error_text = NULL
1277 WHERE rowid = v_inquiry_lines_rec.rowid;
1278 ELSE
1279
1280 l_error_text := igs_ad_gen_016.get_lkup_meaning ('IMPORT_ERROR_CODE', 'E322', 8405);
1281 ROLLBACK TO perinqlin_save;
1282 UPDATE igr_i_lines_int
1283 SET status = '3',
1284 error_code = 'E322',
1285 error_text = l_error_text
1286 WHERE rowid = v_inquiry_lines_rec.rowid;
1287 END IF;
1288
1289 END IF;
1290
1291 EXCEPTION
1292 WHEN OTHERS THEN
1293 ROLLBACK TO perinqlin_save;
1294 l_error_text := igs_ad_gen_016.get_lkup_meaning ('IMPORT_ERROR_CODE', 'E322', 8405);
1295 UPDATE igr_i_lines_int
1296 SET status = '3',
1297 error_code = 'E322' ,
1298 error_text = l_error_text
1299 WHERE interface_lines_id = v_inquiry_lines_rec.interface_lines_id;
1300 END;
1301
1302 END IF;
1303
1304 IF l_records_processed = 100 THEN
1305 COMMIT;
1306 l_records_processed := 0;
1307 END IF;
1308
1309 END LOOP;
1310
1311 IF l_records_processed < 100 AND l_records_processed > 0 THEN
1312 COMMIT;
1313 END IF;
1314
1315 END process_inquiry_lines;
1316
1317 END IGR_IMP_003;