[Home] [Help]
PACKAGE BODY: APPS.OKL_MASTER_LEASE_AGREEMENT_PUB
Source
1 PACKAGE BODY OKL_MASTER_LEASE_AGREEMENT_PUB AS
2 /*$Header: OKLPMAGB.pls 120.5 2006/11/17 10:30:57 zrehman noship $*/
3 /*
4 * Following is the generic program flow
5 * -------------------------------------
6 * Create Master Lease Agreement Header - First Step
7 * Create Party Role - Second Step
8 * Create Terms and Conditions - Third Step
9 * Create Articles - Fourth Step
10 */
11
12
13 /*
14 * Procedure: CREATE_MASTER_LEASE_AGREEMENT
15 */
16 PROCEDURE create_master_lease_agreement(
17 p_api_version IN NUMBER,
18 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
19 p_header_rec IN HEADER_REC,
20 p_article_tbl IN article_tbl,
21 x_return_status OUT NOCOPY VARCHAR2,
22 x_msg_count OUT NOCOPY NUMBER,
23 x_msg_data OUT NOCOPY VARCHAR2)
24 AS
25
26 l_api_name VARCHAR2(35) := 'CREATE_MASTER_LEASE';
27 l_chr_id NUMBER := NULL;
28 l_line_id NUMBER := NULL;
29 l_cpl_id NUMBER := NULL;
30 l_rrd_id NUMBER := NULL;
31 l_credit_id NUMBER := NULL;
32
33 l_chrv_rec chrv_rec_type;
34 l_khrv_rec khrv_rec_type;
35 lx_chrv_rec chrv_rec_type;
36 lx_khrv_rec khrv_rec_type;
37
38 l_cplv_tbl cplv_tbl_type;
39 lx_cplv_tbl cplv_tbl_type;
40 l_rgr_tbl rgr_tbl_type;
41
42 l_catv_tbl catv_tbl_type;
43 lx_catv_tbl catv_tbl_type;
44
45 l_gvev_rec gvev_rec_type;
46 lx_gvev_rec gvev_rec_type;
47
48 j NUMBER := NULL;
49 counter VARCHAR2(1) := 'F';
50
51 l_msg_index_out number;
52
53 -- Get Article ID and Release
54 l_sae_id NUMBER := NULL;
55
56 CURSOR get_article (p_name IN VARCHAR2, p_version IN VARCHAR2) IS
57 select sar.id
58 from okc_std_articles_v sar,
59 okc_std_art_versions_v svr
60 where sar.id = svr.sae_id
61 and sar.name = p_name
62 and svr.sav_release = p_version;
63
64
65 CURSOR get_credit_line_id (p_credit_line IN VARCHAR2) IS
66 SELECT id
67 FROM okc_k_headers_v
68 WHERE contract_number = p_credit_line;
69
70 BEGIN
71
72 x_return_status := FND_API.G_RET_STS_SUCCESS;
73
74 x_return_status := OKL_API.START_ACTIVITY(p_api_name => l_api_name
75 ,p_init_msg_list => p_init_msg_list
76 ,p_api_type => '_PUB'
77 ,x_return_status => x_return_status
78 );
79 IF x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR THEN
80 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
81 ELSIF x_return_status = OKL_API.G_RET_STS_ERROR THEN
82 RAISE OKL_API.G_EXCEPTION_ERROR;
83 END IF;
84
85
86
87 /* Agreement Header */
88 l_chrv_rec.contract_number := p_header_rec.AGREEMENT_NUMBER;
89 l_chrv_rec.short_description := p_header_rec.DESCRIPTION;
90 l_chrv_rec.description := p_header_rec.DESCRIPTION;
91 l_chrv_rec.INV_ORGANIZATION_ID := OKL_SYSTEM_PARAMS_ALL_PUB.get_system_param_value(OKL_SYSTEM_PARAMS_ALL_PUB.G_ITEM_INV_ORG_ID);
92 l_chrv_rec.AUTHORING_ORG_ID := mo_global.get_current_org_id();
93 l_chrv_rec.scs_code := 'MASTER_LEASE';
94 l_chrv_rec.sts_code := 'NEW';
95 l_chrv_rec.ARCHIVED_YN := 'N';
96 l_chrv_rec.DELETED_YN := 'N';
97 l_chrv_rec.BUY_OR_SELL := 'S';
98 l_chrv_rec.ISSUE_OR_RECEIVE := 'I';
99 l_chrv_rec.DATE_SIGNED := p_header_rec.DATE_SIGNED;
100 l_chrv_rec.START_DATE := p_header_rec.START_DATE;
101 l_chrv_rec.END_DATE := p_header_rec.END_DATE;
102 l_chrv_rec.CURRENCY_CODE := p_header_rec.CURRENCY_CODE;
103 l_chrv_rec.TEMPLATE_YN := p_header_rec.TEMPLATE_YN;
104 l_khrv_rec.CONVERTED_ACCOUNT_YN := p_header_rec.CONVERTED_ACCOUNT_YN;
105 l_chrv_rec.ORIG_SYSTEM_REFERENCE1 := p_header_rec.CONVERTED_LEGACY_NO;
106 -- added by zrehman for LE Uptake project on 17-NOV-2006
107 l_chrv_rec.LEGAL_ENTITY_ID := p_header_rec.LEGAL_ENTITY_ID;
108
109 OKL_CONTRACT_PUB.create_contract_header(
110 p_api_version => p_api_version,
111 p_init_msg_list => p_init_msg_list,
112 x_return_status => x_return_status,
113 x_msg_count => x_msg_count,
114 x_msg_data => x_msg_data,
115 p_chrv_rec => l_chrv_rec,
116 p_khrv_rec => l_khrv_rec,
117 x_chrv_rec => lx_chrv_rec,
118 x_khrv_rec => lx_khrv_rec);
119
120 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
121 RAISE OKC_API.G_EXCEPTION_ERROR;
122 END IF;
123
124 -- Credit Line
125
126 IF (p_header_rec.CREDIT_LINE_NUMBER IS NOT NULL) THEN
127 l_credit_id := NULL;
128
129 OPEN get_credit_line_id (p_header_rec.CREDIT_LINE_NUMBER);
130 FETCH get_credit_line_id INTO l_credit_id;
131 CLOSE get_credit_line_id;
132
133 l_gvev_rec.chr_id_referred := l_credit_id;
134 l_gvev_rec.chr_id := lx_chrv_rec.id;
135 l_gvev_rec.dnz_chr_id := lx_chrv_rec.id;
136 l_gvev_rec.COPIED_ONLY_YN := 'N';
137
138 IF (l_credit_id IS NOT NULL) THEN
139
140 OKL_OKC_MIGRATION_PVT.create_governance(
141 p_api_version => p_api_version,
142 p_init_msg_list => p_init_msg_list,
143 x_return_status => x_return_status,
144 x_msg_count => x_msg_count,
145 x_msg_data => x_msg_data,
146 p_gvev_rec => l_gvev_rec,
147 x_gvev_rec => lx_gvev_rec);
148
149 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
150 RAISE OKC_API.G_EXCEPTION_ERROR;
151 END IF;
152
153 END IF;
154
155 END IF;
156
157
158
159 /* Party Role */
160
161
162 -- Lessor
163 l_cplv_tbl(1).chr_id := lx_chrv_rec.id;
164 l_cplv_tbl(1).dnz_chr_id := lx_chrv_rec.id;
165 l_cplv_tbl(1).rle_code := 'LESSOR';
166 l_cplv_tbl(1).object1_id1 := mo_global.get_current_org_id();
167 l_cplv_tbl(1).object1_id2 := '#';
168 l_cplv_tbl(1).JTOT_OBJECT1_CODE := 'OKX_OPERUNIT';
169
170 -- Customer
171 l_cplv_tbl(2).chr_id := lx_chrv_rec.id;
172 l_cplv_tbl(2).dnz_chr_id := lx_chrv_rec.id;
173 l_cplv_tbl(2).rle_code := 'LESSEE';
174 l_cplv_tbl(2).object1_id1 := p_header_rec.customer_id;
175 l_cplv_tbl(2).object1_id2 := '#';
176 l_cplv_tbl(2).JTOT_OBJECT1_CODE := 'OKX_PARTY';
177
178 OKL_OKC_MIGRATION_PVT.create_k_party_role(
179 p_api_version => p_api_version,
180 p_init_msg_list => p_init_msg_list,
181 x_return_status => x_return_status,
182 x_msg_count => x_msg_count,
183 x_msg_data => x_msg_data,
184 p_cplv_tbl => l_cplv_tbl,
185 x_cplv_tbl => lx_cplv_tbl);
186
187 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
188 RAISE OKC_API.G_EXCEPTION_ERROR;
189 END IF;
190
191 l_chr_id := lx_chrv_rec.id;
192
193 /* Terms and Conditions */
194
195 -- End Term
196 j := 1;
197 counter := 'F';
198 IF (p_header_rec.TC_TPO_END_TERM_OPTION IS NOT NULL) THEN
199 l_rgr_tbl(j).rgd_code := 'LATROP';
200 l_rgr_tbl(j).RULE_INFORMATION_CATEGORY := 'LAEOTR';
201 l_rgr_tbl(j).rule_information1 := p_header_rec.TC_TPO_END_TERM_OPTION;
202 l_rgr_tbl(j).std_template_yn := 'N';
203 l_rgr_tbl(j).warn_yn := 'N';
204 l_rgr_tbl(j).template_yn := 'N';
205 counter := 'T';
206 END IF;
207 IF (p_header_rec.TC_TPO_END_TERM_AMT IS NOT NULL) THEN
208 l_rgr_tbl(j).rgd_code := 'LATROP';
209 l_rgr_tbl(j).RULE_INFORMATION_CATEGORY := 'LAEOTR';
210 l_rgr_tbl(j).rule_information2 := p_header_rec.TC_TPO_END_TERM_AMT;
211 l_rgr_tbl(j).std_template_yn := 'N';
212 l_rgr_tbl(j).warn_yn := 'N';
213 l_rgr_tbl(j).template_yn := 'N';
214 counter := 'T';
215 END IF;
216
217 -- Mid Term
218 IF (counter = 'T') THEN
219 j := j + 1;
220 counter := 'F';
221 END IF;
222 IF (p_header_rec.TC_TPO_MID_TERM_OPTION IS NOT NULL) THEN
223 l_rgr_tbl(j).rgd_code := 'LATROP';
224 l_rgr_tbl(j).RULE_INFORMATION_CATEGORY := 'LAMITR';
225 l_rgr_tbl(j).rule_information1 := p_header_rec.TC_TPO_MID_TERM_OPTION;
226 l_rgr_tbl(j).std_template_yn := 'N';
227 l_rgr_tbl(j).warn_yn := 'N';
228 l_rgr_tbl(j).template_yn := 'N';
229 counter := 'T';
230 END IF;
231 IF (p_header_rec.TC_TPO_MID_TERM_OPTION IS NOT NULL) THEN
232 l_rgr_tbl(j).rgd_code := 'LATROP';
233 l_rgr_tbl(j).RULE_INFORMATION_CATEGORY := 'LAMITR';
234 l_rgr_tbl(j).rule_information2 := p_header_rec.TC_TPO_MID_TERM_AMT;
235 l_rgr_tbl(j).std_template_yn := 'N';
236 l_rgr_tbl(j).warn_yn := 'N';
237 l_rgr_tbl(j).template_yn := 'N';
238 counter := 'T';
239 END IF;
240
241 -- Tax
242 IF (counter = 'T') THEN
243 j := j + 1;
244 counter := 'F';
245 END IF;
246 IF (p_header_rec.TC_TAX_WITHHOLD_YN IS NOT NULL) THEN
247 l_rgr_tbl(j).rgd_code := 'LAUKTX';
248 l_rgr_tbl(j).RULE_INFORMATION_CATEGORY := 'LAUKTX';
249 l_rgr_tbl(j).rule_information1 := p_header_rec.TC_TAX_WITHHOLD_YN;
250 l_rgr_tbl(j).std_template_yn := 'N';
251 l_rgr_tbl(j).warn_yn := 'N';
252 l_rgr_tbl(j).template_yn := 'N';
253 counter := 'T';
254 END IF;
255 IF (counter = 'T') THEN
256 j := j + 1;
257 counter := 'F';
258 END IF;
259 IF (p_header_rec.TC_TAX_FORMULA IS NOT NULL) THEN
260 l_rgr_tbl(j).rgd_code := 'LAUKTX';
261 l_rgr_tbl(j).RULE_INFORMATION_CATEGORY := 'LAFORM';
262 l_rgr_tbl(j).rule_information1 := p_header_rec.TC_TAX_FORMULA;
263 l_rgr_tbl(j).std_template_yn := 'N';
264 l_rgr_tbl(j).warn_yn := 'N';
265 l_rgr_tbl(j).template_yn := 'N';
266 counter := 'T';
267 END IF;
268
269 -- Insurance
270 IF (counter = 'T') THEN
271 j := j + 1;
272 counter := 'F';
273 END IF;
274
275 IF (p_header_rec.TC_INS_BLANKET_YN IS NOT NULL) THEN
276 l_rgr_tbl(j).rgd_code := 'INSRUL';
277 l_rgr_tbl(j).RULE_INFORMATION_CATEGORY := 'INCUST';
278 l_rgr_tbl(j).rule_information1 := p_header_rec.TC_INS_BLANKET_YN;
279 l_rgr_tbl(j).std_template_yn := 'N';
280 l_rgr_tbl(j).warn_yn := 'N';
281 l_rgr_tbl(j).template_yn := 'N';
282 counter := 'T';
283 END IF;
284 IF (p_header_rec.TC_INS_INSURABLE_YN IS NOT NULL) THEN
285 l_rgr_tbl(j).rgd_code := 'INSRUL';
286 l_rgr_tbl(j).RULE_INFORMATION_CATEGORY := 'INCUST';
287 l_rgr_tbl(j).rule_information2 := p_header_rec.TC_INS_INSURABLE_YN;
288 l_rgr_tbl(j).std_template_yn := 'N';
289 l_rgr_tbl(j).warn_yn := 'N';
290 l_rgr_tbl(j).template_yn := 'N';
291 counter := 'T';
292 END IF;
293
294 IF (counter = 'T') THEN
295 j := j + 1;
296 counter := 'F';
297 END IF;
298 IF (p_header_rec.TC_INS_CANCEL_YN IS NOT NULL) THEN
299 l_rgr_tbl(j).rgd_code := 'INSRUL';
300 l_rgr_tbl(j).RULE_INFORMATION_CATEGORY := 'INNCAN';
301 l_rgr_tbl(j).rule_information1 := p_header_rec.TC_INS_CANCEL_YN;
302 l_rgr_tbl(j).std_template_yn := 'N';
303 l_rgr_tbl(j).warn_yn := 'N';
304 l_rgr_tbl(j).template_yn := 'N';
305 counter := 'T';
306 END IF;
307
308 -- Renewals
309 IF (counter = 'T') THEN
310 j := j + 1;
311 counter := 'F';
312 END IF;
313 IF (p_header_rec.TC_RO_RENEW_OPTION IS NOT NULL) THEN
314 l_rgr_tbl(j).rgd_code := 'LARNOP';
315 l_rgr_tbl(j).RULE_INFORMATION_CATEGORY := 'LARNEW';
316 l_rgr_tbl(j).rule_information1 := p_header_rec.TC_RO_RENEW_OPTION;
317 l_rgr_tbl(j).std_template_yn := 'N';
318 l_rgr_tbl(j).warn_yn := 'N';
319 l_rgr_tbl(j).template_yn := 'N';
320 counter := 'T';
321 END IF;
322 IF (p_header_rec.TC_RO_RENEW_AMT IS NOT NULL) THEN
323 l_rgr_tbl(j).rgd_code := 'LARNOP';
324 l_rgr_tbl(j).RULE_INFORMATION_CATEGORY := 'LARNEW';
325 l_rgr_tbl(j).rule_information2 := p_header_rec.TC_RO_RENEW_AMT;
326 l_rgr_tbl(j).std_template_yn := 'N';
327 l_rgr_tbl(j).warn_yn := 'N';
328 l_rgr_tbl(j).template_yn := 'N';
329 counter := 'T';
330 END IF;
331
332 IF (counter = 'T') THEN
333 j := j + 1;
334 counter := 'F';
335 END IF;
336
337 IF (p_header_rec.TC_RO_RENEW_NOTICE_DAYS IS NOT NULL) THEN
338 l_rgr_tbl(j).rgd_code := 'LARNOP';
339 l_rgr_tbl(j).RULE_INFORMATION_CATEGORY := 'LAREND';
340 l_rgr_tbl(j).rule_information1 := p_header_rec.TC_RO_RENEW_NOTICE_DAYS;
341 l_rgr_tbl(j).std_template_yn := 'N';
342 l_rgr_tbl(j).warn_yn := 'N';
343 l_rgr_tbl(j).template_yn := 'N';
344 counter := 'T';
345 END IF;
346
347
348 OKL_RGRP_RULES_PROCESS_PUB.process_rule_group_rules(
349 p_api_version => p_api_version,
350 p_init_msg_list => p_init_msg_list,
351 x_return_status => x_return_status,
352 x_msg_count => x_msg_count,
353 x_msg_data => x_msg_data,
354 p_chr_id => l_chr_id,
355 p_line_id => l_line_id,
356 p_cpl_id => l_cpl_id,
357 p_rrd_id => l_rrd_id,
358 p_rgr_tbl => l_rgr_tbl);
359
360 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
361 RAISE OKC_API.G_EXCEPTION_ERROR;
362 END IF;
363
364 /* Article */
365 IF (p_article_tbl.count > 0) THEN
366
367 FOR i IN p_article_tbl.FIRST..p_article_tbl.LAST
368 LOOP
369 l_catv_tbl(i).cat_type := 'STA';
370 l_catv_tbl(i).fulltext_yn := 'Y';
371
372 OPEN get_article (p_article_tbl(i).article_name, p_article_tbl(i).version);
373 FETCH get_article INTO l_sae_id;
374 CLOSE get_article;
375
376 l_catv_tbl(i).SAV_SAE_ID := l_sae_id;
377 l_catv_tbl(i).SAV_SAV_RELEASE := p_article_tbl(i).version;
378 l_catv_tbl(i).chr_id := lx_chrv_rec.id;
379 l_catv_tbl(i).dnz_chr_id := lx_chrv_rec.id;
380 l_catv_tbl(i).name := p_article_tbl(i).article_name;
381
382 END LOOP;
383
384 OKL_VP_K_ARTICLE_PUB.create_k_article(
385 p_api_version => p_api_version,
386 p_init_msg_list => p_init_msg_list,
387 x_return_status => x_return_status,
388 x_msg_count => x_msg_count,
389 x_msg_data => x_msg_data,
390 p_catv_tbl => l_catv_tbl,
391 x_catv_tbl => lx_catv_tbl);
392
393
394 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
395 RAISE OKC_API.G_EXCEPTION_ERROR;
396 END IF;
397
398 END IF;
399
400 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count
401 ,x_msg_data => x_msg_data );
402
403 EXCEPTION
404 WHEN OKC_API.G_EXCEPTION_ERROR THEN
405 x_return_status := OKC_API.HANDLE_EXCEPTIONS
406 (substr(l_api_name,1,26),
407 G_PKG_NAME,
408 'OKC_API.G_RET_STS_ERROR',
409 x_msg_count,
410 x_msg_data,
411 '_PUB');
412 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
413 x_return_status := OKC_API.HANDLE_EXCEPTIONS
414 (substr(l_api_name,1,26),
415 G_PKG_NAME,
416 'OKC_API.G_RET_STS_UNEXP_ERROR',
417 x_msg_count,
418 x_msg_data,
419 '_PUB');
420 WHEN OTHERS THEN
421 x_return_status := OKC_API.HANDLE_EXCEPTIONS
422 (substr(l_api_name,1,26),
423 G_PKG_NAME,
424 'OTHERS',
425 x_msg_count,
426 x_msg_data,
427 '_PUB');
428
429 END create_master_lease_agreement;
430
431 END;