DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_PT_GEN_PKG

Source


1 PACKAGE BODY igs_pt_gen_pkg AS
2 /* $Header: IGSPT01B.pls 115.4 2003/12/11 16:03:12 amuthu noship $ */
3 
4 -------------------------------------------------------------------------------
5   --Created by  : msrinivi ( Oracle IDC)
6   --Date created: 29-Jun-2002
7   --
8   --Purpose:
9   --
10   --Known limitations/enhancements and/or remarks:
11   --
12   --Change History:
13   --Who         When            What
14   --stutta      27-NOV-2003     Modified call to igs_ss_enr_details.enrp_get_prgm_for_career
15   --                            in function get_program_info by passing in two new parameters
16   --                            term_cal_type, term_sequence_number. term record build 2829263
17   --amuthu      11-dec-2003     replaced IGS_SS_ENR_DETAILS1 with IGS_SS_ENR_DETAILS
18   ------------------------------------------------------------------------------
19 /*
20    This function returns the enrolled program info for a student in a term as a concat string.
21   This is used in portal where only the first 5 enrolled units are displayed
22   Career info sets to be set in the session so that when the user navigates
23   to the SS screen, the schedule is queried already.
24   The logic to find the pri prog for the first 5 enrolled units is as follows :
25 
26   1. Select list of programs with units for the displayed term in the portlet
27   2. If single program
28         a. Always use it
29      else
30         b. If key program in the list
31                 - Use it
32           else
33                 - Use the program from the list with the latest commencement date
34 */
35 
36 FUNCTION get_program_info(
37                              p_person_id               IN VARCHAR2,
38                              p_load_cal_type           IN VARCHAR2,
39                              p_load_sequence_number    IN VARCHAR2,
40                              p_num_units               IN NUMBER DEFAULT 5
41 ) RETURN VARCHAR2 AS
42 
43 -- This cursor is to be used if the career_centric model is enabled
44 
45 CURSOR c_enr_progs_in_prog_cntr IS
46        SELECT course_cd
47        FROM igs_en_su_attempt
48        WHERE person_id = p_person_id
49        AND unit_attempt_status = 'ENROLLED'
50        AND (cal_type,ci_sequence_number) IN
51            (
52              SELECT teach_cal_type,teach_ci_sequence_number  FROM
53              igs_ca_load_to_teach_v  where load_cal_type = p_load_cal_type
54              AND load_ci_sequence_number = p_load_sequence_number
55             )
56         AND rownum <= p_num_units
57         ORDER BY unit_cd;
58 
59 -- This cursor is to be used if the career_centric model is enabled
60 -- It has the additional check to fetch enrolled units from Pri Prog
61 
62 CURSOR c_enr_progs_in_car_cntr IS
63        SELECT course_cd
64        FROM igs_en_su_attempt
65        WHERE person_id = p_person_id
66        AND unit_attempt_status = 'ENROLLED'
67        AND (cal_type,ci_sequence_number) IN
68            (
69              SELECT teach_cal_type,teach_ci_sequence_number  FROM
70              igs_ca_load_to_teach_v  where load_cal_type = p_load_cal_type
71              AND load_ci_sequence_number = p_load_sequence_number
72             )
73         AND course_cd IN (
74                              SELECT course_cd FROM igs_en_stdnt_ps_att
75                              WHERE  primary_program_type = 'PRIMARY'
76                              AND    person_id = p_person_id
77                              AND course_attempt_status  IN ('INACTIVE','ENROLLED')
78                          )
79         AND rownum <= p_num_units
80         ORDER BY unit_cd;
81 
82 CURSOR c_key_program(p_prog_cd VARCHAR2) IS
83       SELECT NVL(key_program,'N') , version_number, title
84       FROM igs_en_sca_v
85       WHERE COURSE_CD      = p_prog_cd
86       AND PERSON_ID        = p_person_id
87       ORDER BY commencement_dt DESC;
88 
89  CURSOR c_career(p_prog_cd igs_ps_ver_all.course_cd%TYPE,p_ver_num igs_ps_ver_all.version_number%TYPE) IS
90  SELECT course_type
91  FROM igs_ps_ver_all
92  WHERE course_cd = p_prog_cd
93  AND version_number = p_ver_num ;
94 
95 
96 l_key_prog_cd igs_en_stdnt_ps_att_all.course_cd%TYPE;
97 l_key_prog_ind igs_en_stdnt_ps_att_all.key_program%TYPE DEFAULT 'N';
98 l_single_prog_exists BOOLEAN DEFAULT TRUE;
99 l_curr_prog_cd igs_en_stdnt_ps_att_all.course_cd%TYPE;
100 
101 l_primary_program igs_en_stdnt_ps_att_all.course_cd%TYPE;
102 l_primary_program_version igs_en_stdnt_ps_att_all.version_number%TYPE;
103 l_programlist VARCHAR2(2000);
104 
105 p_program_cd              igs_en_stdnt_ps_att_all.course_cd%TYPE;
106 p_program_ver             igs_en_stdnt_ps_att_all.version_number%TYPE;
107 p_career                  igs_ps_ver.course_type%TYPE;
108 p_program_list            VARCHAR2(2000);
109 p_program_title           VARCHAR2(200);
110 l_curr_prog_cd_tmp        igs_en_stdnt_ps_att_all.course_cd%TYPE;
111 
112 BEGIN
113 
114   IF fnd_profile.value('CAREER_MODEL_ENABLED') = 'Y' THEN
115     FOR c_enr_progs_in_term_rec IN c_enr_progs_in_car_cntr  LOOP  -- If career centric model
116       EXIT WHEN c_enr_progs_in_car_cntr%NOTFOUND;
117 
118       IF c_enr_progs_in_car_cntr%rowcount = 1 THEN
119         -- Storing the first prog in a var
120         l_curr_prog_cd := c_enr_progs_in_term_rec.course_cd;
121       END IF;
122 
123       OPEN  c_key_program(c_enr_progs_in_term_rec.course_cd);
124       FETCH c_key_program INTO l_key_prog_ind, p_program_ver,p_program_title;
125         IF l_key_prog_ind = 'Y' THEN
126            l_key_prog_cd := c_enr_progs_in_term_rec.course_cd;
127         END IF;
128       CLOSE c_key_program;
129     END LOOP;
130 
131   ELSE  -- If program centric model
132     FOR c_enr_progs_in_term_rec IN c_enr_progs_in_prog_cntr  LOOP
133       EXIT WHEN c_enr_progs_in_prog_cntr%NOTFOUND;
134 
135       IF c_enr_progs_in_prog_cntr%rowcount = 1 THEN
136         -- Storing the first prog in a var
137         l_curr_prog_cd := c_enr_progs_in_term_rec.course_cd;
138       END IF;
139 
140       OPEN  c_key_program(c_enr_progs_in_term_rec.course_cd);
141       FETCH c_key_program INTO l_key_prog_ind, p_program_ver,p_program_title;
142         IF l_key_prog_ind = 'Y' THEN
143            l_key_prog_cd := c_enr_progs_in_term_rec.course_cd;
144         END IF;
145       CLOSE c_key_program;
146     END LOOP;
147   END IF;
148 
149     IF l_key_prog_cd IS NOT NULL THEN
150       p_program_cd := l_key_prog_cd;
151     ELSE
152       p_program_cd := l_curr_prog_cd;
153     END IF;
154 
155     IF p_program_cd IS NOT NULL THEN
156       -- to get the program version number
157       OPEN  c_key_program(p_program_cd);
158       FETCH c_key_program INTO l_curr_prog_cd_tmp, p_program_ver, p_program_title;
159       CLOSE c_key_program ;
160     END IF;
161 
162     IF NVL(fnd_profile.value('CAREER_MODEL_ENABLED'),'N') = 'Y' THEN
163 
164       --To get career information
165       OPEN c_career(p_program_cd,p_program_ver);
166       FETCH c_career INTO p_career;
167       CLOSE c_career;
168 
169       IF p_career IS NOT NULL THEN
170         IGS_SS_ENR_DETAILS.ENRP_GET_PRGM_FOR_CAREER(
171         p_primary_program         => p_program_cd,
172         p_primary_program_version => p_program_ver,
173         p_programlist             => p_program_list,
174         p_person_id               => p_person_id,
175         p_carrer                  => p_career,
176         p_term_cal_type           => p_load_cal_type,
177         p_term_sequence_number    => p_load_sequence_number
178       );
179       END IF;
180     END IF;
181      RETURN NVL(p_program_cd,'') ||'*'||  NVL(p_program_ver,'') ||  '*'|| NVL(p_program_title,'') || '*'|| NVL(p_career,'') || '*'|| NVL(p_program_list,'') ;
182 
183   END get_program_info;
184 
185 
186 
187 END igs_pt_gen_pkg ;