[Home] [Help]
PACKAGE BODY: APPS.IGS_OR_UNIT_LOC_PKG
Source
1 package body IGS_OR_UNIT_LOC_PKG AS
2 /* $Header: IGSOI13B.pls 115.7 2003/10/30 13:29:48 rghosh ship $ */
3 l_rowid VARCHAR2(25);
4 old_references IGS_OR_UNIT_LOC%RowType;
5 new_references IGS_OR_UNIT_LOC%RowType;
6
7 PROCEDURE Set_Column_Values (
8 p_action IN VARCHAR2,
9 x_rowid IN VARCHAR2 DEFAULT NULL,
10 x_org_unit_cd IN VARCHAR2 DEFAULT NULL,
11 x_start_dt IN DATE DEFAULT NULL,
12 x_location_cd IN VARCHAR2 DEFAULT NULL,
13 x_creation_date IN DATE DEFAULT NULL,
14 x_created_by IN NUMBER DEFAULT NULL,
15 x_last_update_date IN DATE DEFAULT NULL,
16 x_last_updated_by IN NUMBER DEFAULT NULL,
17 x_last_update_login IN NUMBER DEFAULT NULL
18 ) AS
19 CURSOR cur_old_ref_values IS
20 SELECT *
21 FROM IGS_OR_UNIT_LOC
22 WHERE rowid = x_rowid;
23 BEGIN
24 l_rowid := x_rowid;
25 -- Code for setting the Old and New Reference Values.
26 -- Populate Old Values.
27 Open cur_old_ref_values;
28 Fetch cur_old_ref_values INTO old_references;
29 IF (cur_old_ref_values%NOTFOUND) AND (p_action NOT IN ('INSERT','VALIDATE_INSERT')) THEN
30 Fnd_Message.Set_Name ('FND', 'FORM_RECORD_DELETED');
31 IGS_GE_MSG_STACK.ADD;
32 App_Exception.Raise_Exception;
33 Close cur_old_ref_values;
34 Return;
35 END IF;
36 Close cur_old_ref_values;
37 -- Populate New Values.
38 new_references.org_unit_cd := x_org_unit_cd;
39 new_references.start_dt := x_start_dt;
40 new_references.location_cd := x_location_cd;
41 IF (p_action = 'UPDATE') THEN
42 new_references.creation_date := old_references.creation_date;
43 new_references.created_by := old_references.created_by;
44 ELSE
45 new_references.creation_date := x_creation_date;
46 new_references.created_by := x_created_by;
47 END IF;
48 new_references.last_update_date := x_last_update_date;
49 new_references.last_updated_by := x_last_updated_by;
50 new_references.last_update_login := x_last_update_login;
51 END Set_Column_Values;
52 -- Trigger description :-
53 -- "OSS_TST".trg_oul_br_iu
54 -- BEFORE INSERT OR UPDATE
55 -- ON IGS_OR_UNIT_LOC
56 -- FOR EACH ROW
57
58 PROCEDURE BeforeRowInsertUpdate1(
59 p_inserting IN BOOLEAN DEFAULT FALSE,
60 p_updating IN BOOLEAN DEFAULT FALSE,
61 p_deleting IN BOOLEAN DEFAULT FALSE
62 ) AS
63 v_message_name VARCHAR2(30);
64 BEGIN
65 IF p_inserting THEN
66 -- As part of the bug# 1956374 changed to the below call from IGS_OR_VAL_OUL.crsp_val_loc_cd
67 IF IGS_PS_VAL_UOO.crsp_val_loc_cd (
68 new_references.location_cd,
69 v_message_name) = FALSE THEN
70 Fnd_Message.Set_Name('IGS',v_message_name);
71 IGS_GE_MSG_STACK.ADD;
72 App_Exception.Raise_Exception ;
73 END IF;
74 END IF;
75 END BeforeRowInsertUpdate1;
76
77 PROCEDURE Check_Parent_Existance AS
78 BEGIN
79 IF (((old_references.location_cd = new_references.location_cd)) OR
80 ((new_references.location_cd IS NULL))) THEN
81 NULL;
82 ELSE
83 IF NOT IGS_AD_LOCATION_PKG.Get_PK_For_Validation (
84 new_references.location_cd ,
85 'N' )THEN
86 Fnd_Message.Set_Name ('FND', 'FORM_RECORD_DELETED');
87 IGS_GE_MSG_STACK.ADD;
88 App_Exception.Raise_Exception;
89
90 END IF;
91 END IF;
92 IF (((old_references.org_unit_cd = new_references.org_unit_cd) AND
93 (old_references.start_dt = new_references.start_dt)) OR
94 ((new_references.org_unit_cd IS NULL) OR
95 (new_references.start_dt IS NULL))) THEN
96 NULL;
97 ELSE
98 IF NOT IGS_OR_UNIT_PKG.Get_PK_For_Validation (
99 new_references.org_unit_cd,
100 new_references.start_dt
101 )THEN
102 Fnd_Message.Set_Name ('FND', 'FORM_RECORD_DELETED');
103 IGS_GE_MSG_STACK.ADD;
104 App_Exception.Raise_Exception;
105
106 END IF;
107 END IF;
108 END Check_Parent_Existance;
109
110 FUNCTION Get_PK_For_Validation (
111 x_org_unit_cd IN VARCHAR2,
112 x_start_dt IN DATE,
113 x_location_cd IN VARCHAR2
114 ) RETURN BOOLEAN AS
115 CURSOR cur_rowid IS
116 SELECT rowid
117 FROM IGS_OR_UNIT_LOC
118 WHERE org_unit_cd = x_org_unit_cd
119 AND start_dt = x_start_dt
120 AND location_cd = x_location_cd
121 FOR UPDATE NOWAIT;
122 lv_rowid cur_rowid%RowType;
123 BEGIN
124 Open cur_rowid;
125 Fetch cur_rowid INTO lv_rowid;
126 IF (cur_rowid%FOUND) THEN
127 Close cur_rowid;
128 RETURN(TRUE);
129 ELSE
130 Close cur_rowid;
131 RETURN(FALSE);
132 END IF;
133 END Get_PK_For_Validation;
134
135 PROCEDURE GET_FK_IGS_AD_LOCATION (
136 x_location_cd IN VARCHAR2
137 ) AS
138 CURSOR cur_rowid IS
139 SELECT rowid
140 FROM IGS_OR_UNIT_LOC
141 WHERE location_cd = x_location_cd ;
142 lv_rowid cur_rowid%RowType;
143 BEGIN
144 Open cur_rowid;
145 Fetch cur_rowid INTO lv_rowid;
146 IF (cur_rowid%FOUND) THEN
147 Close cur_rowid;
148 Fnd_Message.Set_Name ('IGS', 'IGS_OR_OUL_LOC_FK');
149 IGS_GE_MSG_STACK.ADD;
150 App_Exception.Raise_Exception;
151 Return;
152 END IF;
153 Close cur_rowid;
154 END GET_FK_IGS_AD_LOCATION;
155
156 PROCEDURE GET_FK_IGS_OR_UNIT (
157 x_org_unit_cd IN VARCHAR2,
158 x_start_dt IN DATE
159 ) AS
160 CURSOR cur_rowid IS
161 SELECT rowid
162 FROM IGS_OR_UNIT_LOC
163 WHERE org_unit_cd = x_org_unit_cd
164 AND start_dt = x_start_dt ;
165 lv_rowid cur_rowid%RowType;
166 BEGIN
167 Open cur_rowid;
168 Fetch cur_rowid INTO lv_rowid;
169 IF (cur_rowid%FOUND) THEN
170 Close cur_rowid;
171 Fnd_Message.Set_Name ('IGS', 'IGS_OR_OUL_OU_FK');
172 IGS_GE_MSG_STACK.ADD;
173 App_Exception.Raise_Exception;
174 Return;
175 END IF;
176 Close cur_rowid;
177 END GET_FK_IGS_OR_UNIT;
178
179 PROCEDURE Before_DML (
180 p_action IN VARCHAR2,
181 x_rowid IN VARCHAR2 DEFAULT NULL,
182 x_org_unit_cd IN VARCHAR2 DEFAULT NULL,
183 x_start_dt IN DATE DEFAULT NULL,
184 x_location_cd IN VARCHAR2 DEFAULT NULL,
185 x_creation_date IN DATE DEFAULT NULL,
186 x_created_by IN NUMBER DEFAULT NULL,
187 x_last_update_date IN DATE DEFAULT NULL,
188 x_last_updated_by IN NUMBER DEFAULT NULL,
189 x_last_update_login IN NUMBER DEFAULT NULL
190 ) AS
191 BEGIN
192 Set_Column_Values (
193 p_action,
194 x_rowid,
195 x_org_unit_cd,
196 x_start_dt,
197 x_location_cd,
198 x_creation_date,
199 x_created_by,
200 x_last_update_date,
201 x_last_updated_by,
202 x_last_update_login
203 );
204 IF (p_action = 'INSERT') THEN
205 -- Call all the procedures related to Before Insert.
206 BeforeRowInsertUpdate1 ( p_inserting => TRUE );
207
208 IF Get_PK_For_Validation (
209 new_references.org_unit_cd ,
210 new_references.start_dt ,
211 new_references.location_cd
212 )THEN
213 Fnd_Message.Set_Name ('IGS', 'IGS_GE_RECORD_ALREADY_EXISTS');
214 IGS_GE_MSG_STACK.ADD;
215 App_Exception.Raise_Exception;
216
217 END IF;
218 Check_Parent_Existance;
219 Check_Constraints ;
220 ELSIF (p_action = 'UPDATE') THEN
221 -- Call all the procedures related to Before Update.
222 BeforeRowInsertUpdate1 ( p_updating => TRUE );
223 Check_Constraints ;
224 Check_Parent_Existance;
225 ELSIF (p_action = 'DELETE') THEN
226 -- Call all the procedures related to Before Delete.
227 Null;
228 ELSIF (p_action = 'VALIDATE_INSERT') THEN
229
230 IF Get_PK_For_Validation (
231 new_references.org_unit_cd ,
232 new_references.start_dt ,
233 new_references.location_cd
234 )THEN
235 Fnd_Message.Set_Name ('IGS', 'IGS_GE_RECORD_ALREADY_EXISTS');
236 IGS_GE_MSG_STACK.ADD;
237 App_Exception.Raise_Exception;
238
239 END IF;
240 Check_Constraints ;
241
242 ELSIF (p_action = 'VALIDATE_UPDATE') THEN
243
244 Check_Constraints ;
245
246 ELSIF (p_action = 'VALIDATE_DELETE') THEN
247
248 NULL;
249
250 END IF;
251 END Before_DML;
252
253 PROCEDURE After_DML (
254 p_action IN VARCHAR2,
255 x_rowid IN VARCHAR2
256 ) AS
257 BEGIN
258 l_rowid := x_rowid;
259 END After_DML;
260
261 procedure INSERT_ROW (
262 X_ROWID in out NOCOPY VARCHAR2,
263 X_ORG_UNIT_CD in VARCHAR2,
264 X_START_DT in DATE,
265 X_LOCATION_CD in VARCHAR2,
266 X_MODE in VARCHAR2 default 'R'
267 ) AS
268 cursor C is select ROWID from IGS_OR_UNIT_LOC
269 where ORG_UNIT_CD = X_ORG_UNIT_CD
270 and START_DT = X_START_DT
271 and LOCATION_CD = X_LOCATION_CD;
272 X_LAST_UPDATE_DATE DATE;
273 X_LAST_UPDATED_BY NUMBER;
274 X_LAST_UPDATE_LOGIN NUMBER;
275 begin
276 X_LAST_UPDATE_DATE := SYSDATE;
277 if(X_MODE = 'I') then
278 X_LAST_UPDATED_BY := 1;
279 X_LAST_UPDATE_LOGIN := 0;
280 elsif (X_MODE = 'R') then
281 X_LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
282 if X_LAST_UPDATED_BY is NULL then
283 X_LAST_UPDATED_BY := -1;
284 end if;
285 X_LAST_UPDATE_LOGIN :=FND_GLOBAL.LOGIN_ID;
286 if X_LAST_UPDATE_LOGIN is NULL then
287 X_LAST_UPDATE_LOGIN := -1;
288 end if;
289 else
290 FND_MESSAGE.SET_NAME( 'FND', 'SYSTEM-INVALID ARGS');
291 IGS_GE_MSG_STACK.ADD;
292 app_exception.raise_exception;
293 end if;
294 Before_DML(
295 p_action=>'INSERT',
296 x_rowid=>X_ROWID,
297 x_location_cd=>X_LOCATION_CD,
298 x_org_unit_cd=>X_ORG_UNIT_CD,
299 x_start_dt=>X_START_DT,
300 x_creation_date=>X_LAST_UPDATE_DATE,
301 x_created_by=>X_LAST_UPDATED_BY,
302 x_last_update_date=>X_LAST_UPDATE_DATE,
303 x_last_updated_by=>X_LAST_UPDATED_BY,
304 x_last_update_login=>X_LAST_UPDATE_LOGIN
305 );
306 insert into IGS_OR_UNIT_LOC (
307 ORG_UNIT_CD,
308 START_DT,
309 LOCATION_CD,
310 CREATION_DATE,
311 CREATED_BY,
312 LAST_UPDATE_DATE,
313 LAST_UPDATED_BY,
314 LAST_UPDATE_LOGIN
315 ) values (
316 NEW_REFERENCES.ORG_UNIT_CD,
317 NEW_REFERENCES.START_DT,
318 NEW_REFERENCES.LOCATION_CD,
319 X_LAST_UPDATE_DATE,
320 X_LAST_UPDATED_BY,
321 X_LAST_UPDATE_DATE,
322 X_LAST_UPDATED_BY,
323 X_LAST_UPDATE_LOGIN
324 );
325 open c;
326 fetch c into X_ROWID;
327 if (c%notfound) then
328 close c;
329 raise no_data_found;
330 end if;
331 close c;
332 After_DML(
333 p_action=>'INSERT',
334 x_rowid=>X_ROWID
335 );
336 end INSERT_ROW;
337
338 procedure LOCK_ROW (
339 X_ROWID in VARCHAR2,
340 X_ORG_UNIT_CD in VARCHAR2,
341 X_START_DT in DATE,
342 X_LOCATION_CD in VARCHAR2
343 ) AS
344 cursor c1 is select rowid
345 from IGS_OR_UNIT_LOC
346 where ROWID = X_ROWID
347 for update nowait ;
348 tlinfo c1%rowtype;
349 begin
350 open c1;
351 fetch c1 into tlinfo;
352 if (c1%notfound) then
353 fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
354 app_exception.raise_exception;
355 close c1;
356 return;
357 end if;
358 close c1;
359 return;
360 end LOCK_ROW;
361
362 procedure DELETE_ROW (
363 X_ROWID in VARCHAR2
364 ) AS
365 begin
366 Before_DML(
367 p_action=>'DELETE',
368 x_rowid=>X_ROWID
369 );
370 delete from IGS_OR_UNIT_LOC
371 where ROWID = X_ROWID ;
372 if (sql%notfound) then
373 raise no_data_found;
374 end if;
375 After_DML(
376 p_action=>'DELETE',
377 x_rowid=>X_ROWID
378 );
379 end DELETE_ROW;
380
381 procedure Check_Constraints (
382 Column_Name in VARCHAR2 DEFAULT NULL ,
383 Column_Value in VARCHAR2 DEFAULT NULL
384 ) AS
385 /*----------------------------------------------------------------------------
386 || Created By : pkpatel
387 || Created On :
388 || Purpose :
389 || Known limitations, enhancements or remarks :
390 || Change History :
391 || Who When What
392 || (reverse chronological order - newest change first)
393 || pkpatel 29-JUL-2002 Bug No: 2461744
394 || Removed the upper check constraint on org_unit_cd
395 ----------------------------------------------------------------------------*/
396
397 begin
398
399 IF Column_Name is null THEN
400 NULL;
401 ELSIF upper(Column_name) = 'LOCATION_CD' THEN
402 new_references.LOCATION_CD:= COLUMN_VALUE ;
403 END IF ;
404
405 IF upper(Column_name) = 'LOCATION_CD' OR COLUMN_NAME IS NULL THEN
406 IF new_references.LOCATION_CD <> upper(new_references.LOCATION_CD) then
407 Fnd_Message.Set_Name('IGS','IGS_GE_INVALID_VALUE');
408 IGS_GE_MSG_STACK.ADD;
409 App_Exception.Raise_Exception ;
410 END IF;
411
412 END IF ;
413
414 end Check_Constraints ;
415
416 end IGS_OR_UNIT_LOC_PKG;