DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_DA_UTILS_PKG

Source


1 PACKAGE BODY IGS_DA_UTILS_PKG AS
2 /* $Header: IGSDA09B.pls 115.4 2004/02/20 15:09:07 kdande noship $ */
3 
4 /********************************************************************************************************
5  Created By         : Jitendra Handa
6  Date Created By    : 27-Mar-2003
7 
8  Purpose            : This package is to be used for the Self Service
9                       activities that happen during the Degree Audit
10                       Request Process.  The procedures in this package
11                       will be using procedures defined for the processing
12                       of request information as well.
13 
14  remarks            :
15 
16  Change History
17 
18 Who                  When            What
19 ---------------------------------------------------------------
20 smanglm              05-Aug-2003     Bug 3084766: Make use of Dynamic Person ID Group if the igs_pe_persid_group_all.FILE_NAME
21                                      is not null else make use of static query. Changes made in the CURSOR c_stud_grp_mem of
22                                      create_req_stdnts_rec procedure
23 Jitendra Handa       27-Mar-2003     New Package Created.
24 
25 ***********************************************************************************************************/
26 
27  g_pkg_name          CONSTANT     VARCHAR2(30) := 'IGS_DA_UTILS_PKG';
28 
29 -- This procedure is caled to set the STUDENT_RELEASE_IND to Y
30 -- Indicating that the report has been released to students and
31 -- can be viewed by students .
32 PROCEDURE release_report_to_students
33   (
34     p_batch_id IN Number
35   )IS
36 begin
37  DECLARE
38 
39                 CURSOR c_da_rqst IS
40                     SELECT rowid, da.*
41                      FROM IGS_DA_RQST da
42                      WHERE BATCH_ID = p_batch_id;
43 
44 -- Declare local variables :
45 V_RETURN_STATUS     VARCHAR2(30);
46 V_MSG_DATA          VARCHAR2(100);
47 V_MSG_COUNT         NUMBER;
48 V_DA_RQST           c_da_rqst%ROWTYPE;
49 BEGIN
50 -- STUDENT_RELEASE_IND flag will be updated to Y
51   OPEN c_da_rqst;
52   FETCH c_da_rqst INTO v_da_rqst;
53   IF c_da_rqst%ROWCOUNT = 1 THEN
54      -- call update_row
55      IGS_DA_RQST_PKG.UPDATE_ROW(
56                                 X_ROWID                          =>   v_da_rqst.ROWID                     ,
57                                 X_BATCH_ID                       =>   v_da_rqst.BATCH_ID                  ,
58                                 X_REQUEST_TYPE_ID                =>   v_da_rqst.REQUEST_TYPE_ID           ,
59                                 X_REQUEST_MODE                   =>   v_da_rqst.REQUEST_MODE              ,
60                                 X_PROGRAM_COMPARISON_TYPE        =>   v_da_rqst.PROGRAM_COMPARISON_TYPE   ,
61                                 X_REQUEST_STATUS                 =>   v_da_rqst.REQUEST_STATUS            ,
62                                 X_PERSON_ID_GROUP_ID             =>   v_da_rqst.PERSON_ID_GROUP_ID        ,
63                                 X_PERSON_ID                      =>   v_da_rqst.PERSON_ID                 ,
64                                 X_REQUESTOR_ID                   =>   v_da_rqst.REQUESTOR_ID              ,
65                                 X_STUDENT_RELEASE_IND            =>   'Y'                                 ,
66                                 X_SPECIAL_PROGRAM                =>   v_da_rqst.SPECIAL_PROGRAM           ,
67                                 X_SPECIAL_PROGRAM_CATALOG        =>   v_da_rqst.SPECIAL_PROGRAM_CATALOG   ,
68                                 X_ATTRIBUTE_CATEGORY             =>   v_da_rqst.ATTRIBUTE_CATEGORY        ,
69                                 X_ATTRIBUTE1                     =>   v_da_rqst.ATTRIBUTE1                ,
70                                 X_ATTRIBUTE2                     =>   v_da_rqst.ATTRIBUTE2                ,
71                                 X_ATTRIBUTE3                     =>   v_da_rqst.ATTRIBUTE3                ,
72                                 X_ATTRIBUTE4                     =>   v_da_rqst.ATTRIBUTE4                ,
73                                 X_ATTRIBUTE5                     =>   v_da_rqst.ATTRIBUTE5                ,
74                                 X_ATTRIBUTE6                     =>   v_da_rqst.ATTRIBUTE6                ,
75                                 X_ATTRIBUTE7                     =>   v_da_rqst.ATTRIBUTE7                ,
76                                 X_ATTRIBUTE8                     =>   v_da_rqst.ATTRIBUTE8                ,
77                                 X_ATTRIBUTE9                     =>   v_da_rqst.ATTRIBUTE9                ,
78                                 X_ATTRIBUTE10                    =>   v_da_rqst.ATTRIBUTE10               ,
79                                 X_ATTRIBUTE11                    =>   v_da_rqst.ATTRIBUTE11               ,
80                                 X_ATTRIBUTE12                    =>   v_da_rqst.ATTRIBUTE12               ,
81                                 X_ATTRIBUTE13                    =>   v_da_rqst.ATTRIBUTE13               ,
82                                 X_ATTRIBUTE14                    =>   v_da_rqst.ATTRIBUTE14               ,
83                                 X_ATTRIBUTE15                    =>   v_da_rqst.ATTRIBUTE15               ,
84                                 X_ATTRIBUTE16                    =>   v_da_rqst.ATTRIBUTE16               ,
85                                 X_ATTRIBUTE17                    =>   v_da_rqst.ATTRIBUTE17               ,
86                                 X_ATTRIBUTE18                    =>   v_da_rqst.ATTRIBUTE18               ,
87                                 X_ATTRIBUTE19                    =>   v_da_rqst.ATTRIBUTE19               ,
88                                 X_ATTRIBUTE20                    =>   v_da_rqst.ATTRIBUTE20               ,
89                                 X_MODE                           =>   'R'                                 ,
90                                 X_RETURN_STATUS                  =>   v_RETURN_STATUS                     ,
91                                 X_MSG_DATA                       =>   v_MSG_DATA                          ,
92                                 X_MSG_COUNT                      =>   v_MSG_COUNT
93      );
94   END IF;
95 
96   CLOSE c_da_rqst;
97 
98   EXCEPTION
99         WHEN OTHERS THEN
100         NULL;
101   END;
102 
103 END release_report_to_students;
104 
105 PROCEDURE create_req_stdnts_rec (p_batch_id                          IN NUMBER,
106                                  X_RETURN_STATUS                     OUT NOCOPY    VARCHAR2,
107                                  X_MSG_DATA                          OUT NOCOPY    VARCHAR2,
108                                  X_MSG_COUNT                         OUT NOCOPY    NUMBER
109                                 ) IS
110     l_rowid                VARCHAR2(100);
111     l_igs_da_req_stdnts_id NUMBER(30);
112     l_return_status        VARCHAR2(100);
113     l_msg_data             VARCHAR2(2000);
114     l_msg_count            NUMBER(25);
115 
116     --
117     -- declare the ref cursor
118     --
119       TYPE REF_CUR IS REF CURSOR;
120 
121     --
122     -- now declare the variables for the above ref curosr
123     --
124       c_stud_grp_mem   REF_CUR;
125 
126     --
127     -- declare the out param for the funtion IGS_PE_DYNAMIC_PERSID_GROUP.IGS_GET_DYNAMIC_SQL
128     --
129       l_status VARCHAR2(2000);
130 
131     --
132     -- declare a variablt to store the person_id that would be obtained from the above ref cursors
133     --
134       l_person_id igs_pe_person.person_id%TYPE;
135     --
136     -- cursor to check whether dynamic person_id_group has to be used or not based on the value
137     -- of igs_pe_persid_group_all.file_name for the given group_id
138     --
139     CURSOR c_is_filename_null (cp_group_id igs_pe_persid_group_all.group_id%TYPE) IS
140         SELECT 'Y' FROM igs_pe_persid_group_all WHERE group_id = cp_group_id AND file_name IS NULL;
141      l_is_filename_null varchar2(1) := 'N';
142 
143     CURSOR c_igs_da_rqst (cp_batch_id igs_da_rqst.batch_id%TYPE) IS
144            SELECT dr.rowid, dr.*
145            FROM   igs_da_rqst dr
146            WHERE  batch_id = cp_batch_id;
147     rec_igs_da_rqst c_igs_da_rqst%ROWTYPE;
148 
149     l_stc_stud_grp_mem VARCHAR2(2000) := ' SELECT person_id FROM igs_pe_prsid_grp_mem WHERE  group_id = :1 ';
150     l_dyn_stud_grp_mem VARCHAR2(2000);
151 
152     CURSOR c_igs_da_rec_wif (cp_batch_id  igs_da_rqst.batch_id%TYPE) IS
153            SELECT *
154            FROM   igs_da_req_wif
155            WHERE  batch_id = cp_batch_id;
156 
157     CURSOR c_prog_attempt (cp_person_id igs_da_rqst.person_id%TYPE) IS
158            SELECT course_cd
159            FROM  igs_en_stdnt_ps_att
160            WHERE person_id = cp_person_id
161            AND   course_attempt_status NOT IN ('DISCONTIN','UNCONFIRM');
162 
163     CURSOR c_dff (cp_batch_id igs_da_rqst.batch_id%TYPE) IS
164            SELECT crt.*
165            FROM   igs_da_cnfg_req_typ  crt,
166                   igs_da_rqst dr
167            WHERE  crt.request_type_id = dr.request_type_id
168            AND    dr.batch_id = cp_batch_id;
169     rec_dff c_dff%ROWTYPE;
170 
171     CURSOR c_req_ftrs (cp_batch_id igs_da_rqst.batch_id%TYPE) IS
172            SELECT cf.feature_code,
173                   cf.feature_value
174            FROM   igs_da_cnfg_ftr cf,
175                   igs_da_rqst dr
176            WHERE  dr.request_type_id = cf.request_type_id
177            AND    dr.batch_id = cp_batch_id
178            AND    cf.feature_code IN (SELECT feature_code
179                                       FROM   igs_da_cnfg_ftr cf_in
180                                       WHERE  cf_in.request_type_id = dr.request_type_id
181                                       MINUS
182                                       SELECT feature_code
183                                       FROM   igs_da_req_ftrs rf_in
184                                       WHERE  rf_in.batch_id = dr.batch_id);
185 BEGIN
186   FND_MSG_PUB.initialize;
187   OPEN c_igs_da_rqst (p_batch_id);
188   LOOP
189      FETCH c_igs_da_rqst INTO rec_igs_da_rqst;
190      EXIT WHEN c_igs_da_rqst%NOTFOUND;
191      -- check whether the dynamic persid group has to be used or not
192      OPEN c_is_filename_null (rec_igs_da_rqst.person_id_group_id);
193      FETCH c_is_filename_null INTO l_is_filename_null;
194      CLOSE c_is_filename_null;
195 
196      IF rec_igs_da_rqst.program_comparison_type = 'SP' THEN
197         -- insert a corresponding record in igs_da_req_stdnts if a single student
198         IF rec_igs_da_rqst.request_mode = 'SINGLE' THEN
199              l_rowid := null;
200              l_igs_da_req_stdnts_id := null;
201              igs_da_req_stdnts_pkg.insert_row (
202                                                 X_ROWID                        => l_rowid,
203                                                 X_BATCH_ID                     => rec_igs_da_rqst.batch_id,
204                                                 X_IGS_DA_REQ_STDNTS_ID         => l_igs_da_req_stdnts_id,
205                                                 X_PERSON_ID                    => rec_igs_da_rqst.person_id,
206                                                 X_PROGRAM_CODE                 => NULL,
207                                                 X_WIF_PROGRAM_CODE             => NULL,
208                                                 X_SPECIAL_PROGRAM_CODE         => rec_igs_da_rqst.special_program,
209                                                 X_MAJOR_UNIT_SET_CD            => NULL,
210                                                 X_PROGRAM_MAJOR_CODE           => NULL,
211                                                 X_REPORT_TEXT                  => NULL,
212                                                 X_WIF_ID                       => NULL,
213                                                 X_MODE                         => 'R',
214                                                 x_error_code                   => NULL
215                                               );
216         ELSE
217        IF l_is_filename_null = 'N' THEN
218                 l_dyn_stud_grp_mem := IGS_PE_DYNAMIC_PERSID_GROUP.IGS_GET_DYNAMIC_SQL (rec_igs_da_rqst.person_id_group_id,l_status);
219                 IF l_status <> FND_API.G_RET_STS_SUCCESS THEN
220                    FND_MESSAGE.SET_NAME('IGS','IGS_AZ_DYN_PERS_ID_GRP_ERR');
221                    FND_MSG_PUB.ADD;
222                    RAISE FND_API.G_EXC_ERROR;
223                 END IF;
224                 OPEN c_stud_grp_mem FOR l_dyn_stud_grp_mem;
225              ELSE
226                 OPEN c_stud_grp_mem FOR l_stc_stud_grp_mem USING rec_igs_da_rqst.person_id_group_id;
227              END IF;
228        LOOP
229                FETCH c_stud_grp_mem INTO l_person_id;
230                      EXIT WHEN c_stud_grp_mem%NOTFOUND;
231                      l_rowid := null;
232                      l_igs_da_req_stdnts_id := null;
233                      igs_da_req_stdnts_pkg.insert_row (
234                                                         X_ROWID                        => l_rowid,
235                                                         X_BATCH_ID                     => rec_igs_da_rqst.batch_id,
236                                                         X_IGS_DA_REQ_STDNTS_ID         => l_igs_da_req_stdnts_id,
237                                                         X_PERSON_ID                    => l_person_id,
238                                                         X_PROGRAM_CODE                 => NULL,
239                                                         X_WIF_PROGRAM_CODE             => NULL,
240                                                         X_SPECIAL_PROGRAM_CODE         => rec_igs_da_rqst.special_program,
241                                                         X_MAJOR_UNIT_SET_CD            => NULL,
242                                                         X_PROGRAM_MAJOR_CODE           => NULL,
243                                                         X_REPORT_TEXT                  => NULL,
244                                                         X_WIF_ID                       => NULL,
245                                                         X_MODE                         => 'R',
246                                                         x_error_code                   => NULL
247                                                       );
248              END LOOP;
249        CLOSE c_stud_grp_mem;
250         END IF;  -- rec_igs_da_rqst.request_mode = 'SINGLE' SP
251      ELSIF rec_igs_da_rqst.program_comparison_type = 'WIF' THEN
252         FOR rec_igs_da_rec_wif IN c_igs_da_rec_wif(rec_igs_da_rqst.batch_id) LOOP
253                 IF rec_igs_da_rqst.request_mode = 'SINGLE' THEN
254                      l_rowid := null;
255                      l_igs_da_req_stdnts_id := null;
256                      igs_da_req_stdnts_pkg.insert_row (
257                                                         X_ROWID                        => l_rowid,
258                                                         X_BATCH_ID                     => rec_igs_da_rqst.batch_id,
259                                                         X_IGS_DA_REQ_STDNTS_ID         => l_igs_da_req_stdnts_id,
260                                                         X_PERSON_ID                    => rec_igs_da_rqst.person_id,
261                                                         X_PROGRAM_CODE                 => NULL,
262                                                         X_WIF_PROGRAM_CODE             => rec_igs_da_rec_wif.program_code,
263                                                         X_SPECIAL_PROGRAM_CODE         => NULL,
264                                                         X_MAJOR_UNIT_SET_CD            => rec_igs_da_rec_wif.major_unit_set_cd1,
265                                                         X_PROGRAM_MAJOR_CODE           => NULL,
266                                                         X_REPORT_TEXT                  => NULL,
267                                                         X_WIF_ID                       => rec_igs_da_rec_wif.wif_id,
268                                                         X_MODE                         => 'R',
269                                                         x_error_code                   => NULL
270                                                       );
271                 ELSE
272                      IF l_is_filename_null = 'N' THEN
273                         l_dyn_stud_grp_mem := IGS_PE_DYNAMIC_PERSID_GROUP.IGS_GET_DYNAMIC_SQL (rec_igs_da_rqst.person_id_group_id,l_status);
274                         IF l_status <> FND_API.G_RET_STS_SUCCESS THEN
275                            FND_MESSAGE.SET_NAME('IGS','IGS_AZ_DYN_PERS_ID_GRP_ERR');
276                            FND_MSG_PUB.ADD;
277                            RAISE FND_API.G_EXC_ERROR;
278                         END IF;
279                         OPEN c_stud_grp_mem FOR l_dyn_stud_grp_mem;
280                      ELSE
281                         OPEN c_stud_grp_mem FOR l_stc_stud_grp_mem USING rec_igs_da_rqst.person_id_group_id;
282                      END IF;
283                      LOOP
284                              FETCH c_stud_grp_mem INTO l_person_id;
285                              EXIT WHEN c_stud_grp_mem%NOTFOUND;
286                              l_rowid := null;
287                              l_igs_da_req_stdnts_id := null;
288                              igs_da_req_stdnts_pkg.insert_row (
289                                                                 X_ROWID                        => l_rowid,
290                                                                 X_BATCH_ID                     => rec_igs_da_rqst.batch_id,
291                                                                 X_IGS_DA_REQ_STDNTS_ID         => l_igs_da_req_stdnts_id,
292                                                                 X_PERSON_ID                    => l_person_id,
293                                                                 X_PROGRAM_CODE                 => NULL,
294                                                                 X_WIF_PROGRAM_CODE             => rec_igs_da_rec_wif.program_code,
295                                                                 X_SPECIAL_PROGRAM_CODE         => NULL,
296                                                                 X_MAJOR_UNIT_SET_CD            => rec_igs_da_rec_wif.major_unit_set_cd1,
297                                                                 X_PROGRAM_MAJOR_CODE           => NULL,
298                                                                 X_REPORT_TEXT                  => NULL,
299                                                                 X_WIF_ID                       => rec_igs_da_rec_wif.wif_id,
300                                                                 X_MODE                         => 'R',
301                                                                 x_error_code                   => NULL
302                                                               );
303                      END LOOP;
304          CLOSE c_stud_grp_mem;
305                 END IF;  -- rec_igs_da_rqst.request_mode = 'SINGLE' WIF
306         END LOOP;
307 
308      ELSIF rec_igs_da_rqst.program_comparison_type = 'DP' THEN
309         IF rec_igs_da_rqst.request_mode = 'SINGLE' THEN
310              -- insert each program attempt of the student
311              FOR rec_prog_attempt IN c_prog_attempt (rec_igs_da_rqst.person_id) LOOP
312                      l_rowid := null;
313                      l_igs_da_req_stdnts_id := null;
314          igs_da_req_stdnts_pkg.insert_row (
315                                                         X_ROWID                        => l_rowid,
316                                                         X_BATCH_ID                     => rec_igs_da_rqst.batch_id,
317                                                         X_IGS_DA_REQ_STDNTS_ID         => l_igs_da_req_stdnts_id,
318                                                         X_PERSON_ID                    => rec_igs_da_rqst.person_id,
319                                                         X_PROGRAM_CODE                 => rec_prog_attempt.course_cd,
320                                                         X_WIF_PROGRAM_CODE             => NULL,
321                                                         X_SPECIAL_PROGRAM_CODE         => NULL,
322                                                         X_MAJOR_UNIT_SET_CD            => NULL,
323                                                         X_PROGRAM_MAJOR_CODE           => NULL,
324                                                         X_REPORT_TEXT                  => NULL,
325                                                         X_WIF_ID                       => NULL,
326                                                         X_MODE                         => 'R',
327                                                         x_error_code                   => NULL
328                                                       );
329              END LOOP;
330         ELSE
331              IF l_is_filename_null = 'N' THEN
332                 l_dyn_stud_grp_mem := IGS_PE_DYNAMIC_PERSID_GROUP.IGS_GET_DYNAMIC_SQL (rec_igs_da_rqst.person_id_group_id,l_status);
333                 IF l_status <> FND_API.G_RET_STS_SUCCESS THEN
334                    FND_MESSAGE.SET_NAME('IGS','IGS_AZ_DYN_PERS_ID_GRP_ERR');
335                    FND_MSG_PUB.ADD;
336                    RAISE FND_API.G_EXC_ERROR;
337                 END IF;
338                 OPEN c_stud_grp_mem FOR l_dyn_stud_grp_mem;
339              ELSE
340                 OPEN c_stud_grp_mem FOR l_stc_stud_grp_mem USING rec_igs_da_rqst.person_id_group_id;
341              END IF;
342              LOOP
343                      FETCH c_stud_grp_mem INTO l_person_id;
344                      EXIT WHEN c_stud_grp_mem%NOTFOUND;
345                      FOR rec_prog_attempt IN c_prog_attempt (l_person_id) LOOP
346                  l_rowid := null;
347                              l_igs_da_req_stdnts_id := null;
348                              igs_da_req_stdnts_pkg.insert_row (
349                                                                 X_ROWID                        => l_rowid,
350                                                                 X_BATCH_ID                     => rec_igs_da_rqst.batch_id,
351                                                                 X_IGS_DA_REQ_STDNTS_ID         => l_igs_da_req_stdnts_id,
352                                                                 X_PERSON_ID                    => l_person_id,
353                                                                 X_PROGRAM_CODE                 => rec_prog_attempt.course_cd,
354                                                                 X_WIF_PROGRAM_CODE             => NULL,
355                                                                 X_SPECIAL_PROGRAM_CODE         => NULL,
356                                                                 X_MAJOR_UNIT_SET_CD            => NULL,
357                                                                 X_PROGRAM_MAJOR_CODE           => NULL,
358                                                                 X_REPORT_TEXT                  => NULL,
359                                                                 X_WIF_ID                       => NULL,
360                                                                 X_MODE                         => 'R',
361                                                                 x_error_code                   => NULL
362                                                               );
363         END LOOP;
364              END LOOP;
365        CLOSE c_stud_grp_mem;
366         END IF;  -- rec_igs_da_rqst.request_mode = 'SINGLE' DP
367      END IF; -- rec_igs_da_rqst.program_comparison_type = 'SP''
368     /*
369        copy the DFF values from IGS_DA_CNFG_REQ_TYP to IGS_DARQST
370     */
371     OPEN c_dff(p_batch_id);
372     FETCH c_dff INTO rec_dff;
373     CLOSE c_dff;
374     igs_da_rqst_pkg.update_row
375                         (
376                         X_ROWID                        => rec_igs_da_rqst.rowid                   ,
377                         X_BATCH_ID                     => rec_igs_da_rqst.batch_id                ,
378                         X_REQUEST_TYPE_ID              => rec_igs_da_rqst.request_type_id         ,
379                         X_REQUEST_MODE                 => rec_igs_da_rqst.request_mode            ,
380                         X_PROGRAM_COMPARISON_TYPE      => rec_igs_da_rqst.program_comparison_type ,
381                         X_REQUEST_STATUS               => rec_igs_da_rqst.request_status          ,
382                         X_PERSON_ID_GROUP_ID           => rec_igs_da_rqst.person_id_group_id      ,
383                         X_PERSON_ID                    => rec_igs_da_rqst.person_id               ,
384                         X_REQUESTOR_ID                 => rec_igs_da_rqst.requestor_id            ,
385                         X_STUDENT_RELEASE_IND          => rec_igs_da_rqst.student_release_ind     ,
386                         X_SPECIAL_PROGRAM              => rec_igs_da_rqst.special_program         ,
387                         X_SPECIAL_PROGRAM_CATALOG      => rec_igs_da_rqst.special_program_catalog ,
388                         X_ATTRIBUTE_CATEGORY           => rec_dff.attribute_category ,
389                         X_ATTRIBUTE1                   => rec_dff.attribute1         ,
390                         X_ATTRIBUTE2                   => rec_dff.attribute2         ,
391                         X_ATTRIBUTE3                   => rec_dff.attribute3         ,
392                         X_ATTRIBUTE4                   => rec_dff.attribute4         ,
393                         X_ATTRIBUTE5                   => rec_dff.attribute5         ,
394                         X_ATTRIBUTE6                   => rec_dff.attribute6         ,
395                         X_ATTRIBUTE7                   => rec_dff.attribute7         ,
396                         X_ATTRIBUTE8                   => rec_dff.attribute8         ,
397                         X_ATTRIBUTE9                   => rec_dff.attribute9         ,
398                         X_ATTRIBUTE10                  => rec_dff.attribute10        ,
399                         X_ATTRIBUTE11                  => rec_dff.attribute11        ,
400                         X_ATTRIBUTE12                  => rec_dff.attribute12        ,
401                         X_ATTRIBUTE13                  => rec_dff.attribute13        ,
402                         X_ATTRIBUTE14                  => rec_dff.attribute14        ,
403                         X_ATTRIBUTE15                  => rec_dff.attribute15        ,
404                         X_ATTRIBUTE16                  => rec_dff.attribute16        ,
405                         X_ATTRIBUTE17                  => rec_dff.attribute17        ,
406                         X_ATTRIBUTE18                  => rec_dff.attribute18        ,
407                         X_ATTRIBUTE19                  => rec_dff.attribute19        ,
408                         X_ATTRIBUTE20                  => rec_dff.attribute20        ,
409                         X_MODE                         => 'R'                        ,
410                         X_RETURN_STATUS                => l_return_status            ,
411                         X_MSG_DATA                     => l_msg_data                 ,
412                         X_MSG_COUNT                    => l_msg_count
413                         );
414     IF l_return_status <>'S' THEN
415        FND_MESSAGE.SET_NAME('IGS','IGS_DA_CR_PLS_ERROR');
416        FND_MSG_PUB.ADD;
417        RAISE FND_API.G_EXC_ERROR;
418     END IF;
419 
420   END LOOP;
421   CLOSE c_igs_da_rqst;
422 
423   /*
424      now insert the records (IGS_DA_CNFG_FTR) not shown to the user
425      in the table IGS_DA_REQ_FTRS
426   */
427   FOR rec_req_ftrs IN c_req_ftrs(p_batch_id)
428   LOOP
429           l_rowid := null;
430           igs_da_req_ftrs_pkg.insert_row
431                                 (
432                                 X_ROWID                => l_rowid       ,
433                                 X_BATCH_ID             => p_batch_id    ,
434                                 X_FEATURE_CODE         => rec_req_ftrs.feature_code ,
435                                 X_FEATURE_VALUE        => rec_req_ftrs.feature_value,
436                                 X_MODE                 => 'R'            ,
437                                 X_RETURN_STATUS        => l_return_status,
438                                 X_MSG_DATA             => l_msg_data     ,
439                                 X_MSG_COUNT            => l_msg_count
440                                 );
441   END LOOP;
442 
443   -- now raise the business event
444   BEGIN
445      igs_da_xml_pkg.Pre_Submit_Event(p_batch_id => p_batch_id);
446   EXCEPTION
447      WHEN OTHERS THEN
448           FND_MESSAGE.SET_NAME('IGS','IGS_DA_XML_ERROR');
449           FND_MSG_PUB.ADD;
450           RAISE FND_API.G_EXC_ERROR;
451   END;
452 
453   -- Initialize API return status to success.
454   X_RETURN_STATUS := FND_API.G_RET_STS_SUCCESS;
455   -- Standard call to get message count and if count is 1, get message
456   -- info.
457   FND_MSG_PUB.Count_And_Get(
458                 p_encoded => FND_API.G_TRUE,
459                 p_count => x_MSG_COUNT,
460                 p_data  => X_MSG_DATA);
461 
462   EXCEPTION
463     WHEN FND_API.G_EXC_ERROR THEN
464           X_RETURN_STATUS := FND_API.G_RET_STS_ERROR;
465           FND_MSG_PUB.Count_And_Get(
466              p_encoded => FND_API.G_TRUE,
467                    p_count => x_MSG_COUNT,
468                    p_data  => X_MSG_DATA);
469    RETURN;
470       WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
471                   X_RETURN_STATUS := FND_API.G_RET_STS_UNEXP_ERROR;
472       FND_MSG_PUB.Count_And_Get(
473           p_encoded => FND_API.G_TRUE,
474                       p_count => x_MSG_COUNT,
475                       p_data  => X_MSG_DATA);
476    RETURN;
477     WHEN OTHERS THEN
478            X_RETURN_STATUS := FND_API.G_RET_STS_UNEXP_ERROR;
479            FND_MESSAGE.SET_NAME('IGS', 'IGS_GE_UNHANDLED_EXCEPTION');
480            FND_MESSAGE.SET_TOKEN('NAME','create_req_stdnts_rec : '||SQLERRM);
481            FND_MSG_PUB.ADD;
482            FND_MSG_PUB.Count_And_Get(
483                        p_encoded => FND_API.G_TRUE,
484                              p_count => x_MSG_COUNT,
485                              p_data  => X_MSG_DATA);
486    RETURN;
487 END create_req_stdnts_rec;
488 
489 END IGS_DA_UTILS_PKG;