DBA Data[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;