[Home] [Help]
PACKAGE BODY: APPS.IGS_UC_RELEASE_TRANS_PKG
Source
1 PACKAGE BODY igs_uc_release_trans_pkg AS
2 /* $Header: IGSUC69B.pls 120.2 2006/05/04 20:59:02 jchakrab noship $*/
3
4 l_debug_level NUMBER:= fnd_log.g_current_runtime_level;
5
6 PROCEDURE release_transactions (
7 errbuf OUT NOCOPY VARCHAR2,
8 retcode OUT NOCOPY NUMBER,
9 p_org_unit_code IN VARCHAR2,
10 p_ucas_system_code IN VARCHAR2,
11 p_ucas_program_code IN VARCHAR2,
12 p_ucas_campus IN VARCHAR2,
13 p_ucas_entry_point IN NUMBER,
14 p_ucas_entry_month IN NUMBER,
15 p_ucas_entry_year IN NUMBER,
16 p_ucas_trans_type IN VARCHAR2,
17 p_ucas_decision_code IN VARCHAR2,
18 p_trans_creation_dt_from IN VARCHAR2,
19 p_trans_creation_dt_to IN VARCHAR2,
20 p_trans_transmit_dt_from IN VARCHAR2,
21 p_trans_transmit_dt_to IN VARCHAR2
22 ) IS
23
24 /*------------------------------------------------------------------
25 --Created by : jchakrab, Oracle Corporation
26 --Date created: 24-Jun-2005
27 --
28 --Purpose: Releases UCAS transactions in bulk.The parameters entered by the user
29 -- when the concurrent process is invoked are used to determine the criteria
30 -- for releasing transactions.
31 --Known limitations/enhancements and/or remarks:
32 --
33 --Change History:
34 WHO WHEN WHAT
35 anwest 18-JAN-2006 Bug# 4950285 R12 Disable OSS Mandate
36 jchakrab 04-May-2006 Bug 5203018 - closed cursor created using DBMS_SQL
37 -----------------------------------------------------------------------*/
38
39 --variables for WHO columns
40 l_last_update_date DATE ;
41 l_last_updated_by NUMBER;
42 l_last_update_login NUMBER;
43
44 l_cursor_id NUMBER;
45 l_update_stmt VARCHAR2(2500);
46 l_updated_rows NUMBER;
47
48 BEGIN
49
50 --anwest 18-JAN-2006 Bug# 4950285 R12 Disable OSS Mandate
51 IGS_GE_GEN_003.SET_ORG_ID;
52
53 fnd_file.put_line(fnd_file.log, '-------------------------------------------------------');
54 fnd_file.put_line(fnd_file.log, 'P_ORG_UNIT_CODE = ' || p_org_unit_code);
55 fnd_file.put_line(fnd_file.log, 'P_UCAS_SYSTEM_CODE = ' || p_ucas_system_code);
56 fnd_file.put_line(fnd_file.log, 'P_UCAS_PROGRAM_CODE = ' || p_ucas_program_code);
57 fnd_file.put_line(fnd_file.log, 'P_UCAS_CAMPUS = ' || p_ucas_campus);
58 fnd_file.put_line(fnd_file.log, 'P_UCAS_ENTRY_POINT = ' || p_ucas_entry_point);
59 fnd_file.put_line(fnd_file.log, 'P_UCAS_ENTRY_MONTH = ' || p_ucas_entry_month);
60 fnd_file.put_line(fnd_file.log, 'P_UCAS_ENTRY_YEAR = ' || p_ucas_entry_year);
61 fnd_file.put_line(fnd_file.log, 'P_UCAS_TRANS_TYPE = ' || p_ucas_trans_type);
62 fnd_file.put_line(fnd_file.log, 'P_UCAS_DECISION_CODE = ' || p_ucas_decision_code);
63 fnd_file.put_line(fnd_file.log, 'P_TRANS_CREATION_DT_FROM = ' || p_trans_creation_dt_from);
64 fnd_file.put_line(fnd_file.log, 'P_TRANS_CREATION_DT_TO = ' || p_trans_creation_dt_to);
65 fnd_file.put_line(fnd_file.log, 'P_TRANS_TRANSMIT_DT_FROM = ' || p_trans_transmit_dt_from);
66 fnd_file.put_line(fnd_file.log, 'P_TRANS_TRANSMIT_DT_TO = ' || p_trans_transmit_dt_to);
67 fnd_file.put_line(fnd_file.log, '-------------------------------------------------------');
68
69
70 /* Checking whether the UK profile is enabled */
71 IF NOT (igs_uc_utils.is_ucas_hesa_enabled) THEN
72
73 fnd_message.set_name('IGS','IGS_UC_HE_NOT_ENABLED');
74 fnd_file.put_line(fnd_file.log, fnd_message.get()); -- display to user also
75 -- also log using the fnd logging framework
76 IF (fnd_log.level_statement >= l_debug_level ) THEN
77 fnd_log.string( fnd_log.level_statement, 'igs.plsql.ucas.release_transactions.validation', fnd_message.get());
78 END IF;
79 errbuf := fnd_message.get_string ('IGS', 'IGS_UC_HE_NOT_ENABLED');
80 retcode := 3 ;
81 RETURN ;
82
83 END IF;
84
85 --set values for WHO columns
86 l_last_update_date := SYSDATE;
87 l_last_updated_by := fnd_global.user_id;
88 IF l_last_updated_by IS NULL THEN
89 l_last_updated_by := -1;
90 END IF;
91 l_last_update_login := fnd_global.login_id;
92 IF l_last_update_login IS NULL THEN
93 l_last_update_login := -1;
94 END IF;
95
96 --========================================================================
97 -- START WHERE CLAUSE CONSTRUCTION
98 --========================================================================
99 --initialize fnd_dsql data-structures
100 fnd_dsql.init;
101
102 --set the base UPDATE statement
103 fnd_dsql.add_text(' UPDATE IGS_UC_TRANSACTIONS UCTRANS SET UCTRANS.HOLD_FLAG = ''N'' ');
104 fnd_dsql.add_text(' ,UCTRANS.LAST_UPDATE_DATE = ');
105 fnd_dsql.add_bind(l_last_update_date);
106 fnd_dsql.add_text(' ,UCTRANS.LAST_UPDATED_BY = ');
107 fnd_dsql.add_bind(l_last_updated_by);
108 fnd_dsql.add_text(' ,UCTRANS.LAST_UPDATE_LOGIN = ');
109 fnd_dsql.add_bind(l_last_update_login);
110
111 --system code is a required parameter and only need to release transactions which
112 --are currently on hold
113 fnd_dsql.add_text(' WHERE HOLD_FLAG = ''Y'' AND UCTRANS.SYSTEM_CODE = ');
114 fnd_dsql.add_bind(p_ucas_system_code);
115
116 -- org_code
117 IF p_org_unit_code IS NOT NULL THEN
118 fnd_dsql.add_text(' AND EXISTS (SELECT 1 FROM IGS_PS_VER PSVER, IGS_UC_APP_CHOICES APPCH WHERE APPCH.APP_NO = UCTRANS.APP_NO AND ');
119 fnd_dsql.add_text(' UCTRANS.CHOICE_NO = APPCH.CHOICE_NO AND UCTRANS.UCAS_CYCLE = APPCH.UCAS_CYCLE AND PSVER.COURSE_CD = APPCH.OSS_PROGRAM_CODE AND ');
120 fnd_dsql.add_text(' PSVER.VERSION_NUMBER = APPCH.OSS_PROGRAM_VERSION AND PSVER.RESPONSIBLE_ORG_UNIT_CD = ');
121 fnd_dsql.add_bind(p_org_unit_code);
122 fnd_dsql.add_text(' )');
123 END IF;
124
125 -- Program search
126 IF p_ucas_program_code IS NOT NULL THEN
127 fnd_dsql.add_text(' AND EXISTS (SELECT 1 FROM IGS_UC_APP_CHOICES APPCH WHERE UCTRANS.APP_NO = APPCH.APP_NO AND UCTRANS.CHOICE_NO = APPCH.CHOICE_NO AND ');
128 fnd_dsql.add_text(' UCTRANS.UCAS_CYCLE = APPCH.UCAS_CYCLE AND APPCH.UCAS_PROGRAM_CODE = ');
129 fnd_dsql.add_bind(p_ucas_program_code);
130 fnd_dsql.add_text(' )');
131 END IF;
132
133 -- Campus search
134 IF p_ucas_campus IS NOT NULL THEN
135 fnd_dsql.add_text(' AND EXISTS (SELECT 1 FROM IGS_UC_APP_CHOICES APPCH WHERE UCTRANS.APP_NO = APPCH.APP_NO AND UCTRANS.CHOICE_NO = APPCH.CHOICE_NO AND ');
136 fnd_dsql.add_text(' UCTRANS.UCAS_CYCLE = APPCH.UCAS_CYCLE AND APPCH.CAMPUS = ');
137 fnd_dsql.add_bind(p_ucas_campus);
138 fnd_dsql.add_text(' )');
139 END IF;
140
141 -- Entry Point search
142 IF p_ucas_entry_point IS NOT NULL THEN
143 fnd_dsql.add_text(' AND EXISTS (SELECT 1 FROM IGS_UC_APP_CHOICES APPCH WHERE UCTRANS.APP_NO = APPCH.APP_NO AND UCTRANS.CHOICE_NO = APPCH.CHOICE_NO AND ');
144 fnd_dsql.add_text(' UCTRANS.UCAS_CYCLE = APPCH.UCAS_CYCLE AND APPCH.POINT_OF_ENTRY = ');
145 fnd_dsql.add_bind(p_ucas_entry_point);
146 fnd_dsql.add_text(' )');
147 END IF;
148
149 -- Entry month search
150 IF p_ucas_entry_month IS NOT NULL THEN
151 fnd_dsql.add_text(' AND EXISTS (SELECT 1 FROM IGS_UC_APP_CHOICES APPCH WHERE UCTRANS.APP_NO = APPCH.APP_NO AND UCTRANS.CHOICE_NO = APPCH.CHOICE_NO AND ');
152 fnd_dsql.add_text(' UCTRANS.UCAS_CYCLE = APPCH.UCAS_CYCLE AND APPCH.ENTRY_MONTH = ');
153 fnd_dsql.add_bind(p_ucas_entry_month);
154 fnd_dsql.add_text(' )');
155 END IF;
156
157 -- Entry Year search
158 IF p_ucas_entry_year IS NOT NULL THEN
159 fnd_dsql.add_text(' AND EXISTS (SELECT 1 FROM IGS_UC_APP_CHOICES APPCH WHERE UCTRANS.APP_NO = APPCH.APP_NO AND UCTRANS.CHOICE_NO = APPCH.CHOICE_NO AND ');
160 fnd_dsql.add_text(' UCTRANS.UCAS_CYCLE = APPCH.UCAS_CYCLE AND APPCH.ENTRY_YEAR = ');
161 fnd_dsql.add_bind(p_ucas_entry_year);
162 fnd_dsql.add_text(' )');
163 END IF;
164
165
166
167 -- Transaction type
168 IF p_ucas_trans_type IS NOT NULL THEN
169 fnd_dsql.add_text(' AND UCTRANS.TRANSACTION_TYPE = ');
170 fnd_dsql.add_bind(p_ucas_trans_type);
171 END IF;
172
173 -- Decision
174 IF p_ucas_decision_code IS NOT NULL THEN
175 fnd_dsql.add_text(' AND UCTRANS.DECISION = ');
176 fnd_dsql.add_bind(p_ucas_decision_code);
177 END IF;
178
179 -- Creation dates search
180 IF p_trans_creation_dt_from IS NOT NULL THEN
181 fnd_dsql.add_text(' AND UCTRANS.CREATION_DATE >= ');
182 fnd_dsql.add_bind(IGS_GE_DATE.igsdate(p_trans_creation_dt_from));
183 END IF;
184
185 IF p_trans_creation_dt_to IS NOT NULL THEN
186 fnd_dsql.add_text(' AND UCTRANS.CREATION_DATE <= ');
187 fnd_dsql.add_bind(IGS_GE_DATE.igsdate(p_trans_creation_dt_to));
188 END IF;
189
190 -- Transmission dates search
191 IF p_trans_transmit_dt_from IS NOT NULL THEN
192 fnd_dsql.add_text(' AND UCTRANS.DATETIMESTAMP >= ');
193 fnd_dsql.add_bind(IGS_GE_DATE.igsdate(p_trans_transmit_dt_from));
194 END IF;
195
196 IF p_trans_transmit_dt_to IS NOT NULL THEN
197 fnd_dsql.add_text(' AND UCTRANS.DATETIMESTAMP <= ');
198 fnd_dsql.add_bind(IGS_GE_DATE.igsdate(p_trans_transmit_dt_to));
199 END IF;
200
201
202 l_update_stmt := fnd_dsql.get_text(FALSE);
203
204 -- log the UPDATE DML statement using the fnd logging framework
205 IF (fnd_log.level_statement >= l_debug_level ) THEN
206 fnd_log.string( fnd_log.level_statement, 'igs.plsql.ucas.release_transactions.update_dml', l_update_stmt);
207 END IF;
208
209 l_cursor_id := DBMS_SQL.OPEN_CURSOR;
210 fnd_dsql.set_cursor(l_cursor_id);
211
212 DBMS_SQL.parse(l_cursor_id, l_update_stmt, dbms_sql.native);
213 fnd_dsql.do_binds;
214
215 l_updated_rows := dbms_sql.EXECUTE(l_cursor_id);
216
217 DBMS_SQL.CLOSE_CURSOR(l_cursor_id);
218
219 COMMIT;
220
221 IF (l_updated_rows > 0) THEN
222 --show the number of records successfully processed
223 fnd_message.set_name('IGS','IGS_UC_REC_CNT_SUCCESS_PROC');
224 fnd_message.set_token('REC_CNT',l_updated_rows);
225 fnd_file.put_line(fnd_file.log, fnd_message.get());
226 ELSE
227 --report that there were no records processed
228 fnd_message.set_name('IGS','IGS_UC_REC_CNT_PROC');
229 fnd_message.set_token('REC_CNT',l_updated_rows);
230 fnd_file.put_line(fnd_file.log, fnd_message.get());
231 END IF;
232
233 EXCEPTION
234 WHEN OTHERS THEN
235
236 IF l_cursor_id IS NOT NULL THEN
237 DBMS_SQL.CLOSE_CURSOR(l_cursor_id);
238 END IF;
239
240 ROLLBACK;
241
242 fnd_message.set_name('IGS','IGS_GE_UNHANDLED_EXP');
243 fnd_message.set_token('NAME','igs_uc_release_trans_on_hold_pkg.release_transactions - '||SQLERRM);
244 fnd_file.put_line(fnd_file.log,fnd_message.get);
245
246 IF ( fnd_log.level_unexpected >= l_debug_level ) THEN
247 fnd_log.message(fnd_log.level_unexpected, 'igs.plsql.ucas.release_transactions.exception', FALSE);
248 END IF;
249
250 fnd_message.retrieve (errbuf);
251 retcode := 2 ;
252 igs_ge_msg_stack.conc_exception_hndl;
253
254 END release_transactions;
255
256 END igs_uc_release_trans_pkg;