[Home] [Help]
PACKAGE BODY: APPS.CN_TRX_FACTORS_PKG
Source
1 PACKAGE BODY cn_trx_factors_pkg AS
2 /* $Header: cnplitfb.pls 120.1 2005/08/05 00:32:13 fmburu noship $ */
3
4 /*
5 Date Name Description
6 ----------------------------------------------------------------------------+
7 15-FEB-95 P Cook Unit tested
8 21-FEB-95 P Cook Default trx factors.event_factor to 100%
9 27-FEB-95 P Cook Of the Key Factors: invoice, payment and order only
10 invoice is created with a 100% default.
11 APR-2005 Refactor fmburu
12 */
13
14 g_temp_status_code VARCHAR2(10) := NULL;
15 g_program_type VARCHAR2(30) := NULL;
16
17 --
18 -- Purpose
19 -- Insert a factor for each trx type. Called on quota rule commit.
20 -- Notes
21 -- cn_trx_types will be removed before production. modify this statement
22 -- to run against cn_lookups for the trx type lookup
23
24 PROCEDURE INSERT_RECORD(x_quota_id NUMBER, x_quota_rule_id NUMBER, x_revenue_class_id NUMBER)
25 IS
26 x_user_id NUMBER := fnd_global.user_id;
27 l_org_id NUMBER := NULL;
28 BEGIN
29 SELECT ORG_ID
30 INTO l_org_id
31 FROM CN_QUOTAS_ALL
32 WHERE QUOTA_ID = x_quota_id ;
33
34 INSERT INTO cn_trx_factors
35 (trx_factor_id,
36 quota_id,
37 quota_rule_id,
38 revenue_class_id,
39 trx_type,
40 event_factor,
41 created_by,
42 creation_date,
43 org_id,
44 object_version_number)
45 SELECT cn_trx_factors_s.NEXTVAL,
46 x_quota_id,
47 x_quota_rule_id,
48 x_revenue_class_id,
49 lookup_code,
50 DECODE(lookup_code,
51 'ORD', 0,
52 'PMT', 0,
53 100),
54 x_user_id,
55 SYSDATE,
56 l_org_id,
57 1
58 FROM cn_lookups
59 WHERE lookup_type = 'TRX TYPES'
60 AND lookup_code NOT IN ('BALANCE UPGRADE', 'UPGRADE');
61
62 END INSERT_RECORD;
63
64 -- Name
65 --
66 -- Purpose
67 --
68 -- Notes
69 --
70 --
71 PROCEDURE UPDATE_RECORD(
72 x_trx_factor_id NUMBER,
73 x_event_factor NUMBER,
74 x_event_factor_old NUMBER,
75 x_object_version_number IN OUT NOCOPY NUMBER,
76 x_revenue_class_id NUMBER,
77 x_last_update_date DATE,
78 x_last_updated_by NUMBER,
79 x_last_update_login NUMBER,
80 x_quota_id NUMBER,
81 x_quota_rule_id NUMBER,
82 x_trx_type VARCHAR2,
83 x_trx_type_name VARCHAR2,
84 x_status_code VARCHAR2)
85 IS
86 l_ovn NUMBER := 1 ;
87 BEGIN
88
89 IF nvl(x_event_factor_old,-99) <> x_event_factor
90 THEN
91 cn_comp_plans_pkg.set_status(x_comp_plan_id => NULL,
92 x_quota_id => x_quota_id,
93 x_rate_schedule_id => NULL,
94 x_status_code => 'INCOMPLETE',
95 x_event => 'CHANGE_FACTORS');
96 END IF ;
97
98 SELECT NVL(OBJECT_VERSION_NUMBER,1)
99 INTO l_ovn
100 FROM CN_TRX_FACTORS
101 WHERE TRX_FACTOR_ID = x_trx_factor_id ;
102
103 l_ovn := l_ovn + 1 ;
104
105 UPDATE cn_trx_factors
106 SET trx_factor_id = x_trx_factor_id,
107 event_factor = x_event_factor,
108 last_update_date = x_last_update_date,
109 last_updated_by = x_last_updated_by,
110 last_update_login = x_last_update_login,
111 object_version_number = l_ovn
112 WHERE trx_factor_id = x_trx_factor_id;
113
114 x_object_version_number := l_ovn ;
115
116 END UPDATE_RECORD;
117
118 -- Name
119 --
120 -- Purpose
121 --
122 -- Notes
123 --
124 --
125 PROCEDURE LOCK_RECORD(
126 x_rowid VARCHAR2,
127 x_trx_factor_id NUMBER,
128 x_event_factor NUMBER,
129 x_revenue_class_id NUMBER,
130 x_quota_id NUMBER,
131 x_quota_rule_id NUMBER,
132 x_trx_type VARCHAR2)
133 IS
134 BEGIN
135 NULL;
136 END LOCK_RECORD;
137
138 -- Name
139 --
140 -- Purpose
141 --
142 -- Notes
143 --
144 --
145 PROCEDURE DELETE_RECORD(x_trx_factor_id NUMBER, x_quota_rule_id NUMBER, x_quota_id NUMBER)
146 IS
147 BEGIN
148 IF NVL(g_temp_status_code, 'COMPLETE') <> 'FAILED'
149 THEN
150 IF x_quota_rule_id IS NOT NULL
151 THEN
152 -- called when deleting a quota rule
153 DELETE FROM cn_trx_factors
154 WHERE quota_rule_id = x_quota_rule_id;
155 ELSE
156 -- called when deleting an entire quota
157 DELETE FROM cn_trx_factors
158 WHERE quota_id = x_quota_id;
159 END IF;
160 END IF;
161 END DELETE_RECORD;
162
163 /* -------------------------------------------------------------------------+
164 | Public Routine Bodies |
165 --------------------------------------------------------------------------*/
166
167 -- Name
168 --
169 -- Purpose
170 --
171 -- Notes
172 --
173 --
174 PROCEDURE begin_record(
175 x_operation VARCHAR2,
176 x_rowid IN OUT NOCOPY VARCHAR2,
177 x_trx_factor_id IN OUT NOCOPY NUMBER,
178 x_object_version_number IN OUT NOCOPY NUMBER,
179 x_event_factor NUMBER,
180 x_event_factor_old NUMBER,
181 x_revenue_class_id NUMBER,
182 x_last_update_date DATE,
183 x_last_updated_by NUMBER,
184 x_creation_date DATE,
185 x_created_by NUMBER,
186 x_last_update_login NUMBER,
187 x_quota_id NUMBER,
188 x_quota_rule_id NUMBER,
189 x_trx_type VARCHAR2,
190 x_trx_type_name VARCHAR2,
191 x_program_type VARCHAR2,
192 x_status_code VARCHAR2,
193 x_org_id NUMBER)
194 IS
195 BEGIN
196 g_program_type := x_program_type;
197 g_temp_status_code := 'COMPLETE';
198
199 IF x_operation = 'INSERT'
200 THEN
201 INSERT_RECORD(x_quota_id,
202 x_quota_rule_id,
203 x_revenue_class_id);
204 ELSIF x_operation = 'UPDATE'
205 THEN
206 UPDATE_RECORD(x_trx_factor_id,
207 x_event_factor,
208 x_event_factor_old,
209 x_object_version_number,
210 x_revenue_class_id,
211 x_last_update_date,
212 x_last_updated_by,
213 x_last_update_login,
214 x_quota_id,
215 x_quota_rule_id,
216 x_trx_type,
217 x_trx_type_name,
218 x_status_code);
219 ELSIF x_operation = 'LOCK'
220 THEN
221 LOCK_RECORD(x_rowid,
222 x_trx_factor_id,
223 x_event_factor,
224 x_revenue_class_id,
225 x_quota_id,
226 x_quota_rule_id,
227 x_trx_type);
228 ELSIF x_operation = 'DELETE'
229 THEN
230 DELETE_RECORD(x_trx_factor_id,
231 x_quota_rule_id,
232 x_quota_id);
233 END IF;
234 END begin_record;
235
236 -- Name
237 --
238 -- Purpose
239 --
240 -- Notes
241 --
242 --
243 PROCEDURE end_record(
244 x_rowid VARCHAR2,
245 x_trx_factor_id NUMBER,
246 x_event_factor NUMBER,
247 x_revenue_class_id NUMBER,
248 x_quota_id NUMBER,
249 x_quota_rule_id NUMBER,
250 x_trx_type_name VARCHAR2,
251 x_program_type VARCHAR2)
252 IS
253 BEGIN
254 -- Saves passing it around
255 g_program_type := x_program_type;
256 END end_record;
257 END cn_trx_factors_pkg;