[Home] [Help]
PACKAGE BODY: APPS.CN_PRD_QUOTA_PVT
Source
4
1 PACKAGE BODY cn_prd_quota_pvt AS
2 /*$Header: cnvpedqb.pls 120.3 2005/08/05 00:32:44 fmburu ship $*/
3 g_pkg_name CONSTANT VARCHAR2 (30) := 'CN_PRD_QUOTA_PVT';
5 -- Start of comments
6 -- API name : Update_PRD_QUOTA
7 -- Type : Private.
8 -- Function :
9 -- Pre-reqs : None.
10 -- Parameters :
11 -- IN : p_api_version IN NUMBER Required
12 -- p_init_msg_list IN VARCHAR2 Optional
13 -- Default = FND_API.G_FALSE
14 -- p_commit IN VARCHAR2 Optional
15 -- Default = FND_API.G_FALSE
16 -- p_validation_level IN NUMBER Optional
17 -- Default = FND_API.G_VALID_LEVEL_FULL
18 -- p_prd_quota IN prd_quota_rec_type
19 -- OUT : x_return_status OUT VARCHAR2(1)
20 -- x_msg_count OUT NUMBER
21 -- x_msg_data OUT VARCHAR2(2000)
22 -- Version : Current version 1.0
23 -- Notes : Note text
24 --
25 -- End of comments
26 PROCEDURE update_period_quota (
27 p_api_version IN NUMBER,
28 p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
29 p_commit IN VARCHAR2 := fnd_api.g_false,
30 p_validation_level IN NUMBER := fnd_api.g_valid_level_full,
31 p_prd_quota IN OUT NOCOPY prd_quota_rec_type,
32 x_return_status OUT NOCOPY VARCHAR2,
33 x_msg_count OUT NOCOPY NUMBER,
34 x_msg_data OUT NOCOPY VARCHAR2
35 )
36 IS
37 l_api_name CONSTANT VARCHAR2 (30) := 'update_period_quota';
38 l_api_version CONSTANT NUMBER := 1.0;
39
40 CURSOR l_old_prd_quota_cr
41 IS
42 SELECT *
43 FROM cn_period_quotas cpq
44 WHERE cpq.period_quota_id = p_prd_quota.period_quota_id;
45
46 l_old_prd_quota l_old_prd_quota_cr%ROWTYPE;
47 l_prd_quota prd_quota_rec_type;
48 l_temp_count NUMBER;
49 l_period_target NUMBER;
50 l_period_payment NUMBER;
51 l_performance_goal NUMBER;
52 p_period_quota_id cn_period_quotas.period_quota_id%TYPE;
53 p_period_id cn_period_quotas.period_id%TYPE;
54 p_quota_id cn_period_quotas.quota_id%TYPE;
55 p_itd_target NUMBER;
56 p_itd_payment NUMBER;
57 p_quarter_num NUMBER;
58 p_period_year cn_period_quotas.period_year%TYPE;
59 BEGIN
60 -- Standard Start of API savepoint
61 SAVEPOINT update_prd_quota;
62
63 -- Standard call to check for call compatibility.
64 IF NOT fnd_api.compatible_api_call (l_api_version, p_api_version, l_api_name, g_pkg_name)
65 THEN
66 RAISE fnd_api.g_exc_unexpected_error;
67 END IF;
68
69 -- Initialize message list if p_init_msg_list is set to TRUE.
70 IF fnd_api.to_boolean (p_init_msg_list)
71 THEN
72 fnd_msg_pub.initialize;
73 END IF;
74
75 -- Initialize API return status to success
76 x_return_status := fnd_api.g_ret_sts_success;
77
78 SELECT COUNT (*)
79 INTO l_temp_count
80 FROM cn_period_quotas
81 WHERE period_quota_id = p_prd_quota.period_quota_id
82 AND quota_id = p_prd_quota.quota_id
86 IF l_temp_count < 1
83 AND period_id = p_prd_quota.period_id
84 AND org_id = p_prd_quota.org_id;
85
87 THEN
88 IF fnd_msg_pub.check_msg_level (fnd_msg_pub.g_msg_lvl_error)
89 THEN
90 fnd_message.set_name ('CN', 'CN_INCONSISTENT_DATA');
91 fnd_message.set_token ('INPUT1', cn_api.get_lkup_meaning ('ORGANIZATION', 'PE_OBJECT_TYPE'));
92 fnd_message.set_token ('INPUT2', cn_api.get_lkup_meaning ('PE', 'INPUT_TOKEN'));
93 fnd_message.set_token ('INPUT3', cn_api.get_lkup_meaning ('PERIOD', 'PERIOD_TYPE_CODE'));
94 fnd_message.set_token ('INPUT4', cn_api.get_lkup_meaning (' ', 'INPUT_TOKEN'));
95 fnd_message.set_token ('INPUT5', ' ');
96 fnd_msg_pub.ADD;
97 END IF;
98
99 RAISE fnd_api.g_exc_error;
100 END IF;
101
102 -- API body
103 OPEN l_old_prd_quota_cr;
104
105 FETCH l_old_prd_quota_cr
106 INTO l_old_prd_quota;
107
108 CLOSE l_old_prd_quota_cr;
109
110 IF p_prd_quota.object_version_number IS NULL
111 THEN
112 IF fnd_msg_pub.check_msg_level (fnd_msg_pub.g_msg_lvl_error)
113 THEN
114 fnd_message.set_name ('CN', 'CN_INPUT_CANT_NULL');
115 fnd_message.set_token ('INPUT_NAME', cn_api.get_lkup_meaning ('ORGANIZATION', 'PE_OBJECT_TYPE'));
116 fnd_msg_pub.ADD;
117 RAISE fnd_api.g_exc_error;
118 END IF;
119 END IF;
120
121 -- 3. check object version number
122 IF l_old_prd_quota.object_version_number <> p_prd_quota.object_version_number
123 THEN
124 fnd_message.set_name ('CN', 'CN_RECORD_CHANGED');
125 fnd_msg_pub.ADD;
126 RAISE fnd_api.g_exc_error;
127 END IF;
128
129 p_prd_quota.last_update_date := SYSDATE;
130 p_prd_quota.last_update_login := fnd_global.login_id;
131 p_prd_quota.last_updated_by := fnd_global.user_id;
132 -- update the table
133 cn_period_quotas_pkg.UPDATE_RECORD (p_period_quota_id => p_prd_quota.period_quota_id,
134 p_quota_id => p_prd_quota.quota_id,
135 p_period_id => p_prd_quota.period_id,
136 p_period_target => p_prd_quota.period_target,
137 p_period_payment => p_prd_quota.period_payment,
138 p_performance_goal => p_prd_quota.performance_goal,
139 p_last_update_date => p_prd_quota.last_update_date,
140 p_last_update_login => p_prd_quota.last_update_login,
141 p_last_updated_by => p_prd_quota.last_updated_by,
142 x_itd_target => p_prd_quota.itd_target,
143 x_itd_payment_amount => p_prd_quota.itd_payment,
144 x_itd_performance_amount => p_prd_quota.performance_goal_itd,
145 x_object_version_number => p_prd_quota.object_version_number
146 );
147
148 -- sync balances
149 cn_period_quotas_pkg.sync_ITD_values (x_quota_id => p_prd_quota.quota_id);
150
151 -- End of API body.
152 -- Standard check of p_commit.
153 IF fnd_api.to_boolean (p_commit)
154 THEN
155 COMMIT WORK;
156 END IF;
157
158 -- Standard call to get message count and if count is 1, get message info.
159 fnd_msg_pub.count_and_get (p_count => x_msg_count, p_data => x_msg_data, p_encoded => fnd_api.g_false);
160 EXCEPTION
161 WHEN fnd_api.g_exc_error
162 THEN
163 ROLLBACK TO update_prd_quota;
164 x_return_status := fnd_api.g_ret_sts_error;
165 fnd_msg_pub.count_and_get (p_count => x_msg_count, p_data => x_msg_data, p_encoded => fnd_api.g_false);
166 WHEN fnd_api.g_exc_unexpected_error
167 THEN
168 ROLLBACK TO update_prd_quota;
169 x_return_status := fnd_api.g_ret_sts_unexp_error;
170 fnd_msg_pub.count_and_get (p_count => x_msg_count, p_data => x_msg_data, p_encoded => fnd_api.g_false);
171 WHEN OTHERS
172 THEN
173 ROLLBACK TO update_prd_quota;
174 x_return_status := fnd_api.g_ret_sts_unexp_error;
175
176 IF fnd_msg_pub.check_msg_level (fnd_msg_pub.g_msg_lvl_unexp_error)
177 THEN
178 fnd_msg_pub.add_exc_msg (g_pkg_name, l_api_name);
179 END IF;
180
181 fnd_msg_pub.count_and_get (p_count => x_msg_count, p_data => x_msg_data, p_encoded => fnd_api.g_false);
182 END update_period_quota;
183
184 END cn_prd_quota_pvt;