[Home] [Help]
PACKAGE BODY: APPS.IGS_FI_FUND_SRC_HIST_PKG
Source
1 package body IGS_FI_FUND_SRC_HIST_PKG AS
2 /* $Header: IGSSI43B.pls 115.6 2002/11/29 03:47:54 nsidana ship $*/
3
4 l_rowid VARCHAR2(25);
5 old_references IGS_FI_FUND_SRC_HIST_ALL%RowType;
6 new_references IGS_FI_FUND_SRC_HIST_ALL%RowType;
7 PROCEDURE Set_Column_Values (
8 p_action IN VARCHAR2,
9 x_rowid IN VARCHAR2 DEFAULT NULL,
10 x_funding_source IN VARCHAR2 DEFAULT NULL,
11 x_hist_start_dt IN DATE DEFAULT NULL,
12 x_hist_end_dt IN DATE DEFAULT NULL,
13 x_hist_who IN VARCHAR2 DEFAULT NULL,
14 x_description IN VARCHAR2 DEFAULT NULL,
15 x_govt_funding_source IN NUMBER DEFAULT NULL,
16 x_closed_ind IN VARCHAR2 DEFAULT NULL,
17 x_org_id IN NUMBER DEFAULT NULL,
18 x_creation_date IN DATE DEFAULT NULL,
19 x_created_by IN NUMBER DEFAULT NULL,
20 x_last_update_date IN DATE DEFAULT NULL,
21 x_last_updated_by IN NUMBER DEFAULT NULL,
22 x_last_update_login IN NUMBER DEFAULT NULL
23 ) AS
24 CURSOR cur_old_ref_values IS
25 SELECT *
26 FROM IGS_FI_FUND_SRC_HIST_ALL
27 WHERE rowid = x_rowid;
28 BEGIN
29 l_rowid := x_rowid;
30 -- Code for setting the Old and New Reference Values.
31 -- Populate Old Values.
32 Open cur_old_ref_values;
33 Fetch cur_old_ref_values INTO old_references;
34 IF (cur_old_ref_values%NOTFOUND) AND (p_action NOT IN ('INSERT', 'VALIDATE_INSERT')) THEN
35 Close cur_old_ref_values;
36 Fnd_Message.Set_Name ('FND', 'FORM_RECORD_DELETED');
37 IGS_GE_MSG_STACK.ADD;
38 App_Exception.Raise_Exception;
39 Return;
40 END IF;
41 Close cur_old_ref_values;
42 -- Populate New Values.
43 new_references.funding_source := x_funding_source;
44 new_references.hist_start_dt := x_hist_start_dt;
45 new_references.hist_end_dt := x_hist_end_dt;
46 new_references.hist_who := x_hist_who;
47 new_references.description := x_description;
48 new_references.govt_funding_source := x_govt_funding_source;
49 new_references.closed_ind := x_closed_ind;
50 new_references.org_id := x_org_id;
51 IF (p_action = 'UPDATE') THEN
52 new_references.creation_date := old_references.creation_date;
53 new_references.created_by := old_references.created_by;
54 ELSE
55 new_references.creation_date := x_creation_date;
56 new_references.created_by := x_created_by;
57 END IF;
58 new_references.last_update_date := x_last_update_date;
59 new_references.last_updated_by := x_last_updated_by;
60 new_references.last_update_login := x_last_update_login;
61 END Set_Column_Values;
62
63 PROCEDURE Check_Constraints (
64 Column_Name IN VARCHAR2 DEFAULT NULL,
65 Column_Value IN VARCHAR2 DEFAULT NULL
66 )IS
67 BEGIN
68
69 IF Column_Name is NULL THEN
70 NULL;
71 ELSIF upper(Column_Name) = 'FUNDING_SOURCE' then
72 new_references.funding_source := Column_Value;
73 ELSIF upper(Column_Name) = 'CLOSED_IND' then
74 new_references.closed_ind := Column_Value;
75 END IF;
76
77 IF upper(Column_Name) = 'CLOSED_IND' OR column_name is NULL THEN
78 IF new_references.closed_ind <> UPPER( new_references.closed_ind )
79 THEN
80 Fnd_Message.Set_Name ('IGS', 'IGS_GE_INVALID_VALUE');
81 IGS_GE_MSG_STACK.ADD;
82 App_Exception.Raise_Exception;
83 END IF;
84 END IF;
85 IF upper(Column_Name) = 'FUNDING_SOURCE' OR
86 column_name is NULL THEN
87 IF new_references.funding_source <> UPPER(new_references.funding_source) THEN
88 Fnd_Message.Set_Name ('IGS', 'IGS_GE_INVALID_VALUE');
89 IGS_GE_MSG_STACK.ADD;
90 App_Exception.Raise_Exception;
91 END IF;
92 END IF;
93
94 END Check_Constraints;
95
96 FUNCTION Get_PK_For_Validation (
97 x_funding_source IN VARCHAR2,
98 x_hist_start_dt IN DATE
99 ) RETURN BOOLEAN AS
100 CURSOR cur_rowid IS
101 SELECT rowid
102 FROM IGS_FI_FUND_SRC_HIST_ALL
103 WHERE funding_source = x_funding_source
104 AND hist_start_dt = x_hist_start_dt
105 FOR UPDATE NOWAIT;
106 lv_rowid cur_rowid%RowType;
107 BEGIN
108 Open cur_rowid;
109 Fetch cur_rowid INTO lv_rowid;
110 IF (cur_rowid%FOUND) THEN
111 Close cur_rowid;
112 Return (TRUE);
113 ELSE
114 Close cur_rowid;
115 Return (FALSE);
116 END IF;
117 END Get_PK_For_Validation;
118 PROCEDURE Before_DML (
119 p_action IN VARCHAR2,
120 x_rowid IN VARCHAR2 DEFAULT NULL,
121 x_funding_source IN VARCHAR2 DEFAULT NULL,
122 x_hist_start_dt IN DATE DEFAULT NULL,
123 x_hist_end_dt IN DATE DEFAULT NULL,
124 x_hist_who IN VARCHAR2 DEFAULT NULL,
125 x_description IN VARCHAR2 DEFAULT NULL,
126 x_govt_funding_source IN NUMBER DEFAULT NULL,
127 x_closed_ind IN VARCHAR2 DEFAULT NULL,
128 x_org_id IN NUMBER DEFAULT NULL,
129 x_creation_date IN DATE DEFAULT NULL,
130 x_created_by IN NUMBER DEFAULT NULL,
131 x_last_update_date IN DATE DEFAULT NULL,
132 x_last_updated_by IN NUMBER DEFAULT NULL,
133 x_last_update_login IN NUMBER DEFAULT NULL
134 ) AS
135 BEGIN
136 Set_Column_Values (
137 p_action,
138 x_rowid,
139 x_funding_source,
140 x_hist_start_dt,
141 x_hist_end_dt,
142 x_hist_who,
143 x_description,
144 x_govt_funding_source,
145 x_closed_ind,
146 x_org_id,
147 x_creation_date,
148 x_created_by,
149 x_last_update_date,
150 x_last_updated_by,
151 x_last_update_login
152 );
153 IF (p_action = 'INSERT') THEN
154 -- Call all the procedures related to Before Insert.
155 Null;
156 IF Get_PK_For_Validation ( new_references.funding_source,
157 new_references.hist_start_dt ) THEN
158 Fnd_Message.Set_Name ('IGS', 'IGS_GE_MULTI_ORG_DUP_REC');
159 IGS_GE_MSG_STACK.ADD;
160 App_Exception.Raise_Exception;
161 END IF;
162 Check_Constraints;
163 ELSIF (p_action = 'UPDATE') THEN
164 -- Call all the procedures related to Before Update.
165 Null;
166 Check_Constraints ;
167 ELSIF (p_action = 'DELETE') THEN
168 -- Call all the procedures related to Before Delete.
169 Null;
170 ELSIF (p_action = 'VALIDATE_INSERT') THEN
171 -- Call all the procedures related to Before Insert.
172 IF Get_PK_For_Validation ( new_references.funding_source,
173 new_references.hist_start_dt ) THEN
174 Fnd_Message.Set_Name ('IGS', 'IGS_GE_MULTI_ORG_DUP_REC');
175 IGS_GE_MSG_STACK.ADD;
176 App_Exception.Raise_Exception;
177 END IF;
178 Check_Constraints;
179 ELSIF (p_action = 'VALIDATE_UPDATE') THEN
180 Check_Constraints;
181 ELSIF (p_action = 'VALIDATE_DELETE') THEN
182 Null;
183 END IF;
184 END Before_DML;
185 PROCEDURE After_DML (
186 p_action IN VARCHAR2,
187 x_rowid IN VARCHAR2
188 ) AS
189 BEGIN
190 l_rowid := x_rowid;
191 IF (p_action = 'INSERT') THEN
192 -- Call all the procedures related to After Insert.
193 Null;
194 ELSIF (p_action = 'UPDATE') THEN
195 -- Call all the procedures related to After Update.
196 Null;
197 ELSIF (p_action = 'DELETE') THEN
198 -- Call all the procedures related to After Delete.
199 Null;
200 END IF;
201 END After_DML;
202 procedure INSERT_ROW (
203 X_ROWID in out NOCOPY VARCHAR2,
204 X_FUNDING_SOURCE in VARCHAR2,
205 X_HIST_START_DT in DATE,
206 X_HIST_END_DT in DATE,
207 X_HIST_WHO in NUMBER,
208 X_DESCRIPTION in VARCHAR2,
209 X_GOVT_FUNDING_SOURCE in NUMBER,
210 X_CLOSED_IND in VARCHAR2,
211 X_ORG_ID in NUMBER,
212 X_MODE in VARCHAR2 default 'R'
213 ) is
214 cursor C is select ROWID from IGS_FI_FUND_SRC_HIST_ALL
215 where FUNDING_SOURCE = X_FUNDING_SOURCE
216 and HIST_START_DT = X_HIST_START_DT;
217 X_LAST_UPDATE_DATE DATE;
218 X_LAST_UPDATED_BY NUMBER;
219 X_LAST_UPDATE_LOGIN NUMBER;
220 v_other_detail VARCHAR2(255);
221 begin
222 X_LAST_UPDATE_DATE := SYSDATE;
223 if(X_MODE = 'I') then
224 X_LAST_UPDATED_BY := 1;
225 X_LAST_UPDATE_LOGIN := 0;
226 elsif (X_MODE = 'R') then
227 X_LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
228 if X_LAST_UPDATED_BY is NULL then
229 X_LAST_UPDATED_BY := -1;
230 end if;
231 X_LAST_UPDATE_LOGIN :=FND_GLOBAL.LOGIN_ID;
232 if X_LAST_UPDATE_LOGIN is NULL then
233 X_LAST_UPDATE_LOGIN := -1;
234 end if;
235 else
236 FND_MESSAGE.SET_NAME( 'FND', 'SYSTEM-INVALID ARGS');
237 IGS_GE_MSG_STACK.ADD;
238 app_exception.raise_exception;
239 end if;
240 Before_DML(
241 p_action=>'INSERT',
242 x_rowid=>X_ROWID,
243 x_closed_ind=>X_CLOSED_IND,
244 x_description=>X_DESCRIPTION,
245 x_funding_source=>X_FUNDING_SOURCE,
246 x_govt_funding_source=>X_GOVT_FUNDING_SOURCE,
247 x_hist_end_dt=>X_HIST_END_DT,
248 x_hist_start_dt=>X_HIST_START_DT,
249 x_org_id => igs_ge_gen_003.get_org_id,
250 x_hist_who=>X_HIST_WHO,
251 x_creation_date=>X_LAST_UPDATE_DATE,
252 x_created_by=>X_LAST_UPDATED_BY,
253 x_last_update_date=>X_LAST_UPDATE_DATE,
254 x_last_updated_by=>X_LAST_UPDATED_BY,
255 x_last_update_login=>X_LAST_UPDATE_LOGIN
256 );
257 insert into IGS_FI_FUND_SRC_HIST_ALL (
258 FUNDING_SOURCE,
259 HIST_START_DT,
260 HIST_END_DT,
261 HIST_WHO,
262 DESCRIPTION,
263 GOVT_FUNDING_SOURCE,
264 CLOSED_IND,
265 ORG_ID,
266 CREATION_DATE,
267 CREATED_BY,
268 LAST_UPDATE_DATE,
269 LAST_UPDATED_BY,
270 LAST_UPDATE_LOGIN
271 ) values (
272 NEW_REFERENCES.FUNDING_SOURCE,
273 NEW_REFERENCES.HIST_START_DT,
274 NEW_REFERENCES.HIST_END_DT,
275 NEW_REFERENCES.HIST_WHO,
276 NEW_REFERENCES.DESCRIPTION,
277 NEW_REFERENCES.GOVT_FUNDING_SOURCE,
278 NEW_REFERENCES.CLOSED_IND,
279 NEW_REFERENCES.ORG_ID,
280 X_LAST_UPDATE_DATE,
281 X_LAST_UPDATED_BY,
282 X_LAST_UPDATE_DATE,
283 X_LAST_UPDATED_BY,
284 X_LAST_UPDATE_LOGIN
285 );
286 open c;
287 fetch c into X_ROWID;
288 if (c%notfound) then
289 close c;
290 raise no_data_found;
291 end if;
292 close c;
293 After_DML (
294 p_action => 'INSERT',
295 x_rowid => X_ROWID
296 );
297 end INSERT_ROW;
298 procedure LOCK_ROW (
299 X_ROWID in VARCHAR2,
300 X_FUNDING_SOURCE in VARCHAR2,
301 X_HIST_START_DT in DATE,
302 X_HIST_END_DT in DATE,
303 X_HIST_WHO in NUMBER,
304 X_DESCRIPTION in VARCHAR2,
305 X_GOVT_FUNDING_SOURCE in NUMBER,
306 X_CLOSED_IND in VARCHAR2
307 ) is
308 cursor c1 is select
309 HIST_END_DT,
310 HIST_WHO,
311 DESCRIPTION,
312 GOVT_FUNDING_SOURCE,
313 CLOSED_IND
314 from IGS_FI_FUND_SRC_HIST_ALL
315 where ROWID=X_ROWID
316 for update nowait;
317 tlinfo c1%rowtype;
318 begin
319 open c1;
320 fetch c1 into tlinfo;
321 if (c1%notfound) then
322 close c1;
323 fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
324 IGS_GE_MSG_STACK.ADD;
325 app_exception.raise_exception;
326 return;
327 end if;
328 close c1;
329 if ( (tlinfo.HIST_END_DT = X_HIST_END_DT)
330 AND (tlinfo.HIST_WHO = X_HIST_WHO)
331 AND ((tlinfo.DESCRIPTION = X_DESCRIPTION)
332 OR ((tlinfo.DESCRIPTION is null)
333 AND (X_DESCRIPTION is null)))
334 AND ((tlinfo.GOVT_FUNDING_SOURCE = X_GOVT_FUNDING_SOURCE)
335 OR ((tlinfo.GOVT_FUNDING_SOURCE is null)
336 AND (X_GOVT_FUNDING_SOURCE is null)))
337 AND ((tlinfo.CLOSED_IND = X_CLOSED_IND)
338 OR ((tlinfo.CLOSED_IND is null)
339 AND (X_CLOSED_IND is null)))
340 ) then
341 null;
342 else
343 fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
344 IGS_GE_MSG_STACK.ADD;
345 app_exception.raise_exception;
346 end if;
347 return;
348 end LOCK_ROW;
349 procedure UPDATE_ROW (
350 X_ROWID in VARCHAR2,
351 X_FUNDING_SOURCE in VARCHAR2,
352 X_HIST_START_DT in DATE,
353 X_HIST_END_DT in DATE,
354 X_HIST_WHO in NUMBER,
355 X_DESCRIPTION in VARCHAR2,
356 X_GOVT_FUNDING_SOURCE in NUMBER,
357 X_CLOSED_IND in VARCHAR2,
358 X_MODE in VARCHAR2 default 'R'
359 ) is
360 X_LAST_UPDATE_DATE DATE;
361 X_LAST_UPDATED_BY NUMBER;
362 X_LAST_UPDATE_LOGIN NUMBER;
363 begin
364 X_LAST_UPDATE_DATE := SYSDATE;
365 if(X_MODE = 'I') then
366 X_LAST_UPDATED_BY := 1;
367 X_LAST_UPDATE_LOGIN := 0;
368 elsif (X_MODE = 'R') then
369 X_LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
370 if X_LAST_UPDATED_BY is NULL then
371 X_LAST_UPDATED_BY := -1;
372 end if;
373 X_LAST_UPDATE_LOGIN :=FND_GLOBAL.LOGIN_ID;
374 if X_LAST_UPDATE_LOGIN is NULL then
375 X_LAST_UPDATE_LOGIN := -1;
376 end if;
377 else
378 FND_MESSAGE.SET_NAME('FND', 'SYSTEM-INVALID ARGS');
379 IGS_GE_MSG_STACK.ADD;
380 app_exception.raise_exception;
381 end if;
382 Before_DML(
383 p_action=>'UPDATE',
384 x_rowid=>X_ROWID,
385 x_closed_ind=>X_CLOSED_IND,
386 x_description=>X_DESCRIPTION,
387 x_funding_source=>X_FUNDING_SOURCE,
388 x_govt_funding_source=>X_GOVT_FUNDING_SOURCE,
389 x_hist_end_dt=>X_HIST_END_DT,
390 x_hist_start_dt=>X_HIST_START_DT,
391 x_hist_who=>X_HIST_WHO,
392 x_creation_date=>X_LAST_UPDATE_DATE,
393 x_created_by=>X_LAST_UPDATED_BY,
394 x_last_update_date=>X_LAST_UPDATE_DATE,
395 x_last_updated_by=>X_LAST_UPDATED_BY,
396 x_last_update_login=>X_LAST_UPDATE_LOGIN
397 );
398 update IGS_FI_FUND_SRC_HIST_ALL set
399 HIST_END_DT = NEW_REFERENCES.HIST_END_DT,
400 HIST_WHO = NEW_REFERENCES.HIST_WHO,
401 DESCRIPTION = NEW_REFERENCES.DESCRIPTION,
402 GOVT_FUNDING_SOURCE = NEW_REFERENCES.GOVT_FUNDING_SOURCE,
403 CLOSED_IND = NEW_REFERENCES.CLOSED_IND,
404 LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
405 LAST_UPDATED_BY = X_LAST_UPDATED_BY,
406 LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN
407 where ROWID=X_ROWID
408 ;
409 if (sql%notfound) then
410 raise no_data_found;
411 end if;
412 After_DML (
413 p_action => 'UPDATE',
414 x_rowid => X_ROWID
415 );
416 end UPDATE_ROW;
417 procedure ADD_ROW (
418 X_ROWID in out NOCOPY VARCHAR2,
419 X_FUNDING_SOURCE in VARCHAR2,
420 X_HIST_START_DT in DATE,
421 X_HIST_END_DT in DATE,
422 X_HIST_WHO in NUMBER,
423 X_DESCRIPTION in VARCHAR2,
424 X_GOVT_FUNDING_SOURCE in NUMBER,
425 X_CLOSED_IND in VARCHAR2,
426 X_ORG_ID in NUMBER,
427 X_MODE in VARCHAR2 default 'R'
428 ) is
429 cursor c1 is select rowid from IGS_FI_FUND_SRC_HIST_ALL
430 where FUNDING_SOURCE = X_FUNDING_SOURCE
431 and HIST_START_DT = X_HIST_START_DT
432 ;
433 begin
434 open c1;
435 fetch c1 into X_ROWID;
436 if (c1%notfound) then
437 close c1;
438 INSERT_ROW (
439 X_ROWID,
440 X_FUNDING_SOURCE,
441 X_HIST_START_DT,
442 X_HIST_END_DT,
443 X_HIST_WHO,
444 X_DESCRIPTION,
445 X_GOVT_FUNDING_SOURCE,
446 X_CLOSED_IND,
447 X_ORG_ID,
448 X_MODE);
449 return;
450 end if;
451 close c1;
452 UPDATE_ROW (
453 X_ROWID,
454 X_FUNDING_SOURCE,
455 X_HIST_START_DT,
456 X_HIST_END_DT,
457 X_HIST_WHO,
458 X_DESCRIPTION,
459 X_GOVT_FUNDING_SOURCE,
460 X_CLOSED_IND,
461 X_MODE);
462 end ADD_ROW;
463 procedure DELETE_ROW (
464 X_ROWID in VARCHAR2
465 ) is
466 v_other_detail VARCHAR2(255);
467 begin
468 Before_DML(
469 p_action => 'DELETE',
470 x_rowid => X_ROWID
471 );
472 delete from IGS_FI_FUND_SRC_HIST_ALL
473 where ROWID=X_ROWID;
474 if (sql%notfound) then
475 raise no_data_found;
476 end if;
477 After_DML (
478 p_action => 'DELETE',
479 x_rowid => X_ROWID
480 );
481 end DELETE_ROW;
482 end IGS_FI_FUND_SRC_HIST_PKG;