[Home] [Help]
PACKAGE BODY: APPS.OKL_PROCESS_PPD_PVT
Source
1 PACKAGE BODY OKL_PROCESS_PPD_PVT AS
2 /* $Header: OKLRPPNB.pls 120.2 2006/08/11 10:47:13 gboomina noship $*/
3
4 G_MODULE VARCHAR2(255) := 'okl.stream.esg.okl_esg_transport_pvt';
5 G_DEBUG_ENABLED CONSTANT VARCHAR2(10) := OKL_DEBUG_PUB.CHECK_LOG_ENABLED;
6 G_IS_DEBUG_STATEMENT_ON BOOLEAN;
7
8 --Global Variables
9 G_INIT_NUMBER NUMBER := -9999;
10 G_PKG_NAME CONSTANT VARCHAR2(200) := 'OKL_PPD_PVT';
11 G_APP_NAME CONSTANT VARCHAR2(3) := OKL_API.G_APP_NAME;
12 G_API_TYPE CONSTANT VARCHAR2(4) := '_PVT';
13
14 PROCEDURE validate_parameters(
15 p_chr_id IN OKC_K_HEADERS_V.ID%TYPE,
16 p_kle_tbl IN OKL_MASS_REBOOK_PVT.kle_tbl_type,
17 p_transaction_date IN OKL_TRX_CONTRACTS.DATE_TRANSACTION_OCCURRED%TYPE,
18 p_ppd_amount IN NUMBER,
19 p_ppd_reason_code IN FND_LOOKUPS.LOOKUP_CODE%TYPE,
20 p_payment_struc IN okl_mass_rebook_pvt.strm_lalevl_tbl_type,
21 x_msg_count OUT NOCOPY NUMBER,
22 x_msg_data OUT NOCOPY VARCHAR2
23 )
24 IS
25 type asset_rec_type is record (
26 cle_id okc_rule_groups_v.cle_id%type,
27 rent_ppd_type VARCHAR2(30),
28 laslh_count number,
29 lasll_count number,
30 other_count number
31 );
32
33 type validate_rec_type is RECORD (
34 chr_id OKC_K_HEADERS_V.ID%TYPE,
35 asset_rec asset_rec_type
36 );
37 type val_rec_tbl is table of validate_rec_type index by binary_integer;
38
39 l_api_name varchar2(100) := 'OKL_PROCESS_PPD_PVT.VALIDATE_PARAMETERS';
40 missing_parameters exception;
41 invalid_payment_structure exception;
42 l_missing_parameters BOOLEAN := FALSE;
43 l_object1_id1 number;
44 l_lalsh_id number;
45 l_prev_chr_id number;
46 l_curr_chr_id number;
47 l_curr_cle_id number;
48 l_prev_cle_id number;
49 l_prev_category okc_rules_v.rule_information_category%type;
50 l_curr_category okc_rules_v.rule_information_category%type;
51 BEGIN
52 -- Check if all parameters are not null
53 -- Validate if
54 -- 1. SLH is there but no SLL
55 -- 2. starts with SLL and SLH follows
56 null;
57 x_msg_count := 0;
58 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
59 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'In validate_parameters ...x_msg_count='||x_msg_count);
60 END IF;
61 IF (p_chr_id is null) THEN
62 fnd_message.set_name('OKL', 'OKL_API_ALL_MISSING_PARAM');
63 fnd_message.set_token('API_NAME', l_api_name);
64 fnd_message.set_token('MISSING_PARAM', 'p_chr_id');
65 x_msg_count:= x_msg_count + 1;
66 l_missing_parameters := TRUE;
67 fnd_msg_pub.add;
68 END IF;
69
70 IF ((p_kle_tbl is null) or (p_kle_tbl.COUNT=0)) THEN
71 fnd_message.set_name('OKL', 'OKL_API_ALL_MISSING_PARAM');
72 fnd_message.set_token('API_NAME', l_api_name);
73 fnd_message.set_token('MISSING_PARAM', 'p_kle_tbl');
74 x_msg_count:= x_msg_count + 1;
75 l_missing_parameters := TRUE;
76 fnd_msg_pub.add;
77 END IF;
78
79 IF (p_transaction_date is null) THEN
80 fnd_message.set_name('OKL', 'OKL_API_ALL_MISSING_PARAM');
81 fnd_message.set_token('API_NAME', l_api_name);
82 fnd_message.set_token('MISSING_PARAM', 'p_transaction_date');
83 x_msg_count:= x_msg_count + 1;
84 l_missing_parameters := TRUE;
85 fnd_msg_pub.add;
86 END IF;
87
88 IF (p_ppd_amount is null) THEN
89 fnd_message.set_name('OKL', 'OKL_API_ALL_MISSING_PARAM');
90 fnd_message.set_token('API_NAME', l_api_name);
91 fnd_message.set_token('MISSING_PARAM', 'p_ppd_amount');
92 x_msg_count:= x_msg_count + 1;
93 l_missing_parameters := TRUE;
94 fnd_msg_pub.add;
95 END IF;
96
97 IF (p_ppd_reason_code is null) THEN
98 fnd_message.set_name('OKL', 'OKL_API_ALL_MISSING_PARAM');
99 fnd_message.set_token('API_NAME', l_api_name);
100 fnd_message.set_token('MISSING_PARAM', 'p_ppd_reason_code');
101 x_msg_count:= x_msg_count + 1;
102 l_missing_parameters := TRUE;
103 fnd_msg_pub.add;
104 END IF;
105
106 IF (p_payment_struc is null) or (p_payment_struc.COUNT=0) THEN
107 fnd_message.set_name('OKL', 'OKL_API_ALL_MISSING_PARAM');
108 fnd_message.set_token('API_NAME', l_api_name);
109 fnd_message.set_token('MISSING_PARAM', 'p_payment_struc');
110 x_msg_count:= x_msg_count + 1;
111 l_missing_parameters := TRUE;
112 fnd_msg_pub.add;
113 END IF;
114
115 for i in p_payment_struc.first .. p_payment_struc.last loop
116 if (p_payment_struc(i).chr_id is null or p_payment_struc(i).cle_id is null)
117 then
118 l_missing_parameters := true;
119 exit;
120 end if;
121 end loop;
122
123 IF l_missing_parameters then
124 raise missing_parameters;
125 RETURN;
126 END IF;
127
128 x_msg_count := 0;
129 x_msg_data := '';
130 l_prev_category := '';
131 l_prev_chr_id := -1;
132 l_prev_cle_id := -1;
133 /*FOR i IN 1..p_kle_tbl.COUNT
134 LOOP
135 l_slh_count := 0;
136 l_sll_count := 0;
137 l_oth_count := 0; */
138 FOR j IN 1..p_payment_struc.COUNT
139 LOOP
140 -- Whenever you get an SLH record, create an asset record
141 -- Whenever you get an SLL record, create an asset record if current
142 -- asset id does not match or if object1_id1 does not match prev SLH ID
143 -- Whenever you get an OTH record, create an asset record if current
144 -- asset id does not match
145
146 --IF (p_kle_tbl(i).id = p_payment_struc(j).cle_id) THEN
147
148 l_curr_chr_id := p_payment_struc(j).chr_id ;
149 l_curr_cle_id := p_payment_struc(j).cle_id;
150 l_curr_category := p_payment_struc(j).rule_information_category;
151
152 /*if (l_curr_category = 'LASLL') then
153 -- hardcode values without which update fails : DEBUG
154 p_payment_struc(j).jtot_object2_code := 'OKL_STRMHDR';
155 end if;*/
156
157 if ((l_curr_category = 'LASLH') and (l_prev_category = 'LASLH'))
158 THEN
159 null;
160 x_msg_count := x_msg_count + 1;
161 x_msg_data := 'Contract: ' || l_prev_chr_id || ' Asset: ' ||
162 l_prev_cle_id || ' contains no LASLL records';
163 --okl_debug_pub.logmessage('x_msg_data=' || x_msg_data);
164 raise invalid_payment_structure;
165 -- raise no SLL record found for SLH
166 END IF;
167 --IF ( ((l_curr_chr_id <> l_prev_chr_id) and (l_prev_chr_id <> -1)) or
168 --((l_curr_cle_id <> l_prev_cle_id) and (l_prev_cle_id <> -1)) )
169 IF ( (l_curr_chr_id <> l_prev_chr_id) or
170 (l_curr_cle_id <> l_prev_cle_id) )
171 THEN
172 null;
173 --Change of asset or contract or both
174 IF (p_payment_struc(j).rule_information_category <> 'LASLH') THEN
175 null;
176 x_msg_count := x_msg_count + 1;
177 x_msg_data := 'Contract ' || l_curr_chr_id || ' Asset ' ||
178 l_curr_cle_id || ' begins with non LASLH category';
179 raise invalid_payment_structure;
180 -- Begins with invalid category (<> LASLH)
181 -- Raise exception
182 END IF;
183 END IF;
184 /*
185 IF (p_payment_struc(j).rule_information_category = 'LASLH') THEN
186 null;
187 l_slh_count := l_slh_count + 1;
188 begin
189 l_object1_id1 := p_payment_struc(j).object1_id1;
190 l_laslh_id := p_payment_struc(j).id;
191 select name into l_ppd_rent from okl_strm_type_v
192 where id = l_object1_id1;
193 exception when others then
194 l_ppd_rent := 'OTHER';
195 end;
196 ELSIF (p_payment_struc(j).rule_information_category = 'LASLL') THEN
197 null;
198 ELSE
199 null;
200 END IF;
201 */
202 --END IF;
203 l_prev_chr_id := l_curr_chr_id;
204 l_prev_cle_id := l_curr_cle_id;
205 l_prev_category := l_curr_category;
206 END LOOP;
207 END;
208
209 PROCEDURE apply_ppd
210 (
211 p_api_version IN NUMBER,
212 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
213 x_return_status OUT NOCOPY VARCHAR2,
214 x_msg_count OUT NOCOPY NUMBER,
215 x_msg_data OUT NOCOPY VARCHAR2,
216 p_chr_id IN OKC_K_HEADERS_V.ID%TYPE,
217 p_kle_tbl IN OKL_MASS_REBOOK_PVT.kle_tbl_type,
218 p_transaction_date IN OKL_TRX_CONTRACTS.DATE_TRANSACTION_OCCURRED%TYPE,
219 p_ppd_amount IN NUMBER,
220 p_ppd_reason_code IN FND_LOOKUPS.LOOKUP_CODE%TYPE,
221 p_payment_struc IN okl_mass_rebook_pvt.strm_lalevl_tbl_type,
222 p_ppd_txn_id IN NUMBER
223 )
224 IS
225 missing_parameters exception;
226 l_api_version CONSTANT NUMBER := 1;
227 l_api_name VARCHAR2(35) := 'apply_ppd';
228 l_proc_name VARCHAR2(35) := 'APPLY_PPD';
229 l_ppd_txn_id NUMBER;
230 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
231 l_mass_rebook_trx_id NUMBER;
232 l_tcnv_rec OKL_TRX_CONTRACTS_PVT.tcnv_rec_type;
233 l_msg_index_out number;
234 BEGIN
235
236 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
237 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'In apply_ppd');
238 END IF;
239 -- DEBUG
240 -- call START_ACTIVITY to create savepoint, check compatibility
241 -- and initialize message list
242 x_return_status := OKL_API.START_ACTIVITY(
243 p_api_name => l_api_name,
244 p_pkg_name => G_PKG_NAME,
245 p_init_msg_list => p_init_msg_list,
246 l_api_version => l_api_version,
247 p_api_version => p_api_version,
248 p_api_type => G_API_TYPE,
249 x_return_status => x_return_status);
250
251 -- check if activity started successfully
252 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
253 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
254 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
255 raise OKL_API.G_EXCEPTION_ERROR;
256 END IF;
257
258 begin
259 x_msg_count := 0;
260 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
261 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'apply_ppd:x_msg_count=' || x_msg_count);
262 END IF;
263 validate_parameters(
264 p_chr_id,
265 p_kle_tbl,
266 p_transaction_date,
267 p_ppd_amount,
268 p_ppd_reason_code,
269 p_payment_struc,
270 x_msg_count,
271 x_msg_data
272 );
273 exception when others then
274 raise missing_parameters;
275 end;
276
277 /* PPD Transaction creation is handled by forms
278 okl_debug_pub.logmessage('Before call to okl_transaction_pvt.create_ppd_transaction');
279 -- DEBUG: Replace this API by actual API to create ppd transaction
280 okl_transaction_pvt.create_ppd_transaction(
281 p_api_version => p_api_version,
282 p_init_msg_list => p_init_msg_list,
283 x_return_status => x_return_status,
284 x_msg_count => x_msg_count,
285 x_msg_data => x_msg_data,
286 p_chr_id => p_chr_id,
287 p_trx_date => p_transaction_date,
288 p_trx_type => 'PDN',
289 p_reason_code => p_ppd_reason_code,
290 x_tcnv_rec => l_tcnv_rec
291 );
292
293 if (x_return_status <> OKL_API.G_RET_STS_SUCCESS) then
294 okl_debug_pub.logmessage('Error occurred from okl_transaction_pvt.create_ppd_transaction');
295 okl_debug_pub.logmessage('x_msg_data=' || x_msg_data);
296 end if;
297 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
298 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
299 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
300 raise OKL_API.G_EXCEPTION_ERROR;
301 END IF;
302 */
303
304 --x_ppd_txn_id := l_tcnv_rec.id;
305 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
306 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'p_ppd_txn_id=' || p_ppd_txn_id);
307 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'p_chr_id=' || p_chr_id);
308 END IF;
309
310
311 OKL_MASS_REBOOK_PVT.apply_mass_rebook(
312 p_api_version => p_api_version,
313 p_init_msg_list => OKC_API.G_FALSE,
314 x_return_status => x_return_status,
315 x_msg_count => x_msg_count,
316 x_msg_data => x_msg_data,
317 p_chr_id => p_chr_id,
318 p_kle_tbl => p_kle_tbl,
319 p_source_trx_id => p_ppd_txn_id,
320 p_source_trx_type => 'PPD',
321 p_transaction_date => p_transaction_date,
322 x_mass_rebook_trx_id => l_mass_rebook_trx_id,
323 p_ppd_amount => p_ppd_amount,
324 p_ppd_reason_code => p_ppd_reason_code,
325 p_payment_struc => p_payment_struc
326 --p_ppd_payment_struc => p_ppd_payment_struc
327 );
328
329 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
330 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'OKLRPPNB:After apply_mass_rebook: x_return_status=' || x_return_status);
331 END IF;
332 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
333 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
334 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
335 raise OKL_API.G_EXCEPTION_ERROR;
336 END IF;
337
338 EXCEPTION
339 when OKL_API.G_EXCEPTION_ERROR then
340 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
341 p_api_name => l_api_name,
342 p_pkg_name => G_PKG_NAME,
343 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
344 x_msg_count => x_msg_count,
345 x_msg_data => x_msg_data,
346 p_api_type => G_API_TYPE);
347
348 when OKL_API.G_EXCEPTION_UNEXPECTED_ERROR then
349 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
350 p_api_name => l_api_name,
351 p_pkg_name => G_PKG_NAME,
352 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
353 x_msg_count => x_msg_count,
354 x_msg_data => x_msg_data,
355 p_api_type => G_API_TYPE);
356
357 when missing_parameters then
358 x_return_status := OKL_API.G_RET_STS_ERROR;
359
360 /* okl_debug_pub.logmessage('apply_ppd:x_msg_count=' || x_msg_count);
361 IF (x_msg_count > 0 ) THEN
362 FOR i in 1..x_msg_count
363 LOOP
364 FND_MSG_PUB.GET(
365 p_msg_index => i,
366 p_encoded => FND_API.G_FALSE,
367 p_data => x_msg_data,
368 p_msg_index_out => l_msg_index_out
369 );
370
371 okl_debug_pub.logmessage('l_msg_index_out='||l_msg_index_out);
372 okl_debug_pub.logmessage('Error '||to_char(i)||': '||x_msg_data);
373 END LOOP;
374 END IF; */
375
376 --fnd_msg_pub.Reset;
377 IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
378 OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'Missing Parameters...');
379 END IF;
380 raise;
381
382 when OTHERS then
383 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
384 p_api_name => l_api_name,
385 p_pkg_name => G_PKG_NAME,
386 p_exc_name => 'OTHERS',
387 x_msg_count => x_msg_count,
388 x_msg_data => x_msg_data,
389 p_api_type => G_API_TYPE);
390 END;
391
392 END OKL_PROCESS_PPD_PVT;