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