DBA Data[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;