DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_PE_SUBURB_POSTCD_PKG

Source


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