1 package PN_REC_CALC_PKG as
2 /* $Header: PNRECALS.pls 120.0.12010000.2 2008/09/04 12:26:31 mumohan ship $ */
3
4 g_rec_agr_line_id pn_rec_agr_linconst_all.rec_agr_line_id%TYPE;
5 g_calc_period_as_of_date pn_rec_calc_periods_all.as_of_date%TYPE;
6
7 g_ext_precision number;
8 g_min_acct_unit number;
9 g_currency_code gl_sets_of_books.currency_code%type;
10 g_precision number;
11
12 TYPE ten_recoverable_area_rec IS RECORD (
13 occupied_area PN_REC_ARCL_DTLLN_ALL.occupied_area%TYPE
14 ,occupancy_pct PN_REC_ARCL_DTLLN_ALL.occupancy_pct%TYPE
15 );
16
17 TYPE period_bill_record IS RECORD (
18 period_billrec_id PN_REC_PERIOD_BILL_ALL.period_billrec_id%TYPE
19 ,amount PN_REC_PERIOD_BILL_ALL.amount%TYPE
20 );
21
22 TYPE expenses_record IS RECORD (
23 computed_recoverable_amt PN_REC_EXPCL_DTLLN_ALL.computed_recoverable_amt%TYPE
24 ,budgeted_amt PN_REC_EXPCL_DTLLN_ALL.computed_recoverable_amt%TYPE
25 );
26
27
28 CURSOR get_line_constr_csr IS
29 SELECT constr_order
30 ,const.scope
31 ,const.relation
32 ,const.value
33 ,const.cpi_index
34 ,const.base_year
35 FROM pn_rec_agr_linconst_all const
36 WHERE const.rec_agr_line_id = g_rec_agr_line_id
37 AND g_calc_period_as_of_date between const.start_date
38 AND const.end_date
39 ORDER BY const.constr_order ;
40
41 TYPE g_line_constr_type IS
42 TABLE OF get_line_constr_csr%ROWTYPE
43 INDEX BY BINARY_INTEGER;
44
45
46 g_line_success VARCHAR2(30);
47 g_all_lines_success VARCHAR2(30);
48
49 PROCEDURE CALCULATE_REC_AMOUNT_BATCH(
50 errbuf OUT NOCOPY VARCHAR2
51 ,retcode OUT NOCOPY VARCHAR2
52 ,p_rec_agreement_id IN NUMBER
53 ,p_lease_id IN NUMBER
54 ,p_location_id IN NUMBER
55 ,p_customer_id IN NUMBER
56 ,p_cust_site_id IN NUMBER
57 ,p_rec_agr_line_id IN NUMBER DEFAULT NULL
58 ,p_rec_calc_period_id IN NUMBER DEFAULT NULL
59 ,p_calc_period_startdate IN VARCHAR2
60 ,p_calc_period_enddate IN VARCHAR2
61 ,p_as_ofdate IN VARCHAR2
62 ,p_lease_num_from IN VARCHAR2
63 ,p_lease_num_to IN VARCHAR2
64 ,p_location_code_from IN VARCHAR2
65 ,p_location_code_to IN VARCHAR2
66 ,p_rec_agr_num_from IN VARCHAR2
67 ,p_rec_agr_num_to IN VARCHAR2
68 ,p_property_name IN VARCHAR2
69 ,p_customer_name IN VARCHAR2
70 ,p_customer_site IN VARCHAR2
71 ,p_calc_period_ending IN VARCHAR2
72 ,p_org_id IN NUMBER DEFAULT NULL
73 );
74
75 -- Created an overloaded proc to fix bug 3138335
76
77 PROCEDURE CALCULATE_REC_AMOUNT_BATCH(
78 errbuf OUT NOCOPY VARCHAR2
79 ,retcode OUT NOCOPY VARCHAR2
80 ,p_calc_period_startdate IN VARCHAR2 --Bug#6438840
81 ,p_calc_period_enddate IN VARCHAR2 --Bug#6438840
82 ,p_as_ofdate IN VARCHAR2 --Bug#6438840
83 ,p_lease_num_from IN VARCHAR2
84 ,p_lease_num_to IN VARCHAR2
85 ,p_location_code_from IN VARCHAR2
86 ,p_location_code_to IN VARCHAR2
87 ,p_rec_agr_num_from IN VARCHAR2
88 ,p_rec_agr_num_to IN VARCHAR2
89 ,p_property_name IN VARCHAR2
90 ,p_customer_name IN VARCHAR2
91 ,p_customer_site IN VARCHAR2
92 ,p_calc_period_ending IN VARCHAR2
93 ,p_org_id IN NUMBER DEFAULT NULL
94 );
95
96 PROCEDURE CALCULATE_REC_AMOUNT(
97 p_rec_agreement_id IN NUMBER
98 ,p_lease_id IN NUMBER
99 ,p_location_id IN NUMBER
100 ,p_customer_id IN NUMBER
101 ,p_cust_site_id IN NUMBER
102 ,p_rec_agr_line_id IN NUMBER DEFAULT NULL
103 ,p_rec_calc_period_id IN NUMBER DEFAULT NULL
104 ,p_calc_period_start_date IN DATE
105 ,p_calc_period_end_date IN DATE
106 ,p_as_of_date IN DATE
107 ,p_error IN OUT NOCOPY VARCHAR2
108 ,p_error_code IN OUT NOCOPY NUMBER
109 );
110
111 FUNCTION get_recoverable_area (
112 p_rec_calc_period_id pn_rec_period_lines_all.rec_calc_period_id%TYPE
113 ,p_rec_agr_line_id pn_rec_period_lines_all.rec_agr_line_id%TYPE
114 )
115 RETURN pn_rec_period_lines_all.recoverable_area%TYPE;
116
117 PROCEDURE get_line_expenses (
118 p_rec_agr_line_id IN NUMBER
119 ,p_customer_id IN NUMBER
120 ,p_lease_id IN NUMBER
121 ,p_location_id IN NUMBER
122 ,p_calc_period_start_date IN DATE
123 ,p_calc_period_end_date IN DATE
124 ,p_calc_period_as_of_date IN DATE
125 ,p_recoverable_amt IN OUT NOCOPY NUMBER
126 ,p_fee_before_contr IN OUT NOCOPY NUMBER
127 ,p_fee_after_contr IN OUT NOCOPY NUMBER
128 ,p_error IN OUT NOCOPY VARCHAR2
129 ,p_error_code IN OUT NOCOPY NUMBER
130 );
131
132 FUNCTION get_contr_actual_recovery (
133 p_rec_agr_line_id pn_rec_agr_lines_all.rec_agr_line_id%TYPE
134 ,p_customer_id pn_rec_agreements_all.customer_id%TYPE
135 ,p_lease_id pn_rec_agreements_all.lease_id%TYPE
136 ,p_location_id pn_rec_agreements_all.location_id%TYPE
137 ,p_calc_period_start_date pn_rec_calc_periods_all.start_date%TYPE
138 ,p_calc_period_end_date pn_rec_calc_periods_all.end_date%TYPE
139 ,p_as_of_date pn_rec_calc_periods_all.as_of_date%TYPE
140 ,p_called_from VARCHAR2 DEFAULT 'CALCUI'
141 )
142 RETURN pn_rec_period_lines_all.actual_recovery%TYPE;
143
144 FUNCTION get_budget_expenses (
145 p_rec_agr_line_id pn_rec_agr_lines_all.rec_agr_line_id%TYPE
146 ,p_customer_id pn_rec_agreements_all.customer_id%TYPE
147 ,p_lease_id pn_rec_agreements_all.lease_id%TYPE
148 ,p_location_id pn_rec_agreements_all.location_id%TYPE
149 ,p_calc_period_start_date pn_rec_calc_periods_all.start_date%TYPE
150 ,p_calc_period_end_date pn_rec_calc_periods_all.end_date%TYPE
151 ,p_calc_period_as_of_date pn_rec_calc_periods_all.as_of_date%TYPE
152 )
153 RETURN pn_rec_expcl_dtlln_all.budgeted_amt%TYPE;
154
155 FUNCTION get_tot_prop_area (
156 p_rec_agr_line_id pn_rec_agr_lines_all.rec_agr_line_id%TYPE
157 ,p_customer_id pn_rec_agreements_all.customer_id%TYPE
158 ,p_lease_id pn_rec_agreements_all.lease_id%TYPE
159 ,p_location_id pn_rec_agreements_all.location_id%TYPE
160 ,p_calc_period_start_date pn_rec_calc_periods_all.start_date%TYPE
161 ,p_calc_period_end_date pn_rec_calc_periods_all.end_date%TYPE
162 ,p_as_of_date pn_rec_calc_periods_all.as_of_date%TYPE
163 )
164 RETURN pn_rec_arcl_dtl_all.TOTAL_assignable_area%TYPE;
165
166 FUNCTION ten_recoverable_area (
167 p_rec_agr_line_id pn_rec_agr_lines_all.rec_agr_line_id%TYPE
168 ,p_customer_id pn_rec_agreements_all.customer_id%TYPE
169 ,p_lease_id pn_rec_agreements_all.lease_id%TYPE
170 ,p_location_id pn_rec_agreements_all.location_id%TYPE
171 ,p_calc_period_start_date pn_rec_calc_periods_all.start_date%TYPE
172 ,p_calc_period_end_date pn_rec_calc_periods_all.end_date%TYPE
173 ,p_as_of_date pn_rec_calc_periods_all.as_of_date%TYPE
174 )
175 RETURN ten_recoverable_area_rec;
176
177 -- 04-Nov-2003 Daniel Thota o Changed the where clause to account for multi-tenancy
178 -- so that billing terms of a lease are now associated with a location.
179 -- Added a new parameter p_location_id for the function
180
181 FUNCTION get_billed_recovery (
182 p_payment_purpose pn_rec_agr_lines_all.purpose%TYPE
183 ,p_payment_type pn_rec_agr_lines_all.type%TYPE
184 ,p_lease_id pn_rec_agreements_all.lease_id%TYPE
185 ,p_location_id pn_rec_agreements_all.location_id%TYPE
186 ,p_calc_period_start_date pn_rec_calc_periods_all.start_date%TYPE
187 ,p_calc_period_end_date pn_rec_calc_periods_all.end_date%TYPE
188 ,p_rec_agr_line_id pn_rec_agr_lines_all.rec_agr_line_id%TYPE
189 ,p_rec_calc_period_id pn_rec_calc_periods_all.rec_calc_period_id%TYPE
190 )
191 RETURN pn_rec_period_lines_all.billed_recovery%TYPE;
192
193 FUNCTION get_line_constraints (
194 p_rec_agr_line_id pn_rec_agr_lines_all.rec_agr_line_id%TYPE
195 ,p_as_of_date pn_rec_calc_periods_all.as_of_date%TYPE
196 )
197 RETURN g_line_constr_type;
198
199 FUNCTION get_line_abatements (
200 p_rec_agr_line_id pn_rec_agr_lines_all.rec_agr_line_id%TYPE
201 ,p_as_of_date pn_rec_calc_periods_all.as_of_date%TYPE
202 )
203 RETURN pn_rec_agr_linabat_all.amount%TYPE;
204
205 FUNCTION find_if_period_line_exists (
206 p_rec_agr_line_id pn_rec_period_lines_all.rec_agr_line_id%TYPE
207 ,p_rec_calc_period_id pn_rec_period_lines_all.rec_calc_period_id%TYPE
208 )
209 RETURN pn_rec_period_lines_all.rec_period_lines_id%TYPE;
210
211 procedure INSERT_PERIOD_LINES_ROW (
212 X_ROWID in out NOCOPY VARCHAR2
213 ,X_REC_PERIOD_LINES_ID in out NOCOPY NUMBER
214 ,X_BUDGET_PCT in NUMBER
215 ,X_OCCUPANCY_PCT in NUMBER
216 ,X_MULTIPLE_PCT in NUMBER
217 ,X_TENANCY_START_DATE in DATE
218 ,X_TENANCY_END_DATE in DATE
219 ,X_STATUS in VARCHAR2
220 ,X_BUDGET_PRORATA_SHARE in NUMBER
221 ,X_BUDGET_COST_PER_AREA in NUMBER
222 ,X_TOTAL_AREA in NUMBER
223 ,X_TOTAL_EXPENSE in NUMBER
224 ,X_RECOVERABLE_AREA in NUMBER
225 ,X_ACTUAL_RECOVERY in NUMBER
226 ,X_CONSTRAINED_ACTUAL in NUMBER
227 ,X_ABATEMENTS in NUMBER
228 ,X_ACTUAL_PRORATA_SHARE in NUMBER
229 ,X_BILLED_RECOVERY in NUMBER
230 ,X_RECONCILED_AMOUNT in NUMBER
231 ,X_BUDGET_RECOVERY in NUMBER
232 ,X_BUDGET_EXPENSE in NUMBER
233 ,X_REC_CALC_PERIOD_ID in NUMBER
234 ,X_REC_AGR_LINE_ID in NUMBER
235 ,X_AS_OF_DATE in DATE
236 ,X_START_DATE in DATE
237 ,X_END_DATE in DATE
238 ,X_BILLING_TYPE in VARCHAR2
239 ,X_BILLING_PURPOSE in VARCHAR2
240 ,X_CUST_ACCOUNT_ID in NUMBER
241 ,X_CREATION_DATE in DATE
242 ,X_CREATED_BY in NUMBER
243 ,X_LAST_UPDATE_DATE in DATE
244 ,X_LAST_UPDATED_BY in NUMBER
245 ,X_LAST_UPDATE_LOGIN in NUMBER
246 ,X_FIXED_PCT in NUMBER
247 ,X_ERROR_CODE in out NOCOPY NUMBER
248 );
249
250 procedure UPDATE_PERIOD_LINES_ROW(
251 X_REC_PERIOD_LINES_ID in NUMBER
252 ,X_BUDGET_PCT in NUMBER
253 ,X_OCCUPANCY_PCT in NUMBER
254 ,X_MULTIPLE_PCT in NUMBER
255 ,X_TENANCY_START_DATE in DATE
256 ,X_TENANCY_END_DATE in DATE
257 ,X_STATUS in VARCHAR2
258 ,X_BUDGET_PRORATA_SHARE in NUMBER
259 ,X_BUDGET_COST_PER_AREA in NUMBER
260 ,X_TOTAL_AREA in NUMBER
261 ,X_TOTAL_EXPENSE in NUMBER
262 ,X_RECOVERABLE_AREA in NUMBER
263 ,X_ACTUAL_RECOVERY in NUMBER
264 ,X_CONSTRAINED_ACTUAL in NUMBER
265 ,X_ABATEMENTS in NUMBER
266 ,X_ACTUAL_PRORATA_SHARE in NUMBER
267 ,X_BILLED_RECOVERY in NUMBER
268 ,X_RECONCILED_AMOUNT in NUMBER
269 ,X_BUDGET_RECOVERY in NUMBER
270 ,X_BUDGET_EXPENSE in NUMBER
271 ,X_REC_CALC_PERIOD_ID in NUMBER
272 ,X_REC_AGR_LINE_ID in NUMBER
273 ,X_AS_OF_DATE in DATE
274 ,X_START_DATE in DATE
275 ,X_END_DATE in DATE
276 ,X_BILLING_TYPE in VARCHAR2
277 ,X_BILLING_PURPOSE in VARCHAR2
278 ,X_CUST_ACCOUNT_ID in NUMBER
279 ,X_LAST_UPDATE_DATE in DATE
280 ,X_LAST_UPDATED_BY in NUMBER
281 ,X_LAST_UPDATE_LOGIN in NUMBER
282 ,X_FIXED_PCT in NUMBER
283 ,X_ERROR_CODE in out NOCOPY NUMBER
284 );
285
286 procedure DELETE_PERIOD_LINES_ROW (
287 X_REC_PERIOD_LINES_ID in NUMBER
288 );
289
290 procedure INSERT_PERIOD_BILLREC_ROW (
291 X_ROWID in out NOCOPY VARCHAR2
292 ,X_PERIOD_BILLREC_ID in out NOCOPY NUMBER
293 ,X_REC_AGREEMENT_ID in NUMBER
294 ,X_REC_AGR_LINE_ID in NUMBER
295 ,X_REC_CALC_PERIOD_ID in NUMBER
296 ,X_AMOUNT in NUMBER
297 ,X_CREATION_DATE in DATE
298 ,X_CREATED_BY in NUMBER
299 ,X_LAST_UPDATE_DATE in DATE
300 ,X_LAST_UPDATED_BY in NUMBER
301 ,X_LAST_UPDATE_LOGIN in NUMBER
302 );
303
304 procedure UPDATE_PERIOD_BILLREC_ROW (
305 X_PERIOD_BILLREC_ID in NUMBER
306 ,X_REC_AGREEMENT_ID in NUMBER
307 ,X_REC_AGR_LINE_ID in NUMBER
308 ,X_REC_CALC_PERIOD_ID in NUMBER
309 ,X_AMOUNT in NUMBER
310 ,X_LAST_UPDATE_DATE in DATE
311 ,X_LAST_UPDATED_BY in NUMBER
312 ,X_LAST_UPDATE_LOGIN in NUMBER
313 );
314
315 procedure DELETE_PERIOD_BILLREC_ROW (
316 X_PERIOD_BILLREC_ID in NUMBER
317 );
318
319 PROCEDURE create_payment_terms(
320 p_lease_id IN NUMBER
321 ,p_payment_amount IN NUMBER
322 ,p_calc_period_end_date IN DATE
323 ,p_rec_agreement_id IN NUMBER
324 ,p_rec_agr_line_id IN NUMBER
325 ,p_rec_calc_period_id IN NUMBER
326 ,p_location_id IN NUMBER
327 ,p_amount_type IN VARCHAR2
328 ,p_org_id IN NUMBER
329 ,p_billing_type IN VARCHAR2
330 ,p_billing_purpose IN VARCHAR2
331 ,p_customer_id IN NUMBER
332 ,p_cust_site_id IN NUMBER
333 ,p_consolidate IN VARCHAR2
334 ,p_error IN OUT NOCOPY VARCHAR2
335 ,p_error_code IN OUT NOCOPY NUMBER
336 );
337
338 FUNCTION find_if_rec_payterm_exists(
339 p_rec_agreement_id PN_REC_PERIOD_BILL_all.period_billrec_id%TYPE
340 ,p_rec_agr_line_id PN_REC_PERIOD_BILL_all.rec_agr_line_id%TYPE
341 ,p_rec_calc_period_id PN_REC_PERIOD_BILL_all.rec_calc_period_id%TYPE
342 ,p_consolidate IN VARCHAR2
343 )
344 RETURN period_bill_record;
345
346 FUNCTION get_prior_period_actual_amount(
347 p_rec_agr_line_id pn_rec_period_lines_all.rec_agr_line_id%TYPE
348 ,p_start_date pn_rec_calc_periods_all.start_date%TYPE
349 ,p_as_of_date pn_rec_calc_periods_all.as_of_date%TYPE DEFAULT NULL
350 ,p_called_from VARCHAR2 DEFAULT 'CALCUI'
351 )
352 RETURN pn_rec_period_lines_all.constrained_actual%TYPE;
353
354 FUNCTION get_prior_period_cap(
355 p_rec_agr_line_id pn_rec_period_lines_all.rec_agr_line_id%TYPE
356 ,p_start_date pn_rec_calc_periods_all.start_date%TYPE
357 ,p_end_date pn_rec_calc_periods_all.end_date%TYPE
358 ,p_as_of_date pn_rec_calc_periods_all.as_of_date%TYPE
359 ,p_called_from VARCHAR2 DEFAULT 'CALCUI'
360 )
361 RETURN pn_rec_period_lines_all.actual_recovery%TYPE;
362
363 PROCEDURE lock_area_exp_cls_dtl( p_payment_term_id IN pn_payment_terms_all.payment_term_id%TYPE);
364
365 FUNCTION validate_create_calc_period(p_rec_agreement_id pn_rec_agreements_all.REC_AGREEMENT_ID%TYPE,
366 p_start_date pn_rec_calc_periods_all.start_date%TYPE,
367 p_end_date pn_rec_calc_periods_all.end_date%TYPE,
368 p_as_of_date pn_rec_calc_periods_all.as_of_date%TYPE)
369 RETURN NUMBER;
370
371 END PN_REC_CALC_PKG;