[Home] [Help]
PACKAGE BODY: APPS.OKL_LEASE_QUOTE_CASHFLOW_PVT
Source
1 PACKAGE BODY OKL_LEASE_QUOTE_CASHFLOW_PVT AS
2 /* $Header: OKLRQUCB.pls 120.30.12010000.2 2008/11/18 11:16:36 gboomina ship $ */
3
4 -------------------------------
5 -- PROCEDURE populate_level_ids
6 -------------------------------
7 PROCEDURE populate_level_ids (
8 p_cf_header_id IN NUMBER
9 ,x_cf_levels_tbl IN OUT NOCOPY cashflow_level_tbl_type
10 ,x_return_status OUT NOCOPY VARCHAR2
11 ) IS
12
13 l_program_name CONSTANT VARCHAR2(30) := 'populate_level_ids';
14 l_api_name CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_program_name;
15
16 CURSOR c_levels IS
17 SELECT id
18 FROM okl_cash_flow_levels
19 WHERE caf_id = p_cf_header_id
20 ORDER BY start_date;
21
22 i BINARY_INTEGER;
23 l_count BINARY_INTEGER;
24
25 BEGIN
26
27 i := x_cf_levels_tbl.FIRST;
28 l_count := 0;
29
30 FOR l_level IN c_levels LOOP
31
32 l_count := l_count + 1;
33 x_cf_levels_tbl(i).cashflow_level_id := l_level.id;
34 i := x_cf_levels_tbl.NEXT(i);
35
36 END LOOP;
37
38 IF l_count <> x_cf_levels_tbl.COUNT THEN
39
40 OKL_API.SET_MESSAGE (
41 p_app_name => G_APP_NAME
42 ,p_msg_name => 'OKL_INVALID_VALUE2'
43 ,p_token1 => 'API_NAME'
44 ,p_token1_value => UPPER(l_api_name)
45 ,p_token2 => 'NAME'
46 ,p_token2_value => 'levels_table_count'
47 ,p_token3 => 'VALUE'
48 ,p_token3_value => x_cf_levels_tbl.COUNT
49 );
50 RAISE OKL_API.G_EXCEPTION_ERROR;
51
52 END IF;
53
54 x_return_status := G_RET_STS_SUCCESS;
55
56 EXCEPTION
57
58 WHEN OKL_API.G_EXCEPTION_ERROR THEN
59 x_return_status := G_RET_STS_ERROR;
60
61 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
62 x_return_status := G_RET_STS_UNEXP_ERROR;
63
64 WHEN OTHERS THEN
65 OKL_API.SET_MESSAGE (p_app_name => G_APP_NAME,
66 p_msg_name => G_DB_ERROR,
67 p_token1 => G_PROG_NAME_TOKEN,
68 p_token1_value => l_api_name,
69 p_token2 => G_SQLCODE_TOKEN,
70 p_token2_value => sqlcode,
71 p_token3 => G_SQLERRM_TOKEN,
72 p_token3_value => sqlerrm);
73
74 x_return_status := G_RET_STS_UNEXP_ERROR;
75
76 END populate_level_ids;
77
78
79 -----------------------------
80 -- PROCEDURE get_source_table
81 -----------------------------
82 PROCEDURE get_source_table (
83 p_source_object_code IN VARCHAR2
84 ,x_source_table OUT NOCOPY VARCHAR2
85 ,x_return_status OUT NOCOPY VARCHAR2
86 ) IS
87
88 l_program_name CONSTANT VARCHAR2(30) := 'get_source_table';
89 l_api_name CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_program_name;
90
91 BEGIN
92 --Bug # 5142940 ssdeshpa start
93 IF (p_source_object_code IN ('QUOTED_ASSET','QUOTED_ASSET_DOWN_PAYMENT','QUOTED_ASSET_PROPERTY_TAX')) THEN
94 x_source_table := 'OKL_ASSETS_B';
95 --Bug # 5142940 ssdeshpa end
96 ELSIF (p_source_object_code = 'QUOTED_FEE') THEN
97 x_source_table := 'OKL_FEES_B';
98 ELSIF (p_source_object_code = 'QUOTED_SERVICE') THEN
99 x_source_table := 'OKL_SERVICES_B';
100 ELSIF (p_source_object_code = 'QUOTED_INSURANCE') THEN
101 x_source_table := 'OKL_INSURANCE_ESTIMATES_B';
102 ELSIF (p_source_object_code = 'LEASE_QUOTE') THEN
103 x_source_table := 'OKL_LEASE_QUOTES_B';
104 ELSIF (p_source_object_code = 'QUICK_QUOTE') THEN
105 x_source_table := 'OKL_QUICK_QUOTES_B';
106 ELSIF (p_source_object_code = 'QUICK_QUOTE_ASSET') THEN
107 x_source_table := 'OKL_QUICK_QUOTE_LINES_B';
108 ELSIF (p_source_object_code = 'QUICK_QUOTE_SERVICE') THEN
109 x_source_table := 'OKL_QUICK_QUOTE_LINES_B';
110 ELSIF (p_source_object_code = 'QUICK_QUOTE_FEE') THEN
111 x_source_table := 'OKL_QUICK_QUOTE_LINES_B';
112 ELSIF (p_source_object_code = 'QUICK_QUOTE_TAX') THEN
113 x_source_table := 'OKL_QUICK_QUOTE_LINES_B';
114 ELSIF (p_source_object_code = 'QUICK_QUOTE_INSURANCE') THEN
115 x_source_table := 'OKL_QUICK_QUOTE_LINES_B';
116 ELSIF (p_source_object_code = 'LEASE_QUOTE_CONSOLIDATED') THEN
117 x_source_table := 'OKL_LEASE_QUOTES_B';
118 ELSE
119 OKL_API.SET_MESSAGE (
120 p_app_name => G_APP_NAME
121 ,p_msg_name => 'OKL_INVALID_VALUE2'
122 ,p_token1 => 'API_NAME'
123 ,p_token1_value => UPPER(l_api_name)
124 ,p_token2 => 'NAME'
125 ,p_token2_value => 'source_object_code'
126 ,p_token3 => 'VALUE'
127 ,p_token3_value => p_source_object_code
128 );
129 RAISE OKL_API.G_EXCEPTION_ERROR;
130 END IF;
131
132 x_return_status := G_RET_STS_SUCCESS;
133
134 EXCEPTION
135
136 WHEN OKL_API.G_EXCEPTION_ERROR THEN
137 x_return_status := G_RET_STS_ERROR;
138
139 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
140 x_return_status := G_RET_STS_UNEXP_ERROR;
141
142 WHEN OTHERS THEN
143 OKL_API.SET_MESSAGE (p_app_name => G_APP_NAME,
144 p_msg_name => G_DB_ERROR,
145 p_token1 => G_PROG_NAME_TOKEN,
146 p_token1_value => l_api_name,
147 p_token2 => G_SQLCODE_TOKEN,
148 p_token2_value => sqlcode,
149 p_token3 => G_SQLERRM_TOKEN,
150 p_token3_value => sqlerrm);
151
152 x_return_status := G_RET_STS_UNEXP_ERROR;
153
154 END get_source_table;
155
156 -------------------------------
157 -- PROCEDURE set_level_end_date
158 -------------------------------
159 PROCEDURE set_level_end_date (
160 p_contract_start_date IN DATE
161 ,p_contract_term IN NUMBER
162 ,p_cashflow_header_rec IN cashflow_header_rec_type
163 ,p_cashflow_level_tbl IN OUT NOCOPY cashflow_level_tbl_type
164 ,x_return_status OUT NOCOPY VARCHAR2
165 ) IS
166
167 l_program_name CONSTANT VARCHAR2(30) := 'set_level_end_date';
168 l_api_name CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_program_name;
169
170 l_mpp PLS_INTEGER;
171
172 l_contract_end_date DATE;
173 l_next_start_date DATE;
174 l_end_date DATE;
175
176 l_module CONSTANT fnd_log_messages.module%TYPE := 'okl.plsql.OKL_LEASE_QUOTE_CASHFLOW_PVT.set_level_end_date';
177 l_debug_enabled VARCHAR2(10);
178 is_debug_procedure_on BOOLEAN;
179 is_debug_statement_on BOOLEAN;
180
181 BEGIN
182
183 l_debug_enabled := NVL(okl_debug_pub.check_log_enabled,'N');
184 is_debug_procedure_on := okl_debug_pub.check_log_on(l_module
185 ,fnd_log.level_procedure);
186
187 IF (l_debug_enabled = 'Y' AND is_debug_procedure_on) THEN
188 okl_debug_pub.log_debug(fnd_log.level_procedure
189 ,l_module
190 ,'begin debug OKLRQUCB.pls procedure set_level_end_date');
191 END IF;
192 -- check for logging at STATEMENT level
193 is_debug_statement_on := okl_debug_pub.check_log_on(l_module
194 ,fnd_log.level_statement);
195
196 IF p_cashflow_header_rec.frequency_code = 'A' THEN
197 l_mpp := 12;
198 ELSIF p_cashflow_header_rec.frequency_code = 'S' THEN
199 l_mpp := 6;
200 ELSIF p_cashflow_header_rec.frequency_code = 'Q' THEN
201 l_mpp := 3;
202 ELSIF p_cashflow_header_rec.frequency_code = 'M' THEN
203 l_mpp := 1;
204 END IF;
205
206 l_next_start_date := p_contract_start_date;
207
208 FOR i IN p_cashflow_level_tbl.FIRST .. p_cashflow_level_tbl.LAST LOOP
209 IF p_cashflow_level_tbl.EXISTS(i) THEN
210
211 IF p_cashflow_level_tbl(i).stub_days IS NOT NULL THEN
212 l_end_date := l_next_start_date + p_cashflow_level_tbl(i).stub_days - 1;
213 ELSE
214 l_end_date := ADD_MONTHS(l_next_start_date, l_mpp*p_cashflow_level_tbl(i).periods) - 1;
215 END IF;
216
217 p_cashflow_level_tbl(i).start_date := l_next_start_date;
218 l_next_start_date := l_end_date + 1;
219
220 END IF;
221 IF (nvl(l_debug_enabled, 'N') = 'Y' AND is_debug_statement_on) THEN
222 okl_debug_pub.log_debug(fnd_log.level_statement
223 ,l_module
224 ,' l_next_start_date = ' || l_next_start_date ||
225 ' l_end_date = ' || l_end_date
226 );
227 END IF; -- end of NVL(l_debug_enabled,'N')='Y'
228 END LOOP;
229
230 l_contract_end_date := ADD_MONTHS(p_contract_start_date, p_contract_term) - 1;
231
232 IF (nvl(l_debug_enabled, 'N') = 'Y' AND is_debug_statement_on) THEN
233 okl_debug_pub.log_debug(fnd_log.level_statement
234 ,l_module
235 ,' p_contract_start_date = ' || p_contract_start_date ||
236 ' l_contract_end_date = ' || l_contract_end_date ||
237 ' p_contract_term = ' || p_contract_term ||
238 ' l_end_date = ' || l_end_date ||
239 ' l_next_start_date = ' || l_next_start_date ||
240 ' l_mpp = ' || l_mpp ||
241 ' p_cashflow_level_tbl_count = ' || p_cashflow_level_tbl.COUNT
242 );
243 END IF; -- end of NVL(l_debug_enabled,'N')='Y'
244
245 IF l_end_date > l_contract_end_date THEN
246 OKL_API.SET_MESSAGE (p_app_name => G_APP_NAME, p_msg_name => 'OKL_LEVEL_EXTENDS_K_END');
247 RAISE OKL_API.G_EXCEPTION_ERROR;
248 END IF;
249
250 x_return_status := G_RET_STS_SUCCESS;
251
252 IF (l_debug_enabled = 'Y' AND is_debug_procedure_on) THEN
253 okl_debug_pub.log_debug(fnd_log.level_procedure
254 ,l_module
255 ,'end debug OKLRQUCB.pls procedure set_level_end_date');
256 END IF;
257
258 EXCEPTION
259
260 WHEN OKL_API.G_EXCEPTION_ERROR THEN
261 x_return_status := G_RET_STS_ERROR;
262
263 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
264 x_return_status := G_RET_STS_UNEXP_ERROR;
265
266 WHEN OTHERS THEN
267 OKL_API.SET_MESSAGE (p_app_name => G_APP_NAME,
268 p_msg_name => G_DB_ERROR,
269 p_token1 => G_PROG_NAME_TOKEN,
270 p_token1_value => l_api_name,
271 p_token2 => G_SQLCODE_TOKEN,
272 p_token2_value => sqlcode,
273 p_token3 => G_SQLERRM_TOKEN,
274 p_token3_value => sqlerrm);
275
276 x_return_status := G_RET_STS_UNEXP_ERROR;
277
278 END set_level_end_date;
279
280
281 -----------------------------
282 -- PROCEDURE set_level_amount
283 -----------------------------
284 PROCEDURE set_level_amount (
285 p_contract_currency IN VARCHAR2
286 ,p_cashflow_level_tbl IN OUT NOCOPY cashflow_level_tbl_type
287 ,x_return_status OUT NOCOPY VARCHAR2
288 ) IS
289
290 l_program_name CONSTANT VARCHAR2(30) := 'set_level_amount';
291 l_api_name CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_program_name;
292
293 BEGIN
294
295 FOR i IN p_cashflow_level_tbl.FIRST .. p_cashflow_level_tbl.LAST LOOP
296 IF p_cashflow_level_tbl.EXISTS(i) THEN
297 IF p_cashflow_level_tbl(i).stub_amount IS NOT NULL THEN
298 p_cashflow_level_tbl(i).stub_amount :=
299 okl_accounting_util.round_amount( p_amount => p_cashflow_level_tbl(i).stub_amount
300 ,p_currency_code => p_contract_currency
301 );
302 ELSIF p_cashflow_level_tbl(i).periodic_amount IS NOT NULL THEN
303 p_cashflow_level_tbl(i).periodic_amount :=
304 okl_accounting_util.round_amount( p_amount => p_cashflow_level_tbl(i).periodic_amount
305 ,p_currency_code => p_contract_currency
306 );
307 END IF;
308 END IF;
309 END LOOP;
310
311 x_return_status := G_RET_STS_SUCCESS;
312
313 EXCEPTION
314
315 WHEN OKL_API.G_EXCEPTION_ERROR THEN
316 x_return_status := G_RET_STS_ERROR;
317
318 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
319 x_return_status := G_RET_STS_UNEXP_ERROR;
320
321 WHEN OTHERS THEN
322 OKL_API.SET_MESSAGE (p_app_name => G_APP_NAME,
323 p_msg_name => G_DB_ERROR,
324 p_token1 => G_PROG_NAME_TOKEN,
325 p_token1_value => l_api_name,
326 p_token2 => G_SQLCODE_TOKEN,
327 p_token2_value => sqlcode,
328 p_token3 => G_SQLERRM_TOKEN,
329 p_token3_value => sqlerrm);
330
331 x_return_status := G_RET_STS_UNEXP_ERROR;
332
333 END set_level_amount;
334
335
336 -------------------------
337 -- PROCEDURE sanity_check
338 -------------------------
339 PROCEDURE sanity_check (
340 p_cashflow_header_rec IN cashflow_header_rec_type
341 ,p_cashflow_level_tbl IN cashflow_level_tbl_type
342 ,x_return_status OUT NOCOPY VARCHAR2
343 ) IS
344
345 l_program_name CONSTANT VARCHAR2(30) := 'sanity_check';
346 l_api_name CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_program_name;
347
348 BEGIN
349
350 IF p_cashflow_header_rec.frequency_code NOT IN ('M','Q','S','A') THEN
351 OKL_API.SET_MESSAGE (
352 p_app_name => G_APP_NAME
353 ,p_msg_name => 'OKL_INVALID_VALUE2'
354 ,p_token1 => 'API_NAME'
355 ,p_token1_value => UPPER(l_api_name)
356 ,p_token2 => 'NAME'
357 ,p_token2_value => 'frequency_code'
358 ,p_token3 => 'VALUE'
359 ,p_token3_value => p_cashflow_header_rec.frequency_code
360 );
361 RAISE OKL_API.G_EXCEPTION_ERROR;
362 END IF;
363
364 IF p_cashflow_header_rec.arrears_flag NOT IN ('Y' , 'N') THEN
365 OKL_API.SET_MESSAGE (
366 p_app_name => G_APP_NAME
367 ,p_msg_name => 'OKL_INVALID_VALUE2'
368 ,p_token1 => 'API_NAME'
369 ,p_token1_value => UPPER(l_api_name)
370 ,p_token2 => 'NAME'
371 ,p_token2_value => 'arrears_flag'
372 ,p_token3 => 'VALUE'
373 ,p_token3_value => p_cashflow_header_rec.arrears_flag
374 );
375 RAISE OKL_API.G_EXCEPTION_ERROR;
376 END IF;
377
378 IF p_cashflow_header_rec.type_code NOT IN ('INFLOW' , 'OUTFLOW') THEN
379 OKL_API.SET_MESSAGE (
380 p_app_name => G_APP_NAME
381 ,p_msg_name => 'OKL_INVALID_VALUE2'
382 ,p_token1 => 'API_NAME'
383 ,p_token1_value => UPPER(l_api_name)
384 ,p_token2 => 'NAME'
385 ,p_token2_value => 'type_code'
386 ,p_token3 => 'VALUE'
387 ,p_token3_value => p_cashflow_header_rec.type_code
388 );
389 RAISE OKL_API.G_EXCEPTION_ERROR;
390 END IF;
391
392 IF p_cashflow_header_rec.quote_type_code NOT IN ('LQ', 'QQ', 'LA') THEN
393 OKL_API.SET_MESSAGE (
394 p_app_name => G_APP_NAME
395 ,p_msg_name => 'OKL_INVALID_VALUE2'
396 ,p_token1 => 'API_NAME'
397 ,p_token1_value => UPPER(l_api_name)
398 ,p_token2 => 'NAME'
399 ,p_token2_value => 'quote_type_code'
400 ,p_token3 => 'VALUE'
401 ,p_token3_value => p_cashflow_header_rec.quote_type_code
402 );
403 RAISE OKL_API.G_EXCEPTION_ERROR;
404 END IF;
405
406 IF p_cashflow_header_rec.quote_id IS NULL THEN
407 OKL_API.SET_MESSAGE (
408 p_app_name => G_APP_NAME
409 ,p_msg_name => 'OKL_INVALID_VALUE2'
410 ,p_token1 => 'API_NAME'
411 ,p_token1_value => UPPER(l_api_name)
412 ,p_token2 => 'NAME'
413 ,p_token2_value => 'quote_id'
414 ,p_token3 => 'VALUE'
415 ,p_token3_value => p_cashflow_header_rec.quote_id
416 );
417 RAISE OKL_API.G_EXCEPTION_ERROR;
418 END IF;
419
420 FOR i IN p_cashflow_level_tbl.FIRST .. p_cashflow_level_tbl.LAST LOOP
421 IF p_cashflow_level_tbl.EXISTS(i) THEN
422 IF UPPER(p_cashflow_level_tbl(i).record_mode) NOT IN ('CREATE', 'UPDATE') OR p_cashflow_level_tbl(i).record_mode IS NULL THEN
423 OKL_API.SET_MESSAGE (
424 p_app_name => G_APP_NAME
425 ,p_msg_name => 'OKL_INVALID_VALUE2'
426 ,p_token1 => 'API_NAME'
427 ,p_token1_value => UPPER(l_api_name)
428 ,p_token2 => 'NAME'
429 ,p_token2_value => '('||i||') record_mode'
430 ,p_token3 => 'VALUE'
431 ,p_token3_value => UPPER(p_cashflow_level_tbl(i).record_mode)
432 );
433 RAISE OKL_API.G_EXCEPTION_ERROR;
434 END IF;
435 END IF;
436 END LOOP;
437
438 x_return_status := G_RET_STS_SUCCESS;
439
440 EXCEPTION
441
442 WHEN OKL_API.G_EXCEPTION_ERROR THEN
443 x_return_status := G_RET_STS_ERROR;
444
445 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
446 x_return_status := G_RET_STS_UNEXP_ERROR;
447
448 WHEN OTHERS THEN
449 OKL_API.SET_MESSAGE (p_app_name => G_APP_NAME,
450 p_msg_name => G_DB_ERROR,
451 p_token1 => G_PROG_NAME_TOKEN,
452 p_token1_value => l_api_name,
453 p_token2 => G_SQLCODE_TOKEN,
454 p_token2_value => sqlcode,
455 p_token3 => G_SQLERRM_TOKEN,
456 p_token3_value => sqlerrm);
457
458 x_return_status := G_RET_STS_UNEXP_ERROR;
459
460 END sanity_check;
461
462
463 --------------------------------------
464 -- PROCEDURE validate_level_attributes
465 --------------------------------------
466 PROCEDURE validate_level_attributes (
467 p_cashflow_level_tbl IN cashflow_level_tbl_type
468 ,p_caf_status IN VARCHAR2
469 ,p_pricing_method IN VARCHAR2
470 ,x_return_status OUT NOCOPY VARCHAR2
471 ) IS
472
473 l_program_name CONSTANT VARCHAR2(30) := 'validate_level_attributes';
474 l_api_name CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_program_name;
475 l_periods_exists VARCHAR2(3) := 'N';
476
477 BEGIN
478
479 FOR i IN p_cashflow_level_tbl.FIRST .. p_cashflow_level_tbl.LAST LOOP
480
481 IF p_cashflow_level_tbl.EXISTS(i) THEN
482
483 IF p_cashflow_level_tbl(i).periods IS NOT NULL THEN
484 l_periods_exists := 'Y';
485 END IF;
486
487 IF p_cashflow_level_tbl(i).periods <= 0 THEN
488 OKL_API.SET_MESSAGE (p_app_name => G_APP_NAME, p_msg_name => 'OKL_LEVEL_PERIOD_ZERO');
489 RAISE OKL_API.G_EXCEPTION_ERROR;
490 END IF;
491
492 IF TRUNC(p_cashflow_level_tbl(i).periods) <> p_cashflow_level_tbl(i).periods THEN
493 OKL_API.SET_MESSAGE (p_app_name => G_APP_NAME, p_msg_name => 'OKL_LEVEL_PERIOD_FRACTION');
494 RAISE OKL_API.G_EXCEPTION_ERROR;
495 END IF;
496
497 IF p_cashflow_level_tbl(i).stub_days <= 0 THEN
498 OKL_API.SET_MESSAGE (p_app_name => G_APP_NAME, p_msg_name => 'OKL_LEVEL_STUBDAYS_ZERO');
499 RAISE OKL_API.G_EXCEPTION_ERROR;
500 END IF;
501
502 IF TRUNC(p_cashflow_level_tbl(i).stub_days) <> p_cashflow_level_tbl(i).stub_days THEN
503 OKL_API.SET_MESSAGE (p_app_name => G_APP_NAME, p_msg_name => 'OKL_LEVEL_STUBDAYS_FRACTION');
504 RAISE OKL_API.G_EXCEPTION_ERROR;
505 END IF;
506 IF p_pricing_method <> 'SP' AND p_pricing_method <> 'SM' THEN
507 IF p_cashflow_level_tbl(i).periodic_amount < 0 THEN
508 OKL_API.SET_MESSAGE (p_app_name => G_APP_NAME, p_msg_name => 'OKL_LEVEL_AMOUNT_ZERO');
509 RAISE OKL_API.G_EXCEPTION_ERROR;
510 END IF;
511 END IF;
512 IF p_pricing_method <> 'SP' AND p_pricing_method <> 'SM' THEN
513 IF p_cashflow_level_tbl(i).stub_amount < 0 THEN
514 OKL_API.SET_MESSAGE (p_app_name => G_APP_NAME, p_msg_name => 'OKL_LEVEL_STUBAMT_ZERO');
515 RAISE OKL_API.G_EXCEPTION_ERROR;
516 END IF;
517 END IF;
518
519 IF p_caf_status <> 'WORK' AND p_cashflow_level_tbl(i).rate <= 0 THEN
520 OKL_API.SET_MESSAGE (p_app_name => G_APP_NAME, p_msg_name => 'OKL_LEVEL_RATE_ZERO');
521 RAISE OKL_API.G_EXCEPTION_ERROR;
522 END IF;
523
524 IF (p_cashflow_level_tbl(i).stub_days IS NULL) AND (p_cashflow_level_tbl(i).periods IS NULL) THEN
525 OKL_API.SET_MESSAGE (p_app_name => G_APP_NAME, p_msg_name => 'OKL_LEVEL_NO_STUB_AND_PER');
526 RAISE OKL_API.G_EXCEPTION_ERROR;
527 END IF;
528
529 IF (p_cashflow_level_tbl(i).stub_days IS NOT NULL) AND (p_cashflow_level_tbl(i).periods IS NOT NULL) THEN
530 OKL_API.SET_MESSAGE (p_app_name => G_APP_NAME, p_msg_name => 'OKL_LEVEL_BOTH_STUB_AND_PER');
531 RAISE OKL_API.G_EXCEPTION_ERROR;
532 END IF;
533
534 IF (p_cashflow_level_tbl(i).stub_amount IS NOT NULL) AND (p_cashflow_level_tbl(i).stub_days IS NULL) THEN
535 OKL_API.SET_MESSAGE (p_app_name => G_APP_NAME, p_msg_name => 'OKL_LEVEL_STUBAMT_WO_DAYS');
536 RAISE OKL_API.G_EXCEPTION_ERROR;
537 END IF;
538
539 IF p_pricing_method <> 'SP' AND p_pricing_method <> 'SM' THEN
540 IF (p_cashflow_level_tbl(i).stub_amount IS NULL) AND (p_cashflow_level_tbl(i).stub_days IS NOT NULL) THEN
541 OKL_API.SET_MESSAGE (p_app_name => G_APP_NAME, p_msg_name => 'OKL_LEVEL_STUBDAYS_WO_AMT');
542 RAISE OKL_API.G_EXCEPTION_ERROR;
543 END IF;
544 END IF;
545 IF (p_cashflow_level_tbl(i).periodic_amount IS NOT NULL) AND (p_cashflow_level_tbl(i).periods IS NULL) THEN
546 OKL_API.SET_MESSAGE (p_app_name => G_APP_NAME, p_msg_name => 'OKL_LEVEL_AMOUNT_WO_PERIODS');
547 RAISE OKL_API.G_EXCEPTION_ERROR;
548 END IF;
549 IF p_pricing_method <> 'SP' AND p_pricing_method <> 'SM' THEN
550 IF (p_cashflow_level_tbl(i).periodic_amount IS NULL) AND (p_cashflow_level_tbl(i).periods IS NOT NULL) THEN
551 OKL_API.SET_MESSAGE (p_app_name => G_APP_NAME, p_msg_name => 'OKL_LEVEL_PERIODS_WO_AMOUNT');
552 RAISE OKL_API.G_EXCEPTION_ERROR;
553 END IF;
554 END IF;
555 END IF;
556
557 END LOOP;
558 IF l_periods_exists = 'N' THEN
559 OKL_API.SET_MESSAGE (p_app_name => G_APP_NAME, p_msg_name => 'OKL_LEVEL_PERIODS_NOT_PRESENT');
560 RAISE OKL_API.G_EXCEPTION_ERROR;
561 END IF;
562 x_return_status := G_RET_STS_SUCCESS;
563
564 EXCEPTION
565
566 WHEN OKL_API.G_EXCEPTION_ERROR THEN
567 x_return_status := G_RET_STS_ERROR;
568
569 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
570 x_return_status := G_RET_STS_UNEXP_ERROR;
571
572 WHEN OTHERS THEN
573 OKL_API.SET_MESSAGE (p_app_name => G_APP_NAME,
574 p_msg_name => G_DB_ERROR,
575 p_token1 => G_PROG_NAME_TOKEN,
576 p_token1_value => l_api_name,
577 p_token2 => G_SQLCODE_TOKEN,
578 p_token2_value => sqlcode,
579 p_token3 => G_SQLERRM_TOKEN,
580 p_token3_value => sqlerrm);
581
582 x_return_status := G_RET_STS_UNEXP_ERROR;
583
584 END validate_level_attributes;
585
586
587 ---------------------------------
588 -- PROCEDURE get_contract_details
589 ---------------------------------
590 PROCEDURE get_contract_details (
591 p_quote_type IN VARCHAR2
592 ,p_quote_id IN NUMBER
593 ,x_contract_details OUT NOCOPY contract_details_rec_type
594 ,x_return_status OUT NOCOPY VARCHAR2
595 ) IS
596
597 l_program_name CONSTANT VARCHAR2(30) := 'get_contract_details';
598 l_api_name CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_program_name;
599
600 CURSOR c_lq_hdr IS
601 SELECT
602 lop.currency_code
603 ,lsq.expected_start_date
604 ,lsq.term
605 ,lsq.pricing_method
606 FROM
607 okl_lease_quotes_b lsq
608 ,okl_lease_opportunities_b lop
609 WHERE lsq.id = p_quote_id
610 AND lsq.parent_object_code = 'LEASEOPP'
611 AND lsq.parent_object_id = lop.id;
612
613 CURSOR c_la_hdr IS
614 SELECT
615 lap.currency_code
616 ,lsq.expected_start_date
617 ,lsq.term
618 ,lsq.pricing_method
619 FROM
620 okl_lease_quotes_b lsq
621 ,okl_lease_applications_b lap
622 WHERE lsq.id = p_quote_id
623 AND lsq.parent_object_code = 'LEASEAPP'
624 AND lsq.parent_object_id = lap.id;
625
626 CURSOR c_qq_hdr IS
627 SELECT
628 currency_code
629 ,expected_start_date
630 ,term
631 ,pricing_method
632 FROM
633 okl_quick_quotes_b
634 WHERE id = p_quote_id;
635
636 BEGIN
637
638 IF p_quote_type = 'LQ' THEN
639 OPEN c_lq_hdr;
640 FETCH c_lq_hdr INTO x_contract_details;
641 CLOSE c_lq_hdr;
642 ELSIF p_quote_type = 'LA' THEN
643 OPEN c_la_hdr;
644 FETCH c_la_hdr INTO x_contract_details;
645 CLOSE c_la_hdr;
646 ELSIF p_quote_type = 'QQ' THEN
647 OPEN c_qq_hdr;
648 FETCH c_qq_hdr INTO x_contract_details;
649 CLOSE c_qq_hdr;
650 END IF;
651
652 IF (x_contract_details.currency_code IS NULL) OR (x_contract_details.start_date IS NULL) OR
653 (x_contract_details.term IS NULL) OR (x_contract_details.pricing_method_code IS NULL) THEN
654
655 OKL_API.SET_MESSAGE (
656 p_app_name => G_APP_NAME
657 ,p_msg_name => 'OKL_INVALID_VALUE2'
658 ,p_token1 => 'API_NAME'
659 ,p_token1_value => UPPER(l_api_name)
660 ,p_token2 => 'NAME'
661 ,p_token2_value => 'x_contract_details'
662 ,p_token3 => 'VALUE'
663 ,p_token3_value => 'null'
664 );
665 RAISE OKL_API.G_EXCEPTION_ERROR;
666
667 END IF;
668
669 x_return_status := G_RET_STS_SUCCESS;
670
671 EXCEPTION
672
673 WHEN OKL_API.G_EXCEPTION_ERROR THEN
674 x_return_status := G_RET_STS_ERROR;
675
676 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
677 x_return_status := G_RET_STS_UNEXP_ERROR;
678
679 WHEN OTHERS THEN
680 OKL_API.SET_MESSAGE (p_app_name => G_APP_NAME,
681 p_msg_name => G_DB_ERROR,
682 p_token1 => G_PROG_NAME_TOKEN,
683 p_token1_value => l_api_name,
684 p_token2 => G_SQLCODE_TOKEN,
685 p_token2_value => sqlcode,
686 p_token3 => G_SQLERRM_TOKEN,
687 p_token3_value => sqlerrm);
688
689 x_return_status := G_RET_STS_UNEXP_ERROR;
690
691 END get_contract_details;
692
693
694 ------------------------------
695 -- PROCEDURE process_cashflow
696 ------------------------------
697 PROCEDURE process_cashflow (
698 p_cashflow_header_rec IN OUT NOCOPY cashflow_header_rec_type
699 ,p_cashflow_level_tbl IN OUT NOCOPY cashflow_level_tbl_type
700 ,x_return_status OUT NOCOPY VARCHAR2
701 ) IS
702
703 l_program_name CONSTANT VARCHAR2(30) := 'process_cashflow';
704 l_api_name CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_program_name;
705
706 l_contract_details contract_details_rec_type;
707
708 BEGIN
709
710 sanity_check (
711 p_cashflow_header_rec => p_cashflow_header_rec
712 ,p_cashflow_level_tbl => p_cashflow_level_tbl
713 ,x_return_status => x_return_status
714 );
715
716 IF x_return_status = G_RET_STS_UNEXP_ERROR THEN
717 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
718 ELSIF x_return_status = G_RET_STS_ERROR THEN
719 RAISE OKL_API.G_EXCEPTION_ERROR;
720 END IF;
721
722 get_contract_details (
723 p_quote_type => p_cashflow_header_rec.quote_type_code
724 ,p_quote_id => p_cashflow_header_rec.quote_id
725 ,x_contract_details => l_contract_details
726 ,x_return_status => x_return_status
727 );
728
729 IF x_return_status = G_RET_STS_UNEXP_ERROR THEN
730 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
731 ELSIF x_return_status = G_RET_STS_ERROR THEN
732 RAISE OKL_API.G_EXCEPTION_ERROR;
733 END IF;
734
735 validate_level_attributes (
736 p_cashflow_level_tbl => p_cashflow_level_tbl
737 ,p_caf_status => p_cashflow_header_rec.status_code
738 ,p_pricing_method => l_contract_details.pricing_method_code
739 ,x_return_status => x_return_status
740 );
741
742 IF x_return_status = G_RET_STS_UNEXP_ERROR THEN
743 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
744 ELSIF x_return_status = G_RET_STS_ERROR THEN
745 RAISE OKL_API.G_EXCEPTION_ERROR;
746 END IF;
747
748 set_level_end_date (
749 p_contract_start_date => l_contract_details.start_date
750 ,p_contract_term => l_contract_details.term
751 ,p_cashflow_header_rec => p_cashflow_header_rec
752 ,p_cashflow_level_tbl => p_cashflow_level_tbl
753 ,x_return_status => x_return_status
754 );
755
756 IF x_return_status = G_RET_STS_UNEXP_ERROR THEN
757 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
758 ELSIF x_return_status = G_RET_STS_ERROR THEN
759 RAISE OKL_API.G_EXCEPTION_ERROR;
760 END IF;
761
762 set_level_amount (
763 p_contract_currency => l_contract_details.currency_code
764 ,p_cashflow_level_tbl => p_cashflow_level_tbl
765 ,x_return_status => x_return_status
766 );
767
768 IF x_return_status = G_RET_STS_UNEXP_ERROR THEN
769 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
770 ELSIF x_return_status = G_RET_STS_ERROR THEN
771 RAISE OKL_API.G_EXCEPTION_ERROR;
772 END IF;
773
774 x_return_status := G_RET_STS_SUCCESS;
775
776 EXCEPTION
777
778 WHEN OKL_API.G_EXCEPTION_ERROR THEN
779 x_return_status := G_RET_STS_ERROR;
780
781 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
782 x_return_status := G_RET_STS_UNEXP_ERROR;
783
784 WHEN OTHERS THEN
785 OKL_API.SET_MESSAGE (p_app_name => G_APP_NAME,
786 p_msg_name => G_DB_ERROR,
787 p_token1 => G_PROG_NAME_TOKEN,
788 p_token1_value => l_api_name,
789 p_token2 => G_SQLCODE_TOKEN,
790 p_token2_value => sqlcode,
791 p_token3 => G_SQLERRM_TOKEN,
792 p_token3_value => sqlerrm);
793
794 x_return_status := G_RET_STS_UNEXP_ERROR;
795
796 END process_cashflow;
797
798
799 ------------------------
800 -- PROCEDURE insert_rows
801 ------------------------
802 PROCEDURE insert_rows (
803 p_cashflow_header_rec IN OUT NOCOPY cashflow_header_rec_type
804 ,p_cashflow_level_tbl IN OUT NOCOPY cashflow_level_tbl_type
805 ,x_return_status OUT NOCOPY VARCHAR2
806 ,x_msg_count OUT NOCOPY NUMBER
807 ,x_msg_data OUT NOCOPY VARCHAR2
808 ) IS
809
810 l_program_name CONSTANT VARCHAR2(30) := 'insert_rows';
811 l_api_name CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_program_name;
812
813 l_cafv_rec cafv_rec_type;
814 lx_cafv_rec cafv_rec_type;
815
816 l_cfov_rec cfov_rec_type;
817 lx_cfov_rec cfov_rec_type;
818
819 l_cflv_tbl cflv_tbl_type;
820 lx_cflv_tbl cflv_tbl_type;
821
822 BEGIN
823
824 l_cfov_rec.object_version_number := 1;
825 l_cfov_rec.oty_code := p_cashflow_header_rec.parent_object_code;
826 l_cfov_rec.source_id := p_cashflow_header_rec.parent_object_id;
827
828 --Bug # 5142940 ssdeshpa start
829 IF (p_cashflow_header_rec.parent_object_code IN ('QUOTED_ASSET','QUOTED_ASSET_DOWN_PAYMENT','QUOTED_ASSET_PROPERTY_TAX')) THEN
830 l_cfov_rec.source_table := 'OKL_ASSETS_B';
831 --Bug # 5142940 ssdeshpa end
832 ELSIF (p_cashflow_header_rec.parent_object_code = 'QUOTED_FEE') THEN
833 l_cfov_rec.source_table := 'OKL_FEES_B';
834 ELSIF (p_cashflow_header_rec.parent_object_code = 'QUOTED_SERVICE') THEN
835 l_cfov_rec.source_table := 'OKL_SERVICES_B';
836 ELSIF (p_cashflow_header_rec.parent_object_code = 'QUOTED_INSURANCE') THEN
837 l_cfov_rec.source_table := 'OKL_INSURANCE_ESTIMATES_B';
838 ELSIF (p_cashflow_header_rec.parent_object_code = 'LEASE_QUOTE') THEN
839 l_cfov_rec.source_table := 'OKL_LEASE_QUOTES_B';
840 ELSIF (p_cashflow_header_rec.parent_object_code = 'QUICK_QUOTE') THEN
841 l_cfov_rec.source_table := 'OKL_QUICK_QUOTES_B';
842 ELSIF (p_cashflow_header_rec.parent_object_code = 'QUICK_QUOTE_ASSET') THEN
843 l_cfov_rec.source_table := 'OKL_QUICK_QUOTE_LINES_B';
844 ELSIF (p_cashflow_header_rec.parent_object_code = 'QUICK_QUOTE_SERVICE') THEN
845 l_cfov_rec.source_table := 'OKL_QUICK_QUOTE_LINES_B';
846 ELSIF (p_cashflow_header_rec.parent_object_code = 'QUICK_QUOTE_FEE') THEN
847 l_cfov_rec.source_table := 'OKL_QUICK_QUOTE_LINES_B';
848 ELSIF (p_cashflow_header_rec.parent_object_code = 'QUICK_QUOTE_TAX') THEN
849 l_cfov_rec.source_table := 'OKL_QUICK_QUOTE_LINES_B';
850 ELSIF (p_cashflow_header_rec.parent_object_code = 'QUICK_QUOTE_INSURANCE') THEN
851 l_cfov_rec.source_table := 'OKL_QUICK_QUOTE_LINES_B';
852 ELSIF (p_cashflow_header_rec.parent_object_code = 'LEASE_QUOTE_CONSOLIDATED') THEN
853 l_cfov_rec.source_table := 'OKL_LEASE_QUOTES_B';
854 END IF;
855
856 okl_cfo_pvt.insert_row (
857 p_api_version => G_API_VERSION
858 ,p_init_msg_list => G_FALSE
859 ,x_return_status => x_return_status
860 ,x_msg_count => x_msg_count
861 ,x_msg_data => x_msg_data
862 ,p_cfov_rec => l_cfov_rec
863 ,x_cfov_rec => lx_cfov_rec
864 );
865
866 IF x_return_status = G_RET_STS_UNEXP_ERROR THEN
867 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
868 ELSIF x_return_status = G_RET_STS_ERROR THEN
869 RAISE OKL_API.G_EXCEPTION_ERROR;
870 END IF;
871
872 l_cafv_rec.cfo_id := lx_cfov_rec.id;
873 l_cafv_rec.object_version_number := 1;
874 --bug 4898499
875 IF p_cashflow_header_rec.status_code = 'WORK' THEN
876 l_cafv_rec.sts_code := 'WORK';
877 ELSE
878 l_cafv_rec.sts_code := 'CURRENT';
879 END IF;
880 l_cafv_rec.sty_id := p_cashflow_header_rec.stream_type_id;
881 l_cafv_rec.due_arrears_yn := p_cashflow_header_rec.arrears_flag;
882 l_cafv_rec.dnz_qte_id := p_cashflow_header_rec.quote_id;
883 l_cafv_rec.start_date := p_cashflow_level_tbl(p_cashflow_level_tbl.FIRST).start_date;
884
885 IF p_cashflow_header_rec.type_code = 'INFLOW' THEN
886 l_cafv_rec.cft_code := 'PAYMENT_SCHEDULE';
887 ELSIF p_cashflow_header_rec.type_code = 'OUTFLOW' THEN
888 l_cafv_rec.cft_code := 'OUTFLOW_SCHEDULE';
889 END IF;
890
891 okl_caf_pvt.insert_row (
892 p_api_version => G_API_VERSION
893 ,p_init_msg_list => G_FALSE
894 ,x_return_status => x_return_status
895 ,x_msg_count => x_msg_count
896 ,x_msg_data => x_msg_data
897 ,p_cafv_rec => l_cafv_rec
898 ,x_cafv_rec => lx_cafv_rec
899 );
900
901 IF x_return_status = G_RET_STS_UNEXP_ERROR THEN
902 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
903 ELSIF x_return_status = G_RET_STS_ERROR THEN
904 RAISE OKL_API.G_EXCEPTION_ERROR;
905 END IF;
906
907 FOR i IN p_cashflow_level_tbl.FIRST .. p_cashflow_level_tbl.LAST LOOP
908 IF p_cashflow_level_tbl.EXISTS(i) THEN
909 l_cflv_tbl(i).caf_id := lx_cafv_rec.id;
910 l_cflv_tbl(i).object_version_number := 1;
911 l_cflv_tbl(i).number_of_periods := p_cashflow_level_tbl(i).periods;
912 l_cflv_tbl(i).amount := p_cashflow_level_tbl(i).periodic_amount;
913 l_cflv_tbl(i).stub_days := p_cashflow_level_tbl(i).stub_days;
914 l_cflv_tbl(i).stub_amount := p_cashflow_level_tbl(i).stub_amount;
915 l_cflv_tbl(i).start_date := p_cashflow_level_tbl(i).start_date;
916 l_cflv_tbl(i).fqy_code := p_cashflow_header_rec.frequency_code;
917 l_cflv_tbl(i).rate := p_cashflow_level_tbl(i).rate;
918 l_cflv_tbl(i).missing_pmt_flag := p_cashflow_level_tbl(i).missing_pmt_flag;
919 END IF;
920 END LOOP;
921
922 okl_cfl_pvt.insert_row (
923 p_api_version => G_API_VERSION
924 ,p_init_msg_list => G_FALSE
925 ,x_return_status => x_return_status
926 ,x_msg_count => x_msg_count
927 ,x_msg_data => x_msg_data
928 ,p_cflv_tbl => l_cflv_tbl
929 ,x_cflv_tbl => lx_cflv_tbl
930 );
931
932 IF x_return_status = G_RET_STS_UNEXP_ERROR THEN
933 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
934 ELSIF x_return_status = G_RET_STS_ERROR THEN
935 RAISE OKL_API.G_EXCEPTION_ERROR;
936 END IF;
937
938 p_cashflow_header_rec.cashflow_object_id := lx_cfov_rec.id;
939 p_cashflow_header_rec.cashflow_header_id := lx_cafv_rec.id;
940
941 populate_level_ids (
942 p_cf_header_id => p_cashflow_header_rec.cashflow_header_id
943 ,x_cf_levels_tbl => p_cashflow_level_tbl
944 ,x_return_status => x_return_status
945 );
946
947 IF x_return_status = G_RET_STS_UNEXP_ERROR THEN
948 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
949 ELSIF x_return_status = G_RET_STS_ERROR THEN
950 RAISE OKL_API.G_EXCEPTION_ERROR;
951 END IF;
952
953 EXCEPTION
954
955 WHEN OKL_API.G_EXCEPTION_ERROR THEN
956 x_return_status := G_RET_STS_ERROR;
957
958 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
959 x_return_status := G_RET_STS_UNEXP_ERROR;
960
961 WHEN OTHERS THEN
962 OKL_API.SET_MESSAGE (p_app_name => G_APP_NAME,
963 p_msg_name => G_DB_ERROR,
964 p_token1 => G_PROG_NAME_TOKEN,
965 p_token1_value => l_api_name,
966 p_token2 => G_SQLCODE_TOKEN,
967 p_token2_value => sqlcode,
968 p_token3 => G_SQLERRM_TOKEN,
969 p_token3_value => sqlerrm);
970
971 x_return_status := G_RET_STS_UNEXP_ERROR;
972
973 END insert_rows;
974
975
976 -------------------------------
977 -- PROCEDURE insert_update_rows
978 -------------------------------
979 PROCEDURE insert_update_rows (
980 p_cashflow_header_rec IN OUT NOCOPY cashflow_header_rec_type
981 ,p_cashflow_level_tbl IN OUT NOCOPY cashflow_level_tbl_type
982 ,x_return_status OUT NOCOPY VARCHAR2
983 ,x_msg_count OUT NOCOPY NUMBER
984 ,x_msg_data OUT NOCOPY VARCHAR2
985 ) IS
986
987 l_program_name CONSTANT VARCHAR2(30) := 'insert_update_rows';
988 l_api_name CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_program_name;
989
990 l_cafv_rec cafv_rec_type;
991 lx_cafv_rec cafv_rec_type;
992
993 l_cflv_ins_tbl cflv_tbl_type;
994 l_cflv_upd_tbl cflv_tbl_type;
995 lx_cflv_tbl cflv_tbl_type;
996
997 BEGIN
998
999 l_cafv_rec.id := p_cashflow_header_rec.cashflow_header_id;
1000 l_cafv_rec.object_version_number := p_cashflow_header_rec.cashflow_header_ovn;
1001 l_cafv_rec.cfo_id := p_cashflow_header_rec.cashflow_object_id;
1002 l_cafv_rec.sty_id := p_cashflow_header_rec.stream_type_id;
1003 l_cafv_rec.due_arrears_yn := p_cashflow_header_rec.arrears_flag;
1004 l_cafv_rec.start_date := p_cashflow_level_tbl(p_cashflow_level_tbl.FIRST).start_date;
1005
1006 okl_caf_pvt.update_row (
1007 p_api_version => G_API_VERSION
1008 ,p_init_msg_list => G_FALSE
1009 ,x_return_status => x_return_status
1010 ,x_msg_count => x_msg_count
1011 ,x_msg_data => x_msg_data
1012 ,p_cafv_rec => l_cafv_rec
1013 ,x_cafv_rec => lx_cafv_rec
1014 );
1015
1016 IF x_return_status = G_RET_STS_UNEXP_ERROR THEN
1017 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1018 ELSIF x_return_status = G_RET_STS_ERROR THEN
1019 RAISE OKL_API.G_EXCEPTION_ERROR;
1020 END IF;
1021
1022 FOR i IN p_cashflow_level_tbl.FIRST .. p_cashflow_level_tbl.LAST LOOP
1023 IF p_cashflow_level_tbl.EXISTS(i) THEN
1024 IF UPPER(p_cashflow_level_tbl(i).record_mode) = 'CREATE' THEN
1025 l_cflv_ins_tbl(i).caf_id := lx_cafv_rec.id;
1026 l_cflv_ins_tbl(i).object_version_number := 1;
1027 l_cflv_ins_tbl(i).number_of_periods := p_cashflow_level_tbl(i).periods;
1028 l_cflv_ins_tbl(i).amount := p_cashflow_level_tbl(i).periodic_amount;
1029 l_cflv_ins_tbl(i).stub_days := p_cashflow_level_tbl(i).stub_days;
1030 l_cflv_ins_tbl(i).stub_amount := p_cashflow_level_tbl(i).stub_amount;
1031 l_cflv_ins_tbl(i).start_date := p_cashflow_level_tbl(i).start_date;
1032 l_cflv_ins_tbl(i).fqy_code := p_cashflow_header_rec.frequency_code;
1033 l_cflv_ins_tbl(i).rate := p_cashflow_level_tbl(i).rate;
1034 l_cflv_ins_tbl(i).missing_pmt_flag := p_cashflow_level_tbl(i).missing_pmt_flag;
1035 ELSIF UPPER(p_cashflow_level_tbl(i).record_mode) = 'UPDATE' THEN
1036 l_cflv_upd_tbl(i).id := p_cashflow_level_tbl(i).cashflow_level_id;
1037 l_cflv_upd_tbl(i).caf_id := lx_cafv_rec.id;
1038 l_cflv_upd_tbl(i).object_version_number := p_cashflow_level_tbl(i).cashflow_level_ovn;
1039 l_cflv_upd_tbl(i).number_of_periods := p_cashflow_level_tbl(i).periods;
1040 l_cflv_upd_tbl(i).amount := p_cashflow_level_tbl(i).periodic_amount;
1041 l_cflv_upd_tbl(i).stub_days := p_cashflow_level_tbl(i).stub_days;
1042 l_cflv_upd_tbl(i).stub_amount := p_cashflow_level_tbl(i).stub_amount;
1043 l_cflv_upd_tbl(i).start_date := p_cashflow_level_tbl(i).start_date;
1044 l_cflv_upd_tbl(i).fqy_code := p_cashflow_header_rec.frequency_code;
1045 l_cflv_upd_tbl(i).rate := p_cashflow_level_tbl(i).rate;
1046 l_cflv_upd_tbl(i).missing_pmt_flag := p_cashflow_level_tbl(i).missing_pmt_flag;
1047 END IF;
1048 END IF;
1049 END LOOP;
1050
1051 IF l_cflv_ins_tbl.COUNT > 0 THEN
1052
1053 okl_cfl_pvt.insert_row (
1054 p_api_version => G_API_VERSION
1055 ,p_init_msg_list => G_FALSE
1056 ,x_return_status => x_return_status
1057 ,x_msg_count => x_msg_count
1058 ,x_msg_data => x_msg_data
1059 ,p_cflv_tbl => l_cflv_ins_tbl
1060 ,x_cflv_tbl => lx_cflv_tbl
1061 );
1062
1063 IF x_return_status = G_RET_STS_UNEXP_ERROR THEN
1064 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1065 ELSIF x_return_status = G_RET_STS_ERROR THEN
1066 RAISE OKL_API.G_EXCEPTION_ERROR;
1067 END IF;
1068
1069 END IF;
1070
1071 IF l_cflv_upd_tbl.COUNT > 0 THEN
1072
1073 okl_cfl_pvt.update_row (
1074 p_api_version => G_API_VERSION
1075 ,p_init_msg_list => G_FALSE
1076 ,x_return_status => x_return_status
1077 ,x_msg_count => x_msg_count
1078 ,x_msg_data => x_msg_data
1079 ,p_cflv_tbl => l_cflv_upd_tbl
1080 ,x_cflv_tbl => lx_cflv_tbl
1081 );
1082
1083 IF x_return_status = G_RET_STS_UNEXP_ERROR THEN
1084 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1085 ELSIF x_return_status = G_RET_STS_ERROR THEN
1086 RAISE OKL_API.G_EXCEPTION_ERROR;
1087 END IF;
1088
1089 END IF;
1090
1091 populate_level_ids (
1092 p_cf_header_id => p_cashflow_header_rec.cashflow_header_id
1093 ,x_cf_levels_tbl => p_cashflow_level_tbl
1094 ,x_return_status => x_return_status
1095 );
1096
1097 IF x_return_status = G_RET_STS_UNEXP_ERROR THEN
1098 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1099 ELSIF x_return_status = G_RET_STS_ERROR THEN
1100 RAISE OKL_API.G_EXCEPTION_ERROR;
1101 END IF;
1102
1103 EXCEPTION
1104
1105 WHEN OKL_API.G_EXCEPTION_ERROR THEN
1106 x_return_status := G_RET_STS_ERROR;
1107
1108 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1109 x_return_status := G_RET_STS_UNEXP_ERROR;
1110
1111 WHEN OTHERS THEN
1112 OKL_API.SET_MESSAGE (p_app_name => G_APP_NAME,
1113 p_msg_name => G_DB_ERROR,
1114 p_token1 => G_PROG_NAME_TOKEN,
1115 p_token1_value => l_api_name,
1116 p_token2 => G_SQLCODE_TOKEN,
1117 p_token2_value => sqlcode,
1118 p_token3 => G_SQLERRM_TOKEN,
1119 p_token3_value => sqlerrm);
1120
1121 x_return_status := G_RET_STS_UNEXP_ERROR;
1122
1123 END insert_update_rows;
1124
1125
1126 ----------------------------------------
1127 -- PROCEDURE get_deleted_cashflow_levels
1128 ----------------------------------------
1129 PROCEDURE get_deleted_cashflow_levels (p_cashflow_header_id IN NUMBER,
1130 p_cashflow_level_tbl IN cashflow_level_tbl_type,
1131 x_deleted_cashflow_level_tbl OUT NOCOPY cflv_tbl_type,
1132 x_return_status OUT NOCOPY VARCHAR2) IS
1133
1134 l_program_name CONSTANT VARCHAR2(30) := 'get_deleted_cashflow_levels';
1135 l_api_name CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_program_name;
1136
1137 CURSOR c_db_cashflow_levels IS
1138 SELECT id
1139 FROM okl_cash_flow_levels
1140 WHERE caf_id = p_cashflow_header_id;
1141
1142 l_cashflow_level_tbl cflv_tbl_type;
1143 l_delete_flag VARCHAR2(1);
1144 i BINARY_INTEGER := 0;
1145
1146 BEGIN
1147
1148 IF (p_cashflow_level_tbl.COUNT > 0) THEN
1149 FOR l_db_cashflow_levels IN c_db_cashflow_levels LOOP
1150 l_delete_flag := 'Y';
1151 FOR j IN p_cashflow_level_tbl.FIRST .. p_cashflow_level_tbl.LAST LOOP
1152 IF p_cashflow_level_tbl.EXISTS(j) THEN
1153 IF l_db_cashflow_levels.id = p_cashflow_level_tbl(j).cashflow_level_id THEN
1154 l_delete_flag := 'N';
1155 END IF;
1156 END IF;
1157 END LOOP;
1158
1159 IF l_delete_flag = 'Y' THEN
1160 l_cashflow_level_tbl(i).id := l_db_cashflow_levels.id;
1161 i := i + 1;
1162 END IF;
1163 END LOOP;
1164 ELSE
1165 FOR l_db_cashflow_levels IN c_db_cashflow_levels LOOP
1166 l_cashflow_level_tbl(i).id := l_db_cashflow_levels.id;
1167 i := i + 1;
1168 END LOOP;
1169 END IF;
1170
1171 x_deleted_cashflow_level_tbl := l_cashflow_level_tbl;
1172 x_return_status := G_RET_STS_SUCCESS;
1173
1174 EXCEPTION
1175
1176 WHEN OKL_API.G_EXCEPTION_ERROR THEN
1177 x_return_status := G_RET_STS_ERROR;
1178
1179 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1180 x_return_status := G_RET_STS_UNEXP_ERROR;
1181
1182 WHEN OTHERS THEN
1183 OKL_API.SET_MESSAGE (p_app_name => G_APP_NAME,
1184 p_msg_name => G_DB_ERROR,
1185 p_token1 => G_PROG_NAME_TOKEN,
1186 p_token1_value => l_api_name,
1187 p_token2 => G_SQLCODE_TOKEN,
1188 p_token2_value => sqlcode,
1189 p_token3 => G_SQLERRM_TOKEN,
1190 p_token3_value => sqlerrm);
1191
1192 x_return_status := G_RET_STS_UNEXP_ERROR;
1193
1194 END get_deleted_cashflow_levels;
1195
1196
1197 --------------------------------------
1198 -- PROCEDURE process_cashflow_deletion
1199 --------------------------------------
1200 PROCEDURE process_cashflow_deletion (
1201 p_cashflow_header_rec IN cashflow_header_rec_type
1202 ,p_cashflow_level_tbl IN cashflow_level_tbl_type
1203 ,x_return_status OUT NOCOPY VARCHAR2
1204 ,x_msg_count OUT NOCOPY NUMBER
1205 ,x_msg_data OUT NOCOPY VARCHAR2
1206 ) IS
1207
1208 l_program_name CONSTANT VARCHAR2(30) := 'process_cashflow_deletion';
1209 l_api_name CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_program_name;
1210
1211 l_deleted_cf_level_tbl cflv_tbl_type;
1212
1213 l_cafv_rec cafv_rec_type;
1214 l_cfov_rec cfov_rec_type;
1215
1216 BEGIN
1217
1218 get_deleted_cashflow_levels (
1219 p_cashflow_header_id => p_cashflow_header_rec.cashflow_header_id
1220 ,p_cashflow_level_tbl => p_cashflow_level_tbl
1221 ,x_deleted_cashflow_level_tbl => l_deleted_cf_level_tbl
1222 ,x_return_status => x_return_status
1223 );
1224
1225 IF x_return_status = G_RET_STS_UNEXP_ERROR THEN
1226 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1227 ELSIF x_return_status = G_RET_STS_ERROR THEN
1228 RAISE OKL_API.G_EXCEPTION_ERROR;
1229 END IF;
1230
1231 IF l_deleted_cf_level_tbl.COUNT > 0 THEN
1232
1233 okl_cfl_pvt.delete_row (
1234 p_api_version => G_API_VERSION
1235 ,p_init_msg_list => G_FALSE
1236 ,x_return_status => x_return_status
1237 ,x_msg_count => x_msg_count
1238 ,x_msg_data => x_msg_data
1239 ,p_cflv_tbl => l_deleted_cf_level_tbl
1240 );
1241
1242 IF x_return_status = G_RET_STS_UNEXP_ERROR THEN
1243 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1244 ELSIF x_return_status = G_RET_STS_ERROR THEN
1245 RAISE OKL_API.G_EXCEPTION_ERROR;
1246 END IF;
1247
1248 END IF;
1249
1250 IF p_cashflow_level_tbl.COUNT = 0 THEN
1251
1252 l_cafv_rec.id := p_cashflow_header_rec.cashflow_header_id;
1253
1254 okl_caf_pvt.delete_row (
1255 p_api_version => G_API_VERSION
1256 ,p_init_msg_list => G_FALSE
1257 ,x_return_status => x_return_status
1258 ,x_msg_count => x_msg_count
1259 ,x_msg_data => x_msg_data
1260 ,p_cafv_rec => l_cafv_rec
1261 );
1262
1263 IF x_return_status = G_RET_STS_UNEXP_ERROR THEN
1264 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1265 ELSIF x_return_status = G_RET_STS_ERROR THEN
1266 RAISE OKL_API.G_EXCEPTION_ERROR;
1267 END IF;
1268
1269 l_cfov_rec.id := p_cashflow_header_rec.cashflow_object_id;
1270
1271 okl_cfo_pvt.delete_row (
1272 p_api_version => G_API_VERSION
1273 ,p_init_msg_list => G_FALSE
1274 ,x_return_status => x_return_status
1275 ,x_msg_count => x_msg_count
1276 ,x_msg_data => x_msg_data
1277 ,p_cfov_rec => l_cfov_rec
1278 );
1279
1280 IF x_return_status = G_RET_STS_UNEXP_ERROR THEN
1281 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1282 ELSIF x_return_status = G_RET_STS_ERROR THEN
1283 RAISE OKL_API.G_EXCEPTION_ERROR;
1284 END IF;
1285
1286 END IF;
1287
1288 EXCEPTION
1289
1290 WHEN OKL_API.G_EXCEPTION_ERROR THEN
1291 x_return_status := G_RET_STS_ERROR;
1292
1293 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1294 x_return_status := G_RET_STS_UNEXP_ERROR;
1295
1296 WHEN OTHERS THEN
1297 OKL_API.SET_MESSAGE (p_app_name => G_APP_NAME,
1298 p_msg_name => G_DB_ERROR,
1299 p_token1 => G_PROG_NAME_TOKEN,
1300 p_token1_value => l_api_name,
1301 p_token2 => G_SQLCODE_TOKEN,
1302 p_token2_value => sqlcode,
1303 p_token3 => G_SQLERRM_TOKEN,
1304 p_token3_value => sqlerrm);
1305
1306 x_return_status := G_RET_STS_UNEXP_ERROR;
1307
1308 END process_cashflow_deletion;
1309
1310 ----------------------------
1311 -- PROCEDURE create_cashflow
1312 ----------------------------
1313 PROCEDURE create_cashflow (
1314 p_api_version IN NUMBER
1315 ,p_init_msg_list IN VARCHAR2
1316 ,p_transaction_control IN VARCHAR2
1317 ,p_cashflow_header_rec IN OUT NOCOPY cashflow_header_rec_type
1318 ,p_cashflow_level_tbl IN OUT NOCOPY cashflow_level_tbl_type
1319 ,x_return_status OUT NOCOPY VARCHAR2
1320 ,x_msg_count OUT NOCOPY NUMBER
1321 ,x_msg_data OUT NOCOPY VARCHAR2) IS
1322
1323 l_program_name CONSTANT VARCHAR2(30) := 'create_cashflow';
1324 l_api_name CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_program_name;
1325
1326 BEGIN
1327
1328 IF p_transaction_control = G_TRUE THEN
1329 SAVEPOINT l_program_name;
1330 END IF;
1331
1332 IF p_init_msg_list = G_TRUE THEN
1333 FND_MSG_PUB.initialize;
1334 END IF;
1335
1336 IF p_cashflow_level_tbl.COUNT = 0 THEN
1337 OKL_API.SET_MESSAGE (p_app_name => G_APP_NAME, p_msg_name => 'OKL_LEVEL_REQD_LEVELS');
1338 RAISE OKL_API.G_EXCEPTION_ERROR;
1339 END IF;
1340
1341 process_cashflow (
1342 p_cashflow_header_rec => p_cashflow_header_rec
1343 ,p_cashflow_level_tbl => p_cashflow_level_tbl
1344 ,x_return_status => x_return_status
1345 );
1346
1347 IF x_return_status = G_RET_STS_UNEXP_ERROR THEN
1348 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1349 ELSIF x_return_status = G_RET_STS_ERROR THEN
1350 RAISE OKL_API.G_EXCEPTION_ERROR;
1351 END IF;
1352
1353 insert_rows (
1354 p_cashflow_header_rec => p_cashflow_header_rec
1355 ,p_cashflow_level_tbl => p_cashflow_level_tbl
1356 ,x_return_status => x_return_status
1357 ,x_msg_count => x_msg_count
1358 ,x_msg_data => x_msg_data
1359 );
1360
1361 IF x_return_status = G_RET_STS_UNEXP_ERROR THEN
1362 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1363 ELSIF x_return_status = G_RET_STS_ERROR THEN
1364 RAISE OKL_API.G_EXCEPTION_ERROR;
1365 END IF;
1366
1367 EXCEPTION
1368
1369 WHEN OKL_API.G_EXCEPTION_ERROR THEN
1370
1371 IF p_transaction_control = G_TRUE THEN
1372 ROLLBACK TO l_program_name;
1373 fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
1374 END IF;
1375
1376 x_return_status := G_RET_STS_ERROR;
1377
1378 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1379
1380 IF p_transaction_control = G_TRUE THEN
1381 ROLLBACK TO l_program_name;
1382 fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
1383 END IF;
1384
1385 x_return_status := G_RET_STS_UNEXP_ERROR;
1386
1387 WHEN OTHERS THEN
1388
1389 OKL_API.SET_MESSAGE (p_app_name => G_APP_NAME,
1390 p_msg_name => G_DB_ERROR,
1391 p_token1 => G_PROG_NAME_TOKEN,
1392 p_token1_value => l_api_name,
1393 p_token2 => G_SQLCODE_TOKEN,
1394 p_token2_value => sqlcode,
1395 p_token3 => G_SQLERRM_TOKEN,
1396 p_token3_value => sqlerrm);
1397
1398 IF p_transaction_control = G_TRUE THEN
1399 ROLLBACK TO l_program_name;
1400 fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
1401 END IF;
1402
1403 x_return_status := G_RET_STS_UNEXP_ERROR;
1404
1405 END create_cashflow;
1406
1407
1408 ----------------------------
1409 -- PROCEDURE update_cashflow
1410 ----------------------------
1411 PROCEDURE update_cashflow (
1412 p_api_version IN NUMBER
1413 ,p_init_msg_list IN VARCHAR2
1414 ,p_transaction_control IN VARCHAR2
1415 ,p_cashflow_header_rec IN OUT NOCOPY cashflow_header_rec_type
1416 ,p_cashflow_level_tbl IN OUT NOCOPY cashflow_level_tbl_type
1417 ,x_return_status OUT NOCOPY VARCHAR2
1418 ,x_msg_count OUT NOCOPY NUMBER
1419 ,x_msg_data OUT NOCOPY VARCHAR2) IS
1420
1421 l_program_name CONSTANT VARCHAR2(30) := 'update_cashflow';
1422 l_api_name CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_program_name;
1423
1424 BEGIN
1425
1426 IF p_transaction_control = G_TRUE THEN
1427 SAVEPOINT l_program_name;
1428 END IF;
1429
1430 IF p_init_msg_list = G_TRUE THEN
1431 FND_MSG_PUB.initialize;
1432 END IF;
1433
1434 IF p_cashflow_level_tbl.COUNT = 0 AND p_cashflow_header_rec.stream_type_id IS NOT NULL THEN
1435 OKL_API.SET_MESSAGE (p_app_name => G_APP_NAME, p_msg_name => 'OKL_LEVEL_REQD_LEVELS');
1436 RAISE OKL_API.G_EXCEPTION_ERROR;
1437 END IF;
1438
1439 process_cashflow_deletion (
1440 p_cashflow_header_rec => p_cashflow_header_rec
1441 ,p_cashflow_level_tbl => p_cashflow_level_tbl
1442 ,x_return_status => x_return_status
1443 ,x_msg_count => x_msg_count
1444 ,x_msg_data => x_msg_data
1445 );
1446
1447 IF x_return_status = G_RET_STS_UNEXP_ERROR THEN
1448 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1449 ELSIF x_return_status = G_RET_STS_ERROR THEN
1450 RAISE OKL_API.G_EXCEPTION_ERROR;
1451 END IF;
1452
1453 process_cashflow (
1454 p_cashflow_header_rec => p_cashflow_header_rec
1455 ,p_cashflow_level_tbl => p_cashflow_level_tbl
1456 ,x_return_status => x_return_status
1457 );
1458
1459 IF x_return_status = G_RET_STS_UNEXP_ERROR THEN
1460 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1461 ELSIF x_return_status = G_RET_STS_ERROR THEN
1462 RAISE OKL_API.G_EXCEPTION_ERROR;
1463 END IF;
1464
1465 insert_update_rows (
1466 p_cashflow_header_rec => p_cashflow_header_rec
1467 ,p_cashflow_level_tbl => p_cashflow_level_tbl
1468 ,x_return_status => x_return_status
1469 ,x_msg_count => x_msg_count
1470 ,x_msg_data => x_msg_data
1471 );
1472
1473 IF x_return_status = G_RET_STS_UNEXP_ERROR THEN
1474 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1475 ELSIF x_return_status = G_RET_STS_ERROR THEN
1476 RAISE OKL_API.G_EXCEPTION_ERROR;
1477 END IF;
1478
1479 EXCEPTION
1480
1481 WHEN OKL_API.G_EXCEPTION_ERROR THEN
1482
1483 IF p_transaction_control = G_TRUE THEN
1484 ROLLBACK TO l_program_name;
1485 fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
1486 END IF;
1487
1488 x_return_status := G_RET_STS_ERROR;
1489
1490 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1491
1492 IF p_transaction_control = G_TRUE THEN
1493 ROLLBACK TO l_program_name;
1494 fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
1495 END IF;
1496
1497 x_return_status := G_RET_STS_UNEXP_ERROR;
1498
1499 WHEN OTHERS THEN
1500
1501 OKL_API.SET_MESSAGE (p_app_name => G_APP_NAME,
1502 p_msg_name => G_DB_ERROR,
1503 p_token1 => G_PROG_NAME_TOKEN,
1504 p_token1_value => l_api_name,
1505 p_token2 => G_SQLCODE_TOKEN,
1506 p_token2_value => sqlcode,
1507 p_token3 => G_SQLERRM_TOKEN,
1508 p_token3_value => sqlerrm);
1509
1510 IF p_transaction_control = G_TRUE THEN
1511 ROLLBACK TO l_program_name;
1512 fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
1513 END IF;
1514
1515 x_return_status := G_RET_STS_UNEXP_ERROR;
1516
1517 END update_cashflow;
1518
1519
1520 --------------------------------
1521 -- PROCEDURE duplicate_cashflows
1522 --------------------------------
1523 PROCEDURE duplicate_cashflows (
1524 p_api_version IN NUMBER
1525 ,p_init_msg_list IN VARCHAR2
1526 ,p_transaction_control IN VARCHAR2
1527 ,p_source_object_code IN VARCHAR2
1528 ,p_source_object_id IN NUMBER
1529 ,p_target_object_id IN NUMBER
1530 ,p_quote_id IN NUMBER
1531 ,x_return_status OUT NOCOPY VARCHAR2
1532 ,x_msg_count OUT NOCOPY NUMBER
1533 ,x_msg_data OUT NOCOPY VARCHAR2
1534 ,p_target_object_code IN VARCHAR2 DEFAULT NULL
1535 ) IS
1536
1537 l_program_name CONSTANT VARCHAR2(30) := 'duplicate_cashflows';
1538 l_api_name CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_program_name;
1539
1540 l_cashflow_header_rec cashflow_header_rec_type;
1541 l_cashflow_level_tbl cashflow_level_tbl_type;
1542
1543 l_return_status VARCHAR2(1);
1544 l_source_table VARCHAR2(30);
1545 l_cashflow_object_id NUMBER;
1546 l_cft_code VARCHAR2(30);
1547 lv_frq_code VARCHAR2(30);
1548 lv_parent_object_code VARCHAR2(30);
1549 i BINARY_INTEGER := 0;
1550 j BINARY_INTEGER := 0;
1551 --Bug # 5021937 ssdeshpa start
1552 l_qte_price_method VARCHAR2(30);
1553 l_qte_status VARCHAR2(30);
1554 l_caf_status VARCHAR2(30);
1555
1556 CURSOR c_lq_hdr_rec_cur(p_lease_quote_id NUMBER)
1557 IS
1558 SELECT pricing_method,status,parent_object_code
1559 FROM OKL_LEASE_QUOTES_B
1560 where id = p_lease_quote_id;
1561 --Bug # 5021937 ssdeshpa end;
1562 CURSOR c_cf_objects (p_oty_code VARCHAR2, p_source_table VARCHAR2, p_source_id NUMBER)
1563 IS
1564 SELECT id
1565 FROM okl_cash_flow_objects
1566 WHERE
1567 oty_code = p_oty_code
1568 AND source_table = p_source_table
1569 AND source_id = p_source_id;
1570
1571 CURSOR c_cf_headers (p_cfo_id NUMBER)
1572 IS
1573 SELECT id, sty_id, due_arrears_yn, cft_code , sts_code
1574 FROM okl_cash_flows
1575 WHERE cfo_id = p_cfo_id;
1576 --Bug # 5021937 ssdeshpa start
1577 --changed the Cursor
1578 CURSOR c_cf_levels (p_caf_id NUMBER)
1579 IS
1580 SELECT amount, number_of_periods, fqy_code, stub_days, stub_amount, rate , missing_pmt_flag
1581 FROM OKL_CASH_FLOW_LEVELS
1582 WHERE caf_id = p_caf_id;
1583 --Bug # 5021937 ssdeshpa End
1584 BEGIN
1585
1586 IF p_transaction_control = G_TRUE THEN
1587 SAVEPOINT l_program_name;
1588 END IF;
1589
1590 IF p_init_msg_list = G_TRUE THEN
1591 FND_MSG_PUB.initialize;
1592 END IF;
1593
1594 get_source_table (
1595 p_source_object_code => p_source_object_code
1596 ,x_source_table => l_source_table
1597 ,x_return_status => x_return_status
1598 );
1599
1600 IF x_return_status = G_RET_STS_UNEXP_ERROR THEN
1601 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1602 ELSIF x_return_status = G_RET_STS_ERROR THEN
1603 RAISE OKL_API.G_EXCEPTION_ERROR;
1604 END IF;
1605 --Bug # 5021937 ssdeshpa start
1606 --This will fetch current Quote Status and Pricing Methods
1607 OPEN c_lq_hdr_rec_cur(p_quote_id);
1608 FETCH c_lq_hdr_rec_cur INTO l_qte_price_method,l_qte_status,lv_parent_object_code;
1609 CLOSE c_lq_hdr_rec_cur;
1610 --Bug # 5021937 ssdeshpa end
1611 FOR l_cf_object IN c_cf_objects (
1612 p_oty_code => p_source_object_code
1613 ,p_source_table => l_source_table
1614 , p_source_id => p_source_object_id) LOOP
1615
1616 OPEN c_cf_headers(p_cfo_id => l_cf_object.id);
1617 --Bug # 5021937 ssdeshpa Start
1618 FETCH c_cf_headers INTO l_cashflow_header_rec.cashflow_header_id,
1619 l_cashflow_header_rec.stream_type_id,
1620 l_cashflow_header_rec.arrears_flag,
1621 l_cft_code,
1622 l_caf_status;
1623 --Bug # 5021937 ssdeshpa end
1624 CLOSE c_cf_headers;
1625
1626 IF ( l_caf_status = 'WORK' AND l_qte_status = 'CT-ACCEPTED' )
1627 OR ( l_caf_status = 'CURRENT' ) THEN
1628 -- gboomina added for bug 7033915 start
1629 l_cashflow_header_rec.status_code := l_caf_status;
1630 -- gboomina added for bug 7033915 end
1631
1632 IF p_target_object_code IS NULL THEN
1633 l_cashflow_header_rec.parent_object_code := p_source_object_code;
1634 ELSE
1635 l_cashflow_header_rec.parent_object_code := p_target_object_code;
1636 END IF;
1637 l_cashflow_header_rec.parent_object_id := p_target_object_id;
1638 l_cashflow_header_rec.quote_id := p_quote_id;
1639 /*
1640 -- Fetch the Quote type
1641 SELECT parent_object_code
1642 INTO lv_parent_object_code
1643 FROM okl_lease_quotes_b
1644 WHERE id = p_quote_id;*/
1645
1646 IF (lv_parent_object_code = 'LEASEOPP') THEN
1647 l_cashflow_header_rec.quote_type_code := 'LQ';
1648 ELSIF (lv_parent_object_code = 'LEASEAPP') THEN
1649 l_cashflow_header_rec.quote_type_code := 'LA';
1650 ELSE
1651 l_cashflow_header_rec.quote_type_code := 'QQ';
1652 END IF;
1653 -- End
1654
1655 IF (l_cft_code = 'PAYMENT_SCHEDULE') THEN
1656 l_cashflow_header_rec.type_code := 'INFLOW';
1657 ELSIF (l_cft_code = 'OUTFLOW_SCHEDULE') THEN
1658 l_cashflow_header_rec.type_code := 'OUTFLOW';
1659 END IF;
1660 --asawanka bug 4936130 changes start
1661 j := 0;
1662 l_cashflow_level_tbl.delete;
1663 --asawanka bug 4936130 changes end
1664 FOR l_cf_level IN c_cf_levels (p_caf_id => l_cashflow_header_rec.cashflow_header_id) LOOP
1665 --Bug # 5021937 ssdeshpa start
1666 /*If pricing Method is solve For Missing Payment then,For Cash Flows which are Missing Payment For Quote
1667 Cash flow Level's Missing Payment Flag ,Periodic Amount ,Stub Amount will be nullified.
1668
1669 If pricing Method is 'Solve for Payment' then,Cash Flow's Periodic Amount field will be nullified.
1670
1671 For 'Solve for Yields' Rate will be nullified.*/
1672
1673 IF(l_qte_status <> 'CT-ACCEPTED') THEN
1674 IF(l_qte_price_method ='SM' AND l_cf_level.missing_pmt_flag = 'Y') THEN
1675 l_cashflow_level_tbl(j).periods := l_cf_level.number_of_periods;
1676 l_cashflow_level_tbl(j).periodic_amount := null;
1677 l_cashflow_level_tbl(j).stub_days := l_cf_level.stub_days;
1678 l_cashflow_level_tbl(j).stub_amount := null;
1679 l_cashflow_level_tbl(j).rate := l_cf_level.rate;
1680 l_cashflow_level_tbl(j).missing_pmt_flag := null;
1681 ELSIF(l_qte_price_method ='SP') THEN
1682 l_cashflow_level_tbl(j).periods := l_cf_level.number_of_periods;
1683 l_cashflow_level_tbl(j).periodic_amount := null;
1684 l_cashflow_level_tbl(j).stub_days := l_cf_level.stub_days;
1685 l_cashflow_level_tbl(j).stub_amount := null;
1686 l_cashflow_level_tbl(j).rate := l_cf_level.rate;
1687
1688 ELSIF(l_qte_price_method ='SY') THEN
1689 l_cashflow_level_tbl(j).periods := l_cf_level.number_of_periods;
1690 l_cashflow_level_tbl(j).periodic_amount := l_cf_level.amount;
1691 l_cashflow_level_tbl(j).stub_days := l_cf_level.stub_days;
1692 l_cashflow_level_tbl(j).stub_amount := l_cf_level.stub_amount;
1693 l_cashflow_level_tbl(j).rate := null;
1694 ELSE
1695 l_cashflow_level_tbl(j).periods := l_cf_level.number_of_periods;
1696 l_cashflow_level_tbl(j).periodic_amount := l_cf_level.amount;
1697 l_cashflow_level_tbl(j).stub_days := l_cf_level.stub_days;
1698 l_cashflow_level_tbl(j).stub_amount := l_cf_level.stub_amount;
1699 l_cashflow_level_tbl(j).rate := l_cf_level.rate;
1700 END IF;
1701 ELSE
1702 l_cashflow_level_tbl(j).periods := l_cf_level.number_of_periods;
1703 l_cashflow_level_tbl(j).periodic_amount := l_cf_level.amount;
1704 l_cashflow_level_tbl(j).stub_days := l_cf_level.stub_days;
1705 l_cashflow_level_tbl(j).stub_amount := l_cf_level.stub_amount;
1706 l_cashflow_level_tbl(j).rate := l_cf_level.rate;
1707
1708 END IF;
1709 --Bug # 5021937 ssdeshpa end;
1710 lv_frq_code := l_cf_level.fqy_code;
1711 j := j + 1;
1712 END LOOP;
1713
1714 l_cashflow_header_rec.frequency_code := lv_frq_code;
1715
1716 -- Duplicate equals to 'create' mode, for sanity check purpose
1717 FOR i IN l_cashflow_level_tbl.FIRST .. l_cashflow_level_tbl.LAST LOOP
1718 IF l_cashflow_level_tbl.EXISTS(i) THEN
1719 l_cashflow_level_tbl(i).record_mode := 'create';
1720 END IF;
1721 END LOOP;
1722
1723 create_cashflow ( p_api_version => G_API_VERSION
1724 ,p_init_msg_list => G_FALSE
1725 ,p_transaction_control => G_FALSE
1726 ,p_cashflow_header_rec => l_cashflow_header_rec
1727 ,p_cashflow_level_tbl => l_cashflow_level_tbl
1728 ,x_return_status => l_return_status
1729 ,x_msg_count => x_msg_count
1730 ,x_msg_data => x_msg_data);
1731
1732 IF l_return_status = G_RET_STS_UNEXP_ERROR THEN
1733 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1734 ELSIF l_return_status = G_RET_STS_ERROR THEN
1735 RAISE OKL_API.G_EXCEPTION_ERROR;
1736 END IF;
1737
1738 -- i := i + 1;
1739 END IF;
1740 END LOOP;
1741
1742 x_return_status := G_RET_STS_SUCCESS;
1743
1744 EXCEPTION
1745
1746 WHEN OKL_API.G_EXCEPTION_ERROR THEN
1747
1748 IF p_transaction_control = G_TRUE THEN
1749 ROLLBACK TO l_program_name;
1750 fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
1751 END IF;
1752
1753 x_return_status := G_RET_STS_ERROR;
1754
1755 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1756
1757 IF p_transaction_control = G_TRUE THEN
1758 ROLLBACK TO l_program_name;
1759 fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
1760 END IF;
1761
1762 x_return_status := G_RET_STS_UNEXP_ERROR;
1763
1764 WHEN OTHERS THEN
1765
1766 OKL_API.SET_MESSAGE (p_app_name => G_APP_NAME,
1767 p_msg_name => G_DB_ERROR,
1768 p_token1 => G_PROG_NAME_TOKEN,
1769 p_token1_value => l_api_name,
1770 p_token2 => G_SQLCODE_TOKEN,
1771 p_token2_value => sqlcode,
1772 p_token3 => G_SQLERRM_TOKEN,
1773 p_token3_value => sqlerrm);
1774
1775 IF p_transaction_control = G_TRUE THEN
1776 ROLLBACK TO l_program_name;
1777 fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
1778 END IF;
1779
1780 x_return_status := G_RET_STS_UNEXP_ERROR;
1781
1782 END duplicate_cashflows;
1783
1784
1785 -----------------------------
1786 -- PROCEDURE delete_cashflows
1787 -----------------------------
1788 PROCEDURE delete_cashflows (
1789 p_api_version IN NUMBER
1790 ,p_init_msg_list IN VARCHAR2
1791 ,p_transaction_control IN VARCHAR2
1792 ,p_source_object_code IN VARCHAR2
1793 ,p_source_object_id IN NUMBER
1794 ,x_return_status OUT NOCOPY VARCHAR2
1795 ,x_msg_count OUT NOCOPY NUMBER
1796 ,x_msg_data OUT NOCOPY VARCHAR2
1797 ) IS
1798
1799 l_program_name CONSTANT VARCHAR2(30) := 'delete_cashflows';
1800 l_api_name CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_program_name;
1801
1802 l_source_table VARCHAR2(30);
1803
1804
1805 BEGIN
1806
1807 get_source_table (
1808 p_source_object_code => p_source_object_code
1809 ,x_source_table => l_source_table
1810 ,x_return_status => x_return_status
1811 );
1812
1813 IF x_return_status = G_RET_STS_UNEXP_ERROR THEN
1814 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1815 ELSIF x_return_status = G_RET_STS_ERROR THEN
1816 RAISE OKL_API.G_EXCEPTION_ERROR;
1817 END IF;
1818
1819 DELETE FROM okl_cash_flow_levels WHERE caf_id IN
1820 (SELECT id FROM okl_cash_flows WHERE cfo_id IN
1821 (SELECT id
1822 FROM okl_cash_flow_objects
1823 WHERE oty_code = p_source_object_code AND source_table = l_source_table AND source_id = p_source_object_id
1824 )
1825 );
1826
1827 DELETE FROM okl_cash_flows WHERE cfo_id IN
1828 (SELECT id
1829 FROM okl_cash_flow_objects
1830 WHERE oty_code = p_source_object_code AND source_table = l_source_table AND source_id = p_source_object_id
1831 );
1832
1833 DELETE FROM okl_cash_flow_objects
1834 WHERE oty_code = p_source_object_code AND source_table = l_source_table AND source_id = p_source_object_id;
1835
1836 x_return_status := G_RET_STS_SUCCESS;
1837
1838 EXCEPTION
1839
1840 WHEN OKL_API.G_EXCEPTION_ERROR THEN
1841
1842 IF p_transaction_control = G_TRUE THEN
1843 ROLLBACK TO l_program_name;
1844 fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
1845 END IF;
1846
1847 x_return_status := G_RET_STS_ERROR;
1848
1849 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1850
1851 IF p_transaction_control = G_TRUE THEN
1852 ROLLBACK TO l_program_name;
1853 fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
1854 END IF;
1855
1856 x_return_status := G_RET_STS_UNEXP_ERROR;
1857
1858 WHEN OTHERS THEN
1859
1860 OKL_API.SET_MESSAGE (p_app_name => G_APP_NAME,
1861 p_msg_name => G_DB_ERROR,
1862 p_token1 => G_PROG_NAME_TOKEN,
1863 p_token1_value => l_api_name,
1864 p_token2 => G_SQLCODE_TOKEN,
1865 p_token2_value => sqlcode,
1866 p_token3 => G_SQLERRM_TOKEN,
1867 p_token3_value => sqlerrm);
1868
1869 IF p_transaction_control = G_TRUE THEN
1870 ROLLBACK TO l_program_name;
1871 fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
1872 END IF;
1873
1874 x_return_status := G_RET_STS_UNEXP_ERROR;
1875
1876 END delete_cashflows;
1877
1878
1879 ----------------------------
1880 -- PROCEDURE delete_cashflow
1881 ----------------------------
1882 PROCEDURE delete_cashflow (
1883 p_api_version IN NUMBER
1884 ,p_init_msg_list IN VARCHAR2
1885 ,p_transaction_control IN VARCHAR2
1886 ,p_cashflow_header_id IN NUMBER
1887 ,x_return_status OUT NOCOPY VARCHAR2
1888 ,x_msg_count OUT NOCOPY NUMBER
1889 ,x_msg_data OUT NOCOPY VARCHAR2
1890 ) IS
1891
1892 l_program_name CONSTANT VARCHAR2(30) := 'delete_cashflow';
1893 l_api_name CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_program_name;
1894
1895 BEGIN
1896
1897 DELETE FROM okl_cash_flow_levels WHERE caf_id = p_cashflow_header_id;
1898 DELETE FROM okl_cash_flows WHERE id = p_cashflow_header_id;
1899
1900 -- WIP
1901 -- EXISTENCE CHECK REQD FOR ADDl CF ON THE OBJECT
1902
1903 x_return_status := G_RET_STS_SUCCESS;
1904
1905 EXCEPTION
1906
1907 WHEN OKL_API.G_EXCEPTION_ERROR THEN
1908
1909 IF p_transaction_control = G_TRUE THEN
1910 ROLLBACK TO l_program_name;
1911 fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
1912 END IF;
1913
1914 x_return_status := G_RET_STS_ERROR;
1915
1916 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1917
1918 IF p_transaction_control = G_TRUE THEN
1919 ROLLBACK TO l_program_name;
1920 fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
1921 END IF;
1922
1923 x_return_status := G_RET_STS_UNEXP_ERROR;
1924
1925 WHEN OTHERS THEN
1926
1927 OKL_API.SET_MESSAGE (p_app_name => G_APP_NAME,
1928 p_msg_name => G_DB_ERROR,
1929 p_token1 => G_PROG_NAME_TOKEN,
1930 p_token1_value => l_api_name,
1931 p_token2 => G_SQLCODE_TOKEN,
1932 p_token2_value => sqlcode,
1933 p_token3 => G_SQLERRM_TOKEN,
1934 p_token3_value => sqlerrm);
1935
1936 IF p_transaction_control = G_TRUE THEN
1937 ROLLBACK TO l_program_name;
1938 fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
1939 END IF;
1940
1941 x_return_status := G_RET_STS_UNEXP_ERROR;
1942
1943 END delete_cashflow;
1944
1945
1946 ----------------------------------
1947 -- PROCEDURE delete_cashflow_level
1948 ----------------------------------
1949 PROCEDURE delete_cashflow_level (
1950 p_api_version IN NUMBER
1951 ,p_init_msg_list IN VARCHAR2
1952 ,p_transaction_control IN VARCHAR2
1953 ,p_cashflow_level_id IN NUMBER
1954 ,x_return_status OUT NOCOPY VARCHAR2
1955 ,x_msg_count OUT NOCOPY NUMBER
1956 ,x_msg_data OUT NOCOPY VARCHAR2
1957 ) IS
1958
1959 l_program_name CONSTANT VARCHAR2(30) := 'delete_cashflow_level';
1960 l_api_name CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_program_name;
1961
1962 BEGIN
1963
1964 DELETE FROM okl_cash_flow_levels WHERE id = p_cashflow_level_id;
1965
1966 x_return_status := G_RET_STS_SUCCESS;
1967
1968 EXCEPTION
1969
1970 WHEN OKL_API.G_EXCEPTION_ERROR THEN
1971
1972 IF p_transaction_control = G_TRUE THEN
1973 ROLLBACK TO l_program_name;
1974 fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
1975 END IF;
1976
1977 x_return_status := G_RET_STS_ERROR;
1978
1979 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1980
1981 IF p_transaction_control = G_TRUE THEN
1982 ROLLBACK TO l_program_name;
1983 fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
1984 END IF;
1985
1986 x_return_status := G_RET_STS_UNEXP_ERROR;
1987
1988 WHEN OTHERS THEN
1989
1990 OKL_API.SET_MESSAGE (p_app_name => G_APP_NAME,
1991 p_msg_name => G_DB_ERROR,
1992 p_token1 => G_PROG_NAME_TOKEN,
1993 p_token1_value => l_api_name,
1994 p_token2 => G_SQLCODE_TOKEN,
1995 p_token2_value => sqlcode,
1996 p_token3 => G_SQLERRM_TOKEN,
1997 p_token3_value => sqlerrm);
1998
1999 IF p_transaction_control = G_TRUE THEN
2000 ROLLBACK TO l_program_name;
2001 fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
2002 END IF;
2003
2004 x_return_status := G_RET_STS_UNEXP_ERROR;
2005
2006 END delete_cashflow_level;
2007
2008 ----------------------------------------
2009 -- PROCEDURE process_quote_pricing_reset
2010 ----------------------------------------
2011 PROCEDURE process_quote_pricing_reset (
2012 p_api_version IN NUMBER
2013 ,p_init_msg_list IN VARCHAR2
2014 ,p_transaction_control IN VARCHAR2
2015 ,p_quote_id IN NUMBER
2016 ,x_return_status OUT NOCOPY VARCHAR2
2017 ,x_msg_count OUT NOCOPY NUMBER
2018 ,x_msg_data OUT NOCOPY VARCHAR2
2019 ) IS
2020
2021
2022 l_program_name CONSTANT VARCHAR2(30) := 'process_quote_pricing_reset';
2023 l_api_name CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_program_name;
2024
2025 l_deleted_cf_level_tbl cflv_tbl_type;
2026 l_sm_cashflow_levels_tbl cflv_tbl_type;
2027 x_sm_cashflow_levels_tbl cflv_tbl_type;
2028
2029 l_cafv_rec cafv_rec_type;
2030 l_cfov_rec cfov_rec_type;
2031 l_lease_qte_rec okl_lsq_pvt.lsqv_rec_type;
2032 x_lease_qte_rec okl_lsq_pvt.lsqv_rec_type;
2033 l_quote_id Number;
2034 i BINARY_INTEGER := 0;
2035 l_pricing_method VARCHAR2(30);
2036 l_cdjv_tbl okl_cdj_pvt.cdjv_tbl_type;
2037
2038 CURSOR csr_db_cashflows IS
2039 SELECT id
2040 FROM okl_cash_flows
2041 WHERE sts_code = 'WORK'
2042 AND DNZ_QTE_ID = p_quote_id;
2043
2044 CURSOR csr_db_cashflow_levels IS
2045 SELECT distinct a.id
2046 FROM okl_cash_flow_levels a,
2047 okl_cash_flows b
2048 WHERE a.caf_id = b.id
2049 AND b.sts_code = 'WORK'
2050 AND B.DNZ_QTE_ID = p_quote_id;
2051
2052 CURSOR csr_db_cashflow_objects IS
2053 SELECT cfo_id
2054 FROM okl_cash_flows
2055 WHERE sts_code = 'WORK'
2056 AND DNZ_QTE_ID = p_quote_id;
2057
2058 CURSOR csr_sm_cashflow_levels IS
2059 SELECT distinct a.id, a.object_version_number
2060 FROM okl_cash_flow_levels a,
2061 okl_cash_flows b,
2062 okl_lease_quotes_b qte
2063 WHERE a.caf_id = b.id
2064 AND a.missing_pmt_flag = 'Y'
2065 AND B.DNZ_QTE_ID = p_quote_id
2066 AND B.DNZ_QTE_ID = qte.id
2067 AND qte.pricing_method = 'SM';
2068
2069 CURSOR csr_qte_adjustments(p_adj_src_type IN VARCHAR2, p_qte_id IN NUMBER)IS
2070 select cdj.id
2071 from okl_cost_adjustments_b cdj,
2072 okl_assets_b ast
2073 where cdj.adjustment_source_type = p_adj_src_type
2074 and cdj.parent_object_code ='ASSET'
2075 and cdj.parent_object_id = ast.id
2076 and ast.parent_object_code = 'LEASEQUOTE'
2077 and ast.parent_object_id = p_qte_id;
2078 BEGIN
2079
2080 FOR l_db_cashflow_levels IN csr_db_cashflow_levels LOOP
2081
2082 l_deleted_cf_level_tbl(i).id := l_db_cashflow_levels.id;
2083 i := i + 1;
2084
2085 END LOOP;
2086
2087 IF l_deleted_cf_level_tbl.COUNT > 0 THEN
2088
2089 okl_cfl_pvt.delete_row (
2090 p_api_version => G_API_VERSION
2091 ,p_init_msg_list => G_FALSE
2092 ,x_return_status => x_return_status
2093 ,x_msg_count => x_msg_count
2094 ,x_msg_data => x_msg_data
2095 ,p_cflv_tbl => l_deleted_cf_level_tbl
2096 );
2097
2098 IF x_return_status = G_RET_STS_UNEXP_ERROR THEN
2099 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2100 ELSIF x_return_status = G_RET_STS_ERROR THEN
2101 RAISE OKL_API.G_EXCEPTION_ERROR;
2102 END IF;
2103
2104 END IF;
2105
2106 FOR l_db_cashflow_objects IN csr_db_cashflow_objects LOOP
2107
2108 l_cfov_rec.id := l_db_cashflow_objects.cfo_id;
2109
2110 okl_cfo_pvt.delete_row (
2111 p_api_version => G_API_VERSION
2112 ,p_init_msg_list => G_FALSE
2113 ,x_return_status => x_return_status
2114 ,x_msg_count => x_msg_count
2115 ,x_msg_data => x_msg_data
2116 ,p_cfov_rec => l_cfov_rec
2117 );
2118
2119 IF x_return_status = G_RET_STS_UNEXP_ERROR THEN
2120 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2121 ELSIF x_return_status = G_RET_STS_ERROR THEN
2122 RAISE OKL_API.G_EXCEPTION_ERROR;
2123 END IF;
2124
2125 END LOOP;
2126
2127 FOR l_db_cashflows IN csr_db_cashflows LOOP
2128
2129 l_cafv_rec.id := l_db_cashflows.id;
2130
2131 okl_caf_pvt.delete_row (
2132 p_api_version => G_API_VERSION
2133 ,p_init_msg_list => G_FALSE
2134 ,x_return_status => x_return_status
2135 ,x_msg_count => x_msg_count
2136 ,x_msg_data => x_msg_data
2137 ,p_cafv_rec => l_cafv_rec
2138 );
2139
2140 IF x_return_status = G_RET_STS_UNEXP_ERROR THEN
2141 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2142 ELSIF x_return_status = G_RET_STS_ERROR THEN
2143 RAISE OKL_API.G_EXCEPTION_ERROR;
2144 END IF;
2145
2146 END LOOP;
2147
2148 i := 0;
2149 FOR l_sm_cashflow_levels IN csr_sm_cashflow_levels LOOP
2150
2151 l_sm_cashflow_levels_tbl(i).id := l_sm_cashflow_levels.id;
2152 l_sm_cashflow_levels_tbl(i).object_version_number := l_sm_cashflow_levels.object_version_number;
2153 l_sm_cashflow_levels_tbl(i).missing_pmt_flag := NULL;
2154 l_sm_cashflow_levels_tbl(i).amount := NULL;
2155 i := i + 1;
2156
2157 END LOOP;
2158
2159 IF l_sm_cashflow_levels_tbl.COUNT > 0 THEN
2160
2161 okl_cfl_pvt.update_row (
2162 p_api_version => G_API_VERSION
2163 ,p_init_msg_list => G_FALSE
2164 ,x_return_status => x_return_status
2165 ,x_msg_count => x_msg_count
2166 ,x_msg_data => x_msg_data
2167 ,p_cflv_tbl => l_sm_cashflow_levels_tbl
2168 ,x_cflv_tbl => x_sm_cashflow_levels_tbl
2169 );
2170 IF x_return_status = G_RET_STS_UNEXP_ERROR THEN
2171 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2172 ELSIF x_return_status = G_RET_STS_ERROR THEN
2173 RAISE OKL_API.G_EXCEPTION_ERROR;
2174 END IF;
2175
2176 END IF;
2177 ---------------------------------------------------
2178 --start added abhsaxen for bug#5257890
2179 --if additional lines are available for pricinig method
2180 --ss or si or sd then delete respective adjustments.
2181 SELECT pricing_method
2182 INTO l_pricing_method
2183 FROM okl_lease_quotes_b
2184 WHERE ID = p_quote_id;
2185
2186 i := 0;
2187 IF l_pricing_method = 'SS' THEN
2188 FOR l_cdj_rec IN csr_qte_adjustments('SUBSIDY',p_quote_id) LOOP
2189 l_cdjv_tbl(i).id := l_cdj_rec.id;
2190 i := i + 1;
2191 END LOOP;
2192 ELSIF l_pricing_method = 'SD' THEN
2193 FOR l_cdj_rec IN csr_qte_adjustments('DOWN_PAYMENT',p_quote_id) LOOP
2194 l_cdjv_tbl(i).id := l_cdj_rec.id;
2195 i := i + 1;
2196 END LOOP;
2197 ELSIF l_pricing_method = 'SI' THEN
2198 FOR l_cdj_rec IN csr_qte_adjustments('TRADEIN',p_quote_id) LOOP
2199 l_cdjv_tbl(i).id := l_cdj_rec.id;
2200 i := i + 1;
2201 END LOOP;
2202 END IF;
2203 IF l_cdjv_tbl.count > 0 THEN
2204 okl_cdj_pvt.delete_row (
2205 p_api_version => G_API_VERSION
2206 ,p_init_msg_list => G_FALSE
2207 ,x_return_status => x_return_status
2208 ,x_msg_count => x_msg_count
2209 ,x_msg_data => x_msg_data
2210 ,p_cdjv_tbl => l_cdjv_tbl
2211 );
2212 END IF;
2213 --end added abhsaxen for bug#5257890
2214 ---------------------------------------------------
2215 l_lease_qte_rec.id := p_quote_id;
2216 l_lease_qte_rec.status := 'PR-INCOMPLETE';
2217 l_lease_qte_rec.iir := null;
2218 l_lease_qte_rec.booking_yield := null;
2219 l_lease_qte_rec.pirr := null;
2220 l_lease_qte_rec.airr := null;
2221 l_lease_qte_rec.sub_iir := null;
2222 l_lease_qte_rec.sub_booking_yield := null;
2223 l_lease_qte_rec.sub_pirr := null;
2224 l_lease_qte_rec.sub_airr := null;
2225
2226 OKL_LEASE_QUOTE_PVT.update_lease_qte (
2227 p_api_version => G_API_VERSION
2228 ,p_init_msg_list => G_FALSE
2229 ,p_transaction_control => G_TRUE
2230 ,p_lease_qte_rec => l_lease_qte_rec
2231 ,x_lease_qte_rec => x_lease_qte_rec
2232 ,x_return_status => x_return_status
2233 ,x_msg_count => x_msg_count
2234 ,x_msg_data => x_msg_data);
2235
2236 IF x_return_status = G_RET_STS_UNEXP_ERROR THEN
2237 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2238 ELSIF x_return_status = G_RET_STS_ERROR THEN
2239 RAISE OKL_API.G_EXCEPTION_ERROR;
2240 END IF;
2241
2242 EXCEPTION
2243
2244 WHEN OKL_API.G_EXCEPTION_ERROR THEN
2245 x_return_status := G_RET_STS_ERROR;
2246
2247 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2248 x_return_status := G_RET_STS_UNEXP_ERROR;
2249
2250 WHEN OTHERS THEN
2251 OKL_API.SET_MESSAGE (p_app_name => G_APP_NAME,
2252 p_msg_name => G_DB_ERROR,
2253 p_token1 => G_PROG_NAME_TOKEN,
2254 p_token1_value => l_api_name,
2255 p_token2 => G_SQLCODE_TOKEN,
2256 p_token2_value => sqlcode,
2257 p_token3 => G_SQLERRM_TOKEN,
2258 p_token3_value => sqlerrm);
2259
2260 x_return_status := G_RET_STS_UNEXP_ERROR;
2261
2262 END process_quote_pricing_reset;
2263 --------------------------------
2264 -- PROCEDURE copy_pmts_from_est_to_quote
2265 --------------------------------
2266 PROCEDURE copy_pmts_from_est_to_quote (
2267 p_api_version IN NUMBER
2268 ,p_init_msg_list IN VARCHAR2
2269 ,p_transaction_control IN VARCHAR2
2270 ,p_estimate_id IN NUMBER
2271 ,p_quote_id IN NUMBER
2272 ,x_return_status OUT NOCOPY VARCHAR2
2273 ,x_msg_count OUT NOCOPY NUMBER
2274 ,x_msg_data OUT NOCOPY VARCHAR2
2275 ) IS
2276
2277 l_program_name CONSTANT VARCHAR2(30) := 'cpy_pmts';
2278 l_api_name CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_program_name;
2279
2280 l_lease_qte_rec okl_lsq_pvt.lsqv_rec_type;
2281 x_lease_qte_rec okl_lsq_pvt.lsqv_rec_type;
2282 l_cashflow_header_rec cashflow_header_rec_type;
2283 l_cashflow_level_tbl cashflow_level_tbl_type;
2284
2285
2286 l_return_status VARCHAR2(1);
2287 l_cft_code VARCHAR2(30);
2288 lv_frq_code VARCHAR2(30);
2289 i BINARY_INTEGER := 0;
2290 j BINARY_INTEGER := 0;
2291
2292
2293
2294 CURSOR get_estimate_details_csr IS
2295 SELECT id,
2296 expected_start_date,
2297 term,
2298 end_of_term_option_id,
2299 pricing_method,
2300 structured_pricing,
2301 rate_template_id,
2302 rate_card_id,
2303 target_amount,
2304 target_arrears,
2305 target_frequency,
2306 lease_rate_factor,
2307 target_rate,
2308 target_rate_type,
2309 target_periods
2310 FROM okl_quick_quotes_b where
2311 id = p_estimate_id;
2312 estimate_details_csr_rec get_estimate_details_csr%ROWTYPE;
2313
2314 CURSOR get_quote_details_csr IS
2315 SELECT
2316 attribute_category
2317 ,attribute1
2318 ,attribute2
2319 ,attribute3
2320 ,attribute4
2321 ,attribute5
2322 ,attribute6
2323 ,attribute7
2324 ,attribute8
2325 ,attribute9
2326 ,attribute10
2327 ,attribute11
2328 ,attribute12
2329 ,attribute13
2330 ,attribute14
2331 ,attribute15
2332 ,reference_number
2333 ,object_version_number
2334 ,parent_object_id
2335 ,parent_object_code
2336 ,valid_from
2337 ,valid_to
2338 ,customer_bookclass
2339 ,customer_taxowner
2340 ,expected_start_date
2341 ,expected_funding_date
2342 ,expected_delivery_date
2343 ,pricing_method
2344 ,term
2345 ,product_id
2346 ,end_of_term_option_id
2347 ,usage_category
2348 ,usage_industry_class
2349 ,usage_industry_code
2350 ,usage_amount
2351 ,usage_location_id
2352 ,property_tax_applicable
2353 ,property_tax_billing_type
2354 ,upfront_tax_treatment
2355 ,upfront_tax_stream_type
2356 ,transfer_of_title
2357 ,age_of_equipment
2358 ,purchase_of_lease
2359 ,sale_and_lease_back
2360 ,interest_disclosed
2361 ,target_rate_type
2362 ,target_rate
2363 ,target_amount
2364 ,target_frequency
2365 ,target_arrears_yn
2366 ,target_periods
2367 ,structured_pricing
2368 ,line_level_pricing
2369 ,lease_rate_factor
2370 ,rate_card_id
2371 ,rate_template_id
2372 ,iir
2373 ,booking_yield
2374 ,pirr
2375 ,airr
2376 ,sub_iir
2377 ,sub_booking_yield
2378 ,sub_pirr
2379 ,sub_airr
2380 ,primary_quote
2381 ,short_description
2382 ,description
2383 ,comments
2384 FROM okl_lease_quotes_v
2385 where id= p_quote_id;
2386 quote_details_csr_rec get_quote_details_csr%ROWTYPE;
2387
2388 -- Cursor to fetch the Stream Type
2389 CURSOR c_strm_type (
2390 pdtId NUMBER,
2391 expStartDate DATE,
2392 strm_purpose VARCHAR) IS
2393 SELECT STRM.STY_ID PAYMENT_TYPE_ID,
2394 STRM.STY_NAME PAYMENT_TYPE,
2395 STRM.START_DATE,
2396 STRM.END_DATE,
2397 STRM.STY_PURPOSE
2398 FROM OKL_STRM_TMPT_PRIMARY_UV STRM
2399 WHERE STY_PURPOSE = strm_purpose
2400 AND START_DATE <= expStartDate
2401 AND NVL(END_DATE, expStartDate) >= expStartDate
2402 AND STRM.PDT_ID = pdtId;
2403
2404 CURSOR c_cf_objects (p_oty_code VARCHAR2, p_source_table VARCHAR2, p_source_id NUMBER)
2405 IS
2406 SELECT id
2407 FROM okl_cash_flow_objects
2408 WHERE
2409 oty_code = p_oty_code
2410 AND source_table = p_source_table
2411 AND source_id = p_source_id;
2412
2413 CURSOR c_cf_headers (p_cfo_id NUMBER)
2414 IS
2415 SELECT id, sty_id, due_arrears_yn, cft_code
2416 FROM okl_cash_flows
2417 WHERE cfo_id = p_cfo_id;
2418
2419 CURSOR c_cf_levels (p_caf_id NUMBER)
2420 IS
2421 SELECT amount, number_of_periods, fqy_code, stub_days, stub_amount, rate
2422 FROM OKL_CASH_FLOW_LEVELS
2423 WHERE caf_id = p_caf_id;
2424
2425 BEGIN
2426
2427 IF p_transaction_control = G_TRUE THEN
2428 SAVEPOINT l_program_name;
2429 END IF;
2430
2431 IF p_init_msg_list = G_TRUE THEN
2432 FND_MSG_PUB.initialize;
2433 END IF;
2434
2435 OPEN get_estimate_details_csr;
2436 FETCH get_estimate_details_csr INTO estimate_details_csr_rec;
2437 CLOSE get_estimate_details_csr;
2438
2439 OPEN get_quote_details_csr;
2440 FETCH get_quote_details_csr INTO quote_details_csr_rec;
2441 CLOSE get_quote_details_csr;
2442 --asawanka modified for bug #6790770 start
2443 IF trunc(estimate_details_csr_rec.expected_start_date) = trunc(quote_details_csr_rec.expected_start_date)
2444 --asawanka modified for bug #6790770 end
2445 AND estimate_details_csr_rec.term = quote_details_csr_rec.term
2446 AND estimate_details_csr_rec.end_of_term_option_id = quote_details_csr_rec.end_of_term_option_id
2447 -- added modifying abhsaxen for bug #5257890
2448 --converting pricing method from 'SS' to 'SY',following condition shold not be here
2449 AND ( estimate_details_csr_rec.pricing_method = quote_details_csr_rec.pricing_method
2450 OR ( estimate_details_csr_rec.pricing_method = 'SS'
2451 AND quote_details_csr_rec.pricing_method = 'SY'
2452 )
2453 )
2454 AND ( NOT( estimate_details_csr_rec.pricing_method = 'SS' AND quote_details_csr_rec.pricing_method = 'SS'))
2455 THEN
2456 IF nvl(estimate_details_csr_rec.structured_pricing,'N') = 'N' AND quote_details_csr_rec.pricing_method <> 'SY' THEN
2457 --end modifying abhsaxen for bug#5257890
2458 l_lease_qte_rec.id := p_quote_id;
2459 l_lease_qte_rec.object_version_number := quote_details_csr_rec.object_version_number;
2460 l_lease_qte_rec.rate_template_id := estimate_details_csr_rec.rate_template_id;
2461 l_lease_qte_rec.target_amount := estimate_details_csr_rec.target_amount;
2462 l_lease_qte_rec.structured_pricing := 'N';
2463 l_lease_qte_rec.target_arrears_yn := estimate_details_csr_rec.target_arrears;
2464 l_lease_qte_rec.rate_card_id := estimate_details_csr_rec.rate_card_id;
2465 IF quote_details_csr_rec.pricing_method = 'TR' THEN
2466 l_lease_qte_rec.target_rate := estimate_details_csr_rec.target_rate;
2467 l_lease_qte_rec.target_rate_type := estimate_details_csr_rec.target_rate_type;
2468 l_lease_qte_rec.target_frequency := estimate_details_csr_rec.target_frequency;
2469 l_lease_qte_rec.target_periods := estimate_details_csr_rec.target_periods;
2470 END IF;
2471 ELSE
2472 l_lease_qte_rec.id := p_quote_id;
2473 l_lease_qte_rec.object_version_number := quote_details_csr_rec.object_version_number;
2474 l_lease_qte_rec.structured_pricing := 'Y';
2475 IF quote_details_csr_rec.pricing_method = 'RC' THEN
2476 l_lease_qte_rec.target_arrears_yn := estimate_details_csr_rec.target_arrears;
2477 l_lease_qte_rec.target_frequency := estimate_details_csr_rec.target_frequency;
2478 l_lease_qte_rec.lease_rate_factor := estimate_details_csr_rec.lease_rate_factor;
2479 ELSE
2480
2481 FOR l_cf_object IN c_cf_objects (
2482 p_oty_code => 'QUICK_QUOTE'
2483 ,p_source_table => 'OKL_QUICK_QUOTES_B'
2484 ,p_source_id => p_estimate_id)
2485 LOOP
2486
2487 OPEN c_cf_headers(p_cfo_id => l_cf_object.id);
2488 FETCH c_cf_headers INTO l_cashflow_header_rec.cashflow_header_id,
2489 l_cashflow_header_rec.stream_type_id,
2490 l_cashflow_header_rec.arrears_flag,
2491 l_cft_code;
2492 CLOSE c_cf_headers;
2493
2494 l_cashflow_header_rec.parent_object_code := 'LEASE_QUOTE';
2495 l_cashflow_header_rec.parent_object_id := p_quote_id;
2496 l_cashflow_header_rec.quote_id := p_quote_id;
2497 l_cashflow_header_rec.quote_type_code := 'LQ';
2498
2499 --populate stream type id
2500 FOR t_rec IN c_strm_type (
2501 pdtId => quote_details_csr_rec.product_id,
2502 expStartDate => quote_details_csr_rec.expected_start_date,
2503 strm_purpose => 'RENT')
2504 LOOP
2505 l_cashflow_header_rec.stream_type_id := t_rec.payment_type_id;
2506 END LOOP;
2507
2508 IF (l_cft_code = 'PAYMENT_SCHEDULE') THEN
2509 l_cashflow_header_rec.type_code := 'INFLOW';
2510 ELSIF (l_cft_code = 'OUTFLOW_SCHEDULE') THEN
2511 l_cashflow_header_rec.type_code := 'OUTFLOW';
2512 END IF;
2513 j := 0;
2514 l_cashflow_level_tbl.delete;
2515 FOR l_cf_level IN c_cf_levels (p_caf_id => l_cashflow_header_rec.cashflow_header_id) LOOP
2516 l_cashflow_level_tbl(j).periods := l_cf_level.number_of_periods;
2517 IF quote_details_csr_rec.pricing_method = 'SP' THEN
2518 l_cashflow_level_tbl(j).periodic_amount := NULL;
2519 l_cashflow_level_tbl(j).stub_amount := NULL;
2520 ELSE
2521 l_cashflow_level_tbl(j).periodic_amount := l_cf_level.amount;
2522 END IF;
2523 l_cashflow_level_tbl(j).stub_days := l_cf_level.stub_days;
2524 l_cashflow_level_tbl(j).stub_amount := l_cf_level.stub_amount;
2525 l_cashflow_level_tbl(j).rate := l_cf_level.rate;
2526 lv_frq_code := l_cf_level.fqy_code;
2527 j := j + 1;
2528 END LOOP;
2529
2530 l_cashflow_header_rec.frequency_code := lv_frq_code;
2531
2532 -- Duplicate equals to 'create' mode, for sanity check purpose
2533 FOR i IN l_cashflow_level_tbl.FIRST .. l_cashflow_level_tbl.LAST LOOP
2534 IF l_cashflow_level_tbl.EXISTS(i) THEN
2535 l_cashflow_level_tbl(i).record_mode := 'create';
2536 END IF;
2537 END LOOP;
2538
2539 create_cashflow ( p_api_version => G_API_VERSION
2540 ,p_init_msg_list => G_FALSE
2541 ,p_transaction_control => G_FALSE
2542 ,p_cashflow_header_rec => l_cashflow_header_rec
2543 ,p_cashflow_level_tbl => l_cashflow_level_tbl
2544 ,x_return_status => l_return_status
2545 ,x_msg_count => x_msg_count
2546 ,x_msg_data => x_msg_data);
2547
2548 IF l_return_status = G_RET_STS_UNEXP_ERROR THEN
2549 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2550 ELSIF l_return_status = G_RET_STS_ERROR THEN
2551 RAISE OKL_API.G_EXCEPTION_ERROR;
2552 END IF;
2553
2554 i := i + 1;
2555
2556 END LOOP;
2557 END IF;
2558 END IF;
2559 OKL_LEASE_QUOTE_PVT.update_lease_qte (
2560 p_api_version => G_API_VERSION
2561 ,p_init_msg_list => G_FALSE
2562 ,p_transaction_control => G_TRUE
2563 ,p_lease_qte_rec => l_lease_qte_rec
2564 ,x_lease_qte_rec => x_lease_qte_rec
2565 ,x_return_status => x_return_status
2566 ,x_msg_count => x_msg_count
2567 ,x_msg_data => x_msg_data);
2568
2569 IF x_return_status = G_RET_STS_UNEXP_ERROR THEN
2570 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2571 ELSIF x_return_status = G_RET_STS_ERROR THEN
2572 RAISE OKL_API.G_EXCEPTION_ERROR;
2573 END IF;
2574
2575 END IF;
2576 x_return_status := G_RET_STS_SUCCESS;
2577
2578 EXCEPTION
2579
2580 WHEN OKL_API.G_EXCEPTION_ERROR THEN
2581
2582 IF p_transaction_control = G_TRUE THEN
2583 ROLLBACK TO l_program_name;
2584 fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
2585 END IF;
2586
2587 x_return_status := G_RET_STS_ERROR;
2588
2589 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2590
2591 IF p_transaction_control = G_TRUE THEN
2592 ROLLBACK TO l_program_name;
2593 fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
2594 END IF;
2595
2596 x_return_status := G_RET_STS_UNEXP_ERROR;
2597
2598 WHEN OTHERS THEN
2599
2600 OKL_API.SET_MESSAGE (p_app_name => G_APP_NAME,
2601 p_msg_name => G_DB_ERROR,
2602 p_token1 => G_PROG_NAME_TOKEN,
2603 p_token1_value => l_api_name,
2604 p_token2 => G_SQLCODE_TOKEN,
2605 p_token2_value => sqlcode,
2606 p_token3 => G_SQLERRM_TOKEN,
2607 p_token3_value => sqlerrm);
2608
2609 IF p_transaction_control = G_TRUE THEN
2610 ROLLBACK TO l_program_name;
2611 fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
2612 END IF;
2613
2614 x_return_status := G_RET_STS_UNEXP_ERROR;
2615
2616 END copy_pmts_from_est_to_quote;
2617
2618 END OKL_LEASE_QUOTE_CASHFLOW_PVT;