1: PACKAGE BODY CN_RATE_TIERS_PKG as
2: /* $Header: cnplirtb.pls 120.2 2005/07/12 16:28:26 appldev ship $ */
3: /* Name : CN_RATE_TIERS_PKG
4: Purpose : Holds all server side packages used to proces a commission rate
5: table tier.
1: PACKAGE BODY CN_RATE_TIERS_PKG as
2: /* $Header: cnplirtb.pls 120.2 2005/07/12 16:28:26 appldev ship $ */
3: /* Name : CN_RATE_TIERS_PKG
4: Purpose : Holds all server side packages used to proces a commission rate
5: table tier.
6:
7: Notes : If we add, update or delete a tier we must 'INCOMPLETE' any comp
12: But for consistency with the other packages we call it in each
13: individual insert, update and delete procedure.*/
14:
15: PROCEDURE INSERT_ROW
16: (X_RATE_TIER_ID IN OUT NOCOPY CN_RATE_TIERS.RATE_TIER_ID%TYPE,
17: X_RATE_SCHEDULE_ID IN CN_RATE_TIERS.RATE_SCHEDULE_ID%TYPE,
18: X_COMMISSION_AMOUNT IN CN_RATE_TIERS.COMMISSION_AMOUNT%TYPE,
19: X_RATE_SEQUENCE IN CN_RATE_TIERS.RATE_SEQUENCE%TYPE,
20: --R12 MOAC Changes--Start
13: individual insert, update and delete procedure.*/
14:
15: PROCEDURE INSERT_ROW
16: (X_RATE_TIER_ID IN OUT NOCOPY CN_RATE_TIERS.RATE_TIER_ID%TYPE,
17: X_RATE_SCHEDULE_ID IN CN_RATE_TIERS.RATE_SCHEDULE_ID%TYPE,
18: X_COMMISSION_AMOUNT IN CN_RATE_TIERS.COMMISSION_AMOUNT%TYPE,
19: X_RATE_SEQUENCE IN CN_RATE_TIERS.RATE_SEQUENCE%TYPE,
20: --R12 MOAC Changes--Start
21: X_ORG_ID IN CN_RATE_TIERS.ORG_ID%TYPE,
14:
15: PROCEDURE INSERT_ROW
16: (X_RATE_TIER_ID IN OUT NOCOPY CN_RATE_TIERS.RATE_TIER_ID%TYPE,
17: X_RATE_SCHEDULE_ID IN CN_RATE_TIERS.RATE_SCHEDULE_ID%TYPE,
18: X_COMMISSION_AMOUNT IN CN_RATE_TIERS.COMMISSION_AMOUNT%TYPE,
19: X_RATE_SEQUENCE IN CN_RATE_TIERS.RATE_SEQUENCE%TYPE,
20: --R12 MOAC Changes--Start
21: X_ORG_ID IN CN_RATE_TIERS.ORG_ID%TYPE,
22: --R12 MOAC Changes--End
15: PROCEDURE INSERT_ROW
16: (X_RATE_TIER_ID IN OUT NOCOPY CN_RATE_TIERS.RATE_TIER_ID%TYPE,
17: X_RATE_SCHEDULE_ID IN CN_RATE_TIERS.RATE_SCHEDULE_ID%TYPE,
18: X_COMMISSION_AMOUNT IN CN_RATE_TIERS.COMMISSION_AMOUNT%TYPE,
19: X_RATE_SEQUENCE IN CN_RATE_TIERS.RATE_SEQUENCE%TYPE,
20: --R12 MOAC Changes--Start
21: X_ORG_ID IN CN_RATE_TIERS.ORG_ID%TYPE,
22: --R12 MOAC Changes--End
23: X_CREATION_DATE IN CN_RATE_TIERS.CREATION_DATE%TYPE := SYSDATE,
17: X_RATE_SCHEDULE_ID IN CN_RATE_TIERS.RATE_SCHEDULE_ID%TYPE,
18: X_COMMISSION_AMOUNT IN CN_RATE_TIERS.COMMISSION_AMOUNT%TYPE,
19: X_RATE_SEQUENCE IN CN_RATE_TIERS.RATE_SEQUENCE%TYPE,
20: --R12 MOAC Changes--Start
21: X_ORG_ID IN CN_RATE_TIERS.ORG_ID%TYPE,
22: --R12 MOAC Changes--End
23: X_CREATION_DATE IN CN_RATE_TIERS.CREATION_DATE%TYPE := SYSDATE,
24: X_CREATED_BY IN CN_RATE_TIERS.CREATED_BY%TYPE := FND_GLOBAL.USER_ID,
25: X_LAST_UPDATE_DATE IN CN_RATE_TIERS.LAST_UPDATE_DATE%TYPE := SYSDATE,
19: X_RATE_SEQUENCE IN CN_RATE_TIERS.RATE_SEQUENCE%TYPE,
20: --R12 MOAC Changes--Start
21: X_ORG_ID IN CN_RATE_TIERS.ORG_ID%TYPE,
22: --R12 MOAC Changes--End
23: X_CREATION_DATE IN CN_RATE_TIERS.CREATION_DATE%TYPE := SYSDATE,
24: X_CREATED_BY IN CN_RATE_TIERS.CREATED_BY%TYPE := FND_GLOBAL.USER_ID,
25: X_LAST_UPDATE_DATE IN CN_RATE_TIERS.LAST_UPDATE_DATE%TYPE := SYSDATE,
26: X_LAST_UPDATED_BY IN CN_RATE_TIERS.LAST_UPDATED_BY%TYPE := FND_GLOBAL.USER_ID,
27: X_LAST_UPDATE_LOGIN IN CN_RATE_TIERS.LAST_UPDATE_LOGIN%TYPE:= FND_GLOBAL.LOGIN_ID) IS
20: --R12 MOAC Changes--Start
21: X_ORG_ID IN CN_RATE_TIERS.ORG_ID%TYPE,
22: --R12 MOAC Changes--End
23: X_CREATION_DATE IN CN_RATE_TIERS.CREATION_DATE%TYPE := SYSDATE,
24: X_CREATED_BY IN CN_RATE_TIERS.CREATED_BY%TYPE := FND_GLOBAL.USER_ID,
25: X_LAST_UPDATE_DATE IN CN_RATE_TIERS.LAST_UPDATE_DATE%TYPE := SYSDATE,
26: X_LAST_UPDATED_BY IN CN_RATE_TIERS.LAST_UPDATED_BY%TYPE := FND_GLOBAL.USER_ID,
27: X_LAST_UPDATE_LOGIN IN CN_RATE_TIERS.LAST_UPDATE_LOGIN%TYPE:= FND_GLOBAL.LOGIN_ID) IS
28:
21: X_ORG_ID IN CN_RATE_TIERS.ORG_ID%TYPE,
22: --R12 MOAC Changes--End
23: X_CREATION_DATE IN CN_RATE_TIERS.CREATION_DATE%TYPE := SYSDATE,
24: X_CREATED_BY IN CN_RATE_TIERS.CREATED_BY%TYPE := FND_GLOBAL.USER_ID,
25: X_LAST_UPDATE_DATE IN CN_RATE_TIERS.LAST_UPDATE_DATE%TYPE := SYSDATE,
26: X_LAST_UPDATED_BY IN CN_RATE_TIERS.LAST_UPDATED_BY%TYPE := FND_GLOBAL.USER_ID,
27: X_LAST_UPDATE_LOGIN IN CN_RATE_TIERS.LAST_UPDATE_LOGIN%TYPE:= FND_GLOBAL.LOGIN_ID) IS
28:
29: CURSOR C IS SELECT RATE_TIER_ID FROM CN_RATE_TIERS
22: --R12 MOAC Changes--End
23: X_CREATION_DATE IN CN_RATE_TIERS.CREATION_DATE%TYPE := SYSDATE,
24: X_CREATED_BY IN CN_RATE_TIERS.CREATED_BY%TYPE := FND_GLOBAL.USER_ID,
25: X_LAST_UPDATE_DATE IN CN_RATE_TIERS.LAST_UPDATE_DATE%TYPE := SYSDATE,
26: X_LAST_UPDATED_BY IN CN_RATE_TIERS.LAST_UPDATED_BY%TYPE := FND_GLOBAL.USER_ID,
27: X_LAST_UPDATE_LOGIN IN CN_RATE_TIERS.LAST_UPDATE_LOGIN%TYPE:= FND_GLOBAL.LOGIN_ID) IS
28:
29: CURSOR C IS SELECT RATE_TIER_ID FROM CN_RATE_TIERS
30: WHERE RATE_TIER_ID = X_RATE_TIER_ID;
23: X_CREATION_DATE IN CN_RATE_TIERS.CREATION_DATE%TYPE := SYSDATE,
24: X_CREATED_BY IN CN_RATE_TIERS.CREATED_BY%TYPE := FND_GLOBAL.USER_ID,
25: X_LAST_UPDATE_DATE IN CN_RATE_TIERS.LAST_UPDATE_DATE%TYPE := SYSDATE,
26: X_LAST_UPDATED_BY IN CN_RATE_TIERS.LAST_UPDATED_BY%TYPE := FND_GLOBAL.USER_ID,
27: X_LAST_UPDATE_LOGIN IN CN_RATE_TIERS.LAST_UPDATE_LOGIN%TYPE:= FND_GLOBAL.LOGIN_ID) IS
28:
29: CURSOR C IS SELECT RATE_TIER_ID FROM CN_RATE_TIERS
30: WHERE RATE_TIER_ID = X_RATE_TIER_ID;
31:
25: X_LAST_UPDATE_DATE IN CN_RATE_TIERS.LAST_UPDATE_DATE%TYPE := SYSDATE,
26: X_LAST_UPDATED_BY IN CN_RATE_TIERS.LAST_UPDATED_BY%TYPE := FND_GLOBAL.USER_ID,
27: X_LAST_UPDATE_LOGIN IN CN_RATE_TIERS.LAST_UPDATE_LOGIN%TYPE:= FND_GLOBAL.LOGIN_ID) IS
28:
29: CURSOR C IS SELECT RATE_TIER_ID FROM CN_RATE_TIERS
30: WHERE RATE_TIER_ID = X_RATE_TIER_ID;
31:
32: CURSOR id IS SELECT CN_RATE_TIERS_S.NEXTVAL FROM DUAL;
33: BEGIN
28:
29: CURSOR C IS SELECT RATE_TIER_ID FROM CN_RATE_TIERS
30: WHERE RATE_TIER_ID = X_RATE_TIER_ID;
31:
32: CURSOR id IS SELECT CN_RATE_TIERS_S.NEXTVAL FROM DUAL;
33: BEGIN
34: IF (x_rate_tier_id IS NULL) THEN
35: OPEN id;
36: FETCH id INTO x_rate_tier_id;
48: x_rate_schedule_id => X_rate_schedule_id,
49: x_status_code => 'INCOMPLETE',
50: x_event => 'CHANGE_TIERS');
51:
52: insert into CN_RATE_TIERS
53: (RATE_TIER_ID,
54: RATE_SCHEDULE_ID,
55: COMMISSION_AMOUNT,
56: RATE_SEQUENCE,
103:
104: END INSERT_ROW;
105:
106: PROCEDURE LOCK_ROW
107: (X_RATE_TIER_ID IN CN_RATE_TIERS.RATE_TIER_ID%TYPE,
108: X_OBJECT_VERSION_NUMBER IN CN_RATE_TIERS.OBJECT_VERSION_NUMBER%TYPE) IS
109:
110: cursor c is
111: select object_version_number
104: END INSERT_ROW;
105:
106: PROCEDURE LOCK_ROW
107: (X_RATE_TIER_ID IN CN_RATE_TIERS.RATE_TIER_ID%TYPE,
108: X_OBJECT_VERSION_NUMBER IN CN_RATE_TIERS.OBJECT_VERSION_NUMBER%TYPE) IS
109:
110: cursor c is
111: select object_version_number
112: from CN_RATE_TIERS
108: X_OBJECT_VERSION_NUMBER IN CN_RATE_TIERS.OBJECT_VERSION_NUMBER%TYPE) IS
109:
110: cursor c is
111: select object_version_number
112: from CN_RATE_TIERS
113: where RATE_TIER_ID = X_RATE_TIER_ID
114: for update of RATE_TIER_ID nowait;
115:
116: tlinfo c%rowtype ;
133:
134: END LOCK_ROW;
135:
136: PROCEDURE UPDATE_ROW
137: (X_RATE_TIER_ID IN CN_RATE_TIERS.RATE_TIER_ID%TYPE,
138: X_RATE_SCHEDULE_ID IN CN_RATE_TIERS.RATE_SCHEDULE_ID%TYPE,
139: X_COMMISSION_AMOUNT IN CN_RATE_TIERS.COMMISSION_AMOUNT%TYPE,
140: X_RATE_SEQUENCE IN CN_RATE_TIERS.RATE_SEQUENCE%TYPE,
141: X_OBJECT_VERSION_NUMBER IN OUT NOCOPY CN_RATE_TIERS.OBJECT_VERSION_NUMBER%TYPE,
134: END LOCK_ROW;
135:
136: PROCEDURE UPDATE_ROW
137: (X_RATE_TIER_ID IN CN_RATE_TIERS.RATE_TIER_ID%TYPE,
138: X_RATE_SCHEDULE_ID IN CN_RATE_TIERS.RATE_SCHEDULE_ID%TYPE,
139: X_COMMISSION_AMOUNT IN CN_RATE_TIERS.COMMISSION_AMOUNT%TYPE,
140: X_RATE_SEQUENCE IN CN_RATE_TIERS.RATE_SEQUENCE%TYPE,
141: X_OBJECT_VERSION_NUMBER IN OUT NOCOPY CN_RATE_TIERS.OBJECT_VERSION_NUMBER%TYPE,
142: X_LAST_UPDATE_DATE IN CN_RATE_TIERS.LAST_UPDATE_DATE%TYPE := SYSDATE,
135:
136: PROCEDURE UPDATE_ROW
137: (X_RATE_TIER_ID IN CN_RATE_TIERS.RATE_TIER_ID%TYPE,
138: X_RATE_SCHEDULE_ID IN CN_RATE_TIERS.RATE_SCHEDULE_ID%TYPE,
139: X_COMMISSION_AMOUNT IN CN_RATE_TIERS.COMMISSION_AMOUNT%TYPE,
140: X_RATE_SEQUENCE IN CN_RATE_TIERS.RATE_SEQUENCE%TYPE,
141: X_OBJECT_VERSION_NUMBER IN OUT NOCOPY CN_RATE_TIERS.OBJECT_VERSION_NUMBER%TYPE,
142: X_LAST_UPDATE_DATE IN CN_RATE_TIERS.LAST_UPDATE_DATE%TYPE := SYSDATE,
143: X_LAST_UPDATED_BY IN CN_RATE_TIERS.LAST_UPDATED_BY%TYPE := FND_GLOBAL.USER_ID,
136: PROCEDURE UPDATE_ROW
137: (X_RATE_TIER_ID IN CN_RATE_TIERS.RATE_TIER_ID%TYPE,
138: X_RATE_SCHEDULE_ID IN CN_RATE_TIERS.RATE_SCHEDULE_ID%TYPE,
139: X_COMMISSION_AMOUNT IN CN_RATE_TIERS.COMMISSION_AMOUNT%TYPE,
140: X_RATE_SEQUENCE IN CN_RATE_TIERS.RATE_SEQUENCE%TYPE,
141: X_OBJECT_VERSION_NUMBER IN OUT NOCOPY CN_RATE_TIERS.OBJECT_VERSION_NUMBER%TYPE,
142: X_LAST_UPDATE_DATE IN CN_RATE_TIERS.LAST_UPDATE_DATE%TYPE := SYSDATE,
143: X_LAST_UPDATED_BY IN CN_RATE_TIERS.LAST_UPDATED_BY%TYPE := FND_GLOBAL.USER_ID,
144: X_LAST_UPDATE_LOGIN IN CN_RATE_TIERS.LAST_UPDATE_LOGIN%TYPE:= FND_GLOBAL.LOGIN_ID) IS
137: (X_RATE_TIER_ID IN CN_RATE_TIERS.RATE_TIER_ID%TYPE,
138: X_RATE_SCHEDULE_ID IN CN_RATE_TIERS.RATE_SCHEDULE_ID%TYPE,
139: X_COMMISSION_AMOUNT IN CN_RATE_TIERS.COMMISSION_AMOUNT%TYPE,
140: X_RATE_SEQUENCE IN CN_RATE_TIERS.RATE_SEQUENCE%TYPE,
141: X_OBJECT_VERSION_NUMBER IN OUT NOCOPY CN_RATE_TIERS.OBJECT_VERSION_NUMBER%TYPE,
142: X_LAST_UPDATE_DATE IN CN_RATE_TIERS.LAST_UPDATE_DATE%TYPE := SYSDATE,
143: X_LAST_UPDATED_BY IN CN_RATE_TIERS.LAST_UPDATED_BY%TYPE := FND_GLOBAL.USER_ID,
144: X_LAST_UPDATE_LOGIN IN CN_RATE_TIERS.LAST_UPDATE_LOGIN%TYPE:= FND_GLOBAL.LOGIN_ID) IS
145:
138: X_RATE_SCHEDULE_ID IN CN_RATE_TIERS.RATE_SCHEDULE_ID%TYPE,
139: X_COMMISSION_AMOUNT IN CN_RATE_TIERS.COMMISSION_AMOUNT%TYPE,
140: X_RATE_SEQUENCE IN CN_RATE_TIERS.RATE_SEQUENCE%TYPE,
141: X_OBJECT_VERSION_NUMBER IN OUT NOCOPY CN_RATE_TIERS.OBJECT_VERSION_NUMBER%TYPE,
142: X_LAST_UPDATE_DATE IN CN_RATE_TIERS.LAST_UPDATE_DATE%TYPE := SYSDATE,
143: X_LAST_UPDATED_BY IN CN_RATE_TIERS.LAST_UPDATED_BY%TYPE := FND_GLOBAL.USER_ID,
144: X_LAST_UPDATE_LOGIN IN CN_RATE_TIERS.LAST_UPDATE_LOGIN%TYPE:= FND_GLOBAL.LOGIN_ID) IS
145:
146: l_commission_amount_old number := 0;
139: X_COMMISSION_AMOUNT IN CN_RATE_TIERS.COMMISSION_AMOUNT%TYPE,
140: X_RATE_SEQUENCE IN CN_RATE_TIERS.RATE_SEQUENCE%TYPE,
141: X_OBJECT_VERSION_NUMBER IN OUT NOCOPY CN_RATE_TIERS.OBJECT_VERSION_NUMBER%TYPE,
142: X_LAST_UPDATE_DATE IN CN_RATE_TIERS.LAST_UPDATE_DATE%TYPE := SYSDATE,
143: X_LAST_UPDATED_BY IN CN_RATE_TIERS.LAST_UPDATED_BY%TYPE := FND_GLOBAL.USER_ID,
144: X_LAST_UPDATE_LOGIN IN CN_RATE_TIERS.LAST_UPDATE_LOGIN%TYPE:= FND_GLOBAL.LOGIN_ID) IS
145:
146: l_commission_amount_old number := 0;
147: BEGIN
140: X_RATE_SEQUENCE IN CN_RATE_TIERS.RATE_SEQUENCE%TYPE,
141: X_OBJECT_VERSION_NUMBER IN OUT NOCOPY CN_RATE_TIERS.OBJECT_VERSION_NUMBER%TYPE,
142: X_LAST_UPDATE_DATE IN CN_RATE_TIERS.LAST_UPDATE_DATE%TYPE := SYSDATE,
143: X_LAST_UPDATED_BY IN CN_RATE_TIERS.LAST_UPDATED_BY%TYPE := FND_GLOBAL.USER_ID,
144: X_LAST_UPDATE_LOGIN IN CN_RATE_TIERS.LAST_UPDATE_LOGIN%TYPE:= FND_GLOBAL.LOGIN_ID) IS
145:
146: l_commission_amount_old number := 0;
147: BEGIN
148: X_OBJECT_VERSION_NUMBER := X_OBJECT_VERSION_NUMBER + 1;
153: x_rate_schedule_id => x_rate_schedule_id,
154: x_status_code => 'INCOMPLETE',
155: x_event => 'CHANGE_TIERS');
156:
157: UPDATE cn_rate_tiers SET
158: rate_schedule_id = x_rate_schedule_id,
159: commission_amount = x_commission_amount,
160: RATE_SEQUENCE = X_RATE_SEQUENCE,
161: last_update_date = X_Last_Update_Date,
169: END IF;
170:
171: -- see if the commission amount changed
172: select commission_amount into l_commission_amount_old
173: from cn_rate_tiers
174: where rate_tier_id = x_rate_tier_id;
175:
176: IF x_commission_amount <> l_commission_amount_old THEN
177:
200: -- quota so there's no need to try and update the status of the plans.
201: -- If the tier_id is not null then we delete an individual tier.
202:
203: PROCEDURE Delete_Row
204: (X_RATE_SCHEDULE_ID IN CN_RATE_TIERS.RATE_SCHEDULE_ID%TYPE,
205: X_RATE_TIER_ID IN CN_RATE_TIERS.RATE_TIER_ID%TYPE) IS
206:
207: BEGIN
208:
201: -- If the tier_id is not null then we delete an individual tier.
202:
203: PROCEDURE Delete_Row
204: (X_RATE_SCHEDULE_ID IN CN_RATE_TIERS.RATE_SCHEDULE_ID%TYPE,
205: X_RATE_TIER_ID IN CN_RATE_TIERS.RATE_TIER_ID%TYPE) IS
206:
207: BEGIN
208:
209: IF X_Rate_Schedule_Id IS NOT NULL THEN
209: IF X_Rate_Schedule_Id IS NOT NULL THEN
210:
211: IF X_Rate_Tier_Id IS NULL THEN
212:
213: DELETE FROM cn_rate_tiers
214: WHERE rate_schedule_id = X_Rate_Schedule_Id;
215:
216: ELSE
217: cn_comp_plans_pkg.set_status(
220: ,x_rate_schedule_id => X_rate_schedule_id
221: ,x_status_code => 'INCOMPLETE'
222: ,x_event => 'CHANGE_TIERS');
223:
224: DELETE FROM cn_rate_tiers
225: WHERE rate_tier_id = x_rate_tier_id;
226:
227: IF (SQL%NOTFOUND) then
228: Raise NO_DATA_FOUND;
241:
242:
243: END Delete_Row;
244:
245: END CN_RATE_TIERS_PKG;