DBA Data[Home] [Help]

PACKAGE: APPS.CN_MULTI_RATE_SCHEDULES_PVT

Source


1 PACKAGE CN_MULTI_RATE_SCHEDULES_PVT AS
2 /*$Header: cnvrschs.pls 120.10 2007/03/27 15:12:10 kkanyara ship $*/
3 
4 TYPE   comm_rec_type IS RECORD (
5    p_rate_sequence             CN_RATE_TIERS.RATE_SEQUENCE%TYPE,
6    p_commission_amount         CN_RATE_TIERS.COMMISSION_AMOUNT%TYPE,
7    p_object_version_number     CN_RATE_TIERS.OBJECT_VERSION_NUMBER%TYPE,
8    p_org_id                    CN_RATE_TIERS.ORG_ID%TYPE
9 );
10 
11 
12 -- record type of the rate table dimensions
13 TYPE dim_rec_type IS RECORD
14   (rate_sch_dim_id       CN_RATE_SCH_DIMS.RATE_SCH_DIM_ID%TYPE := NULL,
15    rate_dimension_id     CN_RATE_SCH_DIMS.RATE_DIMENSION_ID%TYPE,
16    rate_schedule_id      CN_RATE_SCH_DIMS.RATE_SCHEDULE_ID%TYPE,
17    rate_dim_sequence     CN_RATE_SCH_DIMS.RATE_DIM_SEQUENCE%TYPE,
18    rate_dim_name         CN_RATE_DIMENSIONS.NAME%TYPE,
19    number_tier           CN_RATE_DIMENSIONS.NUMBER_TIER%TYPE,
20    dim_unit_code         CN_RATE_DIMENSIONS.DIM_UNIT_CODE%TYPE,
21    object_version_number CN_RATE_DIMENSIONS.OBJECT_VERSION_NUMBER%TYPE);
22 
23 -- record type of the rate table summary
24 TYPE rate_table_rec_type IS RECORD
25   (rate_schedule_id      CN_RATE_SCHEDULES.RATE_SCHEDULE_ID%TYPE,
26    name                  CN_RATE_SCHEDULES.NAME%TYPE,
27    type                  CN_RATE_SCHEDULES.COMMISSION_UNIT_CODE%TYPE,
28    number_dim            CN_RATE_SCHEDULES.NUMBER_DIM%TYPE,
29    object_version_number CN_RATE_SCHEDULES.OBJECT_VERSION_NUMBER%TYPE);
30 
31 -- record type of the plan element assignment summary
32 TYPE plan_elt_rec_type IS RECORD
33   (quota_id              CN_RT_QUOTA_ASGNS.QUOTA_ID%TYPE,
34    quota_name            CN_QUOTAS.NAME%TYPE,
35    incentive_type        CN_LOOKUPS.MEANING%TYPE,
36    calc_formula_id       CN_RT_QUOTA_ASGNS.CALC_FORMULA_ID%TYPE,
37    formula_name          CN_CALC_FORMULAS.NAME%TYPE,
38    start_date            CN_RT_QUOTA_ASGNS.START_DATE%TYPE,
39    end_date              CN_RT_QUOTA_ASGNS.END_DATE%TYPE);
40 
41 -- record type of the formula assignment summary
42 TYPE formula_rec_type IS RECORD
43   (calc_formula_id       CN_RT_FORMULA_ASGNS.CALC_FORMULA_ID%TYPE,
44    formula_name          CN_CALC_FORMULAS.NAME%TYPE,
45    formula_type          CN_LOOKUPS.MEANING%TYPE,
46    start_date            CN_RT_FORMULA_ASGNS.START_DATE%TYPE,
47    end_date              CN_RT_FORMULA_ASGNS.END_DATE%TYPE);
48 
49 TYPE rate_table_tbl_type IS TABLE OF rate_table_rec_type INDEX BY BINARY_INTEGER;
50 TYPE dims_tbl_type       IS TABLE OF dim_rec_type        INDEX BY BINARY_INTEGER;
51 TYPE parents_tbl_type    IS TABLE OF VARCHAR2(30)        INDEX BY BINARY_INTEGER;
52 TYPE num_tbl_type        IS TABLE OF NUMBER              INDEX BY BINARY_INTEGER;
53 TYPE plan_elt_tbl_type   IS TABLE OF plan_elt_rec_type   INDEX BY BINARY_INTEGER;
54 TYPE formula_tbl_type    IS TABLE OF formula_rec_type    INDEX BY BINARY_INTEGER;
55 TYPE comm_tbl_type       IS TABLE OF comm_rec_type       INDEX BY BINARY_INTEGER;
56 
57 G_MISS_DIMS_TBL dims_tbl_type;
58 
59 --    Notes           : Create rate schedule and schedule dimensions
60 --                      1) Validate schedule name (should be unique)
61 --                      2) Validate commission_unit_code (valid values are AMOUNT, PERCENT)
62 --                      3) Validate number_dim which should equal the number of dimensions in
63 --                         p_dims_tbl if it is not empty
64 PROCEDURE Create_Schedule
65   (p_api_version                IN      NUMBER                          ,
66    p_init_msg_list              IN      VARCHAR2 := FND_API.G_FALSE     ,
67    p_commit                     IN      VARCHAR2 := FND_API.G_FALSE     ,
68    p_validation_level           IN      NUMBER   := FND_API.G_VALID_LEVEL_FULL,
69    p_name                       IN      CN_RATE_SCHEDULES.NAME%TYPE     ,
70    p_commission_unit_code       IN      CN_RATE_SCHEDULES.COMMISSION_UNIT_CODE%TYPE,
71    p_number_dim                 IN      CN_RATE_SCHEDULES.NUMBER_DIM%TYPE,
72    p_dims_tbl                   IN      dims_tbl_type := g_miss_dims_tbl,
73    --R12 MOAC Changes--Start
74    p_org_id                     IN      CN_RATE_SCHEDULES.ORG_ID%TYPE,   --new
75    x_rate_schedule_id           IN OUT NOCOPY     CN_RATE_SCHEDULES.RATE_SCHEDULE_ID%TYPE, --changed
76    --R12 MOAC Changes--End
77    x_return_status              OUT NOCOPY     VARCHAR2                        ,
78    x_msg_count                  OUT NOCOPY     NUMBER                          ,
79    x_msg_data                   OUT NOCOPY     VARCHAR2                        );
80 
81 --    Notes           : Update rate schedule and schedule dimensions
82 --                      1) Validate schedule name (should be unique)
83 --                      2) Validate commission_unit_code (valid values are AMOUNT, PERCENT)
84 --                      3) Validate number_dim which should equal the number of dimensions in
85 --                         p_dims_tbl if it is not empty
86 --                      4) Insert new dimensions and delete obsolete dimensions
87 --                      5) Update rate tiers also
88 --                      6) If this rate table is used, then update of dimensions and
89 --                         commission_unit_code is not allowed
90 PROCEDURE Update_Schedule
91   (p_api_version                IN      NUMBER                          ,
92    p_init_msg_list              IN      VARCHAR2 := FND_API.G_FALSE     ,
93    p_commit                     IN      VARCHAR2 := FND_API.G_FALSE     ,
94    p_validation_level           IN      NUMBER   := FND_API.G_VALID_LEVEL_FULL,
95    p_rate_schedule_id           IN      CN_RATE_SCHEDULES.RATE_SCHEDULE_ID%TYPE,
96    p_name                       IN      CN_RATE_SCHEDULES.NAME%TYPE,
97    p_commission_unit_code       IN      CN_RATE_SCHEDULES.COMMISSION_UNIT_CODE%TYPE,
98    p_number_dim                 IN      CN_RATE_SCHEDULES.NUMBER_DIM%TYPE,
99    --R12 MOAC Changes--Start
100    p_org_id                     IN      CN_RATE_SCHEDULES.ORG_ID%TYPE,   --new
101    p_object_version_number      IN OUT NOCOPY CN_RATE_SCHEDULES.OBJECT_VERSION_NUMBER%TYPE, -- Changed
102    --R12 MOAC Changes--End
103    p_dims_tbl                   IN      dims_tbl_type := g_miss_dims_tbl,
104    x_return_status              OUT NOCOPY     VARCHAR2                        ,
105    x_msg_count                  OUT NOCOPY     NUMBER                          ,
106    x_msg_data                   OUT NOCOPY     VARCHAR2                        );
107 
108 --    Notes           : Delete rate schedule
109 --                      1) If it is used, it can not be deleted
110 --                      2) If it can be deleted, delete corresponding records in
111 --                         cn_rate_sch_dims and cn_rate_tiers
112 PROCEDURE Delete_Schedule
113   (p_api_version                IN      NUMBER                          ,
114    p_init_msg_list              IN      VARCHAR2 := FND_API.G_FALSE     ,
115    p_commit                     IN      VARCHAR2 := FND_API.G_FALSE     ,
116    p_validation_level           IN      NUMBER   := FND_API.G_VALID_LEVEL_FULL,
117    p_rate_schedule_id           IN      CN_RATE_SCHEDULES.RATE_SCHEDULE_ID%TYPE,
118    --R12 MOAC Changes--Start
119    p_object_version_number      IN      CN_RATE_SCHEDULES.OBJECT_VERSION_NUMBER%TYPE, -- new
120    --R12 MOAC Changes--End
121    x_return_status              OUT NOCOPY     VARCHAR2                        ,
122    x_msg_count                  OUT NOCOPY     NUMBER                          ,
123    x_msg_data                   OUT NOCOPY     VARCHAR2                        );
124 
125 --      Notes           : Delete schedule dimension
126 --                        1) If the rate schedule is used, its dimensions can not be deleted
127 --                        2) delete the corresponding records in cn_rate_sch_dims and cn_rate_tiers
128 --                        3) update cn_rate_schedules.number_dim if not called from form
129 --                        4) rate_dim_sequence is not adjusted here, users should take
130 --                           care of the adjustment by calling update_dimension_assign
131 PROCEDURE delete_dimension_assign
132   (p_api_version                IN      NUMBER                          ,
133    p_init_msg_list              IN      VARCHAR2 := FND_API.G_FALSE     ,
134    p_commit                     IN      VARCHAR2 := FND_API.G_FALSE     ,
135    p_validation_level           IN      NUMBER   := FND_API.G_VALID_LEVEL_FULL,
136    p_rate_sch_dim_id            IN      CN_RATE_SCH_DIMS.RATE_SCH_DIM_ID%TYPE,
137    p_rate_schedule_id           IN      CN_RATE_SCH_DIMS.RATE_SCHEDULE_ID%TYPE,
138    --R12 MOAC Changes--Start
139    p_object_version_number      IN      CN_RATE_SCHEDULES.OBJECT_VERSION_NUMBER%TYPE, -- new
140    --R12 MOAC Changes--End
141    x_return_status              OUT NOCOPY     VARCHAR2                        ,
142    x_msg_count                  OUT NOCOPY     NUMBER                          ,
143    x_msg_data                   OUT NOCOPY     VARCHAR2                        );
144 
145 --      Notes           : Update dimension assignment
146 --                        1) If the rate table is used, then update is not allowed
147 --                        2) If it can be updated, update records in cn_rate_sch_dims
148 --                           and cn_rate_tiers
149 PROCEDURE update_dimension_assign
150   (p_api_version                IN      NUMBER                          ,
151    p_init_msg_list              IN      VARCHAR2 := FND_API.G_FALSE     ,
152    p_commit                     IN      VARCHAR2 := FND_API.G_FALSE     ,
153    p_validation_level           IN      NUMBER   := FND_API.G_VALID_LEVEL_FULL,
154    p_rate_sch_dim_id            IN      CN_RATE_SCH_DIMS.RATE_SCH_DIM_ID%TYPE,
155    p_rate_schedule_id           IN      CN_RATE_SCH_DIMS.RATE_SCHEDULE_ID%TYPE,
156    p_rate_dimension_id          IN      CN_RATE_SCH_DIMS.RATE_DIMENSION_ID%TYPE := cn_api.g_miss_num,
157    p_rate_dim_sequence          IN      CN_RATE_SCH_DIMS.RATE_DIM_SEQUENCE%TYPE := cn_api.g_miss_num,
158    --R12 MOAC Changes--Start
159    p_org_id                     IN      CN_RATE_SCHEDULES.ORG_ID%TYPE,   --new
160    p_object_version_number      IN OUT NOCOPY CN_RATE_SCHEDULES.OBJECT_VERSION_NUMBER%TYPE, --changed
161    --R12 MOAC Changes--End
162    x_return_status              OUT NOCOPY     VARCHAR2                        ,
163    x_msg_count                  OUT NOCOPY     NUMBER                          ,
164    x_msg_data                   OUT NOCOPY     VARCHAR2                        );
165 
166 --      Notes           : Create dimension assignment
167 --                        1) If the rate table is used, new assignment can not be created
168 --                        2) if the rate table is not used, update and cn_rate_tiers;
169 --                           and adjust cn_rate_tiers.rate_sequence
170 --                        3) update cn_rate_schedules.number_dim
171 --                        4) rate_dim_sequence is not adjusted here, users should do it by
172 --                           calling update_dimension_assign
173 PROCEDURE create_dimension_assign
174   (p_api_version                IN      NUMBER                          ,
175    p_init_msg_list              IN      VARCHAR2 := FND_API.G_FALSE     ,
176    p_commit                     IN      VARCHAR2 := FND_API.G_FALSE     ,
177    p_validation_level           IN      NUMBER   := FND_API.G_VALID_LEVEL_FULL,
178    p_rate_schedule_id           IN      CN_RATE_SCH_DIMS.RATE_SCHEDULE_ID%TYPE,
179    p_rate_dimension_id          IN      CN_RATE_SCH_DIMS.RATE_DIMENSION_ID%TYPE,
180    p_rate_dim_sequence          IN      CN_RATE_SCH_DIMS.RATE_DIM_SEQUENCE%TYPE,
181    --R12 MOAC Changes--Start
182    p_org_id                     IN      CN_RATE_SCHEDULES.ORG_ID%TYPE,   --new
183    x_rate_sch_dim_id            IN OUT NOCOPY     CN_RATE_SCH_DIMS.RATE_SCH_DIM_ID%TYPE, --changed
184    --R12 MOAC Changes--End
185    x_return_status              OUT NOCOPY     VARCHAR2                        ,
186    x_msg_count                  OUT NOCOPY     NUMBER                          ,
187    x_msg_data                   OUT NOCOPY     VARCHAR2                        );
188 
189 -- procedure to create rate tiers upon insert of rate dimension assignment or dimension tiers.
190 PROCEDURE create_rate_tiers
191   (p_rate_schedule_id                   CN_RATE_TIERS.RATE_SCHEDULE_ID%TYPE,
192    p_rate_dim_sequence                  CN_RATE_SCH_DIMS.RATE_DIM_SEQUENCE%TYPE := NULL,
193    p_tier_sequence                      CN_RATE_DIM_TIERS.TIER_SEQUENCE%TYPE    := NULL,
194    p_num_tiers                          NUMBER := 1,
195    --R12 MOAC Changes--Start
196    p_org_id                         IN  CN_RATE_TIERS.ORG_ID%TYPE);
197    --R12 MOAC Changes--End
198 
199 -- procedure to delete rate tiers upon delete of rate dimension assignment or dimension tiers.
200 PROCEDURE delete_rate_tiers
201   (p_rate_schedule_id                   CN_RATE_TIERS.RATE_SCHEDULE_ID%TYPE,
202    p_rate_dim_sequence                  CN_RATE_SCH_DIMS.RATE_DIM_SEQUENCE%TYPE,
203    p_tier_sequence                      CN_RATE_DIM_TIERS.TIER_SEQUENCE%TYPE := NULL,
204    p_num_tiers                          NUMBER := 1);
205 
206 -- procedure to update a rate
207 PROCEDURE update_rate
208   (p_rate_schedule_id           IN      CN_RATE_TIERS.RATE_SCHEDULE_ID%TYPE,
209    p_rate_sequence              IN      CN_RATE_TIERS.RATE_SEQUENCE%TYPE,
210    p_commission_amount          IN      CN_RATE_TIERS.COMMISSION_AMOUNT%TYPE,
211    --R12 MOAC Changes--Start
212    p_object_version_number      IN OUT NOCOPY CN_RATE_TIERS.OBJECT_VERSION_NUMBER%TYPE, --changed
213    p_org_id                     IN      CN_RATE_TIERS.ORG_ID%TYPE --new
214    --R12 MOAC Changes--End
215    );
216 
217 PROCEDURE update_srp_rate
218   (p_srp_quota_assign_id        IN      CN_SRP_QUOTA_ASSIGNS.SRP_QUOTA_ASSIGN_ID%TYPE,
219    p_rt_quota_asgn_id           IN      CN_SRP_RATE_ASSIGNS.RT_QUOTA_ASGN_ID%TYPE,
220    p_rate_sequence              IN      CN_RATE_TIERS.RATE_SEQUENCE%TYPE,
221    p_commission_amount          IN      CN_RATE_TIERS.COMMISSION_AMOUNT%TYPE,
222    p_object_version_number      IN OUT NOCOPY CN_RATE_TIERS.OBJECT_VERSION_NUMBER%TYPE, -- changed
223    --R12 MOAC Changes--Start
224    p_org_id                             CN_RATE_TIERS.ORG_ID%TYPE, --new
225    --R12 MOAC Changes--End
226          x_return_status      OUT NOCOPY      VARCHAR2,
227       x_loading_status     OUT NOCOPY      VARCHAR2,
228       x_msg_count          OUT NOCOPY      NUMBER,
229       x_msg_data           OUT NOCOPY      VARCHAR2
230 
231    );
232 
233 -- utility function to get the rate_tier_id and commission amount when given the tier combination
234 PROCEDURE get_rate_tier_info
235   (p_rate_schedule_id           IN      CN_RATE_TIERS.RATE_SCHEDULE_ID%TYPE,
236    p_rate_dim_tier_id_tbl       IN      num_tbl_type                     ,
237    x_rate_tier_id               OUT NOCOPY     CN_RATE_TIERS.RATE_TIER_ID%TYPE  ,
238    x_rate_sequence              OUT NOCOPY     CN_RATE_TIERS.RATE_SEQUENCE%TYPE ,
239    x_commission_amount          OUT NOCOPY     CN_RATE_TIERS.COMMISSION_AMOUNT%TYPE,
240    x_object_version_number      OUT NOCOPY     CN_RATE_TIERS.OBJECT_VERSION_NUMBER%TYPE);
241 
242 PROCEDURE  update_comm_rate
243           (p_rate_schedule_id   IN  CN_RATE_TIERS.RATE_SCHEDULE_ID%TYPE,
244            x_result_tbl         IN  comm_tbl_type,
245            --R12 MOAC Changes--Start
246            p_org_id             IN  CN_RATE_TIERS.ORG_ID%TYPE --new
247            --R12 MOAC Changes--End
248            );
249 
250 PROCEDURE duplicate_rate_Schedule
251  (p_api_version                IN      NUMBER                          ,
252   p_init_msg_list              IN      VARCHAR2 := FND_API.G_FALSE,
253   p_commit                     IN      VARCHAR2 := FND_API.G_FALSE ,
254   p_validation_level           IN      NUMBER   := FND_API.G_VALID_LEVEL_FULL,
255   p_name                       IN  OUT NOCOPY  CN_RATE_SCHEDULES.NAME%TYPE ,
256   p_org_id                     IN     CN_RATE_SCHEDULES.ORG_ID%TYPE,   --new
257      --R12 MOAC Changes--End
258   p_rate_schedule_id           IN  OUT  NOCOPY CN_RATE_SCHEDULES.RATE_SCHEDULE_ID%TYPE, --changed
259   p_number_dim                 IN      CN_RATE_SCHEDULES.NUMBER_DIM%TYPE,
260   p_commission_unit_code       IN      CN_RATE_SCHEDULES.COMMISSION_UNIT_CODE%TYPE,
261   x_return_status              OUT NOCOPY     VARCHAR2,
262   x_msg_count                  OUT NOCOPY     NUMBER,
263   x_msg_data                   OUT NOCOPY     VARCHAR2
264 
265   );
266 
267 
268 FUNCTION  get_sequence(x_schedule_id CN_RATE_TIERS.RATE_SCHEDULE_ID%TYPE,sbuf varchar2)
269   RETURN Number;
270 END CN_MULTI_RATE_SCHEDULES_PVT;