1 package oks_bill_util_pub AUTHID CURRENT_USER as
2 /* $Header: OKSBUTLS.pls 120.3.12020000.2 2012/12/25 14:12:34 spingali ship $ */
3
4
5 G_FND_APP CONSTANT VARCHAR2(200) := OKC_API.G_FND_APP;
6 G_FORM_UNABLE_TO_RESERVE_REC CONSTANT VARCHAR2(200) := OKC_API.G_FORM_UNABLE_TO_RESERVE_REC;
7 G_FORM_RECORD_DELETED CONSTANT VARCHAR2(200) := OKC_API.G_FORM_RECORD_DELETED;
8 G_FORM_RECORD_CHANGED CONSTANT VARCHAR2(200) := OKC_API.G_FORM_RECORD_CHANGED;
9 G_RECORD_LOGICALLY_DELETED CONSTANT VARCHAR2(200) := OKC_API.G_RECORD_LOGICALLY_DELETED;
10 G_REQUIRED_VALUE CONSTANT VARCHAR2(200) := OKC_API.G_REQUIRED_VALUE;
11 G_INVALID_VALUE CONSTANT VARCHAR2(200) := OKC_API.G_INVALID_VALUE;
12 G_COL_NAME_TOKEN CONSTANT VARCHAR2(200) := OKC_API.G_COL_NAME_TOKEN;
13 G_PARENT_TABLE_TOKEN CONSTANT VARCHAR2(200) := OKC_API.G_PARENT_TABLE_TOKEN;
14 G_CHILD_TABLE_TOKEN CONSTANT VARCHAR2(200) := OKC_API.G_CHILD_TABLE_TOKEN;
15 G_UNEXPECTED_ERROR CONSTANT VARCHAR2(200) := 'OKC_CONTRACTS_UNEXP_ERROR';
16 G_SQLERRM_TOKEN CONSTANT VARCHAR2(200) := 'SQLerrm';
17 G_SQLCODE_TOKEN CONSTANT VARCHAR2(200) := 'SQLcode';
18 G_UPPERCASE_REQUIRED CONSTANT VARCHAR2(200) := 'OKC_UPPERCASE_REQUIRED';
19
20 ------------------------------------------------------------------------------------
21
22 -- Constants used for Message Logging
23 G_LEVEL_UNEXPECTED CONSTANT NUMBER := FND_LOG.LEVEL_UNEXPECTED;
24 G_LEVEL_ERROR CONSTANT NUMBER := FND_LOG.LEVEL_ERROR;
25 G_LEVEL_EXCEPTION CONSTANT NUMBER := FND_LOG.LEVEL_EXCEPTION;
26 G_LEVEL_EVENT CONSTANT NUMBER := FND_LOG.LEVEL_EVENT;
27 G_LEVEL_PROCEDURE CONSTANT NUMBER := FND_LOG.LEVEL_PROCEDURE;
28 G_LEVEL_STATEMENT CONSTANT NUMBER := FND_LOG.LEVEL_STATEMENT;
29 G_LEVEL_CURRENT CONSTANT NUMBER := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
30 G_MODULE_CURRENT CONSTANT VARCHAR2(255) := 'oks.plsql.oks_bill_sch';
31 --------------------------------------------------------
32 -- GLOBAL EXCEPTION
33 ---------------------------------------------------------------------------
34 G_EXCEPTION_HALT_VALIDATION EXCEPTION;
35
36 -- GLOBAL VARIABLES
37 ---------------------------------------------------------------------------
38 G_PKG_NAME CONSTANT VARCHAR2(200) := 'OKS_BILL_UTIL_PUB';
39 G_APP_NAME CONSTANT VARCHAR2(3) := 'OKS';
40 ---------------------------------------------------------------------------
41
42
43
44 /***bill rec type for usage billing***/
45
46 l_line_rec OKS_QP_PKG.Input_details ;
47 l_price_rec OKS_QP_PKG.Price_Details ;
48 l_modifier_details qp_preq_grp.line_detail_tbl_type;
49 l_price_break_details oks_qp_pkg.g_price_break_tbl_type;
50
51
52
53 TYPE Bill_Rec_Type IS RECORD (
54 Counter_id NUMBER,
55 Reading_date DATE,
56 Meter_reading NUMBER,
57 Last_Meter_reading NUMBER,
58 Net_reading NUMBER,
59 Level_reading NUMBER,
60 Bill_amount NUMBER);
61
62 Type Bill_tbl_type is TABLE of Bill_Rec_Type index by binary_integer;
63
64
65 Type sll_prorated_rec_type IS RECORD
66 ( sll_seq_num Number,
67 sll_start_date DATE,
68 sll_end_date DATE,
69 sll_tuom VARCHAR2(40),
70 sll_amount Number
71 );
72
73 Type bill_det_inp_rec IS RECORD
74 (line_start_date DATE,
75 line_end_date DATE,
76 cycle_start_date DATE,
77 tuom_per_period Number,
78 tuom Varchar2(3),
79 total_amount Number,
80 invoice_offset_days Number,
81 interface_offset_days Number,
82 bill_type VARCHAR2(1), ----values may be E,T,P
83 uom_per_period Number --mchoudha added this parameter
84 );
85
86 Type bill_sch_rec IS RECORD
87 (
88 next_cycle_date DATE,
89 cycle_amount Number,
90 date_transaction DATE,
91 date_revenue_rule_start DATE,
92 date_recievable_gl DATE,
93 date_due DATE,
94 date_print DATE,
95 date_to_interface DATE,
96 date_completed DATE
97 );
98
99 Type next_level_element_type IS RECORD
100 (
101 id NUMBER,
102 sequence_number NUMBER,
103 bill_from_date DATE,
104 bill_to_date DATE,
105 bill_amount Number,
106 date_to_interface DATE,
107 date_receivable_gl DATE,
108 date_revenue_rule_start DATE,
109 date_transaction DATE,
110 date_due DATE,
111 date_print DATE,
112 date_completed DATE,
113 rule_id NUMBER
114 );
115
116 Type level_element_tab is Table of next_level_element_type index by
117 binary_integer;
118
119 Type sll_prorated_tab_type is Table of sll_prorated_rec_type index by binary_integer;
120
121 PROCEDURE get_seeded_timeunit ( p_timeunit in varchar2,
122 x_return_status out NOCOPY varchar2,
123 x_quantity out NOCOPY number,
124 x_timeunit out NOCOPY varchar2) ;
125
126 PROCEDURE Get_sll_amount ( p_api_version IN NUMBER,
127 p_total_amount IN NUMBER,
128 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
129 x_return_status OUT NOCOPY VARCHAR2,
130 x_msg_count OUT NOCOPY NUMBER,
131 x_msg_data OUT NOCOPY VARCHAR2,
132 p_currency_code IN VARCHAR2,
133 p_sll_prorated_tab IN OUT NOCOPY sll_prorated_tab_type );
134
135
136 PROCEDURE pre_del_level_elements(
137 p_api_version IN NUMBER,
138 p_terminated_date IN DATE,
139 p_id IN NUMBER ,
140 p_flag IN NUMBER,
141 x_return_status OUT NOCOPY VARCHAR2
142 );
143
144
145 PROCEDURE delete_level_elements(
146 p_api_version IN NUMBER,
147 p_terminated_date IN DATE,
148 p_chr_id IN NUMBER,
149 p_cle_id IN NUMBER ,
150 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
151 x_return_status OUT NOCOPY VARCHAR2,
152 x_msg_count OUT NOCOPY NUMBER,
153 x_msg_data OUT NOCOPY VARCHAR2
154 );
155
156
157 Procedure Get_prorate_amount
158 ( p_api_version IN NUMBER,
159 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
160 x_return_status OUT NOCOPY VARCHAR2,
161 x_msg_count OUT NOCOPY NUMBER,
162 x_msg_data OUT NOCOPY VARCHAR2,
163 p_invoicing_rule_id IN Number,
164 p_bill_sch_detail_rec IN bill_det_inp_rec,
165 x_bill_sch_detail_rec OUT NOCOPY bill_sch_rec
166 );
167
168
169 -------------------------------------------------------------------------
170 -- Begin partial period computation logic
171 -- Developer Mani Choudhary
172 -- Date 09-MAY-2005
173 -- 1) Added two new parameters P_period_start,P_period_type in procedure
174 -- Get_next_bill_sch
175 -- 2) Added function get_enddate_cal
176 -- 3) Added function get_periods
177 -------------------------------------------------------------------------
178 Procedure Get_next_bill_sch
179 ( p_api_version IN NUMBER,
180 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
181 x_return_status OUT NOCOPY VARCHAR2,
182 x_msg_count OUT NOCOPY NUMBER,
183 x_msg_data OUT NOCOPY VARCHAR2,
184 p_invoicing_rule_id IN Number,
185 p_bill_sch_detail_rec IN bill_det_inp_rec,
186 x_bill_sch_detail_rec OUT NOCOPY bill_sch_rec,
187 P_period_start IN VARCHAR2,
188 P_period_type IN VARCHAR2,
189 -- Start - Added by PMALLARA - Bug #3992530
190 Strm_Start_Date IN DATE
191 -- End - Added by PMALLARA - Bug #3992530
192 );
193
194 --This new function will determine the end date of the
195 --SLL in case of "Calendar month" period start.
196 FUNCTION get_enddate_cal(p_start_date IN DATE,
197 p_uom_code IN VARCHAR2,
198 p_duration IN NUMBER,
199 p_level_periods IN NUMBER
200 )
201 RETURN DATE;
202
203 --This new function will determine numbr of periods of SLL given
204 --the start date, end date,uom_per_period and uom of the SLL.
205 FUNCTION get_periods (p_start_date IN DATE,
206 p_end_date IN DATE,
207 p_uom_code IN VARCHAR2,
208 p_period_start IN VARCHAR2
209 )
210 RETURN NUMBER;
211
212 -------------------------------------------------------------------------
213 -- End partial period computation logic
214 -- Date 09-MAY-2005
215 -------------------------------------------------------------------------
216
217 /*** Takes input cp_id and p_Date, returns level_element table ****/
218 Procedure Get_next_level_element
219 ( p_api_version IN NUMBER,
220 p_id IN NUMBER,
221 p_covd_flag IN Varchar2,
222 p_date IN DATE,
223 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
224 x_return_status OUT NOCOPY VARCHAR2,
225 x_msg_count OUT NOCOPY NUMBER,
226 x_msg_data OUT NOCOPY VARCHAR2,
227 x_next_level_element OUT NOCOPY level_element_tab
228 );
229
230 /** Function will return total invoices billed, for given rule id ****/
231
232 Function Get_total_inv_billed (p_api_version IN Varchar2,
233 p_rule_id IN Number,
234 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
235 x_return_status OUT NOCOPY VARCHAR2,
236 x_msg_count OUT NOCOPY NUMBER,
237 x_msg_data OUT NOCOPY VARCHAR2)
238 return Number;
239
240
241 /** Procedure to delete rows from Oks_level_elements, for a given rule_id **/
242
243 Procedure Delete_level_elements( p_api_version IN NUMBER,
244 p_rule_id IN Number,
245 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
246 x_msg_count OUT NOCOPY NUMBER,
247 x_msg_data OUT NOCOPY VARCHAR2,
248 x_return_status OUT NOCOPY Varchar2 );
249
250 PROCEDURE delete_rule(
251 p_api_version IN NUMBER,
252 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
253 p_chr_id IN NUMBER,
254 x_return_status OUT NOCOPY VARCHAR2,
255 x_msg_count OUT NOCOPY NUMBER,
256 x_msg_data OUT NOCOPY VARCHAR2);
257
258 PROCEDURE delete_slh_rule(
259 p_api_version IN NUMBER,
260 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
261 p_cle_id IN NUMBER,
262 x_return_status OUT NOCOPY VARCHAR2,
263 x_msg_count OUT NOCOPY NUMBER,
264 x_msg_data OUT NOCOPY VARCHAR2);
265
266
267 /*Procedure Create_covlv_billsch
268 (
269 p_cp_id NUMBER DEFAULT NULL,
270 p_cle_id NUMBER,
271 p_hdr_id NUMBER,
272 p_srv_id NUMBER,
273 p_organization_id NUMBER,
274 x_return_status out NOCOPY VARCHAR2,
275 x_msg_data out NOCOPY VARCHAR2,
276 x_msg_count out NOCOPY NUMBER
277 );*/
278
279 /** Procedure for copying/splitting service lines **/
280 TYPE copy_source_rec is RECORD
281 (cle_id NUMBER,
282 item_id VARCHAR2(40),
283 amount NUMBER);
284 TYPE copy_target_rec is RECORD
285 (cle_id NUMBER,
286 item_id VARCHAR2(40),
287 amount NUMBER,
288 percentage NUMBER);
289 TYPE copy_target_tbl is table of copy_target_rec INDEX BY BINARY_INTEGER;
290 PROCEDURE copy_service( p_api_version IN NUMBER,
291 p_init_msg_list IN VARCHAR2,
292 p_source_rec IN copy_source_rec,
293 p_target_tbl IN OUT NOCOPY copy_target_tbl,
294 x_return_status OUT NOCOPY VARCHAR2,
295 x_msg_count OUT NOCOPY NUMBER,
296 x_msg_data OUT NOCOPY VARCHAR2
297 );
298
299 /**Procedure for usage billing*/
300
301
302 Procedure Calculate_Bill_Amount (
303 p_api_version IN NUMBER,
304 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
305 p_bill_tbl IN OUT NOCOPY Bill_tbl_type,
306 x_return_status OUT NOCOPY VARCHAR2,
307 x_msg_count OUT NOCOPY NUMBER,
308 x_msg_data OUT NOCOPY VARCHAR2);
309
310
311 Function Get_Credit_Amount (p_api_version IN Varchar2,
312 p_cp_line_id IN Number,
313 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
314 x_return_status OUT NOCOPY VARCHAR2,
315 x_msg_count OUT NOCOPY NUMBER,
316 x_msg_data OUT NOCOPY VARCHAR2)
317 RETURN NUMBER;
318
319 Function Get_frequency
320 (p_tce_code IN VARCHAR2,
321 p_fr_start_date IN DATE,
322 p_fr_end_date IN DATE,
323 p_uom_quantity IN Number,
324 x_return_status OUT NOCOPY VARCHAR2
325 ) Return NUMBER ;
326
327
328 /* Procedure to create billing report */
329
330 Procedure Create_Report (
331 p_billrep_table IN OKS_BILL_REC_PUB.bill_report_tbl_type
332 ,p_billrep_err_tbl IN OKS_BILL_REC_PUB.billrep_error_tbl_type
333 ,p_line_from IN NUMBER
334 ,p_line_to IN NUMBER
335 ,x_return_status OUT NOCOPY Varchar2
336 ) ;
337
338
339 /* Procedure to update the OKS_LEVEL_ELEMENST */
340 PROCEDURE UPDATE_OKS_LEVEL_ELEMENTS
341 ( p_line_id IN number ,
342 x_return_status OUT NOCOPY varchar2 ) ;
343
344
345
346 --This is to insert BCL for contracts orginated from Order management.
347 PROCEDURE CREATE_BCL_FOR_OM ( P_LINE_ID IN NUMBER ,
348 X_RETURN_STATUS OUT NOCOPY VARCHAR2 );
349
350 --This is to insert BSL for contracts orginated from Order management.
351 PROCEDURE CREATE_BSL_FOR_OM ( P_LINE_ID IN NUMBER ,
352 P_BCL_ID IN NUMBER ,
353 X_RETURN_STATUS OUT NOCOPY VARCHAR2 ,
354 X_SUB_LINES_INSERTED OUT NOCOPY NUMBER ,
355 X_TOTAL_AMOUNT OUT NOCOPY NUMBER ) ;
356
357 /*Added for ER 16039680 */
358 --This is to insert BCL for Contracts orginated from Order management with flexible Billing
359 PROCEDURE CREATE_BCL_FOR_OM_OKS_BILLING( P_LINE_ID IN NUMBER ,
360 P_DATE_TO IN DATE,
361 X_RETURN_STATUS OUT NOCOPY VARCHAR2 );
362 --This is to insert BSL for Contracts orginated from Order management with flexible Billing
363 PROCEDURE CREATE_BSL_FOR_OM_OKS_BILLING( P_LINE_ID IN NUMBER ,
364 P_BCL_ID IN NUMBER ,
365 P_DATE_FROM IN DATE,
366 P_DATE_TO IN DATE,
367 X_RETURN_STATUS OUT NOCOPY VARCHAR2 ,
368 X_SUB_LINES_INSERTED OUT NOCOPY NUMBER ,
369 X_TOTAL_AMOUNT OUT NOCOPY NUMBER ) ;
370 /*Added for ER 16039680 */
371
372
373 ---This will give the billed qty for subcription line
374
375 Function Get_Billed_Qty (p_line_id IN Number,
376 x_return_status OUT NOCOPY VARCHAR2) return Number;
377
378 Function Get_Billed_Upto ( p_id IN Number,
379 p_level IN Varchar2 -- 'H'eader, 'T'opline, 'S'ubline
380 ) Return Date;
381
382 FUNCTION Is_Sc_Allowed (p_org_id IN Number) RETURN BOOLEAN;
383
384 Function IS_Contract_billed (p_header_id IN Number,
385 x_return_status OUT NOCOPY VARCHAR2) return Boolean;
386
387
388 PROCEDURE ADJUST_SPLIT_BILL_REC(p_old_cp_id IN NUMBER,
389 p_new_cp_id IN NUMBER,
390 p_rgp_id IN NUMBER,
391 p_currency_code IN VARCHAR2,
392 p_old_cp_lvl_tbl IN oks_bill_level_elements_pvt.letv_tbl_type,
393 p_new_cp_lvl_tbl IN oks_bill_level_elements_pvt.letv_tbl_type,
394 x_return_status OUT NOCOPY VARCHAR2,
395 x_msg_count OUT NOCOPY NUMBER,
396 x_msg_data OUT NOCOPY VARCHAR2);
397
398 Procedure Adjust_line_price(p_top_line_id IN NUMBER,
399 p_sub_line_id IN NUMBER,
400 p_end_date IN DATE,
401 p_amount IN NUMBER,
402 p_dnz_chr_id IN NUMBER,
403 x_amount OUT NOCOPY NUMBER,
404 x_return_status OUT NOCOPY VARCHAR2);
405
406 End oks_bill_util_pub;
407