[Home] [Help]
PACKAGE BODY: APPS.IGS_PS_UNIT_OFR_NOTE_PKG
Source
1 package body IGS_PS_UNIT_OFR_NOTE_PKG as
2 /* $Header: IGSPI83B.pls 115.4 2002/11/29 02:39:25 nsidana ship $ */
3
4 l_rowid VARCHAR2(25);
5 old_references IGS_PS_UNIT_OFR_NOTE%RowType;
6 new_references IGS_PS_UNIT_OFR_NOTE%RowType;
7
8 PROCEDURE Set_Column_Values (
9 p_action IN VARCHAR2,
10 x_rowid IN VARCHAR2 DEFAULT NULL,
11 x_unit_cd IN VARCHAR2 DEFAULT NULL,
12 x_version_number IN NUMBER DEFAULT NULL,
13 x_cal_type IN VARCHAR2 DEFAULT NULL,
14 x_reference_number IN NUMBER DEFAULT NULL,
15 x_crs_note_type IN VARCHAR2 DEFAULT NULL,
16 x_creation_date IN DATE DEFAULT NULL,
17 x_created_by IN NUMBER DEFAULT NULL,
18 x_last_update_date IN DATE DEFAULT NULL,
19 x_last_updated_by IN NUMBER DEFAULT NULL,
20 x_last_update_login IN NUMBER DEFAULT NULL
21 ) AS
22
23 CURSOR cur_old_ref_values IS
24 SELECT *
25 FROM IGS_PS_UNIT_OFR_NOTE
26 WHERE rowid = x_rowid;
27
28 BEGIN
29
30 l_rowid := x_rowid;
31
32 -- Code for setting the Old and New Reference Values.
33 -- Populate Old Values.
34 Open cur_old_ref_values;
35 Fetch cur_old_ref_values INTO old_references;
36 IF (cur_old_ref_values%NOTFOUND) AND (p_action NOT IN ('INSERT','VALIDATE_INSERT')) THEN
37 Close cur_old_ref_values;
38 Fnd_Message.Set_Name ('FND', 'FORM_RECORD_DELETED');
39 IGS_GE_MSG_STACK.ADD;
40 App_Exception.Raise_Exception;
41 Return;
42 END IF;
43 Close cur_old_ref_values;
44
45 -- Populate New Values.
46 new_references.unit_cd := x_unit_cd;
47 new_references.version_number := x_version_number;
48 new_references.cal_type := x_cal_type;
49 new_references.reference_number := x_reference_number;
50 new_references.crs_note_type := x_crs_note_type;
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
62 END Set_Column_Values;
63
64 PROCEDURE Check_Constraints(
65 Column_Name IN VARCHAR2 DEFAULT NULL,
66 Column_Value IN VARCHAR2 DEFAULT NULL)
67 AS
68 BEGIN
69
70 IF Column_Name IS NULL Then
71 NULL;
72 ELSIF Upper(Column_Name)='CAL_TYPE' Then
73 New_References.Cal_Type := Column_Value;
74 ELSIF Upper(Column_Name)='CRS_NOTE_TYPE' Then
75 New_References.Crs_Note_Type := Column_Value;
76 ELSIF Upper(Column_Name)='UNIT_CD' Then
77 New_References.Unit_Cd := Column_Value;
78 END IF;
79
80 IF Upper(Column_Name)='CAL_TYPE' OR Column_Name IS NULL Then
81 IF New_References.Cal_Type <> UPPER(New_References.Cal_Type) Then
82 Fnd_Message.Set_Name ('IGS', 'IGS_GE_INVALID_VALUE');
83 IGS_GE_MSG_STACK.ADD;
84 App_Exception.Raise_Exception;
85 END IF;
86 END IF;
87
88 IF Upper(Column_Name)='CRS_NOTE_TYPE' OR Column_Name IS NULL Then
89 IF New_References.Crs_Note_Type <> UPPER(New_References.Crs_Note_Type) Then
90 Fnd_Message.Set_Name ('IGS', 'IGS_GE_INVALID_VALUE');
91 IGS_GE_MSG_STACK.ADD;
92 App_Exception.Raise_Exception;
93 END IF;
94 END IF;
95
96
97 IF Upper(Column_Name)='UNIT_CD' OR Column_Name IS NULL Then
98 IF New_References.Unit_Cd <> UPPER(New_References.Unit_CD) Then
99 Fnd_Message.Set_Name ('IGS', 'IGS_GE_INVALID_VALUE');
100 IGS_GE_MSG_STACK.ADD;
101 App_Exception.Raise_Exception;
102 END IF;
103 END IF;
104
105 END Check_Constraints;
106
107
108 PROCEDURE Check_Parent_Existance AS
109 BEGIN
110
111 IF (((old_references.crs_note_type = new_references.crs_note_type)) OR
112 ((new_references.crs_note_type IS NULL))) THEN
113 NULL;
114 ELSE
115 IF NOT IGS_PS_NOTE_TYPE_PKG.Get_PK_For_Validation (
116 new_references.crs_note_type) THEN
117 Fnd_Message.Set_Name ('FND', 'FORM_RECORD_DELETED');
118 IGS_GE_MSG_STACK.ADD;
119 App_Exception.Raise_Exception;
120 END IF;
121
122 END IF;
123
124 IF (((old_references.reference_number = new_references.reference_number)) OR
125 ((new_references.reference_number IS NULL))) THEN
126 NULL;
127 ELSE
128 IF NOT IGS_GE_NOTE_PKG.Get_PK_For_Validation (
129 new_references.reference_number) THEN
130 Fnd_Message.Set_Name ('FND', 'FORM_RECORD_DELETED');
131 IGS_GE_MSG_STACK.ADD;
132 App_Exception.Raise_Exception;
133 END IF;
134
135 END IF;
136
137 IF (((old_references.unit_cd = new_references.unit_cd) AND
138 (old_references.version_number = new_references.version_number) AND
139 (old_references.cal_type = new_references.cal_type)) OR
140 ((new_references.unit_cd IS NULL) OR
141 (new_references.version_number IS NULL) OR
142 (new_references.cal_type IS NULL))) THEN
143 NULL;
144 ELSE
145 IF NOT IGS_PS_UNIT_OFR_PKG.Get_PK_For_Validation (
146 new_references.unit_cd,
147 new_references.version_number,
148 new_references.cal_type) THEN
149 Fnd_Message.Set_Name ('FND', 'FORM_RECORD_DELETED');
150 IGS_GE_MSG_STACK.ADD;
151 App_Exception.Raise_Exception;
152 END IF;
153
154 END IF;
155
156 END Check_Parent_Existance;
157
158 FUNCTION Get_PK_For_Validation (
159 x_unit_cd IN VARCHAR2,
160 x_version_number IN NUMBER,
161 x_cal_type IN VARCHAR2,
162 x_reference_number IN NUMBER
163 ) RETURN BOOLEAN AS
164
165 CURSOR cur_rowid IS
166 SELECT rowid
167 FROM IGS_PS_UNIT_OFR_NOTE
168 WHERE unit_cd = x_unit_cd
169 AND version_number = x_version_number
170 AND cal_type = x_cal_type
171 AND reference_number = x_reference_number
172 FOR UPDATE NOWAIT;
173
174 lv_rowid cur_rowid%RowType;
175
176 BEGIN
177
178 Open cur_rowid;
179 Fetch cur_rowid INTO lv_rowid;
180 IF (cur_rowid%FOUND) THEN
181 Close cur_rowid;
182 Return(TRUE);
183 ELSE
184 Close cur_rowid;
185 Return(FALSE);
186 END IF;
187
188 END Get_PK_For_Validation;
189
190 PROCEDURE GET_FK_IGS_PS_NOTE_TYPE (
191 x_crs_note_type IN VARCHAR2
192 ) AS
193
194 CURSOR cur_rowid IS
195 SELECT rowid
196 FROM IGS_PS_UNIT_OFR_NOTE
197 WHERE crs_note_type = x_crs_note_type ;
198
199 lv_rowid cur_rowid%RowType;
200
201 BEGIN
202
203 Open cur_rowid;
204 Fetch cur_rowid INTO lv_rowid;
205 IF (cur_rowid%FOUND) THEN
206 Close cur_rowid;
207 Fnd_Message.Set_Name ('IGS', 'IGS_PS_UON_CNT_FK');
208 IGS_GE_MSG_STACK.ADD;
209 App_Exception.Raise_Exception;
210 Return;
211 END IF;
212 Close cur_rowid;
213
214 END GET_FK_IGS_PS_NOTE_TYPE;
215
216 PROCEDURE GET_FK_IGS_GE_NOTE (
217 x_reference_number IN NUMBER
218 ) AS
219
220 CURSOR cur_rowid IS
221 SELECT rowid
222 FROM IGS_PS_UNIT_OFR_NOTE
223 WHERE reference_number = x_reference_number ;
224
225 lv_rowid cur_rowid%RowType;
226
227 BEGIN
228
229 Open cur_rowid;
230 Fetch cur_rowid INTO lv_rowid;
231 IF (cur_rowid%FOUND) THEN
232 Close cur_rowid;
233 Fnd_Message.Set_Name ('IGS', 'IGS_PS_UON_NOTE_FK');
234 IGS_GE_MSG_STACK.ADD;
235 App_Exception.Raise_Exception;
236 Return;
237 END IF;
238 Close cur_rowid;
239
240 END GET_FK_IGS_GE_NOTE;
241
242 PROCEDURE GET_FK_IGS_PS_UNIT_OFR (
243 x_unit_cd IN VARCHAR2,
244 x_version_number IN NUMBER,
245 x_cal_type IN VARCHAR2
246 ) AS
247
248 CURSOR cur_rowid IS
249 SELECT rowid
250 FROM IGS_PS_UNIT_OFR_NOTE
251 WHERE unit_cd = x_unit_cd
252 AND version_number = x_version_number
253 AND cal_type = x_cal_type ;
254
255 lv_rowid cur_rowid%RowType;
256
257 BEGIN
258
259 Open cur_rowid;
260 Fetch cur_rowid INTO lv_rowid;
261 IF (cur_rowid%FOUND) THEN
262 Close cur_rowid;
263 Fnd_Message.Set_Name ('IGS', 'IGS_PS_UON_UO_FK');
264 IGS_GE_MSG_STACK.ADD;
265 App_Exception.Raise_Exception;
266 Return;
267 END IF;
268 Close cur_rowid;
269
270 END GET_FK_IGS_PS_UNIT_OFR;
271
272 PROCEDURE Before_DML (
273 p_action IN VARCHAR2,
274 x_rowid IN VARCHAR2 DEFAULT NULL,
275 x_unit_cd IN VARCHAR2 DEFAULT NULL,
276 x_version_number IN NUMBER DEFAULT NULL,
277 x_cal_type IN VARCHAR2 DEFAULT NULL,
278 x_reference_number IN NUMBER DEFAULT NULL,
279 x_crs_note_type IN VARCHAR2 DEFAULT NULL,
280 x_creation_date IN DATE DEFAULT NULL,
281 x_created_by IN NUMBER DEFAULT NULL,
282 x_last_update_date IN DATE DEFAULT NULL,
283 x_last_updated_by IN NUMBER DEFAULT NULL,
284 x_last_update_login IN NUMBER DEFAULT NULL
285 ) AS
286 BEGIN
287
288 Set_Column_Values (
289 p_action,
290 x_rowid,
291 x_unit_cd,
292 x_version_number,
293 x_cal_type,
294 x_reference_number,
295 x_crs_note_type,
296 x_creation_date,
297 x_created_by,
298 x_last_update_date,
299 x_last_updated_by,
300 x_last_update_login
301 );
302
303 IF (p_action = 'INSERT') THEN
304 -- Call all the procedures related to Before Insert.
305 IF Get_PK_For_Validation (New_References.unit_cd,
306 New_References.version_number,
307 New_References.cal_type,
308 New_References.reference_number) THEN
309 Fnd_Message.Set_Name ('IGS', 'IGS_GE_RECORD_ALREADY_EXISTS');
310 IGS_GE_MSG_STACK.ADD;
311 App_Exception.Raise_Exception;
312 END IF;
313 Check_Constraints;
314 Check_Parent_Existance;
315 ELSIF (p_action = 'UPDATE') THEN
316 -- Call all the procedures related to Before Update.
317 Check_Constraints;
318 Check_Parent_Existance;
319
320 ELSIF (p_action = 'VALIDATE_INSERT') THEN
321 IF Get_PK_For_Validation (New_References.unit_cd,
322 New_References.version_number,
323 New_References.cal_type,
324 New_References.reference_number) THEN
325 Fnd_Message.Set_Name ('IGS', 'IGS_GE_RECORD_ALREADY_EXISTS');
326 IGS_GE_MSG_STACK.ADD;
327 App_Exception.Raise_Exception;
328 END IF;
329 Check_Constraints;
330 ELSIF (p_action = 'VALIDATE_UPDATE') THEN
331 Check_Constraints;
332
333 END IF;
334
335 END Before_DML;
336
337 PROCEDURE After_DML (
338 p_action IN VARCHAR2,
339 x_rowid IN VARCHAR2
340 ) AS
341 BEGIN
342
343 l_rowid := x_rowid;
344
345
346 END After_DML;
347
348 procedure INSERT_ROW (
349 X_ROWID in out NOCOPY VARCHAR2,
350 X_UNIT_CD in VARCHAR2,
351 X_VERSION_NUMBER in NUMBER,
352 X_CAL_TYPE in VARCHAR2,
353 X_REFERENCE_NUMBER in NUMBER,
354 X_CRS_NOTE_TYPE in VARCHAR2,
355 X_MODE in VARCHAR2 default 'R'
356 ) AS
357 cursor C is select ROWID from IGS_PS_UNIT_OFR_NOTE
358 where UNIT_CD = X_UNIT_CD
359 and VERSION_NUMBER = X_VERSION_NUMBER
360 and CAL_TYPE = X_CAL_TYPE
361 and REFERENCE_NUMBER = X_REFERENCE_NUMBER;
362 X_LAST_UPDATE_DATE DATE;
363 X_LAST_UPDATED_BY NUMBER;
364 X_LAST_UPDATE_LOGIN NUMBER;
365 begin
366 X_LAST_UPDATE_DATE := SYSDATE;
367 if(X_MODE = 'I') then
368 X_LAST_UPDATED_BY := 1;
369 X_LAST_UPDATE_LOGIN := 0;
370 elsif (X_MODE = 'R') then
371 X_LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
372 if X_LAST_UPDATED_BY is NULL then
373 X_LAST_UPDATED_BY := -1;
374 end if;
375 X_LAST_UPDATE_LOGIN :=FND_GLOBAL.LOGIN_ID;
376 if X_LAST_UPDATE_LOGIN is NULL then
377 X_LAST_UPDATE_LOGIN := -1;
378 end if;
379 else
380 FND_MESSAGE.SET_NAME( 'FND', 'SYSTEM-INVALID ARGS');
381 IGS_GE_MSG_STACK.ADD;
382 app_exception.raise_exception;
383 end if;
384
385 Before_DML(
386 p_action => 'INSERT',
387 x_rowid => X_ROWID,
388 x_unit_cd => X_UNIT_CD,
389 x_version_number => X_VERSION_NUMBER,
390 x_cal_type => X_CAL_TYPE,
391 x_reference_number => X_REFERENCE_NUMBER,
392 x_crs_note_type => X_CRS_NOTE_TYPE,
393 x_creation_date => X_LAST_UPDATE_DATE,
394 x_created_by => X_LAST_UPDATED_BY,
395 x_last_update_date => X_LAST_UPDATE_DATE,
396 x_last_updated_by => X_LAST_UPDATED_BY,
397 x_last_update_login => X_LAST_UPDATE_LOGIN
398 );
399
400 insert into IGS_PS_UNIT_OFR_NOTE (
401 UNIT_CD,
402 VERSION_NUMBER,
403 CAL_TYPE,
404 REFERENCE_NUMBER,
405 CRS_NOTE_TYPE,
406 CREATION_DATE,
407 CREATED_BY,
408 LAST_UPDATE_DATE,
409 LAST_UPDATED_BY,
410 LAST_UPDATE_LOGIN
411 ) values (
412 NEW_REFERENCES.UNIT_CD,
413 NEW_REFERENCES.VERSION_NUMBER,
414 NEW_REFERENCES.CAL_TYPE,
415 NEW_REFERENCES.REFERENCE_NUMBER,
416 NEW_REFERENCES.CRS_NOTE_TYPE,
417 X_LAST_UPDATE_DATE,
418 X_LAST_UPDATED_BY,
419 X_LAST_UPDATE_DATE,
420 X_LAST_UPDATED_BY,
421 X_LAST_UPDATE_LOGIN
422 );
423
424 open c;
425 fetch c into X_ROWID;
426 if (c%notfound) then
427 close c;
428 raise no_data_found;
429 end if;
430 close c;
431 After_DML (
432 p_action => 'INSERT',
433 x_rowid => X_ROWID
434 );
435 end INSERT_ROW;
436
437 procedure LOCK_ROW (
438 X_ROWID IN VARCHAR2,
439 X_UNIT_CD in VARCHAR2,
440 X_VERSION_NUMBER in NUMBER,
441 X_CAL_TYPE in VARCHAR2,
442 X_REFERENCE_NUMBER in NUMBER,
443 X_CRS_NOTE_TYPE in VARCHAR2
444 ) AS
445 cursor c1 is select
446 CRS_NOTE_TYPE
447 from IGS_PS_UNIT_OFR_NOTE
448 where ROWID = X_ROWID
449 for update nowait;
450 tlinfo c1%rowtype;
451
452 begin
453 open c1;
454 fetch c1 into tlinfo;
455 if (c1%notfound) then
456 close c1;
457 fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
458 IGS_GE_MSG_STACK.ADD;
459 app_exception.raise_exception;
460 return;
461 end if;
462 close c1;
463
464 if ( (tlinfo.CRS_NOTE_TYPE = X_CRS_NOTE_TYPE)
465 ) then
466 null;
467 else
468 fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
469 IGS_GE_MSG_STACK.ADD;
470 app_exception.raise_exception;
471 end if;
472 return;
473 end LOCK_ROW;
474
475 procedure UPDATE_ROW (
476 X_ROWID IN VARCHAR2,
477 X_UNIT_CD in VARCHAR2,
478 X_VERSION_NUMBER in NUMBER,
479 X_CAL_TYPE in VARCHAR2,
480 X_REFERENCE_NUMBER in NUMBER,
481 X_CRS_NOTE_TYPE in VARCHAR2,
482 X_MODE in VARCHAR2 default 'R'
483 ) AS
484 X_LAST_UPDATE_DATE DATE;
485 X_LAST_UPDATED_BY NUMBER;
486 X_LAST_UPDATE_LOGIN NUMBER;
487 begin
488 X_LAST_UPDATE_DATE := SYSDATE;
489 if(X_MODE = 'I') then
490 X_LAST_UPDATED_BY := 1;
491 X_LAST_UPDATE_LOGIN := 0;
492 elsif (X_MODE = 'R') then
493 X_LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
494 if X_LAST_UPDATED_BY is NULL then
495 X_LAST_UPDATED_BY := -1;
496 end if;
497 X_LAST_UPDATE_LOGIN :=FND_GLOBAL.LOGIN_ID;
498 if X_LAST_UPDATE_LOGIN is NULL then
499 X_LAST_UPDATE_LOGIN := -1;
500 end if;
501 else
502 FND_MESSAGE.SET_NAME('FND', 'SYSTEM-INVALID ARGS');
503 IGS_GE_MSG_STACK.ADD;
504 app_exception.raise_exception;
505 end if;
506
507 Before_DML(
508 p_action => 'UPDATE',
509 x_rowid => X_ROWID,
510 x_unit_cd => X_UNIT_CD,
511 x_version_number => X_VERSION_NUMBER,
512 x_cal_type => X_CAL_TYPE,
513 x_reference_number => X_REFERENCE_NUMBER,
514 x_crs_note_type => X_CRS_NOTE_TYPE,
515 x_creation_date => X_LAST_UPDATE_DATE,
516 x_created_by => X_LAST_UPDATED_BY,
517 x_last_update_date => X_LAST_UPDATE_DATE,
518 x_last_updated_by => X_LAST_UPDATED_BY,
519 x_last_update_login => X_LAST_UPDATE_LOGIN
520 );
521
522 update IGS_PS_UNIT_OFR_NOTE set
523 CRS_NOTE_TYPE = NEW_REFERENCES.CRS_NOTE_TYPE,
524 LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
525 LAST_UPDATED_BY = X_LAST_UPDATED_BY,
526 LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN
527 where ROWID = X_ROWID
528 ;
529 if (sql%notfound) then
530 raise no_data_found;
531 end if;
532 After_DML (
533 p_action => 'UPDATE',
534 x_rowid => X_ROWID
535 );
536
537 end UPDATE_ROW;
538
539 procedure ADD_ROW (
540 X_ROWID in out NOCOPY VARCHAR2,
541 X_UNIT_CD in VARCHAR2,
542 X_VERSION_NUMBER in NUMBER,
543 X_CAL_TYPE in VARCHAR2,
544 X_REFERENCE_NUMBER in NUMBER,
545 X_CRS_NOTE_TYPE in VARCHAR2,
546 X_MODE in VARCHAR2 default 'R'
547 ) AS
548 cursor c1 is select rowid from IGS_PS_UNIT_OFR_NOTE
549 where UNIT_CD = X_UNIT_CD
550 and VERSION_NUMBER = X_VERSION_NUMBER
551 and CAL_TYPE = X_CAL_TYPE
552 and REFERENCE_NUMBER = X_REFERENCE_NUMBER
553 ;
554 begin
555 open c1;
556 fetch c1 into X_ROWID;
557 if (c1%notfound) then
558 close c1;
559 INSERT_ROW (
560 X_ROWID,
561 X_UNIT_CD,
562 X_VERSION_NUMBER,
563 X_CAL_TYPE,
564 X_REFERENCE_NUMBER,
565 X_CRS_NOTE_TYPE,
566 X_MODE);
567 return;
568 end if;
569 close c1;
570 UPDATE_ROW (
571 X_ROWID,
572 X_UNIT_CD,
573 X_VERSION_NUMBER,
574 X_CAL_TYPE,
575 X_REFERENCE_NUMBER,
576 X_CRS_NOTE_TYPE,
577 X_MODE);
578 end ADD_ROW;
579
580 procedure DELETE_ROW (
581 X_ROWID in VARCHAR2
582 ) AS
583 begin
584 Before_DML (
585 p_action => 'DELETE',
586 x_rowid => X_ROWID
587 );
588 delete from IGS_PS_UNIT_OFR_NOTE
589 where ROWID = X_ROWID;
590 if (sql%notfound) then
591 raise no_data_found;
592 end if;
593 After_DML (
594 p_action => 'DELETE',
595 x_rowid => X_ROWID
596 );
597
598
599 end DELETE_ROW;
600
601 end IGS_PS_UNIT_OFR_NOTE_PKG;