DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_FI_ACC_PKG

Source


1 package body IGS_FI_ACC_PKG AS
2 /* $Header: IGSSI02B.pls 115.20 2003/02/17 05:22:31 pathipat ship $ */
3   l_rowid VARCHAR2(25);
4   old_references IGS_FI_ACC_ALL%RowType;
5   new_references IGS_FI_ACC_ALL%RowType;
6 
7   PROCEDURE Set_Column_Values (
8     p_action IN VARCHAR2,
9     x_rowid IN VARCHAR2 ,
10     x_account_cd IN VARCHAR2 ,
11     x_description IN VARCHAR2 ,
12     x_closed_ind IN VARCHAR2 ,
13     x_org_id  IN NUMBER ,
14     x_creation_date IN DATE ,
15     x_created_by IN NUMBER ,
16     x_last_update_date IN DATE ,
17     x_last_updated_by IN NUMBER ,
18     x_last_update_login IN NUMBER ) AS
19     CURSOR cur_old_ref_values IS
20       SELECT   *
21       FROM     IGS_FI_ACC_ALL
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       Close cur_old_ref_values;
31       Fnd_Message.Set_Name ('FND', 'FORM_RECORD_DELETED');
32       IGS_GE_MSG_STACK.ADD;
33       App_Exception.Raise_Exception;
34       Return;
35     END IF;
36     Close cur_old_ref_values;
37     -- Populate New Values.
38     new_references.account_cd := x_account_cd;
39     new_references.description := x_description;
40     new_references.closed_ind := x_closed_ind;
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.org_id := x_org_id;
49     new_references.last_update_date := x_last_update_date;
50     new_references.last_updated_by := x_last_updated_by;
51     new_references.last_update_login := x_last_update_login;
52   END Set_Column_Values;
53 
54 PROCEDURE Check_Constraints (
55  Column_Name	IN	VARCHAR2	,
56  Column_Value 	IN	VARCHAR2
57   ) AS
58   /*----------------------------------------------------------------------------
59   ||  Created By :
60   ||  Created On :
61   ||  Purpose :
62   ||  Known limitations, enhancements or remarks :
63   ||  Change History :
64   ||  Who             When            What
65   ||  (reverse chronological order - newest change first)
66   ||  vvutukur        12-May-2002     removed upper check constraint on account_cd column.bug#2344826.
67   ----------------------------------------------------------------------------*/
68   BEGIN
69 
70     IF  column_name is null then
71        NULL;
72     ELSIF upper(Column_name) = 'CLOSED_IND' then
73        new_references.closed_ind := column_value;
74     END IF;
75 
76     IF upper(column_name) = 'CLOSED_IND' OR
77        column_name is null Then
78       IF (new_references.closed_ind not in ('Y', 'N')) Then
79         Fnd_Message.Set_Name ('IGS', 'IGS_GE_INVALID_VALUE');
80         IGS_GE_MSG_STACK.ADD;
81         App_Exception.Raise_Exception;
82       END IF;
83     END IF;
84 
85 END Check_Constraints;
86 
87 
88   FUNCTION Get_PK_For_Validation (
89        x_account_cd IN VARCHAR2
90     ) Return Boolean AS
91   /*--------------------------------------------------------------------
92   ||  Change History :
93   ||  Who             When            What
94   ||  (reverse chronological order - newest change first)
95   ||  pathipat        17-Feb-2003     Enh 2747325 - Locking Issues build
96   ||                                  Removed FOR UPDATE NOWAIT clause in cur_rowid
97   ----------------------------------------------------------------------*/
98 
99     CURSOR cur_rowid IS
100       SELECT   rowid
101       FROM     IGS_FI_ACC_ALL
102       WHERE      account_cd = x_account_cd;
103 
104     lv_rowid cur_rowid%RowType;
105 
106   BEGIN
107     Open cur_rowid;
108     Fetch cur_rowid INTO lv_rowid;
109  IF (cur_rowid%FOUND) THEN
110        Close cur_rowid;
111        Return (TRUE);
112  ELSE
113        Close cur_rowid;
114        Return (FALSE);
115  END IF;
116   END Get_PK_For_Validation;
117 
118   PROCEDURE Before_DML (
119     p_action IN VARCHAR2,
120     x_rowid IN VARCHAR2 ,
121     x_account_cd IN VARCHAR2 ,
122     x_description IN VARCHAR2 ,
123     x_closed_ind IN VARCHAR2 ,
124     x_org_id IN NUMBER ,
125     x_creation_date IN DATE ,
126     x_created_by IN NUMBER ,
127     x_last_update_date IN DATE ,
128     x_last_updated_by IN NUMBER ,
129     x_last_update_login IN NUMBER
130   ) AS
131 /*--------------------------------------------------------------------
132   ||  Change History :
133   ||  Who             When            What
134   ||  (reverse chronological order - newest change first)
135   ||  pathipat        17-Feb-2003     Enh 2747325 - Locking Issues build
136   ||                                  Removed code for p_action = DELETE and
137   ||                                  VALIDATE_DELETE
138   ----------------------------------------------------------------------*/
139   BEGIN
140     Set_Column_Values (
141       p_action,
142       x_rowid,
143       x_account_cd,
144       x_description,
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 	  IF  Get_PK_For_Validation (
156 	   	new_references.account_cd
157 	  	) 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 
164     ELSIF (p_action = 'UPDATE') THEN
165       -- Call all the procedures related to Before Update.
166   	  Check_Constraints;
167     ELSIF (p_action = 'VALIDATE_INSERT') THEN
168 	      IF  Get_PK_For_Validation (
169 			 	new_references.account_cd
170 	           ) THEN
171 	         Fnd_Message.Set_Name ('IGS', 'IGS_GE_MULTI_ORG_DUP_REC');
172                 IGS_GE_MSG_STACK.ADD;
173 	          App_Exception.Raise_Exception;
174 	      END IF;
175 	      Check_Constraints;
176     ELSIF (p_action = 'VALIDATE_UPDATE') THEN
177 	       Check_Constraints;
178     END IF;
179   END Before_DML;
180 
181   PROCEDURE INSERT_ROW (
182   X_ROWID in out NOCOPY VARCHAR2,
183   X_ACCOUNT_CD in VARCHAR2,
184   X_DESCRIPTION in VARCHAR2,
185   X_CLOSED_IND in VARCHAR2,
186   X_ORG_ID in NUMBER ,
187   X_MODE in VARCHAR2
188   ) AS
189     cursor C is select ROWID from IGS_FI_ACC_ALL
190       where  ACCOUNT_CD = X_ACCOUNT_CD;
191     X_LAST_UPDATE_DATE DATE;
192     X_LAST_UPDATED_BY NUMBER;
193     X_LAST_UPDATE_LOGIN NUMBER;
194 begin
195   X_LAST_UPDATE_DATE := SYSDATE;
196   if(X_MODE = 'I') then
197     X_LAST_UPDATED_BY := 1;
198     X_LAST_UPDATE_LOGIN := 0;
199   elsif (X_MODE = 'R') then
200     X_LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
201     if X_LAST_UPDATED_BY is NULL then
202       X_LAST_UPDATED_BY := -1;
203     end if;
204     X_LAST_UPDATE_LOGIN :=FND_GLOBAL.LOGIN_ID;
205     if X_LAST_UPDATE_LOGIN is NULL then
206       X_LAST_UPDATE_LOGIN := -1;
207     end if;
208   else
209     FND_MESSAGE.SET_NAME( 'FND', 'SYSTEM-INVALID ARGS');
210     IGS_GE_MSG_STACK.ADD;
211     app_exception.raise_exception;
212   end if;
213 Before_DML (
214     p_action => 'INSERT',
215     x_rowid => X_ROWID,
216     x_account_cd => X_ACCOUNT_CD,
217     x_description => X_DESCRIPTION,
218     x_closed_ind => X_CLOSED_IND,
219     X_org_id => igs_ge_gen_003.get_org_id,
220 x_creation_date => X_LAST_UPDATE_DATE,
221 x_created_by => X_LAST_UPDATED_BY,
222 x_last_update_date => X_LAST_UPDATE_DATE,
223 x_last_updated_by => X_LAST_UPDATED_BY,
224 x_last_update_login => X_LAST_UPDATE_LOGIN
225   );
226   insert into IGS_FI_ACC_ALL (
227     ACCOUNT_CD,
228     DESCRIPTION,
229     CLOSED_IND,
230     ORG_ID,
231     CREATION_DATE,
232     CREATED_BY,
233     LAST_UPDATE_DATE,
234     LAST_UPDATED_BY,
235     LAST_UPDATE_LOGIN
236   ) values (
237    NEW_REFERENCES.ACCOUNT_CD,
238    NEW_REFERENCES.DESCRIPTION,
239    NEW_REFERENCES.CLOSED_IND,
240    NEW_REFERENCES.ORG_ID,
241     X_LAST_UPDATE_DATE,
242     X_LAST_UPDATED_BY,
243     X_LAST_UPDATE_DATE,
244     X_LAST_UPDATED_BY,
245     X_LAST_UPDATE_LOGIN
246   );
247   open c;
248   fetch c into X_ROWID;
249   if (c%notfound) then
250     close c;
251     raise no_data_found;
252   end if;
253   CLOSE c;
254 END INSERT_ROW;
255 
256 PROCEDURE LOCK_ROW (
257   X_ROWID in VARCHAR2,
258   X_ACCOUNT_CD in VARCHAR2,
259   X_DESCRIPTION in VARCHAR2,
260   X_CLOSED_IND in VARCHAR2 -- this was not there before.
261 ) AS
262   cursor c1 is select
263       DESCRIPTION,
264       CLOSED_IND
265     from IGS_FI_ACC_ALL
266     where ROWID = X_ROWID
267     for update nowait;
268   tlinfo c1%rowtype;
269 BEGIN
270   open c1;
271   fetch c1 into tlinfo;
272   if (c1%notfound) then
273     close c1;
274     fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
275     IGS_GE_MSG_STACK.ADD;
276     app_exception.raise_exception;
277     return;
278   end if;
279   close c1;
280   if ( (tlinfo.DESCRIPTION = X_DESCRIPTION)
281   AND  (tlinfo.CLOSED_IND = X_CLOSED_IND)
282     )
283  then
284     null;
285   else
286     fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
287     IGS_GE_MSG_STACK.ADD;
288     app_exception.raise_exception;
289   end if;
290   RETURN;
291 END LOCK_ROW;
292 
293 PROCEDURE UPDATE_ROW (
294   X_ROWID in VARCHAR2,
295   X_ACCOUNT_CD in VARCHAR2,
296   X_DESCRIPTION in VARCHAR2,
297   X_CLOSED_IND in VARCHAR2,
298   X_MODE in VARCHAR2
299     ) AS
300     X_LAST_UPDATE_DATE DATE;
301     X_LAST_UPDATED_BY NUMBER;
302     X_LAST_UPDATE_LOGIN NUMBER;
303 begin
304   X_LAST_UPDATE_DATE := SYSDATE;
305   if(X_MODE = 'I') then
306     X_LAST_UPDATED_BY := 1;
307     X_LAST_UPDATE_LOGIN := 0;
308   elsif (X_MODE = 'R') then
309     X_LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
310     if X_LAST_UPDATED_BY is NULL then
311       X_LAST_UPDATED_BY := -1;
312     end if;
313     X_LAST_UPDATE_LOGIN :=FND_GLOBAL.LOGIN_ID;
314     if X_LAST_UPDATE_LOGIN is NULL then
315       X_LAST_UPDATE_LOGIN := -1;
316     end if;
317   else
318     FND_MESSAGE.SET_NAME('FND', 'SYSTEM-INVALID ARGS');
319     IGS_GE_MSG_STACK.ADD;
320     app_exception.raise_exception;
321   end if;
322 Before_DML (
323     p_action => 'UPDATE',
324     x_rowid => X_ROWID,
325     x_account_cd => X_ACCOUNT_CD,
326     x_description => X_DESCRIPTION,
327     x_closed_ind => X_CLOSED_IND,
328     x_creation_date => X_LAST_UPDATE_DATE,
329     x_created_by => X_LAST_UPDATED_BY,
330     x_last_update_date => X_LAST_UPDATE_DATE,
331     x_last_updated_by => X_LAST_UPDATED_BY,
332     x_last_update_login => X_LAST_UPDATE_LOGIN
333   );
334   update IGS_FI_ACC_ALL set
335     CLOSED_IND = NEW_REFERENCES.CLOSED_IND,
336     DESCRIPTION = NEW_REFERENCES.DESCRIPTION,
337     LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
338     LAST_UPDATED_BY = X_LAST_UPDATED_BY,
339     LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN
340   where ROWID=X_ROWID
341   ;
342   if (sql%notfound) then
343     raise no_data_found;
344   end if;
345 END UPDATE_ROW;
346 
347 PROCEDURE ADD_ROW (
348   X_ROWID in out NOCOPY VARCHAR2,
349   X_ACCOUNT_CD in VARCHAR2,
350   X_DESCRIPTION in VARCHAR2,
351   X_CLOSED_IND in VARCHAR2,
352   X_ORG_ID in NUMBER ,
353   X_MODE in VARCHAR2
354   ) AS
355   cursor c1 is select rowid from IGS_FI_ACC_ALL
356      where  ACCOUNT_CD = X_ACCOUNT_CD
357   ;
358 begin
359   open c1;
360   fetch c1 into X_ROWID;
361   if (c1%notfound) then
362     close c1;
363     INSERT_ROW (
364      X_ROWID,
365      X_ACCOUNT_CD,
366      X_DESCRIPTION,
367      X_CLOSED_IND,
368      X_ORG_ID,
369      X_MODE
370      );
371     return;
372   end if;
373   close c1;
374   UPDATE_ROW (
375    X_ROWID,
376    X_ACCOUNT_CD,
377    X_DESCRIPTION,
378    X_CLOSED_IND,
379    X_MODE
380    );
381 END ADD_ROW;
382 
383 END IGS_FI_ACC_PKG;